From e2b561e3a521ff893943c0e9e32952e35934ca54 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 4 Oct 2022 20:13:23 +0200 Subject: [PATCH 001/500] Fix logged-out web UI on smaller screens (#19263) --- .../components/not_signed_in_indicator.js | 12 + .../mastodon/features/about/index.js | 34 +++ .../mastodon/features/compose/index.js | 87 +++--- .../mastodon/features/explore/index.js | 29 +- .../features/getting_started/index.js | 104 +++---- .../mastodon/features/home_timeline/index.js | 30 +- .../features/keyboard_shortcuts/index.js | 13 +- .../mastodon/features/notifications/index.js | 61 ++-- .../features/ui/components/columns_area.js | 84 +----- .../features/ui/components/compose_panel.js | 2 +- .../mastodon/features/ui/components/header.js | 53 ++++ .../features/ui/components/link_footer.js | 45 +-- .../ui/components/navigation_panel.js | 16 +- .../features/ui/components/tabs_bar.js | 86 ------ app/javascript/mastodon/features/ui/index.js | 5 + .../features/ui/util/async-components.js | 4 + app/javascript/mastodon/locales/en.json | 6 +- .../styles/mastodon/components.scss | 270 +++++++++++------- app/javascript/styles/mastodon/variables.scss | 2 +- 19 files changed, 479 insertions(+), 464 deletions(-) create mode 100644 app/javascript/mastodon/components/not_signed_in_indicator.js create mode 100644 app/javascript/mastodon/features/about/index.js create mode 100644 app/javascript/mastodon/features/ui/components/header.js delete mode 100644 app/javascript/mastodon/features/ui/components/tabs_bar.js diff --git a/app/javascript/mastodon/components/not_signed_in_indicator.js b/app/javascript/mastodon/components/not_signed_in_indicator.js new file mode 100644 index 0000000000..b440c6be2f --- /dev/null +++ b/app/javascript/mastodon/components/not_signed_in_indicator.js @@ -0,0 +1,12 @@ +import React from 'react'; +import { FormattedMessage } from 'react-intl'; + +const NotSignedInIndicator = () => ( +
+
+ +
+
+); + +export default NotSignedInIndicator; diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.js new file mode 100644 index 0000000000..c48d81d9a8 --- /dev/null +++ b/app/javascript/mastodon/features/about/index.js @@ -0,0 +1,34 @@ +import React from 'react'; +import { defineMessages, injectIntl } from 'react-intl'; +import PropTypes from 'prop-types'; +import Column from 'mastodon/components/column'; +import LinkFooter from 'mastodon/features/ui/components/link_footer'; +import { Helmet } from 'react-helmet'; +import { title } from 'mastodon/initial_state'; + +const messages = defineMessages({ + title: { id: 'column.about', defaultMessage: 'About' }, +}); + +export default @injectIntl +class About extends React.PureComponent { + + static propTypes = { + intl: PropTypes.object.isRequired, + }; + + render () { + const { intl } = this.props; + + return ( + + + + + {intl.formatMessage(messages.title)} - {title} + + + ); + } + +} diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index 711a559046..c27556a0ee 100644 --- a/app/javascript/mastodon/features/compose/index.js +++ b/app/javascript/mastodon/features/compose/index.js @@ -17,6 +17,7 @@ import elephantUIPlane from '../../../images/elephant_ui_plane.svg'; import { mascot } from '../../initial_state'; import Icon from 'mastodon/components/icon'; import { logOut } from 'mastodon/utils/log_out'; +import Column from 'mastodon/components/column'; const messages = defineMessages({ start: { id: 'getting_started.heading', defaultMessage: 'Getting started' }, @@ -92,57 +93,59 @@ class Compose extends React.PureComponent { render () { const { multiColumn, showSearch, isSearchPage, intl } = this.props; - let header = ''; - if (multiColumn) { const { columns } = this.props; - header = ( - - ); - } - return ( -
- {header} - - {(multiColumn || isSearchPage) && } + return ( +
+ -
- {!isSearchPage &&
- + {(multiColumn || isSearchPage) && } - +
+ {!isSearchPage &&
+ -
- -
-
} + - - {({ x }) => ( -
- +
+
- )} - +
} + + + {({ x }) => ( +
+ +
+ )} +
+
-
+ ); + } + + return ( + + + + ); } diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.js index e1d1eb563f..21bb6e8281 100644 --- a/app/javascript/mastodon/features/explore/index.js +++ b/app/javascript/mastodon/features/explore/index.js @@ -30,13 +30,13 @@ class Explore extends React.PureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static propTypes = { intl: PropTypes.object.isRequired, multiColumn: PropTypes.bool, isSearching: PropTypes.bool, - layout: PropTypes.string, }; handleHeaderClick = () => { @@ -48,22 +48,21 @@ class Explore extends React.PureComponent { } render () { - const { intl, multiColumn, isSearching, layout } = this.props; + const { intl, multiColumn, isSearching } = this.props; + const { signedIn } = this.context.identity; return ( - {layout === 'mobile' ? ( -
- -
- ) : ( - - )} + + +
+ +
{isSearching ? ( @@ -74,7 +73,7 @@ class Explore extends React.PureComponent { - + {signedIn && }
diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index 65cee7498b..d998127a2b 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -1,19 +1,20 @@ import React from 'react'; -import Column from '../ui/components/column'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; import ColumnLink from '../ui/components/column_link'; import ColumnSubheading from '../ui/components/column_subheading'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { defineMessages, injectIntl } from 'react-intl'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me, showTrends } from '../../initial_state'; +import { me, title, showTrends } from '../../initial_state'; import { fetchFollowRequests } from 'mastodon/actions/accounts'; import { List as ImmutableList } from 'immutable'; import NavigationContainer from '../compose/containers/navigation_container'; -import Icon from 'mastodon/components/icon'; import LinkFooter from 'mastodon/features/ui/components/link_footer'; import TrendsContainer from './containers/trends_container'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' }, @@ -40,7 +41,6 @@ const messages = defineMessages({ const mapStateToProps = state => ({ myAccount: state.getIn(['accounts', me]), - columns: state.getIn(['settings', 'columns']), unreadFollowRequests: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size, }); @@ -58,20 +58,18 @@ const badgeDisplay = (number, limit) => { } }; -const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2); - export default @connect(mapStateToProps, mapDispatchToProps) @injectIntl class GettingStarted extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object.isRequired, + identity: PropTypes.object, }; static propTypes = { intl: PropTypes.object.isRequired, - myAccount: ImmutablePropTypes.map.isRequired, - columns: ImmutablePropTypes.list, + myAccount: ImmutablePropTypes.map, multiColumn: PropTypes.bool, fetchFollowRequests: PropTypes.func.isRequired, unreadFollowRequests: PropTypes.number, @@ -79,10 +77,10 @@ class GettingStarted extends ImmutablePureComponent { }; componentDidMount () { - const { fetchFollowRequests, multiColumn } = this.props; + const { fetchFollowRequests } = this.props; + const { signedIn } = this.context.identity; - if (!multiColumn && window.innerWidth >= NAVIGATION_PANEL_BREAKPOINT) { - this.context.router.history.replace('/home'); + if (!signedIn) { return; } @@ -90,91 +88,57 @@ class GettingStarted extends ImmutablePureComponent { } render () { - const { intl, myAccount, columns, multiColumn, unreadFollowRequests } = this.props; + const { intl, myAccount, multiColumn, unreadFollowRequests } = this.props; + const { signedIn } = this.context.identity; const navItems = []; - let height = (multiColumn) ? 0 : 60; - - if (multiColumn) { - navItems.push( - , - ); - height += 34; - } navItems.push( + , , + , + , ); - height += 48; - - if (multiColumn) { - navItems.push( - , - , - ); - - height += 48*2; + if (signedIn) { navItems.push( , - ); - - height += 34; - } - - if (multiColumn && !columns.find(item => item.get('id') === 'HOME')) { - navItems.push( , + , + , + , + , ); - height += 48; - } - - navItems.push( - , - , - , - , - ); - height += 48*4; + if (myAccount.get('locked') || unreadFollowRequests > 0) { + navItems.push(); + } - if (myAccount.get('locked') || unreadFollowRequests > 0) { - navItems.push(); - height += 48; - } - - if (!multiColumn) { navItems.push( , , ); - - height += 34 + 48; } return ( - - {multiColumn &&
-

- -

-
} - -
-
- {!multiColumn && } + + {(signedIn && !multiColumn) ? : } + +
+
{navItems}
{!multiColumn &&
} - +
- {multiColumn && showTrends && } + {(multiColumn && showTrends) && } + + + {intl.formatMessage(messages.menu)} - {title} + ); } diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js index dc440f2fe0..aac92244de 100644 --- a/app/javascript/mastodon/features/home_timeline/index.js +++ b/app/javascript/mastodon/features/home_timeline/index.js @@ -13,6 +13,9 @@ import { fetchAnnouncements, toggleShowAnnouncements } from 'mastodon/actions/an import AnnouncementsContainer from 'mastodon/features/getting_started/containers/announcements_container'; import classNames from 'classnames'; import IconWithBadge from 'mastodon/components/icon_with_badge'; +import NotSignedInIndicator from 'mastodon/components/not_signed_in_indicator'; +import { Helmet } from 'react-helmet'; +import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.home', defaultMessage: 'Home' }, @@ -32,6 +35,10 @@ export default @connect(mapStateToProps) @injectIntl class HomeTimeline extends React.PureComponent { + static contextTypes = { + identity: PropTypes.object, + }; + static propTypes = { dispatch: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, @@ -113,6 +120,7 @@ class HomeTimeline extends React.PureComponent { render () { const { intl, hasUnread, columnId, multiColumn, hasAnnouncements, unreadAnnouncements, showAnnouncements } = this.props; const pinned = !!columnId; + const { signedIn } = this.context.identity; let announcementsButton = null; @@ -147,14 +155,20 @@ class HomeTimeline extends React.PureComponent { - }} />} - bindToDocument={!multiColumn} - /> + {signedIn ? ( + }} />} + bindToDocument={!multiColumn} + /> + ) : } + + + {intl.formatMessage(messages.title)} - {title} + ); } diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.js b/app/javascript/mastodon/features/keyboard_shortcuts/index.js index 8f1631d829..2a32577baf 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.js +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.js @@ -1,9 +1,9 @@ import React from 'react'; -import Column from '../ui/components/column'; -import ColumnBackButtonSlim from '../../components/column_back_button_slim'; +import Column from 'mastodon/components/column'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import ColumnHeader from 'mastodon/components/column_header'; const messages = defineMessages({ heading: { id: 'keyboard_shortcuts.heading', defaultMessage: 'Keyboard Shortcuts' }, @@ -21,8 +21,13 @@ class KeyboardShortcuts extends ImmutablePureComponent { const { intl, multiColumn } = this.props; return ( - - + + +
diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js index a6a277d7ed..d9f8101c3d 100644 --- a/app/javascript/mastodon/features/notifications/index.js +++ b/app/javascript/mastodon/features/notifications/index.js @@ -26,6 +26,9 @@ import LoadGap from '../../components/load_gap'; import Icon from 'mastodon/components/icon'; import compareId from 'mastodon/compare_id'; import NotificationsPermissionBanner from './components/notifications_permission_banner'; +import NotSignedInIndicator from 'mastodon/components/not_signed_in_indicator'; +import { Helmet } from 'react-helmet'; +import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.notifications', defaultMessage: 'Notifications' }, @@ -69,6 +72,10 @@ export default @connect(mapStateToProps) @injectIntl class Notifications extends React.PureComponent { + static contextTypes = { + identity: PropTypes.object, + }; + static propTypes = { columnId: PropTypes.string, notifications: ImmutablePropTypes.list.isRequired, @@ -178,10 +185,11 @@ class Notifications extends React.PureComponent { const { intl, notifications, isLoading, isUnread, columnId, multiColumn, hasMore, numPending, showFilterBar, lastReadId, canMarkAsRead, needsNotificationPermission } = this.props; const pinned = !!columnId; const emptyMessage = ; + const { signedIn } = this.context.identity; let scrollableContent = null; - const filterBarContainer = showFilterBar + const filterBarContainer = (signedIn && showFilterBar) ? () : null; @@ -211,26 +219,32 @@ class Notifications extends React.PureComponent { this.scrollableContent = scrollableContent; - const scrollContainer = ( - } - alwaysPrepend - emptyMessage={emptyMessage} - onLoadMore={this.handleLoadOlder} - onLoadPending={this.handleLoadPending} - onScrollToTop={this.handleScrollToTop} - onScroll={this.handleScroll} - bindToDocument={!multiColumn} - > - {scrollableContent} - - ); + let scrollContainer; + + if (signedIn) { + scrollContainer = ( + } + alwaysPrepend + emptyMessage={emptyMessage} + onLoadMore={this.handleLoadOlder} + onLoadPending={this.handleLoadPending} + onScrollToTop={this.handleScrollToTop} + onScroll={this.handleScroll} + bindToDocument={!multiColumn} + > + {scrollableContent} + + ); + } else { + scrollContainer = ; + } let extraButton = null; @@ -262,8 +276,13 @@ class Notifications extends React.PureComponent { > + {filterBarContainer} {scrollContainer} + + + {intl.formatMessage(messages.title)} - {title} + ); } diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index 83e10e003a..cc1bc83e0e 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -3,13 +3,7 @@ import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; - -import ReactSwipeableViews from 'react-swipeable-views'; -import TabsBar, { links, getIndex, getLink } from './tabs_bar'; import { Link } from 'react-router-dom'; - -import { disableSwiping } from 'mastodon/initial_state'; - import BundleContainer from '../containers/bundle_container'; import ColumnLoading from './column_loading'; import DrawerLoading from './drawer_loading'; @@ -71,20 +65,13 @@ class ColumnsArea extends ImmutablePureComponent { children: PropTypes.node, }; - // Corresponds to (max-width: 600px + (285px * 1) + (10px * 1)) in SCSS - mediaQuery = 'matchMedia' in window && window.matchMedia('(max-width: 895px)'); + // Corresponds to (max-width: $no-gap-breakpoint + 285px - 1px) in SCSS + mediaQuery = 'matchMedia' in window && window.matchMedia('(max-width: 1174px)'); state = { - shouldAnimate: false, renderComposePanel: !(this.mediaQuery && this.mediaQuery.matches), } - componentWillReceiveProps() { - if (typeof this.pendingIndex !== 'number' && this.lastIndex !== getIndex(this.context.router.history.location.pathname)) { - this.setState({ shouldAnimate: false }); - } - } - componentDidMount() { if (!this.props.singleColumn) { this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false); @@ -99,10 +86,7 @@ class ColumnsArea extends ImmutablePureComponent { this.setState({ renderComposePanel: !this.mediaQuery.matches }); } - this.lastIndex = getIndex(this.context.router.history.location.pathname); this.isRtlLayout = document.getElementsByTagName('body')[0].classList.contains('rtl'); - - this.setState({ shouldAnimate: true }); } componentWillUpdate(nextProps) { @@ -115,13 +99,6 @@ class ColumnsArea extends ImmutablePureComponent { if (this.props.singleColumn !== prevProps.singleColumn && !this.props.singleColumn) { this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false); } - - const newIndex = getIndex(this.context.router.history.location.pathname); - - if (this.lastIndex !== newIndex) { - this.lastIndex = newIndex; - this.setState({ shouldAnimate: true }); - } } componentWillUnmount () { @@ -149,31 +126,6 @@ class ColumnsArea extends ImmutablePureComponent { this.setState({ renderComposePanel: !e.matches }); } - handleSwipe = (index) => { - this.pendingIndex = index; - - const nextLinkTranslationId = links[index].props['data-preview-title-id']; - const currentLinkSelector = '.tabs-bar__link.active'; - const nextLinkSelector = `.tabs-bar__link[data-preview-title-id="${nextLinkTranslationId}"]`; - - // HACK: Remove the active class from the current link and set it to the next one - // React-router does this for us, but too late, feeling laggy. - document.querySelector(currentLinkSelector).classList.remove('active'); - document.querySelector(nextLinkSelector).classList.add('active'); - - if (!this.state.shouldAnimate && typeof this.pendingIndex === 'number') { - this.context.router.history.push(getLink(this.pendingIndex)); - this.pendingIndex = null; - } - } - - handleAnimationEnd = () => { - if (typeof this.pendingIndex === 'number') { - this.context.router.history.push(getLink(this.pendingIndex)); - this.pendingIndex = null; - } - } - handleWheel = () => { if (typeof this._interruptScrollAnimation !== 'function') { return; @@ -186,22 +138,6 @@ class ColumnsArea extends ImmutablePureComponent { this.node = node; } - renderView = (link, index) => { - const columnIndex = getIndex(this.context.router.history.location.pathname); - const title = this.props.intl.formatMessage({ id: link.props['data-preview-title-id'] }); - const icon = link.props['data-preview-icon']; - - const view = (index === columnIndex) ? - React.cloneElement(this.props.children) : - ; - - return ( -
- {view} -
- ); - } - renderLoading = columnId => () => { return columnId === 'COMPOSE' ? : ; } @@ -212,22 +148,12 @@ class ColumnsArea extends ImmutablePureComponent { render () { const { columns, children, singleColumn, isModalOpen, intl } = this.props; - const { shouldAnimate, renderComposePanel } = this.state; + const { renderComposePanel } = this.state; const { signedIn } = this.context.identity; - const columnIndex = getIndex(this.context.router.history.location.pathname); - if (singleColumn) { const floatingActionButton = (!signedIn || shouldHideFAB(this.context.router.history.location.pathname)) ? null : ; - const content = columnIndex !== -1 ? ( - - {links.map(this.renderView)} - - ) : ( -
{children}
- ); - return (
@@ -237,8 +163,8 @@ class ColumnsArea extends ImmutablePureComponent {
- - {content} +
+
{children}
diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.js b/app/javascript/mastodon/features/ui/components/compose_panel.js index 1c128188fc..655c202fae 100644 --- a/app/javascript/mastodon/features/ui/components/compose_panel.js +++ b/app/javascript/mastodon/features/ui/components/compose_panel.js @@ -46,7 +46,7 @@ class ComposePanel extends React.PureComponent { )} - +
); } diff --git a/app/javascript/mastodon/features/ui/components/header.js b/app/javascript/mastodon/features/ui/components/header.js new file mode 100644 index 0000000000..cddab820c6 --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/header.js @@ -0,0 +1,53 @@ +import React from 'react'; +import Logo from 'mastodon/components/logo'; +import { Link } from 'react-router-dom'; +import { FormattedMessage } from 'react-intl'; +import { registrationsOpen, me } from 'mastodon/initial_state'; +import Avatar from 'mastodon/components/avatar'; +import Permalink from 'mastodon/components/permalink'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; + +const Account = connect(state => ({ + account: state.getIn(['accounts', me]), +}))(({ account }) => ( + + {account.get('acct')} + + +)); + +export default class Header extends React.PureComponent { + + static contextTypes = { + identity: PropTypes.object, + }; + + render () { + const { signedIn } = this.context.identity; + + let content; + + if (signedIn) { + content = ; + } else { + content = ( + + + + + ); + } + + return ( +
+ + +
+ {content} +
+
+ ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index dd05d03dd9..2b092a1828 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -3,7 +3,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import { limitedFederationMode, version, repository, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; +import { version, repository, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; import { logOut } from 'mastodon/utils/log_out'; import { openModal } from 'mastodon/actions/modal'; import { PERMISSION_INVITE_USERS } from 'mastodon/permissions'; @@ -33,7 +33,6 @@ class LinkFooter extends React.PureComponent { }; static propTypes = { - withHotkeys: PropTypes.bool, onLogout: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, }; @@ -48,40 +47,26 @@ class LinkFooter extends React.PureComponent { } render () { - const { withHotkeys } = this.props; const { signedIn, permissions } = this.context.identity; const items = []; - if ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) { - items.push(); - } - - if (signedIn && withHotkeys) { - items.push(); - } - - if (signedIn) { - items.push(); - } - - if (!limitedFederationMode) { - items.push(); - } + items.push(); + items.push(); + items.push(); + items.push(); + items.push(); + items.push(); if (profileDirectory) { - items.push(); + items.push(); } - items.push(); - items.push(); - if (signedIn) { - items.push(); - } + if ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) { + items.push(); + } - items.push(); - - if (signedIn) { + items.push(); items.push(); } @@ -93,9 +78,9 @@ class LinkFooter extends React.PureComponent {

{repository} (v{version}) }} + id='getting_started.free_software_notice' + defaultMessage='Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.' + values={{ repository: {repository} (v{version}) }} />

diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 00ae047610..7c7c9056fe 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -23,9 +23,10 @@ export default class NavigationPanel extends React.Component { return (
- - -
+
+ +
+
{signedIn && ( @@ -40,10 +41,10 @@ export default class NavigationPanel extends React.Component { {!signedIn && ( - +

- +
)} {signedIn && ( @@ -62,6 +63,11 @@ export default class NavigationPanel extends React.Component {
)} +
+
+ +
+ {showTrends && (
diff --git a/app/javascript/mastodon/features/ui/components/tabs_bar.js b/app/javascript/mastodon/features/ui/components/tabs_bar.js deleted file mode 100644 index 55668cab6a..0000000000 --- a/app/javascript/mastodon/features/ui/components/tabs_bar.js +++ /dev/null @@ -1,86 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { NavLink, withRouter } from 'react-router-dom'; -import { FormattedMessage, injectIntl } from 'react-intl'; -import { debounce } from 'lodash'; -import { isUserTouching } from '../../../is_mobile'; -import Icon from 'mastodon/components/icon'; -import NotificationsCounterIcon from './notifications_counter_icon'; - -export const links = [ - , - , - , - , - , - , -]; - -export function getIndex (path) { - return links.findIndex(link => link.props.to === path); -} - -export function getLink (index) { - return links[index].props.to; -} - -export default @injectIntl -@withRouter -class TabsBar extends React.PureComponent { - - static propTypes = { - intl: PropTypes.object.isRequired, - history: PropTypes.object.isRequired, - } - - setRef = ref => { - this.node = ref; - } - - handleClick = (e) => { - // Only apply optimization for touch devices, which we assume are slower - // We thus avoid the 250ms delay for non-touch devices and the lag for touch devices - if (isUserTouching()) { - e.preventDefault(); - e.persist(); - - requestAnimationFrame(() => { - const tabs = Array(...this.node.querySelectorAll('.tabs-bar__link')); - const currentTab = tabs.find(tab => tab.classList.contains('active')); - const nextTab = tabs.find(tab => tab.contains(e.target)); - const { props: { to } } = links[Array(...this.node.childNodes).indexOf(nextTab)]; - - - if (currentTab !== nextTab) { - if (currentTab) { - currentTab.classList.remove('active'); - } - - const listener = debounce(() => { - nextTab.removeEventListener('transitionend', listener); - this.props.history.push(to); - }, 50); - - nextTab.addEventListener('transitionend', listener); - nextTab.classList.add('active'); - } - }); - } - - } - - render () { - const { intl: { formatMessage } } = this.props; - - return ( -
- - -
-
- ); - } - -} diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 5825db1e40..4e37908c83 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -51,10 +51,12 @@ import { Directory, Explore, FollowRecommendations, + About, } from './util/async-components'; import { me, title } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; import { Helmet } from 'react-helmet'; +import Header from './components/header'; // Dummy import, to make sure that ends up in the application bundle. // Without this it ends up in ~8 very commonly used bundles. @@ -170,6 +172,7 @@ class SwitchingColumnsArea extends React.PureComponent { + @@ -559,6 +562,8 @@ class UI extends React.PureComponent { return (
+
+ {children} diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index 29b06206a1..5907e07729 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -165,3 +165,7 @@ export function Explore () { export function FilterModal () { return import(/*webpackChunkName: "modals/filter_modal" */'../components/filter_modal'); } + +export function About () { + return import(/*webpackChunkName: "features/about" */'../../about'); +} diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 463ec7bed0..81a41b3fc9 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -222,7 +222,7 @@ "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", @@ -310,7 +310,7 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +324,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 87ec6bb8a9..e831fce53e 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2191,27 +2191,62 @@ a.account__display-name { &__main { box-sizing: border-box; width: 100%; - max-width: 600px; flex: 0 0 auto; display: flex; flex-direction: column; @media screen and (min-width: $no-gap-breakpoint) { padding: 0 10px; + max-width: 600px; } } } } +$ui-header-height: 55px; + +.ui__header { + display: none; + box-sizing: border-box; + height: $ui-header-height; + position: sticky; + top: 0; + z-index: 2; + justify-content: space-between; + align-items: center; + + &__logo { + display: inline-flex; + padding: 15px; + + .logo { + height: $ui-header-height - 30px; + width: auto; + } + } + + &__links { + display: flex; + align-items: center; + gap: 10px; + padding: 0 10px; + + .button { + flex: 0 0 auto; + } + } +} + .tabs-bar__wrapper { background: darken($ui-base-color, 8%); position: sticky; - top: 0; + top: $ui-header-height; z-index: 2; padding-top: 0; @media screen and (min-width: $no-gap-breakpoint) { padding-top: 10px; + top: 0; } .tabs-bar { @@ -2419,100 +2454,98 @@ a.account__display-name { padding-top: 0; } - @media screen and (min-width: 630px) { - .detailed-status { - padding: 15px; + .detailed-status { + padding: 15px; - .media-gallery, - .video-player, - .audio-player { - margin-top: 15px; - } + .media-gallery, + .video-player, + .audio-player { + margin-top: 15px; } + } - .account__header__bar { - padding: 5px 10px; - } + .account__header__bar { + padding: 5px 10px; + } - .navigation-bar, - .compose-form { - padding: 15px; - } + .navigation-bar, + .compose-form { + padding: 15px; + } - .compose-form .compose-form__publish .compose-form__publish-button-wrapper { - padding-top: 15px; - } + .compose-form .compose-form__publish .compose-form__publish-button-wrapper { + padding-top: 15px; + } - .notification__report { - padding: 15px 15px 15px (48px + 15px * 2); - min-height: 48px + 2px; + .notification__report { + padding: 15px 15px 15px (48px + 15px * 2); + min-height: 48px + 2px; - &__avatar { - left: 15px; - top: 17px; - } + &__avatar { + left: 15px; + top: 17px; } + } - .status { - padding: 15px 15px 15px (48px + 15px * 2); - min-height: 48px + 2px; + .status { + padding: 15px 15px 15px (48px + 15px * 2); + min-height: 48px + 2px; - &__avatar { - left: 15px; - top: 17px; - } + &__avatar { + left: 15px; + top: 17px; + } - &__content { - padding-top: 5px; - } + &__content { + padding-top: 5px; + } - &__prepend { - margin-left: 48px + 15px * 2; - padding-top: 15px; - } + &__prepend { + margin-left: 48px + 15px * 2; + padding-top: 15px; + } - &__prepend-icon-wrapper { - left: -32px; - } + &__prepend-icon-wrapper { + left: -32px; + } - .media-gallery, - &__action-bar, - .video-player, - .audio-player { - margin-top: 10px; - } + .media-gallery, + &__action-bar, + .video-player, + .audio-player { + margin-top: 10px; } + } - .account { - padding: 15px 10px; + .account { + padding: 15px 10px; - &__header__bio { - margin: 0 -10px; - } + &__header__bio { + margin: 0 -10px; } + } - .notification { - &__message { - margin-left: 48px + 15px * 2; - padding-top: 15px; - } + .notification { + &__message { + margin-left: 48px + 15px * 2; + padding-top: 15px; + } - &__favourite-icon-wrapper { - left: -32px; - } + &__favourite-icon-wrapper { + left: -32px; + } - .status { - padding-top: 8px; - } + .status { + padding-top: 8px; + } - .account { - padding-top: 8px; - } + .account { + padding-top: 8px; + } - .account__avatar-wrapper { - margin-left: 17px; - margin-right: 15px; - } + .account__avatar-wrapper { + margin-left: 17px; + margin-right: 15px; } } } @@ -2554,39 +2587,85 @@ a.account__display-name { .search { margin-bottom: 10px; } -} -@media screen and (max-width: 600px + (285px * 1) + (10px * 1)) { - .columns-area__panels__pane--compositional { + .floating-action-button, + .tabs-bar__link.optional { + display: none; + } + + .search-page .search { + display: none; + } + + .navigation-panel__legal { display: none; } +} +@media screen and (max-width: $no-gap-breakpoint - 1px) { .with-fab .scrollable .item-list:last-child { padding-bottom: 5.25rem; } -} -@media screen and (min-width: 600px + (285px * 1) + (10px * 1)) { - .floating-action-button, - .tabs-bar__link.optional { - display: none; + .columns-area__panels__main { + width: calc(100% - 55px); } - .search-page .search { - display: none; + .columns-area__panels { + min-height: calc(100vh - $ui-header-height); } -} -@media screen and (max-width: 600px + (285px * 2) + (10px * 2)) { .columns-area__panels__pane--navigational { - display: none; + min-width: 55px; + + .columns-area__panels__pane__inner { + width: 55px; + } + + .navigation-panel { + margin: 0; + background: $ui-base-color; + border-left: 1px solid lighten($ui-base-color, 8%); + height: 100vh; + } + + .column-link span, + .navigation-panel__sign-in-banner, + .navigation-panel__logo, + .getting-started__trends { + display: none; + } + + .column-link__icon { + font-size: 18px; + } + } + + .ui__header { + display: flex; + background: $ui-base-color; + border-bottom: 1px solid lighten($ui-base-color, 8%); + } + + .column-header, + .column-back-button, + .scrollable { + border-radius: 0 !important; } } -@media screen and (min-width: 600px + (285px * 2) + (10px * 2)) { - .tabs-bar { +.explore__search-header { + display: none; +} + +@media screen and (max-width: $no-gap-breakpoint + 285px - 1px) { + .columns-area__panels__pane--compositional { display: none; } + + .explore__search-header { + display: flex; + } } .icon-with-badge { @@ -7360,7 +7439,7 @@ noscript { path:first-child { fill: rgba($highlight-text-color, 0.25) !important; - fill-opacity: 1 !important; + fill-opacity: 100% !important; } path:last-child { @@ -7832,10 +7911,9 @@ noscript { } .explore__search-header { - background: $ui-base-color; - display: flex; - align-items: flex-start; + background: darken($ui-base-color, 4%); justify-content: center; + align-items: center; padding: 15px; .search { @@ -7844,14 +7922,8 @@ noscript { } .search__input { - border-radius: 4px; - color: $inverted-text-color; - background: $simple-background-color; + border: 1px solid lighten($ui-base-color, 8%); padding: 10px; - - &::placeholder { - color: $dark-text-color; - } } .search .fa { diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss index be2c900eaa..775a12e687 100644 --- a/app/javascript/styles/mastodon/variables.scss +++ b/app/javascript/styles/mastodon/variables.scss @@ -53,7 +53,7 @@ $media-modal-media-max-width: 100%; // put margins on top and bottom of image to avoid the screen covered by image. $media-modal-media-max-height: 80%; -$no-gap-breakpoint: 415px; +$no-gap-breakpoint: 890px; $font-sans-serif: 'mastodon-font-sans-serif' !default; $font-display: 'mastodon-font-display' !default; From 02ba9cfa35c7b2285950955619ae3431391e9625 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 4 Oct 2022 20:13:46 +0200 Subject: [PATCH 002/500] Remove code for rendering public and hashtag timelines outside the web UI (#19257) --- app/controllers/directories_controller.rb | 32 ------ .../public_timelines_controller.rb | 26 ----- app/controllers/tags_controller.rb | 2 +- app/helpers/application_helper.rb | 5 +- .../standalone/hashtag_timeline/index.js | 90 ----------------- .../standalone/public_timeline/index.js | 99 ------------------- app/javascript/packs/about.js | 26 ----- app/models/form/admin_settings.rb | 2 - app/views/about/show.html.haml | 25 ++--- app/views/admin/settings/edit.html.haml | 3 - app/views/directories/index.html.haml | 54 ---------- app/views/layouts/public.html.haml | 1 - app/views/public_timelines/show.html.haml | 17 ---- app/views/tags/_og.html.haml | 6 -- app/views/tags/show.html.haml | 16 --- config/locales/en.yml | 11 --- config/routes.rb | 5 +- config/settings.yml | 1 - package.json | 1 - spec/controllers/tags_controller_spec.rb | 9 +- yarn.lock | 28 ------ 21 files changed, 13 insertions(+), 446 deletions(-) delete mode 100644 app/controllers/directories_controller.rb delete mode 100644 app/controllers/public_timelines_controller.rb delete mode 100644 app/javascript/mastodon/features/standalone/hashtag_timeline/index.js delete mode 100644 app/javascript/mastodon/features/standalone/public_timeline/index.js delete mode 100644 app/javascript/packs/about.js delete mode 100644 app/views/directories/index.html.haml delete mode 100644 app/views/public_timelines/show.html.haml delete mode 100644 app/views/tags/_og.html.haml delete mode 100644 app/views/tags/show.html.haml diff --git a/app/controllers/directories_controller.rb b/app/controllers/directories_controller.rb deleted file mode 100644 index f28c5b2afb..0000000000 --- a/app/controllers/directories_controller.rb +++ /dev/null @@ -1,32 +0,0 @@ -# frozen_string_literal: true - -class DirectoriesController < ApplicationController - layout 'public' - - before_action :authenticate_user!, if: :whitelist_mode? - before_action :require_enabled! - before_action :set_instance_presenter - before_action :set_accounts - - skip_before_action :require_functional!, unless: :whitelist_mode? - - def index - render :index - end - - private - - def require_enabled! - return not_found unless Setting.profile_directory - end - - def set_accounts - @accounts = Account.local.discoverable.by_recent_status.page(params[:page]).per(20).tap do |query| - query.merge!(Account.not_excluded_by_account(current_account)) if current_account - end - end - - def set_instance_presenter - @instance_presenter = InstancePresenter.new - end -end diff --git a/app/controllers/public_timelines_controller.rb b/app/controllers/public_timelines_controller.rb deleted file mode 100644 index 1332ba16c2..0000000000 --- a/app/controllers/public_timelines_controller.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -class PublicTimelinesController < ApplicationController - layout 'public' - - before_action :authenticate_user!, if: :whitelist_mode? - before_action :require_enabled! - before_action :set_body_classes - before_action :set_instance_presenter - - def show; end - - private - - def require_enabled! - not_found unless Setting.timeline_preview - end - - def set_body_classes - @body_classes = 'with-modals' - end - - def set_instance_presenter - @instance_presenter = InstancePresenter.new - end -end diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 6dbc2667a6..2890c179d8 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -21,7 +21,7 @@ class TagsController < ApplicationController def show respond_to do |format| format.html do - expires_in 0, public: true + redirect_to web_path("tags/#{@tag.name}") end format.rss do diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index db33292c1a..14d27b148d 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -198,10 +198,7 @@ module ApplicationHelper def render_initial_state state_params = { - settings: { - known_fediverse: Setting.show_known_fediverse_at_about_page, - }, - + settings: {}, text: [params[:title], params[:text], params[:url]].compact.join(' '), } diff --git a/app/javascript/mastodon/features/standalone/hashtag_timeline/index.js b/app/javascript/mastodon/features/standalone/hashtag_timeline/index.js deleted file mode 100644 index d3d8a6507e..0000000000 --- a/app/javascript/mastodon/features/standalone/hashtag_timeline/index.js +++ /dev/null @@ -1,90 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { expandHashtagTimeline } from 'mastodon/actions/timelines'; -import Masonry from 'react-masonry-infinite'; -import { List as ImmutableList } from 'immutable'; -import DetailedStatusContainer from 'mastodon/features/status/containers/detailed_status_container'; -import { debounce } from 'lodash'; -import LoadingIndicator from 'mastodon/components/loading_indicator'; - -const mapStateToProps = (state, { hashtag }) => ({ - statusIds: state.getIn(['timelines', `hashtag:${hashtag}`, 'items'], ImmutableList()), - isLoading: state.getIn(['timelines', `hashtag:${hashtag}`, 'isLoading'], false), - hasMore: state.getIn(['timelines', `hashtag:${hashtag}`, 'hasMore'], false), -}); - -export default @connect(mapStateToProps) -class HashtagTimeline extends React.PureComponent { - - static propTypes = { - dispatch: PropTypes.func.isRequired, - statusIds: ImmutablePropTypes.list.isRequired, - isLoading: PropTypes.bool.isRequired, - hasMore: PropTypes.bool.isRequired, - hashtag: PropTypes.string.isRequired, - local: PropTypes.bool.isRequired, - }; - - static defaultProps = { - local: false, - }; - - componentDidMount () { - const { dispatch, hashtag, local } = this.props; - - dispatch(expandHashtagTimeline(hashtag, { local })); - } - - handleLoadMore = () => { - const { dispatch, hashtag, local, statusIds } = this.props; - const maxId = statusIds.last(); - - if (maxId) { - dispatch(expandHashtagTimeline(hashtag, { maxId, local })); - } - } - - setRef = c => { - this.masonry = c; - } - - handleHeightChange = debounce(() => { - if (!this.masonry) { - return; - } - - this.masonry.forcePack(); - }, 50) - - render () { - const { statusIds, hasMore, isLoading } = this.props; - - const sizes = [ - { columns: 1, gutter: 0 }, - { mq: '415px', columns: 1, gutter: 10 }, - { mq: '640px', columns: 2, gutter: 10 }, - { mq: '960px', columns: 3, gutter: 10 }, - { mq: '1255px', columns: 3, gutter: 10 }, - ]; - - const loader = (isLoading && statusIds.isEmpty()) ? : undefined; - - return ( - - {statusIds.map(statusId => ( -
- -
- )).toArray()} -
- ); - } - -} diff --git a/app/javascript/mastodon/features/standalone/public_timeline/index.js b/app/javascript/mastodon/features/standalone/public_timeline/index.js deleted file mode 100644 index 19b0b14be6..0000000000 --- a/app/javascript/mastodon/features/standalone/public_timeline/index.js +++ /dev/null @@ -1,99 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { expandPublicTimeline, expandCommunityTimeline } from 'mastodon/actions/timelines'; -import Masonry from 'react-masonry-infinite'; -import { List as ImmutableList, Map as ImmutableMap } from 'immutable'; -import DetailedStatusContainer from 'mastodon/features/status/containers/detailed_status_container'; -import { debounce } from 'lodash'; -import LoadingIndicator from 'mastodon/components/loading_indicator'; - -const mapStateToProps = (state, { local }) => { - const timeline = state.getIn(['timelines', local ? 'community' : 'public'], ImmutableMap()); - - return { - statusIds: timeline.get('items', ImmutableList()), - isLoading: timeline.get('isLoading', false), - hasMore: timeline.get('hasMore', false), - }; -}; - -export default @connect(mapStateToProps) -class PublicTimeline extends React.PureComponent { - - static propTypes = { - dispatch: PropTypes.func.isRequired, - statusIds: ImmutablePropTypes.list.isRequired, - isLoading: PropTypes.bool.isRequired, - hasMore: PropTypes.bool.isRequired, - local: PropTypes.bool, - }; - - componentDidMount () { - this._connect(); - } - - componentDidUpdate (prevProps) { - if (prevProps.local !== this.props.local) { - this._connect(); - } - } - - _connect () { - const { dispatch, local } = this.props; - - dispatch(local ? expandCommunityTimeline() : expandPublicTimeline()); - } - - handleLoadMore = () => { - const { dispatch, statusIds, local } = this.props; - const maxId = statusIds.last(); - - if (maxId) { - dispatch(local ? expandCommunityTimeline({ maxId }) : expandPublicTimeline({ maxId })); - } - } - - setRef = c => { - this.masonry = c; - } - - handleHeightChange = debounce(() => { - if (!this.masonry) { - return; - } - - this.masonry.forcePack(); - }, 50) - - render () { - const { statusIds, hasMore, isLoading } = this.props; - - const sizes = [ - { columns: 1, gutter: 0 }, - { mq: '415px', columns: 1, gutter: 10 }, - { mq: '640px', columns: 2, gutter: 10 }, - { mq: '960px', columns: 3, gutter: 10 }, - { mq: '1255px', columns: 3, gutter: 10 }, - ]; - - const loader = (isLoading && statusIds.isEmpty()) ? : undefined; - - return ( - - {statusIds.map(statusId => ( -
- -
- )).toArray()} -
- ); - } - -} diff --git a/app/javascript/packs/about.js b/app/javascript/packs/about.js deleted file mode 100644 index 892d825ece..0000000000 --- a/app/javascript/packs/about.js +++ /dev/null @@ -1,26 +0,0 @@ -import './public-path'; -import loadPolyfills from '../mastodon/load_polyfills'; -import { start } from '../mastodon/common'; - -start(); - -function loaded() { - const TimelineContainer = require('../mastodon/containers/timeline_container').default; - const React = require('react'); - const ReactDOM = require('react-dom'); - const mountNode = document.getElementById('mastodon-timeline'); - - if (mountNode !== null) { - const props = JSON.parse(mountNode.getAttribute('data-props')); - ReactDOM.render(, mountNode); - } -} - -function main() { - const ready = require('../mastodon/ready').default; - ready(loaded); -} - -loadPolyfills().then(main).catch(error => { - console.error(error); -}); diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 1e60612776..e744344c58 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -19,7 +19,6 @@ class Form::AdminSettings theme activity_api_enabled peers_api_enabled - show_known_fediverse_at_about_page preview_sensitive_media custom_css profile_directory @@ -42,7 +41,6 @@ class Form::AdminSettings timeline_preview activity_api_enabled peers_api_enabled - show_known_fediverse_at_about_page preview_sensitive_media profile_directory trends diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index fb292941b1..d61b3cd511 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -17,25 +17,12 @@ = render 'registration' .directory - - if Setting.profile_directory - .directory__tag - = optional_link_to Setting.profile_directory, explore_path do - %h4 - = fa_icon 'address-book fw' - = t('about.discover_users') - %small= t('about.browse_directory') - - .avatar-stack - - @instance_presenter.sample_accounts.each do |account| - = image_tag current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url, alt: '', class: 'account__avatar' - - - if Setting.timeline_preview - .directory__tag - = optional_link_to Setting.timeline_preview, public_timeline_path do - %h4 - = fa_icon 'globe fw' - = t('about.see_whats_happening') - %small= t('about.browse_public_posts') + .directory__tag + = link_to web_path do + %h4 + = fa_icon 'globe fw' + = t('about.see_whats_happening') + %small= t('about.browse_public_posts') .directory__tag = link_to 'https://joinmastodon.org/apps', target: '_blank', rel: 'noopener noreferrer' do diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index 1dfd216439..a00cd0222e 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -57,9 +57,6 @@ .fields-group = f.input :timeline_preview, as: :boolean, wrapper: :with_label, label: t('admin.settings.timeline_preview.title'), hint: t('admin.settings.timeline_preview.desc_html') - .fields-group - = f.input :show_known_fediverse_at_about_page, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_known_fediverse_at_about_page.title'), hint: t('admin.settings.show_known_fediverse_at_about_page.desc_html') - .fields-group = f.input :open_deletion, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.deletion.title'), hint: t('admin.settings.registrations.deletion.desc_html') diff --git a/app/views/directories/index.html.haml b/app/views/directories/index.html.haml deleted file mode 100644 index 48f8c4bc2f..0000000000 --- a/app/views/directories/index.html.haml +++ /dev/null @@ -1,54 +0,0 @@ -- content_for :page_title do - = t('directories.explore_mastodon', title: site_title) - -- content_for :header_tags do - %meta{ name: 'description', content: t('directories.explanation') } - - = opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname) - = opengraph 'og:type', 'website' - = opengraph 'og:title', t('directories.explore_mastodon', title: site_title) - = opengraph 'og:description', t('directories.explanation') - = opengraph 'og:image', File.join(root_url, 'android-chrome-192x192.png') - -.page-header - %h1= t('directories.explore_mastodon', title: site_title) - %p= t('directories.explanation') - -- if @accounts.empty? - = nothing_here -- else - .directory__list - - @accounts.each do |account| - .account-card - = link_to TagManager.instance.url_for(account), class: 'account-card__permalink' do - .account-card__header - = image_tag account.header.url, alt: '' - .account-card__title - .account-card__title__avatar - = image_tag account.avatar.url, alt: '' - .display-name - %bdi - %strong.emojify.p-name= display_name(account, custom_emojify: true) - %span - = acct(account) - = fa_icon('lock') if account.locked? - - if account.note.present? - .account-card__bio.emojify - = prerender_custom_emojis(account_bio_format(account), account.emojis) - - else - .flex-spacer - .account-card__actions - .account-card__counters - .account-card__counters__item - = friendly_number_to_human account.statuses_count - %small= t('accounts.posts', count: account.statuses_count).downcase - .account-card__counters__item - = friendly_number_to_human account.followers_count - %small= t('accounts.followers', count: account.followers_count).downcase - .account-card__counters__item - = friendly_number_to_human account.following_count - %small= t('accounts.following', count: account.following_count).downcase - .account-card__actions__button - = account_action_button(account) - - = paginate @accounts diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml index 14f86c9707..9b9e725e97 100644 --- a/app/views/layouts/public.html.haml +++ b/app/views/layouts/public.html.haml @@ -12,7 +12,6 @@ = logo_as_symbol(:wordmark) - unless whitelist_mode? - = link_to t('directories.directory'), explore_path, class: 'nav-link optional' if Setting.profile_directory = link_to t('about.about_this'), about_more_path, class: 'nav-link optional' = link_to t('about.apps'), 'https://joinmastodon.org/apps', class: 'nav-link optional' diff --git a/app/views/public_timelines/show.html.haml b/app/views/public_timelines/show.html.haml deleted file mode 100644 index 9254bd3485..0000000000 --- a/app/views/public_timelines/show.html.haml +++ /dev/null @@ -1,17 +0,0 @@ -- content_for :page_title do - = t('about.see_whats_happening') - -- content_for :header_tags do - %meta{ name: 'robots', content: 'noindex' }/ - = javascript_pack_tag 'about', crossorigin: 'anonymous' - -.page-header - %h1= t('about.see_whats_happening') - - - if Setting.show_known_fediverse_at_about_page - %p= t('about.browse_public_posts') - - else - %p= t('about.browse_local_posts') - -#mastodon-timeline{ data: { props: Oj.dump(default_props.merge(local: !Setting.show_known_fediverse_at_about_page)) }} -.notranslate#modal-container diff --git a/app/views/tags/_og.html.haml b/app/views/tags/_og.html.haml deleted file mode 100644 index 37f644cf2f..0000000000 --- a/app/views/tags/_og.html.haml +++ /dev/null @@ -1,6 +0,0 @@ -= opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname) -= opengraph 'og:url', tag_url(@tag) -= opengraph 'og:type', 'website' -= opengraph 'og:title', "##{@tag.display_name}" -= opengraph 'og:description', strip_tags(t('about.about_hashtag_html', hashtag: @tag.display_name)) -= opengraph 'twitter:card', 'summary' diff --git a/app/views/tags/show.html.haml b/app/views/tags/show.html.haml deleted file mode 100644 index 6dfb4f9b34..0000000000 --- a/app/views/tags/show.html.haml +++ /dev/null @@ -1,16 +0,0 @@ -- content_for :page_title do - = "##{@tag.display_name}" - -- content_for :header_tags do - %meta{ name: 'robots', content: 'noindex' }/ - %link{ rel: 'alternate', type: 'application/rss+xml', href: tag_url(@tag, format: 'rss') }/ - - = javascript_pack_tag 'about', crossorigin: 'anonymous' - = render 'og' - -.page-header - %h1= "##{@tag.display_name}" - %p= t('about.about_hashtag_html', hashtag: @tag.display_name) - -#mastodon-timeline{ data: { props: Oj.dump(default_props.merge(hashtag: @tag.name, local: @local)) }} -.notranslate#modal-container diff --git a/config/locales/en.yml b/config/locales/en.yml index dd341e0c89..8f4ea652b9 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,7 +1,6 @@ --- en: about: - about_hashtag_html: These are public posts tagged with #%{hashtag}. You can interact with them if you have an account anywhere in the fediverse. about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!' about_this: About active_count_after: active @@ -10,14 +9,11 @@ en: api: API apps: Mobile apps apps_platforms: Use Mastodon from iOS, Android and other platforms - browse_directory: Browse a profile directory and filter by interests - browse_local_posts: Browse a live stream of public posts from this server browse_public_posts: Browse a live stream of public posts on Mastodon contact: Contact contact_missing: Not set contact_unavailable: N/A continue_to_web: Continue to web app - discover_users: Discover users documentation: Documentation federation_hint_html: With an account on %{instance} you'll be able to follow people on any Mastodon server and beyond. get_apps: Try a mobile app @@ -783,9 +779,6 @@ en: none: Nobody can sign up open: Anyone can sign up title: Registrations mode - show_known_fediverse_at_about_page: - desc_html: When disabled, restricts the public timeline linked from the landing page to showing only local content - title: Include federated content on unauthenticated public timeline page site_description: desc_html: Introductory paragraph on the API. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a> and <em>. title: Server description @@ -1109,10 +1102,6 @@ en: more_details_html: For more details, see the privacy policy. username_available: Your username will become available again username_unavailable: Your username will remain unavailable - directories: - directory: Profile directory - explanation: Discover users based on their interests - explore_mastodon: Explore %{title} disputes: strikes: action_taken: Action taken diff --git a/config/routes.rb b/config/routes.rb index 5d0b3004bb..d2ede87d32 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -95,7 +95,6 @@ Rails.application.routes.draw do get '/interact/:id', to: 'remote_interaction#new', as: :remote_interaction post '/interact/:id', to: 'remote_interaction#create' - get '/explore', to: 'directories#index', as: :explore get '/settings', to: redirect('/settings/profile') namespace :settings do @@ -188,7 +187,9 @@ Rails.application.routes.draw do resource :relationships, only: [:show, :update] resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update] - get '/public', to: 'public_timelines#show', as: :public_timeline + get '/explore', to: redirect('/web/explore') + get '/public', to: redirect('/web/public') + get '/public/local', to: redirect('/web/public/local') get '/media_proxy/:id/(*any)', to: 'media_proxy#show', as: :media_proxy resource :authorize_interaction, only: [:show, :create] diff --git a/config/settings.yml b/config/settings.yml index 41742118bc..ec8fead0f5 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -66,7 +66,6 @@ defaults: &defaults bootstrap_timeline_accounts: '' activity_api_enabled: true peers_api_enabled: true - show_known_fediverse_at_about_page: true show_domain_blocks: 'disabled' show_domain_blocks_rationale: 'disabled' require_invite_text: false diff --git a/package.json b/package.json index f7804616c3..e3b06c5e77 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,6 @@ "react-immutable-proptypes": "^2.2.0", "react-immutable-pure-component": "^2.2.2", "react-intl": "^2.9.0", - "react-masonry-infinite": "^1.2.2", "react-motion": "^0.5.2", "react-notification": "^6.8.5", "react-overlays": "^0.9.3", diff --git a/spec/controllers/tags_controller_spec.rb b/spec/controllers/tags_controller_spec.rb index 69def90cf7..1fd8494d64 100644 --- a/spec/controllers/tags_controller_spec.rb +++ b/spec/controllers/tags_controller_spec.rb @@ -10,14 +10,9 @@ RSpec.describe TagsController, type: :controller do let!(:late) { Fabricate(:status, tags: [tag], text: 'late #test') } context 'when tag exists' do - it 'returns http success' do + it 'redirects to web version' do get :show, params: { id: 'test', max_id: late.id } - expect(response).to have_http_status(200) - end - - it 'renders application layout' do - get :show, params: { id: 'test', max_id: late.id } - expect(response).to render_template layout: 'public' + expect(response).to redirect_to('/web/tags/test') end end diff --git a/yarn.lock b/yarn.lock index 343e156f82..9bbf3cb10f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2934,13 +2934,6 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -bricks.js@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/bricks.js/-/bricks.js-1.8.0.tgz#8fdeb3c0226af251f4d5727a7df7f9ac0092b4b2" - integrity sha1-j96zwCJq8lH01XJ6fff5rACStLI= - dependencies: - knot.js "^1.1.5" - brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -7110,11 +7103,6 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -knot.js@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/knot.js/-/knot.js-1.1.5.tgz#28e72522f703f50fe98812fde224dd72728fef5d" - integrity sha1-KOclIvcD9Q/piBL94iTdcnKP710= - known-css-properties@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.25.0.tgz#6ebc4d4b412f602e5cfbeb4086bd544e34c0a776" @@ -9226,13 +9214,6 @@ react-immutable-pure-component@^2.2.2: resolved "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-2.2.2.tgz#3014d3e20cd5a7a4db73b81f1f1464f4d351684b" integrity sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A== -react-infinite-scroller@^1.0.12: - version "1.2.4" - resolved "https://registry.yarnpkg.com/react-infinite-scroller/-/react-infinite-scroller-1.2.4.tgz#f67eaec4940a4ce6417bebdd6e3433bfc38826e9" - integrity sha512-/oOa0QhZjXPqaD6sictN2edFMsd3kkMiE19Vcz5JDgHpzEJVqYcmq+V3mkwO88087kvKGe1URNksHEOt839Ubw== - dependencies: - prop-types "^15.5.8" - react-intl-translations-manager@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.3.tgz#aee010ecf35975673e033ca5d7d3f4147894324d" @@ -9274,15 +9255,6 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-masonry-infinite@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/react-masonry-infinite/-/react-masonry-infinite-1.2.2.tgz#20c1386f9ccdda9747527c8f42bc2c02dd2e7951" - integrity sha1-IME4b5zN2pdHUnyPQrwsAt0ueVE= - dependencies: - bricks.js "^1.7.0" - prop-types "^15.5.10" - react-infinite-scroller "^1.0.12" - react-motion@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz#0dd3a69e411316567927917c6626551ba0607316" From cedcece0ccba626d97a910f2e3fecf93c2729ca4 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 5 Oct 2022 00:16:40 +0200 Subject: [PATCH 003/500] Fix deleted pinned posts potentially counting towards the pinned posts limit (#19005) Fixes #18938 --- app/controllers/api/v1/statuses_controller.rb | 1 + app/services/remove_status_service.rb | 2 ++ 2 files changed, 3 insertions(+) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 9270117dad..1cc5aa32ee 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -77,6 +77,7 @@ class Api::V1::StatusesController < Api::BaseController authorize @status, :destroy? @status.discard + StatusPin.find_by(status: @status)&.destroy @status.account.statuses_count = @status.account.statuses_count - 1 json = render_to_body json: @status, serializer: REST::StatusSerializer, source_requested: true diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 8dc521eedf..f9fdea2cb0 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -21,6 +21,8 @@ class RemoveStatusService < BaseService with_lock("distribute:#{@status.id}") do @status.discard + StatusPin.find_by(status: @status)&.destroy + remove_from_self if @account.local? remove_from_followers remove_from_lists From d2528b26b6da34f34b5d7a392e263428d3c09d69 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Oct 2022 03:47:56 +0200 Subject: [PATCH 004/500] Add server banner to web app, add `GET /api/v2/instance` to REST API (#19294) --- app/controllers/about_controller.rb | 2 +- .../api/v1/instances_controller.rb | 2 +- .../api/v2/instances_controller.rb | 8 ++ app/javascript/mastodon/actions/rules.js | 27 ----- app/javascript/mastodon/actions/server.js | 30 ++++++ app/javascript/mastodon/components/account.js | 14 ++- .../mastodon/components/display_name.js | 8 +- .../mastodon/components/server_banner.js | 91 ++++++++++++++++ .../mastodon/features/report/rules.js | 2 +- .../features/ui/components/compose_panel.js | 2 + .../features/ui/components/report_modal.js | 4 +- app/javascript/mastodon/features/ui/index.js | 4 +- app/javascript/mastodon/initial_state.js | 1 - app/javascript/mastodon/reducers/index.js | 4 +- app/javascript/mastodon/reducers/rules.js | 13 --- app/javascript/mastodon/reducers/server.js | 19 ++++ .../styles/mastodon/components.scss | 82 ++++++++++++++ app/presenters/instance_presenter.rb | 64 ++++++++--- app/serializers/initial_state_serializer.rb | 19 ++-- app/serializers/manifest_serializer.rb | 4 +- app/serializers/rest/instance_serializer.rb | 81 ++++---------- .../rest/v1/instance_serializer.rb | 102 ++++++++++++++++++ app/views/about/more.html.haml | 8 +- app/views/about/show.html.haml | 6 +- app/views/application/_sidebar.html.haml | 4 +- app/views/privacy/show.html.haml | 2 +- app/views/shared/_og.html.haml | 4 +- config/routes.rb | 4 +- spec/presenters/instance_presenter_spec.rb | 38 +++---- spec/views/about/show.html.haml_spec.rb | 20 +--- 30 files changed, 473 insertions(+), 196 deletions(-) create mode 100644 app/controllers/api/v2/instances_controller.rb delete mode 100644 app/javascript/mastodon/actions/rules.js create mode 100644 app/javascript/mastodon/actions/server.js create mode 100644 app/javascript/mastodon/components/server_banner.js delete mode 100644 app/javascript/mastodon/reducers/rules.js create mode 100644 app/javascript/mastodon/reducers/server.js create mode 100644 app/serializers/rest/v1/instance_serializer.rb diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb index 4fc2fbe340..8da4a19ab5 100644 --- a/app/controllers/about_controller.rb +++ b/app/controllers/about_controller.rb @@ -18,7 +18,7 @@ class AboutController < ApplicationController def more flash.now[:notice] = I18n.t('about.instance_actor_flash') if params[:instance_actor] - toc_generator = TOCGenerator.new(@instance_presenter.site_extended_description) + toc_generator = TOCGenerator.new(@instance_presenter.extended_description) @rules = Rule.ordered @contents = toc_generator.html diff --git a/app/controllers/api/v1/instances_controller.rb b/app/controllers/api/v1/instances_controller.rb index 5b5058a7bf..913319a869 100644 --- a/app/controllers/api/v1/instances_controller.rb +++ b/app/controllers/api/v1/instances_controller.rb @@ -6,6 +6,6 @@ class Api::V1::InstancesController < Api::BaseController def show expires_in 3.minutes, public: true - render_with_cache json: {}, serializer: REST::InstanceSerializer, root: 'instance' + render_with_cache json: InstancePresenter.new, serializer: REST::V1::InstanceSerializer, root: 'instance' end end diff --git a/app/controllers/api/v2/instances_controller.rb b/app/controllers/api/v2/instances_controller.rb new file mode 100644 index 0000000000..bcd90cff22 --- /dev/null +++ b/app/controllers/api/v2/instances_controller.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class Api::V2::InstancesController < Api::V1::InstancesController + def show + expires_in 3.minutes, public: true + render_with_cache json: InstancePresenter.new, serializer: REST::InstanceSerializer, root: 'instance' + end +end diff --git a/app/javascript/mastodon/actions/rules.js b/app/javascript/mastodon/actions/rules.js deleted file mode 100644 index 34e60a121e..0000000000 --- a/app/javascript/mastodon/actions/rules.js +++ /dev/null @@ -1,27 +0,0 @@ -import api from '../api'; - -export const RULES_FETCH_REQUEST = 'RULES_FETCH_REQUEST'; -export const RULES_FETCH_SUCCESS = 'RULES_FETCH_SUCCESS'; -export const RULES_FETCH_FAIL = 'RULES_FETCH_FAIL'; - -export const fetchRules = () => (dispatch, getState) => { - dispatch(fetchRulesRequest()); - - api(getState) - .get('/api/v1/instance').then(({ data }) => dispatch(fetchRulesSuccess(data.rules))) - .catch(err => dispatch(fetchRulesFail(err))); -}; - -const fetchRulesRequest = () => ({ - type: RULES_FETCH_REQUEST, -}); - -const fetchRulesSuccess = rules => ({ - type: RULES_FETCH_SUCCESS, - rules, -}); - -const fetchRulesFail = error => ({ - type: RULES_FETCH_FAIL, - error, -}); diff --git a/app/javascript/mastodon/actions/server.js b/app/javascript/mastodon/actions/server.js new file mode 100644 index 0000000000..af8fef780f --- /dev/null +++ b/app/javascript/mastodon/actions/server.js @@ -0,0 +1,30 @@ +import api from '../api'; +import { importFetchedAccount } from './importer'; + +export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST'; +export const SERVER_FETCH_SUCCESS = 'Server_FETCH_SUCCESS'; +export const SERVER_FETCH_FAIL = 'Server_FETCH_FAIL'; + +export const fetchServer = () => (dispatch, getState) => { + dispatch(fetchServerRequest()); + + api(getState) + .get('/api/v2/instance').then(({ data }) => { + if (data.contact.account) dispatch(importFetchedAccount(data.contact.account)); + dispatch(fetchServerSuccess(data)); + }).catch(err => dispatch(fetchServerFail(err))); +}; + +const fetchServerRequest = () => ({ + type: SERVER_FETCH_REQUEST, +}); + +const fetchServerSuccess = server => ({ + type: SERVER_FETCH_SUCCESS, + server, +}); + +const fetchServerFail = error => ({ + type: SERVER_FETCH_FAIL, + error, +}); diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index af9f119c82..36429e647d 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -9,6 +9,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { me } from '../initial_state'; import RelativeTimestamp from './relative_timestamp'; +import Skeleton from 'mastodon/components/skeleton'; const messages = defineMessages({ follow: { id: 'account.follow', defaultMessage: 'Follow' }, @@ -26,7 +27,7 @@ export default @injectIntl class Account extends ImmutablePureComponent { static propTypes = { - account: ImmutablePropTypes.map.isRequired, + account: ImmutablePropTypes.map, onFollow: PropTypes.func.isRequired, onBlock: PropTypes.func.isRequired, onMute: PropTypes.func.isRequired, @@ -67,7 +68,16 @@ class Account extends ImmutablePureComponent { const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction } = this.props; if (!account) { - return
; + return ( +
+
+
+
+ +
+
+
+ ); } if (hidden) { diff --git a/app/javascript/mastodon/components/display_name.js b/app/javascript/mastodon/components/display_name.js index 7ccfbd0cd5..e9139ab0fa 100644 --- a/app/javascript/mastodon/components/display_name.js +++ b/app/javascript/mastodon/components/display_name.js @@ -2,11 +2,12 @@ import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import { autoPlayGif } from 'mastodon/initial_state'; +import Skeleton from 'mastodon/components/skeleton'; export default class DisplayName extends React.PureComponent { static propTypes = { - account: ImmutablePropTypes.map.isRequired, + account: ImmutablePropTypes.map, others: ImmutablePropTypes.list, localDomain: PropTypes.string, }; @@ -48,7 +49,7 @@ export default class DisplayName extends React.PureComponent { if (others.size - 2 > 0) { suffix = `+${others.size - 2}`; } - } else { + } else if ((others && others.size > 0) || this.props.account) { if (others && others.size > 0) { account = others.first(); } else { @@ -63,6 +64,9 @@ export default class DisplayName extends React.PureComponent { displayName = ; suffix = @{acct}; + } else { + displayName = ; + suffix = ; } return ( diff --git a/app/javascript/mastodon/components/server_banner.js b/app/javascript/mastodon/components/server_banner.js new file mode 100644 index 0000000000..bdd7f7380b --- /dev/null +++ b/app/javascript/mastodon/components/server_banner.js @@ -0,0 +1,91 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { domain } from 'mastodon/initial_state'; +import { fetchServer } from 'mastodon/actions/server'; +import { connect } from 'react-redux'; +import Account from 'mastodon/containers/account_container'; +import ShortNumber from 'mastodon/components/short_number'; +import Skeleton from 'mastodon/components/skeleton'; +import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; + +const messages = defineMessages({ + aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' }, +}); + +const mapStateToProps = state => ({ + server: state.get('server'), +}); + +export default @connect(mapStateToProps) +@injectIntl +class ServerBanner extends React.PureComponent { + + static propTypes = { + server: PropTypes.object, + dispatch: PropTypes.func, + intl: PropTypes.object, + }; + + componentDidMount () { + const { dispatch } = this.props; + dispatch(fetchServer()); + } + + render () { + const { server, intl } = this.props; + const isLoading = server.get('isLoading'); + + return ( +
+
+ {domain}, mastodon: Mastodon }} /> +
+ + {server.get('title')} + +
+ {isLoading ? ( + <> + +
+ +
+ + + ) : server.get('description')} +
+ +
+
+

+ + +
+ +
+

+ + {isLoading ? ( + <> + +
+ + + ) : ( + <> + +
+ + + )} +
+
+ +
+ + +
+ ); + } + +} diff --git a/app/javascript/mastodon/features/report/rules.js b/app/javascript/mastodon/features/report/rules.js index f2db0d9e4c..2cb4a95b5a 100644 --- a/app/javascript/mastodon/features/report/rules.js +++ b/app/javascript/mastodon/features/report/rules.js @@ -7,7 +7,7 @@ import Button from 'mastodon/components/button'; import Option from './components/option'; const mapStateToProps = state => ({ - rules: state.get('rules'), + rules: state.getIn(['server', 'rules']), }); export default @connect(mapStateToProps) diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.js b/app/javascript/mastodon/features/ui/components/compose_panel.js index 655c202fae..1d481eab52 100644 --- a/app/javascript/mastodon/features/ui/components/compose_panel.js +++ b/app/javascript/mastodon/features/ui/components/compose_panel.js @@ -5,6 +5,7 @@ import SearchContainer from 'mastodon/features/compose/containers/search_contain import ComposeFormContainer from 'mastodon/features/compose/containers/compose_form_container'; import NavigationContainer from 'mastodon/features/compose/containers/navigation_container'; import LinkFooter from './link_footer'; +import ServerBanner from 'mastodon/components/server_banner'; import { changeComposing } from 'mastodon/actions/compose'; export default @connect() @@ -35,6 +36,7 @@ class ComposePanel extends React.PureComponent { {!signedIn && ( +
)} diff --git a/app/javascript/mastodon/features/ui/components/report_modal.js b/app/javascript/mastodon/features/ui/components/report_modal.js index 744dd248b5..264da07ce0 100644 --- a/app/javascript/mastodon/features/ui/components/report_modal.js +++ b/app/javascript/mastodon/features/ui/components/report_modal.js @@ -2,7 +2,7 @@ import React from 'react'; import { connect } from 'react-redux'; import { submitReport } from 'mastodon/actions/reports'; import { expandAccountTimeline } from 'mastodon/actions/timelines'; -import { fetchRules } from 'mastodon/actions/rules'; +import { fetchServer } from 'mastodon/actions/server'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { makeGetAccount } from 'mastodon/selectors'; @@ -117,7 +117,7 @@ class ReportModal extends ImmutablePureComponent { const { dispatch, accountId } = this.props; dispatch(expandAccountTimeline(accountId, { withReplies: true })); - dispatch(fetchRules()); + dispatch(fetchServer()); } render () { diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 4e37908c83..bc6ff1866a 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -13,7 +13,7 @@ import { debounce } from 'lodash'; import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose'; import { expandHomeTimeline } from '../../actions/timelines'; import { expandNotifications } from '../../actions/notifications'; -import { fetchRules } from '../../actions/rules'; +import { fetchServer } from '../../actions/server'; import { clearHeight } from '../../actions/height_cache'; import { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers'; @@ -392,7 +392,7 @@ class UI extends React.PureComponent { this.props.dispatch(expandHomeTimeline()); this.props.dispatch(expandNotifications()); - setTimeout(() => this.props.dispatch(fetchRules()), 3000); + setTimeout(() => this.props.dispatch(fetchServer()), 3000); } this.hotkeys.__mousetrap__.stopCallback = (e, element) => { diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index 81607a03b2..9ecbfe5763 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -28,6 +28,5 @@ export const title = getMeta('title'); export const cropImages = getMeta('crop_images'); export const disableSwiping = getMeta('disable_swiping'); export const languages = initialState && initialState.languages; -export const server = initialState && initialState.server; export default initialState; diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js index d3d0303dfc..bccdc18655 100644 --- a/app/javascript/mastodon/reducers/index.js +++ b/app/javascript/mastodon/reducers/index.js @@ -17,7 +17,7 @@ import status_lists from './status_lists'; import mutes from './mutes'; import blocks from './blocks'; import boosts from './boosts'; -import rules from './rules'; +import server from './server'; import contexts from './contexts'; import compose from './compose'; import search from './search'; @@ -62,7 +62,7 @@ const reducers = { mutes, blocks, boosts, - rules, + server, contexts, compose, search, diff --git a/app/javascript/mastodon/reducers/rules.js b/app/javascript/mastodon/reducers/rules.js deleted file mode 100644 index c1180b5203..0000000000 --- a/app/javascript/mastodon/reducers/rules.js +++ /dev/null @@ -1,13 +0,0 @@ -import { RULES_FETCH_SUCCESS } from 'mastodon/actions/rules'; -import { List as ImmutableList, fromJS } from 'immutable'; - -const initialState = ImmutableList(); - -export default function rules(state = initialState, action) { - switch (action.type) { - case RULES_FETCH_SUCCESS: - return fromJS(action.rules); - default: - return state; - } -} diff --git a/app/javascript/mastodon/reducers/server.js b/app/javascript/mastodon/reducers/server.js new file mode 100644 index 0000000000..68131c6ddf --- /dev/null +++ b/app/javascript/mastodon/reducers/server.js @@ -0,0 +1,19 @@ +import { SERVER_FETCH_REQUEST, SERVER_FETCH_SUCCESS, SERVER_FETCH_FAIL } from 'mastodon/actions/server'; +import { Map as ImmutableMap, fromJS } from 'immutable'; + +const initialState = ImmutableMap({ + isLoading: true, +}); + +export default function server(state = initialState, action) { + switch (action.type) { + case SERVER_FETCH_REQUEST: + return state.set('isLoading', true); + case SERVER_FETCH_SUCCESS: + return fromJS(action.server).set('isLoading', false); + case SERVER_FETCH_FAIL: + return state.set('isLoading', false); + default: + return state; + } +} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index e831fce53e..4bdd5accf8 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -8021,3 +8021,85 @@ noscript { } } } + +.server-banner { + padding: 20px 0; + + &__introduction { + color: $darker-text-color; + margin-bottom: 20px; + + strong { + font-weight: 600; + } + + a { + color: inherit; + text-decoration: underline; + + &:hover, + &:active, + &:focus { + text-decoration: none; + } + } + } + + &__hero { + display: block; + border-radius: 4px; + width: 100%; + height: auto; + margin-bottom: 20px; + aspect-ratio: 1.9; + border: 0; + background: $ui-base-color; + object-fit: cover; + } + + &__description { + margin-bottom: 20px; + } + + &__meta { + display: flex; + gap: 10px; + max-width: 100%; + + &__column { + flex: 0 0 auto; + width: calc(50% - 5px); + overflow: hidden; + } + } + + &__number { + font-weight: 600; + color: $primary-text-color; + } + + &__number-label { + color: $darker-text-color; + font-weight: 500; + } + + h4 { + text-transform: uppercase; + color: $darker-text-color; + margin-bottom: 10px; + font-weight: 600; + } + + .account { + padding: 0; + border: 0; + } + + .account__avatar-wrapper { + margin-left: 0; + } + + .spacer { + margin: 10px 0; + } +} diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb index 3e85faa924..c461ac55f3 100644 --- a/app/presenters/instance_presenter.rb +++ b/app/presenters/instance_presenter.rb @@ -1,19 +1,51 @@ # frozen_string_literal: true -class InstancePresenter - delegate( - :site_contact_email, - :site_title, - :site_short_description, - :site_description, - :site_extended_description, - :site_terms, - :closed_registrations_message, - to: Setting - ) - - def contact_account - Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, '')) +class InstancePresenter < ActiveModelSerializers::Model + attributes :domain, :title, :version, :source_url, + :description, :languages, :rules, :contact + + class ContactPresenter < ActiveModelSerializers::Model + attributes :email, :account + + def email + Setting.site_contact_email + end + + def account + Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, '')) + end + end + + def contact + ContactPresenter.new + end + + def closed_registrations_message + Setting.closed_registrations_message + end + + def description + Setting.site_short_description + end + + def extended_description + Setting.site_extended_description + end + + def privacy_policy + Setting.site_terms + end + + def domain + Rails.configuration.x.local_domain + end + + def title + Setting.site_title + end + + def languages + [I18n.default_locale] end def rules @@ -40,8 +72,8 @@ class InstancePresenter Rails.cache.fetch('sample_accounts', expires_in: 12.hours) { Account.local.discoverable.popular.limit(3) } end - def version_number - Mastodon::Version + def version + Mastodon::Version.to_s end def source_url diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 87f4db83d2..1a49182a8e 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -5,23 +5,24 @@ class InitialStateSerializer < ActiveModel::Serializer attributes :meta, :compose, :accounts, :media_attachments, :settings, - :languages, :server + :languages has_one :push_subscription, serializer: REST::WebPushSubscriptionSerializer has_one :role, serializer: REST::RoleSerializer + # rubocop:disable Metrics/AbcSize def meta store = { streaming_api_base_url: Rails.configuration.x.streaming_api_base_url, access_token: object.token, locale: I18n.locale, - domain: Rails.configuration.x.local_domain, - title: instance_presenter.site_title, + domain: instance_presenter.domain, + title: instance_presenter.title, admin: object.admin&.id&.to_s, search_enabled: Chewy.enabled?, repository: Mastodon::Version.repository, - source_url: Mastodon::Version.source_url, - version: Mastodon::Version.to_s, + source_url: instance_presenter.source_url, + version: instance_presenter.version, limited_federation_mode: Rails.configuration.x.whitelist_mode, mascot: instance_presenter.mascot&.file&.url, profile_directory: Setting.profile_directory, @@ -54,6 +55,7 @@ class InitialStateSerializer < ActiveModel::Serializer store end + # rubocop:enable Metrics/AbcSize def compose store = {} @@ -85,13 +87,6 @@ class InitialStateSerializer < ActiveModel::Serializer LanguagesHelper::SUPPORTED_LOCALES.map { |(key, value)| [key, value[0], value[1]] } end - def server - { - hero: instance_presenter.hero&.file&.url || instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), - description: instance_presenter.site_short_description.presence || I18n.t('about.about_mastodon_html'), - } - end - private def instance_presenter diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb index 9827323a81..6b52964804 100644 --- a/app/serializers/manifest_serializer.rb +++ b/app/serializers/manifest_serializer.rb @@ -22,11 +22,11 @@ class ManifestSerializer < ActiveModel::Serializer :share_target, :shortcuts def name - object.site_title + object.title end def short_name - object.site_title + object.title end def icons diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 9cc2454223..f4ea494277 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -1,61 +1,39 @@ # frozen_string_literal: true class REST::InstanceSerializer < ActiveModel::Serializer - include RoutingHelper - - attributes :uri, :title, :short_description, :description, :email, - :version, :urls, :stats, :thumbnail, - :languages, :registrations, :approval_required, :invites_enabled, - :configuration - - has_one :contact_account, serializer: REST::AccountSerializer - - has_many :rules, serializer: REST::RuleSerializer - - delegate :contact_account, :rules, to: :instance_presenter - - def uri - Rails.configuration.x.local_domain - end + class ContactSerializer < ActiveModel::Serializer + attributes :email - def title - Setting.site_title + has_one :account, serializer: REST::AccountSerializer end - def short_description - Setting.site_short_description - end - - def description - Setting.site_description - end + include RoutingHelper - def email - Setting.site_contact_email - end + attributes :domain, :title, :version, :source_url, :description, + :usage, :thumbnail, :languages, :configuration, + :registrations - def version - Mastodon::Version.to_s - end + has_one :contact, serializer: ContactSerializer + has_many :rules, serializer: REST::RuleSerializer def thumbnail - instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url) : full_pack_url('media/images/preview.png') + object.thumbnail ? full_asset_url(object.thumbnail.file.url) : full_pack_url('media/images/preview.png') end - def stats + def usage { - user_count: instance_presenter.user_count, - status_count: instance_presenter.status_count, - domain_count: instance_presenter.domain_count, + users: { + active_month: object.active_user_count(4), + }, } end - def urls - { streaming_api: Rails.configuration.x.streaming_api_base_url } - end - def configuration { + urls: { + streaming: Rails.configuration.x.streaming_api_base_url, + }, + statuses: { max_characters: StatusLengthValidator::MAX_CHARS, max_media_attachments: 4, @@ -80,25 +58,10 @@ class REST::InstanceSerializer < ActiveModel::Serializer } end - def languages - [I18n.default_locale] - end - def registrations - Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode - end - - def approval_required - Setting.registrations_mode == 'approved' - end - - def invites_enabled - UserRole.everyone.can?(:invite_users) - end - - private - - def instance_presenter - @instance_presenter ||= InstancePresenter.new + { + enabled: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode, + approval_required: Setting.registrations_mode == 'approved', + } end end diff --git a/app/serializers/rest/v1/instance_serializer.rb b/app/serializers/rest/v1/instance_serializer.rb new file mode 100644 index 0000000000..47fa086fc2 --- /dev/null +++ b/app/serializers/rest/v1/instance_serializer.rb @@ -0,0 +1,102 @@ +# frozen_string_literal: true + +class REST::V1::InstanceSerializer < ActiveModel::Serializer + include RoutingHelper + + attributes :uri, :title, :short_description, :description, :email, + :version, :urls, :stats, :thumbnail, + :languages, :registrations, :approval_required, :invites_enabled, + :configuration + + has_one :contact_account, serializer: REST::AccountSerializer + + has_many :rules, serializer: REST::RuleSerializer + + def uri + object.domain + end + + def short_description + object.description + end + + def description + Setting.site_description # Legacy + end + + def email + object.contact.email + end + + def contact_account + object.contact.account + end + + def thumbnail + instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url) : full_pack_url('media/images/preview.png') + end + + def stats + { + user_count: instance_presenter.user_count, + status_count: instance_presenter.status_count, + domain_count: instance_presenter.domain_count, + } + end + + def urls + { streaming_api: Rails.configuration.x.streaming_api_base_url } + end + + def usage + { + users: { + active_month: instance_presenter.active_user_count(4), + }, + } + end + + def configuration + { + statuses: { + max_characters: StatusLengthValidator::MAX_CHARS, + max_media_attachments: 4, + characters_reserved_per_url: StatusLengthValidator::URL_PLACEHOLDER_CHARS, + }, + + media_attachments: { + supported_mime_types: MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES + MediaAttachment::AUDIO_MIME_TYPES, + image_size_limit: MediaAttachment::IMAGE_LIMIT, + image_matrix_limit: Attachmentable::MAX_MATRIX_LIMIT, + video_size_limit: MediaAttachment::VIDEO_LIMIT, + video_frame_rate_limit: MediaAttachment::MAX_VIDEO_FRAME_RATE, + video_matrix_limit: MediaAttachment::MAX_VIDEO_MATRIX_LIMIT, + }, + + polls: { + max_options: PollValidator::MAX_OPTIONS, + max_characters_per_option: PollValidator::MAX_OPTION_CHARS, + min_expiration: PollValidator::MIN_EXPIRATION, + max_expiration: PollValidator::MAX_EXPIRATION, + }, + } + end + + def registrations + Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode + end + + def approval_required + Setting.registrations_mode == 'approved' + end + + def invites_enabled + UserRole.everyone.can?(:invite_users) + end + + private + + def instance_presenter + @instance_presenter ||= InstancePresenter.new + end +end diff --git a/app/views/about/more.html.haml b/app/views/about/more.html.haml index 3b48afc0cd..a5a10b6205 100644 --- a/app/views/about/more.html.haml +++ b/app/views/about/more.html.haml @@ -9,7 +9,7 @@ .column-0 .public-account-header.public-account-header--no-bar .public-account-header__image - = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.site_title, class: 'parallax' + = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title, class: 'parallax' .column-1 .landing-page__call-to-action{ dir: 'ltr' } @@ -31,14 +31,14 @@ .contact-widget %h4= t 'about.administered_by' - = account_link_to(@instance_presenter.contact_account) + = account_link_to(@instance_presenter.contact.account) - - if @instance_presenter.site_contact_email.present? + - if @instance_presenter.contact.email.present? %h4 = succeed ':' do = t 'about.contact' - = mail_to @instance_presenter.site_contact_email, nil, title: @instance_presenter.site_contact_email + = mail_to @instance_presenter.contact.email, nil, title: @instance_presenter.contact.email .column-3 = render 'application/flashes' diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index d61b3cd511..75124d5e27 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -40,11 +40,11 @@ .hero-widget .hero-widget__img - = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.site_title + = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title .hero-widget__text %p - = @instance_presenter.site_short_description.html_safe.presence || t('about.about_mastodon_html') + = @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html') = link_to about_more_path do = t('about.learn_more') = fa_icon 'angle-double-right' @@ -53,7 +53,7 @@ .hero-widget__footer__column %h4= t 'about.administered_by' - = account_link_to @instance_presenter.contact_account + = account_link_to @instance_presenter.contact.account .hero-widget__footer__column %h4= t 'about.server_stats' diff --git a/app/views/application/_sidebar.html.haml b/app/views/application/_sidebar.html.haml index cc157bf479..eb2813dd03 100644 --- a/app/views/application/_sidebar.html.haml +++ b/app/views/application/_sidebar.html.haml @@ -1,9 +1,9 @@ .hero-widget .hero-widget__img - = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.site_title + = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title .hero-widget__text - %p= @instance_presenter.site_short_description.html_safe.presence || t('about.about_mastodon_html') + %p= @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html') - if Setting.trends && !(user_signed_in? && !current_user.setting_trends) - trends = Trends.tags.query.allowed.limit(3) diff --git a/app/views/privacy/show.html.haml b/app/views/privacy/show.html.haml index 9d076a91b4..cdd38a5958 100644 --- a/app/views/privacy/show.html.haml +++ b/app/views/privacy/show.html.haml @@ -4,6 +4,6 @@ .grid .column-0 .box-widget - .rich-formatting= @instance_presenter.site_terms.html_safe.presence || t('terms.body_html') + .rich-formatting= @instance_presenter.privacy_policy.html_safe.presence || t('terms.body_html') .column-1 = render 'application/sidebar' diff --git a/app/views/shared/_og.html.haml b/app/views/shared/_og.html.haml index 7feae1b8b4..b54ab2429a 100644 --- a/app/views/shared/_og.html.haml +++ b/app/views/shared/_og.html.haml @@ -1,12 +1,12 @@ - thumbnail = @instance_presenter.thumbnail -- description ||= strip_tags(@instance_presenter.site_short_description.presence || t('about.about_mastodon_html')) +- description ||= strip_tags(@instance_presenter.description.presence || t('about.about_mastodon_html')) %meta{ name: 'description', content: description }/ = opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname) = opengraph 'og:url', url_for(only_path: false) = opengraph 'og:type', 'website' -= opengraph 'og:title', @instance_presenter.site_title += opengraph 'og:title', @instance_presenter.title = opengraph 'og:description', description = opengraph 'og:image', full_asset_url(thumbnail&.file&.url || asset_pack_path('media/images/preview.png', protocol: :request)) = opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200' diff --git a/config/routes.rb b/config/routes.rb index d2ede87d32..188898fd0b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -616,10 +616,12 @@ Rails.application.routes.draw do end namespace :v2 do - resources :media, only: [:create] get '/search', to: 'search#index', as: :search + + resources :media, only: [:create] resources :suggestions, only: [:index] resources :filters, only: [:index, :create, :show, :update, :destroy] + resource :instance, only: [:show] namespace :admin do resources :accounts, only: [:index] diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb index 973b3e23c8..a0a8628e8b 100644 --- a/spec/presenters/instance_presenter_spec.rb +++ b/spec/presenters/instance_presenter_spec.rb @@ -3,21 +3,20 @@ require 'rails_helper' describe InstancePresenter do let(:instance_presenter) { InstancePresenter.new } - context do + describe '#description' do around do |example| - site_description = Setting.site_description + site_description = Setting.site_short_description example.run - Setting.site_description = site_description + Setting.site_short_description = site_description end it "delegates site_description to Setting" do - Setting.site_description = "Site desc" - - expect(instance_presenter.site_description).to eq "Site desc" + Setting.site_short_description = "Site desc" + expect(instance_presenter.description).to eq "Site desc" end end - context do + describe '#extended_description' do around do |example| site_extended_description = Setting.site_extended_description example.run @@ -26,12 +25,11 @@ describe InstancePresenter do it "delegates site_extended_description to Setting" do Setting.site_extended_description = "Extended desc" - - expect(instance_presenter.site_extended_description).to eq "Extended desc" + expect(instance_presenter.extended_description).to eq "Extended desc" end end - context do + describe '#email' do around do |example| site_contact_email = Setting.site_contact_email example.run @@ -40,12 +38,11 @@ describe InstancePresenter do it "delegates contact_email to Setting" do Setting.site_contact_email = "admin@example.com" - - expect(instance_presenter.site_contact_email).to eq "admin@example.com" + expect(instance_presenter.contact.email).to eq "admin@example.com" end end - describe "contact_account" do + describe '#account' do around do |example| site_contact_username = Setting.site_contact_username example.run @@ -55,12 +52,11 @@ describe InstancePresenter do it "returns the account for the site contact username" do Setting.site_contact_username = "aaa" account = Fabricate(:account, username: "aaa") - - expect(instance_presenter.contact_account).to eq(account) + expect(instance_presenter.contact.account).to eq(account) end end - describe "user_count" do + describe '#user_count' do it "returns the number of site users" do Rails.cache.write 'user_count', 123 @@ -68,7 +64,7 @@ describe InstancePresenter do end end - describe "status_count" do + describe '#status_count' do it "returns the number of local statuses" do Rails.cache.write 'local_status_count', 234 @@ -76,7 +72,7 @@ describe InstancePresenter do end end - describe "domain_count" do + describe '#domain_count' do it "returns the number of known domains" do Rails.cache.write 'distinct_domain_count', 345 @@ -84,9 +80,9 @@ describe InstancePresenter do end end - describe '#version_number' do - it 'returns Mastodon::Version' do - expect(instance_presenter.version_number).to be(Mastodon::Version) + describe '#version' do + it 'returns string' do + expect(instance_presenter.version).to be_a String end end diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb index 4eab97da91..bf6e19d2b9 100644 --- a/spec/views/about/show.html.haml_spec.rb +++ b/spec/views/about/show.html.haml_spec.rb @@ -12,25 +12,7 @@ describe 'about/show.html.haml', without_verify_partial_doubles: true do end it 'has valid open graph tags' do - instance_presenter = double( - :instance_presenter, - site_title: 'something', - site_short_description: 'something', - site_description: 'something', - version_number: '1.0', - source_url: 'https://github.com/mastodon/mastodon', - open_registrations: false, - thumbnail: nil, - hero: nil, - mascot: nil, - user_count: 420, - status_count: 69, - active_user_count: 420, - contact_account: nil, - sample_accounts: [] - ) - - assign(:instance_presenter, instance_presenter) + assign(:instance_presenter, InstancePresenter.new) render header_tags = view.content_for(:header_tags) From 9f65909f42c14d1e56c5f916eb76b156709ac147 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Oct 2022 03:48:06 +0200 Subject: [PATCH 005/500] Change public timelines to be filtered by current locale by default (#19291) In the absence of an opt-in to multiple specific languages in the preferences, it makes more sense to filter by the user's presumed language only (interface language or `lang` override) --- .../api/v1/timelines/public_controller.rb | 1 + .../api/v1/timelines/tag_controller.rb | 1 + app/models/public_feed.rb | 13 ++++++++++++- app/models/status.rb | 1 - app/models/tag_feed.rb | 2 ++ spec/models/status_spec.rb | 16 ---------------- 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/app/controllers/api/v1/timelines/public_controller.rb b/app/controllers/api/v1/timelines/public_controller.rb index d253b744f9..15b91d63ea 100644 --- a/app/controllers/api/v1/timelines/public_controller.rb +++ b/app/controllers/api/v1/timelines/public_controller.rb @@ -35,6 +35,7 @@ class Api::V1::Timelines::PublicController < Api::BaseController def public_feed PublicFeed.new( current_account, + locale: content_locale, local: truthy_param?(:local), remote: truthy_param?(:remote), only_media: truthy_param?(:only_media) diff --git a/app/controllers/api/v1/timelines/tag_controller.rb b/app/controllers/api/v1/timelines/tag_controller.rb index 64a1db58df..9f3a5b3f12 100644 --- a/app/controllers/api/v1/timelines/tag_controller.rb +++ b/app/controllers/api/v1/timelines/tag_controller.rb @@ -36,6 +36,7 @@ class Api::V1::Timelines::TagController < Api::BaseController TagFeed.new( @tag, current_account, + locale: content_locale, any: params[:any], all: params[:all], none: params[:none], diff --git a/app/models/public_feed.rb b/app/models/public_feed.rb index 5e4c3e1cee..2cf9206d2b 100644 --- a/app/models/public_feed.rb +++ b/app/models/public_feed.rb @@ -8,6 +8,7 @@ class PublicFeed # @option [Boolean] :local # @option [Boolean] :remote # @option [Boolean] :only_media + # @option [String] :locale def initialize(account, options = {}) @account = account @options = options @@ -27,6 +28,7 @@ class PublicFeed scope.merge!(remote_only_scope) if remote_only? scope.merge!(account_filters_scope) if account? scope.merge!(media_only_scope) if media_only? + scope.merge!(language_scope) scope.cache_ids.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id) end @@ -83,10 +85,19 @@ class PublicFeed Status.joins(:media_attachments).group(:id) end + def language_scope + if account&.chosen_languages.present? + Status.where(language: account.chosen_languages) + elsif @options[:locale].present? + Status.where(language: @options[:locale]) + else + Status.all + end + end + def account_filters_scope Status.not_excluded_by_account(account).tap do |scope| scope.merge!(Status.not_domain_blocked_by_account(account)) unless local_only? - scope.merge!(Status.in_chosen_languages(account)) if account.chosen_languages.present? end end end diff --git a/app/models/status.rb b/app/models/status.rb index 7eff990aab..de958aaf33 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -95,7 +95,6 @@ class Status < ApplicationRecord scope :without_reblogs, -> { where('statuses.reblog_of_id IS NULL') } scope :with_public_visibility, -> { where(visibility: :public) } scope :tagged_with, ->(tag_ids) { joins(:statuses_tags).where(statuses_tags: { tag_id: tag_ids }) } - scope :in_chosen_languages, ->(account) { where(language: nil).or where(language: account.chosen_languages) } scope :excluding_silenced_accounts, -> { left_outer_joins(:account).where(accounts: { silenced_at: nil }) } scope :including_silenced_accounts, -> { left_outer_joins(:account).where.not(accounts: { silenced_at: nil }) } scope :not_excluded_by_account, ->(account) { where.not(account_id: account.excluded_from_timeline_account_ids) } diff --git a/app/models/tag_feed.rb b/app/models/tag_feed.rb index b8cd63557e..58216bddcb 100644 --- a/app/models/tag_feed.rb +++ b/app/models/tag_feed.rb @@ -12,6 +12,7 @@ class TagFeed < PublicFeed # @option [Boolean] :local # @option [Boolean] :remote # @option [Boolean] :only_media + # @option [String] :locale def initialize(tag, account, options = {}) @tag = tag super(account, options) @@ -32,6 +33,7 @@ class TagFeed < PublicFeed scope.merge!(remote_only_scope) if remote_only? scope.merge!(account_filters_scope) if account? scope.merge!(media_only_scope) if media_only? + scope.merge!(language_scope) scope.cache_ids.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id) end diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index 130f4d03fa..78cc059596 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -251,22 +251,6 @@ RSpec.describe Status, type: :model do end end - describe '.in_chosen_languages' do - context 'for accounts with language filters' do - let(:user) { Fabricate(:user, chosen_languages: ['en']) } - - it 'does not include statuses in not in chosen languages' do - status = Fabricate(:status, language: 'de') - expect(Status.in_chosen_languages(user.account)).not_to include status - end - - it 'includes status with unknown language' do - status = Fabricate(:status, language: nil) - expect(Status.in_chosen_languages(user.account)).to include status - end - end - end - describe '.tagged_with' do let(:tag1) { Fabricate(:tag) } let(:tag2) { Fabricate(:tag) } From 0e41d360c068deb8655dc1b9facfa4c15985c271 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Oct 2022 07:02:09 +0200 Subject: [PATCH 006/500] Change font size of active users in server banner to be larger in web UI (#19295) --- app/javascript/styles/mastodon/components.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 4bdd5accf8..491aec339b 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -8076,11 +8076,13 @@ noscript { &__number { font-weight: 600; color: $primary-text-color; + font-size: 14px; } &__number-label { color: $darker-text-color; font-weight: 500; + font-size: 14px; } h4 { From 26f2586b620148e7ad7f6b6ab10c6ea273bd596e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Oct 2022 09:14:38 +0200 Subject: [PATCH 007/500] New Crowdin updates (#19289) * New translations devise.en.yml (Tamil) * New translations doorkeeper.en.yml (Tamil) * New translations simple_form.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Spanish, Argentina) * New translations devise.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Marathi) * New translations activerecord.en.yml (Spanish, Mexico) * New translations devise.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations activerecord.en.yml (Bengali) * New translations devise.en.yml (Bengali) * New translations activerecord.en.yml (Marathi) * New translations activerecord.en.yml (Hindi) * New translations devise.en.yml (Malayalam) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Tatar) * New translations activerecord.en.yml (Tatar) * New translations devise.en.yml (Tatar) * New translations doorkeeper.en.yml (Tatar) * New translations simple_form.en.yml (Malayalam) * New translations activerecord.en.yml (Malayalam) * New translations doorkeeper.en.yml (Malayalam) * New translations simple_form.en.yml (Breton) * New translations activerecord.en.yml (Breton) * New translations devise.en.yml (Breton) * New translations doorkeeper.en.yml (Breton) * New translations activerecord.en.yml (Sinhala) * New translations devise.en.yml (Sinhala) * New translations doorkeeper.en.yml (Sinhala) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Hindi) * New translations doorkeeper.en.yml (Hindi) * New translations simple_form.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations devise.en.yml (Welsh) * New translations doorkeeper.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations activerecord.en.yml (Esperanto) * New translations devise.en.yml (Esperanto) * New translations doorkeeper.en.yml (Esperanto) * New translations simple_form.en.yml (Corsican) * New translations activerecord.en.yml (Corsican) * New translations devise.en.yml (Corsican) * New translations doorkeeper.en.yml (Corsican) * New translations simple_form.en.yml (Sardinian) * New translations activerecord.en.yml (Sardinian) * New translations devise.en.yml (Sardinian) * New translations doorkeeper.en.yml (Sardinian) * New translations devise.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Kabyle) * New translations activerecord.en.yml (Kabyle) * New translations devise.en.yml (Kabyle) * New translations doorkeeper.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations activerecord.en.yml (Ido) * New translations devise.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Occitan) * New translations devise.en.yml (Kannada) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations activerecord.en.yml (Asturian) * New translations devise.en.yml (Asturian) * New translations doorkeeper.en.yml (Asturian) * New translations activerecord.en.yml (Occitan) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations devise.en.yml (Occitan) * New translations doorkeeper.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Serbian (Latin)) * New translations devise.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations devise.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations devise.en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.yml (Romanian) * New translations en.json (Arabic) * New translations en.yml (Afrikaans) * New translations en.json (Spanish) * New translations en.yml (French) * New translations en.json (French) * New translations en.json (Catalan) * New translations en.json (Romanian) * New translations en.yml (Catalan) * New translations en.json (Danish) * New translations en.yml (Danish) * New translations en.json (Greek) * New translations en.yml (Greek) * New translations en.yml (Bulgarian) * New translations en.json (Bulgarian) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.json (German) * New translations en.json (Czech) * New translations en.yml (Spanish) * New translations en.yml (Arabic) * New translations en.yml (Basque) * New translations en.json (Finnish) * New translations en.yml (Finnish) * New translations en.json (Irish) * New translations en.json (Basque) * New translations en.json (Frisian) * New translations en.yml (Hebrew) * New translations en.yml (Thai) * New translations en.json (Hebrew) * New translations en.json (Sinhala) * New translations en.json (Indonesian) * New translations en.json (Japanese) * New translations en.yml (Ukrainian) * New translations en.yml (Albanian) * New translations en.json (Albanian) * New translations en.json (Dutch) * New translations en.yml (Turkish) * New translations en.json (Esperanto) * New translations en.json (Tamil) * New translations en.json (Ido) * New translations en.yml (Ido) * New translations en.yml (Chinese Simplified) * New translations en.json (Thai) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.json (Chinese Traditional) * New translations en.json (Slovenian) * New translations en.yml (Slovenian) * New translations en.json (Serbian (Cyrillic)) * New translations en.yml (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.yml (Chinese Traditional) * New translations en.json (Slovak) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations en.json (Icelandic) * New translations en.yml (Icelandic) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Slovak) * New translations en.yml (Russian) * New translations en.json (Armenian) * New translations en.json (Macedonian) * New translations en.yml (Armenian) * New translations en.json (Italian) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.json (Georgian) * New translations en.yml (Georgian) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.yml (Lithuanian) * New translations en.json (Russian) * New translations en.yml (Dutch) * New translations en.json (Norwegian) * New translations en.yml (Norwegian) * New translations en.json (Polish) * New translations en.yml (Polish) * New translations en.json (Portuguese) * New translations en.yml (Portuguese) * New translations en.yml (Indonesian) * New translations en.json (Persian) * New translations en.json (Welsh) * New translations en.yml (Welsh) * New translations en.yml (Esperanto) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.json (Malayalam) * New translations en.yml (Telugu) * New translations en.yml (Malayalam) * New translations en.json (Breton) * New translations en.yml (Breton) * New translations en.yml (Sinhala) * New translations en.json (Cornish) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations en.json (Telugu) * New translations en.yml (Persian) * New translations en.yml (Croatian) * New translations en.yml (Tamil) * New translations en.json (Spanish, Argentina) * New translations en.yml (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.yml (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.yml (Bengali) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Malay) * New translations en.yml (Norwegian Nynorsk) * New translations en.json (Kazakh) * New translations en.yml (Kazakh) * New translations en.json (Estonian) * New translations en.yml (Estonian) * New translations en.json (Latvian) * New translations en.yml (Latvian) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Asturian) * New translations en.yml (Asturian) * New translations en.json (Occitan) * New translations en.yml (Sardinian) * New translations en.yml (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.yml (Serbian (Latin)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.json (Corsican) * New translations en.yml (Corsican) * New translations en.json (Sardinian) * New translations en.json (Kabyle) * New translations en.yml (Kabyle) * New translations en.json (Standard Moroccan Tamazight) * New translations en.json (German) * New translations en.json (Catalan) * New translations en.json (Greek) * New translations en.json (Slovenian) * New translations en.json (Spanish, Argentina) * New translations en.json (Czech) * New translations en.json (Russian) * New translations en.json (Chinese Traditional) * New translations en.json (Ido) * New translations en.json (Ukrainian) * New translations en.json (Icelandic) * New translations en.json (Korean) * New translations en.json (Galician) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 20 ++- app/javascript/mastodon/locales/ar.json | 20 ++- app/javascript/mastodon/locales/ast.json | 20 ++- app/javascript/mastodon/locales/bg.json | 20 ++- app/javascript/mastodon/locales/bn.json | 20 ++- app/javascript/mastodon/locales/br.json | 20 ++- app/javascript/mastodon/locales/ca.json | 20 ++- app/javascript/mastodon/locales/ckb.json | 20 ++- app/javascript/mastodon/locales/co.json | 20 ++- app/javascript/mastodon/locales/cs.json | 20 ++- app/javascript/mastodon/locales/cy.json | 20 ++- app/javascript/mastodon/locales/da.json | 20 ++- app/javascript/mastodon/locales/de.json | 20 ++- .../mastodon/locales/defaultMessages.json | 158 ++++++++++-------- app/javascript/mastodon/locales/el.json | 20 ++- app/javascript/mastodon/locales/en-GB.json | 20 ++- app/javascript/mastodon/locales/en.json | 14 +- app/javascript/mastodon/locales/eo.json | 20 ++- app/javascript/mastodon/locales/es-AR.json | 20 ++- app/javascript/mastodon/locales/es-MX.json | 30 ++-- app/javascript/mastodon/locales/es.json | 20 ++- app/javascript/mastodon/locales/et.json | 20 ++- app/javascript/mastodon/locales/eu.json | 20 ++- app/javascript/mastodon/locales/fa.json | 20 ++- app/javascript/mastodon/locales/fi.json | 20 ++- app/javascript/mastodon/locales/fr.json | 20 ++- app/javascript/mastodon/locales/fy.json | 20 ++- app/javascript/mastodon/locales/ga.json | 20 ++- app/javascript/mastodon/locales/gd.json | 20 ++- app/javascript/mastodon/locales/gl.json | 20 ++- app/javascript/mastodon/locales/he.json | 20 ++- app/javascript/mastodon/locales/hi.json | 20 ++- app/javascript/mastodon/locales/hr.json | 20 ++- app/javascript/mastodon/locales/hu.json | 20 ++- app/javascript/mastodon/locales/hy.json | 20 ++- app/javascript/mastodon/locales/id.json | 20 ++- app/javascript/mastodon/locales/io.json | 20 ++- app/javascript/mastodon/locales/is.json | 20 ++- app/javascript/mastodon/locales/it.json | 20 ++- app/javascript/mastodon/locales/ja.json | 20 ++- app/javascript/mastodon/locales/ka.json | 20 ++- app/javascript/mastodon/locales/kab.json | 20 ++- app/javascript/mastodon/locales/kk.json | 20 ++- app/javascript/mastodon/locales/kn.json | 20 ++- app/javascript/mastodon/locales/ko.json | 20 ++- app/javascript/mastodon/locales/ku.json | 20 ++- app/javascript/mastodon/locales/kw.json | 20 ++- app/javascript/mastodon/locales/lt.json | 20 ++- app/javascript/mastodon/locales/lv.json | 20 ++- app/javascript/mastodon/locales/mk.json | 20 ++- app/javascript/mastodon/locales/ml.json | 20 ++- app/javascript/mastodon/locales/mr.json | 20 ++- app/javascript/mastodon/locales/ms.json | 20 ++- app/javascript/mastodon/locales/nl.json | 20 ++- app/javascript/mastodon/locales/nn.json | 20 ++- app/javascript/mastodon/locales/no.json | 20 ++- app/javascript/mastodon/locales/oc.json | 20 ++- app/javascript/mastodon/locales/pa.json | 20 ++- app/javascript/mastodon/locales/pl.json | 20 ++- app/javascript/mastodon/locales/pt-BR.json | 20 ++- app/javascript/mastodon/locales/pt-PT.json | 20 ++- app/javascript/mastodon/locales/ro.json | 20 ++- app/javascript/mastodon/locales/ru.json | 20 ++- app/javascript/mastodon/locales/sa.json | 20 ++- app/javascript/mastodon/locales/sc.json | 20 ++- app/javascript/mastodon/locales/si.json | 20 ++- app/javascript/mastodon/locales/sk.json | 20 ++- app/javascript/mastodon/locales/sl.json | 20 ++- app/javascript/mastodon/locales/sq.json | 20 ++- app/javascript/mastodon/locales/sr-Latn.json | 20 ++- app/javascript/mastodon/locales/sr.json | 20 ++- app/javascript/mastodon/locales/sv.json | 20 ++- app/javascript/mastodon/locales/szl.json | 20 ++- app/javascript/mastodon/locales/ta.json | 20 ++- app/javascript/mastodon/locales/tai.json | 20 ++- app/javascript/mastodon/locales/te.json | 20 ++- app/javascript/mastodon/locales/th.json | 20 ++- app/javascript/mastodon/locales/tr.json | 20 ++- app/javascript/mastodon/locales/tt.json | 20 ++- app/javascript/mastodon/locales/ug.json | 20 ++- app/javascript/mastodon/locales/uk.json | 20 ++- app/javascript/mastodon/locales/ur.json | 20 ++- app/javascript/mastodon/locales/vi.json | 20 ++- app/javascript/mastodon/locales/zgh.json | 20 ++- app/javascript/mastodon/locales/zh-CN.json | 20 ++- app/javascript/mastodon/locales/zh-HK.json | 20 ++- app/javascript/mastodon/locales/zh-TW.json | 20 ++- config/locales/af.yml | 1 - config/locales/ar.yml | 11 -- config/locales/ast.yml | 6 - config/locales/bg.yml | 3 - config/locales/bn.yml | 4 - config/locales/br.yml | 3 - config/locales/ca.yml | 11 -- config/locales/ckb.yml | 11 -- config/locales/co.yml | 11 -- config/locales/cs.yml | 11 -- config/locales/cy.yml | 11 -- config/locales/da.yml | 11 -- config/locales/de.yml | 11 -- config/locales/devise.fr.yml | 2 +- config/locales/devise.zh-CN.yml | 4 +- config/locales/el.yml | 11 -- config/locales/eo.yml | 11 -- config/locales/es-AR.yml | 11 -- config/locales/es-MX.yml | 11 -- config/locales/es.yml | 11 -- config/locales/et.yml | 11 -- config/locales/eu.yml | 11 -- config/locales/fa.yml | 11 -- config/locales/fi.yml | 11 -- config/locales/fr.yml | 11 -- config/locales/gd.yml | 11 -- config/locales/gl.yml | 11 -- config/locales/he.yml | 11 -- config/locales/hr.yml | 2 - config/locales/hu.yml | 11 -- config/locales/hy.yml | 8 - config/locales/id.yml | 11 -- config/locales/io.yml | 11 -- config/locales/is.yml | 11 -- config/locales/it.yml | 11 -- config/locales/ja.yml | 11 -- config/locales/ka.yml | 4 - config/locales/kab.yml | 6 - config/locales/kk.yml | 11 -- config/locales/ko.yml | 11 -- config/locales/ku.yml | 11 -- config/locales/lt.yml | 8 - config/locales/lv.yml | 11 -- config/locales/ml.yml | 3 - config/locales/ms.yml | 4 - config/locales/nl.yml | 11 -- config/locales/nn.yml | 10 -- config/locales/no.yml | 10 -- config/locales/oc.yml | 11 -- config/locales/pl.yml | 11 -- config/locales/pt-BR.yml | 11 -- config/locales/pt-PT.yml | 11 -- config/locales/ro.yml | 7 - config/locales/ru.yml | 11 -- config/locales/sc.yml | 11 -- config/locales/si.yml | 11 -- config/locales/simple_form.es-MX.yml | 1 + config/locales/sk.yml | 11 -- config/locales/sl.yml | 11 -- config/locales/sq.yml | 11 -- config/locales/sr-Latn.yml | 1 - config/locales/sr.yml | 9 - config/locales/sv.yml | 11 -- config/locales/ta.yml | 3 - config/locales/te.yml | 1 - config/locales/th.yml | 11 -- config/locales/tr.yml | 11 -- config/locales/uk.yml | 11 -- config/locales/vi.yml | 25 +-- config/locales/zh-CN.yml | 11 -- config/locales/zh-HK.yml | 11 -- config/locales/zh-TW.yml | 11 -- 159 files changed, 1301 insertions(+), 1245 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 2d3f2e694b..0a0cb38044 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Iets het verkeerd gegaan terwyl hierdie komponent besig was om te laai.", "bundle_modal_error.retry": "Probeer weer", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Boekmerke", "column.community": "Plaaslike tydlyn", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 00e91004e5..6831a23913 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "إغلاق", "bundle_modal_error.message": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", "bundle_modal_error.retry": "إعادة المُحاولة", + "column.about": "About", "column.blocks": "المُستَخدِمون المَحظورون", "column.bookmarks": "الفواصل المرجعية", "column.community": "الخيط الزمني المحلي", @@ -221,14 +222,14 @@ "follow_request.reject": "رفض", "follow_requests.unlocked_explanation": "على الرغم من أن حسابك غير مقفل، فإن موظفين الـ{domain} ظنوا أنك قد ترغب في مراجعة طلبات المتابعة من هذه الحسابات يدوياً.", "generic.saved": "تم الحفظ", - "getting_started.developers": "المُطوِّرون", - "getting_started.directory": "دليل الصفحات التعريفية", + "getting_started.directory": "Directory", "getting_started.documentation": "الدليل", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "استعدّ للبدء", "getting_started.invite": "دعوة أشخاص", - "getting_started.open_source_notice": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على جيت هب {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "الأمان", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "أو {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "المدة", "mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟", "mute_modal.indefinite": "إلى أجل غير مسمى", - "navigation_bar.apps": "تطبيقات الأجهزة المحمولة", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "الحسابات المحجوبة", "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط المحلي", @@ -324,7 +326,7 @@ "navigation_bar.filters": "الكلمات المكتومة", "navigation_bar.follow_requests": "طلبات المتابعة", "navigation_bar.follows_and_followers": "المتابِعين والمتابَعون", - "navigation_bar.info": "عن هذا الخادم", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "اختصارات لوحة المفاتيح", "navigation_bar.lists": "القوائم", "navigation_bar.logout": "خروج", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", "navigation_bar.security": "الأمان", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "أنشأ {name} حسابًا", "notification.favourite": "أُعجِب {name} بمنشورك", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "البحث عن المنشورات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "الرئيسية", "tabs_bar.local_timeline": "الخيط العام المحلي", "tabs_bar.notifications": "الإخطارات", - "tabs_bar.search": "البحث", "time_remaining.days": "{number, plural, one {# يوم} other {# أيام}} متبقية", "time_remaining.hours": "{number, plural, one {# ساعة} other {# ساعات}} متبقية", "time_remaining.minutes": "{number, plural, one {# دقيقة} other {# دقائق}} متبقية", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index aabcefaea5..824fc5dffc 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Asocedió daqué malo mentanto se cargaba esti componente.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Usuarios bloquiaos", "column.bookmarks": "Marcadores", "column.community": "Llinia temporal llocal", @@ -221,14 +222,14 @@ "follow_request.reject": "Refugar", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Desendolcadores", - "getting_started.directory": "Direutoriu de perfiles", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentación", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Entamu", "getting_started.invite": "Convidar a persones", - "getting_started.open_source_notice": "Mastodon ye software de códigu abiertu. Pues collaborar o informar de fallos en GitHub: {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Axustes de la cuenta", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "ensin {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "¿Anubrir los avisos d'esti usuariu?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Aplicaciones pa móviles", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Usuarios bloquiaos", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Llinia temporal llocal", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Pallabres silenciaes", "navigation_bar.follow_requests": "Solicitúes de siguimientu", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "Tocante a esta instancia", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Atayos", "navigation_bar.lists": "Llistes", "navigation_bar.logout": "Zarrar sesión", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia temporal federada", "navigation_bar.security": "Seguranza", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Esti sirvidor de Mastodon tien activada la gueta de barritos pol so conteníu.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultáu} other {resultaos}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Aniciu", "tabs_bar.local_timeline": "Llocal", "tabs_bar.notifications": "Avisos", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {Queda # día} other {Queden # díes}}", "time_remaining.hours": "{number, plural, one {Queda # hora} other {Queden # hores}}", "time_remaining.minutes": "{number, plural, one {Queda # minutu} other {Queden # minutos}}", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 0bb60d8bd2..101dba65c9 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Затваряне", "bundle_modal_error.message": "Нещо се обърка при зареждането на този компонент.", "bundle_modal_error.retry": "Опитайте отново", + "column.about": "About", "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", "column.community": "Локална емисия", @@ -221,14 +222,14 @@ "follow_request.reject": "Отхвърляне", "follow_requests.unlocked_explanation": "Въпреки че акаунтът ви не е заключен, служителите на {domain} помислиха, че може да искате да преглеждате ръчно заявките за последване на тези профили.", "generic.saved": "Запазено", - "getting_started.developers": "Разработчици", - "getting_started.directory": "Профилна директория", + "getting_started.directory": "Directory", "getting_started.documentation": "Документация", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Първи стъпки", "getting_started.invite": "Поканване на хора", - "getting_started.open_source_notice": "Mastodon е софтуер с отворен код. Можеш да помогнеш или да докладваш за проблеми в Github: {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Продължителност", "mute_modal.hide_notifications": "Скриване на известия от този потребител?", "mute_modal.indefinite": "Неопределено", - "navigation_bar.apps": "Мобилни приложения", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Блокирани потребители", "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Заглушени думи", "navigation_bar.follow_requests": "Заявки за последване", "navigation_bar.follows_and_followers": "Последвания и последователи", - "navigation_bar.info": "Extended information", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", "navigation_bar.lists": "Списъци", "navigation_bar.logout": "Излизане", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Публичен канал", "navigation_bar.security": "Сигурност", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} докладва {target}", "notification.admin.sign_up": "{name} се регистрира", "notification.favourite": "{name} хареса твоята публикация", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Търсенето на публикации по тяхното съдържание не е активирано за този Mastodon сървър.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {резултат} other {резултата}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Начало", "tabs_bar.local_timeline": "Локално", "tabs_bar.notifications": "Известия", - "tabs_bar.search": "Търсене", "time_remaining.days": "{number, plural, one {# ден} other {# дни}} остава", "time_remaining.hours": "{number, plural, one {# час} other {# часа}} остава", "time_remaining.minutes": "{number, plural, one {# минута} other {# минути}} остава", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 87c62cd904..43588f1323 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "বন্ধ করুন", "bundle_modal_error.message": "এই অংশটি দেখাতে যেয়ে কোনো সমস্যা হয়েছে।.", "bundle_modal_error.retry": "আবার চেষ্টা করুন", + "column.about": "About", "column.blocks": "যাদের ব্লক করা হয়েছে", "column.bookmarks": "বুকমার্ক", "column.community": "স্থানীয় সময়সারি", @@ -221,14 +222,14 @@ "follow_request.reject": "প্রত্যাখ্যান করুন", "follow_requests.unlocked_explanation": "আপনার অ্যাকাউন্টটি লক না থাকলেও, {domain} কর্মীরা ভেবেছিলেন যে আপনি এই অ্যাকাউন্টগুলি থেকে ম্যানুয়ালি অনুসরণের অনুরোধগুলি পর্যালোচনা করতে চাইতে পারেন।", "generic.saved": "সংরক্ষণ হয়েছে", - "getting_started.developers": "তৈরিকারকদের জন্য", - "getting_started.directory": "নিজস্ব-পাতাগুলির তালিকা", + "getting_started.directory": "Directory", "getting_started.documentation": "নথিপত্র", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "শুরু করা", "getting_started.invite": "অন্যদের আমন্ত্রণ করুন", - "getting_started.open_source_notice": "মাস্টাডন একটি মুক্ত সফটওয়্যার। তৈরিতে সাহায্য করতে বা কোনো সমস্যা সম্পর্কে জানাতে আমাদের গিটহাবে যেতে পারেন {github}।", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "নিরাপত্তা", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "এবং {additional}", "hashtag.column_header.tag_mode.any": "অথবা {additional}", "hashtag.column_header.tag_mode.none": "বাদ দিয়ে {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "সময়কাল", "mute_modal.hide_notifications": "এই ব্যবহারকারীর প্রজ্ঞাপন বন্ধ করবেন ?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "মোবাইলের আপ্প", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "বন্ধ করা ব্যবহারকারী", "navigation_bar.bookmarks": "বুকমার্ক", "navigation_bar.community_timeline": "স্থানীয় সময়রেখা", @@ -324,7 +326,7 @@ "navigation_bar.filters": "বন্ধ করা শব্দ", "navigation_bar.follow_requests": "অনুসরণের অনুরোধগুলি", "navigation_bar.follows_and_followers": "অনুসরণ এবং অনুসরণকারী", - "navigation_bar.info": "এই সার্ভার সম্পর্কে", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "হটকীগুলি", "navigation_bar.lists": "তালিকাগুলো", "navigation_bar.logout": "বাইরে যান", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "পছন্দসমূহ", "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা", "navigation_bar.security": "নিরাপত্তা", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "তাদের সামগ্রী দ্বারা টুটগুলি অনুসন্ধান এই মস্তোডন সার্ভারে সক্ষম নয়।", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {ফলাফল} other {ফলাফল}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "বাড়ি", "tabs_bar.local_timeline": "স্থানীয়", "tabs_bar.notifications": "প্রজ্ঞাপনগুলো", - "tabs_bar.search": "অনুসন্ধান", "time_remaining.days": "{number, plural, one {# day} other {# days}} বাকি আছে", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} বাকি আছে", "time_remaining.minutes": "{number, plural, one {# মিনিট} other {# মিনিট}} বাকি আছে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 4d772416cc..92d5e2da94 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Serriñ", "bundle_modal_error.message": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", "bundle_modal_error.retry": "Klask en-dro", + "column.about": "About", "column.blocks": "Implijer·ezed·ien berzet", "column.bookmarks": "Sinedoù", "column.community": "Red-amzer lec'hel", @@ -221,14 +222,14 @@ "follow_request.reject": "Nac'hañ", "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", "generic.saved": "Enrollet", - "getting_started.developers": "Diorroerien", - "getting_started.directory": "Roll ar profiloù", + "getting_started.directory": "Directory", "getting_started.documentation": "Teuliadur", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Loc'hañ", "getting_started.invite": "Pediñ tud", - "getting_started.open_source_notice": "Mastodoñ zo ur meziant digor e darzh. Gallout a rit kenoberzhiañ dezhañ pe danevellañ kudennoù war GitHub e {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Arventennoù ar gont", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ha {additional}", "hashtag.column_header.tag_mode.any": "pe {additional}", "hashtag.column_header.tag_mode.none": "hep {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Padelezh", "mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?", "mute_modal.indefinite": "Amstrizh", - "navigation_bar.apps": "Arloadoù pellgomz", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Gerioù kuzhet", "navigation_bar.follow_requests": "Pedadoù heuliañ", "navigation_bar.follows_and_followers": "Heuliadennoù ha heulier·ezed·ien", - "navigation_bar.info": "Diwar-benn an dafariad-mañ", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Berradurioù", "navigation_bar.lists": "Listennoù", "navigation_bar.logout": "Digennaskañ", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", "navigation_bar.security": "Diogelroez", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "Disklêriet eo bet {target} gant {name}", "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", "notification.favourite": "{name} en/he deus lakaet ho toud en e/he muiañ-karet", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Klask toudoù dre oc'h endalc'h n'eo ket aotreet war ar servijer-mañ.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {disoc'h} other {a zisoc'h}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Degemer", "tabs_bar.local_timeline": "Lec'hel", "tabs_bar.notifications": "Kemennoù", - "tabs_bar.search": "Klask", "time_remaining.days": "{number, plural,one {# devezh} other {# a zevezh}} a chom", "time_remaining.hours": "{number, plural, one {# eurvezh} other{# eurvezh}} a chom", "time_remaining.minutes": "{number, plural, one {# munut} other{# a vunut}} a chom", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f2d9b98226..1369ab1495 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", "bundle_modal_error.retry": "Tornar-ho a provar", + "column.about": "About", "column.blocks": "Usuaris bloquejats", "column.bookmarks": "Marcadors", "column.community": "Línia de temps local", @@ -221,14 +222,14 @@ "follow_request.reject": "Rebutja", "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes manualment.", "generic.saved": "Desat", - "getting_started.developers": "Desenvolupadors", - "getting_started.directory": "Directori de perfils", + "getting_started.directory": "Directori", "getting_started.documentation": "Documentació", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primers passos", "getting_started.invite": "Convidar gent", - "getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir-hi o informar de problemes a GitHub a {github}.", "getting_started.privacy_policy": "Política de Privacitat", "getting_started.security": "Configuració del compte", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sense {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Durada", "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?", "mute_modal.indefinite": "Indefinit", - "navigation_bar.apps": "Aplicacions mòbils", + "navigation_bar.about": "About", + "navigation_bar.apps": "Aconsegueix l'app", "navigation_bar.blocks": "Usuaris bloquejats", "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Línia de temps local", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Paraules silenciades", "navigation_bar.follow_requests": "Sol·licituds de seguiment", "navigation_bar.follows_and_followers": "Seguits i seguidors", - "navigation_bar.info": "Sobre aquest servidor", + "navigation_bar.info": "Quant a", "navigation_bar.keyboard_shortcuts": "Dreceres de teclat", "navigation_bar.lists": "Llistes", "navigation_bar.logout": "Tancar sessió", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", "navigation_bar.security": "Seguretat", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} ha reportat {target}", "notification.admin.sign_up": "{name} s'ha registrat", "notification.favourite": "{name} ha afavorit la teva publicació", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "La cerca de publicacions pel seu contingut no està habilitada en aquest servidor Mastodon.", "search_results.title": "Cerca de {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Crear compte", "sign_in_banner.sign_in": "Inicia sessió", "sign_in_banner.text": "Inicia sessió per a seguir perfils o etiquetes, afavorir, compartir o respondre apunts, o interactuar des d'el teu compte amb un servidor diferent.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Inici", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificacions", - "tabs_bar.search": "Cerca", "time_remaining.days": "{number, plural, one {# dia} other {# dies}} restants", "time_remaining.hours": "{number, plural, one {# hora} other {# hores}} restants", "time_remaining.minutes": "{number, plural, one {# minut} other {# minuts}} restants", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 0e2991541e..3818bbfa94 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "داخستن", "bundle_modal_error.message": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", "bundle_modal_error.retry": "دووبارە تاقی بکەوە", + "column.about": "About", "column.blocks": "بەکارهێنەرە بلۆککراوەکان", "column.bookmarks": "نیشانەکان", "column.community": "هێڵی کاتی ناوخۆیی", @@ -221,14 +222,14 @@ "follow_request.reject": "ڕەتکردنەوە", "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.", "generic.saved": "پاشکەوتکرا", - "getting_started.developers": "پەرەپێدەران", - "getting_started.directory": "پەڕەی پرۆفایل", + "getting_started.directory": "Directory", "getting_started.documentation": "بەڵگەنامە", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "دەست پێکردن", "getting_started.invite": "بانگهێشتکردنی خەڵک", - "getting_started.open_source_notice": "ماستۆدۆن نەرمەکالایەکی سەرچاوەی کراوەیە. دەتوانیت بەشداری بکەیت یان گوزارشت بکەیت لەسەر کێشەکانی لە پەڕەی گیتهاب {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ڕێکخستنەکانی هەژمارە", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بەبێ {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "ماوە", "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ", "mute_modal.indefinite": "نادیار", - "navigation_bar.apps": "بەرنامەی مۆبایل", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "بەکارهێنەرە بلۆککراوەکان", "navigation_bar.bookmarks": "نیشانکراوەکان", "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی", @@ -324,7 +326,7 @@ "navigation_bar.filters": "وشە کپەکان", "navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە", "navigation_bar.follows_and_followers": "شوێنکەوتوو و شوێنکەوتوان", - "navigation_bar.info": "دەربارەی ئەم ڕاژە", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "هۆتکەی", "navigation_bar.lists": "لیستەکان", "navigation_bar.logout": "دەرچوون", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "پەسەندەکان", "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک", "navigation_bar.security": "ئاسایش", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} تۆمارکرا", "notification.favourite": "{name} نووسراوەکەتی پەسەند کرد", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "گەڕانی توتەکان بە ناوەڕۆکیان لەسەر ئەم ڕاژەی ماستۆدۆن چالاک نەکراوە.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {دەرئەنجام} other {دەرئەنجام}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "سەرەتا", "tabs_bar.local_timeline": "ناوخۆیی", "tabs_bar.notifications": "ئاگادارییەکان", - "tabs_bar.search": "بگەڕێ", "time_remaining.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژ}} ماوە", "time_remaining.hours": "{number, plural, one {# کاتژمێر} other {# کاتژمێر}} ماوە", "time_remaining.minutes": "{number, plural, one {# خولەک} other {# خولەک}} ماوە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 58e3772e54..6aad2269d1 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Chjudà", "bundle_modal_error.message": "C'hè statu un prublemu caricandu st'elementu.", "bundle_modal_error.retry": "Pruvà torna", + "column.about": "About", "column.blocks": "Utilizatori bluccati", "column.bookmarks": "Segnalibri", "column.community": "Linea pubblica lucale", @@ -221,14 +222,14 @@ "follow_request.reject": "Righjittà", "follow_requests.unlocked_explanation": "U vostru contu ùn hè micca privatu, ma a squadra d'amministrazione di {domain} pensa chì e dumande d'abbunamentu di questi conti anu bisognu d'esse verificate manualmente.", "generic.saved": "Salvatu", - "getting_started.developers": "Sviluppatori", - "getting_started.directory": "Annuariu di i prufili", + "getting_started.directory": "Directory", "getting_started.documentation": "Ducumentazione", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Per principià", "getting_started.invite": "Invità ghjente", - "getting_started.open_source_notice": "Mastodon ghjè un lugiziale liberu. Pudete cuntribuisce à u codice o a traduzione, o palisà un bug, nant'à GitHub: {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sicurità", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "è {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Durata", "mute_modal.hide_notifications": "Piattà nutificazione da st'utilizatore?", "mute_modal.indefinite": "Indifinita", - "navigation_bar.apps": "Applicazione per u telefuninu", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Utilizatori bluccati", "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Linea pubblica lucale", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Parolle silenzate", "navigation_bar.follow_requests": "Dumande d'abbunamentu", "navigation_bar.follows_and_followers": "Abbunati è abbunamenti", - "navigation_bar.info": "À prupositu di u servore", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Accorte cù a tastera", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Scunnettassi", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferenze", "navigation_bar.public_timeline": "Linea pubblica glubale", "navigation_bar.security": "Sicurità", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "A ricerca di i cuntinuti di i statuti ùn hè micca attivata nant'à stu servore Mastodon.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {risultatu} other {risultati}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Accolta", "tabs_bar.local_timeline": "Lucale", "tabs_bar.notifications": "Nutificazione", - "tabs_bar.search": "Cercà", "time_remaining.days": "{number, plural, one {# ghjornu ferma} other {# ghjorni fermanu}}", "time_remaining.hours": "{number, plural, one {# ora ferma} other {# ore fermanu}}", "time_remaining.minutes": "{number, plural, one {# minuta ferma} other {# minute fermanu}} left", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 43b494af92..28adb742bc 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Zavřít", "bundle_modal_error.message": "Při načítání této komponenty se něco pokazilo.", "bundle_modal_error.retry": "Zkusit znovu", + "column.about": "About", "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", "column.community": "Místní časová osa", @@ -221,14 +222,14 @@ "follow_request.reject": "Odmítnout", "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.", "generic.saved": "Uloženo", - "getting_started.developers": "Vývojáři", - "getting_started.directory": "Adresář profilů", + "getting_started.directory": "Adresář", "getting_started.documentation": "Dokumentace", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Začínáme", "getting_started.invite": "Pozvat lidi", - "getting_started.open_source_notice": "Mastodon je otevřený software. Přispět do jeho vývoje nebo hlásit chyby můžete na GitHubu {github}.", "getting_started.privacy_policy": "Zásady ochrany osobních údajů", "getting_started.security": "Nastavení účtu", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "nebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Trvání", "mute_modal.hide_notifications": "Skrýt oznámení od tohoto uživatele?", "mute_modal.indefinite": "Neomezeně", - "navigation_bar.apps": "Mobilní aplikace", + "navigation_bar.about": "About", + "navigation_bar.apps": "Stáhnout aplikaci", "navigation_bar.blocks": "Blokovaní uživatelé", "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Místní časová osa", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Skrytá slova", "navigation_bar.follow_requests": "Žádosti o sledování", "navigation_bar.follows_and_followers": "Sledovaní a sledující", - "navigation_bar.info": "O tomto serveru", + "navigation_bar.info": "O aplikaci", "navigation_bar.keyboard_shortcuts": "Klávesové zkratky", "navigation_bar.lists": "Seznamy", "navigation_bar.logout": "Odhlásit", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", "navigation_bar.security": "Zabezpečení", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "Uživatel {name} nahlásil {target}", "notification.admin.sign_up": "Uživatel {name} se zaregistroval", "notification.favourite": "Uživatel {name} si oblíbil váš příspěvek", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Vyhledávání příspěvků podle jejich obsahu není na tomto Mastodon serveru povoleno.", "search_results.title": "Hledat {q}", "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledků} other {výsledků}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Vytvořit účet", "sign_in_banner.sign_in": "Přihlásit se", "sign_in_banner.text": "Přihlaste se pro sledování profilů nebo hashtagů, oblíbených, sdílení a odpovědi na příspěvky nebo interakci z vašeho účtu na jiném serveru.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Domovská", "tabs_bar.local_timeline": "Místní", "tabs_bar.notifications": "Oznámení", - "tabs_bar.search": "Hledat", "time_remaining.days": "{number, plural, one {Zbývá # den} few {Zbývají # dny} many {Zbývá # dní} other {Zbývá # dní}}", "time_remaining.hours": "{number, plural, one {Zbývá # hodina} few {Zbývají # hodiny} many {Zbývá # hodin} other {Zbývá # hodin}}", "time_remaining.minutes": "{number, plural, one {Zbývá # minuta} few {Zbývají # minuty} many {Zbývá # minut} other {Zbývá # minut}}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 70418a6097..c57b85f686 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Cau", "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", "bundle_modal_error.retry": "Ceiswich eto", + "column.about": "About", "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Tudalnodau", "column.community": "Ffrwd lleol", @@ -221,14 +222,14 @@ "follow_request.reject": "Gwrthod", "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", "generic.saved": "Wedi'i Gadw", - "getting_started.developers": "Datblygwyr", - "getting_started.directory": "Cyfeiriadur proffil", + "getting_started.directory": "Directory", "getting_started.documentation": "Dogfennaeth", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Dechrau", "getting_started.invite": "Gwahodd pobl", - "getting_started.open_source_notice": "Mae Mastodon yn feddalwedd côd agored. Mae modd cyfrannu neu adrodd materion ar GitHUb ar {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Diogelwch", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "neu {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Hyd", "mute_modal.hide_notifications": "Cuddio hysbysiadau rhag y defnyddiwr hwn?", "mute_modal.indefinite": "Amhenodol", - "navigation_bar.apps": "Apiau symudol", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", "navigation_bar.bookmarks": "Tudalnodau", "navigation_bar.community_timeline": "Ffrwd leol", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Geiriau a dawelwyd", "navigation_bar.follow_requests": "Ceisiadau dilyn", "navigation_bar.follows_and_followers": "Dilynion a ddilynwyr", - "navigation_bar.info": "Ynghylch yr achos hwn", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Bysellau brys", "navigation_bar.lists": "Rhestrau", "navigation_bar.logout": "Allgofnodi", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.security": "Diogelwch", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "Cofrestrodd {name}", "notification.favourite": "Hoffodd {name} eich post", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Nid yw chwilio postiadau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {canlyniad} one {canlyniad} two {ganlyniad} other {o ganlyniadau}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Hafan", "tabs_bar.local_timeline": "Lleol", "tabs_bar.notifications": "Hysbysiadau", - "tabs_bar.search": "Chwilio", "time_remaining.days": "{number, plural, one {# ddydd} other {# o ddyddiau}} ar ôl", "time_remaining.hours": "{number, plural, one {# awr} other {# o oriau}} ar ôl", "time_remaining.minutes": "{number, plural, one {# funud} other {# o funudau}} ar ôl", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 2cdc990730..a0ce703304 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", "bundle_modal_error.retry": "Forsøg igen", + "column.about": "About", "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", "column.community": "Lokal tidslinje", @@ -221,14 +222,14 @@ "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.", "generic.saved": "Gemt", - "getting_started.developers": "Udviklere", - "getting_started.directory": "Profilmappe", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Startmenu", "getting_started.invite": "Invitér folk", - "getting_started.open_source_notice": "Mastodon er open-source software. Du kan bidrage eller anmelde fejl via GitHub {github}.", "getting_started.privacy_policy": "Fortrolighedspolitik", "getting_started.security": "Kontoindstillinger", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uden {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Varighed", "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?", "mute_modal.indefinite": "Tidsubegrænset", - "navigation_bar.apps": "Mobil-apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokerede brugere", "navigation_bar.bookmarks": "Bogmærker", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Tavsgjorte ord", "navigation_bar.follow_requests": "Følgeanmodninger", "navigation_bar.follows_and_followers": "Følges og følgere", - "navigation_bar.info": "Om denne server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Genvejstaster", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Log af", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", "navigation_bar.security": "Sikkerhed", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} anmeldte {target}", "notification.admin.sign_up": "{name} tilmeldte sig", "notification.favourite": "{name} favoritmarkerede dit indlæg", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Søgning på indlæg efter deres indhold ikke aktiveret på denne Mastodon-server.", "search_results.title": "Søg efter {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Opret konto", "sign_in_banner.sign_in": "Log ind", "sign_in_banner.text": "Log ind for at følge profiler eller hashtags, dele og svar på indlæg eller interagere fra kontoen på en anden server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Hjem", "tabs_bar.local_timeline": "Lokal", "tabs_bar.notifications": "Notifikationer", - "tabs_bar.search": "Søg", "time_remaining.days": "{number, plural, one {# dag} other {# dage}} tilbage", "time_remaining.hours": "{number, plural, one {# time} other {# timer}} tilbage", "time_remaining.minutes": "{number, plural, one {# minut} other {# minutter}} tilbage", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 007c38fc3e..6acad55933 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Schließen", "bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.", "bundle_modal_error.retry": "Erneut versuchen", + "column.about": "About", "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", "column.community": "Lokale Zeitleiste", @@ -221,14 +222,14 @@ "follow_request.reject": "Ablehnen", "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Moderator_innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", "generic.saved": "Gespeichert", - "getting_started.developers": "Entwickler", - "getting_started.directory": "Profilverzeichnis", + "getting_started.directory": "Verzeichnis", "getting_started.documentation": "Dokumentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Erste Schritte", "getting_started.invite": "Leute einladen", - "getting_started.open_source_notice": "Mastodon ist quelloffene Software. Du kannst auf GitHub unter {github} dazu beitragen oder Probleme melden.", "getting_started.privacy_policy": "Datenschutzerklärung", "getting_started.security": "Konto & Sicherheit", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "und {additional}", "hashtag.column_header.tag_mode.any": "oder {additional}", "hashtag.column_header.tag_mode.none": "ohne {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Dauer", "mute_modal.hide_notifications": "Benachrichtigungen von diesem Account verbergen?", "mute_modal.indefinite": "Unbestimmt", - "navigation_bar.apps": "Mobile Apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "App downloaden", "navigation_bar.blocks": "Blockierte Profile", "navigation_bar.bookmarks": "Lesezeichen", "navigation_bar.community_timeline": "Lokale Zeitleiste", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Stummgeschaltene Wörter", "navigation_bar.follow_requests": "Folgeanfragen", "navigation_bar.follows_and_followers": "Folgende und Gefolgte", - "navigation_bar.info": "Über diesen Server", + "navigation_bar.info": "Über", "navigation_bar.keyboard_shortcuts": "Tastenkombinationen", "navigation_bar.lists": "Listen", "navigation_bar.logout": "Abmelden", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.security": "Sicherheit", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{target} wurde von {name} gemeldet", "notification.admin.sign_up": "{name} hat sich registriert", "notification.favourite": "{name} hat deinen Beitrag favorisiert", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Die Suche für Beiträge nach ihrem Inhalt ist auf diesem Mastodon-Server deaktiviert.", "search_results.title": "Suchen nach {q}", "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Account erstellen", "sign_in_banner.sign_in": "Einloggen", "sign_in_banner.text": "Melden Sie sich an, um Profilen oder Hashtags zu folgen, Favoriten, Teilen und Antworten auf Beiträge oder interagieren Sie von Ihrem Konto auf einem anderen Server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Startseite", "tabs_bar.local_timeline": "Lokal", "tabs_bar.notifications": "Mitteilungen", - "tabs_bar.search": "Suche", "time_remaining.days": "{number, plural, one {# Tag} other {# Tage}} verbleibend", "time_remaining.hours": "{number, plural, one {# Stunde} other {# Stunden}} verbleibend", "time_remaining.minutes": "{number, plural, one {# Minute} other {# Minuten}} verbleibend", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index cd0ade0471..fec92d81aa 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -357,6 +357,15 @@ ], "path": "app/javascript/mastodon/components/missing_indicator.json" }, + { + "descriptors": [ + { + "defaultMessage": "You need to sign in to access this resource.", + "id": "not_signed_in_indicator.not_signed_in" + } + ], + "path": "app/javascript/mastodon/components/not_signed_in_indicator.json" + }, { "descriptors": [ { @@ -481,6 +490,35 @@ ], "path": "app/javascript/mastodon/components/relative_timestamp.json" }, + { + "descriptors": [ + { + "defaultMessage": "People using this server during the last 30 days (Monthly Active Users)", + "id": "server_banner.about_active_users" + }, + { + "defaultMessage": "{domain} is part of the decentralized social network powered by {mastodon}.", + "id": "server_banner.introduction" + }, + { + "defaultMessage": "Administered by:", + "id": "server_banner.administered_by" + }, + { + "defaultMessage": "Server stats:", + "id": "server_banner.server_stats" + }, + { + "defaultMessage": "active users", + "id": "server_banner.active_users" + }, + { + "defaultMessage": "Learn more", + "id": "server_banner.learn_more" + } + ], + "path": "app/javascript/mastodon/components/server_banner.json" + }, { "descriptors": [ { @@ -789,6 +827,15 @@ ], "path": "app/javascript/mastodon/containers/status_container.json" }, + { + "descriptors": [ + { + "defaultMessage": "About", + "id": "column.about" + } + ], + "path": "app/javascript/mastodon/features/about/index.json" + }, { "descriptors": [ { @@ -3336,35 +3383,6 @@ ], "path": "app/javascript/mastodon/features/status/components/detailed_status.json" }, - { - "descriptors": [ - { - "defaultMessage": "Delete", - "id": "confirmations.delete.confirm" - }, - { - "defaultMessage": "Are you sure you want to delete this status?", - "id": "confirmations.delete.message" - }, - { - "defaultMessage": "Delete & redraft", - "id": "confirmations.redraft.confirm" - }, - { - "defaultMessage": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", - "id": "confirmations.redraft.message" - }, - { - "defaultMessage": "Reply", - "id": "confirmations.reply.confirm" - }, - { - "defaultMessage": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", - "id": "confirmations.reply.message" - } - ], - "path": "app/javascript/mastodon/features/status/containers/detailed_status_container.json" - }, { "descriptors": [ { @@ -3670,6 +3688,19 @@ ], "path": "app/javascript/mastodon/features/ui/components/follow_requests_nav_link.json" }, + { + "descriptors": [ + { + "defaultMessage": "Sign in", + "id": "sign_in_banner.sign_in" + }, + { + "defaultMessage": "Create account", + "id": "sign_in_banner.create_account" + } + ], + "path": "app/javascript/mastodon/features/ui/components/header.json" + }, { "descriptors": [ { @@ -3681,48 +3712,48 @@ "id": "confirmations.logout.confirm" }, { - "defaultMessage": "Invite people", - "id": "getting_started.invite" + "defaultMessage": "Get the app", + "id": "navigation_bar.apps" }, { - "defaultMessage": "Hotkeys", - "id": "navigation_bar.keyboard_shortcuts" + "defaultMessage": "About", + "id": "navigation_bar.info" }, { - "defaultMessage": "Security", - "id": "getting_started.security" + "defaultMessage": "About Mastodon", + "id": "getting_started.what_is_mastodon" }, { - "defaultMessage": "About this server", - "id": "navigation_bar.info" + "defaultMessage": "Documentation", + "id": "getting_started.documentation" }, { - "defaultMessage": "Profile directory", - "id": "getting_started.directory" + "defaultMessage": "Privacy Policy", + "id": "getting_started.privacy_policy" }, { - "defaultMessage": "Mobile apps", - "id": "navigation_bar.apps" + "defaultMessage": "Hotkeys", + "id": "navigation_bar.keyboard_shortcuts" }, { - "defaultMessage": "Privacy Policy", - "id": "getting_started.privacy_policy" + "defaultMessage": "Directory", + "id": "getting_started.directory" }, { - "defaultMessage": "Developers", - "id": "getting_started.developers" + "defaultMessage": "Invite people", + "id": "getting_started.invite" }, { - "defaultMessage": "Documentation", - "id": "getting_started.documentation" + "defaultMessage": "Security", + "id": "getting_started.security" }, { "defaultMessage": "Logout", "id": "navigation_bar.logout" }, { - "defaultMessage": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", - "id": "getting_started.open_source_notice" + "defaultMessage": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "id": "getting_started.free_software_notice" } ], "path": "app/javascript/mastodon/features/ui/components/link_footer.json" @@ -3834,6 +3865,10 @@ { "defaultMessage": "Follows and followers", "id": "navigation_bar.follows_and_followers" + }, + { + "defaultMessage": "About", + "id": "navigation_bar.about" } ], "path": "app/javascript/mastodon/features/ui/components/navigation_panel.json" @@ -3868,31 +3903,6 @@ ], "path": "app/javascript/mastodon/features/ui/components/sign_in_banner.json" }, - { - "descriptors": [ - { - "defaultMessage": "Home", - "id": "tabs_bar.home" - }, - { - "defaultMessage": "Notifications", - "id": "tabs_bar.notifications" - }, - { - "defaultMessage": "Local", - "id": "tabs_bar.local_timeline" - }, - { - "defaultMessage": "Federated", - "id": "tabs_bar.federated_timeline" - }, - { - "defaultMessage": "Search", - "id": "tabs_bar.search" - } - ], - "path": "app/javascript/mastodon/features/ui/components/tabs_bar.json" - }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 125517d3f4..614614a47c 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Κλείσιμο", "bundle_modal_error.message": "Κάτι πήγε στραβά κατά τη φόρτωση του στοιχείου.", "bundle_modal_error.retry": "Δοκίμασε ξανά", + "column.about": "About", "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", "column.community": "Τοπική ροή", @@ -221,14 +222,14 @@ "follow_request.reject": "Απέρριψε", "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.", "generic.saved": "Αποθηκεύτηκε", - "getting_started.developers": "Ανάπτυξη", - "getting_started.directory": "Κατάλογος λογαριασμών", + "getting_started.directory": "Κατάλογος", "getting_started.documentation": "Τεκμηρίωση", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Αφετηρία", "getting_started.invite": "Προσκάλεσε κόσμο", - "getting_started.open_source_notice": "Το Mastodon είναι ελεύθερο λογισμικό. Μπορείς να συνεισφέρεις ή να αναφέρεις ζητήματα στο GitHub στο {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Ασφάλεια", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "και {additional}", "hashtag.column_header.tag_mode.any": "ή {additional}", "hashtag.column_header.tag_mode.none": "χωρίς {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Διάρκεια", "mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;", "mute_modal.indefinite": "Αόριστη", - "navigation_bar.apps": "Εφαρμογές φορητών συσκευών", + "navigation_bar.about": "About", + "navigation_bar.apps": "Αποκτήστε την Εφαρμογή", "navigation_bar.blocks": "Αποκλεισμένοι χρήστες", "navigation_bar.bookmarks": "Σελιδοδείκτες", "navigation_bar.community_timeline": "Τοπική ροή", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Αποσιωπημένες λέξεις", "navigation_bar.follow_requests": "Αιτήματα ακολούθησης", "navigation_bar.follows_and_followers": "Ακολουθείς και σε ακολουθούν", - "navigation_bar.info": "Πληροφορίες κόμβου", + "navigation_bar.info": "Σχετικά με", "navigation_bar.keyboard_shortcuts": "Συντομεύσεις", "navigation_bar.lists": "Λίστες", "navigation_bar.logout": "Αποσύνδεση", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", "navigation_bar.security": "Ασφάλεια", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} ανέφερε {target}", "notification.admin.sign_up": "{name} έχει εγγραφεί", "notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Η αναζήτηση τουτ βάσει του περιεχόμενού τους δεν είναι ενεργοποιημένη σε αυτό τον κόμβο.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {αποτελέσματα} one {αποτέλεσμα} other {αποτελέσματα}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Αρχική", "tabs_bar.local_timeline": "Τοπική", "tabs_bar.notifications": "Ειδοποιήσεις", - "tabs_bar.search": "Αναζήτηση", "time_remaining.days": "απομένουν {number, plural, one {# ημέρα} other {# ημέρες}}", "time_remaining.hours": "απομένουν {number, plural, one {# ώρα} other {# ώρες}}", "time_remaining.minutes": "απομένουν {number, plural, one {# λεπτό} other {# λεπτά}}", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 9a533693dd..61051d97eb 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 81a41b3fc9..30d3b56aa1 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Account settings", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,6 +311,7 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", + "navigation_bar.about": "About", "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your post", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 0fa6814833..4f4d16d151 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Fermi", "bundle_modal_error.message": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", "bundle_modal_error.retry": "Provu refoje", + "column.about": "About", "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", "column.community": "Loka templinio", @@ -221,14 +222,14 @@ "follow_request.reject": "Rifuzi", "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensas, ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.", "generic.saved": "Konservita", - "getting_started.developers": "Programistoj", - "getting_started.directory": "Profilujo", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentado", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Por komenci", "getting_started.invite": "Inviti homojn", - "getting_started.open_source_notice": "Mastodon estas malfermitkoda programo. Vi povas kontribui aŭ raporti problemojn en GitHub je {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sekureco", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "kaj {additional}", "hashtag.column_header.tag_mode.any": "aŭ {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Daŭro", "mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?", "mute_modal.indefinite": "Nedifinita", - "navigation_bar.apps": "Telefonaj aplikaĵoj", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokitaj uzantoj", "navigation_bar.bookmarks": "Legosignoj", "navigation_bar.community_timeline": "Loka templinio", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Silentigitaj vortoj", "navigation_bar.follow_requests": "Demandoj de sekvado", "navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj", - "navigation_bar.info": "Pri ĉi tiu servilo", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Rapidklavoj", "navigation_bar.lists": "Listoj", "navigation_bar.logout": "Adiaŭi", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferoj", "navigation_bar.public_timeline": "Fratara templinio", "navigation_bar.security": "Sekureco", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} raportis {target}", "notification.admin.sign_up": "{name} registris", "notification.favourite": "{name} aldonis vian mesaĝon al siaj preferaĵoj", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Serĉi mesaĝojn laŭ enhavo ne estas ebligita en ĉi tiu Mastodon-servilo.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezultoj}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Hejmo", "tabs_bar.local_timeline": "Loka templinio", "tabs_bar.notifications": "Sciigoj", - "tabs_bar.search": "Serĉi", "time_remaining.days": "{number, plural, one {# tago} other {# tagoj}} restas", "time_remaining.hours": "{number, plural, one {# horo} other {# horoj}} restas", "time_remaining.minutes": "{number, plural, one {# minuto} other {# minutoj}} restas", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 84a24aa043..84633a3eda 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Intentá de nuevo", + "column.about": "About", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea temporal local", @@ -221,14 +222,14 @@ "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.", "generic.saved": "Guardado", - "getting_started.developers": "Desarrolladores", - "getting_started.directory": "Directorio de perfiles", + "getting_started.directory": "Directorio", "getting_started.documentation": "Documentación", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Introducción", "getting_started.invite": "Invitar gente", - "getting_started.open_source_notice": "Mastodon es software libre. Podés contribuir o informar errores en {github}.", "getting_started.privacy_policy": "Política de privacidad", "getting_started.security": "Configuración de la cuenta", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "¿Querés ocultar las notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", - "navigation_bar.apps": "Aplicaciones móviles", + "navigation_bar.about": "About", + "navigation_bar.apps": "Obtené la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea temporal local", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes de seguimiento", "navigation_bar.follows_and_followers": "Cuentas seguidas y seguidores", - "navigation_bar.info": "Este servidor", + "navigation_bar.info": "Información", "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", "navigation_bar.security": "Seguridad", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} denunció a {target}", "notification.admin.sign_up": "Se registró {name}", "notification.favourite": "{name} marcó tu mensaje como favorito", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "No se pueden buscar mensajes por contenido en este servidor de Mastodon.", "search_results.title": "Buscar {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Crear cuenta", "sign_in_banner.sign_in": "Iniciar sesión", "sign_in_banner.text": "Iniciá sesión para seguir cuentas o etiquetas, marcar mensajes como favoritos, compartirlos y responderlos o interactuar desde tu cuenta en un servidor diferente.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Principal", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificaciones", - "tabs_bar.search": "Buscar", "time_remaining.days": "{number, plural,one {queda # día} other {quedan # días}}", "time_remaining.hours": "{number, plural,one {queda # hora} other {quedan # horas}}", "time_remaining.minutes": "{number, plural,one {queda # minuto} other {quedan # minutos}}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 59c1c50e74..03d64f1238 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", + "column.about": "About", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", @@ -221,14 +222,14 @@ "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", "generic.saved": "Guardado", - "getting_started.developers": "Desarrolladores", - "getting_started.directory": "Directorio de perfil", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentación", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primeros pasos", "getting_started.invite": "Invitar usuarios", - "getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.", - "getting_started.privacy_policy": "Privacy Policy", + "getting_started.privacy_policy": "Política de Privacidad", "getting_started.security": "Seguridad", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", - "navigation_bar.apps": "Aplicaciones móviles", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Historia local", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", "navigation_bar.follows_and_followers": "Siguiendo y seguidores", - "navigation_bar.info": "Información adicional", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", "navigation_bar.security": "Seguridad", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} informó {target}", "notification.admin.sign_up": "{name} se unio", "notification.favourite": "{name} marcó tu estado como favorito", @@ -471,11 +474,17 @@ "search_results.nothing_found": "No se pudo encontrar nada para estos términos de busqueda", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Buscar toots por su contenido no está disponible en este servidor de Mastodon.", - "search_results.title": "Search for {q}", + "search_results.title": "Buscar {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", + "sign_in_banner.create_account": "Crear cuenta", + "sign_in_banner.sign_in": "Iniciar sesión", + "sign_in_banner.text": "Inicia sesión en este servidor para seguir perfiles o etiquetas, guardar, compartir y responder a mensajes. También puedes interactuar desde otra cuenta en un servidor diferente.", "status.admin_account": "Abrir interfaz de moderación para @{name}", "status.admin_status": "Abrir este estado en la interfaz de moderación", "status.block": "Bloquear a @{name}", @@ -538,7 +547,6 @@ "tabs_bar.home": "Inicio", "tabs_bar.local_timeline": "Reciente", "tabs_bar.notifications": "Notificaciones", - "tabs_bar.search": "Buscar", "time_remaining.days": "{number, plural, one {# día restante} other {# días restantes}}", "time_remaining.hours": "{number, plural, one {# hora restante} other {# horas restantes}}", "time_remaining.minutes": "{number, plural, one {# minuto restante} other {# minutos restantes}}", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index e8c39655f3..d72acd10a8 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", + "column.about": "About", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", @@ -221,14 +222,14 @@ "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", "generic.saved": "Guardado", - "getting_started.developers": "Desarrolladores", - "getting_started.directory": "Directorio de perfil", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentación", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primeros pasos", "getting_started.invite": "Invitar usuarios", - "getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.", "getting_started.privacy_policy": "Política de Privacidad", "getting_started.security": "Seguridad", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", - "navigation_bar.apps": "Aplicaciones móviles", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea de tiempo local", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", "navigation_bar.follows_and_followers": "Siguiendo y seguidores", - "navigation_bar.info": "Información adicional", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Línea de tiempo federada", "navigation_bar.security": "Seguridad", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} informó {target}", "notification.admin.sign_up": "{name} se registró", "notification.favourite": "{name} marcó tu estado como favorito", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Buscar publicaciones por su contenido no está disponible en este servidor de Mastodon.", "search_results.title": "Buscar {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Crear cuenta", "sign_in_banner.sign_in": "Iniciar sesión", "sign_in_banner.text": "Inicia sesión en este servidor para seguir perfiles o etiquetas, guardar, compartir y responder a mensajes. También puedes interactuar desde otra cuenta en un servidor diferente.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Inicio", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificaciones", - "tabs_bar.search": "Buscar", "time_remaining.days": "{number, plural, one {# día restante} other {# días restantes}}", "time_remaining.hours": "{number, plural, one {# hora restante} other {# horas restantes}}", "time_remaining.minutes": "{number, plural, one {# minuto restante} other {# minutos restantes}}", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 096367eb44..36db5f9f75 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Sulge", "bundle_modal_error.message": "Selle komponendi laadimisel läks midagi viltu.", "bundle_modal_error.retry": "Proovi uuesti", + "column.about": "About", "column.blocks": "Blokeeritud kasutajad", "column.bookmarks": "Järjehoidjad", "column.community": "Kohalik ajajoon", @@ -221,14 +222,14 @@ "follow_request.reject": "Hülga", "follow_requests.unlocked_explanation": "Kuigi Teie konto pole lukustatud, soovitab {domain} personal siiski manuaalselt üle vaadata jälgimistaotlused nendelt kontodelt.", "generic.saved": "Saved", - "getting_started.developers": "Arendajad", - "getting_started.directory": "Profiili kataloog", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentatsioon", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Alustamine", "getting_started.invite": "Kutsu inimesi", - "getting_started.open_source_notice": "Mastodon on avatud lähtekoodiga tarkvara. Saate panustada või teatada probleemidest GitHubis {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Turvalisus", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "või {additional}", "hashtag.column_header.tag_mode.none": "ilma {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Kas peita teated sellelt kasutajalt?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobiilirakendused", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokeeritud kasutajad", "navigation_bar.bookmarks": "Järjehoidjad", "navigation_bar.community_timeline": "Kohalik ajajoon", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Vaigistatud sõnad", "navigation_bar.follow_requests": "Jälgimistaotlused", "navigation_bar.follows_and_followers": "Jälgitud ja jälgijad", - "navigation_bar.info": "Selle serveri kohta", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Kiirklahvid", "navigation_bar.lists": "Nimistud", "navigation_bar.logout": "Logi välja", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Eelistused", "navigation_bar.public_timeline": "Föderatiivne ajajoon", "navigation_bar.security": "Turvalisus", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} märkis Teie staatuse lemmikuks", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Tuutsude otsimine nende sisu järgi ei ole sellel Mastodoni serveril sisse lülitatud.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {tulemus} other {tulemust}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Kodu", "tabs_bar.local_timeline": "Kohalik", "tabs_bar.notifications": "Teated", - "tabs_bar.search": "Otsi", "time_remaining.days": "{number, plural, one {# päev} other {# päeva}} jäänud", "time_remaining.hours": "{number, plural, one {# tund} other {# tundi}} jäänud", "time_remaining.minutes": "{number, plural, one {# minut} other {# minutit}} jäänud", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 29365199b9..9e21e0d889 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Itxi", "bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.", "bundle_modal_error.retry": "Saiatu berriro", + "column.about": "About", "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", "column.community": "Denbora-lerro lokala", @@ -221,14 +222,14 @@ "follow_request.reject": "Ukatu", "follow_requests.unlocked_explanation": "Zure kontua blokeatuta ez badago ere, {domain} domeinuko arduradunek uste dute kontu hauetako jarraipen eskariak agian eskuz begiratu nahiko dituzula.", "generic.saved": "Gordea", - "getting_started.developers": "Garatzaileak", - "getting_started.directory": "Profil-direktorioa", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentazioa", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Menua", "getting_started.invite": "Gonbidatu jendea", - "getting_started.open_source_notice": "Mastodon software librea da. Ekarpenak egin ditzakezu edo akatsen berri eman GitHub bidez: {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Segurtasuna", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "eta {osagarria}", "hashtag.column_header.tag_mode.any": "edo {osagarria}", "hashtag.column_header.tag_mode.none": "gabe {osagarria}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Iraupena", "mute_modal.hide_notifications": "Ezkutatu erabiltzaile honen jakinarazpenak?", "mute_modal.indefinite": "Zehaztu gabe", - "navigation_bar.apps": "Mugikorrerako aplikazioak", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokeatutako erabiltzaileak", "navigation_bar.bookmarks": "Laster-markak", "navigation_bar.community_timeline": "Denbora-lerro lokala", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Mutututako hitzak", "navigation_bar.follow_requests": "Jarraitzeko eskariak", "navigation_bar.follows_and_followers": "Jarraitutakoak eta jarraitzaileak", - "navigation_bar.info": "Zerbitzari honi buruz", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Laster-teklak", "navigation_bar.lists": "Zerrendak", "navigation_bar.logout": "Amaitu saioa", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Hobespenak", "navigation_bar.public_timeline": "Federatutako denbora-lerroa", "navigation_bar.security": "Segurtasuna", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} erabiltzailea erregistratu da", "notification.favourite": "{name}(e)k zure bidalketa gogoko du", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du bidalketen edukiaren bilaketa gaitu.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitza}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Hasiera", "tabs_bar.local_timeline": "Lokala", "tabs_bar.notifications": "Jakinarazpenak", - "tabs_bar.search": "Bilatu", "time_remaining.days": "{number, plural, one {egun #} other {# egun}} amaitzeko", "time_remaining.hours": "{number, plural, one {ordu #} other {# ordu}} amaitzeko", "time_remaining.minutes": "{number, plural, one {minutu #} other {# minutu}} amaitzeko", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index fe6b6a7803..327bb0f74c 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "بستن", "bundle_modal_error.message": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", "bundle_modal_error.retry": "تلاش دوباره", + "column.about": "About", "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانک‌ها", "column.community": "خط زمانی محلّی", @@ -221,14 +222,14 @@ "follow_request.reject": "رد کنید", "follow_requests.unlocked_explanation": "با این که حسابتان قفل نیست، کارکنان {domain} فکر کردند که ممکن است بخواهید درخواست‌ها از این حساب‌ها را به صورت دستی بازبینی کنید.", "generic.saved": "ذخیره شده", - "getting_started.developers": "توسعه‌دهندگان", - "getting_started.directory": "شاخهٔ نمایه", + "getting_started.directory": "Directory", "getting_started.documentation": "مستندات", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "آغاز کنید", "getting_started.invite": "دعوت از دیگران", - "getting_started.open_source_notice": "ماستودون نرم‌افزاری آزاد است. می‌توانید روی {github} در آن مشارکت کرده یا مشکلاتش را گزارش دهید.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "تنظیمات حساب", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "مدت زمان", "mute_modal.hide_notifications": "نهفتن آگاهی‌ها از این کاربر؟", "mute_modal.indefinite": "نامعلوم", - "navigation_bar.apps": "برنامه‌های تلفن همراه", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "کاربران مسدود شده", "navigation_bar.bookmarks": "نشانک‌ها", "navigation_bar.community_timeline": "خط زمانی محلّی", @@ -324,7 +326,7 @@ "navigation_bar.filters": "واژه‌های خموش", "navigation_bar.follow_requests": "درخواست‌های پی‌گیری", "navigation_bar.follows_and_followers": "پی‌گرفتگان و پی‌گیرندگان", - "navigation_bar.info": "دربارهٔ این کارساز", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "میان‌برها", "navigation_bar.lists": "سیاهه‌ها", "navigation_bar.logout": "خروج", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "خط زمانی همگانی", "navigation_bar.security": "امنیت", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} ثبت نام کرد", "notification.favourite": "‫{name}‬ فرسته‌تان را پسندید", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "جست‌وجوی محتوای فرسته‌ها در این کارساز ماستودون به کار انداخته نشده است.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "خانه", "tabs_bar.local_timeline": "محلّی", "tabs_bar.notifications": "آگاهی‌ها", - "tabs_bar.search": "جست‌وجو", "time_remaining.days": "{number, plural, one {# روز} other {# روز}} باقی مانده", "time_remaining.hours": "{number, plural, one {# ساعت} other {# ساعت}} باقی مانده", "time_remaining.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}} باقی مانده", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 0e04c7cd6e..841345e147 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Sulje", "bundle_modal_error.message": "Jokin meni vikaan komponenttia ladattaessa.", "bundle_modal_error.retry": "Yritä uudelleen", + "column.about": "About", "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", @@ -221,14 +222,14 @@ "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikka tiliäsi ei ole lukittu, {domain}:n ylläpitäjien mielestä saatat haluta tarkistaa nämä seurauspyynnöt manuaalisesti.", "generic.saved": "Tallennettu", - "getting_started.developers": "Kehittäjät", - "getting_started.directory": "Profiilihakemisto", + "getting_started.directory": "Directory", "getting_started.documentation": "Käyttöohjeet", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Näin pääset alkuun", "getting_started.invite": "Kutsu ihmisiä", - "getting_started.open_source_notice": "Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHubissa: {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Tiliasetukset", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "tai {additional}", "hashtag.column_header.tag_mode.none": "ilman {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Kesto", "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?", "mute_modal.indefinite": "Ikuisesti", - "navigation_bar.apps": "Mobiilisovellukset", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Estetyt käyttäjät", "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Mykistetyt sanat", "navigation_bar.follow_requests": "Seuraamispyynnöt", "navigation_bar.follows_and_followers": "Seurattavat ja seuraajat", - "navigation_bar.info": "Tietoa tästä palvelimesta", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Pikanäppäimet", "navigation_bar.lists": "Listat", "navigation_bar.logout": "Kirjaudu ulos", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.security": "Turvallisuus", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} ilmoitti {target}", "notification.admin.sign_up": "{name} rekisteröitynyt", "notification.favourite": "{name} tykkäsi viestistäsi", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Viestien haku sisällön perusteella ei ole käytössä tällä Mastodon-palvelimella.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {tulos} other {tulokset}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Koti", "tabs_bar.local_timeline": "Paikallinen", "tabs_bar.notifications": "Ilmoitukset", - "tabs_bar.search": "Hae", "time_remaining.days": "{number, plural, one {# päivä} other {# päivää}} jäljellä", "time_remaining.hours": "{number, plural, one {# tunti} other {# tuntia}} jäljellä", "time_remaining.minutes": "{number, plural, one {# minuutti} other {# minuuttia}} jäljellä", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index d8886d138b..5d60874d23 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Fermer", "bundle_modal_error.message": "Une erreur s’est produite lors du chargement de ce composant.", "bundle_modal_error.retry": "Réessayer", + "column.about": "About", "column.blocks": "Comptes bloqués", "column.bookmarks": "Marque-pages", "column.community": "Fil public local", @@ -221,14 +222,14 @@ "follow_request.reject": "Rejeter", "follow_requests.unlocked_explanation": "Même si votre compte n’est pas privé, l’équipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.", "generic.saved": "Sauvegardé", - "getting_started.developers": "Développeur·euse·s", - "getting_started.directory": "Annuaire des profils", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Pour commencer", "getting_started.invite": "Inviter des gens", - "getting_started.open_source_notice": "Mastodon est un logiciel libre. Vous pouvez contribuer ou faire des rapports de bogues via {github} sur GitHub.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Sécurité", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "et {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sans {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Durée", "mute_modal.hide_notifications": "Masquer les notifications de cette personne ?", "mute_modal.indefinite": "Indéfinie", - "navigation_bar.apps": "Applications mobiles", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Comptes bloqués", "navigation_bar.bookmarks": "Marque-pages", "navigation_bar.community_timeline": "Fil public local", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Mots masqués", "navigation_bar.follow_requests": "Demandes d’abonnement", "navigation_bar.follows_and_followers": "Abonnements et abonné⋅e·s", - "navigation_bar.info": "À propos de ce serveur", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Raccourcis clavier", "navigation_bar.lists": "Listes", "navigation_bar.logout": "Déconnexion", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", "navigation_bar.security": "Sécurité", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} a signalé {target}", "notification.admin.sign_up": "{name} s'est inscrit·e", "notification.favourite": "{name} a ajouté le message à ses favoris", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "La recherche de messages par leur contenu n'est pas activée sur ce serveur Mastodon.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Accueil", "tabs_bar.local_timeline": "Fil public local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Chercher", "time_remaining.days": "{number, plural, one {# jour restant} other {# jours restants}}", "time_remaining.hours": "{number, plural, one {# heure restante} other {# heures restantes}}", "time_remaining.minutes": "{number, plural, one {# minute restante} other {# minutes restantes}}", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 2973419a95..f67fd2ded3 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Slute", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Opnij probearje", + "column.about": "About", "column.blocks": "Blokkearre brûkers", "column.bookmarks": "Blêdwizers", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Ofkarre", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Bewarre", - "getting_started.developers": "Untwikkelders", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumintaasje", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Utein sette", "getting_started.invite": "Minsken útnûgje", - "getting_started.open_source_notice": "Mastodon is iepen boarne software. Jo kinne sels bydrage of problemen oanjaan troch GitHub op {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Account ynstellings", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "sûnder {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Notifikaasjes fan dizze brûker ferstopje?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokkearre brûkers", "navigation_bar.bookmarks": "Blêdwiizers", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Negearre wurden", "navigation_bar.follow_requests": "Folgfersiken", "navigation_bar.follows_and_followers": "Folgers en folgjenden", - "navigation_bar.info": "Oer dizze tsjinner", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Fluchtoetsen", "navigation_bar.lists": "Listen", "navigation_bar.logout": "Utlogge", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Foarkarren", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} hat harren ynskreaun", "notification.favourite": "{name} hat jo berjocht as favoryt markearre", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifikaasjes", - "tabs_bar.search": "Sykje", "time_remaining.days": "{number, plural, one {# dei} other {# dagen}} te gean", "time_remaining.hours": "{number, plural, one {# oere} other {# oeren}} te gean", "time_remaining.minutes": "{number, plural, one {# minút} other {# minuten}} te gean", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index bb6c72868f..3028b8feee 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Dún", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Bain triail as arís", + "column.about": "About", "column.blocks": "Cuntais choiscthe", "column.bookmarks": "Leabharmharcanna", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Diúltaigh", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Eolaire na próifíle", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Tréimhse", "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?", "mute_modal.indefinite": "Gan téarma", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Focail bhalbhaithe", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Eochracha Aicearra", "navigation_bar.lists": "Liostaí", "navigation_bar.logout": "Logáil Amach", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "Roghnaigh {name} do phostáil", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Baile", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Cuardaigh", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index df5eb0fed8..d2b8a77caa 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Dùin", "bundle_modal_error.message": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", "bundle_modal_error.retry": "Feuch ris a-rithist", + "column.about": "About", "column.blocks": "Cleachdaichean bacte", "column.bookmarks": "Comharran-lìn", "column.community": "Loidhne-ama ionadail", @@ -221,14 +222,14 @@ "follow_request.reject": "Diùlt", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", "generic.saved": "Chaidh a shàbhaladh", - "getting_started.developers": "Luchd-leasachaidh", - "getting_started.directory": "Eòlaire nam pròifil", + "getting_started.directory": "Directory", "getting_started.documentation": "Docamaideadh", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Toiseach", "getting_started.invite": "Thoir cuireadh do dhaoine", - "getting_started.open_source_notice": "’S e bathar-bog le bun-tùs fosgailte a th’ ann am Mastodon. ’S urrainn dhut cuideachadh leis no aithris a dhèanamh air duilgheadasan air GitHub fo {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Roghainnean a’ chunntais", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.any": "no {additional}", "hashtag.column_header.tag_mode.none": "às aonais {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Faide", "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?", "mute_modal.indefinite": "Gun chrìoch", - "navigation_bar.apps": "Aplacaidean mobile", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Cleachdaichean bacte", "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Faclan mùchte", "navigation_bar.follow_requests": "Iarrtasan leantainn", "navigation_bar.follows_and_followers": "Dàimhean leantainn", - "navigation_bar.info": "Mun fhrithealaiche seo", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Grad-iuchraichean", "navigation_bar.lists": "Liostaichean", "navigation_bar.logout": "Clàraich a-mach", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", "navigation_bar.security": "Tèarainteachd", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "Rinn {name} mu {target}", "notification.admin.sign_up": "Chlàraich {name}", "notification.favourite": "Is annsa le {name} am post agad", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Chan eil lorg phostaichean a-rèir an susbaint an comas air an fhrithealaiche Mastodon seo.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {toradh} two {thoradh} few {toraidhean} other {toradh}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Dachaigh", "tabs_bar.local_timeline": "Ionadail", "tabs_bar.notifications": "Brathan", - "tabs_bar.search": "Lorg", "time_remaining.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air fhàgail", "time_remaining.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air fhàgail", "time_remaining.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}} air fhàgail", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index fef04d1b00..1a5d39cb84 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Pechar", "bundle_modal_error.message": "Ocorreu un erro ó cargar este compoñente.", "bundle_modal_error.retry": "Téntao de novo", + "column.about": "About", "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", "column.community": "Cronoloxía local", @@ -221,14 +222,14 @@ "follow_request.reject": "Rexeitar", "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", "generic.saved": "Gardado", - "getting_started.developers": "Desenvolvedoras", - "getting_started.directory": "Directorio local", + "getting_started.directory": "Directorio", "getting_started.documentation": "Documentación", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primeiros pasos", "getting_started.invite": "Convidar persoas", - "getting_started.open_source_notice": "Mastodon é software de código aberto. Podes contribuír ou informar de fallos en GitHub en {github}.", "getting_started.privacy_policy": "Política de Privacidade", "getting_started.security": "Seguranza", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Agochar notificacións desta usuaria?", "mute_modal.indefinite": "Indefinida", - "navigation_bar.apps": "Aplicacións móbiles", + "navigation_bar.about": "About", + "navigation_bar.apps": "Obtén a app", "navigation_bar.blocks": "Usuarias bloqueadas", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronoloxía local", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Peticións de seguimento", "navigation_bar.follows_and_followers": "Seguindo e seguidoras", - "navigation_bar.info": "Sobre este servidor", + "navigation_bar.info": "Acerca de", "navigation_bar.keyboard_shortcuts": "Atallos do teclado", "navigation_bar.lists": "Listaxes", "navigation_bar.logout": "Pechar sesión", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronoloxía federada", "navigation_bar.security": "Seguranza", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} denunciou a {target}", "notification.admin.sign_up": "{name} rexistrouse", "notification.favourite": "{name} marcou a túa publicación como favorita", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Procurar publicacións polo seu contido non está activado neste servidor do Mastodon.", "search_results.title": "Resultados para {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Crear conta", "sign_in_banner.sign_in": "Acceder", "sign_in_banner.text": "Inicia sesión para seguir perfís ou etiquetas, marcar como favorito, responder a publicacións ou interactuar con outro servidor desde a túa conta.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Inicio", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificacións", - "tabs_bar.search": "Procurar", "time_remaining.days": "Remata en {number, plural, one {# día} other {# días}}", "time_remaining.hours": "Remata en {number, plural, one {# hora} other {# horas}}", "time_remaining.minutes": "Remata en {number, plural, one {# minuto} other {# minutos}}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 42eacd0a45..d426566c16 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "לסגור", "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.", "bundle_modal_error.retry": "לנסות שוב", + "column.about": "About", "column.blocks": "משתמשים חסומים", "column.bookmarks": "סימניות", "column.community": "פיד שרת מקומי", @@ -221,14 +222,14 @@ "follow_request.reject": "דחיה", "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.", "generic.saved": "נשמר", - "getting_started.developers": "מפתחות", - "getting_started.directory": "מדריך פרופילים", + "getting_started.directory": "Directory", "getting_started.documentation": "תיעוד", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "בואו נתחיל", "getting_started.invite": "להזמין אנשים", - "getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "הגדרות חשבון", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ו- {additional}", "hashtag.column_header.tag_mode.any": "או {additional}", "hashtag.column_header.tag_mode.none": "ללא {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "משך הזמן", "mute_modal.hide_notifications": "להסתיר התראות מחשבון זה?", "mute_modal.indefinite": "ללא תאריך סיום", - "navigation_bar.apps": "יישומונים לנייד", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "משתמשים חסומים", "navigation_bar.bookmarks": "סימניות", "navigation_bar.community_timeline": "פיד שרת מקומי", @@ -324,7 +326,7 @@ "navigation_bar.filters": "מילים מושתקות", "navigation_bar.follow_requests": "בקשות מעקב", "navigation_bar.follows_and_followers": "נעקבים ועוקבים", - "navigation_bar.info": "אודות שרת זה", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "קיצורי מקלדת", "navigation_bar.lists": "רשימות", "navigation_bar.logout": "התנתקות", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "פיד כללי (כל השרתים)", "navigation_bar.security": "אבטחה", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} דיווח.ה על {target}", "notification.admin.sign_up": "{name} נרשמו", "notification.favourite": "{name} חיבב/ה את הפוסט שלך", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "חיפוש פוסטים לפי תוכן לא מאופשר בשרת מסטודון זה.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "פיד הבית", "tabs_bar.local_timeline": "פיד שרת מקומי", "tabs_bar.notifications": "התראות", - "tabs_bar.search": "חיפוש", "time_remaining.days": "נותרו {number, plural, one {# יום} other {# ימים}}", "time_remaining.hours": "נותרו {number, plural, one {# שעה} other {# שעות}}", "time_remaining.minutes": "נותרו {number, plural, one {# דקה} other {# דקות}}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 31c4b3956c..03ddf515e7 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "बंद", "bundle_modal_error.message": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", "bundle_modal_error.retry": "दुबारा कोशिश करें", + "column.about": "About", "column.blocks": "ब्लॉक्ड यूज़र्स", "column.bookmarks": "पुस्तकचिह्न:", "column.community": "लोकल टाइम्लाइन", @@ -221,14 +222,14 @@ "follow_request.reject": "अस्वीकार करें", "follow_requests.unlocked_explanation": "हालाँकि आपका खाता लॉक नहीं है, फिर भी {domain} डोमेन स्टाफ ने सोचा कि आप इन खातों के मैन्युअल अनुरोधों की समीक्षा करना चाहते हैं।", "generic.saved": "Saved", - "getting_started.developers": "डेवॅलपर्स", - "getting_started.directory": "प्रोफ़ाइल निर्देशिका", + "getting_started.directory": "Directory", "getting_started.documentation": "प्रलेखन", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "पहले कदम रखें", "getting_started.invite": "दोस्तों को आमंत्रित करें", - "getting_started.open_source_notice": "मास्टोडॉन एक मुक्त स्रोत सॉफ्टवेयर है. आप गिटहब {github} पर इस सॉफ्टवेयर में योगदान या किसी भी समस्या को सूचित कर सकते है.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "अकाउंट सेटिंग्स", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "और {additional}", "hashtag.column_header.tag_mode.any": "या {additional}", "hashtag.column_header.tag_mode.none": "बिना {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "मोबाइल एप्लिकेशंस", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "ब्लॉक्ड यूज़र्स", "navigation_bar.bookmarks": "पुस्तकचिह्न:", "navigation_bar.community_timeline": "लोकल टाइम्लाइन", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "अनुसरण करने के अनुरोध", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "इस सर्वर के बारे में", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "सूचियाँ", "navigation_bar.logout": "बाहर जाए", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "होम", "tabs_bar.local_timeline": "लोकल", "tabs_bar.notifications": "सूचनाएँ", - "tabs_bar.search": "खोजें", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 981f85c79a..ffffaf19e1 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovno", + "column.about": "About", "column.blocks": "Blokirani korisnici", "column.bookmarks": "Knjižne oznake", "column.community": "Lokalna vremenska crta", @@ -221,14 +222,14 @@ "follow_request.reject": "Odbij", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Spremljeno", - "getting_started.developers": "Razvijatelji", - "getting_started.directory": "Direktorij profila", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentacija", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Počnimo", "getting_started.invite": "Pozovi ljude", - "getting_started.open_source_notice": "Mastodon je softver otvorenog kôda. Možete pridonijeti ili prijaviti probleme na GitHubu na {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Postavke računa", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "ili {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Trajanje", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobilne aplikacije", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna vremenska crta", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Utišane riječi", "navigation_bar.follow_requests": "Zahtjevi za praćenje", "navigation_bar.follows_and_followers": "Praćeni i pratitelji", - "navigation_bar.info": "O ovom poslužitelju", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Tipkovnički prečaci", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Odjavi se", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Postavke", "navigation_bar.public_timeline": "Federalna vremenska crta", "navigation_bar.security": "Sigurnost", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} je favorizirao/la Vaš toot", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Početna", "tabs_bar.local_timeline": "Lokalno", "tabs_bar.notifications": "Obavijesti", - "tabs_bar.search": "Traži", "time_remaining.days": "{number, plural, one {preostao # dan} other {preostalo # dana}}", "time_remaining.hours": "{number, plural, one {preostao # sat} few {preostalo # sata} other {preostalo # sati}}", "time_remaining.minutes": "{number, plural, one {preostala # minuta} few {preostale # minute} other {preostalo # minuta}}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index fbd6695d46..e20a5e54f1 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Bezárás", "bundle_modal_error.message": "Hiba történt a komponens betöltésekor.", "bundle_modal_error.retry": "Próbáld újra", + "column.about": "About", "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", "column.community": "Helyi idővonal", @@ -221,14 +222,14 @@ "follow_request.reject": "Elutasítás", "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.", "generic.saved": "Elmentve", - "getting_started.developers": "Fejlesztőknek", - "getting_started.directory": "Profilok", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentáció", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Első lépések", "getting_started.invite": "Mások meghívása", - "getting_started.open_source_notice": "A Mastodon nyílt forráskódú szoftver. Közreműködhetsz vagy problémákat jelenthetsz a GitHubon: {github}.", "getting_started.privacy_policy": "Adatvédelmi szabályzat", "getting_started.security": "Fiókbeállítások", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "és {additional}", "hashtag.column_header.tag_mode.any": "vagy {additional}", "hashtag.column_header.tag_mode.none": "{additional} nélkül", @@ -310,7 +311,8 @@ "mute_modal.duration": "Időtartam", "mute_modal.hide_notifications": "Rejtsük el a felhasználótól származó értesítéseket?", "mute_modal.indefinite": "Határozatlan", - "navigation_bar.apps": "Mobil appok", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Letiltott felhasználók", "navigation_bar.bookmarks": "Könyvjelzők", "navigation_bar.community_timeline": "Helyi idővonal", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Némított szavak", "navigation_bar.follow_requests": "Követési kérelmek", "navigation_bar.follows_and_followers": "Követettek és követők", - "navigation_bar.info": "Erről a kiszolgálóról", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Gyorsbillentyűk", "navigation_bar.lists": "Listák", "navigation_bar.logout": "Kijelentkezés", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.security": "Biztonság", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} jelentette: {target}", "notification.admin.sign_up": "{name} regisztrált", "notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.", "search_results.title": "Keresés erre: {q}", "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Fiók létrehozása", "sign_in_banner.sign_in": "Bejelentkezés", "sign_in_banner.text": "Jelentkezz be profilok vagy hashtagek követéséhez, bejegyzések megosztásához, megválaszolásához, vagy kommunikálj a fiókodból más szerverekkel.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Kezdőlap", "tabs_bar.local_timeline": "Helyi", "tabs_bar.notifications": "Értesítések", - "tabs_bar.search": "Keresés", "time_remaining.days": "{number, plural, one {# nap} other {# nap}} van hátra", "time_remaining.hours": "{number, plural, one {# óra} other {# óra}} van hátra", "time_remaining.minutes": "{number, plural, one {# perc} other {# perc}} van hátra", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 524e06d6fe..8f5a9f180a 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Փակել", "bundle_modal_error.message": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", "bundle_modal_error.retry": "Կրկին փորձել", + "column.about": "About", "column.blocks": "Արգելափակուած օգտատէրեր", "column.bookmarks": "Էջանիշեր", "column.community": "Տեղական հոսք", @@ -221,14 +222,14 @@ "follow_request.reject": "Մերժել", "follow_requests.unlocked_explanation": "Այս հարցումը ուղարկուած է հաշուից, որի համար {domain}-ի անձնակազմը միացրել է ձեռքով ստուգում։", "generic.saved": "Պահպանուած է", - "getting_started.developers": "Մշակողներ", - "getting_started.directory": "Օգտատէրերի շտեմարան", + "getting_started.directory": "Directory", "getting_started.documentation": "Փաստաթղթեր", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Ինչպէս սկսել", "getting_started.invite": "Հրաւիրել մարդկանց", - "getting_started.open_source_notice": "Մաստոդոնը բաց ելատեքստով ծրագրակազմ է։ Կարող ես ներդրում անել կամ վրէպներ զեկուցել ԳիթՀաբում՝ {github}։", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Հաշուի կարգաւորումներ", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "եւ {additional}", "hashtag.column_header.tag_mode.any": "կամ {additional}", "hashtag.column_header.tag_mode.none": "առանց {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Տեւողութիւն", "mute_modal.hide_notifications": "Թաքցնե՞լ ծանուցումներն այս օգտատիրոջից։", "mute_modal.indefinite": "Անժամկէտ", - "navigation_bar.apps": "Դիւրակիր յաւելուածներ", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Արգելափակուած օգտատէրեր", "navigation_bar.bookmarks": "Էջանիշեր", "navigation_bar.community_timeline": "Տեղական հոսք", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Լռեցուած բառեր", "navigation_bar.follow_requests": "Հետեւելու հայցեր", "navigation_bar.follows_and_followers": "Հետեւածներ եւ հետեւողներ", - "navigation_bar.info": "Այս հանգոյցի մասին", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Ստեղնաշարի կարճատներ", "navigation_bar.lists": "Ցանկեր", "navigation_bar.logout": "Դուրս գալ", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Նախապատուութիւններ", "navigation_bar.public_timeline": "Դաշնային հոսք", "navigation_bar.security": "Անվտանգութիւն", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name}-ը գրանցուած է", "notification.favourite": "{name} հաւանեց գրառումդ", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Այս հանգոյցում միացուած չէ ըստ բովանդակութեան գրառում փնտրելու հնարաւորութիւնը։", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {արդիւնք} other {արդիւնք}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Հիմնական", "tabs_bar.local_timeline": "Տեղական", "tabs_bar.notifications": "Ծանուցումներ", - "tabs_bar.search": "Փնտրել", "time_remaining.days": "{number, plural, one {մնաց # օր} other {մնաց # օր}}", "time_remaining.hours": "{number, plural, one {# ժամ} other {# ժամ}} անց", "time_remaining.minutes": "{number, plural, one {# րոպէ} other {# րոպէ}} անց", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 60a3d5770c..b1484fbaf0 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Kesalahan terjadi saat memuat komponen ini.", "bundle_modal_error.retry": "Coba lagi", + "column.about": "About", "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", "column.community": "Linimasa Lokal", @@ -221,14 +222,14 @@ "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.", "generic.saved": "Disimpan", - "getting_started.developers": "Pengembang", - "getting_started.directory": "Direktori profil", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentasi", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Mulai", "getting_started.invite": "Undang orang", - "getting_started.open_source_notice": "Mastodon adalah perangkat lunak yang bersifat terbuka. Anda dapat berkontribusi atau melaporkan permasalahan/bug di Github {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Keamanan", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Durasi", "mute_modal.hide_notifications": "Sembunyikan notifikasi dari pengguna ini?", "mute_modal.indefinite": "Tak terbatas", - "navigation_bar.apps": "Aplikasi mobile", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Pengguna diblokir", "navigation_bar.bookmarks": "Markah", "navigation_bar.community_timeline": "Linimasa lokal", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Kata yang dibisukan", "navigation_bar.follow_requests": "Permintaan mengikuti", "navigation_bar.follows_and_followers": "Ikuti dan pengikut", - "navigation_bar.info": "Informasi selengkapnya", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Pintasan keyboard", "navigation_bar.lists": "Daftar", "navigation_bar.logout": "Keluar", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Pengaturan", "navigation_bar.public_timeline": "Linimasa gabungan", "navigation_bar.security": "Keamanan", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} melaporkan {target}", "notification.admin.sign_up": "{name} mendaftar", "notification.favourite": "{name} menyukai status anda", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Pencarian toot berdasarkan konten tidak diaktifkan di server Mastadon ini.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {hasil} other {hasil}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Beranda", "tabs_bar.local_timeline": "Lokal", "tabs_bar.notifications": "Notifikasi", - "tabs_bar.search": "Cari", "time_remaining.days": "{number, plural, other {# hari}} tersisa", "time_remaining.hours": "{number, plural, other {# jam}} tersisa", "time_remaining.minutes": "{number, plural, other {# menit}} tersisa", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 297f60443f..6f0f132fda 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Klozez", "bundle_modal_error.message": "Nulo ne functionis dum chargar ca kompozaj.", "bundle_modal_error.retry": "Probez itere", + "column.about": "About", "column.blocks": "Blokusita uzeri", "column.bookmarks": "Libromarki", "column.community": "Lokala tempolineo", @@ -221,14 +222,14 @@ "follow_request.reject": "Refuzar", "follow_requests.unlocked_explanation": "Quankam vua konto ne klefklozesis, la {domain} laborero pensas ke vu forsan volas kontralar sequodemandi de ca konti manuale.", "generic.saved": "Sparesis", - "getting_started.developers": "Developeri", - "getting_started.directory": "Profilcheflisto", + "getting_started.directory": "Cheflisto", "getting_started.documentation": "Dokumentajo", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Debuto", "getting_started.invite": "Invitez personi", - "getting_started.open_source_notice": "Mastodon esas programaro kun apertita kodexo. Tu povas kontributar o signalar problemi en GitHub ye {github}.", "getting_started.privacy_policy": "Privatesguidilo", "getting_started.security": "Kontoopcioni", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Durado", "mute_modal.hide_notifications": "Celez avizi de ca uzanto?", "mute_modal.indefinite": "Nedefinitiva", - "navigation_bar.apps": "Smartfonsoftwari", + "navigation_bar.about": "About", + "navigation_bar.apps": "Ganez la softwaro", "navigation_bar.blocks": "Blokusita uzeri", "navigation_bar.bookmarks": "Libromarki", "navigation_bar.community_timeline": "Lokala tempolineo", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Silencigita vorti", "navigation_bar.follow_requests": "Demandi di sequado", "navigation_bar.follows_and_followers": "Sequati e sequanti", - "navigation_bar.info": "Detaloza informi", + "navigation_bar.info": "Pri co", "navigation_bar.keyboard_shortcuts": "Rapidklavi", "navigation_bar.lists": "Listi", "navigation_bar.logout": "Ekirar", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferi", "navigation_bar.public_timeline": "Federata tempolineo", "navigation_bar.security": "Sekureso", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} raportizis {target}", "notification.admin.sign_up": "{name} registresis", "notification.favourite": "{name} favorizis tua mesajo", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Trovez {q}", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Kreez konto", "sign_in_banner.sign_in": "Enirez", "sign_in_banner.text": "Enirez por sequar profili o hashtagi, favorizar, partigar e respondizar posti, o interagar de vua konto de diferanta servilo.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Hemo", "tabs_bar.local_timeline": "Lokala", "tabs_bar.notifications": "Savigi", - "tabs_bar.search": "Trovez", "time_remaining.days": "{number, plural, one {# dio} other {# dii}} restas", "time_remaining.hours": "{number, plural, one {# horo} other {# hori}} restas", "time_remaining.minutes": "{number, plural, one {# minuto} other {# minuti}} restas", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index e557010fbb..3145462fbe 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Loka", "bundle_modal_error.message": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", "bundle_modal_error.retry": "Reyndu aftur", + "column.about": "About", "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", "column.community": "Staðvær tímalína", @@ -221,14 +222,14 @@ "follow_request.reject": "Hafna", "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.", "generic.saved": "Vistað", - "getting_started.developers": "Forritarar", - "getting_started.directory": "Notandasniðamappa", + "getting_started.directory": "Mappa", "getting_started.documentation": "Hjálparskjöl", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Komast í gang", "getting_started.invite": "Bjóða fólki", - "getting_started.open_source_notice": "Mastodon er opinn og frjáls hugbúnaður. Þú getur lagt þitt af mörkum eða tilkynnt um vandamál á GitHub á slóðinni {github}.", "getting_started.privacy_policy": "Persónuverndarstefna", "getting_started.security": "Stillingar notandaaðgangs", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eða {additional}", "hashtag.column_header.tag_mode.none": "án {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Lengd", "mute_modal.hide_notifications": "Fela tilkynningar frá þessum notanda?", "mute_modal.indefinite": "Óendanlegt", - "navigation_bar.apps": "Farsímaforrit", + "navigation_bar.about": "About", + "navigation_bar.apps": "Ná í forritið", "navigation_bar.blocks": "Útilokaðir notendur", "navigation_bar.bookmarks": "Bókamerki", "navigation_bar.community_timeline": "Staðvær tímalína", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Þögguð orð", "navigation_bar.follow_requests": "Beiðnir um að fylgjast með", "navigation_bar.follows_and_followers": "Fylgist með og fylgjendur", - "navigation_bar.info": "Um þennan vefþjón", + "navigation_bar.info": "Um hugbúnaðinn", "navigation_bar.keyboard_shortcuts": "Flýtilyklar", "navigation_bar.lists": "Listar", "navigation_bar.logout": "Útskráning", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", "navigation_bar.security": "Öryggi", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} kærði {target}", "notification.admin.sign_up": "{name} skráði sig", "notification.favourite": "{name} setti færslu þína í eftirlæti", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Að leita í efni færslna er ekki virkt á þessum Mastodon-þjóni.", "search_results.title": "Leita að {q}", "search_results.total": "{count, number} {count, plural, one {niðurstaða} other {niðurstöður}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Búa til notandaaðgang", "sign_in_banner.sign_in": "Skrá inn", "sign_in_banner.text": "Skráðu þig inn til að fylgjast með notendum eða myllumerkjum, svara færslum, deila þeim eða setja í eftirlæti, eða eiga í samskiptum á aðgangnum þínum á öðrum netþjónum.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Heim", "tabs_bar.local_timeline": "Staðvært", "tabs_bar.notifications": "Tilkynningar", - "tabs_bar.search": "Leita", "time_remaining.days": "{number, plural, one {# dagur} other {# dagar}} eftir", "time_remaining.hours": "{number, plural, one {# klukkustund} other {# klukkustundir}} eftir", "time_remaining.minutes": "{number, plural, one {# mínúta} other {# mínútur}} eftir", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index a680aed7e4..688e1e47ca 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Chiudi", "bundle_modal_error.message": "Qualcosa è andato storto durante il caricamento di questo componente.", "bundle_modal_error.retry": "Riprova", + "column.about": "About", "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", "column.community": "Timeline locale", @@ -221,14 +222,14 @@ "follow_request.reject": "Rifiuta", "follow_requests.unlocked_explanation": "Benché il tuo account non sia privato, lo staff di {domain} ha pensato che potresti voler approvare manualmente le richieste di follow da questi account.", "generic.saved": "Salvato", - "getting_started.developers": "Sviluppatori", - "getting_started.directory": "Directory dei profili", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentazione", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Come iniziare", "getting_started.invite": "Invita qualcuno", - "getting_started.open_source_notice": "Mastodon è un software open source. Puoi contribuire o segnalare errori su GitHub all'indirizzo {github}.", "getting_started.privacy_policy": "Politica sulla Privacy", "getting_started.security": "Sicurezza", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Durata", "mute_modal.hide_notifications": "Nascondere le notifiche da quest'utente?", "mute_modal.indefinite": "Per sempre", - "navigation_bar.apps": "App per dispositivi mobili", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Utenti bloccati", "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Timeline locale", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Parole silenziate", "navigation_bar.follow_requests": "Richieste di seguirti", "navigation_bar.follows_and_followers": "Seguiti e seguaci", - "navigation_bar.info": "Informazioni su questo server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Tasti di scelta rapida", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Esci", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", "navigation_bar.security": "Sicurezza", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} ha segnalato {target}", "notification.admin.sign_up": "{name} si è iscritto", "notification.favourite": "{name} ha apprezzato il tuo post", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "La ricerca di post per il loro contenuto non è abilitata su questo server Mastodon.", "search_results.title": "Ricerca: {q}", "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Crea un account", "sign_in_banner.sign_in": "Registrati", "sign_in_banner.text": "Accedi per seguire profili o hashtag, segnare come preferiti, condividere e rispondere ai post o interagire dal tuo account su un server diverso.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Locale", "tabs_bar.notifications": "Notifiche", - "tabs_bar.search": "Cerca", "time_remaining.days": "{number, plural, one {# giorno} other {# giorni}} left", "time_remaining.hours": "{number, plural, one {# ora} other {# ore}} left", "time_remaining.minutes": "{number, plural, one {# minuto} other {# minuti}} left", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index a07d444f18..66d058af66 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "閉じる", "bundle_modal_error.message": "コンポーネントの読み込み中に問題が発生しました。", "bundle_modal_error.retry": "再試行", + "column.about": "About", "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", "column.community": "ローカルタイムライン", @@ -221,14 +222,14 @@ "follow_request.reject": "拒否", "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", "generic.saved": "保存しました", - "getting_started.developers": "開発", - "getting_started.directory": "ディレクトリ", + "getting_started.directory": "Directory", "getting_started.documentation": "ドキュメント", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "スタート", "getting_started.invite": "招待", - "getting_started.open_source_notice": "Mastodonはオープンソースソフトウェアです。誰でもGitHub ({github}) から開発に参加したり、問題を報告したりできます。", "getting_started.privacy_policy": "プライバシーポリシー", "getting_started.security": "アカウント設定", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "と{additional}", "hashtag.column_header.tag_mode.any": "か{additional}", "hashtag.column_header.tag_mode.none": "({additional} を除く)", @@ -310,7 +311,8 @@ "mute_modal.duration": "ミュートする期間", "mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?", "mute_modal.indefinite": "無期限", - "navigation_bar.apps": "アプリ", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "ブロックしたユーザー", "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", @@ -324,7 +326,7 @@ "navigation_bar.filters": "フィルター設定", "navigation_bar.follow_requests": "フォローリクエスト", "navigation_bar.follows_and_followers": "フォロー・フォロワー", - "navigation_bar.info": "このサーバーについて", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "キーボードショートカット", "navigation_bar.lists": "リスト", "navigation_bar.logout": "ログアウト", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.security": "セキュリティ", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name}さんが{target}さんを通報しました", "notification.admin.sign_up": "{name}さんがサインアップしました", "notification.favourite": "{name}さんがあなたの投稿をお気に入りに登録しました", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "このサーバーでは投稿本文の検索は利用できません。", "search_results.title": "『{q}』の検索結果", "search_results.total": "{count, number}件の結果", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "アカウント作成", "sign_in_banner.sign_in": "ログイン", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "ホーム", "tabs_bar.local_timeline": "ローカル", "tabs_bar.notifications": "通知", - "tabs_bar.search": "検索", "time_remaining.days": "残り{number}日", "time_remaining.hours": "残り{number}時間", "time_remaining.minutes": "残り{number}分", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 5190212359..9fcb670dfc 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "დახურვა", "bundle_modal_error.message": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.", "bundle_modal_error.retry": "სცადეთ კიდევ ერთხელ", + "column.about": "About", "column.blocks": "დაბლოკილი მომხმარებლები", "column.bookmarks": "Bookmarks", "column.community": "ლოკალური თაიმლაინი", @@ -221,14 +222,14 @@ "follow_request.reject": "უარყოფა", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "დეველოპერები", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "დოკუმენტაცია", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "დაწყება", "getting_started.invite": "ხალხის მოწვევა", - "getting_started.open_source_notice": "მასტოდონი ღია პროგრამაა. შეგიძლიათ შეუწყოთ ხელი ან შექმნათ პრობემის რეპორტი {github}-ზე.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "უსაფრთხოება", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "დავმალოთ შეტყობინებები ამ მომხმარებლისგან?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "დაბლოკილი მომხმარებლები", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ლოკალური თაიმლაინი", @@ -324,7 +326,7 @@ "navigation_bar.filters": "გაჩუმებული სიტყვები", "navigation_bar.follow_requests": "დადევნების მოთხოვნები", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "ამ ინსტანციის შესახებ", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "ცხელი კლავიშები", "navigation_bar.lists": "სიები", "navigation_bar.logout": "გასვლა", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "პრეფერენსიები", "navigation_bar.public_timeline": "ფედერალური თაიმლაინი", "navigation_bar.security": "უსაფრთხოება", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "სახლი", "tabs_bar.local_timeline": "ლოკალური", "tabs_bar.notifications": "შეტყობინებები", - "tabs_bar.search": "ძებნა", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 2bcef42c72..08c0885c94 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Mdel", "bundle_modal_error.message": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", "bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen", + "column.about": "About", "column.blocks": "Imiḍanen yettusḥebsen", "column.bookmarks": "Ticraḍ", "column.community": "Tasuddemt tadigant", @@ -221,14 +222,14 @@ "follow_request.reject": "Agi", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Yettwasekles", - "getting_started.developers": "Ineflayen", - "getting_started.directory": "Akaram n imaɣnuten", + "getting_started.directory": "Directory", "getting_started.documentation": "Amnir", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Bdu", "getting_started.invite": "Snebgi-d imdanen", - "getting_started.open_source_notice": "Maṣṭudun d aseɣzan s uɣbalu yeldin. Tzemreḍ ad tɛiwneḍ neɣ ad temmleḍ uguren deg GitHub {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Iɣewwaṛen n umiḍan", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "d {additional}", "hashtag.column_header.tag_mode.any": "neɣ {additional}", "hashtag.column_header.tag_mode.none": "war {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Tanzagt", "mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?", "mute_modal.indefinite": "Ur yettwasbadu ara", - "navigation_bar.apps": "Isnasen izirazen", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Imseqdacen yettusḥebsen", "navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.community_timeline": "Tasuddemt tadigant", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Awalen i yettwasgugmen", "navigation_bar.follow_requests": "Isuturen n teḍfeṛt", "navigation_bar.follows_and_followers": "Imeḍfaṛen akked wid i teṭṭafaṛeḍ", - "navigation_bar.info": "Ɣef uqeddac-agi", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Inegzumen n unasiw", "navigation_bar.lists": "Tibdarin", "navigation_bar.logout": "Ffeɣ", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Imenyafen", "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut", "navigation_bar.security": "Taɣellist", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} yesmenyef tasuffeɣt-ik·im", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Anadi ɣef tjewwiqin s ugbur-nsent ur yermid ara deg uqeddac-agi n Maṣṭudun.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {n ugemmuḍ} other {n yigemmuḍen}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Agejdan", "tabs_bar.local_timeline": "Adigan", "tabs_bar.notifications": "Tilɣa", - "tabs_bar.search": "Nadi", "time_remaining.days": "Mazal {number, plural, one {# n wass} other {# n wussan}}", "time_remaining.hours": "Mazal {number, plural, one {# n usrag} other {# n yesragen}}", "time_remaining.minutes": "Mazal {number, plural, one {# n tesdat} other {# n tesdatin}}", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index bc8b068db6..e47d7cdf5a 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Жабу", "bundle_modal_error.message": "Бұл компонентті жүктеген кезде бір қате пайда болды.", "bundle_modal_error.retry": "Қайтадан көріңіз", + "column.about": "About", "column.blocks": "Бұғатталғандар", "column.bookmarks": "Бетбелгілер", "column.community": "Жергілікті желі", @@ -221,14 +222,14 @@ "follow_request.reject": "Қабылдамау", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Сақталды", - "getting_started.developers": "Жасаушылар тобы", - "getting_started.directory": "Профильдер каталогы", + "getting_started.directory": "Directory", "getting_started.documentation": "Құжаттама", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Желіде", "getting_started.invite": "Адам шақыру", - "getting_started.open_source_notice": "Mastodon - ашық кодты құрылым. Түзету енгізу немесе ұсыныстарды GitHub арқылы жасаңыз {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Қауіпсіздік", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "және {additional}", "hashtag.column_header.tag_mode.any": "немесе {additional}", "hashtag.column_header.tag_mode.none": "{additional} болмай", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Бұл қолданушы ескертпелерін жасырамыз ба?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Мобиль қосымшалар", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Бұғатталғандар", "navigation_bar.bookmarks": "Бетбелгілер", "navigation_bar.community_timeline": "Жергілікті желі", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Үнсіз сөздер", "navigation_bar.follow_requests": "Жазылуға сұранғандар", "navigation_bar.follows_and_followers": "Жазылымдар және оқырмандар", - "navigation_bar.info": "Сервер туралы", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Ыстық пернелер", "navigation_bar.lists": "Тізімдер", "navigation_bar.logout": "Шығу", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Басымдықтар", "navigation_bar.public_timeline": "Жаһандық желі", "navigation_bar.security": "Қауіпсіздік", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} жазбаңызды таңдаулыға қосты", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Mastodon серверінде постты толық мәтінмен іздей алмайсыз.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {нәтиже} other {нәтиже}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Басты бет", "tabs_bar.local_timeline": "Жергілікті", "tabs_bar.notifications": "Ескертпелер", - "tabs_bar.search": "Іздеу", "time_remaining.days": "{number, plural, one {# күн} other {# күн}}", "time_remaining.hours": "{number, plural, one {# сағат} other {# сағат}}", "time_remaining.minutes": "{number, plural, one {# минут} other {# минут}}", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 80c82f1579..a7ecea067e 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 394bce9f01..45ba0ffb4a 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "닫기", "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", + "column.about": "About", "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", "column.community": "로컬 타임라인", @@ -221,14 +222,14 @@ "follow_request.reject": "거부", "follow_requests.unlocked_explanation": "당신의 계정이 잠기지 않았다고 할 지라도, {domain}의 스탭은 당신이 이 계정들로부터의 팔로우 요청을 수동으로 확인하길 원한다고 생각했습니다.", "generic.saved": "저장됨", - "getting_started.developers": "개발자", - "getting_started.directory": "프로필 책자", + "getting_started.directory": "디렉토리", "getting_started.documentation": "문서", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "시작", "getting_started.invite": "초대", - "getting_started.open_source_notice": "Mastodon은 오픈 소스 소프트웨어입니다. 누구나 GitHub({github})에서 개발에 참여하거나, 문제를 보고할 수 있습니다.", "getting_started.privacy_policy": "개인정보 처리방침", "getting_started.security": "계정 설정", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "그리고 {additional}", "hashtag.column_header.tag_mode.any": "또는 {additional}", "hashtag.column_header.tag_mode.none": "{additional}를 제외하고", @@ -310,7 +311,8 @@ "mute_modal.duration": "기간", "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?", "mute_modal.indefinite": "무기한", - "navigation_bar.apps": "모바일 앱", + "navigation_bar.about": "About", + "navigation_bar.apps": "앱 다운로드하기", "navigation_bar.blocks": "차단한 사용자", "navigation_bar.bookmarks": "보관함", "navigation_bar.community_timeline": "로컬 타임라인", @@ -324,7 +326,7 @@ "navigation_bar.filters": "뮤트한 단어", "navigation_bar.follow_requests": "팔로우 요청", "navigation_bar.follows_and_followers": "팔로우와 팔로워", - "navigation_bar.info": "이 서버에 대해서", + "navigation_bar.info": "정보", "navigation_bar.keyboard_shortcuts": "단축키", "navigation_bar.lists": "리스트", "navigation_bar.logout": "로그아웃", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "사용자 설정", "navigation_bar.public_timeline": "연합 타임라인", "navigation_bar.security": "보안", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} 님이 {target}를 신고했습니다", "notification.admin.sign_up": "{name} 님이 가입했습니다", "notification.favourite": "{name} 님이 당신의 게시물을 마음에 들어합니다", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "이 마스토돈 서버에선 게시물의 내용을 통한 검색이 활성화 되어 있지 않습니다.", "search_results.title": "{q}에 대한 검색", "search_results.total": "{count, number}건의 결과", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "계정 생성", "sign_in_banner.sign_in": "로그인", "sign_in_banner.text": "로그인을 통해 프로필이나 해시태그를 팔로우하거나 마음에 들어하거나 공유하고 답글을 달 수 있습니다, 혹은 다른 서버에 있는 본인의 계정을 통해 참여할 수도 있습니다.", @@ -538,7 +547,6 @@ "tabs_bar.home": "홈", "tabs_bar.local_timeline": "로컬", "tabs_bar.notifications": "알림", - "tabs_bar.search": "검색", "time_remaining.days": "{number} 일 남음", "time_remaining.hours": "{number} 시간 남음", "time_remaining.minutes": "{number} 분 남음", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index bdfafa980f..662f2aec0c 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Bigire", "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", "bundle_modal_error.retry": "Dîsa bicerbîne", + "column.about": "About", "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", "column.community": "Demnameya herêmî", @@ -221,14 +222,14 @@ "follow_request.reject": "Nepejirîne", "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", "generic.saved": "Tomarkirî", - "getting_started.developers": "Pêşdebir", - "getting_started.directory": "Rêgeha profîlê", + "getting_started.directory": "Directory", "getting_started.documentation": "Pelbend", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Destpêkirin", "getting_started.invite": "Kesan vexwîne", - "getting_started.open_source_notice": "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di {github} de an jî dikarî tevkariyê bikî.", "getting_started.privacy_policy": "Politîka taybetiyê", "getting_started.security": "Sazkariyên ajimêr", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "û {additional}", "hashtag.column_header.tag_mode.any": "an {additional}", "hashtag.column_header.tag_mode.none": "bêyî {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Dem", "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?", "mute_modal.indefinite": "Nediyar", - "navigation_bar.apps": "Sepana mobayil", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Bikarhênerên astengkirî", "navigation_bar.bookmarks": "Şûnpel", "navigation_bar.community_timeline": "Demnameya herêmî", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Peyvên bêdengkirî", "navigation_bar.follow_requests": "Daxwazên şopandinê", "navigation_bar.follows_and_followers": "Şopandin û şopîner", - "navigation_bar.info": "Derbarê vî rajekarî", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Kurte bişkok", "navigation_bar.lists": "Rêzok", "navigation_bar.logout": "Derkeve", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameya giştî", "navigation_bar.security": "Ewlehî", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} hate ragihandin {target}", "notification.admin.sign_up": "{name} tomar bû", "notification.favourite": "{name} şandiya te hez kir", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Di vê rajekara Mastodonê da lêgerîna şandîyên li gorî naveroka wan ne çalak e.", "search_results.title": "Li {q} bigere", "search_results.total": "{count, number} {count, plural, one {encam} other {encam}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Ajimêr biafirîne", "sign_in_banner.sign_in": "Têkeve", "sign_in_banner.text": "Têkeve ji bo şopandina profîlan an hashtagan, bijarte, parvekirin û bersivdana şandiyan, an ji ajimêrê xwe li ser rajekarek cuda têkilî deyine.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Rûpela sereke", "tabs_bar.local_timeline": "Herêmî", "tabs_bar.notifications": "Agahdarî", - "tabs_bar.search": "Bigere", "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye", "time_remaining.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} maye", "time_remaining.minutes": "{number, plural, one {# xulek} other {# xulek}} maye", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index c7abf77f10..f12be55db4 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Degea", "bundle_modal_error.message": "Neppyth eth yn kamm ow karga'n elven ma.", "bundle_modal_error.retry": "Assayewgh arta", + "column.about": "About", "column.blocks": "Devnydhyoryon lettys", "column.bookmarks": "Folennosow", "column.community": "Amserlin leel", @@ -221,14 +222,14 @@ "follow_request.reject": "Denagha", "follow_requests.unlocked_explanation": "Kyn na vo agas akont alhwedhys, an meni {domain} a wrug tybi y fia da genowgh dasweles govynnow holya a'n akontys ma dre leuv.", "generic.saved": "Gwithys", - "getting_started.developers": "Displegyoryon", - "getting_started.directory": "Menegva profilys", + "getting_started.directory": "Directory", "getting_started.documentation": "Dogvenva", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Dhe dhalleth", "getting_started.invite": "Gelwel tus", - "getting_started.open_source_notice": "Mastodon yw medhelweyth a fenten ygor. Hwi a yll kevri po reportya kudynnow dre GitHub dhe {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Dewisyow akont", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ha(g) {additional}", "hashtag.column_header.tag_mode.any": "po {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duryans", "mute_modal.hide_notifications": "Kudha gwarnyansow a'n devnydhyer ma?", "mute_modal.indefinite": "Andhevri", - "navigation_bar.apps": "Appys klapkodh", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Devnydhyoryon lettys", "navigation_bar.bookmarks": "Folennosow", "navigation_bar.community_timeline": "Amserlin leel", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Geryow tawhes", "navigation_bar.follow_requests": "Govynnow holya", "navigation_bar.follows_and_followers": "Holyansow ha holyoryon", - "navigation_bar.info": "A-dro dhe'n leuren ma", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Buanellow", "navigation_bar.lists": "Rolyow", "navigation_bar.logout": "Digelmi", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Erviransow", "navigation_bar.public_timeline": "Amserlin geffrysys", "navigation_bar.security": "Diogeledh", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} a wrug merkya agas post vel drudh", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Nyns yw hwilas postow der aga dalgh gweythresys y'n leuren Mastodon ma.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {sewyans} other {sewyans}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Tre", "tabs_bar.local_timeline": "Leel", "tabs_bar.notifications": "Gwarnyansow", - "tabs_bar.search": "Hwilas", "time_remaining.days": "{number, plural, one {# jydh} other {# a jydhyow}} gesys", "time_remaining.hours": "{number, plural, one {# our} other {# our}} gesys", "time_remaining.minutes": "{number, plural, one {# vynysen} other {# a vynysennow}} gesys", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 0573a9ef59..f04c33b8b5 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index be34219f34..79e845cbfa 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Aizvērt", "bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.", "bundle_modal_error.retry": "Mēģini vēlreiz", + "column.about": "About", "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", "column.community": "Vietējā ziņu līnija", @@ -221,14 +222,14 @@ "follow_request.reject": "Noraidīt", "follow_requests.unlocked_explanation": "Lai gan tavs konts nav bloķēts, {domain} darbinieki iedomājās, ka, iespējams, vēlēsies pārskatīt pieprasījumus no šiem kontiem.", "generic.saved": "Saglabāts", - "getting_started.developers": "Izstrādātāji", - "getting_started.directory": "Profila direktorija", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentācija", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Darba sākšana", "getting_started.invite": "Uzaicini cilvēkus", - "getting_started.open_source_notice": "Mastodon ir atvērtā koda programmatūra. Tu vari dot savu ieguldījumu vai arī ziņot par problēmām {github}.", "getting_started.privacy_policy": "Privātuma Politika", "getting_started.security": "Konta iestatījumi", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "un {additional}", "hashtag.column_header.tag_mode.any": "vai {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Ilgums", "mute_modal.hide_notifications": "Slēpt paziņojumus no šī lietotāja?", "mute_modal.indefinite": "Nenoteikts", - "navigation_bar.apps": "Mobilās lietotnes", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Bloķētie lietotāji", "navigation_bar.bookmarks": "Grāmatzīmes", "navigation_bar.community_timeline": "Vietējā ziņu lenta", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Klusināti vārdi", "navigation_bar.follow_requests": "Sekošanas pieprasījumi", "navigation_bar.follows_and_followers": "Man seko un sekotāji", - "navigation_bar.info": "Par šo serveri", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Ātrie taustiņi", "navigation_bar.lists": "Saraksti", "navigation_bar.logout": "Iziet", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā ziņu lenta", "navigation_bar.security": "Drošība", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} ziņoja par {target}", "notification.admin.sign_up": "{name} ir pierakstījies", "notification.favourite": "{name} izcēla tavu ziņu", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Šajā Mastodon serverī nav iespējota ziņu meklēšana pēc to satura.", "search_results.title": "Meklēt {q}", "search_results.total": "{count, number} {count, plural, one {rezultāts} other {rezultāti}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Izveidot kontu", "sign_in_banner.sign_in": "Pierakstīties", "sign_in_banner.text": "Pieraksties, lai sekotu profiliem vai atsaucēm, pievienotu izlasei, kopīgotu ziņas un atbildētu uz tām vai mijiedarbotos no sava konta citā serverī.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Sākums", "tabs_bar.local_timeline": "Vietējā", "tabs_bar.notifications": "Paziņojumi", - "tabs_bar.search": "Meklēt", "time_remaining.days": "Atlikušas {number, plural, one {# diena} other {# dienas}}", "time_remaining.hours": "Atlikušas {number, plural, one {# stunda} other {# stundas}}", "time_remaining.minutes": "Atlikušas {number, plural, one {# minūte} other {# minūtes}}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 02a8e20a58..8f41064b1b 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Настана грешка при прикажувањето на оваа веб-страница.", "bundle_modal_error.retry": "Обидете се повторно", + "column.about": "About", "column.blocks": "Блокирани корисници", "column.bookmarks": "Bookmarks", "column.community": "Локална временска зона", @@ -221,14 +222,14 @@ "follow_request.reject": "Одбиј", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Програмери", - "getting_started.directory": "Профил директориум", + "getting_started.directory": "Directory", "getting_started.documentation": "Документација", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Започни", "getting_started.invite": "Покани луѓе", - "getting_started.open_source_notice": "Мастодон е софтвер со отворен код. Можете да придонесувате или пријавувате проблеми во GitHub на {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Поставки на сметката", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Замолќени зборови", "navigation_bar.follow_requests": "Следи покани", "navigation_bar.follows_and_followers": "Следења и следбеници", - "navigation_bar.info": "За овој сервер", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Кратенки", "navigation_bar.lists": "Листи", "navigation_bar.logout": "Одјави се", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Федеративен времеплов", "navigation_bar.security": "Безбедност", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Дома", "tabs_bar.local_timeline": "Локално", "tabs_bar.notifications": "Нотификации", - "tabs_bar.search": "Барај", "time_remaining.days": "{number, plural, one {# ден} other {# дена}} {number, plural, one {остана} other {останаа}}", "time_remaining.hours": "{number, plural, one {# час} other {# часа}} {number, plural, one {остана} other {останаа}}", "time_remaining.minutes": "{number, plural, one {# минута} other {# минути}} {number, plural, one {остана} other {останаа}}", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 9707275a6b..a5d293e577 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "അടയ്ക്കുക", "bundle_modal_error.message": "ഈ വെബ്പേജ് പ്രദർശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.", "bundle_modal_error.retry": "വീണ്ടും ശ്രമിക്കുക", + "column.about": "About", "column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "column.bookmarks": "ബുക്ക്മാർക്കുകൾ", "column.community": "പ്രാദേശികമായ സമയരേഖ", @@ -221,14 +222,14 @@ "follow_request.reject": "നിരസിക്കുക", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "സംരക്ഷിച്ചു", - "getting_started.developers": "വികസിപ്പിക്കുന്നവർ", - "getting_started.directory": "പ്രൊഫൈൽ ഡയറക്ടറി", + "getting_started.directory": "Directory", "getting_started.documentation": "രേഖാ സമാഹരണം", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "തുടക്കം കുറിക്കുക", "getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക", - "getting_started.open_source_notice": "മാസ്റ്റഡോൺ ഒരു സ്വതന്ത്ര സോഫ്ട്‍വെയർ ആണ്. നിങ്ങൾക്ക് {github} GitHub ൽ സംഭാവന ചെയ്യുകയോ പ്രശ്നങ്ങൾ അറിയിക്കുകയോ ചെയ്യാം.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "അംഗത്വ ക്രമീകരണങ്ങൾ", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ", "hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}", "hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ", @@ -310,7 +311,8 @@ "mute_modal.duration": "കാലാവധി", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "അനിശ്ചിതകാല", - "navigation_bar.apps": "മൊബൈൽ ആപ്പുകൾ", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "ഈ സെർവറിനെക്കുറിച്ച്", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "ലിസ്റ്റുകൾ", "navigation_bar.logout": "ലോഗൗട്ട്", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "ക്രമീകരണങ്ങൾ", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "സുരക്ഷ", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "ഹോം", "tabs_bar.local_timeline": "പ്രാദേശികം", "tabs_bar.notifications": "അറിയിപ്പുകൾ", - "tabs_bar.search": "തിരയുക", "time_remaining.days": "{number, plural, one {# ദിവസം} other {# ദിവസങ്ങൾ}} ബാക്കി", "time_remaining.hours": "{number, plural, one {# മണിക്കൂർ} other {# മണിക്കൂർ}} ശേഷിക്കുന്നു", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index f3fa37c02f..9ccd3cfc64 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "बंद करा", "bundle_modal_error.message": "हा घटक लोड करतांना काहीतरी चुकले आहे.", "bundle_modal_error.retry": "पुन्हा प्रयत्न करा", + "column.about": "About", "column.blocks": "ब्लॉक केलेले खातेधारक", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 9972e8bb85..2f9d9022b3 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Ada yang tidak kena semasa memuatkan komponen ini.", "bundle_modal_error.retry": "Cuba lagi", + "column.about": "About", "column.blocks": "Pengguna yang disekat", "column.bookmarks": "Tanda buku", "column.community": "Garis masa tempatan", @@ -221,14 +222,14 @@ "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Walaupun akaun anda tidak dikunci, kakitangan {domain} merasakan anda mungkin ingin menyemak permintaan ikutan daripada akaun ini secara manual.", "generic.saved": "Disimpan", - "getting_started.developers": "Pembangun", - "getting_started.directory": "Direktori profil", + "getting_started.directory": "Directory", "getting_started.documentation": "Pendokumenan", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Mari bermula", "getting_started.invite": "Undang orang", - "getting_started.open_source_notice": "Mastodon itu perisian bersumber terbuka. Anda boleh menyumbang atau melaporkan masalah di GitHub menerusi {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Tetapan akaun", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Tempoh", "mute_modal.hide_notifications": "Sembunyikan pemberitahuan daripada pengguna ini?", "mute_modal.indefinite": "Tidak tentu", - "navigation_bar.apps": "Aplikasi mudah alih", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Pengguna yang disekat", "navigation_bar.bookmarks": "Tanda buku", "navigation_bar.community_timeline": "Garis masa tempatan", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Perkataan yang dibisukan", "navigation_bar.follow_requests": "Permintaan ikutan", "navigation_bar.follows_and_followers": "Ikutan dan pengikut", - "navigation_bar.info": "Perihal pelayan ini", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Kekunci pantas", "navigation_bar.lists": "Senarai", "navigation_bar.logout": "Log keluar", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Keutamaan", "navigation_bar.public_timeline": "Garis masa bersekutu", "navigation_bar.security": "Keselamatan", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} menggemari hantaran anda", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Menggelintar hantaran menggunakan kandungannya tidak didayakan di pelayan Mastodon ini.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, other {hasil}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Laman utama", "tabs_bar.local_timeline": "Tempatan", "tabs_bar.notifications": "Pemberitahuan", - "tabs_bar.search": "Cari", "time_remaining.days": "Tinggal {number, plural, other {# hari}}", "time_remaining.hours": "Tinggal {number, plural, other {# jam}}", "time_remaining.minutes": "Tinggal {number, plural, other {# minit}}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 8b9a420cef..cdb60d5bcf 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", + "column.about": "About", "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", "column.community": "Lokale tijdlijn", @@ -221,14 +222,14 @@ "follow_request.reject": "Afwijzen", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", "generic.saved": "Opgeslagen", - "getting_started.developers": "Ontwikkelaars", - "getting_started.directory": "Gebruikersgids", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentatie", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Aan de slag", "getting_started.invite": "Mensen uitnodigen", - "getting_started.open_source_notice": "Mastodon is vrije software. Je kunt bijdragen of problemen melden op GitHub via {github}.", "getting_started.privacy_policy": "Privacybeleid", "getting_started.security": "Accountinstellingen", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "zonder {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duur", "mute_modal.hide_notifications": "Verberg meldingen van deze persoon?", "mute_modal.indefinite": "Voor onbepaalde tijd", - "navigation_bar.apps": "Mobiele apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Geblokkeerde gebruikers", "navigation_bar.bookmarks": "Bladwijzers", "navigation_bar.community_timeline": "Lokale tijdlijn", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Filters", "navigation_bar.follow_requests": "Volgverzoeken", "navigation_bar.follows_and_followers": "Volgers en gevolgden", - "navigation_bar.info": "Over deze server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Sneltoetsen", "navigation_bar.lists": "Lijsten", "navigation_bar.logout": "Uitloggen", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.security": "Beveiliging", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} heeft {target} geapporteerd", "notification.admin.sign_up": "{name} heeft zich geregistreerd", "notification.favourite": "{name} markeerde jouw bericht als favoriet", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Het zoeken in berichten is op deze Mastodon-server niet ingeschakeld.", "search_results.title": "Naar {q} zoeken", "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Account registreren", "sign_in_banner.sign_in": "Inloggen", "sign_in_banner.text": "Inloggen om accounts of hashtags te volgen, op berichten te reageren, berichten te delen, of om interactie te hebben met jouw account op een andere server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Start", "tabs_bar.local_timeline": "Lokaal", "tabs_bar.notifications": "Meldingen", - "tabs_bar.search": "Zoeken", "time_remaining.days": "{number, plural, one {# dag} other {# dagen}} te gaan", "time_remaining.hours": "{number, plural, one {# uur} other {# uur}} te gaan", "time_remaining.minutes": "{number, plural, one {# minuut} other {# minuten}} te gaan", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index f5d012f704..a58e6240e3 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Lat att", "bundle_modal_error.message": "Noko gjekk gale under lastinga av denne komponenten.", "bundle_modal_error.retry": "Prøv igjen", + "column.about": "About", "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", "column.community": "Lokal tidsline", @@ -221,14 +222,14 @@ "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Sjølv om kontoen din ikkje er låst tenkte {domain} tilsette at du ville gå gjennom førespurnadar frå desse kontoane manuelt.", "generic.saved": "Lagra", - "getting_started.developers": "Utviklarar", - "getting_started.directory": "Profilkatalog", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentasjon", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kom i gang", "getting_started.invite": "Byd folk inn", - "getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidraga eller rapportera problem med GitHub på {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoinnstillingar", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Varighet", "mute_modal.hide_notifications": "Gøyme varsel frå denne brukaren?", "mute_modal.indefinite": "På ubestemt tid", - "navigation_bar.apps": "Mobilappar", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokkerte brukarar", "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Målbundne ord", "navigation_bar.follow_requests": "Fylgjeførespurnader", "navigation_bar.follows_and_followers": "Fylgje og fylgjarar", - "navigation_bar.info": "Om denne tenaren", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Snøggtastar", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Logg ut", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", "navigation_bar.security": "Tryggleik", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} rapporterte {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} merkte statusen din som favoritt", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "På denne Matsodon-tenaren kan du ikkje søkja på tut etter innhaldet deira.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {treff} other {treff}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Heim", "tabs_bar.local_timeline": "Lokal", "tabs_bar.notifications": "Varsel", - "tabs_bar.search": "Søk", "time_remaining.days": "{number, plural, one {# dag} other {# dagar}} igjen", "time_remaining.hours": "{number, plural, one {# time} other {# timar}} igjen", "time_remaining.minutes": "{number, plural, one {# minutt} other {# minutt}} igjen", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 5ede22d717..0fe69bb979 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Lukk", "bundle_modal_error.message": "Noe gikk galt da denne komponenten lastet.", "bundle_modal_error.retry": "Prøv igjen", + "column.about": "About", "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", "column.community": "Lokal tidslinje", @@ -221,14 +222,14 @@ "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.", "generic.saved": "Lagret", - "getting_started.developers": "Utviklere", - "getting_started.directory": "Profilmappe", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentasjon", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kom i gang", "getting_started.invite": "Inviter folk", - "getting_started.open_source_notice": "Mastodon er fri programvare. Du kan bidra eller rapportere problemer på GitHub på {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoinnstillinger", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uten {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Varighet", "mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?", "mute_modal.indefinite": "På ubestemt tid", - "navigation_bar.apps": "Mobilapper", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokkerte brukere", "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Stilnede ord", "navigation_bar.follow_requests": "Følgeforespørsler", "navigation_bar.follows_and_followers": "Følginger og følgere", - "navigation_bar.info": "Utvidet informasjon", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Tastatursnarveier", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Logg ut", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Innstillinger", "navigation_bar.public_timeline": "Felles tidslinje", "navigation_bar.security": "Sikkerhet", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} likte din status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Å søke i tuter etter innhold er ikke skrudd på i denne Mastodon-tjeneren.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Hjem", "tabs_bar.local_timeline": "Lokal", "tabs_bar.notifications": "Varslinger", - "tabs_bar.search": "Søk", "time_remaining.days": "{number, plural,one {# dag} other {# dager}} igjen", "time_remaining.hours": "{number, plural, one {# time} other {# timer}} igjen", "time_remaining.minutes": "{number, plural, one {# minutt} other {# minutter}} igjen", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index cfe5364dde..73ffedd624 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Tampar", "bundle_modal_error.message": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", "bundle_modal_error.retry": "Tornar ensajar", + "column.about": "About", "column.blocks": "Personas blocadas", "column.bookmarks": "Marcadors", "column.community": "Flux public local", @@ -221,14 +222,14 @@ "follow_request.reject": "Regetar", "follow_requests.unlocked_explanation": "Encara que vòstre compte siasque pas verrolhat, la còla de {domain} pensèt que volriatz benlèu repassar las demandas d’abonament d’aquestes comptes.", "generic.saved": "Enregistrat", - "getting_started.developers": "Desvelopaires", - "getting_started.directory": "Annuari de perfils", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentacion", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Per començar", "getting_started.invite": "Convidar de mond", - "getting_started.open_source_notice": "Mastodon es un logicial liure. Podètz contribuir e mandar vòstres comentaris e rapòrt de bug via {github} sus GitHub.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Seguretat", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sens {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Durada", "mute_modal.hide_notifications": "Rescondre las notificacions d’aquesta persona ?", "mute_modal.indefinite": "Cap de data de fin", - "navigation_bar.apps": "Aplicacions mobil", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Personas blocadas", "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Flux public local", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Mots ignorats", "navigation_bar.follow_requests": "Demandas d’abonament", "navigation_bar.follows_and_followers": "Abonament e seguidors", - "navigation_bar.info": "Tocant aqueste servidor", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Acorchis clavièr", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Desconnexion", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferéncias", "navigation_bar.public_timeline": "Flux public global", "navigation_bar.security": "Seguretat", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} se marquèt", "notification.favourite": "{name} a ajustat a sos favorits", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "La recèrca de tuts per lor contengut es pas activada sus aqueste servidor Mastodon.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Acuèlh", "tabs_bar.local_timeline": "Flux public local", "tabs_bar.notifications": "Notificacions", - "tabs_bar.search": "Recèrcas", "time_remaining.days": "demòra{number, plural, one { # jorn} other {n # jorns}}", "time_remaining.hours": "demòra{number, plural, one { # ora} other {n # oras}}", "time_remaining.minutes": "demòra{number, plural, one { # minuta} other {n # minutas}}", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index de4e765071..757f2cbd57 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 50dd7f6422..0541e5f4d2 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Zamknij", "bundle_modal_error.message": "Coś poszło nie tak podczas ładowania tego składnika.", "bundle_modal_error.retry": "Spróbuj ponownie", + "column.about": "About", "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", "column.community": "Lokalna oś czasu", @@ -221,14 +222,14 @@ "follow_request.reject": "Odrzuć", "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość śledzenia.", "generic.saved": "Zapisano", - "getting_started.developers": "Dla programistów", - "getting_started.directory": "Katalog profilów", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentacja", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Rozpocznij", "getting_started.invite": "Zaproś znajomych", - "getting_started.open_source_notice": "Mastodon jest oprogramowaniem o otwartym źródle. Możesz pomóc w rozwoju lub zgłaszać błędy na GitHubie tutaj: {github}.", "getting_started.privacy_policy": "Polityka prywatności", "getting_started.security": "Bezpieczeństwo", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "lub {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Czas", "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "mute_modal.indefinite": "Nieokreślony", - "navigation_bar.apps": "Aplikacje mobilne", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Zablokowani użytkownicy", "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Wyciszone słowa", "navigation_bar.follow_requests": "Prośby o śledzenie", "navigation_bar.follows_and_followers": "Śledzeni i śledzący", - "navigation_bar.info": "Szczegółowe informacje", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Skróty klawiszowe", "navigation_bar.lists": "Listy", "navigation_bar.logout": "Wyloguj", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", "navigation_bar.security": "Bezpieczeństwo", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} zgłosił {target}", "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Szukanie wpisów przy pomocy ich zawartości nie jest włączone na tym serwerze Mastodona.", "search_results.title": "Wyszukiwanie {q}", "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} other {wyników}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Załóż konto", "sign_in_banner.sign_in": "Zaloguj się", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Strona główna", "tabs_bar.local_timeline": "Lokalne", "tabs_bar.notifications": "Powiadomienia", - "tabs_bar.search": "Szukaj", "time_remaining.days": "{number, plural, one {Pozostał # dzień} few {Pozostały # dni} many {Pozostało # dni} other {Pozostało # dni}}", "time_remaining.hours": "{number, plural, one {Pozostała # godzina} few {Pozostały # godziny} many {Pozostało # godzin} other {Pozostało # godzin}}", "time_remaining.minutes": "{number, plural, one {Pozostała # minuta} few {Pozostały # minuty} many {Pozostało # minut} other {Pozostało # minut}}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index eb5d257854..9e5be4d67a 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Erro ao carregar este componente.", "bundle_modal_error.retry": "Tente novamente", + "column.about": "About", "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", "column.community": "Linha local", @@ -221,14 +222,14 @@ "follow_request.reject": "Recusar", "follow_requests.unlocked_explanation": "Apesar de seu perfil não ser trancado, {domain} exige que você revise a solicitação para te seguir destes perfis manualmente.", "generic.saved": "Salvo", - "getting_started.developers": "Desenvolvedores", - "getting_started.directory": "Centro de usuários", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentação", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primeiros passos", "getting_started.invite": "Convidar pessoas", - "getting_started.open_source_notice": "Mastodon é um software de código aberto. Você pode contribuir ou reportar problemas na página do projeto no GitHub em {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Configurações da conta", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duração", "mute_modal.hide_notifications": "Ocultar notificações deste usuário?", "mute_modal.indefinite": "Indefinido", - "navigation_bar.apps": "Aplicativos", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Usuários bloqueados", "navigation_bar.bookmarks": "Salvos", "navigation_bar.community_timeline": "Linha do tempo local", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Palavras filtradas", "navigation_bar.follow_requests": "Seguidores pendentes", "navigation_bar.follows_and_followers": "Segue e seguidores", - "navigation_bar.info": "Sobre este servidor", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Sair", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Linha global", "navigation_bar.security": "Segurança", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} denunciou {target}", "notification.admin.sign_up": "{name} se inscreveu", "notification.favourite": "{name} favoritou teu toot", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Página inicial", "tabs_bar.local_timeline": "Linha local", "tabs_bar.notifications": "Notificações", - "tabs_bar.search": "Pesquisar", "time_remaining.days": "{number, plural, one {# dia restante} other {# dias restantes}}", "time_remaining.hours": "{number, plural, one {# hora restante} other {# horas restantes}}", "time_remaining.minutes": "{number, plural, one {# minuto restante} other {# minutos restantes}}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 654588545c..261c725fa2 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.", "bundle_modal_error.retry": "Tente de novo", + "column.about": "About", "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", "column.community": "Cronologia local", @@ -221,14 +222,14 @@ "follow_request.reject": "Rejeitar", "follow_requests.unlocked_explanation": "Apesar de a sua não ser privada, a administração de {domain} pensa que poderá querer rever manualmente os pedidos de seguimento dessas contas.", "generic.saved": "Salvo", - "getting_started.developers": "Responsáveis pelo desenvolvimento", - "getting_started.directory": "Diretório de perfis", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentação", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primeiros passos", "getting_started.invite": "Convidar pessoas", - "getting_started.open_source_notice": "Mastodon é um software de código aberto. Podes contribuir ou reportar problemas no GitHub do projeto: {github}.", "getting_started.privacy_policy": "Política de Privacidade", "getting_started.security": "Segurança", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duração", "mute_modal.hide_notifications": "Esconder notificações deste utilizador?", "mute_modal.indefinite": "Indefinidamente", - "navigation_bar.apps": "Aplicações móveis", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Utilizadores bloqueados", "navigation_bar.bookmarks": "Itens salvos", "navigation_bar.community_timeline": "Cronologia local", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Palavras silenciadas", "navigation_bar.follow_requests": "Seguidores pendentes", "navigation_bar.follows_and_followers": "Seguindo e seguidores", - "navigation_bar.info": "Sobre esta instância", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Sair", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", "navigation_bar.security": "Segurança", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} denunciou {target}", "notification.admin.sign_up": "{name} inscreveu-se", "notification.favourite": "{name} adicionou a tua publicação aos favoritos", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "A pesquisa de toots pelo seu conteúdo não está disponível nesta instância Mastodon.", "search_results.title": "Pesquisar por {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Criar conta", "sign_in_banner.sign_in": "Iniciar sessão", "sign_in_banner.text": "Inicie sessão para seguir perfis ou hashtags, favoritos, partilhar e responder às publicações ou interagir através da sua conta noutro servidor.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Início", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificações", - "tabs_bar.search": "Pesquisar", "time_remaining.days": "{número, plural, um {# day} outro {# days}} faltam", "time_remaining.hours": "{número, plural, um {# hour} outro {# hours}} faltam", "time_remaining.minutes": "{número, plural, um {# minute} outro {# minutes}} faltam", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 2ecc842185..1348293c2a 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Închide", "bundle_modal_error.message": "A apărut o eroare la încărcarea acestui element.", "bundle_modal_error.retry": "Încearcă din nou", + "column.about": "About", "column.blocks": "Utilizatori blocați", "column.bookmarks": "Marcaje", "column.community": "Cronologie locală", @@ -221,14 +222,14 @@ "follow_request.reject": "Respinge", "follow_requests.unlocked_explanation": "Chiar dacă contul tău nu este blocat, personalul {domain} a considerat că ai putea prefera să consulți manual cererile de abonare de la aceste conturi.", "generic.saved": "Salvat", - "getting_started.developers": "Dezvoltatori", - "getting_started.directory": "Catalog de profiluri", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentație", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primii pași", "getting_started.invite": "Invită persoane", - "getting_started.open_source_notice": "Mastodon este un software cu sursă deschisă (open source). Poți contribui la dezvoltarea lui sau raporta probleme pe GitHub la {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Setări cont", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "și {additional}", "hashtag.column_header.tag_mode.any": "sau {additional}", "hashtag.column_header.tag_mode.none": "fără {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Durata", "mute_modal.hide_notifications": "Ascunde notificările de la acest utilizator?", "mute_modal.indefinite": "Nedeterminat", - "navigation_bar.apps": "Aplicații mobile", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Utilizatori blocați", "navigation_bar.bookmarks": "Marcaje", "navigation_bar.community_timeline": "Cronologie locală", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Cuvinte ignorate", "navigation_bar.follow_requests": "Cereri de abonare", "navigation_bar.follows_and_followers": "Abonamente și abonați", - "navigation_bar.info": "Despre această instanță", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Taste rapide", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Deconectare", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferințe", "navigation_bar.public_timeline": "Cronologie globală", "navigation_bar.security": "Securitate", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} a adăugat postarea ta la favorite", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Căutarea de postări după conținutul lor nu este activată pe acest server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultate}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Acasă", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificări", - "tabs_bar.search": "Căutare", "time_remaining.days": "{number, plural, one {# zi} other {# zile}} rămase", "time_remaining.hours": "{number, plural, one {# oră} other {# ore}} rămase", "time_remaining.minutes": "{number, plural, one {# minut} other {# minute}} rămase", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 94bcc854a8..7c57596264 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Закрыть", "bundle_modal_error.message": "Что-то пошло не так при загрузке этого компонента.", "bundle_modal_error.retry": "Попробовать снова", + "column.about": "About", "column.blocks": "Заблокированные пользователи", "column.bookmarks": "Закладки", "column.community": "Локальная лента", @@ -221,14 +222,14 @@ "follow_request.reject": "Отказать", "follow_requests.unlocked_explanation": "Этот запрос отправлен с учётной записи, для которой администрация {domain} включила ручную проверку подписок.", "generic.saved": "Сохранено", - "getting_started.developers": "Разработчикам", - "getting_started.directory": "Каталог профилей", + "getting_started.directory": "Каталог", "getting_started.documentation": "Документация", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Начать", "getting_started.invite": "Пригласить людей", - "getting_started.open_source_notice": "Mastodon — сервис с открытым исходным кодом. Вы можете внести вклад или сообщить о проблемах на GitHub: {github}.", "getting_started.privacy_policy": "Политика конфиденциальности", "getting_started.security": "Настройки учётной записи", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Продолжительность", "mute_modal.hide_notifications": "Скрыть уведомления от этого пользователя?", "mute_modal.indefinite": "Не определена", - "navigation_bar.apps": "Мобильные приложения", + "navigation_bar.about": "About", + "navigation_bar.apps": "Скачать приложение", "navigation_bar.blocks": "Список блокировки", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальная лента", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Игнорируемые слова", "navigation_bar.follow_requests": "Запросы на подписку", "navigation_bar.follows_and_followers": "Подписки и подписчики", - "navigation_bar.info": "Об узле", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Сочетания клавиш", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Выйти", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Настройки", "navigation_bar.public_timeline": "Глобальная лента", "navigation_bar.security": "Безопасность", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} сообщил о {target}", "notification.admin.sign_up": "{name} зарегистрирован", "notification.favourite": "{name} добавил(а) ваш пост в избранное", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Поиск постов по их содержанию не поддерживается данным сервером Mastodon.", "search_results.title": "Поиск {q}", "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Создать учётную запись", "sign_in_banner.sign_in": "Войти", "sign_in_banner.text": "Войдите, чтобы следить за профилями, хэштегами или избранным, делиться сообщениями и отвечать на них или взаимодействовать с вашей учётной записью на другом сервере.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Главная", "tabs_bar.local_timeline": "Локальная", "tabs_bar.notifications": "Уведомления", - "tabs_bar.search": "Поиск", "time_remaining.days": "{number, plural, one {остался # день} few {осталось # дня} many {осталось # дней} other {осталось # дней}}", "time_remaining.hours": "{number, plural, one {остался # час} few {осталось # часа} many {осталось # часов} other {осталось # часов}}", "time_remaining.minutes": "{number, plural, one {осталась # минута} few {осталось # минуты} many {осталось # минут} other {осталось # минут}}", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 39dab7c97a..61162caf0d 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "पिधीयताम्", "bundle_modal_error.message": "आरोपणे कश्चन दोषो जातः", "bundle_modal_error.retry": "पुनः यतताम्", + "column.about": "About", "column.blocks": "निषिद्धभोक्तारः", "column.bookmarks": "पुटचिह्नानि", "column.community": "स्थानीयसमयतालिका", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 50f6a0b80f..7b977dfc9c 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Serra", "bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.", "bundle_modal_error.retry": "Torra·bi a proare", + "column.about": "About", "column.blocks": "Persones blocadas", "column.bookmarks": "Sinnalibros", "column.community": "Lìnia de tempus locale", @@ -221,14 +222,14 @@ "follow_request.reject": "Refuda", "follow_requests.unlocked_explanation": "Fintzas si su contu tuo no est blocadu, su personale de {domain} at pensadu chi forsis bolias revisionare a manu is rechestas de custos contos.", "generic.saved": "Sarvadu", - "getting_started.developers": "Iscuadra de isvilupu", - "getting_started.directory": "Diretòriu de profilos", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentatzione", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Comente cumintzare", "getting_started.invite": "Invita gente", - "getting_started.open_source_notice": "Mastodon est de còdighe abertu. Bi podes contribuire o sinnalare faddinas in {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Cunfiguratziones de su contu", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sena {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Durada", "mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?", "mute_modal.indefinite": "Indefinida", - "navigation_bar.apps": "Aplicatziones mòbiles", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Persones blocadas", "navigation_bar.bookmarks": "Sinnalibros", "navigation_bar.community_timeline": "Lìnia de tempus locale", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Faeddos a sa muda", "navigation_bar.follow_requests": "Rechestas de sighidura", "navigation_bar.follows_and_followers": "Gente chi sighis e sighiduras", - "navigation_bar.info": "Informatziones de su serbidore", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Teclas de atzessu diretu", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Essi", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferèntzias", "navigation_bar.public_timeline": "Lìnia de tempus federada", "navigation_bar.security": "Seguresa", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} at marcadu sa publicatzione tua comente a preferida", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Sa chirca de publicatziones pro su cuntenutu issoro no est abilitada in custu serbidore de Mastodon.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {resurtadu} other {resurtados}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Printzipale", "tabs_bar.local_timeline": "Locale", "tabs_bar.notifications": "Notìficas", - "tabs_bar.search": "Chirca", "time_remaining.days": "{number, plural, one {abarrat # die} other {abarrant # dies}}", "time_remaining.hours": "{number, plural, one {abarrat # ora} other {abarrant # oras}}", "time_remaining.minutes": "{number, plural, one {abarrat # minutu} other {abarrant # minutos}}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 3503dda8d4..841f32faec 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "වසන්න", "bundle_modal_error.message": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", "bundle_modal_error.retry": "නැවත උත්සාහ කරන්න", + "column.about": "About", "column.blocks": "අවහිර කළ පරිශීලකයින්", "column.bookmarks": "පොත් යොමු", "column.community": "දේශීය කාලරේඛාව", @@ -221,14 +222,14 @@ "follow_request.reject": "ප්‍රතික්‍ෂේප", "follow_requests.unlocked_explanation": "ඔබගේ ගිණුම අගුලු දමා නොතිබුණද, {domain} කාර්ය මණ්ඩලය සිතුවේ ඔබට මෙම ගිණුම් වලින් ලැබෙන ඉල්ලීම් හස්තීයව සමාලෝචනය කිරීමට අවශ්‍ය විය හැකි බවයි.", "generic.saved": "සුරැකිණි", - "getting_started.developers": "සංවර්ධකයින්", - "getting_started.directory": "පැතිකඩ නාමාවලිය", + "getting_started.directory": "Directory", "getting_started.documentation": "ප්‍රලේඛනය", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "පටන් ගන්න", "getting_started.invite": "මිනිසුන්ට ආරාධනය", - "getting_started.open_source_notice": "Mastodon යනු විවෘත කේත මෘදුකාංගයකි. ඔබට GitHub හි {github}ට දායක වීමට හෝ ගැටළු වාර්තා කිරීමට හැකිය.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ගිණුමේ සැකසුම්", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", @@ -310,7 +311,8 @@ "mute_modal.duration": "පරාසය", "mute_modal.hide_notifications": "මෙම පරිශීලකයාගෙන් දැනුම්දීම් සඟවන්නද?", "mute_modal.indefinite": "අවිනිශ්චිත", - "navigation_bar.apps": "ජංගම යෙදුම්", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "අවහිර කළ අය", "navigation_bar.bookmarks": "පොත්යොමු", "navigation_bar.community_timeline": "දේශීය කාලරේඛාව", @@ -324,7 +326,7 @@ "navigation_bar.filters": "නිහඬ කළ වචන", "navigation_bar.follow_requests": "අනුගමන ඉල්ලීම්", "navigation_bar.follows_and_followers": "අනුගමනය හා අනුගාමිකයින්", - "navigation_bar.info": "මෙම සේවාදායකය ගැන", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "උණු යතුරු", "navigation_bar.lists": "ලේඛන", "navigation_bar.logout": "නික්මෙන්න", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "අභිප්‍රේත", "navigation_bar.public_timeline": "ෆෙඩරේටඩ් කාලරේඛාව", "navigation_bar.security": "ආරක්ෂාව", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} වාර්තා {target}", "notification.admin.sign_up": "{name} අත්සන් කර ඇත", "notification.favourite": "{name} ඔබගේ තත්වයට කැමති විය", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "මෙම Mastodon සේවාදායකයේ ඒවායේ අන්තර්ගතය අනුව මෙවලම් සෙවීම සබල නොවේ.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {ප්රතිඵලය} other {ප්රතිපල}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "මුල් පිටුව", "tabs_bar.local_timeline": "ස්ථානීය", "tabs_bar.notifications": "දැනුම්දීම්", - "tabs_bar.search": "සොයන්න", "time_remaining.days": "{number, plural, one {# දින} other {# දින}} අත්හැරියා", "time_remaining.hours": "{number, plural, one {# පැය} other {# පැය}} අත්හැරියා", "time_remaining.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}} අත්හැරියා", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index fef39cc223..213f2a5fc0 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Zatvor", "bundle_modal_error.message": "Nastala chyba pri načítaní tohto komponentu.", "bundle_modal_error.retry": "Skúsiť znova", + "column.about": "About", "column.blocks": "Blokovaní užívatelia", "column.bookmarks": "Záložky", "column.community": "Miestna časová os", @@ -221,14 +222,14 @@ "follow_request.reject": "Odmietni", "follow_requests.unlocked_explanation": "Síce Váš učet nie je uzamknutý, ale {domain} tím si myslel že môžete chcieť skontrolovať žiadosti o sledovanie z týchto účtov manuálne.", "generic.saved": "Uložené", - "getting_started.developers": "Vývojári", - "getting_started.directory": "Zoznam profilov", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentácia", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Začni tu", "getting_started.invite": "Pozvi ľudí", - "getting_started.open_source_notice": "Mastodon je softvér s otvoreným kódom. Nahlásiť chyby, alebo prispievať môžeš na GitHube v {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Zabezpečenie", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "alebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Trvanie", "mute_modal.hide_notifications": "Skry oznámenia od tohto používateľa?", "mute_modal.indefinite": "Bez obmedzenia", - "navigation_bar.apps": "Aplikácie", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokovaní užívatelia", "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Miestna časová os", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Filtrované slová", "navigation_bar.follow_requests": "Žiadosti o sledovanie", "navigation_bar.follows_and_followers": "Sledovania a následovatelia", - "navigation_bar.info": "O tomto serveri", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Klávesové skratky", "navigation_bar.lists": "Zoznamy", "navigation_bar.logout": "Odhlás sa", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Nastavenia", "navigation_bar.public_timeline": "Federovaná časová os", "navigation_bar.security": "Zabezbečenie", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} nahlásil/a {target}", "notification.admin.sign_up": "{name} sa zaregistroval/a", "notification.favourite": "{name} si obľúbil/a tvoj príspevok", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Vyhľadávanie v obsahu príspevkov nieje na tomto Mastodon serveri povolené.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {výsledok} many {výsledkov} other {výsledky}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Domov", "tabs_bar.local_timeline": "Miestna", "tabs_bar.notifications": "Oboznámenia", - "tabs_bar.search": "Hľadaj", "time_remaining.days": "Ostáva {number, plural, one {# deň} few {# dní} many {# dní} other {# dní}}", "time_remaining.hours": "Ostáva {number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodiny}}", "time_remaining.minutes": "Ostáva {number, plural, one {# minúta} few {# minút} many {# minút} other {# minúty}}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 8eefb02db6..736de382cd 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Zapri", "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", "bundle_modal_error.retry": "Poskusi ponovno", + "column.about": "About", "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", "column.community": "Lokalna časovnica", @@ -221,14 +222,14 @@ "follow_request.reject": "Zavrni", "follow_requests.unlocked_explanation": "Čeprav vaš račun ni zaklenjen, zaposleni pri {domain} menijo, da bi morda želeli pregledati zahteve za sledenje teh računov ročno.", "generic.saved": "Shranjeno", - "getting_started.developers": "Razvijalci", - "getting_started.directory": "Imenik profilov", + "getting_started.directory": "Adresár", "getting_started.documentation": "Dokumentacija", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kako začeti", "getting_started.invite": "Povabite osebe", - "getting_started.open_source_notice": "Mastodon je odprtokodna programska oprema. Na GitHubu na {github} lahko prispevate ali poročate o napakah.", "getting_started.privacy_policy": "Pravilnik o zasebnosti", "getting_started.security": "Varnost", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "in {additional}", "hashtag.column_header.tag_mode.any": "ali {additional}", "hashtag.column_header.tag_mode.none": "brez {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Trajanje", "mute_modal.hide_notifications": "Skrij obvestila tega uporabnika?", "mute_modal.indefinite": "Nedoločeno", - "navigation_bar.apps": "Mobilne aplikacije", + "navigation_bar.about": "About", + "navigation_bar.apps": "Prenesite aplikacijo", "navigation_bar.blocks": "Blokirani uporabniki", "navigation_bar.bookmarks": "Zaznamki", "navigation_bar.community_timeline": "Lokalna časovnica", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Utišane besede", "navigation_bar.follow_requests": "Prošnje za sledenje", "navigation_bar.follows_and_followers": "Sledenja in sledilci", - "navigation_bar.info": "O tem strežniku", + "navigation_bar.info": "O programu", "navigation_bar.keyboard_shortcuts": "Hitre tipke", "navigation_bar.lists": "Seznami", "navigation_bar.logout": "Odjava", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", "navigation_bar.security": "Varnost", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} je prijavil/a {target}", "notification.admin.sign_up": "{name} se je vpisal/a", "notification.favourite": "{name} je vzljubil/a vaš status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Iskanje objav po njihovi vsebini ni omogočeno na tem strežniku Mastodon.", "search_results.title": "Išči {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultatov}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Ustvari račun", "sign_in_banner.sign_in": "Prijava", "sign_in_banner.text": "Prijavite se, da sledite profilom ali ključnikom, dodajate med priljubljene, delite z drugimi ter odgovarjate na objave, pa tudi ostajate v interakciji iz svojega računa na drugem strežniku.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Domov", "tabs_bar.local_timeline": "Krajevno", "tabs_bar.notifications": "Obvestila", - "tabs_bar.search": "Iskanje", "time_remaining.days": "{number, plural, one {# dan} other {# dni}} je ostalo", "time_remaining.hours": "{number, plural, one {# ura} other {# ur}} je ostalo", "time_remaining.minutes": "{number, plural, one {# minuta} other {# minut}} je ostalo", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 727e9ea161..5540570bd1 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Mbylle", "bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_modal_error.retry": "Riprovoni", + "column.about": "About", "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", "column.community": "Rrjedhë kohore vendore", @@ -221,14 +222,14 @@ "follow_request.reject": "Hidhe tej", "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.", "generic.saved": "U ruajt", - "getting_started.developers": "Zhvillues", - "getting_started.directory": "Drejtori profilesh", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentim", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Si t’ia fillohet", "getting_started.invite": "Ftoni njerëz", - "getting_started.open_source_notice": "Mastodon-i është software me burim të hapur. Mund të jepni ndihmesë ose të njoftoni probleme në GitHub, te {github}.", "getting_started.privacy_policy": "Rregulla Privatësie", "getting_started.security": "Rregullime llogarie", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "dhe {additional}", "hashtag.column_header.tag_mode.any": "ose {additional}", "hashtag.column_header.tag_mode.none": "pa {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Kohëzgjatje", "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?", "mute_modal.indefinite": "E pacaktuar", - "navigation_bar.apps": "Aplikacione për celular", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Përdorues të bllokuar", "navigation_bar.bookmarks": "Faqerojtës", "navigation_bar.community_timeline": "Rrjedhë kohore vendore", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Fjalë të heshtuara", "navigation_bar.follow_requests": "Kërkesa për ndjekje", "navigation_bar.follows_and_followers": "Ndjekje dhe ndjekës", - "navigation_bar.info": "Mbi këtë shërbyes", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Taste përkatës", "navigation_bar.lists": "Lista", "navigation_bar.logout": "Dalje", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", "navigation_bar.security": "Siguri", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} raportoi {target}", "notification.admin.sign_up": "{name} u regjistrua", "notification.favourite": "{name} pëlqeu mesazhin tuaj", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Kërkimi i mesazheve sipas lëndës së tyre s’është i aktivizuar në këtë shërbyes Mastodon.", "search_results.title": "Kërkoni për {q}", "search_results.total": "{count, number} {count, plural, one {përfundim} other {përfundime}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Krijoni llogari", "sign_in_banner.sign_in": "Hyni", "sign_in_banner.text": "Që të ndiqni profile ose hashtag-ë, të pëlqeni, të ndani me të tjerë dhe të përgjigjeni në postime, apo të ndërveproni me llogarinë tuaj nga një shërbyes tjetër, bëni hyrjen.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Kreu", "tabs_bar.local_timeline": "Vendore", "tabs_bar.notifications": "Njoftime", - "tabs_bar.search": "Kërkim", "time_remaining.days": "Edhe {number, plural, one {# ditë} other {# ditë}}", "time_remaining.hours": "Edhe {number, plural, one {# orë} other {# orë}}", "time_remaining.minutes": "Edhe {number, plural, one {# minutë} other {# minuta}}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 63d09b7a98..f10cdf04e1 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto nije bilo u redu pri učitavanju ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovo", + "column.about": "About", "column.blocks": "Blokirani korisnici", "column.bookmarks": "Bookmarks", "column.community": "Lokalna lajna", @@ -221,14 +222,14 @@ "follow_request.reject": "Odbij", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Da počnete", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodont je softver otvorenog koda. Možete mu doprineti ili prijaviti probleme preko GitHub-a na {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Sakrij obaveštenja od ovog korisnika?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna lajna", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Zahtevi za praćenje", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "O ovoj instanci", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Prečice na tastaturi", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Odjava", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Podešavanja", "navigation_bar.public_timeline": "Federisana lajna", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} je stavio Vaš status kao omiljeni", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} few {rezultata} other {rezultata}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Početna", "tabs_bar.local_timeline": "Lokalno", "tabs_bar.notifications": "Obaveštenja", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 52c994ee91..348a80c2b6 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Нешто није било у реду при учитавању ове компоненте.", "bundle_modal_error.retry": "Покушајте поново", + "column.about": "About", "column.blocks": "Блокирани корисници", "column.bookmarks": "Обележивачи", "column.community": "Локална временска линија", @@ -221,14 +222,14 @@ "follow_request.reject": "Одбиј", "follow_requests.unlocked_explanation": "Иако ваш налог није закључан, особље {domain} је помислило да бисте можда желели ручно да прегледате захтеве за праћење са ових налога.", "generic.saved": "Сачувано", - "getting_started.developers": "Програмери", - "getting_started.directory": "Директоријум налога", + "getting_started.directory": "Directory", "getting_started.documentation": "Документација", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Да почнете", "getting_started.invite": "Позовите људе", - "getting_started.open_source_notice": "Мастoдон је софтвер отвореног кода. Можете му допринети или пријавити проблеме преко ГитХаба на {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Безбедност", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Трајање", "mute_modal.hide_notifications": "Сакриј обавештења од овог корисника?", "mute_modal.indefinite": "Неодређен", - "navigation_bar.apps": "Мобилне апликације", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Блокирани корисници", "navigation_bar.bookmarks": "Маркери", "navigation_bar.community_timeline": "Локална временска линија", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Пригушене речи", "navigation_bar.follow_requests": "Захтеви за праћење", "navigation_bar.follows_and_followers": "Праћења и пратиоци", - "navigation_bar.info": "О овој инстанци", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Пречице на тастатури", "navigation_bar.lists": "Листе", "navigation_bar.logout": "Одјава", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Подешавања", "navigation_bar.public_timeline": "Здружена временска линија", "navigation_bar.security": "Безбедност", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} је ставио/ла Ваш статус као омиљени", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {резултат} few {резултата} other {резултата}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Почетна", "tabs_bar.local_timeline": "Локално", "tabs_bar.notifications": "Обавештења", - "tabs_bar.search": "Претрага", "time_remaining.days": "Остало {number, plural, one {# дан} few {# дана} other {# дана}}", "time_remaining.hours": "Остало {number, plural, one {# сат} few {# сата} other {# сати}}", "time_remaining.minutes": "Остало {number, plural, one {# минут} few {# минута} other {# минута}}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 66e7c61762..0cfb77a025 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Stäng", "bundle_modal_error.message": "Något gick fel när denna komponent laddades.", "bundle_modal_error.retry": "Försök igen", + "column.about": "About", "column.blocks": "Blockerade användare", "column.bookmarks": "Bokmärken", "column.community": "Lokal tidslinje", @@ -221,14 +222,14 @@ "follow_request.reject": "Avvisa", "follow_requests.unlocked_explanation": "Även om ditt konto inte är låst tror {domain} personalen att du kanske vill granska dessa följares förfrågningar manuellt.", "generic.saved": "Sparad", - "getting_started.developers": "Utvecklare", - "getting_started.directory": "Profilkatalog", + "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kom igång", "getting_started.invite": "Skicka inbjudningar", - "getting_started.open_source_notice": "Mastodon är programvara med öppen källkod. Du kan bidra eller rapportera problem via GitHub på {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Kontoinställningar", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "och {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Varaktighet", "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?", "mute_modal.indefinite": "Obestämt", - "navigation_bar.apps": "Mobilappar", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blockerade användare", "navigation_bar.bookmarks": "Bokmärken", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Tystade ord", "navigation_bar.follow_requests": "Följförfrågningar", "navigation_bar.follows_and_followers": "Följer och följare", - "navigation_bar.info": "Om denna instans", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Kortkommandon", "navigation_bar.lists": "Listor", "navigation_bar.logout": "Logga ut", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Federerad tidslinje", "navigation_bar.security": "Säkerhet", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} registrerade sig", "notification.favourite": "{name} favoriserade din status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Hem", "tabs_bar.local_timeline": "Lokal", "tabs_bar.notifications": "Aviseringar", - "tabs_bar.search": "Sök", "time_remaining.days": "{number, plural, one {# dag} other {# dagar}} kvar", "time_remaining.hours": "{hours, plural, one {# timme} other {# timmar}} kvar", "time_remaining.minutes": "{minutes, plural, one {1 minut} other {# minuter}} kvar", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index de4e765071..757f2cbd57 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 8ef02972b5..39eab54dfe 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "மூடுக", "bundle_modal_error.message": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", "bundle_modal_error.retry": "மீண்டும் முயற்சி செய்", + "column.about": "About", "column.blocks": "தடுக்கப்பட்ட பயனர்கள்", "column.bookmarks": "அடையாளக்குறிகள்", "column.community": "சுய நிகழ்வு காலவரிசை", @@ -221,14 +222,14 @@ "follow_request.reject": "நிராகரி", "follow_requests.unlocked_explanation": "உங்கள் கணக்கு பூட்டப்படவில்லை என்றாலும், இந்தக் கணக்குகளிலிருந்து உங்களைப் பின்தொடர விரும்பும் கோரிக்கைகளை நீங்கள் பரீசீலிப்பது நலம் என்று {domain} ஊழியர் எண்ணுகிறார்.", "generic.saved": "சேமிக்கப்பட்டது", - "getting_started.developers": "உருவாக்குநர்கள்", - "getting_started.directory": "பயனர்கள்", + "getting_started.directory": "Directory", "getting_started.documentation": "ஆவணங்கள்", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "முதன்மைப் பக்கம்", "getting_started.invite": "நண்பர்களை அழைக்க", - "getting_started.open_source_notice": "மாஸ்டடான் ஒரு open source மென்பொருள் ஆகும். {github} -இன் மூலம் உங்களால் இதில் பங்களிக்கவோ, சிக்கல்களைத் தெரியப்படுத்தவோ முடியும்.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "கணக்கு அமைப்புகள்", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "மற்றும் {additional}", "hashtag.column_header.tag_mode.any": "அல்லது {additional}", "hashtag.column_header.tag_mode.none": "{additional} தவிர்த்து", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "இந்த பயனரின் அறிவிப்புகளை மறைக்கவா?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "மொபைல் பயன்பாடுகள்", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "தடுக்கப்பட்ட பயனர்கள்", "navigation_bar.bookmarks": "அடையாளக்குறிகள்", "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு", @@ -324,7 +326,7 @@ "navigation_bar.filters": "முடக்கப்பட்ட வார்த்தைகள்", "navigation_bar.follow_requests": "கோரிக்கைகளை பின்பற்றவும்", "navigation_bar.follows_and_followers": "பின்பற்றல்கள் மற்றும் பின்பற்றுபவர்கள்", - "navigation_bar.info": "இந்த நிகழ்வு பற்றி", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "சுருக்குவிசைகள்", "navigation_bar.lists": "குதிரை வீர்ர்கள்", "navigation_bar.logout": "விடு பதிகை", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "விருப்பங்கள்", "navigation_bar.public_timeline": "கூட்டாட்சி காலக்கெடு", "navigation_bar.security": "பத்திரம்", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} ஆர்வம் கொண்டவர், உங்கள் நிலை", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "டூட்டுகளின் வார்த்தைகளைக்கொண்டு தேடுவது இந்த மச்டோடன் வழங்கியில் இயல்விக்கப்படவில்லை.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} மற்ற {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "முகப்பு", "tabs_bar.local_timeline": "உள்ளூர்", "tabs_bar.notifications": "அறிவிப்புகள்", - "tabs_bar.search": "தேடு", "time_remaining.days": "{number, plural, one {# day} மற்ற {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} மற்ற {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} மற்ற {# minutes}} left", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 257f5df24a..7b4f0602f1 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 7f8bdc7d2d..c13d3ed8ee 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "మూసివేయు", "bundle_modal_error.message": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.", "bundle_modal_error.retry": "మళ్ళీ ప్రయత్నించండి", + "column.about": "About", "column.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "column.bookmarks": "Bookmarks", "column.community": "స్థానిక కాలక్రమం", @@ -221,14 +222,14 @@ "follow_request.reject": "తిరస్కరించు", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "డెవలపర్లు", - "getting_started.directory": "ప్రొఫైల్ డైరెక్టరీ", + "getting_started.directory": "Directory", "getting_started.documentation": "డాక్యుమెంటేషన్", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "మొదలుపెడదాం", "getting_started.invite": "వ్యక్తులను ఆహ్వానించండి", - "getting_started.open_source_notice": "మాస్టొడొన్ ఓపెన్ సోర్స్ సాఫ్ట్వేర్. మీరు {github} వద్ద GitHub పై సమస్యలను నివేదించవచ్చు లేదా తోడ్పడచ్చు.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "భద్రత", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "మరియు {additional}", "hashtag.column_header.tag_mode.any": "లేదా {additional}", "hashtag.column_header.tag_mode.none": "{additional} లేకుండా", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "ఈ వినియోగదారు నుండి నోటిఫికేషన్లను దాచాలా?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "మొబైల్ ఆప్ లు", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "స్థానిక కాలక్రమం", @@ -324,7 +326,7 @@ "navigation_bar.filters": "మ్యూట్ చేయబడిన పదాలు", "navigation_bar.follow_requests": "అనుసరించడానికి అభ్యర్ధనలు", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "ఈ సేవిక గురించి", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "హాట్ కీలు", "navigation_bar.lists": "జాబితాలు", "navigation_bar.logout": "లాగ్ అవుట్ చేయండి", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "ప్రాధాన్యతలు", "navigation_bar.public_timeline": "సమాఖ్య కాలక్రమం", "navigation_bar.security": "భద్రత", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} మీ స్టేటస్ ను ఇష్టపడ్డారు", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "హోమ్", "tabs_bar.local_timeline": "స్థానిక", "tabs_bar.notifications": "ప్రకటనలు", - "tabs_bar.search": "శోధన", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 97178dc699..cddbac2614 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "ปิด", "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", "bundle_modal_error.retry": "ลองอีกครั้ง", + "column.about": "About", "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", "column.community": "เส้นเวลาในเซิร์ฟเวอร์", @@ -221,14 +222,14 @@ "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", "generic.saved": "บันทึกแล้ว", - "getting_started.developers": "นักพัฒนา", - "getting_started.directory": "ไดเรกทอรีโปรไฟล์", + "getting_started.directory": "Directory", "getting_started.documentation": "เอกสารประกอบ", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "เริ่มต้นใช้งาน", "getting_started.invite": "เชิญผู้คน", - "getting_started.open_source_notice": "Mastodon เป็นซอฟต์แวร์โอเพนซอร์ส คุณสามารถมีส่วนร่วมหรือรายงานปัญหาได้ใน GitHub ที่ {github}", "getting_started.privacy_policy": "นโยบายความเป็นส่วนตัว", "getting_started.security": "การตั้งค่าบัญชี", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "และ {additional}", "hashtag.column_header.tag_mode.any": "หรือ {additional}", "hashtag.column_header.tag_mode.none": "โดยไม่มี {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "ระยะเวลา", "mute_modal.hide_notifications": "ซ่อนการแจ้งเตือนจากผู้ใช้นี้?", "mute_modal.indefinite": "ไม่มีกำหนด", - "navigation_bar.apps": "แอปมือถือ", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "navigation_bar.bookmarks": "ที่คั่นหน้า", "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์", @@ -324,7 +326,7 @@ "navigation_bar.filters": "คำที่ซ่อนอยู่", "navigation_bar.follow_requests": "คำขอติดตาม", "navigation_bar.follows_and_followers": "การติดตามและผู้ติดตาม", - "navigation_bar.info": "เกี่ยวกับเซิร์ฟเวอร์นี้", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "ปุ่มลัด", "navigation_bar.lists": "รายการ", "navigation_bar.logout": "ออกจากระบบ", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", "navigation_bar.security": "ความปลอดภัย", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} ได้รายงาน {target}", "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "ไม่มีการเปิดใช้งานการค้นหาโพสต์โดยเนื้อหาของโพสต์ในเซิร์ฟเวอร์ Mastodon นี้", "search_results.title": "ค้นหาสำหรับ {q}", "search_results.total": "{count, number} {count, plural, other {ผลลัพธ์}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "สร้างบัญชี", "sign_in_banner.sign_in": "ลงชื่อเข้า", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "หน้าแรก", "tabs_bar.local_timeline": "ในเซิร์ฟเวอร์", "tabs_bar.notifications": "การแจ้งเตือน", - "tabs_bar.search": "ค้นหา", "time_remaining.days": "เหลืออีก {number, plural, other {# วัน}}", "time_remaining.hours": "เหลืออีก {number, plural, other {# ชั่วโมง}}", "time_remaining.minutes": "เหลืออีก {number, plural, other {# นาที}}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index d7f07b9c30..55c82cbb86 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Kapat", "bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.", "bundle_modal_error.retry": "Tekrar deneyin", + "column.about": "About", "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İmleri", "column.community": "Yerel zaman tüneli", @@ -221,14 +222,14 @@ "follow_request.reject": "Reddet", "follow_requests.unlocked_explanation": "Hesabınız kilitli olmasa bile, {domain} personeli bu hesaplardan gelen takip isteklerini gözden geçirmek isteyebileceğinizi düşündü.", "generic.saved": "Kaydedildi", - "getting_started.developers": "Geliştiriciler", - "getting_started.directory": "Profil Dizini", + "getting_started.directory": "Directory", "getting_started.documentation": "Belgeler", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Başlarken", "getting_started.invite": "İnsanları davet et", - "getting_started.open_source_notice": "Mastodon açık kaynaklı bir yazılımdır. GitHub'taki {github} üzerinden katkıda bulunabilir veya sorunları bildirebilirsiniz.", "getting_started.privacy_policy": "Gizlilik Politikası", "getting_started.security": "Hesap ayarları", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ve {additional}", "hashtag.column_header.tag_mode.any": "ya da {additional}", "hashtag.column_header.tag_mode.none": "{additional} olmadan", @@ -310,7 +311,8 @@ "mute_modal.duration": "Süre", "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?", "mute_modal.indefinite": "Belirsiz", - "navigation_bar.apps": "Mobil uygulamalar", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Engellenen kullanıcılar", "navigation_bar.bookmarks": "Yer İmleri", "navigation_bar.community_timeline": "Yerel Zaman Tüneli", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Sessize alınmış kelimeler", "navigation_bar.follow_requests": "Takip istekleri", "navigation_bar.follows_and_followers": "Takip edilenler ve takipçiler", - "navigation_bar.info": "Bu sunucu hakkında", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Klavye kısayolları", "navigation_bar.lists": "Listeler", "navigation_bar.logout": "Oturumu kapat", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", "navigation_bar.security": "Güvenlik", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name}, {target} kişisini bildirdi", "notification.admin.sign_up": "{name} kaydoldu", "notification.favourite": "{name} gönderini favorilerine ekledi", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Bu Mastodon sunucusunda gönderi içeriğine göre arama etkin değil.", "search_results.title": "{q} araması", "search_results.total": "{count, number} {count, plural, one {sonuç} other {sonuç}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Hesap oluştur", "sign_in_banner.sign_in": "Giriş yap", "sign_in_banner.text": "Profilleri veya etiketleri izlemek, gönderileri beğenmek, paylaşmak ve yanıtlamak için veya başka bir sunucunuzdaki hesabınızla etkileşmek için giriş yapın.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Ana Sayfa", "tabs_bar.local_timeline": "Yerel", "tabs_bar.notifications": "Bildirimler", - "tabs_bar.search": "Ara", "time_remaining.days": "{number, plural, one {# gün} other {# gün}} kaldı", "time_remaining.hours": "{number, plural, one {# saat} other {# saat}} kaldı", "time_remaining.minutes": "{number, plural, one {# dakika} other {# dakika}} kaldı", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 462eda6e18..bc9a8c2dea 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Ябу", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Кыстыргычлар", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Сакланды", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Дәвамлык", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Кыстыргычлар", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Caylaw", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Хәвефсезлек", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Баш бит", "tabs_bar.local_timeline": "Җирле", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Эзләү", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index de4e765071..757f2cbd57 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Security", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About this server", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index a1590779cc..4c893ade28 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Закрити", "bundle_modal_error.message": "Щось пішло не так під час завантаження цього компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", + "column.about": "About", "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", "column.community": "Локальна стрічка", @@ -221,14 +222,14 @@ "follow_request.reject": "Відмовити", "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, працівники {domain} припускають, що, можливо, ви хотіли б переглянути ці запити на підписку.", "generic.saved": "Збережено", - "getting_started.developers": "Розробникам", - "getting_started.directory": "Каталог профілів", + "getting_started.directory": "Каталог", "getting_started.documentation": "Документація", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Розпочати", "getting_started.invite": "Запросити людей", - "getting_started.open_source_notice": "Mastodon — програма з відкритим сирцевим кодом. Ви можете допомогти проєкту, або повідомити про проблеми на GitHub: {github}.", "getting_started.privacy_policy": "Політика конфіденційності", "getting_started.security": "Налаштування облікового запису", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "та {additional}", "hashtag.column_header.tag_mode.any": "або {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Тривалість", "mute_modal.hide_notifications": "Сховати сповіщення від користувача?", "mute_modal.indefinite": "Не визначено", - "navigation_bar.apps": "Мобільні застосунки", + "navigation_bar.about": "About", + "navigation_bar.apps": "Завантажити застосунок", "navigation_bar.blocks": "Заблоковані користувачі", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальна стрічка", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Приховані слова", "navigation_bar.follow_requests": "Запити на підписку", "navigation_bar.follows_and_followers": "Підписки та підписники", - "navigation_bar.info": "Про цей сервер", + "navigation_bar.info": "Про застосунок", "navigation_bar.keyboard_shortcuts": "Гарячі клавіші", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Вийти", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", "navigation_bar.security": "Безпека", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "Скарга від {name} на {target}", "notification.admin.sign_up": "{name} приєдналися", "notification.favourite": "{name} вподобали ваш допис", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Пошук дописів за вмістом недоступний на даному сервері Mastodon.", "search_results.title": "Шукати {q}", "search_results.total": "{count, number} {count, plural, one {результат} few {результати} many {результатів} other {результатів}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Створити обліковий запис", "sign_in_banner.sign_in": "Увійти", "sign_in_banner.text": "Увійдіть, щоб слідкувати за профілями або хештеґами, вподобаними, ділитися і відповідати на повідомлення або взаємодіяти з вашого облікового запису на іншому сервері.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Головна", "tabs_bar.local_timeline": "Локальна", "tabs_bar.notifications": "Сповіщення", - "tabs_bar.search": "Пошук", "time_remaining.days": "{number, plural, one {# день} few {# дні} other {# днів}}", "time_remaining.hours": "{number, plural, one {# година} few {# години} other {# годин}}", "time_remaining.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 36dc6563b6..57e995c7c1 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "بند کریں", "bundle_modal_error.message": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.", "bundle_modal_error.retry": "دوبارہ کوشش کریں", + "column.about": "About", "column.blocks": "مسدود صارفین", "column.bookmarks": "بُک مارکس", "column.community": "مقامی زمانی جدول", @@ -221,14 +222,14 @@ "follow_request.reject": "انکار کریں", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "فہرست مشخصات", + "getting_started.directory": "Directory", "getting_started.documentation": "اسناد", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "آغاز کریں", "getting_started.invite": "دوستوں کو دعوت دیں", - "getting_started.open_source_notice": "ماسٹوڈون آزاد منبع سوفٹویر ہے. آپ {github} گِٹ ہب پر مسائل میں معاونت یا مشکلات کی اطلاع دے سکتے ہیں.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ترتیباتِ اکاؤنٹ", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "اور {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بغیر {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "غیر معینہ", - "navigation_bar.apps": "موبائل ایپس", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "مسدود صارفین", "navigation_bar.bookmarks": "بُک مارکس", "navigation_bar.community_timeline": "مقامی ٹائم لائن", @@ -324,7 +326,7 @@ "navigation_bar.filters": "خاموش کردہ الفاظ", "navigation_bar.follow_requests": "پیروی کی درخواستیں", "navigation_bar.follows_and_followers": "پیروی کردہ اور پیروکار", - "navigation_bar.info": "اس سرور کے بارے میں", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "ہوٹ کیز", "navigation_bar.lists": "فہرستیں", "navigation_bar.logout": "لاگ آؤٹ", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "وفاقی ٹائم لائن", "navigation_bar.security": "سیکورٹی", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Home", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notifications", - "tabs_bar.search": "Search", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index d184a41bcb..807f5feab4 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "Đóng", "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_modal_error.retry": "Thử lại", + "column.about": "About", "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", "column.community": "Máy chủ của bạn", @@ -221,14 +222,14 @@ "follow_request.reject": "Từ chối", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", "generic.saved": "Đã lưu", - "getting_started.developers": "Nhà phát triển", - "getting_started.directory": "Cộng đồng", + "getting_started.directory": "Directory", "getting_started.documentation": "Tài liệu", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Quản lý", "getting_started.invite": "Mời bạn bè", - "getting_started.open_source_notice": "Mastodon là phần mềm mã nguồn mở. Bạn có thể đóng góp hoặc báo lỗi trên GitHub tại {github}.", "getting_started.privacy_policy": "Chính sách bảo mật", "getting_started.security": "Bảo mật", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "và {additional}", "hashtag.column_header.tag_mode.any": "hoặc {additional}", "hashtag.column_header.tag_mode.none": "mà không {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Thời hạn", "mute_modal.hide_notifications": "Ẩn thông báo từ người này?", "mute_modal.indefinite": "Vĩnh viễn", - "navigation_bar.apps": "Apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Người đã chặn", "navigation_bar.bookmarks": "Đã lưu", "navigation_bar.community_timeline": "Cộng đồng", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Bộ lọc từ ngữ", "navigation_bar.follow_requests": "Yêu cầu theo dõi", "navigation_bar.follows_and_followers": "Quan hệ", - "navigation_bar.info": "Về máy chủ này", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Phím tắt", "navigation_bar.lists": "Danh sách", "navigation_bar.logout": "Đăng xuất", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Cài đặt", "navigation_bar.public_timeline": "Thế giới", "navigation_bar.security": "Bảo mật", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} đã báo cáo {target}", "notification.admin.sign_up": "{name} đăng ký máy chủ của bạn", "notification.favourite": "{name} thích tút của bạn", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Máy chủ của bạn không bật tính năng tìm kiếm tút.", "search_results.title": "Tìm kiếm {q}", "search_results.total": "{count, number} {count, plural, one {kết quả} other {kết quả}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Tạo tài khoản", "sign_in_banner.sign_in": "Đăng nhập", "sign_in_banner.text": "Đăng nhập để theo dõi hồ sơ hoặc hashtag; thích, chia sẻ và trả lời tút hoặc tương tác bằng tài khoản của bạn trên một máy chủ khác.", @@ -538,7 +547,6 @@ "tabs_bar.home": "Bảng tin", "tabs_bar.local_timeline": "Máy chủ", "tabs_bar.notifications": "Thông báo", - "tabs_bar.search": "Tìm kiếm", "time_remaining.days": "{number, plural, other {# ngày}}", "time_remaining.hours": "{number, plural, other {# giờ}}", "time_remaining.minutes": "{number, plural, other {# phút}}", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 6150412a84..5d1b6f5a7e 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "ⵔⴳⵍ", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "ⴰⵍⵙ ⴰⵔⵎ", + "column.about": "About", "column.blocks": "ⵉⵏⵙⵙⵎⵔⵙⵏ ⵜⵜⵓⴳⴷⵍⵏⵉⵏ", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", @@ -221,14 +222,14 @@ "follow_request.reject": "ⴰⴳⵢ", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "generic.saved": "Saved", - "getting_started.developers": "Developers", - "getting_started.directory": "Profile directory", + "getting_started.directory": "Directory", "getting_started.documentation": "Documentation", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵓⵎⵉⴹⴰⵏ", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ⴷ {additional}", "hashtag.column_header.tag_mode.any": "ⵏⵖ {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.apps": "Mobile apps", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -324,7 +326,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "ⵜⵓⵜⵔⴰⵡⵉⵏ ⵏ ⵓⴹⴼⴰⵕ", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "ⵅⴼ ⵓⵎⴰⴽⴽⴰⵢ ⴰ", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "ⵜⵉⵍⴳⴰⵎⵉⵏ", "navigation_bar.logout": "ⴼⴼⵖ", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} favourited your status", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "ⴰⵙⵏⵓⴱⴳ", "tabs_bar.local_timeline": "ⴰⴷⵖⴰⵔⴰⵏ", "tabs_bar.notifications": "ⵜⵉⵏⵖⵎⵉⵙⵉⵏ", - "tabs_bar.search": "ⵔⵣⵓ", "time_remaining.days": "{number, plural, one {# ⵡⴰⵙⵙ} other {# ⵡⵓⵙⵙⴰⵏ}} ⵉⵇⵇⵉⵎⵏ", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 1279ef6a58..56b85fb0fd 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", + "column.about": "About", "column.blocks": "已屏蔽的用户", "column.bookmarks": "书签", "column.community": "本站时间轴", @@ -221,14 +222,14 @@ "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", "generic.saved": "已保存", - "getting_started.developers": "开发者", - "getting_started.directory": "个人资料目录", + "getting_started.directory": "Directory", "getting_started.documentation": "文档", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "开始使用", "getting_started.invite": "邀请用户", - "getting_started.open_source_notice": "Mastodon 是开源软件。欢迎前往 GitHub({github})贡献代码或反馈问题。", "getting_started.privacy_policy": "隐私政策", "getting_started.security": "账号设置", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "持续时长", "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", - "navigation_bar.apps": "移动应用", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "已屏蔽的用户", "navigation_bar.bookmarks": "书签", "navigation_bar.community_timeline": "本站时间轴", @@ -324,7 +326,7 @@ "navigation_bar.filters": "隐藏关键词", "navigation_bar.follow_requests": "关注请求", "navigation_bar.follows_and_followers": "关注管理", - "navigation_bar.info": "关于本站", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "快捷键列表", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", "navigation_bar.security": "安全", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} 已报告 {target}", "notification.admin.sign_up": "{name} 注册了", "notification.favourite": "{name} 喜欢了你的嘟文", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "此 Mastodon 服务器未启用帖子内容搜索。", "search_results.title": "搜索 {q}", "search_results.total": "共 {count, number} 个结果", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "创建账户", "sign_in_banner.sign_in": "登录", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "主页", "tabs_bar.local_timeline": "本地", "tabs_bar.notifications": "通知", - "tabs_bar.search": "搜索", "time_remaining.days": "剩余 {number, plural, one {# 天} other {# 天}}", "time_remaining.hours": "剩余 {number, plural, one {# 小时} other {# 小时}}", "time_remaining.minutes": "剩余 {number, plural, one {# 分钟} other {# 分钟}}", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index e20098fc75..136272c5b0 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "加載本組件出錯。", "bundle_modal_error.retry": "重試", + "column.about": "About", "column.blocks": "封鎖名單", "column.bookmarks": "書籤", "column.community": "本站時間軸", @@ -221,14 +222,14 @@ "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即使您的帳戶未上鎖,{domain} 的工作人員認為您可能想手動審核來自這些帳戶的關注請求。", "generic.saved": "已儲存", - "getting_started.developers": "開發者", - "getting_started.directory": "個人資料目錄", + "getting_started.directory": "Directory", "getting_started.documentation": "文件", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "開始使用", "getting_started.invite": "邀請使用者", - "getting_started.open_source_notice": "Mastodon(萬象)是一個開放源碼的軟件。你可以在官方 GitHub {github} 貢獻或者回報問題。", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "帳戶設定", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "以及{additional}", "hashtag.column_header.tag_mode.any": "或是{additional}", "hashtag.column_header.tag_mode.none": "而無需{additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "時間", "mute_modal.hide_notifications": "需要隱藏這使用者的通知嗎?", "mute_modal.indefinite": "沒期限", - "navigation_bar.apps": "手機 App", + "navigation_bar.about": "About", + "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "封鎖名單", "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", @@ -324,7 +326,7 @@ "navigation_bar.filters": "靜音詞彙", "navigation_bar.follow_requests": "關注請求", "navigation_bar.follows_and_followers": "關注及關注者", - "navigation_bar.info": "關於本服務站", + "navigation_bar.info": "About", "navigation_bar.keyboard_shortcuts": "鍵盤快速鍵", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "跨站時間軸", "navigation_bar.security": "安全", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} 喜歡你的文章", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "此 Mastodon 伺服器並未啟用「搜尋文章內章」功能。", "search_results.title": "Search for {q}", "search_results.total": "{count, number} 項結果", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", @@ -538,7 +547,6 @@ "tabs_bar.home": "主頁", "tabs_bar.local_timeline": "本站", "tabs_bar.notifications": "通知", - "tabs_bar.search": "搜尋", "time_remaining.days": "剩餘 {number, plural, one {# 天} other {# 天}}", "time_remaining.hours": "剩餘 {number, plural, one {# 小時} other {# 小時}}", "time_remaining.minutes": "剩餘 {number, plural, one {# 分鐘} other {# 分鐘}}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 11c6747e36..e2c848f2b1 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -69,6 +69,7 @@ "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "載入此元件時發生錯誤。", "bundle_modal_error.retry": "重試", + "column.about": "About", "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", "column.community": "本站時間軸", @@ -221,14 +222,14 @@ "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳號的跟隨請求。", "generic.saved": "已儲存", - "getting_started.developers": "開發者", - "getting_started.directory": "個人檔案目錄", + "getting_started.directory": "目錄", "getting_started.documentation": "文件", + "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "開始使用", "getting_started.invite": "邀請使用者", - "getting_started.open_source_notice": "Mastodon 是開源軟體。您可以在 GitHub {github} 上貢獻或是回報問題。", "getting_started.privacy_policy": "隱私權政策", "getting_started.security": "帳號安全性設定", + "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而無需 {additional}", @@ -310,7 +311,8 @@ "mute_modal.duration": "持續時間", "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", - "navigation_bar.apps": "行動應用程式", + "navigation_bar.about": "About", + "navigation_bar.apps": "取得應用程式", "navigation_bar.blocks": "封鎖使用者", "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", @@ -324,7 +326,7 @@ "navigation_bar.filters": "靜音詞彙", "navigation_bar.follow_requests": "跟隨請求", "navigation_bar.follows_and_followers": "跟隨中與跟隨者", - "navigation_bar.info": "關於此伺服器", + "navigation_bar.info": "關於", "navigation_bar.keyboard_shortcuts": "快速鍵", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", @@ -334,6 +336,7 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", "navigation_bar.security": "安全性", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} 檢舉了 {target}", "notification.admin.sign_up": "{name} 已經註冊", "notification.favourite": "{name} 把您的嘟文加入了最愛", @@ -473,6 +476,12 @@ "search_results.statuses_fts_disabled": "「依內容搜尋嘟文」未在此 Mastodon 伺服器啟用。", "search_results.title": "搜尋:{q}", "search_results.total": "{count, number} 項結果", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "新增帳號", "sign_in_banner.sign_in": "登入", "sign_in_banner.text": "登入以追蹤個人檔案、主題標籤、最愛,分享和回覆嘟文,或以您其他伺服器之帳號進行互動:", @@ -538,7 +547,6 @@ "tabs_bar.home": "首頁", "tabs_bar.local_timeline": "本站", "tabs_bar.notifications": "通知", - "tabs_bar.search": "搜尋", "time_remaining.days": "剩餘 {number, plural, one {# 天} other {# 天}}", "time_remaining.hours": "剩餘 {number, plural, one {# 小時} other {# 小時}}", "time_remaining.minutes": "剩餘 {number, plural, one {# 分鐘} other {# 分鐘}}", diff --git a/config/locales/af.yml b/config/locales/af.yml index d69e6b92d1..082c1e3317 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -3,7 +3,6 @@ af: about: contact_unavailable: NVT continue_to_web: Gaan voort na web toepassing - discover_users: Verken gebruikers documentation: Dokumentasie federation_hint_html: Met 'n rekening op %{instance} sal jy in staat wees om mense op enige Mastodon en federasie bediener te volg. get_apps: Probeer 'n mobiele toepassing diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 691cc86890..ad19e8a7f4 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -1,7 +1,6 @@ --- ar: about: - about_hashtag_html: هذه منشورات متاحة للجمهور تحتوي على الكلمات الدلالية #%{hashtag}. يمكنك التفاعل معها إن كان لديك حساب في أي مكان على الفديفرس. about_mastodon_html: 'شبكة التواصل الإجتماعية المستقبَليّة: مِن دون إعلانات ، غير خاضعة لرقابة الشركات ، تصميم أخلاقي ولامركزية! بياناتكم مِلك لكم مع ماستدون!' about_this: عن مثيل الخادم هذا active_count_after: نشط @@ -10,14 +9,11 @@ ar: api: واجهة برمجة التطبيقات apps: تطبيقات الأجهزة المحمولة apps_platforms: استخدم ماستدون على iOS وأندرويد وأنظمة أخرى - browse_directory: تصفح دليل الصفحات التعريفية وصفّي بحسب الإهتمام - browse_local_posts: تصفح تيارًا مباشرًا مِن منشورات للعامة على هذا الخادم browse_public_posts: تصفح تيارًا مباشرًا مِن منشورات عامة على ماستدون contact: للتواصل معنا contact_missing: لم يتم تعيينه contact_unavailable: غير متوفر continue_to_web: المتابعة إلى تطبيق الويب - discover_users: اكتشف مستخدِمين documentation: الدليل federation_hint_html: بواسطة حساب في %{instance} ستتمكن من تتبع أناس في أي خادم ماستدون وأكثر. get_apps: جرّب تطبيقا على الموبايل @@ -661,9 +657,6 @@ ar: none: لا أحد يمكنه إنشاء حساب open: يمكن للجميع إنشاء حساب title: طريقة إنشاء الحسابات - show_known_fediverse_at_about_page: - desc_html: عند التعطيل، يُقيّد الخط الزمني العام المرتبط من صفحة الهبوط لعرض المحتوى المحلي فقط - title: إظهار الفديفرس الموحَّد في خيط المُعايَنة site_description: desc_html: فقرة تمهيدية على الصفحة الأولى. صف ميزات خادوم ماستدون هذا و ما يميّزه عن الآخرين. يمكنك استخدام علامات HTML ، ولا سيما <a> و <em>. title: وصف مثيل الخادوم @@ -921,10 +914,6 @@ ar: more_details_html: للمزيد مِن التفاصيل ، يرجى الإطلاع على سياسة الخصوصية. username_available: سيصبح اسم مستخدمك متوفرا ثانية username_unavailable: سيبقى اسم المستخدم الخاص بك غير متوفر - directories: - directory: سِجلّ الصفحات التعريفية - explanation: استكشف مستخدِمين آخرين حسب المواضيع التي تهمهم - explore_mastodon: استكشف %{title} disputes: strikes: action_taken: الإجراء المتخذ diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 6fc9065620..4ad5289dea 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -1,7 +1,6 @@ --- ast: about: - about_hashtag_html: Estos son los barritos públicos etiquetaos con #%{hashtag}. Pues interactuar con ellos si tienes una cuenta en cualesquier parte del fediversu. about_mastodon_html: 'La rede social del futuru: ¡ensin anuncios nin vixilancia, con un diseñu éticu y descentralizáu! Controla los tos datos con Mastodon.' about_this: Tocante a administered_by: 'Alministráu por:' @@ -11,7 +10,6 @@ ast: contact: Contautu contact_missing: Nun s'afitó contact_unavailable: N/D - discover_users: Usuarios nuevos documentation: Documentación federation_hint_html: Con una cuenta en %{instance} vas ser a siguir a persones de cualesquier sirvidor de Mastodon y facer más coses. get_apps: En preseos móviles @@ -212,10 +210,6 @@ ast: warning: email_contact_html: Si entá nun aportó, pues unviar un corréu a%{email} pa más ayuda more_details_html: Pa más detalles, mira la política de privacidá. - directories: - directory: Direutoriu de perfiles - explanation: y descubri a usuarios según los sos intereses - explore_mastodon: Esplora %{title} disputes: strikes: appeal_rejected: Refugóse l'apellación diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 23c11e5431..03b45dd438 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -9,13 +9,10 @@ bg: api: API apps: Мобилни приложения apps_platforms: Използвайте Mastodon от iOS, Android и други платформи - browse_directory: Разгледайте профилна директория и филтрирайте по интереси - browse_local_posts: Разгледайте поток от публични публикации на живо от този сървър browse_public_posts: Разгледайте поток от публични публикации на живо в Mastodon contact: За контакти contact_missing: Не е зададено contact_unavailable: Не е приложимо - discover_users: Открийте потребители documentation: Документация federation_hint_html: С акаунт в %{instance} ще можете да последвате хората от всеки сървър на Mastodon и отвъд. get_apps: Опитайте мобилно приложение diff --git a/config/locales/bn.yml b/config/locales/bn.yml index a30d933e59..92040135ef 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -1,7 +1,6 @@ --- bn: about: - about_hashtag_html: এগুলো প্রকাশ্য লেখা যার হ্যাশট্যাগ #%{hashtag}। আপনি এগুলোর ব্যবহার বা সাথে যুক্ত হতে পারবেন যদি আপনার যুক্তবিশ্বের কোথাও নিবন্ধন থেকে থাকে। about_mastodon_html: মাস্টাডন উন্মুক্ত ইন্টারনেটজালের নিয়ম এবং স্বাধীন ও মুক্ত উৎসের সফটওয়্যারের ভিত্তিতে তৈরী একটি সামাজিক যোগাযোগ মাধ্যম। এটি ইমেইলের মত বিকেন্দ্রীভূত। about_this: কি active_count_after: চালু @@ -10,13 +9,10 @@ bn: api: সফটওয়্যার তৈরীর নিয়ম (API) apps: মোবাইল অ্যাপ apps_platforms: মাস্টাডন আইওএস, এন্ড্রোইড বা অন্য মাধ্যমে ব্যবহার করুন - browse_directory: একটি ব্যবহারকারীদের তালিকা দেখুন এবং পছন্দ অনুসারে খুজুন - browse_local_posts: এই সার্ভার থেকে সর্বজনীন পোস্টগুলির একটি লাইভ স্ট্রিম ব্রাউজ করুন browse_public_posts: মাস্টাডনে নতুন প্রকাশ্য লেখাগুলো সরাসরি দেখুন contact: যোগাযোগ contact_missing: নেই contact_unavailable: প্রযোজ্য নয় - discover_users: ব্যবহারকারীদের দেখুন documentation: ব্যবহারবিলি federation_hint_html: "%{instance}তে একটা নিবন্ধন থাকলে আপনি যেকোনো মাস্টাডন বা এধরণের অন্যান্য সার্ভারের মানুষের সাথে যুক্ত হতে পারবেন ।" get_apps: মোবাইল এপ্প একটা ব্যবহার করতে পারেন diff --git a/config/locales/br.yml b/config/locales/br.yml index 0e9b9d1ee0..c2461f7732 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -7,7 +7,6 @@ br: apps: Arloadoù pellgomz apps_platforms: Ober get Mastodoñ àr iOS, Android ha savennoù arall contact: Darempred - discover_users: Dizoleiñ implijer·ien·ezed learn_more: Gouzout hiroc'h rules: Reolennoù ar servijer server_stats: 'Stadegoù ar servijer:' @@ -191,8 +190,6 @@ br: x_seconds: "%{count}eil" deletes: proceed: Dilemel ar gont - directories: - directory: Roll ar profiloù errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 3f381d76cb..a5215b3450 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1,7 +1,6 @@ --- ca: about: - about_hashtag_html: Aquestes són publicacions públiques etiquetades amb #%{hashtag}. Hi pots interactuar si tens un compte a qualsevol lloc del fedivers. about_mastodon_html: 'La xarxa social del futur: sense anuncis, sense vigilància corporativa, disseny ètic i descentralització. Tingues el control de les teves dades amb Mastodon!' about_this: Quant a active_count_after: actiu @@ -10,14 +9,11 @@ ca: api: API apps: Aplicacions mòbils apps_platforms: Utilitza Mastodon des d'iOS, Android i altres plataformes - browse_directory: Navega pel directori de perfils i filtra segons interessos - browse_local_posts: Navega per una transmissió en directe de les publicacions públiques d’aquest servidor browse_public_posts: Navega per una transmissió en directe de les publicacions públiques a Mastodon contact: Contacte contact_missing: No configurat contact_unavailable: N/D continue_to_web: Continua a l'aplicació web - discover_users: Descobrir usuaris documentation: Documentació federation_hint_html: Amb un compte de %{instance}, podràs seguir persones de qualsevol servidor Mastodon i de molts més. get_apps: Provar una aplicació mòbil @@ -783,9 +779,6 @@ ca: none: Ningú no pot registrar-se open: Qualsevol pot registrar-se title: Mode de registres - show_known_fediverse_at_about_page: - desc_html: Quan està desactivat, restringeix la línia de temps pública enllaçada des de la pàgina inicial a mostrar només contingut local - title: Inclou el contingut federat a la pàgina no autenticada de la línia de temps pública site_description: desc_html: Paràgraf introductori a la pàgina principal i en etiquetes meta. Pots utilitzar etiquetes HTML, en particular <a> i <em>. title: Descripció del servidor @@ -1109,10 +1102,6 @@ ca: more_details_html: Per a més detalls, llegeix la política de privadesa. username_available: El teu nom d'usuari esdevindrà altre cop disponible username_unavailable: El teu nom d'usuari quedarà inutilitzable - directories: - directory: Directori de perfils - explanation: Descobreix usuaris segons els teus interessos - explore_mastodon: Explora %{title} disputes: strikes: action_taken: Acció presa diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index fe2dffcc18..9809219183 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -1,7 +1,6 @@ --- ckb: about: - about_hashtag_html: ئەمانە توتی گشتین بە هەشتەگی گشتی #%{hashtag}}. گەر ئێوە لە هەر ڕاژەیەک هەژمارەتان بێت دەتوانیت لێرە بەم نووسراوانە هاوئاهەنگ بن. about_mastodon_html: 'تۆڕی کۆمەڵایەتی داهاتوو: هیچ ڕیکلامێک ، هیچ چاودێرییەکی کۆمپانیا ، دیزاینی ئەخلاقی و لامەرکەزی! خاوەنی داتاکانت نابێ لە ماستۆدۆن!' about_this: دەربارە active_count_after: چالاک @@ -10,13 +9,10 @@ ckb: api: API apps: ئەپەکانی مۆبایل apps_platforms: بەکارهێنانی ماستۆدۆن لە iOS، ئەندرۆید و سەکۆکانی تر - browse_directory: گەڕان لە ڕێبەرێکی پرۆفایل و پاڵاوتن بەپێی بەرژەوەندیەکان - browse_local_posts: گەڕانی ڕاستەوخۆ لە نووسراوە گشتیەکان لەم ڕاژەوە browse_public_posts: گەڕان لە جۆگەیەکی زیندووی نووسراوە گشتیەکان لەسەر ماستۆدۆن contact: بەردەنگ contact_missing: سازنەکراوە contact_unavailable: بوونی نییە - discover_users: پەیداکردنی بەکارهێنەران documentation: بەڵگەکان federation_hint_html: بە هەژمارەیەک لەسەر %{instance} دەتوانیت شوێن خەڵک بکەویت لەسەر هەرڕاژەیەکی ماستۆدۆن. get_apps: ئەپێکی تەلەفۆن تاقی بکەرەوە @@ -617,9 +613,6 @@ ckb: none: کەس ناتوانێت خۆی تۆمار بکات open: هەر کەسێک دەتوانێت خۆی تۆمار بکات title: مەرجی تۆمارکردن - show_known_fediverse_at_about_page: - desc_html: کاتێک ناچالاک کرا، هێڵی کاتی گشتی کە بەستراوەتەوە بە لاپەڕەی ئێستا سنووردار دەبن، تەنها ناوەڕۆکی ناوخۆیی پیشاندەدرێن - title: نیشاندانی ڕاژەکانی دیکە لە پێشنەمایەشی ئەم ڕاژە site_description: desc_html: کورتە باسیک دەربارەی API، دەربارەی ئەوە چ شتێک دەربارەی ئەم ڕاژەی ماستۆدۆن تایبەتە یان هەر شتێکی گرینگی دیکە. دەتوانن HTML بنووسن، بەتایبەت <a> وە <em>. title: دەربارەی ئەم ڕاژە @@ -802,10 +795,6 @@ ckb: more_details_html: بۆ زانیاری زیاتر، پاراستنی نهێنیەکان ببینە. username_available: ناوی تێپەڕبوونت دووبارە بەردەست دەبێت username_unavailable: ناوی تێپەڕبوونت بەردەست نییە - directories: - directory: ڕێنیشاندەرێکی پرۆفایل - explanation: دۆزینەوەی بەکارهێنەران لەسەر بنەمای بەرژەوەندییەکانیان - explore_mastodon: گەڕان لە %{title} disputes: strikes: title_actions: diff --git a/config/locales/co.yml b/config/locales/co.yml index bb03394403..ef8251d83c 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -1,7 +1,6 @@ --- co: about: - about_hashtag_html: Quessi sò statuti pubblichi taggati cù #%{hashtag}. Pudete interagisce cù elli sì voi avete un contu in qualche parte di u fediversu. about_mastodon_html: 'A rete suciale di u futuru: micca pubblicità, micca surveglianza, cuncezzione etica, è dicentralizazione! Firmate in cuntrollu di i vostri dati cù Mastodon!' about_this: À prupositu active_count_after: attivi @@ -10,13 +9,10 @@ co: api: API apps: Applicazione per u telefuninu apps_platforms: Utilizà Mastodon dapoi à iOS, Android è altre piattaforme - browse_directory: Navigà un'annuariu di i prufili è filtra per interessi - browse_local_posts: Navigà un flussu di statuti pubblichi da stu servore browse_public_posts: Navigà un flussu di i statuti pubblichi nant'à Mastodon contact: Cuntattu contact_missing: Mancante contact_unavailable: Micca dispunibule - discover_users: Scopre utilizatori documentation: Ducumentazione federation_hint_html: Cù un contu nant'à %{instance} puderete siguità ghjente da tutti i servori Mastodon è ancu più d'altri. get_apps: Pruvà un'applicazione di telefuninu @@ -575,9 +571,6 @@ co: none: Nimu ùn pò arregistrassi open: Tutt'ognunu pò arregistrassi title: Modu d'arregistramenti - show_known_fediverse_at_about_page: - desc_html: Quandu ghjè selezziunatu, statuti di tuttu l’istanze cunnisciute saranu affissati indè a vista di e linee. Altrimente soli i statuti lucali saranu mustrati - title: Vedde tuttu u fediverse cunnisciutu nant’a vista di e linee site_description: desc_html: Paragrafu di prisentazione nant’a pagina d’accolta. Parlate di cio chì rende stu servore speziale, o d'altre cose impurtante. Pudete fà usu di marchi HTML, in particulare <a> è <em>. title: Discrizzione di u servore @@ -782,10 +775,6 @@ co: more_details_html: Per più di ditagli, videte a pulitica di vita privata. username_available: U vostru cugnome riduvinterà dispunibule username_unavailable: U vostru cugnome ùn sarà sempre micca dispunibule - directories: - directory: Annuariu di i prufili - explanation: Scopre utilizatori à partesi di i so centri d'interessu - explore_mastodon: Scopre à %{title} domain_validator: invalid_domain: ùn hè micca un nome di duminiu currettu errors: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index fbde9e051e..fe5cc67878 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1,7 +1,6 @@ --- cs: about: - about_hashtag_html: Tohle jsou veřejné příspěvky označené hashtagem #%{hashtag}. Pokud máte účet kdekoliv ve fedivesmíru, můžete s nimi interagovat. about_mastodon_html: 'Sociální síť budoucnosti: žádné reklamy, žádné korporátní sledování, etický design a decentralizace! S Mastodonem vlastníte svoje data!' about_this: O tomto serveru active_count_after: aktivních @@ -10,14 +9,11 @@ cs: api: API apps: Mobilní aplikace apps_platforms: Používejte Mastodon na iOS, Androidu a dalších platformách - browse_directory: Prozkoumejte adresář profilů a filtrujte dle zájmů - browse_local_posts: Prozkoumejte živý proud veřejných příspěvků z tohoto serveru browse_public_posts: Prozkoumejte živý proud veřejných příspěvků na Mastodonu contact: Kontakt contact_missing: Nenastaveno contact_unavailable: Neuvedeno continue_to_web: Pokračovat do webové aplikace - discover_users: Objevujte uživatele documentation: Dokumentace federation_hint_html: S účtem na serveru %{instance} můžete sledovat lidi na jakémkoliv ze serverů Mastodon a dalších službách. get_apps: Vyzkoušejte mobilní aplikaci @@ -807,9 +803,6 @@ cs: none: Nikdo se nemůže registrovat open: Kdokoliv se může registrovat title: Režim registrací - show_known_fediverse_at_about_page: - desc_html: Je-li vypnuto, bude veřejná časová osa, na kterou odkazuje hlavní stránka serveru, omezena pouze na místní obsah - title: Zahrnout federovaný obsah na neautentizované stránce veřejné časové osy site_description: desc_html: Úvodní odstavec v API. Popište, čím se tento server Mastodon odlišuje od ostatních, a cokoliv jiného, co je důležité. Můžete zde používat HTML značky, hlavně <a> a <em>. title: Popis serveru @@ -1141,10 +1134,6 @@ cs: more_details_html: Podrobnosti najdete v zásadách ochrany osobních údajů. username_available: Vaše uživatelské jméno bude opět dostupné username_unavailable: Vaše uživatelské jméno zůstane nedostupné - directories: - directory: Adresář profilů - explanation: Objevujte uživatele podle jejich zájmů - explore_mastodon: Prozkoumejte %{title} disputes: strikes: action_taken: Přijaté opatření diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 86a134a263..cd29f215d4 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1,7 +1,6 @@ --- cy: about: - about_hashtag_html: Dyma dŵtiau cyhoeddus wedi eu tagio gyda #%{hashtag}. Gallwch ryngweithio gyda nhw os oes gennych gyfrif yn unrhyw le yn y ffeddysawd. about_mastodon_html: Mae Mastodon yn rwydwaith cymdeithasol sy'n seiliedig ar brotocolau gwe a meddalwedd cod agored rhad ac am ddim. Yn debyg i e-bost mae'n ddatganoledig. about_this: Ynghylch active_count_after: yn weithredol @@ -10,14 +9,11 @@ cy: api: API apps: Apiau symudol apps_platforms: Defnyddio Mastodon o iOS, Android a phlatfformau eraill - browse_directory: Pori cyfeiriadur proffil a hidlo wrth diddordebau - browse_local_posts: Pori ffrwd byw o byst cyhoeddus o'r gweinydd hyn browse_public_posts: Pori ffrwd byw o byst cyhoeddus ar Fastodon contact: Cyswllt contact_missing: Heb ei osod contact_unavailable: Ddim yn berthnasol continue_to_web: Parhau i app gwe - discover_users: Darganfod defnyddwyr documentation: Dogfennaeth federation_hint_html: Gyda cyfrif ar %{instance}, gallwch dilyn pobl ar unrhyw gweinydd Mastodon, a thu hwnt. get_apps: Rhowch gynnig ar ap dyfeis symudol @@ -484,9 +480,6 @@ cy: none: Ni all unrhyw un cofrestru open: Gall unrhyw un cofrestru title: Modd cofrestriadau - show_known_fediverse_at_about_page: - desc_html: Wedi'i ddewis, bydd yn dangos rhagolwg o dŵtiau o'r holl ffedysawd. Fel arall bydd ond yn dangos tŵtiau lleol. - title: Dangos ffedysawd hysbys ar ragolwg y ffrwd site_description: desc_html: Paragraff agoriadol ar y dudalen flaen. Disgrifiwch yr hyn sy'n arbennig am y gweinydd Mastodon hwn ac unrhywbeth arall o bwys. Mae modd defnyddio tagiau HTML <a> a <em>. title: Disgrifiad achos @@ -655,10 +648,6 @@ cy: more_details_html: Am fwy o fanylion, gwelwch y polisi preifatrwydd. username_available: Bydd eich enw defnyddiwr ar gael eto username_unavailable: Ni fydd eich enw defnyddiwr ar gael - directories: - directory: Cyfeiriadur proffil - explanation: Darganfod defnyddwyr yn ôl eu diddordebau - explore_mastodon: Archwilio %{title} disputes: strikes: approve_appeal: Cymeradwyo'r apêl diff --git a/config/locales/da.yml b/config/locales/da.yml index 3379b82c3b..c4ff355503 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1,7 +1,6 @@ --- da: about: - about_hashtag_html: Disse er offentlige indlæg tagget med #%{hashtag}, som man kan interagere med, hvis man har en konto hvor som helst i fediverset. about_mastodon_html: 'Fremtidens sociale netværk: Ingen annoncer, ingen virksomhedsovervågning, etisk design og decentralisering! Vær ejer af egne data med Mastodon!' about_this: Om active_count_after: aktive @@ -10,14 +9,11 @@ da: api: API apps: Mobil-apps apps_platforms: Benyt Mastodon på Android, iOS og andre platforme - browse_directory: Gennemse en profilmappe og filtrér efter interesser - browse_local_posts: Gennemse en live stream af offentlige indlæg fra denne server browse_public_posts: Gennemse en live stream af offentlige indlæg på Mastodon contact: Kontakt contact_missing: Ikke angivet contact_unavailable: Utilgængelig continue_to_web: Fortsæt til web-app - discover_users: Find brugere documentation: Dokumentation federation_hint_html: Vha. en konto på %{instance} vil man kunne følge andre på en hvilken som helst Mastodon-server. get_apps: Prøv en mobil-app @@ -782,9 +778,6 @@ da: none: Ingen kan tilmelde sig open: Alle kan tilmelde sig title: Tilmeldingstilstand - show_known_fediverse_at_about_page: - desc_html: Når deaktiveret, begrænses den fra indgangssiden linkede offentlige tidslinje til kun at vise lokalt indhold - title: Medtag federeret indhold på ikke-godkendt, offentlig tidslinjeside site_description: desc_html: Introduktionsafsnit på API'en. Beskriv, hvad der gør denne Mastodonserver speciel samt alt andet vigtigt. HTML-tags kan bruges, især <a> og <em>. title: Serverbeskrivelse @@ -1108,10 +1101,6 @@ da: more_details_html: For yderligere oplysningerer, tjek fortrolighedspolitikken. username_available: Dit brugernavn vil blive tilgængeligt igen username_unavailable: Dit brugernavn vil forblive utilgængeligt - directories: - directory: Profilliste - explanation: Find brugere baseret på deres interesser - explore_mastodon: Uforsk %{title} disputes: strikes: action_taken: Handling foretaget diff --git a/config/locales/de.yml b/config/locales/de.yml index e47db036f0..1d771a6df2 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1,7 +1,6 @@ --- de: about: - about_hashtag_html: Das sind öffentliche Beiträge, die mit #%{hashtag} getaggt wurden. Wenn du irgendwo im Födiversum ein Konto besitzt, kannst du mit ihnen interagieren. about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail! about_this: Über diesen Server active_count_after: aktiv @@ -10,14 +9,11 @@ de: api: API apps: Mobile Apps apps_platforms: Benutze Mastodon auf iOS, Android und anderen Plattformen - browse_directory: Durchsuche das Profilverzeichnis und filtere nach Interessen - browse_local_posts: Durchsuche einen Live-Stream öffentlicher Beiträge dieses Servers browse_public_posts: Stöbere durch öffentliche Beiträge auf Mastodon contact: Kontakt contact_missing: Nicht angegeben contact_unavailable: Nicht verfügbar continue_to_web: Weiter zur Web-App - discover_users: Benutzer entdecken documentation: Dokumentation federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein, Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen. get_apps: Versuche eine mobile App @@ -783,9 +779,6 @@ de: none: Niemand kann sich registrieren open: Jeder kann sich registrieren title: Registrierungsmodus - show_known_fediverse_at_about_page: - desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Födiversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt. - title: Zeige eine öffentliche Zeitleiste auf der Einstiegsseite site_description: desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diesen Mastodon-Server ausmacht. Du kannst HTML-Tags benutzen, insbesondere <a> und <em>. title: Beschreibung des Servers @@ -1109,10 +1102,6 @@ de: more_details_html: Weitere Details findest du in der Datenschutzrichtlinie. username_available: Dein Benutzername wird wieder verfügbar username_unavailable: Dein Benutzername bleibt nicht verfügbar - directories: - directory: Profilverzeichnis - explanation: Entdecke Benutzer basierend auf deren Interessen - explore_mastodon: Entdecke %{title} disputes: strikes: action_taken: Maßnahme ergriffen diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml index c436536628..41868a823a 100644 --- a/config/locales/devise.fr.yml +++ b/config/locales/devise.fr.yml @@ -96,7 +96,7 @@ fr: update_needs_confirmation: Votre compte a bien été mis à jour, mais nous devons vérifier votre nouvelle adresse courriel. Merci de vérifier vos courriels et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse. Si vous n'avez pas reçu le courriel, vérifiez votre dossier de spams. updated: Votre compte a été modifié avec succès. sessions: - already_signed_out: Déconnecté·e. + already_signed_out: Déconnecté·e avec succès. signed_in: Connecté·e. signed_out: Déconnecté·e. unlocks: diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index dc87d8ddb4..e2f7bafd1d 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -9,7 +9,7 @@ zh-CN: already_authenticated: 你已登录。 inactive: 你还没有激活帐户。 invalid: "%{authentication_keys} 无效或密码错误。" - last_attempt: 你只有最后一次尝试机会,若未通过,账号将被锁定。 + last_attempt: 你只有最后一次尝试机会,若未通过,帐号将被锁定。 locked: 你的帐户已被锁定。 not_found_in_database: "%{authentication_keys}或密码错误。" pending: 你的账号仍在审核中。 @@ -20,7 +20,7 @@ zh-CN: confirmation_instructions: action: 验证电子邮件地址 action_with_app: 确认并返回%{app} - explanation: 你在 %{host} 上使用此电子邮箱地址创建了一个账号。点击下面的链接即可激活账号。如果你没有创建账号,请忽略此邮件。 + explanation: 你在 %{host} 上使用此电子邮箱地址创建了一个帐号。点击下面的链接即可激活帐号。如果你没有创建帐号,请忽略此邮件。 explanation_when_pending: 你用这个电子邮件申请了在 %{host} 注册。在确认电子邮件地址之后,我们会审核你的申请。在此之前,你不能登录。如果你的申请被驳回,你的数据会被移除,因此你无需再采取任何行动。如果申请人不是你,请忽略这封邮件。 extra_html: 请记得阅读本实例的相关规定我们的使用条款。 subject: Mastodon:来自 %{instance} 的确认指引 diff --git a/config/locales/el.yml b/config/locales/el.yml index 7b23b5f9f9..6f42aafd81 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -1,7 +1,6 @@ --- el: about: - about_hashtag_html: Αυτά είναι κάποια από τα δημόσια τουτ σημειωμένα με #%{hashtag}. Μπορείς να αλληλεπιδράσεις με αυτά αν έχεις λογαριασμό οπουδήποτε στο fediverse. about_mastodon_html: 'Το κοινωνικό δίκτυο του μέλλοντος: Χωρίς διαφημίσεις, χωρίς εταιρίες να σε κατασκοπεύουν, ηθικά σχεδιασμένο και αποκεντρωμένο! Με το Mastodon τα δεδομένα σου είναι πραγματικά δικά σου!' about_this: Σχετικά active_count_after: ενεργοί @@ -10,13 +9,10 @@ el: api: API apps: Εφαρμογές κινητών apps_platforms: Χρησιμοποίησε το Mastodon από το iOS, το Android και αλλού - browse_directory: Ξεφύλλισε τον κατάλογο χρηστών και ψάξε ανά ενδιαφέροντα - browse_local_posts: Ξεφύλλισε τη ζωντανή ροή αυτού του διακομιστή browse_public_posts: Ξεφύλλισε τη ζωντανή ροή του Mastodon contact: Επικοινωνία contact_missing: Δεν έχει οριστεί contact_unavailable: Μη διαθέσιμο - discover_users: Ανακάλυψε χρήστες documentation: Τεκμηρίωση federation_hint_html: Με ένα λογαριασμό στο %{instance} θα μπορείς να ακολουθείς ανθρώπους σε οποιοδήποτε κόμβο Mastodon αλλά και παραπέρα. get_apps: Δοκίμασε μια εφαρμογή κινητού @@ -556,9 +552,6 @@ el: none: Δεν μπορεί να εγγραφεί κανείς open: Μπορεί να εγγραφεί ο οποιοσδήποτε title: Μέθοδος εγγραφής - show_known_fediverse_at_about_page: - desc_html: Όταν αντιστραφεί, θα δείχνει τα τουτ από όλο το γνωστό fediverse στην προεπισκόπηση. Διαφορετικά θα δείχνει μόνο τοπικά τουτ. - title: Εμφάνιση του γνωστού fediverse στην προεπισκόπηση ροής site_description: desc_html: Εισαγωγική παράγραφος στην αρχική σελίδα. Περιέγραψε τι κάνει αυτό τον διακομιστή Mastodon διαφορετικό και ό,τι άλλο ενδιαφέρον. Μπορείς να χρησιμοποιήσεις HTML tags, συγκεκριμένα < a> και < em>. title: Περιγραφή κόμβου @@ -761,10 +754,6 @@ el: more_details_html: Για περισσότερες πληροφορίες, δες την πολιτική απορρήτου. username_available: Το όνομα χρήστη σου θα γίνει ξανά διαθέσιμο username_unavailable: Το όνομα χρήστη σου θα παραμείνει μη διαθέσιμο - directories: - directory: Κατάλογος λογαριασμών - explanation: Βρες χρήστες βάσει των ενδιαφερόντων τους - explore_mastodon: Εξερεύνησε το %{title} disputes: strikes: approve_appeal: Έγκριση έφεσης diff --git a/config/locales/eo.yml b/config/locales/eo.yml index c8a7534acc..91954dabfb 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -1,7 +1,6 @@ --- eo: about: - about_hashtag_html: Ĉi tiuj estas la publikaj mesaĝoj markitaj per #%{hashtag}. Vi povas interagi kun ili se vi havas konton ie ajn en la fediverse. about_mastodon_html: 'Mastodon estas socia retejo de la estonteco: sen reklamo, sen kompania gvato, etika dezajno kaj malcentraligo! Vi regu viajn datumojn kun Mastodon!' about_this: Pri active_count_after: aktivaj @@ -10,14 +9,11 @@ eo: api: API apps: Poŝtelefonaj aplikaĵoj apps_platforms: Uzu Mastodon de iOS, Android, kaj aliaj substratoj - browse_directory: Esplori la profilujon kaj filtri en interesoj - browse_local_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon browse_public_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon contact: Kontakto contact_missing: Ne ŝargita contact_unavailable: Ne disponebla continue_to_web: Daŭrigi al la retaplikaĵo - discover_users: Malkovri uzantojn documentation: Dokumentado federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter. get_apps: Provu telefonan aplikaĵon @@ -573,9 +569,6 @@ eo: none: Neniu povas aliĝi open: Iu povas aliĝi title: Reĝimo de registriĝo - show_known_fediverse_at_about_page: - desc_html: Kiam ŝaltita, ĝi montros mesaĝojn de la tuta konata fediverse antaŭvide. Aliokaze, ĝi montros nur lokajn mesaĝojn. - title: Inkluzivi frataran enhavon en la neaŭtentigita publika antaŭmontro de templinio site_description: desc_html: Enkonduka alineo en la ĉefpaĝo. Priskribu la unikaĵojn de ĉi tiu nodo de Mastodon, kaj ĉiujn aliajn gravaĵojn. Vi povas uzi HTML-etikedojn, kiel <a> kaj <em>. title: Priskribo de la servilo @@ -790,10 +783,6 @@ eo: more_details_html: Por pli da detaloj, vidi la privatecan politikon. username_available: Via uzantnomo iĝos denove disponebla username_unavailable: Via uzantnomo restos nedisponebla - directories: - directory: Profilujo - explanation: Malkovru uzantojn per iliaj interesoj - explore_mastodon: Esplori %{title} disputes: strikes: created_at: Datita diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 469ca27d9c..d76d76c430 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1,7 +1,6 @@ --- es-AR: about: - about_hashtag_html: Estos son mensajes públicos etiquetados con #%{hashtag}. Si tenés una cuenta en cualquier parte del fediverso, podés interactuar con ellos. about_mastodon_html: 'La red social del futuro: ¡sin publicidad, sin vigilancia corporativa, con diseño ético y descentralización! ¡Con Mastodon vos sos el dueño de tus datos!' about_this: Acerca de Mastodon active_count_after: activo @@ -10,14 +9,11 @@ es-AR: api: API apps: Aplicaciones móviles apps_platforms: Usá Mastodon desde iOS, Android y otras plataformas - browse_directory: Explorá el directorio de perfiles y filtrá por intereses - browse_local_posts: Explorá un flujo en tiempo real de mensajes públicos en este servidor browse_public_posts: Explorá un flujo en tiempo real de mensajes públicos en Mastodon contact: Contacto contact_missing: No establecido contact_unavailable: No disponible continue_to_web: Continuar con la aplicación web - discover_users: Descubrí usuarios documentation: Documentación federation_hint_html: Con una cuenta en %{instance} vas a poder seguir a cuentas de cualquier servidor de Mastodon y más allá. get_apps: Probá una aplicación móvil @@ -783,9 +779,6 @@ es-AR: none: Nadie puede registrarse open: Cualquiera puede registrarse title: Modo de registros - show_known_fediverse_at_about_page: - desc_html: Cuando está deshabilitado, restringe la línea temporal pública enlazada desde la página de inicio para mostrar sólo contenido local - title: Incluir contenido federado en la página de línea temporal pública no autenticada site_description: desc_html: Párrafo introductorio en la API. Describe qué hace especial a este servidor de Mastodon y todo lo demás que sea importante. Podés usar etiquetas HTML, en particular <a> y <em>. title: Descripción del servidor @@ -1109,10 +1102,6 @@ es-AR: more_details_html: Para más detalles, leé la política de privacidad. username_available: Tu nombre de usuario volverá a estar disponible username_unavailable: Tu nombre de usuario no estará disponible - directories: - directory: Directorio de perfiles - explanation: Descubrí usuarios basados en sus intereses - explore_mastodon: Navegá %{title} disputes: strikes: action_taken: Acción tomada diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 05cfccf443..482acbe21e 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1,7 +1,6 @@ --- es-MX: about: - about_hashtag_html: Estos son toots públicos etiquetados con #%{hashtag}. Puedes interactuar con ellos si tienes una cuenta en cualquier parte del fediverso. about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' about_this: Información active_count_after: activo @@ -10,14 +9,11 @@ es-MX: api: API apps: Aplicaciones móviles apps_platforms: Utiliza Mastodon desde iOS, Android y otras plataformas - browse_directory: Navega por el directorio de perfiles y filtra por intereses - browse_local_posts: Explora en vivo los posts públicos de este servidor browse_public_posts: Navega por un transmisión en vivo de publicaciones públicas en Mastodon contact: Contacto contact_missing: No especificado contact_unavailable: No disponible continue_to_web: Continuar a la aplicación web - discover_users: Descubrir usuarios documentation: Documentación federation_hint_html: Con una cuenta en %{instance} usted podrá seguir a las personas en cualquier servidor de Mastodon y más allá. get_apps: Probar una aplicación móvil @@ -783,9 +779,6 @@ es-MX: none: Nadie puede registrarse open: Cualquiera puede registrarse title: Modo de registros - show_known_fediverse_at_about_page: - desc_html: Cuando esté activado, se mostrarán toots de todo el fediverso conocido en la vista previa. En otro caso, se mostrarán solamente toots locales. - title: Mostrar fediverso conocido en la vista previa de la historia site_description: desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a> y <em>. title: Descripción de instancia @@ -1109,10 +1102,6 @@ es-MX: more_details_html: Para más detalles, ver la política de privacidad. username_available: Tu nombre de usuario volverá a estar disponible username_unavailable: Tu nombre de usuario no estará disponible - directories: - directory: Directorio de perfiles - explanation: Descubre usuarios según sus intereses - explore_mastodon: Explorar %{title} disputes: strikes: action_taken: Acción realizada diff --git a/config/locales/es.yml b/config/locales/es.yml index 874f0cc492..5cbf1784ec 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1,7 +1,6 @@ --- es: about: - about_hashtag_html: Estos son publicaciones públicas etiquetadas con #%{hashtag}. Puedes interactuar con ellas si tienes una cuenta en cualquier parte del fediverso. about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' about_this: Información active_count_after: activo @@ -10,14 +9,11 @@ es: api: API apps: Aplicaciones móviles apps_platforms: Utiliza Mastodon desde iOS, Android y otras plataformas - browse_directory: Navega por el directorio de perfiles y filtra por intereses - browse_local_posts: Explora en vivo los posts públicos de este servidor browse_public_posts: Navega por un transmisión en vivo de publicaciones públicas en Mastodon contact: Contacto contact_missing: No especificado contact_unavailable: No disponible continue_to_web: Continuar con la aplicación web - discover_users: Descubrir usuarios documentation: Documentación federation_hint_html: Con una cuenta en %{instance} usted podrá seguir a las personas en cualquier servidor de Mastodon y más allá. get_apps: Probar una aplicación móvil @@ -783,9 +779,6 @@ es: none: Nadie puede registrarse open: Cualquiera puede registrarse title: Modo de registros - show_known_fediverse_at_about_page: - desc_html: Cuando esté desactivado, se mostrarán solamente publicaciones locales en la línea temporal pública - title: Incluye contenido federado en la página de línea de tiempo pública no autenticada site_description: desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a> y <em>. title: Descripción de instancia @@ -1109,10 +1102,6 @@ es: more_details_html: Para más detalles, ver la política de privacidad. username_available: Tu nombre de usuario volverá a estar disponible username_unavailable: Tu nombre de usuario no estará disponible - directories: - directory: Directorio de perfiles - explanation: Descubre usuarios según sus intereses - explore_mastodon: Explorar %{title} disputes: strikes: action_taken: Acción realizada diff --git a/config/locales/et.yml b/config/locales/et.yml index f6df72ee01..c43224f652 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -1,7 +1,6 @@ --- et: about: - about_hashtag_html: Need on avalikud tuututused sildistatud sildiga #%{hashtag}. Te saate suhelda nendega, kui Teil on konto üks kõik kus terves fediversumis. about_mastodon_html: 'Tuleviku sotsiaalvõrgustik: Reklaamivaba, korporatiivse järelvalveta, eetiline kujundus ning detsentraliseeritus! Oma enda andmeid Mastodonis!' about_this: Meist active_count_after: aktiivne @@ -10,13 +9,10 @@ et: api: API apps: Mobiilirakendused apps_platforms: Kasuta Mastodoni iOS-is, Androidis ja teistel platvormidel - browse_directory: Sirvi profiilide kataloogi ja filtreeri huvide alusel - browse_local_posts: Sirvi reaalajas voogu avalikest postitustest sellest serverist browse_public_posts: Sirvi reaalajas voogu avalikest postitustest Mastodonis contact: Kontakt contact_missing: Määramata contact_unavailable: Pole saadaval - discover_users: Avasta kasutajaid documentation: Dokumentatsioon federation_hint_html: Kui Teil on kasutaja %{instance}-is, saate Te jälgida inimesi üks kõik millisel Mastodoni serveril ja kaugemalgi. get_apps: Proovi mobiilirakendusi @@ -437,9 +433,6 @@ et: none: Keegi ei saa kontoid luua open: Kõik võivad kontoid luua title: Registreerimisrežiim - show_known_fediverse_at_about_page: - desc_html: Kui lubatud, näitab kõiki teatud fediversumi tuututusi. Vastasel juhul näidatakse ainult kohalike tuututusi. - title: Näita teatud fediversumit ajajoone eelvaates site_description: desc_html: Sissejuhatuslik lõik API kohta. Kirjelda, mis teeb selle Mastodoni serveri eriliseks ja ka muud tähtsat. Te saate kasutada HTMLi silte, peamiselt <a> ja <em>. title: Serveri kirjeldus @@ -606,10 +599,6 @@ et: more_details_html: Rohkemate detailide jaoks palun lugege privaatsuspoliitikat. username_available: Teie kasutajanimi muutub uuesti kasutatavaks username_unavailable: Teie kasutajanimi jääb mitte kasutatavaks - directories: - directory: Profiilikataloog - explanation: Avasta kasutajaid nende huvide põhjal - explore_mastodon: Avasta %{title} domain_validator: invalid_domain: ei ole sobiv domeeni nimi errors: diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 9d783724cb..92ec38cf32 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -1,7 +1,6 @@ --- eu: about: - about_hashtag_html: Hauek #%{hashtag} traola duten bidalketa publikoak dira. Fedibertsoko edozein kontu baduzu haiekin elkarrekintza izan dezakezu. about_mastodon_html: 'Etorkizuneko sare soziala: ez iragarkirik eta ez zelatatze korporatiborik, diseinu etikoa eta deszentralizazioa! Izan zure datuen jabea Mastodonekin!' about_this: Honi buruz active_count_after: aktibo @@ -10,14 +9,11 @@ eu: api: APIa apps: Aplikazio mugikorrak apps_platforms: Erabili Mastodon, iOS, Android eta beste plataformetatik - browse_directory: Arakatu profilen direktorio bat eta iragazi interesen arabera - browse_local_posts: Arakatu zerbitzari honetako bidalketa publikoen zuzeneko jario bat browse_public_posts: Arakatu Mastodoneko bidalketa publikoen zuzeneko jario bat contact: Kontaktua contact_missing: Ezarri gabe contact_unavailable: E/E continue_to_web: Jarraitu web aplikaziora - discover_users: Aurkitu erabiltzaileak documentation: Dokumentazioa federation_hint_html: "%{instance} instantzian kontu bat izanda edozein Mastodon zerbitzariko jendea jarraitu ahal izango duzu, eta harago ere." get_apps: Probatu mugikorrerako aplikazio bat @@ -670,9 +666,6 @@ eu: none: Ezin du inork izena eman open: Edonork eman dezake izena title: Erregistratzeko modua - show_known_fediverse_at_about_page: - desc_html: Txandakatzean, fedibertso ezagun osoko tootak bistaratuko ditu aurrebistan. Bestela, toot lokalak besterik ez ditu erakutsiko - title: Erakutsi fedibertsu ezagun osoko denbora-lerroa aurrebistan site_description: desc_html: Azaleko orrian agertuko den sarrera paragrafoa. Azaldu zerk egiten duen berezi Mastodon zerbitzari hau eta garrantzizko beste edozer. HTML etiketak erabili ditzakezu, zehazki <a> eta <em>. title: Zerbitzariaren deskripzioa @@ -934,10 +927,6 @@ eu: more_details_html: Xehetasun gehiagorako, ikusi pribatutasun politika. username_available: Zure erabiltzaile-izena berriro eskuragarri egongo da username_unavailable: Zure erabiltzaile-izena ez da eskuragarri egongo - directories: - directory: Profilen direktorioa - explanation: Deskubritu erabiltzaileak interesen arabera - explore_mastodon: Esploratu %{title} disputes: strikes: appeal: Apelazioa diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 39424f3d6a..5ce1b32e9f 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -1,7 +1,6 @@ --- fa: about: - about_hashtag_html: این‌ها نوشته‌های عمومی هستند که برچسب (هشتگ) #%{hashtag} را دارند. اگر شما روی هر کارسازی حساب داشته باشید می‌توانید به این نوشته‌ها واکنش نشان دهید. about_mastodon_html: 'شبکهٔ اجتماعی آینده: بدون تبلیغات، بدون شنود از طرف شرکت‌ها، طراحی اخلاق‌مدار، و معماری غیرمتمرکز! با ماستودون صاحب داده‌های خودتان باشید!' about_this: درباره active_count_after: فعّال @@ -10,14 +9,11 @@ fa: api: رابط برنامه‌نویسی کاربردی apps: اپ‌های موبایل apps_platforms: ماستودون را در iOS، اندروید، و سایر سیستم‌ها داشته باشید - browse_directory: شاخهٔ نمایه‌ای را مرور کرده و بر حسب علاقه، بپالایید - browse_local_posts: جریانی زنده از فرسته‌های عمومی این کارساز را ببینید browse_public_posts: جریانی زنده از فرسته‌های عمومی روی ماستودون را ببینید contact: تماس contact_missing: تنظیم نشده contact_unavailable: موجود نیست continue_to_web: در کارهٔ وب ادامه دهید - discover_users: یافتن کاربران documentation: مستندات federation_hint_html: با حسابی روی %{instance} می‌توانید افراد روی هر کارساز ماستودون و بیش از آن را پی بگیرید. get_apps: یک اپ موبایل را بیازمایید @@ -650,9 +646,6 @@ fa: none: کسی نمی‌تواند ثبت نام کند open: همه می‌توانند ثبت نام کنند title: شرایط ثبت نام - show_known_fediverse_at_about_page: - desc_html: اگر از کار انداخته شود، خط‌زمانی همگانی را محدود می‌کند؛ تا فقط محتوای محلّی را نمایش دهد. - title: نمایش سرورهای دیگر در پیش‌نمایش این سرور site_description: desc_html: معرفی کوتاهی دربارهٔ رابط برنامه‌نویسی کاربردی. دربارهٔ این که چه چیزی دربارهٔ این کارساز ماستودون ویژه است یا هر چیز مهم دیگری بنویسید. می‌توانید HTML بنویسید، به‌ویژه <a> و <em>. title: دربارهٔ این سرور @@ -891,10 +884,6 @@ fa: more_details_html: برای اطلاعات بیشتر سیاست رازداری را ببینید. username_available: نام کاربری شما دوباره در دسترس خواهد بود username_unavailable: نام کاربری شما برای دیگران غیرقابل دسترس خواهد ماند - directories: - directory: شاخهٔ نمایه - explanation: کاربران را بر اساس علاقه‌مندی‌هایشان بیابید - explore_mastodon: گشت و گذار در %{title} disputes: strikes: appeal: درخواست تجدیدنظر diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 1416c12501..e9dfe0edbb 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1,7 +1,6 @@ --- fi: about: - about_hashtag_html: Nämä julkiset julkaisut on merkitty hastagilla #%{hashtag}. Voit vastata niihin, jos sinulla on tili jossain päin fediversumia. about_mastodon_html: 'Tulevaisuuden sosiaalinen verkosto: Ei mainoksia, ei valvontaa, toteutettu avoimilla protokollilla ja hajautettu! Pidä tietosi ominasi Mastodonilla!' about_this: Tietoa tästä palvelimesta active_count_after: aktiivista @@ -10,14 +9,11 @@ fi: api: Rajapinta apps: Mobiilisovellukset apps_platforms: Käytä Mastodonia Androidilla, iOS:llä ja muilla alustoilla - browse_directory: Selaa profiilihakemistoa - browse_local_posts: Selaa julkisia julkaisuja tältä palvelimelta browse_public_posts: Selaa julkisia julkaisuja Mastodonissa contact: Ota yhteyttä contact_missing: Ei asetettu contact_unavailable: Ei saatavilla continue_to_web: Jatka verkkosovellukseen - discover_users: Löydä käyttäjiä documentation: Dokumentaatio federation_hint_html: Tilillä %{instance}:ssa voit seurata ihmisiä millä tahansa Mastodon-palvelimella ja sen ulkopuolella. get_apps: Kokeile mobiilisovellusta @@ -776,9 +772,6 @@ fi: none: Kukaan ei voi rekisteröityä open: Kaikki voivat rekisteröityä title: Rekisteröintitapa - show_known_fediverse_at_about_page: - desc_html: Kun tämä on valittu, esikatselussa näytetään tuuttaukset kaikkialta tunnetusta fediversumista. Muutoin näytetään vain paikalliset tuuttaukset. - title: Näytä aikajanan esikatselussa koko tunnettu fediversumi site_description: desc_html: Esittelykappale etusivulla ja metatunnisteissa. HTML-tagit käytössä, tärkeimmät ovat <a> ja <em>. title: Instanssin kuvaus @@ -1096,10 +1089,6 @@ fi: more_details_html: Lisätietoja saat tietosuojakäytännöstämme. username_available: Käyttäjänimesi tulee saataville uudestaan username_unavailable: Käyttäjänimesi ei tule saataville enää uudestaan - directories: - directory: Profiilihakemisto - explanation: Löydä käyttäjiä heidän kiinnostustensa mukaan - explore_mastodon: Tutki %{title}ia disputes: strikes: action_taken: Toteutetut toimet diff --git a/config/locales/fr.yml b/config/locales/fr.yml index ff10ff636a..346271e93a 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1,7 +1,6 @@ --- fr: about: - about_hashtag_html: Voici des messages publics tagués avec #%{hashtag}. Vous pouvez interagir avec si vous avez un compte n’importe où dans le fédiverse. about_mastodon_html: 'Le réseau social de l''avenir : pas de publicité, pas de surveillance institutionnelle, conception éthique et décentralisation ! Gardez le contrôle de vos données avec Mastodon !' about_this: À propos active_count_after: actif·ve·s @@ -10,14 +9,11 @@ fr: api: API apps: Applications mobiles apps_platforms: Utilisez Mastodon depuis iOS, Android et d’autres plates-formes - browse_directory: Parcourir l’annuaire des profils et filtrer par centres d’intérêts - browse_local_posts: Parcourir en direct un flux de messages publics depuis ce serveur browse_public_posts: Parcourir en direct un flux de messages publics sur Mastodon contact: Contact contact_missing: Non défini contact_unavailable: Non disponible continue_to_web: Continuer vers l’application web - discover_users: Découvrez des utilisateur·rice·s documentation: Documentation federation_hint_html: Avec un compte sur %{instance}, vous pourrez suivre des gens sur n’importe quel serveur Mastodon et au-delà. get_apps: Essayez une application mobile @@ -767,9 +763,6 @@ fr: none: Personne ne peut s’inscrire open: N’importe qui peut s’inscrire title: Mode d’enregistrement - show_known_fediverse_at_about_page: - desc_html: Lorsque désactivée, restreint le fil public accessible via la page d’accueil de l’instance pour ne montrer que le contenu local - title: Inclure le contenu fédéré sur la page de fil public sans authentification site_description: desc_html: Paragraphe introductif sur l'API. Décrivez les particularités de ce serveur Mastodon et précisez toute autre chose qui vous semble importante. Vous pouvez utiliser des balises HTML, en particulier <a> et <em>. title: Description du serveur @@ -1087,10 +1080,6 @@ fr: more_details_html: Pour plus de détails, voir la politique de confidentialité. username_available: Votre nom d’utilisateur·rice sera à nouveau disponible username_unavailable: Votre nom d’utilisateur·rice restera indisponible - directories: - directory: Annuaire des profils - explanation: Découvrir des utilisateur·rice·s en fonction de leurs centres d’intérêt - explore_mastodon: Explorer %{title} disputes: strikes: action_taken: Mesure prise diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 2f0639990f..a5001f2bd8 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1,7 +1,6 @@ --- gd: about: - about_hashtag_html: Seo postaichean poblach le taga #%{hashtag} riutha. ’S urrainn dhut conaltradh leotha ma tha cunntas agad àite sam bith sa cho-shaoghal. about_mastodon_html: 'An lìonra sòisealta dhan àm ri teachd: Gun sanasachd, gun chaithris corporra, dealbhadh beusail agus dì-mheadhanachadh! Gabh sealbh air an dàta agad fhèin le Mastodon!' about_this: Mu dhèidhinn active_count_after: gnìomhach @@ -10,14 +9,11 @@ gd: api: API apps: Aplacaidean mobile apps_platforms: Cleachd Mastodon o iOS, Android ’s ùrlaran eile - browse_directory: Rùraich eòlaire phròifilean ’s criathraich a-rèir ùidhean - browse_local_posts: Brabhsaich sruth beò de phostaichean poblach on fhrithealaiche seo browse_public_posts: Brabhsaich sruth beò de phostaichean poblach air Mastodon contact: Fios thugainn contact_missing: Cha deach a shuidheachadh contact_unavailable: Chan eil seo iomchaidh continue_to_web: Lean air adhart dhan aplacaid-lìn - discover_users: Rùraich cleachdaichean documentation: Docamaideadh federation_hint_html: Le cunntas air %{instance}, ’s urrainn dhut leantainn air daoine air frithealaiche Mastodon sam bith is a bharrachd. get_apps: Feuch aplacaid mobile @@ -799,9 +795,6 @@ gd: none: Chan fhaod neach sam bith clàradh open: "’S urrainn do neach sam bith clàradh" title: Modh a’ chlàraidh - show_known_fediverse_at_about_page: - desc_html: Nuair a bhios seo à comas, cha sheall an loidhne-ama phoblach a thèid a cheangal rithe on duilleag-landaidh ach susbaint ionadail - title: Gabh a-staigh susbaint cho-naisgte air duilleag na loidhne-ama poblaich gun ùghdarrachadh site_description: desc_html: Earrann tuairisgeil air an API. Mìnich dè tha sònraichte mun fhrithealaiche Mastodon seo agus rud sa bith eile a tha cudromach. ’S urrainn dhut tagaichean HTML a chleachdadh agus <a> ’s <em> gu sònraichte. title: Tuairisgeul an fhrithealaiche @@ -1127,10 +1120,6 @@ gd: more_details_html: Airson barrachd fiosrachaidh faic am poileasaidh prìobhaideachd. username_available: Bidh an t-ainm-cleachdaiche agad ri fhaighinn a-rithist username_unavailable: Cha bhi an t-ainm-cleachdaiche agad ri fhaighinn fhathast - directories: - directory: Eòlaire nam pròifil - explanation: Rùraich cleachdaichean stèidhichte air an ùidhean - explore_mastodon: Rùraich %{title} disputes: strikes: action_taken: An gnìomh a ghabhadh diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 23b3d52ae7..870bef3cf7 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1,7 +1,6 @@ --- gl: about: - about_hashtag_html: Estas son publicacións públicas etiquetadas con #%{hashtag}. Podes interactuar con elas se tes unha conta nalgures do fediverso. about_mastodon_html: 'A rede social do futuro: Sen publicidade, sen seguimento por empresas, deseño ético e descentralización! En Mastodon ti posúes os teus datos!' about_this: Acerca de active_count_after: activas @@ -10,14 +9,11 @@ gl: api: API apps: Aplicacións móbiles apps_platforms: Emprega Mastodon dende iOS, Android e outras plataformas - browse_directory: Mira o directorio e filtra por intereses - browse_local_posts: Unha ollada aos últimos comentarios públicos neste servidor browse_public_posts: Cronoloxía en directo cos comentarios públicos en Mastodon contact: Contacto contact_missing: Non establecido contact_unavailable: Non dispoñíbel continue_to_web: Continuar na app web - discover_users: Descubrir usuarias documentation: Documentación federation_hint_html: Cunha conta en %{instance} poderás seguir ás persoas en calquera servidor do Mastodon e alén. get_apps: Probar unha aplicación móbil @@ -783,9 +779,6 @@ gl: none: Rexistro pechado open: Rexistro aberto title: Estado do rexistro - show_known_fediverse_at_about_page: - desc_html: Si activado, mostraralle os toots de todo o fediverso coñecido nunha vista previa. Si non só mostrará os toots locais. - title: Incluír contido federado na páxina da cronoloxía pública sen autenticación site_description: desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar cancelos HTML, en particular <a> e <em>. title: Descrición do servidor @@ -1109,10 +1102,6 @@ gl: more_details_html: Para máis detalles, mira a política de intimidade. username_available: O nome de usuaria estará dispoñible novamente username_unavailable: O nome de usuaria non estará dispoñible - directories: - directory: Directorio de perfís - explanation: Descubre usuarias según o teu interese - explore_mastodon: Explorar %{title} disputes: strikes: action_taken: Acción tomada diff --git a/config/locales/he.yml b/config/locales/he.yml index 3ec99349ad..232945647c 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1,7 +1,6 @@ --- he: about: - about_hashtag_html: אלו הודעות פומביות המתוייגות בתור#%{hashtag}. ניתן להגיב, להדהד או לחבב אותם אם יש לך חשבון בכל מקום שהוא בפדרציה. about_mastodon_html: מסטודון היא רשת חברתית חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ברשת החברתית באופן חלק. about_this: אודות שרת זה active_count_after: פעיל @@ -10,14 +9,11 @@ he: api: ממשק apps: יישומונים לנייד apps_platforms: שימוש במסטודון מ-iOS, אנדרואיד ופלטפורמות אחרות - browse_directory: עיון בספריית פרופילים וסינון לפי תחומי עניין - browse_local_posts: עיון בפיד חי של חצרוצים פומביים בשרת זה browse_public_posts: עיון בפיד חי של חצרוצים פומביים בשרת זה contact: יצירת קשר contact_missing: ללא הגדרה contact_unavailable: לא רלוונטי/חסר continue_to_web: להמשיך לאפליקציית ווב - discover_users: גילוי משתמשים documentation: תיעוד federation_hint_html: עם חשבון ב-%{instance} ניתן לעקוב אחרי אנשים בכל שרת מסטודון ומעבר. get_apps: נסה/י יישומון לנייד @@ -808,9 +804,6 @@ he: none: אף אחד לא יכול להרשם open: כל אחד יכול להרשם title: מצב הרשמות - show_known_fediverse_at_about_page: - desc_html: כאשר לא מופעל, מגביל את הפיד הפומבי המקושר מדף הנחיתה להצגת תוכן מקומי בלבד - title: הכללת תוכן פדרטיבי בדף הפיד הפומבי הבלתי מאומת site_description: desc_html: מוצג כפסקה על הדף הראשי ומשמש כתגית מטא. ניתן להשתמש בתגיות HTML, ובמיוחד ב־ < a> ו־ < em> . title: תיאור האתר @@ -1135,10 +1128,6 @@ he: more_details_html: לפרטים נוספים, ראו את מדיניות הפרטיות. username_available: שם המשתמש שלך שוב יהיה זמין username_unavailable: שם המשתמש שלך יישאר בלתי זמין - directories: - directory: מדריך פרופילים - explanation: גלו משתמשים בהתבסס על תחומי העניין שלהם - explore_mastodon: חקור את %{title} disputes: strikes: action_taken: הפעולה שבוצעה diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 89ce1b6255..f2687b1e69 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -1,7 +1,6 @@ --- hr: about: - about_hashtag_html: Ovo su javni tootovi označeni s #%{hashtag}. Možete biti u interakciji s njima, ako imate račun bilo gdje u fediverzumu. about_mastodon_html: 'Društvena mreža budućnosti: bez oglasa, bez korporativnog nadzora, etički dizajn i decentralizacija! Budite u vlasništvu svojih podataka pomoću Mastodona!' about_this: Dodatne informacije active_count_after: aktivnih @@ -10,7 +9,6 @@ hr: apps_platforms: Koristite Mastodon na iOS-u, Androidu i drugim platformama contact: Kontakt contact_missing: Nije postavljeno - discover_users: Otkrijte korisnike documentation: Dokumentacija get_apps: Isprobajte mobilnu aplikaciju learn_more: Saznajte više diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 14afbebd68..d9e54a2c0b 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1,7 +1,6 @@ --- hu: about: - about_hashtag_html: Ezek a #%{hashtag} hashtaggel ellátott nyilvános bejegyzések. Reagálhatsz rájuk, ha már van felhasználói fiókod valahol a föderációban. about_mastodon_html: 'A jövő közösségi hálózata: Hirdetések és céges megfigyelés nélkül, etikus dizájnnal és decentralizációval! Legyél a saját adataid ura a Mastodonnal!' about_this: Névjegy active_count_after: aktív @@ -10,14 +9,11 @@ hu: api: API apps: Mobil appok apps_platforms: Használd a Mastodont iOS-ről, Androidról vagy más platformról - browse_directory: Böngészd a profilokat és szűrj érdeklődési körre - browse_local_posts: Nézz bele a szerver élő, nyilvános bejegyzéseibe browse_public_posts: Nézz bele a Mastodon élő, nyilvános bejegyzéseibe contact: Kapcsolat contact_missing: Nincs megadva contact_unavailable: N/A continue_to_web: Tovább a webes alkalmazáshoz - discover_users: Találj meg másokat documentation: Dokumentáció federation_hint_html: Egy %{instance} fiókkal bármely más Mastodon szerveren vagy a föderációban lévő felhasználót követni tudsz. get_apps: Próbálj ki egy mobil appot @@ -785,9 +781,6 @@ hu: none: Senki sem regisztrálhat open: Bárki regisztrálhat title: Regisztrációs mód - show_known_fediverse_at_about_page: - desc_html: Ha le van tiltva, a nyilvános, főoldalról elérhető idővonalon csak helyi tartalmak jelennek meg - title: Mutassuk az általunk ismert föderációt az idővonal előnézetben site_description: desc_html: Rövid bemutatkozás a főoldalon és a meta fejlécekben. Írd le, mi teszi ezt a szervert különlegessé! Használhatod a <a> és <em> HTML tageket. title: Kiszolgáló leírása @@ -1111,10 +1104,6 @@ hu: more_details_html: A részletekért nézd meg az adatvédelmi szabályzatot. username_available: A fiókod ismét elérhetővé válik username_unavailable: A fiókod elérhetetlen marad - directories: - directory: Profilok - explanation: Találj másokra érdeklődésük alapján - explore_mastodon: "%{title} felfedezése" disputes: strikes: action_taken: Intézkedés diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 164bafbbe2..2734862339 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -1,7 +1,6 @@ --- hy: about: - about_hashtag_html: Սրանք #%{hashtag} հեշթեգով հանրային հրապարակումներն են։ Կարող էք փոխգործակցել դրանց հետ եթե ունէք որեւէ հաշիւ դաշտեզերքում։ about_mastodon_html: Ապագայի սոցցանցը։ Ոչ մի գովազդ, ոչ մի կորպորատիվ վերահսկողութիւն, էթիկական դիզայն, եւ ապակենտրոնացում։ Մաստադոնում դու ես քո տուեալների տէրը։ about_this: Մեր մասին active_count_after: ակտիվ @@ -10,13 +9,10 @@ hy: api: API apps: Բջջային յաւելուածներ apps_platforms: Մաստադոնը հասանելի է iOS, Android եւ այլ տարբեր հենքերում - browse_directory: Պրպտիր օգտատէրերի շտեմարանը եւ գտիր հետաքրքիր մարդկանց - browse_local_posts: Տես այս հանգոյցի հանրային գրառումների հոսքը browse_public_posts: Դիտիր Մաստադոնի հանրային գրառումների հոսքը contact: Կոնտակտ contact_missing: Սահմանված չէ contact_unavailable: Ոչինչ չկա - discover_users: Գտնել օգտատերներ documentation: Փաստաթղթեր federation_hint_html: "«%{instance}»-ում հաշիւ բացելով դու կը կարողանաս հետեւել մարդկանց Մաստոդոնի ցանկացած հանգոյցից և ոչ միայն։" get_apps: Փորձէք բջջային յաւելուածը @@ -603,10 +599,6 @@ hy: success_msg: Հաշիւդ բարեյաջող ջնջուեց warning: username_available: Քո օգտանունը կրկին հասանելի կը դառնայ - directories: - directory: Հաշուի մատեան - explanation: Բացայայտիր մարդկանց ըստ նրանց հետաքրքրութիւնների - explore_mastodon: Ուսումնասիրիր «%{title}»-ը domain_validator: invalid_domain: անվաւէր տիրոյթի անուն errors: diff --git a/config/locales/id.yml b/config/locales/id.yml index 516ba321ac..067bed38aa 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -1,7 +1,6 @@ --- id: about: - about_hashtag_html: Ini adalah toot publik yang ditandai dengan #%{hashtag}. Anda bisa berinteraksi dengan mereka jika anda memiliki akun dimanapun di fediverse. about_mastodon_html: Mastodon adalah sebuah jejaring sosial terbuka, open-sourcedesentralisasi dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam jejaring sosial dengan mudah. about_this: Tentang server ini active_count_after: aktif @@ -10,14 +9,11 @@ id: api: API apps: Aplikasi mobile apps_platforms: Gunakan Mastodon dari iOS, Android, dan platform lain - browse_directory: Jelajahi direktori profil dan saring sesuai minat - browse_local_posts: Jelajahi siaran langsung dari pos publik server ini browse_public_posts: Jelajahi siaran langsung pos publik di Mastodon contact: Kontak contact_missing: Belum diset contact_unavailable: Tidak Tersedia continue_to_web: Lanjut ke apl web - discover_users: Temukan pengguna documentation: Dokumentasi federation_hint_html: Dengan akun di %{instance} Anda dapat mengikuti orang di server Mastodon mana pun dan di luarnya. get_apps: Coba aplikasi mobile @@ -686,9 +682,6 @@ id: none: Tidak ada yang dapat mendaftar open: Siapa pun dapat mendaftar title: Mode registrasi - show_known_fediverse_at_about_page: - desc_html: Ketika dimatikan, batasi linimasa publik yang ditautkan dari halaman landas untuk menampilkan konten lokal saja - title: Masukkan konten gabungan di halaman linimasa publik tanpa autentifikasi site_description: desc_html: Ditampilkan sebagai sebuah paragraf di halaman depan dan digunakan sebagai tag meta.
Anda bisa menggunakan tag HTML, khususnya <a> dan <em>. title: Deskripsi situs @@ -998,10 +991,6 @@ id: more_details_html: Lebih detailnya, lihat kebijakan privasi. username_available: Nama pengguna Anda akan tersedia lagi username_unavailable: Nama pengguna Anda tetap tidak akan tersedia - directories: - directory: Direktori profil - explanation: Temukan pengguna berdasarkan minatnya - explore_mastodon: Jelajahi %{title} disputes: strikes: action_taken: Tindakan dilaksanakan diff --git a/config/locales/io.yml b/config/locales/io.yml index 6cb06d2497..4ef0d5ca97 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -1,7 +1,6 @@ --- io: about: - about_hashtag_html: Co esas publika posti quo etiketigesis kun #%{hashtag}. Vu povas interagar kun oli se vu havas konto irgaloke en fediverso. about_mastodon_html: Mastodon esas gratuita, apertitkodexa sociala reto. Ol esas sencentra altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la sociala reto tote glate. about_this: Pri ta instaluro active_count_after: aktiva @@ -10,14 +9,11 @@ io: api: API apps: Smartfonsoftwari apps_platforms: Uzez Mastodon de iOS, Android e altra platformi - browse_directory: Videz profilcheflisto e filtrez segun interesi - browse_local_posts: Videz samtempa video di publika posti de ca servilo browse_public_posts: Videz samtempa video di publika posti che Mastodon contact: Kontaktar contact_missing: Ne fixigita contact_unavailable: Nula continue_to_web: Durez a retsoftwaro - discover_users: Deskovrez uzanti documentation: Dokumentajo federation_hint_html: Per konto che %{instance}, vu povas sequar persono che irga servilo di Mastodon e altra siti. get_apps: Probez smartfonsoftwaro @@ -783,9 +779,6 @@ io: none: Nulu povas registrar open: Irgu povas registrar title: Registromodo - show_known_fediverse_at_about_page: - desc_html: Se desaktivigesis, co permisas publika tempolineo quo ligesas de atingopagino montrar nur lokala kontenajo - title: Inkluzez federatita kontenajo che neyurizita publika tempolineopagino site_description: desc_html: Displayed as a paragraph on the frontpage and used as a meta tag.
You can use HTML tags, in particular <a> and <em>. title: Site description @@ -1109,10 +1102,6 @@ io: more_details_html: Por plu multa detali, videz privatesguidilo. username_available: Vua uzantonomo divenos disponebla itere username_unavailable: Vua uzantonomo restos nedisponebla - directories: - directory: Profilcheflisto - explanation: Deskovrez uzanti segun olia intereso - explore_mastodon: Explorez %{title} disputes: strikes: action_taken: Agesis diff --git a/config/locales/is.yml b/config/locales/is.yml index 2448647fa6..7c63fff66c 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1,7 +1,6 @@ --- is: about: - about_hashtag_html: Þetta eru opinberar færslur sem merkt eru með #%{hashtag}. Þú getur unnið með þau ef þú ert með skráðan aðgang einhversstaðar í skýjasambandinu. about_mastodon_html: 'Samfélagsnet framtíðarinnar: Engar auglýsingar, ekkert eftirlit stórfyrirtækja, siðleg hönnun og engin miðstýring! Þú átt þín eigin gögn í Mastodon!' about_this: Um hugbúnaðinn active_count_after: virkt @@ -10,14 +9,11 @@ is: api: API-kerfisviðmót apps: Farsímaforrit apps_platforms: Notaðu Mastodon frá iOS, Android og öðrum stýrikerfum - browse_directory: Skoða notendur og sía eftir áhugamálum - browse_local_posts: Skoðaðu kvikt streymi af opinberum færslum á þessum vefþjóni browse_public_posts: Skoðaðu kvikt streymi af opinberum færslum á Mastodon contact: Hafa samband contact_missing: Ekki skilgreint contact_unavailable: Ekki til staðar continue_to_web: Halda áfram í vefforritið - discover_users: Uppgötva notendur documentation: Hjálparskjöl federation_hint_html: Með notandaaðgangi á %{instance} geturðu fylgst með fólki á hvaða Mastodon-þjóni sem er og reyndar víðar. get_apps: Prófaðu farsímaforrit @@ -783,9 +779,6 @@ is: none: Enginn getur nýskráð sig open: Allir geta nýskráð sig title: Nýskráningarhamur - show_known_fediverse_at_about_page: - desc_html: Þegar þetta er óvirkt, takmarkast opinbera tímalínan sem tengt er í af upphafssíðunni við að birta einungis staðvært efni (af sama vefþjóni) - title: Hafa með efni úr skýjasambandi á síðu fyrir óauðkennda opinbera tímalínu site_description: desc_html: Kynningarmálsgrein í API. Lýstu því hvað það er sem geri þennan Mastodon-þjón sérstakan, auk annarra mikilvægra upplýsinga. Þú getur notað HTML-einindi, sér í lagi <a> og <em>. title: Lýsing á vefþjóni @@ -1109,10 +1102,6 @@ is: more_details_html: Til að skoða þetta nánar, er gott að líta á persónuverndarstefnuna. username_available: Notandanafnið þitt mun verða tiltækt aftur username_unavailable: Notandanafnið þitt mun verða áfram ótiltækt - directories: - directory: Notandasniðamappa - explanation: Leitaðu að notendum eftir áhugamálum þeirra - explore_mastodon: Kannaðu %{title} disputes: strikes: action_taken: Framkvæmd aðgerð diff --git a/config/locales/it.yml b/config/locales/it.yml index 5e670cb077..6729516f14 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1,7 +1,6 @@ --- it: about: - about_hashtag_html: Questi sono i toot pubblici etichettati con #%{hashtag}. Puoi interagire con loro se hai un account nel fediverse. about_mastodon_html: 'Il social network del futuro: niente pubblicità, niente controllo da parte di qualche azienda privata, design etico e decentralizzazione! Con Mastodon il proprietario dei tuoi dati sei tu!' about_this: A proposito di questo server active_count_after: attivo @@ -10,14 +9,11 @@ it: api: API apps: Applicazioni per dispositivi mobili apps_platforms: Usa Mastodon da iOS, Android e altre piattaforme - browse_directory: Sfoglia la directory dei profili e filtra per interessi - browse_local_posts: Sfoglia il flusso di post pubblici in tempo reale su questo server browse_public_posts: Sfoglia il flusso di post pubblici in tempo reale su Mastodon contact: Contatti contact_missing: Non impostato contact_unavailable: N/D continue_to_web: Continua all'app web - discover_users: Scopri utenti documentation: Documentazione federation_hint_html: Con un account su %{instance} sarai in grado di seguire persone su qualsiasi server Mastodon e oltre. get_apps: Prova un'app per smartphone @@ -783,9 +779,6 @@ it: none: Nessuno può iscriversi open: Chiunque può iscriversi title: Modalità di registrazione - show_known_fediverse_at_about_page: - desc_html: Quando attivato, mostra nell'anteprima i toot da tutte le istanze conosciute. Altrimenti mostra solo i toot locali. - title: Mostra la fediverse conosciuta nell'anteprima della timeline site_description: desc_html: Paragrafo introduttivo nella pagina iniziale. Descrive ciò che rende speciale questo server Mastodon e qualunque altra cosa sia importante dire. Potete usare marcatori HTML, in particolare <a> e <em>. title: Descrizione del server @@ -1111,10 +1104,6 @@ it: more_details_html: Per maggiori dettagli, vedi la politica di privacy. username_available: Il tuo nome utente sarà nuovamente disponibile username_unavailable: Il tuo nome utente rimarrà non disponibile - directories: - directory: Directory dei profili - explanation: Scopri utenti in base ai loro interessi - explore_mastodon: Esplora %{title} disputes: strikes: action_taken: Azione intrapresa diff --git a/config/locales/ja.yml b/config/locales/ja.yml index ae71d99249..f2483e77d0 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1,7 +1,6 @@ --- ja: about: - about_hashtag_html: ハッシュタグ #%{hashtag} の公開投稿です。どこか連合に参加しているSNS上にアカウントを作れば、会話に参加することができます。 about_mastodon_html: Mastodonは、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 about_this: 詳細情報 active_count_after: 人がアクティブ @@ -10,14 +9,11 @@ ja: api: API apps: アプリ apps_platforms: iOSやAndroidなど、各種環境から利用できます - browse_directory: ディレクトリから気になる人を探しましょう - browse_local_posts: このサーバーの公開タイムラインをご覧ください browse_public_posts: Mastodonの公開ライブストリームをご覧ください contact: 連絡先 contact_missing: 未設定 contact_unavailable: N/A continue_to_web: アプリで続ける - discover_users: ユーザーを見つける documentation: ドキュメント federation_hint_html: "%{instance}のアカウントひとつでどんなMastodon互換サーバーのユーザーでもフォローできるでしょう。" get_apps: モバイルアプリを試す @@ -748,9 +744,6 @@ ja: none: 誰にも許可しない open: 誰でも登録可 title: 新規登録 - show_known_fediverse_at_about_page: - desc_html: チェックを外すと、ランディングページからリンクされた公開タイムラインにローカルの公開投稿のみ表示します。 - title: 公開タイムラインに連合先のコンテンツも表示する site_description: desc_html: フロントページへの表示に使用される紹介文です。このMastodonサーバーを特徴付けることやその他重要なことを記述してください。HTMLタグ、特に<a><em>が使えます。 title: サーバーの説明 @@ -1052,10 +1045,6 @@ ja: more_details_html: 詳しくはプライバシーポリシーをご覧ください。 username_available: あなたのユーザー名は再利用できるようになります username_unavailable: あなたのユーザー名は引き続き利用できません - directories: - directory: ディレクトリ - explanation: 関心を軸にユーザーを発見しよう - explore_mastodon: "%{title}を探索" disputes: strikes: action_taken: 取られた措置 diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 64b0419ed2..c1f1503e4c 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -1,7 +1,6 @@ --- ka: about: - about_hashtag_html: ეს საჯარო ტუტებია, რომლებიც ატარებენ #%{hashtag} ტეგს. მათთან ინტერაქციას შეძლებთ, თუ ფედივერსში გაქვთ რაიმე ანგარიში. about_mastodon_html: მასტოდონი ღია ვებ პროტოკოლებზე და უფასო, ღია პროგრამებზე დაფუძნებული სოციალური ქსელია. ის ისეთი დეცენტრალიზებულია როგორც ელ-ფოსტა. about_this: შესახებ administered_by: 'ადმინისტრატორი:' @@ -242,9 +241,6 @@ ka: deletion: desc_html: უფლება მიეცით ყველას, გააუქმონ თავიანთი ანგარიში title: ღია ანგარიშის გაუქმება - show_known_fediverse_at_about_page: - desc_html: ჩართვისას, ეს გამოაჩენს ტუტებს ყველა ცნობილი ფედივერსისგან პრევიუზე. სხვა შემთხვევაში, გამოაჩენს მხოლოდ ლოკალურ ტუტებს. - title: გამოჩნდეს ცნობილი ვედივერსი თაიმლაინ პრევიუში site_description: desc_html: საშესავლო პარაგრაფი წინა გვერდზე. აღწერეთ თუ რა ხდის ამ მასტოდონის სერვერს განსაკუთრებულს და სხვა მნიშვნელოვანი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები, კერძოდ <a> და <em>. title: ინსტანციის აღწერილობა diff --git a/config/locales/kab.yml b/config/locales/kab.yml index cda77cb6e1..82ec196b2c 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -1,7 +1,6 @@ --- kab: about: - about_hashtag_html: Tigi d tijewwiqin tizuyaz, ɣur-sent #%{hashtag}. Tzemreḍ ad tesdemreḍ akked yid-sent ma tesɛiḍ amiḍan deg kra n umḍiq deg fedivers. about_mastodon_html: 'Azeṭṭa ametti n uzekka: Ulac deg-s asussen, ulac taɛessast n tsuddiwin fell-ak, yebna ɣef leqder d ttrebga, daɣen d akeslemmas! Akked Maṣṭudun, isefka-inek ad qimen inek!' about_this: Γef active_count_after: d urmid @@ -10,11 +9,9 @@ kab: api: API apps: Isnasen izirazen apps_platforms: Seqdec Maṣṭudun deg iOS, Android d tɣeṛγṛin-nniḍen - browse_directory: Qelleb deg ukaram n imaɣnuten teǧǧeḍ-d gar-asen widak tebɣiḍ contact: Anermis contact_missing: Ur yettusbadu ara contact_unavailable: Wlac - discover_users: Af-d imseqdacen documentation: Amnir federation_hint_html: S umiḍan deg %{instance} tzemreḍ ad tḍefṛeḍ imdanen deg yal aqeddac Maṣṭudun d wugar n waya. get_apps: Ɛreḍ asnas aziraz @@ -538,9 +535,6 @@ kab: warning: username_available: Isem-ik·im n useqdac ad yuɣal yella i tikkelt-nniḍen username_unavailable: Isem-ik·im n useqdac ad yeqqim ulac-it - directories: - directory: Akaram n imaγnuten - explore_mastodon: Snirem %{title} errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 939e3c5201..25badb0a2b 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -1,7 +1,6 @@ --- kk: about: - about_hashtag_html: Бұл жерде #%{hashtag} хэштегімен жинақталған жазбалар. Желіге тіркеліп, сіз де қосыла аласыз бұл ортаға. about_mastodon_html: Mastodon - әлеуметтік желіге негізделген, тегін және веб протоколды, ашық кодты бағдарлама. Ол email сияқты орталығы жоқ құрылым. about_this: Туралы active_count_after: актив @@ -9,13 +8,10 @@ kk: administered_by: 'Админ:' apps: Мобиль қосымшалар apps_platforms: iOS, Android және басқа платформалардағы Mastodon қолданыңыз - browse_directory: Профильдер каталогын қажет фильтрлер арқылы қараңыз - browse_local_posts: Осы желідегі ашық посттар стримын қараңыз browse_public_posts: Mastodon-дағы ашық посттар стримын қараңыз contact: Байланыс contact_missing: Бапталмаған contact_unavailable: Белгісіз - discover_users: Қолданушыларды іздеңіз documentation: Құжаттама federation_hint_html: "%{instance} платформасындағы аккаунтыңыз арқылы Mastodon желісіндегі кез келген сервердегі қолданушыларға жазыла аласыз." get_apps: Мобиль қосымшаны қолданып көріңіз @@ -379,9 +375,6 @@ kk: none: Ешкім тіркеле алмайды open: Бәрі тіркеле алады title: Тіркелулер - show_known_fediverse_at_about_page: - desc_html: When toggled, it will show toots from all the known fediverse on preview. Otherwise it will only show жергілікті toots. - title: Show known fediverse on timeline превью site_description: desc_html: Introductory paragraph on the басты бет. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a> and <em>. title: Сервер туралы @@ -541,10 +534,6 @@ kk: more_details_html: Қосымша мәліметтер алу үшін құпиялылық саясатын қараңыз. username_available: Аккаунтыңыз қайтадан қолжетімді болады username_unavailable: Логиніңіз қолжетімді болмайды - directories: - directory: Профильдер каталогы - explanation: Қолданушыларды қызығушылықтарына қарай реттеу - explore_mastodon: "%{title} шарлау" domain_validator: invalid_domain: жарамды домен атауы емес errors: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 946784a038..d5f14aa4a7 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1,7 +1,6 @@ --- ko: about: - about_hashtag_html: "#%{hashtag} 해시태그가 붙은 공개 게시물입니다. 같은 연합에 속한 임의의 인스턴스에 계정을 생성하면 당신도 대화에 참여할 수 있습니다." about_mastodon_html: 마스토돈은 오픈 소스 기반의 소셜 네트워크 서비스 입니다. 상용 플랫폼의 대체로서 분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 마스토돈 인스턴스를 만들 수 있으며, 아주 매끄럽게 소셜 네트워크에 참가할 수 있습니다. about_this: 이 인스턴스에 대해서 active_count_after: 활성 사용자 @@ -10,14 +9,11 @@ ko: api: API apps: 모바일 앱 apps_platforms: 마스토돈을 iOS, 안드로이드, 다른 플랫폼들에서도 사용하세요 - browse_directory: 프로필 책자를 둘러보고 관심사 찾기 - browse_local_posts: 이 서버의 공개글 실시간 스트림을 둘러보기 browse_public_posts: 마스토돈의 공개 라이브 스트림을 둘러보기 contact: 연락처 contact_missing: 미설정 contact_unavailable: 없음 continue_to_web: 웹앱에서 계속하기 - discover_users: 사용자 발견하기 documentation: 문서 federation_hint_html: "%{instance}에 계정을 만드는 것으로 모든 마스토돈 서버, 그리고 호환 되는 모든 서버의 사용자를 팔로우 할 수 있습니다." get_apps: 모바일 앱 사용해 보기 @@ -769,9 +765,6 @@ ko: none: 아무도 가입 할 수 없음 open: 누구나 가입 할 수 있음 title: 가입 모드 - show_known_fediverse_at_about_page: - desc_html: 활성화 되면 프리뷰 페이지에서 페디버스의 모든 게시물을 표시합니다. 비활성화시 로컬에 있는 게시물만 표시 됩니다. - title: 타임라인 프리뷰에 알려진 페디버스 표시하기 site_description: desc_html: API의 소개문에 사용 됩니다.이 마스토돈 서버의 특별한 점 등을 설명하세요. HTML 태그, 주로 <a>, <em> 같은 것을 사용 가능합니다. title: 서버 설명 @@ -1091,10 +1084,6 @@ ko: more_details_html: 더 자세한 정보는, 개인정보 정책을 참고하세요. username_available: 당신의 계정명은 다시 사용할 수 있게 됩니다 username_unavailable: 당신의 계정명은 앞으로 사용할 수 없습니다 - directories: - directory: 프로필 책자 - explanation: 관심사에 대한 사용자들을 발견합니다 - explore_mastodon: "%{title} 탐사하기" disputes: strikes: action_taken: 내려진 징계 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 2dcba64ddb..289badfada 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -1,7 +1,6 @@ --- ku: about: - about_hashtag_html: Ev şandiyeke gelemperî ye bi #%{hashtag} re nîşankirî ye. Tu dikarî pê re çalak bibî heke ajimêreke te heye li ser fediverse. about_mastodon_html: 'Tora civakî ya pêşerojê: Ne reklam, ne çavdêriya pargîdanî, sêwirana exlaqî, û desentralîzasyon! Bi Mastodon re bibe xwediyê daneyên xwe!' about_this: Derbar active_count_after: çalak @@ -10,14 +9,11 @@ ku: api: API apps: Sepana mobîl apps_platforms: Mastodon ji iOS, Android û platformên din bi kar bîne - browse_directory: Li riya profîlê bigere û li gorî berjewendiyan parzûn bike - browse_local_posts: Ji vî rajekarê weşaneke zindî ya şandiyên giştî bigere browse_public_posts: Weşaneke zindî ya şandiyên giştî bigere li ser Mastodon contact: Têkilî contact_missing: Nehate sazkirin contact_unavailable: N/A continue_to_web: Bo malpera sepanê bidomîne - discover_users: Bikarhêneran keşf bike documentation: Pelbend federation_hint_html: Bi ajimêrê xwe %{instance} re tu dikarî kesên ji her kîjan rajekarê mastodonê bişopînî. get_apps: Sepaneke mobîl bicerbîne @@ -785,9 +781,6 @@ ku: none: Kesek nikare tomar bibe open: Herkes dikare tomar bibe title: Awayê tomarkirinê - show_known_fediverse_at_about_page: - desc_html: Dema ku neçalak be, demnameya gerdûnî ya ku ji rûpela zeviyê ve hatî girêdan tenê bi nîşandana naveroka herêmî tên sînorkirin - title: Li ser rûpela demnameya ne naskirî naveroka giştî nîşan bide site_description: desc_html: Paragrafa destpêkê li ser API. Dide nasîn ka çi ev rajekarê Mastodon taybet dike û tiştên din ên girîn. Tu dikarî hashtagên HTML-ê, bi kar bîne di <a> û <em> de. title: Danasîna rajekar @@ -1111,10 +1104,6 @@ ku: more_details_html: Bo bêhtir zanyarî, polîtika nihêniyê binêre. username_available: Navê bikarhêneriyê te wê dîsa peyda bibe username_unavailable: Navê bikarhêneriyê ye wê tuneyî bimîne - directories: - directory: Rêgeha profîlê - explanation: Bikarhêneran li gorî berjewendiyên wan bibîne - explore_mastodon: Vekole %{title} disputes: strikes: action_taken: Çalakî hatin kirin diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 56bcccf673..5449a37844 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -1,7 +1,6 @@ --- lt: about: - about_hashtag_html: Čia visiems prieinamas įrankis #%{hashtag}. Jūs galite juo naudotis bet kur, jeigu turite paskyra fedi-visatoje. about_mastodon_html: Mastodon, tai socialinis tinklas pagrįstas atviro kodo programavimu, ir atvirais web protokolais. Visiškai nemokamas. Ši sistema decantrilizuota kaip jūsų elektroninis paštas. about_this: Apie administered_by: 'Administruoja:' @@ -285,9 +284,6 @@ lt: deletion: desc_html: Leisti visiems ištrinti savo paskyrą title: Atidaryti paskyros trynimą - show_known_fediverse_at_about_page: - desc_html: Kai įjungta, rodys įrašus iš visos žinomos fedi-visatos. Kitokiu atvėju, rodys tik lokalius įrašus. - title: Rodyti žinoma fedi-visatos laiko juosta peržiūroje site_description: desc_html: Introdukcinis paragrafas pagrindiniame puslapyje. Apibūdink, kas padaro šį Mastodon serverį išskirtiniu ir visa kita, kas svarbu. Nebijok naudoti HTML žymes, pavyzdžiui < a > bei <em>. title: Serverio apibūdinimas @@ -382,10 +378,6 @@ lt: confirm_password: Kad patvirtintumėte savo tapatybę, įveskite dabartini slaptažodį proceed: Ištrinti paskyrą success_msg: Jūsų paskyra sėkmingai ištrinta - directories: - directory: Profilio direktorija - explanation: Raskite vartotojus, remiantis tuo, kuo jie domisi - explore_mastodon: Naršyti %{title} errors: '400': The request you submitted was invalid or malformed. '403': Jūs neturie prieigos matyti šiam puslapiui. diff --git a/config/locales/lv.yml b/config/locales/lv.yml index c645539c8a..8bb18fa8c2 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1,7 +1,6 @@ --- lv: about: - about_hashtag_html: Šīs ir publiskas ziņas, kas atzīmētas ar #%{hashtag}. Tu vari mijiedarboties ar tām, ja tev ir konts jebkurā federācijas vietnē. about_mastodon_html: 'Nākotnes sociālais tīkls: bez reklāmām, bez korporatīvās uzraudzības, ētisks dizains un decentralizācija! Pārvaldi savus datus ar Mastodon!' about_this: Par active_count_after: aktīvs @@ -10,14 +9,11 @@ lv: api: API apps: Mobilās lietotnes apps_platforms: Lieto Mastodon iOS, Android un citās platformās - browse_directory: Pārlūko profila direktoriju un atlasi pēc interesēm - browse_local_posts: Pārlūko publisko ziņu straumi no šī servera browse_public_posts: Pārlūko publisko ziņu straumi no Mastodon contact: Kontakts contact_missing: Nav uzstādīts contact_unavailable: N/A continue_to_web: Pārej uz tīmekļa lietotni - discover_users: Atklāj lietotājus documentation: Dokumentācija federation_hint_html: Izmantojot kontu vietnē %{instance}, varēsi sekot cilvēkiem jebkurā Mastodon serverī un ārpus tā. get_apps: Izmēģini mobilo lietotni @@ -799,9 +795,6 @@ lv: none: Neviens nevar reģistrēties open: Jebkurš var reģistrēties title: Reģistrācijas režīms - show_known_fediverse_at_about_page: - desc_html: Ja šī funkcija ir atspējota, tā ierobežo publisko ziņu lentu, kas ir saistīta ar galveno lapu, lai parādītu tikai vietējo saturu - title: Iekļaut federēto saturu neautentificētā publiskā ziņu lentas lapā site_description: desc_html: Ievadpunkts par API. Apraksti, kas padara šo Mastodon serveri īpašu, un jebko citu svarīgu. Vari izmantot HTML tagus, jo īpaši <a> un <em>. title: Servera apraksts @@ -1129,10 +1122,6 @@ lv: more_details_html: Plašāku informāciju skatīt privātuma politika. username_available: Tavs lietotājvārds atkal būs pieejams username_unavailable: Tavs lietotājvārds paliks nepieejams - directories: - directory: Profila direktorija - explanation: Atklāj lietotājus, pamatojoties uz viņu interesēm - explore_mastodon: Izpētīt %{title} disputes: strikes: action_taken: Veiktā darbība diff --git a/config/locales/ml.yml b/config/locales/ml.yml index df5be9c1ec..26ef7f6ea4 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -7,7 +7,6 @@ ml: contact: ബന്ധപ്പെടുക contact_missing: സജ്ജമാക്കിയിട്ടില്ല contact_unavailable: ലഭ്യമല്ല - discover_users: ഉപയോഗ്‌താക്കളെ കണ്ടെത്തുക documentation: വിവരണം get_apps: മൊബൈൽ ആപ്പ് പരീക്ഷിക്കുക learn_more: കൂടുതൽ പഠിക്കുക @@ -107,8 +106,6 @@ ml: all: എല്ലാം authorize_follow: following: 'വിജയകരം! നിങ്ങൾ ഇപ്പോൾ പിന്തുടരുന്നു:' - directories: - directory: പ്രൊഫൈൽ ഡയറക്ടറി errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 7f090b00d5..6563f35f15 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -1,7 +1,6 @@ --- ms: about: - about_hashtag_html: Ini semua hantaran awam yang ditandakan dengan #%{hashtag}. Anda boleh berinteraksi dengan mereka jika anda mempunyai akaun di mana-mana dunia persekutuan. about_mastodon_html: 'Rangkaian sosial masa hadapan: Tiada iklan, tiada pengawasan korporat, reka bentuk beretika, dan desentralisasi! Miliki data anda dengan Mastodon!' about_this: Perihal active_count_after: aktif @@ -10,13 +9,10 @@ ms: api: API apps: Aplikasi mudah alih apps_platforms: Guna Mastodon daripada iOS, Android dan platform yang lain - browse_directory: Layari direktori profil dan tapis mengikut minat - browse_local_posts: Layari strim langsung hantaran awam daripada pelayan ini browse_public_posts: Layari strim langsung hantaran awam di Mastodon contact: Hubungi kami contact_missing: Tidak ditetapkan contact_unavailable: Tidak tersedia - discover_users: Terokai pengguna documentation: Pendokumenan federation_hint_html: Dengan akaun di %{instance} anda akan mampu mengikuti orang di mana-mana pelayan Mastodon dan lebih lagi. get_apps: Cuba aplikasi mudah alih diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 2be2928661..0dbb868fbc 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1,7 +1,6 @@ --- nl: about: - about_hashtag_html: Dit zijn openbare berichten die getagged zijn met #%{hashtag}. Je kunt er op reageren of iets anders mee doen als je op Mastodon (of ergens anders in de fediverse) een account hebt. about_mastodon_html: Mastodon is een sociaal netwerk dat gebruikt maakt van open webprotocollen en vrije software. Het is net zoals e-mail gedecentraliseerd. about_this: Over deze server active_count_after: actief @@ -10,14 +9,11 @@ nl: api: API apps: Mobiele apps apps_platforms: Gebruik Mastodon op iOS, Android en op andere platformen - browse_directory: Gebruikersgids doorbladeren en op interesses filteren - browse_local_posts: Livestream van openbare berichten op deze server bekijken browse_public_posts: Livestream van openbare Mastodonberichten bekijken contact: Contact contact_missing: Niet ingesteld contact_unavailable: n.v.t continue_to_web: Doorgaan in de web-app - discover_users: Gebruikers ontdekken documentation: Documentatie federation_hint_html: Met een account op %{instance} ben je in staat om mensen die zich op andere Mastodonservers (en op andere plekken) bevinden te volgen. get_apps: Mobiele apps @@ -703,9 +699,6 @@ nl: none: Niemand kan zich registreren open: Iedereen kan zich registreren title: Registratiemodus - show_known_fediverse_at_about_page: - desc_html: Wanneer ingeschakeld wordt de globale tijdlijn op de voorpagina getoond en wanneer uitgeschakeld de lokale tijdlijn - title: De globale tijdlijn op de openbare tijdlijnpagina tonen site_description: desc_html: Introductie-alinea voor de API. Beschrijf wat er speciaal is aan deze server en andere zaken die van belang zijn. Je kunt HTML gebruiken, zoals <a> en <em>. title: Omschrijving Mastodonserver (API) @@ -951,10 +944,6 @@ nl: more_details_html: Zie het privacybeleid voor meer informatie. username_available: Jouw gebruikersnaam zal weer beschikbaar komen username_unavailable: Jouw gebruikersnaam zal onbeschikbaar blijven - directories: - directory: Gebruikersgids - explanation: Ontdek gebruikers aan de hand van hun interesses - explore_mastodon: "%{title} verkennen" disputes: strikes: appeal: Bezwaar diff --git a/config/locales/nn.yml b/config/locales/nn.yml index baf20ad723..9536920c87 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1,7 +1,6 @@ --- nn: about: - about_hashtag_html: Dette er offentlege tut merkt med #%{hashtag}. Du kan nytta dei om du har ein konto kvar som helst i fødiverset. about_mastodon_html: 'Framtidas sosiale nettverk: Ingen annonsar, ingen verksemder som overvaker deg, etisk design og desentralisering! Eig idéane dine med Mastodon!' about_this: Om oss active_count_after: aktiv @@ -10,13 +9,10 @@ nn: api: API apps: Mobilappar apps_platforms: Bruk Mastodon på iOS, Android og andre plattformer - browse_directory: Bla gjennom en profilmappe og filtrer etter interesser - browse_local_posts: Bla i en sanntidsstrøm av offentlige innlegg fra denne tjeneren browse_public_posts: Sjå ei direktesending av offentlege innlegg på Mastodon contact: Kontakt contact_missing: Ikkje sett contact_unavailable: I/T - discover_users: Oppdag brukarar documentation: Dokumentasjon federation_hint_html: Med ein konto på %{instance} kan du fylgja folk på kva som helst slags Mastod-tenar og meir. get_apps: Prøv ein mobilapp @@ -533,8 +529,6 @@ nn: none: Ingen kan melda seg inn open: Kven som helst kan melda seg inn title: Registreringsmodus - show_known_fediverse_at_about_page: - desc_html: Begrenser den offentlige tidslinjen som er knyttet til landingssiden når den er deaktivert, og viser bare lokalt innhold site_description: desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a> og <em>. title: Tenarskilding @@ -714,10 +708,6 @@ nn: more_details_html: For fleire detaljar, sjå personvernsvilkåra. username_available: Brukarnamnet ditt vert tilgjengeleg igjen username_unavailable: Brukarnamnet ditt kjem til å halda seg utilgjengeleg - directories: - directory: Profilkatalog - explanation: Leit fram brukarar etter interessa deira - explore_mastodon: Utforsk %{title} domain_validator: invalid_domain: er ikkje eit gangbart domenenamn errors: diff --git a/config/locales/no.yml b/config/locales/no.yml index b93bd0a2cc..67ce4d1285 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -1,7 +1,6 @@ --- 'no': about: - about_hashtag_html: Dette er offentlige toots merket med #%{hashtag}. Du kan interagere med dem om du har en konto et sted i fediverset. about_mastodon_html: Mastodon er et sosialt nettverk laget med fri programvare. Et desentralisert alternativ til kommersielle plattformer. Slik kan det unngå risikoene ved å ha et enkelt selskap som monopoliserer din kommunikasjon. Velg en tjener du stoler på — uansett hvilken du velger så kan du kommunisere med alle andre. Alle kan kjøre sin egen Mastodon og delta sømløst i det sosiale nettverket. about_this: Om active_count_after: aktive @@ -10,13 +9,10 @@ api: API apps: Mobilapper apps_platforms: Bruk Mastodon gjennom iOS, Android og andre plattformer - browse_directory: Bla gjennom en profilmappe og filtrer etter interesser - browse_local_posts: Bla i en sanntidsstrøm av offentlige innlegg fra denne tjeneren browse_public_posts: Bla i en sanntidsstrøm av offentlige innlegg på Mastodon contact: Kontakt contact_missing: Ikke innstilt contact_unavailable: Ikke tilgjengelig - discover_users: Oppdag brukere documentation: Dokumentasjon federation_hint_html: Med en konto på %{instance} vil du kunne følge folk på enhver Mastodon-tjener, og mer til. get_apps: Prøv en mobilapp @@ -526,8 +522,6 @@ none: Ingen kan melde seg inn open: Hvem som helst kan melde seg inn title: Registreringsmodus - show_known_fediverse_at_about_page: - desc_html: Begrenser den offentlige tidslinjen som er knyttet til landingssiden når den er deaktivert, og viser bare lokalt innhold site_description: desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a> og <em>. title: Nettstedsbeskrivelse @@ -701,10 +695,6 @@ more_details_html: For mere detaljer, se privatlivsretningslinjene. username_available: Brukernavnet ditt vil bli gjort tilgjengelig igjen username_unavailable: Brukernavnet ditt vil forbli utilgjengelig - directories: - directory: Profilmappe - explanation: Oppdag brukere basert på deres interesser - explore_mastodon: Utforsk %{title} domain_validator: invalid_domain: er ikke et gyldig domenenavn errors: diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 6fbe1c9c3e..f4d238223b 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -1,7 +1,6 @@ --- oc: about: - about_hashtag_html: Vaquí los estatuts publics ligats a #%{hashtag}. Podètz interagir amb eles s’avètz un compte ont que siasque sul fediverse. about_mastodon_html: Mastodon es un malhum social bastit amb de protocòls liures e gratuits. Es descentralizat coma los corrièls. about_this: A prepaus d’aquesta instància active_count_after: actius @@ -10,13 +9,10 @@ oc: api: API apps: Aplicacions per mobil apps_platforms: Utilizatz Mastodon d‘iOS, Android o d’autras plataforma estant - browse_directory: Navigatz per l’annuari de perfil e filtratz segon çò qu’aimatz - browse_local_posts: Percórrer un flux en dirècte de las publicacions publicas d’aqueste servidor browse_public_posts: Navigatz pel flux public a Mastodon contact: Contacte contact_missing: Pas parametrat contact_unavailable: Pas disponible - discover_users: Descobrissètz de nòvas personas documentation: Documentacion federation_hint_html: Amb un compte sus %{instance} poiretz sègre de personas de qualque siasque servidor Mastodon e encara mai. get_apps: Ensajatz una aplicacion mobil @@ -469,9 +465,6 @@ oc: none: Degun pòt pas se marcar open: Tot lo monde se pòt marcar title: Mòdes d’inscripcion - show_known_fediverse_at_about_page: - desc_html: Un còp activat mostrarà los tuts de totes los fediverse dins l’apercebut. Autrament mostrarà pas que los tuts locals. - title: Mostrar los fediverse coneguts dins l’apercebut del flux site_description: desc_html: Paragraf d’introduccion sus la pagina d’acuèlh. Explicatz çò que fa diferent aqueste servidor Mastodon e tot çò qu’es important de dire. Podètz utilizare de balises HTML, en particular <a> e<em>. title: Descripcion del servidor @@ -636,10 +629,6 @@ oc: more_details_html: Per mai d’informacion, vejatz la politica de confidencialitat. username_available: Vòstre nom d’utilizaire serà disponible de nòu username_unavailable: Vòstre nom d’utilizaire demorarà pas disponible - directories: - directory: Annuari de perfils - explanation: Trobar d’utilizaires segon lor interèsses - explore_mastodon: Explorar %{title} domain_validator: invalid_domain: es pas un nom de domeni valid errors: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index a45e8d4134..3acdf4e7a5 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1,7 +1,6 @@ --- pl: about: - about_hashtag_html: Znajdują się tu publiczne wpisy oznaczone hashtagiem #%{hashtag}. Możesz dołączyć do dyskusji, jeżeli posiadasz konto gdziekolwiek w Fediwersum. about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform. about_this: O tej instancji active_count_after: aktywni @@ -10,14 +9,11 @@ pl: api: API apps: Aplikacje apps_platforms: Korzystaj z Mastodona z poziomu iOS-a, Androida i innych - browse_directory: Przeglądaj katalog profilów i filtruj z uwzględnieniem zainteresowań - browse_local_posts: Przeglądaj strumień publicznych wpisów z tego serwera browse_public_posts: Przeglądaj strumień publicznych wpisów na Mastodonie na żywo contact: Kontakt contact_missing: Nie ustawiono contact_unavailable: Nie dotyczy continue_to_web: Kontynuuj przez aplikację webową - discover_users: Odkrywaj użytkowników documentation: Dokumentacja federation_hint_html: Z kontem na %{instance}, możesz śledzić użytkowników każdego serwera Mastodona i nie tylko. get_apps: Spróbuj aplikacji mobilnej @@ -810,9 +806,6 @@ pl: none: Nikt nie może się zarejestrować open: Każdy może się zarejestrować title: Tryb rejestracji - show_known_fediverse_at_about_page: - desc_html: Jeśli włączone, podgląd instancji będzie wyświetlał wpisy z całego Fediwersum. W innym przypadku, będą wyświetlane tylko lokalne wpisy. - title: Pokazuj wszystkie znane wpisy na podglądzie instancji site_description: desc_html: Akapit wprowadzający, widoczny na stronie głównej. Opisz, co czyni tę instancję wyjątkową. Możesz korzystać ze znaczników HTML, w szczególności <a> i <em>. title: Opis serwera @@ -1144,10 +1137,6 @@ pl: more_details_html: Aby uzyskać więcej szczegółów, przeczytaj naszą politykę prywatności. username_available: Twoja nazwa użytkownika będzie z powrotem dostępna username_unavailable: Twoja nazwa użytkownika pozostanie niedostępna - directories: - directory: Katalog profilów - explanation: Poznaj profile na podstawie zainteresowań - explore_mastodon: Odkrywaj %{title} disputes: strikes: action_taken: Podjęte działania diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index b6da1a3ff1..c38103fb7a 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1,7 +1,6 @@ --- pt-BR: about: - about_hashtag_html: Estes são toots públicos com a hashtag #%{hashtag}. Você pode interagir com eles se tiver uma conta em qualquer lugar no fediverso. about_mastodon_html: 'A rede social do futuro: Sem anúncios, sem vigilância corporativa, com design ético e muita descentralização! Possua seus próprios dados com o Mastodon!' about_this: Sobre active_count_after: ativo @@ -10,14 +9,11 @@ pt-BR: api: API apps: Aplicativos apps_platforms: Use o Mastodon a partir do iOS, Android e outras plataformas - browse_directory: Navegue pelo diretório de perfis e filtre por interesses - browse_local_posts: Navegue pelos toots públicos locais em tempo real browse_public_posts: Navegue pelos toots públicos globais em tempo real contact: Contato contact_missing: Não definido contact_unavailable: Não disponível continue_to_web: Continuar no aplicativo web - discover_users: Descubra usuários documentation: Documentação federation_hint_html: Com uma conta em %{instance} você vai poder seguir e interagir com pessoas de qualquer canto do fediverso. get_apps: Experimente um aplicativo @@ -757,9 +753,6 @@ pt-BR: none: Ninguém pode criar conta open: Qualquer um pode criar conta title: Modo de novos usuários - show_known_fediverse_at_about_page: - desc_html: Quando ativado, mostra toots globais na prévia da linha, se não, mostra somente toots locais - title: Mostrar toots globais na prévia da linha site_description: desc_html: Parágrafo introdutório na página inicial. Descreva o que faz esse servidor especial, e qualquer outra coisa de importante. Você pode usar tags HTML, em especial <a> e <em>. title: Descrição da instância @@ -1025,10 +1018,6 @@ pt-BR: more_details_html: Para mais detalhes, consulte a Política de Privacidade. username_available: Seu nome de usuário ficará disponível novamente username_unavailable: Seu nome de usuário permanecerá indisponível - directories: - directory: Diretório de perfis - explanation: Descobrir usuários baseado em seus interesses - explore_mastodon: Explore o %{title} disputes: strikes: action_taken: Ações tomadas diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 1493e3be2c..884fa3f111 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1,7 +1,6 @@ --- pt-PT: about: - about_hashtag_html: Estes são toots públicos marcados com #%{hashtag}. Podes interagir com eles se tiveres uma conta Mastodon. about_mastodon_html: Mastodon é uma rede social baseada em protocolos abertos da web e software livre e gratuito. É descentralizado como e-mail. about_this: Sobre esta instância active_count_after: activo @@ -10,14 +9,11 @@ pt-PT: api: API apps: Aplicações móveis apps_platforms: Usar o Mastodon a partir do iOS, Android e outras plataformas - browse_directory: Navegue pelo directório de perfis e filtre por interesses - browse_local_posts: Visualize as publicações públicas desta instância em tempo real browse_public_posts: Visualize as publicações públicas do Mastodon em tempo real contact: Contacto contact_missing: Não configurado contact_unavailable: n.d. continue_to_web: Continuar para a aplicação web - discover_users: Descobrir utilizadores documentation: Documentação federation_hint_html: Ter uma conta em %{instance} permitirá seguir pessoas em qualquer instância Mastodon. get_apps: Experimente uma aplicação @@ -783,9 +779,6 @@ pt-PT: none: Ninguém se pode registar open: Qualquer pessoa se pode registar title: Modo de registo - show_known_fediverse_at_about_page: - desc_html: Quando comutado, irá mostrar a previsualização de publicações de todo o fediverse conhecido. De outro modo só mostrará publicações locais. - title: Mostrar o fediverse conhecido na previsualização da cronologia site_description: desc_html: Mostrar como parágrafo na página inicial e usado como meta tag.Podes usar tags HTML, em particular <a> e <em>. title: Descrição do site @@ -1109,10 +1102,6 @@ pt-PT: more_details_html: Para mais detalhes, leia a política de privacidade. username_available: O seu nome de utilizador ficará novamente disponível username_unavailable: O seu nome de utilizador permanecerá indisponível - directories: - directory: Dirétorio de perfil - explanation: Descobre utilizadores com base nos seus interesses - explore_mastodon: Explorar %{title} disputes: strikes: action_taken: Ação tomada diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 8f7d42fd40..df80b09dca 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -1,7 +1,6 @@ --- ro: about: - about_hashtag_html: Acestea sunt postări publice etichetate cu #%{hashtag}. Poți interacționa cu ele dacă ai un cont oriunde în rețea. about_mastodon_html: 'Rețeaua socială a viitorului: Fără reclame, fără supraveghere corporativă, design etic și descentralizare! Dețineți-vă datele cu Mastodon!' about_this: Despre active_count_after: activi @@ -10,13 +9,10 @@ ro: api: API apps: Aplicații mobile apps_platforms: Folosește Mastodon de pe iOS, Android și alte platforme - browse_directory: Răsfoiți directorul de profil și filtrați după interese - browse_local_posts: Răsfoiți un flux live al postărilor publice de pe acest server browse_public_posts: Răsfoiește un flux live de postări publice pe Mastodon contact: Contact contact_missing: Nesetat contact_unavailable: Indisponibil - discover_users: Descoperă utilizatori documentation: Documentație federation_hint_html: Cu un cont pe %{instance} vei putea urmări oameni pe orice server de Mastodon sau mai departe. get_apps: Încercați o aplicație pentru mobil @@ -366,9 +362,6 @@ ro: data_removal: Postările tale și alte date vor fi șterse permanent email_change_html: Puteți schimba adresa de e-mail fără a șterge contul dvs email_contact_html: Dacă tot nu ajunge, puteți trimite e-mail la %{email} pentru ajutor - directories: - explanation: Descoperă oameni și companii în funcție de interesele lor - explore_mastodon: Explorează %{title} errors: '400': The request you submitted was invalid or malformed. '403': Nu ai permisiunea să vizitezi această pagină. diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 4d5c6dfe89..d6cc67b361 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1,7 +1,6 @@ --- ru: about: - about_hashtag_html: Это публичные посты, отмеченные хэштегом #%{hashtag}. Вы можете взаимодействовать с ними при наличии у Вас учётной записи в глобальной сети Mastodon. about_mastodon_html: 'Социальная сеть будущего: никакой рекламы, слежки корпорациями, этичный дизайн и децентрализация! С Mastodon ваши данные под вашим контролем.' about_this: Об этом узле active_count_after: активных @@ -10,14 +9,11 @@ ru: api: API apps: Приложения apps_platforms: Используйте Mastodon на iOS, Android и других платформах - browse_directory: Изучите каталог и найдите профили по интересам - browse_local_posts: Просматривайте в реальном времени новые посты с этого сервера browse_public_posts: Взгляните на новые посты Mastodon в реальном времени contact: Связаться contact_missing: не указан contact_unavailable: неизв. continue_to_web: Продолжить в веб-приложении - discover_users: Найдите пользователей documentation: Документация federation_hint_html: С учётной записью на %{instance} вы сможете подписываться на людей с любого сервера Mastodon и не только. get_apps: Попробуйте мобильные приложения @@ -765,9 +761,6 @@ ru: none: Никто не может регистрироваться open: Все могут регистрироваться title: Режим регистраций - show_known_fediverse_at_about_page: - desc_html: Если включено, показывает посты со всех известных узлов в предпросмотре ленты. В противном случае отображаются только локальные посты. - title: Показывать контент со всей федерации в публичной ленте неавторизованным пользователям site_description: desc_html: Отображается в качестве параграфа на титульной странице и используется в качестве мета-тега.
Можно использовать HTML-теги, в особенности <a> и <em>. title: Описание сайта @@ -1079,10 +1072,6 @@ ru: more_details_html: За всеми подробностями, изучите политику конфиденциальности. username_available: Ваше имя пользователя снова станет доступным username_unavailable: Ваше имя пользователя останется недоступным для использования - directories: - directory: Каталог профилей - explanation: Находите пользователей по интересам - explore_mastodon: Изучайте %{title} disputes: strikes: action_taken: Предпринятые меры diff --git a/config/locales/sc.yml b/config/locales/sc.yml index a031b27add..b18eb4b1ce 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -1,7 +1,6 @@ --- sc: about: - about_hashtag_html: Custos sunt tuts pùblicos etichetados cun #%{hashtag}. Bi podes intrare in cuntatu si tenes unu contu in cale si siat logu de su fediversu. about_mastodon_html: 'Sa rete sotziale de su benidore: sena publitzidade, sena vigilàntzia corporativa, disinnu èticu e detzentralizatzione! Sias mere de is datos tuos cun Mastodon!' about_this: Informatziones active_count_after: ativu @@ -10,13 +9,10 @@ sc: api: API apps: Aplicatziones mòbiles apps_platforms: Imprea Mastodon dae iOS, Android e àteras prataformas - browse_directory: Nàviga in su diretòriu de profilos e filtra segundu interessos - browse_local_posts: Nàviga in unu flussu in direta de messàgios pùblicos de custu serbidore browse_public_posts: Nàviga in unu flussu in direta de messàgios pùblicos in Mastodon contact: Cuntatu contact_missing: No cunfiguradu contact_unavailable: No a disponimentu - discover_users: Iscoberi utentes documentation: Documentatzione federation_hint_html: Cun unu contu in %{instance} as a pòdere sighire persones in cale si siat serbidore de Mastodon o de su fediversu. get_apps: Proa un'aplicatzione mòbile @@ -544,9 +540,6 @@ sc: none: Nemos si podet registrare open: Chie si siat si podet registrare title: Modu de registratzione - show_known_fediverse_at_about_page: - desc_html: Cando ativu, ammustrat in sa previsualizatzione is tuts de totu is istàntzias connòschidas. Si nono, ammustrat isceti is cuntenutos locales - title: Include su cuntenutu federadu in sa pàgina no autenticada de sa lìnia de tempus pùblica site_description: desc_html: Paràgrafu de introdutzione a s'API. Descrie pro ite custu serbidore de Mastodon siat ispetziale e cale si siat àtera cosa de importu. Podes impreare etichetas HTML, mescamente <a> e <em>. title: Descritzione de su serbidore @@ -736,10 +729,6 @@ sc: more_details_html: Pro àteros detàllios, bide sa normativa de riservadesa. username_available: Su nòmine de utente tuo at a torrare a èssere a disponimentu username_unavailable: Su nòmine de utente tuo no at a abarrare a disponimentu - directories: - directory: Diretòriu de profilos - explanation: Iscoberi gente segundu is interessos suos - explore_mastodon: Esplora %{title} domain_validator: invalid_domain: no est unu nòmine de domìniu vàlidu errors: diff --git a/config/locales/si.yml b/config/locales/si.yml index 1806801eb2..12a322eed0 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -1,7 +1,6 @@ --- si: about: - about_hashtag_html: මේවා #%{hashtag}ටැග් කර ඇති පොදු පළ කිරීම් වේ. ඔබට fediverse හි ඕනෑම තැනක ගිණුමක් තිබේ නම් ඔබට ඔවුන් සමඟ අන්තර් ක්‍රියා කළ හැක. about_mastodon_html: 'අනාගත සමාජ ජාලය: දැන්වීම් නැත, ආයතනික නිරීක්ෂණ නැත, සදාචාරාත්මක සැලසුම් සහ විමධ්‍යගත කිරීම! Mastodon සමඟ ඔබේ දත්ත අයිති කරගන්න!' about_this: පිලිබඳව active_count_after: සක්‍රීයයි @@ -10,14 +9,11 @@ si: api: යෙ.ක්‍ර. මු. (API) apps: ජංගම යෙදුම් apps_platforms: iOS, Android සහ වෙනත් වේදිකා වලින් Mastodon භාවිතා කරන්න - browse_directory: පැතිකඩ නාමාවලියක් පිරික්සන්න සහ රුචිකත්වයන් අනුව පෙරහන් කරන්න - browse_local_posts: මෙම සේවාදායකයෙන් පොදු පළ කිරීම් වල සජීවී ප්‍රවාහයක් බ්‍රවුස් කරන්න browse_public_posts: Mastodon හි පොදු පළ කිරීම් වල සජීවී ප්‍රවාහයක් බ්‍රවුස් කරන්න contact: සබඳතාව contact_missing: සකස් කර නැත contact_unavailable: අ/නොවේ continue_to_web: වෙබ් යෙදුම වෙත ඉදිරියට යන්න - discover_users: පරිශීලකයන් සොයා ගන්න documentation: ප්‍රලේඛනය federation_hint_html: "%{instance} හි ගිණුමක් සමඟින් ඔබට ඕනෑම Mastodon සේවාදායකයක සහ ඉන් ඔබ්බෙහි පුද්ගලයින් අනුගමනය කිරීමට හැකි වනු ඇත." get_apps: ජංගම යෙදුමක් උත්සාහ කරන්න @@ -697,9 +693,6 @@ si: none: කිසිවෙකුට ලියාපදිංචි විය නොහැක open: ඕනෑම කෙනෙකුට ලියාපදිංචි විය හැක title: ලියාපදිංචි කිරීමේ මාදිලිය - show_known_fediverse_at_about_page: - desc_html: අබල කළ විට, ගොඩබෑමේ පිටුවෙන් සම්බන්ධ කර ඇති පොදු කාලරාමුව දේශීය අන්තර්ගතය පමණක් පෙන්වීමට සීමා කරයි - title: සත්‍යාපනය නොකළ පොදු කාලරේඛා පිටුවේ ෆෙඩරේටඩ් අන්තර්ගතය ඇතුළත් කරන්න site_description: desc_html: API හි හඳුන්වාදීමේ ඡේදය. මෙම Mastodon සේවාදායකය විශේෂ වන්නේ කුමක්ද සහ වෙනත් වැදගත් දෙයක් විස්තර කරන්න. ඔබට HTML ටැග් භාවිතා කළ හැකිය, විශේෂයෙන් <a> සහ <em>. title: සේවාදායකයේ සවිස්තරය @@ -1009,10 +1002,6 @@ si: more_details_html: වැඩි විස්තර සඳහා, පෞද්ගලිකත්ව ප්‍රතිපත්තියබලන්න. username_available: ඔබගේ පරිශීලක නාමය නැවත ලබා ගත හැකි වනු ඇත username_unavailable: ඔබගේ පරිශීලක නාමය නොතිබෙනු ඇත - directories: - directory: පැතිකඩ නාමාවලිය - explanation: ඔවුන්ගේ රුචිකත්වයන් මත පදනම්ව පරිශීලකයින් සොයා ගන්න - explore_mastodon: "%{title}ගවේෂණය කරන්න" disputes: strikes: action_taken: පියවර ගත්තා diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 3278159274..f59c06687a 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -253,6 +253,7 @@ es-MX: events: Eventos habilitados url: URL de Endpoint 'no': 'No' + not_recommended: No recomendado recommended: Recomendado required: mark: "*" diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 6c12a07f45..bd693c201d 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -1,7 +1,6 @@ --- sk: about: - about_hashtag_html: Toto sú verejné príspevky, otagované pod #%{hashtag}. Ak máš účet hocikde v rámci fediversa, môžeš s nimi narábať. about_mastodon_html: Mastodon je sociálna sieť založená na otvorených webových protokoloch a na slobodnom softvéri. Je decentralizovaná, podobne ako email. about_this: O tomto serveri active_count_after: aktívni @@ -9,14 +8,11 @@ sk: administered_by: 'Správcom je:' apps: Aplikácie apps_platforms: Užívaj Mastodon z iOSu, Androidu, a iných platforiem - browse_directory: Prehľadávaj databázu profilov, a filtruj podľa záujmov - browse_local_posts: Prebádaj naživo prúd verejných príspevkov z tohto servera browse_public_posts: Sleduj naživo prúd verejných príspevkov na Mastodone contact: Kontakt contact_missing: Nezadaný contact_unavailable: Neuvedený/á continue_to_web: Pokračovať na webovú aplikáciu - discover_users: Objavuj užívateľov documentation: Dokumentácia federation_hint_html: S účtom na %{instance} budeš môcť následovať ľúdí na hociakom Mastodon serveri, ale aj na iných serveroch. get_apps: Vyskúšaj aplikácie @@ -549,9 +545,6 @@ sk: none: Nikto sa nemôže registrovať open: Ktokoľvek sa môže zaregistrovať title: Režím registrácií - show_known_fediverse_at_about_page: - desc_html: Ak je zapnuté, bude v ukážke osi možné nahliadnúť príspevky z celého známeho fediversa. Inak budú ukázané iba príspevky z miestnej osi. - title: Ukáž celé známe fediverse na náhľade osi site_description: desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Opíš, čo robí tento Mastodon server špecifickým, a ďalej hocičo iné, čo považuješ za dôležité. Môžeš použiť HTML kód, hlavne <a> a <em>. title: Popis servera @@ -734,10 +727,6 @@ sk: more_details_html: Pre viac podrobností, pozri zásady súkromia. username_available: Tvoje užívateľské meno bude znova dostupné username_unavailable: Tvoja prezývka ostane neprístupná - directories: - directory: Katalóg profilov - explanation: Pátraj po užívateľoch podľa ich záujmov - explore_mastodon: Prebádaj %{title} domain_validator: invalid_domain: nieje správny tvar domény errors: diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 2c1f11afa1..f153df0c6c 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1,7 +1,6 @@ --- sl: about: - about_hashtag_html: To so javne objave, označene z #%{hashtag}. Z njimi se lahko povežete, če imate račun kjerkoli v fediverzumu. about_mastodon_html: Mastodon je socialno omrežje, ki temelji na odprtih spletnih protokolih in prosti ter odprtokodni programski opremi. Je decentraliziran, kot e-pošta. about_this: O Mastodonu active_count_after: dejavnih @@ -10,14 +9,11 @@ sl: api: API (programerski vmesnik aplikacije) apps: Mobilne aplikacije apps_platforms: Uporabljajte Mastodon iz iOS, Android ali iz drugih platform - browse_directory: Brskajte po imeniku profilov in jih filtrirajte po interesih - browse_local_posts: Prebrskaj živi tok javnih objav s tega strežnika browse_public_posts: Brskajte javnih objav v živo na Mastodonu contact: Kontakt contact_missing: Ni nastavljeno contact_unavailable: Ni na voljo continue_to_web: Nadaljuj v spletno aplikacijo - discover_users: Odkrijte uporabnike documentation: Dokumentacija federation_hint_html: Z računom na %{instance} boste lahko spremljali osebe na poljubnem strežniku Mastodon. get_apps: Poskusite mobilno aplikacijo @@ -815,9 +811,6 @@ sl: none: Nihče se ne more prijaviti open: Vsakdo se lahko prijavi title: Način registracije - show_known_fediverse_at_about_page: - desc_html: Ko preklopite, bo prikazal objave vseh znanih fediverzumov v predogledu. V nasprotnem primeru bodo prikazane samo krajevne objave. - title: Pokaži znane fediverse-e v predogledu časovnice site_description: desc_html: Uvodni odstavek na API-ju. Opišite, zakaj je ta Mastodon strežnik poseben in karkoli pomembnega. Lahko uporabite HTML oznake, zlasti <a> in <em>. title: Opis strežnika @@ -1149,10 +1142,6 @@ sl: more_details_html: Za podrobnosti glejte politiko zasebnosti. username_available: Vaše uporabniško ime bo znova na voljo username_unavailable: Vaše uporabniško ime še vedno ne bo na voljo - directories: - directory: Imenik profilov - explanation: Odkrijte uporabnike glede na njihove interese - explore_mastodon: Razišči %{title} disputes: strikes: action_taken: Izvedeno dejanje diff --git a/config/locales/sq.yml b/config/locales/sq.yml index e90449495e..a2fcab7397 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1,7 +1,6 @@ --- sq: about: - about_hashtag_html: Këto janë mesazhe publike të etiketuara me #%{hashtag}. Mundeni të ndërveproni me ta, nëse keni një llogari kudo qoftë në fedivers. about_mastodon_html: 'Rrjeti shoqëror i së ardhmes: Pa reklama, pa survejim nga korporata, konceptim etik dhe decentralizim! Jini zot i të dhënave tuaja, me Mastodon-in!' about_this: Mbi active_count_after: aktive @@ -10,14 +9,11 @@ sq: api: API apps: Aplikacione për celular apps_platforms: Përdoreni Mastodon-in prej iOS-i, Android-i dhe platformash të tjera - browse_directory: Shfletoni një drejtori profilesh dhe filtrojeni sipas interesash - browse_local_posts: Shfletoni një rrjedhë të drejtpërdrejtë postimesh publike nga ky shërbyes browse_public_posts: Shfletoni një rrjedhë të drejtpërdrejtë postimesh publike në Mastodon contact: Kontakt contact_missing: I parregulluar contact_unavailable: N/A continue_to_web: Vazhdoni te aplikacioni web - discover_users: Zbuloni përdorues documentation: Dokumentim federation_hint_html: Me një llogari në %{instance}, do të jeni në gjendje të ndiqni persona në çfarëdo shërbyesi Mastodon dhe më tej. get_apps: Provoni një aplikacion për celular @@ -780,9 +776,6 @@ sq: none: S’mund të regjistrohet ndokush open: Mund të regjistrohet gjithkush title: Mënyrë regjistrimi - show_known_fediverse_at_about_page: - desc_html: Kur përdoret, do të shfaqë mesazhe prej krejt fediversit të njohur, si paraparje. Përndryshe do të shfaqë vetëm mesazhe vendore - title: Përfshi lëndë të federuar në faqe rrjedhe publike kohore të pamirëfilltësuar site_description: desc_html: Paragraf hyrës te faqja ballore. Përshkruani ç’e bën special këtë shërbyes Mastodon dhe çfarëdo gjëje tjetër të rëndësishme. Mund të përdorni etiketa HTML, veçanërisht <a> dhe <em>. title: Përshkrim shërbyesi @@ -1103,10 +1096,6 @@ sq: more_details_html: Për më tepër hollësi, shihni rregulla privatësie. username_available: Emri juaj i përdoruesit do të jetë sërish i passhëm username_unavailable: Emri juaj i përdoruesit do të mbetet i papërdorshëm - directories: - directory: Drejtori profilesh - explanation: Zbuloni përdorues bazuar në interesat e tyre - explore_mastodon: Eksploroni %{title} disputes: strikes: action_taken: Vendim i marrë diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 0596d4b68e..751814e9ab 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -1,7 +1,6 @@ --- sr-Latn: about: - about_hashtag_html: Ovo su javni statusi tagovani sa #%{hashtag}. Možete odgovarati na njih ako imate nalog bilo gde u fediversu. about_mastodon_html: Mastodont je društvena mreža bazirana na otvorenim protokolima i slobodnom softveru otvorenog koda. Decentralizovana je kao što je decentralizovana e-pošta. about_this: O instanci contact: Kontakt diff --git a/config/locales/sr.yml b/config/locales/sr.yml index fb2c86cff0..ad2adb1892 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -1,12 +1,10 @@ --- sr: about: - about_hashtag_html: Ово су јавни статуси таговани са #%{hashtag}. Можете одговарати на њих ако имате налог било где у федиверсу. about_mastodon_html: Мастодон је друштвена мрежа базирана на отвореним протоколима и слободном софтверу отвореног кода. Децентрализована је као што је децентрализована е-пошта. about_this: О инстанци administered_by: 'Администрирано од стране:' apps: Мобилне апликације - browse_directory: Прегледајте директоријум налога и филтрирајте према интересовањима contact: Контакт contact_missing: Није постављено documentation: Документација @@ -300,9 +298,6 @@ sr: deletion: desc_html: Дозволи свима да могу да обришу свој налог title: Отвори брисање налога - show_known_fediverse_at_about_page: - desc_html: Када се упали, показаће трубе из свих знаних федиверса на преглед. У супротном ће само показати локалне трубе. - title: Покажи познате здружене инстанце у прегледнику временске линије site_description: desc_html: Уводни пасус на насловној страни и у meta HTML таговима. Можете користити HTML тагове, конкретно <a> и <em>. title: Опис инстанце @@ -396,10 +391,6 @@ sr: confirm_password: Унесите тренутну лозинку да бисмо проверили Ваш идентитет proceed: Обриши налог success_msg: Ваш налог је успешно обрисан - directories: - directory: Директоријум налога - explanation: Откријте кориснике на основу њихових интереса - explore_mastodon: Истражи %{title} errors: '400': The request you submitted was invalid or malformed. '403': Немате дозвола да видите ову страну. diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 6ea6bbfb7e..29c76c226c 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -1,7 +1,6 @@ --- sv: about: - about_hashtag_html: Dessa är offentliga toots märkta med #%{hashtag}. Du kan interagera med dem om du har ett konto någonstans i federationen. about_mastodon_html: Mastodon är ett socialt nätverk baserat på öppna webbprotokoll och gratis, öppen källkodsprogramvara. Det är decentraliserat som e-post. about_this: Om active_count_after: aktiv @@ -10,14 +9,11 @@ sv: api: API apps: Mobilappar apps_platforms: Använd Mastodon från iOS, Android och andra plattformar - browse_directory: Titta på en profilkatalog och filtrera enligt intressen - browse_local_posts: Titta på strömmande publika inlägg från denna server browse_public_posts: Titta på strömmande publika inlägg på Mastodon contact: Kontakt contact_missing: Inte inställd contact_unavailable: Ej tillämplig continue_to_web: Fortsätt till webbtjänst - discover_users: Upptäck användare documentation: Dokumentation federation_hint_html: Med ett konto på %{instance} kommer du att kunna följa personer på alla Mastodon-servers och mer än så. get_apps: Prova en mobilapp @@ -561,9 +557,6 @@ sv: none: Ingen kan registrera open: Alla kan registrera title: Registreringsläge - show_known_fediverse_at_about_page: - desc_html: När den växlas, kommer toots från hela fediverse visas på förhandsvisning. Annars visas bara lokala toots. - title: Visa det kända fediverse på tidslinjens förhandsgranskning site_description: desc_html: Inledande stycke på framsidan och i metataggar. Du kan använda HTML-taggar, i synnerhet <a> och <em>. title: Instansbeskrivning @@ -738,10 +731,6 @@ sv: irreversible: Du kan inte återställa eller återaktivera ditt konto username_available: Ditt användarnamn kommer att bli tillgängligt igen username_unavailable: Ditt användarnamn kommer att fortsätta vara otillgängligt - directories: - directory: Profil-mapp - explanation: Upptäck användare baserat på deras intressen - explore_mastodon: Utforska %{title} disputes: strikes: approve_appeal: Godkänn förfrågan diff --git a/config/locales/ta.yml b/config/locales/ta.yml index ea17883020..4523558b06 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -9,13 +9,10 @@ ta: api: செயலிக்கான மென்பொருள் இடைமுகம் API apps: கைப்பேசி செயலிகள் apps_platforms: மஸ்டோடோனை ஐஓஎஸ், ஆன்டிராய்டு, மற்றும் பிற இயங்குதளங்களில் பயன்படுத்துக - browse_directory: தன்விவரக் கோப்புகளைப் பார்த்து உங்கள் விருப்பங்களுக்கேற்பத் தேர்வு செய்க - browse_local_posts: நேரலையில் பொதுப் பதிவுகளை இந்த வழங்கியிலிருந்து காண்க browse_public_posts: நேரலையில் பொதுப் பதிவுகளை மஸ்டோடோனிலிருந்து காண்க contact: தொடர்புக்கு contact_missing: நிறுவப்படவில்லை contact_unavailable: பொ/இ - discover_users: பயனர்களை அறிக documentation: ஆவணச்சான்று get_apps: கைப்பேசி செயலியை முயற்சி செய்யவும் hosted_on: மாஸ்டோடாண் %{domain} இனையத்தில் இயங்குகிறது diff --git a/config/locales/te.yml b/config/locales/te.yml index 3f0c80980f..5a775806b2 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -1,7 +1,6 @@ --- te: about: - about_hashtag_html: ఇవి #%{hashtag}తో ట్గాగ్ చేయబడిన పబ్లిక్ టూట్లు. ఫెడివర్స్ లో ఎక్కడ ఖాతావున్నా వీటిలో పాల్గొనవచ్చు. about_mastodon_html: మాస్టొడాన్ అనేది ఒక సామాజిక మాధ్యమం. ఇది పూర్తిగా ఉచితం మరియు స్వేచ్ఛా సాఫ్టువేరు. ఈమెయిల్ లాగానే ఇది వికేంద్రీకరించబడినది. about_this: గురించి administered_by: 'నిర్వహణలో:' diff --git a/config/locales/th.yml b/config/locales/th.yml index ab7182e1ee..a0ce8752a2 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1,7 +1,6 @@ --- th: about: - about_hashtag_html: นี่คือโพสต์สาธารณะที่ได้รับการแท็กด้วย #%{hashtag} คุณสามารถโต้ตอบกับโพสต์ได้หากคุณมีบัญชีที่ใดก็ตามในจักรวาลสหพันธ์ about_mastodon_html: 'เครือข่ายสังคมแห่งอนาคต: ไม่มีโฆษณา ไม่มีการสอดแนมโดยองค์กร การออกแบบตามหลักจริยธรรม และการกระจายศูนย์! เป็นเจ้าของข้อมูลของคุณด้วย Mastodon!' about_this: เกี่ยวกับ active_count_after: ใช้งานอยู่ @@ -10,14 +9,11 @@ th: api: API apps: แอปมือถือ apps_platforms: ใช้ Mastodon จาก iOS, Android และแพลตฟอร์มอื่น ๆ - browse_directory: เรียกดูไดเรกทอรีโปรไฟล์และกรองตามความสนใจ - browse_local_posts: เรียกดูสตรีมสดของโพสต์สาธารณะจากเซิร์ฟเวอร์นี้ browse_public_posts: เรียกดูสตรีมสดของโพสต์สาธารณะใน Mastodon contact: ติดต่อ contact_missing: ไม่ได้ตั้ง contact_unavailable: ไม่มี continue_to_web: ดำเนินการต่อไปยังแอปเว็บ - discover_users: ค้นพบผู้ใช้ documentation: เอกสารประกอบ federation_hint_html: ด้วยบัญชีที่ %{instance} คุณจะสามารถติดตามผู้คนในเซิร์ฟเวอร์ Mastodon และอื่น ๆ get_apps: ลองแอปมือถือ @@ -755,9 +751,6 @@ th: none: ไม่มีใครสามารถลงทะเบียน open: ใครก็ตามสามารถลงทะเบียน title: โหมดการลงทะเบียน - show_known_fediverse_at_about_page: - desc_html: เมื่อปิดใช้งาน จำกัดเส้นเวลาสาธารณะที่เชื่อมโยงจากหน้าเริ่มต้นให้แสดงเฉพาะเนื้อหาในเซิร์ฟเวอร์เท่านั้น - title: รวมเนื้อหาที่ติดต่อกับภายนอกไว้ในหน้าเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง site_description: desc_html: ย่อหน้าเกริ่นนำใน API อธิบายถึงสิ่งที่ทำให้เซิร์ฟเวอร์ Mastodon นี้พิเศษและสิ่งอื่นใดที่สำคัญ คุณสามารถใช้แท็ก HTML โดยเฉพาะอย่างยิ่ง <a> และ <em> title: คำอธิบายเซิร์ฟเวอร์ @@ -1060,10 +1053,6 @@ th: more_details_html: สำหรับรายละเอียดเพิ่มเติม ดู นโยบายความเป็นส่วนตัว username_available: ชื่อผู้ใช้ของคุณจะพร้อมใช้งานอีกครั้ง username_unavailable: ชื่อผู้ใช้ของคุณจะยังคงไม่พร้อมใช้งาน - directories: - directory: ไดเรกทอรีโปรไฟล์ - explanation: ค้นพบผู้ใช้ตามความสนใจของเขา - explore_mastodon: สำรวจ %{title} disputes: strikes: action_taken: การกระทำที่ใช้ diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 74fbf4be2e..975620092c 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1,7 +1,6 @@ --- tr: about: - about_hashtag_html: Bunlar #%{hashtag} ile etiketlenen genel gönderiler. Fediverse içinde herhangi bir yerde bir hesabınız varsa, onlarla etkileşime geçebilirsiniz. about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir. about_this: Hakkında active_count_after: etkin @@ -10,14 +9,11 @@ tr: api: API apps: Mobil uygulamalar apps_platforms: İos, Android ve diğer platformlardaki Mastodon'u kullanın - browse_directory: Bir profil dizinine göz atın ve ilgi alanlarına göre filtreleyin - browse_local_posts: Bu sunucudaki herkese açık yayınlara göz atın browse_public_posts: Mastodon'daki herkese açık yayınlara göz atın contact: İletişim contact_missing: Ayarlanmadı contact_unavailable: Yok continue_to_web: Web uygulamasına git - discover_users: Kullanıcıları keşfet documentation: Belgeler federation_hint_html: "%{instance} hesabınızla, herhangi bir Mastodon sunucusundaki ve haricindeki kişileri takip edebilirsiniz." get_apps: Bir mobil uygulamayı deneyin @@ -783,9 +779,6 @@ tr: none: Hiç kimse kayıt olamaz open: Herkes kaydolabilir title: Kayıt modu - show_known_fediverse_at_about_page: - desc_html: Değiştirildiğinde, bilinen bütün fediverse'lerden gönderileri ön izlemede gösterir. Diğer türlü sadece yerel gönderileri gösterecektir. - title: Zaman çizelgesi ön izlemesinde bilinen fediverse'i göster site_description: desc_html: Ana sayfada paragraf olarak görüntülenecek bilgidir.
Özellikle <a> ve <em> olmak suretiyle HTML etiketlerini kullanabilirsiniz. title: Site açıklaması @@ -1109,10 +1102,6 @@ tr: more_details_html: Daha fazla ayrıntı için, gizlilik politikasına göz atın. username_available: Kullanıcı adınız tekrar kullanılabilir olacaktır username_unavailable: Kullanıcı adınız kullanılamaz kalacaktır - directories: - directory: Profil Dizini - explanation: Kullanıcıları ilgi alanlarına göre keşfedin - explore_mastodon: "%{title} sunucusunu keşfet" disputes: strikes: action_taken: Yapılan işlem diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 6d411bf8d9..63a262876e 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1,7 +1,6 @@ --- uk: about: - about_hashtag_html: Це публічні дописи, позначені символом #%{hashtag}. Ви можете взаємодіяти з ними, якщо маєте обліковий запис будь-де у федесвіті. about_mastodon_html: 'Соціальна мережа майбутнього: жодної реклами, жодного корпоративного нагляду, етичний дизайн та децентралізація! З Mastodon ваші дані під вашим контролем!' about_this: Про цей сервер active_count_after: активних @@ -10,14 +9,11 @@ uk: api: API apps: Мобільні застосунки apps_platforms: Користуйтесь Mastodon на iOS, Android та інших платформах - browse_directory: Переглядайте каталог профілів та фільтруйте за інтересами - browse_local_posts: Переглядайте потік публічних постів з цього сервера browse_public_posts: Переглядайте потік публічних постів на Mastodon contact: Зв'язатися contact_missing: Не зазначено contact_unavailable: Недоступно continue_to_web: Перейти до вебзастосунку - discover_users: Знайдіть цікавих користувачів documentation: Документація federation_hint_html: З обліковим записом на %{instance} ви зможете слідкувати за людьми на будь-якому сервері Mastodon та поза ним. get_apps: Спробуйте мобільний додаток @@ -808,9 +804,6 @@ uk: none: Ніхто не може увійти open: Будь-хто може увійти title: Режим реєстрації - show_known_fediverse_at_about_page: - desc_html: Коли увімкнено, будуть показані пости з усього відомого федисвіту у передпоказі. Інакше будуть показані лише локальні дмухи. - title: Показувати доступний федисвіт у передпоказі стрічки site_description: desc_html: Відображається у якості параграфа на титульній сторінці та використовується у якості мета-тега.
Можна використовувати HTML-теги, особливо <a> і <em>. title: Опис сервера @@ -1142,10 +1135,6 @@ uk: more_details_html: Подробиці за посиланням політика конфіденційності. username_available: Ваше ім'я користувача стане доступним для використання username_unavailable: Ваше ім'я користувача залишиться недоступним для використання - directories: - directory: Каталог профілів - explanation: Шукайте користувачів за їх інтересами - explore_mastodon: Досліджуйте %{title} disputes: strikes: action_taken: Дію виконано diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 0343ef867d..8da12eca53 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1,7 +1,6 @@ --- vi: about: - about_hashtag_html: Đây là các tút #%{hashtag} trên mạng liên hợp. Bạn có thể tương tác với chúng sau khi đăng nhập. about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không bán thông tin người dùng và phi tập trung! Làm chủ dữ liệu của bạn với Mastodon!' about_this: Giới thiệu active_count_after: hoạt động @@ -10,14 +9,11 @@ vi: api: API apps: Apps apps_platforms: Lướt Mastodon trên iOS, Android và các nền tảng khác - browse_directory: Bạn bè từ khắp mọi nơi trên thế giới - browse_local_posts: Xem những gì đang xảy ra browse_public_posts: Đọc thử những tút công khai trên Mastodon contact: Liên lạc contact_missing: Chưa thiết lập contact_unavailable: N/A continue_to_web: Xem trong web - discover_users: Thành viên documentation: Tài liệu federation_hint_html: Đăng ký tài khoản %{instance} là bạn có thể giao tiếp với bất cứ ai trên bất kỳ máy chủ Mastodon nào và còn hơn thế nữa. get_apps: Ứng dụng di động @@ -137,8 +133,8 @@ vi: ip: IP joined: Đã tham gia location: - all: Toàn bộ - local: Máy chủ của bạn + all: Tất cả + local: Máy chủ này remote: Máy chủ khác title: Vị trí login_status: Trạng thái tài khoản @@ -148,8 +144,8 @@ vi: memorialized_msg: Đã chuyển %{username} thành tài khoản tưởng nhớ moderation: active: Hoạt động - all: Toàn bộ - pending: Chờ xử lý + all: Tất cả + pending: Chờ silenced: Hạn chế suspended: Vô hiệu hóa title: Trạng thái @@ -624,7 +620,7 @@ vi: create_and_resolve: Xử lý create_and_unresolve: Mở lại kèm lưu ý mới delete: Xóa bỏ - placeholder: Mô tả vi phạm của người này, mức độ xử lý và những cập nhật liên quan khác... + placeholder: Mô tả vi phạm của người này, hướng xử lý và những cập nhật liên quan khác... title: Lưu ý notes_description_html: Xem và để lại lưu ý cho các kiểm duyệt viên khác quick_actions_description_html: 'Kiểm duyệt nhanh hoặc kéo xuống để xem nội dung bị báo cáo:' @@ -765,9 +761,6 @@ vi: none: Không ai có thể đăng ký open: Bất cứ ai cũng có thể đăng ký title: Chế độ đăng ký - show_known_fediverse_at_about_page: - desc_html: Nếu tắt, bảng tin sẽ chỉ hiển thị nội dung do người dùng của máy chủ này tạo ra - title: Bao gồm nội dung từ mạng liên hợp trên bảng tin không được cho phép site_description: desc_html: Nội dung giới thiệu về máy chủ. Mô tả những gì làm cho máy chủ Mastodon này đặc biệt và bất cứ điều gì quan trọng khác. Bạn có thể dùng các thẻ HTML, đặc biệt là <a><em>. title: Mô tả máy chủ @@ -1087,10 +1080,6 @@ vi: more_details_html: Đọc chính sách bảo mật để biết thêm chi tiết. username_available: Tên người dùng của bạn sẽ có thể đăng ký lại username_unavailable: Tên người dùng của bạn sẽ không thể đăng ký mới - directories: - directory: Khám phá - explanation: Tìm những người chung sở thích - explore_mastodon: Thành viên %{title} disputes: strikes: action_taken: Hành động áp dụng @@ -1412,12 +1401,12 @@ vi: most_recent: Mới nhất moved: Đã xóa mutual: Đồng thời - primary: Bình thường + primary: Hoạt động relationship: Quan hệ remove_selected_domains: Xóa hết người theo dõi từ các máy chủ đã chọn remove_selected_followers: Xóa những người theo dõi đã chọn remove_selected_follows: Ngưng theo dõi những người đã chọn - status: Trạng thái tài khoản + status: Trạng thái của họ remote_follow: acct: Nhập địa chỉ Mastodon của bạn (tên@máy chủ) missing_resource: Không tìm thấy URL chuyển hướng cho tài khoản của bạn diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index e0f968db82..cb6794cbba 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1,7 +1,6 @@ --- zh-CN: about: - about_hashtag_html: 这里展示的是带有话题标签 #%{hashtag} 的公开嘟文。如果你想与他们互动,你需要在任意一个 Mastodon 站点或与其兼容的网站上拥有一个帐户。 about_mastodon_html: Mastodon 是一个建立在开放式网络协议和自由、开源软件之上的社交网络,有着类似于电子邮件的分布式设计。 about_this: 关于本站 active_count_after: 活跃用户 @@ -10,14 +9,11 @@ zh-CN: api: API apps: 移动应用 apps_platforms: 在 iOS、Android 和其他平台上使用 Mastodon - browse_directory: 浏览用户目录并按兴趣筛选 - browse_local_posts: 浏览此服务器上实时公开嘟文 browse_public_posts: 浏览 Mastodon 上公共嘟文的实时信息流 contact: 联系方式 contact_missing: 未设定 contact_unavailable: 未公开 continue_to_web: 继续前往网页应用 - discover_users: 发现用户 documentation: 文档 federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容 Mastodon 服务器上的人。 get_apps: 尝试移动应用 @@ -767,9 +763,6 @@ zh-CN: none: 关闭注册 open: 开放注册 title: 注册模式 - show_known_fediverse_at_about_page: - desc_html: 如果开启,就会在时间轴预览显示其他站点嘟文,否则就只会只显示本站嘟文。 - title: 在时间轴预览中显示其他站点嘟文 site_description: desc_html: 首页上的介绍文字。 描述一下本 Mastodon 实例的特殊之处以及其他重要信息。可以使用 HTML 标签,包括 <a><em> 。 title: 本站简介 @@ -1089,10 +1082,6 @@ zh-CN: more_details_html: 更多细节,请查看 隐私政策 。 username_available: 你的用户名现在又可以使用了 username_unavailable: 你的用户名仍将无法使用 - directories: - directory: 用户目录 - explanation: 根据兴趣发现用户 - explore_mastodon: 探索 %{title} disputes: strikes: action_taken: 采取的措施 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 8696b40d25..2fab31a003 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -1,7 +1,6 @@ --- zh-HK: about: - about_hashtag_html: 這些是包含「#%{hashtag}」標籤的公開文章。只要你是任何聯盟網站的用戶,便可以與他們互動。 about_mastodon_html: Mastodon(萬象)是屬於未來的社交網路︰無廣告煩擾、無企業監控、設計講道義、分散無大台!立即重奪個人資料的控制權,使用 Mastodon 吧! about_this: 關於本伺服器 active_count_after: 活躍 @@ -10,13 +9,10 @@ zh-HK: api: API apps: 手機 App apps_platforms: 在 iOS、Android 和其他平台使用 Mastodon - browse_directory: 依興趣瀏覽個人資料目錄和過濾器 - browse_local_posts: 瀏覽這個伺服器的公開文章即時串流 browse_public_posts: 在 Mastodon 瀏覽公開文章的即時串流 contact: 聯絡 contact_missing: 未設定 contact_unavailable: 不適用 - discover_users: 探索使用者 documentation: 說明文件 federation_hint_html: 你只需要擁有 %{instance} 的帳戶,就可以追蹤任何 Mastodon 服務站上的人! get_apps: 嘗試使用手機 App @@ -564,9 +560,6 @@ zh-HK: none: 沒有人可註冊 open: 任何人皆能註冊 title: 註冊模式 - show_known_fediverse_at_about_page: - desc_html: 如果停用,將會只在本站的歡迎頁顯示本站的文章。 - title: 在訪客預覽本站的時間軸上,顯示跨站文章 site_description: desc_html: 在首頁顯示,及在 meta 標籤使用作網站介紹。
你可以在此使用 <a><em> 等 HTML 標籤。 title: 本站介紹 @@ -756,10 +749,6 @@ zh-HK: more_details_html: 請參見隱私政策以瀏覽細節。 username_available: 你的登入名稱將可被其他人使用 username_unavailable: 你的登入名稱將不能讓其他人使用 - directories: - directory: 個人資料目錄 - explanation: 根據興趣認識新朋友 - explore_mastodon: 探索%{title} domain_validator: invalid_domain: 不是一個可用域名 errors: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 29af27c66a..9745d07edc 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1,7 +1,6 @@ --- zh-TW: about: - about_hashtag_html: 這些是包含「#%{hashtag}」標籤的公開文章。只要您有任何 Mastodon 站點、或者其他聯邦宇宙的使用者,便可以與他們互動。 about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳號,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的社群網路交流。 about_this: 關於本站 active_count_after: 活躍 @@ -10,14 +9,11 @@ zh-TW: api: API apps: 行動應用程式 apps_platforms: 在 iOS、Android 和其他平台使用 Mastodon - browse_directory: 依興趣瀏覽個人資料目錄和過濾器 - browse_local_posts: 瀏覽這台伺服器中公開嘟文的直播串流 browse_public_posts: 在 Mastodon 瀏覽公開嘟文的即時串流 contact: 聯絡我們 contact_missing: 未設定 contact_unavailable: 未公開 continue_to_web: 於網頁程式中繼續 - discover_users: 探索使用者 documentation: 文件 federation_hint_html: 您只需要擁有 %{instance} 的帳號,就可以追蹤任何一台 Mastodon 伺服器上的人等等。 get_apps: 嘗試行動應用程式 @@ -769,9 +765,6 @@ zh-TW: none: 沒有人可註冊 open: 任何人皆能註冊 title: 註冊模式 - show_known_fediverse_at_about_page: - desc_html: 如果開啟,就會在時間軸預覽顯示其他站點嘟文,否則就只會顯示本站點嘟文。 - title: 在時間軸預覽顯示其他站點嘟文 site_description: desc_html: 首頁上的介紹文字,描述此 Mastodon 伺服器的特別之處和其他重要資訊。可使用 HTML 標籤,包括 <a><em>。 title: 伺服器描述 @@ -1091,10 +1084,6 @@ zh-TW: more_details_html: 更多詳細資訊,請參閲隱私政策。 username_available: 您的使用者名稱將會釋出供他人使用 username_unavailable: 您的使用者名稱將會保留並不予他人使用 - directories: - directory: 個人資料目錄 - explanation: 根據興趣去發現新朋友 - explore_mastodon: 探索%{title} disputes: strikes: action_taken: 採取的行動 From 679274465b3a2aaf87a13553f08104d6d3f1d275 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Oct 2022 18:57:33 +0200 Subject: [PATCH 008/500] Add server rules to sign-up flow (#19296) --- .../auth/registrations_controller.rb | 16 +++++- .../styles/mastodon/containers.scss | 6 +-- app/javascript/styles/mastodon/forms.scss | 49 ++++++++++++++++--- app/views/auth/registrations/new.html.haml | 29 ++++++----- app/views/auth/registrations/rules.html.haml | 20 ++++++++ config/locales/en.yml | 11 +++-- 6 files changed, 101 insertions(+), 30 deletions(-) create mode 100644 app/views/auth/registrations/rules.html.haml diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 7e86e01baa..84a802447b 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -14,6 +14,8 @@ class Auth::RegistrationsController < Devise::RegistrationsController before_action :set_body_classes, only: [:new, :create, :edit, :update] before_action :require_not_suspended!, only: [:update] before_action :set_cache_headers, only: [:edit, :update] + before_action :set_rules, only: :new + before_action :require_rules_acceptance!, only: :new before_action :set_registration_form_time, only: :new skip_before_action :require_functional!, only: [:edit, :update] @@ -55,7 +57,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController def configure_sign_up_params devise_parameter_sanitizer.permit(:sign_up) do |u| - u.permit({ account_attributes: [:username], invite_request_attributes: [:text] }, :email, :password, :password_confirmation, :invite_code, :agreement, :website, :confirm_password) + u.permit({ account_attributes: [:username, :display_name], invite_request_attributes: [:text] }, :email, :password, :password_confirmation, :invite_code, :agreement, :website, :confirm_password) end end @@ -138,6 +140,18 @@ class Auth::RegistrationsController < Devise::RegistrationsController forbidden if current_account.suspended? end + def set_rules + @rules = Rule.ordered + end + + def require_rules_acceptance! + return if @rules.empty? || (session[:accept_token].present? && params[:accept] == session[:accept_token]) + + @accept_token = session[:accept_token] = SecureRandom.hex + + set_locale { render :rules } + end + def set_cache_headers response.headers['Cache-Control'] = 'no-cache, no-store, max-age=0, must-revalidate' end diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss index 5703a64e36..01ee562196 100644 --- a/app/javascript/styles/mastodon/containers.scss +++ b/app/javascript/styles/mastodon/containers.scss @@ -9,11 +9,7 @@ } .logo-container { - margin: 100px auto 50px; - - @media screen and (max-width: 500px) { - margin: 40px auto 0; - } + margin: 50px auto; h1 { display: flex; diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index a6419821f4..3d67f3b567 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -6,9 +6,10 @@ code { } .form-container { - max-width: 400px; + max-width: 450px; padding: 20px; - margin: 0 auto; + padding-bottom: 50px; + margin: 50px auto; } .indicator-icon { @@ -124,11 +125,32 @@ code { } .title { - color: #d9e1e8; - font-size: 20px; - line-height: 28px; - font-weight: 400; + font-size: 28px; + line-height: 33px; + font-weight: 700; + margin-bottom: 15px; + } + + .lead { + font-size: 17px; + line-height: 22px; + color: $secondary-text-color; + margin-bottom: 30px; + } + + .rules-list { + list-style: decimal; + font-size: 17px; + line-height: 22px; + font-weight: 500; + background: transparent; + border: 0; + padding: 0.5em 1em !important; margin-bottom: 30px; + + li { + border-color: lighten($ui-base-color, 8%); + } } .hint { @@ -461,6 +483,11 @@ code { } } + .stacked-actions { + margin-top: 30px; + margin-bottom: 15px; + } + button, .button, .block-button { @@ -512,6 +539,16 @@ code { } } + .button.button-tertiary { + padding: 9px; + + &:hover, + &:focus, + &:active { + padding: 10px; + } + } + select { appearance: none; box-sizing: border-box; diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml index 6981195ed9..5eb3f937c3 100644 --- a/app/views/auth/registrations/new.html.haml +++ b/app/views/auth/registrations/new.html.haml @@ -5,6 +5,9 @@ = render partial: 'shared/og', locals: { description: description_for_sign_up } = simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { novalidate: false }) do |f| + %h1.title= t('auth.sign_up.title', domain: site_hostname) + %p.lead= t('auth.sign_up.preamble') + = render 'shared/error_messages', object: resource - if @invite.present? && @invite.autofollow? @@ -12,31 +15,27 @@ %p.hint= t('invites.invited_by') = render 'application/card', account: @invite.user.account - = f.simple_fields_for :account do |ff| - .fields-group - = ff.input :username, wrapper: :with_label, autofocus: true, label: t('simple_form.labels.defaults.username'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username'), :autocomplete => 'off', pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, append: "@#{site_hostname}", hint: t('simple_form.hints.defaults.username', domain: site_hostname) - - .fields-group - = f.input :email, wrapper: :with_label, label: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email'), :autocomplete => 'off' } - .fields-group - = f.input :password, wrapper: :with_label, label: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off', :minlength => User.password_length.first, :maxlength => User.password_length.last } - - .fields-group - = f.input :password_confirmation, wrapper: :with_label, label: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'off' } - = f.input :confirm_password, as: :string, wrapper: :with_label, label: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), :autocomplete => 'off' } - - = f.input :website, as: :url, wrapper: :with_label, label: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: 'Website'), :autocomplete => 'off' } + = f.simple_fields_for :account do |ff| + = ff.input :display_name, wrapper: :with_label, label: false, required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.display_name'), :autocomplete => 'off', placeholder: t('simple_form.labels.defaults.display_name') } + = ff.input :username, wrapper: :with_label, label: false, required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username'), :autocomplete => 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, append: "@#{site_hostname}", hint: false + = f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email'), :autocomplete => 'off' }, hint: false + = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'new-password', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: false + = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'new-password' }, hint: false + = f.input :confirm_password, as: :string, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), :autocomplete => 'off' }, hint: false + = f.input :website, as: :url, wrapper: :with_label, label: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: 'Website'), :autocomplete => 'off' } - if approved_registrations? && !@invite.present? .fields-group = f.simple_fields_for :invite_request, resource.invite_request || resource.build_invite_request do |invite_request_fields| = invite_request_fields.input :text, as: :text, wrapper: :with_block_label, required: Setting.require_invite_text + + = hidden_field_tag :accept, params[:accept] = f.input :invite_code, as: :hidden .fields-group - = f.input :agreement, as: :boolean, wrapper: :with_label, label: whitelist_mode? ? t('auth.checkbox_agreement_without_rules_html', terms_path: terms_path) : t('auth.checkbox_agreement_html', rules_path: about_more_path, terms_path: terms_path), required: true + = f.input :agreement, as: :boolean, wrapper: :with_label, label: t('auth.privacy_policy_agreement_html', rules_path: about_more_path, privacy_policy_path: privacy_policy_path), required: true .actions = f.button :button, @invite.present? ? t('auth.register') : sign_up_message, type: :submit diff --git a/app/views/auth/registrations/rules.html.haml b/app/views/auth/registrations/rules.html.haml new file mode 100644 index 0000000000..a41581b324 --- /dev/null +++ b/app/views/auth/registrations/rules.html.haml @@ -0,0 +1,20 @@ +- content_for :page_title do + = t('auth.register') + +- content_for :header_tags do + = render partial: 'shared/og', locals: { description: description_for_sign_up } + +.simple_form + %h1.title= t('auth.rules.title') + %p.lead= t('auth.rules.preamble', domain: site_hostname) + + %ol.rules-list + - @rules.each do |rule| + %li + .rules-list__text= rule.text + + .stacked-actions + = link_to t('auth.rules.accept'), new_user_registration_path(accept: @accept_token), class: 'button' + = link_to t('auth.rules.back'), root_path, class: 'button button-tertiary' + +.form-footer= render 'auth/shared/links' diff --git a/config/locales/en.yml b/config/locales/en.yml index 8f4ea652b9..5050cee423 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1001,10 +1001,8 @@ en: warning: Be very careful with this data. Never share it with anyone! your_token: Your access token auth: - apply_for_account: Request an invite + apply_for_account: Get on waitlist change_password: Password - checkbox_agreement_html: I agree to the server rules and terms of service - checkbox_agreement_without_rules_html: I agree to the terms of service delete_account: Delete account delete_account_html: If you wish to delete your account, you can proceed here. You will be asked for confirmation. description: @@ -1023,6 +1021,7 @@ en: migrate_account: Move to a different account migrate_account_html: If you wish to redirect this account to a different one, you can configure it here. or_log_in_with: Or log in with + privacy_policy_agreement_html: I have read and agree to the privacy policy providers: cas: CAS saml: SAML @@ -1030,12 +1029,18 @@ en: registration_closed: "%{instance} is not accepting new members" resend_confirmation: Resend confirmation instructions reset_password: Reset password + rules: + preamble: These are set and enforced by the %{domain} moderators. + title: Some ground rules. security: Security set_new_password: Set new password setup: email_below_hint_html: If the below e-mail address is incorrect, you can change it here and receive a new confirmation e-mail. email_settings_hint_html: The confirmation e-mail was sent to %{email}. If that e-mail address is not correct, you can change it in account settings. title: Setup + sign_up: + preamble: With an account on this Mastodon server, you'll be able to follow any other person on the network, regardless of where their account is hosted. + title: Let's get you set up on %{domain}. status: account_status: Account status confirming: Waiting for e-mail confirmation to be completed. From 5fd46dddd7b1d5482c3173c8bcfba0899293307f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 6 Oct 2022 00:03:52 +0200 Subject: [PATCH 009/500] Remove unnecessary sections from welcome e-mail (#19299) --- app/views/user_mailer/welcome.html.haml | 47 +------------------------ app/views/user_mailer/welcome.text.erb | 13 ------- config/locales/en.yml | 11 ++---- 3 files changed, 3 insertions(+), 68 deletions(-) diff --git a/app/views/user_mailer/welcome.html.haml b/app/views/user_mailer/welcome.html.haml index 1f75ff48ae..3ab994ad3f 100644 --- a/app/views/user_mailer/welcome.html.haml +++ b/app/views/user_mailer/welcome.html.haml @@ -76,26 +76,7 @@ %td.button-primary = link_to settings_profile_url do %span= t 'user_mailer.welcome.edit_profile_action' - %tr - %td.content-cell - .email-row - .col-4 - %table.column{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.column-cell.padded - = t 'user_mailer.welcome.review_preferences_step' - .col-2 - %table.column{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.column-cell.padded - %table.button.button-small{ align: 'left', cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.button-primary - = link_to settings_preferences_url do - %span= t 'user_mailer.welcome.review_preferences_action' + %tr %td.content-cell.padded-bottom .email-row @@ -116,29 +97,3 @@ %td.button-primary = link_to web_url do %span= t 'user_mailer.welcome.final_action' - -%table.email-table{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.email-body - .email-container - %table.content-section{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.content-cell.border-top - .email-row - .col-6 - %table.column{ cellspacing: 0, cellpadding: 0 } - %tbody - %tr - %td.column-cell.padded - %h5= t 'user_mailer.welcome.tips' - %ul - %li - %span= t 'user_mailer.welcome.tip_mobile_webapp' - %li - %span= t 'user_mailer.welcome.tip_following' - %li - %span= t 'user_mailer.welcome.tip_local_timeline', instance: @instance - %li - %span= t 'user_mailer.welcome.tip_federated_timeline' diff --git a/app/views/user_mailer/welcome.text.erb b/app/views/user_mailer/welcome.text.erb index e310d7ca6f..d78cdb938a 100644 --- a/app/views/user_mailer/welcome.text.erb +++ b/app/views/user_mailer/welcome.text.erb @@ -11,19 +11,6 @@ => <%= settings_profile_url %> -<%= t 'user_mailer.welcome.review_preferences_step' %> - -=> <%= settings_preferences_url %> - <%= t 'user_mailer.welcome.final_step' %> => <%= web_url %> - ---- - -<%= t 'user_mailer.welcome.tips' %> - -* <%= t 'user_mailer.welcome.tip_mobile_webapp' %> -* <%= t 'user_mailer.welcome.tip_following' %> -* <%= t 'user_mailer.welcome.tip_local_timeline', instance: @instance %> -* <%= t 'user_mailer.welcome.tip_federated_timeline' %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 5050cee423..0f2e08ee74 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1792,20 +1792,13 @@ en: suspend: Account suspended welcome: edit_profile_action: Setup profile - edit_profile_step: You can customize your profile by uploading an avatar, header, changing your display name and more. If you’d like to review new followers before they’re allowed to follow you, you can lock your account. + edit_profile_step: You can customize your profile by uploading a profile picture, changing your display name and more. You can opt-in to review new followers before they’re allowed to follow you. explanation: Here are some tips to get you started final_action: Start posting - final_step: 'Start posting! Even without followers your public posts may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.' + final_step: 'Start posting! Even without followers, your public posts may be seen by others, for example on the local timeline or in hashtags. You may want to introduce yourself on the #introductions hashtag.' full_handle: Your full handle full_handle_hint: This is what you would tell your friends so they can message or follow you from another server. - review_preferences_action: Change preferences - review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay. subject: Welcome to Mastodon - tip_federated_timeline: The federated timeline is a firehose view of the Mastodon network. But it only includes people your neighbours are subscribed to, so it's not complete. - tip_following: You follow your server's admin(s) by default. To find more interesting people, check the local and federated timelines. - tip_local_timeline: The local timeline is a firehose view of people on %{instance}. These are your immediate neighbours! - tip_mobile_webapp: If your mobile browser offers you to add Mastodon to your homescreen, you can receive push notifications. It acts like a native app in many ways! - tips: Tips title: Welcome aboard, %{name}! users: follow_limit_reached: You cannot follow more than %{limit} people From 58d5b28cb00ffadfeb7a3e1e03f7ae0d3b0d8486 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 6 Oct 2022 02:19:45 +0200 Subject: [PATCH 010/500] Remove previous landing page (#19300) --- app/controllers/about_controller.rb | 5 +- app/views/about/_logged_in.html.haml | 10 ---- app/views/about/_login.html.haml | 22 -------- app/views/about/_registration.html.haml | 37 ------------ app/views/about/show.html.haml | 69 ----------------------- config/locales/en.yml | 14 ----- config/routes.rb | 2 +- spec/controllers/about_controller_spec.rb | 22 -------- spec/requests/localization_spec.rb | 12 ++-- spec/views/about/show.html.haml_spec.rb | 25 -------- 10 files changed, 8 insertions(+), 210 deletions(-) delete mode 100644 app/views/about/_logged_in.html.haml delete mode 100644 app/views/about/_login.html.haml delete mode 100644 app/views/about/_registration.html.haml delete mode 100644 app/views/about/show.html.haml delete mode 100644 spec/views/about/show.html.haml_spec.rb diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb index 8da4a19ab5..eae7de8c89 100644 --- a/app/controllers/about_controller.rb +++ b/app/controllers/about_controller.rb @@ -5,16 +5,13 @@ class AboutController < ApplicationController layout 'public' - before_action :require_open_federation!, only: [:show, :more] + before_action :require_open_federation!, only: [:more] before_action :set_body_classes, only: :show before_action :set_instance_presenter before_action :set_expires_in, only: [:more] - before_action :set_registration_form_time, only: :show skip_before_action :require_functional!, only: [:more] - def show; end - def more flash.now[:notice] = I18n.t('about.instance_actor_flash') if params[:instance_actor] diff --git a/app/views/about/_logged_in.html.haml b/app/views/about/_logged_in.html.haml deleted file mode 100644 index e1bcfffb31..0000000000 --- a/app/views/about/_logged_in.html.haml +++ /dev/null @@ -1,10 +0,0 @@ -.simple_form - %p.lead= t('about.logged_in_as_html', username: content_tag(:strong, current_account.username)) - - .actions - = link_to t('about.continue_to_web'), root_url, class: 'button button-primary' - -.form-footer - %ul.no-list - %li= link_to t('about.get_apps'), 'https://joinmastodon.org/apps', target: '_blank', rel: 'noopener noreferrer' - %li= link_to t('auth.logout'), destroy_user_session_path, data: { method: :delete } diff --git a/app/views/about/_login.html.haml b/app/views/about/_login.html.haml deleted file mode 100644 index 0f19e81643..0000000000 --- a/app/views/about/_login.html.haml +++ /dev/null @@ -1,22 +0,0 @@ -- unless omniauth_only? - = simple_form_for(new_user, url: user_session_path, namespace: 'login') do |f| - .fields-group - - if use_seamless_external_login? - = f.input :email, placeholder: t('simple_form.labels.defaults.username_or_email'), input_html: { 'aria-label' => t('simple_form.labels.defaults.username_or_email') }, hint: false - - else - = f.input :email, placeholder: t('simple_form.labels.defaults.email'), input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }, hint: false - - = f.input :password, placeholder: t('simple_form.labels.defaults.password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.password') }, hint: false - - .actions - = f.button :button, t('auth.login'), type: :submit, class: 'button button-primary' - - %p.hint.subtle-hint= link_to t('auth.trouble_logging_in'), new_user_password_path - -- if Devise.mappings[:user].omniauthable? and User.omniauth_providers.any? - .simple_form.alternative-login - %h4= omniauth_only? ? t('auth.log_in_with') : t('auth.or_log_in_with') - - .actions - - User.omniauth_providers.each do |provider| - = provider_sign_in_link(provider) diff --git a/app/views/about/_registration.html.haml b/app/views/about/_registration.html.haml deleted file mode 100644 index 5db620b2d1..0000000000 --- a/app/views/about/_registration.html.haml +++ /dev/null @@ -1,37 +0,0 @@ -- disabled = closed_registrations? || omniauth_only? || current_account.present? -- show_message = disabled && (current_user.present? || @instance_presenter.closed_registrations_message.present?) - -.simple_form__overlay-area{ class: show_message ? 'simple_form__overlay-area__blurred' : '' } - = simple_form_for(new_user, url: user_registration_path, namespace: 'registration', html: { novalidate: false }) do |f| - %p.lead= t('about.federation_hint_html', instance: content_tag(:strong, site_hostname)) - - .fields-group - = f.simple_fields_for :account do |account_fields| - = account_fields.input :username, wrapper: :with_label, label: false, required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username'), :autocomplete => 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, append: "@#{site_hostname}", hint: false, disabled: disabled - - = f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email'), :autocomplete => 'off' }, hint: false, disabled: disabled - = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'new-password', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: false, disabled: disabled - = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'new-password' }, hint: false, disabled: disabled - - = f.input :confirm_password, as: :string, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), :autocomplete => 'off' }, hint: false, disabled: disabled - = f.input :website, as: :url, placeholder: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: 'Website'), :autocomplete => 'off' }, hint: false, disabled: disabled - - - if approved_registrations? - .fields-group - = f.simple_fields_for :invite_request do |invite_request_fields| - = invite_request_fields.input :text, as: :text, wrapper: :with_block_label, required: Setting.require_invite_text - - .fields-group - = f.input :agreement, as: :boolean, wrapper: :with_label, label: t('auth.checkbox_agreement_html', rules_path: about_more_path, terms_path: terms_path), required: true, disabled: disabled - - .actions - = f.button :button, sign_up_message, type: :submit, class: 'button button-primary', disabled: disabled - - - if show_message - .simple_form__overlay-area__overlay - .simple_form__overlay-area__overlay__content.rich-formatting - .block-icon= fa_icon 'warning' - - if current_account.present? - = t('about.logout_before_registering') - - else - = @instance_presenter.closed_registrations_message.html_safe diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml deleted file mode 100644 index 75124d5e27..0000000000 --- a/app/views/about/show.html.haml +++ /dev/null @@ -1,69 +0,0 @@ -- content_for :page_title do - = site_hostname - -- content_for :header_tags do - %link{ rel: 'canonical', href: about_url }/ - = render partial: 'shared/og' - -.landing - .landing__brand - = link_to root_url, class: 'brand' do - = logo_as_symbol(:wordmark) - %span.brand__tagline=t 'about.tagline' - - .landing__grid - .landing__grid__column.landing__grid__column-registration - .box-widget - = render 'registration' - - .directory - .directory__tag - = link_to web_path do - %h4 - = fa_icon 'globe fw' - = t('about.see_whats_happening') - %small= t('about.browse_public_posts') - - .directory__tag - = link_to 'https://joinmastodon.org/apps', target: '_blank', rel: 'noopener noreferrer' do - %h4 - = fa_icon 'tablet fw' - = t('about.get_apps') - %small= t('about.apps_platforms') - - .landing__grid__column.landing__grid__column-login - .box-widget - - if current_user.present? - = render 'logged_in' - - else - = render 'login' - - .hero-widget - .hero-widget__img - = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title - - .hero-widget__text - %p - = @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html') - = link_to about_more_path do - = t('about.learn_more') - = fa_icon 'angle-double-right' - - .hero-widget__footer - .hero-widget__footer__column - %h4= t 'about.administered_by' - - = account_link_to @instance_presenter.contact.account - - .hero-widget__footer__column - %h4= t 'about.server_stats' - - .hero-widget__counters__wrapper - .hero-widget__counter - %strong= friendly_number_to_human @instance_presenter.user_count - %span= t 'about.user_count_after', count: @instance_presenter.user_count - .hero-widget__counter - %strong= friendly_number_to_human @instance_presenter.active_user_count - %span - = t 'about.active_count_after' - %abbr{ title: t('about.active_footnote') } * diff --git a/config/locales/en.yml b/config/locales/en.yml index 0f2e08ee74..b41e4f47ba 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3,38 +3,25 @@ en: about: about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!' about_this: About - active_count_after: active - active_footnote: Monthly Active Users (MAU) administered_by: 'Administered by:' api: API apps: Mobile apps - apps_platforms: Use Mastodon from iOS, Android and other platforms - browse_public_posts: Browse a live stream of public posts on Mastodon contact: Contact contact_missing: Not set contact_unavailable: N/A - continue_to_web: Continue to web app documentation: Documentation - federation_hint_html: With an account on %{instance} you'll be able to follow people on any Mastodon server and beyond. - get_apps: Try a mobile app hosted_on: Mastodon hosted on %{domain} instance_actor_flash: | This account is a virtual actor used to represent the server itself and not any individual user. It is used for federation purposes and should not be blocked unless you want to block the whole instance, in which case you should use a domain block. - learn_more: Learn more - logged_in_as_html: You are currently logged in as %{username}. - logout_before_registering: You are already logged in. privacy_policy: Privacy Policy rules: Server rules rules_html: 'Below is a summary of rules you need to follow if you want to have an account on this server of Mastodon:' - see_whats_happening: See what's happening - server_stats: 'Server stats:' source_code: Source code status_count_after: one: post other: posts status_count_before: Who published - tagline: Decentralized social network unavailable_content: Moderated servers unavailable_content_description: domain: Server @@ -1049,7 +1036,6 @@ en: redirecting_to: Your account is inactive because it is currently redirecting to %{acct}. view_strikes: View past strikes against your account too_fast: Form submitted too fast, try again. - trouble_logging_in: Trouble logging in? use_security_key: Use security key authorize_follow: already_following: You are already following this account diff --git a/config/routes.rb b/config/routes.rb index 188898fd0b..472e6aa6be 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -641,7 +641,7 @@ Rails.application.routes.draw do get '/web/(*any)', to: 'home#index', as: :web - get '/about', to: 'about#show' + get '/about', to: redirect('/') get '/about/more', to: 'about#more' get '/privacy-policy', to: 'privacy#show', as: :privacy_policy diff --git a/spec/controllers/about_controller_spec.rb b/spec/controllers/about_controller_spec.rb index 40e395a647..20069e4137 100644 --- a/spec/controllers/about_controller_spec.rb +++ b/spec/controllers/about_controller_spec.rb @@ -3,20 +3,6 @@ require 'rails_helper' RSpec.describe AboutController, type: :controller do render_views - describe 'GET #show' do - before do - get :show - end - - it 'assigns @instance_presenter' do - expect(assigns(:instance_presenter)).to be_kind_of InstancePresenter - end - - it 'returns http success' do - expect(response).to have_http_status(200) - end - end - describe 'GET #more' do before do get :more @@ -30,12 +16,4 @@ RSpec.describe AboutController, type: :controller do expect(response).to have_http_status(200) end end - - describe 'helper_method :new_user' do - it 'returns a new User' do - user = @controller.view_context.new_user - expect(user).to be_kind_of User - expect(user.account).to be_kind_of Account - end - end end diff --git a/spec/requests/localization_spec.rb b/spec/requests/localization_spec.rb index 175f02ae99..0bc2786ac4 100644 --- a/spec/requests/localization_spec.rb +++ b/spec/requests/localization_spec.rb @@ -10,30 +10,30 @@ describe 'Localization' do it 'uses a specific region when provided' do headers = { 'Accept-Language' => 'zh-HK' } - get "/about", headers: headers + get "/auth/sign_in", headers: headers expect(response.body).to include( - I18n.t('about.tagline', locale: 'zh-HK') + I18n.t('auth.login', locale: 'zh-HK') ) end it 'falls back to a locale when region missing' do headers = { 'Accept-Language' => 'es-FAKE' } - get "/about", headers: headers + get "/auth/sign_in", headers: headers expect(response.body).to include( - I18n.t('about.tagline', locale: 'es') + I18n.t('auth.login', locale: 'es') ) end it 'falls back to english when locale is missing' do headers = { 'Accept-Language' => '12-FAKE' } - get "/about", headers: headers + get "/auth/sign_in", headers: headers expect(response.body).to include( - I18n.t('about.tagline', locale: 'en') + I18n.t('auth.login', locale: 'en') ) end end diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb deleted file mode 100644 index bf6e19d2b9..0000000000 --- a/spec/views/about/show.html.haml_spec.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe 'about/show.html.haml', without_verify_partial_doubles: true do - before do - allow(view).to receive(:site_hostname).and_return('example.com') - allow(view).to receive(:site_title).and_return('example site') - allow(view).to receive(:new_user).and_return(User.new) - allow(view).to receive(:use_seamless_external_login?).and_return(false) - allow(view).to receive(:current_account).and_return(nil) - end - - it 'has valid open graph tags' do - assign(:instance_presenter, InstancePresenter.new) - render - - header_tags = view.content_for(:header_tags) - - expect(header_tags).to match(%r{}) - expect(header_tags).to match(%r{}) - expect(header_tags).to match(%r{}) - expect(header_tags).to match(%r{}) - end -end From 62782babd08bc2385a604e275bf88af925d137c1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 6 Oct 2022 02:26:34 +0200 Subject: [PATCH 011/500] Change public statuses pages to mount the web UI (#19301) --- .../concerns/web_app_controller_concern.rb | 18 +++++++ app/controllers/home_controller.rb | 11 ++--- app/controllers/statuses_controller.rb | 12 +---- app/views/home/index.html.haml | 18 +------ app/views/shared/_web_app.html.haml | 17 +++++++ app/views/statuses/show.html.haml | 7 +-- spec/views/statuses/show.html.haml_spec.rb | 48 ------------------- 7 files changed, 42 insertions(+), 89 deletions(-) create mode 100644 app/controllers/concerns/web_app_controller_concern.rb create mode 100644 app/views/shared/_web_app.html.haml diff --git a/app/controllers/concerns/web_app_controller_concern.rb b/app/controllers/concerns/web_app_controller_concern.rb new file mode 100644 index 0000000000..8a6c73af3e --- /dev/null +++ b/app/controllers/concerns/web_app_controller_concern.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module WebAppControllerConcern + extend ActiveSupport::Concern + + included do + before_action :set_body_classes + before_action :set_referrer_policy_header + end + + def set_body_classes + @body_classes = 'app-body' + end + + def set_referrer_policy_header + response.headers['Referrer-Policy'] = 'origin' + end +end diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 29478209db..b4d6578b92 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,13 +1,12 @@ # frozen_string_literal: true class HomeController < ApplicationController + include WebAppControllerConcern + before_action :redirect_unauthenticated_to_permalinks! - before_action :set_referrer_policy_header before_action :set_instance_presenter - def index - @body_classes = 'app-body' - end + def index; end private @@ -19,10 +18,6 @@ class HomeController < ApplicationController redirect_to(redirect_path) if redirect_path.present? end - def set_referrer_policy_header - response.headers['Referrer-Policy'] = 'origin' - end - def set_instance_presenter @instance_presenter = InstancePresenter.new end diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index 7d9db4d5b2..181c76c9ae 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -5,17 +5,15 @@ class StatusesController < ApplicationController include SignatureAuthentication include Authorization include AccountOwnedConcern - - layout 'public' + include WebAppControllerConcern before_action :require_account_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_status before_action :set_instance_presenter before_action :set_link_headers before_action :redirect_to_original, only: :show - before_action :set_referrer_policy_header, only: :show before_action :set_cache_headers - before_action :set_body_classes + before_action :set_body_classes, only: :embed skip_around_action :set_locale, if: -> { request.format == :json } skip_before_action :require_functional!, only: [:show, :embed], unless: :whitelist_mode? @@ -28,8 +26,6 @@ class StatusesController < ApplicationController respond_to do |format| format.html do expires_in 10.seconds, public: true if current_account.nil? - set_ancestors - set_descendants end format.json do @@ -77,8 +73,4 @@ class StatusesController < ApplicationController def redirect_to_original redirect_to ActivityPub::TagManager.instance.url_for(@status.reblog) if @status.reblog? end - - def set_referrer_policy_header - response.headers['Referrer-Policy'] = 'origin' unless @status.distributable? - end end diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml index 19c5191d8d..76a02e0f04 100644 --- a/app/views/home/index.html.haml +++ b/app/views/home/index.html.haml @@ -1,20 +1,4 @@ - content_for :header_tags do - - if user_signed_in? - = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous' - = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous' - = render partial: 'shared/og' - %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key} - - = render_initial_state - = javascript_pack_tag 'application', crossorigin: 'anonymous' - -.notranslate.app-holder#mastodon{ data: { props: Oj.dump(default_props) } } - %noscript - = image_pack_tag 'logo.svg', alt: 'Mastodon' - - %div - = t('errors.noscript_html', apps_path: 'https://joinmastodon.org/apps') += render 'shared/web_app' diff --git a/app/views/shared/_web_app.html.haml b/app/views/shared/_web_app.html.haml new file mode 100644 index 0000000000..998cee9fa9 --- /dev/null +++ b/app/views/shared/_web_app.html.haml @@ -0,0 +1,17 @@ +- content_for :header_tags do + - if user_signed_in? + = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous' + = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous' + + %meta{ name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key } + + = render_initial_state + = javascript_pack_tag 'application', crossorigin: 'anonymous' + +.notranslate.app-holder#mastodon{ data: { props: Oj.dump(default_props) } } + %noscript + = image_pack_tag 'logo.svg', alt: 'Mastodon' + + %div + = t('errors.noscript_html', apps_path: 'https://joinmastodon.org/apps') diff --git a/app/views/statuses/show.html.haml b/app/views/statuses/show.html.haml index 7ef7b09a2d..5a3c94b844 100644 --- a/app/views/statuses/show.html.haml +++ b/app/views/statuses/show.html.haml @@ -17,9 +17,4 @@ = render 'og_description', activity: @status = render 'og_image', activity: @status, account: @account -.grid - .column-0 - .activity-stream.h-entry - = render partial: 'status', locals: { status: @status, include_threads: true } - .column-1 - = render 'application/sidebar' += render 'shared/web_app' diff --git a/spec/views/statuses/show.html.haml_spec.rb b/spec/views/statuses/show.html.haml_spec.rb index 879a26959e..a698432166 100644 --- a/spec/views/statuses/show.html.haml_spec.rb +++ b/spec/views/statuses/show.html.haml_spec.rb @@ -15,54 +15,6 @@ describe 'statuses/show.html.haml', without_verify_partial_doubles: true do assign(:instance_presenter, InstancePresenter.new) end - it 'has valid author h-card and basic data for a detailed_status' do - alice = Fabricate(:account, username: 'alice', display_name: 'Alice') - bob = Fabricate(:account, username: 'bob', display_name: 'Bob') - status = Fabricate(:status, account: alice, text: 'Hello World') - media = Fabricate(:media_attachment, account: alice, status: status, type: :video) - reply = Fabricate(:status, account: bob, thread: status, text: 'Hello Alice') - - assign(:status, status) - assign(:account, alice) - assign(:descendant_threads, []) - - render - - mf2 = Microformats.parse(rendered) - - expect(mf2.entry.url.to_s).not_to be_empty - expect(mf2.entry.author.name.to_s).to eq alice.display_name - expect(mf2.entry.author.url.to_s).not_to be_empty - end - - it 'has valid h-cites for p-in-reply-to and p-comment' do - alice = Fabricate(:account, username: 'alice', display_name: 'Alice') - bob = Fabricate(:account, username: 'bob', display_name: 'Bob') - carl = Fabricate(:account, username: 'carl', display_name: 'Carl') - status = Fabricate(:status, account: alice, text: 'Hello World') - media = Fabricate(:media_attachment, account: alice, status: status, type: :video) - reply = Fabricate(:status, account: bob, thread: status, text: 'Hello Alice') - comment = Fabricate(:status, account: carl, thread: reply, text: 'Hello Bob') - - assign(:status, reply) - assign(:account, alice) - assign(:ancestors, reply.ancestors(1, bob)) - assign(:descendant_threads, [{ statuses: reply.descendants(1) }]) - - render - - mf2 = Microformats.parse(rendered) - - expect(mf2.entry.url.to_s).not_to be_empty - expect(mf2.entry.comment.url.to_s).not_to be_empty - expect(mf2.entry.comment.author.name.to_s).to eq carl.display_name - expect(mf2.entry.comment.author.url.to_s).not_to be_empty - - expect(mf2.entry.in_reply_to.url.to_s).not_to be_empty - expect(mf2.entry.in_reply_to.author.name.to_s).to eq alice.display_name - expect(mf2.entry.in_reply_to.author.url.to_s).not_to be_empty - end - it 'has valid opengraph tags' do alice = Fabricate(:account, username: 'alice', display_name: 'Alice') status = Fabricate(:status, account: alice, text: 'Hello World') From 93f340a4bf35082968118319448905b489b101a3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 6 Oct 2022 10:16:47 +0200 Subject: [PATCH 012/500] Remove setting that disables account deletes (#17683) --- app/controllers/settings/deletes_controller.rb | 5 ----- app/helpers/application_helper.rb | 4 ---- app/models/form/admin_settings.rb | 2 -- app/views/admin/settings/edit.html.haml | 3 --- app/views/auth/registrations/edit.html.haml | 7 +++---- app/views/settings/profiles/show.html.haml | 7 +++---- config/locales/en.yml | 3 --- .../settings/deletes_controller_spec.rb | 14 -------------- 8 files changed, 6 insertions(+), 39 deletions(-) diff --git a/app/controllers/settings/deletes_controller.rb b/app/controllers/settings/deletes_controller.rb index e0dd5edcb1..bb096567a9 100644 --- a/app/controllers/settings/deletes_controller.rb +++ b/app/controllers/settings/deletes_controller.rb @@ -4,7 +4,6 @@ class Settings::DeletesController < Settings::BaseController skip_before_action :require_functional! before_action :require_not_suspended! - before_action :check_enabled_deletion def show @confirmation = Form::DeleteConfirmation.new @@ -21,10 +20,6 @@ class Settings::DeletesController < Settings::BaseController private - def check_enabled_deletion - redirect_to root_path unless Setting.open_deletion - end - def resource_params params.require(:form_delete_confirmation).permit(:password, :username) end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 14d27b148d..23884fbd4a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -87,10 +87,6 @@ module ApplicationHelper link_to label, omniauth_authorize_path(:user, provider), class: "button button-#{provider}", method: :post end - def open_deletion? - Setting.open_deletion - end - def locale_direction if RTL_LOCALES.include?(I18n.locale) 'rtl' diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index e744344c58..7bd9e37439 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -13,7 +13,6 @@ class Form::AdminSettings site_terms registrations_mode closed_registrations_message - open_deletion timeline_preview bootstrap_timeline_accounts theme @@ -37,7 +36,6 @@ class Form::AdminSettings ).freeze BOOLEAN_KEYS = %i( - open_deletion timeline_preview activity_api_enabled peers_api_enabled diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index a00cd0222e..79f73a60f0 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -57,9 +57,6 @@ .fields-group = f.input :timeline_preview, as: :boolean, wrapper: :with_label, label: t('admin.settings.timeline_preview.title'), hint: t('admin.settings.timeline_preview.desc_html') - .fields-group - = f.input :open_deletion, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.deletion.title'), hint: t('admin.settings.registrations.deletion.desc_html') - - unless whitelist_mode? .fields-group = f.input :activity_api_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.activity_api_enabled.title'), hint: t('admin.settings.activity_api_enabled.desc_html'), recommended: true diff --git a/app/views/auth/registrations/edit.html.haml b/app/views/auth/registrations/edit.html.haml index a3445b421a..df929e3e80 100644 --- a/app/views/auth/registrations/edit.html.haml +++ b/app/views/auth/registrations/edit.html.haml @@ -41,8 +41,7 @@ %h3= t('migrations.incoming_migrations') %p.muted-hint= t('migrations.incoming_migrations_html', path: settings_aliases_path) - - if open_deletion? - %hr.spacer/ + %hr.spacer/ - %h3= t('auth.delete_account') - %p.muted-hint= t('auth.delete_account_html', path: settings_delete_path) + %h3= t('auth.delete_account') + %p.muted-hint= t('auth.delete_account_html', path: settings_delete_path) diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index fe9666d841..3067b37370 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -70,8 +70,7 @@ %h6= t 'migrations.incoming_migrations' %p.muted-hint= t('migrations.incoming_migrations_html', path: settings_aliases_path) -- if open_deletion? - %hr.spacer/ +%hr.spacer/ - %h6= t('auth.delete_account') - %p.muted-hint= t('auth.delete_account_html', path: settings_delete_path) +%h6= t('auth.delete_account') +%p.muted-hint= t('auth.delete_account_html', path: settings_delete_path) diff --git a/config/locales/en.yml b/config/locales/en.yml index b41e4f47ba..505a2f9fc5 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -754,9 +754,6 @@ en: closed_message: desc_html: Displayed on frontpage when registrations are closed. You can use HTML tags title: Closed registration message - deletion: - desc_html: Allow anyone to delete their account - title: Open account deletion require_invite_text: desc_html: When registrations require manual approval, make the “Why do you want to join?” text input mandatory rather than optional title: Require new users to enter a reason to join diff --git a/spec/controllers/settings/deletes_controller_spec.rb b/spec/controllers/settings/deletes_controller_spec.rb index cd36ecc35e..a94dc042a5 100644 --- a/spec/controllers/settings/deletes_controller_spec.rb +++ b/spec/controllers/settings/deletes_controller_spec.rb @@ -81,20 +81,6 @@ describe Settings::DeletesController do expect(response).to redirect_to settings_delete_path end end - - context 'when account deletions are disabled' do - around do |example| - open_deletion = Setting.open_deletion - example.run - Setting.open_deletion = open_deletion - end - - it 'redirects' do - Setting.open_deletion = false - delete :destroy - expect(response).to redirect_to root_path - end - end end context 'when not signed in' do From 34c8707dec273083ac44c1d386642afd02b5cb11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Oct 2022 02:23:58 +0900 Subject: [PATCH 013/500] Bump jest-environment-jsdom from 29.0.3 to 29.1.2 (#19282) Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.0.3 to 29.1.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.1.2/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 101 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 64 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index e3b06c5e77..e14c676028 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "eslint-plugin-promise": "~6.0.1", "eslint-plugin-react": "~7.31.8", "jest": "^29.0.3", - "jest-environment-jsdom": "^29.0.3", + "jest-environment-jsdom": "^29.1.2", "postcss-scss": "^4.0.5", "prettier": "^2.7.1", "raf": "^3.4.1", diff --git a/yarn.lock b/yarn.lock index 9bbf3cb10f..b7071206ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1352,15 +1352,15 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.0.3.tgz#7745ec30a954e828e8cc6df6a13280d3b51d8f35" - integrity sha512-iKl272NKxYNQNqXMQandAIwjhQaGw5uJfGXduu8dS9llHi8jV2ChWrtOAVPnMbaaoDhnI3wgUGNDvZgHeEJQCA== +"@jest/environment@^29.0.3", "@jest/environment@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.1.2.tgz#bb51a43fce9f960ba9a48f0b5b556f30618ebc0a" + integrity sha512-rG7xZ2UeOfvOVzoLIJ0ZmvPl4tBEQ2n73CZJSlzUjPw4or1oSWC0s0Rk0ZX+pIBJ04aVr6hLWFn1DFtrnf8MhQ== dependencies: - "@jest/fake-timers" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/fake-timers" "^29.1.2" + "@jest/types" "^29.1.2" "@types/node" "*" - jest-mock "^29.0.3" + jest-mock "^29.1.2" "@jest/expect-utils@^29.0.3": version "29.0.3" @@ -1377,17 +1377,17 @@ expect "^29.0.3" jest-snapshot "^29.0.3" -"@jest/fake-timers@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.0.3.tgz#ad5432639b715d45a86a75c47fd75019bc36b22c" - integrity sha512-tmbUIo03x0TdtcZCESQ0oQSakPCpo7+s6+9mU19dd71MptkP4zCwoeZqna23//pgbhtT1Wq02VmA9Z9cNtvtCQ== +"@jest/fake-timers@^29.0.3", "@jest/fake-timers@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.1.2.tgz#f157cdf23b4da48ce46cb00fea28ed1b57fc271a" + integrity sha512-GppaEqS+QQYegedxVMpCe2xCXxxeYwQ7RsNx55zc8f+1q1qevkZGKequfTASI7ejmg9WwI+SJCrHe9X11bLL9Q== dependencies: - "@jest/types" "^29.0.3" + "@jest/types" "^29.1.2" "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^29.0.3" - jest-mock "^29.0.3" - jest-util "^29.0.3" + jest-message-util "^29.1.2" + jest-mock "^29.1.2" + jest-util "^29.1.2" "@jest/globals@^29.0.3": version "29.0.3" @@ -1508,10 +1508,10 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.0.3.tgz#0be78fdddb1a35aeb2041074e55b860561c8ef63" - integrity sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A== +"@jest/types@^29.0.3", "@jest/types@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.1.2.tgz#7442d32b16bcd7592d9614173078b8c334ec730a" + integrity sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg== dependencies: "@jest/schemas" "^29.0.0" "@types/istanbul-lib-coverage" "^2.0.0" @@ -6634,18 +6634,18 @@ jest-each@^29.0.3: jest-util "^29.0.3" pretty-format "^29.0.3" -jest-environment-jsdom@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.0.3.tgz#0c6ee841133dd6acbe957bceaceea93b7ec60ca9" - integrity sha512-KIGvpm12c71hoYTjL4wC2c8K6KfhOHJqJtaHc1IApu5rG047YWZoEP13BlbucWfzGISBrmli8KFqdhdQEa8Wnw== +jest-environment-jsdom@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.1.2.tgz#59c5d7c53c999e1518cc2f1cd4ee19ab4b68eb68" + integrity sha512-D+XNIKia5+uDjSMwL/G1l6N9MCb7LymKI8FpcLo7kkISjc/Sa9w+dXXEa7u1Wijo3f8sVLqfxdGqYtRhmca+Xw== dependencies: - "@jest/environment" "^29.0.3" - "@jest/fake-timers" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/environment" "^29.1.2" + "@jest/fake-timers" "^29.1.2" + "@jest/types" "^29.1.2" "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^29.0.3" - jest-util "^29.0.3" + jest-mock "^29.1.2" + jest-util "^29.1.2" jsdom "^20.0.0" jest-environment-node@^29.0.3: @@ -6722,13 +6722,29 @@ jest-message-util@^29.0.3: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.0.3.tgz#4f0093f6a9cb2ffdb9c44a07a3912f0c098c8de9" - integrity sha512-ort9pYowltbcrCVR43wdlqfAiFJXBx8l4uJDsD8U72LgBcetvEp+Qxj1W9ZYgMRoeAo+ov5cnAGF2B6+Oth+ww== +jest-message-util@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.1.2.tgz#c21a33c25f9dc1ebfcd0f921d89438847a09a501" + integrity sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ== dependencies: - "@jest/types" "^29.0.3" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.1.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.1.2" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.0.3, jest-mock@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.1.2.tgz#de47807edbb9d4abf8423f1d8d308d670105678c" + integrity sha512-PFDAdjjWbjPUtQPkQufvniXIS3N9Tv7tbibePEjIIprzjgo0qQlyUiVMrT4vL8FaSJo1QXifQUOuPH3HQC/aMA== + dependencies: + "@jest/types" "^29.1.2" "@types/node" "*" + jest-util "^29.1.2" jest-pnp-resolver@^1.2.2: version "1.2.2" @@ -6848,12 +6864,12 @@ jest-snapshot@^29.0.3: pretty-format "^29.0.3" semver "^7.3.5" -jest-util@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.0.3.tgz#06d1d77f9a1bea380f121897d78695902959fbc0" - integrity sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ== +jest-util@^29.0.3, jest-util@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.1.2.tgz#ac5798e93cb6a6703084e194cfa0898d66126df1" + integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== dependencies: - "@jest/types" "^29.0.3" + "@jest/types" "^29.1.2" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" @@ -8954,6 +8970,15 @@ pretty-format@^29.0.3: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.1.2.tgz#b1f6b75be7d699be1a051f5da36e8ae9e76a8e6a" + integrity sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg== + dependencies: + "@jest/schemas" "^29.0.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" From 021ccf46af7d9e45c17837efe4ef1cad4199de04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Oct 2022 02:24:59 +0900 Subject: [PATCH 014/500] Bump babel-jest from 29.0.3 to 29.1.2 (#19275) Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 29.0.3 to 29.1.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.1.2/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 77 ++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 66 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index e14c676028..f4a65be7ce 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "@babel/eslint-parser": "^7.19.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", - "babel-jest": "^29.0.3", + "babel-jest": "^29.1.2", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", diff --git a/yarn.lock b/yarn.lock index b7071206ef..4a78a5cb33 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1466,22 +1466,22 @@ jest-haste-map "^29.0.3" slash "^3.0.0" -"@jest/transform@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.0.3.tgz#9eb1fed2072a0354f190569807d1250572fb0970" - integrity sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg== +"@jest/transform@^29.0.3", "@jest/transform@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.1.2.tgz#20f814696e04f090421f6d505c14bbfe0157062a" + integrity sha512-2uaUuVHTitmkx1tHF+eBjb4p7UuzBG7SXIaA/hNIkaMP6K+gXYGxP38ZcrofzqN0HeZ7A90oqsOa97WU7WZkSw== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^29.0.3" + "@jest/types" "^29.1.2" "@jridgewell/trace-mapping" "^0.3.15" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.0.3" + jest-haste-map "^29.1.2" jest-regex-util "^29.0.0" - jest-util "^29.0.3" + jest-util "^29.1.2" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1520,6 +1520,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.1.2.tgz#7442d32b16bcd7592d9614173078b8c334ec730a" + integrity sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg== + dependencies: + "@jest/schemas" "^29.0.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" @@ -2623,12 +2635,12 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.0.3.tgz#64e156a47a77588db6a669a88dedff27ed6e260f" - integrity sha512-ApPyHSOhS/sVzwUOQIWJmdvDhBsMG01HX9z7ogtkp1TToHGGUWFlnXJUIzCgKPSfiYLn3ibipCYzsKSURHEwLg== +babel-jest@^29.0.3, babel-jest@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.1.2.tgz#540d3241925c55240fb0c742e3ffc5f33a501978" + integrity sha512-IuG+F3HTHryJb7gacC7SQ59A9kO56BctUsT67uJHp1mMCHUOMXpDwOHWGifWqdWVknN2WNkCVQELPjXx0aLJ9Q== dependencies: - "@jest/transform" "^29.0.3" + "@jest/transform" "^29.1.2" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" babel-preset-jest "^29.0.2" @@ -6689,6 +6701,25 @@ jest-haste-map@^29.0.3: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.1.2.tgz#93f3634aa921b6b654e7c94137b24e02e7ca6ac9" + integrity sha512-xSjbY8/BF11Jh3hGSPfYTa/qBFrm3TPM7WU8pU93m2gqzORVLkHFWvuZmFsTEBPRKndfewXhMOuzJNHyJIZGsw== + dependencies: + "@jest/types" "^29.1.2" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.0.0" + jest-util "^29.1.2" + jest-worker "^29.1.2" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-leak-detector@^29.0.3: version "29.0.3" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz#e85cf3391106a7a250850b6766b508bfe9c7bc6f" @@ -6876,6 +6907,18 @@ jest-util@^29.0.3, jest-util@^29.1.2: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.1.2.tgz#ac5798e93cb6a6703084e194cfa0898d66126df1" + integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== + dependencies: + "@jest/types" "^29.1.2" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^29.0.3: version "29.0.3" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.0.3.tgz#f9521581d7344685428afa0a4d110e9c519aeeb6" @@ -6929,6 +6972,16 @@ jest-worker@^29.0.3: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.1.2.tgz#a68302af61bce82b42a9a57285ca7499d29b2afc" + integrity sha512-AdTZJxKjTSPHbXT/AIOjQVmoFx0LHFcVabWu0sxI7PAy7rFf8c0upyvgBKgguVXdM4vY74JdwkyD4hSmpTW8jA== + dependencies: + "@types/node" "*" + jest-util "^29.1.2" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^29.0.3: version "29.0.3" resolved "https://registry.yarnpkg.com/jest/-/jest-29.0.3.tgz#5227a0596d30791b2649eea347e4aa97f734944d" From 402ee73e24ea816ab1602405cd0046ecd5e7bfd5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Oct 2022 03:34:03 +0900 Subject: [PATCH 015/500] Bump jest from 29.0.3 to 29.1.2 (#19285) Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.0.3 to 29.1.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.1.2/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 540 ++++++++++++++++++++++----------------------------- 2 files changed, 233 insertions(+), 309 deletions(-) diff --git a/package.json b/package.json index f4a65be7ce..65467b71d8 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.1", "eslint-plugin-react": "~7.31.8", - "jest": "^29.0.3", + "jest": "^29.1.2", "jest-environment-jsdom": "^29.1.2", "postcss-scss": "^4.0.5", "prettier": "^2.7.1", diff --git a/yarn.lock b/yarn.lock index 4a78a5cb33..5743a461ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1306,28 +1306,28 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.0.3.tgz#a222ab87e399317a89db88a58eaec289519e807a" - integrity sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg== +"@jest/console@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.1.2.tgz#0ae975a70004696f8320490fcaa1a4152f7b62e4" + integrity sha512-ujEBCcYs82BTmRxqfHMQggSlkUZP63AE5YEaTPj7eFyJOzukkTorstOUC7L6nE3w5SYadGVAnTsQ/ZjTGL0qYQ== dependencies: - "@jest/types" "^29.0.3" + "@jest/types" "^29.1.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.0.3" - jest-util "^29.0.3" + jest-message-util "^29.1.2" + jest-util "^29.1.2" slash "^3.0.0" -"@jest/core@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.0.3.tgz#ba22a9cbd0c7ba36e04292e2093c547bf53ec1fd" - integrity sha512-1d0hLbOrM1qQE3eP3DtakeMbKTcXiXP3afWxqz103xPyddS2NhnNghS7MaXx1dcDt4/6p4nlhmeILo2ofgi8cQ== +"@jest/core@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.1.2.tgz#e5ce7a71e7da45156a96fb5eeed11d18b67bd112" + integrity sha512-sCO2Va1gikvQU2ynDN8V4+6wB7iVrD2CvT0zaRst4rglf56yLly0NQ9nuRRAWFeimRf+tCdFsb1Vk1N9LrrMPA== dependencies: - "@jest/console" "^29.0.3" - "@jest/reporters" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/console" "^29.1.2" + "@jest/reporters" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" @@ -1335,24 +1335,24 @@ exit "^0.1.2" graceful-fs "^4.2.9" jest-changed-files "^29.0.0" - jest-config "^29.0.3" - jest-haste-map "^29.0.3" - jest-message-util "^29.0.3" + jest-config "^29.1.2" + jest-haste-map "^29.1.2" + jest-message-util "^29.1.2" jest-regex-util "^29.0.0" - jest-resolve "^29.0.3" - jest-resolve-dependencies "^29.0.3" - jest-runner "^29.0.3" - jest-runtime "^29.0.3" - jest-snapshot "^29.0.3" - jest-util "^29.0.3" - jest-validate "^29.0.3" - jest-watcher "^29.0.3" + jest-resolve "^29.1.2" + jest-resolve-dependencies "^29.1.2" + jest-runner "^29.1.2" + jest-runtime "^29.1.2" + jest-snapshot "^29.1.2" + jest-util "^29.1.2" + jest-validate "^29.1.2" + jest-watcher "^29.1.2" micromatch "^4.0.4" - pretty-format "^29.0.3" + pretty-format "^29.1.2" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.0.3", "@jest/environment@^29.1.2": +"@jest/environment@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.1.2.tgz#bb51a43fce9f960ba9a48f0b5b556f30618ebc0a" integrity sha512-rG7xZ2UeOfvOVzoLIJ0ZmvPl4tBEQ2n73CZJSlzUjPw4or1oSWC0s0Rk0ZX+pIBJ04aVr6hLWFn1DFtrnf8MhQ== @@ -1362,22 +1362,22 @@ "@types/node" "*" jest-mock "^29.1.2" -"@jest/expect-utils@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.0.3.tgz#f5bb86f5565bf2dacfca31ccbd887684936045b2" - integrity sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q== +"@jest/expect-utils@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.1.2.tgz#66dbb514d38f7d21456bc774419c9ae5cca3f88d" + integrity sha512-4a48bhKfGj/KAH39u0ppzNTABXQ8QPccWAFUFobWBaEMSMp+sB31Z2fK/l47c4a/Mu1po2ffmfAIPxXbVTXdtg== dependencies: jest-get-type "^29.0.0" -"@jest/expect@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.0.3.tgz#9dc7c46354eeb7a348d73881fba6402f5fdb2c30" - integrity sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ== +"@jest/expect@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.1.2.tgz#334a86395f621f1ab63ad95b06a588b9114d7b7a" + integrity sha512-FXw/UmaZsyfRyvZw3M6POgSNqwmuOXJuzdNiMWW9LCYo0GRoRDhg+R5iq5higmRTHQY7hx32+j7WHwinRmoILQ== dependencies: - expect "^29.0.3" - jest-snapshot "^29.0.3" + expect "^29.1.2" + jest-snapshot "^29.1.2" -"@jest/fake-timers@^29.0.3", "@jest/fake-timers@^29.1.2": +"@jest/fake-timers@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.1.2.tgz#f157cdf23b4da48ce46cb00fea28ed1b57fc271a" integrity sha512-GppaEqS+QQYegedxVMpCe2xCXxxeYwQ7RsNx55zc8f+1q1qevkZGKequfTASI7ejmg9WwI+SJCrHe9X11bLL9Q== @@ -1389,26 +1389,26 @@ jest-mock "^29.1.2" jest-util "^29.1.2" -"@jest/globals@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.0.3.tgz#681950c430fdc13ff9aa89b2d8d572ac0e4a1bf5" - integrity sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w== +"@jest/globals@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.1.2.tgz#826ede84bc280ae7f789cb72d325c48cd048b9d3" + integrity sha512-uMgfERpJYoQmykAd0ffyMq8wignN4SvLUG6orJQRe9WAlTRc9cdpCaE/29qurXixYJVZWUqIBXhSk8v5xN1V9g== dependencies: - "@jest/environment" "^29.0.3" - "@jest/expect" "^29.0.3" - "@jest/types" "^29.0.3" - jest-mock "^29.0.3" + "@jest/environment" "^29.1.2" + "@jest/expect" "^29.1.2" + "@jest/types" "^29.1.2" + jest-mock "^29.1.2" -"@jest/reporters@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.0.3.tgz#735f110e08b44b38729d8dbbb74063bdf5aba8a5" - integrity sha512-3+QU3d4aiyOWfmk1obDerie4XNCaD5Xo1IlKNde2yGEi02WQD+ZQD0i5Hgqm1e73sMV7kw6pMlCnprtEwEVwxw== +"@jest/reporters@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.1.2.tgz#5520898ed0a4ecf69d8b671e1dc8465d0acdfa6e" + integrity sha512-X4fiwwyxy9mnfpxL0g9DD0KcTmEIqP0jUdnc2cfa9riHy+I6Gwwp5vOZiwyg0vZxfSDxrOlK9S4+340W4d+DAA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/console" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" @@ -1421,9 +1421,9 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.0.3" - jest-util "^29.0.3" - jest-worker "^29.0.3" + jest-message-util "^29.1.2" + jest-util "^29.1.2" + jest-worker "^29.1.2" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" @@ -1446,27 +1446,27 @@ callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.0.3.tgz#b03d8ef4c58be84cd5d5d3b24d4b4c8cabbf2746" - integrity sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg== +"@jest/test-result@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.1.2.tgz#6a8d006eb2b31ce0287d1fc10d12b8ff8504f3c8" + integrity sha512-jjYYjjumCJjH9hHCoMhA8PCl1OxNeGgAoZ7yuGYILRJX9NjgzTN0pCT5qAoYR4jfOP8htIByvAlz9vfNSSBoVg== dependencies: - "@jest/console" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/console" "^29.1.2" + "@jest/types" "^29.1.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.0.3": - version "29.0.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.0.3.tgz#0681061ad21fb8e293b49c4fdf7e631ca79240ba" - integrity sha512-Hf4+xYSWZdxTNnhDykr8JBs0yBN/nxOXyUQWfotBUqqy0LF9vzcFB0jm/EDNZCx587znLWTIgxcokW7WeZMobQ== +"@jest/test-sequencer@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.1.2.tgz#10bfd89c08bfdba382eb05cc79c1d23a01238a93" + integrity sha512-fU6dsUqqm8sA+cd85BmeF7Gu9DsXVWFdGn9taxM6xN1cKdcP/ivSgXh5QucFRFz1oZxKv3/9DYYbq0ULly3P/Q== dependencies: - "@jest/test-result" "^29.0.3" + "@jest/test-result" "^29.1.2" graceful-fs "^4.2.9" - jest-haste-map "^29.0.3" + jest-haste-map "^29.1.2" slash "^3.0.0" -"@jest/transform@^29.0.3", "@jest/transform@^29.1.2": +"@jest/transform@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.1.2.tgz#20f814696e04f090421f6d505c14bbfe0157062a" integrity sha512-2uaUuVHTitmkx1tHF+eBjb4p7UuzBG7SXIaA/hNIkaMP6K+gXYGxP38ZcrofzqN0HeZ7A90oqsOa97WU7WZkSw== @@ -1508,18 +1508,6 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^29.0.3", "@jest/types@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.1.2.tgz#7442d32b16bcd7592d9614173078b8c334ec730a" - integrity sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg== - dependencies: - "@jest/schemas" "^29.0.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^29.1.2": version "29.1.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.1.2.tgz#7442d32b16bcd7592d9614173078b8c334ec730a" @@ -2635,7 +2623,7 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^29.0.3, babel-jest@^29.1.2: +babel-jest@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.1.2.tgz#540d3241925c55240fb0c742e3ffc5f33a501978" integrity sha512-IuG+F3HTHryJb7gacC7SQ59A9kO56BctUsT67uJHp1mMCHUOMXpDwOHWGifWqdWVknN2WNkCVQELPjXx0aLJ9Q== @@ -4885,16 +4873,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.0.3.tgz#6be65ddb945202f143c4e07c083f4f39f3bd326f" - integrity sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q== +expect@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.1.2.tgz#82f8f28d7d408c7c68da3a386a490ee683e1eced" + integrity sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw== dependencies: - "@jest/expect-utils" "^29.0.3" + "@jest/expect-utils" "^29.1.2" jest-get-type "^29.0.0" - jest-matcher-utils "^29.0.3" - jest-message-util "^29.0.3" - jest-util "^29.0.3" + jest-matcher-utils "^29.1.2" + jest-message-util "^29.1.2" + jest-util "^29.1.2" express@^4.17.1, express@^4.18.1: version "4.18.1" @@ -6537,74 +6525,74 @@ jest-changed-files@^29.0.0: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.0.3.tgz#90faebc90295291cfc636b27dbd82e3bfb9e7a48" - integrity sha512-QeGzagC6Hw5pP+df1+aoF8+FBSgkPmraC1UdkeunWh0jmrp7wC0Hr6umdUAOELBQmxtKAOMNC3KAdjmCds92Zg== +jest-circus@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.1.2.tgz#4551068e432f169a53167fe1aef420cf51c8a735" + integrity sha512-ajQOdxY6mT9GtnfJRZBRYS7toNIJayiiyjDyoZcnvPRUPwJ58JX0ci0PKAKUo2C1RyzlHw0jabjLGKksO42JGA== dependencies: - "@jest/environment" "^29.0.3" - "@jest/expect" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/environment" "^29.1.2" + "@jest/expect" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/types" "^29.1.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^29.0.3" - jest-matcher-utils "^29.0.3" - jest-message-util "^29.0.3" - jest-runtime "^29.0.3" - jest-snapshot "^29.0.3" - jest-util "^29.0.3" + jest-each "^29.1.2" + jest-matcher-utils "^29.1.2" + jest-message-util "^29.1.2" + jest-runtime "^29.1.2" + jest-snapshot "^29.1.2" + jest-util "^29.1.2" p-limit "^3.1.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.0.3.tgz#fd8f0ef363a7a3d9c53ef62e0651f18eeffa77b9" - integrity sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ== +jest-cli@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.1.2.tgz#423b9c5d3ea20a50b1354b8bf3f2a20e72110e89" + integrity sha512-vsvBfQ7oS2o4MJdAH+4u9z76Vw5Q8WBQF5MchDbkylNknZdrPTX1Ix7YRJyTlOWqRaS7ue/cEAn+E4V1MWyMzw== dependencies: - "@jest/core" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/core" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/types" "^29.1.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.0.3" - jest-util "^29.0.3" - jest-validate "^29.0.3" + jest-config "^29.1.2" + jest-util "^29.1.2" + jest-validate "^29.1.2" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.0.3.tgz#c2e52a8f5adbd18de79f99532d8332a19e232f13" - integrity sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew== +jest-config@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.1.2.tgz#7d004345ca4c09f5d8f802355f54494e90842f4d" + integrity sha512-EC3Zi86HJUOz+2YWQcJYQXlf0zuBhJoeyxLM6vb6qJsVmpP7KcCP1JnyF0iaqTaXdBP8Rlwsvs7hnKWQWWLwwA== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.0.3" - "@jest/types" "^29.0.3" - babel-jest "^29.0.3" + "@jest/test-sequencer" "^29.1.2" + "@jest/types" "^29.1.2" + babel-jest "^29.1.2" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.0.3" - jest-environment-node "^29.0.3" + jest-circus "^29.1.2" + jest-environment-node "^29.1.2" jest-get-type "^29.0.0" jest-regex-util "^29.0.0" - jest-resolve "^29.0.3" - jest-runner "^29.0.3" - jest-util "^29.0.3" - jest-validate "^29.0.3" + jest-resolve "^29.1.2" + jest-runner "^29.1.2" + jest-util "^29.1.2" + jest-validate "^29.1.2" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -6618,15 +6606,15 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.0.3.tgz#41cc02409ad1458ae1bf7684129a3da2856341ac" - integrity sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg== +jest-diff@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.1.2.tgz#bb7aaf5353227d6f4f96c5e7e8713ce576a607dc" + integrity sha512-4GQts0aUopVvecIT4IwD/7xsBaMhKTYoM4/njE/aVw9wpw+pIUVp8Vab/KnSzSilr84GnLBkaP3JLDnQYCKqVQ== dependencies: chalk "^4.0.0" diff-sequences "^29.0.0" jest-get-type "^29.0.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" jest-docblock@^29.0.0: version "29.0.0" @@ -6635,16 +6623,16 @@ jest-docblock@^29.0.0: dependencies: detect-newline "^3.0.0" -jest-each@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.0.3.tgz#7ef3157580b15a609d7ef663dd4fc9b07f4e1299" - integrity sha512-wILhZfESURHHBNvPMJ0lZlYZrvOQJxAo3wNHi+ycr90V7M+uGR9Gh4+4a/BmaZF0XTyZsk4OiYEf3GJN7Ltqzg== +jest-each@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.1.2.tgz#d4c8532c07a846e79f194f7007ce7cb1987d1cd0" + integrity sha512-AmTQp9b2etNeEwMyr4jc0Ql/LIX/dhbgP21gHAizya2X6rUspHn2gysMXaj6iwWuOJ2sYRgP8c1P4cXswgvS1A== dependencies: - "@jest/types" "^29.0.3" + "@jest/types" "^29.1.2" chalk "^4.0.0" jest-get-type "^29.0.0" - jest-util "^29.0.3" - pretty-format "^29.0.3" + jest-util "^29.1.2" + pretty-format "^29.1.2" jest-environment-jsdom@^29.1.2: version "29.1.2" @@ -6660,17 +6648,17 @@ jest-environment-jsdom@^29.1.2: jest-util "^29.1.2" jsdom "^20.0.0" -jest-environment-node@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.0.3.tgz#293804b1e0fa5f0e354dacbe510655caa478a3b2" - integrity sha512-cdZqRCnmIlTXC+9vtvmfiY/40Cj6s2T0czXuq1whvQdmpzAnj4sbqVYuZ4zFHk766xTTJ+Ij3uUqkk8KCfXoyg== +jest-environment-node@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.1.2.tgz#005e05cc6ea4b9b5ba55906ab1ce53c82f6907a7" + integrity sha512-C59yVbdpY8682u6k/lh8SUMDJPbOyCHOTgLVVi1USWFxtNV+J8fyIwzkg+RJIVI30EKhKiAGNxYaFr3z6eyNhQ== dependencies: - "@jest/environment" "^29.0.3" - "@jest/fake-timers" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/environment" "^29.1.2" + "@jest/fake-timers" "^29.1.2" + "@jest/types" "^29.1.2" "@types/node" "*" - jest-mock "^29.0.3" - jest-util "^29.0.3" + jest-mock "^29.1.2" + jest-util "^29.1.2" jest-get-type@^25.2.6: version "25.2.6" @@ -6682,25 +6670,6 @@ jest-get-type@^29.0.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80" integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== -jest-haste-map@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.0.3.tgz#d7f3f7180f558d760eacc5184aac5a67f20ef939" - integrity sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A== - dependencies: - "@jest/types" "^29.0.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.0.0" - jest-util "^29.0.3" - jest-worker "^29.0.3" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - jest-haste-map@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.1.2.tgz#93f3634aa921b6b654e7c94137b24e02e7ca6ac9" @@ -6720,38 +6689,23 @@ jest-haste-map@^29.1.2: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz#e85cf3391106a7a250850b6766b508bfe9c7bc6f" - integrity sha512-YfW/G63dAuiuQ3QmQlh8hnqLDe25WFY3eQhuc/Ev1AGmkw5zREblTh7TCSKLoheyggu6G9gxO2hY8p9o6xbaRQ== +jest-leak-detector@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.1.2.tgz#4c846db14c58219430ccbc4f01a1ec52ebee4fc2" + integrity sha512-TG5gAZJpgmZtjb6oWxBLf2N6CfQ73iwCe6cofu/Uqv9iiAm6g502CAnGtxQaTfpHECBdVEMRBhomSXeLnoKjiQ== dependencies: jest-get-type "^29.0.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" -jest-matcher-utils@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz#b8305fd3f9e27cdbc210b21fc7dbba92d4e54560" - integrity sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w== +jest-matcher-utils@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.1.2.tgz#e68c4bcc0266e70aa1a5c13fb7b8cd4695e318a1" + integrity sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw== dependencies: chalk "^4.0.0" - jest-diff "^29.0.3" + jest-diff "^29.1.2" jest-get-type "^29.0.0" - pretty-format "^29.0.3" - -jest-message-util@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.0.3.tgz#f0254e1ffad21890c78355726202cc91d0a40ea8" - integrity sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.0.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.0.3" - slash "^3.0.0" - stack-utils "^2.0.3" + pretty-format "^29.1.2" jest-message-util@^29.1.2: version "29.1.2" @@ -6768,7 +6722,7 @@ jest-message-util@^29.1.2: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.0.3, jest-mock@^29.1.2: +jest-mock@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.1.2.tgz#de47807edbb9d4abf8423f1d8d308d670105678c" integrity sha512-PFDAdjjWbjPUtQPkQufvniXIS3N9Tv7tbibePEjIIprzjgo0qQlyUiVMrT4vL8FaSJo1QXifQUOuPH3HQC/aMA== @@ -6787,88 +6741,88 @@ jest-regex-util@^29.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.0.0.tgz#b442987f688289df8eb6c16fa8df488b4cd007de" integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug== -jest-resolve-dependencies@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.3.tgz#f23a54295efc6374b86b198cf8efed5606d6b762" - integrity sha512-KzuBnXqNvbuCdoJpv8EanbIGObk7vUBNt/PwQPPx2aMhlv/jaXpUJsqWYRpP/0a50faMBY7WFFP8S3/CCzwfDw== +jest-resolve-dependencies@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.1.2.tgz#a6919e58a0c7465582cb8ec2d745b4e64ae8647f" + integrity sha512-44yYi+yHqNmH3OoWZvPgmeeiwKxhKV/0CfrzaKLSkZG9gT973PX8i+m8j6pDrTYhhHoiKfF3YUFg/6AeuHw4HQ== dependencies: jest-regex-util "^29.0.0" - jest-snapshot "^29.0.3" + jest-snapshot "^29.1.2" -jest-resolve@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.0.3.tgz#329a3431e3b9eb6629a2cd483e9bed95b26827b9" - integrity sha512-toVkia85Y/BPAjJasTC9zIPY6MmVXQPtrCk8SmiheC4MwVFE/CMFlOtMN6jrwPMC6TtNh8+sTMllasFeu1wMPg== +jest-resolve@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.1.2.tgz#9dd8c2fc83e59ee7d676b14bd45a5f89e877741d" + integrity sha512-7fcOr+k7UYSVRJYhSmJHIid3AnDBcLQX3VmT9OSbPWsWz1MfT7bcoerMhADKGvKCoMpOHUQaDHtQoNp/P9JMGg== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.0.3" + jest-haste-map "^29.1.2" jest-pnp-resolver "^1.2.2" - jest-util "^29.0.3" - jest-validate "^29.0.3" + jest-util "^29.1.2" + jest-validate "^29.1.2" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.0.3.tgz#2e47fe1e8777aea9b8970f37e8f83630b508fb87" - integrity sha512-Usu6VlTOZlCZoNuh3b2Tv/yzDpKqtiNAetG9t3kJuHfUyVMNW7ipCCJOUojzKkjPoaN7Bl1f7Buu6PE0sGpQxw== +jest-runner@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.1.2.tgz#f18b2b86101341e047de8c2f51a5fdc4e97d053a" + integrity sha512-yy3LEWw8KuBCmg7sCGDIqKwJlULBuNIQa2eFSVgVASWdXbMYZ9H/X0tnXt70XFoGf92W2sOQDOIFAA6f2BG04Q== dependencies: - "@jest/console" "^29.0.3" - "@jest/environment" "^29.0.3" - "@jest/test-result" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/console" "^29.1.2" + "@jest/environment" "^29.1.2" + "@jest/test-result" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" "@types/node" "*" chalk "^4.0.0" emittery "^0.10.2" graceful-fs "^4.2.9" jest-docblock "^29.0.0" - jest-environment-node "^29.0.3" - jest-haste-map "^29.0.3" - jest-leak-detector "^29.0.3" - jest-message-util "^29.0.3" - jest-resolve "^29.0.3" - jest-runtime "^29.0.3" - jest-util "^29.0.3" - jest-watcher "^29.0.3" - jest-worker "^29.0.3" + jest-environment-node "^29.1.2" + jest-haste-map "^29.1.2" + jest-leak-detector "^29.1.2" + jest-message-util "^29.1.2" + jest-resolve "^29.1.2" + jest-runtime "^29.1.2" + jest-util "^29.1.2" + jest-watcher "^29.1.2" + jest-worker "^29.1.2" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.0.3.tgz#5a823ec5902257519556a4e5a71a868e8fd788aa" - integrity sha512-12gZXRQ7ozEeEHKTY45a+YLqzNDR/x4c//X6AqwKwKJPpWM8FY4vwn4VQJOcLRS3Nd1fWwgP7LU4SoynhuUMHQ== +jest-runtime@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.1.2.tgz#dbcd57103d61115479108d5864bdcd661d9c6783" + integrity sha512-jr8VJLIf+cYc+8hbrpt412n5jX3tiXmpPSYTGnwcvNemY+EOuLNiYnHJ3Kp25rkaAcTWOEI4ZdOIQcwYcXIAZw== dependencies: - "@jest/environment" "^29.0.3" - "@jest/fake-timers" "^29.0.3" - "@jest/globals" "^29.0.3" + "@jest/environment" "^29.1.2" + "@jest/fake-timers" "^29.1.2" + "@jest/globals" "^29.1.2" "@jest/source-map" "^29.0.0" - "@jest/test-result" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/test-result" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.0.3" - jest-message-util "^29.0.3" - jest-mock "^29.0.3" + jest-haste-map "^29.1.2" + jest-message-util "^29.1.2" + jest-mock "^29.1.2" jest-regex-util "^29.0.0" - jest-resolve "^29.0.3" - jest-snapshot "^29.0.3" - jest-util "^29.0.3" + jest-resolve "^29.1.2" + jest-snapshot "^29.1.2" + jest-util "^29.1.2" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.0.3.tgz#0a024706986a915a6eefae74d7343069d2fc8eef" - integrity sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew== +jest-snapshot@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.1.2.tgz#7dd277e88c45f2d2ff5888de1612e63c7ceb575b" + integrity sha512-rYFomGpVMdBlfwTYxkUp3sjD6usptvZcONFYNqVlaz4EpHPnDvlWjvmOQ9OCSNKqYZqLM2aS3wq01tWujLg7gg== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -6876,26 +6830,26 @@ jest-snapshot@^29.0.3: "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.0.3" - "@jest/transform" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/expect-utils" "^29.1.2" + "@jest/transform" "^29.1.2" + "@jest/types" "^29.1.2" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.0.3" + expect "^29.1.2" graceful-fs "^4.2.9" - jest-diff "^29.0.3" + jest-diff "^29.1.2" jest-get-type "^29.0.0" - jest-haste-map "^29.0.3" - jest-matcher-utils "^29.0.3" - jest-message-util "^29.0.3" - jest-util "^29.0.3" + jest-haste-map "^29.1.2" + jest-matcher-utils "^29.1.2" + jest-message-util "^29.1.2" + jest-util "^29.1.2" natural-compare "^1.4.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" semver "^7.3.5" -jest-util@^29.0.3, jest-util@^29.1.2: +jest-util@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.1.2.tgz#ac5798e93cb6a6703084e194cfa0898d66126df1" integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== @@ -6907,42 +6861,30 @@ jest-util@^29.0.3, jest-util@^29.1.2: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-util@^29.1.2: +jest-validate@^29.1.2: version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.1.2.tgz#ac5798e93cb6a6703084e194cfa0898d66126df1" - integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.1.2.tgz#83a728b8f6354da2e52346878c8bc7383516ca51" + integrity sha512-k71pOslNlV8fVyI+mEySy2pq9KdXdgZtm7NHrBX8LghJayc3wWZH0Yr0mtYNGaCU4F1OLPXRkwZR0dBm/ClshA== dependencies: "@jest/types" "^29.1.2" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.0.3.tgz#f9521581d7344685428afa0a4d110e9c519aeeb6" - integrity sha512-OebiqqT6lK8cbMPtrSoS3aZP4juID762lZvpf1u+smZnwTEBCBInan0GAIIhv36MxGaJvmq5uJm7dl5gVt+Zrw== - dependencies: - "@jest/types" "^29.0.3" camelcase "^6.2.0" chalk "^4.0.0" jest-get-type "^29.0.0" leven "^3.1.0" - pretty-format "^29.0.3" + pretty-format "^29.1.2" -jest-watcher@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.0.3.tgz#8e220d1cc4f8029875e82015d084cab20f33d57f" - integrity sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw== +jest-watcher@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.1.2.tgz#de21439b7d889e2fcf62cc2a4779ef1a3f1f3c62" + integrity sha512-6JUIUKVdAvcxC6bM8/dMgqY2N4lbT+jZVsxh0hCJRbwkIEnbr/aPjMQ28fNDI5lB51Klh00MWZZeVf27KBUj5w== dependencies: - "@jest/test-result" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/test-result" "^29.1.2" + "@jest/types" "^29.1.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.10.2" - jest-util "^29.0.3" + jest-util "^29.1.2" string-length "^4.0.1" jest-worker@^26.2.1: @@ -6963,15 +6905,6 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.0.3.tgz#c2ba0aa7e41eec9eb0be8e8a322ae6518df72647" - integrity sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.1.2.tgz#a68302af61bce82b42a9a57285ca7499d29b2afc" @@ -6982,15 +6915,15 @@ jest-worker@^29.1.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.0.3.tgz#5227a0596d30791b2649eea347e4aa97f734944d" - integrity sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ== +jest@^29.1.2: + version "29.1.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.1.2.tgz#f821a1695ffd6cd0efc3b59d2dfcc70a98582499" + integrity sha512-5wEIPpCezgORnqf+rCaYD1SK+mNN7NsstWzIsuvsnrhR/hSxXWd82oI7DkrbJ+XTD28/eG8SmxdGvukrGGK6Tw== dependencies: - "@jest/core" "^29.0.3" - "@jest/types" "^29.0.3" + "@jest/core" "^29.1.2" + "@jest/types" "^29.1.2" import-local "^3.0.2" - jest-cli "^29.0.3" + jest-cli "^29.1.2" js-base64@^2.1.9: version "2.6.4" @@ -9014,15 +8947,6 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^29.0.3: - version "29.0.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.0.3.tgz#23d5f8cabc9cbf209a77d49409d093d61166a811" - integrity sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q== - dependencies: - "@jest/schemas" "^29.0.0" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-format@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.1.2.tgz#b1f6b75be7d699be1a051f5da36e8ae9e76a8e6a" From 99a43f0282d5115b75a564205ca7d2db31a3a945 Mon Sep 17 00:00:00 2001 From: trwnh Date: Thu, 6 Oct 2022 22:53:14 -0500 Subject: [PATCH 016/500] Fix #19304 (#19305) --- app/javascript/mastodon/features/report/category.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/report/category.js b/app/javascript/mastodon/features/report/category.js index 9215b3f51e..3658bb7075 100644 --- a/app/javascript/mastodon/features/report/category.js +++ b/app/javascript/mastodon/features/report/category.js @@ -20,7 +20,7 @@ const messages = defineMessages({ }); const mapStateToProps = state => ({ - rules: state.get('rules'), + rules: state.getIn(['server', 'rules']), }); export default @connect(mapStateToProps) From 7fb738c8372a700e1b42534cb202005b8c73b946 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 7 Oct 2022 10:14:31 +0200 Subject: [PATCH 017/500] Add interaction modal to logged-out web UI (#19306) --- app/javascript/mastodon/components/status.js | 1 + .../mastodon/components/status_action_bar.js | 23 +-- .../mastodon/containers/status_container.js | 8 ++ .../features/account/components/header.js | 3 +- .../account_timeline/components/header.js | 6 + .../containers/header_container.js | 8 ++ .../features/interaction_modal/index.js | 132 ++++++++++++++++++ .../picture_in_picture/components/footer.js | 66 ++++++--- .../features/status/components/action_bar.js | 7 +- .../mastodon/features/status/index.js | 67 ++++++--- .../features/ui/components/modal_root.js | 2 + .../styles/mastodon/components.scss | 121 ++++++++++++++++ 12 files changed, 394 insertions(+), 50 deletions(-) create mode 100644 app/javascript/mastodon/features/interaction_modal/index.js diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 0d3b51f07a..381088be73 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -86,6 +86,7 @@ class Status extends ImmutablePureComponent { onToggleHidden: PropTypes.func, onToggleCollapsed: PropTypes.func, onTranslate: PropTypes.func, + onInteractionModal: PropTypes.func, muted: PropTypes.bool, hidden: PropTypes.bool, unread: PropTypes.bool, diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 4b384e6e54..9e8cadce28 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -82,6 +82,7 @@ class StatusActionBar extends ImmutablePureComponent { onBookmark: PropTypes.func, onFilter: PropTypes.func, onAddFilter: PropTypes.func, + onInteractionModal: PropTypes.func, withDismiss: PropTypes.bool, withCounters: PropTypes.bool, scrollKey: PropTypes.string, @@ -97,10 +98,12 @@ class StatusActionBar extends ImmutablePureComponent { ] handleReplyClick = () => { - if (me) { + const { signedIn } = this.context.identity; + + if (signedIn) { this.props.onReply(this.props.status, this.context.router.history); } else { - this._openInteractionDialog('reply'); + this.props.onInteractionModal('reply', this.props.status); } } @@ -114,25 +117,25 @@ class StatusActionBar extends ImmutablePureComponent { } handleFavouriteClick = () => { - if (me) { + const { signedIn } = this.context.identity; + + if (signedIn) { this.props.onFavourite(this.props.status); } else { - this._openInteractionDialog('favourite'); + this.props.onInteractionModal('favourite', this.props.status); } } handleReblogClick = e => { - if (me) { + const { signedIn } = this.context.identity; + + if (signedIn) { this.props.onReblog(this.props.status, e); } else { - this._openInteractionDialog('reblog'); + this.props.onInteractionModal('reblog', this.props.status); } } - _openInteractionDialog = type => { - window.open(`/interact/${this.props.status.get('id')}?type=${type}`, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes'); - } - handleBookmarkClick = () => { this.props.onBookmark(this.props.status); } diff --git a/app/javascript/mastodon/containers/status_container.js b/app/javascript/mastodon/containers/status_container.js index 9280a6ee3f..294105f259 100644 --- a/app/javascript/mastodon/containers/status_container.js +++ b/app/javascript/mastodon/containers/status_container.js @@ -237,6 +237,14 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ dispatch(deployPictureInPicture(status.get('id'), status.getIn(['account', 'id']), type, mediaProps)); }, + onInteractionModal (type, status) { + dispatch(openModal('INTERACTION', { + type, + accountId: status.getIn(['account', 'id']), + url: status.get('url'), + })); + }, + }); export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Status)); diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index e407a0d55c..765b3cc1e7 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -96,6 +96,7 @@ class Header extends ImmutablePureComponent { onAddToList: PropTypes.func.isRequired, onEditAccountNote: PropTypes.func.isRequired, onChangeLanguages: PropTypes.func.isRequired, + onInteractionModal: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -177,7 +178,7 @@ class Header extends ImmutablePureComponent { } else if (account.getIn(['relationship', 'requested'])) { actionBtn = +
+ ); + } + +} + +export default @connect(mapStateToProps) +class InteractionModal extends React.PureComponent { + + static propTypes = { + displayNameHtml: PropTypes.string, + url: PropTypes.string, + type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow']), + }; + + render () { + const { url, type, displayNameHtml } = this.props; + + const name = ; + + let title, actionDescription, icon; + + switch(type) { + case 'reply': + icon = ; + title = ; + actionDescription = ; + break; + case 'reblog': + icon = ; + title = ; + actionDescription = ; + break; + case 'favourite': + icon = ; + title = ; + actionDescription = ; + break; + case 'follow': + icon = ; + title = ; + actionDescription = ; + break; + } + + return ( +
+
+

{icon} {title}

+

{actionDescription}

+
+ +
+
+

+ + +
+ +
+

+

+ +
+
+
+ ); + } + +} diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.js b/app/javascript/mastodon/features/picture_in_picture/components/footer.js index 0cb42b25aa..0beb2e14dc 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.js +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.js @@ -43,6 +43,7 @@ class Footer extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static propTypes = { @@ -67,26 +68,44 @@ class Footer extends ImmutablePureComponent { }; handleReplyClick = () => { - const { dispatch, askReplyConfirmation, intl } = this.props; - - if (askReplyConfirmation) { - dispatch(openModal('CONFIRM', { - message: intl.formatMessage(messages.replyMessage), - confirm: intl.formatMessage(messages.replyConfirm), - onConfirm: this._performReply, - })); + const { dispatch, askReplyConfirmation, status, intl } = this.props; + const { signedIn } = this.context.identity; + + if (signedIn) { + if (askReplyConfirmation) { + dispatch(openModal('CONFIRM', { + message: intl.formatMessage(messages.replyMessage), + confirm: intl.formatMessage(messages.replyConfirm), + onConfirm: this._performReply, + })); + } else { + this._performReply(); + } } else { - this._performReply(); + dispatch(openModal('INTERACTION', { + type: 'reply', + accountId: status.getIn(['account', 'id']), + url: status.get('url'), + })); } }; handleFavouriteClick = () => { const { dispatch, status } = this.props; - - if (status.get('favourited')) { - dispatch(unfavourite(status)); + const { signedIn } = this.context.identity; + + if (signedIn) { + if (status.get('favourited')) { + dispatch(unfavourite(status)); + } else { + dispatch(favourite(status)); + } } else { - dispatch(favourite(status)); + dispatch(openModal('INTERACTION', { + type: 'favourite', + accountId: status.getIn(['account', 'id']), + url: status.get('url'), + })); } }; @@ -97,13 +116,22 @@ class Footer extends ImmutablePureComponent { handleReblogClick = e => { const { dispatch, status } = this.props; - - if (status.get('reblogged')) { - dispatch(unreblog(status)); - } else if ((e && e.shiftKey) || !boostModal) { - this._performReblog(status); + const { signedIn } = this.context.identity; + + if (signedIn) { + if (status.get('reblogged')) { + dispatch(unreblog(status)); + } else if ((e && e.shiftKey) || !boostModal) { + this._performReblog(status); + } else { + dispatch(initBoostModal({ status, onReblog: this._performReblog })); + } } else { - dispatch(initBoostModal({ status, onReblog: this._performReblog })); + dispatch(openModal('INTERACTION', { + type: 'reblog', + accountId: status.getIn(['account', 'id']), + url: status.get('url'), + })); } }; diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 50bda69f87..2e240c4147 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -194,6 +194,7 @@ class ActionBar extends React.PureComponent { render () { const { status, relationship, intl } = this.props; + const { signedIn, permissions } = this.context.identity; const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); const pinnableStatus = ['public', 'unlisted', 'private'].includes(status.get('visibility')); @@ -250,7 +251,7 @@ class ActionBar extends React.PureComponent { } } - if ((this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { + if ((permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { menu.push(null); menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses?id=${status.get('id')}` }); @@ -287,10 +288,10 @@ class ActionBar extends React.PureComponent {
{shareButton} -
+
- +
); diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index 748dc7a927..3d238e7ee1 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -180,6 +180,7 @@ class Status extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static propTypes = { @@ -228,10 +229,21 @@ class Status extends ImmutablePureComponent { } handleFavouriteClick = (status) => { - if (status.get('favourited')) { - this.props.dispatch(unfavourite(status)); + const { dispatch } = this.props; + const { signedIn } = this.context.identity; + + if (signedIn) { + if (status.get('favourited')) { + dispatch(unfavourite(status)); + } else { + dispatch(favourite(status)); + } } else { - this.props.dispatch(favourite(status)); + dispatch(openModal('INTERACTION', { + type: 'favourite', + accountId: status.getIn(['account', 'id']), + url: status.get('url'), + })); } } @@ -244,15 +256,25 @@ class Status extends ImmutablePureComponent { } handleReplyClick = (status) => { - let { askReplyConfirmation, dispatch, intl } = this.props; - if (askReplyConfirmation) { - dispatch(openModal('CONFIRM', { - message: intl.formatMessage(messages.replyMessage), - confirm: intl.formatMessage(messages.replyConfirm), - onConfirm: () => dispatch(replyCompose(status, this.context.router.history)), - })); + const { askReplyConfirmation, dispatch, intl } = this.props; + const { signedIn } = this.context.identity; + + if (signedIn) { + if (askReplyConfirmation) { + dispatch(openModal('CONFIRM', { + message: intl.formatMessage(messages.replyMessage), + confirm: intl.formatMessage(messages.replyConfirm), + onConfirm: () => dispatch(replyCompose(status, this.context.router.history)), + })); + } else { + dispatch(replyCompose(status, this.context.router.history)); + } } else { - dispatch(replyCompose(status, this.context.router.history)); + dispatch(openModal('INTERACTION', { + type: 'reply', + accountId: status.getIn(['account', 'id']), + url: status.get('url'), + })); } } @@ -261,14 +283,25 @@ class Status extends ImmutablePureComponent { } handleReblogClick = (status, e) => { - if (status.get('reblogged')) { - this.props.dispatch(unreblog(status)); - } else { - if ((e && e.shiftKey) || !boostModal) { - this.handleModalReblog(status); + const { dispatch } = this.props; + const { signedIn } = this.context.identity; + + if (signedIn) { + if (status.get('reblogged')) { + dispatch(unreblog(status)); } else { - this.props.dispatch(initBoostModal({ status, onReblog: this.handleModalReblog })); + if ((e && e.shiftKey) || !boostModal) { + this.handleModalReblog(status); + } else { + dispatch(initBoostModal({ status, onReblog: this.handleModalReblog })); + } } + } else { + dispatch(openModal('INTERACTION', { + type: 'reblog', + accountId: status.getIn(['account', 'id']), + url: status.get('url'), + })); } } diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index dfa89f2ce9..5c273ffa48 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -13,6 +13,7 @@ import AudioModal from './audio_modal'; import ConfirmationModal from './confirmation_modal'; import SubscribedLanguagesModal from 'mastodon/features/subscribed_languages_modal'; import FocalPointModal from './focal_point_modal'; +import InteractionModal from 'mastodon/features/interaction_modal'; import { MuteModal, BlockModal, @@ -41,6 +42,7 @@ const MODAL_COMPONENTS = { 'COMPARE_HISTORY': CompareHistoryModal, 'FILTER': FilterModal, 'SUBSCRIBED_LANGUAGES': () => Promise.resolve({ default: SubscribedLanguagesModal }), + 'INTERACTION': () => Promise.resolve({ default: InteractionModal }), }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 491aec339b..a3dc4c637c 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4899,6 +4899,7 @@ a.status-card.compact:hover { left: 0; width: 100%; height: 100%; + box-sizing: border-box; display: flex; flex-direction: column; align-items: center; @@ -8105,3 +8106,123 @@ noscript { margin: 10px 0; } } + +.interaction-modal { + max-width: 90vw; + width: 600px; + background: $ui-base-color; + border-radius: 8px; + overflow: hidden; + position: relative; + display: block; + padding: 20px; + + h3 { + font-size: 22px; + line-height: 33px; + font-weight: 700; + text-align: center; + } + + &__icon { + color: $highlight-text-color; + margin: 0 5px; + } + + &__lead { + padding: 20px; + text-align: center; + + h3 { + margin-bottom: 15px; + } + + p { + font-size: 17px; + line-height: 22px; + color: $darker-text-color; + } + } + + &__choices { + display: flex; + + &__choice { + flex: 0 0 auto; + width: 50%; + box-sizing: border-box; + padding: 20px; + + h3 { + margin-bottom: 20px; + } + + p { + color: $darker-text-color; + margin-bottom: 20px; + } + + .button { + margin-bottom: 10px; + + &:last-child { + margin-bottom: 0; + } + } + } + } + + @media screen and (max-width: $no-gap-breakpoint - 1px) { + &__choices { + display: block; + + &__choice { + width: auto; + margin-bottom: 20px; + } + } + } +} + +.copypaste { + display: flex; + align-items: center; + gap: 10px; + + input { + display: block; + font-family: inherit; + background: darken($ui-base-color, 8%); + border: 1px solid $highlight-text-color; + color: $darker-text-color; + border-radius: 4px; + padding: 6px 9px; + line-height: 22px; + font-size: 14px; + transition: border-color 300ms linear; + flex: 1 1 auto; + overflow: hidden; + + &:focus { + outline: 0; + background: darken($ui-base-color, 4%); + } + } + + .button { + flex: 0 0 auto; + transition: background 300ms linear; + } + + &.copied { + input { + border: 1px solid $valid-value-color; + transition: none; + } + + .button { + background: $valid-value-color; + transition: none; + } + } +} From a2ba01132603174c43c5788a95f9ee127b684c0a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 8 Oct 2022 06:01:11 +0200 Subject: [PATCH 018/500] Change privacy policy to be rendered in web UI, add REST API (#19310) Source string no longer localized, Markdown instead of raw HTML --- Gemfile | 1 + Gemfile.lock | 8 +- .../instances/privacy_policies_controller.rb | 18 ++++ app/controllers/privacy_controller.rb | 17 +--- .../mastodon/features/privacy_policy/index.js | 60 +++++++++++++ .../features/ui/components/link_footer.js | 2 +- app/javascript/mastodon/features/ui/index.js | 2 + .../features/ui/util/async-components.js | 4 + .../styles/mastodon/components.scss | 88 ++++++++++++++++++- app/models/privacy_policy.rb | 77 ++++++++++++++++ .../rest/privacy_policy_serializer.rb | 19 ++++ app/views/privacy/show.html.haml | 9 +- config/i18n-tasks.yml | 1 - config/locales/en.yml | 85 +----------------- config/routes.rb | 3 +- 15 files changed, 282 insertions(+), 112 deletions(-) create mode 100644 app/controllers/api/v1/instances/privacy_policies_controller.rb create mode 100644 app/javascript/mastodon/features/privacy_policy/index.js create mode 100644 app/models/privacy_policy.rb create mode 100644 app/serializers/rest/privacy_policy_serializer.rb diff --git a/Gemfile b/Gemfile index fedd55f2fb..34899967b3 100644 --- a/Gemfile +++ b/Gemfile @@ -72,6 +72,7 @@ gem 'rack-attack', '~> 6.6' gem 'rack-cors', '~> 1.1', require: 'rack/cors' gem 'rails-i18n', '~> 6.0' gem 'rails-settings-cached', '~> 0.6' +gem 'redcarpet', '~> 3.5' gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis'] gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' gem 'rqrcode', '~> 2.1' diff --git a/Gemfile.lock b/Gemfile.lock index 6866ef7216..5788c857d1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -402,7 +402,6 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2022.0105) mini_mime (1.1.2) - mini_portile2 (2.8.0) minitest (5.16.3) msgpack (1.5.4) multi_json (1.15.0) @@ -412,8 +411,7 @@ GEM net-ssh (>= 2.6.5, < 8.0.0) net-ssh (7.0.1) nio4r (2.5.8) - nokogiri (1.13.8) - mini_portile2 (~> 2.8.0) + nokogiri (1.13.8-x86_64-linux) racc (~> 1.4) nsa (0.2.8) activesupport (>= 4.2, < 7) @@ -539,6 +537,7 @@ GEM link_header (~> 0.0, >= 0.0.8) rdf-normalize (0.5.0) rdf (~> 3.2) + redcarpet (3.5.1) redis (4.5.1) redis-namespace (1.9.0) redis (>= 4) @@ -727,7 +726,7 @@ GEM zeitwerk (2.6.0) PLATFORMS - ruby + x86_64-linux DEPENDENCIES active_model_serializers (~> 0.10) @@ -819,6 +818,7 @@ DEPENDENCIES rails-i18n (~> 6.0) rails-settings-cached (~> 0.6) rdf-normalize (~> 0.5) + redcarpet (~> 3.5) redis (~> 4.5) redis-namespace (~> 1.9) rexml (~> 3.2) diff --git a/app/controllers/api/v1/instances/privacy_policies_controller.rb b/app/controllers/api/v1/instances/privacy_policies_controller.rb new file mode 100644 index 0000000000..dbd69f54d4 --- /dev/null +++ b/app/controllers/api/v1/instances/privacy_policies_controller.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class Api::V1::Instances::PrivacyPoliciesController < Api::BaseController + skip_before_action :require_authenticated_user!, unless: :whitelist_mode? + + before_action :set_privacy_policy + + def show + expires_in 1.day, public: true + render json: @privacy_policy, serializer: REST::PrivacyPolicySerializer + end + + private + + def set_privacy_policy + @privacy_policy = PrivacyPolicy.current + end +end diff --git a/app/controllers/privacy_controller.rb b/app/controllers/privacy_controller.rb index ced84dbe5e..bc98bca516 100644 --- a/app/controllers/privacy_controller.rb +++ b/app/controllers/privacy_controller.rb @@ -1,22 +1,11 @@ # frozen_string_literal: true class PrivacyController < ApplicationController - layout 'public' - - before_action :set_instance_presenter - before_action :set_expires_in + include WebAppControllerConcern skip_before_action :require_functional! - def show; end - - private - - def set_instance_presenter - @instance_presenter = InstancePresenter.new - end - - def set_expires_in - expires_in 0, public: true + def show + expires_in 0, public: true if current_account.nil? end end diff --git a/app/javascript/mastodon/features/privacy_policy/index.js b/app/javascript/mastodon/features/privacy_policy/index.js new file mode 100644 index 0000000000..b7ca03d2c2 --- /dev/null +++ b/app/javascript/mastodon/features/privacy_policy/index.js @@ -0,0 +1,60 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { title } from 'mastodon/initial_state'; +import { Helmet } from 'react-helmet'; +import { FormattedMessage, FormattedDate, injectIntl, defineMessages } from 'react-intl'; +import Column from 'mastodon/components/column'; +import api from 'mastodon/api'; +import Skeleton from 'mastodon/components/skeleton'; + +const messages = defineMessages({ + title: { id: 'privacy_policy.title', defaultMessage: 'Privacy Policy' }, +}); + +export default @injectIntl +class PrivacyPolicy extends React.PureComponent { + + static propTypes = { + intl: PropTypes.object, + }; + + state = { + content: null, + lastUpdated: null, + isLoading: true, + }; + + componentDidMount () { + api().get('/api/v1/instance/privacy_policy').then(({ data }) => { + this.setState({ content: data.content, lastUpdated: data.updated_at, isLoading: false }); + }).catch(() => { + this.setState({ isLoading: false }); + }); + } + + render () { + const { intl } = this.props; + const { isLoading, content, lastUpdated } = this.state; + + return ( + +
+
+

+

: }} />

+
+ +
+
+ + + {intl.formatMessage(messages.title)} - {title} + + + ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index 2b092a1828..c4ce2a9855 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -54,7 +54,7 @@ class LinkFooter extends React.PureComponent { items.push(); items.push(); items.push(); - items.push(); + items.push(); items.push(); if (profileDirectory) { diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index bc6ff1866a..bd19303686 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -52,6 +52,7 @@ import { Explore, FollowRecommendations, About, + PrivacyPolicy, } from './util/async-components'; import { me, title } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; @@ -173,6 +174,7 @@ class SwitchingColumnsArea extends React.PureComponent { + diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index 5907e07729..c79dc014c4 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -169,3 +169,7 @@ export function FilterModal () { export function About () { return import(/*webpackChunkName: "features/about" */'../../about'); } + +export function PrivacyPolicy () { + return import(/*webpackChunkName: "features/privacy_policy" */'../../privacy_policy'); +} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index a3dc4c637c..cc8455ce3c 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2283,7 +2283,8 @@ $ui-header-height: 55px; > .scrollable { background: $ui-base-color; - border-radius: 0 0 4px 4px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; } } @@ -8226,3 +8227,88 @@ noscript { } } } + +.privacy-policy { + background: $ui-base-color; + padding: 20px; + + @media screen and (min-width: $no-gap-breakpoint) { + border-radius: 4px; + } + + &__body { + margin-top: 20px; + color: $secondary-text-color; + font-size: 15px; + line-height: 22px; + + h1, + p, + ul, + ol { + margin-bottom: 20px; + } + + ul { + list-style: disc; + } + + ol { + list-style: decimal; + } + + ul, + ol { + padding-left: 1em; + } + + li { + margin-bottom: 10px; + + &::marker { + color: $darker-text-color; + } + + &:last-child { + margin-bottom: 0; + } + } + + h1 { + color: $primary-text-color; + font-size: 19px; + line-height: 24px; + font-weight: 700; + margin-top: 30px; + + &:first-child { + margin-top: 0; + } + } + + strong { + font-weight: 700; + color: $primary-text-color; + } + + em { + font-style: italic; + } + + a { + color: $highlight-text-color; + text-decoration: underline; + + &:focus, + &:hover, + &:active { + text-decoration: none; + } + } + + hr { + border: 1px solid lighten($ui-base-color, 4%); + margin: 30px 0; + } + } +} diff --git a/app/models/privacy_policy.rb b/app/models/privacy_policy.rb new file mode 100644 index 0000000000..b93b6cf350 --- /dev/null +++ b/app/models/privacy_policy.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +class PrivacyPolicy < ActiveModelSerializers::Model + DEFAULT_PRIVACY_POLICY = <<~TXT + This privacy policy describes how %{domain} ("%{domain}", "we", "us") collects, protects and uses the personally identifiable information you may provide through the %{domain} website or its API. The policy also describes the choices available to you regarding our use of your personal information and how you can access and update this information. This policy does not apply to the practices of companies that %{domain} does not own or control, or to individuals that %{domain} does not employ or manage. + + # What information do we collect? + + - **Basic account information**: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. + - **Posts, following and other public information**: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public. + - **Direct and followers-only posts**: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. **Please keep in mind that the operators of the server and any receiving server may view such messages**, and that recipients may screenshot, copy or otherwise re-share them. **Do not share any sensitive information over Mastodon.** + - **IPs and other metadata**: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server. + + # What do we use your information for? + + Any of the information we collect from you may be used in the following ways: + + - To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline. + - To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations. + - The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions. + + # How do we protect your information? + + We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account. + + # What is our data retention policy? + + We will make a good faith effort to: + + - Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days. + - Retain the IP addresses associated with registered users no more than 12 months. + + You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image. + + You may irreversibly delete your account at any time. + + # Do we use cookies? + + Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account. + + We use cookies to understand and save your preferences for future visits. + + # Do we disclose any information to outside parties? + + We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety. + + Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this. + + When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password. + + # Site usage by children + + If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site. + + If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site. + + Law requirements can be different if this server is in another jurisdiction. + + ___ + + This document is CC-BY-SA. Originally adapted from the [Discourse privacy policy](https://github.com/discourse/discourse). + TXT + + DEFAULT_UPDATED_AT = DateTime.new(2022, 10, 7).freeze + + attributes :updated_at, :text + + def self.current + custom = Setting.find_by(var: 'site_terms') + + if custom + new(text: custom.value, updated_at: custom.updated_at) + else + new(text: DEFAULT_PRIVACY_POLICY, updated_at: DEFAULT_UPDATED_AT) + end + end +end diff --git a/app/serializers/rest/privacy_policy_serializer.rb b/app/serializers/rest/privacy_policy_serializer.rb new file mode 100644 index 0000000000..f0572e714d --- /dev/null +++ b/app/serializers/rest/privacy_policy_serializer.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class REST::PrivacyPolicySerializer < ActiveModel::Serializer + attributes :updated_at, :content + + def updated_at + object.updated_at.iso8601 + end + + def content + markdown.render(object.text % { domain: Rails.configuration.x.local_domain }) + end + + private + + def markdown + @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, escape_html: true, no_images: true) + end +end diff --git a/app/views/privacy/show.html.haml b/app/views/privacy/show.html.haml index cdd38a5958..cfc285925e 100644 --- a/app/views/privacy/show.html.haml +++ b/app/views/privacy/show.html.haml @@ -1,9 +1,4 @@ - content_for :page_title do - = t('terms.title', instance: site_hostname) + = t('privacy_policy.title') -.grid - .column-0 - .box-widget - .rich-formatting= @instance_presenter.privacy_policy.html_safe.presence || t('terms.body_html') - .column-1 - = render 'application/sidebar' += render 'shared/web_app' diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index 1bebae5e93..c1da42bd87 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -40,7 +40,6 @@ ignore_missing: - 'errors.messages.*' - 'activerecord.errors.models.doorkeeper/*' - 'sessions.{browsers,platforms}.*' - - 'terms.body_html' - 'application_mailer.salutation' - 'errors.500' - 'auth.providers.*' diff --git a/config/locales/en.yml b/config/locales/en.yml index 505a2f9fc5..cdac4fb544 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1405,6 +1405,8 @@ en: other: Other posting_defaults: Posting defaults public_timelines: Public timelines + privacy_policy: + title: Privacy Policy reactions: errors: limit_reached: Limit of different reactions reached @@ -1614,89 +1616,6 @@ en: too_late: It is too late to appeal this strike tags: does_not_match_previous_name: does not match the previous name - terms: - body_html: | -

Privacy Policy

-

What information do we collect?

- -
    -
  • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • -
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
  • -
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
  • -
- -
- -

What do we use your information for?

- -

Any of the information we collect from you may be used in the following ways:

- -
    -
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • -
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • -
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
  • -
- -
- -

How do we protect your information?

- -

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

- -
- -

What is our data retention policy?

- -

We will make a good faith effort to:

- -
    -
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • -
  • Retain the IP addresses associated with registered users no more than 12 months.
  • -
- -

You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

- -

You may irreversibly delete your account at any time.

- -
- -

Do we use cookies?

- -

Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

- -

We use cookies to understand and save your preferences for future visits.

- -
- -

Do we disclose any information to outside parties?

- -

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

- -

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

- -

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

- -
- -

Site usage by children

- -

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

- -

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

- -

Law requirements can be different if this server is in another jurisdiction.

- -
- -

Changes to our Privacy Policy

- -

If we decide to change our privacy policy, we will post those changes on this page.

- -

This document is CC-BY-SA. It was last updated May 26, 2022.

- -

Originally adapted from the Discourse privacy policy.

- title: "%{instance} Privacy Policy" themes: contrast: Mastodon (High contrast) default: Mastodon (Dark) diff --git a/config/routes.rb b/config/routes.rb index 472e6aa6be..e6098cd172 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -486,8 +486,9 @@ Rails.application.routes.draw do resource :instance, only: [:show] do resources :peers, only: [:index], controller: 'instances/peers' - resource :activity, only: [:show], controller: 'instances/activity' resources :rules, only: [:index], controller: 'instances/rules' + resource :privacy_policy, only: [:show], controller: 'instances/privacy_policies' + resource :activity, only: [:show], controller: 'instances/activity' end resource :domain_blocks, only: [:show, :create, :destroy] From 9a685e2f8c6c7308b4821cc9b312b8c87ece1dbc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 8 Oct 2022 06:34:58 +0200 Subject: [PATCH 019/500] New Crowdin updates (#19297) * New translations en.yml (Corsican) * New translations en.yml (Kabyle) * New translations en.yml (Taigi) * New translations simple_form.en.yml (Vietnamese) * New translations en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Sinhala) * New translations en.yml (Asturian) * New translations activerecord.en.yml (Bulgarian) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Finnish) * New translations activerecord.en.yml (Finnish) * New translations devise.en.yml (Finnish) * New translations activerecord.en.yml (Hebrew) * New translations activerecord.en.yml (Basque) * New translations devise.en.yml (Hebrew) * New translations simple_form.en.yml (Hungarian) * New translations activerecord.en.yml (Hungarian) * New translations devise.en.yml (Hungarian) * New translations simple_form.en.yml (Armenian) * New translations activerecord.en.yml (Armenian) * New translations devise.en.yml (Armenian) * New translations devise.en.yml (Basque) * New translations simple_form.en.yml (Basque) * New translations devise.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations activerecord.en.yml (Catalan) * New translations devise.en.yml (Catalan) * New translations devise.en.yml (Czech) * New translations simple_form.en.yml (Danish) * New translations activerecord.en.yml (Danish) * New translations devise.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations activerecord.en.yml (German) * New translations devise.en.yml (German) * New translations simple_form.en.yml (Greek) * New translations activerecord.en.yml (Greek) * New translations devise.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations activerecord.en.yml (Frisian) * New translations devise.en.yml (Frisian) * New translations simple_form.en.yml (Italian) * New translations activerecord.en.yml (Italian) * New translations activerecord.en.yml (Portuguese) * New translations activerecord.en.yml (Polish) * New translations devise.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations devise.en.yml (Portuguese) * New translations activerecord.en.yml (Norwegian) * New translations simple_form.en.yml (Russian) * New translations activerecord.en.yml (Russian) * New translations devise.en.yml (Russian) * New translations simple_form.en.yml (Slovak) * New translations activerecord.en.yml (Slovak) * New translations devise.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations devise.en.yml (Norwegian) * New translations simple_form.en.yml (Norwegian) * New translations devise.en.yml (Italian) * New translations activerecord.en.yml (Korean) * New translations simple_form.en.yml (Japanese) * New translations activerecord.en.yml (Japanese) * New translations devise.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations activerecord.en.yml (Georgian) * New translations devise.en.yml (Georgian) * New translations simple_form.en.yml (Korean) * New translations devise.en.yml (Korean) * New translations devise.en.yml (Dutch) * New translations activerecord.en.yml (Slovenian) * New translations devise.en.yml (Slovenian) * New translations devise.en.yml (Urdu (Pakistan)) * New translations devise.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Chinese Traditional) * New translations devise.en.yml (Chinese Simplified) * New translations activerecord.en.yml (Chinese Simplified) * New translations devise.en.yml (Ukrainian) * New translations activerecord.en.yml (Ukrainian) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Chinese Traditional) * New translations devise.en.yml (Turkish) * New translations activerecord.en.yml (Serbian (Cyrillic)) * New translations activerecord.en.yml (Turkish) * New translations simple_form.en.yml (Albanian) * New translations activerecord.en.yml (Albanian) * New translations devise.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations devise.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations activerecord.en.yml (Swedish) * New translations devise.en.yml (Swedish) * New translations simple_form.en.yml (Turkish) * New translations devise.en.yml (Icelandic) * New translations activerecord.en.yml (Indonesian) * New translations simple_form.en.yml (Indonesian) * New translations devise.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Vietnamese) * New translations activerecord.en.yml (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations devise.en.yml (Galician) * New translations simple_form.en.yml (Galician) * New translations devise.en.yml (Vietnamese) * New translations devise.en.yml (Indonesian) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Croatian) * New translations activerecord.en.yml (Croatian) * New translations devise.en.yml (Croatian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations devise.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Kazakh) * New translations activerecord.en.yml (Thai) * New translations devise.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations activerecord.en.yml (Estonian) * New translations devise.en.yml (Estonian) * New translations simple_form.en.yml (Latvian) * New translations activerecord.en.yml (Latvian) * New translations devise.en.yml (Latvian) * New translations devise.en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Persian) * New translations activerecord.en.yml (Persian) * New translations devise.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations activerecord.en.yml (Tamil) * New translations devise.en.yml (Tamil) * New translations simple_form.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Spanish, Argentina) * New translations devise.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Spanish, Mexico) * New translations devise.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations activerecord.en.yml (Bengali) * New translations devise.en.yml (Bengali) * New translations activerecord.en.yml (Marathi) * New translations activerecord.en.yml (Hindi) * New translations devise.en.yml (Malayalam) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Tatar) * New translations activerecord.en.yml (Tatar) * New translations devise.en.yml (Tatar) * New translations simple_form.en.yml (Malayalam) * New translations activerecord.en.yml (Malayalam) * New translations simple_form.en.yml (Breton) * New translations activerecord.en.yml (Breton) * New translations devise.en.yml (Breton) * New translations activerecord.en.yml (Sinhala) * New translations devise.en.yml (Sinhala) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Hindi) * New translations simple_form.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations devise.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations activerecord.en.yml (Esperanto) * New translations devise.en.yml (Esperanto) * New translations simple_form.en.yml (Corsican) * New translations activerecord.en.yml (Corsican) * New translations devise.en.yml (Corsican) * New translations simple_form.en.yml (Sardinian) * New translations activerecord.en.yml (Sardinian) * New translations devise.en.yml (Sardinian) * New translations devise.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Kabyle) * New translations activerecord.en.yml (Kabyle) * New translations devise.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations activerecord.en.yml (Ido) * New translations devise.en.yml (Ido) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Occitan) * New translations devise.en.yml (Kannada) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations activerecord.en.yml (Asturian) * New translations devise.en.yml (Asturian) * New translations activerecord.en.yml (Occitan) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations devise.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Serbian (Latin)) * New translations devise.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations devise.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations devise.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Chinese Simplified) * New translations en.yml (Russian) * New translations en.json (Chinese Simplified) * New translations en.yml (Icelandic) * New translations en.yml (Vietnamese) * New translations en.yml (Turkish) * New translations en.yml (Spanish) * New translations en.yml (Ukrainian) * New translations en.yml (Hungarian) * New translations en.yml (Hungarian) * New translations en.yml (Czech) * New translations en.yml (Albanian) * New translations en.json (Polish) * New translations en.yml (Polish) * New translations en.json (French) * New translations en.yml (French) * New translations simple_form.en.yml (French) * New translations en.json (French) * New translations en.yml (French) * New translations en.yml (Thai) * New translations en.yml (Greek) * New translations en.yml (Catalan) * New translations en.yml (Danish) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.yml (French) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Chinese Simplified) * New translations en.yml (Ido) * New translations en.yml (Spanish) * New translations en.yml (Turkish) * New translations en.yml (Albanian) * New translations en.yml (Ukrainian) * New translations en.yml (Chinese Traditional) * New translations en.yml (Slovenian) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.yml (Dutch) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.yml (Korean) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Russian) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Latvian) * New translations en.yml (Kurmanji (Kurdish)) * Fix platform-specific code * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- Gemfile.lock | 6 +- app/javascript/mastodon/locales/af.json | 16 ++ app/javascript/mastodon/locales/ar.json | 16 ++ app/javascript/mastodon/locales/ast.json | 22 ++- app/javascript/mastodon/locales/bg.json | 16 ++ app/javascript/mastodon/locales/bn.json | 16 ++ app/javascript/mastodon/locales/br.json | 16 ++ app/javascript/mastodon/locales/ca.json | 42 ++++-- app/javascript/mastodon/locales/ckb.json | 16 ++ app/javascript/mastodon/locales/co.json | 16 ++ app/javascript/mastodon/locales/cs.json | 38 +++-- app/javascript/mastodon/locales/cy.json | 16 ++ app/javascript/mastodon/locales/da.json | 42 ++++-- app/javascript/mastodon/locales/de.json | 38 +++-- .../mastodon/locales/defaultMessages.json | 82 ++++++++++ app/javascript/mastodon/locales/el.json | 34 +++-- app/javascript/mastodon/locales/en-GB.json | 16 ++ app/javascript/mastodon/locales/en.json | 16 ++ app/javascript/mastodon/locales/eo.json | 16 ++ app/javascript/mastodon/locales/es-AR.json | 38 +++-- app/javascript/mastodon/locales/es-MX.json | 44 ++++-- app/javascript/mastodon/locales/es.json | 44 ++++-- app/javascript/mastodon/locales/et.json | 16 ++ app/javascript/mastodon/locales/eu.json | 16 ++ app/javascript/mastodon/locales/fa.json | 16 ++ app/javascript/mastodon/locales/fi.json | 16 ++ app/javascript/mastodon/locales/fr.json | 88 ++++++----- app/javascript/mastodon/locales/fy.json | 16 ++ app/javascript/mastodon/locales/ga.json | 16 ++ app/javascript/mastodon/locales/gd.json | 16 ++ app/javascript/mastodon/locales/gl.json | 38 +++-- app/javascript/mastodon/locales/he.json | 16 ++ app/javascript/mastodon/locales/hi.json | 16 ++ app/javascript/mastodon/locales/hr.json | 16 ++ app/javascript/mastodon/locales/hu.json | 44 ++++-- app/javascript/mastodon/locales/hy.json | 16 ++ app/javascript/mastodon/locales/id.json | 16 ++ app/javascript/mastodon/locales/io.json | 38 +++-- app/javascript/mastodon/locales/is.json | 38 +++-- app/javascript/mastodon/locales/it.json | 46 ++++-- app/javascript/mastodon/locales/ja.json | 16 ++ app/javascript/mastodon/locales/ka.json | 16 ++ app/javascript/mastodon/locales/kab.json | 16 ++ app/javascript/mastodon/locales/kk.json | 16 ++ app/javascript/mastodon/locales/kn.json | 16 ++ app/javascript/mastodon/locales/ko.json | 38 +++-- app/javascript/mastodon/locales/ku.json | 44 ++++-- app/javascript/mastodon/locales/kw.json | 16 ++ app/javascript/mastodon/locales/lt.json | 16 ++ app/javascript/mastodon/locales/lv.json | 44 ++++-- app/javascript/mastodon/locales/mk.json | 16 ++ app/javascript/mastodon/locales/ml.json | 16 ++ app/javascript/mastodon/locales/mr.json | 16 ++ app/javascript/mastodon/locales/ms.json | 16 ++ app/javascript/mastodon/locales/nl.json | 16 ++ app/javascript/mastodon/locales/nn.json | 16 ++ app/javascript/mastodon/locales/no.json | 16 ++ app/javascript/mastodon/locales/oc.json | 16 ++ app/javascript/mastodon/locales/pa.json | 16 ++ app/javascript/mastodon/locales/pl.json | 44 ++++-- app/javascript/mastodon/locales/pt-BR.json | 16 ++ app/javascript/mastodon/locales/pt-PT.json | 44 ++++-- app/javascript/mastodon/locales/ro.json | 16 ++ app/javascript/mastodon/locales/ru.json | 28 +++- app/javascript/mastodon/locales/sa.json | 16 ++ app/javascript/mastodon/locales/sc.json | 16 ++ app/javascript/mastodon/locales/si.json | 16 ++ app/javascript/mastodon/locales/sk.json | 16 ++ app/javascript/mastodon/locales/sl.json | 38 +++-- app/javascript/mastodon/locales/sq.json | 44 ++++-- app/javascript/mastodon/locales/sr-Latn.json | 16 ++ app/javascript/mastodon/locales/sr.json | 16 ++ app/javascript/mastodon/locales/sv.json | 16 ++ app/javascript/mastodon/locales/szl.json | 16 ++ app/javascript/mastodon/locales/ta.json | 16 ++ app/javascript/mastodon/locales/tai.json | 16 ++ app/javascript/mastodon/locales/te.json | 16 ++ app/javascript/mastodon/locales/th.json | 16 ++ app/javascript/mastodon/locales/tr.json | 44 ++++-- app/javascript/mastodon/locales/tt.json | 16 ++ app/javascript/mastodon/locales/ug.json | 16 ++ app/javascript/mastodon/locales/uk.json | 38 +++-- app/javascript/mastodon/locales/ur.json | 16 ++ app/javascript/mastodon/locales/vi.json | 46 ++++-- app/javascript/mastodon/locales/zgh.json | 16 ++ app/javascript/mastodon/locales/zh-CN.json | 46 ++++-- app/javascript/mastodon/locales/zh-HK.json | 16 ++ app/javascript/mastodon/locales/zh-TW.json | 38 +++-- config/locales/af.yml | 4 - config/locales/ar.yml | 30 ---- config/locales/ast.yml | 11 -- config/locales/bg.yml | 9 -- config/locales/bn.yml | 9 -- config/locales/br.yml | 4 - config/locales/ca.yml | 113 ++------------ config/locales/ckb.yml | 27 ---- config/locales/co.yml | 25 --- config/locales/cs.yml | 118 +-------------- config/locales/cy.yml | 28 ---- config/locales/da.yml | 120 ++------------- config/locales/de.yml | 90 ++--------- config/locales/el.yml | 33 +--- config/locales/eo.yml | 29 ---- config/locales/es-AR.yml | 122 ++------------- config/locales/es-MX.yml | 89 ++--------- config/locales/es.yml | 89 ++--------- config/locales/et.yml | 25 --- config/locales/eu.yml | 28 ---- config/locales/fa.yml | 28 ---- config/locales/fi.yml | 29 ---- config/locales/fr.yml | 142 ++++-------------- config/locales/fy.yml | 3 - config/locales/gd.yml | 125 --------------- config/locales/gl.yml | 89 ++--------- config/locales/he.yml | 111 -------------- config/locales/hi.yml | 2 - config/locales/hr.yml | 8 - config/locales/hu.yml | 119 +-------------- config/locales/hy.yml | 22 --- config/locales/id.yml | 29 ---- config/locales/io.yml | 113 -------------- config/locales/is.yml | 122 ++------------- config/locales/it.yml | 122 ++------------- config/locales/ja.yml | 112 -------------- config/locales/ka.yml | 13 -- config/locales/kab.yml | 14 -- config/locales/kk.yml | 25 --- config/locales/ko.yml | 117 +-------------- config/locales/ku.yml | 120 ++------------- config/locales/lt.yml | 13 -- config/locales/lv.yml | 122 ++------------- config/locales/ml.yml | 3 - config/locales/ms.yml | 12 -- config/locales/nl.yml | 112 -------------- config/locales/nn.yml | 27 ---- config/locales/no.yml | 25 --- config/locales/oc.yml | 25 --- config/locales/pl.yml | 120 ++------------- config/locales/pt-BR.yml | 29 ---- config/locales/pt-PT.yml | 120 +-------------- config/locales/ro.yml | 22 --- config/locales/ru.yml | 46 ++---- config/locales/sc.yml | 25 --- config/locales/si.yml | 29 ---- config/locales/simple_form.fr.yml | 3 + config/locales/sk.yml | 29 ---- config/locales/sl.yml | 112 -------------- config/locales/sq.yml | 122 ++------------- config/locales/sr-Latn.yml | 4 - config/locales/sr.yml | 13 -- config/locales/sv.yml | 27 ---- config/locales/ta.yml | 8 - config/locales/tai.yml | 1 - config/locales/te.yml | 1 - config/locales/th.yml | 31 ---- config/locales/tr.yml | 121 ++------------- config/locales/uk.yml | 41 ++--- config/locales/vi.yml | 90 ++--------- config/locales/zgh.yml | 1 - config/locales/zh-CN.yml | 122 ++------------- config/locales/zh-HK.yml | 25 --- config/locales/zh-TW.yml | 125 ++------------- 162 files changed, 2079 insertions(+), 4181 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5788c857d1..417b01154d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -402,6 +402,7 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2022.0105) mini_mime (1.1.2) + mini_portile2 (2.8.0) minitest (5.16.3) msgpack (1.5.4) multi_json (1.15.0) @@ -411,7 +412,8 @@ GEM net-ssh (>= 2.6.5, < 8.0.0) net-ssh (7.0.1) nio4r (2.5.8) - nokogiri (1.13.8-x86_64-linux) + nokogiri (1.13.8) + mini_portile2 (~> 2.8.0) racc (~> 1.4) nsa (0.2.8) activesupport (>= 4.2, < 7) @@ -726,7 +728,7 @@ GEM zeitwerk (2.6.0) PLATFORMS - x86_64-linux + ruby DEPENDENCIES active_model_serializers (~> 0.10) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 0a0cb38044..5d3984be18 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 6831a23913..b5f5a6b4f0 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "اعتبرها كمقروءة", "conversation.open": "اعرض المحادثة", "conversation.with": "بـ {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "مِن الفديفرس المعروف", "directory.local": "مِن {domain} فقط", "directory.new_arrivals": "الوافدون الجُدد", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "اعرض الردود", "home.hide_announcements": "إخفاء الإعلانات", "home.show_announcements": "إظهار الإعلانات", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}", "intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}", "intervals.full.minutes": "{number, plural, one {# دقيقة} other {# دقائق}}", @@ -404,6 +418,8 @@ "privacy.public.short": "للعامة", "privacy.unlisted.long": "مرئي للجميع، ولكن مِن دون ميزات الاكتشاف", "privacy.unlisted.short": "غير مدرج", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "أنعِش", "regeneration_indicator.label": "جارٍ التحميل…", "regeneration_indicator.sublabel": "جارٍ تجهيز تغذية صفحتك الرئيسية!", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 824fc5dffc..b9361a075c 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "Con {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Dende'l fediversu", "directory.local": "Dende {domain} namái", "directory.new_arrivals": "Cuentes nueves", @@ -224,7 +226,7 @@ "generic.saved": "Saved", "getting_started.directory": "Directory", "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon ye software llibre y de códigu abiertu. Pues ver el códigu fonte, collaborar ya informar de fallos en {repository}.", "getting_started.heading": "Entamu", "getting_started.invite": "Convidar a persones", "getting_started.privacy_policy": "Privacy Policy", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Amosar rempuestes", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# día} other {# díes}}", "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Nun llistar", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tamos tresnando'l feed d'Aniciu!", @@ -480,8 +496,8 @@ "server_banner.active_users": "active users", "server_banner.administered_by": "Administered by:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.learn_more": "Saber más", + "server_banner.server_stats": "Estadístiques del sirvidor:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 101dba65c9..2e334fccd1 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Маркиране като прочетено", "conversation.open": "Преглед на разговор", "conversation.with": "С {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "От познат федивърс", "directory.local": "Само от {domain}", "directory.new_arrivals": "Новодошли", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Показване на отговори", "home.hide_announcements": "Скриване на оповестявания", "home.show_announcements": "Показване на оповестявания", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# ден} other {# дни}}", "intervals.full.hours": "{number, plural, one {# час} other {# часа}}", "intervals.full.minutes": "{number, plural, one {# минута} other {# минути}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Публично", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Скрито", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Опресняване", "regeneration_indicator.label": "Зареждане…", "regeneration_indicator.sublabel": "Вашата начална емисия се подготвя!", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 43588f1323..5548b60de9 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "পঠিত হিসেবে চিহ্নিত করুন", "conversation.open": "কথপোকথন দেখান", "conversation.with": "{names} এর সঙ্গে", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "পরিচিত ফেডিভারসের থেকে", "directory.local": "শুধু {domain} থেকে", "directory.new_arrivals": "নতুন আগত", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "মতামত দেখান", "home.hide_announcements": "ঘোষণা লুকান", "home.show_announcements": "ঘোষণা দেখান", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# ঘটা} other {# ঘটা}}", "intervals.full.minutes": "{number, plural, one {# মিনিট} other {# মিনিট}}", @@ -404,6 +418,8 @@ "privacy.public.short": "সর্বজনীন প্রকাশ্য", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "প্রকাশ্য নয়", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "সতেজ করা", "regeneration_indicator.label": "আসছে…", "regeneration_indicator.sublabel": "আপনার বাড়ির-সময়রেখা প্রস্তূত করা হচ্ছে!", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 92d5e2da94..b40cbf056f 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Merkañ evel lennet", "conversation.open": "Gwelout ar gaozeadenn", "conversation.with": "Gant {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Eus ar c'hevrebed anavezet", "directory.local": "Eus {domain} hepken", "directory.new_arrivals": "Degouezhet a-nevez", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Diskouez ar respontoù", "home.hide_announcements": "Kuzhat ar c'hemennoù", "home.show_announcements": "Diskouez ar c'hemennoù", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}", "intervals.full.hours": "{number, plural, one {# eurvezh} other{# eurvezh}}", "intervals.full.minutes": "{number, plural, one {# munut} other{# a vunutoù}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Publik", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Anlistennet", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Freskaat", "regeneration_indicator.label": "O kargañ…", "regeneration_indicator.sublabel": "War brientiñ emañ ho red degemer!", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 1369ab1495..7de43fbff1 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -48,7 +48,7 @@ "account.unmute": "Deixar de silenciar @{name}", "account.unmute_notifications": "Activar notificacions de @{name}", "account.unmute_short": "Deixa de silenciar", - "account_note.placeholder": "Fes clic per afegir una nota", + "account_note.placeholder": "Clica per afegir-hi una nota", "admin.dashboard.daily_retention": "Ràtio de retenció d'usuaris nous, per dia, després del registre", "admin.dashboard.monthly_retention": "Ràtio de retenció d'usuaris nous, per mes, després del registre", "admin.dashboard.retention.average": "Mitjana", @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", "bundle_modal_error.retry": "Tornar-ho a provar", - "column.about": "About", + "column.about": "Quant a", "column.blocks": "Usuaris bloquejats", "column.bookmarks": "Marcadors", "column.community": "Línia de temps local", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marca com a llegida", "conversation.open": "Mostra la conversa", "conversation.with": "Amb {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Del fedivers conegut", "directory.local": "Només de {domain}", "directory.new_arrivals": "Arribades noves", @@ -224,12 +226,12 @@ "generic.saved": "Desat", "getting_started.directory": "Directori", "getting_started.documentation": "Documentació", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon és lliure, programari de codi obert. Pots veure el codi font, contribuir-hi o reportar-hi incidències a {repository}.", "getting_started.heading": "Primers passos", "getting_started.invite": "Convidar gent", "getting_started.privacy_policy": "Política de Privacitat", "getting_started.security": "Configuració del compte", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Quant a Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sense {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Mostra les respostes", "home.hide_announcements": "Amaga els anuncis", "home.show_announcements": "Mostra els anuncis", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dia} other {# dies}}", "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Durada", "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?", "mute_modal.indefinite": "Indefinit", - "navigation_bar.about": "About", + "navigation_bar.about": "Quant a", "navigation_bar.apps": "Aconsegueix l'app", "navigation_bar.blocks": "Usuaris bloquejats", "navigation_bar.bookmarks": "Marcadors", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", "navigation_bar.security": "Seguretat", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Necessites registrar-te per a accedir aquest recurs.", "notification.admin.report": "{name} ha reportat {target}", "notification.admin.sign_up": "{name} s'ha registrat", "notification.favourite": "{name} ha afavorit la teva publicació", @@ -404,6 +418,8 @@ "privacy.public.short": "Públic", "privacy.unlisted.long": "Visible per tothom però exclosa de les funcions de descobriment", "privacy.unlisted.short": "No llistat", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Actualitza", "regeneration_indicator.label": "Carregant…", "regeneration_indicator.sublabel": "S'està preparant la teva línia de temps d'Inici!", @@ -476,13 +492,13 @@ "search_results.statuses_fts_disabled": "La cerca de publicacions pel seu contingut no està habilitada en aquest servidor Mastodon.", "search_results.title": "Cerca de {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Crear compte", + "server_banner.about_active_users": "Gent fem servir aquest servidor en els darrers 30 dies (Usuaris Actius Mensuals)", + "server_banner.active_users": "usuaris actius", + "server_banner.administered_by": "Administrat per:", + "server_banner.introduction": "{domain} és part de la xarxa social descentralitzada, potenciat per {mastodon}.", + "server_banner.learn_more": "Aprèn més", + "server_banner.server_stats": "Estadístiques del servidor:", + "sign_in_banner.create_account": "Crea un compte", "sign_in_banner.sign_in": "Inicia sessió", "sign_in_banner.text": "Inicia sessió per a seguir perfils o etiquetes, afavorir, compartir o respondre apunts, o interactuar des d'el teu compte amb un servidor diferent.", "status.admin_account": "Obre l'interfície de moderació per a @{name}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 3818bbfa94..88216bccc3 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "نیشانەکردن وەک خوێندراوە", "conversation.open": "نیشاندان گفتوگۆ", "conversation.with": "لەگەڵ{names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "لە ڕاژەکانی ناسراو", "directory.local": "تەنها لە {domain}", "directory.new_arrivals": "تازە گەیشتنەکان", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "وەڵامدانەوەکان پیشان بدە", "home.hide_announcements": "شاردنەوەی راگەیەنراوەکان", "home.show_announcements": "پیشاندانی راگەیەنراوەکان", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژەک}}", "intervals.full.hours": "{number, plural, one {# کات} other {# کات}}", "intervals.full.minutes": "{number, plural, one {# خولەک} other {# خولەک}}", @@ -404,6 +418,8 @@ "privacy.public.short": "گشتی", "privacy.unlisted.long": "بۆ هەمووان دیارە، بەڵام لە تایبەتمەندییەکانی دۆزینەوە دەرچووە", "privacy.unlisted.short": "لە لیست نەکراو", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "نوێکردنەوە", "regeneration_indicator.label": "بارکردن…", "regeneration_indicator.sublabel": "ڕاگەیەنەری ماڵەوەت ئامادە دەکرێت!", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 6aad2269d1..8aaab0241f 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marcà cum'è lettu", "conversation.open": "Vede a cunversazione", "conversation.with": "Cù {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Da u fediversu cunisciutu", "directory.local": "Solu da {domain}", "directory.new_arrivals": "Ultimi arrivi", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Vede e risposte", "home.hide_announcements": "Piattà annunzii", "home.show_announcements": "Vede annunzii", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# ghjornu} other {# ghjorni}}", "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}", "intervals.full.minutes": "{number, plural, one {# minuta} other {# minute}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Pubblicu", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Micca listatu", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Attualizà", "regeneration_indicator.label": "Caricamentu…", "regeneration_indicator.sublabel": "Priparazione di a vostra pagina d'accolta!", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 28adb742bc..c3bb2348e3 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Zavřít", "bundle_modal_error.message": "Při načítání této komponenty se něco pokazilo.", "bundle_modal_error.retry": "Zkusit znovu", - "column.about": "About", + "column.about": "O aplikaci", "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", "column.community": "Místní časová osa", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Označit jako přečtenou", "conversation.open": "Zobrazit konverzaci", "conversation.with": "S {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Ze známého fedivesmíru", "directory.local": "Pouze z domény {domain}", "directory.new_arrivals": "Nově příchozí", @@ -224,12 +226,12 @@ "generic.saved": "Uloženo", "getting_started.directory": "Adresář", "getting_started.documentation": "Dokumentace", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon je svobodný software s otevřeným zdrojovým kódem. Zdrojový kód si můžete prohlédnout, přispět do něj nebo nahlásit problémy na {repository}.", "getting_started.heading": "Začínáme", "getting_started.invite": "Pozvat lidi", "getting_started.privacy_policy": "Zásady ochrany osobních údajů", "getting_started.security": "Nastavení účtu", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "O Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "nebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Zobrazit odpovědi", "home.hide_announcements": "Skrýt oznámení", "home.show_announcements": "Zobrazit oznámení", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dní} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodin} other {# hodin}}", "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Trvání", "mute_modal.hide_notifications": "Skrýt oznámení od tohoto uživatele?", "mute_modal.indefinite": "Neomezeně", - "navigation_bar.about": "About", + "navigation_bar.about": "O aplikaci", "navigation_bar.apps": "Stáhnout aplikaci", "navigation_bar.blocks": "Blokovaní uživatelé", "navigation_bar.bookmarks": "Záložky", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", "navigation_bar.security": "Zabezpečení", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Pro přístup k tomuto zdroji se musíte přihlásit.", "notification.admin.report": "Uživatel {name} nahlásil {target}", "notification.admin.sign_up": "Uživatel {name} se zaregistroval", "notification.favourite": "Uživatel {name} si oblíbil váš příspěvek", @@ -404,6 +418,8 @@ "privacy.public.short": "Veřejný", "privacy.unlisted.long": "Viditelný pro všechny, ale vyňat z funkcí objevování", "privacy.unlisted.short": "Neuvedený", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Obnovit", "regeneration_indicator.label": "Načítání…", "regeneration_indicator.sublabel": "Váš domovský kanál se připravuje!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Vyhledávání příspěvků podle jejich obsahu není na tomto Mastodon serveru povoleno.", "search_results.title": "Hledat {q}", "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledků} other {výsledků}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Lidé používající tento server během posledních 30 dní (měsíční aktivní uživatelé)", + "server_banner.active_users": "aktivní uživatelé", + "server_banner.administered_by": "Spravováno:", + "server_banner.introduction": "{domain} je součástí decentralizované sociální sítě běžící na {mastodon}.", + "server_banner.learn_more": "Zjistit více", + "server_banner.server_stats": "Statistiky serveru:", "sign_in_banner.create_account": "Vytvořit účet", "sign_in_banner.sign_in": "Přihlásit se", "sign_in_banner.text": "Přihlaste se pro sledování profilů nebo hashtagů, oblíbených, sdílení a odpovědi na příspěvky nebo interakci z vašeho účtu na jiném serveru.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index c57b85f686..dc3bc0bef4 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Nodi fel wedi'i ddarllen", "conversation.open": "Gweld sgwrs", "conversation.with": "Gyda {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "O'r ffedysawd cyfan", "directory.local": "O {domain} yn unig", "directory.new_arrivals": "Newydd-ddyfodiaid", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Dangos ymatebion", "home.hide_announcements": "Cuddio cyhoeddiadau", "home.show_announcements": "Dangos cyhoeddiadau", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dydd} two {# ddydd} other {# o ddyddiau}}", "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}", "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Cyhoeddus", "privacy.unlisted.long": "Gweladwy i bawb, ond wedi optio allan o nodweddion darganfod", "privacy.unlisted.short": "Heb ei restru", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Adnewyddu", "regeneration_indicator.label": "Llwytho…", "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index a0ce703304..29be3d6a4a 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", "bundle_modal_error.retry": "Forsøg igen", - "column.about": "About", + "column.about": "Om", "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", "column.community": "Lokal tidslinje", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Markér som læst", "conversation.open": "Vis konversation", "conversation.with": "Med {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Fra kendt fedivers", "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", @@ -224,12 +226,12 @@ "generic.saved": "Gemt", "getting_started.directory": "Directory", "getting_started.documentation": "Dokumentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon er gratis, open-source software. Kildekoden kan ses, bidrages til eller problemer kan indrapporteres på {repository}.", "getting_started.heading": "Startmenu", "getting_started.invite": "Invitér folk", "getting_started.privacy_policy": "Fortrolighedspolitik", "getting_started.security": "Kontoindstillinger", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Om Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uden {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Vis svar", "home.hide_announcements": "Skjul bekendtgørelser", "home.show_announcements": "Vis bekendtgørelser", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dag} other {# dage}}", "intervals.full.hours": "{number, plural, one {# time} other {# timer}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Varighed", "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?", "mute_modal.indefinite": "Tidsubegrænset", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Om", + "navigation_bar.apps": "Hent appen", "navigation_bar.blocks": "Blokerede brugere", "navigation_bar.bookmarks": "Bogmærker", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Tavsgjorte ord", "navigation_bar.follow_requests": "Følgeanmodninger", "navigation_bar.follows_and_followers": "Følges og følgere", - "navigation_bar.info": "About", + "navigation_bar.info": "Om", "navigation_bar.keyboard_shortcuts": "Genvejstaster", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Log af", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", "navigation_bar.security": "Sikkerhed", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Man skal logge ind for at tilgå denne ressource.", "notification.admin.report": "{name} anmeldte {target}", "notification.admin.sign_up": "{name} tilmeldte sig", "notification.favourite": "{name} favoritmarkerede dit indlæg", @@ -404,6 +418,8 @@ "privacy.public.short": "Offentlig", "privacy.unlisted.long": "Synlig for alle, men med fravalgt visning i opdagelsesfunktioner", "privacy.unlisted.short": "Diskret", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Genindlæs", "regeneration_indicator.label": "Indlæser…", "regeneration_indicator.sublabel": "Din hjemmetidslinje klargøres!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Søgning på indlæg efter deres indhold ikke aktiveret på denne Mastodon-server.", "search_results.title": "Søg efter {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Folk, som brugte denne server de seneste 30 dage (månedlige aktive brugere)", + "server_banner.active_users": "aktive brugere", + "server_banner.administered_by": "Håndteres af:", + "server_banner.introduction": "{domain} er en del af det decentraliserede, sociale netværk drevet af {mastodon}.", + "server_banner.learn_more": "Læs mere", + "server_banner.server_stats": "Serverstatstik:", "sign_in_banner.create_account": "Opret konto", "sign_in_banner.sign_in": "Log ind", "sign_in_banner.text": "Log ind for at følge profiler eller hashtags, dele og svar på indlæg eller interagere fra kontoen på en anden server.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 6acad55933..276bab263d 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Schließen", "bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.", "bundle_modal_error.retry": "Erneut versuchen", - "column.about": "About", + "column.about": "Über", "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", "column.community": "Lokale Zeitleiste", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Als gelesen markieren", "conversation.open": "Unterhaltung anzeigen", "conversation.with": "Mit {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Aus dem Fediverse", "directory.local": "Nur von {domain}", "directory.new_arrivals": "Neue Benutzer", @@ -224,12 +226,12 @@ "generic.saved": "Gespeichert", "getting_started.directory": "Verzeichnis", "getting_started.documentation": "Dokumentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon ist kostenlos, Open-Source-Software. Sie können den Quellcode einsehen, beisteuern oder Fehler melden unter {repository}.", "getting_started.heading": "Erste Schritte", "getting_started.invite": "Leute einladen", "getting_started.privacy_policy": "Datenschutzerklärung", "getting_started.security": "Konto & Sicherheit", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Über Mastodon", "hashtag.column_header.tag_mode.all": "und {additional}", "hashtag.column_header.tag_mode.any": "oder {additional}", "hashtag.column_header.tag_mode.none": "ohne {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Antworten anzeigen", "home.hide_announcements": "Verstecke Ankündigungen", "home.show_announcements": "Zeige Ankündigungen", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}", "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}", "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Dauer", "mute_modal.hide_notifications": "Benachrichtigungen von diesem Account verbergen?", "mute_modal.indefinite": "Unbestimmt", - "navigation_bar.about": "About", + "navigation_bar.about": "Über", "navigation_bar.apps": "App downloaden", "navigation_bar.blocks": "Blockierte Profile", "navigation_bar.bookmarks": "Lesezeichen", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.security": "Sicherheit", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Sie müssen sich anmelden, um diese Funktion zu nutzen.", "notification.admin.report": "{target} wurde von {name} gemeldet", "notification.admin.sign_up": "{name} hat sich registriert", "notification.favourite": "{name} hat deinen Beitrag favorisiert", @@ -404,6 +418,8 @@ "privacy.public.short": "Öffentlich", "privacy.unlisted.long": "Sichtbar für alle, aber nicht über Entdeckungsfunktionen", "privacy.unlisted.short": "Nicht gelistet", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Aktualisieren", "regeneration_indicator.label": "Laden…", "regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Die Suche für Beiträge nach ihrem Inhalt ist auf diesem Mastodon-Server deaktiviert.", "search_results.title": "Suchen nach {q}", "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Personen, die diesen Server in den letzten 30 Tagen genutzt haben (monatlich aktive Benutzer)", + "server_banner.active_users": "aktive Benutzer", + "server_banner.administered_by": "Verwaltet von:", + "server_banner.introduction": "{domain} ist Teil des dezentralen sozialen Netzwerks, das von {mastodon} betrieben wird.", + "server_banner.learn_more": "Mehr erfahren", + "server_banner.server_stats": "Serverstatistiken:", "sign_in_banner.create_account": "Account erstellen", "sign_in_banner.sign_in": "Einloggen", "sign_in_banner.text": "Melden Sie sich an, um Profilen oder Hashtags zu folgen, Favoriten, Teilen und Antworten auf Beiträge oder interagieren Sie von Ihrem Konto auf einem anderen Server.", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index fec92d81aa..8420fa1113 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -2377,6 +2377,75 @@ ], "path": "app/javascript/mastodon/features/home_timeline/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Copied", + "id": "copypaste.copied" + }, + { + "defaultMessage": "Copy", + "id": "copypaste.copy" + }, + { + "defaultMessage": "Reply to {name}'s post", + "id": "interaction_modal.title.reply" + }, + { + "defaultMessage": "With an account on Mastodon, you can respond to this post.", + "id": "interaction_modal.description.reply" + }, + { + "defaultMessage": "Boost {name}'s post", + "id": "interaction_modal.title.reblog" + }, + { + "defaultMessage": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "id": "interaction_modal.description.reblog" + }, + { + "defaultMessage": "Favourite {name}'s post", + "id": "interaction_modal.title.favourite" + }, + { + "defaultMessage": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "id": "interaction_modal.description.favourite" + }, + { + "defaultMessage": "Follow {name}", + "id": "interaction_modal.title.follow" + }, + { + "defaultMessage": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "id": "interaction_modal.description.follow" + }, + { + "defaultMessage": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "id": "interaction_modal.preamble" + }, + { + "defaultMessage": "On this server", + "id": "interaction_modal.on_this_server" + }, + { + "defaultMessage": "Sign in", + "id": "sign_in_banner.sign_in" + }, + { + "defaultMessage": "Create account", + "id": "sign_in_banner.create_account" + }, + { + "defaultMessage": "On a different server", + "id": "interaction_modal.on_another_server" + }, + { + "defaultMessage": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "id": "interaction_modal.other_server_instructions" + } + ], + "path": "app/javascript/mastodon/features/interaction_modal/index.json" + }, { "descriptors": [ { @@ -2987,6 +3056,19 @@ ], "path": "app/javascript/mastodon/features/pinned_statuses/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Privacy Policy", + "id": "privacy_policy.title" + }, + { + "defaultMessage": "Last updated {date}", + "id": "privacy_policy.last_updated" + } + ], + "path": "app/javascript/mastodon/features/privacy_policy/index.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 614614a47c..9968278631 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Κλείσιμο", "bundle_modal_error.message": "Κάτι πήγε στραβά κατά τη φόρτωση του στοιχείου.", "bundle_modal_error.retry": "Δοκίμασε ξανά", - "column.about": "About", + "column.about": "Σχετικά με", "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", "column.community": "Τοπική ροή", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Σήμανση ως αναγνωσμένο", "conversation.open": "Προβολή συνομιλίας", "conversation.with": "Με {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Από το γνωστό fediverse", "directory.local": "Μόνο από {domain}", "directory.new_arrivals": "Νέες αφίξεις", @@ -229,7 +231,7 @@ "getting_started.invite": "Προσκάλεσε κόσμο", "getting_started.privacy_policy": "Privacy Policy", "getting_started.security": "Ασφάλεια", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Σχετικά με το Mastodon", "hashtag.column_header.tag_mode.all": "και {additional}", "hashtag.column_header.tag_mode.any": "ή {additional}", "hashtag.column_header.tag_mode.none": "χωρίς {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", "home.hide_announcements": "Απόκρυψη ανακοινώσεων", "home.show_announcements": "Εμφάνιση ανακοινώσεων", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}", "intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}", "intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Διάρκεια", "mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;", "mute_modal.indefinite": "Αόριστη", - "navigation_bar.about": "About", + "navigation_bar.about": "Σχετικά με", "navigation_bar.apps": "Αποκτήστε την Εφαρμογή", "navigation_bar.blocks": "Αποκλεισμένοι χρήστες", "navigation_bar.bookmarks": "Σελιδοδείκτες", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", "navigation_bar.security": "Ασφάλεια", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείτε για να αποκτήσετε πρόσβαση σε αυτόν τον πόρο.", "notification.admin.report": "{name} ανέφερε {target}", "notification.admin.sign_up": "{name} έχει εγγραφεί", "notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου", @@ -404,6 +418,8 @@ "privacy.public.short": "Δημόσιο", "privacy.unlisted.long": "Ορατό για όλους, αλλά opted-out των χαρακτηριστικών της ανακάλυψης", "privacy.unlisted.short": "Μη καταχωρημένα", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Ανανέωση", "regeneration_indicator.label": "Φορτώνει…", "regeneration_indicator.sublabel": "Η αρχική σου ροή ετοιμάζεται!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Η αναζήτηση τουτ βάσει του περιεχόμενού τους δεν είναι ενεργοποιημένη σε αυτό τον κόμβο.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {αποτελέσματα} one {αποτέλεσμα} other {αποτελέσματα}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.about_active_users": "Άτομα που χρησιμοποιούν αυτόν τον διακομιστή κατά τις τελευταίες 30 ημέρες (Μηνιαία Ενεργοί Χρήστες)", + "server_banner.active_users": "ενεργοί χρήστες", + "server_banner.administered_by": "Διαχειριστής:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.learn_more": "Μάθετε περισσότερα", + "server_banner.server_stats": "Στατιστικά διακομιστή:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 61051d97eb..0971a94755 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 30d3b56aa1..a3312b073f 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 4f4d16d151..4a7fd13094 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marki legita", "conversation.open": "Vidi konversacion", "conversation.with": "Kun {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "El konata fediverso", "directory.local": "Nur de {domain}", "directory.new_arrivals": "Novaj alvenoj", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Montri respondojn", "home.hide_announcements": "Kaŝi la anoncojn", "home.show_announcements": "Montri anoncojn", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}", "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Publika", "privacy.unlisted.long": "Videbla por ĉiuj, sed ekskluzive de la funkcio de esploro", "privacy.unlisted.short": "Nelistigita", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refreŝigu", "regeneration_indicator.label": "Ŝargado…", "regeneration_indicator.sublabel": "Via abonfluo estas preparata!", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 84633a3eda..f52f8134d9 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Intentá de nuevo", - "column.about": "About", + "column.about": "Información", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea temporal local", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marcar como leída", "conversation.open": "Ver conversación", "conversation.with": "Con {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Desde fediverso conocido", "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", @@ -224,12 +226,12 @@ "generic.saved": "Guardado", "getting_started.directory": "Directorio", "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon es software libre y de código abierto. Podés ver el código fuente, contribuir o informar sobre problemas en {repository}.", "getting_started.heading": "Introducción", "getting_started.invite": "Invitar gente", "getting_started.privacy_policy": "Política de privacidad", "getting_started.security": "Configuración de la cuenta", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Mostrar respuestas", "home.hide_announcements": "Ocultar anuncios", "home.show_announcements": "Mostrar anuncios", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "¿Querés ocultar las notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", - "navigation_bar.about": "About", + "navigation_bar.about": "Información", "navigation_bar.apps": "Obtené la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", "navigation_bar.security": "Seguridad", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} denunció a {target}", "notification.admin.sign_up": "Se registró {name}", "notification.favourite": "{name} marcó tu mensaje como favorito", @@ -404,6 +418,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visible para todos, pero excluido de las características de descubrimiento", "privacy.unlisted.short": "No listado", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refrescar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Se está preparando tu línea temporal principal!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "No se pueden buscar mensajes por contenido en este servidor de Mastodon.", "search_results.title": "Buscar {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Personas usando este servidor durante los últimos 30 días (Usuarios Activos Mensuales)", + "server_banner.active_users": "usuarios activos", + "server_banner.administered_by": "Administrado por:", + "server_banner.introduction": "{domain} es parte de la red social descentralizada con la tecnología de {mastodon}.", + "server_banner.learn_more": "Aprendé más", + "server_banner.server_stats": "Estadísticas del servidor:", "sign_in_banner.create_account": "Crear cuenta", "sign_in_banner.sign_in": "Iniciar sesión", "sign_in_banner.text": "Iniciá sesión para seguir cuentas o etiquetas, marcar mensajes como favoritos, compartirlos y responderlos o interactuar desde tu cuenta en un servidor diferente.", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 03d64f1238..fc4a646726 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", - "column.about": "About", + "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marcar como leído", "conversation.open": "Ver conversación", "conversation.with": "Con {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Desde el fediverso conocido", "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", @@ -222,14 +224,14 @@ "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", "generic.saved": "Guardado", - "getting_started.directory": "Directory", + "getting_started.directory": "Directorio", "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon es un software libre y de código abierto. Puedes ver el código fuente, contribuir o reportar problemas en {repository}.", "getting_started.heading": "Primeros pasos", "getting_started.invite": "Invitar usuarios", "getting_started.privacy_policy": "Política de Privacidad", "getting_started.security": "Seguridad", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Mostrar respuestas", "home.hide_announcements": "Ocultar anuncios", "home.show_announcements": "Mostrar anuncios", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Acerca de", + "navigation_bar.apps": "Obtener la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Historia local", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", "navigation_bar.follows_and_followers": "Siguiendo y seguidores", - "navigation_bar.info": "About", + "navigation_bar.info": "Acerca de", "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", "navigation_bar.security": "Seguridad", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", "notification.admin.sign_up": "{name} se unio", "notification.favourite": "{name} marcó tu estado como favorito", @@ -404,6 +418,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visible para todos, pero excluido de las funciones de descubrimiento", "privacy.unlisted.short": "No listado", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Buscar toots por su contenido no está disponible en este servidor de Mastodon.", "search_results.title": "Buscar {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Usuarios activos en el servidor durante los últimos 30 días (Usuarios Activos Mensuales)", + "server_banner.active_users": "usuarios activos", + "server_banner.administered_by": "Administrado por:", + "server_banner.introduction": "{domain} es parte de la red social descentralizada liderada por {mastodon}.", + "server_banner.learn_more": "Saber más", + "server_banner.server_stats": "Estadísticas del servidor:", "sign_in_banner.create_account": "Crear cuenta", "sign_in_banner.sign_in": "Iniciar sesión", "sign_in_banner.text": "Inicia sesión en este servidor para seguir perfiles o etiquetas, guardar, compartir y responder a mensajes. También puedes interactuar desde otra cuenta en un servidor diferente.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index d72acd10a8..3fc6019c3e 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", - "column.about": "About", + "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marcar como leído", "conversation.open": "Ver conversación", "conversation.with": "Con {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Desde el fediverso conocido", "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", @@ -222,14 +224,14 @@ "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", "generic.saved": "Guardado", - "getting_started.directory": "Directory", + "getting_started.directory": "Directorio", "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon es un software libre y de código abierto. Puedes ver el código fuente, contribuir o reportar problemas en {repository}.", "getting_started.heading": "Primeros pasos", "getting_started.invite": "Invitar usuarios", "getting_started.privacy_policy": "Política de Privacidad", "getting_started.security": "Seguridad", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Mostrar respuestas", "home.hide_announcements": "Ocultar anuncios", "home.show_announcements": "Mostrar anuncios", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Acerca de", + "navigation_bar.apps": "Obtener la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea de tiempo local", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", "navigation_bar.follows_and_followers": "Siguiendo y seguidores", - "navigation_bar.info": "About", + "navigation_bar.info": "Acerca de", "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Línea de tiempo federada", "navigation_bar.security": "Seguridad", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", "notification.admin.sign_up": "{name} se registró", "notification.favourite": "{name} marcó tu estado como favorito", @@ -404,6 +418,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visible para todos, pero excluido de las funciones de descubrimiento", "privacy.unlisted.short": "No listado", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Buscar publicaciones por su contenido no está disponible en este servidor de Mastodon.", "search_results.title": "Buscar {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Usuarios activos en el servidor durante los últimos 30 días (Usuarios Activos Mensuales)", + "server_banner.active_users": "usuarios activos", + "server_banner.administered_by": "Administrado por:", + "server_banner.introduction": "{domain} es parte de la red social descentralizada liderada por {mastodon}.", + "server_banner.learn_more": "Saber más", + "server_banner.server_stats": "Estadísticas del servidor:", "sign_in_banner.create_account": "Crear cuenta", "sign_in_banner.sign_in": "Iniciar sesión", "sign_in_banner.text": "Inicia sesión en este servidor para seguir perfiles o etiquetas, guardar, compartir y responder a mensajes. También puedes interactuar desde otra cuenta en un servidor diferente.", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 36db5f9f75..e16fe4a9ef 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Märgi loetuks", "conversation.open": "Vaata vestlust", "conversation.with": "Koos {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Teatud fediversumist", "directory.local": "Ainult domeenilt {domain}", "directory.new_arrivals": "Uustulijad", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Näita vastuseid", "home.hide_announcements": "Peida teadaanded", "home.show_announcements": "Kuva teadaandeid", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# päev} other {# päevad}}", "intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Avalik", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Määramata", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Värskenda", "regeneration_indicator.label": "Laeb…", "regeneration_indicator.sublabel": "Teie kodu voog on ettevalmistamisel!", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 9e21e0d889..61e135a5de 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Markatu irakurrita bezala", "conversation.open": "Ikusi elkarrizketa", "conversation.with": "Hauekin: {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Fedibertso ezagunekoak", "directory.local": "{domain} domeinukoak soilik", "directory.new_arrivals": "Iritsi berriak", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Erakutsi erantzunak", "home.hide_announcements": "Ezkutatu iragarpenak", "home.show_announcements": "Erakutsi iragarpenak", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {egun #} other {# egun}}", "intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}", "intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Publikoa", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Zerrendatu gabea", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Berritu", "regeneration_indicator.label": "Kargatzen…", "regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 327bb0f74c..a0d52a2739 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "علامت‌گذاری به عنوان خوانده شده", "conversation.open": "دیدن گفتگو", "conversation.with": "با {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "از کارسازهای شناخته‌شده", "directory.local": "تنها از {domain}", "directory.new_arrivals": "تازه‌واردان", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "نمایش پاسخ‌ها", "home.hide_announcements": "نهفتن اعلامیه‌ها", "home.show_announcements": "نمایش اعلامیه‌ها", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# روز} other {# روز}}", "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}", "intervals.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}}", @@ -404,6 +418,8 @@ "privacy.public.short": "عمومی", "privacy.unlisted.long": "نمایان برای همه، ولی خارج از قابلیت‌های کشف", "privacy.unlisted.short": "فهرست نشده", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "نوسازی", "regeneration_indicator.label": "در حال بار شدن…", "regeneration_indicator.sublabel": "خوراک خانگیان دارد آماده می‌شود!", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 841345e147..c3e519fa06 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Merkitse luetuksi", "conversation.open": "Näytä keskustelu", "conversation.with": "{names} kanssa", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Koko tunnettu fediverse", "directory.local": "Vain palvelimelta {domain}", "directory.new_arrivals": "Äskettäin saapuneet", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Näytä vastaukset", "home.hide_announcements": "Piilota ilmoitukset", "home.show_announcements": "Näytä ilmoitukset", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# päivä} other {# päivää}}", "intervals.full.hours": "{number, plural, one {# tunti} other {# tuntia}}", "intervals.full.minutes": "{number, plural, one {# minuutti} other {# minuuttia}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Julkinen", "privacy.unlisted.long": "Näkyvissä kaikille, mutta jättäen pois hakemisen mahdollisuus", "privacy.unlisted.short": "Listaamaton julkinen", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Päivitä", "regeneration_indicator.label": "Ladataan…", "regeneration_indicator.sublabel": "Kotinäkymääsi valmistellaan!", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 5d60874d23..5a8e0a14a0 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Fermer", "bundle_modal_error.message": "Une erreur s’est produite lors du chargement de ce composant.", "bundle_modal_error.retry": "Réessayer", - "column.about": "About", + "column.about": "À propos", "column.blocks": "Comptes bloqués", "column.bookmarks": "Marque-pages", "column.community": "Fil public local", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marquer comme lu", "conversation.open": "Afficher la conversation", "conversation.with": "Avec {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Du fédiverse connu", "directory.local": "De {domain} seulement", "directory.new_arrivals": "Inscrit·e·s récemment", @@ -204,17 +206,17 @@ "filter_modal.added.expired_explanation": "Cette catégorie de filtre a expiré, vous devrez modifier la date d'expiration pour qu'elle soit appliquée.", "filter_modal.added.expired_title": "Filtre expiré !", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.review_and_configure_title": "Paramètres du filtre", + "filter_modal.added.settings_link": "page des paramètres", + "filter_modal.added.short_explanation": "Ce message a été ajouté à la catégorie de filtre suivante : {title}.", + "filter_modal.added.title": "Filtre ajouté !", + "filter_modal.select_filter.context_mismatch": "ne s’applique pas à ce contexte", + "filter_modal.select_filter.expired": "a expiré", + "filter_modal.select_filter.prompt_new": "Nouvelle catégorie : {name}", + "filter_modal.select_filter.search": "Rechercher ou créer", + "filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou en créer une nouvelle", + "filter_modal.select_filter.title": "Filtrer ce message", + "filter_modal.title.status": "Filtrer un message", "follow_recommendations.done": "Terminé", "follow_recommendations.heading": "Suivez les personnes dont vous aimeriez voir les messages ! Voici quelques suggestions.", "follow_recommendations.lead": "Les messages des personnes que vous suivez apparaîtront par ordre chronologique sur votre fil d'accueil. Ne craignez pas de faire des erreurs, vous pouvez arrêter de suivre les gens aussi facilement à tout moment !", @@ -222,14 +224,14 @@ "follow_request.reject": "Rejeter", "follow_requests.unlocked_explanation": "Même si votre compte n’est pas privé, l’équipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.", "generic.saved": "Sauvegardé", - "getting_started.directory": "Directory", + "getting_started.directory": "Annuaire", "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon est un logiciel libre et ouvert. Vous pouvez consulter le code source, contribuer ou soumettre des rapports de bogues sur {repository}.", "getting_started.heading": "Pour commencer", "getting_started.invite": "Inviter des gens", - "getting_started.privacy_policy": "Privacy Policy", + "getting_started.privacy_policy": "Politique de confidentialité", "getting_started.security": "Sécurité", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "À propos de Mastodon", "hashtag.column_header.tag_mode.all": "et {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sans {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Afficher les réponses", "home.hide_announcements": "Masquer les annonces", "home.show_announcements": "Afficher les annonces", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# jour} other {# jours}}", "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Durée", "mute_modal.hide_notifications": "Masquer les notifications de cette personne ?", "mute_modal.indefinite": "Indéfinie", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "À propos", + "navigation_bar.apps": "Télécharger l’application", "navigation_bar.blocks": "Comptes bloqués", "navigation_bar.bookmarks": "Marque-pages", "navigation_bar.community_timeline": "Fil public local", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Mots masqués", "navigation_bar.follow_requests": "Demandes d’abonnement", "navigation_bar.follows_and_followers": "Abonnements et abonné⋅e·s", - "navigation_bar.info": "About", + "navigation_bar.info": "À propos", "navigation_bar.keyboard_shortcuts": "Raccourcis clavier", "navigation_bar.lists": "Listes", "navigation_bar.logout": "Déconnexion", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", "navigation_bar.security": "Sécurité", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Vous devez vous connecter pour accéder à cette ressource.", "notification.admin.report": "{name} a signalé {target}", "notification.admin.sign_up": "{name} s'est inscrit·e", "notification.favourite": "{name} a ajouté le message à ses favoris", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible pour tous, mais sans fonctionnalités de découverte", "privacy.unlisted.short": "Non listé", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Actualiser", "regeneration_indicator.label": "Chargement…", "regeneration_indicator.sublabel": "Votre fil principal est en cours de préparation !", @@ -474,16 +490,16 @@ "search_results.nothing_found": "Aucun résultat avec ces mots-clefs", "search_results.statuses": "Messages", "search_results.statuses_fts_disabled": "La recherche de messages par leur contenu n'est pas activée sur ce serveur Mastodon.", - "search_results.title": "Search for {q}", + "search_results.title": "Rechercher {q}", "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "server_banner.about_active_users": "Personnes utilisant ce serveur au cours des 30 derniers jours (Utilisateur·rice·s Actifs·ives Mensuellement)", + "server_banner.active_users": "Utilisateur·rice·s actif·ve·s", + "server_banner.administered_by": "Administré par :", + "server_banner.introduction": "{domain} fait partie du réseau social décentralisé propulsé par {mastodon}.", + "server_banner.learn_more": "En savoir plus", + "server_banner.server_stats": "Statistiques du serveur :", + "sign_in_banner.create_account": "Créer un compte", + "sign_in_banner.sign_in": "Se connecter", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Ouvrir l’interface de modération pour @{name}", "status.admin_status": "Ouvrir ce message dans l’interface de modération", @@ -500,7 +516,7 @@ "status.edited_x_times": "Edité {count, plural, one {{count} fois} other {{count} fois}}", "status.embed": "Intégrer", "status.favourite": "Ajouter aux favoris", - "status.filter": "Filter this post", + "status.filter": "Filtrer ce message", "status.filtered": "Filtré", "status.hide": "Cacher le pouet", "status.history.created": "créé par {name} {date}", @@ -531,16 +547,16 @@ "status.show_less_all": "Tout replier", "status.show_more": "Déplier", "status.show_more_all": "Tout déplier", - "status.show_original": "Show original", + "status.show_original": "Afficher l’original", "status.show_thread": "Montrer le fil", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Traduire", + "status.translated_from": "Traduit depuis {lang}", "status.uncached_media_warning": "Indisponible", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Seuls les messages dans les langues sélectionnées apparaîtront sur votre fil principal et vos listes de fils après le changement. Sélectionnez aucune pour recevoir les messages dans toutes les langues.", + "subscribed_languages.save": "Enregistrer les modifications", + "subscribed_languages.target": "Changer les langues abonnées pour {target}", "suggestions.dismiss": "Rejeter la suggestion", "suggestions.header": "Vous pourriez être intéressé·e par…", "tabs_bar.federated_timeline": "Fil public global", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index f67fd2ded3..9ede1f9705 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "As lêzen oanmurkje", "conversation.open": "Petear besjen", "conversation.with": "Mei {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Iepenbier", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Fernije", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 3028b8feee..a5eafbf6f0 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Poiblí", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Ag lódáil…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index d2b8a77caa..d188d9f05f 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Cuir comharra gun deach a leughadh", "conversation.open": "Seall an còmhradh", "conversation.with": "Le {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "On cho-shaoghal aithnichte", "directory.local": "O {domain} a-mhàin", "directory.new_arrivals": "Feadhainn ùra", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Seall na freagairtean", "home.hide_announcements": "Falaich na brathan-fios", "home.show_announcements": "Seall na brathan-fios", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}", "intervals.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}}", "intervals.full.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Poblach", "privacy.unlisted.long": "Chì a h-uile duine e ach cha nochd e ann an gleusan rùrachaidh", "privacy.unlisted.short": "Falaichte o liostaichean", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Ath-nuadhaich", "regeneration_indicator.label": "’Ga luchdadh…", "regeneration_indicator.sublabel": "Tha inbhir na dachaigh agad ’ga ullachadh!", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 1a5d39cb84..2602719ce0 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Pechar", "bundle_modal_error.message": "Ocorreu un erro ó cargar este compoñente.", "bundle_modal_error.retry": "Téntao de novo", - "column.about": "About", + "column.about": "Acerca de", "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", "column.community": "Cronoloxía local", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marcar como lido", "conversation.open": "Ver conversa", "conversation.with": "Con {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Do fediverso coñecido", "directory.local": "Só de {domain}", "directory.new_arrivals": "Recén chegadas", @@ -224,12 +226,12 @@ "generic.saved": "Gardado", "getting_started.directory": "Directorio", "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon é código aberto e libre. Podes revisar o código, contribuir ou informar de fallos en {repository}.", "getting_started.heading": "Primeiros pasos", "getting_started.invite": "Convidar persoas", "getting_started.privacy_policy": "Política de Privacidade", "getting_started.security": "Seguranza", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Amosar respostas", "home.hide_announcements": "Agochar anuncios", "home.show_announcements": "Amosar anuncios", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural,one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Agochar notificacións desta usuaria?", "mute_modal.indefinite": "Indefinida", - "navigation_bar.about": "About", + "navigation_bar.about": "Acerca de", "navigation_bar.apps": "Obtén a app", "navigation_bar.blocks": "Usuarias bloqueadas", "navigation_bar.bookmarks": "Marcadores", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronoloxía federada", "navigation_bar.security": "Seguranza", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Debes acceder para ver este recurso.", "notification.admin.report": "{name} denunciou a {target}", "notification.admin.sign_up": "{name} rexistrouse", "notification.favourite": "{name} marcou a túa publicación como favorita", @@ -404,6 +418,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visible por todas, pero excluída da sección descubrir", "privacy.unlisted.short": "Non listado", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Actualizar", "regeneration_indicator.label": "Estase a cargar…", "regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Procurar publicacións polo seu contido non está activado neste servidor do Mastodon.", "search_results.title": "Resultados para {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Persoas que usaron este servidor nos últimos 30 días (Usuarias Activas Mensuais)", + "server_banner.active_users": "usuarias activas", + "server_banner.administered_by": "Administrada por:", + "server_banner.introduction": "{domain} é parte da rede social descentralizada que funciona grazas a {mastodon}.", + "server_banner.learn_more": "Saber máis", + "server_banner.server_stats": "Estatísticas do servidor:", "sign_in_banner.create_account": "Crear conta", "sign_in_banner.sign_in": "Acceder", "sign_in_banner.text": "Inicia sesión para seguir perfís ou etiquetas, marcar como favorito, responder a publicacións ou interactuar con outro servidor desde a túa conta.", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index d426566c16..cb8ff51c10 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "סמן כנקרא", "conversation.open": "צפו בשיחה", "conversation.with": "עם {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "מהפדרציה הידועה", "directory.local": "מ- {domain} בלבד", "directory.new_arrivals": "חדשים כאן", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "הצגת תגובות", "home.hide_announcements": "הסתר הכרזות", "home.show_announcements": "הצג הכרזות", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# יום} other {# ימים}}", "intervals.full.hours": "{number, plural, one {# שעה} other {# שעות}}", "intervals.full.minutes": "{number, plural, one {# דקה} other {# דקות}}", @@ -404,6 +418,8 @@ "privacy.public.short": "פומבי", "privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי גילוי", "privacy.unlisted.short": "לא רשום (לא לפיד הכללי)", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "רענון", "regeneration_indicator.label": "טוען…", "regeneration_indicator.sublabel": "פיד הבית שלך בהכנה!", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 03ddf515e7..b7ae156982 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "पढ़ा गया के रूप में चिह्नित करें", "conversation.open": "वार्तालाप देखें", "conversation.with": "{names} के साथ", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "ज्ञात फेडीवर्स से", "directory.local": "केवल {domain} से", "directory.new_arrivals": "नए आगंतुक", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "जवाबों को दिखाए", "home.hide_announcements": "घोषणाएँ छिपाएँ", "home.show_announcements": "घोषणाएं दिखाएं", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "सार्वजनिक", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "अनलिस्टेड", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "रीफ्रेश करें", "regeneration_indicator.label": "लोड हो रहा है...", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index ffffaf19e1..e7a8aced34 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Označi kao pročitano", "conversation.open": "Prikaži razgovor", "conversation.with": "S {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Iz znanog fediversa", "directory.local": "Samo iz {domain}", "directory.new_arrivals": "Novi korisnici", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Pokaži odgovore", "home.hide_announcements": "Sakrij najave", "home.show_announcements": "Prikaži najave", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dan} other {# dana}}", "intervals.full.hours": "{number, plural, one {# sat} few {# sata} other {# sati}}", "intervals.full.minutes": "{number, plural, one {# minuta} few {# minute} other {# minuta}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Javno", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Neprikazano", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Osvježi", "regeneration_indicator.label": "Učitavanje…", "regeneration_indicator.sublabel": "Priprema se Vaša početna stranica!", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index e20a5e54f1..87b2da559b 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Bezárás", "bundle_modal_error.message": "Hiba történt a komponens betöltésekor.", "bundle_modal_error.retry": "Próbáld újra", - "column.about": "About", + "column.about": "Névjegy", "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", "column.community": "Helyi idővonal", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Megjelölés olvasottként", "conversation.open": "Beszélgetés megtekintése", "conversation.with": "{names}-el/al", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Az ismert fediverzumból", "directory.local": "Csak innen: {domain}", "directory.new_arrivals": "Új csatlakozók", @@ -222,14 +224,14 @@ "follow_request.reject": "Elutasítás", "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.", "generic.saved": "Elmentve", - "getting_started.directory": "Directory", + "getting_started.directory": "Névjegyzék", "getting_started.documentation": "Dokumentáció", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "A Mastodon ingyenes, nyílt forráskódú szoftver. Megtekintheted a forrását, hozzájárulhatsz a fejlesztéséhez vagy jelenthetsz hibákat itt: {repository}", "getting_started.heading": "Első lépések", "getting_started.invite": "Mások meghívása", "getting_started.privacy_policy": "Adatvédelmi szabályzat", "getting_started.security": "Fiókbeállítások", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "A Mastodonról", "hashtag.column_header.tag_mode.all": "és {additional}", "hashtag.column_header.tag_mode.any": "vagy {additional}", "hashtag.column_header.tag_mode.none": "{additional} nélkül", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Válaszok megjelenítése", "home.hide_announcements": "Közlemények elrejtése", "home.show_announcements": "Közlemények megjelenítése", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# nap} other {# nap}}", "intervals.full.hours": "{number, plural, one {# óra} other {# óra}}", "intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Időtartam", "mute_modal.hide_notifications": "Rejtsük el a felhasználótól származó értesítéseket?", "mute_modal.indefinite": "Határozatlan", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Névjegy", + "navigation_bar.apps": "Töltsd le az appot", "navigation_bar.blocks": "Letiltott felhasználók", "navigation_bar.bookmarks": "Könyvjelzők", "navigation_bar.community_timeline": "Helyi idővonal", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Némított szavak", "navigation_bar.follow_requests": "Követési kérelmek", "navigation_bar.follows_and_followers": "Követettek és követők", - "navigation_bar.info": "About", + "navigation_bar.info": "Névjegy", "navigation_bar.keyboard_shortcuts": "Gyorsbillentyűk", "navigation_bar.lists": "Listák", "navigation_bar.logout": "Kijelentkezés", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.security": "Biztonság", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Az erőforrás eléréséhez be kell jelentkezned.", "notification.admin.report": "{name} jelentette: {target}", "notification.admin.sign_up": "{name} regisztrált", "notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet", @@ -404,6 +418,8 @@ "privacy.public.short": "Nyilvános", "privacy.unlisted.long": "Mindenki számára látható, de kimarad a felfedezős funkciókból", "privacy.unlisted.short": "Listázatlan", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Frissítés", "regeneration_indicator.label": "Töltődik…", "regeneration_indicator.sublabel": "A saját idővonalad épp készül!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.", "search_results.title": "Keresés erre: {q}", "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Az elmúlt 30 napban ezt a szervert használók száma (Havi Aktív Felhasználók)", + "server_banner.active_users": "aktív felhasználó", + "server_banner.administered_by": "Adminisztrátor:", + "server_banner.introduction": "{domain} része egy decentralizált közösségi hálónak, melyet a {mastodon} hajt meg.", + "server_banner.learn_more": "Tudj meg többet", + "server_banner.server_stats": "Szerverstatisztika:", "sign_in_banner.create_account": "Fiók létrehozása", "sign_in_banner.sign_in": "Bejelentkezés", "sign_in_banner.text": "Jelentkezz be profilok vagy hashtagek követéséhez, bejegyzések megosztásához, megválaszolásához, vagy kommunikálj a fiókodból más szerverekkel.", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 8f5a9f180a..cfba0d1975 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Նշել որպէս ընթերցուած", "conversation.open": "Դիտել խօսակցութիւնը", "conversation.with": "{names}-ի հետ", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Յայտնի դաշնեզերքից", "directory.local": "{domain} տիրոյթից միայն", "directory.new_arrivals": "Նորեկներ", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Ցուցադրել պատասխանները", "home.hide_announcements": "Թաքցնել յայտարարութիւնները", "home.show_announcements": "Ցուցադրել յայտարարութիւնները", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# օր} other {# օր}}", "intervals.full.hours": "{number, plural, one {# ժամ} other {# ժամ}}", "intervals.full.minutes": "{number, plural, one {# րոպէ} other {# րոպէ}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Հրապարակային", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Ծածուկ", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Թարմացնել", "regeneration_indicator.label": "Բեռնւում է…", "regeneration_indicator.sublabel": "պատրաստւում է հիմնական հոսքդ", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index b1484fbaf0..cc3cc11ac4 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Tandai sudah dibaca", "conversation.open": "Lihat percakapan", "conversation.with": "Dengan {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Dari fediverse yang dikenal", "directory.local": "Dari {domain} saja", "directory.new_arrivals": "Yang baru datang", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Tampilkan balasan", "home.hide_announcements": "Sembunyikan pengumuman", "home.show_announcements": "Tampilkan pengumuman", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, other {# hari}}", "intervals.full.hours": "{number, plural, other {# jam}}", "intervals.full.minutes": "{number, plural, other {# menit}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Publik", "privacy.unlisted.long": "Terlihat oleh semua, tapi jangan tampilkan di fitur jelajah", "privacy.unlisted.short": "Tak Terdaftar", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Segarkan", "regeneration_indicator.label": "Memuat…", "regeneration_indicator.sublabel": "Linimasa anda sedang disiapkan!", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 6f0f132fda..9d5b72805a 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Klozez", "bundle_modal_error.message": "Nulo ne functionis dum chargar ca kompozaj.", "bundle_modal_error.retry": "Probez itere", - "column.about": "About", + "column.about": "Pri co", "column.blocks": "Blokusita uzeri", "column.bookmarks": "Libromarki", "column.community": "Lokala tempolineo", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Markizez quale lektita", "conversation.open": "Videz konverso", "conversation.with": "Kun {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "De savita fediverso", "directory.local": "De {domain} nur", "directory.new_arrivals": "Nova venanti", @@ -224,12 +226,12 @@ "generic.saved": "Sparesis", "getting_started.directory": "Cheflisto", "getting_started.documentation": "Dokumentajo", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon esas libera fontoaperta softwaro. On povas vidar fontokodexo, kontribuar o reportigar problemi en {repository}.", "getting_started.heading": "Debuto", "getting_started.invite": "Invitez personi", "getting_started.privacy_policy": "Privatesguidilo", "getting_started.security": "Kontoopcioni", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Pri Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Montrar respondi", "home.hide_announcements": "Celez anunci", "home.show_announcements": "Montrez anunci", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dio} other {# dii}}", "intervals.full.hours": "{number, plural, one {# horo} other {# hori}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Durado", "mute_modal.hide_notifications": "Celez avizi de ca uzanto?", "mute_modal.indefinite": "Nedefinitiva", - "navigation_bar.about": "About", + "navigation_bar.about": "Pri co", "navigation_bar.apps": "Ganez la softwaro", "navigation_bar.blocks": "Blokusita uzeri", "navigation_bar.bookmarks": "Libromarki", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Preferi", "navigation_bar.public_timeline": "Federata tempolineo", "navigation_bar.security": "Sekureso", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Vu mustas enirar por acesar ca moyeno.", "notification.admin.report": "{name} raportizis {target}", "notification.admin.sign_up": "{name} registresis", "notification.favourite": "{name} favorizis tua mesajo", @@ -404,6 +418,8 @@ "privacy.public.short": "Publike", "privacy.unlisted.long": "Videbla da omnu ma voluntala ne inkluzas deskovrotraiti", "privacy.unlisted.short": "Ne enlistigota", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Rifreshez", "regeneration_indicator.label": "Chargas…", "regeneration_indicator.sublabel": "Vua hemniuzeto preparesas!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Trovez {q}", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Personi quo uzas ca servilo dum antea 30 dii (monate aktiva uzanti)", + "server_banner.active_users": "aktiva uzanti", + "server_banner.administered_by": "Administresis da:", + "server_banner.introduction": "{domain} esas parto di necentraligita sociala ret quo povizesas da {mastodon}.", + "server_banner.learn_more": "Lernez plue", + "server_banner.server_stats": "Servilstatistiko:", "sign_in_banner.create_account": "Kreez konto", "sign_in_banner.sign_in": "Enirez", "sign_in_banner.text": "Enirez por sequar profili o hashtagi, favorizar, partigar e respondizar posti, o interagar de vua konto de diferanta servilo.", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 3145462fbe..997472b125 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Loka", "bundle_modal_error.message": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", "bundle_modal_error.retry": "Reyndu aftur", - "column.about": "About", + "column.about": "Um hugbúnaðinn", "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", "column.community": "Staðvær tímalína", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Merkja sem lesið", "conversation.open": "Skoða samtal", "conversation.with": "Með {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Frá samtengdum vefþjónum", "directory.local": "Einungis frá {domain}", "directory.new_arrivals": "Nýkomnir", @@ -224,12 +226,12 @@ "generic.saved": "Vistað", "getting_started.directory": "Mappa", "getting_started.documentation": "Hjálparskjöl", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon er frjáls, opinn hugbúnaður. Þú getur skoðað grunnkóðann, lagt þitt af mörkum eða tilkynnt vandamál á {repository}.", "getting_started.heading": "Komast í gang", "getting_started.invite": "Bjóða fólki", "getting_started.privacy_policy": "Persónuverndarstefna", "getting_started.security": "Stillingar notandaaðgangs", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Um Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eða {additional}", "hashtag.column_header.tag_mode.none": "án {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Birta svör", "home.hide_announcements": "Fela auglýsingar", "home.show_announcements": "Birta auglýsingar", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dagur} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# klukkustund} other {# klukkustundir}}", "intervals.full.minutes": "{number, plural, one {# mínúta} other {# mínútur}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Lengd", "mute_modal.hide_notifications": "Fela tilkynningar frá þessum notanda?", "mute_modal.indefinite": "Óendanlegt", - "navigation_bar.about": "About", + "navigation_bar.about": "Um hugbúnaðinn", "navigation_bar.apps": "Ná í forritið", "navigation_bar.blocks": "Útilokaðir notendur", "navigation_bar.bookmarks": "Bókamerki", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", "navigation_bar.security": "Öryggi", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Þú þarft að skrá þig inn til að nota þetta tilfang.", "notification.admin.report": "{name} kærði {target}", "notification.admin.sign_up": "{name} skráði sig", "notification.favourite": "{name} setti færslu þína í eftirlæti", @@ -404,6 +418,8 @@ "privacy.public.short": "Opinbert", "privacy.unlisted.long": "Sýnilegt öllum, en ekki tekið með í uppgötvunareiginleikum", "privacy.unlisted.short": "Óskráð", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Endurlesa", "regeneration_indicator.label": "Hleð inn…", "regeneration_indicator.sublabel": "Verið er að útbúa heimastreymið þitt!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Að leita í efni færslna er ekki virkt á þessum Mastodon-þjóni.", "search_results.title": "Leita að {q}", "search_results.total": "{count, number} {count, plural, one {niðurstaða} other {niðurstöður}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Folk sem hefur notað þennan netþjón síðustu 30 daga (virkir notendur í mánuðinum)", + "server_banner.active_users": "virkir notendur", + "server_banner.administered_by": "Stýrt af:", + "server_banner.introduction": "{domain} er hluti af dreifhýsta samfélagsnetinu sem keyrt er af {mastodon}.", + "server_banner.learn_more": "Kanna nánar", + "server_banner.server_stats": "Tölfræði þjóns:", "sign_in_banner.create_account": "Búa til notandaaðgang", "sign_in_banner.sign_in": "Skrá inn", "sign_in_banner.text": "Skráðu þig inn til að fylgjast með notendum eða myllumerkjum, svara færslum, deila þeim eða setja í eftirlæti, eða eiga í samskiptum á aðgangnum þínum á öðrum netþjónum.", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 688e1e47ca..60d877bc22 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Chiudi", "bundle_modal_error.message": "Qualcosa è andato storto durante il caricamento di questo componente.", "bundle_modal_error.retry": "Riprova", - "column.about": "About", + "column.about": "Informazioni su", "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", "column.community": "Timeline locale", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Segna come letto", "conversation.open": "Visualizza conversazione", "conversation.with": "Con {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Da un fediverse noto", "directory.local": "Solo da {domain}", "directory.new_arrivals": "Nuovi arrivi", @@ -196,7 +198,7 @@ "explore.search_results": "Risultati della ricerca", "explore.suggested_follows": "Per te", "explore.title": "Esplora", - "explore.trending_links": "Novità", + "explore.trending_links": "Notizie", "explore.trending_statuses": "Post", "explore.trending_tags": "Hashtag", "filter_modal.added.context_mismatch_explanation": "La categoria di questo filtro non si applica al contesto in cui hai acceduto a questo post. Se desideri che il post sia filtrato anche in questo contesto, dovrai modificare il filtro.", @@ -224,12 +226,12 @@ "generic.saved": "Salvato", "getting_started.directory": "Directory", "getting_started.documentation": "Documentazione", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon è un software libero e open source. È possibile visualizzare il codice sorgente, contribuire o segnalare problemi a {repository}.", "getting_started.heading": "Come iniziare", "getting_started.invite": "Invita qualcuno", "getting_started.privacy_policy": "Politica sulla Privacy", "getting_started.security": "Sicurezza", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Informazioni su Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Mostra risposte", "home.hide_announcements": "Nascondi annunci", "home.show_announcements": "Mostra annunci", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# giorno} other {# giorni}}", "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Durata", "mute_modal.hide_notifications": "Nascondere le notifiche da quest'utente?", "mute_modal.indefinite": "Per sempre", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Informazioni su", + "navigation_bar.apps": "Scarica l'app", "navigation_bar.blocks": "Utenti bloccati", "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Timeline locale", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Parole silenziate", "navigation_bar.follow_requests": "Richieste di seguirti", "navigation_bar.follows_and_followers": "Seguiti e seguaci", - "navigation_bar.info": "About", + "navigation_bar.info": "Informazioni su", "navigation_bar.keyboard_shortcuts": "Tasti di scelta rapida", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Esci", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", "navigation_bar.security": "Sicurezza", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Devi effetturare il login per accedere a questa funzione.", "notification.admin.report": "{name} ha segnalato {target}", "notification.admin.sign_up": "{name} si è iscritto", "notification.favourite": "{name} ha apprezzato il tuo post", @@ -404,6 +418,8 @@ "privacy.public.short": "Pubblico", "privacy.unlisted.long": "Visibile a tutti, ma escluso dalle funzioni di scoperta", "privacy.unlisted.short": "Non elencato", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Aggiorna", "regeneration_indicator.label": "Caricamento in corso…", "regeneration_indicator.sublabel": "Stiamo preparando il tuo home feed!", @@ -476,14 +492,14 @@ "search_results.statuses_fts_disabled": "La ricerca di post per il loro contenuto non è abilitata su questo server Mastodon.", "search_results.title": "Ricerca: {q}", "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Persone che usano questo server negli ultimi 30 giorni (utenti attivi mensili)", + "server_banner.active_users": "utenti attivi", + "server_banner.administered_by": "Amministrato da:", + "server_banner.introduction": "{domain} fa parte del social network decentralizzato alimentato da {mastodon}.", + "server_banner.learn_more": "Scopri di più", + "server_banner.server_stats": "Statistiche del server:", "sign_in_banner.create_account": "Crea un account", - "sign_in_banner.sign_in": "Registrati", + "sign_in_banner.sign_in": "Accedi", "sign_in_banner.text": "Accedi per seguire profili o hashtag, segnare come preferiti, condividere e rispondere ai post o interagire dal tuo account su un server diverso.", "status.admin_account": "Apri interfaccia di moderazione per @{name}", "status.admin_status": "Apri questo post nell'interfaccia di moderazione", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 66d058af66..22c336bf8d 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "既読にする", "conversation.open": "会話を表示", "conversation.with": "{names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "既知の連合より", "directory.local": "{domain} のみ", "directory.new_arrivals": "新着順", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "返信表示", "home.hide_announcements": "お知らせを隠す", "home.show_announcements": "お知らせを表示", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number}日", "intervals.full.hours": "{number}時間", "intervals.full.minutes": "{number}分", @@ -404,6 +418,8 @@ "privacy.public.short": "公開", "privacy.unlisted.long": "誰でも閲覧可、サイレント", "privacy.unlisted.short": "未収載", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "更新", "regeneration_indicator.label": "読み込み中…", "regeneration_indicator.sublabel": "ホームタイムラインは準備中です!", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 9fcb670dfc..111bda34a8 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "პასუხების ჩვენება", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "საჯარო", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "ჩამოუთვლელი", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "იტვირთება…", "regeneration_indicator.sublabel": "თქვენი სახლის ლენტა მზადდება!", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 08c0885c94..9b2699e998 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Creḍ yettwaɣṛa", "conversation.open": "Ssken adiwenni", "conversation.with": "Akked {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Deg fedivers yettwasnen", "directory.local": "Seg {domain} kan", "directory.new_arrivals": "Imaynuten id yewḍen", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Ssken-d tiririyin", "home.hide_announcements": "Ffer ulɣuyen", "home.show_announcements": "Ssken-d ulɣuyen", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# n wass} other {# n wussan}}", "intervals.full.hours": "{number, plural, one {# n usarag} other {# n yesragen}}", "intervals.full.minutes": "{number, plural, one {# n tesdat} other {# n tesdatin}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Azayez", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "War tabdert", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Smiren", "regeneration_indicator.label": "Yessalay-d…", "regeneration_indicator.sublabel": "Tasuddemt tagejdant ara d-tettwaheggay!", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index e47d7cdf5a..2450ceff30 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Оқылды деп белгіле", "conversation.open": "Пікірталасты қарау", "conversation.with": "{names} атты", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Танымал желіден", "directory.local": "Тек {domain} доменінен", "directory.new_arrivals": "Жаңадан келгендер", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Жауаптарды көрсету", "home.hide_announcements": "Анонстарды жасыр", "home.show_announcements": "Анонстарды көрсет", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# күн} other {# күн}}", "intervals.full.hours": "{number, plural, one {# сағат} other {# сағат}}", "intervals.full.minutes": "{number, plural, one {# минут} other {# минут}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Ашық", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Тізімсіз", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Жаңарту", "regeneration_indicator.label": "Жүктеу…", "regeneration_indicator.sublabel": "Жергілікті желі құрылуда!", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index a7ecea067e..d4e8b91773 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 45ba0ffb4a..3994fbeee7 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "닫기", "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", - "column.about": "About", + "column.about": "정보", "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", "column.community": "로컬 타임라인", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "읽은 상태로 표시", "conversation.open": "대화 보기", "conversation.with": "{names} 님과", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "알려진 연합우주로부터", "directory.local": "{domain}에서만", "directory.new_arrivals": "새로운 사람들", @@ -224,12 +226,12 @@ "generic.saved": "저장됨", "getting_started.directory": "디렉토리", "getting_started.documentation": "문서", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "마스토돈은 자유 오픈소스 소프트웨어입니다. {repository}에서 소스코드를 열람할 수 있으며, 기여를 하거나 이슈를 작성할 수도 있습니다.", "getting_started.heading": "시작", "getting_started.invite": "초대", "getting_started.privacy_policy": "개인정보 처리방침", "getting_started.security": "계정 설정", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "마스토돈에 대하여", "hashtag.column_header.tag_mode.all": "그리고 {additional}", "hashtag.column_header.tag_mode.any": "또는 {additional}", "hashtag.column_header.tag_mode.none": "{additional}를 제외하고", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "답글 표시", "home.hide_announcements": "공지사항 숨기기", "home.show_announcements": "공지사항 보기", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number} 일", "intervals.full.hours": "{number} 시간", "intervals.full.minutes": "{number} 분", @@ -311,7 +325,7 @@ "mute_modal.duration": "기간", "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?", "mute_modal.indefinite": "무기한", - "navigation_bar.about": "About", + "navigation_bar.about": "정보", "navigation_bar.apps": "앱 다운로드하기", "navigation_bar.blocks": "차단한 사용자", "navigation_bar.bookmarks": "보관함", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "사용자 설정", "navigation_bar.public_timeline": "연합 타임라인", "navigation_bar.security": "보안", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "이 정보에 접근하려면 로그인을 해야 합니다.", "notification.admin.report": "{name} 님이 {target}를 신고했습니다", "notification.admin.sign_up": "{name} 님이 가입했습니다", "notification.favourite": "{name} 님이 당신의 게시물을 마음에 들어합니다", @@ -404,6 +418,8 @@ "privacy.public.short": "공개", "privacy.unlisted.long": "모두가 볼 수 있지만, 발견하기 기능에서는 제외됨", "privacy.unlisted.short": "타임라인에 비표시", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "새로고침", "regeneration_indicator.label": "불러오는 중…", "regeneration_indicator.sublabel": "당신의 홈 피드가 준비되는 중입니다!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "이 마스토돈 서버에선 게시물의 내용을 통한 검색이 활성화 되어 있지 않습니다.", "search_results.title": "{q}에 대한 검색", "search_results.total": "{count, number}건의 결과", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "30일 동안 이 서버를 사용한 사람들 (월간 활성 이용자)", + "server_banner.active_users": "활성 사용자", + "server_banner.administered_by": "관리자:", + "server_banner.introduction": "{domain}은 마스토돈으로 운영되는 탈중앙화 된 소셜 네트워크의 일부입니다.", + "server_banner.learn_more": "더 알아보기", + "server_banner.server_stats": "서버 통계:", "sign_in_banner.create_account": "계정 생성", "sign_in_banner.sign_in": "로그인", "sign_in_banner.text": "로그인을 통해 프로필이나 해시태그를 팔로우하거나 마음에 들어하거나 공유하고 답글을 달 수 있습니다, 혹은 다른 서버에 있는 본인의 계정을 통해 참여할 수도 있습니다.", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 662f2aec0c..76d5663411 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Bigire", "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", "bundle_modal_error.retry": "Dîsa bicerbîne", - "column.about": "About", + "column.about": "Derbar", "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", "column.community": "Demnameya herêmî", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Wekî xwendî nîşan bide", "conversation.open": "Axaftinê nîşan bide", "conversation.with": "Bi {names} re", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Ji fediversên naskirî", "directory.local": "Tenê ji {domain}", "directory.new_arrivals": "Kesên ku nû hatine", @@ -222,14 +224,14 @@ "follow_request.reject": "Nepejirîne", "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", "generic.saved": "Tomarkirî", - "getting_started.directory": "Directory", + "getting_started.directory": "Rêgeh", "getting_started.documentation": "Pelbend", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon belaş, nermalava çavkaniya vekirî ye. Tu dikarî koda çavkaniyê bibînî, beşdar bibî an pirsgirêkan ragihînî li ser {repository}.", "getting_started.heading": "Destpêkirin", "getting_started.invite": "Kesan vexwîne", "getting_started.privacy_policy": "Politîka taybetiyê", "getting_started.security": "Sazkariyên ajimêr", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Derbarê Mastodon", "hashtag.column_header.tag_mode.all": "û {additional}", "hashtag.column_header.tag_mode.any": "an {additional}", "hashtag.column_header.tag_mode.none": "bêyî {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Bersivan nîşan bide", "home.hide_announcements": "Reklaman veşêre", "home.show_announcements": "Reklaman nîşan bide", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# roj} other {# roj}}", "intervals.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}}\n \n", "intervals.full.minutes": "{number, plural, one {# xulek} other {# xulek}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Dem", "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?", "mute_modal.indefinite": "Nediyar", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Derbar", + "navigation_bar.apps": "Sepanê bi dest bixe", "navigation_bar.blocks": "Bikarhênerên astengkirî", "navigation_bar.bookmarks": "Şûnpel", "navigation_bar.community_timeline": "Demnameya herêmî", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Peyvên bêdengkirî", "navigation_bar.follow_requests": "Daxwazên şopandinê", "navigation_bar.follows_and_followers": "Şopandin û şopîner", - "navigation_bar.info": "About", + "navigation_bar.info": "Derbar", "navigation_bar.keyboard_shortcuts": "Kurte bişkok", "navigation_bar.lists": "Rêzok", "navigation_bar.logout": "Derkeve", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameya giştî", "navigation_bar.security": "Ewlehî", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Divê tu têketinê bikî da ku tu bigihîjî vê çavkaniyê.", "notification.admin.report": "{name} hate ragihandin {target}", "notification.admin.sign_up": "{name} tomar bû", "notification.favourite": "{name} şandiya te hez kir", @@ -404,6 +418,8 @@ "privacy.public.short": "Gelemperî", "privacy.unlisted.long": "Ji bo hemûyan xuyabar e, lê ji taybetmendiyên vekolînê veqetiya ye", "privacy.unlisted.short": "Nerêzok", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Nû bike", "regeneration_indicator.label": "Tê barkirin…", "regeneration_indicator.sublabel": "Naveroka rûpela sereke ya te tê amedekirin!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Di vê rajekara Mastodonê da lêgerîna şandîyên li gorî naveroka wan ne çalak e.", "search_results.title": "Li {q} bigere", "search_results.total": "{count, number} {count, plural, one {encam} other {encam}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Kesên ku di van 30 rojên dawî de vê rajekarê bi kar tînin (Bikarhênerên Çalak ên Mehane)", + "server_banner.active_users": "bikarhênerên çalak", + "server_banner.administered_by": "Tê bi rêvebirin ji aliyê:", + "server_banner.introduction": "{domain} beşek ji tora civakî ya nenavendî ye bi hêzdariya {mastodon}.", + "server_banner.learn_more": "Bêtir fêr bibe", + "server_banner.server_stats": "Amarên rajekar:", "sign_in_banner.create_account": "Ajimêr biafirîne", "sign_in_banner.sign_in": "Têkeve", "sign_in_banner.text": "Têkeve ji bo şopandina profîlan an hashtagan, bijarte, parvekirin û bersivdana şandiyan, an ji ajimêrê xwe li ser rajekarek cuda têkilî deyine.", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index f12be55db4..4cd8629f6b 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Merkya vel redys", "conversation.open": "Gweles kesklapp", "conversation.with": "Gans {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "A geffrysvys godhvedhys", "directory.local": "A {domain} hepken", "directory.new_arrivals": "Devedhyansow nowydh", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Diskwedhes gorthebow", "home.hide_announcements": "Kudha deklaryansow", "home.show_announcements": "Diskwedhes deklaryansow", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# jydh} other {# a jydhyow}}", "intervals.full.hours": "{number, plural, one {# our} other {# our}}", "intervals.full.minutes": "{number, plural, one {# vynysen} other {# a vynysennow}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Poblek", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Anrelys", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Daskarga", "regeneration_indicator.label": "Ow karga…", "regeneration_indicator.sublabel": "Yma agas lin dre ow pos pareusys!", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index f04c33b8b5..ddda5c6c0e 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 79e845cbfa..e307eccebb 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Aizvērt", "bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.", "bundle_modal_error.retry": "Mēģini vēlreiz", - "column.about": "About", + "column.about": "Par", "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", "column.community": "Vietējā ziņu līnija", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Atzīmēt kā izlasītu", "conversation.open": "Skatīt sarunu", "conversation.with": "Ar {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "No pazīstamas federācijas", "directory.local": "Tikai no {domain}", "directory.new_arrivals": "Jaunpienācēji", @@ -222,14 +224,14 @@ "follow_request.reject": "Noraidīt", "follow_requests.unlocked_explanation": "Lai gan tavs konts nav bloķēts, {domain} darbinieki iedomājās, ka, iespējams, vēlēsies pārskatīt pieprasījumus no šiem kontiem.", "generic.saved": "Saglabāts", - "getting_started.directory": "Directory", + "getting_started.directory": "Direktorija", "getting_started.documentation": "Dokumentācija", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon ir bezmaksas atvērtā pirmkoda programmatūra. Tu vari apskatīt pirmkodu, sniegt savu ieguldījumu vai ziņot par problēmām vietnē {repository}.", "getting_started.heading": "Darba sākšana", "getting_started.invite": "Uzaicini cilvēkus", "getting_started.privacy_policy": "Privātuma Politika", "getting_started.security": "Konta iestatījumi", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Par Mastodon", "hashtag.column_header.tag_mode.all": "un {additional}", "hashtag.column_header.tag_mode.any": "vai {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Rādīt atbildes", "home.hide_announcements": "Slēpt paziņojumus", "home.show_announcements": "Rādīt paziņojumus", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# diena} other {# dienas}}", "intervals.full.hours": "{number, plural, one {# stunda} other {# stundas}}", "intervals.full.minutes": "{number, plural, one {# minūte} other {# minūtes}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Ilgums", "mute_modal.hide_notifications": "Slēpt paziņojumus no šī lietotāja?", "mute_modal.indefinite": "Nenoteikts", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Par", + "navigation_bar.apps": "Iegūt lietotni", "navigation_bar.blocks": "Bloķētie lietotāji", "navigation_bar.bookmarks": "Grāmatzīmes", "navigation_bar.community_timeline": "Vietējā ziņu lenta", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Klusināti vārdi", "navigation_bar.follow_requests": "Sekošanas pieprasījumi", "navigation_bar.follows_and_followers": "Man seko un sekotāji", - "navigation_bar.info": "About", + "navigation_bar.info": "Par", "navigation_bar.keyboard_shortcuts": "Ātrie taustiņi", "navigation_bar.lists": "Saraksti", "navigation_bar.logout": "Iziet", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā ziņu lenta", "navigation_bar.security": "Drošība", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Lai piekļūtu šim resursam, tev ir jāpierakstās.", "notification.admin.report": "{name} ziņoja par {target}", "notification.admin.sign_up": "{name} ir pierakstījies", "notification.favourite": "{name} izcēla tavu ziņu", @@ -404,6 +418,8 @@ "privacy.public.short": "Publisks", "privacy.unlisted.long": "Redzama visiem, bet atteicās no atklāšanas funkcijām", "privacy.unlisted.short": "Neminētie", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Atsvaidzināt", "regeneration_indicator.label": "Ielādē…", "regeneration_indicator.sublabel": "Tiek gatavota tava plūsma!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Šajā Mastodon serverī nav iespējota ziņu meklēšana pēc to satura.", "search_results.title": "Meklēt {q}", "search_results.total": "{count, number} {count, plural, one {rezultāts} other {rezultāti}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Cilvēki, kas izmantojuši šo serveri pēdējo 30 dienu laikā (aktīvie lietotāji mēnesī)", + "server_banner.active_users": "aktīvie lietotāji", + "server_banner.administered_by": "Administrē:", + "server_banner.introduction": "{domain} ir daļa no decentralizētā sociālā tīkla, ko nodrošina {mastodon}.", + "server_banner.learn_more": "Uzzināt vairāk", + "server_banner.server_stats": "Servera statistika:", "sign_in_banner.create_account": "Izveidot kontu", "sign_in_banner.sign_in": "Pierakstīties", "sign_in_banner.text": "Pieraksties, lai sekotu profiliem vai atsaucēm, pievienotu izlasei, kopīgotu ziņas un atbildētu uz tām vai mijiedarbotos no sava konta citā serverī.", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 8f41064b1b..1dc8b10e43 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Означете како прочитано", "conversation.open": "Прегледај разговор", "conversation.with": "Со {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Од познати fediverse", "directory.local": "Само од {domain}", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Прикажи одговори", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# ден} other {# дена}}", "intervals.full.hours": "{number, plural, one {# час} other {# часа}}", "intervals.full.minutes": "{number, plural, one {# минута} other {# минути}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Јавно", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Необјавено", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Освежи", "regeneration_indicator.label": "Вчитување…", "regeneration_indicator.sublabel": "Вашиот новости се подготвуваат!", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index a5d293e577..01f0831cf9 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "വായിച്ചതായി അടയാളപ്പെടുത്തുക", "conversation.open": "സംഭാഷണം കാണുക", "conversation.with": "{names} കൂടെ", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "അറിയപ്പെടുന്ന ഫെഡിവേഴ്‌സ്ൽ നിന്ന്", "directory.local": "{domain} ൽ നിന്ന് മാത്രം", "directory.new_arrivals": "പുതിയ വരവുകൾ", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "മറുപടികൾ കാണിക്കുക", "home.hide_announcements": "പ്രഖ്യാപനങ്ങൾ മറയ്‌ക്കുക", "home.show_announcements": "പ്രഖ്യാപനങ്ങൾ കാണിക്കുക", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "എല്ലാവര്‍ക്കും", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "പുതുക്കുക", "regeneration_indicator.label": "ലഭ്യമാക്കുന്നു…", "regeneration_indicator.sublabel": "നിങ്ങളുടെ ഹോം ഫീഡ് തയാറാക്കുന്നു!", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 9ccd3cfc64..a070b67596 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 2f9d9022b3..b94642addd 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Tanda sudah dibaca", "conversation.open": "Lihat perbualan", "conversation.with": "Dengan {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Dari fediverse yang diketahui", "directory.local": "Dari {domain} sahaja", "directory.new_arrivals": "Ketibaan baharu", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Tunjukkan balasan", "home.hide_announcements": "Sembunyikan pengumuman", "home.show_announcements": "Tunjukkan pengumuman", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, other {# hari}}", "intervals.full.hours": "{number, plural, other {# jam}}", "intervals.full.minutes": "{number, plural, other {# minit}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Awam", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Tidak tersenarai", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Muat semula", "regeneration_indicator.label": "Memuatkan…", "regeneration_indicator.sublabel": "Suapan rumah anda sedang disediakan!", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index cdb60d5bcf..f04ac2dcb6 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Als gelezen markeren", "conversation.open": "Gesprek tonen", "conversation.with": "Met {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Fediverse (wat bekend is)", "directory.local": "Alleen {domain}", "directory.new_arrivals": "Nieuwe accounts", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Reacties tonen", "home.hide_announcements": "Mededelingen verbergen", "home.show_announcements": "Mededelingen tonen", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dag} other {# dagen}}", "intervals.full.hours": "{number, plural, one {# uur} other {# uur}}", "intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Openbaar", "privacy.unlisted.long": "Voor iedereen zichtbaar, maar niet onder trends, hashtags en op openbare tijdlijnen", "privacy.unlisted.short": "Minder openbaar", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Vernieuwen", "regeneration_indicator.label": "Aan het laden…", "regeneration_indicator.sublabel": "Jouw tijdlijn wordt aangemaakt!", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index a58e6240e3..e0e7413db8 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Merk som lese", "conversation.open": "Sjå samtale", "conversation.with": "Med {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Frå kjent fedivers", "directory.local": "Berre frå {domain}", "directory.new_arrivals": "Nyankommne", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Vis svar", "home.hide_announcements": "Skjul kunngjeringar", "home.show_announcements": "Vis kunngjeringar", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# time} other {# timar}}", "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutt}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Offentleg", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Uoppført", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Oppdater", "regeneration_indicator.label": "Lastar…", "regeneration_indicator.sublabel": "Heimetidslinja di vert førebudd!", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 0fe69bb979..75eafd9d76 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marker som lest", "conversation.open": "Vis samtale", "conversation.with": "Med {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Fra det kjente strømiverset", "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Vis svar", "home.hide_announcements": "Skjul kunngjøring", "home.show_announcements": "Vis kunngjøring", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural,one {# dag} other {# dager}}", "intervals.full.hours": "{number, plural, one {# time} other {# timer}}", "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutter}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Offentlig", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Uoppført", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Oppfrisk", "regeneration_indicator.label": "Laster…", "regeneration_indicator.sublabel": "Dine startside forberedes!", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 73ffedd624..165925ec02 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marcar coma legida", "conversation.open": "Veire la conversacion", "conversation.with": "Amb {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Del fediverse conegut", "directory.local": "Solament de {domain}", "directory.new_arrivals": "Nòus-venguts", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Mostrar las responsas", "home.hide_announcements": "Rescondre las anóncias", "home.show_announcements": "Mostrar las anóncias", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# jorn} other {# jorns}}", "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}", "intervals.full.minutes": "{number, plural, one {# minuta} other {# minutas}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Pas-listat", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Actualizar", "regeneration_indicator.label": "Cargament…", "regeneration_indicator.sublabel": "Sèm a preparar vòstre flux d’acuèlh !", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 757f2cbd57..e53d3a118c 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 0541e5f4d2..2013a08bf4 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Zamknij", "bundle_modal_error.message": "Coś poszło nie tak podczas ładowania tego składnika.", "bundle_modal_error.retry": "Spróbuj ponownie", - "column.about": "About", + "column.about": "O...", "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", "column.community": "Lokalna oś czasu", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Oznacz jako przeczytane", "conversation.open": "Zobacz rozmowę", "conversation.with": "Z {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Ze znanego fediwersum", "directory.local": "Tylko z {domain}", "directory.new_arrivals": "Nowości", @@ -222,14 +224,14 @@ "follow_request.reject": "Odrzuć", "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość śledzenia.", "generic.saved": "Zapisano", - "getting_started.directory": "Directory", + "getting_started.directory": "Katalog", "getting_started.documentation": "Dokumentacja", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon jest darmowym, otwartym oprogramowaniem. Możesz zobaczyć kod źródłowy, wnieść wkład lub zgłosić problemy na {repository}.", "getting_started.heading": "Rozpocznij", "getting_started.invite": "Zaproś znajomych", "getting_started.privacy_policy": "Polityka prywatności", "getting_started.security": "Bezpieczeństwo", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "O Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "lub {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Pokazuj odpowiedzi", "home.hide_announcements": "Ukryj ogłoszenia", "home.show_announcements": "Pokaż ogłoszenia", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# godzina} few {# godziny} many {# godzin} other {# godzin}}", "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Czas", "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "mute_modal.indefinite": "Nieokreślony", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "O...", + "navigation_bar.apps": "Pobierz aplikację", "navigation_bar.blocks": "Zablokowani użytkownicy", "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Wyciszone słowa", "navigation_bar.follow_requests": "Prośby o śledzenie", "navigation_bar.follows_and_followers": "Śledzeni i śledzący", - "navigation_bar.info": "About", + "navigation_bar.info": "O nas", "navigation_bar.keyboard_shortcuts": "Skróty klawiszowe", "navigation_bar.lists": "Listy", "navigation_bar.logout": "Wyloguj", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", "navigation_bar.security": "Bezpieczeństwo", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Musisz się zalogować, aby otrzymać dostęp do tego zasobu.", "notification.admin.report": "{name} zgłosił {target}", "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", @@ -404,6 +418,8 @@ "privacy.public.short": "Publiczny", "privacy.unlisted.long": "Widoczne dla każdego, z wyłączeniem funkcji odkrywania", "privacy.unlisted.short": "Niewidoczny", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Odśwież", "regeneration_indicator.label": "Ładuję…", "regeneration_indicator.sublabel": "Twoja oś czasu jest przygotowywana!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Szukanie wpisów przy pomocy ich zawartości nie jest włączone na tym serwerze Mastodona.", "search_results.title": "Wyszukiwanie {q}", "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} other {wyników}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Osoby korzystające z tego serwera w ciągu ostatnich 30 dni (Miesięcznie aktywni użytkownicy)", + "server_banner.active_users": "aktywni użytkownicy", + "server_banner.administered_by": "Zarzdzane przez:", + "server_banner.introduction": "{domain} jest częścią zdecentralizowanej sieci społecznościowej wspieranej przez {mastodon}.", + "server_banner.learn_more": "Dowiedz się więcej", + "server_banner.server_stats": "Statystyki serwera:", "sign_in_banner.create_account": "Załóż konto", "sign_in_banner.sign_in": "Zaloguj się", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 9e5be4d67a..28329e4a68 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marcar como lida", "conversation.open": "Ver conversa", "conversation.with": "Com {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Do fediverso conhecido", "directory.local": "Somente de {domain}", "directory.new_arrivals": "Acabaram de chegar", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Mostrar respostas", "home.hide_announcements": "Ocultar comunicados", "home.show_announcements": "Mostrar comunicados", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visível para todos, mas desativou os recursos de descoberta", "privacy.unlisted.short": "Não-listado", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Atualizar", "regeneration_indicator.label": "Carregando…", "regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 261c725fa2..2fb494fdd0 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.", "bundle_modal_error.retry": "Tente de novo", - "column.about": "About", + "column.about": "Sobre", "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", "column.community": "Cronologia local", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marcar como lida", "conversation.open": "Ver conversa", "conversation.with": "Com {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Do fediverso conhecido", "directory.local": "Apenas de {domain}", "directory.new_arrivals": "Recém chegados", @@ -222,14 +224,14 @@ "follow_request.reject": "Rejeitar", "follow_requests.unlocked_explanation": "Apesar de a sua não ser privada, a administração de {domain} pensa que poderá querer rever manualmente os pedidos de seguimento dessas contas.", "generic.saved": "Salvo", - "getting_started.directory": "Directory", + "getting_started.directory": "Diretório", "getting_started.documentation": "Documentação", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "O Mastodon é um software gratuito, de código aberto. Pode ver o código-fonte, contribuir ou reportar problemas em {repository}.", "getting_started.heading": "Primeiros passos", "getting_started.invite": "Convidar pessoas", "getting_started.privacy_policy": "Política de Privacidade", "getting_started.security": "Segurança", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Sobre Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Mostrar respostas", "home.hide_announcements": "Ocultar anúncios", "home.show_announcements": "Exibir anúncios", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Duração", "mute_modal.hide_notifications": "Esconder notificações deste utilizador?", "mute_modal.indefinite": "Indefinidamente", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Sobre", + "navigation_bar.apps": "Obtém a aplicação", "navigation_bar.blocks": "Utilizadores bloqueados", "navigation_bar.bookmarks": "Itens salvos", "navigation_bar.community_timeline": "Cronologia local", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Palavras silenciadas", "navigation_bar.follow_requests": "Seguidores pendentes", "navigation_bar.follows_and_followers": "Seguindo e seguidores", - "navigation_bar.info": "About", + "navigation_bar.info": "Sobre", "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Sair", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", "navigation_bar.security": "Segurança", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Necessita de iniciar sessão para utilizar esta funcionalidade.", "notification.admin.report": "{name} denunciou {target}", "notification.admin.sign_up": "{name} inscreveu-se", "notification.favourite": "{name} adicionou a tua publicação aos favoritos", @@ -404,6 +418,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visível para todos, mas não incluir em funcionalidades de divulgação", "privacy.unlisted.short": "Não listar", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Actualizar", "regeneration_indicator.label": "A carregar…", "regeneration_indicator.sublabel": "A tua página inicial está a ser preparada!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "A pesquisa de toots pelo seu conteúdo não está disponível nesta instância Mastodon.", "search_results.title": "Pesquisar por {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Pessoas que utilizaram este servidor nos últimos 30 dias (Utilizadores Ativos Mensais)", + "server_banner.active_users": "utilizadores ativos", + "server_banner.administered_by": "Administrado por:", + "server_banner.introduction": "{domain} faz parte da rede social descentralizada baseada no {mastodon}.", + "server_banner.learn_more": "Saber mais", + "server_banner.server_stats": "Estatísticas do servidor:", "sign_in_banner.create_account": "Criar conta", "sign_in_banner.sign_in": "Iniciar sessão", "sign_in_banner.text": "Inicie sessão para seguir perfis ou hashtags, favoritos, partilhar e responder às publicações ou interagir através da sua conta noutro servidor.", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 1348293c2a..e70acdd920 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Marchează ca citit", "conversation.open": "Vizualizează conversația", "conversation.with": "Cu {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Din fediversul cunoscut", "directory.local": "Doar din {domain}", "directory.new_arrivals": "Înscriși recent", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Afișează răspunsurile", "home.hide_announcements": "Ascunde anunțurile", "home.show_announcements": "Afișează anunțurile", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural,one {# zi} other {# zile}}", "intervals.full.hours": "{number, plural, one {# oră} other {# ore}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minute}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Nelistat", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Reîncarcă", "regeneration_indicator.label": "Se încarcă…", "regeneration_indicator.sublabel": "Cronologia ta principală este în curs de pregătire!", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 7c57596264..444ea2d106 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Отметить как прочитанное", "conversation.open": "Просмотр беседы", "conversation.with": "С {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Со всей федерации", "directory.local": "Только с {domain}", "directory.new_arrivals": "Новички", @@ -224,12 +226,12 @@ "generic.saved": "Сохранено", "getting_started.directory": "Каталог", "getting_started.documentation": "Документация", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon — это бесплатное программное обеспечение с открытым исходным кодом. Вы можете посмотреть исходный код, внести свой вклад или сообщить о проблемах в {repository}.", "getting_started.heading": "Начать", "getting_started.invite": "Пригласить людей", "getting_started.privacy_policy": "Политика конфиденциальности", "getting_started.security": "Настройки учётной записи", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "О Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Показывать ответы", "home.hide_announcements": "Скрыть объявления", "home.show_announcements": "Показать объявления", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# день} few {# дня} other {# дней}}", "intervals.full.hours": "{number, plural, one {# час} few {# часа} other {# часов}}", "intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} other {# минут}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Публичный", "privacy.unlisted.long": "Виден всем, но не через функции обзора", "privacy.unlisted.short": "Скрытый", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Обновить", "regeneration_indicator.label": "Загрузка…", "regeneration_indicator.sublabel": "Один момент, мы подготавливаем вашу ленту!", @@ -478,10 +494,10 @@ "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.administered_by": "Управляется:", + "server_banner.introduction": "{domain} является частью децентрализованной социальной сети, основанной на {mastodon}.", + "server_banner.learn_more": "Узнать больше", + "server_banner.server_stats": "Статистика сервера:", "sign_in_banner.create_account": "Создать учётную запись", "sign_in_banner.sign_in": "Войти", "sign_in_banner.text": "Войдите, чтобы следить за профилями, хэштегами или избранным, делиться сообщениями и отвечать на них или взаимодействовать с вашей учётной записью на другом сервере.", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 61162caf0d..43fcdfbbae 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "पठितमित्यङ्क्यताम्", "conversation.open": "वार्तालापो दृश्यताम्", "conversation.with": "{names} जनैः साकम्", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "सुपरिचितं Fediverse इति स्थानात्", "directory.local": "{domain} प्रदेशात्केवलम्", "directory.new_arrivals": "नवामगमाः", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 7b977dfc9c..eddbab7fe9 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Signala comente lèghidu", "conversation.open": "Ammustra arresonada", "conversation.with": "Cun {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Dae unu fediversu connotu", "directory.local": "Isceti dae {domain}", "directory.new_arrivals": "Arribos noos", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Ammustra rispostas", "home.hide_announcements": "Cua annùntzios", "home.show_announcements": "Ammustra annùntzios", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# die} other {# dies}}", "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}", "intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Pùblicu", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Esclùidu de sa lista", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Atualiza", "regeneration_indicator.label": "Carrighende…", "regeneration_indicator.sublabel": "Preparende sa lìnia de tempus printzipale tua.", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 841f32faec..3c1ff7c5ee 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "කියවූ බව යොදන්න", "conversation.open": "සංවාදය බලන්න", "conversation.with": "{names} සමඟ", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "දන්නා fediverse වලින්", "directory.local": "{domain} වෙතින් පමණි", "directory.new_arrivals": "නව පැමිණීම්", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "පිළිතුරු පෙන්වන්න", "home.hide_announcements": "නිවේදන සඟවන්න", "home.show_announcements": "නිවේදන පෙන්වන්න", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# දින} other {# දින}}", "intervals.full.hours": "{number, plural, one {# පැය} other {# පැය}}", "intervals.full.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}}", @@ -404,6 +418,8 @@ "privacy.public.short": "ප්‍රසිද්ධ", "privacy.unlisted.long": "සැමට දෘශ්‍යමාන, නමුත් සොයාගැනීමේ විශේෂාංග වලින් ඉවත් විය", "privacy.unlisted.short": "ලැයිස්තුගත නොකළ", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "නැවුම් කරන්න", "regeneration_indicator.label": "පූරණය වෙමින්…", "regeneration_indicator.sublabel": "ඔබේ නිවසේ පෝෂණය සූදානම් වෙමින් පවතී!", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 213f2a5fc0..ee9f0b10af 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Označ za prečítané", "conversation.open": "Ukáž konverzáciu", "conversation.with": "S {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Zo známého fedivesmíru", "directory.local": "Iba z {domain}", "directory.new_arrivals": "Nové príchody", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Ukáž odpovede", "home.hide_announcements": "Skry oboznámenia", "home.show_announcements": "Ukáž oboznámenia", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# deň} few {# dní} many {# dní} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodín}}", "intervals.full.minutes": "{number, plural, one {# minúta} few {# minút} many {# minút} other {# minút}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Verejné", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Verejne, ale nezobraziť v osi", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Obnoviť", "regeneration_indicator.label": "Načítava sa…", "regeneration_indicator.sublabel": "Tvoja domovská nástenka sa pripravuje!", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 736de382cd..0cadffdf67 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Zapri", "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", "bundle_modal_error.retry": "Poskusi ponovno", - "column.about": "About", + "column.about": "O programu", "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", "column.community": "Lokalna časovnica", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Označi kot prebrano", "conversation.open": "Prikaži pogovor", "conversation.with": "Z {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Iz znanega fediverzuma", "directory.local": "Samo iz {domain}", "directory.new_arrivals": "Novi prišleki", @@ -224,12 +226,12 @@ "generic.saved": "Shranjeno", "getting_started.directory": "Adresár", "getting_started.documentation": "Dokumentacija", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon je brezplačno, odprtokodno programje. V {repository} si lahko ogledate izvorno kodo, prispevate svojo kodo in poročate o težavah.", "getting_started.heading": "Kako začeti", "getting_started.invite": "Povabite osebe", "getting_started.privacy_policy": "Pravilnik o zasebnosti", "getting_started.security": "Varnost", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "O programu Mastodon", "hashtag.column_header.tag_mode.all": "in {additional}", "hashtag.column_header.tag_mode.any": "ali {additional}", "hashtag.column_header.tag_mode.none": "brez {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Pokaži odgovore", "home.hide_announcements": "Skrij objave", "home.show_announcements": "Prikaži objave", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dan} two {# dni} few {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# ura} two {# uri} few {# ure} other {# ur}}", "intervals.full.minutes": "{number, plural, one {# minuta} two {# minuti} few {# minute} other {# minut}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Trajanje", "mute_modal.hide_notifications": "Skrij obvestila tega uporabnika?", "mute_modal.indefinite": "Nedoločeno", - "navigation_bar.about": "About", + "navigation_bar.about": "O programu", "navigation_bar.apps": "Prenesite aplikacijo", "navigation_bar.blocks": "Blokirani uporabniki", "navigation_bar.bookmarks": "Zaznamki", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", "navigation_bar.security": "Varnost", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Za dostop do tega vira se morate prijaviti.", "notification.admin.report": "{name} je prijavil/a {target}", "notification.admin.sign_up": "{name} se je vpisal/a", "notification.favourite": "{name} je vzljubil/a vaš status", @@ -404,6 +418,8 @@ "privacy.public.short": "Javno", "privacy.unlisted.long": "Vidno za vse, vendar izključeno iz funkcionalnosti odkrivanja", "privacy.unlisted.short": "Ni prikazano", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Osveži", "regeneration_indicator.label": "Nalaganje…", "regeneration_indicator.sublabel": "Vaš domači vir se pripravlja!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Iskanje objav po njihovi vsebini ni omogočeno na tem strežniku Mastodon.", "search_results.title": "Išči {q}", "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultatov}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Osebe, ki so uporabljale ta strežnik zadnjih 30 dni (dejavni uporabniki meseca)", + "server_banner.active_users": "dejavnih uporabnikov", + "server_banner.administered_by": "Upravlja:", + "server_banner.introduction": "{domain} je del decentraliziranega družbenega omrežja, ki ga poganja {mastodon}.", + "server_banner.learn_more": "Več o tem", + "server_banner.server_stats": "Statistika strežnika:", "sign_in_banner.create_account": "Ustvari račun", "sign_in_banner.sign_in": "Prijava", "sign_in_banner.text": "Prijavite se, da sledite profilom ali ključnikom, dodajate med priljubljene, delite z drugimi ter odgovarjate na objave, pa tudi ostajate v interakciji iz svojega računa na drugem strežniku.", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 5540570bd1..062a8c0371 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Mbylle", "bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_modal_error.retry": "Riprovoni", - "column.about": "About", + "column.about": "Mbi", "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", "column.community": "Rrjedhë kohore vendore", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Vëri shenjë si të lexuar", "conversation.open": "Shfaq bisedën", "conversation.with": "Me {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Nga fedivers i njohur", "directory.local": "Vetëm nga {domain}", "directory.new_arrivals": "Të ardhur rishtas", @@ -222,14 +224,14 @@ "follow_request.reject": "Hidhe tej", "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.", "generic.saved": "U ruajt", - "getting_started.directory": "Directory", + "getting_started.directory": "Drejtori", "getting_started.documentation": "Dokumentim", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon-i është software i lirë dhe me burim të hapët. Te {repository} mund t’i shihni kodin burim, të jepni ndihmesë ose të njoftoni çështje.", "getting_started.heading": "Si t’ia fillohet", "getting_started.invite": "Ftoni njerëz", "getting_started.privacy_policy": "Rregulla Privatësie", "getting_started.security": "Rregullime llogarie", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Mbi Mastodon-in", "hashtag.column_header.tag_mode.all": "dhe {additional}", "hashtag.column_header.tag_mode.any": "ose {additional}", "hashtag.column_header.tag_mode.none": "pa {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Shfaq përgjigje", "home.hide_announcements": "Fshihi lajmërimet", "home.show_announcements": "Shfaqi lajmërimet", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# ditë} other {# ditë}}", "intervals.full.hours": "{number, plural, one {# orë} other {# orë}}", "intervals.full.minutes": "{number, plural, one {# minutë} other {# minuta}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Kohëzgjatje", "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?", "mute_modal.indefinite": "E pacaktuar", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Mbi", + "navigation_bar.apps": "Merreni aplikacionin", "navigation_bar.blocks": "Përdorues të bllokuar", "navigation_bar.bookmarks": "Faqerojtës", "navigation_bar.community_timeline": "Rrjedhë kohore vendore", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Fjalë të heshtuara", "navigation_bar.follow_requests": "Kërkesa për ndjekje", "navigation_bar.follows_and_followers": "Ndjekje dhe ndjekës", - "navigation_bar.info": "About", + "navigation_bar.info": "Mbi", "navigation_bar.keyboard_shortcuts": "Taste përkatës", "navigation_bar.lists": "Lista", "navigation_bar.logout": "Dalje", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", "navigation_bar.security": "Siguri", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Që të përdorni këtë burim, lypset të bëni hyrjen.", "notification.admin.report": "{name} raportoi {target}", "notification.admin.sign_up": "{name} u regjistrua", "notification.favourite": "{name} pëlqeu mesazhin tuaj", @@ -404,6 +418,8 @@ "privacy.public.short": "Publik", "privacy.unlisted.long": "I dukshëm për të tërë, por lënë jashtë nga veçoritë e zbulimit", "privacy.unlisted.short": "Jo në lista", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Rifreskoje", "regeneration_indicator.label": "Po ngarkohet…", "regeneration_indicator.sublabel": "Prurja juaj vetjake po përgatitet!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Kërkimi i mesazheve sipas lëndës së tyre s’është i aktivizuar në këtë shërbyes Mastodon.", "search_results.title": "Kërkoni për {q}", "search_results.total": "{count, number} {count, plural, one {përfundim} other {përfundime}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Persona që përdorin këtë shërbyes gjatë 30 ditëve të fundit (Përdorues Mujorë Aktivë)", + "server_banner.active_users": "përdorues aktivë", + "server_banner.administered_by": "Administruar nga:", + "server_banner.introduction": "{domain} është pjesë e rrjetit shoqëror të decentralizuar të ngritur mbi {mastodon}.", + "server_banner.learn_more": "Mësoni më tepër", + "server_banner.server_stats": "Statistika shërbyesi:", "sign_in_banner.create_account": "Krijoni llogari", "sign_in_banner.sign_in": "Hyni", "sign_in_banner.text": "Që të ndiqni profile ose hashtag-ë, të pëlqeni, të ndani me të tjerë dhe të përgjigjeni në postime, apo të ndërveproni me llogarinë tuaj nga një shërbyes tjetër, bëni hyrjen.", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index f10cdf04e1..f9388d9ba2 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Prikaži odgovore", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Javno", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Neizlistano", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 348a80c2b6..4c235b5843 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Означи као прочитано", "conversation.open": "Прикажи преписку", "conversation.with": "Са {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Са знаних здружених инстанци", "directory.local": "Само са {domain}", "directory.new_arrivals": "Новопридошли", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Прикажи одговоре", "home.hide_announcements": "Сакриј најаве", "home.show_announcements": "Пријажи најаве", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# дан} other {# дана}}", "intervals.full.hours": "{number, plural, one {# сат} other {# сати}}", "intervals.full.minutes": "{number, plural, one {# минут} other {# минута}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Јавно", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Неизлистано", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Освежи", "regeneration_indicator.label": "Учитавање…", "regeneration_indicator.sublabel": "Ваша почетна страница се припрема!", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 0cfb77a025..29e6b0e712 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Markera som läst", "conversation.open": "Visa konversation", "conversation.with": "Med {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Från känt servernätverk", "directory.local": "Endast från {domain}", "directory.new_arrivals": "Nyanlända", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Visa svar", "home.hide_announcements": "Dölj notiser", "home.show_announcements": "Visa notiser", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# timme} other {# timmar}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuter}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Publik", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Olistad", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Läs om", "regeneration_indicator.label": "Laddar…", "regeneration_indicator.sublabel": "Ditt hemmaflöde förbereds!", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 757f2cbd57..e53d3a118c 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 39eab54dfe..032d6030fe 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "படிக்கபட்டதாகக் குறி", "conversation.open": "உரையாடலைக் காட்டு", "conversation.with": "{names} உடன்", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "அறியப்பட்ட ஃபெடிவெர்சிலிருந்து", "directory.local": "{domain} களத்திலிருந்து மட்டும்", "directory.new_arrivals": "புதிய வரவு", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "மறுமொழிகளைக் காண்பி", "home.hide_announcements": "அறிவிப்புகளை மறை", "home.show_announcements": "அறிவிப்புகளைக் காட்டு", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# நாள்} other {# நாட்கள்}}", "intervals.full.hours": "{number, plural, one {# மணிநேரம்} other {# மணிநேரங்கள்}}", "intervals.full.minutes": "{number, plural, one {# நிமிடம்} other {# நிமிடங்கள்}}", @@ -404,6 +418,8 @@ "privacy.public.short": "பொது", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "பட்டியலிடப்படாத", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "புதுப்பி", "regeneration_indicator.label": "சுமையேற்றம்…", "regeneration_indicator.sublabel": "உங்கள் வீட்டு ஊட்டம் தயார் செய்யப்படுகிறது!", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 7b4f0602f1..6460242d6f 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index c13d3ed8ee..8cde3cec72 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "ప్రత్యుత్తరాలను చూపించు", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "ప్రజా", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "జాబితా చేయబడనిది", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "లోడ్ అవుతోంది…", "regeneration_indicator.sublabel": "మీ హోమ్ ఫీడ్ సిద్ధమవుతోంది!", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index cddbac2614..849f74a0aa 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "ทำเครื่องหมายว่าอ่านแล้ว", "conversation.open": "ดูการสนทนา", "conversation.with": "กับ {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "จากจักรวาลสหพันธ์ที่รู้จัก", "directory.local": "จาก {domain} เท่านั้น", "directory.new_arrivals": "มาใหม่", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "แสดงการตอบกลับ", "home.hide_announcements": "ซ่อนประกาศ", "home.show_announcements": "แสดงประกาศ", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, other {# วัน}}", "intervals.full.hours": "{number, plural, other {# ชั่วโมง}}", "intervals.full.minutes": "{number, plural, other {# นาที}}", @@ -404,6 +418,8 @@ "privacy.public.short": "สาธารณะ", "privacy.unlisted.long": "ปรากฏแก่ทั้งหมด แต่เลือกไม่รับคุณลักษณะการค้นพบ", "privacy.unlisted.short": "ไม่อยู่ในรายการ", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "รีเฟรช", "regeneration_indicator.label": "กำลังโหลด…", "regeneration_indicator.sublabel": "กำลังเตรียมฟีดหน้าแรกของคุณ!", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 55c82cbb86..e205403408 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Kapat", "bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.", "bundle_modal_error.retry": "Tekrar deneyin", - "column.about": "About", + "column.about": "Hakkında", "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İmleri", "column.community": "Yerel zaman tüneli", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Okundu olarak işaretle", "conversation.open": "Sohbeti görüntüle", "conversation.with": "{names} ile", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Bilinen fediverse'lerden", "directory.local": "Yalnızca {domain} adresinden", "directory.new_arrivals": "Yeni gelenler", @@ -222,14 +224,14 @@ "follow_request.reject": "Reddet", "follow_requests.unlocked_explanation": "Hesabınız kilitli olmasa bile, {domain} personeli bu hesaplardan gelen takip isteklerini gözden geçirmek isteyebileceğinizi düşündü.", "generic.saved": "Kaydedildi", - "getting_started.directory": "Directory", + "getting_started.directory": "Dizin", "getting_started.documentation": "Belgeler", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon özgür ve açık kaynak bir yazılımdır. {repository} deposunda kaynak kodunu görebilir, katkı verebilir veya sorunları bildirebilirsiniz.", "getting_started.heading": "Başlarken", "getting_started.invite": "İnsanları davet et", "getting_started.privacy_policy": "Gizlilik Politikası", "getting_started.security": "Hesap ayarları", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Mastodon Hakkında", "hashtag.column_header.tag_mode.all": "ve {additional}", "hashtag.column_header.tag_mode.any": "ya da {additional}", "hashtag.column_header.tag_mode.none": "{additional} olmadan", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Yanıtları göster", "home.hide_announcements": "Duyuruları gizle", "home.show_announcements": "Duyuruları göster", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# gün} other {# gün}}", "intervals.full.hours": "{number, plural, one {# saat} other {# saat}}", "intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Süre", "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?", "mute_modal.indefinite": "Belirsiz", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Hakkında", + "navigation_bar.apps": "Uygulamayı indir", "navigation_bar.blocks": "Engellenen kullanıcılar", "navigation_bar.bookmarks": "Yer İmleri", "navigation_bar.community_timeline": "Yerel Zaman Tüneli", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Sessize alınmış kelimeler", "navigation_bar.follow_requests": "Takip istekleri", "navigation_bar.follows_and_followers": "Takip edilenler ve takipçiler", - "navigation_bar.info": "About", + "navigation_bar.info": "Hakkında", "navigation_bar.keyboard_shortcuts": "Klavye kısayolları", "navigation_bar.lists": "Listeler", "navigation_bar.logout": "Oturumu kapat", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", "navigation_bar.security": "Güvenlik", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Bu kaynağa erişmek için oturum açmanız gerekir.", "notification.admin.report": "{name}, {target} kişisini bildirdi", "notification.admin.sign_up": "{name} kaydoldu", "notification.favourite": "{name} gönderini favorilerine ekledi", @@ -404,6 +418,8 @@ "privacy.public.short": "Herkese açık", "privacy.unlisted.long": "Keşfet harici herkese açık", "privacy.unlisted.short": "Listelenmemiş", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Yenile", "regeneration_indicator.label": "Yükleniyor…", "regeneration_indicator.sublabel": "Ana akışın hazırlanıyor!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Bu Mastodon sunucusunda gönderi içeriğine göre arama etkin değil.", "search_results.title": "{q} araması", "search_results.total": "{count, number} {count, plural, one {sonuç} other {sonuç}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Bu sunucuyu son 30 günde kullanan insanlar (Aylık Etkin Kullanıcılar)", + "server_banner.active_users": "etkin kullanıcılar", + "server_banner.administered_by": "Yönetici:", + "server_banner.introduction": "{domain}, {mastodon} destekli ademi merkeziyetçi sosyal ağın bir parçasıdır.", + "server_banner.learn_more": "Daha fazlasını öğrenin", + "server_banner.server_stats": "Sunucu istatistikleri:", "sign_in_banner.create_account": "Hesap oluştur", "sign_in_banner.sign_in": "Giriş yap", "sign_in_banner.text": "Profilleri veya etiketleri izlemek, gönderileri beğenmek, paylaşmak ve yanıtlamak için veya başka bir sunucunuzdaki hesabınızla etkileşmek için giriş yapın.", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index bc9a8c2dea..5aaad43d44 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Яңарту", "regeneration_indicator.label": "Йөкләү...", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 757f2cbd57..e53d3a118c 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 4c893ade28..015a1c7052 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Закрити", "bundle_modal_error.message": "Щось пішло не так під час завантаження цього компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", - "column.about": "About", + "column.about": "Про застосунок", "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", "column.community": "Локальна стрічка", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Позначити як прочитане", "conversation.open": "Переглянути бесіду", "conversation.with": "З {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "З відомого федесвіту", "directory.local": "Лише з домену {domain}", "directory.new_arrivals": "Нові надходження", @@ -224,12 +226,12 @@ "generic.saved": "Збережено", "getting_started.directory": "Каталог", "getting_started.documentation": "Документація", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon — це вільне програмне забезпечення з відкритим кодом. Ви можете переглянути код, внести зміни або повідомити про помилки на {repository}.", "getting_started.heading": "Розпочати", "getting_started.invite": "Запросити людей", "getting_started.privacy_policy": "Політика конфіденційності", "getting_started.security": "Налаштування облікового запису", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Про Mastodon", "hashtag.column_header.tag_mode.all": "та {additional}", "hashtag.column_header.tag_mode.any": "або {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Показувати відповіді", "home.hide_announcements": "Приховати оголошення", "home.show_announcements": "Показати оголошення", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# день} few {# дні} other {# днів}}", "intervals.full.hours": "{number, plural, one {# година} few {# години} other {# годин}}", "intervals.full.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "Тривалість", "mute_modal.hide_notifications": "Сховати сповіщення від користувача?", "mute_modal.indefinite": "Не визначено", - "navigation_bar.about": "About", + "navigation_bar.about": "Про програму", "navigation_bar.apps": "Завантажити застосунок", "navigation_bar.blocks": "Заблоковані користувачі", "navigation_bar.bookmarks": "Закладки", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", "navigation_bar.security": "Безпека", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Для доступу до цього ресурсу вам потрібно увійти.", "notification.admin.report": "Скарга від {name} на {target}", "notification.admin.sign_up": "{name} приєдналися", "notification.favourite": "{name} вподобали ваш допис", @@ -404,6 +418,8 @@ "privacy.public.short": "Публічно", "privacy.unlisted.long": "Видимий для всіх, але не через можливості виявлення", "privacy.unlisted.short": "Прихований", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Оновити", "regeneration_indicator.label": "Завантаження…", "regeneration_indicator.sublabel": "Хвилинку, ми готуємо вашу стрічку!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Пошук дописів за вмістом недоступний на даному сервері Mastodon.", "search_results.title": "Шукати {q}", "search_results.total": "{count, number} {count, plural, one {результат} few {результати} many {результатів} other {результатів}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Люди, які використовують цей сервер протягом останніх 30 днів (Щомісячні Активні Користувачі)", + "server_banner.active_users": "активні користувачі", + "server_banner.administered_by": "Адміністратор:", + "server_banner.introduction": "{domain} є частиною децентралізованої соціальної мережі від {mastodon}.", + "server_banner.learn_more": "Дізнайтесь більше", + "server_banner.server_stats": "Статистика сервера:", "sign_in_banner.create_account": "Створити обліковий запис", "sign_in_banner.sign_in": "Увійти", "sign_in_banner.text": "Увійдіть, щоб слідкувати за профілями або хештеґами, вподобаними, ділитися і відповідати на повідомлення або взаємодіяти з вашого облікового запису на іншому сервері.", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 57e995c7c1..5e681e7f9a 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "بطور پڑھا ہوا دکھائیں", "conversation.open": "گفتگو دیکھیں", "conversation.with": "{names} کے ساتھ", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "معروف فیڈی ورس سے", "directory.local": "صرف {domain} سے", "directory.new_arrivals": "نئے آنے والے", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "جوابات دکھائیں", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# روز} other {# روز}}", "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -404,6 +418,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 807f5feab4..85e64fa600 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Đóng", "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_modal_error.retry": "Thử lại", - "column.about": "About", + "column.about": "Giới thiệu", "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", "column.community": "Máy chủ của bạn", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Đánh dấu là đã đọc", "conversation.open": "Xem toàn bộ tin nhắn", "conversation.with": "Với {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "Từ mạng liên hợp", "directory.local": "Từ {domain}", "directory.new_arrivals": "Mới tham gia", @@ -222,14 +224,14 @@ "follow_request.reject": "Từ chối", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", "generic.saved": "Đã lưu", - "getting_started.directory": "Directory", + "getting_started.directory": "Danh bạ", "getting_started.documentation": "Tài liệu", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon là phần mềm tự do nguồn mở. Bạn có thể xem, đóng góp mã nguồn hoặc báo lỗi tại {repository}.", "getting_started.heading": "Quản lý", "getting_started.invite": "Mời bạn bè", "getting_started.privacy_policy": "Chính sách bảo mật", "getting_started.security": "Bảo mật", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Về Mastodon", "hashtag.column_header.tag_mode.all": "và {additional}", "hashtag.column_header.tag_mode.any": "hoặc {additional}", "hashtag.column_header.tag_mode.none": "mà không {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Hiện những tút dạng trả lời", "home.hide_announcements": "Ẩn thông báo máy chủ", "home.show_announcements": "Hiện thông báo máy chủ", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, other {# ngày}}", "intervals.full.hours": "{number, plural, other {# giờ}}", "intervals.full.minutes": "{number, plural, other {# phút}}", @@ -311,8 +325,8 @@ "mute_modal.duration": "Thời hạn", "mute_modal.hide_notifications": "Ẩn thông báo từ người này?", "mute_modal.indefinite": "Vĩnh viễn", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Giới thiệu", + "navigation_bar.apps": "Tải ứng dụng", "navigation_bar.blocks": "Người đã chặn", "navigation_bar.bookmarks": "Đã lưu", "navigation_bar.community_timeline": "Cộng đồng", @@ -326,7 +340,7 @@ "navigation_bar.filters": "Bộ lọc từ ngữ", "navigation_bar.follow_requests": "Yêu cầu theo dõi", "navigation_bar.follows_and_followers": "Quan hệ", - "navigation_bar.info": "About", + "navigation_bar.info": "Giới thiệu", "navigation_bar.keyboard_shortcuts": "Phím tắt", "navigation_bar.lists": "Danh sách", "navigation_bar.logout": "Đăng xuất", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "Cài đặt", "navigation_bar.public_timeline": "Thế giới", "navigation_bar.security": "Bảo mật", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Bạn cần đăng nhập để truy cập mục này.", "notification.admin.report": "{name} đã báo cáo {target}", "notification.admin.sign_up": "{name} đăng ký máy chủ của bạn", "notification.favourite": "{name} thích tút của bạn", @@ -404,6 +418,8 @@ "privacy.public.short": "Công khai", "privacy.unlisted.long": "Công khai nhưng không hiện trên bảng tin", "privacy.unlisted.short": "Hạn chế", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Làm mới", "regeneration_indicator.label": "Đang tải…", "regeneration_indicator.sublabel": "Bảng tin của bạn đang được cập nhật!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "Máy chủ của bạn không bật tính năng tìm kiếm tút.", "search_results.title": "Tìm kiếm {q}", "search_results.total": "{count, number} {count, plural, one {kết quả} other {kết quả}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Những người dùng máy chủ này trong 30 ngày qua (MAU)", + "server_banner.active_users": "người dùng hoạt động", + "server_banner.administered_by": "Quản trị bởi:", + "server_banner.introduction": "{domain} là một phần của mạng xã hội liên hợp {mastodon}.", + "server_banner.learn_more": "Tìm hiểu", + "server_banner.server_stats": "Thống kê:", "sign_in_banner.create_account": "Tạo tài khoản", "sign_in_banner.sign_in": "Đăng nhập", "sign_in_banner.text": "Đăng nhập để theo dõi hồ sơ hoặc hashtag; thích, chia sẻ và trả lời tút hoặc tương tác bằng tài khoản của bạn trên một máy chủ khác.", @@ -532,7 +548,7 @@ "status.show_more": "Xem thêm", "status.show_more_all": "Hiển thị tất cả", "status.show_original": "Bản gốc", - "status.show_thread": "Xem chuỗi tút này", + "status.show_thread": "Trích nguyên văn", "status.translate": "Dịch", "status.translated_from": "Dịch từ {lang}", "status.uncached_media_warning": "Uncached", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 5d1b6f5a7e..3f740cf113 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "ⴰⴽⴷ {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "From known fediverse", "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# ⵡⴰⵙⵙ} other {# ⵡⵓⵙⵙⴰⵏ}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# ⵜⵓⵙⴷⵉⴷⵜ} other {# ⵜⵓⵙⴷⵉⴷⵉⵏ}}", @@ -404,6 +418,8 @@ "privacy.public.short": "ⵜⴰⴳⴷⵓⴷⴰⵏⵜ", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "Refresh", "regeneration_indicator.label": "ⴰⵣⴷⴰⵎ…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 56b85fb0fd..550317fa35 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", - "column.about": "About", + "column.about": "关于", "column.blocks": "已屏蔽的用户", "column.bookmarks": "书签", "column.community": "本站时间轴", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "标记为已读", "conversation.open": "查看对话", "conversation.with": "与 {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "来自已知联邦宇宙", "directory.local": "仅来自 {domain}", "directory.new_arrivals": "新来者", @@ -222,14 +224,14 @@ "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", "generic.saved": "已保存", - "getting_started.directory": "Directory", + "getting_started.directory": "目录", "getting_started.documentation": "文档", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon 是免费的开源软件。 你可以在 {repository} 查看源代码、贡献或报告问题。", "getting_started.heading": "开始使用", "getting_started.invite": "邀请用户", "getting_started.privacy_policy": "隐私政策", "getting_started.security": "账号设置", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "关于 Mastodon", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "显示回复", "home.hide_announcements": "隐藏公告", "home.show_announcements": "显示公告", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number} 天", "intervals.full.hours": "{number} 小时", "intervals.full.minutes": "{number} 分钟", @@ -311,8 +325,8 @@ "mute_modal.duration": "持续时长", "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "关于", + "navigation_bar.apps": "获取应用程序", "navigation_bar.blocks": "已屏蔽的用户", "navigation_bar.bookmarks": "书签", "navigation_bar.community_timeline": "本站时间轴", @@ -326,7 +340,7 @@ "navigation_bar.filters": "隐藏关键词", "navigation_bar.follow_requests": "关注请求", "navigation_bar.follows_and_followers": "关注管理", - "navigation_bar.info": "About", + "navigation_bar.info": "关于", "navigation_bar.keyboard_shortcuts": "快捷键列表", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", "navigation_bar.security": "安全", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "您需要登录才能访问此资源。", "notification.admin.report": "{name} 已报告 {target}", "notification.admin.sign_up": "{name} 注册了", "notification.favourite": "{name} 喜欢了你的嘟文", @@ -404,6 +418,8 @@ "privacy.public.short": "公开", "privacy.unlisted.long": "对所有人可见,但不加入探索功能", "privacy.unlisted.short": "不公开", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "刷新", "regeneration_indicator.label": "加载中……", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", @@ -476,15 +492,15 @@ "search_results.statuses_fts_disabled": "此 Mastodon 服务器未启用帖子内容搜索。", "search_results.title": "搜索 {q}", "search_results.total": "共 {count, number} 个结果", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "过去 30 天内使用此服务器的人(每月活跃用户)", + "server_banner.active_users": "活跃用户", + "server_banner.administered_by": "本站管理员:", + "server_banner.introduction": "{domain} 是由 {mastodon} 驱动的去中心化社交网络的一部分。", + "server_banner.learn_more": "了解更多", + "server_banner.server_stats": "服务器统计数据:", "sign_in_banner.create_account": "创建账户", "sign_in_banner.sign_in": "登录", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "sign_in_banner.text": "登录以关注个人资料或主题标签、喜欢、分享和嘟文,或与在不同服务器上的帐号进行互动。", "status.admin_account": "打开 @{name} 的管理界面", "status.admin_status": "打开此帖的管理界面", "status.block": "屏蔽 @{name}", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 136272c5b0..3be3058a7a 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -145,6 +145,8 @@ "conversation.mark_as_read": "標為已讀", "conversation.open": "檢視對話", "conversation.with": "與 {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "來自已知的聯盟網絡", "directory.local": "僅來自 {domain}", "directory.new_arrivals": "新內容", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "顯示回應文章", "home.hide_announcements": "隱藏公告", "home.show_announcements": "顯示公告", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# 天} other {# 天}}", "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}", "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}", @@ -404,6 +418,8 @@ "privacy.public.short": "公共", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "公開", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "重新整理", "regeneration_indicator.label": "載入中……", "regeneration_indicator.sublabel": "你的主頁時間軸正在準備中!", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index e2c848f2b1..e06c411d22 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "載入此元件時發生錯誤。", "bundle_modal_error.retry": "重試", - "column.about": "About", + "column.about": "關於", "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", "column.community": "本站時間軸", @@ -145,6 +145,8 @@ "conversation.mark_as_read": "標記為已讀", "conversation.open": "檢視對話", "conversation.with": "與 {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", "directory.federated": "來自已知聯邦宇宙", "directory.local": "僅來自 {domain} 網域", "directory.new_arrivals": "新人", @@ -224,12 +226,12 @@ "generic.saved": "已儲存", "getting_started.directory": "目錄", "getting_started.documentation": "文件", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon 是自由的開源軟體。您可以於 {repository} 檢查其程式碼、貢獻或是回報問題。", "getting_started.heading": "開始使用", "getting_started.invite": "邀請使用者", "getting_started.privacy_policy": "隱私權政策", "getting_started.security": "帳號安全性設定", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "關於 Mastodon", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而無需 {additional}", @@ -246,6 +248,18 @@ "home.column_settings.show_replies": "顯示回覆", "home.hide_announcements": "隱藏公告", "home.show_announcements": "顯示公告", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# 天} other {# 天}}", "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}", "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}", @@ -311,7 +325,7 @@ "mute_modal.duration": "持續時間", "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", - "navigation_bar.about": "About", + "navigation_bar.about": "關於", "navigation_bar.apps": "取得應用程式", "navigation_bar.blocks": "封鎖使用者", "navigation_bar.bookmarks": "書籤", @@ -336,7 +350,7 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", "navigation_bar.security": "安全性", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。", "notification.admin.report": "{name} 檢舉了 {target}", "notification.admin.sign_up": "{name} 已經註冊", "notification.favourite": "{name} 把您的嘟文加入了最愛", @@ -404,6 +418,8 @@ "privacy.public.short": "公開", "privacy.unlisted.long": "對所有人可見,但選擇退出探索功能", "privacy.unlisted.short": "不公開", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", "refresh": "重新整理", "regeneration_indicator.label": "載入中…", "regeneration_indicator.sublabel": "您的首頁時間軸正在準備中!", @@ -476,12 +492,12 @@ "search_results.statuses_fts_disabled": "「依內容搜尋嘟文」未在此 Mastodon 伺服器啟用。", "search_results.title": "搜尋:{q}", "search_results.total": "{count, number} 項結果", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "最近三十日內使用此伺服器的人 (月活躍使用者)", + "server_banner.active_users": "活躍使用者", + "server_banner.administered_by": "管理者:", + "server_banner.introduction": "{domain} 是由 {mastodon} 提供之去中心化社群網路一部分。", + "server_banner.learn_more": "了解更多", + "server_banner.server_stats": "伺服器統計:", "sign_in_banner.create_account": "新增帳號", "sign_in_banner.sign_in": "登入", "sign_in_banner.text": "登入以追蹤個人檔案、主題標籤、最愛,分享和回覆嘟文,或以您其他伺服器之帳號進行互動:", diff --git a/config/locales/af.yml b/config/locales/af.yml index 082c1e3317..cb8c4cf18f 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -2,12 +2,8 @@ af: about: contact_unavailable: NVT - continue_to_web: Gaan voort na web toepassing documentation: Dokumentasie - federation_hint_html: Met 'n rekening op %{instance} sal jy in staat wees om mense op enige Mastodon en federasie bediener te volg. - get_apps: Probeer 'n mobiele toepassing hosted_on: Mastodon gehuisves op %{domain} - tagline: Gedesentraliseerde sosiale netwerk admin: domain_blocks: existing_domain_block: Jy het alreeds strenger perke ingelê op %{name}. diff --git a/config/locales/ar.yml b/config/locales/ar.yml index ad19e8a7f4..bd17cbea20 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -3,31 +3,19 @@ ar: about: about_mastodon_html: 'شبكة التواصل الإجتماعية المستقبَليّة: مِن دون إعلانات ، غير خاضعة لرقابة الشركات ، تصميم أخلاقي ولامركزية! بياناتكم مِلك لكم مع ماستدون!' about_this: عن مثيل الخادم هذا - active_count_after: نشط - active_footnote: مستخدم نشيط شهريا (MAU) administered_by: 'يُديره:' api: واجهة برمجة التطبيقات apps: تطبيقات الأجهزة المحمولة - apps_platforms: استخدم ماستدون على iOS وأندرويد وأنظمة أخرى - browse_public_posts: تصفح تيارًا مباشرًا مِن منشورات عامة على ماستدون contact: للتواصل معنا contact_missing: لم يتم تعيينه contact_unavailable: غير متوفر - continue_to_web: المتابعة إلى تطبيق الويب documentation: الدليل - federation_hint_html: بواسطة حساب في %{instance} ستتمكن من تتبع أناس في أي خادم ماستدون وأكثر. - get_apps: جرّب تطبيقا على الموبايل hosted_on: ماستدون مُستضاف على %{domain} instance_actor_flash: | هذا الحساب هو ممثل افتراضي يستخدم لتمثيل الخادم نفسه وليس أي مستخدم فردي. يستخدم لأغراض الاتحاد ولا ينبغي حظره إلا إذا كنت ترغب في حظر مثيل الخادم بأكمله، في هذه الحالة يجب عليك استخدام أداة حظر النطاق. - learn_more: تعلم المزيد - logged_in_as_html: أنت متصل حالياً كـ %{username}. - logout_before_registering: أنت متصل سلفًا. rules: قوانين الخادم rules_html: 'فيما يلي ملخص للقوانين التي تحتاج إلى اتباعها إذا كنت تريد أن يكون لديك حساب على هذا الخادم من ماستدون:' - see_whats_happening: اطّلع على ما يجري - server_stats: 'إحصائيات الخادم:' source_code: الشفرة المصدرية status_count_after: few: منشورات @@ -645,9 +633,6 @@ ar: closed_message: desc_html: يتم عرضه على الصفحة الرئيسية عندما يتم غلق تسجيل الحسابات الجديدة. يمكنكم إستخدام علامات الأيتش تي أم أل HTML title: رسالة التسجيلات المقفلة - deletion: - desc_html: السماح لأي مستخدم إغلاق حسابه - title: السماح بحذف الحسابات require_invite_text: desc_html: عندما تتطلب التسجيلات الموافقة اليدوية، جعل إدخال نص لسؤال "لماذا تريد أن تنضم؟" إلزاميا بدلاً من اختياري title: الطلب من المستخدمين الجدد إدخال سبب للتسجيل @@ -814,10 +799,7 @@ ar: warning: كن حذرا مع هذه البيانات. لا تقم أبدا بمشاركتها مع الآخَرين! your_token: رمز نفاذك auth: - apply_for_account: اطلب دعوة change_password: الكلمة السرية - checkbox_agreement_html: أوافق على قواعد الخادم و شروط الخدمة - checkbox_agreement_without_rules_html: أوافق على شروط الخدمة delete_account: حذف الحساب delete_account_html: إن كنت ترغب في حذف حسابك يُمكنك المواصلة هنا. سوف يُطلَبُ منك التأكيد قبل الحذف. description: @@ -856,7 +838,6 @@ ar: pending: إن طلبك قيد المراجعة من قبل فريقنا. قد يستغرق هذا بعض الوقت. سوف تتلقى بريدا إلكترونيا إذا تمت الموافقة على طلبك. redirecting_to: حسابك غير نشط لأنه تم تحويله حاليا إلى %{acct}. too_fast: تم إرسال النموذج بسرعة كبيرة، حاول مرة أخرى. - trouble_logging_in: هل صادفتكم مشكلة في الولوج؟ use_security_key: استخدام مفتاح الأمان authorize_follow: already_following: أنت تتابع بالفعل هذا الحساب @@ -1490,22 +1471,11 @@ ar: suspend: الحساب مُعلَّق welcome: edit_profile_action: تهيئة الملف التعريفي - edit_profile_step: يُمكنك·كي تخصيص صفحتك التعريفية عن طريق تحميل صورة رمزية ورأسية و بتعديل اسمك·كي العلني وأكثر. و إن أردت·تي معاينة المتابِعين و المتابعات الجُدد قبيل السماح لهم·ن بمتابَعتك فيمكنك·كي تأمين حسابك·كي. explanation: ها هي بعض النصائح قبل بداية الاستخدام final_action: اشرَع في النشر - final_step: |- - يمكنك الشروع في النشر في الحين! حتى و إن لم كنت لا تمتلك متابِعين بعدُ، يمكن للآخرين الإطلاع على منشوراتك الموجهة للجمهور على الخيط العام المحلي أو إن قمت باستخدام وسوم. - ابدأ بتقديم نفسك باستعمال وسم #introductions. full_handle: عنوانك الكامل full_handle_hint: هذا هو ما يجب تقديمه لأصدقائك قصد أن يكون بإمكانهم متابَعتك أو مُراسَلتك حتى و إن كانت حساباتهم على خوادم أخرى. - review_preferences_action: تعديل التفضيلات - review_preferences_step: تأكد من ضبط تفضيلاتك ، مثلًا أية رسائل بريد إلكترونية ترغب في تلقيها أو أي مستوى للخصوصية ترغب في اسناده افتراضيًا لمنشوراتك. إن كانت الحركة لا تُعكّر مزاجك فيمكنك إختيار تفعيل التشغيل التلقائي لوسائط GIF المتحركة. subject: أهلًا بك على ماستدون - tip_federated_timeline: الخيط الزمني الفديرالي هو بمثابة شبه نظرة شاملة على شبكة ماستدون. غير أنه لا يشمل إلا على الأشخاص المتابَعين مِن طرف جيرانك و جاراتك، لذا فهذا الخيط لا يعكس كافة الشبكة برُمّتها. - tip_following: أنت تتبع تلقائيا مديري و مديرات الخادم. للعثور على أشخاص مميزين أو قد تهمك حساباتهم بإمكانك الإطلاع على الخيوط العامة المحلية و كذا الفدرالية. - tip_local_timeline: الخيط العام المحلي هو بمثابة نظرة سريعة على الأشخاص المتواجدين على %{instance} يمكن اعتبارهم كجيرانك وجاراتك الأقرب إليك! - tip_mobile_webapp: إن كان متصفحك على جهازك المحمول يُتيح ميزة إضافة Mastodon على شاشتك الرئيسية ، فيمكنك تلقي الإشعارات المدفوعة. إنه يعمل كتطبيق أصلي بحت! - tips: نصائح title: أهلاً بك، %{name}! users: follow_limit_reached: لا يمكنك متابعة أكثر مِن %{limit} أشخاص diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 4ad5289dea..397defa42d 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -6,17 +6,12 @@ ast: administered_by: 'Alministráu por:' api: API apps: Aplicaciones pa móviles - apps_platforms: Usa Mastodon dende Android, iOS y otres plataformes contact: Contautu contact_missing: Nun s'afitó contact_unavailable: N/D documentation: Documentación - federation_hint_html: Con una cuenta en %{instance} vas ser a siguir a persones de cualesquier sirvidor de Mastodon y facer más coses. - get_apps: En preseos móviles hosted_on: Mastodon ta agospiáu en %{domain} - learn_more: Saber más privacy_policy: Política de privacidá - server_stats: 'Estadístiques del sirvidor:' source_code: Códigu fonte status_count_after: one: artículu @@ -165,8 +160,6 @@ ast: warning: Ten munchu curiáu con estos datos, ¡enxamás nun los compartas con naide! auth: change_password: Contraseña - checkbox_agreement_html: Acepto les regles del sirvidor y los términos del serviciu - checkbox_agreement_without_rules_html: Acepto los términos del serviciu delete_account: Desaniciu de la cuenta delete_account_html: Si deseyes desaniciar la to cuenta, pues siguir equí. Va pidísete la confirmación. description: @@ -182,7 +175,6 @@ ast: saml: SAML register: Rexistrase security: Seguranza - trouble_logging_in: "¿Tienes problemes col aniciu de sesión?" authorize_follow: already_following: Yá tas siguiendo a esta cuenta already_requested: Yá unviesti una solicitú de siguimientu a esa cuenta @@ -461,8 +453,6 @@ ast: sensitive_content: Conteníu sensible tags: does_not_match_previous_name: nun concasa col nome anterior - terms: - title: 'Política de pirvacidá de: %{instance}' themes: contrast: Contraste altu default: Mastodon @@ -487,7 +477,6 @@ ast: welcome: full_handle_hint: Esto ye lo que-yos diríes a los collacios pa que puean unviate mensaxes o siguite dende otra instancia. subject: Afáyate en Mastodon - tips: Conseyos users: follow_limit_reached: Nun pues siguir a más de %{limit} persones invalid_otp_token: El códigu nun ye válidu diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 03b45dd438..71ddbeb1c6 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -3,23 +3,14 @@ bg: about: about_mastodon_html: Mastodon е безплатен сървър с отворен код за социални мрежи. Като децентрализирана алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне Mastodon и лесно да вземе участие в социалната мрежа. about_this: За тази инстанция - active_count_after: активно - active_footnote: Месечни активни потребители (МАП) administered_by: 'Администрирано от:' api: API apps: Мобилни приложения - apps_platforms: Използвайте Mastodon от iOS, Android и други платформи - browse_public_posts: Разгледайте поток от публични публикации на живо в Mastodon contact: За контакти contact_missing: Не е зададено contact_unavailable: Не е приложимо documentation: Документация - federation_hint_html: С акаунт в %{instance} ще можете да последвате хората от всеки сървър на Mastodon и отвъд. - get_apps: Опитайте мобилно приложение hosted_on: Mastodon е хостван на %{domain} - learn_more: Още информация - see_whats_happening: Вижте какво се случва - server_stats: 'Сървърна статистика:' source_code: Програмен код status_count_after: one: състояние diff --git a/config/locales/bn.yml b/config/locales/bn.yml index 92040135ef..2c45084937 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -3,24 +3,15 @@ bn: about: about_mastodon_html: মাস্টাডন উন্মুক্ত ইন্টারনেটজালের নিয়ম এবং স্বাধীন ও মুক্ত উৎসের সফটওয়্যারের ভিত্তিতে তৈরী একটি সামাজিক যোগাযোগ মাধ্যম। এটি ইমেইলের মত বিকেন্দ্রীভূত। about_this: কি - active_count_after: চালু - active_footnote: মাসিক সক্রিয় ব্যবহারকারী administered_by: 'পরিচালনা করছেন:' api: সফটওয়্যার তৈরীর নিয়ম (API) apps: মোবাইল অ্যাপ - apps_platforms: মাস্টাডন আইওএস, এন্ড্রোইড বা অন্য মাধ্যমে ব্যবহার করুন - browse_public_posts: মাস্টাডনে নতুন প্রকাশ্য লেখাগুলো সরাসরি দেখুন contact: যোগাযোগ contact_missing: নেই contact_unavailable: প্রযোজ্য নয় documentation: ব্যবহারবিলি - federation_hint_html: "%{instance}তে একটা নিবন্ধন থাকলে আপনি যেকোনো মাস্টাডন বা এধরণের অন্যান্য সার্ভারের মানুষের সাথে যুক্ত হতে পারবেন ।" - get_apps: মোবাইল এপ্প একটা ব্যবহার করতে পারেন hosted_on: এই মাস্টাডনটি আছে %{domain} এ instance_actor_flash: "এই অ্যাকাউন্টটি ভার্চুয়াল এক্টর যা নিজে কোনও সার্ভারের প্রতিনিধিত্ব করতে ব্যবহৃত হয় এবং কোনও পৃথক ব্যবহারকারী নয়। এটি ফেডারেশনের উদ্দেশ্যে ব্যবহৃত হয় এবং আপনি যদি পুরো ইনস্ট্যান্স ব্লক করতে না চান তবে অবরুদ্ধ করা উচিত নয়, সেক্ষেত্রে আপনার ডোমেন ব্লক ব্যবহার করা উচিত। \n" - learn_more: বিস্তারিত জানুন - see_whats_happening: কী কী হচ্ছে দেখুন - server_stats: 'সার্ভারের অবস্থা:' source_code: আসল তৈরীপত্র status_count_after: one: অবস্থা diff --git a/config/locales/br.yml b/config/locales/br.yml index c2461f7732..1813641eab 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -2,14 +2,10 @@ br: about: about_this: Diàr-benn - active_count_after: oberiant api: API apps: Arloadoù pellgomz - apps_platforms: Ober get Mastodoñ àr iOS, Android ha savennoù arall contact: Darempred - learn_more: Gouzout hiroc'h rules: Reolennoù ar servijer - server_stats: 'Stadegoù ar servijer:' source_code: Boneg tarzh status_count_after: few: toud diff --git a/config/locales/ca.yml b/config/locales/ca.yml index a5215b3450..49ef734ad2 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -3,38 +3,25 @@ ca: about: about_mastodon_html: 'La xarxa social del futur: sense anuncis, sense vigilància corporativa, disseny ètic i descentralització. Tingues el control de les teves dades amb Mastodon!' about_this: Quant a - active_count_after: actiu - active_footnote: Usuaris actius mensuals (UAM) administered_by: 'Administrat per:' api: API apps: Aplicacions mòbils - apps_platforms: Utilitza Mastodon des d'iOS, Android i altres plataformes - browse_public_posts: Navega per una transmissió en directe de les publicacions públiques a Mastodon contact: Contacte contact_missing: No configurat contact_unavailable: N/D - continue_to_web: Continua a l'aplicació web documentation: Documentació - federation_hint_html: Amb un compte de %{instance}, podràs seguir persones de qualsevol servidor Mastodon i de molts més. - get_apps: Provar una aplicació mòbil hosted_on: Mastodon allotjat a %{domain} instance_actor_flash: | Aquest compte és un actor virtual usat per representar el servidor i no qualsevol usuari individual. Es fa servir per a propòsits de federació i no s'ha de ser bloquejar si no voleu bloquejar tota la instància. En aquest cas, hauríeu d'utilitzar un bloqueig de domini. - learn_more: Aprèn més - logged_in_as_html: Actualment has iniciat sessió com a %{username}. - logout_before_registering: Ja has iniciat sessió. privacy_policy: Política de Privacitat rules: Normes del servidor rules_html: 'A continuació, es mostra un resum de les normes que has de seguir si vols tenir un compte en aquest servidor de Mastodon:' - see_whats_happening: Mira què està passant - server_stats: 'Estadístiques del servidor:' source_code: Codi font status_count_after: one: publicació other: publicacions status_count_before: Qui ha publicat - tagline: Xarxa social descentralitzada unavailable_content: Servidors moderats unavailable_content_description: domain: Servidor @@ -767,9 +754,6 @@ ca: closed_message: desc_html: Apareix en la primera pàgina quan es tanquen els registres. Pots utilitzar etiquetes HTML title: Missatge de registre tancat - deletion: - desc_html: Permet a qualsevol usuari d'esborrar el seu compte - title: Obre la supressió del compte require_invite_text: desc_html: Quan el registre requereix aprovació manual, fer que sigui obligatori enlloc d'opcions l escriure el text de la solicitud d'invitació "Perquè vols unirte?" title: Requerir als nous usuaris omplir el text de la solicitud d'invitació @@ -1001,10 +985,8 @@ ca: warning: Aneu amb compte amb aquestes dades. No les compartiu mai amb ningú! your_token: El teu identificador d'accés auth: - apply_for_account: Demana una invitació + apply_for_account: Apunta't a la llista d'espera change_password: Contrasenya - checkbox_agreement_html: Accepto les normes del servidor i els termes del servei - checkbox_agreement_without_rules_html: Acepto els termes del servei delete_account: Suprimeix el compte delete_account_html: Si vols suprimir el compte pots fer-ho aquí. Se't demanarà confirmació. description: @@ -1023,6 +1005,7 @@ ca: migrate_account: Mou a un compte diferent migrate_account_html: Si vols redirigir aquest compte a un altre diferent, el pots configurar aquí. or_log_in_with: O inicia sessió amb + privacy_policy_agreement_html: He llegit i estic d'acord amb la política de privacitat providers: cas: CAS saml: SAML @@ -1030,12 +1013,18 @@ ca: registration_closed: "%{instance} no accepta nous membres" resend_confirmation: Torna a enviar el correu de confirmació reset_password: Restableix la contrasenya + rules: + preamble: Aquestes regles estan establertes i aplicades per els moderadors de %{domain}. + title: Algunes regles bàsiques. security: Seguretat set_new_password: Estableix una contrasenya nova setup: email_below_hint_html: Si l’adreça de correu electrònic següent és incorrecta, podeu canviar-la aquí i rebre un nou correu electrònic de confirmació. email_settings_hint_html: El correu electrònic de confirmació es va enviar a %{email}. Si aquesta adreça de correu electrònic no és correcta, la podeu canviar a la configuració del compte. title: Configuració + sign_up: + preamble: Amb un compte en aquest servidor Mastodon, podràs seguir qualsevol altre persona de la xarxa, independentment d'on tingui el seu compte. + title: Anem a configurar-te a %{domain}. status: account_status: Estat del compte confirming: Esperant que es completi la confirmació del correu electrònic. @@ -1044,7 +1033,6 @@ ca: redirecting_to: El teu compte és inactiu perquè actualment està redirigint a %{acct}. view_strikes: Veure accions del passat contra el teu compte too_fast: Formulari enviat massa ràpid, torna a provar-ho. - trouble_logging_in: Problemes per iniciar la sessió? use_security_key: Usa clau de seguretat authorize_follow: already_following: Ja estàs seguint aquest compte @@ -1625,80 +1613,6 @@ ca: too_late: És massa tard per a apel·lar aquesta acció tags: does_not_match_previous_name: no coincideix amb el nom anterior - terms: - body_html: | -

Aquesta pàgina conté els nostres Termes del servei (adaptats de la Bsd.network ToS) i la nostra Política de privadesa. - -

Termes del servei

- -

La nostra intenció és que utilitzis aquest servei per al gaudi personal i la interacció respectuosa i amistosa. A aquest efecte, esperem fomentar un entorn favorable i integrador. - -

Aquest servidor és de propietat privada i obert als usuaris voluntàriament, no un espai públic. S'espera que els usuaris que vulguin unir-se a aquesta comunitat actuïn sense malícia i de bona fe. Fer-ho d'una altra manera pot conduir a l'eliminació de l'usuari del servei, independentment de si viola qualsevol regla que s'esbossi a continuació. - -

Polítiques i normes

- -

La nostra instància està subjecta a un conjunt de normes que regeixen el comportament dels usuaris. Les regles sempre són visibles a la nostra pàgina Quant a. - -

Aquestes normes estan dissenyades per a mantenir un ambient amistós i obert, i per a evitar l'assetjament i la discriminació. Per tant, són un conjunt de directrius, però per necessitat incompletes. Els usuaris que violen l'esperit d'aquestes normes no es tractaran de manera diferent que els usuaris que violen una regla específica. - -

Si us plau, tingues en compte que les nostres normes contenen una secció sobre les millors pràctiques, i els usuaris que repetidament i que malaurat els advertiments ignoren aquestes millors pràctiques poden veure's violant les nostres normes. - -

Els moderadors poden eliminar els comptes que publiquin spam, o si se sospita que un compte és creat només per reservar un nom d'usuari. La violació de les polítiques i les normes també pot portar a l'eliminació de comptes a discreció dels moderadors. - -

Accés a dades

- -

El contingut d'aquest servidor no s'ha d'utilitzar per a l'aprenentatge automàtic o altres propòsits de "recerca" sense el consentiment explícit dels usuaris implicats. - -

El contingut d'aquest servidor més enllà d'aquesta pàgina no s'ha d'arxivar o indexar a l'engròs per mitjans automatitzats per qualsevol usuari o servei. Els usuaris actius poden exportar les seves llistes i publicacions a través de l'exportació proporcionada a la seva pàgina de configuració, o l'API. - -

Política de privadesa

- -

Recollida d'informació

- -

Informació obligatòria del compte: nom d'usuari (sempre públic), adreça de correu electrònic i contrasenya. - -

Informació del compte opcional: nom de visualització, biografia, camps d'informació del perfil, imatge de perfil i imatge de capçalera. El nom de visualització, la biografia, la imatge de perfil i la imatge de capçalera sempre seran públics. - -

Estat i interaccions: Retenim totes les vostres publicacions, inclosos els adjunts, i altres interaccions (com ara els preferits, els segueix i els impulsos). A més del contingut i les persones implicades, també emmagatzemen els codis de temps per a totes les entrades de dades enumerades. Si aquestes interaccions impacten en un altre servidor (per exemple, seguint, impulsant o missatger a un usuari en un servidor diferent), aquest altre servidor rebrà tota la informació requerida. Les publicacions públiques, no llistades i fitxades són públiques. Els teus seguidors només tenen missatges de seguiment, i els missatges directes estan disponibles per a tu i totes les persones esmentades en el missatge. Tingues en compte que, com que no podem controlar altres servidors, això significa que no podem garantir l'estat de privacitat dels teus missatges tan aviat abandonin aquest servidor. - -

Galetes: Utilitzem galetes per mantenir-te registrat i guardar les teves preferències per a futures visites. - -

Altres metadades: No registrem ni emmagatzem la teva adreça IP com a norma general. Es faran excepcions quan busquem activament errors. Una vegada que s'hagi finalitzat la cerca d'errors, les adreces IP recollides s'eliminaran. Retenim el nom de l'aplicació del teu navegador per permetre't revisar les sessions actualment iniciades per motius de seguretat. - -

Ús de la informació

- -

Tota la informació que recopilem de tu pot ser utilitzada de les maneres següents: - -

Per proporcionar la funcionalitat principal d'aquest servidor. Només pots interaccionar amb el contingut d'altres persones i publicar el teu propi contingut quan hagis iniciat la sessió. Per exemple, pots seguir a altres persones per veure les seves publicacions en la teva pròpia línia de temps personalitzada. - -

Per a ajudar a la moderació de la comunitat, quan s'informi d'una publicació o un compte, examinarem la qüestió com a part de les nostres tasques de moderació. - -

L'adreça de correu electrònic que proporcionis es pot utilitzar per enviar-te informació, notificacions sobre altres persones que interaccionen amb el teu contingut o que t'envien missatges, i per respondre a les investigacions, i/o altres peticions o preguntes. - -

Protecció de la informació

- -

Apliquem una varietat de mesures de seguretat per a mantenir la seguretat de la teva informació personal quan entres, presentes o accedeixes a la teva informació personal. Entre altres coses, la teva sessió de navegador, així com el trànsit entre les teves aplicacions i l'API, estan assegurades amb HTTPS, i la teva contrasenya es resumeix mitjançant un algorisme d'un únic sentit. Pots habilitar l'autenticació de doble factor per a un accés més segur al teu compte. - -

Supressió i retenció de la informació

- -

Pots sol·licitar i descarregar un arxiu del teu contingut, incloent-hi les entrades, el contingut gràfic, la imatge del perfil i la imatge de capçalera. - -

En qualsevol moment pots suprimir el teu compte de manera irreversible. - -

Si jutgem que estàs incomplint les nostres normes, pot ser que eliminem de manera irreversible el teu compte en qualsevol moment. - -

Divulgació de la informació

- -

La informació no es revela tret que ho permetis explícitament. L'única excepció és el proveïdor d'aquest servidor, que és un tercer de confiança i inevitable. - -

Contactar o permetre el contacte d'un usuari d'una instància diferent implica el consentiment que les dades necessàries es comparteixen amb el servidor en qüestió. - -

L'autorització d'una aplicació de tercers concedeix accés a la informació en funció de l'abast dels permisos que aprovis. L'aplicació pot accedir a la teva informació de perfil públic, la teva llista següent, els teus seguidors, les teves llistes, tots els teus missatges i els teus preferits. Les aplicacions no poden accedir mai a la teva adreça de correu electrònic o contrasenya. - -

Atribució

- -

This text is free to be adapted and remixed under the terms of the CC-BY (Attribution 4.0 International) license. - title: Política de Privacitat de %{instance} themes: contrast: Mastodon (alt contrast) default: Mastodon (fosc) @@ -1777,20 +1691,13 @@ ca: suspend: Compte suspès welcome: edit_profile_action: Configura el perfil - edit_profile_step: Pots personalitzar el teu perfil penjant un avatar, un encapçalament, canviant el teu nom de visualització i molt més. Si prefereixes revisar els seguidors nous abans de que et puguin seguir, pots blocar el teu compte. + edit_profile_step: Pots personalitzar el teu perfil pujant-hi un avatar, canviant el teu nom de visualització i molt més. Si ho prefereixes, pots revisar els seguidors nous abans de que et puguin seguir. explanation: Aquests són alguns consells per a començar final_action: Comença a publicar - final_step: 'Comença a publicar! Fins i tot sense seguidors, els altres poden veure els teus missatges públics, per exemple, a la línia de temps local i a les etiquetes ("hashtags"). És possible que vulguis presentar-te amb l''etiqueta #introductions.' + final_step: 'Comença a publicar! Fins i tot sense seguidors, els altres poden veure els teus missatges públics, per exemple, a la línia de temps local i a les etiquetes. És possible que vulguis presentar-te amb l''etiqueta #introductions.' full_handle: El teu nom d'usuari sencer full_handle_hint: Això és el que has de dir als teus amics perquè puguin enviar-te missatges o seguir-te des d'un altre servidor. - review_preferences_action: Canviar preferències - review_preferences_step: Assegura't d'establir les teves preferències, com ara els correus electrònics que vols rebre o el nivell de privadesa per defecte que t'agradaria que tinguin les teves entrades. Si no tens malaltia de moviment, pots optar per habilitar la reproducció automàtica de GIF. subject: Et donem la benvinguda a Mastodon - tip_federated_timeline: La línia de temps federada és el cabal principal de la xarxa Mastodon. Però només inclou les persones a les quals els teus veïns estan subscrits, de manera que no està completa. - tip_following: Per defecte segueixes als administradors del servidor. Per trobar més persones interessants, consulta les línies de temps local i federada. - tip_local_timeline: La línia de temps local és la vista del flux de publicacions dels usuaris de %{instance}. Aquests usuaris són els teus veïns més propers! - tip_mobile_webapp: Si el teu navegador del mòbil t'ofereix afegir Mastodon a la teva pantalla d'inici, podràs rebre notificacions "push". Es comporta com una aplicació nativa en molts aspectes! - tips: Consells title: Benvingut a bord, %{name}! users: follow_limit_reached: No pots seguir més de %{limit} persones diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 9809219183..078b757ea9 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -3,30 +3,19 @@ ckb: about: about_mastodon_html: 'تۆڕی کۆمەڵایەتی داهاتوو: هیچ ڕیکلامێک ، هیچ چاودێرییەکی کۆمپانیا ، دیزاینی ئەخلاقی و لامەرکەزی! خاوەنی داتاکانت نابێ لە ماستۆدۆن!' about_this: دەربارە - active_count_after: چالاک - active_footnote: بەکارهێنەرانی چالاکی مانگانە (MAU) administered_by: 'بەڕێوەبراو لەلایەن:' api: API apps: ئەپەکانی مۆبایل - apps_platforms: بەکارهێنانی ماستۆدۆن لە iOS، ئەندرۆید و سەکۆکانی تر - browse_public_posts: گەڕان لە جۆگەیەکی زیندووی نووسراوە گشتیەکان لەسەر ماستۆدۆن contact: بەردەنگ contact_missing: سازنەکراوە contact_unavailable: بوونی نییە documentation: بەڵگەکان - federation_hint_html: بە هەژمارەیەک لەسەر %{instance} دەتوانیت شوێن خەڵک بکەویت لەسەر هەرڕاژەیەکی ماستۆدۆن. - get_apps: ئەپێکی تەلەفۆن تاقی بکەرەوە hosted_on: مەستودۆن میوانداری کراوە لە %{domain} instance_actor_flash: | ئەم هەژمارەیە ئەکتەرێکی خەیاڵی بەکارهاتووە بۆ نوێنەرایەتی کردنی خودی ڕاژەکە و نەک هیچ بەکارهێنەرێکی تاک. بۆ مەبەستی فیدراسیۆن بەکاردێت و نابێت بلۆک بکرێت مەگەر دەتەوێت هەموو نمونەکە بلۆک بکەیت، کە لە حاڵەتەش دا پێویستە بلۆکی دۆمەین بەکاربهێنیت. - learn_more: زیاتر فێربه - logged_in_as_html: لە ئێستادا تۆ وەک %{username} چوویتە ژوورەوە. - logout_before_registering: تۆ پێشتر چوویتە ژوورەوە. rules: یاساکانی سێرڤەر rules_html: 'لە خوارەوە کورتەیەک لەو یاسایانە دەخەینەڕوو کە پێویستە پەیڕەوی لێبکەیت ئەگەر بتەوێت ئەکاونتێکت هەبێت لەسەر ئەم سێرڤەرەی ماستۆدۆن:' - see_whats_happening: بزانە چی ڕوودەدات - server_stats: 'زانیاری ڕاژەکار:' source_code: کۆدی سەرچاوە status_count_after: one: دۆخ @@ -602,9 +591,6 @@ ckb: closed_message: desc_html: لە پەڕەی پێشەوە پیشان دەدرێت کاتێک تۆمارەکان داخراون. دەتوانیت تاگەکانی HTML بەکاربێنیت title: نامەی تۆمارکردن داخراو - deletion: - desc_html: ڕێ بدە بە هەر کەسێک هەژمارەکەی بسڕیتەوە - title: سڕینەوەی هەژمارە بکەوە require_invite_text: desc_html: کاتێک تۆمارکردنەکان پێویستیان بە ڕەزامەندی دەستی هەیە، "بۆچی دەتەوێت بەشداری بکەیت؟" نووسینی دەق ئیجبارییە نەک ئیختیاری registrations_mode: @@ -694,10 +680,7 @@ ckb: warning: زۆر ئاگاداربە لەم داتایە. هەرگیز لەگەڵ کەس دا هاوبەشی مەکە! your_token: کۆدی دەستپێگەیشتنی ئێوە auth: - apply_for_account: داواکردنی بانگهێشتێک change_password: تێپەڕوشە - checkbox_agreement_html: من ڕازیم بە یاساکانی ڕاژە وە مەرجەکانی خزمەتگوزاری - checkbox_agreement_without_rules_html: من ڕازیم بە مەرجەکانی خزمەتگوزاری delete_account: سڕینەوەی هەژمارە delete_account_html: گەر هەرەکتە هەژمارەکەت بسڕیتەوە، لە لەم قوناغانە بڕۆیتە پێشەوە. داوای پەسەند کردنتان لێدەگیرێت. description: @@ -737,7 +720,6 @@ ckb: redirecting_to: هەژمارەکەت ناچالاکە لەبەرئەوەی ئێستا دووبارە ئاڕاستەدەکرێتەوە بۆ %{acct}. view_strikes: بینینی لێدانەکانی ڕابردوو لە دژی ئەکاونتەکەت too_fast: فۆڕم زۆر خێرا پێشکەش کراوە، دووبارە هەوڵبدەرەوە. - trouble_logging_in: کێشە ت هەیە بۆ چوونە ژوورەوە? use_security_key: کلیلی ئاسایش بەکاربهێنە authorize_follow: already_following: ئێوە ئێستا شوێن کەوتووی ئەم هەژمارەیەی @@ -1199,20 +1181,11 @@ ckb: suspend: هەژمار ڕاگیرا welcome: edit_profile_action: پرۆفایلی جێگیرکردن - edit_profile_step: 'ئێوە دەتوانن پرۆفایلەکەتان بە دڵخوازی خۆتان بگۆڕن: دەتوانن وێنەی پرۆفایل،وێنەی پاشبنەما،ناو و... هتد دابین بکەن. ئەگەر هەرەکت بێت دەتوانی هەژمارەکەت تایبەت بکەیتەوە تا تەنها کەسانێک کە ئێوە ڕێگەتان داوە دەتوانن شوێنکەوتوو هەژمارەکەتان بن.' explanation: ئەمە چەند ئامۆژگارییەکن بۆ دەست پێکردنت final_action: دەست بکە بە بڵاوکردنەوە - final_step: 'چیزی بنووسید! تەنانەت گەر ئێستا کەسێک شوێن کەوتووی ئێوە نەبوو، هەژمارەکانی دیکە و سەردانکەرەکانی پرۆفایلەکەتان نووسراوەکانی گشتی ئێوە دەبینن. بۆ نموونە لە پێرستی نووسراوە خۆماڵییەکان و لە لکاوەی(هاشتاگ) ەکان، شایەد هەرەکتان بێت بە چەسپکراوەی # خۆتان بناسێنن.' full_handle: ناوی بەکارهێنەری تەواوی ئێوە full_handle_hint: ئەمە ئەو شتەیە کە بە هاوڕێکانت دەلێی بۆ ئەوەی پەیام یان لە ڕاژەیەکی دیکەی ترەوە بەدوات بکەون. - review_preferences_action: گۆڕینی پەسەندەکان - review_preferences_step: دڵنیابە لە دانانی پەسەندکراوەکانت، وەک کام ئیمەیل کە دەتەوێت وەریبگرێ، یان دەتەوێت چ ئاستێکی تایبەتیت بۆ بابەتەکانت پێش گریمانە بێت. ئەگەر نەخۆشی جوڵەت(دڵ تێکەڵدان لە وێنە جووڵەییەکان) نیە، دەتوانیت هەڵبژێریت بۆ بەتواناکردنی پەخشکردنی خۆکاری GIF. subject: بەخێربیت بۆ ماستۆدۆن - tip_federated_timeline: پێرستی نووسراوەکانی هەمووشوێنێک وێنەیەکی گشتی لە تۆڕی ماستۆدۆنە، بەڵام تەنها بریتییە لە هاوسێکان کە شوێنیان کەوتن؛بس تەواو نییە. - tip_following: بە شیوەی بنەڕەتی بەڕێوەبەران ڕاژەکەتان چاودێری دەکەن، بۆ پەداکردنی کەسانی سەرنجڕاکێشە چاودێری نووسراوە ناخۆیی و نووسراوەکانی شوێنەکانی دیکە بکەن. - tip_local_timeline: پێرستی نووسراوە ناوخۆییەکان شێوەیەکی تەواو لە بەکارهێنەران لە سەر %{instance} پیسان دەدەن، ئەمانە جەیرانی ئێوەن! - tip_mobile_webapp: ئەگەر وێبگەڕی مۆبایلەکەت پێشنیاری زیادکردنی ماستۆدۆن بۆ شاشەی ڕوومێزیەکەتی کرد، دەتوانیت ئاگانامەکانی هاندان وەربگری. لە زۆر ڕوەوە وەک بەرنامەیەیەکی ئەسڵی ئیس دەکا! - tips: ئامۆژگاریەکان title: بەخێربێیت، بەکارهێنەر %{name}! users: follow_limit_reached: ناتوانیت زیاتر لە %{limit} خەڵک پەیڕەو کەیت diff --git a/config/locales/co.yml b/config/locales/co.yml index ef8251d83c..a576f91a05 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -3,28 +3,19 @@ co: about: about_mastodon_html: 'A rete suciale di u futuru: micca pubblicità, micca surveglianza, cuncezzione etica, è dicentralizazione! Firmate in cuntrollu di i vostri dati cù Mastodon!' about_this: À prupositu - active_count_after: attivi - active_footnote: Utilizatori Attivi Mensili (UAM) administered_by: 'Amministratu da:' api: API apps: Applicazione per u telefuninu - apps_platforms: Utilizà Mastodon dapoi à iOS, Android è altre piattaforme - browse_public_posts: Navigà un flussu di i statuti pubblichi nant'à Mastodon contact: Cuntattu contact_missing: Mancante contact_unavailable: Micca dispunibule documentation: Ducumentazione - federation_hint_html: Cù un contu nant'à %{instance} puderete siguità ghjente da tutti i servori Mastodon è ancu più d'altri. - get_apps: Pruvà un'applicazione di telefuninu hosted_on: Mastodon allughjatu nant’à %{domain} instance_actor_flash: | Stu contu ghjè un'attore virtuale chì ghjove à riprisentà u servore sanu è micca un veru utilizatore. Hè utilizatu da a federazione è ùn deve micca esse bluccatu eccettu s'e voi vulete bluccà tuttu u servore, in quellu casu duvereste utilizà un blucchime di duminiu. - learn_more: Amparà di più rules: Regule di u servore rules_html: 'Eccu un riassuntu di e regule da siguità s''e voi vulete creà un contu nant''à quessu servore di Mastodon:' - see_whats_happening: Vede cio chì si passa - server_stats: 'Statistiche di u servore:' source_code: Codice di fonte status_count_after: one: statutu @@ -559,9 +550,6 @@ co: closed_message: desc_html: Affissatu nant’a pagina d’accolta quandu l’arregistramenti sò chjosi. Pudete fà usu di u furmattu HTML title: Missaghju per l’arregistramenti chjosi - deletion: - desc_html: Auturizà tuttu u mondu à sguassà u so propiu contu - title: Auturizà à sguassà i conti require_invite_text: desc_html: Quandu l'arregistramenti necessitanu un'apprubazione manuale, fà chì u testu "Perchè vulete ghjunghje?" sia ubligatoriu invece d'esse facultativu title: Richiede chì i novi utilizatori empiinu una dumanda d'invitazione @@ -677,10 +665,7 @@ co: warning: Abbadate à quessi dati. Ùn i date à nisunu! your_token: Rigenerà a fiscia d’accessu auth: - apply_for_account: Dumandà un'invitazione change_password: Chjave d’accessu - checkbox_agreement_html: Sò d'accunsentu cù e regule di u servore è i termini di u serviziu - checkbox_agreement_without_rules_html: Accettu i termini di u serviziu delete_account: Sguassà u contu delete_account_html: S’è voi vulete toglie u vostru contu ghjè quì. Duverete cunfirmà a vostra scelta. description: @@ -717,7 +702,6 @@ co: pending: A vostra dumanda hè in attesa di rivista da a squadra di muderazione. Quessa pò piglià un certu tempu. Avete da riceve un'e-mail s'ella hè appruvata. redirecting_to: U vostru contu hè inattivu perchè riindirizza versu %{acct}. too_fast: Furmulariu mandatu troppu prestu, ripruvate. - trouble_logging_in: Difficultà per cunnettavi? use_security_key: Utilizà a chjave di sicurità authorize_follow: already_following: Site digià abbunatu·a à stu contu @@ -1236,20 +1220,11 @@ co: suspend: Contu suspesu welcome: edit_profile_action: Cunfigurazione di u prufile - edit_profile_step: Pudete persunalizà u vostru prufile cù un ritrattu di prufile o di cuprendula, un nome pubblicu persunalizatu, etc. Pudete ancu rende u contu privatu per duvè cunfirmà ogni dumanda d’abbunamentu. explanation: Eccu alcune idee per principià final_action: Principià à pustà - final_step: 'Andemu! Ancu senza abbunati i vostri missaghji pubblichi puderanu esse visti da altre persone, per esempiu nant’a linea lucale è l’hashtag. Pudete ancu prisintavi nant’à u hashtag #introductions.' full_handle: U vostru identificatore cumplettu full_handle_hint: Quessu ghjè cio chì direte à i vostri amichi per circavi, abbunassi à u vostru contu da altrò, o mandà missaghji. - review_preferences_action: Mudificà e priferenze - review_preferences_step: Quì pudete adattà u cumpurtamentu di Mastodon à e vostre priferenze, cum’è l’email che vulete riceve, u nivellu di cunfidenzialità predefinitu di i vostri statuti, o u cumpurtamentu di i GIF animati. subject: Benvenutu·a nant’à Mastodon - tip_federated_timeline: A linea pubblica glubale mostra i statuti da altre istanze nant’a rete Mastodon, mà ùn hè micca cumpleta perchè ci sò soli i conti à quelli sò abbunati membri di a vostr’istanza. - tip_following: Site digià abbunatu·a à l’amministratori di u vostru servore. Per truvà d’altre parsone da siguità, pudete pruvà e linee pubbliche. - tip_local_timeline: A linea pubblica lucale ghjè una vista crunulogica di i statuti di a ghjente nant’à %{instance}. Quessi sò i vostri cunvicini! - tip_mobile_webapp: Pudete aghjunghje Mastodon à a pagina d’accolta di u vostru navigatore di telefuninu per riceve nutificazione, cum’un applicazione! - tips: Cunsiglii title: Benvenutu·a, %{name}! users: follow_limit_reached: Ùn pidete seguità più di %{limit} conti diff --git a/config/locales/cs.yml b/config/locales/cs.yml index fe5cc67878..4e3823c9de 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -3,32 +3,20 @@ cs: about: about_mastodon_html: 'Sociální síť budoucnosti: žádné reklamy, žádné korporátní sledování, etický design a decentralizace! S Mastodonem vlastníte svoje data!' about_this: O tomto serveru - active_count_after: aktivních - active_footnote: Měsíční aktivní uživatelé (MAU) administered_by: 'Server spravuje:' api: API apps: Mobilní aplikace - apps_platforms: Používejte Mastodon na iOS, Androidu a dalších platformách - browse_public_posts: Prozkoumejte živý proud veřejných příspěvků na Mastodonu contact: Kontakt contact_missing: Nenastaveno contact_unavailable: Neuvedeno - continue_to_web: Pokračovat do webové aplikace documentation: Dokumentace - federation_hint_html: S účtem na serveru %{instance} můžete sledovat lidi na jakémkoliv ze serverů Mastodon a dalších službách. - get_apps: Vyzkoušejte mobilní aplikaci hosted_on: Mastodon na doméně %{domain} instance_actor_flash: | Tento účet je virtuální aktér, který představuje server samotný, nikoliv účet jednotlivého uživatele. Používá se pro účely federace a nesmí být blokován, pokud nechcete blokovat celý server. V takovém případě použijte blokaci domény. - learn_more: Zjistit více - logged_in_as_html: Aktuálně jste přihlášeni jako %{username}. - logout_before_registering: Již jste přihlášeni. privacy_policy: Ochrana osobních údajů rules: Pravidla serveru rules_html: 'Níže je shrnutí pravidel, která musíte dodržovat, pokud chcete mít účet na tomto Mastodon serveru:' - see_whats_happening: Podívejte se, co se děje - server_stats: 'Statistika serveru:' source_code: Zdrojový kód status_count_after: few: příspěvky @@ -36,7 +24,6 @@ cs: one: příspěvek other: příspěvků status_count_before: Kteří napsali - tagline: Decentralizovaná sociální síť unavailable_content: Moderované servery unavailable_content_description: domain: Server @@ -791,9 +778,6 @@ cs: closed_message: desc_html: Zobrazí se na hlavní stránce, jsou-li registrace uzavřeny. Můžete použít i HTML značky title: Zpráva o uzavřených registracích - deletion: - desc_html: Povolit komukoliv smazat svůj účet - title: Zpřístupnit smazání účtu require_invite_text: desc_html: Když jsou registrace schvalovány ručně, udělat odpověď na otázku "Proč se chcete připojit?" povinnou title: Požadovat od nových uživatelů zdůvodnění založení @@ -1033,10 +1017,7 @@ cs: warning: Zacházejte s těmito daty opatrně. Nikdy je s nikým nesdílejte! your_token: Váš přístupový token auth: - apply_for_account: Požádat o pozvánku change_password: Heslo - checkbox_agreement_html: Souhlasím s pravidly serveru a podmínkami používání - checkbox_agreement_without_rules_html: Souhlasím s podmínkami používání delete_account: Odstranit účet delete_account_html: Chcete-li odstranit svůj účet, pokračujte zde. Budete požádáni o potvrzení. description: @@ -1055,6 +1036,7 @@ cs: migrate_account: Přesunout se na jiný účet migrate_account_html: Zde můžete nastavit přesměrování tohoto účtu na jiný. or_log_in_with: Nebo se přihlaste pomocí + privacy_policy_agreement_html: Četl jsem a souhlasím se zásadami ochrany osobních údajů providers: cas: CAS saml: SAML @@ -1062,6 +1044,9 @@ cs: registration_closed: "%{instance} nepřijímá nové členy" resend_confirmation: Znovu odeslat pokyny pro potvrzení reset_password: Obnovit heslo + rules: + preamble: Tohle nastavují a prosazují moderátoři %{domain}. + title: Některá základní pravidla. security: Zabezpečení set_new_password: Nastavit nové heslo setup: @@ -1076,7 +1061,6 @@ cs: redirecting_to: Váš účet je neaktivní, protože je právě přesměrován na účet %{acct}. view_strikes: Zobrazit minulé prohřešky vašeho účtu too_fast: Formulář byl odeslán příliš rychle, zkuste to znovu. - trouble_logging_in: Problémy s přihlášením? use_security_key: Použít bezpečnostní klíč authorize_follow: already_following: Tento účet již sledujete @@ -1665,89 +1649,6 @@ cs: too_late: Na odvolání proti tomuto prohřešku už je pozdě tags: does_not_match_previous_name: se neshoduje s předchozím názvem - terms: - body_html: | -

Zásady ochrany osobních údajů

-

Jaké informace sbíráme?

- -
    -
  • Základní informace o účtu: Pokud se na tomto serveru zaregistrujete, můžeme vás požádat o zadání uživatelského jména, e-mailové adresy a hesla. Můžete také zadat dodatečné profilové informace, jako například zobrazované jméno, krátký životopis, nebo si nahrát profilovou fotografii a obrázek záhlaví. Uživatelské i zobrazované jméno, životopis, profilová fotografie a obrázek záhlaví jsou vždy veřejně dostupné.
  • -
  • Příspěvky, sledující a další veřejné informace: Seznam lidí, které sledujete, je uveden veřejně, totéž platí i pro uživatele sledující vás. Pro každou vámi napsanou zprávu, bude uloženo datum a čas a informace o aplikaci, ze které jste zprávu odeslali. Zprávy mohou obsahovat mediální přílohy, jako jsou obrázky a videa. Veřejné a neuvedené příspěvky jsou dostupné veřejně. Pokud na vašem profilu uvedete příspěvek, bude také dostupný veřejně. Vaše příspěvky jsou doručeny uživatelům, kteří vás sledují, což v některých případech znamená, že budou příspěvky doručeny na různé servery, na kterých budou ukládány jejich kopie. Pokud příspěvky smažete, bude tato akce taktéž doručeno vašim sledujícím. Akce opětovného sdílení nebo oblíbení jiného příspěvku je vždy veřejná.
  • -
  • Příspěvky přímé a pouze pro sledující: Všechny příspěvky jsou na serveru uloženy a zpracovány. Příspěvky pouze pro sledující jsou doručeny uživatelům, kteří vás sledují, a uživatelům v příspěvcích zmíněným. Přímé příspěvky jsou doručeny pouze uživatelům v nich zmíněným. V některých případech to znamená, že budou příspěvky doručeny na různé servery, na kterých budou ukládány jejich kopie. Upřímně se snažíme omezit přístup k těmto příspěvkům pouze na autorizované uživatele, ovšem ostatní servery tak činit nemusí. Proto je důležité posoudit servery, ke kterým uživatelé, kteří vás sledují patří. V nastavení si můžete zapnout volbu pro manuální schvalování či odmítnutí nových sledujících. Mějte prosím na paměti, že správci tohoto serveru a kteréhokoliv přijímacího serveru mohou tyto zprávy vidět a příjemci mohou vytvořit jejich snímek, zkopírovat je, nebo je jinak sdílet. Nesdílejte přes Mastodon žádné citlivé informace.
  • -
  • IP adresy a další metadata: Při vašem přihlášení zaznamenáváme IP adresu, ze které se přihlašujete, a název vašeho webového prohlížeče. Všechny vaše webové relace jsou v nastavení přístupné k vašemu posouzení a odvolání. Poslední použitá IP adresa je uložena maximálně po dobu 12 měsíců. Můžeme také uchovávat serverové záznamy, které obsahují IP adresy každého požadavku odeslaného na náš server.
  • -
- -
- -

Na co vaše údaje používáme?

- -

Všechna data, která sbíráme, mohou být použita následujícími způsoby:

- -
    -
  • K poskytnutí základních funkcí Mastodonu. K interakci s obsahem od jiných lidí a přispívat svým vlastním obsahem můžete pouze, pokud jste přihlášeni. Můžete například sledovat jiné lidi a zobrazit si jejich kombinované příspěvky ve vaší vlastní personalizované časové ose.
  • -
  • Pro pomoc moderování komunity, například porovnáním vaší IP adresy s dalšími známými adresami pro detekci obcházení zákazů či jiných přestupků.
  • -
  • E-mailová adresa, kterou nám poskytnete, může být použita pro zasílání informací, oznámení o interakcích jiných uživatelů s vaším obsahem nebo přijatých zprávách, a k odpovědím na dotazy a/nebo další požadavky či otázky.
  • -
- -
- -

Jak vaše data chráníme?

- -

Když zadáváte, odesíláte, či přistupujete k vašim osobním datům, implementujeme různá bezpečnostní opatření pro udržování bezpečnosti vašich osobních dat. Mimo jiné je vaše relace v prohlížeči, jakož i provoz mezi vašimi aplikacemi a API, zabezpečena pomocí SSL, a vaše heslo je hashováno pomocí silného jednosměrného algoritmu. Pro větší zabezpečení vašeho účtu můžete povolit dvoufázové ověřování.

- -
- -

Jaké jsou naše zásady o uchovávání údajů?

- -

Budeme se upřímně snažit:

- -
    -
  • Uchovávat serverové záznamy obsahující IP adresy všech požadavků na tento server, pokud se takové záznamy uchovávají, maximálně 90 dní.
  • -
  • Uchovávat IP adresy související s registrovanými uživateli maximálně 12 měsíců.
  • -
- -

Kdykoliv si můžete vyžádat a stáhnout archiv svého obsahu, včetně příspěvků, mediálních příloh, profilové fotografie a obrázku záhlaví.

- -

Kdykoliv můžete nenávratně smazat svůj účet.

- -
- -

Používáme cookies?

- -

Ano. Cookies jsou malé soubory, které stránka nebo její poskytovatel uloží do vašeho počítače (pokud to dovolíte). Tyto cookies umožňují stránce rozpoznat váš prohlížeč, a pokud máte registrovaný účet, přidružit ho s vaším registrovaným účtem.

- -

Používáme cookies pro pochopení a ukládání vašich předvoleb pro budoucí návštěvy.

- -
- -

Zveřejňujeme jakékoliv informace třetím stranám?

- -

Vaše osobně identifikovatelné informace neprodáváme, neobchodujeme s nimi, ani je nijak nepřenášíme vnějším stranám. Nepočítáme do toho důvěryhodné třetí strany, které nám pomáhají provozovat naši stránku, podnikat, nebo vás obsluhovat, pokud tyto strany souhlasí se zachováním důvěrnosti těchto informací. Vaše informace můžete uvolnit, pokud věříme, že je to nutné pro soulad se zákonem, prosazování našich zásad, nebo ochranu práv, majetku, či bezpečnost nás či ostatních.

- -

Váš veřejný obsah může být stažen jinými servery na síti. Vaše příspěvky veřejné a pouze pro sledující budou doručeny na servery uživatelů, kteří vás sledují, a přímé zprávy budou doručeny na servery příjemců, pokud jsou tito sledující nebo příjemci zaregistrováni na jiném serveru, než je tento.

- -

Při autorizaci aplikace k používání vašeho účtu může, v závislosti na rozsahu udělených oprávnění, přistupovat k vašim veřejným profilovým informacím, seznamu lidí, které sledujete, vašim sledujícím, vašim seznamům, všem vašim příspěvkům a příspěvkům, které jste si oblíbili. Aplikace nikdy nemohou získat vaši e-mailovou adresu ani heslo.

- -
- -

Používání stránky dětmi

- -

Pokud se tento server nachází v EU nebo EHP: Naše stránka, produkty a služby jsou určeny lidem, kterým je alespoň 16 let. Pokud je vám méně než 16 let, dle požadavků nařízení GDPR (Obecné nařízení o ochraně osobních údajů) tuto stránku nepoužívejte.

- -

Pokud se tento server nachází v USA: Naše stránka, produkty a služby jsou učeny lidem, kterým je alespoň 13 let. Pokud je vám méně než 13 let, dle požadavků zákona COPPA (Children's Online Privacy Protection Act) tuto stránku nepoužívejte.

- -

Právní požadavky mohou být jiné, pokud se tento server nachází v jiné jurisdikci.

- -
- -

Změny v našich zásadách ochrany osobních údajů

- -

Rozhodneme-li se naše zásady ochrany osobních údajů změnit, zveřejníme tyto změny na této stránce.

- -

Tento dokument je dostupný pod licencí CC-BY-SA. Byl naposledy aktualizován 26. května 2022.

- -

Původně adaptováno ze zásad ochrany osobních údajů projektu Discourse.

- title: Zásady ochrany osobních údajů %{instance} themes: contrast: Mastodon (vysoký kontrast) default: Mastodon (tmavý) @@ -1826,20 +1727,13 @@ cs: suspend: Účet pozastaven welcome: edit_profile_action: Nastavit profil - edit_profile_step: Svůj profil si můžete přizpůsobit nahráním avataru a obrázku záhlaví, změnou zobrazovaného jména a další. Chcete-li posoudit nové sledující předtím, než vás mohou sledovat, můžete svůj účet uzamknout. + edit_profile_step: Váš profil si můžete přizpůsobit nahráním profilového obrázku, změnou zobrazovaného jména a dalším. Můžete se přihlásit k přezkoumání nových následovatelů, než vás budou moci následovat. explanation: Zde je pár tipů do začátku final_action: Začít psát - final_step: 'Začněte psát! I když nemáte sledující, mohou vaše veřejné příspěvky vidět jiní lidé, například na místní časové ose a v hashtazích. Můžete se ostatním představit pomocí hashtagu #introductions.' + final_step: 'Začněte psát příspěvky! I bez sledujících mohou vaše veřejné příspěvky vidět ostatní, například na místní časové ose nebo v hashtagu. Možná se budete chtít představit na hashtagu #představení.' full_handle: Vaše celá adresa profilu full_handle_hint: Tohle je, co byste řekli svým přátelům, aby vám mohli posílat zprávy nebo vás sledovat z jiného serveru. - review_preferences_action: Změnit předvolby - review_preferences_step: Nezapomeňte si nastavit například jaké e-maily chcete přijímat či jak soukromé mají ve výchozím stavu být vaše příspěvky. Nemáte-li epilepsii, můžete si nastavit automatické přehrávání obrázků GIF. subject: Vítejte na Mastodonu - tip_federated_timeline: Federovaná časová osa je náhled celé sítě Mastodon. Zahrnuje ovšem pouze lidi, které sledují vaši sousedé, takže není úplná. - tip_following: Administrátory serveru sledujete automaticky. Chcete-li najít další zajímavé lidi, podívejte se do místní a federované časové osy. - tip_local_timeline: Místní časová osa je náhled lidí na serveru %{instance}. Jsou to vaši nejbližší sousedé! - tip_mobile_webapp: Pokud vám váš mobilní prohlížeč nabídne přidat si Mastodon na vaši domovskou obrazovku, můžete dostávat oznámení. V mnoha ohledech to funguje jako nativní aplikace! - tips: Tipy title: Vítejte na palubě, %{name}! users: follow_limit_reached: Nemůžete sledovat více než %{limit} lidí diff --git a/config/locales/cy.yml b/config/locales/cy.yml index cd29f215d4..73ec9800b1 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -3,31 +3,19 @@ cy: about: about_mastodon_html: Mae Mastodon yn rwydwaith cymdeithasol sy'n seiliedig ar brotocolau gwe a meddalwedd cod agored rhad ac am ddim. Yn debyg i e-bost mae'n ddatganoledig. about_this: Ynghylch - active_count_after: yn weithredol - active_footnote: Defnyddwyr Gweithredol Misol (DGM) administered_by: 'Gweinyddir gan:' api: API apps: Apiau symudol - apps_platforms: Defnyddio Mastodon o iOS, Android a phlatfformau eraill - browse_public_posts: Pori ffrwd byw o byst cyhoeddus ar Fastodon contact: Cyswllt contact_missing: Heb ei osod contact_unavailable: Ddim yn berthnasol - continue_to_web: Parhau i app gwe documentation: Dogfennaeth - federation_hint_html: Gyda cyfrif ar %{instance}, gallwch dilyn pobl ar unrhyw gweinydd Mastodon, a thu hwnt. - get_apps: Rhowch gynnig ar ap dyfeis symudol hosted_on: Mastodon wedi ei weinyddu ar %{domain} instance_actor_flash: | Mae'r cyfrif hwn yn actor rhithwir a ddefnyddir i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol. Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei rwystro oni bai eich bod am rwystro'r achos cyfan, ac os felly dylech ddefnyddio bloc parth. - learn_more: Dysgu mwy - logged_in_as_html: Rydych chi wedi mewngofnodi fel %{username}. - logout_before_registering: Rydych chi eisoes wedi mewngofnodi. rules: Rheolau gweinydd rules_html: 'Isod mae crynodeb o''r rheolau y mae angen i chi eu dilyn os ydych chi am gael cyfrif ar y gweinydd hwn o Mastodon:' - see_whats_happening: Gweld beth sy'n digwydd - server_stats: 'Ystadegau gweinydd:' source_code: Cod ffynhonnell status_count_after: few: statwsau @@ -471,9 +459,6 @@ cy: closed_message: desc_html: I'w arddangos ar y dudalen flaen wedi i gofrestru cau. Mae modd defnyddio tagiau HTML title: Neges gofrestru caeëdig - deletion: - desc_html: Caniatau i unrhywun i ddileu eu cyfrif - title: Agor dileu cyfrif registrations_mode: modes: approved: Mae angen cymeradwyaeth ar gyfer cofrestru @@ -562,10 +547,7 @@ cy: warning: Byddwch yn ofalus a'r data hyn. Peidiwch a'i rannu byth! your_token: Eich tocyn mynediad auth: - apply_for_account: Gofyn am wahoddiad change_password: Cyfrinair - checkbox_agreement_html: Rydw i'n cytuno i'r rheolau'r gweinydd a'r telerau gwasanaeth - checkbox_agreement_without_rules_html: Rydw i'n cytuno i Delerau y Gwasanaeth delete_account: Dileu cyfrif delete_account_html: Os hoffech chi ddileu eich cyfrif, mae modd parhau yma. Bydd gofyn i chi gadarnhau. description: @@ -595,7 +577,6 @@ cy: confirming: Aros i gadarnhad e-bost gael ei gwblhau. pending: Mae'ch cais yn aros i gael ei adolygu gan ein staff. Gall hyn gymryd cryn amser. Byddwch yn derbyn e-bost os caiff eich cais ei gymeradwyo. redirecting_to: Mae eich cyfrif yn anactif oherwydd ei fod ar hyn o bryd yn ailgyfeirio i %{acct}. - trouble_logging_in: Trafferdd mewngofnodi? authorize_follow: already_following: Yr ydych yn dilyn y cyfrif hwn yn barod already_requested: Rydych barod wedi anfon ceisiad dilyn i'r cyfrif hynny @@ -1062,20 +1043,11 @@ cy: suspend: Cyfrif wedi'i rewi welcome: edit_profile_action: Sefydlu proffil - edit_profile_step: Mae modd i chi addasu eich proffil drwy uwchlwytho afatar, pennawd, drwy newid eich enw arddangos a mwy. Os hoffech chi adolygu dilynwyr newydd cyn iddynt gael caniatad i'ch dilyn, mae modd i chi gloi eich cyfrif. explanation: Dyma ambell nodyn i'ch helpu i ddechrau final_action: Dechrau postio - final_step: 'Dechrau postio! Hyd yn oed heb ddilynwyr mae''n bosib i eraill weld eich negeseuon cyhoeddus, er enghraifft at y ffrwd leol ac mewn hashnodau. Mae''n bosib yr hoffech hi gyflwyno''ch hun ar yr hashnod #introductions.' full_handle: Eich enw llawn full_handle_hint: Dyma'r hyn y bysech yn dweud wrth eich ffrindiau er mwyn iddyn nhw gael anfon neges atoch o achos arall. - review_preferences_action: Newid dewisiadau - review_preferences_step: Gwnewch yn siŵr i chi osod eich dewisiadau, megis pa e-byst hoffech eu derbyn, neu ba lefel preifatrwydd hoffech eich tŵtiau ragosod i. Os nad oes gennych salwch symud, gallwch ddewis i ganiatau chwarae GIFs yn awtomatig. subject: Croeso i Mastodon - tip_federated_timeline: Mae'r ffrwd ffederasiwn yn olwg firehose o'r rhwydwaith Mastodon. Ond mae ond yn cynnwys y bobl mae eich cymdogion wedi ymrestru iddynt, felly nid yw'n gyflawn. - tip_following: Rydych yn dilyn goruwchwyliwr eich gweinydd yn ddiofyn. I ganfod pobl mwy diddorol, edrychwch ar y ffrydiau lleol a'r rhai wedi ei ffedereiddio. - tip_local_timeline: Mae'r ffrwd leol yn olwg firehose o bobl ar %{instance}. Dyma eich cymdogion agosaf! - tip_mobile_webapp: Os yw eich porwr gwe yn cynnig i chi ychwanegu Mastodon i'ch sgrîn gartref, mae modd i chi dderbyn hysbysiadau gwthiadwy. Mewn sawl modd mae'n gweithio fel ap cynhenid! - tips: Awgrymiadau title: Croeso, %{name}! users: follow_limit_reached: Nid oes modd i chi ddilyn mwy na %{limit} o bobl diff --git a/config/locales/da.yml b/config/locales/da.yml index c4ff355503..2df65ead9a 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -3,38 +3,25 @@ da: about: about_mastodon_html: 'Fremtidens sociale netværk: Ingen annoncer, ingen virksomhedsovervågning, etisk design og decentralisering! Vær ejer af egne data med Mastodon!' about_this: Om - active_count_after: aktive - active_footnote: Månedlige aktive brugere (MAU) administered_by: 'Håndteres af:' api: API apps: Mobil-apps - apps_platforms: Benyt Mastodon på Android, iOS og andre platforme - browse_public_posts: Gennemse en live stream af offentlige indlæg på Mastodon contact: Kontakt contact_missing: Ikke angivet contact_unavailable: Utilgængelig - continue_to_web: Fortsæt til web-app documentation: Dokumentation - federation_hint_html: Vha. en konto på %{instance} vil man kunne følge andre på en hvilken som helst Mastodon-server. - get_apps: Prøv en mobil-app hosted_on: Mostodon hostet på %{domain} instance_actor_flash: | Denne konto er en virtuel aktør brugt som repræsentation af selve serveren og ikke en individuel bruger. Den bruges til fællesformål og bør ikke blokeres, medmindre hele instansen ønskes blokeret, i hvilket tilfælde man bør bruge domæneblokering. - learn_more: Læs mere - logged_in_as_html: Du er pt. logget ind som %{username}. - logout_before_registering: Allerede logget ind. privacy_policy: Fortrolighedspolitik rules: Serverregler rules_html: 'Nedenfor ses en oversigt over regler, som skal følges, hvis man ønsker at have en konto på denne Mastodon-server:' - see_whats_happening: Se, hvad der sker - server_stats: 'Serverstatstik:' source_code: Kildekode status_count_after: one: indlæg other: indlæg status_count_before: Som har postet - tagline: Decentraliseret socialt netværk unavailable_content: Modererede servere unavailable_content_description: domain: Server @@ -766,9 +753,6 @@ da: closed_message: desc_html: Vises på forside, når tilmeldingsmuligheder er lukket. HTML-tags kan bruges title: Lukket tilmelding-besked - deletion: - desc_html: Tillad enhver at slette sin konto - title: Åbn kontosletning require_invite_text: desc_html: Når tilmelding kræver manuel godkendelse, så gør “Hvorfor ønsker du at deltage?” tekstinput obligatorisk i stedet for valgfrit title: Nye brugere afkræves tilmeldingsbegrundelse @@ -1000,10 +984,8 @@ da: warning: Vær meget påpasselig med disse data. Del dem aldrig med nogen! your_token: Dit adgangstoken auth: - apply_for_account: Anmod om en invitation + apply_for_account: Kom på ventelisten change_password: Adgangskode - checkbox_agreement_html: Jeg accepterer serverreglerne og tjenestevilkårene - checkbox_agreement_without_rules_html: Jeg accepterer tjenestevilkårene delete_account: Slet konto delete_account_html: Ønsker du at slette din konto, kan du gøre dette hér. Du vil blive bedt om bekræftelse. description: @@ -1022,6 +1004,7 @@ da: migrate_account: Flyt til en anden konto migrate_account_html: Ønsker du at omdirigere denne konto til en anden, kan du opsætte dette hér. or_log_in_with: Eller log ind med + privacy_policy_agreement_html: Jeg accepterer Fortrolighedspolitikken providers: cas: CAS saml: SAML @@ -1029,12 +1012,18 @@ da: registration_closed: "%{instance} accepterer ikke nye medlemmer" resend_confirmation: Gensend bekræftelsesinstruktioner reset_password: Nulstil adgangskode + rules: + preamble: Disse er opsat og håndhæves af %{domain}-moderatorerne. + title: Nogle grundregler. security: Sikkerhed set_new_password: Opsæt ny adgangskode setup: email_below_hint_html: Er nedenstående e-mailadresse forkert, kan du rette den hér og modtage en ny bekræftelses-e-mail. email_settings_hint_html: Bekræftelsese-mailen er sendt til %{email}. Er denne e-mailadresse forkert, kan du rette den via kontoindstillingerne. title: Opsætning + sign_up: + preamble: Med en konto på denne Mastodon-server vil man kunne følge enhver anden person på netværket, uanset hvor vedkommendes konto hostes. + title: Lad os få dig sat op på %{domain}. status: account_status: Kontostatus confirming: Afventer færdiggørelse af e-mailbekræftelse. @@ -1043,7 +1032,6 @@ da: redirecting_to: Din konto er inaktiv, da den pt. er omdirigerer til %{acct}. view_strikes: Se tidligere anmeldelser af din konto too_fast: Formularen indsendt for hurtigt, forsøg igen. - trouble_logging_in: Indlogningsproblemer? use_security_key: Brug sikkerhedsnøgle authorize_follow: already_following: Du følger allerede denne konto @@ -1624,88 +1612,6 @@ da: too_late: Det er for sent at appellere denne advarsel tags: does_not_match_previous_name: matcher ikke det foregående navn - terms: - body_html: | -

Fortrolighedspolitik

-

Hvilke oplysninger indsamle vi?

- -
    -
  • Grundlæggende kontooplysninger: Registrerer man sig på denne server, kan man blive anmodet om at angive et brugernavn, en e-mail-adresse samt en adgangskode. Der vil også kunne angive yderligere profiloplysninger, såsom visningsnavn og biografi samt uploade et profilbillede og et overskriftsbillede. Brugernavn, visningsnavn, biografien, profilbillede og overskriftsbillede vises altid offentligt.
  • -
  • Opslag, følgninger og andre offentlige oplysninger: Listen over personer, man følger, er offentlig, hvilket ligeledes gælder ens følgere. Når en besked indsendes, gemmes dato og klokkeslæt samt den applikation, hvorfra beskeden blev indsendt. Beskeder kan indeholde medievedhæftningsfiler, såsom billeder og videoer. Offentlige og ikke-listede indlæg er offentligt tilgængelige. Når man fremhæver et opslag på sin profil, er dette også offentligt tilgængelig information. Ens indlæg bliver leveret til ens følgere, hvilket i nogle tilfælde betyder, at de leveres til forskellige servere og kopier lagres dér. Når man sletter indlæg, leveres dette ligeledes til ens følgere. Handlingen at genblogge eller favorisere et andet indlæg er altid offentligt.
  • -
  • Direkte og kun-følgere indlæg: Alle indlæg lagres og behandles på serveren. Kun-følgere Indlæg leveres til ens følgere og brugere, nævnt heri, og direkte indlæg leveres kun til brugere nævnt heri. I visse tilfælde betyder det, at de leveres til forskellige servere, og at kopier lagres dér. Vi gør efter bedste evne indsats for at begrænse adgangen til disse indlæg til autoriserede personer alene, men andre servere kan undlade lignende tiltag. Det er derfor vigtigt at gennemgå servere, ens følgere tilhører. Man kan skifte mellem en mulighed for at godkende og afvise nye følgere manuelt i indstillingerne. Husk, at operatørerne af serveren og enhver modtagende server kan se beskederne, og at modtagere kan tage skærmfotos, kopiere eller på anden vis videredele disse. Del derfor ingen sensitive oplysninger over Mastodon.
  • -
  • IP'er og andre metadata: Når man logger ind, registrerer vi den IP-adresse, der er logget ind fra, samt navnet på browserapplikationen. Man vil kunne gennemgå alle loggede sessioner, f.eks. mhp. tilbagekaldelse via indstillingerne. Den seneste anvendte IP-adresse gemmes i op til 12 måneder. Vi kan også beholde serverlogfiler, som inkluderer IP-adressen for hver anmodning til vores server.
  • -
- -
- -

Hvad bruger vi dine oplysninger til?

- -

Alle indsamlede oplysninger vil kunne bruges på flg. måder:

- -
    -
  • Mhp. at levere kernefunktionaliteten i Mastodon. Man kan kun interagere med andres indhold og poste eget indhold, når man er logget ind. Man kan f.eks. følge andre brugere for at se deres kombinerede indlæg på ens egen personligt tilpassede hjemmetidslinje.
  • -
  • For at hjælpe med fællesskabsmodereringen, f.eks. sammenligning af IP-adressen med andre kendte for at fastslå omgåelse af forbud eller andre overtrædelser.
  • -
  • Den angivne e-mailadresse kan blive brugt til at sende oplysninger, meddelelser om andre personer, som interagerer med ens indhold eller sender beskeder, og til at svare på forespørgsler og/eller andre anmodninger eller spørgsmål.
  • -
- -
- -

Hvordan beskytter vi dine oplysninger?

- -

Vi har implementeret en række sikkerhedsforanstaltninger for at opretholde sikkerheden af ens ​​personlige oplysninger, når man angiver, indsender eller får adgang til sine personlige oplysninger. Blandt andet er ens browsersession, samt trafikken mellem ens applikationer og API'et, sikret med SSL, og ens adgangskode hashes vha. en stærk envejsalgoritme. Man kan aktivere tofaktorgodkendelse for yderligere at sikre adgangen til sin konto.

- -
- -

Hvad er vores politik for dataopbevaring?

- -

Vi vil gøre efter bedste evne indsats for at:

- -
  • Kun opbevare serverlogfiler indeholdende IP-adressen for alle anmodninger til denne server, i det omfang sådanne logfiler opbevares, i maks. 90 dage.
  • -
  • Kun opbevare de IP-adresser, som er tilknyttet registrerede brugere, i maks. 12 måneder.
  • -
- -

Man kan anmode om og downloade et arkiv af sit indhold, inkl. ens indlæg, medievedhæftninger, profilbillede og sidehovedbillede.

- -

Man kan til enhver tid slette sin konto irreversibelt.

- -
- -

Bruger vi cookies?

- -

Ja. Cookies er små filer, som et websted eller dets tjenesteudbyder overfører til en lokal computers harddisk via webbrowseren (såfremt man tillader dette). Cookies muliggør for webstedet at genkende en browser og, hvis man har en registreret konto, knytte den til en registrerer konto.

- -

Vi bruger cookies til at forstå og gemme brugerpræferencer til fremtidige besøg.

- -
- -

Videregiver vi nogen oplysninger til eksterne parter?

- -

Vi hverken sælger, bytter eller overfører på anden vis personligt identificerbare brugeroplysninger til eksterne parter. Dette inkluderer dog ikke betroede tredjeparter, som hjælper os med at drive vores websted, drive vores forretning eller servicere brugere, så længe disse parter accepterer at holde disse oplysninger fortrolige. Vi kan også frigive brugeroplysninger, når vi mener, at frigivelse er passende for at overholde loven, håndhæve vores webstedspolitikker eller beskytte vores eller andres rettigheder, ejendom eller sikkerhed.

- -

Ens offentlige indhold kan blive downloadet af andre servere på netværket. Ens offentlige og kun-følgere indlæg leveres til de servere, hvor ens følgere hidhører, og direkte beskeder leveres til modtagernes servere, i det omfang disse følgere eller modtagere hidhører på en anden server end denne.

- -

Når man godkender en applikation til at bruge ens konto, kan den, afhængigt af tilladelsesomfanget, man godkender, opnå adgang til ens offentlige profiloplysninger, følgende liste, følgere, lister, alle opslag og favoritter. Programmer kan aldrig tilgå ens e-mail-adresse eller adgangskode.

- -
- -

Børns brug af webstedet

- -

Hvis denne server er i EU eller EØS: Vores websted, produkter og tjenester er alle rettet mod et publikum på mindst 16 år. Er man under 16 år, skal man iht. kravene i GDPR (General Data Protection Regulation) ikke bruge dette websted.

- -

Hvis denne server er i USA: Vores websted, produkter og tjenester er alle rettet mod et publikum på mindst 13 år. Er man under 13 år, skal du iht. kravene i COPPA (Children's Online Privacy Protection Act) ikke bruge dette websted.

- -

Lovkravene kan være anderledes, hvis denne server er i en anden jurisdiktion.

- -
- -

Ændringer i vores fortrolighedspolitik

- -

Hvis vi beslutter at ændre vores fortrolighedspolitik, vil sådanne ændringer blive offentliggort på denne side.

- -

Dette dokument er CC-BY-SA. Det er senest opdateret 26. maj 2022.

- -

Oprindeligt tilpasset fra Discourse-fortrolighedspolitik.

- title: "%{instance}-fortrolighedspolitik" themes: contrast: Mastodon (høj kontrast) default: Mastodont (mørkt) @@ -1784,20 +1690,12 @@ da: suspend: Konto suspenderet welcome: edit_profile_action: Opsæt profil - edit_profile_step: Du kan tilpasse din profil ved at uploade profilbillede, overskrift, ændre visningsnavn mm. Ønsker du at vurdere nye følgere, før de må følge dig, kan du låse din konto. + edit_profile_step: Man kan tilpasse sin profil ved at uploade profilfoto, overskrift, ændre visningsnavn mv. Ønskes nye følgere vurderet, før de må følge dig, kan kontoen låses. explanation: Her er nogle råd for at få dig i gang final_action: Begynd at poste - final_step: 'Begynd at poste! Selv uden følgere vil dine offentlige indlæg kunne ses af andre f.eks. på den lokale tidslinje og i hashtags. Du kan introducere dig selv via hastagget #introductions.' full_handle: Dit fulde brugernavn full_handle_hint: Dette er, hvad du oplyser til dine venner, så de kan sende dig beskeder eller følge dig fra andre server. - review_preferences_action: Ændre præferencer - review_preferences_step: Husk at opsætte dine præferencer, såsom hvilke e-mails, du ønsker at modtage, eller hvilket fortrolighedsniveau, der skal være standard for dine opslag. Har du ikke let til køresyge, kan du vælge at aktivere auto-afspilning af GIF'er. subject: Velkommen til Mastodon - tip_federated_timeline: Den fælles tidslinje giver det store overblik over Mastodon-netværket, men den inkluderer kun folk, dine naboer abonnerer på, så den er ikke komplet. - tip_following: Du følger som standard din servers admin(s). For at finde flere interessante folk, så tjek de lokale og fælles tidslinjer. - tip_local_timeline: Den lokale tidslinje er det store overblik over folk på %{instance}, dvs. dine umiddelbare naboer! - tip_mobile_webapp: Tilbyder din mobilbrowser at føje Mastodon til din hjemmeskærm, kan du modtage push-notifikationer. Dette fungerer på mange måder ligesom en almindelig app! - tips: Tips title: Velkommen ombord, %{name}! users: follow_limit_reached: Du kan maks. følge %{limit} personer diff --git a/config/locales/de.yml b/config/locales/de.yml index 1d771a6df2..05c1744545 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -3,38 +3,25 @@ de: about: about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail! about_this: Über diesen Server - active_count_after: aktiv - active_footnote: Monatlich aktive User (MAU) administered_by: 'Betrieben von:' api: API apps: Mobile Apps - apps_platforms: Benutze Mastodon auf iOS, Android und anderen Plattformen - browse_public_posts: Stöbere durch öffentliche Beiträge auf Mastodon contact: Kontakt contact_missing: Nicht angegeben contact_unavailable: Nicht verfügbar - continue_to_web: Weiter zur Web-App documentation: Dokumentation - federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein, Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen. - get_apps: Versuche eine mobile App hosted_on: Mastodon, gehostet auf %{domain} instance_actor_flash: | Dieses Konto ist ein virtueller Akteur, welcher den Server selbst – und nicht einen einzelnen Benutzer – repräsentiert. Dieser wird für Föderationszwecke verwendet und sollte nicht blockiert werden, es sei denn, du möchtest die gesamte Instanz blockieren. - learn_more: Mehr erfahren - logged_in_as_html: Du bist derzeit als %{username} eingeloggt. - logout_before_registering: Du bist bereits angemeldet. privacy_policy: Datenschutzerklärung rules: Server-Regeln rules_html: 'Unten ist eine Zusammenfassung der Regeln, denen du folgen musst, wenn du ein Konto auf diesem Mastodon-Server haben möchtest:' - see_whats_happening: Finde heraus, was gerade in der Welt los ist - server_stats: 'Serverstatistiken:' source_code: Quellcode status_count_after: one: Beitrag other: Beiträge status_count_before: mit - tagline: Dezentrales soziales Netzwerk unavailable_content: Nicht verfügbarer Inhalt unavailable_content_description: domain: Server @@ -767,9 +754,6 @@ de: closed_message: desc_html: Wird auf der Einstiegsseite gezeigt, wenn die Anmeldung geschlossen ist. Du kannst HTML-Tags nutzen title: Nachricht über geschlossene Registrierung - deletion: - desc_html: Allen erlauben, ihr Konto eigenmächtig zu löschen - title: Kontolöschung erlauben require_invite_text: desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den „Warum möchtest du beitreten?“-Text obligatorisch statt optional title: Neue Benutzer müssen einen Einladungstext ausfüllen @@ -1001,10 +985,8 @@ de: warning: Sei mit diesen Daten sehr vorsichtig. Teile sie mit niemandem! your_token: Dein Zugangs-Token auth: - apply_for_account: Eine Einladung anfragen + apply_for_account: Auf Warteliste kommen change_password: Passwort - checkbox_agreement_html: Ich akzeptiere die Server-Regeln und die Nutzungsbedingungen - checkbox_agreement_without_rules_html: Ich stimme den Nutzungsbedingungen zu delete_account: Konto löschen delete_account_html: Falls du dein Konto löschen willst, kannst du hier damit fortfahren. Du wirst um Bestätigung gebeten werden. description: @@ -1023,6 +1005,7 @@ de: migrate_account: Ziehe zu einem anderen Konto um migrate_account_html: Wenn du wünschst, dieses Konto zu einem anderen umzuziehen, kannst du dies hier einstellen. or_log_in_with: Oder anmelden mit + privacy_policy_agreement_html: Ich habe die Datenschutzerklärung gelesen und stimme ihr zu providers: cas: CAS saml: SAML @@ -1030,12 +1013,18 @@ de: registration_closed: "%{instance} akzeptiert keine neuen Mitglieder" resend_confirmation: Bestätigungs-Mail erneut versenden reset_password: Passwort zurücksetzen + rules: + preamble: Diese werden von den Moderatoren von %{domain} erzwungn. + title: Einige Grundregeln. security: Sicherheit set_new_password: Neues Passwort setzen setup: email_below_hint_html: Wenn die unten stehende E-Mail-Adresse falsch ist, kannst du sie hier ändern und eine neue Bestätigungs-E-Mail erhalten. email_settings_hint_html: Die Bestätigungs-E-Mail wurde an %{email} gesendet. Wenn diese E-Mail-Adresse nicht korrekt ist, kannst du sie in den Einstellungen ändern. title: Konfiguration + sign_up: + preamble: Mit einem Account auf diesem Mastodon-Server kannst du jeder anderen Person im Netzwerk folgen, unabhängig davon, wo ihr Account gehostet wird. + title: Okay, lass uns mit %{domain} anfangen. status: account_status: Kontostatus confirming: Warte auf die Bestätigung der E-Mail. @@ -1044,7 +1033,6 @@ de: redirecting_to: Dein Konto ist inaktiv, da es derzeit zu %{acct} umgeleitet wird. view_strikes: Zeige frühere Streiks gegen dein Konto too_fast: Formular zu schnell gesendet, versuche es erneut. - trouble_logging_in: Schwierigkeiten beim Anmelden? use_security_key: Sicherheitsschlüssel verwenden authorize_follow: already_following: Du folgst diesem Konto bereits @@ -1625,57 +1613,6 @@ de: too_late: Es ist zu spät, um gegen diese Verwarnung Einspruch zu erheben tags: does_not_match_previous_name: entspricht nicht dem vorherigen Namen - terms: - body_html: | -

Datenschutzerklärung

-

Welche Informationen sammeln wir?

-
    -
  • Grundlegende Kontoinformationen: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen, wie etwa einen Anzeigenamen oder eine Biografie, eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.
  • -
  • Beiträge, Folge- und andere öffentliche Informationen: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt; das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, ist dies auch eine öffentlich verfügbare Information. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.
  • -
  • Direkte und „Nur Folgende“-Beiträge: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. „Nur Folgende“-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet das, dass sie an andere Server ausgeliefert und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten und dass Empfänger von diesen eine Bildschirmkopie erstellen, sie kopieren oder anderweitig weiterverteilen könnten. Teile keine sensiblen Informationen über Mastodon.
  • -
  • Internet-Protokoll-Adressen (IP-Adressen) und andere Metadaten: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.
  • -
-
-

Für was verwenden wir deine Informationen?

-

Jede der von dir gesammelten Information kann in den folgenden Weisen verwendet werden:

-
    -
  • Um die Kernfunktionalität von Mastodon bereitzustellen. Du kannst du mit dem Inhalt anderer Leute interagieren und deine eigenen Inhalte beitragen, wenn du angemeldet bist. Zum Beispiel kannst du anderen folgen, um deren kombinierten Beiträge in deine personalisierten Start-Timeline zu sehen.
  • -
  • Um Moderation der Community zu ermöglichen, zum Beispiel beim Vergleichen deiner IP-Adresse mit anderen bekannten, um Verbotsumgehung oder andere Vergehen festzustellen.
  • -
  • Die E-Mail-Adresse, die du bereitstellst, kann dazu verwendet werden, dir Informationen, Benachrichtigungen über andere Leute, die mit deinen Inhalten interagieren oder dir Nachrichten senden, und auf Anfragen, Wünsche und/oder Fragen zu antworten.
  • -
-
-

Wie beschützen wir deine Informationen?

-

Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Information sicherzustellen, wenn du persönliche Informationen eingibst, übermittelst oder auf sie zugreifst. Neben anderen Dingen, wird sowohl deine Browsersitzung, als auch der Datenverkehr zwischen deinen Anwendungen und der Programmierschnittstelle (API) mit SSL gesichert, dein Passwort wird mit einem starken Einwegalgorithmus gehasht. Du kannst Zwei-Faktor-Authentifizierung aktivieren, um den Zugriff auf dein Konto zusätzlich abzusichern.

-
-

Was ist unsere Datenspeicherungsrichtlinie?

-

Wir werden mit bestem Wissen und Gewissen:

-
    -
  • Serverprotokolle, die IP-Adressen von allen deinen Anfragen an diesen Server, falls solche Protokolle behalten werden, für nicht mehr als 90 Tage behalten.
  • -
  • registrierten Benutzer zugeordnete IP-Adressen nicht länger als 12 Monate behalten.
  • -
-

Du kannst ein Archiv deines Inhalts anfordern und herunterladen, inkludierend deiner Beiträge, Medienanhänge, Profilbilder und Headerbilder.

-

Es ist in den meisten Fällen möglich dein Konto jederzeit eigenmächtig unwiderruflich zu löschen.

-
-

Verwenden wir Cookies?

-

Ja. Cookies sind kleine Dateien, die eine Webseite oder ihr Serviceanbieter über deinen Webbrowser (sofern er es erlaubt) auf die Festplatte deines Computers überträgt. Diese Cookies ermöglichen es der Seite deinen Browser wiederzuerkennen und, sofern du ein registriertes Konto hast, diesen mit deinem registrierten Konto zu verknüpfen.

-

Wir verwenden Cookies, um deine Einstellungen zu verstehen und für zukünftige Besuche zu speichern.

-
-

Offenbaren wir Informationen an Dritte?

-

Wir verkaufen nicht, handeln nicht mit oder übertragen deine persönlich identifizierbaren Informationen nicht an Dritte. Dies beinhaltet nicht Dritte, die vertrauenswürdig sind und uns beim Betreiben unserer Seite, Leiten unseres Geschäftes oder dabei, die Dienste für dich bereitzustellen, unterstützen, sofern diese Dritte zustimmen, diese Informationen vertraulich zu halten. Wir können auch Informationen freigeben, wenn wir glauben, dass Freigabe angemessen ist, um dem Gesetz zu entsprechen, unsere Seitenrichtlinien durchzusetzen oder unsere Rechte, Eigentum und/oder Sicherheit oder die anderer zu beschützen.

-

Dein öffentlicher Inhalt kann durch andere Server im Netzwerk heruntergeladen werden. Deine öffentlichen und "Nur Folgende"-Beiträge werden an die Server ausgeliefert, bei denen sich deine Folgenden befinden und direkte Nachrichten werden an die Server des Empfängers ausgeliefert, falls diese Folgenden oder Empfänger sich auf einem anderen Server als diesen befinden.

-

Wenn du eine Anwendung autorisierst, dein Konto zu benutzen, kann diese – abhängig von den von dir genehmigten Befugnissen – auf deine öffentlichen Profilinformationen, deine Folgt- und Folgende-Liste, deine Listen, alle deine Beiträge und deine Favoriten zugreifen. Anwendungen können nie auf deine E-Mail-Adresse oder dein Passwort zugreifen

-
-

Webseitenbenutzung durch Kinder

-

Wenn sich dieser Server in der EU oder im Europäischen Wirtschaftsraum befindet: Unsere Website, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 16 Jahre als sind. Wenn du unter 16 bist, darfst du nach den Bestimmungen der DSGVO (Datenschutz-Grundverordnung) diese Webseite nicht benutzen.

-

Wenn sich dieser Server in den USA befindet: Unsere Webseite, Produkte und Dienstleistungen sind alle an Leute gerichtet, die mindestens 13 Jahre alt sind. Wenn du unter 13 bist, darfst du nach den Bestimmungen des COPPA (Children's Online Privacy Protection Act, dt. "Gesetz zum Schutz der Privatsphäre von Kindern im Internet") diese Webseite nicht benutzen.

-

Gesetzesvorschriften können unterschiedlich sein, wenn sich dieser Server in anderer Gerichtsbarkeit befindet.

-
-

Änderung an unserer Datenschutzerklärung

-

Wenn wir uns entscheiden, Änderungen an unserer Datenschutzerklärung vorzunehmen, werden wir diese Änderungen auf dieser Seite bekannt gegeben.

-

Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion.

-

Dieses Dokument ist CC-BY-SA. Es wurde zuletzt aktualisiert am 26. Mai 2022.

-

Ursprünglich übernommen von der Discourse-Datenschutzerklärung.

- title: "%{instance} Datenschutzerklärung" themes: contrast: Mastodon (Hoher Kontrast) default: Mastodon (Dunkel) @@ -1754,20 +1691,13 @@ de: suspend: Konto gesperrt welcome: edit_profile_action: Profil einstellen - edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst oder deinen Anzeigenamen änderst und mehr. Wenn du deine Folgenden vorher überprüfen möchtest, bevor sie dir folgen können, dann kannst du dein Profil sperren. + edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst, deinen Anzeigenamen änderst und viel mehr. Du kannst optional einstellen, ob du Accounts, die dir folgen wollen, akzeptieren musst, bevor sie dies können. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten - final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich mit dem #introductions-Hashtag vorstellen.' + final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Du kannst dich unter dem Hashtag #introductions vorstellen, wenn du magst.' full_handle: Dein vollständiger Benutzername full_handle_hint: Dies ist, was du deinen Freunden sagen kannst, damit sie dich anschreiben oder dir von einem anderen Server folgen können. - review_preferences_action: Einstellungen ändern - review_preferences_step: Stelle sicher, dass du deine Einstellungen einstellst, wie zum Beispiel welche E-Mails du gerne erhalten möchtest oder was für Privatsphäreneinstellungen voreingestellt werden sollten. Wenn dir beim Ansehen von GIFs nicht schwindelig wird, dann kannst du auch das automatische Abspielen dieser aktivieren. subject: Willkommen bei Mastodon - tip_federated_timeline: Die föderierte Zeitleiste ist die sehr große Ansicht vom Mastodon-Netzwerk. Sie enthält aber auch nur Leute, denen du und deine Nachbarn folgen, sie ist also nicht komplett. - tip_following: Du folgst standardmäßig deinen Server-Admin(s). Um mehr interessante Leute zu finden, kannst du die lokale oder öffentliche Zeitleiste durchsuchen. - tip_local_timeline: Die lokale Zeitleiste ist eine Ansicht aller Leute auf %{instance}. Diese sind deine Nachbarn! - tip_mobile_webapp: Wenn dein mobiler Browser dir anbietet, Mastodon zu deinem Startbildschirm hinzuzufügen, dann kannst du Benachrichtigungen erhalten. Es verhält sich wie eine native App in vielen Belangen! - tips: Tipps title: Willkommen an Bord, %{name}! users: follow_limit_reached: Du kannst nicht mehr als %{limit} Leuten folgen diff --git a/config/locales/el.yml b/config/locales/el.yml index 6f42aafd81..7546dd1cae 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -3,36 +3,25 @@ el: about: about_mastodon_html: 'Το κοινωνικό δίκτυο του μέλλοντος: Χωρίς διαφημίσεις, χωρίς εταιρίες να σε κατασκοπεύουν, ηθικά σχεδιασμένο και αποκεντρωμένο! Με το Mastodon τα δεδομένα σου είναι πραγματικά δικά σου!' about_this: Σχετικά - active_count_after: ενεργοί - active_footnote: Μηνιαίοι Ενεργοί Χρήστες (ΜΕΧ) administered_by: 'Διαχειριστής:' api: API apps: Εφαρμογές κινητών - apps_platforms: Χρησιμοποίησε το Mastodon από το iOS, το Android και αλλού - browse_public_posts: Ξεφύλλισε τη ζωντανή ροή του Mastodon contact: Επικοινωνία contact_missing: Δεν έχει οριστεί contact_unavailable: Μη διαθέσιμο documentation: Τεκμηρίωση - federation_hint_html: Με ένα λογαριασμό στο %{instance} θα μπορείς να ακολουθείς ανθρώπους σε οποιοδήποτε κόμβο Mastodon αλλά και παραπέρα. - get_apps: Δοκίμασε μια εφαρμογή κινητού hosted_on: Το Mastodon φιλοξενείται στο %{domain} instance_actor_flash: | Αυτός ο λογαριασμός είναι εικονικός και απεικονίζει ολόκληρο τον κόμβο, όχι κάποιο συγκεκριμένο χρήστη. Χρησιμεύει στη λειτουργία της ομοσπονδίας και δε θα πρέπει να αποκλειστεί, εκτός κι αν είναι επιθυμητός ο αποκλεισμός ολόκληρου του κόμβου. Σε αυτή την περίπτωση θα πρέπει να χρησιμοποιηθεί η λειτουργία αποκλεισμού τομέα. - learn_more: Μάθε περισσότερα - logout_before_registering: Είστε ήδη συνδεδεμένοι. privacy_policy: Πολιτική Απορρήτου rules: Κανόνες διακομιστή rules_html: 'Παρακάτω είναι μια σύνοψη των κανόνων που πρέπει να ακολουθήσετε αν θέλετε να έχετε ένα λογαριασμό σε αυτόν τον διακομιστή Mastodon:' - see_whats_happening: Μάθε τι συμβαίνει - server_stats: 'Στατιστικά κόμβου:' source_code: Πηγαίος κώδικας status_count_after: one: δημοσίευση other: δημοσιεύσεις status_count_before: Που έγραψαν - tagline: Αποκεντρωμένο κοινωνικό δίκτυο unavailable_content: Μη διαθέσιμο unavailable_content_description: domain: Διακομιστής @@ -543,9 +532,6 @@ el: closed_message: desc_html: Εμφανίζεται στην εισαγωγική σελίδα όταν οι εγγραφές είναι κλειστές. Μπορείς να χρησιμοποιήσεις HTML tags title: Μήνυμα κλεισμένων εγγραφών - deletion: - desc_html: Επέτρεψε σε οποιονδήποτε να διαγράψει το λογαριασμό του/της - title: Άνοιξε τη διαγραφή λογαριασμού registrations_mode: modes: approved: Απαιτείται έγκριση για εγγραφή @@ -659,10 +645,7 @@ el: warning: Μεγάλη προσοχή με αυτά τα στοιχεία. Μην τα μοιραστείς ποτέ με κανέναν! your_token: Το διακριτικό πρόσβασής σου (access token) auth: - apply_for_account: Αίτηση πρόσκλησης change_password: Συνθηματικό - checkbox_agreement_html: Συμφωνώ με τους κανονισμούς του κόμβου και τους όρους χρήσης - checkbox_agreement_without_rules_html: Συμφωνώ με τους όρους χρήσης delete_account: Διαγραφή λογαριασμού delete_account_html: Αν θέλεις να διαγράψεις το λογαριασμό σου, μπορείς να συνεχίσεις εδώ. Θα σου ζητηθεί επιβεβαίωση. description: @@ -688,19 +671,22 @@ el: registration_closed: Το %{instance} δεν δέχεται νέα μέλη resend_confirmation: Στείλε ξανά τις οδηγίες επιβεβαίωσης reset_password: Επαναφορά συνθηματικού + rules: + title: Ορισμένοι βασικοί κανόνες. security: Ασφάλεια set_new_password: Ορισμός νέου συνθηματικού setup: email_below_hint_html: Αν η παρακάτω διεύθυνση email είναι λανθασμένη, μπορείτε να την ενημερώσετε και να λάβετε νέο email επιβεβαίωσης. email_settings_hint_html: Το email επιβεβαίωσης στάλθηκε στο %{email}. Αν η διεύθυνση αυτή δεν είναι σωστή, μπορείτε να την ενημερώσετε στις ρυθμίσεις λογαριασμού. title: Ρυθμίσεις + sign_up: + title: Ας ξεκινήσουμε τις ρυθμίσεις στο %{domain}. status: account_status: Κατάσταση λογαριασμού confirming: Αναμονή για ολοκλήρωση επιβεβαίωσης του email. pending: Η εφαρμογή σας εκκρεμεί έγκρισης, πιθανόν θα διαρκέσει κάποιο χρόνο. Θα λάβετε email αν εγκριθεί. redirecting_to: Ο λογαριασμός σου είναι ανενεργός γιατί επί του παρόντος ανακατευθύνει στον %{acct}. too_fast: Η φόρμα υποβλήθηκε πολύ γρήγορα, προσπαθήστε ξανά. - trouble_logging_in: Πρόβλημα σύνδεσης; use_security_key: Χρήση κλειδιού ασφαλείας authorize_follow: already_following: Ήδη ακολουθείς αυτό το λογαριασμό @@ -1139,8 +1125,6 @@ el: sensitive_content: Ευαίσθητο περιεχόμενο tags: does_not_match_previous_name: δεν ταιριάζει με το προηγούμενο όνομα - terms: - title: "%{instance} Πολιτική Απορρήτου" themes: contrast: Mastodon (Υψηλή αντίθεση) default: Mastodon (Σκοτεινό) @@ -1181,20 +1165,11 @@ el: suspend: Λογαριασμός σε αναστολή welcome: edit_profile_action: Στήσιμο προφίλ - edit_profile_step: Μπορείς να προσαρμόσεις το προφίλ σου ανεβάζοντας μια εικόνα εμφάνισης & επικεφαλίδας, αλλάζοντας το εμφανιζόμενο όνομά σου και άλλα. Αν θες να ελέγχεις τους νέου σου ακόλουθους πριν αυτοί σε ακολουθήσουν, μπορείς να κλειδώσεις το λογαριασμό σου. explanation: Μερικές συμβουλές για να ξεκινήσεις final_action: Ξεκίνα τις δημοσιεύσεις - final_step: 'Ξεκίνα τις δημοσιεύσεις! Ακόμα και χωρίς ακόλουθους τα δημόσια μηνύματά σου μπορεί να τα δουν άλλοι, για παράδειγμα στην τοπική ροή και στις ετικέτες. Ίσως να θέλεις να κάνεις μια εισαγωγή του εαυτού σου με την ετικέτα #introductions.' full_handle: Το πλήρες όνομά σου full_handle_hint: Αυτό θα εδώ θα πεις στους φίλους σου για να σου μιλήσουν ή να σε ακολουθήσουν από άλλο κόμβο. - review_preferences_action: Αλλαγή προτιμήσεων - review_preferences_step: Σιγουρέψου πως έχεις ορίσει τις προτιμήσεις σου, όπως το ποια email θέλεις να λαμβάνεις, ή ποιο επίπεδο ιδιωτικότητας θέλεις να έχουν οι δημοσιεύσεις σου. Αν δεν σε πιάνει ναυτία, μπορείς να ενεργοποιήσεις την αυτόματη αναπαραγωγή των GIF. subject: Καλώς ήρθες στο Mastodon - tip_federated_timeline: Η ομοσπονδιακή ροή είναι μια όψη πραγματικού χρόνου στο δίκτυο του Mastodon. Παρόλα αυτά, περιλαμβάνει μόνο όσους ακολουθούν οι γείτονές σου, άρα δεν είναι πλήρης. - tip_following: Ακολουθείς το διαχειριστή του διακομιστή σου αυτόματα. Για να βρεις περισσότερους ενδιαφέροντες ανθρώπους, έλεγξε την τοπική και την ομοσπονδιακή ροή. - tip_local_timeline: Η τοπική ροή είναι η όψη πραγματικού χρόνου των ανθρώπων στον κόμβο %{instance}. Αυτοί είναι οι άμεσοι γείτονές σου! - tip_mobile_webapp: Αν ο φυλλομετρητής (browser) στο κινητό σού σου επιτρέπει να προσθέσεις το Mastodon στην αρχική οθόνη της συσκευής, θα λαμβάνεις και ειδοποιήσεις μέσω push. Σε πολλά πράγματα λειτουργεί σαν κανονική εφαρμογή! - tips: Συμβουλές title: Καλώς όρισες, %{name}! users: follow_limit_reached: Δεν μπορείς να ακολουθήσεις περισσότερα από %{limit} άτομα diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 91954dabfb..0e849f13ce 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -3,36 +3,23 @@ eo: about: about_mastodon_html: 'Mastodon estas socia retejo de la estonteco: sen reklamo, sen kompania gvato, etika dezajno kaj malcentraligo! Vi regu viajn datumojn kun Mastodon!' about_this: Pri - active_count_after: aktivaj - active_footnote: Monate Aktivaj Uzantoj (MAU) administered_by: 'Administrata de:' api: API apps: Poŝtelefonaj aplikaĵoj - apps_platforms: Uzu Mastodon de iOS, Android, kaj aliaj substratoj - browse_public_posts: Vidi vivantan fluon de publikaj mesaĝoj al Mastodon contact: Kontakto contact_missing: Ne ŝargita contact_unavailable: Ne disponebla - continue_to_web: Daŭrigi al la retaplikaĵo documentation: Dokumentado - federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter. - get_apps: Provu telefonan aplikaĵon hosted_on: "%{domain} estas nodo de Mastodon" instance_actor_flash: 'Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo, kaj devas ne esti brokita, krom se vi ne volas bloki la tutan servilon, tiuokaze vi devas uzi blokadon de domajno. ' - learn_more: Lerni pli - logged_in_as_html: Vi nun salutis kiel %{username}. - logout_before_registering: Vi jam salutis. rules: Reguloj de la servilo - see_whats_happening: Vidi kio okazas - server_stats: 'Statistikoj de la servilo:' source_code: Fontkodo status_count_after: one: mesaĝo other: mesaĝoj status_count_before: Kie skribiĝis - tagline: Malcentrigita socia retejo unavailable_content: Moderigitaj serviloj unavailable_content_description: domain: Servilo @@ -560,9 +547,6 @@ eo: closed_message: desc_html: Montrita sur la hejma paĝo kiam registriĝoj estas fermitaj. Vi povas uzi HTML-etikedojn title: Mesaĝo pri fermitaj registriĝoj - deletion: - desc_html: Permesi al iu ajn forigi propran konton - title: Permesi forigi konton registrations_mode: modes: approved: Bezonas aprobi por aliĝi @@ -697,10 +681,7 @@ eo: warning: Estu tre atenta kun ĉi tiu datumo. Neniam diskonigu ĝin al iu ajn! your_token: Via alira ĵetono auth: - apply_for_account: Peti inviton change_password: Pasvorto - checkbox_agreement_html: Mi samopinii al la Servo reguloj kaj kondiĉo al servadon - checkbox_agreement_without_rules_html: Mi konsenti la reguloj de servado delete_account: Forigi konton delete_account_html: Se vi deziras forigi vian konton, vi povas fari tion ĉi tie. Vi bezonos konfirmi vian peton. description: @@ -732,7 +713,6 @@ eo: status: account_status: Statuso de la konto too_fast: Formularo sendita tro rapide, klopodu denove. - trouble_logging_in: Ĝeni ensaluti? use_security_key: Uzi sekurecan ŝlosilon authorize_follow: already_following: Vi jam sekvas tiun konton @@ -1240,20 +1220,11 @@ eo: suspend: Konto suspendita welcome: edit_profile_action: Agordi profilon - edit_profile_step: Vi povas personecigi vian profilon en alŝuto de rolfiguro, paĝokapa bildo, en ŝanĝo de via vidiga nomo kaj pli. Se vi volas ekzameni novajn sekvantojn antaŭ ol permesi al ili aboni vin, vi povas agordi vian konton kiel privata. explanation: Jen kelkaj konsiloj por helpi vin komenci final_action: Ekmesaĝi - final_step: 'Ekmesaĝu! Eĉ sen sekvantoj, viaj publikaj mesaĝoj povas esti vidataj de aliaj, ekzemple en la loka templinio kaj en la kradvortoj. Eble vi ŝatus prezenti vin per la kradvorto #introductions.' full_handle: Via kompleta uzantnomo full_handle_hint: Jen kion vi dirus al viaj amikoj, por ke ili mesaĝu aŭ sekvu vin de alia servilo. - review_preferences_action: Ŝanĝi preferojn - review_preferences_step: Estu certa ke vi agordis viajn preferojn, kiel kiujn retmesaĝojn vi ŝatus ricevi, aŭ kiun dekomencan privatecan nivelon vi ŝatus ke viaj mesaĝoj havu. Se tio ne ĝenas vin, vi povas ebligi aŭtomatan ekigon de GIF-oj. subject: Bonvenon en Mastodon - tip_federated_timeline: La fratara templinio estas rekta montro de la reto de Mastodon. Sed ĝi inkluzivas nur personojn kiujn viaj najbaroj abonas, do ĝi ne estas kompleta. - tip_following: Vi dekomence sekvas la administrantojn de via servilo. Por trovi pli da interesaj homoj, rigardu la lokan kaj frataran templiniojn. - tip_local_timeline: La loka templinio estas rekta montro de personoj ĉe %{instance}. Ĉi tiuj estas viaj senperaj najbaroj! - tip_mobile_webapp: Se via telefona retumilo proponas al vi aldoni Mastodon al via hejma ekrano, vi povas ricevi puŝsciigojn. Tio multmaniere funkcias kiel operaciuma aplikaĵo! - tips: Konsiloj title: Bonvenon, %{name}! users: follow_limit_reached: Vi ne povas sekvi pli ol %{limit} homo(j) diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index d76d76c430..8337c73838 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -3,38 +3,25 @@ es-AR: about: about_mastodon_html: 'La red social del futuro: ¡sin publicidad, sin vigilancia corporativa, con diseño ético y descentralización! ¡Con Mastodon vos sos el dueño de tus datos!' about_this: Acerca de Mastodon - active_count_after: activo - active_footnote: Usuarios activos mensualmente (MAU) administered_by: 'Administrado por:' api: API apps: Aplicaciones móviles - apps_platforms: Usá Mastodon desde iOS, Android y otras plataformas - browse_public_posts: Explorá un flujo en tiempo real de mensajes públicos en Mastodon contact: Contacto contact_missing: No establecido contact_unavailable: No disponible - continue_to_web: Continuar con la aplicación web documentation: Documentación - federation_hint_html: Con una cuenta en %{instance} vas a poder seguir a cuentas de cualquier servidor de Mastodon y más allá. - get_apps: Probá una aplicación móvil hosted_on: Mastodon alojado en %{domain} instance_actor_flash: | Esta cuenta es un actor virtual usado para representar al propio servidor y no a ningún usuario individual. Se usa para fines federativos y no debe ser bloqueado a menos que quieras bloquear toda la instancia, en cuyo caso deberías usar un bloqueo de dominio. - learn_more: Aprendé más - logged_in_as_html: Actualmente iniciaste sesión como %{username}. - logout_before_registering: Ya iniciaste sesión. privacy_policy: Política de privacidad rules: Reglas del servidor rules_html: 'Abajo hay un resumen de las reglas que tenés que seguir si querés tener una cuenta en este servidor de Mastodon:' - see_whats_happening: Esto es lo que está pasando ahora - server_stats: 'Estadísticas del servidor:' source_code: Código fuente status_count_after: one: mensaje other: mensajes status_count_before: Que enviaron - tagline: Red social descentralizada unavailable_content: Servidores moderados unavailable_content_description: domain: Servidor @@ -767,9 +754,6 @@ es-AR: closed_message: desc_html: Mostrado en la página principal cuando los registros de nuevas cuentas están cerrados. Podés usar etiquetas HTML title: Mensaje de registro de nuevas cuentas cerrado - deletion: - desc_html: Permitir que cualquiera elimine su cuenta - title: Abrir eliminación de cuenta require_invite_text: desc_html: Cuando los registros requieran aprobación manual, hacé que la solicitud de invitación "¿Por qué querés unirte?" sea obligatoria, en vez de opcional title: Requerir que los nuevos usuarios llenen un texto de solicitud de invitación @@ -1001,10 +985,8 @@ es-AR: warning: Ojo con estos datos. ¡Nunca los compartas con nadie! your_token: Tu clave de acceso auth: - apply_for_account: Solicitar una invitación + apply_for_account: Entrar en la lista de espera change_password: Contraseña - checkbox_agreement_html: Acepto las reglas del servidor y los términos del servicio - checkbox_agreement_without_rules_html: Acepto los términos del servicio delete_account: Eliminar cuenta delete_account_html: Si querés eliminar tu cuenta, podés seguir por acá. Se te va a pedir una confirmación. description: @@ -1023,6 +1005,7 @@ es-AR: migrate_account: Mudarse a otra cuenta migrate_account_html: Si querés redireccionar esta cuenta a otra distinta, podés configurar eso acá. or_log_in_with: O iniciar sesión con + privacy_policy_agreement_html: Leí y acepto la política de privacidad providers: cas: CAS saml: SAML @@ -1030,12 +1013,18 @@ es-AR: registration_closed: "%{instance} no está aceptando nuevos miembros" resend_confirmation: Reenviar correo electrónico de confirmación reset_password: Cambiar contraseña + rules: + preamble: Estas reglas son establecidas y aplicadas por los moderadores de %{domain}. + title: Algunas reglas básicas. security: Seguridad set_new_password: Establecer nueva contraseña setup: email_below_hint_html: Si la dirección de correo electrónico que aparece a continuación es incorrecta, podés cambiarla acá y recibir un nuevo correo electrónico de confirmación. email_settings_hint_html: Se envió el correo electrónico de confirmación a %{email}. Si esa dirección de correo electrónico no es correcta, podés cambiarla en la configuración de la cuenta. title: Configuración + sign_up: + preamble: Con una cuenta en este servidor de Mastodon, podrás seguir a cualquier otra cuenta en la red, independientemente de en qué servidor esté alojada su cuenta. + title: Dejá que te preparemos en %{domain}. status: account_status: Estado de la cuenta confirming: Esperando confirmación de correo electrónico. @@ -1044,7 +1033,6 @@ es-AR: redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}. view_strikes: Ver incumplimientos pasados contra tu cuenta too_fast: Formulario enviado demasiado rápido, probá de nuevo. - trouble_logging_in: "¿Tenés problemas para iniciar sesión?" use_security_key: Usar la llave de seguridad authorize_follow: already_following: Ya estás siguiendo a esta cuenta @@ -1625,89 +1613,6 @@ es-AR: too_late: Es demasiado tarde para apelar este incumplimiento tags: does_not_match_previous_name: no coincide con el nombre anterior - terms: - body_html: | -

Política de privacidad

-

¿Qué información recolectamos?

- -
    -
  • Información básica de la cuenta: Si te registrás en este servidor, se te va a pedir que ingresés un nombre de usuario, una dirección de correo electrónico y una contraseña. También podés ingresar información adicional de perfil, como un nombre a mostrar y una biografía/descripción sobre vos mismo, así como subir una imagen de avatar y una imagen de cabecera. El nombre de usuario, el nombre a mostrar, la biografía y las imágenes de avatar y cabecera siempre se muestran públicamente.
  • -
  • Mensajes, seguimientos y otra información pública: La lista de gente que seguís se muestra públicamente; lo mismo ocurre con tus seguidores. Cuando enviás un mensaje, la fecha y la hora de ese mensajes queda registrada, así como el nombre del programa o la aplicación que usaste para enviar dicho mensaje. Los mensajes pueden contener archivos adjuntos de medios, como audios, imágenes o videos. No sólo los mensajes públicos están disponibles públicamente, sino también aquellos mensajes no listados. Cuando destacás un mensaje en tu perfil, esta información también está disponible de modo público. Tus mensajes son entregados a tus seguidores; en muchos casos, eso significa que son entregados a diferentes servidores y que las copias de esos mensajes quedan almacenadas allí. Cuando eliminás mensajes, esta acción también es entregada a tus seguidores. La acción de adherir a un mensaje o de marcarlo como favorito siempre es pública.
  • -
  • Mensajes sólo para seguidores y directos: Todos los mensajes son almacenados y procesados en el servidor. Los mensajes sólo para seguidores son entregados a tus seguidores y a los usuarios que son mencionados en ellos, mientras que los mensajes directos son entregados sólo a los usuarios mencionados en ellos; en muchos casos, eso significa que son entregados a diferentes servidores y las copias de esos mensajes quedan almacenadas allí. Hacemos el esfuerzo de buena fe para limitar el acceso a esos mensajes sólo a las cuentas autorizadas, pero otros servidores podrían no seguir estas pautas. Por lo tanto, es importante revisar los servidores a los cuales pertenecen tus seguidores. Podés activar una opción para aprobar y rechazar nuevos seguidores manualmente en la configuración de tu cuenta de Mastodon. Por favor, tené en mente que los operadores del servidor y de cualquier servidor receptor podría ver tales mensajes, y que los destinatarios podrías tomar capturas de pantalla, copiarlos o recompartirlos entre ellos. No compartas ninguna información sensible al usar Mastodon.
  • -
  • Dirección IP y otros metadatos: Cuando iniciás sesión, registramos tu dirección IP, así como el nombre de tu navegador web o programa/aplicación. Todas las sesiones registradas están disponibles para que la revisés y revoqués en la configuración de tu cuenta de Mastodon. La última dirección IP usada es almacenada por hasta 12 meses. También podríamos retener registros de servidor, los cuales incluyen la dirección IP de cada solicitud a nuestro servidor.
  • -
- -
- -

¿Para qué usamos esta información?

- -

Cualquier información que recolectamos de vos puede ser usada de las siguientes maneras:

- -
    -
  • Para proveer la funcionalidad central de Mastodon. Sólo podés interactuar con el contenido de otras cuentas y enviar tu propio contenido cuando iniciaste sesión. Por ejemplo, podrías seguir otras cuentas para ver sus mensajes combinados en tu propia línea temporal principal personalizada.
  • -
  • Para ayudar a la moderación de la comunidad, por ejemplo comparando tu dirección IP con otras conocidas, para determinar la evasión de expulsaciones u otras violaciones.
  • -
  • La dirección de correo electrónico que ofrecés puede ser usada para enviarte información, notificaciones sobre otras cuentas interactuando con tu contenido o enviándote mensajes, y responder a consultas y/u otras solicitudes o consultas.
  • -
- -
- -

¿Cómo protegemos tu información?

- -

Implementamos una variedad de medidas de seguridad para mantener la seguridad de tu información personal cuando ingresás, enviás o accedés a tu información personal. Entre otras cosas, la sesión de tu navegador web o programa/aplicación, así como el tráfico entre tus aplicaciones y la API, están aseguradas con SSL, y tu contraseña está cifrada usando un fuerte algoritmo de un solo sentido. Podés habilitar la autenticación de dos factores para fortalecer el acceso seguro a tu cuenta.

- -
- -

¿Cuál es nuestra política de retención?

- -

Haremos el esfuerzo de buena fe para:

- -
    -
  • Retener los registros de servidor conteniendo las direcciones IP de todas las solicitudes a este servidor, por no más de 90 días.
  • -
  • Retener las direcciones IP asociadas a los usuarios registrados por no más de 12 meses.
  • -
- -

Podés solicitar y descargar un archivo de tu contenido, incluyendo tus mensajes, archivos adjuntos de medios e imágenes de avatar y cabecera.

- -

Podés eliminar tu cuenta de forma irreversible en cualquier momento.

- -
- -

¿Usamos cookies?

- -

Sí. Las cookies son diminutos archivos que un sitio web o su provedor de servicio transfiere a la unidad de almacenamiento de tu computadora a través de tu navegador web (si así lo permitís). Estas cookies habilitan al sitio web a reconocer a tu navegador web y, si tenés una cuenta registrada, asociarlo a tu cuenta registrada.

- -

Usamos cookies para entender y guardar tu configuración para futuras visitas.

- -
- -

¿Revelamos alguna información a entidades externas?

- -

No vendemos, intercambiamos ni transferimos tu información personal identificable a entidades externas. Esto no incluye terceros de confianza quienes nos asisten en operar nuestro sitio web, dirigir nuestro negocio u ofrecerte servicios, mientras esos terceros acepten conservar esa información de modo confidencial. También podríamos liberar tu información cuando creemos que liberarla es apropiado para cumplir con la ley, enforzar nuestras políticas del sitio web, o proteger nuestros u otros derechos, propiedad o seguridad.

- -

Tu contenido público puede ser descargado por otros servidores en la red. Tus mensajes públicos y sólo para seguidores son entregados a los servidores en donde tus seguidores tienen cuenta, y los mensajes directos son entregados a los servidores de los destinatarios, es decir en los servidores en los que esos seguidores o destinatarios tengan su cuenta, diferentes de este servidor.

- -

Cuando autorizás a un programa o aplicación a usar tu cuenta, dependiendo del alcance de los permisos que aprobés, podría acceder a tu información pública de perfil, tu lista de seguimientos, tus listas, todos tus mensajes y tus mensajes marcados como favoritos. Los programas o aplicaciones jamás pueden acceder a tu dirección de correo electrónico o contraseña.

- -
- -

Sitio web usado por niños

- -

Si este servidor está ubicado geográficamente en la Unión Europea o en el Espacio Económico Europeo: Nuestro sitio web, productos y servicios son todos dirigios a personas de al menos 16 años de edad. Si tenés menos de 16 años, por los requerimientos del GDPR (Reglamento General de Protección de Datos) no usés este sitio web.

- -

Si este servidor está ubicado geográficamente en los Estados Unidos de América: Nuestro sitio web, productos y servicios son todos dirigidos a personas de al menos 13 años de edad. Si tenés menos de 13 años, por los requerimientos de la COPPA (Ley de Protección de la Privacidad en Línea para Niños) no usés este sitio web.

- -

Los requerimientos legales pueden ser diferente en este servidor si se encuentra geográficamente en otra jurisdicción.

- -
- -

Cambios a nuestra Política de privacidad

- -

Si decidimos cambiar nuestra política de privacidad, publicaremos dichos cambios en esta página.

- -

Este documento se publica bajo la licencia CC-BY-SA (Creative Commons - Atribución - CompartirIgual) y fue actualizado por última vez el 26 de mayo de 2022.

- -

Originalmente adaptado de la Política de privacidad de Discourse.

- title: Política de privacidad de %{instance} themes: contrast: Alto contraste default: Oscuro @@ -1786,20 +1691,13 @@ es-AR: suspend: Cuenta suspendida welcome: edit_profile_action: Configurar perfil - edit_profile_step: Podés personalizar tu perfil subiendo un avatar, una cabecera, cambiando tu nombre para mostrar y más cosas. Si querés revisar a tus nuevos seguidores antes de que se les permita seguirte, podés hacer tu cuenta privada. + edit_profile_step: Podés personalizar tu perfil subiendo un avatar (imagen de perfil), cambiando tu nombre a mostrar y más. Podés optar por revisar a los nuevos seguidores antes de que puedan seguirte. explanation: Aquí hay algunos consejos para empezar final_action: Empezá a enviar mensajes - final_step: ¡Empezá a enviar mensajes! Incluso sin seguidores, tus mensajes públicos pueden ser vistos por otros, por ejemplo en la linea temporal local, y con etiquetas. Capaz que quieras presentarte al mundo con la etiqueta "#presentación". + final_step: "¡Empezá a enviar mensajes! Incluso sin seguidores, tus mensajes públicos pueden ser vistos por otros, por ejemplo en la linea temporal local o al usar etiquetas. Capaz que quieras presentarte al mundo con la etiqueta «#presentación»." full_handle: Tu nombre de usuario completo full_handle_hint: Esto es lo que le dirás a tus contactos para que ellos puedan enviarte mensajes o seguirte desde otro servidor. - review_preferences_action: Cambiar configuración - review_preferences_step: Asegurate de establecer tu configuración, como qué tipo de correos electrónicos te gustaría recibir, o qué nivel de privacidad te gustaría que sea el predeterminado para tus mensajes. Si no sufrís de mareos, podrías elegir habilitar la reproducción automática de GIFs. subject: Bienvenido a Mastodon - tip_federated_timeline: La línea temporal federada es una línea contínua global de la red de Mastodon. Pero sólo incluye gente que tus vecinos están siguiendo, así que no es completa. - tip_following: Predeterminadamente seguís al / a los administrador/es de tu servidor. Para encontrar más gente interesante, revisá las lineas temporales local y federada. - tip_local_timeline: La línea temporal local es una línea contínua global de cuentas en %{instance}. ¡Estos son tus vecinos inmediatos! - tip_mobile_webapp: Si tu navegador web móvil te ofrece agregar Mastodon a tu página de inicio, podés recibir notificaciones push. ¡Actúa como una aplicación nativa de muchas maneras! - tips: Consejos title: "¡Bienvenido a bordo, %{name}!" users: follow_limit_reached: No podés seguir a más de %{limit} cuentas diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 482acbe21e..c19e8322d4 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -3,38 +3,25 @@ es-MX: about: about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' about_this: Información - active_count_after: activo - active_footnote: Usuarios Activos Mensuales (UAM) administered_by: 'Administrado por:' api: API apps: Aplicaciones móviles - apps_platforms: Utiliza Mastodon desde iOS, Android y otras plataformas - browse_public_posts: Navega por un transmisión en vivo de publicaciones públicas en Mastodon contact: Contacto contact_missing: No especificado contact_unavailable: No disponible - continue_to_web: Continuar a la aplicación web documentation: Documentación - federation_hint_html: Con una cuenta en %{instance} usted podrá seguir a las personas en cualquier servidor de Mastodon y más allá. - get_apps: Probar una aplicación móvil hosted_on: Mastodon hosteado en %{domain} instance_actor_flash: | Esta cuenta es un actor virtual usado para representar al servidor y no a ningún usuario individual. Se usa para fines federativos y no debe ser bloqueado a menos que usted quiera bloquear toda la instancia, en cuyo caso se debe utilizar un bloque de dominio. - learn_more: Aprende más - logged_in_as_html: Actualmente estás conectado como %{username}. - logout_before_registering: Actualmente ya has iniciado sesión. privacy_policy: Política de Privacidad rules: Normas del servidor rules_html: 'A continuación hay un resumen de las normas que debes seguir si quieres tener una cuenta en este servidor de Mastodon:' - see_whats_happening: Ver lo que está pasando - server_stats: 'Datos del servidor:' source_code: Código fuente status_count_after: one: estado other: estados status_count_before: Qué han escrito - tagline: Red social descentralizada unavailable_content: Contenido no disponible unavailable_content_description: domain: Servidor @@ -767,9 +754,6 @@ es-MX: closed_message: desc_html: Se muestra en la portada cuando los registros están cerrados. Puedes usar tags HTML title: Mensaje de registro cerrado - deletion: - desc_html: Permite a cualquiera a eliminar su cuenta - title: Eliminación de cuenta abierta require_invite_text: desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación @@ -1001,10 +985,8 @@ es-MX: warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie! your_token: Tu token de acceso auth: - apply_for_account: Solicitar una invitación + apply_for_account: Entrar en la lista de espera change_password: Contraseña - checkbox_agreement_html: Acepto las reglas del servidor y términos de servicio - checkbox_agreement_without_rules_html: Acepto los términos de servicio delete_account: Borrar cuenta delete_account_html: Si desea eliminar su cuenta, puede proceder aquí. Será pedido de una confirmación. description: @@ -1023,6 +1005,7 @@ es-MX: migrate_account: Mudarse a otra cuenta migrate_account_html: Si deseas redireccionar esta cuenta a otra distinta, puedes configurarlo aquí. or_log_in_with: O inicia sesión con + privacy_policy_agreement_html: He leído y acepto la política de privacidad providers: cas: CAS saml: SAML @@ -1030,12 +1013,18 @@ es-MX: registration_closed: "%{instance} no está aceptando nuevos miembros" resend_confirmation: Volver a enviar el correo de confirmación reset_password: Restablecer contraseña + rules: + preamble: Estas son establecidas y aplicadas por los moderadores de %{domain}. + title: Algunas reglas básicas. security: Cambiar contraseña set_new_password: Establecer nueva contraseña setup: email_below_hint_html: Si la dirección de correo electrónico que aparece a continuación es incorrecta, se puede cambiarla aquí y recibir un nuevo correo electrónico de confirmación. email_settings_hint_html: El correo electrónico de confirmación fue enviado a %{email}. Si esa dirección de correo electrónico no sea correcta, se puede cambiarla en la configuración de la cuenta. title: Configuración + sign_up: + preamble: Con una cuenta en este servidor de Mastodon, podrás seguir a cualquier otra persona en la red, independientemente de en qué servidor esté su cuenta. + title: Vamos a configurar el %{domain}. status: account_status: Estado de la cuenta confirming: Esperando confirmación de correo electrónico. @@ -1044,7 +1033,6 @@ es-MX: redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}. view_strikes: Ver amonestaciones pasadas contra tu cuenta too_fast: Formulario enviado demasiado rápido, inténtelo de nuevo. - trouble_logging_in: "¿Problemas para iniciar sesión?" use_security_key: Usar la clave de seguridad authorize_follow: already_following: Ya estás siguiendo a esta cuenta @@ -1625,56 +1613,6 @@ es-MX: too_late: Es demasiado tarde para apelar esta amonestación tags: does_not_match_previous_name: no coincide con el nombre anterior - terms: - body_html: | -

Política de Privacidad

-

¿Qué información recogemos?

-
    -
  • Información básica sobre su cuenta: Si se registra en este servidor, se le requerirá un nombre de usuario, una dirección de correo electrónico y una contraseña. Además puede incluir información adicional en el perfil como un nombre de perfil y una biografía, y subir una foto de perfil y una imagen de cabecera. El nombre de usuario, nombre de perfil, biografía, foto de perfil e imagen de cabecera siempre son visibles públicamente
  • -
  • Publicaciones, seguimiento y otra información pública: La lista de gente a la que sigue es mostrada públicamente, al igual que sus seguidores. Cuando publica un mensaje, la fecha y hora es almacenada, así como la aplicación desde la cual publicó el mensaje. Los mensajes pueden contener archivos adjuntos multimedia, como imágenes y vídeos. Las publicaciones públicas y no listadas están disponibles públicamente. Cuando destaca una entrada en su perfil, también es información disponible públicamente. Sus publicaciones son entregadas a sus seguidores, en algunos casos significa que son entregadas a diferentes servidores y las copias son almacenadas allí. Cuando elimina publicaciones, esto también se transfiere a sus seguidores. La acción de rebloguear o marcar como favorito otra publicación es siempre pública.
  • -
  • Publicaciones directas y sólo para seguidores: Todos los mensajes se almacenan y procesan en el servidor. Los mensajes sólo para seguidores se entregan a los seguidores y usuarios que se mencionan en ellos, y los mensajes directos se entregan sólo a los usuarios que se mencionan en ellos. En algunos casos significa que se entregan a diferentes servidores y que las copias se almacenan allí. Hacemos un esfuerzo de buena fe para limitar el acceso a esas publicaciones sólo a las personas autorizadas, pero otros servidores pueden no hacerlo. Por lo tanto, es importante revisar los servidores a los que pertenecen sus seguidores. Puede cambiar una opción para aprobar y rechazar nuevos seguidores manualmente en la configuración Por favor, tenga en cuenta que los operadores del servidor y de cualquier servidor receptor pueden ver dichos mensajes, y que los destinatarios pueden capturarlos, copiarlos o volver a compartirlos de alguna otra manera. No comparta ninguna información sensible en Mastodon.
  • -
  • Direcciones IP y otros metadatos: Al iniciar sesión, registramos la dirección IP desde la que se ha iniciado sesión, así como el nombre de la aplicación de su navegador. Todas las sesiones iniciadas están disponibles para su revisión y revocación en los ajustes. La última dirección IP utilizada se almacena hasta 12 meses. También podemos conservar los registros del servidor que incluyen la dirección IP de cada solicitud a nuestro servidor.
  • -
-
-

¿Para qué utilizamos su información?

-

Toda la información que obtenemos de usted puede ser utilizada de las siguientes maneras:

-
    -
  • Para proporcionar la funcionalidad principal de Mastodon. Sólo puedes interactuar con el contenido de otras personas y publicar tu propio contenido cuando estés conectado. Por ejemplo, puedes seguir a otras personas para ver sus mensajes combinados en tu propia línea de tiempo personalizada.
  • -
  • Para ayudar a la moderación de la comunidad, por ejemplo, comparando su dirección IP con otras conocidas para determinar la evasión de prohibiciones u otras violaciones.
  • -
  • La dirección de correo electrónico que nos proporcione podrá utilizarse para enviarle información, notificaciones sobre otras personas que interactúen con su contenido o para enviarle mensajes, así como para responder a consultas y/u otras solicitudes o preguntas.
  • -
-
-

¿Cómo protegemos su información?

-

Implementamos una variedad de medidas de seguridad para mantener la seguridad de su información personal cuando usted ingresa, envía o accede a su información personal. Entre otras cosas, la sesión de su navegador, así como el tráfico entre sus aplicaciones y la API, están protegidos con SSL, y su contraseña está protegida mediante un algoritmo unidireccional fuerte. Puede habilitar la autenticación de dos factores para un acceso más seguro a su cuenta.

-
-

¿Cuál es nuestra política de retención de datos?

-

Haremos un esfuerzo de buena fe para:

-
    -
  • Conservar los registros del servidor que contengan la dirección IP de todas las peticiones a este servidor, en la medida en que se mantengan dichos registros, no más de 90 días.
  • -
  • Conservar las direcciones IP asociadas a los usuarios registrados no más de 12 meses.
  • -
-

Puede solicitar y descargar un archivo de su contenido, incluidos sus mensajes, archivos adjuntos multimedia, foto de perfil e imagen de cabecera.

-

Usted puede borrar su cuenta de forma irreversible en cualquier momento.

-
-

¿Utilizamos cookies?

-

Sí. Las cookies son pequeños archivos que un sitio o su proveedor de servicios transfiere al disco duro de su ordenador a través de su navegador web (si usted lo permite). Estas cookies permiten al sitio reconocer su navegador y, si tiene una cuenta registrada, asociarla con su cuenta registrada.

-

Utilizamos cookies para entender y guardar sus preferencias para futuras visitas.

-
-

¿Revelamos alguna información a terceros?

-

No vendemos, comerciamos ni transferimos a terceros su información personal identificable. Esto no incluye a los terceros de confianza que nos asisten en la operación de nuestro sitio, en la realización de nuestros negocios o en la prestación de servicios, siempre y cuando dichas partes acuerden mantener la confidencialidad de esta información. También podemos divulgar su información cuando creamos que es apropiado para cumplir con la ley, hacer cumplir las políticas de nuestro sitio, o proteger nuestros u otros derechos, propiedad o seguridad.

-

Su contenido público puede ser descargado por otros servidores de la red. Tus mensajes públicos y sólo para seguidores se envían a los servidores donde residen tus seguidores, y los mensajes directos se envían a los servidores de los destinatarios, en la medida en que dichos seguidores o destinatarios residan en un servidor diferente.

-

Cuando usted autoriza a una aplicación a usar su cuenta, dependiendo del alcance de los permisos que usted apruebe, puede acceder a la información de su perfil público, su lista de seguimiento, sus seguidores, sus listas, todos sus mensajes y sus favoritos. Las aplicaciones nunca podrán acceder a su dirección de correo electrónico o contraseña.

-
-

Uso del sitio por parte de los niños

-

Si este servidor está en la UE o en el EEE: Nuestro sitio, productos y servicios están dirigidos a personas mayores de 16 años. Si es menor de 16 años, según los requisitos de la GDPR (General Data Protection Regulation) no utilice este sitio.

-

Si este servidor está en los EE.UU.: Nuestro sitio, productos y servicios están todos dirigidos a personas que tienen al menos 13 años de edad. Si usted es menor de 13 años, según los requisitos de COPPA (Children's Online Privacy Protection Act) no utilice este sitio.

-

Los requisitos legales pueden ser diferentes si este servidor está en otra jurisdicción.

-
-

Cambios en nuestra Política de Privacidad

-

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

-

Este documento es CC-BY-SA. Fue actualizado por última vez el 26 de mayo de 2022.

-

Adaptado originalmente desde la política de privacidad de Discourse.

- title: Política de Privacidad de %{instance} themes: contrast: Alto contraste default: Mastodon @@ -1753,20 +1691,13 @@ es-MX: suspend: Cuenta suspendida welcome: edit_profile_action: Configurar el perfil - edit_profile_step: Puedes personalizar tu perfil subiendo un avatar, una cabecera, cambiando tu nombre de usuario y más cosas. Si quieres revisar a tus nuevos seguidores antes de que se les permita seguirte, puedes bloquear tu cuenta. + edit_profile_step: Puedes personalizar tu perfil subiendo una foto de perfil, cambiando tu nombre de usuario y mucho más. Puedes optar por revisar a los nuevos seguidores antes de que puedan seguirte. explanation: Aquí hay algunos consejos para empezar final_action: Empezar a publicar - final_step: '¡Empieza a publicar! Incluso sin seguidores, tus mensajes públicos pueden ser vistos por otros, por ejemplo en la linea de tiempo local y con "hashtags". Podrías querer introducirte con el "hashtag" #introductions.' + final_step: "¡Empieza a publicar! Incluso sin seguidores, tus publicaciones públicas pueden ser vistas por otros, por ejemplo en la línea de tiempo local o en etiquetas. Tal vez quieras presentarte con la etiqueta de #introducciones." full_handle: Su sobrenombre completo full_handle_hint: Esto es lo que le dirías a tus amigos para que ellos puedan enviarte mensajes o seguirte desde otra instancia. - review_preferences_action: Cambiar preferencias - review_preferences_step: Asegúrate de poner tus preferencias, como que correos te gustaría recibir, o que nivel de privacidad te gustaría que tus publicaciones tengan por defecto. Si no tienes mareos, podrías elegir habilitar la reproducción automática de "GIFs". subject: Bienvenido a Mastodon - tip_federated_timeline: La línea de tiempo federada es una vista de la red de Mastodon. Pero solo incluye gente que tus vecinos están siguiendo, así que no está completa. - tip_following: Sigues a tus administradores de servidor por defecto. Para encontrar más gente interesante, revisa las lineas de tiempo local y federada. - tip_local_timeline: La linea de tiempo local is una vista de la gente en %{instance}. Estos son tus vecinos inmediatos! - tip_mobile_webapp: Si el navegador de tu dispositivo móvil ofrece agregar Mastodon a tu página de inicio, puedes recibir notificaciones. Actúa como una aplicación nativa en muchas formas! - tips: Consejos title: Te damos la bienvenida a bordo, %{name}! users: follow_limit_reached: No puedes seguir a más de %{limit} personas diff --git a/config/locales/es.yml b/config/locales/es.yml index 5cbf1784ec..6074dc4214 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -3,38 +3,25 @@ es: about: about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' about_this: Información - active_count_after: activo - active_footnote: Usuarios Activos Mensuales (UAM) administered_by: 'Administrado por:' api: API apps: Aplicaciones móviles - apps_platforms: Utiliza Mastodon desde iOS, Android y otras plataformas - browse_public_posts: Navega por un transmisión en vivo de publicaciones públicas en Mastodon contact: Contacto contact_missing: No especificado contact_unavailable: No disponible - continue_to_web: Continuar con la aplicación web documentation: Documentación - federation_hint_html: Con una cuenta en %{instance} usted podrá seguir a las personas en cualquier servidor de Mastodon y más allá. - get_apps: Probar una aplicación móvil hosted_on: Mastodon alojado en %{domain} instance_actor_flash: | Esta cuenta es un actor virtual usado para representar al servidor y no a ningún usuario individual. Se usa para fines federativos y no debe ser bloqueado a menos que usted quiera bloquear toda la instancia, en cuyo caso se debe utilizar un bloque de dominio. - learn_more: Aprende más - logged_in_as_html: Actualmente has iniciado sesión como %{username}. - logout_before_registering: Ya has iniciado sesión. privacy_policy: Política de Privacidad rules: Normas del servidor rules_html: 'A continuación hay un resumen de las normas que debes seguir si quieres tener una cuenta en este servidor de Mastodon:' - see_whats_happening: Ver lo que está pasando - server_stats: 'Datos del servidor:' source_code: Código fuente status_count_after: one: estado other: estados status_count_before: Qué han escrito - tagline: Red social descentralizada unavailable_content: Contenido no disponible unavailable_content_description: domain: Servidor @@ -767,9 +754,6 @@ es: closed_message: desc_html: Se muestra en la portada cuando los registros están cerrados. Puedes usar tags HTML title: Mensaje de registro cerrado - deletion: - desc_html: Permite a cualquiera a eliminar su cuenta - title: Eliminación de cuenta abierta require_invite_text: desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación @@ -1001,10 +985,8 @@ es: warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie! your_token: Tu token de acceso auth: - apply_for_account: Solicitar una invitación + apply_for_account: Entrar en la lista de espera change_password: Contraseña - checkbox_agreement_html: Acepto las reglas del servidor y términos de servicio - checkbox_agreement_without_rules_html: Acepto los términos de servicio delete_account: Borrar cuenta delete_account_html: Si desea eliminar su cuenta, puede proceder aquí. Será pedido de una confirmación. description: @@ -1023,6 +1005,7 @@ es: migrate_account: Mudarse a otra cuenta migrate_account_html: Si deseas redireccionar esta cuenta a otra distinta, puedes configurarlo aquí. or_log_in_with: O inicia sesión con + privacy_policy_agreement_html: He leído y acepto la política de privacidad providers: cas: CAS saml: SAML @@ -1030,12 +1013,18 @@ es: registration_closed: "%{instance} no está aceptando nuevos miembros" resend_confirmation: Volver a enviar el correo de confirmación reset_password: Restablecer contraseña + rules: + preamble: Estas son establecidas y aplicadas por los moderadores de %{domain}. + title: Algunas reglas básicas. security: Cambiar contraseña set_new_password: Establecer nueva contraseña setup: email_below_hint_html: Si la dirección de correo electrónico que aparece a continuación es incorrecta, se puede cambiarla aquí y recibir un nuevo correo electrónico de confirmación. email_settings_hint_html: El correo electrónico de confirmación fue enviado a %{email}. Si esa dirección de correo electrónico no sea correcta, se puede cambiarla en la configuración de la cuenta. title: Configuración + sign_up: + preamble: Con una cuenta en este servidor de Mastodon, podrás seguir a cualquier otra persona en la red, independientemente de en qué servidor esté su cuenta. + title: Vamos a configurar el %{domain}. status: account_status: Estado de la cuenta confirming: Esperando confirmación de correo electrónico. @@ -1044,7 +1033,6 @@ es: redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}. view_strikes: Ver amonestaciones pasadas contra tu cuenta too_fast: Formulario enviado demasiado rápido, inténtelo de nuevo. - trouble_logging_in: "¿Problemas para iniciar sesión?" use_security_key: Usar la clave de seguridad authorize_follow: already_following: Ya estás siguiendo a esta cuenta @@ -1625,56 +1613,6 @@ es: too_late: Es demasiado tarde para apelar esta amonestación tags: does_not_match_previous_name: no coincide con el nombre anterior - terms: - body_html: | -

Política de Privacidad

-

¿Qué información recogemos?

-
    -
  • Información básica sobre su cuenta: Si se registra en este servidor, se le requerirá un nombre de usuario, una dirección de correo electrónico y una contraseña. Además puede incluir información adicional en el perfil como un nombre de perfil y una biografía, y subir una foto de perfil y una imagen de cabecera. El nombre de usuario, nombre de perfil, biografía, foto de perfil e imagen de cabecera siempre son visibles públicamente
  • -
  • Publicaciones, seguimiento y otra información pública: La lista de gente a la que sigue es mostrada públicamente, al igual que sus seguidores. Cuando publica un mensaje, la fecha y hora es almacenada, así como la aplicación desde la cual publicó el mensaje. Los mensajes pueden contener archivos adjuntos multimedia, como imágenes y vídeos. Las publicaciones públicas y no listadas están disponibles públicamente. Cuando destaca una entrada en su perfil, también es información disponible públicamente. Sus publicaciones son entregadas a sus seguidores, en algunos casos significa que son entregadas a diferentes servidores y las copias son almacenadas allí. Cuando elimina publicaciones, esto también se transfiere a sus seguidores. La acción de rebloguear o marcar como favorito otra publicación es siempre pública.
  • -
  • Publicaciones directas y sólo para seguidores: Todos los mensajes se almacenan y procesan en el servidor. Los mensajes sólo para seguidores se entregan a los seguidores y usuarios que se mencionan en ellos, y los mensajes directos se entregan sólo a los usuarios que se mencionan en ellos. En algunos casos significa que se entregan a diferentes servidores y que las copias se almacenan allí. Hacemos un esfuerzo de buena fe para limitar el acceso a esas publicaciones sólo a las personas autorizadas, pero otros servidores pueden no hacerlo. Por lo tanto, es importante revisar los servidores a los que pertenecen sus seguidores. Puede cambiar una opción para aprobar y rechazar nuevos seguidores manualmente en la configuración Por favor, tenga en cuenta que los operadores del servidor y de cualquier servidor receptor pueden ver dichos mensajes, y que los destinatarios pueden capturarlos, copiarlos o volver a compartirlos de alguna otra manera. No comparta ninguna información sensible en Mastodon.
  • -
  • Direcciones IP y otros metadatos: Al iniciar sesión, registramos la dirección IP desde la que se ha iniciado sesión, así como el nombre de la aplicación de su navegador. Todas las sesiones iniciadas están disponibles para su revisión y revocación en los ajustes. La última dirección IP utilizada se almacena hasta 12 meses. También podemos conservar los registros del servidor que incluyen la dirección IP de cada solicitud a nuestro servidor.
  • -
-
-

¿Para qué utilizamos su información?

-

Toda la información que obtenemos de usted puede ser utilizada de las siguientes maneras:

-
    -
  • Para proporcionar la funcionalidad principal de Mastodon. Sólo puedes interactuar con el contenido de otras personas y publicar tu propio contenido cuando estés conectado. Por ejemplo, puedes seguir a otras personas para ver sus mensajes combinados en tu propia línea de tiempo personalizada.
  • -
  • Para ayudar a la moderación de la comunidad, por ejemplo, comparando su dirección IP con otras conocidas para determinar la evasión de prohibiciones u otras violaciones.
  • -
  • La dirección de correo electrónico que nos proporcione podrá utilizarse para enviarle información, notificaciones sobre otras personas que interactúen con su contenido o para enviarle mensajes, así como para responder a consultas y/u otras solicitudes o preguntas.
  • -
-
-

¿Cómo protegemos su información?

-

Implementamos una variedad de medidas de seguridad para mantener la seguridad de su información personal cuando usted ingresa, envía o accede a su información personal. Entre otras cosas, la sesión de su navegador, así como el tráfico entre sus aplicaciones y la API, están protegidos con SSL, y su contraseña está protegida mediante un algoritmo unidireccional fuerte. Puede habilitar la autenticación de dos factores para un acceso más seguro a su cuenta.

-
-

¿Cuál es nuestra política de retención de datos?

-

Haremos un esfuerzo de buena fe para:

-
    -
  • Conservar los registros del servidor que contengan la dirección IP de todas las peticiones a este servidor, en la medida en que se mantengan dichos registros, no más de 90 días.
  • -
  • Conservar las direcciones IP asociadas a los usuarios registrados no más de 12 meses.
  • -
-

Puede solicitar y descargar un archivo de su contenido, incluidos sus mensajes, archivos adjuntos multimedia, foto de perfil e imagen de cabecera.

-

Usted puede borrar su cuenta de forma irreversible en cualquier momento.

-
-

¿Utilizamos cookies?

-

Sí. Las cookies son pequeños archivos que un sitio o su proveedor de servicios transfiere al disco duro de su ordenador a través de su navegador web (si usted lo permite). Estas cookies permiten al sitio reconocer su navegador y, si tiene una cuenta registrada, asociarla con su cuenta registrada.

-

Utilizamos cookies para entender y guardar sus preferencias para futuras visitas.

-
-

¿Revelamos alguna información a terceros?

-

No vendemos, comerciamos ni transferimos a terceros su información personal identificable. Esto no incluye a los terceros de confianza que nos asisten en la operación de nuestro sitio, en la realización de nuestros negocios o en la prestación de servicios, siempre y cuando dichas partes acuerden mantener la confidencialidad de esta información. También podemos divulgar su información cuando creamos que es apropiado para cumplir con la ley, hacer cumplir las políticas de nuestro sitio, o proteger nuestros u otros derechos, propiedad o seguridad.

-

Su contenido público puede ser descargado por otros servidores de la red. Tus mensajes públicos y sólo para seguidores se envían a los servidores donde residen tus seguidores, y los mensajes directos se envían a los servidores de los destinatarios, en la medida en que dichos seguidores o destinatarios residan en un servidor diferente.

-

Cuando usted autoriza a una aplicación a usar su cuenta, dependiendo del alcance de los permisos que usted apruebe, puede acceder a la información de su perfil público, su lista de seguimiento, sus seguidores, sus listas, todos sus mensajes y sus favoritos. Las aplicaciones nunca podrán acceder a su dirección de correo electrónico o contraseña.

-
-

Uso del sitio por parte de los niños

-

Si este servidor está en la UE o en el EEE: Nuestro sitio, productos y servicios están dirigidos a personas mayores de 16 años. Si es menor de 16 años, según los requisitos de la GDPR (General Data Protection Regulation) no utilice este sitio.

-

Si este servidor está en los EE.UU.: Nuestro sitio, productos y servicios están todos dirigidos a personas que tienen al menos 13 años de edad. Si usted es menor de 13 años, según los requisitos de COPPA (Children's Online Privacy Protection Act) no utilice este sitio.

-

Los requisitos legales pueden ser diferentes si este servidor está en otra jurisdicción.

-
-

Cambios en nuestra Política de Privacidad

-

Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página.

-

Este documento es CC-BY-SA. Fue actualizado por última vez el 26 de mayo de 2022.

-

Adaptado originalmente desde la política de privacidad de Discourse.

- title: Política de Privacidad de %{instance} themes: contrast: Alto contraste default: Mastodon @@ -1753,20 +1691,13 @@ es: suspend: Cuenta suspendida welcome: edit_profile_action: Configurar el perfil - edit_profile_step: Puedes personalizar tu perfil subiendo un avatar, una cabecera, cambiando tu nombre de usuario y más cosas. Si quieres revisar a tus nuevos seguidores antes de que se les permita seguirte, puedes bloquear tu cuenta. + edit_profile_step: Puedes personalizar tu perfil subiendo una foto de perfil, cambiando tu nombre de usuario y mucho más. Puedes optar por revisar a los nuevos seguidores antes de que puedan seguirte. explanation: Aquí hay algunos consejos para empezar final_action: Empezar a publicar - final_step: '¡Empieza a publicar! Incluso sin seguidores, tus mensajes públicos pueden ser vistos por otros, por ejemplo en la linea de tiempo local y con "hashtags". Podrías querer introducirte con el "hashtag" #introductions.' + final_step: "¡Empieza a publicar! Incluso sin seguidores, tus publicaciones públicas pueden ser vistas por otros, por ejemplo en la línea de tiempo local o en etiquetas. Tal vez quieras presentarte con la etiqueta de #introducciones." full_handle: Su sobrenombre completo full_handle_hint: Esto es lo que le dirías a tus amigos para que ellos puedan enviarte mensajes o seguirte desde otra instancia. - review_preferences_action: Cambiar preferencias - review_preferences_step: Asegúrate de poner tus preferencias, como que correos te gustaría recibir, o que nivel de privacidad te gustaría que tus publicaciones tengan por defecto. Si no tienes mareos, podrías elegir habilitar la reproducción automática de "GIFs". subject: Bienvenido a Mastodon - tip_federated_timeline: La línea de tiempo federada es una vista de la red de Mastodon. Pero solo incluye gente que tus vecinos están siguiendo, así que no está completa. - tip_following: Sigues a tus administradores de servidor por defecto. Para encontrar más gente interesante, revisa las lineas de tiempo local y federada. - tip_local_timeline: La línea de tiempo local es una vista de la gente en %{instance}. ¡Estos son tus vecinos inmediatos! - tip_mobile_webapp: Si el navegador de tu dispositivo móvil ofrece agregar Mastodon a tu página de inicio, puedes recibir notificaciones. Actúa como una aplicación nativa en muchas formas! - tips: Consejos title: Te damos la bienvenida a bordo, %{name}! users: follow_limit_reached: No puedes seguir a más de %{limit} personas diff --git a/config/locales/et.yml b/config/locales/et.yml index c43224f652..cac35e2b4f 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -3,28 +3,19 @@ et: about: about_mastodon_html: 'Tuleviku sotsiaalvõrgustik: Reklaamivaba, korporatiivse järelvalveta, eetiline kujundus ning detsentraliseeritus! Oma enda andmeid Mastodonis!' about_this: Meist - active_count_after: aktiivne - active_footnote: Igakuiselt aktiivseid kasutajaid (MAU) administered_by: 'Administraator:' api: API apps: Mobiilirakendused - apps_platforms: Kasuta Mastodoni iOS-is, Androidis ja teistel platvormidel - browse_public_posts: Sirvi reaalajas voogu avalikest postitustest Mastodonis contact: Kontakt contact_missing: Määramata contact_unavailable: Pole saadaval documentation: Dokumentatsioon - federation_hint_html: Kui Teil on kasutaja %{instance}-is, saate Te jälgida inimesi üks kõik millisel Mastodoni serveril ja kaugemalgi. - get_apps: Proovi mobiilirakendusi hosted_on: Mastodon majutatud %{domain}-is instance_actor_flash: | See konto on virtuaalne näitleja, mis esindab tervet serverit ning mitte ühtegi kindlat isikut. Seda kasutatakse föderatiivsetel põhjustel ning seda ei tohiks blokeerida, välja arvatud juhul, kui soovite blokeerida tervet serverit, kuid sellel juhul soovitame hoopis kasutada domeeni blokeerimist. - learn_more: Lisateave rules: Serveri reeglid rules_html: 'Järgneb kokkuvõte reeglitest, mida pead järgima, kui lood endale siin Mastodoni serveris konto:' - see_whats_happening: Vaata, mis toimub - server_stats: 'Serveri statistika:' source_code: Lähtekood status_count_after: one: postitust @@ -424,9 +415,6 @@ et: closed_message: desc_html: Kuvatud esilehel kui registreerimised on suletud. Te võite kasutada HTMLi silte title: Suletud registreerimiste sõnum - deletion: - desc_html: Luba kasutajatel oma konto kustutada - title: Ava kontode kustutamine registrations_mode: modes: approved: Kinnitus vajalik konto loomisel @@ -513,10 +501,7 @@ et: warning: Olge nende andmetega ettevaatlikud. Ärge jagage neid kellegagi! your_token: Teie access token auth: - apply_for_account: Taotle kutse change_password: Salasõna - checkbox_agreement_html: Ma nõustun serveri reeglitega ja kasutustingimustega - checkbox_agreement_without_rules_html: Ma nõustun kasutustingimustega delete_account: Kustuta konto delete_account_html: Kui Te soovite oma kontot kustutada, võite jätkata siit. Teilt küsitakse kinnitust. description: @@ -546,7 +531,6 @@ et: confirming: Ootan e-posti kinnitust. pending: Teie taotlus ootab ülevaadet meie personali poolt. See võib võtta mõnda aega. Kui Teie taotlus on vastu võetud, saadetakse Teile e-kiri. redirecting_to: Teie konto ei ole aktiivne, kuna hetkel suunatakse ümber kasutajale %{acct}. - trouble_logging_in: Probleeme sisselogimisega? authorize_follow: already_following: Te juba jälgite seda kontot already_requested: Te juba saatsite jälgimistaotluse sellele kontole @@ -957,20 +941,11 @@ et: suspend: Konto peatatud welcome: edit_profile_action: Sea üles profiil - edit_profile_step: Te saate oma profiili isikupärastada näiteks lisades profiilipildi, päise, muutes oma kuvanime ja muud. Kui Te soovite üle vaadata inimesi, kes Teid jälgida soovivad, saate lukustada oma konto. explanation: Siin on mõned nõuanded, mis aitavad sul alustada final_action: Alusa postitamist - final_step: 'Alusta postitamist! Isegi ilma jälgijateta näevad teised Teie avalikke postitusi, näiteks kohalikul ajajoonel ning siltidest. Te võite ennast tutvustada kasutades silti #introductions.' full_handle: Teie täisnimi full_handle_hint: See on mida oma sõpradega jagada, et nad saaksid Teile sõnumeid saata ning Teid jälgida teiselt serverilt. - review_preferences_action: Muuda eelistusi - review_preferences_step: Kindlasti seadistage oma sätted Teie maitse järgi, näiteks e-kirju, mida soovite saada, või millist privaatsustaset Te soovite vaikimisi. Kui Teil pole merehaigust, võite Te näiteks lubada GIFide automaatse mängimise. subject: Tere tulemast Mastodoni - tip_federated_timeline: Föderatiivne ajajoon on reaalajas voogvaade tervest Mastodoni võrgust. Aga see sisaldab ainult inimesi, keda su naabrid tellivad, niiet see pole täiuslik. - tip_following: Vaikimisi, Te jälgite ainult oma serveri administraator(eid). Et leida rohkem huvitavamaid inimesi, vaadake kohalikke ja föderatiivseid ajajooni. - tip_local_timeline: Kohalik ajajoon on reaalajas voogvaade inimestest, kes on serveris %{instance}. Need on Teie lähimad naabrid! - tip_mobile_webapp: Kui Teie mobiilne veebilehitseja pakub Teile lisada meid Teie avaekraanile, saate Te reaalajas teateid. See töötab nagu tavaline mobiilirakendus mitmel moel! - tips: Nõuanded title: Tere tulemast pardale, %{name}! users: follow_limit_reached: Te ei saa jälgida rohkem kui %{limit} inimest diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 92ec38cf32..f3da9364d8 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -3,29 +3,17 @@ eu: about: about_mastodon_html: 'Etorkizuneko sare soziala: ez iragarkirik eta ez zelatatze korporatiborik, diseinu etikoa eta deszentralizazioa! Izan zure datuen jabea Mastodonekin!' about_this: Honi buruz - active_count_after: aktibo - active_footnote: Hilabeteko erabiltzaile aktiboak (HEA) administered_by: 'Administratzailea(k):' api: APIa apps: Aplikazio mugikorrak - apps_platforms: Erabili Mastodon, iOS, Android eta beste plataformetatik - browse_public_posts: Arakatu Mastodoneko bidalketa publikoen zuzeneko jario bat contact: Kontaktua contact_missing: Ezarri gabe contact_unavailable: E/E - continue_to_web: Jarraitu web aplikaziora documentation: Dokumentazioa - federation_hint_html: "%{instance} instantzian kontu bat izanda edozein Mastodon zerbitzariko jendea jarraitu ahal izango duzu, eta harago ere." - get_apps: Probatu mugikorrerako aplikazio bat hosted_on: Mastodon %{domain} domeinuan ostatatua instance_actor_flash: "Kontu hau zerbitzaria bera adierazten duen aktore birtual bat da, ez norbanako bat. Federaziorako erabiltzen da eta ez zenuke blokeatu behar instantzia osoa blokeatu nahi ez baduzu, kasu horretan domeinua blokeatzea egokia litzateke. \n" - learn_more: Ikasi gehiago - logged_in_as_html: "%{username} bezala saioa hasita zaude." - logout_before_registering: Saioa hasi duzu jada. rules: Zerbitzariaren arauak rules_html: 'Behean Mastodon zerbitzari honetan kontua eduki nahi baduzu jarraitu beharreko arauen laburpena daukazu:' - see_whats_happening: Ikusi zer gertatzen ari den - server_stats: 'Zerbitzariaren estatistikak:' source_code: Iturburu kodea status_count_after: one: bidalketa @@ -654,9 +642,6 @@ eu: closed_message: desc_html: Azaleko orrian bistaratua izen ematea ixten denean. HTML etiketak erabili ditzakezu title: Izen emate itxiaren mezua - deletion: - desc_html: Baimendu edonori bere kontua ezabatzea - title: Ireki kontu ezabaketa require_invite_text: desc_html: Izen emateak eskuz onartu behar direnean, "Zergatik elkartu nahi duzu?" testu sarrera derrigorrezko bezala ezarri, ez hautazko title: Eskatu erabiltzaile berriei bat egiteko arrazoia sartzeko @@ -827,10 +812,7 @@ eu: warning: Kontuz datu hauekin, ez partekatu inoiz inorekin! your_token: Zure sarbide token-a auth: - apply_for_account: Eskatu gonbidapen bat change_password: Pasahitza - checkbox_agreement_html: Zerbitzariaren arauak eta erabilera baldintzak onartzen ditut - checkbox_agreement_without_rules_html: Erabilera baldintzak onartzen ditut delete_account: Ezabatu kontua delete_account_html: Kontua ezabatu nahi baduzu, jarraitu hemen. Berrestea eskatuko zaizu. description: @@ -869,7 +851,6 @@ eu: pending: Zure eskaera gainbegiratzeko dago oraindik. Honek denbora behar lezake. Zure eskaera onartzen bada e-mail bat jasoko duzu. redirecting_to: Zure kontua ez dago aktibo orain %{acct} kontura birbideratzen duelako. too_fast: Formularioa azkarregi bidali duzu, saiatu berriro. - trouble_logging_in: Arazoak saioa hasteko? use_security_key: Erabili segurtasun gakoa authorize_follow: already_following: Kontu hau aurretik jarraitzen duzu @@ -1410,20 +1391,11 @@ eu: suspend: Kontu kanporatua welcome: edit_profile_action: Ezarri profila - edit_profile_step: Pertsonalizatu profila abatar bat igoz, goiburu bat, zure pantaila-izena aldatuz eta gehiago. Jarraitzaile berriak onartu aurretik gainbegiratu nahi badituzu, kontua giltzaperatu dezakezu. explanation: Hona hasteko aholku batzuk final_action: Hasi bidalketak argitaratzen - final_step: 'Hasi argitaratzen! Jarraitzailerik ez baduzu ere zure bidalketa publikoak besteek ikusi ditzakete, esaterako denbora-lerro lokalean eta traoletan. Zure burua aurkeztu nahi baduzu #aurkezpenak traola erabili zenezake.' full_handle: Zure erabiltzaile-izen osoa full_handle_hint: Hau da lagunei esango zeniekeena beste zerbitzari batetik zu jarraitzeko edo zuri mezuak bidaltzeko. - review_preferences_action: Aldatu hobespenak - review_preferences_step: Ziurtatu hobespenak ezartzen dituzula, hala nola, jaso nahi dituzu e-postak edo lehenetsitako pribatutasuna bidalketa berrietarako. Mareatzen ez bazaitu GIF-ak automatikoki abiatzea ere ezarri dezakezu. subject: Ongi etorri Mastodon-era - tip_federated_timeline: Federatutako denbora-lerroan Mastodon sarearen trafikoa ikusten da. Baina zure instantziako auzokideak jarraitutakoak besterik ez daude hor, ez da osoa. - tip_following: Lehenetsita zerbitzariko administratzailea jarraitzen duzu. Jende interesgarri gehiago aurkitzeko, egiaztatu denbora-lerro lokala eta federatua. - tip_local_timeline: Denbora-lerro lokalean %{instance} instantziako trafikoa ikusten da. Hauek zure instantziako auzokideak dira! - tip_mobile_webapp: Zure mugikorreko nabigatzaileak Mastodon hasiera pantailan gehitzea eskaintzen badizu, push jakinarazpenak jaso ditzakezu. Aplikazio natiboaren parekoa da zentzu askotan! - tips: Aholkuak title: Ongi etorri, %{name}! users: follow_limit_reached: Ezin dituzu %{limit} pertsona baino gehiago jarraitu diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 5ce1b32e9f..093d3ca64e 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -3,31 +3,19 @@ fa: about: about_mastodon_html: 'شبکهٔ اجتماعی آینده: بدون تبلیغات، بدون شنود از طرف شرکت‌ها، طراحی اخلاق‌مدار، و معماری غیرمتمرکز! با ماستودون صاحب داده‌های خودتان باشید!' about_this: درباره - active_count_after: فعّال - active_footnote: کاربران فعّال ماهانه administered_by: 'به مدیریت:' api: رابط برنامه‌نویسی کاربردی apps: اپ‌های موبایل - apps_platforms: ماستودون را در iOS، اندروید، و سایر سیستم‌ها داشته باشید - browse_public_posts: جریانی زنده از فرسته‌های عمومی روی ماستودون را ببینید contact: تماس contact_missing: تنظیم نشده contact_unavailable: موجود نیست - continue_to_web: در کارهٔ وب ادامه دهید documentation: مستندات - federation_hint_html: با حسابی روی %{instance} می‌توانید افراد روی هر کارساز ماستودون و بیش از آن را پی بگیرید. - get_apps: یک اپ موبایل را بیازمایید hosted_on: ماستودون، میزبانی‌شده روی %{domain} instance_actor_flash: | این حساب، بازیگری مجازی به نمایندگی خود کارساز بوده و کاربری واقعی نیست. این حساب برای مقاصد خودگردانی به کار می‌رفته و نباید مسدود شود؛ مگر این که بخواهید کل نمونه را مسدود کنید که در آن صورت نیز باید از انسداد دامنه استفاده کنید. - learn_more: بیشتر بدانید - logged_in_as_html: شما هم‌اکنون به عنوان %{username} وارد شده‌اید. - logout_before_registering: شما هم‌اکنون وارد شده‌اید. rules: قوانین کارساز rules_html: 'در زیر خلاصه‌ای از قوانینی که در صورت علاقه به داشتن حسابی روی این کارساز ماستودون، باید رعایت کنید آمده است:' - see_whats_happening: ببینید چه خبر است - server_stats: 'آمار کارساز:' source_code: کدهای منبع status_count_after: one: چیز نوشته‌اند @@ -634,9 +622,6 @@ fa: closed_message: desc_html: وقتی امکان ثبت نام روی سرور فعال نباشد در صفحهٔ اصلی نمایش می‌یابد
می‌توانید HTML بنویسید title: پیغام برای فعال‌نبودن ثبت نام - deletion: - desc_html: هر کسی بتواند حساب خود را پاک کند - title: فعال‌سازی پاک‌کردن حساب require_invite_text: desc_html: زمانی که نام‌نویسی نیازمند تایید دستی است، متن «چرا می‌خواهید عضو شود؟» بخش درخواست دعوت را به جای اختیاری، اجباری کنید title: نیازمند پر کردن متن درخواست دعوت توسط کاربران جدید @@ -785,10 +770,7 @@ fa: warning: خیلی مواظب این اطلاعات باشید و آن را به هیچ کس ندهید! your_token: کد دسترسی شما auth: - apply_for_account: درخواست دعوت‌نامه change_password: رمز - checkbox_agreement_html: با قانون‌های این کارساز و شرایط خدماتش موافقم - checkbox_agreement_without_rules_html: من با شرایط استفاده موافقم delete_account: پاک‌کردن حساب delete_account_html: اگر می‌خواهید حساب خود را پاک کنید، از این‌جا پیش بروید. از شما درخواست تأیید خواهد شد. description: @@ -826,7 +808,6 @@ fa: pending: درخواست شما منتظر تأیید مسئولان سایت است و این فرایند ممکن است کمی طول بکشد. اگر درخواست شما پذیرفته شود به شما ایمیلی فرستاده خواهد شد. redirecting_to: حساب شما غیرفعال است زیرا هم‌اکنون به %{acct} منتقل شده است. too_fast: فرم با سرعت بسیار زیادی فرستاده شد، دوباره تلاش کنید. - trouble_logging_in: برای ورود مشکلی دارید؟ use_security_key: استفاده از کلید امنیتی authorize_follow: already_following: شما همین الان هم این حساب را پی‌می‌گیرید @@ -1393,20 +1374,11 @@ fa: suspend: حساب معلق شده است welcome: edit_profile_action: تنظیم نمایه - edit_profile_step: 'شما می‌توانید نمایهٔ خود را به دلخواه خود تغییر دهید: می‌توانید تصویر نمایه، تصویر پس‌زمینه، نام، و چیزهای دیگری را تعیین کنید. اگر بخواهید، می‌توانید حساب خود را خصوصی کنید تا فقط کسانی که شما اجازه می‌دهید بتوانند پیگیر حساب شما شوند.' explanation: نکته‌هایی که برای آغاز کار به شما کمک می‌کنند final_action: چیزی منتشر کنید - final_step: 'چیزی بنویسید! حتی اگر الان کسی پیگیر شما نباشد، دیگران نوشته‌های عمومی شما را می‌بینند، مثلاً در فهرست نوشته‌های محلی و در برچسب (هشتگ)ها. شاید بخواهید با برچسب #معرفی خودتان را معرفی کنید.' full_handle: نام کاربری کامل شما full_handle_hint: این چیزی است که باید به دوستانتان بگویید تا بتوانند از کارسازی دیگر به شما پیام داده یا پی‌گیرتان شوند. - review_preferences_action: تغییر ترجیحات - review_preferences_step: با رفتن به صفحهٔ ترجیحات می‌توانید چیزهای گوناگونی را تنظیم کنید. مثلاً این که چه ایمیل‌های آگاه‌سازی‌ای به شما فرستاده شود، یا حریم خصوصی پیش‌فرض نوشته‌هایتان چه باشد. اگر بیماری سفر (حالت تهوع بر اثر دیدن اجسام متحرک) ندارید، می‌توانید پخش خودکار ویدیوها را فعال کنید. subject: به ماستودون خوش آمدید - tip_federated_timeline: "«فهرست نوشته‌های همه‌جا» نمایی کلی از شبکهٔ ماستودون است. ولی فقط شامل افرادیست که همسایگانتان پیگیرشان هستند؛ پس کامل نیست." - tip_following: به طور پیش‌گزیده مدیر(ان) کارسازتان را پی می‌گیرید. برای یافتن افراد جالب دیگر، فهرست «نوشته‌های محلی» و «نوشته‌های همه‌جا» را ببینید. - tip_local_timeline: فهرست نوشته‌های محلی نمایی کلی از کاربران روی %{instance} را ارائه می‌دهد. این‌ها همسایه‌های شما هستند! - tip_mobile_webapp: اگر مرورگر همراهتان پیشنهاد افزودن ماستودون به صفحهٔ اصلیتان را می‌دهد، می‌توانید آگاهی‌های ارسالی را دریافت کنید. این کار از بسیاری جهت‌ها،‌مانند یک کارهٔ بومی عمل می‌کند! - tips: نکته‌ها title: خوش آمدید، کاربر %{name}! users: follow_limit_reached: شما نمی‌توانید بیش از %{limit} نفر را پی بگیرید diff --git a/config/locales/fi.yml b/config/locales/fi.yml index e9dfe0edbb..ed0083babe 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -3,37 +3,24 @@ fi: about: about_mastodon_html: 'Tulevaisuuden sosiaalinen verkosto: Ei mainoksia, ei valvontaa, toteutettu avoimilla protokollilla ja hajautettu! Pidä tietosi ominasi Mastodonilla!' about_this: Tietoa tästä palvelimesta - active_count_after: aktiivista - active_footnote: Kuukausittain aktiiviset käyttäjät (MAU) administered_by: 'Ylläpitäjä:' api: Rajapinta apps: Mobiilisovellukset - apps_platforms: Käytä Mastodonia Androidilla, iOS:llä ja muilla alustoilla - browse_public_posts: Selaa julkisia julkaisuja Mastodonissa contact: Ota yhteyttä contact_missing: Ei asetettu contact_unavailable: Ei saatavilla - continue_to_web: Jatka verkkosovellukseen documentation: Dokumentaatio - federation_hint_html: Tilillä %{instance}:ssa voit seurata ihmisiä millä tahansa Mastodon-palvelimella ja sen ulkopuolella. - get_apps: Kokeile mobiilisovellusta hosted_on: Mastodon palvelimella %{domain} instance_actor_flash: | Tämä on virtuaalitili, joka edustaa itse palvelinta eikä yksittäistä käyttäjää. Sitä käytetään yhdistämistarkoituksiin, eikä sitä saa estää, ellet halua estää koko palvelinta, jolloin sinun on käytettävä verkkotunnuksen estoa. - learn_more: Lisätietoja - logged_in_as_html: Olet kirjautunut sisään nimellä %{username}. - logout_before_registering: Olet jo kirjautunut sisään. rules: Palvelimen säännöt rules_html: 'Alla on yhteenveto säännöistä, joita sinun on noudatettava, jos haluat olla tili tällä Mastodonin palvelimella:' - see_whats_happening: Näe mitä tapahtuu - server_stats: 'Palvelimen tilastot:' source_code: Lähdekoodi status_count_after: one: julkaisun other: julkaisua status_count_before: Julkaistu - tagline: Hajautettu sosiaalinen verkosto unavailable_content: Moderoidut palvelimet unavailable_content_description: domain: Palvelin @@ -760,9 +747,6 @@ fi: closed_message: desc_html: Näytetään etusivulla, kun rekisteröinti on suljettu. HTML-tagit käytössä title: Viesti, kun rekisteröinti on suljettu - deletion: - desc_html: Salli jokaisen poistaa oma tilinsä - title: Avoin tilin poisto require_invite_text: desc_html: Kun rekisteröinnit edellyttävät manuaalista hyväksyntää, tee “Miksi haluat liittyä?” teksti pakolliseksi eikä valinnaiseksi title: Vaadi uusia käyttäjiä antamaan liittymisen syy @@ -988,10 +972,7 @@ fi: warning: Säilytä tietoa hyvin. Älä milloinkaan jaa sitä muille! your_token: Pääsytunnus auth: - apply_for_account: Pyydä kutsu change_password: Salasana - checkbox_agreement_html: Hyväksyn palvelimen käytännöt ja käyttöehdot - checkbox_agreement_without_rules_html: Hyväksyn käyttöehdot delete_account: Poista tili delete_account_html: Jos haluat poistaa tilisi, paina tästä. Poisto on vahvistettava. description: @@ -1031,7 +1012,6 @@ fi: redirecting_to: Tilisi ei ole aktiivinen, koska se ohjaa tällä hetkellä kohteeseen %{acct}. view_strikes: Näytä tiliäsi koskevia aiempia varoituksia too_fast: Lomake lähetettiin liian nopeasti, yritä uudelleen. - trouble_logging_in: Ongelmia kirjautumisessa? use_security_key: Käytä suojausavainta authorize_follow: already_following: Sinä seuraat jo tätä tiliä @@ -1680,20 +1660,11 @@ fi: suspend: Tilin käyttäminen keskeytetty welcome: edit_profile_action: Aseta profiili - edit_profile_step: Voit mukauttaa profiiliasi lataamalla profiilikuvan ja otsakekuvan, muuttamalla näyttönimeäsi ym. Jos haluat hyväksyä uudet seuraajat ennen kuin he voivat seurata sinua, voit lukita tilisi. explanation: Näillä vinkeillä pääset alkuun final_action: Ala julkaista - final_step: 'Ala julkaista! Vaikkei sinulla olisi seuraajia, monet voivat nähdä julkiset viestisi esimerkiksi paikallisella aikajanalla ja hashtagien avulla. Kannattaa esittäytyä! Käytä hashtagia #introductions. (Jos haluat esittäytyä myös suomeksi, se kannattaa tehdä erillisessä tuuttauksessa ja käyttää hashtagia #esittely.).' full_handle: Koko käyttäjätunnuksesi full_handle_hint: Kerro tämä ystävillesi, niin he voivat lähettää sinulle viestejä tai löytää sinut toisen instanssin kautta. - review_preferences_action: Muuta asetuksia - review_preferences_step: Käy tarkistamassa, että asetukset ovat haluamallasi tavalla. Voit valita, missä tilanteissa haluat saada sähköpostia, mikä on julkaisujesi oletusnäkyvyys jne. Jos et saa helposti pahoinvointia, voit valita, että GIF-animaatiot toistetaan automaattisesti. subject: Tervetuloa Mastodoniin - tip_federated_timeline: Yleinen aikajana näyttää sisältöä koko Mastodon-verkostosta. Siinä näkyvät kuitenkin vain ne henkilöt, joita oman instanssisi käyttäjät seuraavat. Siinä ei siis näytetä aivan kaikkea. - tip_following: Oletusarvoisesti seuraat oman palvelimesi ylläpitäjiä. Etsi lisää kiinnostavia ihmisiä paikalliselta ja yleiseltä aikajanalta. - tip_local_timeline: Paikallinen aikajana näyttää instanssin %{instance} käyttäjien julkaisut. He ovat naapureitasi! - tip_mobile_webapp: Jos voit lisätä Mastodonin mobiiliselaimen kautta aloitusnäytöllesi, voit vastaanottaa push-ilmoituksia. Toiminta vastaa monin tavoin tavanomaista sovellusta! - tips: Vinkkejä title: Tervetuloa mukaan, %{name}! users: follow_limit_reached: Et voi seurata yli %{limit} henkilöä diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 346271e93a..23e8efa89e 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -3,37 +3,25 @@ fr: about: about_mastodon_html: 'Le réseau social de l''avenir : pas de publicité, pas de surveillance institutionnelle, conception éthique et décentralisation ! Gardez le contrôle de vos données avec Mastodon !' about_this: À propos - active_count_after: actif·ve·s - active_footnote: Nombre mensuel d'utilisateur·rice·s actif·ve·s (NMUA) administered_by: 'Administré par :' api: API apps: Applications mobiles - apps_platforms: Utilisez Mastodon depuis iOS, Android et d’autres plates-formes - browse_public_posts: Parcourir en direct un flux de messages publics sur Mastodon contact: Contact contact_missing: Non défini contact_unavailable: Non disponible - continue_to_web: Continuer vers l’application web documentation: Documentation - federation_hint_html: Avec un compte sur %{instance}, vous pourrez suivre des gens sur n’importe quel serveur Mastodon et au-delà. - get_apps: Essayez une application mobile hosted_on: Serveur Mastodon hébergé sur %{domain} instance_actor_flash: | Ce compte est un acteur virtuel utilisé pour représenter le serveur lui-même et non un·e utilisateur·rice individuel·le. Il est utilisé à des fins de fédération et ne doit pas être bloqué à moins que vous ne vouliez bloquer l’instance entière, auquel cas vous devriez utiliser un blocage de domaine. - learn_more: En savoir plus - logged_in_as_html: Vous êtes actuellement connecté·e en tant que %{username}. - logout_before_registering: Vous êtes déjà connecté·e. + privacy_policy: Politique de confidentialité rules: Règles du serveur rules_html: 'Voici un résumé des règles que vous devez suivre si vous voulez avoir un compte sur ce serveur de Mastodon :' - see_whats_happening: Quoi de neuf - server_stats: 'Statistiques du serveur :' source_code: Code source status_count_after: one: message other: messages status_count_before: Ayant publié - tagline: Réseau social décentralisé unavailable_content: Serveurs modérés unavailable_content_description: domain: Serveur @@ -229,6 +217,7 @@ fr: approve_user: Approuver l’utilisateur assigned_to_self_report: Affecter le signalement change_email_user: Modifier le courriel pour ce compte + change_role_user: Changer le rôle de l’utilisateur·rice confirm_user: Confirmer l’utilisateur create_account_warning: Créer une alerte create_announcement: Créer une annonce @@ -238,6 +227,7 @@ fr: create_email_domain_block: Créer un blocage de domaine de courriel create_ip_block: Créer une règle IP create_unavailable_domain: Créer un domaine indisponible + create_user_role: Créer le rôle demote_user: Rétrograder l’utilisateur·ice destroy_announcement: Supprimer l’annonce destroy_custom_emoji: Supprimer des émojis personnalisés @@ -248,6 +238,7 @@ fr: destroy_ip_block: Supprimer la règle IP destroy_status: Supprimer le message destroy_unavailable_domain: Supprimer le domaine indisponible + destroy_user_role: Détruire le rôle disable_2fa_user: Désactiver l’A2F disable_custom_emoji: Désactiver les émojis personnalisés disable_sign_in_token_auth_user: Désactiver l'authentification basée sur les jetons envoyés par courriel pour l'utilisateur·rice @@ -274,21 +265,26 @@ fr: update_announcement: Modifier l’annonce update_custom_emoji: Mettre à jour les émojis personnalisés update_domain_block: Mettre à jour le blocage de domaine + update_ip_block: Mettre à jour la règle IP update_status: Mettre à jour le message + update_user_role: Mettre à jour le rôle actions: approve_appeal_html: "%{name} a approuvé l'appel de la décision de modération émis par %{target}" approve_user_html: "%{name} a approuvé l’inscription de %{target}" assigned_to_self_report_html: "%{name} s’est assigné·e le signalement de %{target}" change_email_user_html: "%{name} a modifié l'adresse de courriel de l'utilisateur·rice %{target}" + change_role_user_html: "%{name} a changé le rôle de %{target}" confirm_user_html: "%{name} a confirmé l'adresse courriel de l'utilisateur %{target}" create_account_warning_html: "%{name} a envoyé un avertissement à %{target}" create_announcement_html: "%{name} a créé une nouvelle annonce %{target}" + create_canonical_email_block_html: "%{name} a bloqué l’e-mail avec le hachage %{target}" create_custom_emoji_html: "%{name} a téléversé un nouvel émoji %{target}" create_domain_allow_html: "%{name} a autorisé la fédération avec le domaine %{target}" create_domain_block_html: "%{name} a bloqué le domaine %{target}" create_email_domain_block_html: "%{name} a bloqué de domaine de courriel %{target}" create_ip_block_html: "%{name} a créé une règle pour l'IP %{target}" create_unavailable_domain_html: "%{name} a arrêté la livraison vers le domaine %{target}" + create_user_role_html: "%{name} a créé le rôle %{target}" demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}" destroy_announcement_html: "%{name} a supprimé l'annonce %{target}" destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}" @@ -751,9 +747,6 @@ fr: closed_message: desc_html: Affiché sur la page d’accueil lorsque les inscriptions sont fermées. Vous pouvez utiliser des balises HTML title: Message de fermeture des inscriptions - deletion: - desc_html: Permettre à tou·te·s les utilisateur·rice·s de supprimer leur compte - title: Autoriser les suppressions de compte require_invite_text: desc_html: Lorsque les enregistrements nécessitent une approbation manuelle, rendre le texte de l’invitation "Pourquoi voulez-vous vous inscrire ?" obligatoire plutôt que facultatif title: Exiger que les nouveaux utilisateurs remplissent un texte de demande d’invitation @@ -772,6 +765,9 @@ fr: site_short_description: desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description du serveur sera affiché par défaut. title: Description courte du serveur + site_terms: + desc_html: Vous pouvez écrire votre propre politique de confidentialité. Vous pouvez utiliser des balises HTML + title: Politique de confidentialité personnalisée site_title: Nom du serveur thumbnail: desc_html: Utilisée pour les prévisualisations via OpenGraph et l’API. 1200x630px recommandé @@ -780,6 +776,8 @@ fr: desc_html: Afficher un lien vers le fil public sur la page d’accueil et autoriser l'accès anonyme au fil public via l'API title: Autoriser la prévisualisation anonyme du fil global title: Paramètres du serveur + trendable_by_default: + title: Autoriser les tendances sans révision préalable trends: desc_html: Afficher publiquement les hashtags approuvés qui sont populaires en ce moment title: Hashtags populaires @@ -979,10 +977,8 @@ fr: warning: Soyez prudent·e avec ces données. Ne les partagez pas ! your_token: Votre jeton d’accès auth: - apply_for_account: Demander une invitation + apply_for_account: S’inscrire sur la liste d’attente change_password: Mot de passe - checkbox_agreement_html: J’accepte les règles du serveur et les conditions de service - checkbox_agreement_without_rules_html: J’accepte les conditions d’utilisation delete_account: Supprimer le compte delete_account_html: Si vous désirez supprimer votre compte, vous pouvez cliquer ici. Il vous sera demandé de confirmer cette action. description: @@ -1008,12 +1004,17 @@ fr: registration_closed: "%{instance} a désactivé les inscriptions" resend_confirmation: Envoyer à nouveau les consignes de confirmation reset_password: Réinitialiser le mot de passe + rules: + title: Quelques règles de base. security: Sécurité set_new_password: Définir le nouveau mot de passe setup: email_below_hint_html: Si l’adresse de courriel ci-dessous est incorrecte, vous pouvez la modifier ici et recevoir un nouveau courriel de confirmation. email_settings_hint_html: Le courriel de confirmation a été envoyé à %{email}. Si cette adresse de courriel n’est pas correcte, vous pouvez la modifier dans les paramètres du compte. title: Configuration + sign_up: + preamble: Avec un compte sur ce serveur Mastodon, vous serez en mesure de suivre toute autre personne sur le réseau, quel que soit l’endroit où son compte est hébergé. + title: Mettons les choses en place pour %{domain}. status: account_status: État du compte confirming: En attente de la confirmation par courriel à compléter. @@ -1022,7 +1023,6 @@ fr: redirecting_to: Votre compte est inactif car il est actuellement redirigé vers %{acct}. view_strikes: Voir les sanctions précédemment appliquées à votre compte too_fast: Formulaire envoyé trop rapidement, veuillez réessayer. - trouble_logging_in: Vous avez un problème pour vous connecter ? use_security_key: Utiliser la clé de sécurité authorize_follow: already_following: Vous suivez déjà ce compte @@ -1160,6 +1160,7 @@ fr: edit: add_keyword: Ajouter un mot-clé keywords: Mots-clés + statuses: Publications individuelles title: Éditer le filtre errors: deprecated_api_multiple_keywords: Ces paramètres ne peuvent pas être modifiés depuis cette application, car ils s'appliquent à plus d'un filtre de mot-clé. Utilisez une application plus récente ou l'interface web. @@ -1173,10 +1174,19 @@ fr: keywords: one: "%{count} mot-clé" other: "%{count} mots-clés" + statuses: + one: "%{count} message" + other: "%{count} messages" title: Filtres new: save: Enregistrer le nouveau filtre title: Ajouter un nouveau filtre + statuses: + back_to_filter: Retour au filtre + batch: + remove: Retirer du filtre + index: + title: Messages filtrés footer: developers: Développeurs more: Davantage… @@ -1187,6 +1197,7 @@ fr: changes_saved_msg: Les modifications ont été enregistrées avec succès ! copy: Copier delete: Supprimer + deselect: Tout déselectionner none: Aucun order_by: Classer par save_changes: Enregistrer les modifications @@ -1578,88 +1589,6 @@ fr: too_late: Il est trop tard pour faire appel à cette sanction tags: does_not_match_previous_name: ne correspond pas au nom précédent - terms: - body_html: | -

Politique de confidentialité

-

Quelles informations collectons-nous ?

- -
    -
  • Informations de base sur votre compte : si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.
  • -
  • Posts, liste d’abonnements et autres informations publiques : la liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimez un post, il est probable que l'action soit aussi délivrée à vos abonné·e·s. Partager un message ou le marquer comme favori est toujours une action publique.
  • -
  • Posts directs et abonné·e·s uniquement : tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne foi pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. Gardez s’il vous plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages, et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. Ne partagez aucune information sensible à l’aide de Mastodon !
  • -
  • IP et autres métadonnées : quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.
  • -
- -
- -

Que faisons-nous des informations vous concernant ?

- -

Toutes les informations que nous collectons sur vous peuvent être utilisées des manières suivantes :

- -
    -
  • pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé ;
  • -
  • pour aider à la modération de la communauté : par exemple, comparer votre adresse IP avec d’autres afin de déterminer si un bannissement a été contourné ou si une autre infraction aux règles a été commise ;
  • -
  • l’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyer des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour toutes autres requêtes ou questions.
  • -
- -
- -

Comment protégeons-nous vos informations ?

- -

Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont protégées par un certificat SSL ; tandis que votre mot de passe est haché à l'aide d'un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte.

- -
- -

Quelle est notre politique de conservation des données ?

- -

Nous ferons un effort de bonne foi pour :

- -
    -
  • ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur ;
  • -
  • ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.
  • -
- -

Vous pouvez demander à télécharger une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.

- -

Vous pouvez supprimer votre compte de manière définitive à tout moment.

- -
- -

Utilisons-nous des témoins de connexion ?

- -

Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transfère sur le disque dur de votre ordinateur via votre navigateur web (si vous l’y avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et, dans le cas où vous possédez un compte, de vous associer avec ce dernier.

- -

Nous utilisons les témoins de connexion afin de comprendre et de sauvegarder vos préférences pour vos prochaines visites.

- -
- -

Divulguons-nous des informations à des tiers ?

- -

Nous ne vendons, n’échangeons ou ne transférons d’une quelconque manière que ce soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tiers de confiance qui nous aident à faire fonctionner ce site, à conduire nos activités commerciales ou à vous servir, du moment qu’ils acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que cela est nécessaire pour nous conformer à la loi, pour faire respecter les règles de notre site, ainsi que pour défendre nos droits, notre propriété, notre sécurité, ou ceux d’autres personnes.

- -

Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résident sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement sont délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.

- -

Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, à votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tous vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.

- -
- -

Utilisation de ce site par les enfants

- -

Si ce serveur est situé dans l’UE ou l’EEE : notre site, nos produits et nos services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (Réglement Général sur la Protection des Données), merci de ne pas utiliser ce site.

- -

Si ce serveur est situé aux États-Unis d’Amérique : notre site, nos produits et nos services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (Children's Online Privacy Protection Act), merci de ne pas utiliser ce site.

- -

Les exigences légales peuvent être différentes si ce serveur dépend d'une autre juridiction.

- -
- -

Modifications de notre politique de confidentialité

- -

Dans le cas où nous déciderions de changer notre politique de confidentialité, nous posterons les modifications sur cette page.

- -

Ce document est publié sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 26 mai 2022.

- -

Initialement adapté de la politique de confidentialité de Discourse.

themes: contrast: Mastodon (Contraste élevé) default: Mastodon (Sombre) @@ -1738,20 +1667,11 @@ fr: suspend: Compte suspendu welcome: edit_profile_action: Configuration du profil - edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d’en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux·lles abonné·e·s avant qu’iels ne soient autorisé·e·s à vous suivre, vous pouvez verrouiller votre compte. explanation: Voici quelques conseils pour vous aider à démarrer final_action: Commencez à publier - final_step: 'Commencez à publier ! Même sans abonné·e·s, vos messages publics peuvent être vus par d’autres, par exemple sur le fil public local et dans les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.' full_handle: Votre identifiant complet full_handle_hint: C’est ce que vous diriez à vos ami·e·s pour leur permettre de vous envoyer un message ou vous suivre à partir d’un autre serveur. - review_preferences_action: Modifier les préférences - review_preferences_step: Assurez-vous de définir vos préférences, telles que les courriels que vous aimeriez recevoir ou le niveau de confidentialité auquel vous publier vos messages par défaut. Si vous n’avez pas le mal des transports, vous pouvez choisir d’activer la lecture automatique des GIF. subject: Bienvenue sur Mastodon - tip_federated_timeline: Le fil public global est une vue en direct du réseau Mastodon. Mais elle n’inclut que les personnes auxquelles vos voisin·e·s sont abonné·e·s, donc elle n’est pas complète. - tip_following: Vous suivez les administrateurs de votre serveur par défaut. Pour trouver d’autres personnes intéressantes, consultez les fils publics local et global. - tip_local_timeline: Le fil public local est une vue des personnes sur %{instance}. Ce sont vos voisines et voisins immédiats ! - tip_mobile_webapp: Si votre navigateur mobile vous propose d’ajouter Mastodon à votre écran d’accueil, vous pouvez recevoir des notifications. Il agit comme une application native de bien des façons ! - tips: Astuces title: Bienvenue à bord, %{name} ! users: follow_limit_reached: Vous ne pouvez pas suivre plus de %{limit} personnes diff --git a/config/locales/fy.yml b/config/locales/fy.yml index 02f77d7ea0..c48a0b1b5c 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -1,8 +1,5 @@ --- fy: - about: - active_count_after: warber - active_footnote: Moanliks Warbere Brûkers (MWB) accounts: last_active: letst warber admin: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index a5001f2bd8..f4e83215c4 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -3,31 +3,19 @@ gd: about: about_mastodon_html: 'An lìonra sòisealta dhan àm ri teachd: Gun sanasachd, gun chaithris corporra, dealbhadh beusail agus dì-mheadhanachadh! Gabh sealbh air an dàta agad fhèin le Mastodon!' about_this: Mu dhèidhinn - active_count_after: gnìomhach - active_footnote: Cleachdaichean gnìomhach gach mìos (MAU) administered_by: 'Rianachd le:' api: API apps: Aplacaidean mobile - apps_platforms: Cleachd Mastodon o iOS, Android ’s ùrlaran eile - browse_public_posts: Brabhsaich sruth beò de phostaichean poblach air Mastodon contact: Fios thugainn contact_missing: Cha deach a shuidheachadh contact_unavailable: Chan eil seo iomchaidh - continue_to_web: Lean air adhart dhan aplacaid-lìn documentation: Docamaideadh - federation_hint_html: Le cunntas air %{instance}, ’s urrainn dhut leantainn air daoine air frithealaiche Mastodon sam bith is a bharrachd. - get_apps: Feuch aplacaid mobile hosted_on: Mastodon ’ga òstadh air %{domain} instance_actor_flash: | ’S e actar biortail a tha sa chunntas seo a riochdaicheas am frithealaiche fhèin seach cleachdaiche sònraichte. Tha e ’ga chleachdadh a chùm co-nasgaidh agus cha bu chòir dhut a bhacadh ach ma tha thu airson an t-ionstans gu lèir a bhacadh agus b’ fheàirrde thu bacadh àrainne a chleachdadh an àite sin. - learn_more: Barrachd fiosrachaidh - logged_in_as_html: Tha thu air do chlàradh a-steach an-dràsta mar %{username}. - logout_before_registering: Tha thu air clàradh a-steach mu thràth. rules: Riaghailtean an fhrithealaiche rules_html: 'Tha geàrr-chunntas air na riaghailtean a dh’fheumas tu gèilleadh riutha ma tha thu airson cunntas fhaighinn air an fhrithealaiche Mastodon seo gu h-ìosal:' - see_whats_happening: Faic dè tha dol - server_stats: 'Stadastaireachd an fhrithealaiche:' source_code: Bun-tùs status_count_after: few: postaichean @@ -35,7 +23,6 @@ gd: other: post two: phost status_count_before: A dh’fhoillsich - tagline: Lìonra sòisealta sgaoilte unavailable_content: Frithealaichean fo mhaorsainneachd unavailable_content_description: domain: Frithealaiche @@ -783,9 +770,6 @@ gd: closed_message: desc_html: Thèid seo a shealltainn air an duilleag-dhachaigh nuair a bhios an clàradh dùinte. ’S urrainn dhut tagaichean HTML a chleachdadh title: Teachdaireachd a’ chlàraidh dhùinte - deletion: - desc_html: Leig le neach sa bith an cunntas a sguabadh às - title: Fosgail sguabadh às chunntasan require_invite_text: desc_html: Nuair a bhios aontachadh a làimh riatanach dhan chlàradh, dèan an raon teacsa “Carson a bu mhiann leat ballrachd fhaighinn?” riatanach seach roghainneil title: Iarr air cleachdaichean ùra gun innis iad carson a tha iad ag iarraidh ballrachd @@ -1019,10 +1003,7 @@ gd: warning: Bi glè chùramach leis an dàta seo. Na co-roinn le duine sam bith e! your_token: An tòcan inntrigidh agad auth: - apply_for_account: Iarr cuireadh change_password: Facal-faire - checkbox_agreement_html: Gabhaidh mi ri riaghailtean an fhrithealaiche ’s teirmichean a’ chleachdaidh - checkbox_agreement_without_rules_html: Gabhaidh mi ri teirmichean a’ chleachdaidh delete_account: Sguab às an cunntas delete_account_html: Nam bu mhiann leat an cunntas agad a sguabadh às, nì thu an-seo e. Thèid dearbhadh iarraidh ort. description: @@ -1062,7 +1043,6 @@ gd: redirecting_to: Chan eil an cunntas gad gnìomhach on a tha e ’ga ath-stiùireadh gu %{acct}. view_strikes: Seall na rabhaidhean a fhuair an cunntas agad roimhe too_fast: Chaidh am foirm a chur a-null ro luath, feuch ris a-rithist. - trouble_logging_in: A bheil duilgheadas agad leis a’ chlàradh a-steach? use_security_key: Cleachd iuchair tèarainteachd authorize_follow: already_following: Tha thu a’ leantainn air a’ chunntas seo mu thràth @@ -1636,102 +1616,6 @@ gd: too_late: Tha e ro anmoch airson an rabhadh seo ath-thagradh tags: does_not_match_previous_name: "– chan eil seo a-rèir an ainm roimhe" - terms: - body_html: | -

Poileasaidh prìobhaideachd

- -

Dè am fiosrachadh a chruinnicheas sinn?

- -
    - -
  • Fiosrachadh bunasach a’ cunntais: Ma chlàraicheas tu leis an fhrithealaiche seo, dh’fhaoidte gun dèid iarraidh ort gun cuir thu a-steach ainm-cleachdaiche, seòladh puist-d agus facal-faire. Faodaidh tu barrachd fiosrachaidh a chur ris a’ phròifil agad ma thogras tu, can ainm-taisbeanaidh agus teacsa mu do dhèidhinn agus dealbhan pròifile ’s banna-chinn a luchdadh suas. Thèid an t-ainm-cleachdaiche, an t-ainm-taisbeanaidh, an teacsa mu do dhèidhinn agus dealbhan na pròifile ’s a bhanna-chinn a shealltainn gu poblach an-còmhnaidh.
  • - -
  • Postaichean, luchd-leantainn agus fiosrachadh poblach eile: Tha liosta nan daoine air a leanas tu poblach mar a tha i dhan luchd-leantainn agad. Nuair a chuireas tu a-null teachdaireachd, thèid an t-àm ’s an ceann-latha a stòradh cho math ris an aplacaid leis an do chuir thu am foirm a-null. Faodaidh ceanglachain meadhain a bhith am broinn teachdaireachdan, can dealbhan no videothan. Tha postaichean poblach agus postaichean falaichte o liostaichean ri ’m faighinn gu poblach. Nuair a bhrosnaicheas tu post air a’ phròifil agad, ’s e fiosrachadh poblach a tha sin cuideachd. Thèid na postaichean agad a lìbhrigeadh dhan luchd-leantainn agad agus is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nuair a sguabas tu às post, thèid sin a lìbhrigeadh dhan luchd-leantainn agad cuideachd. Tha ath-bhlogachadh no dèanamh annsachd de phost eile poblach an-còmhnaidh.
  • - -
  • Postaichean dìreach is dhan luchd-leantainn a-mhàin: Thèid a h-uile post a stòradh ’s a phròiseasadh air an fhrithealaiche. Thèid na postaichean dhan luchd-leantainn a-mhàin a lìbhrigeadh dhan luchd-leantainn agad agus dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost. Thèid postaichean dìreach a lìbhrigeadh dhan luchd-chleachdaidh a chaidh iomradh a dhèanamh orra sa phost a-mhàin. Is ciall dha seo gun dèid an lìbhrigeadh gu frithealaichean eile aig amannan is gun dèid lethbhreacan dhiubh a stòradh thall. Nì sinn ar dìcheall gun cuingich sinn an t-inntrigeadh dha na postaichean air na daoine a fhuair ùghdarrachadh dhaibh ach dh’fhaoidte nach dèan frithealaichean eile seo. Mar sin dheth, tha e cudromach gun doir thu sùil air na frithealaichean dhan a bhuineas an luchd-leantainn agad. Faodaidh tu roghainn a chur air no dheth a leigeas leat aontachadh ri luchd-leantainn ùra no an diùltadh a làimh. Thoir an aire gum faic rianairean an fhrithealaiche agus frithealaiche sam bith a gheibh am fiosrachadh na teachdaireachdan dhen leithid agus gur urrainn dha na faightearan glacaidhean-sgrìn no lethbhreacan dhiubh a dhèanamh no an cho-roinneadh air dòighean eile. Na co-roinn fiosrachadh dìomhair air Mastodon idir.
  • - -
  • IPan is meata-dàta eile: Nuair a nì thu clàradh a-steach, clàraidh sinn an seòladh IP on a rinn thu clàradh a-steach cuide ri ainm aplacaid a’ bhrabhsair agad. Bidh a h-uile seisean clàraidh a-steach ri làimh dhut airson an lèirmheas agus an cùl-ghairm sna roghainnean. Thèid an seòladh IP as ùire a chleachd thu a stòradh suas ri 12 mhìos. Faodaidh sinn cuideachd logaichean an fhrithealaiche a chumail a ghabhas a-steach seòladh IP aig a h-uile iarrtas dhan fhrithealaiche againn.
  • - -
- -
- -

Dè na h-adhbharan air an cleachd sinn am fiosrachadh agad?

- -

Seo na dòighean air an cleachd sinn fiosrachadh sam bith a chruinnich sinn uat ma dh’fhaoidte:

- -
    - -
  • Airson bun-ghleusan Mhastodon a lìbhrigeadh. Chan urrainn dhut eadar-ghnìomh a ghabhail le susbaint càich no an t-susbaint agad fhèin a phostadh ach nuair a bhios tu air do chlàradh a-steach. Mar eisimpleir, faodaidh tu leantainn air càch ach am faic thu na postaichean aca còmhla air loidhne-ama pearsanaichte na dachaigh agad.
  • - -
  • Airson cuideachadh le maorsainneachd na coimhearsnachd, can airson coimeas a dhèanamh eadar an seòladh IP agad ri feadhainn eile feuch am mothaich sinn do sheachnadh toirmisg no briseadh eile nan riaghailtean.
  • - -
  • Faodaidh sinn an seòladh puist-d agad a chleachdadh airson fiosrachadh no brathan mu eadar-ghnìomhan a ghabh càch leis an t-susbaint agad no teachdaireachdan a chur thugad, airson freagairt ri ceasnachaidhean agus/no iarrtasan no ceistean eile.
  • - -
- -
- -

Ciamar a dhìonas sinn am fiosrachadh agad?

- -

Cuiridh sinn iomadh gleus tèarainteachd an sàs ach an glèidheadh sinn sàbhailteachd an fhiosrachaidh phearsanta agad nuair a chuireas tu gin a-steach, nuair a chuireas tu a-null e no nuair a nì thu inntrigeadh air. Am measg gleusan eile, thèid seisean a’ bhrabhsair agad cuide ris an trafaig eadar na h-aplacaidean agad ’s an API a dhìon le SSL agus thèid hais a dhèanamh dhen fhacal-fhaire agad le algairim aon-shligheach làidir. Faodaidh tu dearbhadh dà-cheumnach a chur an comas airson barrachd tèarainteachd a chur ris an inntrigeadh dhan chunntas agad.

- -
- -

Dè am poileasaidh cumail dàta againn?

- -

Nì sinn ar dìcheall:

- -
    - -
  • Nach cùm sinn logaidhean an fhrithealaiche sa bheil seòlaidhean IP nan iarrtasan uile dhan fhrithealaiche seo nas fhaide na 90 latha ma chumas sinn logaichean dhen leithid idir.
  • - -
  • Nach cùm sinn na seòlaidhean IP a tha co-cheangailte ri cleachdaichean clàraichte nas fhaide na 12 mhìos.
  • - -
- -

’S urrainn dhut tasg-lann iarraidh dhen t-susbaint agad ’s a luchdadh a-nuas is gabhaidh seo a-staigh na postaichean, na ceanglachain meadhain, dealbh na pròifil agus dealbh a’ bhanna-chinn agad.

- -

’S urrainn dhut an cunntas agad a sguabadh às gu buan uair sam bith.

- -
- -

An cleachd sinn briosgaidhean?

- -

Cleachdaidh. ’S e faidhlichean beaga a tha sna briosgaidean a thar-chuireas làrach no solaraiche seirbheise gu clàr-cruaidh a’ choimpiutair agad leis a’ bhrabhsair-lìn agad (ma cheadaicheas tu sin). Bheir na briosgaidean sin comas dhan làrach gun aithnich i am brabhsair agad agus ma tha cunntas clàraichte agad, gun co-cheangail i ris a’ chunntas chlàraichte agad e.

- -

Cleachdaidh sinn briosgaidean airson na roghainnean agad a thuigsinn ’s a ghlèidheadh gus an tadhail thu oirnn san àm ri teachd.

- -
- -

Am foillsich sinn fiosrachadh sam bith gu pàrtaidhean air an taobh a-muigh?

- -

Cha reic, malairt no tar-chuir sinn fiosrachadh air a dh’aithnichear thu fhèin gu pàrtaidh sam bith air an taobh a-muigh. Cha ghabh seo a-staigh treas-phàrtaidhean earbsach a chuidicheas leinn le ruith na làraich againn, le obrachadh a’ ghnìomhachais againn no gus an t-seirbheis a thoirt leat cho fada ’s a dh’aontaicheas na treas-phàrtaidhean sin gun cùm iad am fiosrachadh dìomhair. Faodaidh sinn am fiosrachadh agad fhoillseachadh cuideachd nuair a bhios sinn dhen bheachd gu bheil am foillseachadh sin iomchaidh airson gèilleadh dhan lagh, poileasaidhean na làraich againn èigneachadh no na còraichean, an sealbh no an t-sàbhailteachd againn fhèin no aig càch a dhìon.

- -

Dh’fhaoidte gun dèid an t-susbaint phoblach agad a luchdadh a-nuas le frithealaichean eile san lìonra. Thèid na postaichean poblach agad ’s an fheadhainn dhan luchd-leantainn a-mhàin a lìbhrigeadh dha na frithealaichean far a bheil an luchd-leantainn agad a’ còmhnaidh agus thèid na teachdaireachdan dìreach a lìbhrigeadh gu frithealaichean nam faightearan nuair a bhios iad a’ còmhnaidh air frithealaiche eile.

- -

Nuair a dh’ùghdarraicheas tu aplacaid gun cleachd i an cunntas agad, a-rèir sgòp nan ceadan a dh’aontaicheas tu riutha, faodaidh i fiosrachadh poblach na pròifil agad, liosta na feadhna air a bhios tu a’ leantainn, an luchd-leantainn agad, na liostaichean agad, na postaichean agad uile ’s na h-annsachdan agad inntrigeadh. Chan urrainn do dh’aplacaidean an seòladh puist-d no am facal-faire agad inntrigeadh idir.

- -
- -

Cleachdadh na làraich leis a’ chloinn

- -

Ma tha am frithealaiche seo san Aonadh Eòrpach (AE) no san Roinn Eaconomach na h-Eòrpa (EEA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (General Data Protection Regulation) nach cleachd thu an làrach seo.

- -

Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (Children''s Online Privacy Protection Act) nach cleachd thu an làrach seo.

- - -

Dh’fhaoidte gu bheil am frithealaiche seo fo riatanasan lagha eile ma tha e ann an uachdranas laghail eile.

- -
- -

Atharraichean air a’ phoileasaidh phrìobhaideachd againn

- -

Ma chuireas sinn romhainn am poileasaidh prìobhaideachd againn atharrachadh, postaichidh sinn na h-atharraichean dhan duilleag seo.

- -

Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-26mh dhen Chèitean 2022.

- -

Chaidh a fhreagarrachadh o thùs o phoileasaidh prìobhaideachd Discourse.

themes: contrast: Mastodon (iomsgaradh àrd) default: Mastodon (dorcha) @@ -1810,20 +1694,11 @@ gd: suspend: Cunntas à rèim welcome: edit_profile_action: Suidhich a’ phròifil agad - edit_profile_step: "’S urrainn dhut a’ phròifil agad a ghnàthachadh is tu a’ luchdadh suas avatar no bann-cinn, ag atharrachadh d’ ainm-taisbeanaidh is a bharrachd. Nam bu mhiann leat lèirmheas a dhèanamh air daoine mus fhaod iad leantainn ort, ’s urrainn dhut an cunntas agad a ghlasadh." explanation: Seo gliocas no dhà gus tòiseachadh final_action: Tòisich air postadh - final_step: 'Tòisich air postadh! Fiù ’s mur eil duine sam bith a’ leantainn ort, chì cuid mhath na postaichean poblach agad, can air an loidhne-ama ionadail agus le tagaichean hais. Saoil an innis thu beagan mu d’ dhèidhinn air an taga hais #introductions?' full_handle: D’ ainm-cleachdaiche slàn full_handle_hint: Seo na bheir thu dha na caraidean agad ach an urrainn dhaibh teachdaireachd a chur thugad no leantainn ort o fhrithealaiche eile. - review_preferences_action: Atharraich na roghainnean - review_preferences_step: Dèan cinnteach gun suidhich thu na roghainnean agad, can dè na puist-d a bu mhiann leat fhaighinn no dè a’ bun-roghainn air ìre na prìobhaideachd a bu chòir a bhith aig na postaichean agad. Mura cuir gluasad an òrrais ort, b’ urrainn dhut cluich fèin-obrachail nan GIFs a chur an comas. subject: Fàilte gu Mastodon - tip_federated_timeline: "’S e sealladh farsaing dhen lìonra Mastodon a tha san loidhne-ama cho-naisgte. Gidheadh, cha ghabh i a-staigh ach na daoine air an do rinn do nàbaidhean fo-sgrìobhadh, mar sin chan eil i coileanta." - tip_following: Leanaidh tu air rianaire(an) an fhrithealaiche agad a ghnàth. Airson daoine nas inntinniche a lorg, thoir sùil air na loidhnichean-ama ionadail is co-naisgte. - tip_local_timeline: "’S e sealladh farsaing air na daoine a th’ air %{instance} a tha san loidhne-ama ionadail agad. Seo na nàbaidhean a tha faisg ort!" - tip_mobile_webapp: Ma leigeas am brabhsair mobile agad leat Mastodon a chur ris an sgrìn-dhachaigh, ’s urrainn dhut brathan putaidh fhaighinn. Bidh e ’ga ghiùlan fhèin coltach ri aplacaid thùsail air iomadh dòigh! - tips: Gliocasan title: Fàilte air bòrd, %{name}! users: follow_limit_reached: Chan urrainn dhut leantainn air còrr is %{limit} daoine diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 870bef3cf7..4021684cc2 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -3,38 +3,25 @@ gl: about: about_mastodon_html: 'A rede social do futuro: Sen publicidade, sen seguimento por empresas, deseño ético e descentralización! En Mastodon ti posúes os teus datos!' about_this: Acerca de - active_count_after: activas - active_footnote: Usuarias Activas no Mes (UAM) administered_by: 'Administrada por:' api: API apps: Aplicacións móbiles - apps_platforms: Emprega Mastodon dende iOS, Android e outras plataformas - browse_public_posts: Cronoloxía en directo cos comentarios públicos en Mastodon contact: Contacto contact_missing: Non establecido contact_unavailable: Non dispoñíbel - continue_to_web: Continuar na app web documentation: Documentación - federation_hint_html: Cunha conta en %{instance} poderás seguir ás persoas en calquera servidor do Mastodon e alén. - get_apps: Probar unha aplicación móbil hosted_on: Mastodon aloxado en %{domain} instance_actor_flash: 'Esta conta é un actor virtual utilizado para representar ao servidor e non a unha usuaria individual. Utilízase para propósitos de federación e non debería estar bloqueada a menos que queiras bloquear a toda a instancia, en tal caso deberías utilizar o bloqueo do dominio. ' - learn_more: Saber máis - logged_in_as_html: Entraches como %{username}. - logout_before_registering: Xa iniciaches sesión. privacy_policy: Política de Privacidade rules: Regras do servidor rules_html: 'Aquí tes un resumo das regras que debes seguir se queres ter unha conta neste servidor de Mastodon:' - see_whats_happening: Mira o que acontece - server_stats: 'Estatísticas do servidor:' source_code: Código fonte status_count_after: one: publicación other: publicacións status_count_before: Que publicaron - tagline: Rede social descentralizada unavailable_content: Contido non dispoñíbel unavailable_content_description: domain: Servidor @@ -767,9 +754,6 @@ gl: closed_message: desc_html: Mostrado na páxina de portada cando o rexistro está pechado. Pode utilizar cancelos HTML title: Mensaxe de rexistro pechado - deletion: - desc_html: Permitirlle a calquera que elimine a súa conta - title: Abrir o borrado da conta require_invite_text: desc_html: Cando os rexistros requiren aprobación manual, facer que o texto "Por que te queres rexistrar?" do convite sexa obrigatorio en lugar de optativo title: Require que as novas usuarias completen solicitude de texto do convite @@ -1001,10 +985,8 @@ gl: warning: Ten moito tino con estos datos. Non os compartas nunca con ninguén! your_token: O seu testemuño de acceso auth: - apply_for_account: Solicita un convite + apply_for_account: Solicita o acceso change_password: Contrasinal - checkbox_agreement_html: Acepto as regras do servidor e os termos do servizo - checkbox_agreement_without_rules_html: Acepto os termos do servizo delete_account: Eliminar conta delete_account_html: Se queres eliminar a túa conta, podes facelo aquí. Deberás confirmar a acción. description: @@ -1023,6 +1005,7 @@ gl: migrate_account: Mover a unha conta diferente migrate_account_html: Se queres redirixir esta conta hacia outra diferente, pode configuralo aquí. or_log_in_with: Ou accede con + privacy_policy_agreement_html: Lin e acepto a política de privacidade providers: cas: CAS saml: SAML @@ -1030,12 +1013,18 @@ gl: registration_closed: "%{instance} non está a aceptar novas usuarias" resend_confirmation: Reenviar as intruccións de confirmación reset_password: Restablecer contrasinal + rules: + preamble: Son establecidas e aplicadas pola moderación de %{domain}. + title: Algunhas regras básicas. security: Seguranza set_new_password: Estabelecer novo contrasinal setup: email_below_hint_html: Se o enderezo inferior non é correcto, podes cambialo aquí e recibir un correo de confirmación. email_settings_hint_html: Enviouse un correo de confirmación a %{email}. Se o enderezo non é correcto podes cambialo nos axustes da conta. title: Axustes + sign_up: + preamble: Cunha conta neste servidor Mastodon poderás seguir a calquera outra persoa na rede, independentemente de onde estivese hospedada esa conta. + title: Imos crear a túa conta en %{domain}. status: account_status: Estado da conta confirming: Agardando a confirmación do correo enviado. @@ -1044,7 +1033,6 @@ gl: redirecting_to: A túa conta está inactiva porque está redirixida a %{acct}. view_strikes: Ver avisos anteriores respecto da túa conta too_fast: Formulario enviado demasiado rápido, inténtao outra vez. - trouble_logging_in: Problemas para acceder? use_security_key: Usa chave de seguridade authorize_follow: already_following: Xa está a seguir esta conta @@ -1625,56 +1613,6 @@ gl: too_late: É demasiado tarde para recurrir este aviso tags: does_not_match_previous_name: non concorda co nome anterior - terms: - body_html: | -

Privacidade

-

Que información recollemos?

-
    -
  • Información básica da conta: Se te rexistras neste servidor, pedirémosche un nome de usuaria, un enderezo de correo electrónico e un contrasinal. De xeito adicional tamén poderás incluír información como un nome público e biografía, tamén subir unha fotografía de perfil e unha imaxe para a cabeceira. O nome de usuaria, o nome público, a biografía e as imaxes de perfil e cabeceira sempre se mostran de xeito público.
  • -
  • Publicacións, seguimento e outra información pública: A lista das persoas que segues é unha lista pública, o mesmo acontece coas persoas que te seguen. Cando envías unha mensaxe, a data e hora gárdanse así como a aplicación que utilizaches para enviar a mensaxe. As publicacións poderían incluír ficheiros multimeda, como fotografías e vídeos. As publicacións públicas e as non listadas están dispoñibles de xeito público. Cando destacas unha publicación no teu perfil tamén é pública. As publicacións son enviadas as túas seguidoras, nalgúns casos pode acontecer que estén en diferentes servidores e gárdanse copias neles. Cando eleminas unha publicación tamén se envía ás túas seguidoras. A acción de volver a publicar ou marcar como favorita outra publicación sempre é pública.
  • -
  • Mensaxes directas e só para seguidoras: Todas as mensaxes gárdanse e procésanse no servidor. As mensaxes só para seguidoras son entregadas ás túas seguidoras e ás usuarias que son mencionadas nelas, e as mensaxes directas entréganse só ás usuarias mencionadas en elas. Nalgúns casos esto implica que son entregadas a diferentes servidores e gárdanse copias alí. Facemos un esforzo honesto para limitar o acceso a esas publicacións só ás persoas autorizadas, pero outros servidores poderían non ser tan escrupulosos. Polo tanto, é importante revisar os servidores onde se hospedan as túas seguidoras. Nos axustes podes activar a opción de aprobar ou rexeitar novas seguidoras de xeito manual. Ten en conta que a administración do servidor e todos os outros servidores implicados poden ver as mensaxes., e as destinatarias poderían facer capturas de pantalla, copiar e volver a compartir as mensaxes. Non compartas información sensible en Mastodon.
  • -
  • IPs e outros metadatos: Cando te conectas, gravamos o IP desde onde te conectas, así como o nome da aplicación desde onde o fas. Todas as sesións conectadas están dispoñibles para revisar e revogar nos axustes. O último enderezo IP utilizado gárdase ate por 12 meses. Tamén poderiamos gardar informes do servidor que inclúan o enderezo IP de cada petición ao servidor.
  • -
-
-

De que xeito utilizamos os teus datos?

-

Toda a información que recollemos podería ser utilizada dos seguintes xeitos:

-
    -
  • Para proporcionar a funcionabiliade básica de Mastodon. Só podes interactuar co contido de outra xente e publicar o teu propio contido se inicias sesión. Por exemplo, poderías seguir outra xente e ver as súas publicacións combinadas nunha cronoloxía de inicio personalizada.
  • -
  • Para axudar a moderar a comunidade, por exemplo comparando o teu enderezo IP con outros coñecidos para evitar esquivar os rexeitamentos ou outras infraccións.
  • -
  • O enderezo de correo electrónico que nos proporcionas podería ser utilizado para enviarche información, notificacións sobre outra xente que interactúa coas túas publicacións ou che envía mensaxes, e para responder a consultas, e/ou outras cuestións ou peticións.
  • -
-
-

Como proxetemos os teus datos?

-

Implementamos varias medidas de seguridade para protexer os teus datos persoais cando introduces, envías ou accedes á túa información persoal. Entre outras medidas, a túa sesión de navegación, así como o tráfico entre as túas aplicacións e o API están aseguradas mediante SSL, e o teu contrasinal está camuflado utilizando un algoritmo potente de unha sóa vía. Podes habilitar a autenticación por dobre factor para protexer aínda máis o acceso á túa conta.

-
-

Cal é a nosa política de retención de datos?

-

Faremos un sincero esforzo en:

-
    -
  • Protexer informes do servidor que conteñan direccións IP das peticións ao servidor, actualmente estos informes gárdanse por non máis de 90 días.
  • -
  • Reter os enderezos IP asociados con usuarias rexistradas non máis de 12 meses.
  • -
-

Podes solicitar e descargar un ficheiro cos teus contidos, incluíndo publicacións, anexos multimedia, imaxes de perfil e imaxe da cabeceira.

-

En todo momento podes eliminar de xeito irreversible a túa conta.

-
-

Utilizamos cookies?

-

Si. As cookies son pequenos ficheiros que un sitio web ou o provedor de servizo transfiren ao disco duro da túa computadora a través do navegador web (se o permites). Estas cookies posibilitan ao sitio web recoñecer o teu navegador e, se tes unha conta rexistrada, asocialo con dita conta.

-

Utilizamos cookies para comprender e gardar as túas preferencias para futuras visitas.

-
-

Entregamos algunha información a terceiras partes alleas?

-

Non vendemos, negociamos ou transferimos de ningún xeito a terceiras partes alleas a túa información identificativa persoal. Esto non inclúe terceiras partes de confianza que nos axudan a xestionar o sitio web, a xestionar a empresa, ou darche servizo se esas partes aceptan manter esa información baixo confidencialidade. Poderiamos liberar esa información se cremos que eso da cumplimento axeitado a lei, reforza as políticas do noso sitio ou protexe os nosos, e de outros, dereitos, propiedade ou seguridade.

-

O teu contido público podería ser descargado por outros servidores na rede. As túas publicacións públicas e para só seguidoras son entregadas aos servidores onde residen as túas seguidoras na rede, e as mensaxes directas son entregadas aos servidores das destinatarias sempre que esas seguidoras ou destinatarios residan en servidores distintos de este.

-

Cado autorizas a unha aplicación a utilizar a túa conta, dependendo do ámbito dos permisos que autorices, podería acceder a información pública de perfil, á lista de seguimento, ás túas seguidoras, as túas listas, todas as túas publicacións, as publicacións favoritas. As aplicacións non poden acceder nunca ao teu enderezo de correo nin ao teu contrasinal.

-
-

Utilización do sitio web por menores

-

Se este servidor está na UE ou no EEE: a nosa web, productos e servizos están dirixidos a persoas de 16 ou máis anos. Se tes menos de 16 anos, a requerimento da GDPR (General Data Protection Regulation) non uses esta web.

-

Se este servidor está nos EEUU: a nosa web, productos e servizos están dirixidos a persoas de 13 ou máis anos. Se non tes 13 anos de idade, a requerimento de COPPA (Children's Online Privacy Protection Act) non uses esta web.

-

Os requerimentos legais poden ser diferentes se este servidor está baixo outra xurisdición.

-
-

Cambios na nosa política de privacidade

-

Se decidimos cambiar a nosa política de privacidade publicaremos os cambios nesta páxina.

-

Este documento ten licenza CC-BY-SA. Actualizouse o 26 de maio de 2022.

-

Adaptado do orixinal política de privacidade de Discourse.

- title: Política de Privacidade de %{instance} themes: contrast: Mastodon (Alto contraste) default: Mastodon (Escuro) @@ -1753,20 +1691,13 @@ gl: suspend: Conta suspendida welcome: edit_profile_action: Configurar perfil - edit_profile_step: Podes personalizar o teu perfil subindo un avatar, cabeceira, cambiar o nome público e aínda máis. Se restrinxes a túa conta podes revisar a conta das persoas que solicitan seguirte antes de permitirlles o acceso aos teus toots. + edit_profile_step: Podes personalizar o teu perfil subindo unha imaxe de perfil, cambiar o nome público e moito máis. Podes elexir revisar as solicitudes de seguimento recibidas antes de permitirlles que te sigan. explanation: Aquí tes algunhas endereitas para ir aprendendo final_action: Comeza a publicar - final_step: 'Publica! Incluso sen seguidoras as túas mensaxes públicas serán vistas por outras persoas, por exemplo na cronoloxía local e nos cancelos. Poderías presentarte ao #fediverso utilizando o cancelo #introductions.' + final_step: 'Publica! Incluso sen seguidoras, as túas mensaxes públicas serán vistas por outras persoas, por exemplo na cronoloxía local e nos cancelos. Poderías presentarte ao #fediverso utilizando o cancelo #introductions.' full_handle: O teu alcume completo full_handle_hint: Compárteo coas túas amizades para que poidan seguirte ou enviarche mensaxes desde outros servidores. - review_preferences_action: Cambiar preferencias - review_preferences_step: Lembra establecer as preferencias, tales como o tipo de emails que queres recibir, ou o nivel de privacidade por defecto para as túas publicacións. Se non che molestan as imaxes con movemento, podes elexir que os GIF se reproduzan automáticamente. subject: Benvida a Mastodon - tip_federated_timeline: A cronoloxía federada é unha visión reducida da rede Mastodon. Só inclúe a persoas relacionadas coas persoas ás que estás subscrita, polo que non é a totalidade do fediverso. - tip_following: Por defecto segues a Admin(s) no teu servidor. Para atopar máis xente interesante, mira nas cronoloxías local e federada. - tip_local_timeline: A cronoloxía local é unha ollada xeral sobre a xente en %{instance}. Son as súas veciñas máis próximas! - tip_mobile_webapp: Se o navegador móbil che ofrece engadir Mastodon a pantalla de inicio, podes recibir notificacións push. En moitos aspectos comportarase como unha aplicación nativa! - tips: Consellos title: Benvida, %{name}! users: follow_limit_reached: Non pode seguir a máis de %{limit} persoas diff --git a/config/locales/he.yml b/config/locales/he.yml index 232945647c..244bce9632 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -3,31 +3,19 @@ he: about: about_mastodon_html: מסטודון היא רשת חברתית חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ברשת החברתית באופן חלק. about_this: אודות שרת זה - active_count_after: פעיל - active_footnote: משתמשים פעילים חודשית (MAU) administered_by: 'מנוהל ע"י:' api: ממשק apps: יישומונים לנייד - apps_platforms: שימוש במסטודון מ-iOS, אנדרואיד ופלטפורמות אחרות - browse_public_posts: עיון בפיד חי של חצרוצים פומביים בשרת זה contact: יצירת קשר contact_missing: ללא הגדרה contact_unavailable: לא רלוונטי/חסר - continue_to_web: להמשיך לאפליקציית ווב documentation: תיעוד - federation_hint_html: עם חשבון ב-%{instance} ניתן לעקוב אחרי אנשים בכל שרת מסטודון ומעבר. - get_apps: נסה/י יישומון לנייד hosted_on: מסטודון שיושב בכתובת %{domain} instance_actor_flash: | חשבון זה הינו פועל וירטואלי המשמש לייצוג השרת עצמו ולא משתמש ספציפי. הוא משמש למטרת פדרציה ואין לחסום אותו אלא למטרת חסימת המופע כולו, ובמקרה כזה עדיף להשתמש בחסימת מופע. - learn_more: מידע נוסף - logged_in_as_html: הנך מחובר/ת כרגע כ-%{username}. - logout_before_registering: חשבון זה כבר מחובר. rules: כללי השרת rules_html: 'להלן סיכום הכללים שעליך לעקוב אחריהם על מנת להשתמש בחשבון בשרת מסטודון זה:' - see_whats_happening: מה קורה כעת - server_stats: 'סטטיסטיקות שרת:' source_code: קוד מקור status_count_after: many: פוסטים @@ -35,7 +23,6 @@ he: other: פוסטים two: פוסטים status_count_before: שכתבו - tagline: רשת חברתית מבוזרת unavailable_content: שרתים מוגבלים unavailable_content_description: domain: שרת @@ -792,9 +779,6 @@ he: closed_message: desc_html: מוצג על הדף הראשי כאשר ההרשמות סגורות. ניתן להשתמש בתגיות HTML title: מסר סגירת הרשמות - deletion: - desc_html: הרשאה לכולם למחוק את חשבונם - title: פתיחת מחיקת חשבון require_invite_text: desc_html: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי title: אלץ משתמשים חדשים למלא סיבת הצטרפות @@ -1027,10 +1011,7 @@ he: warning: זהירות רבה נדרשת עם מידע זה. אין לחלוק אותו אף פעם עם אף אחד! your_token: אסימון הגישה שלך auth: - apply_for_account: בקשת הזמנה change_password: סיסמה - checkbox_agreement_html: אני מסכים/ה לכללי השרת ולתנאי השימוש - checkbox_agreement_without_rules_html: אני מסכים/ה לתנאי השימוש delete_account: מחיקת חשבון delete_account_html: אם ברצונך למחוק את החשבון, ניתן להמשיך כאן. תתבקש/י לספק אישור נוסף. description: @@ -1070,7 +1051,6 @@ he: redirecting_to: חשבונכם לא פעיל כעת מכיוון שמפנה ל%{acct}. view_strikes: צפיה בעברות קודמות שנרשמו נגד חשבונך too_fast: הטופס הוגש מהר מדי, נסה/י שוב. - trouble_logging_in: בעיה להתחבר לאתר? use_security_key: שימוש במפתח אבטחה authorize_follow: already_following: את/ה כבר עוקב/ת אחרי חשבון זה @@ -1653,88 +1633,6 @@ he: too_late: מאוחר מדי להגיש ערעור tags: does_not_match_previous_name: לא תואם את השם האחרון - terms: - body_html: | -

מדיניות פרטיות

-

איזה מידע אנחנו אוספים ?

- -
    -
  • מידע חשבון בסיסי: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • -
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
  • -
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
  • -
- -
- -

What do we use your information for?

- -

Any of the information we collect from you may be used in the following ways:

- -
    -
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • -
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • -
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
  • -
- -
- -

How do we protect your information?

- -

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

- -
- -

What is our data retention policy?

- -

We will make a good faith effort to:

- -
    -
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • -
  • Retain the IP addresses associated with registered users no more than 12 months.
  • -
- -

You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

- -

You may irreversibly delete your account at any time.

- -
- -

Do we use cookies?

- -

Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

- -

We use cookies to understand and save your preferences for future visits.

- -
- -

Do we disclose any information to outside parties?

- -

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

- -

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

- -

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

- -
- -

Site usage by children

- -

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

- -

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

- -

Law requirements can be different if this server is in another jurisdiction.

- -
- -

Changes to our Privacy Policy

- -

If we decide to change our privacy policy, we will post those changes on this page.

- -

This document is CC-BY-SA. It was last updated May 26, 2022.

- -

Originally adapted from the Discourse privacy policy.

themes: contrast: מסטודון (ניגודיות גבוהה) default: מסטודון (כהה) @@ -1813,20 +1711,11 @@ he: suspend: חשבון מושעה welcome: edit_profile_action: הגדרת פרופיל - edit_profile_step: תוכל.י להתאים אישית את הפרויל באמצעות העלאת יצגן (אוואטר), כותרת, שינוי כינוי ועוד. אם תרצה.י לסקור את עוקביך/ייך החדשים לפני שתרשה.י להם לעקוב אחריך/ייך, תוכל.י לנעול את החשבון לשם כך. explanation: הנה כמה טיפים לעזור לך להתחיל final_action: התחל/ילי לחצרץ - final_step: 'התחל/ילי לחצרץ ! אפילו ללא עוקבים ייתכן שהחצרוצים הפומביים של יצפו ע"י אחרים, למשל בציר הזמן המקומי או בתגי הקבצה (האשטגים). כדאי להציג את עצמך תחת התג #introductions או #היוש' full_handle: שם המשתמש המלא שלך full_handle_hint: זה מה שתאמר.י לחברייך כדי שיוכלו לשלוח לך הודעה או לעקוב אחרייך ממופע אחר. - review_preferences_action: שנה הגדרות - review_preferences_step: וודא לקבוע את העדפותייך, למשל איזה הודעות דוא"ל תרצה/י לקבל, או איזו רמת פרטיות תרצה כברירת מחדל לחצרוצים שלך. אם אין לך בעיה עם זה, תוכל לאפשר הפעלה אוטומטית של הנפשות GIF subject: ברוכים הבאים למסטודון - tip_federated_timeline: ציר הזמן הפדרטיבי הוא מבט לכל הפדיברס, אך הוא כולל רק אנשים שחבריך למופע הספציפי שהתחברת אליו נרשמו אליו, כך שהוא לא שלם. - tip_following: את.ה כבר עוקב.ת אחר האדמין (מנהל השרת) כברירת מחדל. על מנת למצוא עוד אנשים מעניינים, בדוק את צירי הזמן המקומי והפדרטיבי. - tip_local_timeline: ציר הזמן המקומי מספק מבט לאנשים במופע זה (%{instance}). אלו הם שכנייך המידיים ! - tip_mobile_webapp: אם דפדפן הנייד שלך מאפשר את הוספת מסטודון למסך הבית שלך, תוכל לקבל התראות בדחיפה (push). במובנים רבים אפשרות זאת מתנהגת כמו ישומון ! - tips: טיפים title: ברוך/ה הבא/ה, %{name} ! users: follow_limit_reached: לא תוכל לעקוב אחר יותר מ %{limit} אנשים diff --git a/config/locales/hi.yml b/config/locales/hi.yml index 9a9e3aa7b5..1bb333b48a 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -2,9 +2,7 @@ hi: about: about_this: विवरण - active_count_after: सक्रिय contact: संपर्क - learn_more: अधिक जानें status_count_after: one: स्थिति other: स्थितियां diff --git a/config/locales/hr.yml b/config/locales/hr.yml index f2687b1e69..10065520d1 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -3,16 +3,10 @@ hr: about: about_mastodon_html: 'Društvena mreža budućnosti: bez oglasa, bez korporativnog nadzora, etički dizajn i decentralizacija! Budite u vlasništvu svojih podataka pomoću Mastodona!' about_this: Dodatne informacije - active_count_after: aktivnih - active_footnote: Mjesečno aktivnih korisnika (MAU) apps: Mobilne aplikacije - apps_platforms: Koristite Mastodon na iOS-u, Androidu i drugim platformama contact: Kontakt contact_missing: Nije postavljeno documentation: Dokumentacija - get_apps: Isprobajte mobilnu aplikaciju - learn_more: Saznajte više - server_stats: 'Statistika poslužitelja:' source_code: Izvorni kôd status_count_before: Koji su objavili unavailable_content: Moderirani poslužitelji @@ -251,9 +245,7 @@ hr: suspend: Račun je suspendiran welcome: edit_profile_action: Postavi profil - review_preferences_action: Promijeni postavke subject: Dobro došli na Mastodon - tips: Savjeti users: invalid_otp_token: Nevažeći dvo-faktorski kôd signed_in_as: 'Prijavljeni kao:' diff --git a/config/locales/hu.yml b/config/locales/hu.yml index d9e54a2c0b..4036145f0e 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -3,38 +3,25 @@ hu: about: about_mastodon_html: 'A jövő közösségi hálózata: Hirdetések és céges megfigyelés nélkül, etikus dizájnnal és decentralizációval! Legyél a saját adataid ura a Mastodonnal!' about_this: Névjegy - active_count_after: aktív - active_footnote: Havonta aktív felhasználók administered_by: 'Adminisztrátor:' api: API apps: Mobil appok - apps_platforms: Használd a Mastodont iOS-ről, Androidról vagy más platformról - browse_public_posts: Nézz bele a Mastodon élő, nyilvános bejegyzéseibe contact: Kapcsolat contact_missing: Nincs megadva contact_unavailable: N/A - continue_to_web: Tovább a webes alkalmazáshoz documentation: Dokumentáció - federation_hint_html: Egy %{instance} fiókkal bármely más Mastodon szerveren vagy a föderációban lévő felhasználót követni tudsz. - get_apps: Próbálj ki egy mobil appot hosted_on: "%{domain} Mastodon szerver" instance_actor_flash: | Ez a fiók virtuális, magát a szervert reprezentálja, nem pedig konkrét felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni, hacsak nem akarod a teljes szervert kitiltani, mely esetben a domain tiltásának használata javasolt. - learn_more: Tudj meg többet - logged_in_as_html: Belépve, mint %{username}. - logout_before_registering: Már be vagy jelentkezve. privacy_policy: Adatvédelmi szabályzat rules: Szerverünk szabályai rules_html: 'Alább látod azon követendő szabályok összefoglalóját, melyet be kell tartanod, ha szeretnél fiókot ezen a szerveren:' - see_whats_happening: Nézd, mi történik - server_stats: 'Szerver statisztika:' source_code: Forráskód status_count_after: one: bejegyzést írt other: bejegyzést írt status_count_before: Eddig - tagline: Decentralizált szociális hálózat unavailable_content: Kimoderált szerverek unavailable_content_description: domain: Szerver @@ -769,9 +756,6 @@ hu: closed_message: desc_html: Ez az üzenet jelenik meg a főoldalon, ha a regisztráció nem engedélyezett. HTML-tageket is használhatsz title: Üzenet, ha a regisztráció nem engedélyezett - deletion: - desc_html: Engedélyezed a felhasználóknak, hogy töröljék fiókjukat - title: Fiók törlésének engedélyezése require_invite_text: desc_html: Ha a regisztrációhoz kézi jóváhagyásra van szükség, akkor a „Miért akarsz csatlakozni?” válasz kitöltése legyen kötelező, és ne opcionális title: Az új felhasználóktól legyen megkövetelve a meghívási kérés szövegének kitöltése @@ -1003,10 +987,8 @@ hu: warning: Ez érzékeny adat. Soha ne oszd meg másokkal! your_token: Hozzáférési kulcsod auth: - apply_for_account: Meghívó kérése + apply_for_account: Felkerülés a várólistára change_password: Jelszó - checkbox_agreement_html: Egyetértek a szerver szabályaival és a felhasználási feltételekkel - checkbox_agreement_without_rules_html: Egyetértek a felhasználási feltételekkel delete_account: Felhasználói fiók törlése delete_account_html: Felhasználói fiókod törléséhez kattints ide. A rendszer újbóli megerősítést fog kérni. description: @@ -1025,6 +1007,7 @@ hu: migrate_account: Felhasználói fiók költöztetése migrate_account_html: Ha szeretnéd átirányítani ezt a fiókodat egy másikra, a beállításokat itt találod meg. or_log_in_with: Vagy jelentkezz be ezzel + privacy_policy_agreement_html: Elolvastam és egyetértek az adatvédemi nyilatkozattal providers: cas: CAS saml: SAML @@ -1032,6 +1015,9 @@ hu: registration_closed: "%{instance} nem fogad új tagokat" resend_confirmation: Megerősítési lépések újraküldése reset_password: Jelszó visszaállítása + rules: + preamble: Ezeket a(z) %{domain} moderátorai adjak meg és tartatják be. + title: Néhány alapszabály. security: Biztonság set_new_password: Új jelszó beállítása setup: @@ -1046,7 +1032,6 @@ hu: redirecting_to: A fiókod inaktív, mert jelenleg ide %{acct} van átirányítva. view_strikes: Fiókod elleni korábbi szankciók megtekintése too_fast: Túl gyorsan küldted el az űrlapot, próbáld később. - trouble_logging_in: Problémád van a bejelentkezéssel? use_security_key: Biztonsági kulcs használata authorize_follow: already_following: Már követed ezt a felhasználót @@ -1627,89 +1612,6 @@ hu: too_late: Túl késő, hogy fellebbezd ezt a szankciót tags: does_not_match_previous_name: nem illeszkedik az előző névvel - terms: - body_html: | -

Adatvédelmi nyilatkozat

-

Milyen adatokat gyűjtünk?

- -
    -
  • Alapvető fiókadatok: Ha regisztrálsz ezen a szerveren, kérhetünk tőled felhasználói nevet, e-mail címet és jelszót is. Megadhatsz magadról egyéb profil információt, megjelenítendő nevet, bemutatkozást, feltölthetsz profilképet, háttérképet. A felhasználói neved, megjelenítendő neved, bemutatkozásod, profil képed és háttér képed mindig nyilvánosak mindenki számára.
  • -
  • Bejegyzések, követések, más nyilvános adatok: Az általad követett emberek listája nyilvános. Ugyanez igaz a te követőidre is. Ha küldesz egy üzenetet, ennek az idejét eltároljuk azzal az alkalmazással együtt, melyből az üzenetet küldted. Az üzenetek tartalmazhatnak média csatolmányt, képeket, videókat. A nyilvános bejegyzések bárki számára elérhetőek. Ha egy bejegyzést kiemelsz a profilodon, az is nyilvánossá válik. Amikor a bejegyzéseidet a követőidnek továbbítjuk, a bejegyzés más szerverekre is átkerülhet, melyeken így másolatok képződhetnek. Ha törölsz bejegyzéseket, ez is továbbítódik a követőid felé. A megtolás (reblog) és kedvencnek jelölés művelete is mindig nyilvános.
  • -
  • Közvetlen üzenetek és csak követőknek szánt bejegyzések: Minden bejegyzés a szerveren tárolódik. A csak követőknek szánt bejegyzéseket a követőidnek és az ezekben megemlítetteknek továbbítjuk, míg a közvetlen üzeneteket kizárólag az ebben megemlítettek kapják. Néhány esetben ez azt jelenti, hogy ezek más szerverekre is továbbítódnak, így ott másolatok keletkezhetnek. Jóhiszeműen feltételezzük, hogy más szerverek is hasonlóan járnak el, mikor ezeket az üzeneteket csak az arra jogosultaknak mutatják meg. Ugyanakkor ez nem feltétlenül teljesül. Érdemes ezért megvizsgálni azokat a szervereket, melyeken követőid vannak. Be tudod állítani, hogy minden követési kérelmet jóvá kelljen hagynod. Tartsd észben, hogy a szerver üzemeltetői láthatják az üzeneteket, illetve a fogadók képernyőképet, másolatot készíthetnek belőlük, vagy újraoszthatják őket. Ne ossz meg érzékeny információt a Mastodon hálózaton!
  • -
  • IP címek és egyéb metaadatok: Bejelentkezéskor letároljuk a használt böngésződet és IP címedet. Minden rögzített munkamenet elérhető és visszavonható a beállítások között. Az utoljára rögzített IP címet maximum 12 hónapig tároljuk. Egyéb szerver logokat is megtarthatunk, melyek HTTP kérésenként is tárolhatják az IP címedet.
  • -
- -
- -

Mire használjuk az adataidat?

- -

Bármely tőled begyűjtött adatot a következő célokra használhatjuk fel:

- -
    -
  • Mastodon alapfunkcióinak biztosítása: Csak akkor léphetsz kapcsolatba másokkal, ha be vagy jelentkezve. Pl. követhetsz másokat a saját, személyre szabott idővonaladon.
  • -
  • Közösségi moderáció elősegítése: Pl. IP címek összehasonlítása másokéval, hogy kiszűrjük a kitiltások megkerülését.
  • -
  • Kapcsolattartás veled: Az általad megadott e-mail címen infókat, értesítéseket küldünk mások interakcióiról, kérésekről, kérdésekről.
  • -
- -
- -

Hogyan védjük az adataidat?

- -

Üzemben tartunk néhány biztonsági rendszert, hogy megvédjük a személyes adataidat, amikor eléred vagy karbantartod ezeket. Többek között a böngésződ munkamenete, a szerver oldal, valamint a böngésző közötti teljes kommunikáció SSL-lel van titkosítva, a jelszavadat pedig erős, egyirányú algoritmussal hash-eljük. Kétlépcsős azonosítást is bekapcsolhatsz, hogy még biztonságosabbá tedd a fiókodhoz való hozzáférést.

- -
- -

Mik az adatmegőrzési szabályaink?

- -

Mindent megteszünk, hogy:

- -
    -
  • A szerver logokat, melyek kérésenként tartalmazzák a felhasználó IP címét maximum 90 napig tartsuk meg.
  • -
  • A regisztrált felhasználókat IP címeikkel összekötő adatokat maximum 12 hónapig tartsuk meg.
  • -
- -

Kérhetsz mentést minden tárolt adatodról, bejegyzésedről, média fájlodról, profil- és háttér képedről.

- -

Bármikor visszaállíthatatlanul le is törölheted a fiókodat.

- -
- -

Használunk sütiket?

- -

Igen. A sütik pici állományok, melyeket az oldalunk a böngésződön keresztül a háttértáradra rak, ha engedélyezed ezt. Ezek a sütik teszik lehetővé, hogy az oldalunk felismerje a böngésződet, és ha regisztráltál, hozzá tudjon kötni a fiókodhoz.

- -

Arra is használjuk a sütiket, hogy elmenthessük a beállításaidat egy következő látogatás céljából.

- -
- -

Átadunk bármilyen adatot harmadik személynek?

- -

Az azonosításodra alkalmazható adatokat nem adjuk el, nem kereskedünk vele, nem adjuk át külső szereplőnek. Ez nem foglalja magában azon harmadik személyeket, aki az üzemeltetésben, felhasználók kiszolgálásban és a tevékenységünkben segítenek, de csak addig, amíg ők is elfogadják, hogy ezeket az adatokat bizalmasan kezelik. Akkor is átadhatjuk ezeket az adatokat, ha erre hitünk szerint törvény kötelez minket, ha betartatjuk az oldalunk szabályzatát vagy megvédjük a saját vagy mások személyiségi jogait, tulajdonát, biztonságát.

- -

A nyilvános tartalmaidat más hálózatban lévő szerverek letölthetik. A nyilvános és csak követőknek szánt bejegyzéseid olyan szerverekre is elküldődnek, melyeken követőid vannak. A közvetlen üzenetek is átkerülnek a címzettek szervereire, ha ők más szerveren regisztráltak.

- -

Ha felhatalmazol egy alkalmazást, hogy használja a fiókodat, a jóváhagyott hatásköröktől függően ez elérheti a nyilvános profiladataidat, a követettjeid listáját, a követőidet, listáidat, bejegyzéseidet és kedvenceidet is. Ezek az alkalmazások ugyanakkor sosem érhetik el a jelszavadat és e-mail címedet.

- -
- -

Az oldal gyerekek általi használata

- -

Ha ez a szerver az EU-ban vagy EEA-ban található: Az oldalunk, szolgáltatásaink és termékeink mind 16 éven felülieket céloznak. Ha 16 évnél fiatalabb vagy, a GDPR (General Data Protection Regulation) értelmében kérlek ne használd ezt az oldalt!

- -

Ha ez a szerver az USA-ban található: Az oldalunk, szolgáltatásaink és termékeink mind 13 éven felülieket céloznak. Ha 13 évnél fiatalabb vagy, a COPPA (Children's Online Privacy Protection Act) értelmében kérlek ne használd ezt az oldalt!

- -

A jogi előírások különbözhetnek ettől a világ egyéb tájain.

- -
- -

Adatvédelmi nyilatkozat változásai

- -

Ha úgy döntünk, hogy megváltoztatjuk az adatvédelmi nyilatkozatot, ezt ezen az oldalon közzé fogjuk tenni.

- -

Ez a dokumentum CC-BY-SA. Utoljára 2022.05.26-án frissült.

- -

Eredetileg innen adaptálva Discourse privacy policy.

- title: "%{instance} adatvédelmi szabályzata" themes: contrast: Mastodon (Nagy kontrasztú) default: Mastodon (Sötét) @@ -1788,20 +1690,13 @@ hu: suspend: Felfüggesztett fiók welcome: edit_profile_action: Készítsd el profilod - edit_profile_step: 'Itt tudod egyedivé tenni a profilod: feltölthetsz profil- és borítóképet, megváltoztathatod a megjelenített neved és így tovább. Ha jóvá szeretnéd hagyni követőidet, mielőtt követhetnek, itt tudod a fiókodat zárttá tenni.' + edit_profile_step: Testreszabhatod a profilod egy profilkép feltöltésével, a megjelenített neved megváltoztatásával és így tovább. Bekapcsolhatod az új követőid jóváhagyását, mielőtt követhetnek. explanation: Néhány tipp a kezdeti lépésekhez final_action: Kezdj bejegyzéseket írni - final_step: 'Kezdj tülkölni! Nyilvános üzeneteid még követők híján is megjelennek másoknak, például a helyi idővonalon és a hashtageknél. Kezdd azzal, hogy bemutatkozol a #bemutatkozas vagy az #introductions hashtag használatával.' + final_step: 'Kezdj tülkölni! A nyilvános bejegyzéseid még követők híján is megjelennek másoknak, például a helyi idővonalon vagy a hashtageknél. Kezdd azzal, hogy bemutatkozol a #bemutatkozas vagy az #introductions hashtag használatával.' full_handle: Teljes felhasználóneved full_handle_hint: Ez az, amit megadhatsz másoknak, hogy üzenhessenek neked vagy követhessenek téged más szerverekről. - review_preferences_action: Beállítások módosítása - review_preferences_step: Tekintsd át a beállításaidat, például hogy milyen értesítéseket kérsz e-mailben, vagy hogy alapértelmezettként mi legyen a bejegyzéseid láthatósága. Ha nem vagy szédülős alkat, GIF-ek automatikus lejátszását is engedélyezheted. subject: Üdvözöl a Mastodon - tip_federated_timeline: A föderációs idővonal a Mastodon hálózat ütőere. Nem teljes, mivel csak azokat az embereket fogod látni, akiket a szervered többi felhasználója közül valaki már követ. - tip_following: Alapértelmezettként szervered adminisztrátorait követed. Látogasd meg a helyi és a nyilvános idővonalat, hogy más érdekes emberekre is rátalálj. - tip_local_timeline: A helyi idővonal a saját szervered (%{instance}) ütőere. Ezek a kedves emberek itt mind a szomszédaid! - tip_mobile_webapp: Ha a böngésződ lehetővé teszi, hogy a kezdőképernyődhöz add a Mastodont, még értesítéseket is fogsz kapni, akárcsak egy igazi alkalmazás esetében! - tips: Tippek title: Üdv a fedélzeten, %{name}! users: follow_limit_reached: Nem követhetsz több, mint %{limit} embert diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 2734862339..135fd4255e 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -3,26 +3,17 @@ hy: about: about_mastodon_html: Ապագայի սոցցանցը։ Ոչ մի գովազդ, ոչ մի կորպորատիվ վերահսկողութիւն, էթիկական դիզայն, եւ ապակենտրոնացում։ Մաստադոնում դու ես քո տուեալների տէրը։ about_this: Մեր մասին - active_count_after: ակտիվ - active_footnote: Ամսեկան ակտիւ օգտատէրեր (MAU) administered_by: Ադմինիստրատոր՝ api: API apps: Բջջային յաւելուածներ - apps_platforms: Մաստադոնը հասանելի է iOS, Android եւ այլ տարբեր հենքերում - browse_public_posts: Դիտիր Մաստադոնի հանրային գրառումների հոսքը contact: Կոնտակտ contact_missing: Սահմանված չէ contact_unavailable: Ոչինչ չկա documentation: Փաստաթղթեր - federation_hint_html: "«%{instance}»-ում հաշիւ բացելով դու կը կարողանաս հետեւել մարդկանց Մաստոդոնի ցանկացած հանգոյցից և ոչ միայն։" - get_apps: Փորձէք բջջային յաւելուածը hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում instance_actor_flash: "Այս հաշիւ վիրտուալ դերասան է, օգտագործուում է սպասարկիչը, այլ ոչ անհատ օգտատիրոջը ներկայացնելու, համար։ Օգտագործուում է ֆեդերացիայի նպատակով, ու չպէտք է արգելափակուի, եթէ չէք ցանկանում արգելափակել ողջ հանգոյցը, որի դէպքում պէտք է օգտագործէք տիրոյթի արգելափակումը։ \n" - learn_more: Իմանալ ավելին rules: Սերուերի կանոնները rules_html: Այս սերուերում հաշիւ ունենալու համար անհրաժեշտ է պահպանել ստորեւ նշուած կանոնները։ - see_whats_happening: Տես ինչ կը կատարուի - server_stats: Սերվերի վիճակը․ source_code: Ելատեքստ status_count_after: one: գրառում @@ -447,9 +438,6 @@ hy: closed_message: desc_html: Ցուցադրուում է արտաքին էջում, երբ գրանցումները փակ են։ Կարող ես օգտագործել նաեւ HTML թէգեր title: Փակ գրանցման հաղորդագրութիւն - deletion: - desc_html: Բոլորին թոյլատրել ջնջել իրենց հաշիւը - title: Բացել հաշուի ջնջումը registrations_mode: modes: approved: Գրանցման համար անհրաժեշտ է հաստատում @@ -528,10 +516,7 @@ hy: regenerate_token: Ստեղծել նոր հասանելիութեան կտրոն your_token: Քո մուտքի բանալին auth: - apply_for_account: Հրաւէրի հարցում change_password: Գաղտնաբառ - checkbox_agreement_html: Ես համաձայն եմ սպասարկիչի կանոններին և ծառայութեան պայմաններին - checkbox_agreement_without_rules_html: Ես համաձայն եմ ծառայությունների պայմաններին delete_account: Ջնջել հաշիվը description: prefix_sign_up: Գրանցուի՛ր Մաստոդոնում հենց այսօր @@ -552,7 +537,6 @@ hy: status: account_status: Հաշուի կարգավիճակ pending: Դիմումը պէտք է քննուի մեր անձնակազմի կողմից, ինչը կարող է մի փոքր ժամանակ խլել։ Դիմումի հաստատուելու դէպքում, կտեղեկացնենք նամակով։ - trouble_logging_in: Մուտք գործելու խնդիրնե՞ր կան։ use_security_key: Օգտագործել անվտանգութեան բանալի authorize_follow: already_following: Դու արդէն հետեւում ես այս հաշուին @@ -957,13 +941,7 @@ hy: welcome: edit_profile_action: Կարգաւորել հաշիւը final_action: Սկսել գրել - final_step: 'Սկսիր գրել։ Անգամ առանց հետեւորդների քո հանրային գրառումներ կարող են երևալ ուրիշների մօտ, օրինակ՝ տեղական հոսում կամ հեշթեգերում։ Թէ ցանկանաս, կարող ես յայտնել քո մասին օգտագործելով #եսնորեկեմ հեշթեգը։' - review_preferences_action: Փոփոխել կարգաւորումները subject: Բարի գալուստ Մաստոդոն - tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատէրերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։ - tip_following: Դու հետեւում էս քո հանգոյցի ադմին(ներ)ին լռելայն։ Այլ հետաքրքիր անձանց գտնելու համար՝ թերթիր տեղական և դաշնային հոսքերը։ - tip_local_timeline: Տեղական հոսքում երևում են %{instance} հանգոյցի մարդկանց գրառումները։ Նրանք քո հանգոյցի հարևաններն են։ - tips: Հուշումներ title: Բարի գալուստ նաւամատոյց, %{name} users: invalid_otp_token: Անվաւեր 2F կոդ diff --git a/config/locales/id.yml b/config/locales/id.yml index 067bed38aa..83f3da5d79 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -3,34 +3,21 @@ id: about: about_mastodon_html: Mastodon adalah sebuah jejaring sosial terbuka, open-sourcedesentralisasi dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam jejaring sosial dengan mudah. about_this: Tentang server ini - active_count_after: aktif - active_footnote: Pengguna Aktif Bulanan (PAB) administered_by: 'Dikelola oleh:' api: API apps: Aplikasi mobile - apps_platforms: Gunakan Mastodon dari iOS, Android, dan platform lain - browse_public_posts: Jelajahi siaran langsung pos publik di Mastodon contact: Kontak contact_missing: Belum diset contact_unavailable: Tidak Tersedia - continue_to_web: Lanjut ke apl web documentation: Dokumentasi - federation_hint_html: Dengan akun di %{instance} Anda dapat mengikuti orang di server Mastodon mana pun dan di luarnya. - get_apps: Coba aplikasi mobile hosted_on: Mastodon dihosting di %{domain} instance_actor_flash: "Akun ini adalah aktor virtual yang dipakai untuk merepresentasikan server, bukan pengguna individu. Ini dipakai untuk tujuan federasi dan jangan diblokir kecuali Anda ingin memblokir seluruh instansi, yang seharusnya Anda pakai blokir domain. \n" - learn_more: Pelajari selengkapnya - logged_in_as_html: Anda sedang masuk sebagai %{username}. - logout_before_registering: Anda sudah masuk. rules: Aturan server rules_html: 'Di bawah ini adalah ringkasan aturan yang perlu Anda ikuti jika Anda ingin memiliki akun di server Mastodon ini:' - see_whats_happening: Lihat apa yang sedang terjadi - server_stats: 'Statistik server:' source_code: Kode sumber status_count_after: other: status status_count_before: Yang telah menulis - tagline: Jejaring sosial terdesentralisasi unavailable_content: Konten tak tersedia unavailable_content_description: domain: Server @@ -670,9 +657,6 @@ id: closed_message: desc_html: Ditampilkan pada halaman depan saat pendaftaran ditutup
Anda bisa menggunakan tag HTML title: Pesan penutupan pendaftaran - deletion: - desc_html: Izinkan siapapun untuk menghapus akun miliknya - title: Buka penghapusan akun require_invite_text: desc_html: Saat pendaftaran harus disetujui manual, buat input teks "Mengapa Anda ingin bergabung?" sebagai hal wajib bukan opsional title: Pengguna baru harus memasukkan alasan bergabung @@ -890,10 +874,7 @@ id: warning: Hati-hati dengan data ini. Jangan bagikan kepada siapapun! your_token: Token akses Anda auth: - apply_for_account: Meminta undangan change_password: Kata sandi - checkbox_agreement_html: Saya setuju dengan peraturan server dan ketentuan layanan - checkbox_agreement_without_rules_html: Saya setuju dengan ketentuan layanan delete_account: Hapus akun delete_account_html: Jika Anda ingin menghapus akun Anda, Anda dapat memproses ini. Anda akan dikonfirmasi. description: @@ -933,7 +914,6 @@ id: redirecting_to: Akun Anda tidak aktif karena sekarang dialihkan ke %{acct}. view_strikes: Lihat hukuman lalu yang pernah terjadi kepada akun Anda too_fast: Formulir dikirim terlalu cepat, coba lagi. - trouble_logging_in: Kesulitan masuk? use_security_key: Gunakan kunci keamanan authorize_follow: already_following: Anda sudah mengikuti akun ini @@ -1547,20 +1527,11 @@ id: suspend: Akun ditangguhkan welcome: edit_profile_action: Siapkan profil - edit_profile_step: Anda dapat menyesuaikan profil Anda dengan mengunggah avatar, kepala, mengubah tampilan nama dan lainnya. Jika Anda ingin meninjau pengikut baru sebelum Anda terima sebagai pengikut, Anda dapat mengunci akun Anda. explanation: Beberapa tips sebelum Anda memulai final_action: Mulai mengirim - final_step: 'Mulai mengirim! Tanpa pengikut, pesan publik Anda akan tetap dapat dilihat oleh akun lain, contohnya di linimasa lokal atau di tagar. Anda mungkin ingin memperkenalkan diri dengan tagar #introductions.' full_handle: Penanganan penuh Anda full_handle_hint: Ini yang dapat Anda sampaikan kepada teman agar mereka dapat mengirim pesan atau mengikuti Anda dari server lain. - review_preferences_action: Ubah preferensi - review_preferences_step: Pastikan Anda telah mengatur preferensi Anda, seperti email untuk menerima pesan, atau tingkat privasi bawaan untuk postingan Anda. Jika Anda tidak alergi dengan gerakan gambar, Anda dapat mengaktifkan opsi mainkan otomatis GIF. subject: Selamat datang di Mastodon - tip_federated_timeline: Linimasa gabungan adalah ruang yang menampilkan jaringan Mastodon. Tapi ini hanya berisi tetangga orang-orang yang Anda ikuti, jadi tidak sepenuhnya komplet. - tip_following: Anda secara otomatis mengikuti admin server. Untuk mencari akun-akun yang menarik, silakan periksa linimasa lokal dan gabungan. - tip_local_timeline: Linimasa lokal adalah ruang yang menampilkan orang-orang di %{instance}. Mereka adalah tetangga dekat! - tip_mobile_webapp: Jika peramban mobile Anda ingin menambahkan Mastodon ke layar utama, Anda dapat menerima notifikasi dorong. Ia akan berjalan seperti aplikasi asli! - tips: Tips title: Selamat datang, %{name}! users: follow_limit_reached: Anda tidak dapat mengikuti lebih dari %{limit} orang diff --git a/config/locales/io.yml b/config/locales/io.yml index 4ef0d5ca97..bbb41c4c74 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -3,38 +3,25 @@ io: about: about_mastodon_html: Mastodon esas gratuita, apertitkodexa sociala reto. Ol esas sencentra altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la sociala reto tote glate. about_this: Pri ta instaluro - active_count_after: aktiva - active_footnote: Monade Aktiva Uzanti (MAU) administered_by: 'Administresis da:' api: API apps: Smartfonsoftwari - apps_platforms: Uzez Mastodon de iOS, Android e altra platformi - browse_public_posts: Videz samtempa video di publika posti che Mastodon contact: Kontaktar contact_missing: Ne fixigita contact_unavailable: Nula - continue_to_web: Durez a retsoftwaro documentation: Dokumentajo - federation_hint_html: Per konto che %{instance}, vu povas sequar persono che irga servilo di Mastodon e altra siti. - get_apps: Probez smartfonsoftwaro hosted_on: Mastodon hostigesas che %{domain} instance_actor_flash: 'Ca konto esas virtuala aganto quo uzesas por reprezentar la servilo e ne irga individuala uzanto. Ol uzesas por federskopo e ne debas restriktesar se vu ne volas obstruktar tota instanco, se ol esas la kaso, do vu debas uzar domenobstrukto. ' - learn_more: Lernez pluse - logged_in_as_html: Vu nun eniras quale %{username}. - logout_before_registering: Vu ja eniris. privacy_policy: Privatesguidilo rules: Servilreguli rules_html: 'La subo montras rezumo di reguli quon vu bezonas sequar se vu volas havar konto che ca servilo di Mastodon:' - see_whats_happening: Videz quo eventas - server_stats: 'Servilstatistiko:' source_code: Fontkodexo status_count_after: one: posto other: posti status_count_before: Qua publikigis - tagline: Necentralizita sociala reto unavailable_content: Jerata servili unavailable_content_description: domain: Servilo @@ -767,9 +754,6 @@ io: closed_message: desc_html: Displayed on frontpage when registrations are closed
You can use HTML tags title: Mesajo di klozita registro - deletion: - desc_html: Permisez irgu efacar sua konto - title: Apertez kontoefaco require_invite_text: desc_html: Se registri bezonas manuala aprobo, kauzigar "Por quo vu volas juntar?" textoenpoz divenar obligata title: Bezonez nova uzanti insertar motivo por juntar @@ -1001,10 +985,7 @@ io: warning: Sorgemez per ca informi. Ne partigez kun irgu! your_token: Vua acesficho auth: - apply_for_account: Demandez invito change_password: Pasvorto - checkbox_agreement_html: Se konsentas servilreguli e serveskondiconi - checkbox_agreement_without_rules_html: Me konsentar serveskondicioni delete_account: Efacez konto delete_account_html: Se vu volas efacar vua konto, vu povas irar hike. Vu demandesos konfirmar. description: @@ -1044,7 +1025,6 @@ io: redirecting_to: Vua konto esas neaktiva pro ke ol nun ridirektesos a %{acct}. view_strikes: Videz antea streki kontre vua konto too_fast: Formulario sendesis tro rapide, probez itere. - trouble_logging_in: Ka ne povas enirar? use_security_key: Uzes sekuresklefo authorize_follow: already_following: Vu ja sequis ca konto @@ -1625,90 +1605,6 @@ io: too_late: Ol esas tro tarda ye apelar ca strekizo tags: does_not_match_previous_name: ne parigesas a antea nomo - terms: - body_html: | -

Privatesguidilo

-

Quo informi kolektesas da ni?

- -
    -
  • Bazala kontoinformo
  • -
  • Posti, sequo e altra publika informo
  • -
  • Direta e sequantinura posti: Noto, operacero di servilo e gananta servilo povas vidar tala mesaji. Ne partigez irga privata informi che Mastodon.
  • -
  • IP e altra metainformi
  • -
- -
- -

Por quo ni uzas vua informi?

- -

- Irga informi quon ni kolektas de vu forsan uzesas per ca metodi:

- -
    -
  • Por donar precipua funciono di Mastodon.
  • -
  • Por helpar jero di komunitato.
  • -
  • Retpostoadreso quon vu donas forsan uzesas por sendar informi a vu.
  • -
- -
- -

Quale ni protektas vua informi?

- -

Ni facar diversa sekuresdemarsh por mmantenar sekureso di vua personala informi kande vu enirar, sendar o acesar vua personala informi.

- -
- -

Quo esas nia informiretenguidilo?

- -

Ni esforcive proba:

- -
    -
  • Retenar servillogi quo kontenar IP-adreso di omna demandi a ca servilo.
  • -
  • Retenar IP-adresi quo relatata kun registrinta uzanti til 12 monati.
  • -
- -

Vu povas demandar e deschargar arkivo di vua kontenajo.

- -

Vu povas inversigebla efacar vua konto irgatempe.

- -
- -

Ka ni uzas kukii?

- -

Yes. (Se vu permisas)

- -

Ni uzas kukii por komprenar e sparar vua preferaji por viziti en futuro.

- -
- -

Ka ni revelas irga informi a externe grupi?

- -

Ni ne vendas, komercar e transferar a externe grupi vua personala identigebla informi.

- -

Vua publika kontenajo forsan deschargesas da altra servili en reto.

- -

Kande vu yurizas softwaro uzar vua konto, ol forsan ganar vua publika profilinformi.

- -
- -

Situzo da pueri

- -

Se ca servilo esas en EU o EEA: Minimo esas 16 yari. (General Data Protection Regulation)

- -

Se ca servilo esas en USA: Minimo esas 13 yari. (Children's Online Privacy Protection Act)

- -

Legalbezonaji forsan esas diferanta se ca servilo esas en altra regiono.

- -
- -

Chanji di privatesguidilo

- -

Se ni decidas chanjar nia privatesguidilo, ni postigos ta chanji a ca pagino.

- -

Ca dokumento esas CC-BY-SA.

- -

Tradukesis e modifikesis de Angla de Discourse privacy policy.

- title: Privatesguidilo di %{instance} themes: contrast: Mastodon (Alta kontrasteso) default: Mastodon (Obskura) @@ -1787,20 +1683,11 @@ io: suspend: Konto restriktigesis welcome: edit_profile_action: Facez profilo - edit_profile_step: Vu povas kustumizar vua profilo per adchargar profilimajo, kapimajo, chanjar vua montronomo e pluse. Se vu volas kontrolar nova sequanti ante oli permisesar sequantar vu, vu povas klefklozar vua konto. explanation: Subo esas guidilo por helpar vu komencar final_action: Komencez postigar - final_step: 'Jus postigez! Mem sen sequanti, vua publika posti povas videsar da altra personi, exemplo es en lokala tempolineo e en hashtagi. Vu povas anke introduktar su en #introductions hashtagi.' full_handle: Vua kompleta profilnomo full_handle_hint: Co esas quon vu dicos a amiki por ke oli povas mesajigar o sequar vu de altra servilo. - review_preferences_action: Chanjez preferaji - review_preferences_step: Certigez ke vu fixas vua preferaji, tale quala retposto quon vu volas ganar, o privatesnivelo quo vu volas vua posti normale uzar. Se vu ne havas movmalado, vu povas selektar aktivigar GIF-autopleo. subject: Bonveno a Mastodon - tip_federated_timeline: Federatata tempolineo esas generala vido di reto di Mastodon. Ma, ol nur inkluzas personi quon vua vicini abonis, do ol ne esas kompleta. - tip_following: Vu sequas vua administrer(o) di servilo quale originala stando. Por sequar plu multa interesanta personi, videz lokala e federatata tempolinei. - tip_local_timeline: Lokala tempolineo esas generala vido di personi che %{instance}. Co esas vua apuda vicini! - tip_mobile_webapp: Se vua smartfonvidilo povigas vu pozar Mastodon a vua hemskreno, vu povas ganar pulsavizi. Ol funcionas tale traiti di smartfonsoftwaro! - tips: Guidili title: Bonveno, %{name}! users: follow_limit_reached: Vu ne povas sequar plu kam %{limit} personi diff --git a/config/locales/is.yml b/config/locales/is.yml index 7c63fff66c..3846d59241 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -3,38 +3,25 @@ is: about: about_mastodon_html: 'Samfélagsnet framtíðarinnar: Engar auglýsingar, ekkert eftirlit stórfyrirtækja, siðleg hönnun og engin miðstýring! Þú átt þín eigin gögn í Mastodon!' about_this: Um hugbúnaðinn - active_count_after: virkt - active_footnote: Mánaðarlega virkir notendur (MAU) administered_by: 'Stýrt af:' api: API-kerfisviðmót apps: Farsímaforrit - apps_platforms: Notaðu Mastodon frá iOS, Android og öðrum stýrikerfum - browse_public_posts: Skoðaðu kvikt streymi af opinberum færslum á Mastodon contact: Hafa samband contact_missing: Ekki skilgreint contact_unavailable: Ekki til staðar - continue_to_web: Halda áfram í vefforritið documentation: Hjálparskjöl - federation_hint_html: Með notandaaðgangi á %{instance} geturðu fylgst með fólki á hvaða Mastodon-þjóni sem er og reyndar víðar. - get_apps: Prófaðu farsímaforrit hosted_on: Mastodon hýst á %{domain} instance_actor_flash: | Þessi aðgangur er sýndarnotandi sem er notaður til að tákna sjálfan vefþjóninn en ekki neinn einstakan notanda. Tilgangur hans tengist virkni vefþjónasambandsins og ætti alls ekki að loka á hann nema að þú viljir útiloka allan viðkomandi vefþjón, en þá ætti frekar að útiloka sjálft lénið. - learn_more: Kanna nánar - logged_in_as_html: Þú ert núna skráð/ur inn sem %{username}. - logout_before_registering: Þú ert þegar skráð/ur inn. privacy_policy: Persónuverndarstefna rules: Reglur netþjónsins rules_html: 'Hér fyrir neðan er yfirlit yfir þær reglur sem þú þarft að fara eftir ef þú ætlar að vera með notandaaðgang á þessum Mastodon-netþjóni:' - see_whats_happening: Sjáðu hvað er í gangi - server_stats: 'Tölfræði þjóns:' source_code: Grunnkóði status_count_after: one: færsla other: færslur status_count_before: Sem stóðu fyrir - tagline: Dreift samfélagsnet unavailable_content: Ekki tiltækt efni unavailable_content_description: domain: Vefþjónn @@ -767,9 +754,6 @@ is: closed_message: desc_html: Birt á forsíðu þegar lokað er fyrir nýskráningar. Þú getur notað HTML-einindi title: Skilaboð vegna lokunar á nýskráningu - deletion: - desc_html: Leyfa öllum að eyða aðgangnum sínum - title: Opna eyðingu á notandaaðgangi require_invite_text: desc_html: Þegar nýskráningar krefjast handvirks samþykkis, skal gera "Hvers vegna viltu taka þátt?" boðstexta að skyldu fremur en valkvæðan title: Krefja nýja notendur um að fylla út boðstexta @@ -1001,10 +985,8 @@ is: warning: Farðu mjög varlega með þessi gögn. Þú skalt aldrei deila þeim með neinum! your_token: Aðgangsteiknið þitt auth: - apply_for_account: Beiðni um boð + apply_for_account: Fara á biðlista change_password: Lykilorð - checkbox_agreement_html: Ég samþykki reglur vefþjónsins og þjónustuskilmálana - checkbox_agreement_without_rules_html: Ég samþykki þjónustuskilmálana delete_account: Eyða notandaaðgangi delete_account_html: Ef þú vilt eyða notandaaðgangnum þínum, þá geturðu farið í það hér. Þú verður beðin/n um staðfestingu. description: @@ -1023,6 +1005,7 @@ is: migrate_account: Færa á annan notandaaðgang migrate_account_html: Ef þú vilt endurbeina þessum aðgangi á einhvern annan, geturðu stillt það hér. or_log_in_with: Eða skráðu inn með + privacy_policy_agreement_html: Ég hef lesið og samþykkt persónuverndarstefnuna providers: cas: CAS saml: SAML @@ -1030,12 +1013,18 @@ is: registration_closed: "%{instance} samþykkir ekki nýja meðlimi" resend_confirmation: Senda leiðbeiningar vegna staðfestingar aftur reset_password: Endursetja lykilorð + rules: + preamble: Þær eru settar og þeim framfylgt af umsjónarmönnum %{domain}. + title: Nokkrar grunnreglur. security: Öryggi set_new_password: Stilla nýtt lykilorð setup: email_below_hint_html: Ef tölvupóstfangið hér fyrir neðan er rangt, skaltu breyta því hér og fá nýjan staðfestingarpóst. email_settings_hint_html: Staðfestingarpósturinn var sendur til %{email}. Ef það tölvupóstfang er ekki rétt geturðu breytt því í stillingum notandaaðgangsins. title: Uppsetning + sign_up: + preamble: Með notandaaðgangi á þessum Mastodon-þjóni geturðu fylgst með hverjum sem er á netkerfinu, sama hvar notandaaðgangurinn þeirra er hýstur. + title: Förum núna að setja þig upp á %{domain}. status: account_status: Staða notandaaðgangs confirming: Bíð eftir að staðfestingu tölvupósts sé lokið. @@ -1044,7 +1033,6 @@ is: redirecting_to: Notandaaðgangurinn þinn er óvirkur vegna þess að hann endurbeinist á %{acct}. view_strikes: Skoða fyrri bönn notandaaðgangsins þíns too_fast: Innfyllingarform sent inn of hratt, prófaðu aftur. - trouble_logging_in: Vandræði við að skrá inn? use_security_key: Nota öryggislykil authorize_follow: already_following: Þú ert að þegar fylgjast með þessum aðgangi @@ -1625,89 +1613,6 @@ is: too_late: Það er orðið of sint að áfrýja þessari refsingu tags: does_not_match_previous_name: samsvarar ekki fyrra nafni - terms: - body_html: | -

Persónuverndarstefna

-

Hvaða upplýsingum söfnum við?

- -
    -
  • Grunnupplýsingar um notandaaðgang: Ef þú skráir þig á þennan netþjón gætir þú verið beðinn um að setja inn notandanafn, tölvupóstfang og lykilorð. Þú getur líka slegið inn viðbótarupplýsingar um notandasniðið eins og birtingarnafn og æviágrip og hlaðið inn auðkennismynd og mynd á hausborða. Notandanafn, birtingarnafn, æviágrip, auðkennismynd og hausmynd eru alltaf skráð opinberlega.
  • -
  • Færslur, fylgjendur og aðrar opinberar upplýsingar: Listinn yfir fólk sem þú fylgist með er skráður opinberlega, það sama á við um fylgjendur þína. Þegar þú sendir skilaboð er dagsetning og tími vistuð sem og forritið sem þú sendir skilaboðin frá. Skilaboð geta innihaldið margmiðlunarviðhengi, svo sem myndir og myndskeið. Opinberar og óskráðar færslur eru aðgengilegar opinberlega. Þegar þú birtir færslu á notandaaðgangnum þínum eru það einnig opinberar upplýsingar. Færslurnar þínar eru afhentar fylgjendum þínum, í sumum tilfellum þýðir það að þær eru sendar á mismunandi netþjóna og afrit eru geymd þar. Þegar þú eyðir færslum er þetta líka sent til fylgjenda þinna. Aðgerðin að endurbirta eða setja aðra færslu sem eftirlæti er alltaf opinber.
  • -
  • Bein skilaboð og eingöngu til fylgjenda: Allar færslur eru geymdar og unnar á þjóninum. Færslur sem eingöngu eru fyrir fylgjendur eru sendar fylgjendum þínum og notendum sem eru nefndir í þeim og bein skilaboð eru aðeins send til notenda sem nefndir eru í þeim. Í sumum tilfellum þýðir það að þeir eru afhentir á mismunandi netþjóna og afrit eru geymd þar. Við leggjum mikið upp úr því að takmarka aðgang að þessum færslum við viðurkennda aðila, en aðrir netþjónar gætu ekki gert það. Þess vegna er mikilvægt að skoða netþjónanana sem fylgjendur þínir tilheyra. Þú getur virkjað valkosti til að samþykkja og hafna nýjum fylgjendum handvirkt í stillingunum. Vinsamlegast hafðu í huga að stjórnendur netþjónsins og móttökuþjóna geta skoðað slík skilaboð og að viðtakendur geta tekið skjámyndir, afritað eða endurdeilt þeim á annan hátt. Ekki deila neinum viðkvæmum upplýsingum í gegnum Mastodon.
  • -
  • IP-vistföng og önnur lýsigögn: Þegar þú skráir þig inn tökum við upp IP-töluna sem þú skráir þig inn af, svo og heiti vafraforritsins þíns. Allar innskráðar setur eru tiltækar til skoðunar og afturköllunar í stillingunum. Nýjasta IP-talan sem notuð er er geymd í allt að 12 mánuði. Við gætum líka geymt netþjónaskrár sem innihalda IP-tölu hverrar beiðni til netþjónsins okkar.
  • -
- -
- -

Í hvað notum við upplýsingarnar þínar?

- -

Allar þær upplýsingar sem við söfnum frá þér gætu verið notaðar á eftirfarandi hátt:

- -
    -
  • Til að veita kjarnavirkni Mastodon. Þú getur aðeins haft samskipti við efni annarra og birt þitt eigið efni þegar þú ert skráð/ur inn. Til dæmis geturðu fylgst með öðru fólki til að skoða sameinaðar færslur þeirra á þinni eigin persónulegu heimatímalínu.
  • -
  • Til að hjálpa við umsjón samfélagsins, til dæmis að bera saman IP-vistfang þitt við önnur þekkt til að ákvarða bönn eða önnur brot.
  • -
  • Tölvupóstfangið sem þú gefur upp gæti verið notað til að senda þér upplýsingar, tilkynningar um annað fólk sem hefur samskipti við efnið þitt eða sendir þér skilaboð og til að svara fyrirspurnum og/eða öðrum beiðnum eða spurningum.
  • -
- -
- -

Hvernig verndum við upplýsingarnar þínar?

- -

Við innleiðum margvíslegar öryggisráðstafanir til að viðhalda öryggi persónuupplýsinga þinna þegar þú slærð inn, sendir inn eða opnar persónuupplýsingar þínar. Meðal annars er vafralotan þín, sem og umferðin milli forritanna þinna og API-kerfisviðmótsins, tryggð með SSL og lykilorðið þitt er gert að tætigildi með sterku einstefnualgrími. Þú gætir virkjað tveggja-þátta auðkenningu til að tryggja enn frekar aðgang að reikningnum þínum.

- -
- -

Hver er stefna okkar varðandi varðveislu gagna?

- -

Við munum leggja okkur fram um að:

- -
    -
  • Geyma netþjónaskrár sem innihalda IP-tölu allra beiðna til þessa netþjóns, að því marki sem slíkar skrár eru geymdar, ekki lengur en í 90 daga.
  • -
  • Geyma IP-tölur tengdar skráðum notendum ekki lengur en í 12 mánuði.
  • -
- -

Þú getur beðið um og sótt safnskrá með efninu þínu, þar á meðal færslurnar þínar, margmiðlunarviðhengjum, auðkennismynd og hausmynd.

- -

Þú getur eytt reikningnum þínum óafturkræft hvenær sem er.

- -
- -

Notum við vafrakökur?

- -

Já. Vafrakökur eru litlar skrár sem síða eða þjónustuaðili hennar flytur á harða disk tölvunnar þinnar í gegnum netvafrann þinn (ef þú leyfir). Þessar vafrakökur gera síðunni kleift að þekkja vafrann þinn og, ef þú ert með skráðan reikning, tengja hann við skráða reikninginn þinn.

- -

Við notum vafrakökur til að skilja og vista kjörstillingar þínar fyrir framtíðarheimsóknir.

- -
- -

Gefum við utanaðkomandi aðilum einhverjar upplýsingar?

- -

Við seljum ekki, skiptum eða sendum á annan hátt til utanaðkomandi aðila neinar persónugreinanlegar upplýsingar um þig. Þetta felur ekki í sér treysta utanaðkomandi aðila sem aðstoða okkur við að reka síðuna okkar, stunda viðskipti við okkur eða þjónusta þig, svo framarlega sem þessir aðilar eru sammála um að halda þessum upplýsingum sem trúnaðarmáli. Við gætum einnig gefið út upplýsingarnar þínar þegar við teljum að það sé viðeigandi til að fara að lögum, framfylgja stefnu okkar á vefsvæðinu eða verja réttindi okkar eða annarra, eignir eða öryggi okkar.

- -

Opinberu efni frá þér gæti verið hlaðið niður af öðrum netþjónum á netinu. Opinberu færslurnar þínar og þær sem eingöngu eru fyrir fylgjendur eru sendar til netþjónanna þar sem fylgjendur þínir eru hýstir og bein skilaboð eru send til netþjóna viðtakenda, að svo miklu leyti sem þessir fylgjendur eða viðtakendur eru hýstir á öðrum netþjóni en þessum.

- -

Þegar þú heimilar forriti að nota reikninginn þinn, fer það eftir umfangi þeirra heimilda sem þú samþykkir, hvort það fái aðgang að opinberum upplýsingunum notandaaðgangsins þínus, lista yfir þá sem þú fylgist með, fylgjendur þína, listunum þínum, öllum færslum þínum og eftirlætum. Forrit hafa aldrei aðgang að netfanginu þínu eða lykilorði.

- -
- -

Vefsíðunotkun barna

- -

Ef þessi netþjónn er í ESB eða EES: Vefsvæðinu okkar, vörum og þjónustu er öllum beint til fólks sem er að minnsta kosti 16 ára. Ef þú ert yngri en 16 ára, máttu samkvæmt kröfum (GDPR - Almennu gagnaverndarreglugerðinni ) ekki nota þessa síðu .

- -

Ef þessi netþjónn er í Bandaríkjunum: Vefsvæðinu okkar, vörum og þjónustu er öllum beint til fólks sem er að minnsta kosti 13 ára. Ef þú ert yngri en 13 ára, máttu samkvæmt kröfum (COPPA - Children's Online Privacy Protection Act) ekki nota þessari síðu.

- -

Lagakröfur geta verið mismunandi ef þessi þjónn er í öðru lögsagnarumdæmi.

- -
- -

Breytingar á persónuverndarstefnu okkar

- -

Ef við ákveðum að breyta persónuverndarstefnu okkar munum við birta þær breytingar á þessari síðu.

- -

Þetta skjal er CC-BY-SA nptkunarleyfi. Það var síðast uppfært 26. maí 2022.

- -

Upphaflega aðlagað frá persónuverndarstefnu Discourse.

- title: Persónuverndarstefna á %{instance} themes: contrast: Mastodon (mikil birtuskil) default: Mastodon (dökkt) @@ -1786,20 +1691,13 @@ is: suspend: Notandaaðgangur í bið welcome: edit_profile_action: Setja upp notandasnið - edit_profile_step: Þú getur sérsniðið notandasniðið þitt með því að senda inn auðkennismynd, síðuhaus, breytt birtingarnafninu þínu og ýmislegt fleira. Ef þú vilt yfirfara nýja fylgjendur áður en þeim er leyft að fylgjast með þér geturðu læst aðgangnum þínum. + edit_profile_step: Þú getur sérsniðið notandasniðið þitt með því að setja inn auðkennismynd þína, breyta birtingarnafninu þínu og ýmislegt fleira. Þú getur valið að yfirfara nýja fylgjendur áður en þú leyfir þeim að fylgjast með þér. explanation: Hér eru nokkrar ábendingar til að koma þér í gang final_action: Byrjaðu að skrifa - final_step: 'Byrjaðu að tjá þig! Jafnvel án fylgjenda geta aðrir séð opinberar færslur frá þér, til dæmis á staðværu tímalínunni og í myllumerkjum. Þú gætir jafnvel viljað kynna þig með myllumerkinu #introductions.' + final_step: 'Byrjaðu að tjá þig! Jafnvel án fylgjenda geta aðrir séð opinberar færslur frá þér, til dæmis á staðværu tímalínunni eða í myllumerkjum. Þú gætir jafnvel viljað kynna þig á myllumerkinu #introductions.' full_handle: Fullt auðkenni þitt full_handle_hint: Þetta er það sem þú myndir gefa upp við vini þína svo þeir geti sent þér skilaboð eða fylgst með þér af öðrum netþjóni. - review_preferences_action: Breyta kjörstillingum - review_preferences_step: Gakktu úr skugga um að kjörstillingarnar séu eins og þú vilt hafa þær, eins og t.d. hvaða tölvupóst þú vilt fá, eða hvaða stig friðhelgi þú vilt að færslurnar þínar hafi sjálfgefið. Ef þú hefur ekkert á móti sjónrænu áreiti geturðu virkjað sjálvirka spilun GIF-hreyfimynda. subject: Velkomin í Mastodon - tip_federated_timeline: Sameiginlega tímalínan er færibandasýn á Mastodon netkerfið. En hún inniheldur bara fólk sem nágrannar þínir eru áskrifendur að, þannig að hún er ekki tæmandi. - tip_following: Sjálfgefið er að þú fylgist með stjórnanda eða stjórnendum vefþjónsins. Til að finna fleira áhugavert fólk ættirðu að kíkja á staðværu og sameiginlegu tímalínurnar. - tip_local_timeline: Staðværa tímalínan er færibandasýn á allt fólkið á %{instance}. Þetta eru þínir næstu nágrannar! - tip_mobile_webapp: Ef farsímavafrinn býður þér að bæta Mastodon á heimaskjáinn þinn, muntu geta tekið á móti ýti-tilkynningum. Það virkar á ýmsa vegu eins og um uppsett forrit sé að ræða! - tips: Ábendingar title: Velkomin/n um borð, %{name}! users: follow_limit_reached: Þú getur ekki fylgst með fleiri en %{limit} aðilum diff --git a/config/locales/it.yml b/config/locales/it.yml index 6729516f14..1cd7160fe7 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -3,38 +3,25 @@ it: about: about_mastodon_html: 'Il social network del futuro: niente pubblicità, niente controllo da parte di qualche azienda privata, design etico e decentralizzazione! Con Mastodon il proprietario dei tuoi dati sei tu!' about_this: A proposito di questo server - active_count_after: attivo - active_footnote: Utenti Attivi Mensili (MAU) administered_by: 'Amministrato da:' api: API apps: Applicazioni per dispositivi mobili - apps_platforms: Usa Mastodon da iOS, Android e altre piattaforme - browse_public_posts: Sfoglia il flusso di post pubblici in tempo reale su Mastodon contact: Contatti contact_missing: Non impostato contact_unavailable: N/D - continue_to_web: Continua all'app web documentation: Documentazione - federation_hint_html: Con un account su %{instance} sarai in grado di seguire persone su qualsiasi server Mastodon e oltre. - get_apps: Prova un'app per smartphone hosted_on: Mastodon ospitato su %{domain} instance_actor_flash: | Questo account è un attore virtuale utilizzato per rappresentare il server stesso e non un particolare utente. È utilizzato per scopi di federazione e non dovrebbe essere bloccato a meno che non si voglia bloccare l'intera istanza: in questo caso si dovrebbe utilizzare un blocco di dominio. - learn_more: Scopri altro - logged_in_as_html: Sei correntemente connesso come %{username}. - logout_before_registering: Hai già effettuato l'accesso. privacy_policy: Politica sulla Privacy rules: Regole del server rules_html: 'Di seguito è riportato un riassunto delle regole che devi seguire se vuoi avere un account su questo server di Mastodon:' - see_whats_happening: Guarda cosa succede - server_stats: 'Statistiche del server:' source_code: Codice sorgente status_count_after: one: stato other: stati status_count_before: Che hanno pubblicato - tagline: Social network decentralizzato unavailable_content: Server moderati unavailable_content_description: domain: Server @@ -767,9 +754,6 @@ it: closed_message: desc_html: Mostrato nella pagina iniziale quando le registrazioni sono chiuse. Puoi usare tag HTML title: Messaggio per registrazioni chiuse - deletion: - desc_html: Consenti a chiunque di cancellare il proprio account - title: Apri la cancellazione dell'account require_invite_text: desc_html: Quando le iscrizioni richiedono l'approvazione manuale, rendere la richiesta “Perché si desidera iscriversi?” obbligatoria invece che opzionale title: Richiedi ai nuovi utenti di rispondere alla richiesta di motivazione per l'iscrizione @@ -1003,10 +987,8 @@ it: warning: Fa' molta attenzione con questi dati. Non fornirli mai a nessun altro! your_token: Il tuo token di accesso auth: - apply_for_account: Chiedi un invito + apply_for_account: Mettiti in lista d'attesa change_password: Password - checkbox_agreement_html: Sono d'accordo con le regole del server ed i termini di servizio - checkbox_agreement_without_rules_html: Accetto i termini di servizio delete_account: Elimina account delete_account_html: Se desideri cancellare il tuo account, puoi farlo qui. Ti sarà chiesta conferma. description: @@ -1025,6 +1007,7 @@ it: migrate_account: Sposta ad un account differente migrate_account_html: Se vuoi che questo account sia reindirizzato a uno diverso, puoi configurarlo qui. or_log_in_with: Oppure accedi con + privacy_policy_agreement_html: Ho letto e accetto l'informativa sulla privacy providers: cas: CAS saml: SAML @@ -1032,12 +1015,18 @@ it: registration_closed: "%{instance} non accetta nuovi membri" resend_confirmation: Invia di nuovo le istruzioni di conferma reset_password: Resetta la password + rules: + preamble: Questi sono impostati e applicati dai moderatori di %{domain}. + title: Alcune regole di base. security: Credenziali set_new_password: Imposta una nuova password setup: email_below_hint_html: Se l'indirizzo e-mail sottostante non è corretto, puoi cambiarlo qui e ricevere una nuova e-mail di conferma. email_settings_hint_html: L'email di conferma è stata inviata a %{email}. Se l'indirizzo e-mail non è corretto, puoi modificarlo nelle impostazioni dell'account. title: Configurazione + sign_up: + preamble: Con un account su questo server Mastodon, sarai in grado di seguire qualsiasi altra persona sulla rete, indipendentemente da dove sia ospitato il suo account. + title: Lascia che ti configuriamo su %{domain}. status: account_status: Stato dell'account confirming: In attesa che la conferma e-mail sia completata. @@ -1046,7 +1035,6 @@ it: redirecting_to: Il tuo account è inattivo perché attualmente reindirizza a %{acct}. view_strikes: Visualizza le sanzioni precedenti prese nei confronti del tuo account too_fast: Modulo inviato troppo velocemente, riprova. - trouble_logging_in: Problemi di accesso? use_security_key: Usa la chiave di sicurezza authorize_follow: already_following: Stai già seguendo questo account @@ -1627,89 +1615,6 @@ it: too_late: È troppo tardi per fare appello contro questa sanzione tags: does_not_match_previous_name: non corrisponde al nome precedente - terms: - body_html: | -

Politica della Privacy

-

Che informazioni raccogliamo?

- -
    -
  • Informazioni di base del profilo: Se ti registri su questo server, ti potrebbe venir chiesto di inserire un nome utente, un indirizzo e-mail ed una password. Potresti anche inserire informazioni aggiuntive del profilo come un nome a schermo ed una biografia e caricare una foto profilo ed un'immagine di intestazione. Il nome utente, il nome a schermo, la biografia, la foto profilo e l'immagine di intestazione, sono sempre elencati pubblicamente.
  • -
  • I post, i seguiti ed altre informazioni pubbliche: L'elenco di persone che segui viene elencata pubblicamente, la stessa cosa è vera per i tuoi seguaci. Quando invii un messaggio, la data e l'orario sono memorizzati così come l'applicazione da cui hai inviato il messaggio. I messaggi potrebbero contenere allegati media, come immagini e video. I post pubblici e non elencati sono disponibili pubblicamente. Quando mostri un post sul tuo profilo, anche questo diventa disponibile pubblicamente. I tuoi post sono consegnati ai tuoi seguaci, in alcuni casi significa che sono consegnati a server differenti e che lì sono memorizzate delle copie. Quando elimini i post, anche questo viene notificato ai tuoi seguaci. L'azione di ripubblicare o preferire un altro post è sempre pubblica.
  • -
  • Post diretti e solo per i seguaci: Tutti i post sono archiviati ed elaborati sul server. I post solo per seguaci sono consegnati ai tuoi seguaci ed agli utenti che vi hai menzionato, ed i post diretti sono consegnati solo agli utenti in essi menzionati. In alcuni casi significa che sono consegnati a server differenti e che lì sono memorizzate delle copie. Compiamo uno sforzo in buona fede per limitare l'accesso a questi post solo a persone autorizzate, ma gli altri server potrebbero non riuscire a fare ciò. Dunque, è importante rivedere i server a cui appartengono i tuoi seguaci. Potresti attivare/disattivare un'opzione per approvare e rifiutare i nuovi seguaci manualmente nelle impostazioni. Sei pregato di tenere a mente che gli operatori del server e di ogni server ricevente potrebbero visualizzare tali messaggi e che i riceventi potrebbero fotografarli, copiarlo o altrimenti ricondividerli. Non condividere dati sensibili su Mastodon.
  • -
  • IP ed altri metadati: Quando accedi, registriamo l'indirizzo IP da cui accedi, così come il nome della tua applicazione browser. Tutte le sessioni accedute sono disponibili per la tua revisione e revoca nelle impostazioni. L'ultimo indirizzo IP usato è memorizzato anche fino a 12 mesi. Potremmo anche trattenere i registri del server che includono l'indirizzo IP di ogni richiesta al nostro server.
  • -
- -
- -

Per cosa usiamo le tue informazioni

- -

Ogni informazioni che raccogliamo da te potrebbe essere usata nei modi seguenti:

- -
    -
  • Per fornire la funzionalità principale di Mastodon. Puoi interagire solo con il contenuto di altre persone ed postare i tuoi contenuti quando sei acceduto. Per esempio, potresti seguire altre persone per vedere i loro post combinati nella timeline principale personalizzata e tua.
  • -
  • Per aiutare a moderare la comunità, per esempio comparando il tuo indirizzo IP con altri noti per determinare evasioni dei ban o altre violazioni.
  • -
  • L'indirizzo email che fornisci potrebbe essere usato per inviarti informazioni, notifiche sull'interazione di altre persone con i tuoi contenuti o inviarti messaggi e per rispondere a interrogativi e/o altre richieste o domande.
  • -
- -
- -

Come proteggiamo le tue informazioni

- -

Implementiamo una varietà di misure di sicurezza per mantenere la sicurezza delle tue informazioni personali quando inserisci, invii o accedi alle tue informazioni personali. Tra le altre cose, la tua sessione del browser, così come il tuo traffico tra le tue applicazioni e le API, sono assicurate con SSL e la tua password è in hash usando un forte algoritmo a singolo metodo. Puoi abilitare l'autenticazione a due fattori per assicurare ulteriormente il tuo profilo.

- -
- -

Qual è la nostra politica di ritenzione dei dati?

- -

Faremo un grande sforzo in buona fede per:

- -
    -
  • Tratteniamo i registri del server contenenti l'indirizzo IP di tutte le richieste in questo server, in cui i registri sono mantenuti, per non più di 90 giorni.
  • -
  • Tratteniamo gli indirizzi IP associati con utenti registrati da non oltre 12 mesi.
  • -
- -

Puoi richiedere e scaricare un archivio del tuo contenuto, inclusi i tuoi post, allegati media, foto profilo ed immagine di intestazione.

- -

Puoi eliminare irreversibilmente il tuo profilo in ogni momento.

- -
- -

Usiamo i cookie

- -

Sì. I cookie sono piccoli file che un sito o il suo fornitore dei servizi trasferisce all'hard drive del tuo computer tramite il tuo browser web (se acconsenti). Questi cookie abilitano il sito a riconoscere il tuo browser e, se hai un profilo registrato, lo associano con il tuo profilo registrato.

- -

Usiamo i cookie per comprendere e salvare le vostre preferenze per visite future.

- -
- -

Diffondiamo alcuna informazione a terze parti?

- -

Non vendiamo, non scambiamo o trasferiamo altrimenti a terze parti le tue informazioni personalmente identificabili. Questo non include terze parti fidate che ci assistono nell'operare il nostro sito, nel condurre il nostro business o nel servirti, finché queste parti acconsentono a mantenere queste informazioni confidenziali. potremmo anche rilasciare le tue informazioni quando crediamo che il rilascio sia appropriato e soddisfi la legge, si applichi alle nostre politiche del sito o protegga noi o i diritti, la proprietà o la sicurezza di altri.

- -

Il tuo contenuto pubblico potrebbe essere scaricato da altri server nella rete. I tuoi post pubblici e per soli seguaci sono consegnati ai server dove risiedono i seguaci ed i messaggi diretti sono consegnati ai server dei destinatari, finché questi seguaci o destinatari risiedono su un server differente da questo.

- -

Quando autorizzi un'applicazione ad usare il tuo profilo, in base allo scopo dei permessi che approvi, potrebbe accedere alle tue informazioni del profilo pubbliche, l'elenco di chi segui, i tuoi seguaci, i tuoi elenchi, tutti i tuoi post ed i tuoi preferiti. Le applicazioni non possono mai accedere al tuo indirizzo e-mail o alla tua password.

- -
- -

Uso del sito da bambini

- -

Se questo server è in UE o nell'EEA: Il nostro sito, i prodotti ed i servizi sono tutti diretti a persone che abbiano almeno 16 anni. Se hai meno di 16 anni, per i requisiti del GDPR (General Data Protection Regulation) non usare questo sito.

- -

Se questo server è negli USA: Il nostro sito, i prodotti ed i servizi sono tutti diretti a persone che abbiano almeno 13 anni. Se hai meno di 13 anni, per i requisiti del COPPA (Children's Online Privacy Protection Act) non usare questo sito.

- -

I requisiti di legge possono essere diversi se questo server è in un'altra giurisdizione.

- -
- -

Modifiche alla nostra Politica della Privacy

- -

Se decidiamo di modificare la nostra politica della privacy, posteremo queste modifiche su questa pagina.

- -

Questo documento è CC-BY-SA. L'ultimo aggiornamento è del 26 maggio 2022.

- -

Adattato originalmente dal Discorso Politica della Privacy.

- title: Politica sulla privacy di %{instance} themes: contrast: Mastodon (contrasto elevato) default: Mastodon (scuro) @@ -1788,20 +1693,13 @@ it: suspend: Account sospeso welcome: edit_profile_action: Configura profilo - edit_profile_step: Puoi personalizzare il tuo profilo caricando un avatar, un'intestazione, modificando il tuo nome visualizzato e così via. Se vuoi controllare i tuoi nuovi seguaci prima di autorizzarli a seguirti, puoi bloccare il tuo account. + edit_profile_step: Puoi personalizzare il tuo profilo caricando un'immagine del profilo, cambiare il tuo nome e altro ancora. Puoi scegliere di esaminare i nuovi seguaci prima che loro siano autorizzati a seguirti. explanation: Ecco alcuni suggerimenti per iniziare final_action: Inizia a postare - final_step: 'Inizia a postare! Anche se non hai seguaci, i tuoi messaggi pubblici possono essere visti da altri, ad esempio nelle timeline locali e negli hashtag. Se vuoi puoi presentarti con l''hashtag #introductions.' + final_step: 'Inizia a pubblicare! Anche senza seguaci, i tuoi post pubblici possono essere visti da altri, ad esempio sulla timeline locale o negli hashtag. Potresti presentarti con l''hashtag #presentazione.' full_handle: Il tuo nome utente completo full_handle_hint: Questo è ciò che diresti ai tuoi amici in modo che possano seguirti o contattarti da un altro server. - review_preferences_action: Cambia preferenze - review_preferences_step: Dovresti impostare le tue preferenze, ad esempio quali email vuoi ricevere oppure il livello predefinito di privacy per i tuoi post. Se le immagini in movimento non ti danno fastidio, puoi abilitare l'animazione automatica delle GIF. subject: Benvenuto/a su Mastodon - tip_federated_timeline: La timeline federata visualizza uno dopo l'altro i messaggi pubblicati su Mastodon. Ma comprende solo gli utenti seguiti dai tuoi vicini, quindi non è completa. - tip_following: Per impostazione predefinita, segui gli amministratori del tuo server. Per trovare utenti più interessanti, dà un'occhiata alle timeline locale e federata. - tip_local_timeline: La timeline locale visualizza uno dopo l'altro i messaggi degli utenti di %{instance}. Questi sono i tuoi vicini! - tip_mobile_webapp: Se il tuo browser mobile ti dà la possibilità di aggiungere Mastodon allo schermo, puoi ricevere le notifiche. Funziona un po' come un'app natova! - tips: Suggerimenti title: Benvenuto a bordo, %{name}! users: follow_limit_reached: Non puoi seguire più di %{limit} persone diff --git a/config/locales/ja.yml b/config/locales/ja.yml index f2483e77d0..aa9b098002 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -3,35 +3,22 @@ ja: about: about_mastodon_html: Mastodonは、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 about_this: 詳細情報 - active_count_after: 人がアクティブ - active_footnote: 月間アクティブユーザー数 (MAU) administered_by: '管理者:' api: API apps: アプリ - apps_platforms: iOSやAndroidなど、各種環境から利用できます - browse_public_posts: Mastodonの公開ライブストリームをご覧ください contact: 連絡先 contact_missing: 未設定 contact_unavailable: N/A - continue_to_web: アプリで続ける documentation: ドキュメント - federation_hint_html: "%{instance}のアカウントひとつでどんなMastodon互換サーバーのユーザーでもフォローできるでしょう。" - get_apps: モバイルアプリを試す hosted_on: Mastodon hosted on %{domain} instance_actor_flash: "このアカウントはサーバーそのものを示す仮想的なもので、特定のユーザーを示すものではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックするときは、このアカウントをブロックせずに、ドメインブロックを使用してください。 \n" - learn_more: もっと詳しく - logged_in_as_html: "%{username}としてログインしています。" - logout_before_registering: 既にログインしています。 privacy_policy: プライバシーポリシー rules: サーバーのルール rules_html: 'このMastodonサーバーには、アカウントの所持にあたって従うべきルールが設定されています。概要は以下の通りです:' - see_whats_happening: やりとりを見てみる - server_stats: 'サーバー統計:' source_code: ソースコード status_count_after: other: 投稿 status_count_before: 投稿数 - tagline: 分散型ソーシャルネットワーク unavailable_content: 制限中のサーバー unavailable_content_description: domain: サーバー @@ -732,9 +719,6 @@ ja: closed_message: desc_html: 新規登録を停止しているときにフロントページに表示されます。HTMLタグが使えます title: 新規登録停止時のメッセージ - deletion: - desc_html: 誰でも自分のアカウントを削除できるようにします - title: アカウント削除を受け付ける require_invite_text: desc_html: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする title: 新規ユーザー登録時の理由を必須入力にする @@ -944,10 +928,7 @@ ja: warning: このデータは気をつけて取り扱ってください。他の人と共有しないでください! your_token: アクセストークン auth: - apply_for_account: 登録を申請する change_password: パスワード - checkbox_agreement_html: サーバーのルールプライバシーポリシーに同意します - checkbox_agreement_without_rules_html: 利用規約に同意します delete_account: アカウントの削除 delete_account_html: アカウントを削除したい場合、こちらから手続きが行えます。削除する前に、確認画面があります。 description: @@ -987,7 +968,6 @@ ja: redirecting_to: アカウントは%{acct}に引っ越し設定されているため非アクティブになっています。 view_strikes: 過去のストライクを表示 too_fast: フォームの送信が速すぎます。もう一度やり直してください。 - trouble_logging_in: ログインできませんか? use_security_key: セキュリティキーを使用 authorize_follow: already_following: あなたは既にこのアカウントをフォローしています @@ -1532,89 +1512,6 @@ ja: sensitive_content: 閲覧注意 tags: does_not_match_previous_name: 以前の名前と一致しません - terms: - body_html: | -

プライバシーポリシー

-

どのような情報を収集しますか?

- -
    -
  • 基本的なアカウント情報: 当サイトに登録すると、ユーザー名・メールアドレス・パスワードの入力を求められることがあります。また表示名や自己紹介・プロフィール画像・ヘッダー画像といった追加のプロフィールを登録できます。ユーザー名・表示名・自己紹介・プロフィール画像・ヘッダー画像は常に公開されます。
  • -
  • 投稿・フォロー・その他公開情報: フォローしているユーザーの一覧は一般公開されます。フォロワーも同様です。メッセージを投稿する際、日時だけでなく投稿に使用したアプリケーション名も記録されます。メッセージには写真や動画といった添付メディアを含むことがあります。「公開」や「未収載」の投稿は一般公開されます。プロフィールに投稿を載せるとそれもまた公開情報となります。投稿はフォロワーに配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。投稿を削除した場合も同様にフォロワーに配信されます。他の投稿をリブログやお気に入り登録する行動は常に公開されます。
  • -
  • 「ダイレクト」と「フォロワー限定」投稿: すべての投稿はサーバーに保存され、処理されます。「フォロワー限定」投稿はフォロワーと投稿に書かれたユーザーに配信されます。「ダイレクト」投稿は投稿に書かれたユーザーにのみ配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。私たちはこれらの閲覧を一部の許可された者に限定するよう誠意を持って努めます。しかし他のサーバーにおいても同様に扱われるとは限りません。したがって、相手の所属するサーバーを吟味することが重要です。設定で新しいフォロワーの承認または拒否を手動で行うよう切り替えることもできます。サーバー管理者は「ダイレクト」や「フォロワー限定」投稿も閲覧する可能性があることを忘れないでください。また受信者がスクリーンショットやコピー、もしくは共有する可能性があることを忘れないでください。いかなる機微な情報もMastodon上で共有しないでください。
  • -
  • IPアドレスやその他メタデータ: ログインする際IPアドレスだけでなくブラウザーアプリケーション名を記録します。ログインしたセッションはすべてユーザー設定で見直し、取り消すことができます。使用されている最新のIPアドレスは最大12ヵ月間保存されます。またサーバーへのIPアドレスを含むすべてのリクエストのログを保持することがあります。
  • -
- -
- -

情報を何に使用しますか?

- -

収集した情報は次の用途に使用されることがあります:

- -
    -
  • Mastodonのコア機能の提供: ログインしている間にかぎり他の人たちと投稿を通じて交流することができます。例えば自分専用のホームタイムラインで投稿をまとめて読むために他の人たちをフォローできます。
  • -
  • コミュニティ維持の補助: 例えばIPアドレスを既知のものと比較し、BAN回避目的の複数登録者やその他違反者を判別します。
  • -
  • 提供されたメールアドレスはお知らせの送信・投稿に対するリアクションやメッセージ送信の通知・お問い合わせやその他要求や質問への返信に使用されることがあります。
  • -
- -
- -

情報をどのように保護しますか?

- -

私たちはあなたが入力・送信する際や自身の情報にアクセスする際に個人情報を安全に保つため、さまざまなセキュリティ上の対策を実施します。特にブラウザーセッションだけでなくアプリケーションとAPI間の通信もSSLによって保護されます。またパスワードは強力な不可逆アルゴリズムでハッシュ化されます。二要素認証を有効にし、アカウントへのアクセスをさらに安全にすることができます。

- -
- -

データ保持方針はどうなっていますか?

- -

私たちは次のように誠意を持って努めます:

- -
    -
  • 当サイトへのIPアドレスを含むすべての要求に対するサーバーログを90日以内のできるかぎりの間保持します。
  • -
  • 登録されたユーザーに関連付けられたIPアドレスを12ヵ月以内の間保持します。
  • -
- -

あなたは投稿・添付メディア・プロフィール画像・ヘッダー画像を含む自身のデータのアーカイブを要求し、ダウンロードすることができます。

- -

あなたはいつでもアカウントの削除を要求できます。削除は取り消すことができません。

- -
- -

クッキーを使用していますか?

- -

はい。クッキーは (あなたが許可した場合に) WebサイトやサービスがWebブラウザーを介してコンピューターに保存する小さなファイルです。使用することでWebサイトがブラウザーを識別し、登録済みのアカウントがある場合関連付けます。

- -

私たちはクッキーを将来の訪問のために設定を保存し呼び出す用途に使用します。

- -
- -

なんらかの情報を外部に提供していますか?

- -

私たちは個人を特定できる情報を外部へ販売・取引・その他方法で渡すことはありません。これには当サイトの運営・業務遂行・サービス提供を行ううえで補助する信頼できる第三者をこの機密情報の保護に同意するかぎり含みません。法令の遵守やサイトポリシーの施行、権利・財産・安全の保護に適切と判断した場合、あなたの情報を公開することがあります。

- -

あなたの公開情報はネットワーク上の他のサーバーにダウンロードされることがあります。相手が異なるサーバーに所属する場合、「公開」と「フォロワー限定」投稿はフォロワーの所属するサーバーに配信され、「ダイレクト」投稿は受信者の所属するサーバーに配信されます。

- -

あなたがアカウントの使用をアプリケーションに許可すると、承認した権限の範囲内で公開プロフィール情報・フォローリスト・フォロワー・リスト・すべての投稿・お気に入り登録にアクセスできます。アプリケーションはメールアドレスやパスワードに決してアクセスできません。

- -
- -

児童によるサイト利用について

- -

サーバーがEUまたはEEA圏内にある場合: 当サイト・製品・サービスは16歳以上の人を対象としています。あなたが16歳未満の場合、GDPR (General Data Protection Regulation - EU一般データ保護規則) により当サイトを使用できません。

- -

サーバーが米国にある場合: 当サイト・製品・サービスは13歳以上の人を対象としています。あなたが13歳未満の場合、COPPA (Children's Online Privacy Protection Act - 児童オンラインプライバシー保護法) により当サイトを使用できません。

- -

サーバーが別の管轄区域にある場合、法的要件は異なることがあります。

- -
- -

プライバシーポリシーの変更

- -

プライバシーポリシーの変更を決定した場合、このページに変更点を掲載します。

- -

この文章のライセンスはCC-BY-SAです。最終更新日は2021年6月1日です。

- -

オリジナルの出典: Discourse privacy policy

- title: "%{instance}のプライバシーポリシー" themes: contrast: Mastodon (ハイコントラスト) default: Mastodon (ダーク) @@ -1693,20 +1590,11 @@ ja: suspend: アカウントが停止されました welcome: edit_profile_action: プロフィールを設定 - edit_profile_step: アイコンやヘッダーの画像をアップロードしたり、表示名を変更したりして、自分のプロフィールをカスタマイズすることができます。また、誰かからの新規フォローを許可する前にその人の様子を見ておきたい場合、アカウントを承認制にすることもできます。 explanation: 始めるにあたってのアドバイスです final_action: 始めましょう - final_step: 'さあ、始めましょう! たとえフォロワーがまだいなくても、あなたの公開した投稿はローカルタイムラインやハッシュタグなどを通じて誰かの目にとまるはずです。自己紹介をしたいときには #introductions ハッシュタグが便利かもしれません。' full_handle: あなたの正式なユーザーID full_handle_hint: 別のサーバーの友達とフォローやメッセージをやり取りする際には、これを伝えることになります。 - review_preferences_action: 設定の変更 - review_preferences_step: 受け取りたいメールの種類や投稿のデフォルト公開範囲など、ユーザー設定を必ず済ませておきましょう。目が回らない自信があるなら、アニメーションGIFを自動再生する設定もご検討ください。 subject: Mastodonへようこそ - tip_federated_timeline: 連合タイムラインはMastodonネットワークの流れを見られるものです。ただしあなたと同じサーバーの人がフォローしている人だけが含まれるので、それが全てではありません。 - tip_following: 最初は、サーバーの管理者をフォローした状態になっています。もっと興味のある人たちを見つけるには、ローカルタイムラインと連合タイムラインを確認してみましょう。 - tip_local_timeline: ローカルタイムラインは%{instance}にいる人々の流れを見られるものです。彼らはあなたと同じサーバーにいる隣人のようなものです! - tip_mobile_webapp: お使いのモバイル端末で、ブラウザからMastodonをホーム画面に追加できますか? もし追加できる場合、プッシュ通知の受け取りなど、まるで「普通の」アプリのような機能が楽しめます! - tips: 豆知識 title: ようこそ、%{name}さん! users: follow_limit_reached: あなたは現在 %{limit}人以上フォローできません diff --git a/config/locales/ka.yml b/config/locales/ka.yml index c1f1503e4c..f1ce832d3a 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -11,7 +11,6 @@ ka: contact_unavailable: მიუწ. documentation: დოკუმენტაცია hosted_on: მასტოდონს მასპინძლობს %{domain} - learn_more: გაიგე მეტი source_code: კოდი status_count_before: ვინც უავტორა user_count_before: სახლი @@ -238,9 +237,6 @@ ka: closed_message: desc_html: გამოჩნდება წინა გვერდზე, როდესაც რეგისტრაციები დახურულია. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები title: დახურული რეგისტრაციის წერილი - deletion: - desc_html: უფლება მიეცით ყველას, გააუქმონ თავიანთი ანგარიში - title: ღია ანგარიშის გაუქმება site_description: desc_html: საშესავლო პარაგრაფი წინა გვერდზე. აღწერეთ თუ რა ხდის ამ მასტოდონის სერვერს განსაკუთრებულს და სხვა მნიშვნელოვანი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები, კერძოდ <a> და <em>. title: ინსტანციის აღწერილობა @@ -578,20 +574,11 @@ ka: title: არქივის მიღება welcome: edit_profile_action: პროფილის მოწყობა - edit_profile_step: შეგიძლიათ მოაწყოთ თქვენი პროფილი ავატარის ატვირთვით, დასათაურების სურათით, თქვენი დისპლეი სახელის შეცვლით და სხვა. თუ გსურთ გაუწიოთ ახალ მიმდევრებს რევიუ, სანამ რეალურად გამოგყვებიან, შეგიძლიათ ჩაკეტოთ თქვენი ანგარიში. explanation: აქ რამდენიმე რჩევაა დასაწყისისთვის final_action: დაიწყე პოსტვა - final_step: 'დაიწყე პოსტვა! თქვენი ღია წერილები შესაძლოა ნახონ სხვებმა მიმდევრების გარეშეც კი, მაგალითად თქვენს ლოკალურ თაიმლაინზე ან ჰეშტეგებში. შეგიძლიათ წარადგინოთ თქვენი თავი #introductions ჰეშტეგით.' full_handle: თქვენი სრული სახელური full_handle_hint: ეს არის ის რასაც ეტყვით თქვენს მეგობრებს, რათა მოგწერონ ან გამოგყვნენ სხვა ინსტანციიდან. - review_preferences_action: შეცვალეთ პრეფერენსიები - review_preferences_step: დარწმუნდით რომ აყენებთ თქვენს პრეფერენსიებს, მაგალითად რა ელ-ფოსტის წერილების მიღება გსურთ, ან კონფიდენციალურობის რა დონე გსურთ ჰქონდეთ თქვენს პოსტებს საწყისად. თუ არ გაღიზიანებთ მოძრაობა, შეგიძლიათ ჩართოთ გიფის ავტო-დაკვრა. subject: კეთილი იყოს თქვენი მობრძანება მასტოდონში - tip_federated_timeline: ფედერალური თაიმლაინი მასტოდონის ქსელის ცეცხლოვანი ხედია. ის მოიცავს მხოლოდ იმ ადამიანებს, რომელთაგანაც გამოიწერეს თქვენმა მეზობლებმა, ასე რომ ეს არაა სრული. - tip_following: თქვენ საწყისად მიჰყვებით თქვენი სერვერის ადმინისტრატორ(ებ)ს. უფრო საინტერესო ადამიანების მოსაძებნად იხილეთ ლოკალური და ფედერალური თაიმლაინები. - tip_local_timeline: ლოკალური თაიმლაინი ცეცხლოვანი ხედია ადამიანებისთვის %{instance}-ზე. ისინი არიან თქვენი უსიტყვო მეზობლები! - tip_mobile_webapp: თუ თქვენი მობილური ბრაუზერი გთავაზობთ მასტოდონის სახლის-ეკრანზე დამატებას, შეძლებთ ფუშ შეტყობინებების მიღებას. ეს მრავალმხრივ მოქმედებს როგორც მშობლიური აპლიკაცია! - tips: რჩევები title: კეთილი იყოს თქვენი მობრძანება, %{name}! users: invalid_otp_token: არასწორი მეორე ფაქტორის კოდი diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 82ec196b2c..a202db2f85 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -3,23 +3,15 @@ kab: about: about_mastodon_html: 'Azeṭṭa ametti n uzekka: Ulac deg-s asussen, ulac taɛessast n tsuddiwin fell-ak, yebna ɣef leqder d ttrebga, daɣen d akeslemmas! Akked Maṣṭudun, isefka-inek ad qimen inek!' about_this: Γef - active_count_after: d urmid - active_footnote: Imseqdacen yekkren s wayyur (MAU) administered_by: 'Yettwadbel sɣur:' api: API apps: Isnasen izirazen - apps_platforms: Seqdec Maṣṭudun deg iOS, Android d tɣeṛγṛin-nniḍen contact: Anermis contact_missing: Ur yettusbadu ara contact_unavailable: Wlac documentation: Amnir - federation_hint_html: S umiḍan deg %{instance} tzemreḍ ad tḍefṛeḍ imdanen deg yal aqeddac Maṣṭudun d wugar n waya. - get_apps: Ɛreḍ asnas aziraz hosted_on: Maṣṭudun yersen deg %{domain} - learn_more: Issin ugar rules: Ilugan n uqeddac - see_whats_happening: Ẓer d acu i iḍerrun - server_stats: 'Tidaddanin n uqeddac:' source_code: Tangalt Taɣbalut status_count_after: one: n tsuffeɣt @@ -472,10 +464,7 @@ kab: token_regenerated: Ajuṭu n unekcum yettusirew i tikkelt-nniḍen akken iwata your_token: Ajiṭun-ik·im n unekcum auth: - apply_for_account: Suter asnebgi change_password: Awal uffir - checkbox_agreement_html: Qebleγ ilugan n uqeddac-a akked tiwtilin n useqdec - checkbox_agreement_without_rules_html: Qebleγ tiwtilin n useqdec delete_account: Kkes amiḍan description: prefix_invited_by_user: "@%{name} inced-ik·ikem ad ternuḍ ɣer uqeddac-a n Mastodon!" @@ -498,7 +487,6 @@ kab: title: Sbadu status: account_status: Addad n umiḍan - trouble_logging_in: Γur-k uguren n tuqqna? use_security_key: Seqdec tasarut n teɣlist authorize_follow: already_following: Teṭafareḍ ya kan amiḍan-a @@ -809,9 +797,7 @@ kab: suspend: Amiḍan yettwaḥebsen welcome: full_handle: Tansa umiḍan-ik takemmalit - review_preferences_action: Beddel imenyafen subject: Ansuf γer Maṣṭudun - tips: Tixbaluyin title: Ansuf yessek·em, %{name}! users: signed_in_as: 'Teqqneḍ amzun d:' diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 25badb0a2b..f1dd088297 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -3,25 +3,16 @@ kk: about: about_mastodon_html: Mastodon - әлеуметтік желіге негізделген, тегін және веб протоколды, ашық кодты бағдарлама. Ол email сияқты орталығы жоқ құрылым. about_this: Туралы - active_count_after: актив - active_footnote: Соңғы айдағы актив қолданушылар (MAU) administered_by: 'Админ:' apps: Мобиль қосымшалар - apps_platforms: iOS, Android және басқа платформалардағы Mastodon қолданыңыз - browse_public_posts: Mastodon-дағы ашық посттар стримын қараңыз contact: Байланыс contact_missing: Бапталмаған contact_unavailable: Белгісіз documentation: Құжаттама - federation_hint_html: "%{instance} платформасындағы аккаунтыңыз арқылы Mastodon желісіндегі кез келген сервердегі қолданушыларға жазыла аласыз." - get_apps: Мобиль қосымшаны қолданып көріңіз hosted_on: Mastodon орнатылған %{domain} доменінде instance_actor_flash: | Бұл аккаунт кез-келген жеке пайдаланушыны емес, сервердің өзін көрсету үшін қолданылатын виртуалды актер. Ол федерация мақсаттарында қолданылады және сіз барлығын бұғаттағыңыз келмейінше, бұғатталмауы керек, бұл жағдайда сіз домен блогын қолданған жөн. - learn_more: Көбірек білу - see_whats_happening: Не болып жатқанын қараңыз - server_stats: 'Сервер статистикасы:' source_code: Ашық коды status_count_after: one: жазба @@ -366,9 +357,6 @@ kk: closed_message: desc_html: Displayed on frontpage when registrations are closed. You can use HTML тег title: Closed registration мессадж - deletion: - desc_html: Allow anyone to delete their аккаунт - title: Open аккаунт deletion registrations_mode: modes: approved: Тіркелу үшін мақұлдау қажет @@ -450,10 +438,7 @@ kk: warning: Be very carеful with this data. Never share it with anyone! your_token: Your access tokеn auth: - apply_for_account: Шақыруды сұрау change_password: Құпиясөз - checkbox_agreement_html: Мен ережелер мен шарттарды қабылдаймын - checkbox_agreement_without_rules_html: Мен шарттармен келісемін delete_account: Аккаунт өшіру delete_account_html: Аккаунтыңызды жойғыңыз келсе, мына жерді басыңыз. Сізден растау сұралатын болады. description: @@ -486,7 +471,6 @@ kk: confirming: Электрондық поштаны растау аяқталуын күтуде. pending: Сіздің өтінішіңіз біздің қызметкерлеріміздің қарауында. Бұл біраз уақыт алуы мүмкін. Өтінішіңіз мақұлданса, сізге электрондық пошта хабарламасы келеді. redirecting_to: Сіздің есептік жазбаңыз белсенді емес, себебі ол %{acct} жүйесіне қайта бағытталуда. - trouble_logging_in: Кіру қиын ба? authorize_follow: already_following: Бұл аккаунтқа жазылғансыз error: Өкінішке орай, қашықтағы тіркелгіні іздеуде қате пайда болды @@ -895,20 +879,11 @@ kk: suspend: Аккаунт тоқтатылды welcome: edit_profile_action: Профиль өңдеу - edit_profile_step: Профиліңізге аватар, мұқаба сурет жүктей аласыз, аты-жөніңізді көрсете аласыз. Оқырмандарыңызға сізбен танысуға рұқсат бермес бұрын аккаунтыңызды уақытша құлыптап қоюға болады. explanation: Мына кеңестерді шолып өтіңіз final_action: Жазба жазу - final_step: 'Жазуды бастаңыз! Тіпті оқырмандарыңыз болмаса да, сіздің жалпы жазбаларыңызды басқа адамдар көре алады, мысалы, жергілікті желіде және хэштегтерде. Жазбаларыңызға # протоколды хэштег қоссаңыз болады.' full_handle: Желі тұтқасы full_handle_hint: This is what you would tell your friends so they can message or follow you frоm another server. - review_preferences_action: Таңдауларды өзгерту - review_preferences_step: Қандай хат-хабарларын алуды қалайтыныңызды немесе сіздің хабарламаларыңыздың қандай құпиялылық деңгейін алғыңыз келетінін анықтаңыз. Сондай-ақ, сіз GIF автоматты түрде ойнату мүмкіндігін қосуды таңдай аласыз. subject: Mastodon Желісіне қош келдіңіз - tip_federated_timeline: Жаһандық желі - Mastodon желісінің негізгі құндылығы. - tip_following: Сіз бірден желі админіне жазылған болып саналасыз. Басқа адамдарға жазылу үшін жергілікті және жаһандық желіні шолып шығыңыз. - tip_local_timeline: Жерігілкті желіде маңайыздағы адамдардың белсенділігін көре аласыз %{instance}. Олар - негізгі көршілеріңіз! - tip_mobile_webapp: Мобиль браузеріңіз Mastodon желісін бастапқы бетке қосуды ұсынса, қабылдаңыз. Ескертпелер де шығатын болады. Арнайы қосымша сияқты бұл! - tips: Кеңестер title: Ортаға қош келдің, %{name}! users: follow_limit_reached: Сіз %{limit} лимитінен көп адамға жазыла алмайсыз diff --git a/config/locales/ko.yml b/config/locales/ko.yml index d5f14aa4a7..7cd8f7f648 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -3,37 +3,24 @@ ko: about: about_mastodon_html: 마스토돈은 오픈 소스 기반의 소셜 네트워크 서비스 입니다. 상용 플랫폼의 대체로서 분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 마스토돈 인스턴스를 만들 수 있으며, 아주 매끄럽게 소셜 네트워크에 참가할 수 있습니다. about_this: 이 인스턴스에 대해서 - active_count_after: 활성 사용자 - active_footnote: 월간 활성 사용자 administered_by: '관리자:' api: API apps: 모바일 앱 - apps_platforms: 마스토돈을 iOS, 안드로이드, 다른 플랫폼들에서도 사용하세요 - browse_public_posts: 마스토돈의 공개 라이브 스트림을 둘러보기 contact: 연락처 contact_missing: 미설정 contact_unavailable: 없음 - continue_to_web: 웹앱에서 계속하기 documentation: 문서 - federation_hint_html: "%{instance}에 계정을 만드는 것으로 모든 마스토돈 서버, 그리고 호환 되는 모든 서버의 사용자를 팔로우 할 수 있습니다." - get_apps: 모바일 앱 사용해 보기 hosted_on: "%{domain}에서 호스팅 되는 마스토돈" instance_actor_flash: | 이 계정은 가상의 actor로서 개인 사용자가 아닌 서버 자체를 나타냅니다. 이것은 페더레이션을 목적으로 사용 되며 인스턴스 전체를 차단하려 하지 않는 이상 차단하지 않아야 합니다, 그 경우에는 도메인 차단을 사용하세요. - learn_more: 자세히 - logged_in_as_html: 현재 %{username}으로 로그인 했습니다. - logout_before_registering: 이미 로그인 했습니다. privacy_policy: 개인정보 처리방침 rules: 서버 규칙 rules_html: '아래의 글은 이 마스토돈 서버에 계정이 있다면 따라야 할 규칙의 요약입니다:' - see_whats_happening: 무슨 일이 일어나는 지 보기 - server_stats: '서버 통계:' source_code: 소스 코드 status_count_after: other: 개 status_count_before: 게시물 수 - tagline: 분산화된 소셜 네트워크 unavailable_content: 이용 불가능한 컨텐츠 unavailable_content_description: domain: 서버 @@ -753,9 +740,6 @@ ko: closed_message: desc_html: 신규 등록을 받지 않을 때 프론트 페이지에 표시됩니다. HTML 태그를 사용할 수 있습니다 title: 신규 등록 정지 시 메시지 - deletion: - desc_html: 사용자가 자신의 계정을 삭제할 수 있도록 허용합니다 - title: 계정 삭제를 허가함 require_invite_text: desc_html: 가입이 수동 승인을 필요로 할 때, "왜 가입하려고 하나요?" 항목을 선택사항으로 두는 것보다는 필수로 두는 것이 낫습니다 title: 새 사용자가 초대 요청 글을 작성해야 하도록 @@ -983,10 +967,8 @@ ko: warning: 이 데이터를 조심히 다뤄 주세요. 다른 사람들과 절대로 공유하지 마세요! your_token: 액세스 토큰 auth: - apply_for_account: 가입 요청하기 + apply_for_account: 대기자 명단에 들어가기 change_password: 패스워드 - checkbox_agreement_html: 서버 규칙이용약관에 동의합니다 - checkbox_agreement_without_rules_html: 이용 약관에 동의합니다 delete_account: 계정 삭제 delete_account_html: 계정을 삭제하고 싶은 경우, 여기서 삭제할 수 있습니다. 삭제 전 확인 화면이 표시됩니다. description: @@ -1005,6 +987,7 @@ ko: migrate_account: 계정 옮기기 migrate_account_html: 이 계정을 다른 계정으로 리디렉션 하길 원하는 경우 여기에서 설정할 수 있습니다. or_log_in_with: 다른 방법으로 로그인 하려면 + privacy_policy_agreement_html: 개인정보 보호정책을 읽었고 동의합니다 providers: cas: CAS saml: SAML @@ -1012,6 +995,9 @@ ko: registration_closed: "%{instance}는 새로운 가입을 받지 않고 있습니다" resend_confirmation: 확인 메일을 다시 보내기 reset_password: 암호 재설정 + rules: + preamble: 다음은 %{domain}의 중재자들에 의해 설정되고 적용되는 규칙들입니다. + title: 몇 개의 규칙이 있습니다. security: 보안 set_new_password: 새 암호 setup: @@ -1026,7 +1012,6 @@ ko: redirecting_to: 계정이 %{acct}로 리다이렉트 중이기 때문에 비활성 상태입니다. view_strikes: 내 계정에 대한 과거 중재 기록 보기 too_fast: 너무 빠르게 양식이 제출되었습니다, 다시 시도하세요. - trouble_logging_in: 로그인 하는데 문제가 있나요? use_security_key: 보안 키 사용 authorize_follow: already_following: 이미 이 계정을 팔로우 하고 있습니다 @@ -1593,89 +1578,6 @@ ko: too_late: 이의를 제기하기에 너무 늦었습니다 tags: does_not_match_previous_name: 이전 이름과 맞지 않습니다 - terms: - body_html: | -

개인정보 정책

-

우리가 어떤 정보를 수집하나요?

- -
    -
  • 기본 계정 정보: 이 서버에 가입하실 때 사용자명, 이메일 주소, 패스워드 등을 입력 받게 됩니다. 추가적으로 표시되는 이름이나 자기소개, 프로필 이미지, 헤더 이미지 등의 프로필 정보를 입력하게 됩니다. 사용자명, 표시되는 이름, 자기소개, 프로필 이미지와 헤더 이미지는 언제나 공개적으로 게시됩니다.
  • -
  • 게시물, 팔로잉, 기타 공개된 정보: 당신이 팔로우 하는 사람들의 리스트는 공개됩니다. 당신을 팔로우 하는 사람들도 마찬가지입니다. 당신이 게시물을 작성하는 경우, 응용프로그램이 메시지를 받았을 때의 날짜와 시간이 기록 됩니다. 게시물은 그림이나 영상 등의 미디어를 포함할 수 있습니다. 퍼블릭과 미표시(unlisted) 게시물은 공개적으로 접근이 가능합니다. 프로필에 게시물을 고정하는 경우 마찬가지로 공개적으로 접근 가능한 정보가 됩니다. 당신의 게시물들은 당신의 팔로워들에게 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송되고 그곳에 사본이 저장 됩니다. 당신이 게시물을 삭제하는 경우 이 또한 당신의 팔로워들에게 전송 됩니다. 다른 게시물을 리블로깅 하거나 좋아요 하는 경우 이는 언제나 공개적으로 제공 됩니다.
  • -
  • DM, 팔로워 공개 게시물: 모든 게시물들은 서버에서 처리되고 저장됩니다. 팔로워 공개 게시물은 당신의 팔로워와 멘션 된 사람들에게 전달이 됩니다. 다이렉트 메시지는 멘션 된 사람들에게만 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송 되고 그곳에 사본이 저장됨을 의미합니다. 우리는 이 게시물들이 권한을 가진 사람들만 열람이 가능하도록 노력을 할 것이지만 다른 서버에서는 이것이 실패할 수도 있습니다. 그러므로 당신의 팔로워들이 속한 서버를 재확인하는 것이 중요합니다. 당신은 새 팔로워를 수동으로 승인하거나 거절하도록 설정을 변경할 수 있습니다. 해당 서버의 운영자는 서버가 받는 메시지를 열람할 수 있다는 것을 항상 염두해 두세요, 그리고 수신자들은 스크린샷을 찍거나 복사하는 등의 방법으로 다시 공유할 수 있습니다. 민감한 정보를 마스토돈을 통해 공유하지 마세요.
  • -
  • IP와 기타 메타데이터: 당신이 로그인 하는 경우 IP 주소와 브라우저의 이름을 저장합니다. 모든 세션은 당신이 검토하고 취소할 수 있도록 설정에서 제공 됩니다. 마지막으로 사용 된 IP 주소는 최대 12개월 간 저장됩니다. 또한, 모든 요청에 대해 IP주소를 포함한 정보를 로그에 저장할 수 있습니다.
  • -
- -
- -

우리가 당신의 정보를 어디에 쓰나요?

- -

당신에게서 수집한 정보는 다음과 같은 곳에 사용 됩니다:

- -
    -
  • 마스토돈의 주요 기능 제공. 다른 사람의 게시물에 상호작용 하거나 자신의 게시물을 작성하기 위해서는 로그인을 해야 합니다. 예를 들어, 다른 사람의 게시물을 자신만의 홈 타임라인에서 모아 보기 위해 팔로우를 할 수 있습니다.
  • -
  • 커뮤니티의 중재를 위해, 예를 들어 당신의 IP 주소와 기타 사항을 비교하여 금지를 우회하거나 다른 규칙을 위반하는지 판단하는 데에 사용할 수 있습니다.
  • -
  • 당신이 제공한 이메일 주소를 통해 정보, 다른 사람들의 반응이나 받은 메시지에 대한 알림, 기타 요청 등에 관한 응답 요청 등을 보내는 데에 활용됩니다.
  • -
- -
- -

어떻게 당신의 정보를 보호하나요?

- -

우리는 당신이 입력, 전송, 접근하는 개인정보를 보호하기 위해 다양한 보안 대책을 적용합니다. 당신의 브라우저 세션, 당신의 응용프로그램과의 통신, API는 SSL로 보호 되며 패스워드는 강력한 단방향 해시 알고리즘을 사용합니다. 계정의 더 나은 보안을 위해 2단계 인증을 활성화 할 수 있습니다.

- -
- -

자료 저장 정책은 무엇이죠?

- -

우리는 다음을 위해 노력을 할 것입니다:

- -
    -
  • IP를 포함해 이 서버에 전송 되는 모든 요청에 대한 로그는 90일을 초과하여 저장되지 않습니다.
  • -
  • 가입 된 사용자의 IP 정보는 12개월을 초과하여 저장 되지 않습니다.
  • -
- -

당신은 언제든지 게시물, 미디어 첨부, 프로필 이미지, 헤더 이미지를 포함한 당신의 컨텐트에 대한 아카이브를 요청하고 다운로드 할 수 있습니다.

- -

언제든지 계정을 완전히 삭제할 수 있습니다.

- -
- -

쿠키를 사용하나요?

- -

네. 쿠키는 (당신이 허용한다면) 당신의 웹 브라우저를 통해 서버에서 당신의 하드드라이브에 저장하도록 전송하는 작은 파일들입니다. 이 쿠키들은 당신의 브라우저를 인식하고, 계정이 있는 경우 이와 연결하는 것을 가능하게 합니다.

- -

당신의 환경설정을 저장하고 다음 방문에 활용하기 위해 쿠키를 사용합니다.

- -
- -

외부에 정보를 공개하나요?

- -

우리는 당신을 식별 가능한 개인정보를 외부에 팔거나 제공하거나 전송하지 않습니다. 이는 당사의 사이트를 운영하기 위한, 기밀 유지에 동의하는, 신뢰 가능한 서드파티를 포함하지 않습니다. 또한 법률 준수, 사이트 정책 시행, 또는 당사나 타인에 대한 권리, 재산, 또는 안전보호를 위해 적절하다고 판단되는 경우 당신의 정보를 공개할 수 있습니다.

- -

당신의 공개 게시물은 네트워크에 속한 다른 서버가 다운로드 할 수 있습니다. 당신의 팔로워나 수신자가 이 서버가 아닌 다른 곳에 존재하는 경우 당신의 공개, 팔로워 공개 게시물은 당신의 팔로워가 존재하는 서버로 전송되며, 다이렉트메시지는 수신자가 존재하는 서버로 전송 됩니다.

- -

당신이 계정을 사용하기 위해 응용프로그램을 승인하는 경우 당신이 허용한 권한에 따라 응용프로그램은 당신의 공개 계정정보, 팔로잉 리스트, 팔로워 리스트, 게시물, 좋아요 등에 접근이 가능해집니다. 응용프로그램은 절대로 당신의 이메일 주소나 패스워드에 접근할 수 없습니다.

- -
- -

어린이의 사이트 사용

- -

이 서버가 EU나 EEA에 속해 있다면: 당사의 사이트, 제품과 서비스는 16세 이상인 사람들을 위해 제공됩니다. 당신이 16세 미만이라면 GDPR(General Data Protection Regulation)의 요건에 따라 이 사이트를 사용할 수 없습니다.

- -

이 서버가 미국에 속해 있다면: 당사의 사이트, 제품과 서비스는 13세 이상인 사람들을 위해 제공됩니다. 당신이 13세 미만이라면 COPPA (Children's Online Privacy Protection Act)의 요건에 따라 이 사이트를 사용할 수 없습니다.

- -

이 서버가 있는 관할권에 따라 법적 요구가 달라질 수 있습니다.

- -
- -

개인정보 정책의 변경

- -

만약 우리의 개인정보 정책이 바뀐다면, 이 페이지에 바뀐 정책이 게시됩니다.

- -

이 문서는 CC-BY-SA 라이센스입니다. 마지막 업데이트는 2012년 5월 26일입니다.

- -

Originally adapted from the Discourse privacy policy.

- title: "%{instance} 개인정보 처리방침" themes: contrast: 마스토돈 (고대비) default: 마스토돈 (어두움) @@ -1754,20 +1656,11 @@ ko: suspend: 계정 정지 됨 welcome: edit_profile_action: 프로필 설정 - edit_profile_step: 아바타, 헤더를 업로드하고, 사람들에게 표시 될 이름을 바꾸는 것으로 당신의 프로필을 커스텀 할 수 있습니다. 사람들이 당신을 팔로우 하기 전에 리뷰를 거치게 하고 싶다면 계정을 잠그면 됩니다. explanation: 시작하기 전에 몇가지 팁들을 준비했습니다 final_action: 포스팅 시작하기 - final_step: '포스팅을 시작하세요! 팔로워가 없더라도 퍼블릭 메시지는 다른 사람들이 볼 수 있습니다, 예를 들면 로컬 타임라인이나 해시태그에서요. 사람들에게 자신을 소개하고 싶다면 #introductions 해시태그를 이용해보세요.' full_handle: 당신의 풀 핸들 full_handle_hint: 이것을 당신의 친구들에게 알려주면 다른 서버에서 팔로우 하거나 메시지를 보낼 수 있습니다. - review_preferences_action: 설정 바꾸기 - review_preferences_step: 당신의 설정을 확인하세요. 어떤 이메일로 알림을 받을 것인지, 기본적으로 어떤 프라이버시 설정을 사용할 것인지, 멀미가 없다면 GIF를 자동 재생하도록 설정할 수도 있습니다. subject: 마스토돈에 오신 것을 환영합니다 - tip_federated_timeline: 연합 타임라인은 마스토돈 네트워크의 소방호스입니다. 다만 여기엔 당신의 이웃들이 구독 중인 것만 뜹니다, 모든 것이 다 오는 것은 아니예요. - tip_following: 기본적으로 서버의 관리자를 팔로우 하도록 되어 있습니다. 흥미로운 사람들을 더 찾으려면 로컬과 연합 타임라인을 확인해 보세요. - tip_local_timeline: 로컬 타임라인은 %{instance}의 소방호스입니다. 여기 있는 사람들은 당신의 이웃들이에요! - tip_mobile_webapp: 모바일 브라우저가 홈 스크린에 바로가기를 추가해 줬다면 푸시 알림도 받을 수 있습니다. 이건 거의 네이티브 앱처럼 작동해요! - tips: 팁 title: 환영합니다 %{name} 님! users: follow_limit_reached: 당신은 %{limit}명의 사람을 넘어서 팔로우 할 수 없습니다 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 289badfada..5fae607ac7 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -3,38 +3,25 @@ ku: about: about_mastodon_html: 'Tora civakî ya pêşerojê: Ne reklam, ne çavdêriya pargîdanî, sêwirana exlaqî, û desentralîzasyon! Bi Mastodon re bibe xwediyê daneyên xwe!' about_this: Derbar - active_count_after: çalak - active_footnote: Mehane bikarhênerên çalak (MBÇ) administered_by: 'Tê bi rêvebirin ji aliyê:' api: API apps: Sepana mobîl - apps_platforms: Mastodon ji iOS, Android û platformên din bi kar bîne - browse_public_posts: Weşaneke zindî ya şandiyên giştî bigere li ser Mastodon contact: Têkilî contact_missing: Nehate sazkirin contact_unavailable: N/A - continue_to_web: Bo malpera sepanê bidomîne documentation: Pelbend - federation_hint_html: Bi ajimêrê xwe %{instance} re tu dikarî kesên ji her kîjan rajekarê mastodonê bişopînî. - get_apps: Sepaneke mobîl bicerbîne hosted_on: Mastodon li ser %{domain} tê pêşkêşkirin instance_actor_flash: 'Ev ajimêr şanogereke aşopî ye ji bo rajekar were naskirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca giştî dixebite û divê neye astengkirin heya ku te xwest hemû mînakan asteng bikî, di vir de ku tu navpereke astengiyê bi kar bînî. ' - learn_more: Bêtir fêr bibe - logged_in_as_html: Tu niha wekî %{username} têketî ye. - logout_before_registering: Jixwe te berê têketin kiriye. privacy_policy: Politîka taybetiyê rules: Rêbazên rajekar rules_html: 'Heger tu bixwazî ajimêrekî li ser rajekarê mastodon vebikî, li jêrê de kurtasî ya qaîdeyên ku tu guh bidî heye:' - see_whats_happening: Binêre ka çi diqewime - server_stats: 'Statîstîkên rajekar:' source_code: Çavkaniya Kodî status_count_after: one: şandî other: şandî status_count_before: Hatin weşan - tagline: Tora civakî ya nenavendî unavailable_content: Rajekarên li hev kirî unavailable_content_description: domain: Rajekar @@ -769,9 +756,6 @@ ku: closed_message: desc_html: Gava ku tomarkirin têne girtin li ser rûpelê pêşîn têne xuyang kirin. Tu dikarî nîşanên HTML-ê bi kar bîne title: Tomarkirinê girtî ya peyaman - deletion: - desc_html: Maf bide ku herkes bikaribe ajimêrê te jê bibe - title: Jê birina ajimêrê vekek require_invite_text: desc_html: Gava ku tomarkirin pêdiviya pejirandina destan dike, Têketina nivîsê "Tu çima dixwazî beşdar bibî?" Bibe sereke ji devla vebijêrkî be title: Ji bo bikarhênerên nû divê ku sedemek tevlêbûnê binivîsinin @@ -1003,10 +987,8 @@ ku: warning: Bi van daneyan re pir baldar be. Tu caran bi kesî re parve neke! your_token: Nîşana gihîştina te auth: - apply_for_account: Daxwaza vexwendinekê bike + apply_for_account: Li ser lîsteya bendemayînê bistîne change_password: Borînpeyv - checkbox_agreement_html: Ez rêbazên rajeker û hêmanên karûbaran dipejirînim - checkbox_agreement_without_rules_html: Ez hêmanên karûbaran rêbazên rajeker dipejirînim delete_account: Ajimêr jê bibe delete_account_html: Heke tu dixwazî ajimêra xwe jê bibe, tu dikarî li vir bidomîne. Ji te tê xwestin ku were pejirandin. description: @@ -1025,6 +1007,7 @@ ku: migrate_account: Derbasî ajimêreke din bibe migrate_account_html: Heke tu dixwazî ev ajimêr li ajimêreke cuda beralî bikî, tu dikarî ji vir de saz bike. or_log_in_with: An têketinê bike bi riya + privacy_policy_agreement_html: Min Politîka taybetiyê xwend û dipejirînim providers: cas: CAS saml: SAML @@ -1032,12 +1015,18 @@ ku: registration_closed: "%{instance} endamên nû napejirîne" resend_confirmation: Rêwerên pejirandinê ji nû ve bişîne reset_password: Borînpeyvê ji nû ve saz bike + rules: + preamble: Ev rêzik ji aliyê çavdêrên %{domain} ve tên sazkirin. + title: Hinek rêzikên bingehîn. security: Ewlehî set_new_password: Borînpeyveke nû ji nû ve saz bike setup: email_below_hint_html: Heke navnîşana e-nameya jêrîn ne rast be, tu dikarî wê li vir biguherîne û e-nameyeke pejirandinê ya nû bistîne. email_settings_hint_html: E-nameya pejirandinê ji %{email} re hate şandin. Heke ew navnîşana e-nameyê ne rast be, tu dikarî wê di sazkariyên ajimêr de biguherîne. title: Damezirandin + sign_up: + preamble: Bi ajimêrekê li ser vê rajekarê Mastodon re, tu yê karîbî her keseke din li ser torê bişopînî, her ku ajimêrê wan li ku derê tê pêşkêşkirin. + title: Ka em te bi rê bixin li ser %{domain}. status: account_status: Rewşa ajimêr confirming: Li benda pejirandina e-nameyê ne da ku biqede. @@ -1046,7 +1035,6 @@ ku: redirecting_to: Ajimêra te neçalak e ji ber ku niha ber bi %{acct} ve tê beralîkirin. view_strikes: Binpêkirinên berê yên dijî ajimêrê xwe bibîne too_fast: Form pir zû hat şandin, dîsa biceribîne. - trouble_logging_in: Têketina te de pirsgirêk çêdibe? use_security_key: Kilîteke ewlehiyê bi kar bîne authorize_follow: already_following: Jixwe tu vê ajimêrê dişopînî @@ -1627,89 +1615,6 @@ ku: too_late: Pir dereng e ji bo îtîrazê li ser vê binpêkirinê tags: does_not_match_previous_name: bi navê berê re li hev nayê - terms: - body_html: | -

Politîka taybetiyê

-

Em çi zanyarî kom dikin?

- -
    -
  • Zanyariyên asayî: Ku tu xwe li ser vê rajekarê tomar bikî, Wê ji te xwestin ku e-name û borînpeyvekê têxî. Her wiha dibe ku tu zanyariyên vebijêrkî têxî wekî zanyariyên profîlê profile mînak: Navê xuyangê û jiyanname, wêneya profîlê û wêneya jormalperê bar bikî. Navê bikarhêneriyê, navê xuyangê, jiyanname, wêneya profîlê û wêneya jormalperêher dem bi giştî tên nîşandan.
  • -
  • Şandî, şopandin û zanyariyên giştî yên din: Kesên ku tu wan dişopînî bi giştî tê nîşandan, heman tişt bo şopîneran e. Dema tu peyamekê dişînî, dane û dem tên tomarkirin wekî sepanê. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
  • -
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
  • -
- -
- -

What do we use your information for?

- -

Any of the information we collect from you may be used in the following ways:

- -
    -
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • -
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • -
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
  • -
- -
- -

How do we protect your information?

- -

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

- -
- -

What is our data retention policy?

- -

We will make a good faith effort to:

- -
    -
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • -
  • Retain the IP addresses associated with registered users no more than 12 months.
  • -
- -

You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

- -

You may irreversibly delete your account at any time.

- -
- -

Do we use cookies?

- -

Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

- -

We use cookies to understand and save your preferences for future visits.

- -
- -

Do we disclose any information to outside parties?

- -

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

- -

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

- -

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

- -
- -

Site usage by children

- -

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

- -

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

- -

Law requirements can be different if this server is in another jurisdiction.

- -
- -

Changes to our Privacy Policy

- -

If we decide to change our privacy policy, we will post those changes on this page.

- -

This document is CC-BY-SA. It was last updated May 26, 2022.

- -

Originally adapted from the Discourse privacy policy.

- title: Politîka taybetiyê ya %{instance} themes: contrast: Mastodon (Dijberiya bilind) default: Mastodon (Tarî) @@ -1788,20 +1693,13 @@ ku: suspend: Ajimêr hatiye rawestandin welcome: edit_profile_action: Profîlê saz bike - edit_profile_step: Tu dikarî profîla xwe bi barkirina wêne, sernav, guherandina navê xuyangê xwe û bêhtir ve xweş bikî. Heke tu dixwazî şagirtên nû binirxînî berî ku mafê bidî ku ew te bişopînê, tu dikarî ajimêra xwe kilît bike. + edit_profile_step: Tu dikarî bi barkirina wêneyek profîlê, guhertina navê xwe ya xuyangê û bêtir profîla xwe kesane bikî. Berî ku mafê bidî ku te şopînerên nû te bişopînin, tu dikarî binirxînî. explanation: Li vir çend serişte hene ku tu dest pê bike final_action: Dest bi weşandinê bike final_step: 'Dest bi weşandinê bike! Bêyî şopîneran jî dibe ku şandiyên te yên gelemperî ji hêla kesên din ve werin dîtin, mînakî li ser demjimêra herêmî û di hashtagan de. Dibe ku tu bixwazî xwe li ser hashtagê #nasname bidî nasandin.' full_handle: Hemî destikê te full_handle_hint: Ji hevalên xwe re, ji bona ji rajekarekê din peyam bişîne an jî ji bona ku te bikaribe bişopîne tişta ku tu bibêjî ev e. - review_preferences_action: Bijartinan biguherîne - review_preferences_step: Pê bawer be ku vebijêrkên xwe saz bikî, wek mînak kîjan e-nameyên ku tu dixwaziî wergirîne, an tu dixwazî weşanên te ji kîjan astê nehêniyê de kesanekirî bin. Heke nexweşiya te ya tevgerê tune be, tu dikarî hilbijêrî ku GIF ya xweser çalak bibe. subject: Tu bi xêr hatî Mastodon - tip_federated_timeline: Demnameya giştî dimenêke gelemperî a Mastodon e. Lê tenê kesên ku ciranên te endamên wê ne dihewîne, ji ber vê yekê ew hemû nîne. - tip_following: Tu rêvebir (ên) rajeker wek berdest dişopînî. Ji bo mirovên balkêştir bibînî, demnameya herêmî û giştî kontrol bike. - tip_local_timeline: Demnameya herêmî, dimenêke bi giştî ye li ser %{instance} e. Ev ciranên te yên herî nêzik in! - tip_mobile_webapp: Ger geroka te ya desta pêşkêşî te bike ku tu Mastodon li ser ekrana xwe ya malê lê zêde bikî, tu dikarî agahdariyên push bistînî. Ew bi gelek awayan mîna serîlêdanek xwemalî tevdigere! - tips: Serbend title: Bi xêr hatî, %{name}! users: follow_limit_reached: Tu nikarî zêdetirî %{limit} kesan bişopînî diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 5449a37844..8148b65393 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -9,7 +9,6 @@ lt: contact_missing: Nenustatyta documentation: Dokumentacija hosted_on: Mastodon palaikomas naudojantis %{domain} talpinimu - learn_more: Daugiau source_code: Šaltinio kodas status_count_before: Autorius user_count_before: Namai @@ -281,9 +280,6 @@ lt: closed_message: desc_html: Rodoma pagrindiniame puslapyje, kuomet registracijos uždarytos. Jūs galite naudoti HTML title: Uždarytos registracijos žinutė - deletion: - desc_html: Leisti visiems ištrinti savo paskyrą - title: Atidaryti paskyros trynimą site_description: desc_html: Introdukcinis paragrafas pagrindiniame puslapyje. Apibūdink, kas padaro šį Mastodon serverį išskirtiniu ir visa kita, kas svarbu. Nebijok naudoti HTML žymes, pavyzdžiui < a > bei <em>. title: Serverio apibūdinimas @@ -610,20 +606,11 @@ lt: suspend: Paskyra užrakinta welcome: edit_profile_action: Nustatyti profilį - edit_profile_step: Jūs galite keisti savo profilį įkeldami profilio nuotrauką, antraštę, pakeičiant savo rodomą vardą ir dar daugiau. Jeigu norėtumete peržiurėti naujus sekėjus prieš leidžiant jiems jus sekti, galite užrakinti savo paskyrą. explanation: Štai keletas patarimų Jums final_action: Pradėti kelti įrašus - final_step: 'Pradėk kelti įrašus! Net jeigu neturi sekėjų, Jūsų viešos žinutės gali būti matomos kitų, pavyzdžiui, lokalioje laiko juostoje ir saitažodžiuose. Galite norėti prisistatyti naudojan saitąžodį #introductions.' full_handle: Jūsų pilnas slapyvardis full_handle_hint: Štai ką jūs sakytumėte savo draugams, kad jie galėtų jums siųsti žinutes arba just sekti iš kitų serverių. - review_preferences_action: Pakeisti pasirinkimus - review_preferences_step: Nustatykite savo pasirinkimus, tokius kaip el pašto laiškai, kuriuos norėtumėte gauti, arba kokiu privatumo lygiu norėtumėte, kad jūsų įrašai būtų talpinami, taip pat galite įjungti automatinį GIF paleidimą. subject: Sveiki atvykę į Mastodon - tip_federated_timeline: Federuota laiko juosta yra lyg gaisrininkų žarną rodanti Mastodon tinklą. Tačiau, joje rodomi tik žmonės kurie yra sekami Jūsų kaimynų. - tip_following: Jūs sekate savo serverio administratorius numatyta tvarka. Norint rasti įdomesnių žmonių, patikrinkite lokalią bei federuotą laiko juostas. - tip_local_timeline: Lokali laiko juosta, joje rodomi žmonės iš %{instance}. Jie yra Jūsų artimiausi kaimynai! - tip_mobile_webapp: Jeigu Jūsų mobilioji naršyklė leidžia jums pridėti Mastodon prie namų ekrano, jūs galite gauti priminimus. Tai gali veikti kaip vietinė aplikacija! - tips: Patarimai title: Sveiki atvykę, %{name}! users: follow_limit_reached: Negalite sekti daugiau nei %{limit} žmonių diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 8bb18fa8c2..33a4c6290f 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -3,39 +3,26 @@ lv: about: about_mastodon_html: 'Nākotnes sociālais tīkls: bez reklāmām, bez korporatīvās uzraudzības, ētisks dizains un decentralizācija! Pārvaldi savus datus ar Mastodon!' about_this: Par - active_count_after: aktīvs - active_footnote: Ikmēneša aktīvie lietotāji (IAL) administered_by: 'Administrē:' api: API apps: Mobilās lietotnes - apps_platforms: Lieto Mastodon iOS, Android un citās platformās - browse_public_posts: Pārlūko publisko ziņu straumi no Mastodon contact: Kontakts contact_missing: Nav uzstādīts contact_unavailable: N/A - continue_to_web: Pārej uz tīmekļa lietotni documentation: Dokumentācija - federation_hint_html: Izmantojot kontu vietnē %{instance}, varēsi sekot cilvēkiem jebkurā Mastodon serverī un ārpus tā. - get_apps: Izmēģini mobilo lietotni hosted_on: Mastodon mitināts %{domain} instance_actor_flash: | Šis konts ir virtuāls aktieris, ko izmanto, lai pārstāvētu pašu serveri, nevis atsevišķu lietotāju. To izmanto apvienošanas nolūkos, un to nedrīkst bloķēt, ja vien nevēlies bloķēt visu instanci, un tādā gadījumā tev jāizmanto domēna bloķēšana. - learn_more: Uzzināt vairāk - logged_in_as_html: Tu pašlaik esi pieteicies kā %{username}. - logout_before_registering: Tu jau esi pieteicies. privacy_policy: Privātuma Politika rules: Servera noteikumi rules_html: 'Tālāk ir sniegts noteikumu kopsavilkums, kas jāievēro, ja vēlies izveidot kontu šajā Mastodon serverī:' - see_whats_happening: Redzēt, kas notiek - server_stats: 'Servera statistika:' source_code: Pirmkods status_count_after: one: ziņa other: ziņas zero: nav status_count_before: Kurš publicējis - tagline: Decentralizēts sociālais tīkls unavailable_content: Moderētie serveri unavailable_content_description: domain: Serveris @@ -783,9 +770,6 @@ lv: closed_message: desc_html: Tiek parādīts sākumlapā, kad reģistrācija ir slēgta. Tu vari izmantot HTML tagus title: Paziņojums par slēgtu reģistrāciju - deletion: - desc_html: Atļaut ikvienam dzēst savu kontu - title: Atvērt konta dzēšanu require_invite_text: desc_html: 'Ja reģistrācijai nepieciešama manuāla apstiprināšana, izdari, lai teksta: “Kāpēc vēlaties pievienoties?” ievade ir obligāta, nevis neobligāts' title: Pieprasīt jauniem lietotājiem ievadīt pievienošanās iemeslu @@ -1021,10 +1005,8 @@ lv: warning: Esi ļoti uzmanīgs ar šiem datiem. Nekad nedalies ne ar vienu ar tiem! your_token: Tavs piekļuves marķieris auth: - apply_for_account: Pieprasīt ielūgumu + apply_for_account: Iekļūt gaidīšanas sarakstā change_password: Parole - checkbox_agreement_html: Es piekrītu servera noteikumiem un pakalpojuma sniegšanas noteikumiem - checkbox_agreement_without_rules_html: Es piekrītu pakalpojuma sniegšanas noteikumiem delete_account: Dzēst kontu delete_account_html: Ja vēlies dzēst savu kontu, tu vari turpināt šeit. Tev tiks lūgts apstiprinājums. description: @@ -1043,6 +1025,7 @@ lv: migrate_account: Pāriešana uz citu kontu migrate_account_html: Ja vēlies novirzīt šo kontu uz citu, tu vari to konfigurēt šeit. or_log_in_with: Vai piesakies ar + privacy_policy_agreement_html: Esmu izlasījis un piekrītu privātuma politikai providers: cas: CAS saml: SAML @@ -1050,12 +1033,18 @@ lv: registration_closed: "%{instance} nepieņem jaunus dalībniekus" resend_confirmation: Atkārtoti nosūtīt apstiprinājuma norādījumus reset_password: Atiestatīt paroli + rules: + preamble: Tos iestata un ievieš %{domain} moderatori. + title: Daži pamatnoteikumi. security: Drošība set_new_password: Iestatīt jaunu paroli setup: email_below_hint_html: Ja zemāk norādītā e-pasta adrese ir nepareiza, vari to nomainīt šeit un saņemt jaunu apstiprinājuma e-pastu. email_settings_hint_html: Apstiprinājuma e-pasts tika nosūtīts uz %{email}. Ja šī e-pasta adrese nav pareiza, vari to nomainīt konta iestatījumos. title: Iestatīt + sign_up: + preamble: Izmantojot kontu šajā Mastodon serverī, tu varēsi sekot jebkurai citai personai tīklā neatkarīgi no tā, kur tiek mitināts viņas konts. + title: Atļauj tevi iestatīt %{domain}. status: account_status: Konta statuss confirming: Gaida e-pasta apstiprinājuma pabeigšanu. @@ -1064,7 +1053,6 @@ lv: redirecting_to: Tavs konts ir neaktīvs, jo pašlaik tas tiek novirzīts uz %{acct}. view_strikes: Skati iepriekšējos brīdinājumus par savu kontu too_fast: Veidlapa ir iesniegta pārāk ātri, mēģini vēlreiz. - trouble_logging_in: Problēma ar pieteikšanos? use_security_key: Lietot drošības atslēgu authorize_follow: already_following: Tu jau seko šim kontam @@ -1659,89 +1647,6 @@ lv: too_late: Brīdinājuma apstrīdēšanas laiks ir nokavēts tags: does_not_match_previous_name: nesakrīt ar iepriekšējo nosaukumu - terms: - body_html: | -

Konfidencialitātes politika

-

Kādu informāciju mēs apkopojam?

- -
    -
  • Konta pamatinformācija: ja reģistrējaties šajā serverī, iespējams, jums tiks lūgts ievadīt lietotājvārdu, e-pasta adresi un paroli. Varat arī ievadīt papildu profila informāciju, piemēram, parādāmo vārdu un biogrāfiju, kā arī augšupielādēt profila attēlu un galvenes attēlu. Lietotājvārds, parādāmais vārds, biogrāfija, profila attēls un galvenes attēls vienmēr ir publiski norādīti.
  • -
  • Ziņas, sekošana un cita publiska informācija: to personu saraksts, kurām sekojat, ir publiski pieejams, tas pats attiecas uz jūsu sekotājiem. Iesniedzot ziņojumu, tiek saglabāts datums un laiks, kā arī pieteikums, no kura iesniedzāt ziņojumu. Ziņojumos var būt multivides pielikumi, piemēram, attēli un video. Publiskās un nerindotās ziņas ir pieejamas publiski. Ja savā profilā ievietojat ziņu, tā ir arī publiski pieejama informācija. Jūsu ziņas tiek piegādātas jūsu sekotājiem, dažos gadījumos tas nozīmē, ka tās tiek piegādātas uz dažādiem serveriem un tur tiek glabātas kopijas. Dzēšot ziņas, tas tāpat tiek piegādāts jūsu sekotājiem. Atkārtota emuāra pievienošana vai citas ziņas pievienošana izlasei vienmēr ir publiska.
  • -
  • Tiešas un tikai sekotāju ziņas: visas ziņas tiek glabātas un apstrādātas serverī. Tikai sekotājiem paredzētās ziņas tiek piegādātas jūsu sekotājiem un tajos minētajiem lietotājiem, un tiešās ziņas tiek piegādātas tikai tajos minētajiem lietotājiem. Dažos gadījumos tas nozīmē, ka tie tiek piegādāti uz dažādiem serveriem un tur tiek saglabātas kopijas. Mēs godprātīgi cenšamies ierobežot piekļuvi šīm ziņām tikai pilnvarotām personām, taču citiem serveriem tas var neizdoties. Tāpēc ir svarīgi pārskatīt serverus, kuriem pieder jūsu sekotāji. Iestatījumos varat manuāli pārslēgt iespēju apstiprināt un noraidīt jaunus sekotājus. Lūdzu, ņemiet vērā, ka servera operatori un jebkura saņēmēja servera operatori var skatīt šādus ziņojumus un ka adresāti var tos ekrānuzņēmumus, kopēt vai citādi atkārtoti kopīgot. Nekopīgojiet sensitīvu informāciju pakalpojumā Mastodon.
  • -
  • IP un citi metadati: kad jūs piesakāties, mēs ierakstām IP adresi, no kuras piesakāties, kā arī jūsu pārlūkprogrammas lietojumprogrammas nosaukumu. Visas reģistrētās sesijas iestatījumos ir pieejamas pārskatīšanai un atsaukšanai. Pēdējā izmantotā IP adrese tiek glabāta līdz 12 mēnešiem. Mēs varam arī saglabāt servera žurnālus, kuros ir iekļauta katra mūsu serverim nosūtītā pieprasījuma IP adrese.
  • -
- -
- -

Kam mēs izmantojam jūsu informāciju?

- -

Jebkuru informāciju, ko mēs apkopojam no jums, var izmantot šādos veidos:

- -
    -
  • Lai nodrošinātu Mastodon pamatfunkcionalitāti. Jūs varat mijiedarboties ar citu cilvēku saturu un izlikt savu saturu tikai tad, kad esat pieteicies. Piemēram, varat sekot citām personām, lai skatītu viņu apvienotās ziņas savā personalizētajā mājas laika skalā.
  • -
  • Lai palīdzētu regulēt kopienu, piemēram, salīdzinot jūsu IP adresi ar citām zināmām, lai noteiktu izvairīšanos no aizlieguma vai citus pārkāpumus.
  • -
  • Jūsu norādītā e-pasta adrese var tikt izmantota, lai nosūtītu jums informāciju, paziņojumus par citām personām, kas mijiedarbojas ar jūsu saturu vai sūta jums ziņojumus, kā arī atbildētu uz jautājumiem un/vai citiem pieprasījumiem vai jautājumiem.
  • -
- -
- -

Kā mēs aizsargājam jūsu informāciju?

- -

Mēs ieviešam dažādus drošības pasākumus, lai saglabātu jūsu personiskās informācijas drošību, kad ievadāt, iesniedzat vai piekļūstat savai personas informācijai. Cita starpā jūsu pārlūkprogrammas sesija, kā arī datplūsma starp jūsu lietojumprogrammām un API ir aizsargāta ar SSL, un jūsu parole tiek sajaukta, izmantojot spēcīgu vienvirziena algoritmu. Varat iespējot divu faktoru autentifikāciju, lai vēl vairāk aizsargātu piekļuvi savam kontam.

- -
- -

Kāda ir mūsu datu saglabāšanas politika?

- -

Mēs godprātīgi centīsimies:

- -
    -
  • Saglabājiet servera žurnālus, kuros ir visu šim serverim nosūtīto pieprasījumu IP adrese, ciktāl šādi žurnāli tiek glabāti, ne ilgāk kā 90 dienas.
  • -
  • Saglabājiet ar reģistrētajiem lietotājiem saistītās IP adreses ne ilgāk kā 12 mēnešus.
  • -
- -

Varat pieprasīt un lejupielādēt sava satura arhīvu, tostarp ziņas, multivides pielikumus, profila attēlu un galvenes attēlu.

- -

Jūs jebkurā laikā varat neatgriezeniski dzēst savu kontu.

- -
- -

Vai mēs izmantojam sīkfailus?

- -

Jā. Sīkfaili ir nelieli faili, ko vietne vai tās pakalpojumu sniedzējs pārsūta uz jūsu datora cieto disku, izmantojot jūsu tīmekļa pārlūkprogrammu (ja atļaujat). Šīs sīkdatnes ļauj vietnei atpazīt jūsu pārlūkprogrammu un, ja jums ir reģistrēts konts, saistīt to ar jūsu reģistrēto kontu.

- -

Mēs izmantojam sīkfailus, lai saprastu un saglabātu jūsu uztādījumus turpmākiem apmeklējumiem.

- -
- -

Vai mēs izpaužam kādu informāciju ārējām pusēm?

- -

Mēs nepārdodam, netirgojam vai citādi nesniedzam trešajām pusēm jūsu personu identificējošo informāciju. Tas neietver uzticamas trešās puses, kas palīdz mums darboties mūsu vietnē, veikt mūsu uzņēmējdarbību vai apkalpot jūs, ja vien šīs puses piekrīt saglabāt šīs informācijas konfidencialitāti. Mēs varam arī izpaust jūsu informāciju, ja uzskatām, ka tā ir piemērota, lai ievērotu likumus, īstenotu mūsu vietnes politikas vai aizsargātu mūsu vai citu tiesības, īpašumu vai drošību.

- -

Jūsu publisko saturu var lejupielādēt citi tīkla serveri. Jūsu publiskās un tikai sekotājiem paredzētās ziņas tiek piegādātas serveros, kur atrodas jūsu sekotāji, un tiešie ziņojumi tiek piegādāti adresātu serveriem, ja šie sekotāji vai adresāti atrodas citā serverī, nevis šajā.

- -

Kad jūs pilnvarojat lietojumprogrammu izmantot jūsu kontu, atkarībā no jūsu apstiprināto atļauju apjoma, tā var piekļūt jūsu publiskā profila informācijai, jūsu sekojošajam sarakstam, jūsu sekotājiem, jūsu sarakstiem, visām jūsu ziņām un jūsu izlasei. Lietojumprogrammas nekad nevar piekļūt jūsu e-pasta adresei vai parolei.

- -
- -

Vietnes lietojums bērniem

- -

Ja šis serveris atrodas ES vai EEZ: mūsu vietne, produkti un pakalpojumi ir paredzēti personām, kuras ir vismaz 16 gadus vecas. Ja esat jaunāks par 16 gadiem, neizmantojiet šo vietni atbilstoši GDPR (Vispārīgās datu aizsardzības regulas) prasībām..

- -

Ja šis serveris atrodas ASV: mūsu vietne, produkti un pakalpojumi ir paredzēti personām, kuras ir vismaz 13 gadus vecas. Ja esat jaunāks par 13 gadiem, saskaņā ar COPPA (Children's Online Privacy Protection Act) prasībām neizmantojiet šajā vietnē.

- -

Tiesību prasības var atšķirties, ja šis serveris atrodas citā jurisdikcijā.

- -
- -

Izmaiņas mūsu konfidencialitātes politikā

- -

Ja mēs nolemsim mainīt savu konfidencialitātes politiku, mēs publicēsim šīs izmaiņas šajā lapā.

- -

Šis dokuments ir CC-BY-SA. Pēdējo reizi tas tika atjaunināts 2022. gada 26. maijā.

- -

Sākotnēji adaptēts no Discourse konfidencialitātes politikas.

- title: "%{instance} Privātuma Politika" themes: contrast: Mastodon (Augsts kontrasts) default: Mastodon (Tumšs) @@ -1820,20 +1725,13 @@ lv: suspend: Konts apturēts welcome: edit_profile_action: Iestatīt profilu - edit_profile_step: Vari pielāgot savu profilu, augšupielādējot avataru, galveni, mainot parādāmo vārdu un daudz ko citu. Ja vēlies pārskatīt jaunus sekotājus, pirms viņiem ir atļauts tev sekot, tu vari bloķēt savu kontu. + edit_profile_step: Tu vari pielāgot savu profilu, augšupielādējot profila attēlu, mainot parādāmo vārdu un citas lietas. Vari izvēlēties pārskatīt jaunus sekotājus, pirms atļauj viņiem tev sekot. explanation: Šeit ir daži padomi, kā sākt darbu final_action: Sāc publicēt - final_step: 'Sāc publicēt! Pat bez sekotājiem tavas publiskās ziņas var redzēt citi, piemēram, vietējā ziņu lentā un atsaucēs. Iespējams, tu vēlēsies iepazīstināt ar sevi, izmantojot tēmturi #introductions.' + final_step: 'Sāc publicēt! Pat bez sekotājiem tavas publiskās ziņas var redzēt citi, piemēram, vietējā ziņu lentā vai atsaucēs. Iespējams, tu vēlēsies iepazīstināt ar sevi, izmantojot tēmturi #introductions.' full_handle: Tavs pilnais rokturis full_handle_hint: Šis ir tas, ko tu pasaki saviem draugiem, lai viņi varētu tev ziņot vai sekot tev no cita servera. - review_preferences_action: Mainīt uztādījumus - review_preferences_step: Noteikti iestati savas uztādījumus, piemēram, kādus e-pasta ziņojumus vēlies saņemt vai kādu konfidencialitātes līmeni vēlies iestatīt savām ziņām pēc noklusējuma. Ja tev nav kustību slimības, vari izvēlēties iespējot GIF automātisko atskaņošanu. subject: Laipni lūgts Mastodon - tip_federated_timeline: Apvienotā ziņu lenta ir skats caur ugunsdzēsības šļūteni uz Mastodon tīklu. Bet tajā ir iekļauti tikai tie cilvēki, kurus abonē tavi kaimiņi, tāpēc tas nav pilnīgs. - tip_following: Pēc noklusējuma tu seko sava servera administratoram(-iem). Lai atrastu vairāk interesantu cilvēku, pārbaudi vietējās un federālās ziņu lentas. - tip_local_timeline: Vietējā ziņu lenta ir skats caur ugunsdzēsības šļūteni uz %{instance}. Tie ir tavi tuvākie kaimiņi! - tip_mobile_webapp: Ja tava mobilā pārlūkprogramma piedāvā pievienot Mastodon sākuma ekrānam, vari saņemt push paziņojumus. Daudzējādi tā darbojas kā vietējā lietotne! - tips: Padomi title: Laipni lūgts uz borta, %{name}! users: follow_limit_reached: Tu nevari sekot vairāk par %{limit} cilvēkiem diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 26ef7f6ea4..2ec8f0889c 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -8,9 +8,6 @@ ml: contact_missing: സജ്ജമാക്കിയിട്ടില്ല contact_unavailable: ലഭ്യമല്ല documentation: വിവരണം - get_apps: മൊബൈൽ ആപ്പ് പരീക്ഷിക്കുക - learn_more: കൂടുതൽ പഠിക്കുക - see_whats_happening: എന്തൊക്കെ സംഭവിക്കുന്നു എന്ന് കാണുക source_code: സോഴ്സ് കോഡ് status_count_before: ആരാൽ എഴുതപ്പെട്ടു unavailable_content: ലഭ്യമല്ലാത്ത ഉള്ളടക്കം diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 6563f35f15..3bc0ed68ba 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -3,28 +3,19 @@ ms: about: about_mastodon_html: 'Rangkaian sosial masa hadapan: Tiada iklan, tiada pengawasan korporat, reka bentuk beretika, dan desentralisasi! Miliki data anda dengan Mastodon!' about_this: Perihal - active_count_after: aktif - active_footnote: Pengguna Aktif Bulanan (MAU) administered_by: 'Ditadbir oleh:' api: API apps: Aplikasi mudah alih - apps_platforms: Guna Mastodon daripada iOS, Android dan platform yang lain - browse_public_posts: Layari strim langsung hantaran awam di Mastodon contact: Hubungi kami contact_missing: Tidak ditetapkan contact_unavailable: Tidak tersedia documentation: Pendokumenan - federation_hint_html: Dengan akaun di %{instance} anda akan mampu mengikuti orang di mana-mana pelayan Mastodon dan lebih lagi. - get_apps: Cuba aplikasi mudah alih hosted_on: Mastodon dihoskan di %{domain} instance_actor_flash: | Akaun ini ialah pelaku maya yang digunakan untuk mewakili pelayan itu sendiri dan bukannya mana-mana pengguna individu. Ia digunakan untuk tujuan persekutuan dan tidak patut disekat melainkan anda ingin menyekat keseluruhan tika, yang mana anda sepatutnya gunakan sekatan domain. - learn_more: Ketahui lebih lanjut rules: Peraturan pelayan rules_html: 'Di bawah ini ringkasan peraturan yang anda perlu ikuti jika anda ingin mempunyai akaun di pelayan Mastodon yang ini:' - see_whats_happening: Lihat apa yang sedang berlaku - server_stats: 'Statistik pelayan:' source_code: Kod sumber status_count_after: other: hantaran @@ -509,9 +500,6 @@ ms: closed_message: desc_html: Dipaparkan di muka depan apabil pendaftaran ditutup. Anda boleh menggunakan penanda HTML title: Mesej pendaftaran telah ditutup - deletion: - desc_html: Benarkan sesiapapun memadamkan akaun mereka - title: Buka pemadaman akaun require_invite_text: desc_html: Apabila pendaftaran memerlukan kelulusan manual, tandakan input teks "Kenapa anda mahu menyertai?" sebagai wajib, bukan pilihan title: Memerlukan alasan bagi pengguna baru untuk menyertai diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 0dbb868fbc..fbfbdbcba2 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -3,36 +3,23 @@ nl: about: about_mastodon_html: Mastodon is een sociaal netwerk dat gebruikt maakt van open webprotocollen en vrije software. Het is net zoals e-mail gedecentraliseerd. about_this: Over deze server - active_count_after: actief - active_footnote: Actieve gebruikers per maand (MAU) administered_by: 'Beheerd door:' api: API apps: Mobiele apps - apps_platforms: Gebruik Mastodon op iOS, Android en op andere platformen - browse_public_posts: Livestream van openbare Mastodonberichten bekijken contact: Contact contact_missing: Niet ingesteld contact_unavailable: n.v.t - continue_to_web: Doorgaan in de web-app documentation: Documentatie - federation_hint_html: Met een account op %{instance} ben je in staat om mensen die zich op andere Mastodonservers (en op andere plekken) bevinden te volgen. - get_apps: Mobiele apps hosted_on: Mastodon op %{domain} instance_actor_flash: "Dit account is een virtuel actor dat wordt gebruikt om de server zelf te vertegenwoordigen en is geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden geblokkeerd, tenzij je de hele server wilt blokkeren. In zo'n geval dien je echter een domeinblokkade te gebruiken. \n" - learn_more: Meer leren - logged_in_as_html: Je bent momenteel ingelogd als %{username}. - logout_before_registering: Je bent al ingelogd. privacy_policy: Privacybeleid rules: Serverregels rules_html: 'Hieronder vind je een samenvatting van de regels die je op deze Mastodon-server moet opvolgen:' - see_whats_happening: Kijk wat er aan de hand is - server_stats: 'Serverstatistieken:' source_code: Broncode status_count_after: one: toot other: berichten status_count_before: Zij schreven - tagline: Decentraal sociaal netwerk unavailable_content: Gemodereerde servers unavailable_content_description: domain: Server @@ -687,9 +674,6 @@ nl: closed_message: desc_html: Wordt op de voorpagina weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld
En ook hier kan je HTML gebruiken title: Bericht wanneer registratie is uitgeschakeld - deletion: - desc_html: Toestaan dat iedereen diens eigen account kan verwijderen - title: Verwijderen account toestaan require_invite_text: desc_html: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd title: Nieuwe gebruikers moeten een reden invullen waarom ze zich willen registreren @@ -844,10 +828,7 @@ nl: warning: Wees voorzichtig met deze gegevens. Deel het nooit met iemand anders! your_token: Jouw toegangscode auth: - apply_for_account: Een uitnodiging aanvragen change_password: Wachtwoord - checkbox_agreement_html: Ik ga akkoord met de regels van deze server en de gebruiksvoorwaarden - checkbox_agreement_without_rules_html: Ik ga akkoord met de gebruiksvoorwaarden delete_account: Account verwijderen delete_account_html: Wanneer je jouw account graag wilt verwijderen, kun je dat hier doen. We vragen jou daar om een bevestiging. description: @@ -886,7 +867,6 @@ nl: pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd. redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}. too_fast: Formulier is te snel ingediend. Probeer het nogmaals. - trouble_logging_in: Problemen met inloggen? use_security_key: Beveiligingssleutel gebruiken authorize_follow: already_following: Je volgt dit account al @@ -1417,89 +1397,6 @@ nl: too_late: De periode dat je bezwaar kon maken is verstreken tags: does_not_match_previous_name: komt niet overeen met de vorige naam - terms: - body_html: | -

Privacy Policy

-

What information do we collect?

- -
    -
  • Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
  • -
  • Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
  • -
  • Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any sensitive information over Mastodon.
  • -
  • IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
  • -
- -
- -

What do we use your information for?

- -

Any of the information we collect from you may be used in the following ways:

- -
    -
  • To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
  • -
  • To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
  • -
  • The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
  • -
- -
- -

How do we protect your information?

- -

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

- -
- -

What is our data retention policy?

- -

We will make a good faith effort to:

- -
    -
  • Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
  • -
  • Retain the IP addresses associated with registered users no more than 12 months.
  • -
- -

You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.

- -

You may irreversibly delete your account at any time.

- -
- -

Do we use cookies?

- -

Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.

- -

We use cookies to understand and save your preferences for future visits.

- -
- -

Do we disclose any information to outside parties?

- -

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

- -

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

- -

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

- -
- -

Site usage by children

- -

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

- -

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

- -

Law requirements can be different if this server is in another jurisdiction.

- -
- -

Changes to our Privacy Policy

- -

If we decide to change our privacy policy, we will post those changes on this page.

- -

This document is CC-BY-SA. It was last updated May 26, 2022.

- -

Originally adapted from the Discourse privacy policy.

- title: Privacybeleid van %{instance} themes: contrast: Mastodon (hoog contrast) default: Mastodon (donker) @@ -1563,20 +1460,11 @@ nl: suspend: Account opgeschort welcome: edit_profile_action: Profiel instellen - edit_profile_step: Je kunt jouw profiel aanpassen door een avatar (profielfoto) en omslagfoto te uploaden, jouw weergavenaam in te stellen en iets over jezelf te vertellen. Wanneer je nieuwe volgers eerst wilt goedkeuren, kun je jouw account besloten maken. explanation: Hier zijn enkele tips om je op weg te helpen final_action: Begin berichten te plaatsen - final_step: 'Begin berichten te plaatsen! Zelfs zonder volgers kunnen jouw openbare berichten door anderen gezien worden, bijvoorbeeld op de lokale tijdlijn en via hashtags. Je wilt jezelf misschien introduceren met de hashtag #introductions.' full_handle: Jouw volledige Mastodonadres full_handle_hint: Dit geef je aan jouw vrienden, zodat ze jouw berichten kunnen sturen of (vanaf een andere Mastodonserver) kunnen volgen. - review_preferences_action: Instellingen veranderen - review_preferences_step: Zorg dat je jouw instellingen naloopt, zoals welke e-mails je wilt ontvangen of voor wie jouw berichten standaard zichtbaar moeten zijn. Wanneer je geen last hebt van bewegende beelden, kun je het afspelen van geanimeerde GIF's inschakelen. subject: Welkom op Mastodon - tip_federated_timeline: De globale tijdlijn toont berichten in het Mastodonnetwerk. Het bevat echter alleen berichten van mensen waar jouw buren mee zijn verbonden, dus het is niet compleet. - tip_following: Je volgt standaard de beheerder(s) van jouw Mastodonserver. Bekijk de lokale en de globale tijdlijnen om meer interessante mensen te vinden. - tip_local_timeline: De lokale tijdlijn toont berichten van mensen op %{instance}. Dit zijn jouw naaste buren! - tip_mobile_webapp: Wanneer jouw mobiele webbrowser Mastodon aan jouw startscherm wilt toevoegen, kun je pushmeldingen ontvangen. Het gedraagt zich op meerdere manieren als een native app! - tips: Tips title: Welkom aan boord %{name}! users: follow_limit_reached: Je kunt niet meer dan %{limit} accounts volgen diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 9536920c87..96296deb75 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -3,30 +3,19 @@ nn: about: about_mastodon_html: 'Framtidas sosiale nettverk: Ingen annonsar, ingen verksemder som overvaker deg, etisk design og desentralisering! Eig idéane dine med Mastodon!' about_this: Om oss - active_count_after: aktiv - active_footnote: Månadlege aktive brukarar (MAB) administered_by: 'Administrert av:' api: API apps: Mobilappar - apps_platforms: Bruk Mastodon på iOS, Android og andre plattformer - browse_public_posts: Sjå ei direktesending av offentlege innlegg på Mastodon contact: Kontakt contact_missing: Ikkje sett contact_unavailable: I/T documentation: Dokumentasjon - federation_hint_html: Med ein konto på %{instance} kan du fylgja folk på kva som helst slags Mastod-tenar og meir. - get_apps: Prøv ein mobilapp hosted_on: "%{domain} er vert for Mastodon" instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" - learn_more: Lær meir - logout_before_registering: Du er allereie logga inn. rules: Tenarreglar rules_html: 'Nedanfor er eit samandrag av reglar du må fylgje dersom du vil ha ein konto på denne Mastodontenaren:' - see_whats_happening: Sjå kva som skjer - server_stats: 'Tenarstatistikk:' source_code: Kjeldekode status_count_before: Som skreiv - tagline: Desentralisert sosialt nettverk unavailable_content: Utilgjengeleg innhald unavailable_content_description: domain: Sørvar @@ -517,9 +506,6 @@ nn: closed_message: desc_html: Vises på forsiden når registreringer er lukket
Du kan bruke HTML-tagger title: Melding for lukket registrering - deletion: - desc_html: Tillat alle å sletta kontoen sin - title: Åpne kontosletting require_invite_text: desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt title: Krev nye brukere for å oppgi en grunn for å delta @@ -615,10 +601,7 @@ nn: warning: Ver varsam med dette datumet. Aldri del det med nokon! your_token: Tilgangsnykelen din auth: - apply_for_account: Bed om innbyding change_password: Passord - checkbox_agreement_html: Eg godtek tenarreglane og tenestevilkåra - checkbox_agreement_without_rules_html: Eg godtek tenestevilkåra delete_account: Slett konto delete_account_html: Om du vil sletta kontoen din, kan du gå hit. Du vert spurd etter stadfesting. description: @@ -654,7 +637,6 @@ nn: confirming: Ventar på stadfesting av e-post. pending: Søknaden din ventar på gjennomgang frå personalet vårt. Dette kan taka litt tid. Du får ein e-post om søknaden din vert godkjend. redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}. - trouble_logging_in: Får du ikkje logga inn? use_security_key: Bruk sikkerhetsnøkkel authorize_follow: already_following: Du fylgjer allereie denne kontoen @@ -1129,20 +1111,11 @@ nn: suspend: Konto utvist welcome: edit_profile_action: Lag til profil - edit_profile_step: Du kan tilpasse din profil ved å laste opp en avatar, overskrift, endre ditt visningsnavn med mer. Hvis du vil godkjenne hvilke personer som får lov til å følge deg kan du låse kontoen. explanation: Her er nokre tips for å koma i gang final_action: Kom i gang med å leggja ut - final_step: 'Byrj å skriva innlegg! Sjølv utan fylgjarar kan andre sjå dei offentlege meldingane dine, til dømes på den lokale tidslina og i emneknaggar. Du har kanskje lyst til å introdusera deg med emneknaggen #introductions.' full_handle: Det fulle brukarnamnet ditt full_handle_hint: Dette er det du fortel venene dine for at dei skal kunna senda deg meldingar eller fylgja deg frå ein annan tenar. - review_preferences_action: Endr innstillingar - review_preferences_step: Husk å justere dine innstillinger, som hvilke e-poster du ønsker å motta, eller hvor private du ønsker at dine poster skal være som standard. Hvis du ikke har bevegelsessyke kan du skru på automatisk avspilling av GIF-animasjoner. subject: Velkomen til Mastodon - tip_federated_timeline: Den forente tidslinjen blir konstant matet med meldinger fra Mastodon-nettverket. Men den inkluderer bare personer dine naboer abbonerer på, så den er ikke komplett. - tip_following: Du fylgjer automatisk tenaradministrator(ane). For å finna fleire forvitnelege folk kan du sjekka den lokale og fødererte tidslina. - tip_local_timeline: Den lokale tidslinjen blir kontant matet med meldinger fra personer på %{instance}. Dette er dine nærmeste naboer! - tip_mobile_webapp: Hvis din mobile nettleser tilbyr deg å legge Mastadon til din hjemmeskjerm kan du motta push-varslinger. Det er nesten som en integrert app på mange måter! - tips: Tips title: Velkomen om bord, %{name}! users: follow_limit_reached: Du kan ikkje fylgja fleire enn %{limit} folk diff --git a/config/locales/no.yml b/config/locales/no.yml index 67ce4d1285..09d0d57044 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -3,26 +3,17 @@ about: about_mastodon_html: Mastodon er et sosialt nettverk laget med fri programvare. Et desentralisert alternativ til kommersielle plattformer. Slik kan det unngå risikoene ved å ha et enkelt selskap som monopoliserer din kommunikasjon. Velg en tjener du stoler på — uansett hvilken du velger så kan du kommunisere med alle andre. Alle kan kjøre sin egen Mastodon og delta sømløst i det sosiale nettverket. about_this: Om - active_count_after: aktive - active_footnote: Månedlige aktive brukere (MAU) administered_by: 'Administrert av:' api: API apps: Mobilapper - apps_platforms: Bruk Mastodon gjennom iOS, Android og andre plattformer - browse_public_posts: Bla i en sanntidsstrøm av offentlige innlegg på Mastodon contact: Kontakt contact_missing: Ikke innstilt contact_unavailable: Ikke tilgjengelig documentation: Dokumentasjon - federation_hint_html: Med en konto på %{instance} vil du kunne følge folk på enhver Mastodon-tjener, og mer til. - get_apps: Prøv en mobilapp hosted_on: Mastodon driftet på %{domain} instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" - learn_more: Lær mer rules: Server regler rules_html: 'Nedenfor er et sammendrag av reglene du må følge om du vil ha en konto på denne serveren av Mastodon:' - see_whats_happening: Se hva som skjer - server_stats: 'Tjenerstatistikker:' source_code: Kildekode status_count_after: one: innlegg @@ -510,9 +501,6 @@ closed_message: desc_html: Vises på forsiden når registreringer er lukket
Du kan bruke HTML-tagger title: Melding for lukket registrering - deletion: - desc_html: Tillat alle å slette sin konto - title: Åpne kontosletting require_invite_text: desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt title: Krev nye brukere for å oppgi en grunn for å delta @@ -603,10 +591,7 @@ warning: Vær veldig forsiktig med denne data. Aldri del den med noen! your_token: Din tilgangsnøkkel auth: - apply_for_account: Be om en invitasjon change_password: Passord - checkbox_agreement_html: Jeg godtar tjenerens regler og bruksvilkår - checkbox_agreement_without_rules_html: Jeg godtar bruksvilkårene delete_account: Slett konto delete_account_html: Hvis du ønsker å slette kontoen din, kan du gå hit. Du vil bli spurt om bekreftelse. description: @@ -642,7 +627,6 @@ confirming: Venter på at e-postbekreftelsen er fullført. pending: Søknaden din avventer gjennomgang av styret vårt. Dette kan ta litt tid. Du vil motta en E-post dersom søknaden din blir godkjent. redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}. - trouble_logging_in: Har du problemer med å logge på? use_security_key: Bruk sikkerhetsnøkkel authorize_follow: already_following: Du følger allerede denne kontoen @@ -1112,20 +1096,11 @@ suspend: Kontoen er suspendert welcome: edit_profile_action: Sett opp profil - edit_profile_step: Du kan tilpasse din profil ved å laste opp en avatar, overskrift, endre ditt visningsnavn med mer. Hvis du vil godkjenne hvilke personer som får lov til å følge deg kan du låse kontoen. explanation: Her er noen tips for å komme i gang final_action: Start postingen - final_step: 'Start å poste! Selv uten følgere kan dine offentlige meldinger bli sett av andre, for eksempel på den lokale tidslinjen og i emneknagger. Du kan introdusere deg selv ved å bruke emneknaggen #introductions.' full_handle: Ditt fullstendige brukernavn full_handle_hint: Dette er hva du forteller venner slik at de kan sende melding eller følge deg fra en annen instanse. - review_preferences_action: Endre innstillinger - review_preferences_step: Husk å justere dine innstillinger, som hvilke e-poster du ønsker å motta, eller hvor private du ønsker at dine poster skal være som standard. Hvis du ikke har bevegelsessyke kan du skru på automatisk avspilling av GIF-animasjoner. subject: Velkommen til Mastodon - tip_federated_timeline: Den forente tidslinjen blir konstant matet med meldinger fra Mastodon-nettverket. Men den inkluderer bare personer dine naboer abbonerer på, så den er ikke komplett. - tip_following: Du følger din tjeners administrator(er) som standard. For å finne mer interessante personer, sjekk den lokale og forente tidslinjen. - tip_local_timeline: Den lokale tidslinjen blir kontant matet med meldinger fra personer på %{instance}. Dette er dine nærmeste naboer! - tip_mobile_webapp: Hvis din mobile nettleser tilbyr deg å legge Mastadon til din hjemmeskjerm kan du motta push-varslinger. Det er nesten som en integrert app på mange måter! - tips: Tips title: Velkommen ombord, %{name}! users: follow_limit_reached: Du kan ikke følge mer enn %{limit} personer diff --git a/config/locales/oc.yml b/config/locales/oc.yml index f4d238223b..ef7f285ebb 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -3,24 +3,15 @@ oc: about: about_mastodon_html: Mastodon es un malhum social bastit amb de protocòls liures e gratuits. Es descentralizat coma los corrièls. about_this: A prepaus d’aquesta instància - active_count_after: actius - active_footnote: Utilizaire actius per mes (UAM) administered_by: 'Administrat per :' api: API apps: Aplicacions per mobil - apps_platforms: Utilizatz Mastodon d‘iOS, Android o d’autras plataforma estant - browse_public_posts: Navigatz pel flux public a Mastodon contact: Contacte contact_missing: Pas parametrat contact_unavailable: Pas disponible documentation: Documentacion - federation_hint_html: Amb un compte sus %{instance} poiretz sègre de personas de qualque siasque servidor Mastodon e encara mai. - get_apps: Ensajatz una aplicacion mobil hosted_on: Mastodon albergat sus %{domain} - learn_more: Ne saber mai rules: Règlas del servidor - see_whats_happening: Agachatz çò qu’arriba - server_stats: 'Estatisticas del servidor :' source_code: Còdi font status_count_after: one: estatut @@ -456,9 +447,6 @@ oc: closed_message: desc_html: Mostrat sus las pagina d’acuèlh quand las inscripcions son tampadas.
Podètz utilizar de balisas HTML title: Messatge de barradura de las inscripcions - deletion: - desc_html: Autorizar lo monde a suprimir lor compte - title: Possibilitat de suprimir lo compte registrations_mode: modes: approved: Validacion necessària per s’inscriure @@ -549,10 +537,7 @@ oc: warning: Mèfi ! Agachatz de partejar aquela donada amb degun ! your_token: Vòstre geton d’accès auth: - apply_for_account: Demandar una invitacion change_password: Senhal - checkbox_agreement_html: Accepti las règlas del servidor e los tèrmes del servici - checkbox_agreement_without_rules_html: Soi d’acòrdi amb las condicions d’utilizacion delete_account: Suprimir lo compte delete_account_html: Se volètz suprimir vòstre compte, podètz o far aquí. Vos demandarem que confirmetz. description: @@ -579,7 +564,6 @@ oc: title: Configuracion status: account_status: Estat del compte - trouble_logging_in: Problèmas de connexion ? use_security_key: Utilizar clau de seguretat authorize_follow: already_following: Seguètz ja aqueste compte @@ -1039,20 +1023,11 @@ oc: suspend: Compte suspendut welcome: edit_profile_action: Configuracion del perfil - edit_profile_step: Podètz personalizar lo perfil en mandar un avatard, cambiar l’escais-nom e mai. Se volètz repassar las demandas d’abonaments abans que los nòus seguidors pòscan veire vòstre perfil, podètz clavar vòstre compte. explanation: Vaquí qualques astúcias per vos preparar final_action: Començar de publicar - final_step: 'Començatz de publicar ! Quitament s’avètz pas de seguidors los autres pòdon veire vòstres messatges publics, per exemple pel flux d’actualitat local e per las etiquetas. Benlèu que volètz vos presentar amb l’etiquetas #introductions.' full_handle: Vòstre escais-nom complèt full_handle_hint: Es aquò que vos cal donar a vòstres amics per que pòscan vos escriure o sègre a partir d’un autre servidor. - review_preferences_action: Cambiar las preferéncias - review_preferences_step: Pensatz de configurar vòstras preferéncias, tal coma los corrièls que volètz recebrer o lo nivèl de confidencialitat de vòstres tuts per defaut. O se l’animacion vos dòna pas enveja de rendre, podètz activar la lectura automatica dels GIF. subject: Benvengut a Mastodon - tip_federated_timeline: Lo flux d’actualitat federat es una vista generala del malhum Mastodon. Mas aquò inclutz solament lo monde que vòstres vesins sègon, doncas es pas complèt. - tip_following: Seguètz l’administrator del servidor per defaut. Per trobar de monde mai interessant, agachatz lo flux d’actualitat local e lo global. - tip_local_timeline: Lo flux d’actualitat local es una vista del monde de %{instance}. Son vòstres vesins dirèctes ! - tip_mobile_webapp: Se vòstre navigator mobil nos permet d’apondre Mastodon a l’ecran d‘acuèlh, podètz recebre de notificacions. Aquò se compòrta coma una aplicacion nativa ! - tips: Astúcias title: Vos desirem la benvenguda a bòrd %{name} ! users: follow_limit_reached: Podètz pas sègre mai de %{limit} personas diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 3acdf4e7a5..72d7a440c6 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -3,32 +3,20 @@ pl: about: about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform. about_this: O tej instancji - active_count_after: aktywni - active_footnote: Aktywni użytkownicy miesięcznie (MAU) administered_by: 'Administrowana przez:' api: API apps: Aplikacje - apps_platforms: Korzystaj z Mastodona z poziomu iOS-a, Androida i innych - browse_public_posts: Przeglądaj strumień publicznych wpisów na Mastodonie na żywo contact: Kontakt contact_missing: Nie ustawiono contact_unavailable: Nie dotyczy - continue_to_web: Kontynuuj przez aplikację webową documentation: Dokumentacja - federation_hint_html: Z kontem na %{instance}, możesz śledzić użytkowników każdego serwera Mastodona i nie tylko. - get_apps: Spróbuj aplikacji mobilnej hosted_on: Mastodon uruchomiony na %{domain} instance_actor_flash: | To konto jest wirtualnym nadawcą, używanym do reprezentacji serwera, a nie jakiegokolwiek użytkownika. Jest używane w celu federowania i nie powinno być blokowane, chyba że chcesz zablokować całą instację, w takim przypadku użyj blokady domeny. - learn_more: Dowiedz się więcej - logged_in_as_html: Jesteś obecnie zalogowany/a jako %{username}. - logout_before_registering: Jesteś już zalogowany/a. privacy_policy: Polityka prywatności rules: Regulamin serwera rules_html: 'Poniżej znajduje się podsumowanie zasad, których musisz przestrzegać, jeśli chcesz mieć konto na tym serwerze Mastodona:' - see_whats_happening: Zobacz co się dzieje - server_stats: 'Statystyki serwera:' source_code: Kod źródłowy status_count_after: few: wpisów @@ -36,7 +24,6 @@ pl: one: wpisu other: wpisów status_count_before: Są autorami - tagline: Zdecentralizowana sieć społecznościowa unavailable_content: Niedostępne treści unavailable_content_description: domain: Serwer @@ -244,6 +231,7 @@ pl: confirm_user: Potwierdź użytkownika create_account_warning: Utwórz ostrzeżenie create_announcement: Utwórz ogłoszenie + create_canonical_email_block: Utwórz blokadę e-mail create_custom_emoji: Utwórz niestandardowe emoji create_domain_allow: Utwórz zezwolenie dla domeny create_domain_block: Utwórz blokadę domeny @@ -253,6 +241,7 @@ pl: create_user_role: Utwórz rolę demote_user: Zdegraduj użytkownika destroy_announcement: Usuń ogłoszenie + destroy_canonical_email_block: Usuń blokadę e-mail destroy_custom_emoji: Usuń niestandardowe emoji destroy_domain_allow: Usuń zezwolenie dla domeny destroy_domain_block: Usuń blokadę domeny @@ -794,9 +783,6 @@ pl: closed_message: desc_html: Wyświetlana na stronie głównej, gdy możliwość otwarej rejestracji nie jest dostępna. Możesz korzystać z tagów HTML title: Wiadomość o nieaktywnej rejestracji - deletion: - desc_html: Pozwól każdemu na usunięcie konta - title: Możliwość usunięcia require_invite_text: desc_html: Kiedy rejestracje wymagają ręcznego zatwierdzenia, ustaw pole "Dlaczego chcesz dołączyć?" jako obowiązkowe, a nie opcjonalne title: Wymagaj od nowych użytkowników wypełnienia tekstu prośby o zaproszenie @@ -1036,10 +1022,8 @@ pl: warning: Przechowuj te dane ostrożnie. Nie udostępniaj ich nikomu! your_token: Twój token dostępu auth: - apply_for_account: Poproś o zaproszenie + apply_for_account: Dodaj na listę oczekujących change_password: Hasło - checkbox_agreement_html: Zgadzam się z regułami serwera i zasadami korzystania z usługi - checkbox_agreement_without_rules_html: Akceptuję warunki korzystania z usługi delete_account: Usunięcie konta delete_account_html: Jeżeli chcesz usunąć konto, przejdź tutaj. Otrzymasz prośbę o potwierdzenie. description: @@ -1058,6 +1042,7 @@ pl: migrate_account: Przenieś konto migrate_account_html: Jeżeli chcesz skonfigurować przekierowanie z obecnego konta na inne, możesz zrobić to tutaj. or_log_in_with: Lub zaloguj się z użyciem + privacy_policy_agreement_html: Przeczytałem/am i akceptuję politykę prywatności providers: cas: CAS saml: SAML @@ -1065,12 +1050,17 @@ pl: registration_closed: "%{instance} nie przyjmuje nowych członków" resend_confirmation: Ponownie prześlij instrukcje weryfikacji reset_password: Zresetuj hasło + rules: + preamble: Są one ustawione i wymuszone przez moderatorów %{domain}. + title: Kilka podstawowych zasad. security: Bezpieczeństwo set_new_password: Ustaw nowe hasło setup: email_below_hint_html: Jeżeli poniższy adres e-mail jest nieprawidłowy, możesz zmienić go tutaj i otrzymać nowy e-mail potwierdzający. email_settings_hint_html: E-mail potwierdzający został wysłany na %{email}. Jeżeli adres e-mail nie jest prawidłowy, możesz zmienić go w ustawieniach konta. title: Konfiguracja + sign_up: + preamble: Z kontem na tym serwerze Mastodon będziesz mógł obserwować każdą inną osobę w sieci, niezależnie od miejsca przechowywania ich konta. status: account_status: Stan konta confirming: Oczekiwanie na potwierdzenie adresu e-mail. @@ -1079,7 +1069,6 @@ pl: redirecting_to: Twoje konto jest nieaktywne, ponieważ obecnie przekierowuje je na %{acct}. view_strikes: Zobacz dawne ostrzeżenia nałożone na twoje konto too_fast: Zbyt szybko przesłano formularz, spróbuj ponownie. - trouble_logging_in: Masz problem z zalogowaniem się? use_security_key: Użyj klucza bezpieczeństwa authorize_follow: already_following: Już śledzisz to konto @@ -1678,88 +1667,6 @@ pl: too_late: Jest za późno na odwołanie się od tego ostrzeżenia tags: does_not_match_previous_name: nie pasuje do poprzedniej nazwy - terms: - body_html: | -

Polityka prywatności

-

Jakie informacje zbieramy?

. - -
    -
  • Podstawowe informacje o koncie: Podczas rejestracji na tym serwerze możesz zostać poproszony o podanie nazwy użytkownika, adresu e-mail i hasła. Możesz również wprowadzić dodatkowe informacje dotyczące profilu, takie jak nazwa użytkownika i biogram, a także przesłać zdjęcie profilowe i obrazek w nagłówku. Nazwa użytkownika, nazwa wyświetlana, biogram, zdjęcie profilowe i obrazek w nagłówku są zawsze wyświetlane publicznie.
  • Posty, obserwacje i inne informacje publiczne: Lista osób, które obserwujesz, jest dostępna publicznie; to samo dotyczy osób Ciebie śledzących. Gdy wysyłasz wiadomość, zapisywana jest data i godzina, a także aplikacja, z której wysłałeś wiadomość. Wiadomości mogą zawierać załączniki multimedialne, takie jak zdjęcia i filmy. Publiczne i niepubliczne posty są dostępne publicznie. Gdy wyróżnisz post na swoim profilu, jest to również informacja dostępna publicznie. Twoje posty są dostarczane do Twoich obserwatorów, w niektórych przypadkach oznacza to, że są dostarczane na różne serwery i tam przechowywane są ich kopie. Kiedy usuwasz posty, również jest to przekazywane Twoim obserwatorom. Czynność reblogowania lub lajkowania innego postu jest zawsze publiczna.
  • -
  • Posty bezpośrednie i posty tylko dla obserwatorów: Wszystkie posty są przechowywane i przetwarzane na serwerze. Posty tylko dla followersów są dostarczane do followersów i użytkowników, którzy są w nich wymienieni, a posty bezpośrednie są dostarczane tylko do użytkowników, którzy są w nich wymienieni. W niektórych przypadkach oznacza to, że są one dostarczane na różne serwery i tam przechowywane są ich kopie. Dokładamy starań, aby ograniczyć dostęp do tych postów tylko do osób upoważnionych, ale inne serwery mogą tego nie robić. Dlatego ważne jest, aby sprawdzać serwery, na których znajdują się osoby śledzące Twoje posty. Możesz włączyć w ustawieniach opcję ręcznego zatwierdzania i odrzucania nowych obserwatorów. Miej na uwadze, że operatorzy serwera i każdego serwera odbierającego mogą zobaczyć takie wiadomości, oraz że Odbiorcy mogą wykonywać zrzuty ekranu, kopiować je lub w inny sposób udostępniać. Nie udostępniaj żadnych wrażliwych informacji za pośrednictwem Mastodona.
  • -
  • Adresy IP i inne metadane: Gdy użytkownik się loguje, zapisujemy adres IP, z którego się loguje, a także nazwę przeglądarki, z której korzysta. Wszystkie zalogowane sesje są dostępne do wglądu i usunięcia w ustawieniach. Ostatnio używany adres IP jest przechowywany przez okres do 12 miesięcy. Możemy również przechowywać dzienniki serwera, które zawierają adres IP każdego żądania skierowanego do naszego serwera.
  • -
- -
- -

Do czego wykorzystujemy informacje o użytkowniku?

- -

Wszelkie zebrane przez nas informacje mogą być wykorzystane w następujący sposób:

- -
    -
  • Aby zapewnić podstawową funkcjonalność serwisu Mastodon. Użytkownik może wchodzić w interakcje z treściami innych osób i publikować własne treści tylko wtedy, gdy jest zalogowany. Użytkownik może na przykład śledzić inne osoby, aby wyświetlać ich posty na własnej, spersonalizowanej osi czasu.
  • -
  • Aby wspomóc moderację społeczności, na przykład porównując Twój adres IP z innymi znanymi adresami w celu stwierdzenia przypadków omijania zakazów lub innych naruszeń.
  • -
  • Podany przez Ciebie adres e-mail może być wykorzystywany do wysyłania Ci informacji, powiadomień o interakcji innych osób z treściami lub wysyłania Ci wiadomości, a także do odpowiadania na zapytania i/lub inne prośby lub pytania.
  • -
- -
- -

Jak chronimy Twoje dane?

- -

Wdrażamy szereg zabezpieczeń, aby zapewnić bezpieczeństwo Twoich danych osobowych podczas ich wprowadzania, przesyłania lub uzyskiwania do nich dostępu. Na przykład sesja przeglądarki, a także ruch między aplikacjami użytkownika a interfejsem API są zabezpieczone protokołem SSL, a hasło użytkownika jest haszowane przy użyciu silnej funkcji skrótu. Możesz włączyć uwierzytelnianie dwuskładnikowe, aby jeszcze bardziej zabezpieczyć dostęp do swojego konta.

- -
- -

Jakie są nasze zasady przechowywania danych?

- -

W dobrej wierze podejmiemy starania, aby:

- -
    -
  • Przechowywać dzienniki serwera zawierające adres IP wszystkich żądań kierowanych do tego serwera, na tyle, na ile takie dzienniki są przechowywane, nie dłużej niż 90 dni.
  • -
  • Przechowywać adresy IP związane z zarejestrowanymi użytkownikami nie dłużej niż 12 miesięcy.
  • -
- -

Możesz zażądać i pobrać archiwum swojej zawartości, w tym posty, załączniki multimedialne, zdjęcie profilowe i obrazek w nagłówku.

- -

Możesz w każdej chwili nieodwracalnie usunąć swoje konto.

- -
- -

Czy używamy plików cookie?

- -

Tak. Pliki cookie to małe pliki, które witryna lub jej dostawca usług przesyłają na dysk twardy komputera użytkownika za pośrednictwem przeglądarki internetowej (jeśli użytkownik na to pozwala). Pliki te pozwalają witrynie rozpoznać Twoją przeglądarkę i, jeśli masz zarejestrowane konto, powiązać je z Twoim zarejestrowanym kontem.

- -

Używamy plików cookie, aby zrozumieć i zapisać preferencje użytkownika na potrzeby przyszłych wizyt.

- -


- -

Czy ujawniamy jakieś informacje podmiotom zewnętrznym?

- -

Nie sprzedajemy, zamieniamy ani w inny sposób nie przekazujemy podmiotom zewnętrznym danych osobowych użytkowników. Nie dotyczy to zaufanych osób trzecich, które pomagają nam w prowadzeniu naszej witryny, działalności gospodarczej lub obsłudze użytkowników, o ile osoby te zobowiążą się do zachowania poufności tych informacji. Możemy również ujawnić informacje o użytkowniku, jeśli uznamy to za stosowne w celu zachowania zgodności z prawem, egzekwowania zasad obowiązujących na naszej stronie lub ochrony praw, własności lub bezpieczeństwa naszego lub innych podmiotów.

- -

Twoje treści publiczne mogą być pobierane przez inne serwery w sieci. Twoje posty publiczne i posty przeznaczone tylko dla followersów są dostarczane do serwerów, na których rezydują Twoi followersi, a wiadomości bezpośrednie są dostarczane do serwerów odbiorców, o ile ci followersi lub odbiorcy rezydują na innym serwerze niż ten.

- -

Gdy upoważnisz aplikację do korzystania z Twojego konta, w zależności od zakresu uprawnień, które zatwierdzisz, może ona uzyskać dostęp do informacji o Twoim profilu publicznym, listy Twoich followersów, Twoich list, wszystkich Twoich postów i polubień. Aplikacje nigdy nie mogą uzyskać dostępu do Twojego adresu e-mail ani hasła.

- -
- -

Korzystanie z witryny przez dzieci

- -

Jeśli ten serwer znajduje się w Unii Europejskiej lub Europejskim Obszarze Gospodarczym: Nasza strona, produkty i usługi są skierowane do osób, które ukończyły 16 lat. Jeśli nie masz ukończonych 16 lat, zgodnie z wymogami RODO (Ogólne rozporządzenie o ochronie danych) nie używaj tego portalu.

- -

Jeśli ten serwer znajduje się w USA: Nasza strona, produkty i usługi są skierowane do osób, które ukończyły 13 lat. Jeśli masz mniej niż 13 lat, zgodnie z wymogami COPPA (Children's Online Privacy Protection Act) nie używaj tego portalu.

- -

Wymagania prawne mogą być inne, jeśli serwer znajduje się w innej jurysdykcji.

- -
- -

Zmiany w naszej Polityce prywatności

- -

Jeśli zdecydujemy się na zmianę naszej polityki prywatności, opublikujemy te zmiany tutaj.

- -

Ten dokument jest CC-BY-SA. Data ostatniej aktualizacji: 26 maja 2022.

- -

Oryginalnie zaadaptowany z Discourse privacy policy.

- title: Polityka prywatności %{instance} themes: contrast: Mastodon (Wysoki kontrast) default: Mastodon (Ciemny) @@ -1838,20 +1745,13 @@ pl: suspend: Konto zawieszone welcome: edit_profile_action: Skonfiguruj profil - edit_profile_step: Możesz dostosować profil wysyłając awatar, obraz nagłówka, zmieniając wyświetlaną nazwę i wiele więcej. Jeżeli chcesz, możesz zablokować konto, aby kontrolować, kto może Cię śledzić. + edit_profile_step: Możesz dostosować profil wysyłając awatar, zmieniając wyświetlaną nazwę i o wiele więcej. Jeżeli chcesz, możesz również włączyć przeglądanie i ręczne akceptowanie nowych zgłoszeń śledzenia Twojego profilu. explanation: Kilka wskazówek, które pomogą Ci rozpocząć final_action: Zacznij pisać final_step: 'Zacznij tworzyć! Nawet jeżeli nikt Cię nie śledzi, Twoje publiczne wiadomości będą widziane przez innych, na przykład na lokalnej osi czasu i w hashtagach. Możesz też utworzyć wpis wprowadzający używając hashtagu #introductions.' full_handle: Twój pełny adres full_handle_hint: Ten adres możesz podać znajomym, aby mogli skontaktować się z Tobą lub zacząć śledzić z innego serwera. - review_preferences_action: Zmień ustawienia - review_preferences_step: Upewnij się, że zmieniłeś(-aś) ustawienia, takie jak maile, które chciałbyś otrzymywać lub domyślne opcje prywatności. Jeżeli nie masz choroby lokomocyjnej, możesz włączyć automatyczne odtwarzanie animacji GIF. subject: Witaj w Mastodonie - tip_federated_timeline: Oś czasu federacji przedstawia całą sieć Mastodona. Wyświetla tylko wpisy osób, które śledzą użytkownicy Twojej instancji, więc nie jest kompletna. - tip_following: Domyślnie śledzisz administratora/ów swojej instancji. Aby znaleźć więcej ciekawych ludzi, zajrzyj na lokalną i federalną oś czasu. - tip_local_timeline: Lokalna oś czasu przedstawia osoby z %{instance}. To Twoi najbliżsi sąsiedzi! - tip_mobile_webapp: Jeżeli Twoja przeglądarka pozwala na dodanie Mastodona na ekran główny, będziesz otrzymywać natychmiastowe powiadomienia. Działa to prawie jak natywna aplikacja! - tips: Wskazówki title: Witaj na pokładzie, %{name}! users: follow_limit_reached: Nie możesz śledzić więcej niż %{limit} osób diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index c38103fb7a..acd715fa0f 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -3,37 +3,24 @@ pt-BR: about: about_mastodon_html: 'A rede social do futuro: Sem anúncios, sem vigilância corporativa, com design ético e muita descentralização! Possua seus próprios dados com o Mastodon!' about_this: Sobre - active_count_after: ativo - active_footnote: Usuários Ativos Mensalmente (UAM) administered_by: 'Administrado por:' api: API apps: Aplicativos - apps_platforms: Use o Mastodon a partir do iOS, Android e outras plataformas - browse_public_posts: Navegue pelos toots públicos globais em tempo real contact: Contato contact_missing: Não definido contact_unavailable: Não disponível - continue_to_web: Continuar no aplicativo web documentation: Documentação - federation_hint_html: Com uma conta em %{instance} você vai poder seguir e interagir com pessoas de qualquer canto do fediverso. - get_apps: Experimente um aplicativo hosted_on: Instância Mastodon em %{domain} instance_actor_flash: | Esta conta é um ator virtual usado para representar o próprio servidor e não qualquer usuário individual. É usado para propósitos de federação e não deve ser bloqueado a menos que queira bloquear toda a instância, o que no caso devia usar um bloqueio de domínio. - learn_more: Saiba mais - logged_in_as_html: Você está atualmente logado como %{username}. - logout_before_registering: Já está logado. rules: Regras do servidor rules_html: 'Abaixo está um resumo das regras que você precisa seguir se você quer ter uma conta neste servidor do Mastodon:' - see_whats_happening: Veja o que está acontecendo - server_stats: 'Estatísticas da instância:' source_code: Código-fonte status_count_after: one: toot other: toots status_count_before: Autores de - tagline: Rede social descentralizada unavailable_content: Conteúdo indisponível unavailable_content_description: domain: Instância @@ -741,9 +728,6 @@ pt-BR: closed_message: desc_html: Mostrado na página inicial quando a instância está fechada. Você pode usar tags HTML title: Mensagem de instância fechada - deletion: - desc_html: Permitir que qualquer um exclua a própria conta - title: Exclusão aberta de contas require_invite_text: desc_html: Quando o cadastro de novas contas exigir aprovação manual, tornar obrigatório, ao invés de opcional, o texto de solicitação de convite em "Por que você deseja criar uma conta aqui?" title: Exigir que novos usuários preencham um texto de solicitação de convite @@ -917,10 +901,7 @@ pt-BR: warning: Tenha cuidado com estes dados. Nunca compartilhe com alguém! your_token: Seu código de acesso auth: - apply_for_account: Solicitar convite change_password: Senha - checkbox_agreement_html: Concordo com as regras da instância e com os termos de serviço - checkbox_agreement_without_rules_html: Concordo com os termos do serviço delete_account: Excluir conta delete_account_html: Se você deseja excluir sua conta, você pode fazer isso aqui. Uma confirmação será solicitada. description: @@ -960,7 +941,6 @@ pt-BR: redirecting_to: Sua conta está inativa porque atualmente está redirecionando para %{acct}. view_strikes: Veja os ataques anteriores contra a sua conta too_fast: O formulário foi enviado muito rapidamente, tente novamente. - trouble_logging_in: Problemas para entrar? use_security_key: Usar chave de segurança authorize_follow: already_following: Você já segue @@ -1573,20 +1553,11 @@ pt-BR: suspend: Conta banida welcome: edit_profile_action: Configurar perfil - edit_profile_step: Você pode personalizar o seu perfil enviando um avatar, uma capa, alterando seu nome de exibição e etc. Se você preferir aprovar seus novos seguidores antes de eles te seguirem, você pode trancar a sua conta. explanation: Aqui estão algumas dicas para você começar final_action: Comece a tootar - final_step: 'Comece a tootar! Mesmo sem seguidores, suas mensagens públicas podem ser vistas pelos outros, por exemplo, na linha local e nas hashtags. Você pode querer fazer uma introdução usando a hashtag #introdução, ou em inglês usando a hashtag #introductions.' full_handle: Seu nome de usuário completo full_handle_hint: Isso é o que você compartilha com aos seus amigos para que eles possam te mandar toots ou te seguir a partir de outra instância. - review_preferences_action: Alterar preferências - review_preferences_step: Não se esqueça de configurar suas preferências, como quais e-mails você gostaria de receber, que nível de privacidade você gostaria que seus toots tenham por padrão. Se você não sofre de enjoo com movimento, você pode habilitar GIFs animado automaticamente. subject: Boas-vindas ao Mastodon - tip_federated_timeline: A linha global é uma visão contínua da rede do Mastodon. Mas ela só inclui pessoas de instâncias que a sua instância conhece, então não é a rede completa. - tip_following: Você vai seguir administrador(es) da sua instância por padrão. Para encontrar mais gente interessante, confira as linhas local e global. - tip_local_timeline: A linha local é uma visão contínua das pessoas em %{instance}. Estes são seus vizinhos! - tip_mobile_webapp: Se o seu navegador móvel oferecer a opção de adicionar Mastodon à tela inicial, você pode receber notificações push. Será como um aplicativo nativo! - tips: Dicas title: Boas vindas, %{name}! users: follow_limit_reached: Você não pode seguir mais de %{limit} pessoas diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 884fa3f111..fc9d25c99e 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -3,38 +3,25 @@ pt-PT: about: about_mastodon_html: Mastodon é uma rede social baseada em protocolos abertos da web e software livre e gratuito. É descentralizado como e-mail. about_this: Sobre esta instância - active_count_after: activo - active_footnote: Utilizadores activos mensais (UAM) administered_by: 'Administrado por:' api: API apps: Aplicações móveis - apps_platforms: Usar o Mastodon a partir do iOS, Android e outras plataformas - browse_public_posts: Visualize as publicações públicas do Mastodon em tempo real contact: Contacto contact_missing: Não configurado contact_unavailable: n.d. - continue_to_web: Continuar para a aplicação web documentation: Documentação - federation_hint_html: Ter uma conta em %{instance} permitirá seguir pessoas em qualquer instância Mastodon. - get_apps: Experimente uma aplicação hosted_on: Mastodon em %{domain} instance_actor_flash: | Esta conta é um actor virtual usado para representar a própria instância e não um utilizador individual. É usada para motivos de federação e não deve ser bloqueada a não ser que que queira bloquear a instância por completo. Se for esse o caso, deverá usar o bloqueio de domínio. - learn_more: Saber mais - logged_in_as_html: Está de momento ligado como %{username}. - logout_before_registering: Já tem sessão iniciada. privacy_policy: Política de Privacidade rules: Regras da instância rules_html: 'Abaixo está um resumo das regras que precisa seguir se pretender ter uma conta nesta instância do Mastodon:' - see_whats_happening: Veja o que está a acontecer - server_stats: 'Estatísticas da instância:' source_code: Código fonte status_count_after: one: publicação other: publicações status_count_before: Que fizeram - tagline: Rede social descentralizada unavailable_content: Conteúdo indisponível unavailable_content_description: domain: Instância @@ -767,9 +754,6 @@ pt-PT: closed_message: desc_html: Mostrar na página inicial quando registos estão encerrados
Podes usar tags HTML title: Mensagem de registos encerrados - deletion: - desc_html: Permitir a qualquer utilizador eliminar a sua conta - title: Permitir eliminar contas require_invite_text: desc_html: Quando os registos exigirem aprovação manual, faça o texto "Porque se quer juntar a nós?" da solicitação de convite obrigatório, em vez de opcional title: Exigir que novos utilizadores preencham um texto de solicitação de convite @@ -1001,10 +985,8 @@ pt-PT: warning: Cuidado com estes dados. Não partilhar com ninguém! your_token: O teu token de acesso auth: - apply_for_account: Solicitar um convite + apply_for_account: Juntar-se à lista de espera change_password: Palavra-passe - checkbox_agreement_html: Concordo com as regras da instância e com os termos de serviço - checkbox_agreement_without_rules_html: Concordo com os termos do serviço delete_account: Eliminar conta delete_account_html: Se deseja eliminar a sua conta, pode continuar aqui. Uma confirmação será solicitada. description: @@ -1023,6 +1005,7 @@ pt-PT: migrate_account: Mudar para uma conta diferente migrate_account_html: Se deseja redirecionar esta conta para uma outra pode configurar isso aqui. or_log_in_with: Ou iniciar sessão com + privacy_policy_agreement_html: Eu li e concordo com a política de privacidade providers: cas: CAS saml: SAML @@ -1030,12 +1013,18 @@ pt-PT: registration_closed: "%{instance} não está a aceitar novos membros" resend_confirmation: Reenviar instruções de confirmação reset_password: Criar nova palavra-passe + rules: + preamble: Estas são definidos e aplicadas pelos moderadores de %{domain}. + title: Algumas regras básicas. security: Alterar palavra-passe set_new_password: Editar palavra-passe setup: email_below_hint_html: Se o endereço de e-mail abaixo estiver incorreto, pode alterá-lo aqui e receber um novo e-mail de confirmação. email_settings_hint_html: O e-mail de confirmação foi enviado para %{email}. Se esse endereço de e-mail não estiver correto, pode alterá-lo nas definições da conta. title: Configuração + sign_up: + preamble: Com uma conta neste servidor Mastodon, poderá seguir qualquer outra pessoa na rede, independentemente do servidor onde a conta esteja hospedada. + title: Vamos lá inscrevê-lo em %{domain}. status: account_status: Estado da conta confirming: A aguardar que conclua a confirmação do e-mail. @@ -1044,7 +1033,6 @@ pt-PT: redirecting_to: A sua conta está inativa porque está atualmente a ser redirecionada para %{acct}. view_strikes: Veja as punições anteriores contra a sua conta too_fast: Formulário enviado muito rapidamente, tente novamente. - trouble_logging_in: Problemas em iniciar sessão? use_security_key: Usar chave de segurança authorize_follow: already_following: Tu já estás a seguir esta conta @@ -1625,89 +1613,6 @@ pt-PT: too_late: É tarde demais para apelar desta punição tags: does_not_match_previous_name: não coincide com o nome anterior - terms: - body_html: | -

Política de privacidade

-

Que informação nós recolhemos?

- -
    -
  • Informação básica da conta: Ao registar-se neste servidor, pode ser-lhe pedido que indique um nome de utilizador, um endereço de e-mail e uma palavra-chave. Pode ainda incluir informações adicionais no seu perfil, tais como um nome a exibir e biografia, e carregar uma imagem de perfil e imagem de cabeçalho. O nome de utilizador, nome a exibir, a biografia, a imagem de perfil e a imagem de cabeçalho são sempre listados publicamente.
  • -
  • Publicações, seguimento e outra informação pública: A lista de pessoas que segue é pública, o mesmo é verdade para os seus seguidores. Quando publica uma mensagem, a data e a hora são guardados, tal como a aplicação a partir da qual a mensagem foi enviada. As mensagens podem conter anexos de media, tais como fotografias ou vídeos. Publicações públicas e não listadas são acessíveis publicamente. Quando destaca uma publicação no seu perfil, isso é também informação disponível publicamente. As suas publicações são enviadas aos seus seguidores, em alguns casos isso significa que elas são enviadas para servidores diferentes onde são guardadas cópias. Quando elimina publicações, isso também é enviado para os teus seguidores. A ação de partilhar ou adicionar uma publicação aos favoritos é sempre pública.
  • -
  • Publicações diretas e exclusivas para seguidores: Todas as publicações são guardadas e processadas no servidor. Publicações exclusivas para seguidores são enviadas para os teus seguidores e para os utilizadores nelas mencionados. As publicações diretas são enviadas apenas para os utilizadores nelas mencionados. Em alguns casos isso significa que são enviadas para diferentes servidores onde são guardadas cópias. Nós fazemos um grande esforço para limitar o acesso a estas publicações aos utilizadores autorizados, mas outros servidores podem falhar neste objetivo. Por isso, deve rever os servidores a que os seus seguidores pertencem. Pode ativar uma opção para aprovar e rejeitar manualmente novos seguidores nas configurações. Por favor, tenha em mente que os gestores do seu servidor e qualquer servidor que receba a publicação pode lê-la e que os destinatários podem fazer uma captura de tela, copiar ou partilhar a publicação. Não partilhe qualquer informação sensível no Mastodon.
  • -
  • IPs e outros metadados: Quando inicia sessão, nós guardamos o endereço de IP a partir do qual inicou sessão, tal como o nome do seu navegador. Todas as sessões estão disponíveis para verificação e revogação nas configurações. O último endereço de IP usado é guardado até 12 meses. Nós também podemos guardar registos de servidor, os quais incluem o endereço de IP de cada pedido dirigido ao nosso servidor.
  • -
- -
- -

Para que utilizamos a sua informação?

- -

Qualquer informação que recolhemos sobre sí pode ser utilizada dos seguintes modos:

- -
    -
  • Para prover a funcionalidade central do Mastodon. Só pode interagir com o conteúdo de outras pessoas e publicar o seu próprio conteúdo depois de ter iniciado sessão. Por exemplo, pode seguir outras pessoas para veres as suas publicações na sua cronologia inicial personalizada.
  • -
  • Para ajudar na moderação da comunidade, por exemplo, para comparar o seu endereço IP com outros conhecidos, para determinar a fuga ao banimento ou outras violações.
  • -
  • O endereço de e-mail que fornece pode ser utilizado para lhe enviar informações e/ou notificações sobre outras pessoas que estão a interagir com o seu conteúdo ou a enviar-lhe mensagens, para responder a inquéritos e/ou outros pedidos ou questões.
  • -
- -
- -

Como protegemos a sua informação?

- -

Implementamos uma variedade de medidas para garantir a segurança da sua informação pessoal quando introduz, submete ou acede à mesma. Entre outras coisas, a sua sessão de navegação, tal como o tráfego entre as tuas aplicações e a API, estão seguras por SSL e a sua palavra-passe é codificada utilizando um forte algoritmo de sentido único. Pode activar a autenticação em duas etapas para aumentar ainda mais a segurança do acesso à sua conta.

- -
- -

>Qual é a nossa política de retenção de dados?

- -

Faremos o nosso melhor esforço para:

- -
    -
  • Reter registos do servidor contendo o endereço de IP de todos os pedidos feitos a este servidor, considerando que estes registos não sejam guardados por mais de 90 dias.
  • -
  • Reter os endereços de IP associados aos utilizadores registados durante um período que não ultrapasse os 12 meses.
  • -
- -

Pode requer e descarregar um ficheiro com o seu conteúdo, incluindo as suas publicações, os ficheiros multimédia, a imagem de perfil e a imagem de cabeçalho.

- -

Pode eliminar a sua conta de modo irreversível a qualquer momento.

- -
- -

Utilizamos cookies?

- -

Sim. Cookies são pequenos ficheiros que um site ou o seu fornecedor de serviço transfere para o disco rígido do seu computador através do seu navegador (se você o permitir). Esses cookies possibilitam ao site reconhecer o seu navegador e, se você tiver uma conta registada, associá-lo a ela.

- -

Nós usamos os cookies para compreender e guardar as suas preferências para visitas futuras.

- -
- -

Divulgamos alguma informação para entidades externas?

- -

Nós não vendemos, trocamos ou transferimos de qualquer modo a sua informação pessoal que seja identificável para qualquer entidade externa. Isto não inclui entindades terceiras de confiança que nos ajudam a manter o nosso site, conduzir o nosso negócio ou prestar-lhe este serviço, desde que essas entendidades concordem em manter essa informação confidencial. Poderemos também revelar a sua informação quando acreditarmos que isso é o apropriado para cumprir a lei, forçar a aplicação dos nossos termos de serviço ou proteger os direitos, propriedade e segurança, nossos e de outrem.

- -

O seu conteúdo público pode ser descarregado por outros servidores na rede. As suas publicações públicas e exclusivas para os seus seguidores são enviadas para os servidores onde os seus seguidores residem e as mensagens diretas são entregues aos servidores dos seus destinatários, no caso desses seguidores ou destinatários residirem num servidor diferente deste.

- -

Quando autoriza uma aplicação a utilizar a sua conta, dependendo da abrangência das permissões que aprova, ela pode ter acesso à informação pública do seu perfil, à lista de quem segue, aos seus seguidores, às suas listas, a todas as suas publicações e aos seus favoritos. As aplicações nunca terão acesso ao seu endereço de e-mail ou à sua palavra-passe.

- -
- -

Utilização do site por crianças

- -

Se este servidor estiver na UE ou no EEE: O nosso site, produtos e serviços são todos dirigidos a pessoas que tenham, pelo menos, 16 anos de idade. Se você tem menos de 16 anos de idade, em concordância com os requisitos da GDPR (General Data Protection Regulation) não utilize este site.

- -

Se este servidor estiver nos EUA: O nosso site, produtos e serviços são todos dirigidos a pessoas que tenham, pelo menos, 13 anos de idade. Se você tem menos de 13 anos de idade, em concordância com os requisitos da COPPA (Children's Online Privacy Protection Act) não utilize este site.

- -

Os requisitos legais poderão ser diferentes se este servidor estiver noutra jurisdição.

- -
- -

Alterações à nossa Política de Privacidade

- -

Se decidirmos alterar a nossa política de privacidade, iremos publicar essas alterações nesta página.

- -

Este documento é CC-BY-SA. Ele foi actualizado pela última vez em 26 de Maio 2022.

- -

Originalmente adaptado de Discourse privacy policy.

- title: Política de Privacidade de %{instance} themes: contrast: Mastodon (Elevado contraste) default: Mastodon @@ -1786,20 +1691,11 @@ pt-PT: suspend: Conta suspensa welcome: edit_profile_action: Configurar o perfil - edit_profile_step: Pode personalizar o seu perfil carregando uma imagem de perfil e de cabeçalho ou alterando o nome a exibir, entre outras opções. Se preferir rever os novos seguidores antes de estes o poderem seguir, pode tornar a sua conta privada. explanation: Aqui estão algumas dicas para começar final_action: Começar a publicar - final_step: 'Começa a publicar! Mesmo sem seguidores, as suas mensagens públicas podem ser vistas por outros, por exemplo, na cronologia local e em hashtags. Pode querer apresentar-se utilizando a hashtag #introduções ou #introductions.' full_handle: O seu nome completo full_handle_hint: Isto é o que tem de facultar aos seus amigos para que eles lhe possam enviar mensagens ou seguir a partir de outra instância. - review_preferences_action: Alterar preferências - review_preferences_step: Certifique-se de configurar as suas preferências, tais como os e-mails que gostaria de receber ou o nível de privacidade que deseja que as suas publicações tenham por defeito. Se não sofre de enjoo de movimento, pode ativar a opção de auto-iniciar GIFs. subject: Bem-vindo ao Mastodon - tip_federated_timeline: A cronologia federativa é uma visão global da rede Mastodon. Mas só inclui pessoas que os teus vizinhos subscrevem, por isso não é uma visão completa. - tip_following: Segues o(s) administrador(es) do teu servidor por defeito. Para encontrar mais pessoas interessantes, procura nas cronologias local e federada. - tip_local_timeline: A cronologia local é uma visão global das pessoas em %{instance}. Estes são os seus vizinhos mais próximos! - tip_mobile_webapp: Se o teu navegador móvel te oferecer a possibilidade de adicionar o Mastodon ao teu homescreen, tu podes receber notificações push. Ele age como uma aplicação nativa de vários modos! - tips: Dicas title: Bem-vindo a bordo, %{name}! users: follow_limit_reached: Não podes seguir mais do que %{limit} pessoas diff --git a/config/locales/ro.yml b/config/locales/ro.yml index df80b09dca..1c05834e2b 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -3,28 +3,19 @@ ro: about: about_mastodon_html: 'Rețeaua socială a viitorului: Fără reclame, fără supraveghere corporativă, design etic și descentralizare! Dețineți-vă datele cu Mastodon!' about_this: Despre - active_count_after: activi - active_footnote: Utilizatori activi lunar (UAL) administered_by: 'Administrat de:' api: API apps: Aplicații mobile - apps_platforms: Folosește Mastodon de pe iOS, Android și alte platforme - browse_public_posts: Răsfoiește un flux live de postări publice pe Mastodon contact: Contact contact_missing: Nesetat contact_unavailable: Indisponibil documentation: Documentație - federation_hint_html: Cu un cont pe %{instance} vei putea urmări oameni pe orice server de Mastodon sau mai departe. - get_apps: Încercați o aplicație pentru mobil hosted_on: Mastodon găzduit de %{domain} instance_actor_flash: | Acest cont este un actor virtual folosit pentru a reprezenta serverul în sine și nu un utilizator individual. Acesta este folosit în scopuri de federație și nu ar trebui blocat decât dacă doriți să blocați întreaga instanță, în ce caz trebuie să utilizaţi un bloc de domeniu. - learn_more: Află mai multe rules: Regulile serverului rules_html: 'Mai jos este un rezumat al regulilor pe care trebuie să le urmezi dacă vrei să ai un cont pe acest server de Mastodon:' - see_whats_happening: Vezi ce se întâmplă - server_stats: 'Statistici server:' source_code: Cod sursă status_count_after: few: stări @@ -284,10 +275,7 @@ ro: warning: Fiți foarte atent cu aceste date. Nu le împărtășiți niciodată cu cineva! your_token: Token-ul tău de acces auth: - apply_for_account: Solicită o invitație change_password: Parolă - checkbox_agreement_html: Sunt de acord cu regulile serverului şi termenii de serviciu - checkbox_agreement_without_rules_html: Sunt de acord cu termenii serviciului delete_account: Șterge contul delete_account_html: Dacă vrei să ștergi acest cont poți începe aici. Va trebui să confirmi această acțiune. description: @@ -317,7 +305,6 @@ ro: confirming: Se așteaptă finalizarea confirmării prin e-mail. pending: Cererea dvs. este în curs de revizuire de către personalul nostru. Este posibil să dureze ceva timp. Veți primi un e-mail dacă cererea dvs. este aprobată. redirecting_to: Contul dvs. este inactiv deoarece în prezent se redirecționează către %{acct}. - trouble_logging_in: Probleme la conectare? authorize_follow: already_following: Urmărești deja acest cont already_requested: Ați trimis deja o cerere de urmărire către acel cont @@ -618,20 +605,11 @@ ro: suspend: Cont suspendat welcome: edit_profile_action: Configurare profil - edit_profile_step: Vă puteți personaliza profilul încărcând un avatar, un antet, schimbându-vă numele afișat și multe altele. Dacă dorești să revizuiești noi urmăritori înainte de a primi permisiunea de a te urmări, îți poți bloca contul. explanation: Iată câteva sfaturi pentru a începe final_action: Începe să postezi - final_step: 'Începe să postezi! Chiar și fără urmăritori, mesajele publice pot fi văzute de alții, de exemplu pe fluxul local și pe hashtag-uri. Poate doriți să vă prezentați pe hashtag-ul #introducere.' full_handle: Numele tău complet full_handle_hint: Asta este ceea ce vei putea spune prietenilor pentru a te putea contacta sau pentru a te urmării de pe un alt server. - review_preferences_action: Schimbă preferințele - review_preferences_step: Asigură-te că setezi preferințele tale, cum ar fi e-mailurile pe care dorești să le primești sau ce nivel de confidențialitate vrei ca mesajele tale să fie implicite. Dacă nu ai rău de mişcare, ai putea alege să activezi imaginile GIF să pornească automat. subject: Bine ai venit - tip_federated_timeline: Fluxul federat este o vedere de ansamblu a rețelei Mastodon. Dar include doar oameni la care s-au abonat vecinii tăi, așa că nu este completă. - tip_following: Urmăriți implicit administratorul(ii) serverului. Pentru a găsi oameni mai interesanți, verificați fluxurile locale și federalizate. - tip_local_timeline: Fluxul local este o vedere în ansamblu a persoanelor de pe %{instance}. Aceștia sunt vecinii tăi apropiați! - tip_mobile_webapp: Dacă navigatorul tău mobil îți oferă să adaugi Mastodon pe ecranul tău de pornire, poți primi notificări push. Se comportă ca o aplicație nativă în multe moduri! - tips: Sfaturi title: Bine ai venit la bord, %{name}! users: follow_limit_reached: Nu poți urmări mai mult de %{limit} persoane diff --git a/config/locales/ru.yml b/config/locales/ru.yml index d6cc67b361..c755743d09 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -3,32 +3,20 @@ ru: about: about_mastodon_html: 'Социальная сеть будущего: никакой рекламы, слежки корпорациями, этичный дизайн и децентрализация! С Mastodon ваши данные под вашим контролем.' about_this: Об этом узле - active_count_after: активных - active_footnote: Ежемесячно активные пользователи (MAU) administered_by: 'Администратор узла:' api: API apps: Приложения - apps_platforms: Используйте Mastodon на iOS, Android и других платформах - browse_public_posts: Взгляните на новые посты Mastodon в реальном времени contact: Связаться contact_missing: не указан contact_unavailable: неизв. - continue_to_web: Продолжить в веб-приложении documentation: Документация - federation_hint_html: С учётной записью на %{instance} вы сможете подписываться на людей с любого сервера Mastodon и не только. - get_apps: Попробуйте мобильные приложения hosted_on: Вы получили это сообщение, так как зарегистрированы на %{domain} instance_actor_flash: | Эта учетная запись является виртуальным персонажем, используемым для представления самого сервера, а не какого-либо пользователя. Используется для целей федерации и не должен быть заблокирован, если вы не хотите заблокировать всю инстанцию, вместо этого лучше использовать доменную блокировку. - learn_more: Узнать больше - logged_in_as_html: Вы вошли в систему как %{username}. - logout_before_registering: Вы уже вошли. privacy_policy: Политика конфиденциальности rules: Правила сервера rules_html: 'Ниже приведена сводка правил, которых вам нужно придерживаться, если вы хотите иметь учётную запись на этом сервере Мастодона:' - see_whats_happening: Узнайте, что происходит вокруг - server_stats: 'Статистика сервера:' source_code: Исходный код status_count_after: few: поста @@ -36,7 +24,6 @@ ru: one: пост other: поста status_count_before: И опубликовано - tagline: Децентрализованная социальная сеть unavailable_content: Недоступный контент unavailable_content_description: domain: Сервер @@ -347,11 +334,13 @@ ru: update_announcement_html: "%{name} обновил(а) объявление %{target}" update_custom_emoji_html: "%{name} обновил(а) эмодзи %{target}" update_domain_block_html: "%{name} обновил(а) блокировку домена для %{target}" + update_ip_block_html: "%{name} изменил(а) правило для IP %{target}" update_status_html: "%{name} изменил(а) пост пользователя %{target}" + update_user_role_html: "%{name} изменил(а) роль %{target}" empty: Журнал пуст. filter_by_action: Фильтр по действию filter_by_user: Фильтр по пользователю - title: Журнал событий + title: Журнал аудита announcements: destroyed_msg: Объявление удалено. edit: @@ -617,7 +606,7 @@ ru: many: "%{count} заметок" one: "%{count} заметка" other: "%{count} заметок" - action_log: Журнал событий + action_log: Журнал аудита action_taken_by: 'Действие предпринято:' actions: resolve_description_html: Никаких действий не будет выполнено относительно доложенного содержимого. Жалоба будет закрыта. @@ -697,6 +686,8 @@ ru: invite_users_description: Позволяет пользователям приглашать новых людей на сервер manage_announcements: Управление объявлениями manage_announcements_description: Позволяет пользователям управлять объявлениями на сервере + view_audit_log: Посмотреть журнал аудита + view_audit_log_description: Позволяет пользователям просматривать историю административных действий на сервере view_dashboard: Открыть панель управления view_devops: DevOps title: Роли @@ -749,9 +740,6 @@ ru: closed_message: desc_html: Отображается на титульной странице, когда закрыта регистрация
Можно использовать HTML-теги title: Сообщение о закрытой регистрации - deletion: - desc_html: Позволяет всем удалять собственные учётные записи - title: Разрешить удаление учётных записей require_invite_text: desc_html: Когда регистрация требует ручного подтверждения, сделать ответ на вопрос "Почему вы хотите присоединиться?" обязательным, а не опциональным title: Обязать новых пользователей заполнять текст запроса на приглашение @@ -971,10 +959,8 @@ ru: warning: Будьте очень внимательны с этими данными. Не делитесь ими ни с кем! your_token: Ваш токен доступа auth: - apply_for_account: Запросить приглашение + apply_for_account: Подать заявку change_password: Пароль - checkbox_agreement_html: Я соглашаюсь с правилами сервера и Условиями использования - checkbox_agreement_without_rules_html: Я согласен с условиями использования delete_account: Удалить учётную запись delete_account_html: Удалить свою учётную запись можно в два счёта здесь, но прежде у вас будет спрошено подтверждение. description: @@ -993,6 +979,7 @@ ru: migrate_account: Перенос учётной записи migrate_account_html: Завели новую учётную запись? Перенаправьте подписчиков на неё — настройте перенаправление тут. or_log_in_with: Или войти с помощью + privacy_policy_agreement_html: Мной прочитана и принята политика конфиденциальности providers: cas: CAS saml: SAML @@ -1000,12 +987,17 @@ ru: registration_closed: "%{instance} не принимает новых участников" resend_confirmation: Повторить отправку инструкции для подтверждения reset_password: Сбросить пароль + rules: + preamble: Они устанавливаются и применяются модераторами %{domain}. + title: Несколько основных правил. security: Безопасность set_new_password: Задать новый пароль setup: email_below_hint_html: Если ниже указан неправильный адрес, вы можете исправить его здесь и получить новое письмо подтверждения. email_settings_hint_html: Письмо с подтверждением было отправлено на %{email}. Если адрес указан неправильно, его можно поменять в настройках учётной записи. title: Установка + sign_up: + preamble: С учётной записью на этом сервере Mastodon вы сможете следить за любым другим пользователем в сети, независимо от того, где размещён их аккаунт. status: account_status: Статус учётной записи confirming: Ожидание подтверждения e-mail. @@ -1014,7 +1006,6 @@ ru: redirecting_to: Ваша учётная запись деактивированна, потому что вы настроили перенаправление на %{acct}. view_strikes: Просмотр предыдущих замечаний в адрес вашей учетной записи too_fast: Форма отправлена слишком быстро, попробуйте еще раз. - trouble_logging_in: Не удаётся войти? use_security_key: Использовать ключ безопасности authorize_follow: already_following: Вы уже подписаны на эту учётную запись @@ -1592,8 +1583,6 @@ ru: too_late: Слишком поздно обжаловать это замечание tags: does_not_match_previous_name: не совпадает с предыдущим именем - terms: - title: Политика конфиденциальности %{instance} themes: contrast: Mastodon (высококонтрастная) default: Mastodon (тёмная) @@ -1670,20 +1659,11 @@ ru: suspend: Учётная запись заблокирована welcome: edit_profile_action: Настроить профиль - edit_profile_step: Настройте свой профиль, загрузив аватарку, шапку, изменив отображаемое имя и ещё много чего. Если вы хотите вручную рассматривать и подтверждать подписчиков, можно закрыть свою учётную запись. explanation: Вот несколько советов для новичков final_action: Начать постить - final_step: 'Начните постить! Ваши публичные посты могут видеть другие, например, в локальной ленте или по хэштегам, даже если у вас нет подписчиков. Вы также можете поздороваться с остальными и представиться, используя хэштег #приветствие.' full_handle: Ваше обращение full_handle_hint: То, что Вы хотите сообщить своим друзьям, чтобы они могли написать Вам или подписаться с другого узла. - review_preferences_action: Изменить настройки - review_preferences_step: Проверьте все настройки, например, какие письма вы хотите получать или уровень приватности постов по умолчанию. Если вы не страдаете морской болезнью, можете включить автовоспроизведение GIF. subject: Добро пожаловать в Mastodon - tip_federated_timeline: В глобальной ленте отображается сеть Mastodon. Но в ней показаны посты только от людей, на которых подписаны вы и ваши соседи, поэтому лента может быть неполной. - tip_following: По умолчанию вы подписаны на администратора(-ов) вашего узла. Чтобы найти других интересных людей, проверьте локальную и глобальную ленты. - tip_local_timeline: В локальной ленте показаны посты от людей с %{instance}. Это ваши непосредственные соседи! - tip_mobile_webapp: Если ваш мобильный браузер предлагает добавить иконку Mastodon на домашний экран, то вы можете получать push-уведомления. Прямо как полноценное приложение! - tips: Советы title: Добро пожаловать на борт, %{name}! users: follow_limit_reached: Вы не можете подписаться больше, чем на %{limit} человек diff --git a/config/locales/sc.yml b/config/locales/sc.yml index b18eb4b1ce..45d81cf88b 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -3,28 +3,19 @@ sc: about: about_mastodon_html: 'Sa rete sotziale de su benidore: sena publitzidade, sena vigilàntzia corporativa, disinnu èticu e detzentralizatzione! Sias mere de is datos tuos cun Mastodon!' about_this: Informatziones - active_count_after: ativu - active_footnote: Utentes cun atividade mensile (UAM) administered_by: 'Amministradu dae:' api: API apps: Aplicatziones mòbiles - apps_platforms: Imprea Mastodon dae iOS, Android e àteras prataformas - browse_public_posts: Nàviga in unu flussu in direta de messàgios pùblicos in Mastodon contact: Cuntatu contact_missing: No cunfiguradu contact_unavailable: No a disponimentu documentation: Documentatzione - federation_hint_html: Cun unu contu in %{instance} as a pòdere sighire persones in cale si siat serbidore de Mastodon o de su fediversu. - get_apps: Proa un'aplicatzione mòbile hosted_on: Mastodon allogiadu in %{domain} instance_actor_flash: 'Custu contu est un''atore virtuale impreadu pro rapresentare su pròpiu serbidore, no est un''utente individuale. Benit impreadu pro punnas de federatzione e no ddu dias dèpere blocare si non boles blocare su domìniu intreu, e in cussu casu dias dèpere impreare unu blocu de domìniu. ' - learn_more: Àteras informatziones rules: Règulas de su serbidore rules_html: 'Depes sighire is règulas imbenientes si boles tènnere unu contu in custu serbidore de Mastodon:' - see_whats_happening: Càstia su chi est acontessende - server_stats: 'Istatìsticas de su serbidore:' source_code: Còdighe de orìgine status_count_after: one: istadu @@ -528,9 +519,6 @@ sc: closed_message: desc_html: Ammustradu in sa prima pàgina cando is registratziones sunt serradas. Podes impreare etichetas HTML title: Messàgiu de registru serradu - deletion: - desc_html: Permite a chie si siat de cantzellare su contu suo - title: Aberi s'eliminatzione de su contu require_invite_text: desc_html: Cando is registratziones rechedent s'aprovatzione manuale, faghe chi a incarcare su butone "Pro ite ti boles iscrìere?" siat obligatòriu e no a praghere title: Rechede a is persones noas chi iscriant una resone prima de aderire @@ -631,10 +619,7 @@ sc: warning: Dae cara a custos datos. Non ddos cumpartzas mai cun nemos! your_token: S'identificadore tuo de atzessu auth: - apply_for_account: Pedi un'invitu change_password: Crae - checkbox_agreement_html: So de acòrdiu cun is règulas de su serbidore e is cunditziones de su servìtziu - checkbox_agreement_without_rules_html: So de acòrdiu cun is cunditziones de su servìtziu delete_account: Cantzella su contu delete_account_html: Si boles cantzellare su contu, ddu podes fàghere inoghe. T'amus a dimandare una cunfirmatzione. description: @@ -671,7 +656,6 @@ sc: pending: Sa dimanda tua est in protzessu de revisione dae su personale nostru. Podet serbire unu pagu de tempus. As a retzire unu messàgiu eletrònicu si sa dimanda est aprovada. redirecting_to: Su contu tuo est inativu pro ite in die de oe est torrende a indiritzare a %{acct}. too_fast: Formulàriu imbiadu tropu a lestru, torra a proare. - trouble_logging_in: Tenes problemas de atzessu? use_security_key: Imprea una crae de seguresa authorize_follow: already_following: Ses giai sighende custu contu @@ -1166,20 +1150,11 @@ sc: suspend: Contu suspèndidu welcome: edit_profile_action: Cunfigura su profilu - edit_profile_step: Podes personalizare su profilu tuo carrighende un'immàgine de profilu o un'intestatzione, cambiende su nòmine de utente tuo e àteru. Si boles revisionare is sighidores noos in antis chi tèngiant su permissu de ti sighire podes blocare su contu tuo. explanation: Inoghe ddoe at una paja de impòsitos pro cumintzare final_action: Cumintza a publicare - final_step: 'Cumintza a publicare! Fintzas si no ti sighit nemos àtera gente podet bìdere is messàgios pùblicos tuos, pro esèmpiu in sa lìnia de tempus locale e in is etichetas ("hashtags"). Ti dias pòdere bòlere introduire a sa comunidade cun s''eticheta #introductions.' full_handle: Su nòmine utente intreu tuo full_handle_hint: Custu est su chi dias nàrrere a is amistades tuas pro chi ti potzant imbiare messàgios o sighire dae un'àteru serbidore. - review_preferences_action: Muda is preferèntzias - review_preferences_step: Regorda·ti de cunfigurare is preferèntzias tuas, comente a cale messàgios de posta eletrònicas boles retzire, o ite livellu de riservadesa dias bòlere chi siat predefinidu pro is messàgios tuos. Si is immàgines in movimentu non ti infadant podes seberare de abilitare sa riprodutzione automàtica de is GIF. subject: Ti donamus su benebènnidu a Mastodon - tip_federated_timeline: Sa lìnia de tempus federada est una vista globale de sa retza de Mastodon. Ma includet isceti is persones sighidas dae is bighinos tuos, duncas no est totale. - tip_following: Pro more de is cunfiguratziones predefinidas sighis s'amministratzione de su serbidore tuo. Pro agatare àteras persones de interessu, càstia is lìnias de su tempus locale e federada. - tip_local_timeline: Sa lìnia de tempus locale est una vista globale de is persones in %{instance}. Custos sunt is bighinos tuos! - tip_mobile_webapp: Si su navigadore mòbile tuo t'oferit de agiùnghere Mastodon a s'ischermada printzipale tua podes retzire notìficas push. Funtzionat che a un'aplicatzione nativa in maneras medas! - tips: Impòsitos title: Ti donamus su benebènnidu, %{name}! users: follow_limit_reached: Non podes sighire prus de %{limit} persones diff --git a/config/locales/si.yml b/config/locales/si.yml index 12a322eed0..021849fea1 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -3,37 +3,24 @@ si: about: about_mastodon_html: 'අනාගත සමාජ ජාලය: දැන්වීම් නැත, ආයතනික නිරීක්ෂණ නැත, සදාචාරාත්මක සැලසුම් සහ විමධ්‍යගත කිරීම! Mastodon සමඟ ඔබේ දත්ත අයිති කරගන්න!' about_this: පිලිබඳව - active_count_after: සක්‍රීයයි - active_footnote: මාසික ක්‍රියාකාරී පරිශීලකයින් (මාක්‍රිප) administered_by: 'පරිපාලනය කරන්නේ:' api: යෙ.ක්‍ර. මු. (API) apps: ජංගම යෙදුම් - apps_platforms: iOS, Android සහ වෙනත් වේදිකා වලින් Mastodon භාවිතා කරන්න - browse_public_posts: Mastodon හි පොදු පළ කිරීම් වල සජීවී ප්‍රවාහයක් බ්‍රවුස් කරන්න contact: සබඳතාව contact_missing: සකස් කර නැත contact_unavailable: අ/නොවේ - continue_to_web: වෙබ් යෙදුම වෙත ඉදිරියට යන්න documentation: ප්‍රලේඛනය - federation_hint_html: "%{instance} හි ගිණුමක් සමඟින් ඔබට ඕනෑම Mastodon සේවාදායකයක සහ ඉන් ඔබ්බෙහි පුද්ගලයින් අනුගමනය කිරීමට හැකි වනු ඇත." - get_apps: ජංගම යෙදුමක් උත්සාහ කරන්න hosted_on: Mastodon %{domain}හි සත්කාරකත්වය දරයි instance_actor_flash: | මෙම ගිණුම සේවාදායකයම නියෝජනය කිරීමට භාවිතා කරන අතථ්‍ය නළුවෙකු වන අතර කිසිදු තනි පරිශීලකයෙකු නොවේ. එය ෆෙඩරේෂන් අරමුණු සඳහා භාවිතා කරන අතර ඔබට සම්පූර්ණ අවස්ථාව අවහිර කිරීමට අවශ්‍ය නම් මිස අවහිර නොකළ යුතුය, මෙම අවස්ථාවේදී ඔබ ඩොමේන් බ්ලොක් එකක් භාවිතා කළ යුතුය. - learn_more: තව දැනගන්න - logged_in_as_html: ඔබ දැනට %{username}ලෙස පුරනය වී ඇත. - logout_before_registering: ඔබ දැනටමත් පුරනය වී ඇත. rules: සේවාදායකයේ නීති rules_html: 'ඔබට Mastodon හි මෙම සේවාදායකයේ ගිණුමක් ඇති කර ගැනීමට අවශ්‍ය නම් ඔබ අනුගමනය කළ යුතු නීති වල සාරාංශයක් පහත දැක්වේ:' - see_whats_happening: මොකද වෙන්නේ කියලා බලන්න - server_stats: 'සේවාදායක සංඛ්යාලේඛන:' source_code: මූල කේතය status_count_after: one: තත්ත්වය other: තත්ත්වයන් status_count_before: කවුද පළ කළේ - tagline: විමධ්‍යගත සමාජ ජාලය unavailable_content: මධ්‍යස්ථ සේවාදායකයන් unavailable_content_description: domain: සේවාදායකය @@ -681,9 +668,6 @@ si: closed_message: desc_html: ලියාපදිංචිය වසා ඇති විට මුල් පිටුවේ ප්‍රදර්ශනය කෙරේ. ඔබට HTML ටැග් භාවිතා කළ හැකිය title: සංවෘත ලියාපදිංචි පණිවිඩය - deletion: - desc_html: ඕනෑම කෙනෙකුට තම ගිණුම මකා දැමීමට ඉඩ දෙන්න - title: ගිණුම් මකාදැමීම විවෘත කරන්න require_invite_text: desc_html: ලියාපදිංචිය සඳහා අතින් අනුමැතිය අවශ්‍ය වූ විට, "ඔබට සම්බන්ධ වීමට අවශ්‍ය වන්නේ ඇයි?" විකල්ප වෙනුවට පෙළ ආදානය අනිවාර්ය වේ title: සම්බන්ධ වීමට හේතුවක් ඇතුළත් කිරීමට නව පරිශීලකයින්ට අවශ්‍ය වේ @@ -908,10 +892,7 @@ si: warning: මෙම දත්ත සමඟ ඉතා ප්රවේශම් වන්න. එය කිසි විටෙක කිසිවෙකු සමඟ බෙදා නොගන්න! your_token: ඔබේ ප්‍රවේශ ටෝකනය auth: - apply_for_account: ආරාධනාවක් ඉල්ලන්න change_password: මුර පදය - checkbox_agreement_html: මම සේවාදායක රීති සහ සේවා නියමට එකඟ වෙමි - checkbox_agreement_without_rules_html: මම සේවා කොන්දේසි එකඟ වෙමි delete_account: ගිණුම මකන්න delete_account_html: ඔබට ඔබගේ ගිණුම මකා දැමීමට අවශ්‍ය නම්, ඔබට මෙතැනින් ඉදිරියට යා හැක. තහවුරු කිරීම සඳහා ඔබෙන් අසනු ඇත. description: @@ -948,7 +929,6 @@ si: redirecting_to: එය දැනට %{acct}වෙත හරවා යවන බැවින් ඔබගේ ගිණුම අක්‍රියයි. view_strikes: ඔබගේ ගිණුමට එරෙහිව පසුගිය වර්ජන බලන්න too_fast: පෝරමය ඉතා වේගයෙන් ඉදිරිපත් කර ඇත, නැවත උත්සාහ කරන්න. - trouble_logging_in: පුරනය වීමේ ගැටලුවක්ද? use_security_key: ආරක්ෂක යතුර භාවිතා කරන්න authorize_follow: already_following: ඔබ දැනටමත් මෙම ගිණුම අනුගමනය කරයි @@ -1571,20 +1551,11 @@ si: suspend: ගිණුම අත්හිටුවා ඇත welcome: edit_profile_action: සැකසුම් පැතිකඩ - edit_profile_step: ඔබට අවතාරයක්, ශීර්ෂයක් උඩුගත කිරීමෙන්, ඔබේ සංදර්ශක නම වෙනස් කිරීමෙන් සහ තවත් දේ මඟින් ඔබේ පැතිකඩ අභිරුචිකරණය කළ හැකිය. නව අනුගාමිකයින්ට ඔබව අනුගමනය කිරීමට ඉඩ දීමට පෙර ඔවුන් සමාලෝචනය කිරීමට ඔබ කැමති නම්, ඔබට ඔබගේ ගිණුම අගුළු දැමිය හැක. explanation: ඔබ ආරම්භ කිරීමට උපදෙස් කිහිපයක් මෙන්න final_action: පළ කිරීම ආරම්භ කරන්න - final_step: 'පළ කිරීම ආරම්භ කරන්න! අනුගාමිකයින් නොමැතිව වුවද, ඔබගේ පොදු පළ කිරීම් වෙනත් අය විසින් දැකිය හැකිය, උදාහරණයක් ලෙස දේශීය කාලරේඛාවේ සහ හැෂ් ටැග් වල. ඔබට #introductions හැෂ් ටැගය මත ඔබව හඳුන්වා දීමට අවශ්‍ය විය හැක.' full_handle: ඔබේ සම්පූර්ණ හසුරුව full_handle_hint: මෙය ඔබ ඔබේ මිතුරන්ට පවසනු ඇත, එවිට ඔවුන්ට වෙනත් සේවාදායකයකින් ඔබට පණිවිඩ යැවීමට හෝ අනුගමනය කිරීමට හැකිය. - review_preferences_action: මනාප වෙනස් කරන්න - review_preferences_step: ඔබට ලැබීමට කැමති ඊමේල්, හෝ ඔබේ පළ කිරීම් පෙරනිමි කිරීමට ඔබ කැමති පුද්ගලිකත්ව මට්ටම වැනි ඔබේ මනාප සැකසීමට වග බලා ගන්න. ඔබට චලන අසනීපයක් නොමැති නම්, ඔබට GIF ස්වයංක්‍රීය ධාවනය සබල කිරීමට තෝරා ගත හැකිය. subject: Mastodon වෙත සාදරයෙන් පිළිගනිමු - tip_federated_timeline: ෆෙඩරේටඩ් කාලරාමුව යනු මැස්ටෝඩන් ජාලයේ ගිනි හෝස් දසුනකි. නමුත් එයට ඇතුළත් වන්නේ ඔබේ අසල්වැසියන් දායක වී ඇති පුද්ගලයින් පමණි, එබැවින් එය සම්පූර්ණ නොවේ. - tip_following: ඔබ පෙරනිමියෙන් ඔබගේ සේවාදායකයේ පරිපාලක(න්) අනුගමනය කරයි. වඩාත් සිත්ගන්නා පුද්ගලයින් සොයා ගැනීමට, දේශීය සහ ෆෙඩරල් කාලරේඛා පරීක්ෂා කරන්න. - tip_local_timeline: ප්‍රාදේශීය කාලරේඛාව යනු %{instance}හි පුද්ගලයින්ගේ ගිනි හෝස් දසුනකි. මේ ඔබේ ආසන්න අසල්වැසියන්! - tip_mobile_webapp: ඔබගේ ජංගම බ්‍රවුසරය ඔබගේ මුල් තිරයට Mastodon එක් කිරීමට ඉදිරිපත් කරන්නේ නම්, ඔබට තල්ලු දැනුම්දීම් ලැබිය හැක. එය බොහෝ ආකාරවලින් ස්වදේශීය යෙදුමක් ලෙස ක්‍රියා කරයි! - tips: ඉඟි title: නැවට සාදරයෙන් පිළිගනිමු, %{name}! users: follow_limit_reached: ඔබට පුද්ගලයින් %{limit} කට වඩා අනුගමනය කළ නොහැක diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index d942382428..f68c2c9a6b 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -85,6 +85,7 @@ fr: ip: Entrez une adresse IPv4 ou IPv6. Vous pouvez bloquer des plages entières en utilisant la syntaxe CIDR. Faites attention à ne pas vous bloquer vous-même ! severities: no_access: Bloquer l’accès à toutes les ressources + sign_up_block: Les nouvelles inscriptions ne seront pas possibles sign_up_requires_approval: Les nouvelles inscriptions nécessiteront votre approbation severity: Choisir ce qui se passera avec les requêtes de cette adresse IP rule: @@ -219,6 +220,7 @@ fr: ip: IP severities: no_access: Bloquer l’accès + sign_up_block: Bloquer les inscriptions sign_up_requires_approval: Limite des inscriptions severity: Règle notification_emails: @@ -251,6 +253,7 @@ fr: events: Événements activés url: URL du point de terminaison 'no': Non + not_recommended: Non recommandé recommended: Recommandé required: mark: "*" diff --git a/config/locales/sk.yml b/config/locales/sk.yml index bd693c201d..49820a229f 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -3,29 +3,17 @@ sk: about: about_mastodon_html: Mastodon je sociálna sieť založená na otvorených webových protokoloch a na slobodnom softvéri. Je decentralizovaná, podobne ako email. about_this: O tomto serveri - active_count_after: aktívni - active_footnote: Mesačne aktívnych užívateľov (MAU) administered_by: 'Správcom je:' apps: Aplikácie - apps_platforms: Užívaj Mastodon z iOSu, Androidu, a iných platforiem - browse_public_posts: Sleduj naživo prúd verejných príspevkov na Mastodone contact: Kontakt contact_missing: Nezadaný contact_unavailable: Neuvedený/á - continue_to_web: Pokračovať na webovú aplikáciu documentation: Dokumentácia - federation_hint_html: S účtom na %{instance} budeš môcť následovať ľúdí na hociakom Mastodon serveri, ale aj na iných serveroch. - get_apps: Vyskúšaj aplikácie hosted_on: Mastodon hostovaný na %{domain} instance_actor_flash: | Tento účet je virtuálnym aktérom, ktorý predstavuje samotný server a nie žiadného jedného užívateľa. Je využívaný pre potreby federovania a nemal by byť blokovaný, pokiaľ nechceš zablokovať celý server, čo ide lepšie dosiahnúť cez blokovanie domény. - learn_more: Zisti viac - logged_in_as_html: Práve si prihlásený/á ako %{username}. - logout_before_registering: Už si prihlásený/á. rules: Serverové pravidlá - see_whats_happening: Pozoruj, čo sa deje - server_stats: 'Serverové štatistiky:' source_code: Zdrojový kód status_count_after: few: príspevkov @@ -33,7 +21,6 @@ sk: one: príspevok other: príspevky status_count_before: Ktorí napísali - tagline: Decentralizovaná sociálna sieť unavailable_content: Nedostupný obsah unavailable_content_description: reason: 'Dôvod:' @@ -536,9 +523,6 @@ sk: closed_message: desc_html: Toto sa zobrazí na hlavnej stránke v prípade, že sú registrácie uzavreté. Možno tu použiť aj HTML kód title: Správa o uzavretých registráciách - deletion: - desc_html: Dovoľ každému, aby si mohli vymazať svok účet - title: Sprístupni možnosť vymazať si účet registrations_mode: modes: approved: Pre registráciu je nutné povolenie @@ -645,10 +629,7 @@ sk: warning: Na tieto údaje dávaj ohromný pozor. Nikdy ich s nikým nezďieľaj! your_token: Tvoj prístupový token auth: - apply_for_account: Vyžiadaj si pozvánku change_password: Heslo - checkbox_agreement_html: Súhlasím s pravidlami servera, aj s prevoznými podmienkami - checkbox_agreement_without_rules_html: Súhlasím s podmienkami užívania delete_account: Vymaž účet delete_account_html: Pokiaľ chceš svoj účet odtiaľto vymazať, môžeš tak urobiť tu. Budeš požiadaný/á o potvrdenie tohto kroku. description: @@ -678,7 +659,6 @@ sk: confirming: Čaká sa na dokončenie potvrdenia emailom. pending: Tvoja žiadosť čaká na schvílenie od nášho týmu. Môže to chviľu potrvať. Ak bude tvoja žiadosť schválená, dostaneš o tom email. redirecting_to: Tvoj účet je neaktívny, lebo v súčasnosti presmerováva na %{acct}. - trouble_logging_in: Problém s prihlásením? use_security_key: Použi bezpečnostný kľúč authorize_follow: already_following: Tento účet už následuješ @@ -1122,20 +1102,11 @@ sk: suspend: Tvoj účet bol vylúčený welcome: edit_profile_action: Nastav profil - edit_profile_step: Profil si môžeš prispôsobiť nahratím portrétu a záhlavia, môžeš upraviť svoje meno a viac. Pokiaľ chceš preverovať nových následovateľov predtým než ťa budú môcť sledovať, môžeš uzamknúť svoj účet. explanation: Tu nájdeš nejaké tipy do začiatku final_action: Začni prispievať - final_step: 'Začni písať! Aj bez následovateľov budú tvoje verejné príspevky videné ostatnými, napríklad na miestnej osi a pod haštagmi. Ak chceš, môžeš sa ostatným predstaviť pod haštagom #introductions.' full_handle: Adresa tvojho profilu v celom formáte full_handle_hint: Toto je čo musíš dať vedieť svojím priateľom aby ti mohli posielať správy, alebo ťa následovať z iného serveru. - review_preferences_action: Zmeniť nastavenia - review_preferences_step: Daj si záležať na svojích nastaveniach, napríklad že aké emailové notifikácie chceš dostávať, alebo pod aký level súkromia sa tvoje príspevky majú sami automaticky zaradiť. Pokiaľ nemáš malátnosť z pohybu, môžeš si zvoliť aj automatické spúšťanie GIF animácií. subject: Vitaj na Mastodone - tip_federated_timeline: Federovaná os zobrazuje sieť Mastodonu až po jej hranice. Ale zahŕňa iba ľúdí ktorých ostatní okolo teba sledujú, takže predsa nieje úplne celistvá. - tip_following: Správcu servera následuješ automaticky. Môžeš ale nájsť mnoho iných zaujímavých ľudí ak prezrieš tak lokálnu, ako aj globálne federovanú os. - tip_local_timeline: Miestna časová os je celkový pohľad na aktivitu užívateľov %{instance}. Toto sú tvoji najbližší susedia! - tip_mobile_webapp: Pokiaľ ti prehliadač ponúkne možnosť pridať Mastodon na tvoju obrazovku, môžeš potom dostávať notifikácie skoro ako z natívnej aplikácie! - tips: Tipy title: Vitaj na palube, %{name}! users: follow_limit_reached: Nemôžeš následovať viac ako %{limit} ľudí diff --git a/config/locales/sl.yml b/config/locales/sl.yml index f153df0c6c..edf38feddc 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -3,32 +3,20 @@ sl: about: about_mastodon_html: Mastodon je socialno omrežje, ki temelji na odprtih spletnih protokolih in prosti ter odprtokodni programski opremi. Je decentraliziran, kot e-pošta. about_this: O Mastodonu - active_count_after: dejavnih - active_footnote: Aktivni mesečni uporabniki (AMU) administered_by: 'Upravlja:' api: API (programerski vmesnik aplikacije) apps: Mobilne aplikacije - apps_platforms: Uporabljajte Mastodon iz iOS, Android ali iz drugih platform - browse_public_posts: Brskajte javnih objav v živo na Mastodonu contact: Kontakt contact_missing: Ni nastavljeno contact_unavailable: Ni na voljo - continue_to_web: Nadaljuj v spletno aplikacijo documentation: Dokumentacija - federation_hint_html: Z računom na %{instance} boste lahko spremljali osebe na poljubnem strežniku Mastodon. - get_apps: Poskusite mobilno aplikacijo hosted_on: Mastodon gostuje na %{domain} instance_actor_flash: | Ta račun je navidezni igralec, ki predstavlja strežnik in ne posameznega uporabnika. Uporablja se za namene federacije in se ne blokira, če ne želite blokirati celotne instance. V tem primeru blokirajte domeno. - learn_more: Nauči se več - logged_in_as_html: Trenutno ste prijavljeni kot %{username}. - logout_before_registering: Ste že prijavljeni. privacy_policy: Pravilnik o zasebnosti rules: Pravila strežnika rules_html: 'Spodaj je povzetek pravil, ki jim morate slediti, če želite imeti račun na tem strežniku Mastodon:' - see_whats_happening: Poglejte, kaj se dogaja - server_stats: 'Statistika strežnika:' source_code: Izvorna koda status_count_after: few: stanja @@ -36,7 +24,6 @@ sl: other: objav two: stanja status_count_before: Ki so avtorji - tagline: Decentralizirano družbeno omrežje unavailable_content: Moderirani strežniki unavailable_content_description: domain: Strežnik @@ -799,9 +786,6 @@ sl: closed_message: desc_html: Prikazano na prvi strani, ko so registracije zaprte. Lahko uporabite oznake HTML title: Sporočilo o zaprti registraciji - deletion: - desc_html: Dovoli vsakomur, da izbriše svoj račun - title: Odpri brisanje računa require_invite_text: desc_html: Če registracije zahtevajo ročno potrditev, nastavite vnos besedila pod »Zakaj se želite pridružiti?« za obveznega title: Zahteva, da novi uprorabniki navedejo razlog, zakaj se želijo registrirati @@ -1041,10 +1025,7 @@ sl: warning: Bodite zelo previdni s temi podatki. Nikoli jih ne delite z nikomer! your_token: Vaš dostopni žeton auth: - apply_for_account: Zahtevajte povabilo change_password: Geslo - checkbox_agreement_html: Strinjam se s pravili strežnika in pogoji storitve - checkbox_agreement_without_rules_html: Strinjam se s pogoji storitve delete_account: Izbriši račun delete_account_html: Če želite izbrisati svoj račun, lahko nadaljujete tukaj. Prosili vas bomo za potrditev. description: @@ -1084,7 +1065,6 @@ sl: redirecting_to: Vaš račun ni dejaven, ker trenutno preusmerja na račun %{acct}. view_strikes: Pokaži pretekle ukrepe proti mojemu računu too_fast: Obrazec oddan prehitro, poskusite znova. - trouble_logging_in: Težave pri prijavi? use_security_key: Uporabi varnostni ključ authorize_follow: already_following: Temu računu že sledite @@ -1693,89 +1673,6 @@ sl: too_late: Prepozno je, da bi se pritožili na ta ukrep tags: does_not_match_previous_name: se ne ujema s prejšnjim imenom - terms: - body_html: | -

Politika zasebnosti

-

Katere vrste podatkov zbiramo?

- -
    -
  • Osnovni podatki o računu: Če se registrirate na tem strežniku, boste morda morali vnesti uporabniško ime, e-poštni naslov in geslo. Vnesete lahko tudi dodatne informacije o profilu, npr. pojavno ime in biografijo, ter naložite sliko profila in sliko glave. Uporabniško ime, pojavno ime, biografija, slika profila in slika glave so vedno javno dostopni.
  • -
  • Objave, sledenja in druge javne informacije: Seznam oseb, ki jim sledite, je javno dostopen, enako velja za vaše sledilce. Ko pošljete sporočilo, sta datum in čas shranjena, kot tudi aplikacija, iz katere ste poslali sporočilo. Sporočila lahko vsebujejo medijske priloge, kot so slike in videoposnetki. Javne in neprikazane objave so javno dostopne. Ko v profilu vključite objavo, je to tudi javno dostopna informacija. Vaše objave, ki so dostavljene vašim sledilcem, so včasih dostavljeni na različne strežnike, kjer se kopije objav tudi shranijo. Ko izbrišete objave, se to prav tako dostavi vašim sledilcem. Spodbujanje in vzljubitev drugih objav sta vedno javni.
  • -
  • Neposredne objave in objave samo za sledilce: Vse objave so shranjene in obdelane na strežniku. Objave samo za sledilce se dostavijo vašim sledilcem in uporabnikom, ki so v njih omenjeni. Neposredne objave se posredujejo samo uporabnikom, ki so v njih omenjeni. V nekaterih primerih so dostavljeni na različne strežnike, kopije pa se shranijo tam. V dobri veri si prizadevamo omejiti dostop do teh objav samo pooblaščenim osebam, vendar drugi strežniki to morda ne bodo storili. Zato je pomembno, da pregledate strežnike, na katerih so sledilci. V nastavitvah lahko preklapljate med možnostmi za odobritev in zavrnitev novih sledilcev. Ne pozabite, da lahko operaterji strežnika in poljubni prejemni strežnik takšna sporočila pregledajo in da jih lahko prejemniki poslikajo, kopirajo ali drugače ponovno delijo. Ne pošiljajte občutljivih informacij skozi Mastodon.
  • -
  • IP-ji in drugi metapodatki: Ko se prijavite, zabeležimo naslov IP, s katerega se prijavljate, in ime aplikacije brskalnika. V nastavitvah so za pregled in preklic na voljo vse prijavljene seje. Zadnji uporabljeni IP naslov je shranjen največ 12 mesecev. Prav tako lahko obdržimo dnevnike strežnikov, ki vsebujejo IP-naslov vsake zahteve na naš strežnik.
  • -
- -
- -

Za kaj uporabljamo vaše podatke?

- -

Vse informacije, ki jih zbiramo od vas, so lahko uporabljene na naslednje načine:

- -
    -
  • Za zagotavljanje osrednje funkcionalnosti Mastodona. Komunicirate lahko z vsebino drugih oseb in objavljate lastno vsebino, ko ste prijavljeni. Primer: spremljate lahko druge osebe in si ogledate njihove kombinirane objave v svoji prilagojeni domači časovnici.
  • -
  • Za pomoč pri moderiranju skupnosti, npr. primerjavo vašega naslova IP z drugimi znanimi za ugotavljanje izmikanja prepovedim ali drugih kršitev.
  • -
  • E-poštni naslov, ki ga navedete, se lahko uporabi za pošiljanje informacij, obvestil o drugih osebah, ki komunicirajo z vašo vsebino ali vam pošiljajo sporočila, ter za odzivanje na poizvedbe in/ali druge zahteve ali vprašanja.
  • -
- -
- -

Kako zaščitimo vaše podatke?

- -

Za ohranitev varnosti vaših osebnih podatkov izvajamo različne varnostne ukrepe, ko vnašate, pošiljate ali dostopate do vaših osebnih podatkov. Med drugim je seja brskalnika, pa tudi promet med vašimi aplikacijami in API-jem zaščitena s SSL-jem, geslo pa je zgoščeno z uporabo močnega enosmernega algoritma. Če želite omogočiti varen dostop do računa, lahko omogočite dvofaktorsko preverjanje pristnosti.

- -
- -

Kakšna je naša politika hrambe podatkov?

- -

Prizadevali si bomo za:

- -
    -
  • Shranjevanje dnevnikov strežnikov, ki vsebujejo naslov IP vseh zahtev za ta strežnik, če so hranjeni, največ 90 dni.
  • -
  • Obdržiitev naslovov IP, povezanih z registriranimi uporabniki, ne več kot 12 mesecev.
  • -
- -

Lahko zahtevate in prenesete arhiv vaše vsebine, vključno z objavami, predstavnostnimi prilogami, sliko profila in sliko glave.

- -

Račun lahko kadar koli nepovratno izbrišete.

- -
- -

Ali uporabljamo piškotke?

- -

Da. Piškotki so majhne datoteke, ki jih spletno mesto ali njegov ponudnik storitev prenese na trdi disk vašega računalnika prek spletnega brskalnika (če dovolite). Ti piškotki omogočajo, da spletno mesto prepozna vaš brskalnik in ga, če imate registriran račun, povežete z vašim registriranim računom.

- -

Piškotke uporabljamo za razumevanje in shranjevanje vaših nastavitev za prihodnje obiske.

- -
- -

Ali razkrivamo informacije zunanjim strankam?

- -

Vaših osebnih podatkov ne prodajamo, preprodajamo ali kako drugače posredujemo tretjim osebam. To ne vključuje zaupanja vrednih tretjih oseb, ki nam pomagajo pri upravljanju naše spletne strani, vodenju našega poslovanja ali storitev, če se te strani strinjajo, da bodo te informacije zaupne. Vaše podatke lahko tudi objavimo, če menimo, da je objava ustrezna in v skladu z zakonom, uveljavlja pravilnike o spletnih mestih ali ščiti naše ali druge pravice, lastnino ali varnost.

- -

Vaše javne vsebine lahko prenesejo drugi strežniki v omrežju. Vaše objave in objave samo za sledilce so dostavljene na strežnike, na katerih prebivajo vaši sledilci, in neposredna sporočila so dostavljena na strežnike prejemnikov, če so ti sledilci ali prejemniki na drugem strežniku.

- -

Ko odobrite aplikacijo za uporabo vašega računa, lahko glede na obseg dovoljenj, ki jih odobravate, dostopa do vaših javnih podatkov o profilu, seznama osebam, ki jim sledite, vaših sledilcev, seznamov, vseh vaših objav in priljubljenih. Aplikacije ne morejo nikoli dostopati do vašega e-poštnega naslova ali gesla.

- -
- -

Uporaba spletišča s strani otrok

- -

Če je ta strežnik v EU ali EEA: Naše spletno mesto, izdelki in storitve so namenjeni ljudem, ki so stari vsaj 16 let. Če ste mlajši od 16 let, po zahtevah GDPR (General Data Protection Regulation) ne uporabljajte tega spletnega mesta. (General Data Protection Regulation).

- -

Če je ta strežnik v ZDA: Naše spletno mesto, izdelki in storitve so namenjeni ljudem, ki so stari vsaj 13 let. Če ste mlajši od 13 let, po zahtevah COPPA (Children's Online Privacy Protection Act), ne uporabljajte tega spletnega mesta.

- -

Če je ta strežnik v drugi jurisdikciji, so lahko zakonske zahteve drugačne.

- -
- -

Spremembe naše politike zasebnosti

- -

Če se odločimo za spremembo našega pravilnika o zasebnosti, bomo te spremembe objavili na tej strani.

- -

Ta dokument je CC-BY-SA. Zadnja posodobitev je bila 7. marca 2018.

- -

Prvotno je bila prilagojena v skladu s politiko zasebnost Discourse.

- title: Pravilnik o zasebnosti %{instance} themes: contrast: Mastodon (Visok kontrast) default: Mastodon (Temna) @@ -1854,20 +1751,11 @@ sl: suspend: Račun je suspendiran welcome: edit_profile_action: Nastavitve profila - edit_profile_step: Profil lahko prilagodite tako, da naložite podobo, glavo, spremenite prikazno ime in drugo. Če želite pregledati nove sledilce, preden jim dovolite sledenje, lahko zaklenete svoj račun. explanation: Tu je nekaj nasvetov za začetek final_action: Začnite objavljati - final_step: 'Začnite objavljati! Tudi brez sledilcev bodo vaša javna sporočila videli drugi, na primer na lokalni časovnici in v ključnikih. Morda se želite predstaviti s ključnikom #introductions.' full_handle: Vaša polna ročica full_handle_hint: To bi povedali svojim prijateljem, da vam lahko pošljejo sporočila ali vam sledijo iz drugega strežnika. - review_preferences_action: Spremenite nastavitve - review_preferences_step: Poskrbite, da določite svoje nastavitve, na primer, katera e-poštna sporočila želite prejemati ali katere privzete ravni zasebnosti bodo imele vaše objave. Če nimate potovalne slabosti, lahko omogočite samodejno predvajanje GIF-ov. subject: Dobrodošli na Mastodon - tip_federated_timeline: Združena časovnica je pogled na mrežo Mastodona. Vključuje pa samo ljudi, na katere so naročeni vaši sosedje, zato ni popolna. - tip_following: Privzeto sledite skrbnikom strežnika. Če želite najti več zanimivih ljudi, preverite lokalne in združene časovnice. - tip_local_timeline: Lokalna časovnica je strežniški pogled ljudi na %{instance}. To so vaši neposredni sosedje! - tip_mobile_webapp: Če vam mobilni brskalnik ponuja, da dodate Mastodon na domači zaslon, lahko prejmete potisna obvestila. Deluje kot lastna aplikacija na več načinov! - tips: Nasveti title: Dobrodošli, %{name}! users: follow_limit_reached: Ne morete spremljati več kot %{limit} ljudi diff --git a/config/locales/sq.yml b/config/locales/sq.yml index a2fcab7397..d17ba6c873 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -3,38 +3,25 @@ sq: about: about_mastodon_html: 'Rrjeti shoqëror i së ardhmes: Pa reklama, pa survejim nga korporata, konceptim etik dhe decentralizim! Jini zot i të dhënave tuaja, me Mastodon-in!' about_this: Mbi - active_count_after: aktive - active_footnote: Përdorues Aktivë Mujorë (PAM) administered_by: 'Administruar nga:' api: API apps: Aplikacione për celular - apps_platforms: Përdoreni Mastodon-in prej iOS-i, Android-i dhe platformash të tjera - browse_public_posts: Shfletoni një rrjedhë të drejtpërdrejtë postimesh publike në Mastodon contact: Kontakt contact_missing: I parregulluar contact_unavailable: N/A - continue_to_web: Vazhdoni te aplikacioni web documentation: Dokumentim - federation_hint_html: Me një llogari në %{instance}, do të jeni në gjendje të ndiqni persona në çfarëdo shërbyesi Mastodon dhe më tej. - get_apps: Provoni një aplikacion për celular hosted_on: Mastodon i strehuar në %{domain} instance_actor_flash: | Kjo llogari është një aktor virtual i përdorur për të përfaqësuar vetë shërbyesin dhe jo ndonjë përdorues individual. Përdoret për qëllime federimi dhe s’duhet bllokuar, veç në daçi të bllokoni krejt instancën, me ç’rast do të duhej të përdornit bllokim përkatësie. - learn_more: Mësoni më tepër - logged_in_as_html: Aktualisht jeni i futur si %{username}. - logout_before_registering: Jeni i futur tashmë. privacy_policy: Rregulla Privatësie rules: Rregulla shërbyesi rules_html: 'Më poshtë keni një përmbledhje të rregullave që duhet të ndiqni, nëse doni të keni një llogari në këtë shërbyes Mastodon:' - see_whats_happening: Shihni ç'ndodh - server_stats: 'Statistika shërbyesi:' source_code: Kod burim status_count_after: one: mesazh other: mesazhe status_count_before: Që kanë krijuar - tagline: Rrjet shoqëror i decentralizuar unavailable_content: Shërbyes të moderuar unavailable_content_description: domain: Shërbyes @@ -764,9 +751,6 @@ sq: closed_message: desc_html: E shfaqur në faqen ballore, kur regjistrimet janë të mbyllura. Mund të përdorni etiketa HTML title: Mesazh mbylljeje regjistrimesh - deletion: - desc_html: Lejo këdo të fshijë llogarinë e vet - title: Hapni fshirje llogarie require_invite_text: desc_html: Kur regjistrimet lypin miratim dorazi, tekstin e kërkesës për ftesë “Pse doni të merrni pjesë?” bëje të detyrueshëm, në vend se opsional title: Kërkoju përdoruesve të rinj të plotësojnë doemos një tekst kërkese për ftesë @@ -995,10 +979,8 @@ sq: warning: Bëni shumë kujdes me ato të dhëna. Mos ia jepni kurrë njeriu! your_token: Token-i juaj për hyrje auth: - apply_for_account: Kërko ftesë + apply_for_account: Bëhuni pjesë e radhës change_password: Fjalëkalim - checkbox_agreement_html: Pajtohem me rregullat e shërbyesit dhe kushtet e shërbimit - checkbox_agreement_without_rules_html: Pajtohem me kushtet e shërbimit delete_account: Fshije llogarinë delete_account_html: Nëse dëshironi të fshihni llogarinë tuaj, mund ta bëni që këtu. Do t’ju kërkohet ta ripohoni. description: @@ -1017,6 +999,7 @@ sq: migrate_account: Kaloni në një tjetër llogari migrate_account_html: Nëse doni ta ridrejtoni këtë llogari te një tjetër, këtë mund ta formësoni këtu. or_log_in_with: Ose bëni hyrjen me + privacy_policy_agreement_html: I kam lexuar dhe pajtohem me rregullat e privatësisë providers: cas: CAS saml: SAML @@ -1024,12 +1007,18 @@ sq: registration_closed: "%{instance} s’pranon anëtarë të rinj" resend_confirmation: Ridërgo udhëzime ripohimi reset_password: Ricaktoni fjalëkalimin + rules: + preamble: Këto vendosen dhe zbatimi i tyre është nën kujdesin e moderatorëve të %{domain}. + title: Disa rregulla bazë. security: Siguri set_new_password: Caktoni fjalëkalim të ri setup: email_below_hint_html: Nëse adresa email më poshtë s’është e saktë, mund ta ndryshoni këtu dhe të merrni një email të ri ripohimi. email_settings_hint_html: Email-i i ripohimit u dërgua te %{email}. Nëse ajo adresë email s’është e saktë, mund ta ndryshoni që nga rregullimet e llogarisë. title: Ujdisje + sign_up: + preamble: Me një llogari në këtë shërbyes Mastodon, do të jeni në gjendje të ndiqni cilindo person tjetër në rrjet, pavarësisht se ku strehohet llogaria e tyre. + title: Le të ujdisim llogarinë tuaj në %{domain}. status: account_status: Gjendje llogarie confirming: Po pritet që të plotësohet ripohimi i email-it. @@ -1038,7 +1027,6 @@ sq: redirecting_to: Llogaria juaj është joaktive, ngaqë aktualisht ridrejton te %{acct}. view_strikes: Shihni paralajmërime të dikurshme kundër llogarisë tuaj too_fast: Formulari u parashtrua shumë shpejt, riprovoni. - trouble_logging_in: Probleme me hyrjen? use_security_key: Përdor kyç sigurie authorize_follow: already_following: E ndiqni tashmë këtë llogari @@ -1619,89 +1607,6 @@ sq: too_late: Është shumë vonë për apelim të këtij paralajmërimi tags: does_not_match_previous_name: s’përputhet me emrin e mëparshëm - terms: - body_html: | -

Rregulla Privatësie

-

Ç’informacion mbledhim?

- -
    -
  • Hollësi elementare llogarish: Nëse regjistroheni në këtë shërbyes, mund t’ju kërkohet të jepni një emër përdoruesi, një adresë email dhe një fjalëkalim. Mund të jepni edhe hollësi shtesë profili, bie fjala, një emër për në ekran dhe jetëshkrim, si dhe të ngarkoni një foto profili dhe një figurë kryesh. Emri i përdoruesit, emri në ekran, jetëshkrimi, fotoja e profilit dhe figura e kryes janë përherë të dukshme publikisht.
  • -
  • Postime, ndjekje dhe të tjera hollësi publike: Lista e personave që ndiqni tregohet publikisht, po kjo vlen edhe për ndjekësit tuaj. Kur parashtroni një mesazh, depozitohen gjithashtu data dhe koha, si dhe aplikacioni prej nga parashtruar mesazhin. Mesazhet mund të përmbajnë bashkëngjitje media, bie fjala, foto dhe video. Postimet publike dhe jo të tilla janë të passhme publikisht. Kur te profili juaj përfshini një postim, edhe ky është informacion i passhëm publikisht. Postimet tuaja u dërgohen ndjekësve tuaj, në disa raste kjo do të thotë se dërgohen te shërbyes të ndryshëm dhe në ta depozitohen kopje të tyre. Kur fshini postime, kjo ka gjasa t’u dërgohet ndjekësve tuaj. Veprimi i riblogimit, ose vënia shenjë si i parapëlqyer një postimi tjetër është përherë gjë publike.
  • -
  • Postime të drejtpërdrejta dhe vetëm për ndjekës: Krejt postimet depozitohen dhe përpunohen te shërbyesi. Postimet vetëm për ndjekës u dërgohen ndjekësve tuaj dhe përdoruesve që përmenden në ta, kurse postimet e drejtpërdrejta u dërgohen vetëm përdoruesve të përmendur në to. Në disa raste kjo do të thotë se dërgohen në shërbyes të ndryshëm dhe kopje të tyre depozitohen atje. Përpiqemi në mirëbesim të kufizojmë hyrjen në këto postime të vetëm personave të autorizuar, por shërbyes të tjerë mund të mos bëjnë kështu. Ndaj është e rëndësishme të shqyrtohen shërbyesit të cilëve u përkasin ndjekësit tuaj. Që nga rregullimet mund të aktivizoni/çaktivizoni një mundësi për miratim dhe hedhje poshtë dorazi të ndjekësve të rinj. Ju lutemi, kini parasysh se operatorët e shërbyesve dhe cilido shërbyes marrës mund t’i shohë këto mesazhe, si dhe se marrësit mund të bëjnë foto ekrani, kopjojnë, ose rindajnë me të tjerët ato mesazhe. Mos ndani me të tjerë gjëra me spec përmes Mastodon-it.
  • -
  • IP-ra dhe të tjera tejtëdhëna: Kur bëni hyrjen në llogari, regjistrojmë adresën IP prej nga hyni, si dhe emrin e aplikacionit që përdorni për shfletim. Krejt sesionet me hyrje mund t’i shqyrtoni dhe shfuqizoni që nga rregullimet. Adresa e fundit IP e përdorur depozitohet për deri 12 muaj. Mund të mbajmë gjithashtu regjistra shërbyesi që përfshijnë adresën IP të çdo kërkese ndaj shërbyesit tonë.
  • -
- -
- -

Për se e përdorim informacionin tuaj?

- -

Çfarëdo hollësi që mbledhim prej jush mund të përdoret në rrugët vijuese:

- -
    -
  • Për të dhënë funksionet bazë të Mastodon-it. Me lëndën e personave të tjerë mund të ndërveproni, si dhe të postoni lëndën tuaj, vetëm kur jeni i futur në llogarinë tuaj. Për shembull, mund të ndiqni persona të tjerë për të parë postimet e tyre në rrjedhën tuaj kohore të personalizuar.
  • -
  • Për të ndihmuar në moderimin e bashkësisë, për shembull, krahasimi i adresës tuaj IP me të tjera të ditura, për të pikasur shmangie dëbimesh, apo cenime të tjera.
  • -
  • Adresa email që jepni mund të përdoret për t’ju dërguar informacion, njoftime mbi persona të tjerë që ndërveprojnë me lëndën tuaj, ose që ju dërgojnë mesazhe, si dhe për t’iu përgjigjur kërkesave dhe/ose çështjeve apo pyetjeve të tjera.
  • -
- -
- -

Si e mbrojmë informacionin tuaj?

- -

Sendërtojmë një larmi masash sigurie për të ruajtur parrezikshmërinë e informacionit tuaj personal, kur jepni, parashtroni ose përdorni informacionin tuaj personal. Mes të tjerash, sesioni i shfletuesit tuaj, si dhe trafiku mes aplikacioneve tuaja dhe API-t sigurohen me SSL dhe fjalëkalimi juaj fshehtëzohet me një algoritëm të fuqishëm njëkahësh. Për të siguruar më tej hyrjen në llogarinë tuaj, mund të aktivizoni mirëfilltësim dufaktorësh.

- -
- -

Cili është rregulli ynë për mbajtje të dhënash?

- -

Do të përpiqemi në mirëbesim:

- -
    -
  • Të mbajmë regjistra shërbyesi që përmbajnë adresën IP të krejt kërkesave të bëra këtij shërbyesi, ashtu siç mbahen këta regjistra, për jo më shumë se 90 ditë.
  • -
  • Të mbajmë për jo më shumë se 12 muaj adresat IP përshoqëruar përdoruesve të regjistruar.
  • -
- -

Mund të kërkoni dhe shkarkoni një arkiv të lëndës tuaj, përfshi postimet tuaja, bashkëngjitje media, foto profili dhe figure kryesh.

- -

Mund të fshini kurdo në mënyrë të pakthyeshme llogarinë tuaj.

- -
- -

A përdorim cookies?

- -

Po. Cookie-t janë kartela të vockla që një sajt ose furnizuesi i shërbimit përkatës shpërngul në diskun e kompjuterit tuaj përmes shfletuesit tuaj (nëse e lejoni). Këto cookies i bëjnë të mundur sajtit të njohë shfletuesin tuaj dhe, nëse keni regjistruar një llogari, t’ia përshoqërojë atë llogarisë që keni regjistruar.

- -

Cookie-t i përdorim për të kuptuar dhe ruajtur parapëlqimet tuaja për vizita të ardhshme.

- -
- -

A u japim palëve të jashtme ndonjë informacion?

- -

Nuk u shesim, shkëmbejmë, apo shpërngulim informacion tuajin personalisht të identifikueshëm palëve të jashtme. Këtu nuk përfshin palë të treta të besuara që na ndihmojnë në funksionimin e sajtit tonë, në mbajtjen në këmbë të biznesit tonë, ose për t’ju shërbyer juve, për sa kohë që këto palë pajtohen me mbajtjen rezervat të këtij informacioni. Mundet edhe të japim informacion tuajin, kur besojmë se dhënia është e duhur për të qenë në pajtim me ligjet, për të zbatuar rregullat tonë mbi sajtin, ose për të mbrojtur të drejtat, pronën apo sigurinë tonë apo të të tjerëve.

- -

Lënda juaj publike mund të shkarkohet nga shërbyes të tjerë në rrjet. Postim tuaja publike, si dhe ato vetëm për ndjekësit, u dërgohen shërbyesve ku gjenden ndjekësit tuaj, ndërsa mesazhet e drejtpërdrejtë u dërgohen shërbyesve të marrësve, në rastin kur këta ndjekës apo marrës gjenden në një tjetër shërbyes nga ky.

- -

Kur autorizoni një aplikacion të përdorë llogarinë tuaj, në varësi të fushëveprimit të lejeve që miratoni, ky mund të hyjë në hollësitë e profilit tuaj publik, listën e atyre që ndiqni, ndjekësit tuaj, listat tuaja, krejt postimet tuaja dhe të parapëlqyerit tuaj. Aplikaconet s’mund të njohin kurrë adresën tuaj email dhe fjalëkalimin tuaj.

- -
- -

Përdorim sajti nga fëmijë

- -

Nëse ky shërbyes gjendet në BE ose ZEE: Sajti, produktet dhe shërbimet tona u adresohen të tëra personave që janë të paktën 16 vjeç. Nëse jeni nën moshën 16 vjeç, sipas domosdoshmërive të GDPR-së (Rregullorja e Përgjithshme e Mbrojtjes së të Dhënave) mos e përdorni këtë sajt.

- -

Nëse ky shërbyes gjendet në ShBA: Sajti, produktet dhe shërbimet tona u adresohen të tëra personave që janë të paktën 13 vjeç. Nëse jeni nën moshën 13 vjeç, sipas domosdoshmërive të COPPA-s (Ligji i Mbrojtjes së Privatësisë Internetore të Fëmijëve) mos e përdorni këtë sajt.

- -

kërkesat ligjore mund të jenë të tjera, nëse ky shërbyes gjendet nën një juridiksion tjetër.

- -
- -

Ndryshime te Rregullat tona të Privatësisë

- -

Nëse vendosim të ndryshojmë rregullat tona të privatësisë, ato ndryshime do t’i postojmë te kjo faqe.

- -

Ky dokument licencohet sipas CC-BY-SA. Qe përditësuar së fundi më 26 maj 2022.

- -

Përshtatur fillimisht prej rregulave të privatësisë së Discourse-it.

- title: Rregulla Privatësie të %{instance} themes: contrast: Mastodon (Me shumë kontrast) default: Mastodon (I errët) @@ -1780,20 +1685,13 @@ sq: suspend: Llogari e pezulluar welcome: edit_profile_action: Ujdisje profili - edit_profile_step: Profilin mund ta personalizoni duke ngarkuar një avatar, figurë kryesh, duke ndryshuar emrin tuaj në ekran, etj. Nëse dëshironi të shqyrtoni ndjekës të rinj, përpara se të jenë lejuar t’ju ndjekin, mund të kyçni llogarinë tuaj. + edit_profile_step: Profilin tuaj mund ta përshtatni duke ngarkuar një figurë, duke ndryshuar emrin tuaj në ekran, etj. Mund të zgjidhni të shqyrtoni ndjekës të rinj, para se të jenë lejuar t’ju ndjekin. explanation: Ja disa ndihmëza, sa për t’ia filluar final_action: Filloni të postoni - final_step: 'Filloni të postoni! Edhe pse pa ndjekës, mesazhet tuaj publike mund të shihen nga të tjerët, për shembull te rrjedha kohore vendore dhe në hashtag-ë. Mund të donit të prezantoni veten nën hashtagun #introductions.' + final_step: 'Filloni të postoni! Edhe pa ndjekës, postimet tuaja publike mund të shihen nga të tjerët, për shembull, në rrjedhën kohore vendore, ose në hashtag-ë. Mund të doni të prezantoni veten përmes hashtag-ut #introductions.' full_handle: Identifikuesi juaj i plotë full_handle_hint: Kjo është ajo çka do të duhej t’u tregonit shokëve tuaj, që të mund t’ju dërgojnë mesazhe ose t’ju ndjekin nga një shërbyes tjetër. - review_preferences_action: Ndryshoni parapëlqime - review_preferences_step: Mos harroni të caktoni parapëlqimet tuaja, fjala vjen, ç’email-e dëshironi të merrni, ose çfarë shkalle privatësie do të donit të kishin, si parazgjedhje, postimet tuaja. Nëse nuk ju merren mendtë nga rrotullimi, mund të zgjidhni të aktivizoni vetëluajtje GIF-esh. subject: Mirë se vini te Mastodon-i - tip_federated_timeline: Rrjedha kohore e të federuarve është një pamje e fluksit të rrjetit Mastodon. Por përfshin vetëm persona te të cilët janë pajtuar fqinjët tuaj, pra s’është e plotë. - tip_following: Përgjegjësin e shërbyesit tuaj e ndiqni, si parazgjedhje. Për të gjetur më shumë persona interesantë, shihni te rrjedha kohore vendore dhe ajo e të federuarve. - tip_local_timeline: Rrjedha kohore vendore është një pamje e fluksit të njerëzve në %{instance}. Këta janë fqinjët tuaj më të afërt! - tip_mobile_webapp: Nëse shfletuesi juaj celular ju ofron të shtohet Mastodon-i te skena juaj e kreut, mund të merrni njoftime push. Nga shumë pikëpamje vepron si një aplikacion i brendshëm i platformës së celularit! - tips: Ndihmëza title: Mirë se vini, %{name}! users: follow_limit_reached: S’mund të ndiqni më tepër se %{limit} persona diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 751814e9ab..cf8f3b028a 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -6,7 +6,6 @@ sr-Latn: contact: Kontakt contact_missing: Nije postavljeno hosted_on: Mastodont hostovan na %{domain} - learn_more: Saznajte više source_code: Izvorni kod status_count_before: Koji su napisali user_count_before: Dom za @@ -169,9 +168,6 @@ sr-Latn: closed_message: desc_html: Prikazuje se na glavnoj strani kada je instanca zatvorena za registracije. Možete koristiti HTML tagove title: Poruka o zatvorenoj registraciji - deletion: - desc_html: Dozvoli svima da mogu da obrišu svoj nalog - title: Otvori brisanje naloga site_description: desc_html: Uvodni pasus na naslovnoj strani i u meta HTML tagovima. Možete koristiti HTML tagove, konkretno <a> i <em>. title: Opis instance diff --git a/config/locales/sr.yml b/config/locales/sr.yml index ad2adb1892..a51817761d 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -9,7 +9,6 @@ sr: contact_missing: Није постављено documentation: Документација hosted_on: Мастодонт хостован на %{domain} - learn_more: Сазнајте више source_code: Изворни код status_count_after: few: статуси @@ -295,9 +294,6 @@ sr: closed_message: desc_html: Приказује се на главној страни када је инстанца затворена за регистрације. Можете користити HTML тагове title: Порука о затвореној регистрацији - deletion: - desc_html: Дозволи свима да могу да обришу свој налог - title: Отвори брисање налога site_description: desc_html: Уводни пасус на насловној страни и у meta HTML таговима. Можете користити HTML тагове, конкретно <a> и <em>. title: Опис инстанце @@ -659,20 +655,11 @@ sr: suspend: Налог суспендован welcome: edit_profile_action: Подеси налог - edit_profile_step: Налог можете прилагодити постављањем аватара, заглавља, променом имена и још много тога. Ако желите да прегледате нове пратиоце пре него што буду дозвољени да вас прате, можете закључати свој налог. explanation: Ево неколико савета за почетак final_action: Почните објављивати - final_step: 'Почните објављивати! Чак и без пратиоца ваше јавне поруке ће бити виђене од стране других, нпр. на локалној јавног линији и у тараба за означавање. Можда бисте желели да се представите у #увод тараби за означавање.' full_handle: Ваш пун надимак full_handle_hint: Ово бисте рекли својим пријатељима како би вам они послали поруку, или запратили са друге инстанце. - review_preferences_action: Промените подешавања - review_preferences_step: Обавезно поставите своја подешавања, као што су какву Е-пошту желите да примите или на који ниво приватности желите да ваше поруке буду постављене. Ако немате морску болест или епилепсију, можете изабрати аутоматско покретање ГИФ-а. subject: Добродошли на Мастодон - tip_federated_timeline: Здружена временска линија пружа комплетан увид у Мастодонову мрежу. Али она само укључује људе на које су ваше комшије претплаћене, тако да није комплетна. - tip_following: Аутоматски пратите админа/не вашег сервера. Да пронађете занимљиве људе, проверите локалне и здружене временске линије. - tip_local_timeline: Локална временска линија је комплетан увид људи у %{instance}. Ово су вам прве комшије! - tip_mobile_webapp: Ако вам мобилни претраживач предложи да додате Мастодон на Ваш почетни екран, добијаћете мобилна обавештења. Делује као изворна апликација на много начина! - tips: Савети title: Добродошли, %{name}! users: follow_limit_reached: Не можете пратити више од %{limit} људи diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 29c76c226c..a62990a5c6 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -3,29 +3,17 @@ sv: about: about_mastodon_html: Mastodon är ett socialt nätverk baserat på öppna webbprotokoll och gratis, öppen källkodsprogramvara. Det är decentraliserat som e-post. about_this: Om - active_count_after: aktiv - active_footnote: Månatligen Aktiva användare (MAU) administered_by: 'Administreras av:' api: API apps: Mobilappar - apps_platforms: Använd Mastodon från iOS, Android och andra plattformar - browse_public_posts: Titta på strömmande publika inlägg på Mastodon contact: Kontakt contact_missing: Inte inställd contact_unavailable: Ej tillämplig - continue_to_web: Fortsätt till webbtjänst documentation: Dokumentation - federation_hint_html: Med ett konto på %{instance} kommer du att kunna följa personer på alla Mastodon-servers och mer än så. - get_apps: Prova en mobilapp hosted_on: Mastodon-värd på %{domain} instance_actor_flash: "Detta konto är en virtuell agent som används för att representera servern själv och inte någon individuell användare. Det används av sammanslutningsskäl och ska inte blockeras såvitt du inte vill blockera hela instansen, och för detta fall ska domänblockering användas. \n" - learn_more: Lär dig mer - logged_in_as_html: Inloggad som %{username}. - logout_before_registering: Du är redan inloggad. rules: Serverns regler rules_html: 'Nedan en sammanfattning av kontoreglerna för denna Mastodonserver:' - see_whats_happening: Se vad som händer - server_stats: 'Serverstatistik:' source_code: Källkod status_count_after: one: status @@ -545,9 +533,6 @@ sv: closed_message: desc_html: Visas på framsidan när registreringen är stängd. Du kan använda HTML-taggar title: Stängt registreringsmeddelande - deletion: - desc_html: Tillåt vem som helst att radera sitt konto - title: Öppen kontoradering require_invite_text: desc_html: När nyregistrering kräver manuellt godkännande, gör det obligatoriskt att fylla i text i fältet "Varför vill du gå med?" title: Kräv att nya användare fyller i en inbjudningsförfrågan @@ -643,9 +628,7 @@ sv: warning: Var mycket försiktig med denna data. Dela aldrig den med någon! your_token: Din access token auth: - apply_for_account: Be om en inbjudan change_password: Lösenord - checkbox_agreement_html: Jag accepterar serverreglerna och villkoren för användning delete_account: Radera konto delete_account_html: Om du vill radera ditt konto kan du fortsätta här. Du kommer att bli ombedd att bekräfta. description: @@ -679,7 +662,6 @@ sv: confirming: Väntar på att e-postbekräftelsen ska slutföras. redirecting_to: Ditt konto är inaktivt eftersom det för närvarande dirigeras om till %{acct}. too_fast: Formuläret har skickats för snabbt, försök igen. - trouble_logging_in: Har du problem med att logga in? use_security_key: Använd säkerhetsnyckel authorize_follow: already_following: Du följer redan detta konto @@ -1188,20 +1170,11 @@ sv: suspend: Kontot avstängt welcome: edit_profile_action: Profilinställning - edit_profile_step: Du kan anpassa din profil genom att ladda upp en avatar, bakgrundsbild, ändra ditt visningsnamn och mer. Om du vill granska nya följare innan de får följa dig kan du låsa ditt konto. explanation: Här är några tips för att komma igång final_action: Börja posta - final_step: 'Börja posta! Även utan anhängare kan dina offentliga meddelanden ses av andra, till exempel på den lokala tidslinjen och i hashtags. Du får gärna presentera dig via hashtaggen #introductions.' full_handle: Ditt fullständiga användarnamn/mastodonadress full_handle_hint: Det här är vad du skulle berätta för dina vänner så att de kan meddela eller följa dig från en annan instans. - review_preferences_action: Ändra inställningar - review_preferences_step: Se till att du ställer in dina inställningar, t.ex. vilka e-postmeddelanden du vill ta emot eller vilken integritetsnivå du vill att dina inlägg ska vara. Om du inte har åksjuka, kan du välja att aktivera automatisk uppspelning av GIF-bilder. subject: Välkommen till Mastodon - tip_federated_timeline: Den förenade tidslinjen är en störtflodsvy av Mastodon-nätverket. Men det inkluderar bara människor som dina grannar följer, så det är inte komplett. - tip_following: Du följer din servers administratör(er) som standard. För att hitta fler intressanta personer, kolla de lokala och förenade tidslinjerna. - tip_local_timeline: Den lokala tidslinjen är en störtflodsvy av personer på %{instance}. Det här är dina närmaste grannar! - tip_mobile_webapp: Om din mobila webbläsare erbjuder dig att lägga till Mastodon på din hemskärm kan du få push-aviseringar. Det fungerar som en inbyggd app på många sätt! - tips: Tips title: Välkommen ombord, %{name}! users: follow_limit_reached: Du kan inte följa fler än %{limit} personer diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 4523558b06..8f54f93f4a 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -3,22 +3,14 @@ ta: about: about_mastodon_html: 'எதிர்காலத்தின் சமூகப் பிணையம்: விளம்பரம் இல்லை, பொதுநிறுவனக் கண்காணிப்பு இல்லை, நெறிக்குட்பட்ட வரைவுத்திட்டம், மற்றும் பகிர்ந்தாளுதல்! மஸ்டோடோனுடன் உங்கள் தரவுகள் உங்களுக்கே சொந்தம்!' about_this: தகவல் - active_count_after: செயலில் - active_footnote: செயலிலுள்ள மாதாந்திர பயனர்கள் (செமாப) administered_by: 'நிர்வாகம்:' api: செயலிக்கான மென்பொருள் இடைமுகம் API apps: கைப்பேசி செயலிகள் - apps_platforms: மஸ்டோடோனை ஐஓஎஸ், ஆன்டிராய்டு, மற்றும் பிற இயங்குதளங்களில் பயன்படுத்துக - browse_public_posts: நேரலையில் பொதுப் பதிவுகளை மஸ்டோடோனிலிருந்து காண்க contact: தொடர்புக்கு contact_missing: நிறுவப்படவில்லை contact_unavailable: பொ/இ documentation: ஆவணச்சான்று - get_apps: கைப்பேசி செயலியை முயற்சி செய்யவும் hosted_on: மாஸ்டோடாண் %{domain} இனையத்தில் இயங்குகிறது - learn_more: மேலும் அறிய - see_whats_happening: என்ன நடக்கிறது என்று பார்க்க - server_stats: 'வழங்கியின் புள்ளிவிவரங்கள்:' source_code: நிரல் மூலம் status_count_after: one: பதிவு diff --git a/config/locales/tai.yml b/config/locales/tai.yml index f7451a9069..b4cbbbcb23 100644 --- a/config/locales/tai.yml +++ b/config/locales/tai.yml @@ -1,7 +1,6 @@ --- tai: about: - see_whats_happening: Khòaⁿ hoat-seng siáⁿ-mih tāi-chì unavailable_content_description: reason: Lí-iû what_is_mastodon: Siáⁿ-mih sī Mastodon? diff --git a/config/locales/te.yml b/config/locales/te.yml index 5a775806b2..4741240245 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -10,7 +10,6 @@ te: contact_unavailable: వర్తించదు documentation: పత్రీకరణ hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది - learn_more: మరింత తెలుసుకోండి source_code: సోర్సు కోడ్ status_count_after: one: స్థితి diff --git a/config/locales/th.yml b/config/locales/th.yml index a0ce8752a2..0016f2ffec 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -3,37 +3,24 @@ th: about: about_mastodon_html: 'เครือข่ายสังคมแห่งอนาคต: ไม่มีโฆษณา ไม่มีการสอดแนมโดยองค์กร การออกแบบตามหลักจริยธรรม และการกระจายศูนย์! เป็นเจ้าของข้อมูลของคุณด้วย Mastodon!' about_this: เกี่ยวกับ - active_count_after: ใช้งานอยู่ - active_footnote: ผู้ใช้ที่ใช้งานอยู่รายเดือน (MAU) administered_by: 'ดูแลโดย:' api: API apps: แอปมือถือ - apps_platforms: ใช้ Mastodon จาก iOS, Android และแพลตฟอร์มอื่น ๆ - browse_public_posts: เรียกดูสตรีมสดของโพสต์สาธารณะใน Mastodon contact: ติดต่อ contact_missing: ไม่ได้ตั้ง contact_unavailable: ไม่มี - continue_to_web: ดำเนินการต่อไปยังแอปเว็บ documentation: เอกสารประกอบ - federation_hint_html: ด้วยบัญชีที่ %{instance} คุณจะสามารถติดตามผู้คนในเซิร์ฟเวอร์ Mastodon และอื่น ๆ - get_apps: ลองแอปมือถือ hosted_on: Mastodon ที่โฮสต์ที่ %{domain} instance_actor_flash: 'บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการปิดกั้นเว้นแต่คุณต้องการปิดกั้นทั้งอินสแตนซ์ ในกรณีนี้คุณควรใช้การปิดกั้นโดเมน ' - learn_more: เรียนรู้เพิ่มเติม - logged_in_as_html: คุณกำลังเข้าสู่ระบบเป็น %{username} ในปัจจุบัน - logout_before_registering: คุณได้เข้าสู่ระบบอยู่แล้ว privacy_policy: นโยบายความเป็นส่วนตัว rules: กฎของเซิร์ฟเวอร์ rules_html: 'ด้านล่างคือข้อมูลสรุปของกฎที่คุณจำเป็นต้องปฏิบัติตามหากคุณต้องการมีบัญชีในเซิร์ฟเวอร์ Mastodon นี้:' - see_whats_happening: ดูสิ่งที่กำลังเกิดขึ้น - server_stats: 'สถิติเซิร์ฟเวอร์:' source_code: โค้ดต้นฉบับ status_count_after: other: โพสต์ status_count_before: ผู้เผยแพร่ - tagline: เครือข่ายสังคมแบบกระจายศูนย์ unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม unavailable_content_description: domain: เซิร์ฟเวอร์ @@ -740,9 +727,6 @@ th: closed_message: desc_html: แสดงในหน้าแรกเมื่อปิดการลงทะเบียน คุณสามารถใช้แท็ก HTML title: ข้อความการปิดการลงทะเบียน - deletion: - desc_html: อนุญาตให้ใครก็ตามลบบัญชีของเขา - title: เปิดการลบบัญชี require_invite_text: title: ต้องให้ผู้ใช้ใหม่ป้อนเหตุผลที่จะเข้าร่วม registrations_mode: @@ -952,10 +936,7 @@ th: warning: ระวังเป็นอย่างสูงกับข้อมูลนี้ อย่าแบ่งปันข้อมูลกับใครก็ตาม! your_token: โทเคนการเข้าถึงของคุณ auth: - apply_for_account: ขอคำเชิญ change_password: รหัสผ่าน - checkbox_agreement_html: ฉันเห็นด้วยกับ กฎของเซิร์ฟเวอร์ และ เงื่อนไขการให้บริการ - checkbox_agreement_without_rules_html: ฉันเห็นด้วยกับ เงื่อนไขการให้บริการ delete_account: ลบบัญชี delete_account_html: หากคุณต้องการลบบัญชีของคุณ คุณสามารถ ดำเนินการต่อที่นี่ คุณจะได้รับการถามเพื่อการยืนยัน description: @@ -995,7 +976,6 @@ th: redirecting_to: บัญชีของคุณไม่ได้ใช้งานเนื่องจากบัญชีกำลังเปลี่ยนเส้นทางไปยัง %{acct} ในปัจจุบัน view_strikes: ดูการดำเนินการที่ผ่านมากับบัญชีของคุณ too_fast: ส่งแบบฟอร์มเร็วเกินไป ลองอีกครั้ง - trouble_logging_in: มีปัญหาในการเข้าสู่ระบบ? use_security_key: ใช้กุญแจความปลอดภัย authorize_follow: already_following: คุณกำลังติดตามบัญชีนี้อยู่แล้ว @@ -1524,8 +1504,6 @@ th: sensitive_content: เนื้อหาที่ละเอียดอ่อน tags: does_not_match_previous_name: ไม่ตรงกับชื่อก่อนหน้านี้ - terms: - title: นโยบายความเป็นส่วนตัวของ %{instance} themes: contrast: Mastodon (ความคมชัดสูง) default: Mastodon (มืด) @@ -1602,20 +1580,11 @@ th: suspend: ระงับบัญชีอยู่ welcome: edit_profile_action: ตั้งค่าโปรไฟล์ - edit_profile_step: คุณสามารถปรับแต่งโปรไฟล์ของคุณได้โดยอัปโหลดภาพประจำตัว, ส่วนหัว เปลี่ยนชื่อที่แสดงของคุณ และอื่น ๆ หากคุณต้องการตรวจทานผู้ติดตามใหม่ก่อนที่จะอนุญาตให้เขาติดตามคุณ คุณสามารถล็อคบัญชีของคุณ explanation: นี่คือเคล็ดลับบางส่วนที่จะช่วยให้คุณเริ่มต้นใช้งาน final_action: เริ่มโพสต์ - final_step: 'เริ่มโพสต์! แม้ว่าไม่มีผู้ติดตาม โพสต์สาธารณะของคุณอาจเห็นโดยผู้อื่น ตัวอย่างเช่น ในเส้นเวลาในเซิร์ฟเวอร์และในแฮชแท็ก คุณอาจต้องการแนะนำตัวเองในแฮชแท็ก #introductions' full_handle: นามเต็มของคุณ full_handle_hint: นี่คือสิ่งที่คุณจะบอกเพื่อน ๆ ของคุณ เพื่อให้เขาสามารถส่งข้อความหรือติดตามคุณจากเซิร์ฟเวอร์อื่น - review_preferences_action: เปลี่ยนการกำหนดลักษณะ - review_preferences_step: ตรวจสอบให้แน่ใจว่าได้ตั้งการกำหนดลักษณะของคุณ เช่น อีเมลใดที่คุณต้องการรับ หรือระดับความเป็นส่วนตัวใดที่คุณต้องการให้โพสต์ของคุณเป็นค่าเริ่มต้น หากคุณไม่มีภาวะป่วยจากการเคลื่อนไหว คุณสามารถเลือกเปิดใช้งานการเล่น GIF อัตโนมัติ subject: ยินดีต้อนรับสู่ Mastodon - tip_federated_timeline: เส้นเวลาที่ติดต่อกับภายนอกคือมุมมองสายน้ำของเครือข่าย Mastodon แต่เส้นเวลารวมเฉพาะผู้คนที่เพื่อนบ้านของคุณบอกรับเท่านั้น ดังนั้นเส้นเวลาจึงไม่ครบถ้วน - tip_following: คุณติดตามผู้ดูแลเซิร์ฟเวอร์ของคุณเป็นค่าเริ่มต้น เพื่อค้นหาผู้คนที่น่าสนใจเพิ่มเติม ตรวจสอบเส้นเวลาในเซิร์ฟเวอร์และที่ติดต่อกับภายนอก - tip_local_timeline: เส้นเวลาในเซิร์ฟเวอร์คือมุมมองสายน้ำของผู้คนใน %{instance} นี่คือเพื่อนบ้านใกล้เคียงของคุณ! - tip_mobile_webapp: หากเบราว์เซอร์มือถือของคุณเสนอให้คุณเพิ่ม Mastodon ไปยังหน้าจอหลักของคุณ คุณจะสามารถรับการแจ้งเตือนแบบผลัก แอปเว็บทำหน้าที่เหมือนแอปเนทีฟในหลาย ๆ ด้าน! - tips: เคล็ดลับ title: ยินดีต้อนรับ %{name}! users: follow_limit_reached: คุณไม่สามารถติดตามมากกว่า %{limit} คน diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 975620092c..995fa1e303 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -3,38 +3,25 @@ tr: about: about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir. about_this: Hakkında - active_count_after: etkin - active_footnote: Aylık Aktif Kullanıcılar (AAK) administered_by: 'Yönetici:' api: API apps: Mobil uygulamalar - apps_platforms: İos, Android ve diğer platformlardaki Mastodon'u kullanın - browse_public_posts: Mastodon'daki herkese açık yayınlara göz atın contact: İletişim contact_missing: Ayarlanmadı contact_unavailable: Yok - continue_to_web: Web uygulamasına git documentation: Belgeler - federation_hint_html: "%{instance} hesabınızla, herhangi bir Mastodon sunucusundaki ve haricindeki kişileri takip edebilirsiniz." - get_apps: Bir mobil uygulamayı deneyin hosted_on: Mastodon %{domain} üzerinde barındırılıyor instance_actor_flash: | Bu hesap, herhangi bir kullanıcıyı değil sunucunun kendisini temsil etmek için kullanılan sanal bir aktördür. Federasyon amaçlı kullanılır ve tüm yansıyı engellemek istemediğiniz sürece engellenmemelidir; bu durumda bir etki alanı bloğu kullanmanız gerekir. - learn_more: Daha fazla bilgi edinin - logged_in_as_html: Şu an %{username} olarak oturum açmışsınız. - logout_before_registering: Zaten oturumunuz açık. privacy_policy: Gizlilik Politikası rules: Sunucu kuralları rules_html: 'Aşağıda, bu Mastodon sunucusu üzerinde bir hesap açmak istiyorsanız uymanız gereken kuralların bir özeti var:' - see_whats_happening: Neler olduğunu görün - server_stats: 'Sunucu istatistikleri:' source_code: Kaynak kodu status_count_after: one: durum yazıldı other: durum yazıldı status_count_before: Şu ana kadar - tagline: Merkezi olmayan sosyal ağ unavailable_content: Denetlenen sunucular unavailable_content_description: domain: Sunucu @@ -767,9 +754,6 @@ tr: closed_message: desc_html: Kayıt alımları kapatıldığında ana sayfada görüntülenecek mesajdır.
HTML etiketleri kullanabilirsiniz title: Kayıt alımları kapatılma mesajı - deletion: - desc_html: Herkese hesabını silme izni ver - title: Hesap silmeyi aç require_invite_text: desc_html: Kayıtlar elle doğrulama gerektiriyorsa, "Neden katılmak istiyorsunuz?" metin girdisini isteğe bağlı yerine zorunlu yapın title: Yeni kullanıcıların katılmak için bir gerekçe sunmasını gerektir @@ -1001,10 +985,8 @@ tr: warning: Bu verilere çok dikkat edin. Asla kimseyle paylaşmayın! your_token: Erişim belirteciniz auth: - apply_for_account: Davet et + apply_for_account: Bekleme listesine gir change_password: Parola - checkbox_agreement_html: Sunucu kurallarını ve hizmet şartlarını kabul ediyorum - checkbox_agreement_without_rules_html: Hizmet şartlarını kabul ediyorum delete_account: Hesabı sil delete_account_html: Hesabını silmek istersen, buradan devam edebilirsin. Onay istenir. description: @@ -1023,6 +1005,7 @@ tr: migrate_account: Farklı bir hesaba taşıyın migrate_account_html: Bu hesabı başka bir hesaba yönlendirmek istiyorsan, buradan yapılandırabilirsin. or_log_in_with: 'Veya şununla oturum açın:' + privacy_policy_agreement_html: Gizlilik politikasını okudum ve kabul ettim providers: cas: CAS saml: SAML @@ -1030,12 +1013,18 @@ tr: registration_closed: "%{instance} yeni üyeler kabul etmemektedir" resend_confirmation: Onaylama talimatlarını tekrar gönder reset_password: Parolayı sıfırla + rules: + preamble: Bunlar, %{domain} moderatörleri tarafından ayarlanmış ve uygulanmıştır. + title: Bazı temel kurallar. security: Güvenlik set_new_password: Yeni parola belirle setup: email_below_hint_html: Eğer aşağıdaki e-posta adresi yanlışsa, onu burada değiştirebilir ve yeni bir doğrulama e-postası alabilirsiniz. email_settings_hint_html: Onaylama e-postası %{email} adresine gönderildi. Eğer bu e-posta adresi doğru değilse, hesap ayarlarından değiştirebilirsiniz. title: Kurulum + sign_up: + preamble: Bu Mastodon sunucusu üzerinden bir hesap ile ağdaki herhangi bir kişiyi, hesabı hangi sunucuda saklanırsa saklansın, takip edebilirsiniz. + title: "%{domain} için kurulumunuzu yapalım." status: account_status: Hesap durumu confirming: E-posta doğrulamasının tamamlanması bekleniyor. @@ -1044,7 +1033,6 @@ tr: redirecting_to: Hesabınız aktif değil çünkü şu anda %{acct} adresine yönlendirilmektedir. view_strikes: Hesabınıza yönelik eski eylemleri görüntüleyin too_fast: Form çok hızlı gönderildi, tekrar deneyin. - trouble_logging_in: Oturum açarken sorun mu yaşıyorsunuz? use_security_key: Güvenlik anahtarını kullan authorize_follow: already_following: Bu hesabı zaten takip ediyorsunuz @@ -1625,88 +1613,6 @@ tr: too_late: Bu eyleme itiraz etmek için çok geç tags: does_not_match_previous_name: önceki adla eşleşmiyor - terms: - body_html: | -

Gizlilik Politikası

-

Hangi bilgileri topluyoruz?

- -
    -
  • Temel hesap bilgileri: Bu sunucuya kaydolursanız, bir kullanıcı adı, bir e-posta adresi ve bir parola girmeniz istenebilir. Ayrıca, ekran adı ve biyografi gibi ek profil bilgileri girebilir ve bir profil fotoğrafı ve başlık resmi yükleyebilirsiniz. Kullanıcı adı, ekran ad, biyografi, profil fotoğrafı ve başlık resmi her zaman herkese açık olarak listelenir.
  • -
  • Gönderiler, takip etmeler ve diğer herkese açık bilgiler: Takip ettiğiniz kişilerin listesi herkese açık olarak listelenir, sizi takip edenler için de aynısı geçerlidir. Bir mesaj gönderdiğinizde, mesajı gönderdiğiniz uygulamanın yanı sıra tarih ve saati de saklanır. Mesajlar, resim ve video gibi medya ekleri içerebilir. Herkese açık ve listelenmemiş gönderiler halka açıktır. Profilinizde bir gönderiyi yayınladığınızda, bu da herkese açık olarak mevcut bir bilgidir. Gönderileriniz takipçilerinize iletilir, bazı durumlarda farklı sunuculara gönderilir ve kopyalar orada saklanır. Gönderilerinizi sildiğinizde, bu da takipçilerinize iletilir. Başka bir gönderiyi yeniden bloglama veya favorileme eylemi her zaman halka açıktır.
  • -
  • Doğrudan ve takipçilere özel gönderiler: Tüm gönderiler sunucuda saklanır ve işlenir. Takipçilere özel gönderiler, takipçilerinize ve içinde bahsedilen kullanıcılara, doğrudan gönderiler ise yalnızca içinde bahsedilen kullanıcılara iletilir. Bu, bazı durumlarda farklı sunuculara iletildiği ve kopyaların orada saklandığı anlamına gelir. Bu gönderilere erişimi yalnızca yetkili kişilerle sınırlamak için iyi niyetle çalışıyoruz, ancak diğer sunucular bunu yapamayabilir. Bu nedenle, takipçilerinizin ait olduğu sunucuları incelemek önemlidir. Ayarlarda yeni izleyicileri manuel olarak onaylama ve reddetme seçeneğini değiştirebilirsiniz. Sunucuyu ve alıcı sunucuyu işleten kişilerin bu mesajları görüntüleyebileceğini unutmayın, ve alıcılar ekran görüntüsü alabilir, kopyalayabilir veya başka bir şekilde yeniden paylaşabilir. Mastodon üzerinden herhangi bir hassas bilgi paylaşmayın.
  • -
  • IP'ler ve diğer meta veriler: Oturum açarken, giriş yaptığınız IP adresini ve tarayıcı uygulamanızın adını kaydederiz. Giriş yapılan tüm oturumlar, incelemek ve iptal etmek için ayarlarda mevcuttur. En son kullanılan IP adresi 12 aya kadar saklanır. Sunucumuza gelen her isteğin IP adresini içeren sunucu loglarını da saklayabiliriz.
  • -
- -
- -

Bilgilerinizi ne için kullanıyoruz?

- -

Sizden topladığımız bilgilerin herhangi bir kısmı aşağıdaki şekillerde kullanılabilir:

- -
    -
  • Mastodon'un ana işlevselliğini sağlamak için. Yalnızca oturum açtığınızda diğer kişilerin içeriğiyle etkileşime girebilir ve kendi içeriğinizi gönderebilirsiniz. Örneğin, başkalarının kombine gönderilerini kendi kişiselleştirilmiş ana sayfanızdaki zaman çizelgenizde görüntülemek için onları takip edebilirsiniz.
  • -
  • Topluluğun denetlenmesine yardımcı olmak için, örneğin, yasaktan kaçınma veya diğer ihlalleri belirlemek için IP adresinizin diğer bilinen adreslerle karşılaştırılması.
  • -
  • Verdiğiniz e-posta adresi, size bilgi, içeriğinizle etkileşimde bulunan diğer kişilerle ilgili bildirimler veya mesaj göndermek, sorgulara ve/veya diğer istek ve sorulara cevap vermek için kullanılabilir.
  • -
- -
- -

Bilgilerinizi nasıl koruyoruz?

- -

Kişisel bilgilerinizi girerken, gönderirken veya onlara erişirken kişisel bilgilerinizin güvenliğini sağlamak için çeşitli güvenlik önlemleri uyguluyoruz. Diğer şeylerin yanı sıra, tarayıcı oturumunuz ve uygulamalarınız ile API arasındaki trafik SSL ile güvence altına alınır ve şifreniz sağlam bir tek yönlü bir algoritma kullanılarak şifrelenir. Hesabınıza daha güvenli bir şekilde erişebilmek için iki adımlı kimlik doğrulamasını etkinleştirebilirsiniz.

- -
- -

Veri saklama politikamız nedir?

- -

Şunları yapmak için iyi niyetli bir şekilde çalışacağız:

- -
    -
  • Bu sunucuya yapılan tüm isteklerin IP adresini içeren sunucu loglarını, bu tür logların şimdiye kadar saklandığı gibi, 90 günden fazla saklamayacağız.
  • -
  • Kayıtlı kullanıcılarla ilişkili IP adreslerini en fazla 12 ay boyunca saklayacağız.
  • -
-

Gönderileriniz, medya ekleriniz, profil fotoğrafınız ve başlık resminiz dahil, içeriğimizin arşivini talep edebilir ve indirebilirsiniz.

- -

Hesabınızı istediğiniz zaman geri alınamaz şekilde silebilirsiniz.

- -
- -

Çerez kullanıyor muyuz?

- -

Evet. Çerezler, bir sitenin veya servis sağlayıcısının Web tarayıcınız üzerinden bilgisayarınızın sabit diskine aktardığı küçük dosyalardır (eğer izin verirseniz). Bu çerezler sitenin tarayıcınızı tanımasını ve kayıtlı bir hesabınız varsa, kayıtlı hesabınızla ilişkilendirmesini sağlar.

- -

Sonraki ziyaretlerde tercihlerinizi anlamak ve kaydetmek için çerezleri kullanıyoruz.

- -
- -

Herhangi bir bilgiyi dış taraflara açıklıyor muyuz?

- -

Kişisel olarak tanımlanabilir bilgilerinizi dış taraflara satmıyor, takas etmiyor veya devretmiyoruz. Bu, taraflarımız bu bilgileri gizli tutmayı kabul ettiği sürece sitemizi işletmemize, işimizi yürütmemize veya size hizmet etmemize yardımcı olan güvenilir üçüncü tarafları içermemektedir. Ayrıca, yayınlanmanın yasalara uymayı, site politikalarımızı yürürlüğe koymayı ya da kendimizin ya da diğerlerinin haklarını, mülklerini ya da güvenliğini korumamızı sağladığına inandığımızda bilgilerinizi açıklayabiliriz.

- -

Herkese açık içeriğiniz ağdaki diğer sunucular tarafından indirilebilir. Bu takipçiler veya alıcılar bundan farklı bir sunucuda bulundukları sürece, herkese açık ve takipçilere özel gönderileriniz, takipçilerinizin bulunduğu sunuculara, ve doğrudan mesajlar, alıcıların sunucularına iletilir.

- -

Hesabınızı kullanması için bir uygulamayı yetkilendirdiğinizde, onayladığınız izinlerin kapsamına bağlı olarak, herkese açık profil bilgilerinize, takip ettiklerinizin listesine, takipçilerinize, listelerinize, tüm gönderilerinize ve favorilerinize erişebilir. Uygulamalar e-posta adresinize veya parolanıza asla erişemez.

- -
- -

Sitenin çocuklar tarafından kullanımı

- -

Bu sunucu AB’de veya AEA’da ise: Site, ürün ve hizmetlerimizin tamamı en az 16 yaşında olan kişilere yöneliktir. Eğer 16 yaşın altındaysanız, GDPR yükümlülükleri gereği (General Data Protection Regulation) bu siteyi kullanmayın.

- -

Bu sunucu ABD’de ise: Site, ürün ve hizmetlerimizin tamamı en az 13 yaşında olan kişilere yöneliktir. Eğer 13 yaşın altındaysanız, COPPA yükümlülükleri gereği (Children's Online Privacy Protection Act) bu siteyi kullanmayın.

- -

Bu sunucu başka bir ülkede ise yasal gereklilikler farklı olabilir.

- -
- -

Gizlilik Politikamızdaki Değişiklikler

- -

Gizlilik politikamızı değiştirmeye karar verirsek, bu değişiklikleri bu sayfada yayınlayacağız.

- -

Bu belge CC-BY-SA altında lisanslanmıştır. En son 26 Mayıs 2022 tarihinde güncellenmiştir.

- -

Discourse gizlilik politikasından uyarlanmıştır.

- title: "%{instance} Gizlilik Politikası" themes: contrast: Mastodon (Yüksek karşıtlık) default: Mastodon (Karanlık) @@ -1785,20 +1691,13 @@ tr: suspend: Hesap askıya alındı welcome: edit_profile_action: Profil kurulumu - edit_profile_step: Bir avatar veya başlık yükleyerek, ekran adınızı değiştirerek ve daha fazlasını yaparak profilinizi kişiselleştirebilirsiniz. Yeni takipçileri sizi takip etmelerine izin verilmeden önce incelemek isterseniz, hesabınızı kilitleyebilirsiniz. + edit_profile_step: Bir profil resmi yükleyerek, ekran adınızı değiştirerek ve daha fazlasını yaparak profilinizi kişiselleştirebilirsiniz. Sizi takip etmelerine izin verilmeden önce yeni takipçileri incelemeyi tercih edebilirsiniz. explanation: İşte sana başlangıç için birkaç ipucu final_action: Gönderi yazmaya başlayın - final_step: 'Gönderi yazmaya başlayın! Takipçiler olmadan bile, herkese açık mesajlarınız başkaları tarafından görülebilir, örneğin yerel zaman çizelgesinde ve etiketlerde. Kendinizi #introductions etiketinde tanıtmak isteyebilirsiniz.' + final_step: 'Gönderi yazmaya başlayın! Takipçiler olmadan bile, herkese açık gönderileriniz başkaları tarafından görülebilir, örneğin yerel zaman tünelinde veya etiketlerde. Kendinizi #introductions etiketinde tanıtmak isteyebilirsiniz.' full_handle: Tanıtıcınız full_handle_hint: Arkadaşlarınıza, size başka bir sunucudan mesaj atabilmeleri veya sizi takip edebilmeleri için söyleyeceğiniz şey budur. - review_preferences_action: Tercihleri değiştirin - review_preferences_step: Hangi e-postaları almak veya gönderilerinizin varsayılan olarak hangi gizlilik seviyesinde olmasını istediğiniz gibi tercihlerinizi ayarladığınızdan emin olun. Hareket hastalığınız yoksa, GIF otomatik oynatmayı etkinleştirmeyi seçebilirsiniz. subject: Mastodon'a hoş geldiniz - tip_federated_timeline: Federe zaman tüneli, Mastodon ağının genel bir görüntüsüdür. Ancak yalnızca komşularınızın abone olduğu kişileri içerir, bu yüzden tamamı değildir. - tip_following: Sunucu yönetici(ler)ini varsayılan olarak takip edersiniz. Daha ilginç insanlar bulmak için yerel ve federe zaman çizelgelerini kontrol edin. - tip_local_timeline: Yerel zaman çizelgesi, %{instance} üzerindeki kişilerin genel bir görüntüsüdür. Bunlar senin en yakın komşularındır! - tip_mobile_webapp: Mobil tarayıcınız size ana ekranınıza Mastodon eklemenizi önerirse, push bildirimleri alabilirsiniz. Birçok yönden yerli bir uygulama gibi davranır! - tips: İpuçları title: Gemiye hoşgeldin, %{name}! users: follow_limit_reached: "%{limit} kişiden daha fazlasını takip edemezsiniz" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 63a262876e..956e243661 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -3,30 +3,18 @@ uk: about: about_mastodon_html: 'Соціальна мережа майбутнього: жодної реклами, жодного корпоративного нагляду, етичний дизайн та децентралізація! З Mastodon ваші дані під вашим контролем!' about_this: Про цей сервер - active_count_after: активних - active_footnote: Щомісячно активні користувачі (MAU) administered_by: 'Адміністратор:' api: API apps: Мобільні застосунки - apps_platforms: Користуйтесь Mastodon на iOS, Android та інших платформах - browse_public_posts: Переглядайте потік публічних постів на Mastodon contact: Зв'язатися contact_missing: Не зазначено contact_unavailable: Недоступно - continue_to_web: Перейти до вебзастосунку documentation: Документація - federation_hint_html: З обліковим записом на %{instance} ви зможете слідкувати за людьми на будь-якому сервері Mastodon та поза ним. - get_apps: Спробуйте мобільний додаток hosted_on: Mastodon розміщено на %{domain} instance_actor_flash: "Цей обліковий запис є віртуальною особою, яка використовується для представлення самого сервера, а не певного користувача. Він використовується для потреб федерації і не повинен бути заблокований, якщо тільки ви не хочете заблокувати весь сервер, у цьому випадку ви повинні скористатися блокуванням домену. \n" - learn_more: Дізнатися більше - logged_in_as_html: Зараз ви увійшли як %{username}. - logout_before_registering: Ви вже увійшли. privacy_policy: Політика конфіденційності rules: Правила сервера rules_html: 'Внизу наведено підсумок правил, яких ви повинні дотримуватися, якщо хочете мати обліковий запис на цьому сервері Mastodon:' - see_whats_happening: Погляньте, що відбувається - server_stats: 'Статистика серверу:' source_code: Вихідний код status_count_after: few: статуса @@ -34,7 +22,6 @@ uk: one: статус other: статуси status_count_before: Опубліковано - tagline: Децентралізована соціальна мережа unavailable_content: Недоступний вміст unavailable_content_description: domain: Сервер @@ -792,9 +779,6 @@ uk: closed_message: desc_html: Відображається на титульній сторінці, коли реєстрація закрита
Можна використовувати HTML-теги title: Повідомлення про закриту реєстрацію - deletion: - desc_html: Дозволити будь-кому видаляти свій обліковий запис - title: Видалення відкритого облікового запису require_invite_text: desc_html: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим title: Вимагати повідомлення причини приєднання від нових користувачів @@ -1034,10 +1018,8 @@ uk: warning: Будьте дуже обережні з цими даними. Ніколи не діліться ними ні з ким! your_token: Ваш токен доступу auth: - apply_for_account: Запитати запрошення + apply_for_account: Отримати у списку очікування change_password: Пароль - checkbox_agreement_html: Я погоджуюсь з правилами сервера та умовами використання - checkbox_agreement_without_rules_html: Я погоджуюся з умовами використання delete_account: Видалити обліковий запис delete_account_html: Якщо ви хочете видалити свій обліковий запис, ви можете перейти сюди. Вас попросять підтвердити дію. description: @@ -1056,6 +1038,7 @@ uk: migrate_account: Переїхати на інший обліковий запис migrate_account_html: Якщо ви бажаєте перенаправити цей обліковий запис на інший, ви можете налаштувати це тут. or_log_in_with: Або увійдіть з + privacy_policy_agreement_html: Мною прочитано і я погоджуюся з політикою приватності providers: cas: CAS saml: SAML @@ -1063,12 +1046,18 @@ uk: registration_closed: "%{instance} не приймає нових членів" resend_confirmation: Повторно відправити інструкції з підтвердження reset_password: Скинути пароль + rules: + preamble: Вони налаштовані та закріплені модераторами %{domain}. + title: Деякі основні правила. security: Зміна паролю set_new_password: Встановити новий пароль setup: email_below_hint_html: Якщо ця електронна адреса не є вірною, ви можете змінити її тут та отримати новий лист для підтвердження. email_settings_hint_html: Електронний лист-підтвердження було вислано до %{email}. Якщо ця адреса електронної пошти не є вірною, ви можете змінити її в налаштуваннях облікового запису. title: Налаштування + sign_up: + preamble: За допомогою облікового запису на цьому сервері Mastodon, ви зможете слідкувати за будь-якою іншою людиною в мережі, не зважаючи на те, де розміщений обліковий запис. + title: Налаштуймо вас на %{domain}. status: account_status: Статус облікового запису confirming: Очікуємо на завершення підтвердження за допомогою електронної пошти. @@ -1077,7 +1066,6 @@ uk: redirecting_to: Ваш обліковий запис наразі неактивний, тому що він перенаправлений до %{acct}. view_strikes: Переглянути попередні попередження вашому обліковому запису too_fast: Форму подано занадто швидко, спробуйте ще раз. - trouble_logging_in: Проблема під час входу? use_security_key: Використовувати ключ безпеки authorize_follow: already_following: Ви вже слідкуєте за цим обліковим записом @@ -1686,8 +1674,6 @@ uk: too_late: Запізно оскаржувати це попередження tags: does_not_match_previous_name: не збігається з попереднім ім'ям - terms: - title: "%{instance} Політика конфіденційності" themes: contrast: Висока контрасність default: Mastodon @@ -1766,20 +1752,13 @@ uk: suspend: Обліковий запис призупинено welcome: edit_profile_action: Налаштувати профіль - edit_profile_step: Ви можете налаштувати ваш профіль, завантаживши аватар, шпалери, змінивши відображуване ім'я тощо. Якщо ви захочете переглядати нових підписників до того, як вони зможуть підписатися на вас, ви можете заблокувати свій обліковий запис. + edit_profile_step: Ви можете налаштувати свій профіль, завантаживши зображення профілю, змінивши відображуване ім'я та інше. Ви можете включити для перегляду нових підписників до того, як вони матимуть змогу підписатися на вас. explanation: Ось декілька порад для початку final_action: Почати постити - final_step: 'Почність постити! Навіть не підписавшись на вас, інші зможуть побачити ваші пости, наприклад, у локальній стрічці та у хештеґах. Якщо ви хочете представитися, можете скористатися хештеґом #introductions.' + final_step: 'Почніть дописувати! Навіть не підписавшись на вас, інші зможуть побачити ваші пости, наприклад, у локальній стрічці та у хештеґах. Якщо ви хочете представитися, можете скористатися хештеґом #introductions.' full_handle: Ваше звернення full_handle_hint: Те, що ви хочете сказати друзям, щоб вони могли написати вам або підписатися з інших сайтів. - review_preferences_action: Змінити налаштування - review_preferences_step: Переконайтеся у тому, що ви налаштували все необхідне, як от які e-mail повідомлення ви хочете отримувати, або який рівень приватності ви хочете встановити вашим постам за замовчуванням. Якщо хочете, ви можете увімкнути автоматичне програвання GIF анімацій. subject: Ласкаво просимо до Mastodon - tip_federated_timeline: Федерований фід є широким поглядом на мережу Mastodon. Але він включає лише людей, на яких підписані ваші сусіди по сайту, тому він не є повним. - tip_following: Ви автоматично підписані на адміністратора(-ів) сервера. Для того, щоб знайти ще цікавих людей, дослідіть локальну та глобальну стрічки. - tip_local_timeline: Локальний фід - це погляд згори на людей на %{instance}. Це ваші прямі сусіди! - tip_mobile_webapp: Якщо ваш мобільний браузер пропонує вам додати Mastodon на робочий стіл, ви можете отримувати push-сповіщення. Все може виглядати як нативний застосунок у багатьох речах. - tips: Поради title: Ласкаво просимо, %{name}! users: follow_limit_reached: Не можна слідкувати більш ніж за %{limit} людей diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 8da12eca53..111992eef2 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -3,35 +3,22 @@ vi: about: about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không bán thông tin người dùng và phi tập trung! Làm chủ dữ liệu của bạn với Mastodon!' about_this: Giới thiệu - active_count_after: hoạt động - active_footnote: Người dùng hàng tháng (MAU) administered_by: 'Quản trị viên:' api: API apps: Apps - apps_platforms: Lướt Mastodon trên iOS, Android và các nền tảng khác - browse_public_posts: Đọc thử những tút công khai trên Mastodon contact: Liên lạc contact_missing: Chưa thiết lập contact_unavailable: N/A - continue_to_web: Xem trong web documentation: Tài liệu - federation_hint_html: Đăng ký tài khoản %{instance} là bạn có thể giao tiếp với bất cứ ai trên bất kỳ máy chủ Mastodon nào và còn hơn thế nữa. - get_apps: Ứng dụng di động hosted_on: "%{domain} vận hành nhờ Mastodon" instance_actor_flash: "Đây là một tài khoản ảo được sử dụng để đại diện cho máy chủ chứ không phải bất kỳ người dùng cá nhân nào. Nó được sử dụng cho mục đích liên kết và không nên chặn trừ khi bạn muốn chặn toàn bộ máy chủ. \n" - learn_more: Tìm hiểu - logged_in_as_html: Bạn đã đăng nhập %{username}. - logout_before_registering: Bạn đã đăng nhập. privacy_policy: Chính sách bảo mật rules: Quy tắc máy chủ rules_html: 'Bên dưới là những quy tắc của máy chủ Mastodon này, bạn phải đọc kỹ trước khi đăng ký:' - see_whats_happening: Dòng thời gian - server_stats: 'Thống kê:' source_code: Mã nguồn status_count_after: other: tút status_count_before: Nơi lưu giữ - tagline: Mạng xã hội liên hợp unavailable_content: Giới hạn chung unavailable_content_description: domain: Máy chủ @@ -749,9 +736,6 @@ vi: closed_message: desc_html: Hiển thị trên trang chủ khi đăng ký được đóng lại. Bạn có thể viết bằng thẻ HTML title: Thông điệp báo máy chủ đã ngừng đăng ký - deletion: - desc_html: Cho phép mọi người xóa tài khoản của họ - title: Xóa tài khoản require_invite_text: desc_html: Khi chọn phê duyệt người dùng thủ công, hiện “Tại sao bạn muốn đăng ký?” thay cho tùy chọn nhập title: Người đăng ký mới phải nhập mã mời tham gia @@ -979,10 +963,8 @@ vi: warning: Hãy rất cẩn thận với dữ liệu này. Không bao giờ chia sẻ nó với bất cứ ai! your_token: Mã truy cập của bạn auth: - apply_for_account: Đăng ký + apply_for_account: Nhận thông báo khi mở change_password: Mật khẩu - checkbox_agreement_html: Tôi đồng ý quy tắcchính sách bảo mật - checkbox_agreement_without_rules_html: Tôi đồng ý chính sách bảo mật delete_account: Xóa tài khoản delete_account_html: Nếu bạn muốn xóa tài khoản của mình, hãy yêu cầu tại đây. Bạn sẽ được yêu cầu xác nhận. description: @@ -1001,6 +983,7 @@ vi: migrate_account: Chuyển sang tài khoản khác migrate_account_html: Nếu bạn muốn bỏ tài khoản này để dùng một tài khoản khác, bạn có thể thiết lập tại đây. or_log_in_with: Hoặc đăng nhập bằng + privacy_policy_agreement_html: Tôi đã đọc và đồng ý chính sách bảo mật providers: cas: CAS saml: SAML @@ -1008,12 +991,18 @@ vi: registration_closed: "%{instance} tạm ngưng đăng ký mới" resend_confirmation: Gửi lại email xác minh reset_password: Đặt lại mật khẩu + rules: + preamble: Được ban hành và áp dụng bởi quản trị máy chủ %{domain}. + title: Quy tắc máy chủ. security: Bảo mật set_new_password: Đặt mật khẩu mới setup: email_below_hint_html: Nếu địa chỉ email dưới đây không chính xác, bạn có thể thay đổi địa chỉ tại đây và nhận email xác nhận mới. email_settings_hint_html: Email xác minh đã được gửi tới %{email}. Nếu địa chỉ email đó không chính xác, bạn có thể thay đổi nó trong cài đặt tài khoản. title: Thiết lập + sign_up: + preamble: Với tài khoản trên máy chủ Mastodon này, bạn sẽ có thể theo dõi bất kỳ người nào trên các máy chủ khác, bất kể tài khoản của họ ở đâu. + title: Cho phép bạn đăng ký trên %{domain}. status: account_status: Trạng thái tài khoản confirming: Đang chờ xác minh email. @@ -1022,7 +1011,6 @@ vi: redirecting_to: Tài khoản của bạn không hoạt động vì hiện đang chuyển hướng đến %{acct}. view_strikes: Xem những lần cảnh cáo cũ too_fast: Nghi vấn đăng ký spam, xin thử lại. - trouble_logging_in: Quên mật khẩu? use_security_key: Dùng khóa bảo mật authorize_follow: already_following: Bạn đang theo dõi người này @@ -1534,7 +1522,7 @@ vi: show_more: Đọc thêm show_newer: Mới hơn show_older: Cũ hơn - show_thread: Xem chuỗi tút này + show_thread: Trích nguyên văn sign_in_to_participate: Đăng nhập để trả lời tút này title: '%{name}: "%{quote}"' visibilities: @@ -1589,55 +1577,6 @@ vi: too_late: Đã quá trễ để kháng cáo tags: does_not_match_previous_name: không khớp với tên trước - terms: - body_html: | -

Chính sách bảo mật

-

Chúng tôi thu thập những thông tin gì?

-
    -
  • Thông tin tài khoản cơ bản: Nếu bạn đăng ký trên máy chủ này, bạn phải cung cấp tên người dùng, địa chỉ email và mật khẩu. Bạn cũng có thể tùy chọn bổ sung tên hiển thị, tiểu sử, ảnh đại diện, ảnh bìa. Tên người dùng, tên hiển thị, tiểu sử, ảnh hồ sơ và ảnh bìa luôn được hiển thị công khai.
  • -
  • Tút, lượt theo dõi và nội dung công khai khác: Danh sách những người bạn theo dõi được liệt kê công khai, cũng tương tự như danh sách những người theo dõi bạn. Khi bạn đăng tút, ngày giờ và ứng dụng sử dụng được lưu trữ. Tút có thể chứa tệp đính kèm hình ảnh và video. Tút công khai và tút mở sẽ hiển thị công khai. Khi bạn đăng một tút trên trang hồ sơ của bạn, đó là nội dung công khai. Tút của bạn sẽ gửi đến những người theo dõi của bạn, đồng nghĩa với việc sẽ có các bản sao được lưu trữ ở máy chủ của họ. Khi bạn xóa bài viết, bản sao từ những người theo dõi của bạn cũng bị xóa theo. Hành động chia sẻ hoặc thích một tút luôn luôn là công khai.
  • -
  • Tin nhắn và tút dành cho người theo dõi: Toàn bộ tút được lưu trữ và xử lý trên máy chủ. Các tút dành cho người theo dõi được gửi đến những người theo dõi và những người được gắn thẻ trong tút. Còn các tin nhắn chỉ được gửi đến cho người nhận. Điều đó có nghĩa là chúng được gửi đến các máy chủ khác nhau và có các bản sao được lưu trữ ở đó. Chúng tôi đề nghị chỉ cho những người được ủy quyền truy cập vào đó, nhưng không phải máy chủ nào cũng làm như vậy. Do đó, điều quan trọng là phải xem xét kỹ máy chủ của người theo dõi của bạn. Bạn có thể thiết lập tự mình phê duyệt và từ chối người theo dõi mới trong cài đặt. Xin lưu ý rằng quản trị viên máy chủ của bạn và bất kỳ máy chủ của người nhận nào cũng có thể xem các tin nhắn. Người nhận tin nhắn có thể chụp màn hình, sao chép hoặc chia sẻ lại chúng. Không nên chia sẻ bất kỳ thông tin rủi ro nào trên Mastodon.
  • -
  • Địa chỉ IP và siêu dữ liệu khác: Khi bạn đăng nhập, chúng tôi ghi nhớ địa chỉ IP đăng nhập cũng như tên trình duyệt của bạn. Tất cả các phiên đăng nhập sẽ để bạn xem xét và hủy bỏ trong phần cài đặt. Địa chỉ IP sử dụng được lưu trữ tối đa 12 tháng. Chúng tôi cũng có thể giữ lại nhật ký máy chủ bao gồm địa chỉ IP của những lượt đăng ký tài khoản trên máy chủ của chúng tôi.
  • -

-

Chúng tôi sử dụng thông tin của bạn để làm gì?

-

Bất kỳ thông tin nào chúng tôi thu thập từ bạn là:

-
    -
  • Để cung cấp các chức năng cốt lõi của Mastodon. Sau khi đăng nhập, bạn mới có thể tương tác với nội dung của người khác và đăng nội dung của riêng bạn. Ví dụ: bạn có thể theo dõi người khác để xem các tút của họ trong bảng tin của bạn.
  • -
  • Để hỗ trợ kiểm duyệt. Ví dụ so sánh địa chỉ IP của bạn với các địa chỉ đã biết khác để xác định hacker hoặc spammer.
  • -
  • Địa chỉ email bạn cung cấp chỉ được sử dụng để gửi các thông báo quan trọng, trả lời các câu hỏi cũng như yêu cầu khác từ chính bạn.
  • -
-
-

Chúng tôi bảo vệ thông tin của bạn như thế nào?

-

Chúng tôi thực hiện nhiều biện pháp để duy trì sự an toàn khi bạn nhập, gửi hoặc truy cập thông tin cá nhân của bạn. Một vài trong số đó như là kiểm soát phiên đăng nhập của bạn, lưu lượng giữa các ứng dụng và API, bảo mật bằng SSL và băm nhỏ mật khẩu nhờ thuật toán một chiều mạnh mẽ. Bạn có thể kích hoạt xác thực hai yếu tố để tiếp tục truy cập an toàn vào tài khoản của mình.

-
-

Chúng tôi lưu trữ dữ liệu như thế nào?

-

Chúng tôi tiến hành:

-
    -
  • Giữ lại nhật ký máy chủ chứa địa chỉ IP của tất cả các yêu cầu đến máy chủ này, cho đến khi các nhật ký đó bị xóa đi trong vòng 90 ngày.
  • -
  • Giữ lại các địa chỉ IP được liên kết với người dùng đã đăng ký trong vòng 12 tháng.
  • -
-

Bạn có thể tải xuống một bản sao lưu trữ nội dung của bạn, bao gồm các tút, tập tin đính kèm, ảnh đại diện và ảnh bìa.

-

Bạn có thể xóa tài khoản của mình bất cứ lúc nào.

-
-

Chúng tôi có sử dụng cookie không?

-

Có. Cookie là các tệp nhỏ mà một trang web hoặc nhà cung cấp dịch vụ internet chuyển vào ổ cứng máy tính của bạn thông qua trình duyệt Web (nếu bạn cho phép). Những cookie này cho phép trang web nhận ra trình duyệt của bạn và nếu bạn có tài khoản đã đăng ký, nó sẽ liên kết với tài khoản đã đăng ký của bạn.

-

Chúng tôi sử dụng cookie để hiểu và lưu các tùy chọn của bạn cho các lần truy cập trong tiếp theo.

-
-

Chúng tôi có tiết lộ bất cứ thông tin nào ra ngoài không?

-

Chúng tôi không bán, trao đổi hoặc chuyển nhượng thông tin nhận dạng cá nhân của bạn cho bên thứ ba. Trừ khi bên thứ ba đó đang hỗ trợ chúng tôi điều hành Mastodon, tiến hành kinh doanh hoặc phục vụ bạn, miễn là các bên đó đồng ý giữ bí mật thông tin này. Chúng tôi cũng có thể tiết lộ thông tin của bạn nếu việc công bố là để tuân thủ luật pháp, thực thi quy tắc máy chủ của chúng tôi hoặc bảo vệ quyền, tài sản hợp pháp hoặc sự an toàn của chúng tôi hoặc bất kỳ ai.

-

Nội dung công khai của bạn có thể được tải xuống bởi các máy chủ khác trong mạng liên hợp. Các tút công khai hay dành cho người theo dõi được gửi đến các máy chủ nơi người theo dõi của bạn là thành viên và tin nhắn được gửi đến máy chủ của người nhận, cho đến khi những người theo dõi hoặc người nhận đó chuyển sang một máy chủ khác.

-

Nếu bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang hồ sơ, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn.

-
-

Cấm trẻ em sử dụng

-

Nếu máy chủ này ở EU hoặc EEA: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 16 tuổi. Nếu bạn dưới 16 tuổi, xét theo Quy định bảo vệ dữ liệu chung (GDPR) thì không được sử dụng trang web này.

-

Nếu máy chủ này ở Hoa Kỳ: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 13 tuổi. Nếu bạn dưới 13 tuổi, xét theo Đạo luật bảo vệ quyền riêng tư trực tuyến của trẻ em (COPPA) thì không được sử dụng trang web này.

-

Quy định pháp luật có thể khác nếu máy chủ này ở khu vực địa lý khác.

-
-

Cập nhật thay đổi

-

Nếu có thay đổi chính sách bảo mật, chúng tôi sẽ đăng những thay đổi đó ở mục này.

-

Tài liệu này phát hành dưới giấy phép CC-BY-SA và được cập nhật lần cuối vào ngày 26 tháng 5 năm 2022.

-

Chỉnh sửa và hoàn thiện từ Discourse.

- title: Chính sách bảo mật %{instance} themes: contrast: Mastodon (Độ tương phản cao) default: Mastodon (Tối) @@ -1716,20 +1655,13 @@ vi: suspend: Tài khoản bị vô hiệu hóa welcome: edit_profile_action: Cài đặt trang hồ sơ - edit_profile_step: Bạn có thể chỉnh sửa trang hồ sơ của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Nếu bạn muốn tự phê duyệt những người theo dõi mới, hãy chuyển tài khoản sang trạng thái khóa. + edit_profile_step: Bạn có thể chỉnh sửa trang hồ sơ của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Bạn cũng có thể tự phê duyệt những người theo dõi mới. explanation: Dưới đây là một số mẹo để giúp bạn bắt đầu final_action: Viết tút mới - final_step: 'Viết tút mới! Ngay cả khi chưa có người theo dõi, người khác vẫn có thể xem tút công khai của bạn trên bảng tin máy chủ và trong hashtag. Hãy giới thiệu bản thân với hashtag #introduction.' + final_step: 'Viết tút mới! Ngay cả khi chưa có người theo dõi, người khác vẫn có thể xem tút công khai của bạn trên bảng tin máy chủ và qua hashtag. Hãy giới thiệu bản thân với hashtag #introductions.' full_handle: Tên đầy đủ của bạn full_handle_hint: Đây cũng là địa chỉ được dùng để giao tiếp với tất cả mọi người. - review_preferences_action: Tùy chỉnh giao diện - review_preferences_step: Tùy chỉnh mọi thứ! Chẳng hạn như chọn loại email nào bạn muốn nhận hoặc trạng thái đăng tút mặc định mà bạn muốn dùng. Hãy tắt tự động phát GIF nếu bạn dễ bị chóng mặt. subject: Chào mừng đến với Mastodon - tip_federated_timeline: Mạng liên hợp là một dạng "liên hợp quốc" của Mastodon. Hiểu một cách đơn giản, nó là những người bạn đã theo dõi từ các máy chủ khác. - tip_following: Theo mặc định, bạn sẽ theo dõi (các) quản trị viên máy chủ của bạn. Để tìm những người thú vị hơn, hãy xem qua cộng đồng và thế giới. - tip_local_timeline: Bảng tin là nơi hiện lên những tút công khai của thành viên %{instance}. Họ là những người hàng xóm trực tiếp của bạn! - tip_mobile_webapp: Nếu trình duyệt trên điện thoại di động của bạn thêm Mastodon vào màn hình chính, bạn có thể nhận được thông báo đẩy. Nó hoạt động gần giống như một app điện thoại! - tips: Mẹo title: Xin chào %{name}! users: follow_limit_reached: Bạn chỉ có thể theo dõi tối đa %{limit} người diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index 36240355b0..a9eb3ee495 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -3,7 +3,6 @@ zgh: about: about_this: ⵖⴼ contact: ⴰⵎⵢⴰⵡⴰⴹ - learn_more: ⵙⵙⵏ ⵓⴳⴳⴰⵔ status_count_after: one: ⴰⴷⴷⴰⴷ other: ⴰⴷⴷⴰⴷⵏ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index cb6794cbba..11df973130 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -3,37 +3,24 @@ zh-CN: about: about_mastodon_html: Mastodon 是一个建立在开放式网络协议和自由、开源软件之上的社交网络,有着类似于电子邮件的分布式设计。 about_this: 关于本站 - active_count_after: 活跃用户 - active_footnote: 每月活跃用户(MAU) administered_by: 本站管理员: api: API apps: 移动应用 - apps_platforms: 在 iOS、Android 和其他平台上使用 Mastodon - browse_public_posts: 浏览 Mastodon 上公共嘟文的实时信息流 contact: 联系方式 contact_missing: 未设定 contact_unavailable: 未公开 - continue_to_web: 继续前往网页应用 documentation: 文档 - federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容 Mastodon 服务器上的人。 - get_apps: 尝试移动应用 hosted_on: 运行在 %{domain} 上的 Mastodon 站点 instance_actor_flash: | 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。 该账号用于达成互联之目的,除非你想要封禁整个实例,否则该账号不应该被封禁。在此种情况下,你应该使用域名封禁。 - learn_more: 了解详情 - logged_in_as_html: 您当前以 %{username} 登录。 - logout_before_registering: 您已登录。 privacy_policy: 隐私政策 rules: 服务器规则 rules_html: 如果你想要在此Mastodon服务器上拥有一个账户,你必须遵守相应的规则,摘要如下: - see_whats_happening: 看看有什么新鲜事 - server_stats: 服务器统计数据: source_code: 源码 status_count_after: other: 条嘟文 status_count_before: 他们共嘟出了 - tagline: 分布式社交网络 unavailable_content: 被限制的服务器 unavailable_content_description: domain: 服务器 @@ -751,9 +738,6 @@ zh-CN: closed_message: desc_html: 本站关闭注册期间的提示信息。可以使用 HTML 标签 title: 关闭注册时的提示信息 - deletion: - desc_html: 允许所有人删除自己的帐户 - title: 开放删除帐户权限 require_invite_text: desc_html: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项 title: 要求新用户填写申请注册的原因 @@ -981,10 +965,8 @@ zh-CN: warning: 一定小心,千万不要把它分享给任何人! your_token: 你的访问令牌 auth: - apply_for_account: 请求邀请 + apply_for_account: 前往申请 change_password: 密码 - checkbox_agreement_html: 我同意 实例规则服务条款 - checkbox_agreement_without_rules_html: 我同意 服务条款 delete_account: 删除帐户 delete_account_html: 如果你想删除你的帐户,请点击这里继续。你需要确认你的操作。 description: @@ -1003,6 +985,7 @@ zh-CN: migrate_account: 迁移到另一个帐户 migrate_account_html: 如果你希望引导他人关注另一个账号,请点击这里进行设置。 or_log_in_with: 或通过外部服务登录 + privacy_policy_agreement_html: 我已阅读并同意 隐私政策 providers: cas: CAS saml: SAML @@ -1010,12 +993,18 @@ zh-CN: registration_closed: "%{instance} 目前不接收新成员" resend_confirmation: 重新发送确认邮件 reset_password: 重置密码 + rules: + preamble: 这些由 %{domain} 监察员设置和执行。 + title: 一些基本规则。 security: 账户安全 set_new_password: 设置新密码 setup: email_below_hint_html: 如果下面的电子邮箱地址是错误的,你可以在这里修改并重新发送新的确认邮件。 email_settings_hint_html: 确认邮件已经发送到%{email}。如果该邮箱地址不对,你可以在账号设置里面修改。 title: 初始设置 + sign_up: + preamble: 使用此 Mastodon 服务器上的帐号,您将能够关注网络上的任何其他人,无论他们的帐号托管在哪里的主机。 + title: 让我们在 %{domain} 上开始。 status: account_status: 帐户状态 confirming: 等待电子邮件确认完成。 @@ -1024,7 +1013,6 @@ zh-CN: redirecting_to: 你的帐户无效,因为它已被设置为跳转到 %{acct} view_strikes: 查看针对你账号的记录 too_fast: 表单提交过快,请重试。 - trouble_logging_in: 登录有问题? use_security_key: 使用安全密钥 authorize_follow: already_following: 你已经在关注此用户了 @@ -1591,89 +1579,6 @@ zh-CN: too_late: 已来不及对此次处罚提出申诉 tags: does_not_match_previous_name: 和之前的名称不匹配 - terms: - body_html: | -

隐私政策

-

我们收集什么信息?

- -
    -
  • 基本账号信息:要注册到此服务器,你可能被要求输入用户名、邮箱地址、以及一组密码。你也可输入其他个人资料信息如昵称和自我描述,上传个人资料图片和顶部图像。账号、昵称、自我描述、个人资料图片和顶部图像始终公开显示。
  • -
  • 嘟文、正在关注以及其他公开信息:你的正在关注列表和粉丝列表均为公开显示。当您发送私信时、时间戳和发送来源应用程序将会被储存。私信中可能包含媒体附件,如图片和视频。公开和未公开嘟文可被公开存取。当你在个人资料页面展示特色嘟文时,其也将公开可用。你的嘟文將被投送至你的粉丝——某些情況下这意味着它们将被投送至其他不同的服务器,并于该处存储。当你删除嘟文时,删除信息也将被发送至你的粉丝。将其他嘟文转嘟或加入最爱动作为公开信息。
  • -
  • 私信以及仅限粉丝的嘟文:所有的嘟文都存储和处理于服务器上。仅限粉丝的嘟文将被发送至您的粉丝以及被提及的帐号,私信嘟文将仅被发送至被提及的帐号。某些情况下这代表它们将被投送至其他不同的服务器,并于该处存储。 我们致力于限制这些嘟文仅能被获得授权的使用者存取,但在其他某些服务器可能无法生效。因此,请检查您粉丝所在的服务器。您可以于设置中切换手动允许或拒绝粉丝的开关。请注意,服务器的运营者以及任何接收嘟文的服务器都有可能查看信息,此外,接收方也可能截图、复制嘟文、或以其他方式再次分享。请不要于 Mastodon 分享任何敏感信息。
  • -
  • IP 地址以及其他描述资料:当您登录时,我们会记录您登录来源的 IP 地址,以及用以登录的应用程序。所有已登录的会话都可以在设置中查看和撤销。最近的 IP 地址将被保存至多 12 个月。我们也可能保留服务器记录档,其中包含对我们服务器的所有请求的来源 IP 地址。
  • -
- -
- -

我们将您的信息用于什么?

- -

我们从您那里收集的信息均可能用于以下用途:

- -
    -
  • 提供 Mastodon 核心功能。您仅能于登录时与其他人的内容互动和发送自己的嘟文。譬如,您可以通过关注其他人来查看您自己个人的首页时间轴上他们的嘟文。
  • -
  • 协助管理社群,例如将您的 IP 地址与其他已知地址进行比较,以决定是否违反服务器规则。
  • -
  • 您提供的 邮箱 地址将用于向您发送信息、关于其他人与您内容互动或私信的通知、回复询问,且/或其他请求和问题。
  • -
- -
- -

我们如何保护您的信息?

- -

当您输入、提交或访问您的个人信息时,我们会实施各种安全措施来维护您个人信息的安全。除此之外,您的浏览器会话与您应用程序及 API 间的流量都以 SSL 保护,您的密码也使用了一种强力的单向算法来散列(哈希化)。您可以启用两步验证来进一步提高您帐号的安全程度。

- -
- -

我们的数据保留政策如何?

- -

我们将致力于:

- -
    -
  • 保留包含所有对此服务器请求的 IP 位置的服务器记录档,只要此类记录档不保留超过 90 天。
  • -
  • 保留与注册使用者相关的 IP 位置不超过 12 个月。
  • -
- -

您可以请求并下载您内容的存档,包含了您的嘟文、媒体附件、个人资料图片和顶部图像。

- -

您随时都能永久不可逆地删除您的帐号。

- -
- -

我们是否使用 cookies ?

- -

是的。Cookies 是网站或其服务提供商通过您的网络浏览器(若您允许)传送到您电脑硬盘的小型文件。这些 cookies 让网站可以识别您的浏览器,且如果您有注册帐号,其将会关联到您已注册的帐号。

- -

我们使用 cookies 来了解并存储您的偏好设置以供未来访问。

- -
- -

我们会向外界泄露任何信息吗?

- -

我们不会出售、交易或是以其他方式向外界传输您的个人身份信息。这不包含协助我们营运网站、开展业务或是服务您的可信任的第三方,只要这些第三方同意对这些信息保密。当我们认为发布您的信息是为了遵守法律、执行我们网站的政策、或是保护我们或其他人的权利、财产或安全时,我们也可能会发布您的信息。

- -

您的公开内容可能被网络中其他服务器下载。您的公开与仅粉丝嘟文将会投送到您的粉丝所在的服务器,直接私信则会投送到接收者所在的服务器,前提是这些粉丝或接收者在不同的服务器上。

- -

当您授权应用程序使用您的帐号时,根据您所批准的授权范围,其可能会访问您的公开个人档案信息、您的关注列表、您的粉丝、您的列表、您所有的嘟文以及您的收藏。应用程序永远无法访问您的电子邮件地址或密码。

- -
- -

儿童使用网站

- -

如果服务器位于欧盟或欧洲经济区中:我们的网站、产品与服务均供至少 16 岁的人使用。如果您小于 16 岁,根据 GDPR (一般资料保护规范) 的要求,请勿使用此网站。

- -

若此服务器位于美国:我们的网站、产品与服务均供至少 13 岁的人使用。如果您小于 13 岁,根据 COPPA (儿童网络隐私保护法) 的要求,请勿使用此网站。

- -

如果此服务器位于其他司法管辖区,则法律要求可能会有所不同。

- -
- -

隐私权政策变更

- -

若我们决定变更我们的隐私权政策,我们将会在当前页面贴出那些变更。

- -

此文件以 CC-BY-SA 授权。最后更新时间为 2022 年 5 月 26 日。

- -

最初改编自 Discourse 隐私政策.

- title: "%{instance} 的隐私政策" themes: contrast: Mastodon(高对比度) default: Mastodon(暗色主题) @@ -1752,20 +1657,13 @@ zh-CN: suspend: 账号被封禁 welcome: edit_profile_action: 设置个人资料 - edit_profile_step: 你可以自定义你的个人资料,包括上传头像、横幅图片、更改昵称等等。如果你想在新的关注者关注你之前对他们进行审核,你也可以选择为你的帐户开启保护。 + edit_profile_step: 您可以通过上传个人资料图片、更改您的昵称等来自定义您的个人资料。 您可以选择在新关注者关注您之前对其进行审核。 explanation: 下面是几个小贴士,希望它们能帮到你 final_action: 开始嘟嘟 - final_step: '开始嘟嘟吧!即便你现在没有关注者,其他人仍然能在本站时间轴或者话题标签等地方看到你的公开嘟文。试着用 #自我介绍 这个话题标签介绍一下自己吧。' + final_step: '开始发嘟! 即使没有关注者,您的公开嘟文也可能会被其他人看到,例如在本地时间轴或话题标签中。 您可能想在 #introductions 话题标签上介绍自己。' full_handle: 你的完整用户地址 full_handle_hint: 你需要把这个告诉你的朋友们,这样他们就能从另一台服务器向你发送信息或者关注你。 - review_preferences_action: 更改首选项 - review_preferences_step: 记得调整你的偏好设置,比如你想接收什么类型的邮件,或者你想把你的嘟文可见范围默认设置为什么级别。如果你没有晕动病的话,考虑一下启用“自动播放 GIF 动画”这个选项吧。 subject: 欢迎来到 Mastodon - tip_federated_timeline: 跨站公共时间轴可以让你一窥更广阔的 Mastodon 网络。不过,由于它只显示你的邻居们所订阅的内容,所以并不是全部。 - tip_following: 默认情况下,你会自动关注你所在服务器的管理员。想结交更多有趣的人的话,记得多逛逛本站时间轴和跨站公共时间轴哦。 - tip_local_timeline: 本站时间轴可以让你一窥 %{instance} 上的用户。他们就是离你最近的邻居! - tip_mobile_webapp: 如果你的移动设备浏览器允许你将 Mastodon 添加到主屏幕,你就能够接收推送消息。它就像本地应用一样好使! - tips: 小贴士 title: "%{name},欢迎你的加入!" users: follow_limit_reached: 你不能关注超过 %{limit} 个人 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 2fab31a003..5c703f820e 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -3,28 +3,19 @@ zh-HK: about: about_mastodon_html: Mastodon(萬象)是屬於未來的社交網路︰無廣告煩擾、無企業監控、設計講道義、分散無大台!立即重奪個人資料的控制權,使用 Mastodon 吧! about_this: 關於本伺服器 - active_count_after: 活躍 - active_footnote: 每月活躍使用者 (MAU) administered_by: 管理者: api: API apps: 手機 App - apps_platforms: 在 iOS、Android 和其他平台使用 Mastodon - browse_public_posts: 在 Mastodon 瀏覽公開文章的即時串流 contact: 聯絡 contact_missing: 未設定 contact_unavailable: 不適用 documentation: 說明文件 - federation_hint_html: 你只需要擁有 %{instance} 的帳戶,就可以追蹤任何 Mastodon 服務站上的人! - get_apps: 嘗試使用手機 App hosted_on: 在 %{domain} 運作的 Mastodon 伺服器 instance_actor_flash: | 這個帳戶是代表伺服器,而非代表任何個人用戶的虛擬帳號。 此帳戶是為聯盟協定而設。除非你想封鎖整個伺服器的話,否則請不要封鎖這個帳戶。如果你想封鎖伺服器,請使用網域封鎖以達到相同效果。 - learn_more: 了解更多 rules: 系統規則 rules_html: 如果你想要在本站開一個新帳戶,以下是你需要遵守的規則: - see_whats_happening: 看看發生什麼事 - server_stats: 伺服器統計: source_code: 源代碼 status_count_after: other: 篇文章 @@ -548,9 +539,6 @@ zh-HK: closed_message: desc_html: 當本站暫停接受註冊時,會顯示這個訊息。
可使用 HTML title: 暫停註冊訊息 - deletion: - desc_html: 允許所有人刪除自己的帳號 - title: 容許刪除帳號 require_invite_text: desc_html: 如果已設定為手動審核注冊,請把「加入的原因」設定為必填項目。 title: 要求新用戶填寫注冊申請 @@ -651,10 +639,7 @@ zh-HK: warning: 警告,不要把它分享給任何人! your_token: token auth: - apply_for_account: 請求邀請 change_password: 密碼 - checkbox_agreement_html: 我同意 的伺服器規則服務條款 - checkbox_agreement_without_rules_html: 我同意 服務條款 delete_account: 刪除帳號 delete_account_html: 如果你想刪除你的帳號,請點擊這裡繼續。你需要確認你的操作。 description: @@ -691,7 +676,6 @@ zh-HK: pending: 管理員正在處理你的申請。可能會需要一點時間處理。我們將會在申請被批準的時候馬上寄電郵給你。 redirecting_to: 你的帳戶因為正在重新定向到 %{acct},所以暫時被停用。 too_fast: 你太快遞交了,請再試一次。 - trouble_logging_in: 不能登入? use_security_key: 使用安全密鑰裝置 authorize_follow: already_following: 你已經關注了這個帳號 @@ -1216,20 +1200,11 @@ zh-HK: suspend: 帳號已停用 welcome: edit_profile_action: 設定個人資料 - edit_profile_step: 你可以設定你的個人資料,包括上傳頭像、橫幅圖片、更改顯示名稱等等。如果你想在新的關注者關注你之前對他們進行審核,你也可以選擇為你的帳戶設為「私人」。 explanation: 下面是幾個小貼士,希望它們能幫到你 final_action: 開始發文 - final_step: '開始發文吧!即使你現在沒有關注者,其他人仍然能在本站時間軸或者話題標籤等地方看到你的公開文章。試著用 #introductions 這個話題標籤介紹一下自己吧。' full_handle: 你的完整 Mastodon 地址 full_handle_hint: 這訊息將顯示給你朋友們,讓他們能從另一個服務站發信息給你,或者關注你的。 - review_preferences_action: 更改偏好設定 - review_preferences_step: 記得調整你的偏好設定,比如你想接收什麼類型的郵件,或者你想把你的文章可見範圍默認設定為什麼級別。如果你沒有暈車的話,考慮一下啟用「自動播放 GIF 動畫」這個選項吧。 subject: 歡迎來到 Mastodon (萬象) - tip_federated_timeline: 跨站時間軸可以讓你一窺更廣闊的 Mastodon 網絡。不過,由於它只顯示你的鄰居們所訂閱的內容,所以並不是全部。 - tip_following: 你會預設關注你服務站的管理員。想結交更多有趣的人的話,記得多逛逛本站時間軸和跨站時間軸哦。 - tip_local_timeline: 本站時間軸可以讓你一窺 %{instance} 本站上的用戶。他們就是離你最近的鄰居! - tip_mobile_webapp: 如果你的移動設備瀏覽器支援,你可以將 Mastodon 加到裝置的主畫面,讓你可以選擇接收推送通知,就像本機的 App 一樣方便! - tips: 小貼士 title: 歡迎 %{name} 加入! users: follow_limit_reached: 你不能關注多於%{limit} 人 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 9745d07edc..ea49d45d12 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -3,37 +3,24 @@ zh-TW: about: about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳號,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的社群網路交流。 about_this: 關於本站 - active_count_after: 活躍 - active_footnote: 每月活躍使用者 (MAU) administered_by: 管理者: api: API apps: 行動應用程式 - apps_platforms: 在 iOS、Android 和其他平台使用 Mastodon - browse_public_posts: 在 Mastodon 瀏覽公開嘟文的即時串流 contact: 聯絡我們 contact_missing: 未設定 contact_unavailable: 未公開 - continue_to_web: 於網頁程式中繼續 documentation: 文件 - federation_hint_html: 您只需要擁有 %{instance} 的帳號,就可以追蹤任何一台 Mastodon 伺服器上的人等等。 - get_apps: 嘗試行動應用程式 hosted_on: 在 %{domain} 運作的 Mastodon 站點 instance_actor_flash: '這個帳戶是個用來代表伺服器本身的虛擬角色,而非實際的使用者。它是用來聯盟用的,除非您想要封鎖整個站台,不然不該封鎖它。但要封鎖整個站台,您可以使用網域封鎖功能。 ' - learn_more: 了解詳細 - logged_in_as_html: 您目前登入使用的帳號是 %{username} - logout_before_registering: 您已經登入了! privacy_policy: 隱私權政策 rules: 伺服器規則 rules_html: 以下是您若想在此 Mastodon 伺服器建立帳號必須遵守的規則總結: - see_whats_happening: 看看發生什麼事 - server_stats: 伺服器統計: source_code: 原始碼 status_count_after: other: 條嘟文 status_count_before: 他們共嘟出了 - tagline: 去中心化社群網路 unavailable_content: 無法取得的內容 unavailable_content_description: domain: 伺服器 @@ -753,9 +740,6 @@ zh-TW: closed_message: desc_html: 關閉註冊時顯示在首頁的內容,可使用 HTML 標籤 title: 關閉註冊訊息 - deletion: - desc_html: 允許所有人刪除自己的帳號 - title: 開放刪除帳號的權限 require_invite_text: desc_html: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。 title: 要求新使用者填申請書以索取邀請 @@ -983,10 +967,8 @@ zh-TW: warning: 警告,不要把它分享給任何人! your_token: 您的 access token auth: - apply_for_account: 索取註冊邀請 + apply_for_account: 登記排隊名單 change_password: 密碼 - checkbox_agreement_html: 我同意 之伺服器規則 以及 服務條款 - checkbox_agreement_without_rules_html: 我同意 服務條款 delete_account: 刪除帳號 delete_account_html: 如果您欲刪除您的帳號,請點擊這裡繼續。您需要確認您的操作。 description: @@ -1005,6 +987,7 @@ zh-TW: migrate_account: 轉移到另一個帳號 migrate_account_html: 如果您希望引導他人關注另一個帳號,請 到這裡設定。 or_log_in_with: 或透過其他方式登入 + privacy_policy_agreement_html: 我已閱讀且同意 隱私權政策 providers: cas: CAS saml: SAML @@ -1012,12 +995,18 @@ zh-TW: registration_closed: "%{instance} 現在不開放新成員" resend_confirmation: 重新寄送確認指引 reset_password: 重設密碼 + rules: + preamble: 這些被 %{domain} 的管管們制定以及實施。 + title: 一些基本守則。 security: 登入資訊 set_new_password: 設定新密碼 setup: email_below_hint_html: 如果此電子郵件地址不正確,您可於此修改並接收郵件進行認證。 email_settings_hint_html: 請確認 e-mail 是否傳送到 %{email} 。如果不對的話,可以從帳號設定修改。 title: 設定 + sign_up: + preamble: 於此 Mastodon 伺服器擁有帳號的話,您將能跟隨聯邦宇宙網路中任何一份子,無論他們的帳號託管於何處。 + title: 讓我們一起設定 %{domain} 吧! status: account_status: 帳號狀態 confirming: 等待電子郵件確認完成。 @@ -1026,7 +1015,6 @@ zh-TW: redirecting_to: 您的帳戶因目前重新導向至 %{acct} 而被停用。 view_strikes: 檢視針對您帳號過去的警示 too_fast: 送出表單的速度太快跟不上,請稍後再試。 - trouble_logging_in: 登錄時遇到困難? use_security_key: 使用安全金鑰 authorize_follow: already_following: 您已經跟隨了這個使用者 @@ -1593,92 +1581,6 @@ zh-TW: too_late: 您太晚申訴這個警示了 tags: does_not_match_previous_name: 與先前的名稱不吻合 - terms: - body_html: | -

隱私權政策

-

我們蒐集什麼資訊?

- -
    -
  • 基本帳號資訊:若您於此伺服器註冊,您可能被要求輸入使用者帳號、e-mail 地址、以及一組密碼。您也可能輸入額外個人資料資訊例如顯示名稱及自我描述,並且上傳大頭貼照片和橫幅圖片。使用者帳號、顯示名稱、自我描述、大頭貼照片和橫幅圖片將永遠為公開顯示。
  • -
  • 嘟文、跟隨中以及其他公開資訊:您跟隨中的使用者列表以及跟隨您的使用者列表是公開的。當您發送一則訊息,資料、時間戳、以及您用以發送訊息的應用程式將會被儲存。訊息中可能夾帶多媒體附件,例如圖片或影音。公開和非公共時間軸顯示之嘟文將可被公開存取。當您於個人資料頁面展示特色嘟文時,其將也成為公開可取得之資訊。您的嘟文將被發送至您的跟隨者、某些情況下這代表它們將被撒送至其他不同的伺服器,並儲存於該處。當您刪除嘟文時,刪除訊息也將被發送至您的跟隨者。將其他嘟文轉嘟或加入最愛之動作為公開資訊。
  • -
  • 私訊以及僅限跟隨者之嘟文:所有的嘟文儲存及處理於伺服器上。僅限跟隨者之嘟文將被發送至您的跟隨者以及被提及之帳號,私訊嘟文將僅被發送至被提及之帳號。某些情況下這代表它們將被撒送至其他不同的伺服器,並儲存於該處。 我們致力於限制這些嘟文僅被獲得授權之使用者存取,然而其他某些伺服器可能無法做到。因此,檢查您跟隨者所在之伺服器。您可以於設定中切換手動核准或拒絕跟隨者的開關。請注意,伺服器之營運者以及任何接收嘟文之伺服器皆有可能檢視訊息,此外,接收方也可能截圖、複製嘟文、或以其他方式重新分享。請不要於 Mastodon 分享任何敏感資訊。
  • -
  • IP 地址以及其他描述資料:當您登入時,我們紀錄您登入來源之 IP 地址,以及您所用以登入之應用程式名稱。所有以登入之工作階段皆可供您於設定中檢視及撤銷。最近的 IP 地址將被保存至多 12 個月。我們也可能保留伺服器紀錄檔,其中包含對於我們伺服器之所有請求的來源 IP 地址。
  • -
- -
- -

我們將您的資訊用以何種目的?

- -

我們從您那裡蒐集而來的資訊都可能作為以下用途:

- -
    -
  • 提供 Mastodon 核心功能。您僅能於登入時與其他人的內容互動及發送自己的嘟文。舉例來說,您可以透過跟隨其他人以檢視您自己個人化的首頁時間軸上他們的嘟文。
  • -
  • 協助管理社群,例如將您之 IP 地址與其他已知地址進行比較用以決定是否違反伺服器規則。
  • -
  • 您提供之 email 地址將用以寄送您資訊、其他人與您內容互動相關之通知、或您自己的訊息,並且回覆詢問,且/或其他請求或問題。
  • -
- -
- -

我們如何保護您的資訊?

- -

當您輸入、遞交或存取您的個人資訊時,我們會實施各種安全措施來維護您個人資訊的安全。除此之外,您的瀏覽器工作階段與您應用程式及 API 間的流量都以 SSL 進行保護,您的密碼也使用了相當強的單向演算法來雜湊。您可以啟用兩步驟驗證來進一步強化您帳號的安全程度。

- -
- -

我們的資料保留政策是什麼?

- -

我們將致力於:

- -
    -
  • 保留包含所有對此伺服器請求的 IP 位置的伺服器紀錄檔,只要此類紀錄檔不保留超過 90 天。
  • -
  • 保留與註冊使用者相關的 IP 位置不超過 12 個月。
  • -
- -

您可以請求並下載您內容的封存檔案,包含了您的貼文、多媒體附件、大頭貼與封面圖片。

- -

您隨時都能不可逆地刪除您的帳號。

- -
- -

我們會使用 cookies 嗎?

- -

是的。Cookies 是網站或其服務提供者透過您的網路瀏覽器(若您允許)傳送到您電腦硬碟的小檔案。這些 cookies 讓網站可以識別您的瀏覽器,以及如果您有註冊帳號的話,同時關聯到您已註冊的帳號。

- -

我們使用 cookies 來了解並儲存您的偏好設定以供未來存取。

- -
- -

我們會向外界揭露任何資訊嗎?

- -

我們不會出售、交易或是以其他方式向外界傳輸您的個人身份資料。這不包含協助我們營運網站、開展業務或是服務您的可信第三方,只要這些第三方同意對這些資訊保密。當我們認為發佈您的資訊是為了遵守法律、執行我們網站的政策、或是保護我們或其他人的權利、財產或安全時,我們也可能會發佈您的資訊。

- -

您的公開內容可能會網路中其他伺服器下載。您的公開與僅追蹤者貼文將會遞送到您的追蹤者所在的伺服器,直接訊息則會遞送到接收者所在的伺服器,前提是這些追蹤者或接收者在不同的伺服器上。

- -

當您授權應用程式使用您的帳號時,根據您所批准的授權範圍,其可能會存取您的公開個人檔案資訊、您的追蹤清單、您的追蹤者、您的清單、您所有的貼文以及您的收藏。應用程式永遠無法存取您的電子郵件地址或密碼。

- - -
- -

兒童使用網站

- -

如果伺服器位於歐盟或歐洲經濟區中:我們的網站、產品與服務均供至少 16 歲的人使用。如果您小於 16 歲,根據 GDPR(一般資料保護規範)的要求,請勿使用此網站。

- -

若此伺服器位於美國:我們的網站、產品與服務均供至少 13 歲的人使用。如果您小於 13 歲,根據 COPPA(兒童線上隱私保護法)的要求,請勿使用此忘站。

- - -

如果此伺服器位於其他司法管轄區,則法律要求可能會有所不同。

- - -
- -

我們隱私權政策的變更

- -

若我們決定變更我們的隱私權政策,我們將會在此頁面張貼那些變更。

- -

此文件以 CC-BY-SA 授權。最後更新時間為 2022 年 5 月 26 日。

- -

最初改編自 Discourse 隱私權政策.

- title: "%{instance} 隱私權政策" themes: contrast: Mastodon(高對比) default: Mastodon(深色) @@ -1757,20 +1659,13 @@ zh-TW: suspend: 帳號己被停用 welcome: edit_profile_action: 設定個人資料 - edit_profile_step: 您可以設定您的個人資料,包括上傳頭像、橫幅圖片、變更顯示名稱等等。如果想在新的跟隨者跟隨您之前對他們進行審核,您也可以選擇為您的帳號設為「私人」。 + edit_profile_step: 您可以設定您的個人資料,包括上傳大頭貼、變更顯示名稱等等。您也可以選擇在新的跟隨者跟隨前,先對他們進行審核。 explanation: 下面是幾個小幫助,希望它們能幫到您 final_action: 開始嘟嘟 - final_step: '開始嘟嘟吧!即使您現在沒有跟隨者,其他人仍然能在本站時間軸或著話題標籤等地方看到您的公開嘟文。試著用 #introductions 這個話題標籤介紹一下自己吧。' + final_step: '開始嘟嘟吧!即使您現在沒有跟隨者,其他人仍然能在本站時間軸、主題標籤等地方,看到您的公開嘟文。試著用 #introductions 這個主題標籤介紹一下自己吧。' full_handle: 您的完整帳號名稱 full_handle_hint: 您需要把這告訴你的朋友們,這樣他們就能從另一個伺服器向您發送訊息或著跟隨您。 - review_preferences_action: 變更偏好設定 - review_preferences_step: 記得調整您的偏好設定,比如想接收什麼類型的電子郵件,或著想把您的嘟文可見範圍預設設定什麼級別。如果您沒有暈車的話,考慮一下啟用「自動播放 GIF 動畫」這個選項吧。 subject: 歡迎來到 Mastodon - tip_federated_timeline: 跨站公共時間軸可以讓您一窺更廣闊的 Mastodon 網路。不過,由於它們只顯示您的鄰居們所訂閱的內容,所以並不是全部。 - tip_following: 預設情況下,您會自動跟隨您所在站點的管管。想結交更多有趣的人的話,請記得多逛逛本站時間軸與跨站公共時間軸哦。 - tip_local_timeline: 本站時間軸可以讓您一窺 %{instance} 上的使用者。他們就是離您最近的鄰居! - tip_mobile_webapp: 如果您的行動裝置瀏覽器允許將 Mastodon 新增到主螢幕,您就能夠接收推播通知。它就像手機 APP 一樣好用! - tips: 小幫手 title: "%{name} 誠摯歡迎您的加入!" users: follow_limit_reached: 您無法追蹤多於 %{limit} 個人 From d84c53e76932abf79e07c8abe46c81acb77300d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Oct 2022 14:14:13 +0900 Subject: [PATCH 020/500] Bump sidekiq-scheduler from 4.0.2 to 4.0.3 (#19314) Bumps [sidekiq-scheduler](https://github.com/moove-it/sidekiq-scheduler) from 4.0.2 to 4.0.3. - [Release notes](https://github.com/moove-it/sidekiq-scheduler/releases) - [Changelog](https://github.com/sidekiq-scheduler/sidekiq-scheduler/blob/master/CHANGELOG.md) - [Commits](https://github.com/moove-it/sidekiq-scheduler/compare/v4.0.2...v4.0.3) --- updated-dependencies: - dependency-name: sidekiq-scheduler dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 417b01154d..81cd3dadbc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -272,7 +272,7 @@ GEM fog-json (>= 1.0) ipaddress (>= 0.8) formatador (0.2.5) - fugit (1.5.3) + fugit (1.7.1) et-orbi (~> 1, >= 1.2.7) raabro (~> 1.4) fuubar (2.5.1) @@ -598,7 +598,7 @@ GEM nokogiri (>= 1.10.5) rexml ruby2_keywords (0.0.5) - rufus-scheduler (3.8.1) + rufus-scheduler (3.8.2) fugit (~> 1.1, >= 1.1.6) safety_net_attestation (0.4.0) jwt (~> 2.0) @@ -615,10 +615,10 @@ GEM redis (>= 4.5.0, < 5) sidekiq-bulk (0.2.0) sidekiq - sidekiq-scheduler (4.0.2) + sidekiq-scheduler (4.0.3) redis (>= 4.2.0) rufus-scheduler (~> 3.2) - sidekiq (>= 4) + sidekiq (>= 4, < 7) tilt (>= 1.4.0) sidekiq-unique-jobs (7.1.27) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) @@ -662,7 +662,7 @@ GEM terrapin (0.6.0) climate_control (>= 0.0.3, < 1.0) thor (1.2.1) - tilt (2.0.10) + tilt (2.0.11) tpm-key_attestation (0.11.0) bindata (~> 2.4) openssl (> 2.0, < 3.1) From d4b0aa74500419730525025b05513235aa477841 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 8 Oct 2022 07:15:50 +0200 Subject: [PATCH 021/500] Fix trying to connect to streaming API when logged out in web UI (#19316) --- .../features/community_timeline/index.js | 19 ++++++++++++++++--- .../features/hashtag_timeline/index.js | 6 ++++++ .../features/public_timeline/index.js | 19 ++++++++++++++++--- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js index f9d50e64ce..8fa372de4f 100644 --- a/app/javascript/mastodon/features/community_timeline/index.js +++ b/app/javascript/mastodon/features/community_timeline/index.js @@ -35,6 +35,7 @@ class CommunityTimeline extends React.PureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static defaultProps = { @@ -71,18 +72,30 @@ class CommunityTimeline extends React.PureComponent { componentDidMount () { const { dispatch, onlyMedia } = this.props; + const { signedIn } = this.context.identity; dispatch(expandCommunityTimeline({ onlyMedia })); - this.disconnect = dispatch(connectCommunityStream({ onlyMedia })); + + if (signedIn) { + this.disconnect = dispatch(connectCommunityStream({ onlyMedia })); + } } componentDidUpdate (prevProps) { + const { signedIn } = this.context.identity; + if (prevProps.onlyMedia !== this.props.onlyMedia) { const { dispatch, onlyMedia } = this.props; - this.disconnect(); + if (this.disconnect) { + this.disconnect(); + } + dispatch(expandCommunityTimeline({ onlyMedia })); - this.disconnect = dispatch(connectCommunityStream({ onlyMedia })); + + if (signedIn) { + this.disconnect = dispatch(connectCommunityStream({ onlyMedia })); + } } } diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js index 7069e03411..dee4181a8a 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.js +++ b/app/javascript/mastodon/features/hashtag_timeline/index.js @@ -96,6 +96,12 @@ class HashtagTimeline extends React.PureComponent { } _subscribe (dispatch, id, tags = {}, local) { + const { signedIn } = this.context.identity; + + if (!signedIn) { + return; + } + let any = (tags.any || []).map(tag => tag.value); let all = (tags.all || []).map(tag => tag.value); let none = (tags.none || []).map(tag => tag.value); diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js index 2f926678c2..a34f2ff57d 100644 --- a/app/javascript/mastodon/features/public_timeline/index.js +++ b/app/javascript/mastodon/features/public_timeline/index.js @@ -37,6 +37,7 @@ class PublicTimeline extends React.PureComponent { static contextTypes = { router: PropTypes.object, + identity: PropTypes.object, }; static defaultProps = { @@ -74,18 +75,30 @@ class PublicTimeline extends React.PureComponent { componentDidMount () { const { dispatch, onlyMedia, onlyRemote } = this.props; + const { signedIn } = this.context.identity; dispatch(expandPublicTimeline({ onlyMedia, onlyRemote })); - this.disconnect = dispatch(connectPublicStream({ onlyMedia, onlyRemote })); + + if (signedIn) { + this.disconnect = dispatch(connectPublicStream({ onlyMedia, onlyRemote })); + } } componentDidUpdate (prevProps) { + const { signedIn } = this.context.identity; + if (prevProps.onlyMedia !== this.props.onlyMedia || prevProps.onlyRemote !== this.props.onlyRemote) { const { dispatch, onlyMedia, onlyRemote } = this.props; - this.disconnect(); + if (this.disconnect) { + this.disconnect(); + } + dispatch(expandPublicTimeline({ onlyMedia, onlyRemote })); - this.disconnect = dispatch(connectPublicStream({ onlyMedia, onlyRemote })); + + if (signedIn) { + this.disconnect = dispatch(connectPublicStream({ onlyMedia, onlyRemote })); + } } } From 678fc4d292664550df554a224b8fd59dcef20d35 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 8 Oct 2022 08:34:00 +0200 Subject: [PATCH 022/500] Fix privacy policy being empty if custom setting exists but is empty (#19318) --- app/models/privacy_policy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/privacy_policy.rb b/app/models/privacy_policy.rb index b93b6cf350..36cbf18822 100644 --- a/app/models/privacy_policy.rb +++ b/app/models/privacy_policy.rb @@ -68,7 +68,7 @@ class PrivacyPolicy < ActiveModelSerializers::Model def self.current custom = Setting.find_by(var: 'site_terms') - if custom + if custom&.value.present? new(text: custom.value, updated_at: custom.updated_at) else new(text: DEFAULT_PRIVACY_POLICY, updated_at: DEFAULT_UPDATED_AT) From 45ebdb72ca1678eb30e6087f61bd019c7ea903f4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 8 Oct 2022 16:45:40 +0200 Subject: [PATCH 023/500] Add support for language preferences for trending statuses and links (#18288) --- .../admin/trends/links_controller.rb | 1 + .../admin/trends/statuses_controller.rb | 1 + .../api/v1/trends/links_controller.rb | 4 +- app/mailers/admin_mailer.rb | 4 +- app/models/preview_card.rb | 1 + app/models/preview_card_trend.rb | 17 ++++ app/models/status.rb | 1 + app/models/status_trend.rb | 21 ++++ app/models/trends.rb | 6 +- app/models/trends/base.rb | 4 + app/models/trends/links.rb | 98 +++++++++++++------ app/models/trends/preview_card_filter.rb | 25 +++-- app/models/trends/status_filter.rb | 25 +++-- app/models/trends/statuses.rb | 82 +++++++++------- .../trends/links/_preview_card.html.haml | 4 +- app/views/admin/trends/links/index.html.haml | 2 +- .../admin/trends/statuses/_status.html.haml | 4 +- .../admin/trends/statuses/index.html.haml | 2 +- .../admin_mailer/_new_trending_links.text.erb | 8 +- .../_new_trending_statuses.text.erb | 8 +- config/locales/en.yml | 4 - .../20220824233535_create_status_trends.rb | 12 +++ ...221006061337_create_preview_card_trends.rb | 11 +++ db/schema.rb | 25 ++++- spec/fabricators/account_fabricator.rb | 1 + spec/mailers/previews/admin_mailer_preview.rb | 2 +- spec/models/preview_card_trend_spec.rb | 4 + spec/models/status_trend_spec.rb | 4 + spec/models/trends/statuses_spec.rb | 14 +-- 29 files changed, 274 insertions(+), 121 deletions(-) create mode 100644 app/models/preview_card_trend.rb create mode 100644 app/models/status_trend.rb create mode 100644 db/migrate/20220824233535_create_status_trends.rb create mode 100644 db/migrate/20221006061337_create_preview_card_trends.rb create mode 100644 spec/models/preview_card_trend_spec.rb create mode 100644 spec/models/status_trend_spec.rb diff --git a/app/controllers/admin/trends/links_controller.rb b/app/controllers/admin/trends/links_controller.rb index a497eae411..a3454f2dab 100644 --- a/app/controllers/admin/trends/links_controller.rb +++ b/app/controllers/admin/trends/links_controller.rb @@ -4,6 +4,7 @@ class Admin::Trends::LinksController < Admin::BaseController def index authorize :preview_card, :review? + @locales = PreviewCardTrend.pluck('distinct language') @preview_cards = filtered_preview_cards.page(params[:page]) @form = Trends::PreviewCardBatch.new end diff --git a/app/controllers/admin/trends/statuses_controller.rb b/app/controllers/admin/trends/statuses_controller.rb index c538962f99..2b8226138f 100644 --- a/app/controllers/admin/trends/statuses_controller.rb +++ b/app/controllers/admin/trends/statuses_controller.rb @@ -4,6 +4,7 @@ class Admin::Trends::StatusesController < Admin::BaseController def index authorize :status, :review? + @locales = StatusTrend.pluck('distinct language') @statuses = filtered_statuses.page(params[:page]) @form = Trends::StatusBatch.new end diff --git a/app/controllers/api/v1/trends/links_controller.rb b/app/controllers/api/v1/trends/links_controller.rb index 1a9f918f29..8ff3b364e2 100644 --- a/app/controllers/api/v1/trends/links_controller.rb +++ b/app/controllers/api/v1/trends/links_controller.rb @@ -28,7 +28,9 @@ class Api::V1::Trends::LinksController < Api::BaseController end def links_from_trends - Trends.links.query.allowed.in_locale(content_locale) + scope = Trends.links.query.allowed.in_locale(content_locale) + scope = scope.filtered_for(current_account) if user_signed_in? + scope end def insert_pagination_headers diff --git a/app/mailers/admin_mailer.rb b/app/mailers/admin_mailer.rb index f416977d85..bc6d87ae6f 100644 --- a/app/mailers/admin_mailer.rb +++ b/app/mailers/admin_mailer.rb @@ -4,6 +4,7 @@ class AdminMailer < ApplicationMailer layout 'plain_mailer' helper :accounts + helper :languages def new_report(recipient, report) @report = report @@ -37,11 +38,8 @@ class AdminMailer < ApplicationMailer def new_trends(recipient, links, tags, statuses) @links = links - @lowest_trending_link = Trends.links.query.allowed.limit(Trends.links.options[:review_threshold]).last @tags = tags - @lowest_trending_tag = Trends.tags.query.allowed.limit(Trends.tags.options[:review_threshold]).last @statuses = statuses - @lowest_trending_status = Trends.statuses.query.allowed.limit(Trends.statuses.options[:review_threshold]).last @me = recipient @instance = Rails.configuration.x.local_domain diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb index c49c51a1be..b5d3f9c8fe 100644 --- a/app/models/preview_card.rb +++ b/app/models/preview_card.rb @@ -48,6 +48,7 @@ class PreviewCard < ApplicationRecord enum link_type: [:unknown, :article] has_and_belongs_to_many :statuses + has_one :trend, class_name: 'PreviewCardTrend', inverse_of: :preview_card, dependent: :destroy has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' }, validate_media_type: false diff --git a/app/models/preview_card_trend.rb b/app/models/preview_card_trend.rb new file mode 100644 index 0000000000..018400dfa9 --- /dev/null +++ b/app/models/preview_card_trend.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +# == Schema Information +# +# Table name: preview_card_trends +# +# id :bigint(8) not null, primary key +# preview_card_id :bigint(8) not null +# score :float default(0.0), not null +# rank :integer default(0), not null +# allowed :boolean default(FALSE), not null +# language :string +# +class PreviewCardTrend < ApplicationRecord + belongs_to :preview_card + scope :allowed, -> { where(allowed: true) } +end diff --git a/app/models/status.rb b/app/models/status.rb index de958aaf33..4805abfea0 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -75,6 +75,7 @@ class Status < ApplicationRecord has_one :notification, as: :activity, dependent: :destroy has_one :status_stat, inverse_of: :status has_one :poll, inverse_of: :status, dependent: :destroy + has_one :trend, class_name: 'StatusTrend', inverse_of: :status validates :uri, uniqueness: true, presence: true, unless: :local? validates :text, presence: true, unless: -> { with_media? || reblog? } diff --git a/app/models/status_trend.rb b/app/models/status_trend.rb new file mode 100644 index 0000000000..33fd6b0043 --- /dev/null +++ b/app/models/status_trend.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +# == Schema Information +# +# Table name: status_trends +# +# id :bigint(8) not null, primary key +# status_id :bigint(8) not null +# account_id :bigint(8) not null +# score :float default(0.0), not null +# rank :integer default(0), not null +# allowed :boolean default(FALSE), not null +# language :string +# + +class StatusTrend < ApplicationRecord + belongs_to :status + belongs_to :account + + scope :allowed, -> { where(allowed: true) } +end diff --git a/app/models/trends.rb b/app/models/trends.rb index d886be89ad..151d734f9d 100644 --- a/app/models/trends.rb +++ b/app/models/trends.rb @@ -26,7 +26,7 @@ module Trends end def self.request_review! - return unless enabled? + return if skip_review? || !enabled? links_requiring_review = links.request_review tags_requiring_review = tags.request_review @@ -43,6 +43,10 @@ module Trends Setting.trends end + def skip_review? + Setting.trendable_by_default + end + def self.available_locales @available_locales ||= I18n.available_locales.map { |locale| locale.to_s.split(/[_-]/).first }.uniq end diff --git a/app/models/trends/base.rb b/app/models/trends/base.rb index 0471112489..a189f11f23 100644 --- a/app/models/trends/base.rb +++ b/app/models/trends/base.rb @@ -98,4 +98,8 @@ class Trends::Base pipeline.rename(from_key, to_key) end end + + def skip_review? + Setting.trendable_by_default + end end diff --git a/app/models/trends/links.rb b/app/models/trends/links.rb index 604894cd67..8808b3ab6f 100644 --- a/app/models/trends/links.rb +++ b/app/models/trends/links.rb @@ -11,6 +11,40 @@ class Trends::Links < Trends::Base decay_threshold: 1, } + class Query < Trends::Query + def filtered_for!(account) + @account = account + self + end + + def filtered_for(account) + clone.filtered_for!(account) + end + + def to_arel + scope = PreviewCard.joins(:trend).reorder(score: :desc) + scope = scope.reorder(language_order_clause.desc, score: :desc) if preferred_languages.present? + scope = scope.merge(PreviewCardTrend.allowed) if @allowed + scope = scope.offset(@offset) if @offset.present? + scope = scope.limit(@limit) if @limit.present? + scope + end + + private + + def language_order_clause + Arel::Nodes::Case.new.when(PreviewCardTrend.arel_table[:language].in(preferred_languages)).then(1).else(0) + end + + def preferred_languages + if @account&.chosen_languages.present? + @account.chosen_languages + else + @locale + end + end + end + def register(status, at_time = Time.now.utc) original_status = status.proper @@ -28,24 +62,33 @@ class Trends::Links < Trends::Base record_used_id(preview_card.id, at_time) end + def query + Query.new(key_prefix, klass) + end + def refresh(at_time = Time.now.utc) - preview_cards = PreviewCard.where(id: (recently_used_ids(at_time) + currently_trending_ids(false, -1)).uniq) + preview_cards = PreviewCard.where(id: (recently_used_ids(at_time) + PreviewCardTrend.pluck(:preview_card_id)).uniq) calculate_scores(preview_cards, at_time) end def request_review - preview_cards = PreviewCard.where(id: currently_trending_ids(false, -1)) + PreviewCardTrend.pluck('distinct language').flat_map do |language| + score_at_threshold = PreviewCardTrend.where(language: language, allowed: true).order(rank: :desc).where('rank <= ?', options[:review_threshold]).first&.score || 0 + preview_card_trends = PreviewCardTrend.where(language: language, allowed: false).joins(:preview_card) - preview_cards.filter_map do |preview_card| - next unless would_be_trending?(preview_card.id) && !preview_card.trendable? && preview_card.requires_review_notification? + preview_card_trends.filter_map do |trend| + preview_card = trend.preview_card - if preview_card.provider.nil? - preview_card.provider = PreviewCardProvider.create(domain: preview_card.domain, requested_review_at: Time.now.utc) - else - preview_card.provider.touch(:requested_review_at) - end + next unless trend.score > score_at_threshold && !preview_card.trendable? && preview_card.requires_review_notification? + + if preview_card.provider.nil? + preview_card.provider = PreviewCardProvider.create(domain: preview_card.domain, requested_review_at: Time.now.utc) + else + preview_card.provider.touch(:requested_review_at) + end - preview_card + preview_card + end end end @@ -62,10 +105,7 @@ class Trends::Links < Trends::Base private def calculate_scores(preview_cards, at_time) - global_items = [] - locale_items = Hash.new { |h, key| h[key] = [] } - - preview_cards.each do |preview_card| + items = preview_cards.map do |preview_card| expected = preview_card.history.get(at_time - 1.day).accounts.to_f expected = 1.0 if expected.zero? observed = preview_card.history.get(at_time).accounts.to_f @@ -89,26 +129,24 @@ class Trends::Links < Trends::Base preview_card.update_columns(max_score: max_score, max_score_at: max_time) end - decaying_score = max_score * (0.5**((at_time.to_f - max_time.to_f) / options[:max_score_halflife].to_f)) - - next unless decaying_score >= options[:decay_threshold] + decaying_score = begin + if max_score.zero? || !valid_locale?(preview_card.language) + 0 + else + max_score * (0.5**((at_time.to_f - max_time.to_f) / options[:max_score_halflife].to_f)) + end + end - global_items << { score: decaying_score, item: preview_card } - locale_items[preview_card.language] << { score: decaying_score, item: preview_card } if valid_locale?(preview_card.language) + [decaying_score, preview_card] end - replace_items('', global_items) + to_insert = items.filter { |(score, _)| score >= options[:decay_threshold] } + to_delete = items.filter { |(score, _)| score < options[:decay_threshold] } - Trends.available_locales.each do |locale| - replace_items(":#{locale}", locale_items[locale]) + PreviewCardTrend.transaction do + PreviewCardTrend.upsert_all(to_insert.map { |(score, preview_card)| { preview_card_id: preview_card.id, score: score, language: preview_card.language, allowed: preview_card.trendable? || false } }, unique_by: :preview_card_id) if to_insert.any? + PreviewCardTrend.where(preview_card_id: to_delete.map { |(_, preview_card)| preview_card.id }).delete_all if to_delete.any? + PreviewCardTrend.connection.exec_update('UPDATE preview_card_trends SET rank = t0.calculated_rank FROM (SELECT id, row_number() OVER w AS calculated_rank FROM preview_card_trends WINDOW w AS (PARTITION BY language ORDER BY score DESC)) t0 WHERE preview_card_trends.id = t0.id') end end - - def filter_for_allowed_items(items) - items.select { |item| item[:item].trendable? } - end - - def would_be_trending?(id) - score(id) > score_at_rank(options[:review_threshold] - 1) - end end diff --git a/app/models/trends/preview_card_filter.rb b/app/models/trends/preview_card_filter.rb index 25add58c89..0a81146d4c 100644 --- a/app/models/trends/preview_card_filter.rb +++ b/app/models/trends/preview_card_filter.rb @@ -13,10 +13,10 @@ class Trends::PreviewCardFilter end def results - scope = PreviewCard.unscoped + scope = initial_scope params.each do |key, value| - next if %w(page locale).include?(key.to_s) + next if %w(page).include?(key.to_s) scope.merge!(scope_for(key, value.to_s.strip)) if value.present? end @@ -26,21 +26,30 @@ class Trends::PreviewCardFilter private + def initial_scope + PreviewCard.select(PreviewCard.arel_table[Arel.star]) + .joins(:trend) + .eager_load(:trend) + .reorder(score: :desc) + end + def scope_for(key, value) case key.to_s when 'trending' trending_scope(value) + when 'locale' + PreviewCardTrend.where(language: value) else raise "Unknown filter: #{key}" end end def trending_scope(value) - scope = Trends.links.query - - scope = scope.in_locale(@params[:locale].to_s) if @params[:locale].present? - scope = scope.allowed if value == 'allowed' - - scope.to_arel + case value + when 'allowed' + PreviewCardTrend.allowed + else + PreviewCardTrend.all + end end end diff --git a/app/models/trends/status_filter.rb b/app/models/trends/status_filter.rb index 7c453e3393..cb0f75d679 100644 --- a/app/models/trends/status_filter.rb +++ b/app/models/trends/status_filter.rb @@ -13,10 +13,10 @@ class Trends::StatusFilter end def results - scope = Status.unscoped.kept + scope = initial_scope params.each do |key, value| - next if %w(page locale).include?(key.to_s) + next if %w(page).include?(key.to_s) scope.merge!(scope_for(key, value.to_s.strip)) if value.present? end @@ -26,21 +26,30 @@ class Trends::StatusFilter private + def initial_scope + Status.select(Status.arel_table[Arel.star]) + .joins(:trend) + .eager_load(:trend) + .reorder(score: :desc) + end + def scope_for(key, value) case key.to_s when 'trending' trending_scope(value) + when 'locale' + StatusTrend.where(language: value) else raise "Unknown filter: #{key}" end end def trending_scope(value) - scope = Trends.statuses.query - - scope = scope.in_locale(@params[:locale].to_s) if @params[:locale].present? - scope = scope.allowed if value == 'allowed' - - scope.to_arel + case value + when 'allowed' + StatusTrend.allowed + else + StatusTrend.all + end end end diff --git a/app/models/trends/statuses.rb b/app/models/trends/statuses.rb index 777065d3e3..c9ef7c8f2e 100644 --- a/app/models/trends/statuses.rb +++ b/app/models/trends/statuses.rb @@ -20,13 +20,27 @@ class Trends::Statuses < Trends::Base clone.filtered_for!(account) end + def to_arel + scope = Status.joins(:trend).reorder(score: :desc) + scope = scope.reorder(language_order_clause.desc, score: :desc) if preferred_languages.present? + scope = scope.merge(StatusTrend.allowed) if @allowed + scope = scope.not_excluded_by_account(@account).not_domain_blocked_by_account(@account) if @account.present? + scope = scope.offset(@offset) if @offset.present? + scope = scope.limit(@limit) if @limit.present? + scope + end + private - def apply_scopes(scope) - if @account.nil? - scope + def language_order_clause + Arel::Nodes::Case.new.when(StatusTrend.arel_table[:language].in(preferred_languages)).then(1).else(0) + end + + def preferred_languages + if @account&.chosen_languages.present? + @account.chosen_languages else - scope.not_excluded_by_account(@account).not_domain_blocked_by_account(@account) + @locale end end end @@ -36,9 +50,6 @@ class Trends::Statuses < Trends::Base end def add(status, _account_id, at_time = Time.now.utc) - # We rely on the total reblogs and favourites count, so we - # don't record which account did the what and when here - record_used_id(status.id, at_time) end @@ -47,18 +58,23 @@ class Trends::Statuses < Trends::Base end def refresh(at_time = Time.now.utc) - statuses = Status.where(id: (recently_used_ids(at_time) + currently_trending_ids(false, -1)).uniq).includes(:account, :media_attachments) + statuses = Status.where(id: (recently_used_ids(at_time) + StatusTrend.pluck(:status_id)).uniq).includes(:status_stat, :account) calculate_scores(statuses, at_time) end def request_review - statuses = Status.where(id: currently_trending_ids(false, -1)).includes(:account) + StatusTrend.pluck('distinct language').flat_map do |language| + score_at_threshold = StatusTrend.where(language: language, allowed: true).order(rank: :desc).where('rank <= ?', options[:review_threshold]).first&.score || 0 + status_trends = StatusTrend.where(language: language, allowed: false).joins(:status).includes(status: :account) - statuses.filter_map do |status| - next unless would_be_trending?(status.id) && !status.trendable? && status.requires_review_notification? + status_trends.filter_map do |trend| + status = trend.status - status.account.touch(:requested_review_at) - status + if trend.score > score_at_threshold && !status.trendable? && status.requires_review_notification? + status.account.touch(:requested_review_at) + status + end + end end end @@ -75,14 +91,11 @@ class Trends::Statuses < Trends::Base private def eligible?(status) - status.public_visibility? && status.account.discoverable? && !status.account.silenced? && status.spoiler_text.blank? && !status.sensitive? && !status.reply? + status.public_visibility? && status.account.discoverable? && !status.account.silenced? && status.spoiler_text.blank? && !status.sensitive? && !status.reply? && valid_locale?(status.language) end def calculate_scores(statuses, at_time) - global_items = [] - locale_items = Hash.new { |h, key| h[key] = [] } - - statuses.each do |status| + items = statuses.map do |status| expected = 1.0 observed = (status.reblogs_count + status.favourites_count).to_f @@ -94,29 +107,24 @@ class Trends::Statuses < Trends::Base end end - decaying_score = score * (0.5**((at_time.to_f - status.created_at.to_f) / options[:score_halflife].to_f)) - - next unless decaying_score >= options[:decay_threshold] + decaying_score = begin + if score.zero? || !eligible?(status) + 0 + else + score * (0.5**((at_time.to_f - status.created_at.to_f) / options[:score_halflife].to_f)) + end + end - global_items << { score: decaying_score, item: status } - locale_items[status.language] << { account_id: status.account_id, score: decaying_score, item: status } if valid_locale?(status.language) + [decaying_score, status] end - replace_items('', global_items) + to_insert = items.filter { |(score, _)| score >= options[:decay_threshold] } + to_delete = items.filter { |(score, _)| score < options[:decay_threshold] } - Trends.available_locales.each do |locale| - replace_items(":#{locale}", locale_items[locale]) + StatusTrend.transaction do + StatusTrend.upsert_all(to_insert.map { |(score, status)| { status_id: status.id, account_id: status.account_id, score: score, language: status.language, allowed: status.trendable? || false } }, unique_by: :status_id) if to_insert.any? + StatusTrend.where(status_id: to_delete.map { |(_, status)| status.id }).delete_all if to_delete.any? + StatusTrend.connection.exec_update('UPDATE status_trends SET rank = t0.calculated_rank FROM (SELECT id, row_number() OVER w AS calculated_rank FROM status_trends WINDOW w AS (PARTITION BY language ORDER BY score DESC)) t0 WHERE status_trends.id = t0.id') end end - - def filter_for_allowed_items(items) - # Show only one status per account, pick the one with the highest score - # that's also eligible to trend - - items.group_by { |item| item[:account_id] }.values.filter_map { |account_items| account_items.select { |item| item[:item].trendable? && item[:item].account.discoverable? }.max_by { |item| item[:score] } } - end - - def would_be_trending?(id) - score(id) > score_at_rank(options[:review_threshold] - 1) - end end diff --git a/app/views/admin/trends/links/_preview_card.html.haml b/app/views/admin/trends/links/_preview_card.html.haml index 7d4897c7e4..8812feb316 100644 --- a/app/views/admin/trends/links/_preview_card.html.haml +++ b/app/views/admin/trends/links/_preview_card.html.haml @@ -18,9 +18,9 @@ = t('admin.trends.links.shared_by_over_week', count: preview_card.history.reduce(0) { |sum, day| sum + day.accounts }) - - if preview_card.trendable? && (rank = Trends.links.rank(preview_card.id, locale: params[:locale].presence)) + - if preview_card.trend.allowed? • - %abbr{ title: t('admin.trends.tags.current_score', score: Trends.links.score(preview_card.id, locale: params[:locale].presence)) }= t('admin.trends.tags.trending_rank', rank: rank + 1) + %abbr{ title: t('admin.trends.tags.current_score', score: preview_card.trend.score) }= t('admin.trends.tags.trending_rank', rank: preview_card.trend.rank) - if preview_card.decaying? • diff --git a/app/views/admin/trends/links/index.html.haml b/app/views/admin/trends/links/index.html.haml index 49a53d979b..7b5122cf1c 100644 --- a/app/views/admin/trends/links/index.html.haml +++ b/app/views/admin/trends/links/index.html.haml @@ -16,7 +16,7 @@ .filter-subset.filter-subset--with-select %strong= t('admin.follow_recommendations.language') .input.select.optional - = select_tag :locale, options_for_select(Trends.available_locales.map { |key| [standard_locale_name(key), key] }, params[:locale]), include_blank: true + = select_tag :locale, options_for_select(@locales.map { |key| [standard_locale_name(key), key] }, params[:locale]), include_blank: true .filter-subset %strong= t('admin.trends.trending') %ul diff --git a/app/views/admin/trends/statuses/_status.html.haml b/app/views/admin/trends/statuses/_status.html.haml index e4d75bbb98..f35e13d128 100644 --- a/app/views/admin/trends/statuses/_status.html.haml +++ b/app/views/admin/trends/statuses/_status.html.haml @@ -25,9 +25,9 @@ - if status.trendable? && !status.account.discoverable? • = t('admin.trends.statuses.not_discoverable') - - if status.trendable? && (rank = Trends.statuses.rank(status.id, locale: params[:locale].presence)) + - if status.trend.allowed? • - %abbr{ title: t('admin.trends.tags.current_score', score: Trends.statuses.score(status.id, locale: params[:locale].presence)) }= t('admin.trends.tags.trending_rank', rank: rank + 1) + %abbr{ title: t('admin.trends.tags.current_score', score: status.trend.score) }= t('admin.trends.tags.trending_rank', rank: status.trend.rank) - elsif status.requires_review? • = t('admin.trends.pending_review') diff --git a/app/views/admin/trends/statuses/index.html.haml b/app/views/admin/trends/statuses/index.html.haml index b0059b20d7..a42d60b009 100644 --- a/app/views/admin/trends/statuses/index.html.haml +++ b/app/views/admin/trends/statuses/index.html.haml @@ -16,7 +16,7 @@ .filter-subset.filter-subset--with-select %strong= t('admin.follow_recommendations.language') .input.select.optional - = select_tag :locale, options_for_select(Trends.available_locales.map { |key| [standard_locale_name(key), key]}, params[:locale]), include_blank: true + = select_tag :locale, options_for_select(@locales.map { |key| [standard_locale_name(key), key] }, params[:locale]), include_blank: true .filter-subset %strong= t('admin.trends.trending') %ul diff --git a/app/views/admin_mailer/_new_trending_links.text.erb b/app/views/admin_mailer/_new_trending_links.text.erb index 405926fddc..602e12793e 100644 --- a/app/views/admin_mailer/_new_trending_links.text.erb +++ b/app/views/admin_mailer/_new_trending_links.text.erb @@ -2,13 +2,7 @@ <% @links.each do |link| %> - <%= link.title %> • <%= link.url %> - <%= raw t('admin.trends.links.usage_comparison', today: link.history.get(Time.now.utc).accounts, yesterday: link.history.get(Time.now.utc - 1.day).accounts) %> • <%= t('admin.trends.tags.current_score', score: Trends.links.score(link.id).round(2)) %> -<% end %> - -<% if @lowest_trending_link %> -<%= raw t('admin_mailer.new_trends.new_trending_links.requirements', lowest_link_title: @lowest_trending_link.title, lowest_link_score: Trends.links.score(@lowest_trending_link.id).round(2), rank: Trends.links.options[:review_threshold]) %> -<% else %> -<%= raw t('admin_mailer.new_trends.new_trending_links.no_approved_links') %> + <%= standard_locale_name(link.language) %> • <%= raw t('admin.trends.links.usage_comparison', today: link.history.get(Time.now.utc).accounts, yesterday: link.history.get(Time.now.utc - 1.day).accounts) %> • <%= t('admin.trends.tags.current_score', score: link.trend.score.round(2)) %> <% end %> <%= raw t('application_mailer.view')%> <%= admin_trends_links_url %> diff --git a/app/views/admin_mailer/_new_trending_statuses.text.erb b/app/views/admin_mailer/_new_trending_statuses.text.erb index 8d11a80c2e..1ed3ae8573 100644 --- a/app/views/admin_mailer/_new_trending_statuses.text.erb +++ b/app/views/admin_mailer/_new_trending_statuses.text.erb @@ -2,13 +2,7 @@ <% @statuses.each do |status| %> - <%= ActivityPub::TagManager.instance.url_for(status) %> - <%= raw t('admin.trends.tags.current_score', score: Trends.statuses.score(status.id).round(2)) %> -<% end %> - -<% if @lowest_trending_status %> -<%= raw t('admin_mailer.new_trends.new_trending_statuses.requirements', lowest_status_url: ActivityPub::TagManager.instance.url_for(@lowest_trending_status), lowest_status_score: Trends.statuses.score(@lowest_trending_status.id).round(2), rank: Trends.statuses.options[:review_threshold]) %> -<% else %> -<%= raw t('admin_mailer.new_trends.new_trending_statuses.no_approved_statuses') %> + <%= standard_locale_name(status.language) %> • <%= raw t('admin.trends.tags.current_score', score: status.trend.score.round(2)) %> <% end %> <%= raw t('application_mailer.view')%> <%= admin_trends_statuses_url %> diff --git a/config/locales/en.yml b/config/locales/en.yml index cdac4fb544..bd913a5cad 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -939,12 +939,8 @@ en: new_trends: body: 'The following items need a review before they can be displayed publicly:' new_trending_links: - no_approved_links: There are currently no approved trending links. - requirements: 'Any of these candidates could surpass the #%{rank} approved trending link, which is currently "%{lowest_link_title}" with a score of %{lowest_link_score}.' title: Trending links new_trending_statuses: - no_approved_statuses: There are currently no approved trending posts. - requirements: 'Any of these candidates could surpass the #%{rank} approved trending post, which is currently %{lowest_status_url} with a score of %{lowest_status_score}.' title: Trending posts new_trending_tags: no_approved_tags: There are currently no approved trending hashtags. diff --git a/db/migrate/20220824233535_create_status_trends.rb b/db/migrate/20220824233535_create_status_trends.rb new file mode 100644 index 0000000000..cea0abf355 --- /dev/null +++ b/db/migrate/20220824233535_create_status_trends.rb @@ -0,0 +1,12 @@ +class CreateStatusTrends < ActiveRecord::Migration[6.1] + def change + create_table :status_trends do |t| + t.references :status, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true } + t.references :account, null: false, foreign_key: { on_delete: :cascade } + t.float :score, null: false, default: 0 + t.integer :rank, null: false, default: 0 + t.boolean :allowed, null: false, default: false + t.string :language + end + end +end diff --git a/db/migrate/20221006061337_create_preview_card_trends.rb b/db/migrate/20221006061337_create_preview_card_trends.rb new file mode 100644 index 0000000000..baad9c31c3 --- /dev/null +++ b/db/migrate/20221006061337_create_preview_card_trends.rb @@ -0,0 +1,11 @@ +class CreatePreviewCardTrends < ActiveRecord::Migration[6.1] + def change + create_table :preview_card_trends do |t| + t.references :preview_card, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true } + t.float :score, null: false, default: 0 + t.integer :rank, null: false, default: 0 + t.boolean :allowed, null: false, default: false + t.string :language + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 1a98b22dba..2f9058509c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_08_29_192658) do +ActiveRecord::Schema.define(version: 2022_10_06_061337) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -735,6 +735,15 @@ ActiveRecord::Schema.define(version: 2022_08_29_192658) do t.index ["domain"], name: "index_preview_card_providers_on_domain", unique: true end + create_table "preview_card_trends", force: :cascade do |t| + t.bigint "preview_card_id", null: false + t.float "score", default: 0.0, null: false + t.integer "rank", default: 0, null: false + t.boolean "allowed", default: false, null: false + t.string "language" + t.index ["preview_card_id"], name: "index_preview_card_trends_on_preview_card_id", unique: true + end + create_table "preview_cards", force: :cascade do |t| t.string "url", default: "", null: false t.string "title", default: "", null: false @@ -894,6 +903,17 @@ ActiveRecord::Schema.define(version: 2022_08_29_192658) do t.index ["status_id"], name: "index_status_stats_on_status_id", unique: true end + create_table "status_trends", force: :cascade do |t| + t.bigint "status_id", null: false + t.bigint "account_id", null: false + t.float "score", default: 0.0, null: false + t.integer "rank", default: 0, null: false + t.boolean "allowed", default: false, null: false + t.string "language" + t.index ["account_id"], name: "index_status_trends_on_account_id" + t.index ["status_id"], name: "index_status_trends_on_status_id", unique: true + end + create_table "statuses", id: :bigint, default: -> { "timestamp_id('statuses'::text)" }, force: :cascade do |t| t.string "uri" t.text "text", default: "", null: false @@ -1171,6 +1191,7 @@ ActiveRecord::Schema.define(version: 2022_08_29_192658) do add_foreign_key "poll_votes", "polls", on_delete: :cascade add_foreign_key "polls", "accounts", on_delete: :cascade add_foreign_key "polls", "statuses", on_delete: :cascade + add_foreign_key "preview_card_trends", "preview_cards", on_delete: :cascade add_foreign_key "report_notes", "accounts", on_delete: :cascade add_foreign_key "report_notes", "reports", on_delete: :cascade add_foreign_key "reports", "accounts", column: "action_taken_by_account_id", name: "fk_bca45b75fd", on_delete: :nullify @@ -1185,6 +1206,8 @@ ActiveRecord::Schema.define(version: 2022_08_29_192658) do add_foreign_key "status_pins", "accounts", name: "fk_d4cb435b62", on_delete: :cascade add_foreign_key "status_pins", "statuses", on_delete: :cascade add_foreign_key "status_stats", "statuses", on_delete: :cascade + add_foreign_key "status_trends", "accounts", on_delete: :cascade + add_foreign_key "status_trends", "statuses", on_delete: :cascade add_foreign_key "statuses", "accounts", column: "in_reply_to_account_id", name: "fk_c7fa917661", on_delete: :nullify add_foreign_key "statuses", "accounts", name: "fk_9bda1543f7", on_delete: :cascade add_foreign_key "statuses", "statuses", column: "in_reply_to_id", on_delete: :nullify diff --git a/spec/fabricators/account_fabricator.rb b/spec/fabricators/account_fabricator.rb index f1cce281ca..205706532e 100644 --- a/spec/fabricators/account_fabricator.rb +++ b/spec/fabricators/account_fabricator.rb @@ -11,4 +11,5 @@ Fabricator(:account) do suspended_at { |attrs| attrs[:suspended] ? Time.now.utc : nil } silenced_at { |attrs| attrs[:silenced] ? Time.now.utc : nil } user { |attrs| attrs[:domain].nil? ? Fabricate.build(:user, account: nil) : nil } + discoverable true end diff --git a/spec/mailers/previews/admin_mailer_preview.rb b/spec/mailers/previews/admin_mailer_preview.rb index 01436ba7a0..0ec9e9882c 100644 --- a/spec/mailers/previews/admin_mailer_preview.rb +++ b/spec/mailers/previews/admin_mailer_preview.rb @@ -8,7 +8,7 @@ class AdminMailerPreview < ActionMailer::Preview # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_trends def new_trends - AdminMailer.new_trends(Account.first, PreviewCard.limit(3), Tag.limit(3), Status.where(reblog_of_id: nil).limit(3)) + AdminMailer.new_trends(Account.first, PreviewCard.joins(:trend).limit(3), Tag.limit(3), Status.joins(:trend).where(reblog_of_id: nil).limit(3)) end # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_appeal diff --git a/spec/models/preview_card_trend_spec.rb b/spec/models/preview_card_trend_spec.rb new file mode 100644 index 0000000000..c7ab6ed146 --- /dev/null +++ b/spec/models/preview_card_trend_spec.rb @@ -0,0 +1,4 @@ +require 'rails_helper' + +RSpec.describe PreviewCardTrend, type: :model do +end diff --git a/spec/models/status_trend_spec.rb b/spec/models/status_trend_spec.rb new file mode 100644 index 0000000000..6b82204a60 --- /dev/null +++ b/spec/models/status_trend_spec.rb @@ -0,0 +1,4 @@ +require 'rails_helper' + +RSpec.describe StatusTrend, type: :model do +end diff --git a/spec/models/trends/statuses_spec.rb b/spec/models/trends/statuses_spec.rb index 9cc67acbe1..5f338a65e8 100644 --- a/spec/models/trends/statuses_spec.rb +++ b/spec/models/trends/statuses_spec.rb @@ -9,8 +9,8 @@ RSpec.describe Trends::Statuses do let!(:query) { subject.query } let!(:today) { at_time } - let!(:status1) { Fabricate(:status, text: 'Foo', trendable: true, created_at: today) } - let!(:status2) { Fabricate(:status, text: 'Bar', trendable: true, created_at: today) } + let!(:status1) { Fabricate(:status, text: 'Foo', language: 'en', trendable: true, created_at: today) } + let!(:status2) { Fabricate(:status, text: 'Bar', language: 'en', trendable: true, created_at: today) } before do 15.times { reblog(status1, today) } @@ -69,9 +69,9 @@ RSpec.describe Trends::Statuses do let!(:today) { at_time } let!(:yesterday) { today - 1.day } - let!(:status1) { Fabricate(:status, text: 'Foo', trendable: true, created_at: yesterday) } - let!(:status2) { Fabricate(:status, text: 'Bar', trendable: true, created_at: today) } - let!(:status3) { Fabricate(:status, text: 'Baz', trendable: true, created_at: today) } + let!(:status1) { Fabricate(:status, text: 'Foo', language: 'en', trendable: true, created_at: yesterday) } + let!(:status2) { Fabricate(:status, text: 'Bar', language: 'en', trendable: true, created_at: today) } + let!(:status3) { Fabricate(:status, text: 'Baz', language: 'en', trendable: true, created_at: today) } before do 13.times { reblog(status1, today) } @@ -95,10 +95,10 @@ RSpec.describe Trends::Statuses do it 'decays scores' do subject.refresh(today) - original_score = subject.score(status2.id) + original_score = status2.trend.score expect(original_score).to be_a Float subject.refresh(today + subject.options[:score_halflife]) - decayed_score = subject.score(status2.id) + decayed_score = status2.trend.reload.score expect(decayed_score).to be <= original_score / 2 end end From e82467ca41f4940add32061ca70214e236cc435f Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sun, 9 Oct 2022 10:49:51 +0900 Subject: [PATCH 024/500] Remove timeline preview link from nav panel when not signed-in (#19320) * Remove timeline preview link from nav panel when not signed-in * Always enable server stats --- .../mastodon/components/server_banner.js | 10 ++-- .../ui/components/navigation_panel.js | 20 ++++--- app/javascript/mastodon/initial_state.js | 58 ++++++++++++++++++- app/serializers/initial_state_serializer.rb | 2 + 4 files changed, 75 insertions(+), 15 deletions(-) diff --git a/app/javascript/mastodon/components/server_banner.js b/app/javascript/mastodon/components/server_banner.js index bdd7f7380b..ae4e200c34 100644 --- a/app/javascript/mastodon/components/server_banner.js +++ b/app/javascript/mastodon/components/server_banner.js @@ -1,12 +1,12 @@ -import React from 'react'; import PropTypes from 'prop-types'; -import { domain } from 'mastodon/initial_state'; -import { fetchServer } from 'mastodon/actions/server'; +import React from 'react'; +import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { connect } from 'react-redux'; -import Account from 'mastodon/containers/account_container'; +import { fetchServer } from 'mastodon/actions/server'; import ShortNumber from 'mastodon/components/short_number'; import Skeleton from 'mastodon/components/skeleton'; -import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; +import Account from 'mastodon/containers/account_container'; +import { domain } from 'mastodon/initial_state'; const messages = defineMessages({ aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' }, diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 7c7c9056fe..a9b80e71db 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -1,14 +1,14 @@ -import React from 'react'; import PropTypes from 'prop-types'; -import { NavLink, Link } from 'react-router-dom'; +import React from 'react'; import { FormattedMessage } from 'react-intl'; +import { Link, NavLink } from 'react-router-dom'; import Icon from 'mastodon/components/icon'; -import { showTrends } from 'mastodon/initial_state'; -import NotificationsCounterIcon from './notifications_counter_icon'; +import Logo from 'mastodon/components/logo'; +import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container'; +import { showTrends, timelinePreview } from 'mastodon/initial_state'; import FollowRequestsNavLink from './follow_requests_nav_link'; import ListPanel from './list_panel'; -import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container'; -import Logo from 'mastodon/components/logo'; +import NotificationsCounterIcon from './notifications_counter_icon'; import SignInBanner from './sign_in_banner'; export default class NavigationPanel extends React.Component { @@ -37,8 +37,12 @@ export default class NavigationPanel extends React.Component { )} - - + {signedIn || timelinePreview && ( + <> + + + + )} {!signedIn && (
diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index 9ecbfe5763..031c748cf0 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -1,7 +1,59 @@ +// @ts-check + +/** + * @typedef {[code: string, name: string, localName: string]} InitialStateLanguage + */ + +/** + * @typedef InitialStateMeta + * @property {string} access_token + * @property {boolean=} advanced_layout + * @property {boolean} auto_play_gif + * @property {boolean} activity_api_enabled + * @property {string} admin + * @property {boolean=} boost_modal + * @property {boolean} crop_images + * @property {boolean=} delete_modal + * @property {boolean=} disable_swiping + * @property {boolean} display_media + * @property {string} domain + * @property {boolean=} expand_spoilers + * @property {boolean} limited_federation_mode + * @property {string} locale + * @property {string | null} mascot + * @property {string=} me + * @property {boolean} profile_directory + * @property {boolean} registrations_open + * @property {boolean} reduce_motion + * @property {string} repository + * @property {boolean} search_enabled + * @property {string} source_url + * @property {string} streaming_api_base_url + * @property {boolean} timeline_preview + * @property {string} title + * @property {boolean} trends + * @property {boolean} unfollow_modal + * @property {boolean} use_blurhash + * @property {boolean=} use_pending_items + * @property {string} version + */ + +/** + * @typedef InitialState + * @property {InitialStateLanguage[]} languages + * @property {InitialStateMeta} meta + */ + const element = document.getElementById('initial-state'); +/** @type {InitialState | undefined} */ const initialState = element && JSON.parse(element.textContent); -const getMeta = (prop) => initialState && initialState.meta && initialState.meta[prop]; +/** + * @template {keyof InitialStateMeta} K + * @param {K} prop + * @returns {InitialStateMeta[K] | undefined} + */ +const getMeta = (prop) => initialState?.meta && initialState.meta[prop]; export const domain = getMeta('domain'); export const reduceMotion = getMeta('reduce_motion'); @@ -27,6 +79,8 @@ export const showTrends = getMeta('trends'); export const title = getMeta('title'); export const cropImages = getMeta('crop_images'); export const disableSwiping = getMeta('disable_swiping'); -export const languages = initialState && initialState.languages; +export const timelinePreview = getMeta('timeline_preview'); +export const activityApiEnabled = getMeta('activity_api_enabled'); +export const languages = initialState?.languages; export default initialState; diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 1a49182a8e..bec725e1b4 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -28,6 +28,8 @@ class InitialStateSerializer < ActiveModel::Serializer profile_directory: Setting.profile_directory, trends: Setting.trends, registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode, + timeline_preview: Setting.timeline_preview, + activity_api_enabled: Setting.activity_api_enabled, } if object.current_account From a5112b51fdf3ec2b31690e064ea330a090e71957 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sun, 9 Oct 2022 10:55:09 +0900 Subject: [PATCH 025/500] Add title to pages with missing title in Web UI (#19322) --- .../mastodon/containers/mastodon.js | 31 +++++++++++-------- .../mastodon/features/about/index.js | 3 +- .../features/account/components/header.js | 4 +-- .../features/bookmarked_statuses/index.js | 23 ++++++++------ .../features/community_timeline/index.js | 3 +- .../features/direct_timeline/index.js | 19 +++++++----- .../mastodon/features/directory/index.js | 3 +- .../mastodon/features/explore/index.js | 3 +- .../mastodon/features/explore/results.js | 3 +- .../features/favourited_statuses/index.js | 23 ++++++++------ .../mastodon/features/favourites/index.js | 16 +++++----- .../features/getting_started/index.js | 4 +-- .../features/hashtag_timeline/index.js | 3 +- .../mastodon/features/home_timeline/index.js | 5 ++- .../mastodon/features/list_timeline/index.js | 31 +++++++++++-------- .../mastodon/features/lists/index.js | 27 +++++++++------- .../mastodon/features/notifications/index.js | 3 +- .../mastodon/features/privacy_policy/index.js | 3 +- .../features/public_timeline/index.js | 3 +- .../mastodon/features/status/index.js | 4 +-- app/javascript/mastodon/features/ui/index.js | 7 +---- 21 files changed, 118 insertions(+), 103 deletions(-) diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.js index 08241522cf..8e5a1fa3a6 100644 --- a/app/javascript/mastodon/containers/mastodon.js +++ b/app/javascript/mastodon/containers/mastodon.js @@ -1,21 +1,24 @@ -import React from 'react'; -import { Provider } from 'react-redux'; import PropTypes from 'prop-types'; -import configureStore from '../store/configureStore'; +import React from 'react'; +import { Helmet } from 'react-helmet'; +import { IntlProvider, addLocaleData } from 'react-intl'; +import { Provider as ReduxProvider } from 'react-redux'; import { BrowserRouter, Route } from 'react-router-dom'; import { ScrollContext } from 'react-router-scroll-4'; -import UI from '../features/ui'; -import { fetchCustomEmojis } from '../actions/custom_emojis'; -import { hydrateStore } from '../actions/store'; -import { connectUserStream } from '../actions/streaming'; -import { IntlProvider, addLocaleData } from 'react-intl'; -import { getLocale } from '../locales'; -import initialState from '../initial_state'; -import ErrorBoundary from '../components/error_boundary'; +import configureStore from 'mastodon/store/configureStore'; +import UI from 'mastodon/features/ui'; +import { fetchCustomEmojis } from 'mastodon/actions/custom_emojis'; +import { hydrateStore } from 'mastodon/actions/store'; +import { connectUserStream } from 'mastodon/actions/streaming'; +import ErrorBoundary from 'mastodon/components/error_boundary'; +import initialState, { title as siteTitle } from 'mastodon/initial_state'; +import { getLocale } from 'mastodon/locales'; const { localeData, messages } = getLocale(); addLocaleData(localeData); +const title = process.env.NODE_ENV === 'production' ? siteTitle : `${siteTitle} (Dev)`; + export const store = configureStore(); const hydrateAction = hydrateStore(initialState); @@ -73,15 +76,17 @@ export default class Mastodon extends React.PureComponent { return ( - + + + - + ); } diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.js index c48d81d9a8..bc8d3a41b0 100644 --- a/app/javascript/mastodon/features/about/index.js +++ b/app/javascript/mastodon/features/about/index.js @@ -4,7 +4,6 @@ import PropTypes from 'prop-types'; import Column from 'mastodon/components/column'; import LinkFooter from 'mastodon/features/ui/components/link_footer'; import { Helmet } from 'react-helmet'; -import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.about', defaultMessage: 'About' }, @@ -25,7 +24,7 @@ class About extends React.PureComponent { - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 765b3cc1e7..17ab7db771 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { autoPlayGif, me, title, domain } from 'mastodon/initial_state'; +import { autoPlayGif, me, domain } from 'mastodon/initial_state'; import classNames from 'classnames'; import Icon from 'mastodon/components/icon'; import IconButton from 'mastodon/components/icon_button'; @@ -372,7 +372,7 @@ class Header extends ImmutablePureComponent {
- {titleFromAccount(account)} - {title} + {titleFromAccount(account)}
); diff --git a/app/javascript/mastodon/features/bookmarked_statuses/index.js b/app/javascript/mastodon/features/bookmarked_statuses/index.js index 8f41b0f951..0e466e5ed4 100644 --- a/app/javascript/mastodon/features/bookmarked_statuses/index.js +++ b/app/javascript/mastodon/features/bookmarked_statuses/index.js @@ -1,15 +1,16 @@ -import React from 'react'; -import { connect } from 'react-redux'; +import { debounce } from 'lodash'; import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { fetchBookmarkedStatuses, expandBookmarkedStatuses } from '../../actions/bookmarks'; -import Column from '../ui/components/column'; -import ColumnHeader from '../../components/column_header'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; -import StatusList from '../../components/status_list'; +import React from 'react'; +import { Helmet } from 'react-helmet'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { debounce } from 'lodash'; +import { connect } from 'react-redux'; +import { fetchBookmarkedStatuses, expandBookmarkedStatuses } from 'mastodon/actions/bookmarks'; +import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; +import ColumnHeader from 'mastodon/components/column_header'; +import StatusList from 'mastodon/components/status_list'; +import Column from 'mastodon/features/ui/components/column'; const messages = defineMessages({ heading: { id: 'column.bookmarks', defaultMessage: 'Bookmarks' }, @@ -95,6 +96,10 @@ class Bookmarks extends ImmutablePureComponent { emptyMessage={emptyMessage} bindToDocument={!multiColumn} /> + + + {intl.formatMessage(messages.heading)} +
); } diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js index 8fa372de4f..afa7b3ed47 100644 --- a/app/javascript/mastodon/features/community_timeline/index.js +++ b/app/javascript/mastodon/features/community_timeline/index.js @@ -10,7 +10,6 @@ import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import ColumnSettingsContainer from './containers/column_settings_container'; import { connectCommunityStream } from '../../actions/streaming'; import { Helmet } from 'react-helmet'; -import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.community', defaultMessage: 'Local timeline' }, @@ -145,7 +144,7 @@ class CommunityTimeline extends React.PureComponent { /> - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/mastodon/features/direct_timeline/index.js b/app/javascript/mastodon/features/direct_timeline/index.js index debb2d721c..cfaa9c4c5d 100644 --- a/app/javascript/mastodon/features/direct_timeline/index.js +++ b/app/javascript/mastodon/features/direct_timeline/index.js @@ -1,12 +1,13 @@ -import React from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import Column from '../../components/column'; -import ColumnHeader from '../../components/column_header'; -import { mountConversations, unmountConversations, expandConversations } from '../../actions/conversations'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; +import React from 'react'; +import { Helmet } from 'react-helmet'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import { connectDirectStream } from '../../actions/streaming'; +import { connect } from 'react-redux'; +import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; +import { mountConversations, unmountConversations, expandConversations } from 'mastodon/actions/conversations'; +import { connectDirectStream } from 'mastodon/actions/streaming'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; import ConversationsListContainer from './containers/conversations_list_container'; const messages = defineMessages({ @@ -94,6 +95,10 @@ class DirectTimeline extends React.PureComponent { prepend={
} emptyMessage={} /> + + + {intl.formatMessage(messages.title)} + ); } diff --git a/app/javascript/mastodon/features/directory/index.js b/app/javascript/mastodon/features/directory/index.js index 36f46c510e..0ce7919b6c 100644 --- a/app/javascript/mastodon/features/directory/index.js +++ b/app/javascript/mastodon/features/directory/index.js @@ -13,7 +13,6 @@ import RadioButton from 'mastodon/components/radio_button'; import LoadMore from 'mastodon/components/load_more'; import ScrollContainer from 'mastodon/containers/scroll_container'; import LoadingIndicator from 'mastodon/components/loading_indicator'; -import { title } from 'mastodon/initial_state'; import { Helmet } from 'react-helmet'; const messages = defineMessages({ @@ -169,7 +168,7 @@ class Directory extends React.PureComponent { {multiColumn && !pinned ? {scrollableArea} : scrollableArea} - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.js index 21bb6e8281..566be631e0 100644 --- a/app/javascript/mastodon/features/explore/index.js +++ b/app/javascript/mastodon/features/explore/index.js @@ -12,7 +12,6 @@ import Suggestions from './suggestions'; import Search from 'mastodon/features/compose/containers/search_container'; import SearchResults from './results'; import { Helmet } from 'react-helmet'; -import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'explore.title', defaultMessage: 'Explore' }, @@ -84,7 +83,7 @@ class Explore extends React.PureComponent { - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} )} diff --git a/app/javascript/mastodon/features/explore/results.js b/app/javascript/mastodon/features/explore/results.js index 0dc108918d..b2f6c72b74 100644 --- a/app/javascript/mastodon/features/explore/results.js +++ b/app/javascript/mastodon/features/explore/results.js @@ -10,7 +10,6 @@ import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; import { List as ImmutableList } from 'immutable'; import LoadMore from 'mastodon/components/load_more'; import LoadingIndicator from 'mastodon/components/loading_indicator'; -import { title } from 'mastodon/initial_state'; import { Helmet } from 'react-helmet'; const messages = defineMessages({ @@ -118,7 +117,7 @@ class Results extends React.PureComponent {
- {intl.formatMessage(messages.title, { q })} - {title} + {intl.formatMessage(messages.title, { q })} ); diff --git a/app/javascript/mastodon/features/favourited_statuses/index.js b/app/javascript/mastodon/features/favourited_statuses/index.js index 73631946a7..f1d32eff17 100644 --- a/app/javascript/mastodon/features/favourited_statuses/index.js +++ b/app/javascript/mastodon/features/favourited_statuses/index.js @@ -1,15 +1,16 @@ -import React from 'react'; -import { connect } from 'react-redux'; +import { debounce } from 'lodash'; import PropTypes from 'prop-types'; +import React from 'react'; +import { Helmet } from 'react-helmet'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { fetchFavouritedStatuses, expandFavouritedStatuses } from '../../actions/favourites'; -import Column from '../ui/components/column'; -import ColumnHeader from '../../components/column_header'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; -import StatusList from '../../components/status_list'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { debounce } from 'lodash'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { connect } from 'react-redux'; +import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; +import { fetchFavouritedStatuses, expandFavouritedStatuses } from 'mastodon/actions/favourites'; +import ColumnHeader from 'mastodon/components/column_header'; +import StatusList from 'mastodon/components/status_list'; +import Column from 'mastodon/features/ui/components/column'; const messages = defineMessages({ heading: { id: 'column.favourites', defaultMessage: 'Favourites' }, @@ -95,6 +96,10 @@ class Favourites extends ImmutablePureComponent { emptyMessage={emptyMessage} bindToDocument={!multiColumn} /> + + + {intl.formatMessage(messages.heading)} + ); } diff --git a/app/javascript/mastodon/features/favourites/index.js b/app/javascript/mastodon/features/favourites/index.js index f060068a49..673317f04a 100644 --- a/app/javascript/mastodon/features/favourites/index.js +++ b/app/javascript/mastodon/features/favourites/index.js @@ -1,16 +1,16 @@ +import PropTypes from 'prop-types'; import React from 'react'; -import { connect } from 'react-redux'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import LoadingIndicator from '../../components/loading_indicator'; -import { fetchFavourites } from '../../actions/interactions'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import AccountContainer from '../../containers/account_container'; -import Column from '../ui/components/column'; -import ScrollableList from '../../components/scrollable_list'; +import { connect } from 'react-redux'; +import ColumnHeader from 'mastodon/components/column_header'; import Icon from 'mastodon/components/icon'; -import ColumnHeader from '../../components/column_header'; +import { fetchFavourites } from 'mastodon/actions/interactions'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; +import ScrollableList from 'mastodon/components/scrollable_list'; +import AccountContainer from 'mastodon/containers/account_container'; +import Column from 'mastodon/features/ui/components/column'; const messages = defineMessages({ refresh: { id: 'refresh', defaultMessage: 'Refresh' }, diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index d998127a2b..42a5b581f7 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -8,7 +8,7 @@ import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me, title, showTrends } from '../../initial_state'; +import { me, showTrends } from '../../initial_state'; import { fetchFollowRequests } from 'mastodon/actions/accounts'; import { List as ImmutableList } from 'immutable'; import NavigationContainer from '../compose/containers/navigation_container'; @@ -137,7 +137,7 @@ class GettingStarted extends ImmutablePureComponent { {(multiColumn && showTrends) && } - {intl.formatMessage(messages.menu)} - {title} + {intl.formatMessage(messages.menu)} ); diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js index dee4181a8a..0f7df5036c 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.js +++ b/app/javascript/mastodon/features/hashtag_timeline/index.js @@ -14,7 +14,6 @@ import { isEqual } from 'lodash'; import { fetchHashtag, followHashtag, unfollowHashtag } from 'mastodon/actions/tags'; import Icon from 'mastodon/components/icon'; import classNames from 'classnames'; -import { title } from 'mastodon/initial_state'; import { Helmet } from 'react-helmet'; const messages = defineMessages({ @@ -228,7 +227,7 @@ class HashtagTimeline extends React.PureComponent { /> - {`#${id}`} - {title} + #{id} ); diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js index aac92244de..68770b739d 100644 --- a/app/javascript/mastodon/features/home_timeline/index.js +++ b/app/javascript/mastodon/features/home_timeline/index.js @@ -15,13 +15,12 @@ import classNames from 'classnames'; import IconWithBadge from 'mastodon/components/icon_with_badge'; import NotSignedInIndicator from 'mastodon/components/not_signed_in_indicator'; import { Helmet } from 'react-helmet'; -import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.home', defaultMessage: 'Home' }, show_announcements: { id: 'home.show_announcements', defaultMessage: 'Show announcements' }, hide_announcements: { id: 'home.hide_announcements', defaultMessage: 'Hide announcements' }, -}); +}); const mapStateToProps = state => ({ hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0, @@ -167,7 +166,7 @@ class HomeTimeline extends React.PureComponent { ) : } - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/mastodon/features/list_timeline/index.js b/app/javascript/mastodon/features/list_timeline/index.js index 8010274f88..f0a7a0c7ff 100644 --- a/app/javascript/mastodon/features/list_timeline/index.js +++ b/app/javascript/mastodon/features/list_timeline/index.js @@ -1,21 +1,22 @@ -import React from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import React from 'react'; +import { Helmet } from 'react-helmet'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import StatusListContainer from '../ui/containers/status_list_container'; -import Column from '../../components/column'; -import ColumnBackButton from '../../components/column_back_button'; -import ColumnHeader from '../../components/column_header'; -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; -import { connectListStream } from '../../actions/streaming'; -import { expandListTimeline } from '../../actions/timelines'; -import { fetchList, deleteList, updateList } from '../../actions/lists'; -import { openModal } from '../../actions/modal'; -import MissingIndicator from '../../components/missing_indicator'; -import LoadingIndicator from '../../components/loading_indicator'; +import { connect } from 'react-redux'; +import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns'; +import { fetchList, deleteList, updateList } from 'mastodon/actions/lists'; +import { openModal } from 'mastodon/actions/modal'; +import { connectListStream } from 'mastodon/actions/streaming'; +import { expandListTimeline } from 'mastodon/actions/timelines'; +import Column from 'mastodon/components/column'; +import ColumnBackButton from 'mastodon/components/column_back_button'; +import ColumnHeader from 'mastodon/components/column_header'; import Icon from 'mastodon/components/icon'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; +import MissingIndicator from 'mastodon/components/missing_indicator'; import RadioButton from 'mastodon/components/radio_button'; +import StatusListContainer from 'mastodon/features/ui/containers/status_list_container'; const messages = defineMessages({ deleteMessage: { id: 'confirmations.delete_list.message', defaultMessage: 'Are you sure you want to permanently delete this list?' }, @@ -208,6 +209,10 @@ class ListTimeline extends React.PureComponent { emptyMessage={} bindToDocument={!multiColumn} /> + + + {title} + ); } diff --git a/app/javascript/mastodon/features/lists/index.js b/app/javascript/mastodon/features/lists/index.js index 809d79d998..389a0c5c89 100644 --- a/app/javascript/mastodon/features/lists/index.js +++ b/app/javascript/mastodon/features/lists/index.js @@ -1,18 +1,19 @@ -import React from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import React from 'react'; +import { Helmet } from 'react-helmet'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import LoadingIndicator from '../../components/loading_indicator'; -import Column from '../ui/components/column'; -import ColumnBackButtonSlim from '../../components/column_back_button_slim'; -import { fetchLists } from '../../actions/lists'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import ColumnLink from '../ui/components/column_link'; -import ColumnSubheading from '../ui/components/column_subheading'; -import NewListForm from './components/new_list_form'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { connect } from 'react-redux'; import { createSelector } from 'reselect'; -import ScrollableList from '../../components/scrollable_list'; +import { fetchLists } from 'mastodon/actions/lists'; +import ColumnBackButtonSlim from 'mastodon/components/column_back_button_slim'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; +import ScrollableList from 'mastodon/components/scrollable_list'; +import Column from 'mastodon/features/ui/components/column'; +import ColumnLink from 'mastodon/features/ui/components/column_link'; +import ColumnSubheading from 'mastodon/features/ui/components/column_subheading'; +import NewListForm from './components/new_list_form'; const messages = defineMessages({ heading: { id: 'column.lists', defaultMessage: 'Lists' }, @@ -76,6 +77,10 @@ class Lists extends ImmutablePureComponent { , )} + + + {intl.formatMessage(messages.heading)} + ); } diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js index d9f8101c3d..4577bcb2dc 100644 --- a/app/javascript/mastodon/features/notifications/index.js +++ b/app/javascript/mastodon/features/notifications/index.js @@ -28,7 +28,6 @@ import compareId from 'mastodon/compare_id'; import NotificationsPermissionBanner from './components/notifications_permission_banner'; import NotSignedInIndicator from 'mastodon/components/not_signed_in_indicator'; import { Helmet } from 'react-helmet'; -import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.notifications', defaultMessage: 'Notifications' }, @@ -281,7 +280,7 @@ class Notifications extends React.PureComponent { {scrollContainer} - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/mastodon/features/privacy_policy/index.js b/app/javascript/mastodon/features/privacy_policy/index.js index b7ca03d2c2..5fbe340c05 100644 --- a/app/javascript/mastodon/features/privacy_policy/index.js +++ b/app/javascript/mastodon/features/privacy_policy/index.js @@ -1,6 +1,5 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { title } from 'mastodon/initial_state'; import { Helmet } from 'react-helmet'; import { FormattedMessage, FormattedDate, injectIntl, defineMessages } from 'react-intl'; import Column from 'mastodon/components/column'; @@ -51,7 +50,7 @@ class PrivacyPolicy extends React.PureComponent {
- {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js index a34f2ff57d..5b1b7c650e 100644 --- a/app/javascript/mastodon/features/public_timeline/index.js +++ b/app/javascript/mastodon/features/public_timeline/index.js @@ -10,7 +10,6 @@ import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import ColumnSettingsContainer from './containers/column_settings_container'; import { connectPublicStream } from '../../actions/streaming'; import { Helmet } from 'react-helmet'; -import { title } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'column.public', defaultMessage: 'Federated timeline' }, @@ -148,7 +147,7 @@ class PublicTimeline extends React.PureComponent { /> - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index 3d238e7ee1..f9a97c9b5c 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -56,7 +56,7 @@ import { openModal } from '../../actions/modal'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { HotKeys } from 'react-hotkeys'; -import { boostModal, deleteModal, title } from '../../initial_state'; +import { boostModal, deleteModal } from '../../initial_state'; import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; import { textForScreenReader, defaultMediaVisibility } from '../../components/status'; import Icon from 'mastodon/components/icon'; @@ -658,7 +658,7 @@ class Status extends ImmutablePureComponent { - {titleFromStatus(status)} - {title} + {titleFromStatus(status)} ); diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index bd19303686..2edd3b9fe2 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -54,9 +54,8 @@ import { About, PrivacyPolicy, } from './util/async-components'; -import { me, title } from '../../initial_state'; +import { me } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; -import { Helmet } from 'react-helmet'; import Header from './components/header'; // Dummy import, to make sure that ends up in the application bundle. @@ -575,10 +574,6 @@ class UI extends React.PureComponent { - - - {title} -
); From f41ec9af05d3e2145e62f705225dbabb7e04e242 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 9 Oct 2022 06:08:37 +0200 Subject: [PATCH 026/500] Add dismissable hints to various timelines in web UI (#19315) Co-authored-by: Yamagishi Kazutoshi --- .../mastodon/components/dismissable_banner.js | 51 +++++++++++++++++++ .../features/community_timeline/index.js | 6 +++ .../mastodon/features/explore/links.js | 11 ++++ .../mastodon/features/explore/statuses.js | 29 +++++++---- .../mastodon/features/explore/tags.js | 11 ++++ .../features/public_timeline/index.js | 5 ++ app/javascript/mastodon/settings.js | 1 + .../styles/mastodon/components.scss | 25 +++++++++ 8 files changed, 128 insertions(+), 11 deletions(-) create mode 100644 app/javascript/mastodon/components/dismissable_banner.js diff --git a/app/javascript/mastodon/components/dismissable_banner.js b/app/javascript/mastodon/components/dismissable_banner.js new file mode 100644 index 0000000000..1ee0320564 --- /dev/null +++ b/app/javascript/mastodon/components/dismissable_banner.js @@ -0,0 +1,51 @@ +import React from 'react'; +import IconButton from './icon_button'; +import PropTypes from 'prop-types'; +import { injectIntl, defineMessages } from 'react-intl'; +import { bannerSettings } from 'mastodon/settings'; + +const messages = defineMessages({ + dismiss: { id: 'dismissable_banner.dismiss', defaultMessage: 'Dismiss' }, +}); + +export default @injectIntl +class DismissableBanner extends React.PureComponent { + + static propTypes = { + id: PropTypes.string.isRequired, + children: PropTypes.node, + intl: PropTypes.object.isRequired, + }; + + state = { + visible: !bannerSettings.get(this.props.id), + }; + + handleDismiss = () => { + const { id } = this.props; + this.setState({ visible: false }, () => bannerSettings.set(id, true)); + } + + render () { + const { visible } = this.state; + + if (!visible) { + return null; + } + + const { children, intl } = this.props; + + return ( +
+
+ {children} +
+ +
+ +
+
+ ); + } + +} diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js index afa7b3ed47..7575218025 100644 --- a/app/javascript/mastodon/features/community_timeline/index.js +++ b/app/javascript/mastodon/features/community_timeline/index.js @@ -10,6 +10,8 @@ import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import ColumnSettingsContainer from './containers/column_settings_container'; import { connectCommunityStream } from '../../actions/streaming'; import { Helmet } from 'react-helmet'; +import { domain } from 'mastodon/initial_state'; +import DismissableBanner from 'mastodon/components/dismissable_banner'; const messages = defineMessages({ title: { id: 'column.community', defaultMessage: 'Local timeline' }, @@ -134,6 +136,10 @@ class CommunityTimeline extends React.PureComponent { + + + + ({ links: state.getIn(['trends', 'links', 'items']), @@ -29,9 +30,17 @@ class Links extends React.PureComponent { render () { const { isLoading, links } = this.props; + const banner = ( + + + + ); + if (!isLoading && links.isEmpty()) { return (
+ {banner} +
@@ -41,6 +50,8 @@ class Links extends React.PureComponent { return (
+ {banner} + {isLoading ? () : links.map(link => ( ({ statusIds: state.getIn(['status_lists', 'trending', 'items']), @@ -40,17 +41,23 @@ class Statuses extends React.PureComponent { const emptyMessage = ; return ( - + <> + + + + + + ); } diff --git a/app/javascript/mastodon/features/explore/tags.js b/app/javascript/mastodon/features/explore/tags.js index 6cd3a6fb10..258dc392f2 100644 --- a/app/javascript/mastodon/features/explore/tags.js +++ b/app/javascript/mastodon/features/explore/tags.js @@ -6,6 +6,7 @@ import LoadingIndicator from 'mastodon/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchTrendingHashtags } from 'mastodon/actions/trends'; import { FormattedMessage } from 'react-intl'; +import DismissableBanner from 'mastodon/components/dismissable_banner'; const mapStateToProps = state => ({ hashtags: state.getIn(['trends', 'tags', 'items']), @@ -29,9 +30,17 @@ class Tags extends React.PureComponent { render () { const { isLoading, hashtags } = this.props; + const banner = ( + + + + ); + if (!isLoading && hashtags.isEmpty()) { return (
+ {banner} +
@@ -41,6 +50,8 @@ class Tags extends React.PureComponent { return (
+ {banner} + {isLoading ? () : hashtags.map(hashtag => ( ))} diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js index 5b1b7c650e..8dbef98c0b 100644 --- a/app/javascript/mastodon/features/public_timeline/index.js +++ b/app/javascript/mastodon/features/public_timeline/index.js @@ -10,6 +10,7 @@ import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; import ColumnSettingsContainer from './containers/column_settings_container'; import { connectPublicStream } from '../../actions/streaming'; import { Helmet } from 'react-helmet'; +import DismissableBanner from 'mastodon/components/dismissable_banner'; const messages = defineMessages({ title: { id: 'column.public', defaultMessage: 'Federated timeline' }, @@ -137,6 +138,10 @@ class PublicTimeline extends React.PureComponent { + + + + Date: Sun, 9 Oct 2022 12:28:59 +0200 Subject: [PATCH 027/500] Fix button to dismiss suggestions not showing up in search results (#19325) Fix a typo. The scope of this fix is pretty minor as that view only ever shows up in one corner case, now. --- .../mastodon/features/compose/components/search_results.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/compose/components/search_results.js b/app/javascript/mastodon/features/compose/components/search_results.js index e2493a6c6a..44ab43638b 100644 --- a/app/javascript/mastodon/features/compose/components/search_results.js +++ b/app/javascript/mastodon/features/compose/components/search_results.js @@ -61,8 +61,8 @@ class SearchResults extends ImmutablePureComponent { ))} From 07653246223251052f5150e1e74139bf8ff41ec4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 9 Oct 2022 15:55:32 +0200 Subject: [PATCH 028/500] Fix intermediary responsive layout, accessibility on navigation in web UI (#19324) * Fix intermediary responsive layout, accessibility on navigation in web UI * `yarn test:jest -u` Co-authored-by: Yamagishi Kazutoshi --- .../__snapshots__/avatar-test.js.snap | 4 ++ app/javascript/mastodon/components/avatar.js | 2 + app/javascript/mastodon/components/logo.js | 3 +- .../features/ui/components/column_link.js | 20 ++++--- ...link.js => follow_requests_column_link.js} | 24 ++++++-- .../mastodon/features/ui/components/header.js | 3 +- .../ui/components/navigation_panel.js | 59 +++++++++++++------ .../styles/mastodon/components.scss | 34 +++++++++-- app/javascript/styles/mastodon/variables.scss | 2 +- 9 files changed, 109 insertions(+), 42 deletions(-) rename app/javascript/mastodon/features/ui/components/{follow_requests_nav_link.js => follow_requests_column_link.js} (52%) diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap index 1c200b1848..f5c10aa377 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap @@ -2,9 +2,11 @@ exports[` Autoplay renders a animated avatar 1`] = `
Autoplay renders a animated avatar 1`] = ` exports[` Still renders a still avatar 1`] = `
); } diff --git a/app/javascript/mastodon/components/logo.js b/app/javascript/mastodon/components/logo.js index 3570b3644b..ee5c22496c 100644 --- a/app/javascript/mastodon/components/logo.js +++ b/app/javascript/mastodon/components/logo.js @@ -1,7 +1,8 @@ import React from 'react'; const Logo = () => ( - + + Mastodon ); diff --git a/app/javascript/mastodon/features/ui/components/column_link.js b/app/javascript/mastodon/features/ui/components/column_link.js index 0a25f1ea20..42da05c0ac 100644 --- a/app/javascript/mastodon/features/ui/components/column_link.js +++ b/app/javascript/mastodon/features/ui/components/column_link.js @@ -1,37 +1,41 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Link } from 'react-router-dom'; +import { NavLink } from 'react-router-dom'; import Icon from 'mastodon/components/icon'; +import classNames from 'classnames'; -const ColumnLink = ({ icon, text, to, href, method, badge }) => { +const ColumnLink = ({ icon, text, to, href, method, badge, transparent, ...other }) => { + const className = classNames('column-link', { 'column-link--transparent': transparent }); const badgeElement = typeof badge !== 'undefined' ? {badge} : null; + const iconElement = typeof icon === 'string' ? : icon; if (href) { return ( - - + + {iconElement} {text} {badgeElement} ); } else { return ( - - + + {iconElement} {text} {badgeElement} - + ); } }; ColumnLink.propTypes = { - icon: PropTypes.string.isRequired, + icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired, text: PropTypes.string.isRequired, to: PropTypes.string, href: PropTypes.string, method: PropTypes.string, badge: PropTypes.node, + transparent: PropTypes.bool, }; export default ColumnLink; diff --git a/app/javascript/mastodon/features/ui/components/follow_requests_nav_link.js b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.js similarity index 52% rename from app/javascript/mastodon/features/ui/components/follow_requests_nav_link.js rename to app/javascript/mastodon/features/ui/components/follow_requests_column_link.js index 950ed7b273..8d4057782c 100644 --- a/app/javascript/mastodon/features/ui/components/follow_requests_nav_link.js +++ b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.js @@ -2,22 +2,27 @@ import React from 'react'; import PropTypes from 'prop-types'; import { fetchFollowRequests } from 'mastodon/actions/accounts'; import { connect } from 'react-redux'; -import { NavLink, withRouter } from 'react-router-dom'; +import ColumnLink from 'mastodon/features/ui/components/column_link'; import IconWithBadge from 'mastodon/components/icon_with_badge'; import { List as ImmutableList } from 'immutable'; -import { FormattedMessage } from 'react-intl'; +import { injectIntl, defineMessages } from 'react-intl'; + +const messages = defineMessages({ + text: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, +}); const mapStateToProps = state => ({ count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size, }); -export default @withRouter +export default @injectIntl @connect(mapStateToProps) -class FollowRequestsNavLink extends React.Component { +class FollowRequestsColumnLink extends React.Component { static propTypes = { dispatch: PropTypes.func.isRequired, count: PropTypes.number.isRequired, + intl: PropTypes.object.isRequired, }; componentDidMount () { @@ -27,13 +32,20 @@ class FollowRequestsNavLink extends React.Component { } render () { - const { count } = this.props; + const { count, intl } = this.props; if (count === 0) { return null; } - return ; + return ( + } + text={intl.formatMessage(messages.text)} + /> + ); } } diff --git a/app/javascript/mastodon/features/ui/components/header.js b/app/javascript/mastodon/features/ui/components/header.js index cddab820c6..c49f48cc98 100644 --- a/app/javascript/mastodon/features/ui/components/header.js +++ b/app/javascript/mastodon/features/ui/components/header.js @@ -11,8 +11,7 @@ import { connect } from 'react-redux'; const Account = connect(state => ({ account: state.getIn(['accounts', me]), }))(({ account }) => ( - - {account.get('acct')} + )); diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index a9b80e71db..aa917c1ca5 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -1,24 +1,45 @@ -import PropTypes from 'prop-types'; import React from 'react'; -import { FormattedMessage } from 'react-intl'; -import { Link, NavLink } from 'react-router-dom'; -import Icon from 'mastodon/components/icon'; +import PropTypes from 'prop-types'; +import { defineMessages, injectIntl } from 'react-intl'; +import { Link } from 'react-router-dom'; import Logo from 'mastodon/components/logo'; import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container'; import { showTrends, timelinePreview } from 'mastodon/initial_state'; -import FollowRequestsNavLink from './follow_requests_nav_link'; +import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; import SignInBanner from './sign_in_banner'; +import ColumnLink from 'mastodon/features/ui/components/column_link'; + +const messages = defineMessages({ + home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, + notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' }, + explore: { id: 'explore.title', defaultMessage: 'Explore' }, + local: { id: 'tabs_bar.local_timeline', defaultMessage: 'Local' }, + federated: { id: 'tabs_bar.federated_timeline', defaultMessage: 'Federated' }, + direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' }, + favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, + bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' }, + lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' }, + preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, + followsAndFollowers: { id: 'navigation_bar.follows_and_followers', defaultMessage: 'Follows and followers' }, + about: { id: 'navigation_bar.about', defaultMessage: 'About' }, +}); -export default class NavigationPanel extends React.Component { +export default @injectIntl +class NavigationPanel extends React.Component { static contextTypes = { router: PropTypes.object.isRequired, identity: PropTypes.object.isRequired, }; + static propTypes = { + intl: PropTypes.object.isRequired, + }; + render () { + const { intl } = this.props; const { signedIn } = this.context.identity; return ( @@ -30,17 +51,17 @@ export default class NavigationPanel extends React.Component { {signedIn && ( - - - + + } text={intl.formatMessage(messages.notifications)} /> + )} - + {signedIn || timelinePreview && ( <> - - + + )} @@ -53,23 +74,23 @@ export default class NavigationPanel extends React.Component { {signedIn && ( - - - - + + + +
- - + +
)}

- +
{showTrends && ( diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 02c2a14bff..039d0b9041 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2604,12 +2604,14 @@ $ui-header-height: 55px; } @media screen and (max-width: $no-gap-breakpoint - 1px) { + $sidebar-width: 285px; + .with-fab .scrollable .item-list:last-child { padding-bottom: 5.25rem; } .columns-area__panels__main { - width: calc(100% - 55px); + width: calc(100% - $sidebar-width); } .columns-area__panels { @@ -2617,10 +2619,10 @@ $ui-header-height: 55px; } .columns-area__panels__pane--navigational { - min-width: 55px; + min-width: $sidebar-width; .columns-area__panels__pane__inner { - width: 55px; + width: $sidebar-width; } .navigation-panel { @@ -2630,7 +2632,6 @@ $ui-header-height: 55px; height: 100vh; } - .column-link span, .navigation-panel__sign-in-banner, .navigation-panel__logo, .getting-started__trends { @@ -2655,11 +2656,31 @@ $ui-header-height: 55px; } } +@media screen and (max-width: $no-gap-breakpoint - 285px - 1px) { + $sidebar-width: 55px; + + .columns-area__panels__main { + width: calc(100% - $sidebar-width); + } + + .columns-area__panels__pane--navigational { + min-width: $sidebar-width; + + .columns-area__panels__pane__inner { + width: $sidebar-width; + } + + .column-link span { + display: none; + } + } +} + .explore__search-header { display: none; } -@media screen and (max-width: $no-gap-breakpoint + 285px - 1px) { +@media screen and (max-width: $no-gap-breakpoint - 1px) { .columns-area__panels__pane--compositional { display: none; } @@ -3145,6 +3166,9 @@ $ui-header-height: 55px; font-size: 16px; padding: 15px; text-decoration: none; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; &:hover, &:focus, diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss index 775a12e687..2f6c41d5f2 100644 --- a/app/javascript/styles/mastodon/variables.scss +++ b/app/javascript/styles/mastodon/variables.scss @@ -53,7 +53,7 @@ $media-modal-media-max-width: 100%; // put margins on top and bottom of image to avoid the screen covered by image. $media-modal-media-max-height: 80%; -$no-gap-breakpoint: 890px; +$no-gap-breakpoint: 1175px; $font-sans-serif: 'mastodon-font-sans-serif' !default; $font-display: 'mastodon-font-display' !default; From f879c4274721ee23b709976ce7f913210b9322f0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 9 Oct 2022 18:27:03 +0200 Subject: [PATCH 029/500] New Crowdin updates (#19317) * New translations activerecord.en.yml (Catalan) * New translations devise.en.yml (Catalan) * New translations doorkeeper.en.yml (Catalan) * New translations devise.en.yml (Czech) * New translations doorkeeper.en.yml (Czech) * New translations simple_form.en.yml (Danish) * New translations activerecord.en.yml (Danish) * New translations devise.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations doorkeeper.en.yml (Frisian) * New translations activerecord.en.yml (German) * New translations devise.en.yml (German) * New translations doorkeeper.en.yml (German) * New translations simple_form.en.yml (Greek) * New translations activerecord.en.yml (Greek) * New translations devise.en.yml (Greek) * New translations doorkeeper.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations activerecord.en.yml (Frisian) * New translations devise.en.yml (Frisian) * New translations simple_form.en.yml (Italian) * New translations activerecord.en.yml (Italian) * New translations devise.en.yml (Italian) * New translations doorkeeper.en.yml (Italian) * New translations activerecord.en.yml (Portuguese) * New translations doorkeeper.en.yml (Norwegian) * New translations activerecord.en.yml (Polish) * New translations devise.en.yml (Polish) * New translations doorkeeper.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations devise.en.yml (Portuguese) * New translations simple_form.en.yml (Slovenian) * New translations devise.en.yml (Norwegian) * New translations simple_form.en.yml (Russian) * New translations activerecord.en.yml (Russian) * New translations devise.en.yml (Russian) * New translations doorkeeper.en.yml (Russian) * New translations simple_form.en.yml (Slovak) * New translations activerecord.en.yml (Slovak) * New translations devise.en.yml (Slovak) * New translations doorkeeper.en.yml (Slovak) * New translations doorkeeper.en.yml (Portuguese) * New translations simple_form.en.yml (Norwegian) * New translations activerecord.en.yml (Norwegian) * New translations devise.en.yml (Korean) * New translations activerecord.en.yml (Japanese) * New translations devise.en.yml (Japanese) * New translations doorkeeper.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations activerecord.en.yml (Georgian) * New translations devise.en.yml (Georgian) * New translations doorkeeper.en.yml (Georgian) * New translations simple_form.en.yml (Korean) * New translations activerecord.en.yml (Korean) * New translations doorkeeper.en.yml (Korean) * New translations doorkeeper.en.yml (Dutch) * New translations devise.en.yml (Dutch) * New translations activerecord.en.yml (Slovenian) * New translations devise.en.yml (Slovenian) * New translations devise.en.yml (Galician) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations devise.en.yml (Urdu (Pakistan)) * New translations activerecord.en.yml (Vietnamese) * New translations devise.en.yml (Vietnamese) * New translations doorkeeper.en.yml (Vietnamese) * New translations simple_form.en.yml (Galician) * New translations doorkeeper.en.yml (Galician) * New translations activerecord.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Icelandic) * New translations activerecord.en.yml (Icelandic) * New translations devise.en.yml (Icelandic) * New translations doorkeeper.en.yml (Icelandic) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations devise.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations activerecord.en.yml (Indonesian) * New translations devise.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations doorkeeper.en.yml (Slovenian) * New translations devise.en.yml (Swedish) * New translations simple_form.en.yml (Albanian) * New translations activerecord.en.yml (Albanian) * New translations devise.en.yml (Albanian) * New translations doorkeeper.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations activerecord.en.yml (Serbian (Cyrillic)) * New translations devise.en.yml (Serbian (Cyrillic)) * New translations doorkeeper.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations activerecord.en.yml (Swedish) * New translations doorkeeper.en.yml (Swedish) * New translations doorkeeper.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Turkish) * New translations activerecord.en.yml (Turkish) * New translations devise.en.yml (Turkish) * New translations doorkeeper.en.yml (Turkish) * New translations simple_form.en.yml (Ukrainian) * New translations activerecord.en.yml (Ukrainian) * New translations devise.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Ukrainian) * New translations activerecord.en.yml (Chinese Simplified) * New translations devise.en.yml (Chinese Simplified) * New translations devise.en.yml (Indonesian) * New translations doorkeeper.en.yml (Indonesian) * New translations simple_form.en.yml (Kazakh) * New translations doorkeeper.en.yml (Thai) * New translations simple_form.en.yml (Croatian) * New translations activerecord.en.yml (Croatian) * New translations devise.en.yml (Croatian) * New translations doorkeeper.en.yml (Croatian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations devise.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Kazakh) * New translations activerecord.en.yml (Thai) * New translations devise.en.yml (Kazakh) * New translations doorkeeper.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations activerecord.en.yml (Estonian) * New translations devise.en.yml (Estonian) * New translations doorkeeper.en.yml (Estonian) * New translations simple_form.en.yml (Latvian) * New translations activerecord.en.yml (Latvian) * New translations devise.en.yml (Latvian) * New translations doorkeeper.en.yml (Latvian) * New translations devise.en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Persian) * New translations doorkeeper.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Persian) * New translations devise.en.yml (Persian) * New translations doorkeeper.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations activerecord.en.yml (Tamil) * New translations devise.en.yml (Tamil) * New translations doorkeeper.en.yml (Tamil) * New translations simple_form.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Spanish, Argentina) * New translations devise.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Marathi) * New translations activerecord.en.yml (Spanish, Mexico) * New translations devise.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations activerecord.en.yml (Bengali) * New translations devise.en.yml (Bengali) * New translations activerecord.en.yml (Marathi) * New translations activerecord.en.yml (Hindi) * New translations devise.en.yml (Malayalam) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Tatar) * New translations activerecord.en.yml (Tatar) * New translations devise.en.yml (Tatar) * New translations doorkeeper.en.yml (Tatar) * New translations simple_form.en.yml (Malayalam) * New translations activerecord.en.yml (Malayalam) * New translations doorkeeper.en.yml (Malayalam) * New translations simple_form.en.yml (Breton) * New translations activerecord.en.yml (Breton) * New translations devise.en.yml (Breton) * New translations doorkeeper.en.yml (Breton) * New translations activerecord.en.yml (Sinhala) * New translations devise.en.yml (Sinhala) * New translations doorkeeper.en.yml (Sinhala) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Hindi) * New translations doorkeeper.en.yml (Hindi) * New translations simple_form.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations devise.en.yml (Welsh) * New translations doorkeeper.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations activerecord.en.yml (Esperanto) * New translations devise.en.yml (Esperanto) * New translations doorkeeper.en.yml (Esperanto) * New translations simple_form.en.yml (Corsican) * New translations activerecord.en.yml (Corsican) * New translations devise.en.yml (Corsican) * New translations doorkeeper.en.yml (Corsican) * New translations simple_form.en.yml (Sardinian) * New translations activerecord.en.yml (Sardinian) * New translations devise.en.yml (Sardinian) * New translations doorkeeper.en.yml (Sardinian) * New translations devise.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Kabyle) * New translations activerecord.en.yml (Kabyle) * New translations devise.en.yml (Kabyle) * New translations doorkeeper.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations activerecord.en.yml (Ido) * New translations devise.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Occitan) * New translations devise.en.yml (Kannada) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Asturian) * New translations devise.en.yml (Asturian) * New translations activerecord.en.yml (Occitan) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations devise.en.yml (Occitan) * New translations doorkeeper.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Serbian (Latin)) * New translations devise.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations devise.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations devise.en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Ukrainian) * New translations en.json (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations en.json (Danish) * New translations en.yml (Danish) * New translations en.json (Danish) * New translations en.json (Vietnamese) * New translations en.yml (Turkish) * New translations en.json (Turkish) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Turkish) * New translations en.yml (Spanish) * New translations en.json (Spanish) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 6 ++ app/javascript/mastodon/locales/ar.json | 6 ++ app/javascript/mastodon/locales/ast.json | 26 ++++--- app/javascript/mastodon/locales/bg.json | 6 ++ app/javascript/mastodon/locales/bn.json | 6 ++ app/javascript/mastodon/locales/br.json | 6 ++ app/javascript/mastodon/locales/ca.json | 38 ++++++---- app/javascript/mastodon/locales/ckb.json | 6 ++ app/javascript/mastodon/locales/co.json | 6 ++ app/javascript/mastodon/locales/cs.json | 28 ++++--- app/javascript/mastodon/locales/cy.json | 6 ++ app/javascript/mastodon/locales/da.json | 40 +++++----- app/javascript/mastodon/locales/de.json | 18 +++-- .../mastodon/locales/defaultMessages.json | 31 +++++++- app/javascript/mastodon/locales/el.json | 20 +++-- app/javascript/mastodon/locales/en-GB.json | 6 ++ app/javascript/mastodon/locales/en.json | 6 ++ app/javascript/mastodon/locales/eo.json | 6 ++ app/javascript/mastodon/locales/es-AR.json | 38 ++++++---- app/javascript/mastodon/locales/es-MX.json | 6 ++ app/javascript/mastodon/locales/es.json | 38 ++++++---- app/javascript/mastodon/locales/et.json | 6 ++ app/javascript/mastodon/locales/eu.json | 6 ++ app/javascript/mastodon/locales/fa.json | 6 ++ app/javascript/mastodon/locales/fi.json | 6 ++ app/javascript/mastodon/locales/fr.json | 6 ++ app/javascript/mastodon/locales/fy.json | 6 ++ app/javascript/mastodon/locales/ga.json | 6 ++ app/javascript/mastodon/locales/gd.json | 6 ++ app/javascript/mastodon/locales/gl.json | 38 ++++++---- app/javascript/mastodon/locales/he.json | 6 ++ app/javascript/mastodon/locales/hi.json | 6 ++ app/javascript/mastodon/locales/hr.json | 6 ++ app/javascript/mastodon/locales/hu.json | 38 ++++++---- app/javascript/mastodon/locales/hy.json | 6 ++ app/javascript/mastodon/locales/id.json | 6 ++ app/javascript/mastodon/locales/io.json | 6 ++ app/javascript/mastodon/locales/is.json | 6 ++ app/javascript/mastodon/locales/it.json | 38 ++++++---- app/javascript/mastodon/locales/ja.json | 54 ++++++++------ app/javascript/mastodon/locales/ka.json | 6 ++ app/javascript/mastodon/locales/kab.json | 6 ++ app/javascript/mastodon/locales/kk.json | 6 ++ app/javascript/mastodon/locales/kn.json | 6 ++ app/javascript/mastodon/locales/ko.json | 6 ++ app/javascript/mastodon/locales/ku.json | 38 ++++++---- app/javascript/mastodon/locales/kw.json | 6 ++ app/javascript/mastodon/locales/lt.json | 6 ++ app/javascript/mastodon/locales/lv.json | 38 ++++++---- app/javascript/mastodon/locales/mk.json | 6 ++ app/javascript/mastodon/locales/ml.json | 6 ++ app/javascript/mastodon/locales/mr.json | 6 ++ app/javascript/mastodon/locales/ms.json | 6 ++ app/javascript/mastodon/locales/nl.json | 74 ++++++++++--------- app/javascript/mastodon/locales/nn.json | 6 ++ app/javascript/mastodon/locales/no.json | 6 ++ app/javascript/mastodon/locales/oc.json | 6 ++ app/javascript/mastodon/locales/pa.json | 6 ++ app/javascript/mastodon/locales/pl.json | 40 +++++----- app/javascript/mastodon/locales/pt-BR.json | 6 ++ app/javascript/mastodon/locales/pt-PT.json | 6 ++ app/javascript/mastodon/locales/ro.json | 6 ++ app/javascript/mastodon/locales/ru.json | 24 +++--- app/javascript/mastodon/locales/sa.json | 6 ++ app/javascript/mastodon/locales/sc.json | 6 ++ app/javascript/mastodon/locales/si.json | 6 ++ app/javascript/mastodon/locales/sk.json | 6 ++ app/javascript/mastodon/locales/sl.json | 38 ++++++---- app/javascript/mastodon/locales/sq.json | 6 ++ app/javascript/mastodon/locales/sr-Latn.json | 6 ++ app/javascript/mastodon/locales/sr.json | 6 ++ app/javascript/mastodon/locales/sv.json | 6 ++ app/javascript/mastodon/locales/szl.json | 6 ++ app/javascript/mastodon/locales/ta.json | 6 ++ app/javascript/mastodon/locales/tai.json | 6 ++ app/javascript/mastodon/locales/te.json | 6 ++ app/javascript/mastodon/locales/th.json | 6 ++ app/javascript/mastodon/locales/tr.json | 52 +++++++------ app/javascript/mastodon/locales/tt.json | 6 ++ app/javascript/mastodon/locales/ug.json | 6 ++ app/javascript/mastodon/locales/uk.json | 28 ++++--- app/javascript/mastodon/locales/ur.json | 6 ++ app/javascript/mastodon/locales/vi.json | 42 ++++++----- app/javascript/mastodon/locales/zgh.json | 6 ++ app/javascript/mastodon/locales/zh-CN.json | 6 ++ app/javascript/mastodon/locales/zh-HK.json | 6 ++ app/javascript/mastodon/locales/zh-TW.json | 38 ++++++---- config/locales/ast.yml | 2 + config/locales/ca.yml | 6 +- config/locales/cs.yml | 8 +- config/locales/da.yml | 6 +- config/locales/de.yml | 6 +- config/locales/doorkeeper.ast.yml | 4 +- config/locales/el.yml | 2 + config/locales/es-AR.yml | 6 +- config/locales/es-MX.yml | 4 - config/locales/es.yml | 6 +- config/locales/fa.yml | 1 - config/locales/fi.yml | 4 - config/locales/fr.yml | 4 - config/locales/gd.yml | 4 - config/locales/gl.yml | 6 +- config/locales/he.yml | 4 - config/locales/hu.yml | 9 ++- config/locales/id.yml | 4 - config/locales/io.yml | 4 - config/locales/is.yml | 4 - config/locales/it.yml | 6 +- config/locales/ja.yml | 2 - config/locales/ko.yml | 4 - config/locales/ku.yml | 6 +- config/locales/lv.yml | 6 +- config/locales/nl.yml | 36 ++++++++- config/locales/pl.yml | 20 ++++- config/locales/pt-PT.yml | 4 - config/locales/ru.yml | 2 + config/locales/si.yml | 4 - config/locales/simple_form.ast.yml | 2 +- config/locales/simple_form.ja.yml | 11 +-- config/locales/simple_form.tr.yml | 30 ++++---- config/locales/sl.yml | 16 +++- config/locales/sq.yml | 3 - config/locales/sv.yml | 2 + config/locales/th.yml | 2 - config/locales/tr.yml | 38 +++++----- config/locales/uk.yml | 6 +- config/locales/vi.yml | 6 +- config/locales/zh-CN.yml | 4 - config/locales/zh-TW.yml | 6 +- 129 files changed, 1039 insertions(+), 512 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 5d3984be18..09ff94ad9c 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index b5f5a6b4f0..a928850dec 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -151,6 +151,12 @@ "directory.local": "مِن {domain} فقط", "directory.new_arrivals": "الوافدون الجُدد", "directory.recently_active": "نشط مؤخرا", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.", "embed.preview": "هكذا ما سوف يبدو عليه:", "emoji_button.activity": "الأنشطة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index b9361a075c..a81b09ea98 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -151,6 +151,12 @@ "directory.local": "Dende {domain} namái", "directory.new_arrivals": "Cuentes nueves", "directory.recently_active": "Actividá recién", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Empotra esti estáu nun sitiu web copiando'l códigu d'embaxo.", "embed.preview": "Asina ye cómo va vese:", "emoji_button.activity": "Actividá", @@ -180,14 +186,14 @@ "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas una, va amosase equí.", + "empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas una, va apaecer equí.", "empty_column.hashtag": "Entá nun hai nada nesta etiqueta.", "empty_column.home": "¡Tienes la llinia temporal balera! Visita {public} o usa la gueta pa entamar y conocer a otros usuarios.", "empty_column.home.suggestions": "See some suggestions", "empty_column.list": "Entá nun hai nada nesta llista. Cuando los miembros d'esta llista espublicen estaos nuevos, van apaecer equí.", - "empty_column.lists": "Entá nun tienes nenguna llista. Cuando crees una, va amosase equí.", - "empty_column.mutes": "Entá nun silenciesti a nunengún usuariu.", - "empty_column.notifications": "Entá nun tienes nunengún avisu. Interactúa con otros p'aniciar la conversación.", + "empty_column.lists": "Entá nun tienes nenguna llista. Cuando crees una, va apaecer equí.", + "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", "empty_column.public": "¡Equí nun hai nada! Escribi daqué público o sigui a usuarios d'otros sirvidores pa rellenar esto", "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun se pudo amosar correutamente.", "error.unexpected_crash.explanation_addons": "Esta páxina nun se pudo amosar correutamente. Ye probable que dalgún complementu del restolador o dalguna ferramienta de traducción automática produxere esti fallu.", @@ -250,12 +256,12 @@ "home.show_announcements": "Show announcements", "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.description.reblog": "Con una cuenta de Mastodon, pues compartir esti artículu colos perfiles que te sigan.", + "interaction_modal.description.reply": "Con una cuenta de Mastodon, pues responder a esti artículu.", + "interaction_modal.on_another_server": "N'otru sirvidor", + "interaction_modal.on_this_server": "Nesti sirvidor", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.preamble": "Darréu que Mastodon ye descentralizáu, pues usar una cuenta agospiada n'otru sirvidor de Mastodon o n'otra plataforma compatible si nun tienes cuenta nesti sirvidor.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", "interaction_modal.title.reblog": "Boost {name}'s post", @@ -419,7 +425,7 @@ "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Nun llistar", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.title": "Política de privacidá", "refresh": "Refresh", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tamos tresnando'l feed d'Aniciu!", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 2e334fccd1..4248e2cce3 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -151,6 +151,12 @@ "directory.local": "Само от {domain}", "directory.new_arrivals": "Новодошли", "directory.recently_active": "Наскоро активни", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Ето как ще изглежда:", "emoji_button.activity": "Дейност", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 5548b60de9..d3468ab08a 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -151,6 +151,12 @@ "directory.local": "শুধু {domain} থেকে", "directory.new_arrivals": "নতুন আগত", "directory.recently_active": "সম্প্রতি সক্রিয়", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "এই লেখাটি আপনার ওয়েবসাইটে যুক্ত করতে নিচের কোডটি বেবহার করুন।", "embed.preview": "সেটা দেখতে এরকম হবে:", "emoji_button.activity": "কার্যকলাপ", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index b40cbf056f..96c2aaa665 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -151,6 +151,12 @@ "directory.local": "Eus {domain} hepken", "directory.new_arrivals": "Degouezhet a-nevez", "directory.recently_active": "Oberiant nevez zo", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Enkorfit ar statud war ho lec'hienn en ur eilañ ar c'hod dindan.", "embed.preview": "Setu penaos e vo diskouezet:", "emoji_button.activity": "Obererezh", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 7de43fbff1..a74afed873 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Marca com a llegida", "conversation.open": "Mostra la conversa", "conversation.with": "Amb {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiat", + "copypaste.copy": "Copia", "directory.federated": "Del fedivers conegut", "directory.local": "Només de {domain}", "directory.new_arrivals": "Arribades noves", "directory.recently_active": "Recentment actius", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Incrusta aquesta publicació a la teva pàgina web copiant el codi següent.", "embed.preview": "Aquí està quin aspecte tindrà:", "emoji_button.activity": "Activitat", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Mostra les respostes", "home.hide_announcements": "Amaga els anuncis", "home.show_announcements": "Mostra els anuncis", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Amb un compte a Mastodon, pots afavorir aquest apunt per a deixar que l'autor sàpiga que t'ha agradat i desar-lo per més tard.", + "interaction_modal.description.follow": "Amb un compte a Mastodon, pots seguir a {name} per a rebre els seus apunts en la teva línia de temps Inici.", + "interaction_modal.description.reblog": "Amb un compte a Mastodon, pots impulsar aquest apunt per a compartir-lo amb els teus seguidors.", + "interaction_modal.description.reply": "Amb un compte a Mastodon, pots respondre aquest apunt.", + "interaction_modal.on_another_server": "En un servidor diferent", + "interaction_modal.on_this_server": "En aquest servidor", + "interaction_modal.other_server_instructions": "Simplement còpia i enganxa aquesta URL en la barra de cerca de la teva aplicació preferida o en l'interfície web on tens sessió iniciada.", + "interaction_modal.preamble": "Donat que Mastodon és descentralitzat, pots fer servir el teu compte existent a un altre servidor Mastodon o plataforma compatible si és que no tens compte en aquest.", + "interaction_modal.title.favourite": "Afavoreix l'apunt de {name}", + "interaction_modal.title.follow": "Segueix {name}", + "interaction_modal.title.reblog": "Impulsa l'apunt de {name}", + "interaction_modal.title.reply": "Respon l'apunt de {name}", "intervals.full.days": "{number, plural, one {# dia} other {# dies}}", "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Públic", "privacy.unlisted.long": "Visible per tothom però exclosa de les funcions de descobriment", "privacy.unlisted.short": "No llistat", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Darrera actualització {date}", + "privacy_policy.title": "Política de Privacitat", "refresh": "Actualitza", "regeneration_indicator.label": "Carregant…", "regeneration_indicator.sublabel": "S'està preparant la teva línia de temps d'Inici!", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 88216bccc3..94adcc3b1f 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -151,6 +151,12 @@ "directory.local": "تەنها لە {domain}", "directory.new_arrivals": "تازە گەیشتنەکان", "directory.recently_active": "بەم دواییانە چالاکە", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "ئەم توتە بنچین بکە لەسەر وێب سایتەکەت بە کۆپیکردنی کۆدەکەی خوارەوە.", "embed.preview": "ئەمە ئەو شتەیە کە لە شێوەی خۆی دەچێت:", "emoji_button.activity": "چالاکی", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 8aaab0241f..565adbc933 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -151,6 +151,12 @@ "directory.local": "Solu da {domain}", "directory.new_arrivals": "Ultimi arrivi", "directory.recently_active": "Attività ricente", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Integrà stu statutu à u vostru situ cù u codice quì sottu.", "embed.preview": "Hà da parè à quessa:", "emoji_button.activity": "Attività", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index c3bb2348e3..e4c6d82fd2 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Označit jako přečtenou", "conversation.open": "Zobrazit konverzaci", "conversation.with": "S {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Zkopírováno", + "copypaste.copy": "Kopírovat", "directory.federated": "Ze známého fedivesmíru", "directory.local": "Pouze z domény {domain}", "directory.new_arrivals": "Nově příchozí", "directory.recently_active": "Nedávno aktivní", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Pro přidání příspěvku na vaši webovou stránku zkopírujte níže uvedený kód.", "embed.preview": "Takhle to bude vypadat:", "emoji_button.activity": "Aktivita", @@ -252,14 +258,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.on_another_server": "Na jiném serveru", + "interaction_modal.on_this_server": "Na tomto serveru", + "interaction_modal.other_server_instructions": "Jednoduše zkopírujte a vložte tuto adresu do vyhledávacího panelu vaší oblíbené aplikace nebo webového rozhraní, kde jste přihlášeni.", + "interaction_modal.preamble": "Protože je Mastodon decentralizovaný, pokud nemáte účet na tomto serveru, můžete použít svůj existující účet hostovaný jiným Mastodon serverem nebo kompatibilní platformou.", + "interaction_modal.title.favourite": "Oblíbený příspěvek {name}", + "interaction_modal.title.follow": "Sledovat {name}", "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reply": "Odpovědět na příspěvek uživatele {name}", "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dní} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodin} other {# hodin}}", "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Veřejný", "privacy.unlisted.long": "Viditelný pro všechny, ale vyňat z funkcí objevování", "privacy.unlisted.short": "Neuvedený", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Naposledy aktualizováno {date}", + "privacy_policy.title": "Zásady ochrany osobních údajů", "refresh": "Obnovit", "regeneration_indicator.label": "Načítání…", "regeneration_indicator.sublabel": "Váš domovský kanál se připravuje!", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index dc3bc0bef4..603d62b68d 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -151,6 +151,12 @@ "directory.local": "O {domain} yn unig", "directory.new_arrivals": "Newydd-ddyfodiaid", "directory.recently_active": "Yn weithredol yn ddiweddar", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Gosodwch y post hwn ar eich gwefan drwy gopïo'r côd isod.", "embed.preview": "Dyma sut olwg fydd arno:", "emoji_button.activity": "Gweithgarwch", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 29be3d6a4a..ea01b45a9b 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Markér som læst", "conversation.open": "Vis konversation", "conversation.with": "Med {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopieret", + "copypaste.copy": "Kopiér", "directory.federated": "Fra kendt fedivers", "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nyligt aktive", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Indlejr dette indlæg på dit websted ved at kopiere nedenstående kode.", "embed.preview": "Sådan kommer det til at se ud:", "emoji_button.activity": "Aktivitet", @@ -224,7 +230,7 @@ "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.", "generic.saved": "Gemt", - "getting_started.directory": "Directory", + "getting_started.directory": "Mappe", "getting_started.documentation": "Dokumentation", "getting_started.free_software_notice": "Mastodon er gratis, open-source software. Kildekoden kan ses, bidrages til eller problemer kan indrapporteres på {repository}.", "getting_started.heading": "Startmenu", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Vis svar", "home.hide_announcements": "Skjul bekendtgørelser", "home.show_announcements": "Vis bekendtgørelser", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Med en konto på Mastodon kan dette indlæg gøres til favorit for at lade forfatteren vide, at det værdsættes, samt gemme det til senere.", + "interaction_modal.description.follow": "Med en konto på Mastodon kan du {name} følges for at modtage vedkommendes indlæg i hjemmefeed'et.", + "interaction_modal.description.reblog": "Med en konto på Mastodon kan dette indlæg boostes for at dele det med egne følgere.", + "interaction_modal.description.reply": "Med en konto på Mastodon kan dette indlæg besvares.", + "interaction_modal.on_another_server": "På en anden server", + "interaction_modal.on_this_server": "På denne server", + "interaction_modal.other_server_instructions": "Kopiér og indsæt blot denne URL i søgefeltet i den foretrukne app eller webgrænsefladen, hvor man er logget ind.", + "interaction_modal.preamble": "Da Mastodon er decentraliseret, kan man bruge sin eksisterende konto hostet af en anden Mastodon-server eller kompatibel platform, såfremt man ikke har en konto på denne.", + "interaction_modal.title.favourite": "Gør {name}s indlæg til favorit", + "interaction_modal.title.follow": "Følg {name}", + "interaction_modal.title.reblog": "Boost {name}s indlæg", + "interaction_modal.title.reply": "Besvar {name}s indlæg", "intervals.full.days": "{number, plural, one {# dag} other {# dage}}", "intervals.full.hours": "{number, plural, one {# time} other {# timer}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Offentlig", "privacy.unlisted.long": "Synlig for alle, men med fravalgt visning i opdagelsesfunktioner", "privacy.unlisted.short": "Diskret", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Senest opdateret {date}", + "privacy_policy.title": "Fortrolighedspolitik", "refresh": "Genindlæs", "regeneration_indicator.label": "Indlæser…", "regeneration_indicator.sublabel": "Din hjemmetidslinje klargøres!", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 276bab263d..6e73c44c42 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Als gelesen markieren", "conversation.open": "Unterhaltung anzeigen", "conversation.with": "Mit {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiert", + "copypaste.copy": "Kopieren", "directory.federated": "Aus dem Fediverse", "directory.local": "Nur von {domain}", "directory.new_arrivals": "Neue Benutzer", "directory.recently_active": "Kürzlich aktiv", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, indem du den folgenden Code einfügst.", "embed.preview": "So wird es aussehen:", "emoji_button.activity": "Aktivitäten", @@ -248,10 +254,10 @@ "home.column_settings.show_replies": "Antworten anzeigen", "home.hide_announcements": "Verstecke Ankündigungen", "home.show_announcements": "Zeige Ankündigungen", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.favourite": "Mit einem Account auf Mastodon können Sie diesen Beitrag favorisieren, um dem Autor mitzuteilen, dass Sie den Beitrag schätzen und ihn für einen späteren Zeitpunkt speichern.", + "interaction_modal.description.follow": "Mit einem Konto auf Mastodon kannst du {name} folgen, um seine Beiträge in deinem Home Feed zu erhalten.", + "interaction_modal.description.reblog": "Mit einem Account auf Mastodon, kannst du diesen Beitrag boosten um ihn mit deinen eigenen Followern teilen.", + "interaction_modal.description.reply": "Mit einem Account auf Mastodon können Sie auf diesen Beitrag antworten.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 8420fa1113..982c35e5df 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -228,6 +228,15 @@ ], "path": "app/javascript/mastodon/components/common_counter.json" }, + { + "descriptors": [ + { + "defaultMessage": "Dismiss", + "id": "dismissable_banner.dismiss" + } + ], + "path": "app/javascript/mastodon/components/dismissable_banner.json" + }, { "descriptors": [ { @@ -1198,6 +1207,10 @@ "defaultMessage": "Local timeline", "id": "column.community" }, + { + "defaultMessage": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "id": "dismissable_banner.community_timeline" + }, { "defaultMessage": "The local timeline is empty. Write something publicly to get the ball rolling!", "id": "empty_column.community" @@ -1885,6 +1898,10 @@ }, { "descriptors": [ + { + "defaultMessage": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "id": "dismissable_banner.explore_links" + }, { "defaultMessage": "Nothing is trending right now. Check back later!", "id": "empty_column.explore_statuses" @@ -1926,6 +1943,10 @@ { "defaultMessage": "Nothing is trending right now. Check back later!", "id": "empty_column.explore_statuses" + }, + { + "defaultMessage": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "id": "dismissable_banner.explore_statuses" } ], "path": "app/javascript/mastodon/features/explore/statuses.json" @@ -1941,6 +1962,10 @@ }, { "descriptors": [ + { + "defaultMessage": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "id": "dismissable_banner.explore_tags" + }, { "defaultMessage": "Nothing is trending right now. Check back later!", "id": "empty_column.explore_statuses" @@ -3088,6 +3113,10 @@ "defaultMessage": "Federated timeline", "id": "column.public" }, + { + "defaultMessage": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "id": "dismissable_banner.public_timeline" + }, { "defaultMessage": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", "id": "empty_column.public" @@ -3768,7 +3797,7 @@ "id": "navigation_bar.follow_requests" } ], - "path": "app/javascript/mastodon/features/ui/components/follow_requests_nav_link.json" + "path": "app/javascript/mastodon/features/ui/components/follow_requests_column_link.json" }, { "descriptors": [ diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 9968278631..932e035df7 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Σήμανση ως αναγνωσμένο", "conversation.open": "Προβολή συνομιλίας", "conversation.with": "Με {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Αντιγράφηκε", + "copypaste.copy": "Αντιγραφή", "directory.federated": "Από το γνωστό fediverse", "directory.local": "Μόνο από {domain}", "directory.new_arrivals": "Νέες αφίξεις", "directory.recently_active": "Πρόσφατα ενεργοί", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Ενσωματώστε αυτή την κατάσταση στην ιστοσελίδα σας αντιγράφοντας τον παρακάτω κώδικα.", "embed.preview": "Ορίστε πως θα φαίνεται:", "emoji_button.activity": "Δραστηριότητα", @@ -252,14 +258,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή", + "interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}", "intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}", "intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}", "intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Δημόσιο", "privacy.unlisted.long": "Ορατό για όλους, αλλά opted-out των χαρακτηριστικών της ανακάλυψης", "privacy.unlisted.short": "Μη καταχωρημένα", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Τελευταία ενημέρωση {date}", + "privacy_policy.title": "Πολιτική Απορρήτου", "refresh": "Ανανέωση", "regeneration_indicator.label": "Φορτώνει…", "regeneration_indicator.sublabel": "Η αρχική σου ροή ετοιμάζεται!", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 0971a94755..3bd55e18a5 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index a3312b073f..3ee9c681b0 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this post on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 4a7fd13094..7c74a117d0 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -151,6 +151,12 @@ "directory.local": "Nur de {domain}", "directory.new_arrivals": "Novaj alvenoj", "directory.recently_active": "Lastatempe aktiva", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Enkorpigu ĉi tiun mesaĝon en vian retejon per kopio de la suba kodo.", "embed.preview": "Ĝi aperos tiel:", "emoji_button.activity": "Agadoj", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index f52f8134d9..7ba62cdd5a 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Marcar como leída", "conversation.open": "Ver conversación", "conversation.with": "Con {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiado", + "copypaste.copy": "Copiar", "directory.federated": "Desde fediverso conocido", "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activos", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Insertá este mensaje a tu sitio web copiando el código de abajo.", "embed.preview": "Así es cómo se verá:", "emoji_button.activity": "Actividad", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Mostrar respuestas", "home.hide_announcements": "Ocultar anuncios", "home.show_announcements": "Mostrar anuncios", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Con una cuenta en Mastodon, podés marcar este mensaje como favorito para que el autor sepa que lo apreciás y lo guardás para más adelante.", + "interaction_modal.description.follow": "Con una cuenta en Mastodon, podés seguir a {name} para recibir sus mensajes en tu línea temporal principal.", + "interaction_modal.description.reblog": "Con una cuenta en Mastodon, podés adherir a este mensaje para compartirlo con tus propios seguidores.", + "interaction_modal.description.reply": "Con una cuenta en Mastodon, podés responder a este mensaje.", + "interaction_modal.on_another_server": "En un servidor diferente", + "interaction_modal.on_this_server": "En este servidor", + "interaction_modal.other_server_instructions": "Simplemente copiá y pegá esta dirección web en la barra de búsqueda de tu aplicación favorita o en la interface web en donde hayás iniciado sesión.", + "interaction_modal.preamble": "Ya que Mastodon es descentralizado, podés usar tu cuenta existente alojada por otro servidor Mastodon (u otra plataforma compatible, si no tenés una cuenta en ésta).", + "interaction_modal.title.favourite": "Marcar como favorito el mensaje de {name}", + "interaction_modal.title.follow": "Seguir a {name}", + "interaction_modal.title.reblog": "Adherir al mensaje de {name}", + "interaction_modal.title.reply": "Responder al mensaje de {name}", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visible para todos, pero excluido de las características de descubrimiento", "privacy.unlisted.short": "No listado", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Última actualización: {date}", + "privacy_policy.title": "Política de privacidad", "refresh": "Refrescar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Se está preparando tu línea temporal principal!", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index fc4a646726..837e041e9d 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -151,6 +151,12 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activo", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Añade este toot a tu sitio web con el siguiente código.", "embed.preview": "Así es como se verá:", "emoji_button.activity": "Actividad", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 3fc6019c3e..7cde721ff1 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Marcar como leído", "conversation.open": "Ver conversación", "conversation.with": "Con {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiado", + "copypaste.copy": "Copiar", "directory.federated": "Desde el fediverso conocido", "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activo", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Añade esta publicación a tu sitio web con el siguiente código.", "embed.preview": "Así es como se verá:", "emoji_button.activity": "Actividad", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Mostrar respuestas", "home.hide_announcements": "Ocultar anuncios", "home.show_announcements": "Mostrar anuncios", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Con una cuenta en Mastodon, puedes marcar como favorita esta publicación para que el autor sepa que te gusta y guardarla así para más adelante.", + "interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu línea temporal de inicio.", + "interaction_modal.description.reblog": "Con una cuenta en Mastodon, puedes impulsar esta publicación para compartirla con tus propios seguidores.", + "interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.", + "interaction_modal.on_another_server": "En un servidor diferente", + "interaction_modal.on_this_server": "En este servidor", + "interaction_modal.other_server_instructions": "Simplemente copia y pega esta URL en la barra de búsqueda de tu aplicación favorita o en la interfaz web donde hayas iniciado sesión.", + "interaction_modal.preamble": "Ya que Mastodon es descentralizado, puedes usar tu cuenta existente alojada en otro servidor Mastodon o plataforma compatible si no tienes una cuenta en este servidor.", + "interaction_modal.title.favourite": "Marcar como favorita la publicación de {name}", + "interaction_modal.title.follow": "Seguir a {name}", + "interaction_modal.title.reblog": "Impulsar la publicación de {name}", + "interaction_modal.title.reply": "Responder a la publicación de {name}", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visible para todos, pero excluido de las funciones de descubrimiento", "privacy.unlisted.short": "No listado", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Ultima vez actualizado {date}", + "privacy_policy.title": "Política de Privacidad", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index e16fe4a9ef..0d17189dde 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -151,6 +151,12 @@ "directory.local": "Ainult domeenilt {domain}", "directory.new_arrivals": "Uustulijad", "directory.recently_active": "Hiljuti aktiivne", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Manusta see staatus oma veebilehele, kopeerides alloleva koodi.", "embed.preview": "Nii näeb see välja:", "emoji_button.activity": "Tegevus", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 61e135a5de..1583e84538 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -151,6 +151,12 @@ "directory.local": "{domain} domeinukoak soilik", "directory.new_arrivals": "Iritsi berriak", "directory.recently_active": "Duela gutxi aktibo", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Txertatu bidalketa hau zure webgunean beheko kodea kopiatuz.", "embed.preview": "Hau da izango duen itxura:", "emoji_button.activity": "Jarduera", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index a0d52a2739..64d705af21 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -151,6 +151,12 @@ "directory.local": "تنها از {domain}", "directory.new_arrivals": "تازه‌واردان", "directory.recently_active": "کاربران فعال اخیر", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "برای جاسازی این فرسته در سایت خودتان، کد زیر را رونوشت کنید.", "embed.preview": "این گونه دیده خواهد شد:", "emoji_button.activity": "فعالیت", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index c3e519fa06..9ad114af92 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -151,6 +151,12 @@ "directory.local": "Vain palvelimelta {domain}", "directory.new_arrivals": "Äskettäin saapuneet", "directory.recently_active": "Hiljattain aktiiviset", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.", "embed.preview": "Se tulee näyttämään tältä:", "emoji_button.activity": "Aktiviteetit", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 5a8e0a14a0..9561c7cfe3 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -151,6 +151,12 @@ "directory.local": "De {domain} seulement", "directory.new_arrivals": "Inscrit·e·s récemment", "directory.recently_active": "Actif·ve·s récemment", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Intégrez ce message à votre site en copiant le code ci-dessous.", "embed.preview": "Il apparaîtra comme cela :", "emoji_button.activity": "Activités", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 9ede1f9705..e23cd0b836 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Resintlik warber", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index a5eafbf6f0..4db9b4aa31 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Gníomhaíocht", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index d188d9f05f..881a8a7304 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -151,6 +151,12 @@ "directory.local": "O {domain} a-mhàin", "directory.new_arrivals": "Feadhainn ùra", "directory.recently_active": "Gnìomhach o chionn goirid", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Leabaich am post seo san làrach-lìn agad is tu a’ dèanamh lethbhreac dhen chòd gu h-ìosal.", "embed.preview": "Seo an coltas a bhios air:", "emoji_button.activity": "Gnìomhachd", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 2602719ce0..bbe33ed77d 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Marcar como lido", "conversation.open": "Ver conversa", "conversation.with": "Con {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiado", + "copypaste.copy": "Copiar", "directory.federated": "Do fediverso coñecido", "directory.local": "Só de {domain}", "directory.new_arrivals": "Recén chegadas", "directory.recently_active": "Activas recentemente", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Engade esta publicación ó teu sitio web copiando o seguinte código.", "embed.preview": "Así será mostrado:", "emoji_button.activity": "Actividade", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Amosar respostas", "home.hide_announcements": "Agochar anuncios", "home.show_announcements": "Amosar anuncios", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Cunha conta en Mastodon, poderá marcar esta publicación como favorita, para gardalo e para que o autor saiba o moito que lle gustou.", + "interaction_modal.description.follow": "Cunha conta en Mastodon, poderá seguir {name} e recibir as súas publicacións na súa cronoloxía de inicio.", + "interaction_modal.description.reblog": "Cunha conta en Mastodon, poderá difundir esta publicación e compartila cos seus seguidores.", + "interaction_modal.description.reply": "Cunha conta en Mastodon, poderá responder a esta publicación.", + "interaction_modal.on_another_server": "Nun servidor diferente", + "interaction_modal.on_this_server": "Neste servidor", + "interaction_modal.other_server_instructions": "Só ten que copiar e pegar este URL na barra de procuras da súa aplicación favorita, ou da interface web na que teña unha sesión iniciada.", + "interaction_modal.preamble": "Como Mastodon é descentralizado, é posible usar unha conta existente noutro servidor Mastodon, ou nunha plataforma compatible, se non dispoñe dunha conta neste servidor.", + "interaction_modal.title.favourite": "Marcar coma favorito a publicación de {name}", + "interaction_modal.title.follow": "Seguir a {name}", + "interaction_modal.title.reblog": "Promover a publicación de {name}", + "interaction_modal.title.reply": "Responder á publicación de {name}", "intervals.full.days": "{number, plural,one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visible por todas, pero excluída da sección descubrir", "privacy.unlisted.short": "Non listado", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Actualizado por última vez no {date}", + "privacy_policy.title": "Política de Privacidade", "refresh": "Actualizar", "regeneration_indicator.label": "Estase a cargar…", "regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index cb8ff51c10..000e20ff0f 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -151,6 +151,12 @@ "directory.local": "מ- {domain} בלבד", "directory.new_arrivals": "חדשים כאן", "directory.recently_active": "פעילים לאחרונה", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "ניתן להטמיע את הפוסט הזה באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", "emoji_button.activity": "פעילות", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index b7ae156982..a57f2bafff 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -151,6 +151,12 @@ "directory.local": "केवल {domain} से", "directory.new_arrivals": "नए आगंतुक", "directory.recently_active": "हाल में ही सक्रिय", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "अपने वेबसाइट पर, निचे दिए कोड को कॉपी करके, इस स्टेटस को एम्बेड करें", "embed.preview": "यह ऐसा दिखेगा :", "emoji_button.activity": "गतिविधि", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index e7a8aced34..cc589a19e7 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -151,6 +151,12 @@ "directory.local": "Samo iz {domain}", "directory.new_arrivals": "Novi korisnici", "directory.recently_active": "Nedavno aktivni", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Evo kako će izgledati:", "emoji_button.activity": "Aktivnost", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 87b2da559b..f355be5e3c 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Megjelölés olvasottként", "conversation.open": "Beszélgetés megtekintése", "conversation.with": "{names}-el/al", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Másolva", + "copypaste.copy": "Másolás", "directory.federated": "Az ismert fediverzumból", "directory.local": "Csak innen: {domain}", "directory.new_arrivals": "Új csatlakozók", "directory.recently_active": "Nemrég aktív", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Ágyazd be ezt a bejegyzést a weboldaladba az alábbi kód kimásolásával.", "embed.preview": "Így fog kinézni:", "emoji_button.activity": "Tevékenység", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Válaszok megjelenítése", "home.hide_announcements": "Közlemények elrejtése", "home.show_announcements": "Közlemények megjelenítése", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Egy Mastodon fiókkal kedvencnek jelölheted ezt a bejegyzést, tudatva a szerzővel, hogy értékeled és elteszed későbbre.", + "interaction_modal.description.follow": "Egy Mastodon fiókkal bekövetheted {name} fiókot, hogy lásd a bejegyzéseit a saját hírfolyamodban.", + "interaction_modal.description.reblog": "Egy Mastodon fiókkal megtolhatod ezt a bejegyzést, hogy megoszd a saját követőiddel.", + "interaction_modal.description.reply": "Egy Mastodon fiókkal válaszolhatsz erre a bejegyzésre.", + "interaction_modal.on_another_server": "Másik kiszolgálón", + "interaction_modal.on_this_server": "Ezen a kiszolgálón", + "interaction_modal.other_server_instructions": "Csak másold be ezt az URL-t a kedvenc appod keresőjébe, vagy arra a webes felületre, ahol be vagy jelentkezve.", + "interaction_modal.preamble": "Mivel a Mastodon decentralizált, használhatod egy másik Mastodon kiszolgálón, vagy kompatibilis szolgáltatáson lévő fiókodat, ha ezen a kiszolgálón nincs fiókod.", + "interaction_modal.title.favourite": "{name} bejegyzésének megjelölése kedvencként", + "interaction_modal.title.follow": "{name} követése", + "interaction_modal.title.reblog": "{name} bejegyzésének megtolása", + "interaction_modal.title.reply": "Válasz {name} bejegyzésére", "intervals.full.days": "{number, plural, one {# nap} other {# nap}}", "intervals.full.hours": "{number, plural, one {# óra} other {# óra}}", "intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Nyilvános", "privacy.unlisted.long": "Mindenki számára látható, de kimarad a felfedezős funkciókból", "privacy.unlisted.short": "Listázatlan", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Utoljára frissítve: {date}", + "privacy_policy.title": "Adatvédelmi szabályzat", "refresh": "Frissítés", "regeneration_indicator.label": "Töltődik…", "regeneration_indicator.sublabel": "A saját idővonalad épp készül!", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index cfba0d1975..d15afa1bd5 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -151,6 +151,12 @@ "directory.local": "{domain} տիրոյթից միայն", "directory.new_arrivals": "Նորեկներ", "directory.recently_active": "Վերջերս ակտիւ", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Այս գրառումը քո կայքում ներդնելու համար կարող ես պատճէնել ներքեւի կոդը։", "embed.preview": "Ահա, թէ ինչ տեսք կունենայ այն՝", "emoji_button.activity": "Զբաղմունքներ", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index cc3cc11ac4..c5b28705c6 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -151,6 +151,12 @@ "directory.local": "Dari {domain} saja", "directory.new_arrivals": "Yang baru datang", "directory.recently_active": "Baru-baru ini aktif", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Sematkan kiriman ini di website anda dengan menyalin kode di bawah ini.", "embed.preview": "Tampilan akan seperti ini nantinya:", "emoji_button.activity": "Aktivitas", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 9d5b72805a..b336963388 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -151,6 +151,12 @@ "directory.local": "De {domain} nur", "directory.new_arrivals": "Nova venanti", "directory.recently_active": "Recenta aktivo", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Co esas quon ol semblos tale:", "emoji_button.activity": "Ago", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 997472b125..ad3d240cbc 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -151,6 +151,12 @@ "directory.local": "Einungis frá {domain}", "directory.new_arrivals": "Nýkomnir", "directory.recently_active": "Nýleg virkni", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Felldu þessa færslu inn í vefsvæðið þitt með því að afrita kóðann hér fyrir neðan.", "embed.preview": "Svona mun þetta líta út:", "emoji_button.activity": "Virkni", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 60d877bc22..60c0e9539f 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Segna come letto", "conversation.open": "Visualizza conversazione", "conversation.with": "Con {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiato", + "copypaste.copy": "Copia", "directory.federated": "Da un fediverse noto", "directory.local": "Solo da {domain}", "directory.new_arrivals": "Nuovi arrivi", "directory.recently_active": "Attivo di recente", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Incorpora questo post sul tuo sito web copiando il codice sotto.", "embed.preview": "Ecco come apparirà:", "emoji_button.activity": "Attività", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Mostra risposte", "home.hide_announcements": "Nascondi annunci", "home.show_announcements": "Mostra annunci", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Con un account su Mastodon, puoi aggiungere questo post ai preferiti per far sapere all'autore che lo apprezzi e salvarlo per dopo.", + "interaction_modal.description.follow": "Con un account su Mastodon, puoi seguire {name} per ricevere i suoi post nel tuo home feed.", + "interaction_modal.description.reblog": "Con un account su Mastodon, puoi condividere questo post per rendere partecipi i tuoi seguaci.", + "interaction_modal.description.reply": "Con un account su Mastodon, è possibile rispondere a questo post.", + "interaction_modal.on_another_server": "Su un altro server", + "interaction_modal.on_this_server": "Su questo server", + "interaction_modal.other_server_instructions": "Basta copiare e incollare questo URL nella barra di ricerca della tua app preferita o nell'interfaccia web in cui hai effettuato l'accesso.", + "interaction_modal.preamble": "Poiché Mastodon è decentralizzato, è possibile utilizzare il proprio account esistente ospitato da un altro server Mastodon o piattaforma compatibile se non si dispone di un account su questo.", + "interaction_modal.title.favourite": "Post preferito di {name}", + "interaction_modal.title.follow": "Segui {name}", + "interaction_modal.title.reblog": "Condividi il post di {name}", + "interaction_modal.title.reply": "Rispondi al post di {name}", "intervals.full.days": "{number, plural, one {# giorno} other {# giorni}}", "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Pubblico", "privacy.unlisted.long": "Visibile a tutti, ma escluso dalle funzioni di scoperta", "privacy.unlisted.short": "Non elencato", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Ultimo aggiornamento {date}", + "privacy_policy.title": "Politica sulla privacy", "refresh": "Aggiorna", "regeneration_indicator.label": "Caricamento in corso…", "regeneration_indicator.sublabel": "Stiamo preparando il tuo home feed!", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 22c336bf8d..da96ce676c 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "既読にする", "conversation.open": "会話を表示", "conversation.with": "{names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "コピーしました", + "copypaste.copy": "コピー", "directory.federated": "既知の連合より", "directory.local": "{domain} のみ", "directory.new_arrivals": "新着順", "directory.recently_active": "最近の活動順", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。", "embed.preview": "表示例:", "emoji_button.activity": "活動", @@ -224,14 +230,14 @@ "follow_request.reject": "拒否", "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", "generic.saved": "保存しました", - "getting_started.directory": "Directory", + "getting_started.directory": "ディレクトリ", "getting_started.documentation": "ドキュメント", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodonは自由なオープンソースソフトウェアです。{repository}でソースコードを確認したりコントリビュートしたり不具合の報告ができます。", "getting_started.heading": "スタート", "getting_started.invite": "招待", "getting_started.privacy_policy": "プライバシーポリシー", "getting_started.security": "アカウント設定", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Mastodonについて", "hashtag.column_header.tag_mode.all": "と{additional}", "hashtag.column_header.tag_mode.any": "か{additional}", "hashtag.column_header.tag_mode.none": "({additional} を除く)", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "返信表示", "home.hide_announcements": "お知らせを隠す", "home.show_announcements": "お知らせを表示", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.description.favourite": "Mastodonのアカウントでこの投稿をお気に入りに入れて投稿者に感謝を知らせたり保存することができます。", + "interaction_modal.description.follow": "Mastodonのアカウントで{name}さんをフォローしてホームフィードで投稿を受け取れます。", + "interaction_modal.description.reblog": "Mastodonのアカウントでこの投稿をブーストして自分のフォロワーに共有できます。", + "interaction_modal.description.reply": "Mastodonのアカウントでこの投稿に反応できます。", + "interaction_modal.on_another_server": "別のサーバー", + "interaction_modal.on_this_server": "このサーバー", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.favourite": "{name}さんの投稿をお気に入り", + "interaction_modal.title.follow": "{name}さんをフォロー", + "interaction_modal.title.reblog": "{name}さんの投稿をブースト", + "interaction_modal.title.reply": "{name}さんの投稿にリプライ", "intervals.full.days": "{number}日", "intervals.full.hours": "{number}時間", "intervals.full.minutes": "{number}分", @@ -326,7 +332,7 @@ "mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?", "mute_modal.indefinite": "無期限", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.apps": "アプリ", "navigation_bar.blocks": "ブロックしたユーザー", "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", @@ -350,7 +356,7 @@ "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.security": "セキュリティ", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "この機能を使うにはログインする必要があります。", "notification.admin.report": "{name}さんが{target}さんを通報しました", "notification.admin.sign_up": "{name}さんがサインアップしました", "notification.favourite": "{name}さんがあなたの投稿をお気に入りに登録しました", @@ -418,8 +424,8 @@ "privacy.public.short": "公開", "privacy.unlisted.long": "誰でも閲覧可、サイレント", "privacy.unlisted.short": "未収載", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "{date}に更新", + "privacy_policy.title": "プライバシーポリシー", "refresh": "更新", "regeneration_indicator.label": "読み込み中…", "regeneration_indicator.sublabel": "ホームタイムラインは準備中です!", @@ -493,11 +499,11 @@ "search_results.title": "『{q}』の検索結果", "search_results.total": "{count, number}件の結果", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.active_users": "人のアクティブユーザー", + "server_banner.administered_by": "管理者", + "server_banner.introduction": "{domain}は{mastodon}を使った分散型ソーシャルネットワークの一部です。", + "server_banner.learn_more": "もっと詳しく", + "server_banner.server_stats": "サーバーの情報", "sign_in_banner.create_account": "アカウント作成", "sign_in_banner.sign_in": "ログイン", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 111bda34a8..984d0ba975 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "ეს სტატუსი ჩასვით თქვენს ვებ-საიტზე შემდეგი კოდის კოპირებით.", "embed.preview": "ესაა თუ როგორც გამოჩნდება:", "emoji_button.activity": "აქტივობა", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 9b2699e998..456dbe027e 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -151,6 +151,12 @@ "directory.local": "Seg {domain} kan", "directory.new_arrivals": "Imaynuten id yewḍen", "directory.recently_active": "Yermed xas melmi kan", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Ẓẓu addad-agi deg usmel-inek s wenγal n tangalt yellan sdaw-agi.", "embed.preview": "Akka ara d-iban:", "emoji_button.activity": "Aqeddic", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 2450ceff30..2b2b31c49b 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -151,6 +151,12 @@ "directory.local": "Тек {domain} доменінен", "directory.new_arrivals": "Жаңадан келгендер", "directory.recently_active": "Жақында кіргендер", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Төмендегі кодты көшіріп алу арқылы жазбаны басқа сайттарға да орналастыра аласыз.", "embed.preview": "Былай көрінетін болады:", "emoji_button.activity": "Белсенділік", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index d4e8b91773..fac2293488 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 3994fbeee7..3c00280e57 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -151,6 +151,12 @@ "directory.local": "{domain}에서만", "directory.new_arrivals": "새로운 사람들", "directory.recently_active": "최근 활동", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "아래의 코드를 복사하여 대화를 원하는 곳으로 공유하세요.", "embed.preview": "다음과 같이 표시됩니다:", "emoji_button.activity": "활동", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 76d5663411..905df44442 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Wekî xwendî nîşan bide", "conversation.open": "Axaftinê nîşan bide", "conversation.with": "Bi {names} re", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Hate jêgirtin", + "copypaste.copy": "Jê bigire", "directory.federated": "Ji fediversên naskirî", "directory.local": "Tenê ji {domain}", "directory.new_arrivals": "Kesên ku nû hatine", "directory.recently_active": "Di demên dawî de çalak", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Bi jêgirtina koda jêrîn vê şandiyê li ser malpera xwe bicîh bikin.", "embed.preview": "Wa ye wê wusa xuya bike:", "emoji_button.activity": "Çalakî", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Bersivan nîşan bide", "home.hide_announcements": "Reklaman veşêre", "home.show_announcements": "Reklaman nîşan bide", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Bi ajimêrek li ser Mastodon re, tu dikarî vê şandiyê bijarte bikî da ku nivîskar bizanibe ku tu wê/î re rêzê digirî û wê ji bo paşê biparêzî.", + "interaction_modal.description.follow": "Bi ajimêrekê li ser Mastodon, tu dikarî {name} bişopînî da ku şandiyan li ser rojeva rûpela xwe bi dest bixe.", + "interaction_modal.description.reblog": "Bi ajimêrekê li ser Mastodon, tu dikarî vê şandiyê bilind bikî da ku wê bi şopînerên xwe re parve bikî.", + "interaction_modal.description.reply": "Bi ajimêrekê li ser Mastodon, tu dikarî bersiva vê şandiyê bidî.", + "interaction_modal.on_another_server": "Li ser rajekareke cuda", + "interaction_modal.on_this_server": "Li ser ev rajekar", + "interaction_modal.other_server_instructions": "Tenê vê girêdanê jê bigire û pêve bike di darika lêgerînê ya sepana xwe ya bijarte an navrûya bikarhêneriyê tevnê ya ku tu tê de ye.", + "interaction_modal.preamble": "Ji ber ku Mastodon nenavendî ye, tu dikarî ajimêrê xwe ya heyî ku ji aliyê rajekarek din a Mastodon an platformek lihevhatî ve hatî pêşkêşkirin bi kar bînî ku ajimêrê te li ser vê yekê tune be.", + "interaction_modal.title.favourite": "Şandiyê {name} bijarte bike", + "interaction_modal.title.follow": "{name} bişopîne", + "interaction_modal.title.reblog": "Şandiyê {name} bilind bike", + "interaction_modal.title.reply": "Bersivê bide şandiyê {name}", "intervals.full.days": "{number, plural, one {# roj} other {# roj}}", "intervals.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}}\n \n", "intervals.full.minutes": "{number, plural, one {# xulek} other {# xulek}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Gelemperî", "privacy.unlisted.long": "Ji bo hemûyan xuyabar e, lê ji taybetmendiyên vekolînê veqetiya ye", "privacy.unlisted.short": "Nerêzok", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Rojanekirina dawî {date}", + "privacy_policy.title": "Politîka taybetiyê", "refresh": "Nû bike", "regeneration_indicator.label": "Tê barkirin…", "regeneration_indicator.sublabel": "Naveroka rûpela sereke ya te tê amedekirin!", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 4cd8629f6b..cbce18efed 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -151,6 +151,12 @@ "directory.local": "A {domain} hepken", "directory.new_arrivals": "Devedhyansow nowydh", "directory.recently_active": "Bew a-gynsow", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Stagewgh an post ma a-berth yn agas gwiasva ow tasskrifa'n kod a-wòles.", "embed.preview": "Ottomma fatel hevel:", "emoji_button.activity": "Gwrians", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index ddda5c6c0e..b15f3d3a35 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index e307eccebb..9353502e1d 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Atzīmēt kā izlasītu", "conversation.open": "Skatīt sarunu", "conversation.with": "Ar {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Nokopēts", + "copypaste.copy": "Kopēt", "directory.federated": "No pazīstamas federācijas", "directory.local": "Tikai no {domain}", "directory.new_arrivals": "Jaunpienācēji", "directory.recently_active": "Nesen aktīvs", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Iestrādā šo ziņu savā mājaslapā, kopējot zemāk redzmo kodu.", "embed.preview": "Tas izskatīsies šādi:", "emoji_button.activity": "Aktivitāte", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Rādīt atbildes", "home.hide_announcements": "Slēpt paziņojumus", "home.show_announcements": "Rādīt paziņojumus", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Izmantojot kontu pakalpojumā Mastodon, vari pievienot šo ziņu izlasei, lai informētu autoru, ka to novērtē un saglabā vēlākai lasīšanai.", + "interaction_modal.description.follow": "Izmantojot Mastodon kontu, tu vari sekot lietotājam {name}, lai saņemtu viņa ziņas savā mājas plūsmā.", + "interaction_modal.description.reblog": "Izmantojot kontu Mastodon, vari atbalstīt šo ziņu, lai kopīgotu to ar saviem sekotājiem.", + "interaction_modal.description.reply": "Izmantojot kontu Mastodon, tu vari atbildēt uz šo ziņu.", + "interaction_modal.on_another_server": "Citā serverī", + "interaction_modal.on_this_server": "Šajā serverī", + "interaction_modal.other_server_instructions": "Vienkārši nokopē un ielīmē šo URL savas iecienītākās lietotnes meklēšanas joslā vai tīmekļa saskarnē, kurā esi pierakstījies.", + "interaction_modal.preamble": "Tā kā Mastodon ir decentralizēts, tu vari izmantot savu esošo kontu, ko mitina cits Mastodon serveris vai saderīga platforma, ja tev nav konta šajā serverī.", + "interaction_modal.title.favourite": "Pievienot {name} ziņu izlasei", + "interaction_modal.title.follow": "Sekot {name}", + "interaction_modal.title.reblog": "Atbalstīt {name} ziņu", + "interaction_modal.title.reply": "Atbildēt uz {name} ziņu", "intervals.full.days": "{number, plural, one {# diena} other {# dienas}}", "intervals.full.hours": "{number, plural, one {# stunda} other {# stundas}}", "intervals.full.minutes": "{number, plural, one {# minūte} other {# minūtes}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Publisks", "privacy.unlisted.long": "Redzama visiem, bet atteicās no atklāšanas funkcijām", "privacy.unlisted.short": "Neminētie", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Pēdējo reizi atjaunināta {date}", + "privacy_policy.title": "Privātuma Politika", "refresh": "Atsvaidzināt", "regeneration_indicator.label": "Ielādē…", "regeneration_indicator.sublabel": "Tiek gatavota tava plūsma!", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 1dc8b10e43..84bafd74aa 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -151,6 +151,12 @@ "directory.local": "Само од {domain}", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Активност", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 01f0831cf9..e4c35f503a 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -151,6 +151,12 @@ "directory.local": "{domain} ൽ നിന്ന് മാത്രം", "directory.new_arrivals": "പുതിയ വരവുകൾ", "directory.recently_active": "അടുത്തിടെയായി സജീവമായ", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "ചുവടെയുള്ള കോഡ് പകർത്തിക്കൊണ്ട് നിങ്ങളുടെ വെബ്‌സൈറ്റിൽ ഈ ടൂട്ട് ഉൾച്ചേർക്കുക.", "embed.preview": "ഇത് ഇങ്ങനെ കാണപ്പെടും:", "emoji_button.activity": "പ്രവര്‍ത്തനം", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index a070b67596..014df9b956 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index b94642addd..1469c1d9e6 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -151,6 +151,12 @@ "directory.local": "Dari {domain} sahaja", "directory.new_arrivals": "Ketibaan baharu", "directory.recently_active": "Aktif baru-baru ini", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Benam hantaran ini di laman sesawang anda dengan menyalin kod berikut.", "embed.preview": "Begini rupanya nanti:", "emoji_button.activity": "Aktiviti", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index f04ac2dcb6..c58aa26898 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -69,7 +69,7 @@ "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", - "column.about": "About", + "column.about": "Over", "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", "column.community": "Lokale tijdlijn", @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Als gelezen markeren", "conversation.open": "Gesprek tonen", "conversation.with": "Met {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Gekopieerd", + "copypaste.copy": "Kopiëren", "directory.federated": "Fediverse (wat bekend is)", "directory.local": "Alleen {domain}", "directory.new_arrivals": "Nieuwe accounts", "directory.recently_active": "Onlangs actief", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed dit bericht op jouw website door de onderstaande code te kopiëren.", "embed.preview": "Zo komt het eruit te zien:", "emoji_button.activity": "Activiteiten", @@ -219,19 +225,19 @@ "filter_modal.title.status": "Een bericht filteren", "follow_recommendations.done": "Klaar", "follow_recommendations.heading": "Volg mensen waarvan je graag berichten wil zien! Hier zijn enkele aanbevelingen.", - "follow_recommendations.lead": "Berichten van mensen die je volgt zullen in chronologische volgorde onder start verschijnen. Wees niet bang om hierin fouten te maken, want je kunt mensen op elk moment net zo eenvoudig ontvolgen!", + "follow_recommendations.lead": "Berichten van mensen die je volgt zullen in chronologische volgorde op jouw starttijdlijn verschijnen. Wees niet bang om hierin fouten te maken, want je kunt mensen op elk moment net zo eenvoudig ontvolgen!", "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afwijzen", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", "generic.saved": "Opgeslagen", - "getting_started.directory": "Directory", + "getting_started.directory": "Gebruikersgids", "getting_started.documentation": "Documentatie", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon is vrije, opensourcesoftware. Je kunt de broncode bekijken, bijdragen of bugs rapporteren op {repository}.", "getting_started.heading": "Aan de slag", "getting_started.invite": "Mensen uitnodigen", "getting_started.privacy_policy": "Privacybeleid", "getting_started.security": "Accountinstellingen", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Over Mastodon", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "zonder {additional}", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Reacties tonen", "home.hide_announcements": "Mededelingen verbergen", "home.show_announcements": "Mededelingen tonen", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Je kunt met een Mastodon-account dit bericht als favoriet markeren, om die gebruiker te laten weten dat je het bericht waardeert en om het op te slaan.", + "interaction_modal.description.follow": "Je kunt met een Mastodon-account {name} volgen, om zo diens berichten op jouw starttijdlijn te ontvangen.", + "interaction_modal.description.reblog": "Je kunt met een Mastodon-account dit bericht boosten, om het zo met jouw volgers te delen.", + "interaction_modal.description.reply": "Je kunt met een Mastodon-account op dit bericht reageren.", + "interaction_modal.on_another_server": "Op een andere server", + "interaction_modal.on_this_server": "Op deze server", + "interaction_modal.other_server_instructions": "Kopieer en plak eenvoudig deze URL in het zoekveld van de door jou gebruikte app of in de webinterface van de server waarop je bent ingelogd.", + "interaction_modal.preamble": "Mastodon is gedecentraliseerd. Daarom heb je geen account op deze Mastodon-server nodig, wanneer je al een account op een andere Mastodon-server of compatibel platform hebt.", + "interaction_modal.title.favourite": "Bericht van {name} als favoriet markeren", + "interaction_modal.title.follow": "{name} volgen", + "interaction_modal.title.reblog": "Bericht van {name} boosten", + "interaction_modal.title.reply": "Op het bericht van {name} reageren", "intervals.full.days": "{number, plural, one {# dag} other {# dagen}}", "intervals.full.hours": "{number, plural, one {# uur} other {# uur}}", "intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}", @@ -276,7 +282,7 @@ "keyboard_shortcuts.favourites": "Favorieten tonen", "keyboard_shortcuts.federated": "Globale tijdlijn tonen", "keyboard_shortcuts.heading": "Sneltoetsen", - "keyboard_shortcuts.home": "Start tonen", + "keyboard_shortcuts.home": "Starttijdlijn tonen", "keyboard_shortcuts.hotkey": "Sneltoets", "keyboard_shortcuts.legend": "Deze legenda tonen", "keyboard_shortcuts.local": "Lokale tijdlijn tonen", @@ -325,8 +331,8 @@ "mute_modal.duration": "Duur", "mute_modal.hide_notifications": "Verberg meldingen van deze persoon?", "mute_modal.indefinite": "Voor onbepaalde tijd", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Over", + "navigation_bar.apps": "App downloaden", "navigation_bar.blocks": "Geblokkeerde gebruikers", "navigation_bar.bookmarks": "Bladwijzers", "navigation_bar.community_timeline": "Lokale tijdlijn", @@ -340,7 +346,7 @@ "navigation_bar.filters": "Filters", "navigation_bar.follow_requests": "Volgverzoeken", "navigation_bar.follows_and_followers": "Volgers en gevolgden", - "navigation_bar.info": "About", + "navigation_bar.info": "Over deze server", "navigation_bar.keyboard_shortcuts": "Sneltoetsen", "navigation_bar.lists": "Lijsten", "navigation_bar.logout": "Uitloggen", @@ -350,7 +356,7 @@ "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.security": "Beveiliging", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Je moet inloggen om toegang tot deze informatie te krijgen.", "notification.admin.report": "{name} heeft {target} geapporteerd", "notification.admin.sign_up": "{name} heeft zich geregistreerd", "notification.favourite": "{name} markeerde jouw bericht als favoriet", @@ -418,11 +424,11 @@ "privacy.public.short": "Openbaar", "privacy.unlisted.long": "Voor iedereen zichtbaar, maar niet onder trends, hashtags en op openbare tijdlijnen", "privacy.unlisted.short": "Minder openbaar", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Laatst bijgewerkt op {date}", + "privacy_policy.title": "Privacybeleid", "refresh": "Vernieuwen", "regeneration_indicator.label": "Aan het laden…", - "regeneration_indicator.sublabel": "Jouw tijdlijn wordt aangemaakt!", + "regeneration_indicator.sublabel": "Jouw starttijdlijn wordt aangemaakt!", "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# dag} other {# dagen}} geleden", "relative_time.full.hours": "{number, plural, one {# uur} other {# uur}} geleden", @@ -492,12 +498,12 @@ "search_results.statuses_fts_disabled": "Het zoeken in berichten is op deze Mastodon-server niet ingeschakeld.", "search_results.title": "Naar {q} zoeken", "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.about_active_users": "Aantal gebruikers tijdens de afgelopen 30 dagen (MAU)", + "server_banner.active_users": "actieve gebruikers", + "server_banner.administered_by": "Beheerd door:", + "server_banner.introduction": "{domain} is onderdeel van het gedecentraliseerde sociale netwerk {mastodon}.", + "server_banner.learn_more": "Meer leren", + "server_banner.server_stats": "Serverstats:", "sign_in_banner.create_account": "Account registreren", "sign_in_banner.sign_in": "Inloggen", "sign_in_banner.text": "Inloggen om accounts of hashtags te volgen, op berichten te reageren, berichten te delen, of om interactie te hebben met jouw account op een andere server.", @@ -554,7 +560,7 @@ "status.uncached_media_warning": "Niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", "status.unpin": "Van profielpagina losmaken", - "subscribed_languages.lead": "Na de wijziging worden alleen berichten van geselecteerde talen op jouw starttijden en in lijsten weergegeven.", + "subscribed_languages.lead": "Na de wijziging worden alleen berichten van geselecteerde talen op jouw starttijdlijn en in lijsten weergegeven.", "subscribed_languages.save": "Wijzigingen opslaan", "subscribed_languages.target": "Getoonde talen voor {target} wijzigen", "suggestions.dismiss": "Aanbeveling verwerpen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index e0e7413db8..56cc3dbba1 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -151,6 +151,12 @@ "directory.local": "Berre frå {domain}", "directory.new_arrivals": "Nyankommne", "directory.recently_active": "Nyleg aktive", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Bygg inn denne statusen på nettsida di ved å kopiera koden under.", "embed.preview": "Slik bid det å sjå ut:", "emoji_button.activity": "Aktivitet", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 75eafd9d76..2cc3c92366 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -151,6 +151,12 @@ "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nylig aktiv", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.", "embed.preview": "Slik kommer det til å se ut:", "emoji_button.activity": "Aktivitet", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 165925ec02..4739fb0d3d 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -151,6 +151,12 @@ "directory.local": "Solament de {domain}", "directory.new_arrivals": "Nòus-venguts", "directory.recently_active": "Actius fa res", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.", "embed.preview": "Semblarà aquò :", "emoji_button.activity": "Activitats", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index e53d3a118c..f9c297e518 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 2013a08bf4..543018d619 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Oznacz jako przeczytane", "conversation.open": "Zobacz rozmowę", "conversation.with": "Z {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Skopiowano", + "copypaste.copy": "Kopiuj", "directory.federated": "Ze znanego fediwersum", "directory.local": "Tylko z {domain}", "directory.new_arrivals": "Nowości", "directory.recently_active": "Ostatnio aktywne", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Osadź ten wpis na swojej stronie wklejając poniższy kod.", "embed.preview": "Tak będzie to wyglądać:", "emoji_button.activity": "Aktywność", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Pokazuj odpowiedzi", "home.hide_announcements": "Ukryj ogłoszenia", "home.show_announcements": "Pokaż ogłoszenia", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Mając konto na Mastodonie, możesz dodawać wpisy do ulubionych by dać znać jego autorowi, że podoba Ci się ten wpis i zachować go na później.", + "interaction_modal.description.follow": "Mając konto na Mastodonie, możesz śledzić {name} by widzieć jego wpisy na swojej głównej osi czasu.", + "interaction_modal.description.reblog": "Mając konto na Mastodonie, możesz podbić ten wpis i udostępnić go Twoim obserwującym.", + "interaction_modal.description.reply": "Mając konto na Mastodonie, możesz odpowiedzieć na ten wpis.", + "interaction_modal.on_another_server": "Na innym serwerze", + "interaction_modal.on_this_server": "Na tym serwerze", + "interaction_modal.other_server_instructions": "Wystarczy skopiować i wkleić ten adres URL do swojej ulubionej aplikacji lub przegąldarki www gdzie jesteś zalogowany/a.", + "interaction_modal.preamble": "Ponieważ Mastodon jest zdecentralizowany, możesz użyć swojego istniejącego konta z innego serwera Mastodona lub innej kompatybilnej usługi, jeśli nie masz konta na tym serwerze.", + "interaction_modal.title.favourite": "Ulubiony wpis {name}", + "interaction_modal.title.follow": "Śledź {name}", + "interaction_modal.title.reblog": "Podbij wpis {name}", + "interaction_modal.title.reply": "Odpowiedz na post {name}", "intervals.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# godzina} few {# godziny} many {# godzin} other {# godzin}}", "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Publiczny", "privacy.unlisted.long": "Widoczne dla każdego, z wyłączeniem funkcji odkrywania", "privacy.unlisted.short": "Niewidoczny", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Data ostatniej aktualizacji: {date}", + "privacy_policy.title": "Polityka prywatności", "refresh": "Odśwież", "regeneration_indicator.label": "Ładuję…", "regeneration_indicator.sublabel": "Twoja oś czasu jest przygotowywana!", @@ -500,7 +506,7 @@ "server_banner.server_stats": "Statystyki serwera:", "sign_in_banner.create_account": "Załóż konto", "sign_in_banner.sign_in": "Zaloguj się", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "sign_in_banner.text": "Zaloguj się, aby obserwować profile lub hasztagi, jak również dodawaj wpisy do ulubionych, udostępniaj je dalej i odpowiadaj na nie lub wchodź w interakcje z kontem na innym serwerze.", "status.admin_account": "Otwórz interfejs moderacyjny dla @{name}", "status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym", "status.block": "Zablokuj @{name}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 28329e4a68..8a10067a97 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -151,6 +151,12 @@ "directory.local": "Somente de {domain}", "directory.new_arrivals": "Acabaram de chegar", "directory.recently_active": "Ativos recentemente", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Incorpore este toot no seu site ao copiar o código abaixo.", "embed.preview": "Aqui está como vai ficar:", "emoji_button.activity": "Atividade", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 2fb494fdd0..3465d5418d 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -151,6 +151,12 @@ "directory.local": "Apenas de {domain}", "directory.new_arrivals": "Recém chegados", "directory.recently_active": "Com actividade recente", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Incorpore esta publicação no seu site copiando o código abaixo.", "embed.preview": "Podes ver aqui como irá ficar:", "emoji_button.activity": "Actividade", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index e70acdd920..da39bd32cb 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -151,6 +151,12 @@ "directory.local": "Doar din {domain}", "directory.new_arrivals": "Înscriși recent", "directory.recently_active": "Activi recent", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Integrează această postare în site-ul tău copiind codul de mai jos.", "embed.preview": "Iată cum va arăta:", "emoji_button.activity": "Activități", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 444ea2d106..02d3b66a2e 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Отметить как прочитанное", "conversation.open": "Просмотр беседы", "conversation.with": "С {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Скопировано", + "copypaste.copy": "Скопировать", "directory.federated": "Со всей федерации", "directory.local": "Только с {domain}", "directory.new_arrivals": "Новички", "directory.recently_active": "Недавно активные", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:", "embed.preview": "Так это будет выглядеть:", "emoji_button.activity": "Занятия", @@ -252,12 +258,12 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.on_another_server": "На другом сервере", + "interaction_modal.on_this_server": "На этом сервере", + "interaction_modal.other_server_instructions": "Просто скопируйте и вставьте этот URL в строку поиска вашего любимого приложения или веб-интерфейса там, где вы вошли.", + "interaction_modal.preamble": "Поскольку Mastodon децентрализован, вы можете использовать существующую учётную запись, размещенную на другом сервере Mastodon или совместимой платформе, если у вас нет учётной записи на этом сервере.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "Подписаться на {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# день} few {# дня} other {# дней}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Публичный", "privacy.unlisted.long": "Виден всем, но не через функции обзора", "privacy.unlisted.short": "Скрытый", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Последнее обновление {date}", + "privacy_policy.title": "Политика конфиденциальности", "refresh": "Обновить", "regeneration_indicator.label": "Загрузка…", "regeneration_indicator.sublabel": "Один момент, мы подготавливаем вашу ленту!", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 43fcdfbbae..309fbdcfed 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -151,6 +151,12 @@ "directory.local": "{domain} प्रदेशात्केवलम्", "directory.new_arrivals": "नवामगमाः", "directory.recently_active": "नातिपूर्वं सक्रियः", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "दौत्यमेतत् स्वीयजालस्थाने स्थापयितुमधो लिखितो विध्यादेशो युज्यताम्", "embed.preview": "अत्रैवं दृश्यते तत्:", "emoji_button.activity": "आचरणम्", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index eddbab7fe9..5787771122 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -151,6 +151,12 @@ "directory.local": "Isceti dae {domain}", "directory.new_arrivals": "Arribos noos", "directory.recently_active": "Cun atividade dae pagu", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Inserta custa publicatzione in su situ web tuo copiende su còdighe de suta.", "embed.preview": "At a aparèssere aici:", "emoji_button.activity": "Atividade", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 3c1ff7c5ee..82f4512214 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -151,6 +151,12 @@ "directory.local": "{domain} වෙතින් පමණි", "directory.new_arrivals": "නව පැමිණීම්", "directory.recently_active": "මෑත දී සක්‍රියයි", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "පහත කේතය පිටපත් කිරීමෙන් මෙම තත්ත්වය ඔබේ වෙබ් අඩවියට ඇතුළත් කරන්න.", "embed.preview": "එය පෙනෙන්නේ කෙසේද යන්න මෙන්න:", "emoji_button.activity": "ක්‍රියාකාරකම", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index ee9f0b10af..95242d5c38 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -151,6 +151,12 @@ "directory.local": "Iba z {domain}", "directory.new_arrivals": "Nové príchody", "directory.recently_active": "Nedávno aktívne", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.", "embed.preview": "Tu je ako to bude vyzerať:", "emoji_button.activity": "Aktivita", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 0cadffdf67..bea82c6c41 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Označi kot prebrano", "conversation.open": "Prikaži pogovor", "conversation.with": "Z {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopirano", + "copypaste.copy": "Kopiraj", "directory.federated": "Iz znanega fediverzuma", "directory.local": "Samo iz {domain}", "directory.new_arrivals": "Novi prišleki", "directory.recently_active": "Nedavno aktiven/a", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Vstavi ta status na svojo spletno stran tako, da kopirate spodnjo kodo.", "embed.preview": "Tako bo izgledalo:", "emoji_button.activity": "Dejavnost", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Pokaži odgovore", "home.hide_announcements": "Skrij objave", "home.show_announcements": "Prikaži objave", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Z računom na Mastodonu lahko to objavo postavite med priljubljene in tako avtorju nakažete, da jo cenite, in jo shranite za kasneje.", + "interaction_modal.description.follow": "Z računom na Mastodonu lahko sledite {name}, da prejemate njihove objave v svoj domači vir.", + "interaction_modal.description.reblog": "Z računom na Mastodonu lahko izpostavite to objavo, tako da jo delite s svojimi sledilci.", + "interaction_modal.description.reply": "Z računom na Masodonu lahko odgovorite na to objavo.", + "interaction_modal.on_another_server": "Na drugem strežniku", + "interaction_modal.on_this_server": "Na tem strežniku", + "interaction_modal.other_server_instructions": "Enostavno kopirajte in prilepite ta URL v iskalno vrstico svoje priljubljene aplikacije ali spletni vmesnik, kjer ste prijavljeni.", + "interaction_modal.preamble": "Ker je Mastodon decentraliziran, lahko uporabite svoj obstoječi račun, ki gostuje na drugem strežniku Mastodon ali združljivi platformi, če nimate računa na tej.", + "interaction_modal.title.favourite": "Daj objavo {name} med priljubljene", + "interaction_modal.title.follow": "Sledi {name}", + "interaction_modal.title.reblog": "Izpostavi objavo {name}", + "interaction_modal.title.reply": "Odgovori na objavo {name}", "intervals.full.days": "{number, plural, one {# dan} two {# dni} few {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# ura} two {# uri} few {# ure} other {# ur}}", "intervals.full.minutes": "{number, plural, one {# minuta} two {# minuti} few {# minute} other {# minut}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Javno", "privacy.unlisted.long": "Vidno za vse, vendar izključeno iz funkcionalnosti odkrivanja", "privacy.unlisted.short": "Ni prikazano", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Zadnja posodobitev {date}", + "privacy_policy.title": "Pravilnik o zasebnosti", "refresh": "Osveži", "regeneration_indicator.label": "Nalaganje…", "regeneration_indicator.sublabel": "Vaš domači vir se pripravlja!", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 062a8c0371..180f92722f 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -151,6 +151,12 @@ "directory.local": "Vetëm nga {domain}", "directory.new_arrivals": "Të ardhur rishtas", "directory.recently_active": "Aktivë së fundi", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Trupëzojeni këtë gjendje në sajtin tuaj duke kopjuar kodin më poshtë.", "embed.preview": "Ja si do të duket:", "emoji_button.activity": "Veprimtari", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index f9388d9ba2..d387a7a0cf 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Ugradi ovaj status na Vaš veb sajt kopiranjem koda ispod.", "embed.preview": "Ovako će da izgleda:", "emoji_button.activity": "Aktivnost", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 4c235b5843..fa484302f8 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -151,6 +151,12 @@ "directory.local": "Само са {domain}", "directory.new_arrivals": "Новопридошли", "directory.recently_active": "Недавно активни", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Угради овај статус на Ваш веб сајт копирањем кода испод.", "embed.preview": "Овако ће да изгледа:", "emoji_button.activity": "Активност", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 29e6b0e712..83a32ace1f 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -151,6 +151,12 @@ "directory.local": "Endast från {domain}", "directory.new_arrivals": "Nyanlända", "directory.recently_active": "Nyligen aktiva", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Lägg in denna status på din webbplats genom att kopiera koden nedan.", "embed.preview": "Så här kommer det att se ut:", "emoji_button.activity": "Aktivitet", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index e53d3a118c..f9c297e518 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 032d6030fe..df216d0cea 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -151,6 +151,12 @@ "directory.local": "{domain} களத்திலிருந்து மட்டும்", "directory.new_arrivals": "புதிய வரவு", "directory.recently_active": "சற்றுமுன் செயல்பாட்டில் இருந்தவர்கள்", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "இந்தப் பதிவை உங்கள் வலைதளத்தில் பொதிக்கக் கீழே உள்ள வரிகளை காப்பி செய்யவும்.", "embed.preview": "பார்க்க இப்படி இருக்கும்:", "emoji_button.activity": "செயல்பாடு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 6460242d6f..2697a197a2 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 8cde3cec72..893f9df986 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "దిగువ కోడ్ను కాపీ చేయడం ద్వారా మీ వెబ్సైట్లో ఈ స్టేటస్ ని పొందుపరచండి.", "embed.preview": "అది ఈ క్రింది విధంగా కనిపిస్తుంది:", "emoji_button.activity": "కార్యకలాపాలు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 849f74a0aa..c468438066 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -151,6 +151,12 @@ "directory.local": "จาก {domain} เท่านั้น", "directory.new_arrivals": "มาใหม่", "directory.recently_active": "ใช้งานล่าสุด", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "ฝังโพสต์นี้ในเว็บไซต์ของคุณโดยคัดลอกโค้ดด้านล่าง", "embed.preview": "นี่คือลักษณะที่จะปรากฏ:", "emoji_button.activity": "กิจกรรม", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index e205403408..ce9ca2023a 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Okundu olarak işaretle", "conversation.open": "Sohbeti görüntüle", "conversation.with": "{names} ile", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopyalandı", + "copypaste.copy": "Kopyala", "directory.federated": "Bilinen fediverse'lerden", "directory.local": "Yalnızca {domain} adresinden", "directory.new_arrivals": "Yeni gelenler", "directory.recently_active": "Son zamanlarda aktif", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Aşağıdaki kodu kopyalayarak bu durumu sitenize gömün.", "embed.preview": "İşte nasıl görüneceği:", "emoji_button.activity": "Aktivite", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Yanıtları göster", "home.hide_announcements": "Duyuruları gizle", "home.show_announcements": "Duyuruları göster", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Mastodon'da bir hesapla, bu gönderiyi, yazarın onu beğendiğinizi bilmesi ve daha sonrası saklamak için beğenebilirsiniz.", + "interaction_modal.description.follow": "Mastodon'daki bir hesapla, {name} kişisini, ana akışınızdaki gönderilerini görmek üzere takip edebilirsiniz.", + "interaction_modal.description.reblog": "Mastodon'daki bir hesapla, bu gönderiyi takipçilerinizle paylaşmak için yükseltebilirsiniz.", + "interaction_modal.description.reply": "Mastodon'daki bir hesapla, bu gönderiye yanıt verebilirsiniz.", + "interaction_modal.on_another_server": "Farklı bir sunucuda", + "interaction_modal.on_this_server": "Bu sunucuda", + "interaction_modal.other_server_instructions": "Basitçe bu URL'yi kopyalayın ve beğendiğiniz uygulamanın veya giriş yapmış olduğunuz bir web arayüzünün arama çubuğuna yapıştırın.", + "interaction_modal.preamble": "Mastodon ademi merkeziyetçi olduğu için, bu sunucuda bir hesabınız yoksa bile başka bir Mastodon sunucusu veya uyumlu bir platformda barındırılan mevcut hesabınızı kullanabilirsiniz.", + "interaction_modal.title.favourite": "{name} kişisinin gönderisini favorilerine ekle", + "interaction_modal.title.follow": "{name} kişisini takip et", + "interaction_modal.title.reblog": "{name} kişisinin gönderisini yükselt", + "interaction_modal.title.reply": "{name} kişisinin gönderisine yanıt ver", "intervals.full.days": "{number, plural, one {# gün} other {# gün}}", "intervals.full.hours": "{number, plural, one {# saat} other {# saat}}", "intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}", @@ -272,8 +278,8 @@ "keyboard_shortcuts.direct": "doğrudan iletiler sütununu açmak için", "keyboard_shortcuts.down": "listede aşağıya inmek için", "keyboard_shortcuts.enter": "gönderiyi aç", - "keyboard_shortcuts.favourite": "gönderiyi favorilerine ekle", - "keyboard_shortcuts.favourites": "favoriler listesini açmak için", + "keyboard_shortcuts.favourite": "Gönderiyi favorilerine ekle", + "keyboard_shortcuts.favourites": "Favoriler listesini aç", "keyboard_shortcuts.federated": "federe akışı aç", "keyboard_shortcuts.heading": "Klavye kısayolları", "keyboard_shortcuts.home": "ana akışı aç", @@ -418,8 +424,8 @@ "privacy.public.short": "Herkese açık", "privacy.unlisted.long": "Keşfet harici herkese açık", "privacy.unlisted.short": "Listelenmemiş", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Son güncelleme {date}", + "privacy_policy.title": "Gizlilik Politikası", "refresh": "Yenile", "regeneration_indicator.label": "Yükleniyor…", "regeneration_indicator.sublabel": "Ana akışın hazırlanıyor!", @@ -479,7 +485,7 @@ "report_notification.open": "Bildirim aç", "search.placeholder": "Ara", "search_popout.search_format": "Gelişmiş arama biçimi", - "search_popout.tips.full_text": "Basit metin yazdığınız, beğendiğiniz, teşvik ettiğiniz veya söz edilen gönderilerin yanı sıra kullanıcı adlarını, görünen adları ve hashtag'leri eşleştiren gönderileri de döndürür.", + "search_popout.tips.full_text": "Basit metin yazdığınız, beğendiğiniz, teşvik ettiğiniz veya söz edilen gönderilerin yanı sıra kullanıcı adlarını, görünen adları ve etiketleri eşleşen gönderileri de döndürür.", "search_popout.tips.hashtag": "etiket", "search_popout.tips.status": "gönderi", "search_popout.tips.text": "Basit metin, eşleşen görünen adları, kullanıcı adlarını ve hashtag'leri döndürür", @@ -527,14 +533,14 @@ "status.more": "Daha fazla", "status.mute": "@{name} kişisini sessize al", "status.mute_conversation": "Sohbeti sessize al", - "status.open": "Bu tootu genişlet", + "status.open": "Bu gönderiyi genişlet", "status.pin": "Profile sabitle", - "status.pinned": "Sabitlenmiş toot", + "status.pinned": "Sabitlenmiş gönderi", "status.read_more": "Devamını okuyun", "status.reblog": "Boostla", "status.reblog_private": "Orijinal görünürlük ile boostla", "status.reblogged_by": "{name} boostladı", - "status.reblogs.empty": "Henüz kimse bu tootu boostlamadı. Biri yaptığında burada görünecek.", + "status.reblogs.empty": "Henüz kimse bu gönderiyi teşvik etmedi. Biri yaptığında burada görünecek.", "status.redraft": "Sil ve yeniden taslak yap", "status.remove_bookmark": "Yer imini kaldır", "status.reply": "Yanıtla", @@ -571,7 +577,7 @@ "timeline_hint.remote_resource_not_displayed": "diğer sunucudaki {resource} gösterilemiyor.", "timeline_hint.resources.followers": "Takipçiler", "timeline_hint.resources.follows": "Takip Edilenler", - "timeline_hint.resources.statuses": "Eski tootlar", + "timeline_hint.resources.statuses": "Eski gönderiler", "trends.counter_by_accounts": "Son {days, plural, one {gündeki} other {{days} gündeki}} {count, plural, one {{counter} kişi} other {{counter} kişi}}", "trends.trending_now": "Şu an gündemde", "ui.beforeunload": "Mastodon'u terk ederseniz taslağınız kaybolacak.", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 5aaad43d44..9507985747 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Активлык", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index e53d3a118c..f9c297e518 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 015a1c7052..46a6dddd05 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Позначити як прочитане", "conversation.open": "Переглянути бесіду", "conversation.with": "З {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Скопійовано", + "copypaste.copy": "Копіювати", "directory.federated": "З відомого федесвіту", "directory.local": "Лише з домену {domain}", "directory.new_arrivals": "Нові надходження", "directory.recently_active": "Нещодавно активні", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Вбудуйте цей допис до вашого вебсайту, скопіювавши код нижче.", "embed.preview": "Ось як він виглядатиме:", "emoji_button.activity": "Діяльність", @@ -252,14 +258,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.on_another_server": "На іншому сервері", + "interaction_modal.on_this_server": "На цьому сервері", + "interaction_modal.other_server_instructions": "Просто скопіюйте і вставте цей URL у панель пошуку вашого улюбленого застосунку або вебінтерфейсу, до якого ви ввійшли.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.favourite": "Вибраний допис {name}", + "interaction_modal.title.follow": "Підписатися на {name}", + "interaction_modal.title.reblog": "Пришвидшити пост {name}", + "interaction_modal.title.reply": "Відповісти на допис {name}", "intervals.full.days": "{number, plural, one {# день} few {# дні} other {# днів}}", "intervals.full.hours": "{number, plural, one {# година} few {# години} other {# годин}}", "intervals.full.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Публічно", "privacy.unlisted.long": "Видимий для всіх, але не через можливості виявлення", "privacy.unlisted.short": "Прихований", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Оновлено {date}", + "privacy_policy.title": "Політика приватності", "refresh": "Оновити", "regeneration_indicator.label": "Завантаження…", "regeneration_indicator.sublabel": "Хвилинку, ми готуємо вашу стрічку!", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 5e681e7f9a..d77e4fd041 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -151,6 +151,12 @@ "directory.local": "صرف {domain} سے", "directory.new_arrivals": "نئے آنے والے", "directory.recently_active": "حال میں میں ایکٹیو", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "یہ اس طرح نظر آئے گا:", "emoji_button.activity": "سرگرمی", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 85e64fa600..5b45c5d1cb 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -72,7 +72,7 @@ "column.about": "Giới thiệu", "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", - "column.community": "Máy chủ của bạn", + "column.community": "Máy chủ này", "column.direct": "Nhắn riêng", "column.directory": "Tìm người cùng sở thích", "column.domain_blocks": "Máy chủ đã chặn", @@ -83,7 +83,7 @@ "column.mutes": "Người đã ẩn", "column.notifications": "Thông báo", "column.pins": "Tút ghim", - "column.public": "Mạng liên hợp", + "column.public": "Liên hợp", "column_back_button.label": "Quay lại", "column_header.hide_settings": "Ẩn bộ lọc", "column_header.moveLeft_settings": "Dời cột sang bên trái", @@ -145,12 +145,18 @@ "conversation.mark_as_read": "Đánh dấu là đã đọc", "conversation.open": "Xem toàn bộ tin nhắn", "conversation.with": "Với {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Đã sao chép", + "copypaste.copy": "Sao chép", "directory.federated": "Từ mạng liên hợp", "directory.local": "Từ {domain}", "directory.new_arrivals": "Mới tham gia", "directory.recently_active": "Hoạt động gần đây", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Sao chép đoạn mã dưới đây và chèn vào trang web của bạn.", "embed.preview": "Nó sẽ hiển thị như vầy:", "emoji_button.activity": "Hoạt động", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "Hiện những tút dạng trả lời", "home.hide_announcements": "Ẩn thông báo máy chủ", "home.show_announcements": "Hiện thông báo máy chủ", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Với tài khoản Mastodon, bạn có thể yêu thích tút này để cho người đăng biết bạn thích nó và lưu lại tút.", + "interaction_modal.description.follow": "Với tài khoản Mastodon, bạn có thể theo dõi {name} để nhận những tút của họ trên bảng tin của mình.", + "interaction_modal.description.reblog": "Với tài khoản Mastodon, bạn có thể đăng lại tút này để chia sẻ nó với những người đang theo dõi bạn.", + "interaction_modal.description.reply": "Với tài khoản Mastodon, bạn có thể bình luận tút này.", + "interaction_modal.on_another_server": "Trên một máy chủ khác", + "interaction_modal.on_this_server": "Trên máy chủ này", + "interaction_modal.other_server_instructions": "Sao chép và dán URL này vào thanh tìm kiếm của ứng dụng bạn yêu thích hay trang web mà bạn đã đăng nhập vào.", + "interaction_modal.preamble": "Do Mastodon phi tập trung, bạn có thể sử dụng tài khoản hiện có trên một máy chủ Mastodon khác hoặc một nền tảng tương thích nếu bạn chưa có tài khoản trên máy chủ này.", + "interaction_modal.title.favourite": "Thích tút của {name}", + "interaction_modal.title.follow": "Theo dõi {name}", + "interaction_modal.title.reblog": "Đăng lại tút của {name}", + "interaction_modal.title.reply": "Trả lời tút của {name}", "intervals.full.days": "{number, plural, other {# ngày}}", "intervals.full.hours": "{number, plural, other {# giờ}}", "intervals.full.minutes": "{number, plural, other {# phút}}", @@ -418,8 +424,8 @@ "privacy.public.short": "Công khai", "privacy.unlisted.long": "Công khai nhưng không hiện trên bảng tin", "privacy.unlisted.short": "Hạn chế", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Cập nhật lần cuối {date}", + "privacy_policy.title": "Chính sách bảo mật", "refresh": "Làm mới", "regeneration_indicator.label": "Đang tải…", "regeneration_indicator.sublabel": "Bảng tin của bạn đang được cập nhật!", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 3f740cf113..910d0e4b94 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -151,6 +151,12 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Activity", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 550317fa35..90a212fab6 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -151,6 +151,12 @@ "directory.local": "仅来自 {domain}", "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "复制下列代码以在你的网站中嵌入此嘟文。", "embed.preview": "它会像这样显示出来:", "emoji_button.activity": "活动", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 3be3058a7a..6cce3008ad 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -151,6 +151,12 @@ "directory.local": "僅來自 {domain}", "directory.new_arrivals": "新內容", "directory.recently_active": "最近活躍", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。", "embed.preview": "看上去會是這樣:", "emoji_button.activity": "活動", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index e06c411d22..c45269d6a2 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -145,12 +145,18 @@ "conversation.mark_as_read": "標記為已讀", "conversation.open": "檢視對話", "conversation.with": "與 {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "已複製", + "copypaste.copy": "複製", "directory.federated": "來自已知聯邦宇宙", "directory.local": "僅來自 {domain} 網域", "directory.new_arrivals": "新人", "directory.recently_active": "最近活躍", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "要在您的網站嵌入此嘟文,請複製以下程式碼。", "embed.preview": "它將顯示成這樣:", "emoji_button.activity": "活動", @@ -248,18 +254,18 @@ "home.column_settings.show_replies": "顯示回覆", "home.hide_announcements": "隱藏公告", "home.show_announcements": "顯示公告", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "在 Mastodon 上有個帳號的話,您可以將此嘟文加入最愛以讓作者知道您欣賞它且將它儲存下來。", + "interaction_modal.description.follow": "在 Mastodon 上有個帳號的話,您可以跟隨 {name} 以於首頁時間軸接收他們的嘟文。", + "interaction_modal.description.reblog": "在 Mastodon 上有個帳號的話,您可以轉嘟此嘟文以分享給您的跟隨者們。", + "interaction_modal.description.reply": "在 Mastodon 上有個帳號的話,您可以回覆此嘟文。", + "interaction_modal.on_another_server": "於不同伺服器", + "interaction_modal.on_this_server": "於此伺服器", + "interaction_modal.other_server_instructions": "簡單地於您慣用的應用程式或有登入您帳號之網頁介面的搜尋欄中複製並貼上此 URL。", + "interaction_modal.preamble": "由於 Mastodon 是去中心化的,即便您於此沒有帳號,仍可以利用託管於其他 Mastodon 伺服器或相容平台上的既存帳號。", + "interaction_modal.title.favourite": "將 {name} 的嘟文加入最愛", + "interaction_modal.title.follow": "跟隨 {name}", + "interaction_modal.title.reblog": "轉嘟 {name} 的嘟文", + "interaction_modal.title.reply": "回覆 {name} 的嘟文", "intervals.full.days": "{number, plural, one {# 天} other {# 天}}", "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}", "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}", @@ -418,8 +424,8 @@ "privacy.public.short": "公開", "privacy.unlisted.long": "對所有人可見,但選擇退出探索功能", "privacy.unlisted.short": "不公開", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "最後更新:{date}", + "privacy_policy.title": "隱私權政策", "refresh": "重新整理", "regeneration_indicator.label": "載入中…", "regeneration_indicator.sublabel": "您的首頁時間軸正在準備中!", diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 397defa42d..3500b454b2 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -330,6 +330,8 @@ ast: invalid_choice: La opción de votu escoyida nun esiste preferences: public_timelines: Llinies temporales públiques + privacy_policy: + title: Política de privacidá relationships: activity: Actividá followers: Siguidores diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 49ef734ad2..2fb2f1941b 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -939,12 +939,8 @@ ca: new_trends: body: 'Els següents elements necessiten una revisió abans de que puguin ser mostrats públicament:' new_trending_links: - no_approved_links: Actualment no hi ha enllaços en tendència aprovats. - requirements: 'Qualsevol d''aquests candidats podria superar el #%{rank} del enllaç en tendència aprovat, que actualment és "%{lowest_link_title}" amb una puntuació de %{lowest_link_score}.' title: Enllaços en tendència new_trending_statuses: - no_approved_statuses: Actualment no hi ha etiquetes en tendència aprovades. - requirements: 'Qualsevol d''aquests candidats podria superar el #%{rank} de la publicació en tendència aprovada, que actualment és "%{lowest_status_url}" amb una puntuació de %{lowest_status_score}.' title: Publicacions en tendència new_trending_tags: no_approved_tags: Actualment no hi ha etiquetes en tendència aprovades. @@ -1404,6 +1400,8 @@ ca: other: Altre posting_defaults: Valors predeterminats de publicació public_timelines: Línies de temps públiques + privacy_policy: + title: Política de Privacitat reactions: errors: limit_reached: Límit de diferents reaccions assolit diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 4e3823c9de..370fa82c3a 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -971,12 +971,8 @@ cs: new_trends: body: 'Následující položky vyžadují posouzení, než mohou být zobrazeny veřejně:' new_trending_links: - no_approved_links: Momentálně nejsou žádné schválené populární odkazy. - requirements: 'Kterýkoliv z těchto kandidátů by mohl předehnat schválený populární odkaz #%{rank}, kterým je momentálně "%{lowest_link_title}" se skóre %{lowest_link_score}.' title: Populární odkazy new_trending_statuses: - no_approved_statuses: Momentálně nejsou žádné schválené populární příspěvky. - requirements: 'Kterýkoliv z těchto kandidátů by mohl předehnat schválený populární příspěvek #%{rank}, kterým je momentálně %{lowest_status_url} se skóre %{lowest_status_score}.' title: Populární příspěvky new_trending_tags: no_approved_tags: Momentálně nejsou žádné schválené populární hashtagy. @@ -1053,6 +1049,8 @@ cs: email_below_hint_html: Pokud je níže uvedená e-mailová adresa nesprávná, můžete ji změnit zde a nechat si poslat nový potvrzovací e-mail. email_settings_hint_html: Potvrzovací e-mail byl odeslán na %{email}. Pokud je tato adresa nesprávná, můžete ji změnit v nastavení účtu. title: Nastavení + sign_up: + preamble: S účtem na tomto serveru Mastodon budete moci sledovat jakoukoliv jinou osobu v síti bez ohledu na to, kde je jejich účet hostován. status: account_status: Stav účtu confirming: Čeká na dokončení potvrzení e-mailu. @@ -1428,6 +1426,8 @@ cs: other: Ostatní posting_defaults: Výchozí možnosti psaní public_timelines: Veřejné časové osy + privacy_policy: + title: Zásady ochrany osobních údajů reactions: errors: limit_reached: Dosažen limit různých reakcí diff --git a/config/locales/da.yml b/config/locales/da.yml index 2df65ead9a..be4a677ef6 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -938,12 +938,8 @@ da: new_trends: body: 'Flg. emner kræver revision, inden de kan vises offentligt:' new_trending_links: - no_approved_links: Der er i pt. ingen godkendte populære links. - requirements: 'Enhver af disse kandidater vil kunne overgå #%{rank} godkendte populære link, der med en score på %{lowest_link_score} pt. er "%{lowest_link_title}".' title: Populære links new_trending_statuses: - no_approved_statuses: Der er i pt. ingen godkendte populære opslag. - requirements: 'Enhver af disse kandidater vil kunne overgå #%{rank} godkendte populære opslag, der med en score på %{lowest_status_score} pt. er %{lowest_status_url}.' title: Populære opslag new_trending_tags: no_approved_tags: Der er pt. ingen godkendte populære hashtags. @@ -1403,6 +1399,8 @@ da: other: Andet posting_defaults: Standarder for indlæg public_timelines: Offentlige tidslinjer + privacy_policy: + title: Fortrolighedspolitik reactions: errors: limit_reached: Grænse for forskellige reaktioner nået diff --git a/config/locales/de.yml b/config/locales/de.yml index 05c1744545..4f89455908 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -939,12 +939,8 @@ de: new_trends: body: 'Die folgenden Einträge müssen überprüft werden, bevor sie öffentlich angezeigt werden können:' new_trending_links: - no_approved_links: Derzeit sind keine trendenen Links hinterlegt, die genehmigt wurden. - requirements: 'Jeder dieser Kandidaten könnte den #%{rank} genehmigten trendenen Link übertreffen, der derzeit "%{lowest_link_title}" mit einer Punktzahl von %{lowest_link_score} ist.' title: Angesagte Links new_trending_statuses: - no_approved_statuses: Derzeit sind keine trendenen Beiträge hinterlegt, die genehmigt wurden. - requirements: 'Jeder dieser Kandidaten könnte den #%{rank} genehmigten trendenen Beitrag übertreffen, der derzeit "%{lowest_status_url}" mit einer Punktzahl von %{lowest_status_score} ist.' title: Angesagte Beiträge new_trending_tags: no_approved_tags: Derzeit gibt es keine genehmigten trendenen Hashtags. @@ -1404,6 +1400,8 @@ de: other: Weiteres posting_defaults: Standardeinstellungen für Beiträge public_timelines: Öffentliche Zeitleisten + privacy_policy: + title: Datenschutzerklärung reactions: errors: limit_reached: Limit für verschiedene Reaktionen erreicht diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml index 45eb623ec4..c65a26bd50 100644 --- a/config/locales/doorkeeper.ast.yml +++ b/config/locales/doorkeeper.ast.yml @@ -30,7 +30,7 @@ ast: native_redirect_uri: Usa %{native_redirect_uri} pa pruebes llocales redirect_uri: Usa una llinia per URI index: - empty: Nun tienes aplicaciones. + empty: Nun tienes nenguna aplicación. name: Nome new: Aplicación nueva scopes: Ámbitos @@ -66,7 +66,7 @@ ast: server_error: El sirvidor d'autorizaciones alcontró una condición inesperada qu'evitó que cumpliera la solicitú. temporarily_unavailable: Anguaño'l sirvidor d'autorizaciones nun ye a remanar la solicitú pola mor d'una sobrecarga temporal o caltenimientu del sirvidor. unauthorized_client: El veceru nun ta autorizáu pa facer esta solicitú usando esti métodu. - unsupported_response_type: El sirvidor d'autorización nun sofita esta triba de rempuesta. + unsupported_response_type: El sirvidor d'autorización nun ye compatible con esti tipu de respuesta. grouped_scopes: title: notifications: Avisos diff --git a/config/locales/el.yml b/config/locales/el.yml index 7546dd1cae..61745f0dc5 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -981,6 +981,8 @@ el: other: Άλλες posting_defaults: Προεπιλογές δημοσίευσης public_timelines: Δημόσιες ροές + privacy_policy: + title: Πολιτική Απορρήτου reactions: errors: limit_reached: Το όριο διαφορετικών αντιδράσεων ξεπεράστηκε diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 8337c73838..749ac27ee6 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -939,12 +939,8 @@ es-AR: new_trends: body: 'Los siguientes elementos necesitan una revisión antes de que se puedan mostrar públicamente:' new_trending_links: - no_approved_links: Actualmente no hay enlaces en tendencia aprobados. - requirements: 'Cualquiera de estos candidatos podría superar el enlace de tendencia aprobado de #%{rank}, que actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}.' title: Enlaces en tendencia new_trending_statuses: - no_approved_statuses: Actualmente no hay mensajes en tendencia aprobados. - requirements: 'Cualquiera de estos candidatos podría superar el mensaje de tendencia aprobado de #%{rank}, que actualmente es %{lowest_status_url} con una puntuación de %{lowest_status_score}.' title: Mensajes en tendencia new_trending_tags: no_approved_tags: Actualmente no hay etiquetas en tendencia aprobadas. @@ -1404,6 +1400,8 @@ es-AR: other: Otras opciones posting_defaults: Configuración predeterminada de mensajes public_timelines: Líneas temporales públicas + privacy_policy: + title: Política de privacidad reactions: errors: limit_reached: Se alcanzó el límite de reacciones diferentes diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index c19e8322d4..0441b2a317 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -939,12 +939,8 @@ es-MX: new_trends: body: 'Los siguientes elementos necesitan una revisión antes de que se puedan mostrar públicamente:' new_trending_links: - no_approved_links: Actualmente no hay enlaces en tendencia aprobados. - requirements: 'Cualquiera de estos candidatos podría superar el enlace de tendencia aprobado por #%{rank}, que actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}.' title: Enlaces en tendencia new_trending_statuses: - no_approved_statuses: Actualmente no hay enlaces en tendencia aprobados. - requirements: 'Cualquiera de estos candidatos podría superar la publicación en tendencia aprobado por #%{rank}, que actualmente es %{lowest_status_url} con una puntuación de %{lowest_status_score}.' title: Publicaciones en tendencia new_trending_tags: no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. diff --git a/config/locales/es.yml b/config/locales/es.yml index 6074dc4214..19a4bf30f1 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -939,12 +939,8 @@ es: new_trends: body: 'Los siguientes elementos necesitan una revisión antes de que se puedan mostrar públicamente:' new_trending_links: - no_approved_links: Actualmente no hay enlaces en tendencia aprobados. - requirements: 'Cualquiera de estos candidatos podría superar el enlace de tendencia aprobado por #%{rank}, que actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}.' title: Enlaces en tendencia new_trending_statuses: - no_approved_statuses: Actualmente no hay enlaces en tendencia aprobados. - requirements: 'Cualquiera de estos candidatos podría superar la publicación en tendencia aprobado por #%{rank}, que actualmente es %{lowest_status_url} con una puntuación de %{lowest_status_score}.' title: Publicaciones en tendencia new_trending_tags: no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. @@ -1404,6 +1400,8 @@ es: other: Otros posting_defaults: Configuración por defecto de publicaciones public_timelines: Líneas de tiempo públicas + privacy_policy: + title: Política de Privacidad reactions: errors: limit_reached: Límite de reacciones diferentes alcanzado diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 093d3ca64e..504d4cd8d5 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -732,7 +732,6 @@ fa: subject: گزارش تازه‌ای برای %{instance} (#%{id}) new_trends: new_trending_links: - no_approved_links: در حال حاضر هیچ پیوند پرطرفداری پذیرفته نشده است. title: پیوندهای داغ new_trending_statuses: title: فرسته‌های داغ diff --git a/config/locales/fi.yml b/config/locales/fi.yml index ed0083babe..4a51826fcb 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -926,12 +926,8 @@ fi: new_trends: body: 'Seuraavat kohteet on tarkistettava ennen kuin ne voidaan näyttää julkisesti:' new_trending_links: - no_approved_links: Tällä hetkellä ei ole hyväksyttyjä trendikkäitä linkkejä. - requirements: 'Mikä tahansa näistä ehdokkaista voisi ylittää #%{rank} hyväksytyn trendikkään linkin, joka on tällä hetkellä "%{lowest_link_title}" arvosanalla %{lowest_link_score}.' title: Suositut linkit new_trending_statuses: - no_approved_statuses: Tällä hetkellä ei ole hyväksyttyjä trendikkäitä viestejä. - requirements: 'Mikä tahansa näistä ehdokkaista voisi ylittää #%{rank} hyväksytyn trendikkään julkaisun, joka on tällä hetkellä %{lowest_status_url} arvosanalla %{lowest_status_score}.' title: Suositut viestit new_trending_tags: no_approved_tags: Tällä hetkellä ei ole hyväksyttyjä trendikkäitä hashtageja. diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 23e8efa89e..9a8edacb5d 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -931,12 +931,8 @@ fr: new_trends: body: 'Les éléments suivants doivent être approuvés avant de pouvoir être affichés publiquement :' new_trending_links: - no_approved_links: Il n'y a pas de lien tendance approuvé actuellement. - requirements: N'importe quel élément de la sélection pourrait surpasser le lien tendance approuvé n°%{rank}, qui est actuellement « %{lowest_link_title} » avec un résultat de %{lowest_link_score}. title: Liens tendance new_trending_statuses: - no_approved_statuses: Il n'y a pas de message tendance approuvé actuellement. - requirements: N'importe quel élément de la sélection pourrait surpasser le message tendance approuvé n°%{rank}, qui est actuellement « %{lowest_status_url} » avec un résultat de %{lowest_status_score}. title: Messages tendance new_trending_tags: no_approved_tags: Il n'y a pas de hashtag tendance approuvé actuellement. diff --git a/config/locales/gd.yml b/config/locales/gd.yml index f4e83215c4..ffae2ee2fd 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -957,12 +957,8 @@ gd: new_trends: body: 'Tha na nithean seo feumach air lèirmheas mus nochd iad gu poblach:' new_trending_links: - no_approved_links: Chan eil ceangal a’ treandadh le aontachadh ann. - requirements: "’S urrainn do ghin dhe na tagraichean seo dol thairis air #%{rank} a tha aig a’ cheangal “%{lowest_link_title}” a’ treandadh as ìsle le aontachadh agus sgòr de %{lowest_link_score} air." title: Ceanglaichean a’ treandadh new_trending_statuses: - no_approved_statuses: Chan eil post a’ treandadh le aontachadh ann. - requirements: "’S urrainn do ghin dhe na tagraichean seo dol thairis air #%{rank} a tha aig a’ phost %{lowest_status_url} a’ treandadh as ìsle le aontachadh agus sgòr de %{lowest_status_score} air." title: Postaichean a’ treandadh new_trending_tags: no_approved_tags: Chan eil taga hais a’ treandadh le aontachadh ann. diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 4021684cc2..db840b4e3b 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -939,12 +939,8 @@ gl: new_trends: body: 'Os seguintes elementos precisan revisión antes de ser mostrados públicamente:' new_trending_links: - no_approved_links: Actualmente non hai ligazóns en voga aprobadas. - requirements: 'Calquera destos candidatos podería superar o #%{rank} das ligazóns en voga aprobadas, que actualmente é "%{lowest_link_title}" cunha puntuación de %{lowest_link_score}.' title: Ligazóns en voga new_trending_statuses: - no_approved_statuses: Actualmente non hai publicacións en voga aprobadas. - requirements: 'Calquera destos candidatos podería superar o #%{rank} nas publicacións en boga aprobadas, que actualmente é %{lowest_status_url} cunha puntuación de %{lowest_status_score}.' title: Publicacións en voga new_trending_tags: no_approved_tags: Non hai etiquetas en voga aprobadas. @@ -1404,6 +1400,8 @@ gl: other: Outro posting_defaults: Valores por omisión public_timelines: Cronoloxías públicas + privacy_policy: + title: Política de Privacidade reactions: errors: limit_reached: Acadouse o límite das diferentes reaccións diff --git a/config/locales/he.yml b/config/locales/he.yml index 244bce9632..5ad05fee9d 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -965,12 +965,8 @@ he: new_trends: body: 'הפריטים הבאים זקוקים לסקירה לפני שניתן יהיה להציגם פומבית:' new_trending_links: - no_approved_links: אין כרגע שום קישוריות חמות מאושרות. - requirements: כל אחד מהמועמדים האלה עשוי לעבור את הקישורית החמה המאושרת מדרגה %{rank}, שהיא כרגע %{lowest_link_title} עם ציון של %{lowest_link_score}. title: נושאים חמים new_trending_statuses: - no_approved_statuses: אין כרגע שום חצרוצים חמים מאושרים. - requirements: כל אחד מהמועמדים האלה עשוי לעבור את הפוסט החם המאושר מדרגה %{rank}, שהוא כרגע %{lowest_status_url} עם ציון של %{lowest_status_score}. title: חצרוצים לוהטים new_trending_tags: no_approved_tags: אין כרגע שום האשתגיות חמות מאושרות. diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 4036145f0e..39a06d754b 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -941,12 +941,8 @@ hu: new_trends: body: 'A következő elemeket ellenőrizni kell, mielőtt nyilvánosan megjelennének:' new_trending_links: - no_approved_links: Jelenleg nincsenek jóváhagyott felkapott hivatkozások. - requirements: 'Ezek közül bármelyik jelölt lehagyná a %{rank}. jóváhagyott felkapott hivatkozást, amely jelenleg a(z) „%{lowest_link_title}” ezzel a pontszámmal: %{lowest_link_score}.' title: Felkapott hivatkozások new_trending_statuses: - no_approved_statuses: Jelenleg nincsenek jóváhagyott felkapott bejegyzések. - requirements: 'Ezek közül bármelyik jelölt lehagyná a %{rank}. jóváhagyott felkapott bejegyzést, amely jelenleg a(z) „%{lowest_status_url}” ezzel a pontszámmal: %{lowest_status_score}.' title: Felkapott bejegyzések new_trending_tags: no_approved_tags: Jelenleg nincsenek jóváhagyott felkapott hashtagek. @@ -1024,6 +1020,9 @@ hu: email_below_hint_html: Ha az alábbi e-mail cím nem megfelelő, itt megváltoztathatod és kaphatsz egy új igazoló e-mailt. email_settings_hint_html: A visszaigazoló e-mailt elküldtük ide %{email}. Ha az e-mail cím nem megfelelő, megváltoztathatod a fiókod beállításainál. title: Beállítás + sign_up: + preamble: Egy fiókkal ezen a Mastodon kiszolgálón követhetsz bárkit a hálózaton, függetlenül attól, hogy az illető fiókja melyik kiszolgálón található. + title: Állítsuk be a fiókod a %{domain} kiszolgálón. status: account_status: Fiók állapota confirming: Várakozás az e-mailes visszaigazolásra. @@ -1403,6 +1402,8 @@ hu: other: Egyéb posting_defaults: Bejegyzések alapértelmezései public_timelines: Nyilvános idővonalak + privacy_policy: + title: Adatvédelmi irányelvek reactions: errors: limit_reached: A különböző reakciók száma elérte a határértéket diff --git a/config/locales/id.yml b/config/locales/id.yml index 83f3da5d79..7501c612a1 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -828,12 +828,8 @@ id: new_trends: body: 'Item berikut harus ditinjau sebelum ditampilkan secara publik:' new_trending_links: - no_approved_links: Saat ini tidak ada tautan tren yang disetujui. - requirements: 'Kandidat yang ada di sini bisa saja melewati peringkat #%{rank} tautan tren yang disetujui, yang kini "%{lowest_link_title}" memiliki nilai %{lowest_link_score}.' title: Tautan sedang tren new_trending_statuses: - no_approved_statuses: Tidak ada kiriman sedang tren yang disetujui. - requirements: 'Kandidat yang ada di sini bisa saja melewati peringkat #%{rank} kiriman tren yang disetujui, yang kini %{lowest_status_url} memiliki nilai %{lowest_status_score}.' title: Kiriman yang sedang tren new_trending_tags: no_approved_tags: Saat ini tidak ada tagar tren yang disetujui. diff --git a/config/locales/io.yml b/config/locales/io.yml index bbb41c4c74..03c36c4291 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -939,12 +939,8 @@ io: new_trends: body: 'Ca kozi bezonas kontrol ante ol povas montresar publike:' new_trending_links: - no_approved_links: Nun no existas aprobita tendencoza ligili. - requirements: 'Irga ca probanti povas ecesar la #%{rank} aprobita tendencoligilo, quale nun esas %{lowest_link_title} kun punto %{lowest_link_score}.' title: Tendencoza ligili new_trending_statuses: - no_approved_statuses: Nun ne existas aprobita tendencoza posti. - requirements: 'Irga ca probanti povas ecesar la #%{rank} aprobita tendencoligilo, quale nun esas %{lowest_status_url} kun punto %{lowest_status_score}.' title: Tendencoza posti new_trending_tags: no_approved_tags: Nun ne existas aprobita tendencoza hashtagi. diff --git a/config/locales/is.yml b/config/locales/is.yml index 3846d59241..724a641507 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -939,12 +939,8 @@ is: new_trends: body: 'Eftirfarandi atriði þarfnast yfirferðar áður en hægt er að birta þau opinberlega:' new_trending_links: - no_approved_links: Það eru í augnablikinu engir samþykktir vinsælir tenglar. - requirements: 'Hver af þessum tillögum gætu farið yfir samþykkta vinsæla tengilinn númer #%{rank}, sem í augnablikinu er "%{lowest_link_title}" með %{lowest_link_score} stig.' title: Vinsælir tenglar new_trending_statuses: - no_approved_statuses: Það eru í augnablikinu engar samþykktar vinsælar færslur. - requirements: 'Hver af þessum tillögum gætu farið yfir samþykktu vinsælu færsluna númer #%{rank}, sem í augnablikinu er %{lowest_status_url} með %{lowest_status_score} stig' title: Vinsælar færslur new_trending_tags: no_approved_tags: Það eru í augnablikinu engin samþykkt vinsæl myllumerki. diff --git a/config/locales/it.yml b/config/locales/it.yml index 1cd7160fe7..42c5ede2a9 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -939,12 +939,8 @@ it: new_trends: body: 'I seguenti elementi necessitano di un controllo prima che possano essere visualizzati pubblicamente:' new_trending_links: - no_approved_links: Attualmente non ci sono link in tendenza approvati. - requirements: 'Ognuno di questi candidati potrebbe superare il #%{rank} link di tendenza approvato, che è attualmente "%{lowest_link_title}" con un punteggio di %{lowest_link_score}.' title: Link di tendenza new_trending_statuses: - no_approved_statuses: Attualmente non ci sono post di tendenza approvati. - requirements: 'Ognuno di questi candidati potrebbe superare il #%{rank} post di tendenza approvato, che è attualmente "%{lowest_status_url}" con un punteggio di %{lowest_status_score}.' title: Post di tendenza new_trending_tags: no_approved_tags: Attualmente non ci sono hashtag di tendenza approvati. @@ -1406,6 +1402,8 @@ it: other: Altro posting_defaults: Predefinite di pubblicazione public_timelines: Timeline pubbliche + privacy_policy: + title: Politica sulla privacy reactions: errors: limit_reached: Raggiunto il limite di reazioni diverse diff --git a/config/locales/ja.yml b/config/locales/ja.yml index aa9b098002..a8ec42890a 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -885,10 +885,8 @@ ja: new_trends: body: 以下の項目は、公開する前に審査が必要です。 new_trending_links: - no_approved_links: 承認されたトレンドリンクはありません。 title: トレンドリンク new_trending_statuses: - no_approved_statuses: 承認されたトレンド投稿はありません。 title: トレンド投稿 new_trending_tags: no_approved_tags: 承認されたトレンドハッシュタグはありません。 diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 7cd8f7f648..8436841690 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -921,12 +921,8 @@ ko: new_trends: body: '아래에 있는 항목들은 공개적으로 보여지기 전에 검토를 거쳐야 합니다:' new_trending_links: - no_approved_links: 현재 승인된 유행 중인 링크가 없습니다. - requirements: '이 후보들 중 어떤 것이라도 #%{rank}위의 승인된 유행 중인 링크를 앞지를 수 있으며, 이것은 현재 "%{lowest_link_title}"이고 %{lowest_link_score}점을 기록하고 있습니다.' title: 유행하는 링크 new_trending_statuses: - no_approved_statuses: 현재 승인된 유행 중인 게시물이 없습니다. - requirements: '이 후보들 중 어떤 것이라도 #%{rank}위의 승인된 유행 중인 게시물을 앞지를 수 있으며, 이것은 현재 %{lowest_status_url}이고 %{lowest_status_score}점을 기록하고 있습니다.' title: 유행하는 게시물 new_trending_tags: no_approved_tags: 현재 승인된 유행 중인 해시태그가 없습니다. diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 5fae607ac7..cea5033bb6 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -941,12 +941,8 @@ ku: new_trends: body: 'Tiştên jêrîn berî ku ew bi gelemperî werin xuyakirin divê werin nirxandin:' new_trending_links: - no_approved_links: Niha tu girêdanên rojeva pejirandî tune ne. - requirements: 'Yek ji namzedên li jêr dikare ji #%{rank} girêdana diyarkirî ya pejirandî derbas bibe, niha ku "%{lowest_link_title}" bi %{lowest_link_score} puan e.' title: Girêdanên rojevê new_trending_statuses: - no_approved_statuses: Niha tu şandiyên rojeva pejirandî tune ne. - requirements: 'Yek ji namzedên li jêr dikare ji #%{rank} şandiyaa diyarkirî ya pejirandî derbas bibe, niha ku %{lowest_status_url} bi %{lowest_status_score} puan e.' title: Şandiyên rojevê new_trending_tags: no_approved_tags: Niha hashtagên rojevê pejirandî tune ne. @@ -1406,6 +1402,8 @@ ku: other: Yên din posting_defaults: Berdestên şandiyê public_timelines: Demnameya gelemperî + privacy_policy: + title: Politîka taybetiyê reactions: errors: limit_reached: Sînorê reaksiyonên cihêrengî gihîşte asta dawî diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 33a4c6290f..632ad0e840 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -959,12 +959,8 @@ lv: new_trends: body: 'Tālāk norādītie vienumi ir jāpārskata, lai tos varētu parādīt publiski:' new_trending_links: - no_approved_links: Pašlaik nav apstiprinātu tendenču saišu. - requirements: 'Jebkurš no šiem kandidātiem varētu pārspēt #%{rank} apstiprināto populāro saiti, kas pašlaik ir "%{lowest_link_title}" ar rezultātu %{lowest_link_score}.' title: Populārākās saites new_trending_statuses: - no_approved_statuses: Pašlaik nav apstiprinātu tendenču saišu. - requirements: 'Jebkurš no šiem kandidātiem varētu pārspēt #%{rank} apstiprināto populāro ziņu, kas pašlaik ir %{lowest_status_url} ar rezultātu %{lowest_status_score}.' title: Populārākās ziņas new_trending_tags: no_approved_tags: Pašlaik nav apstiprinātu tendenču tēmturu. @@ -1432,6 +1428,8 @@ lv: other: Citi posting_defaults: Publicēšanas noklusējuma iestatījumi public_timelines: Publiskās ziņu lentas + privacy_policy: + title: Privātuma Politika reactions: errors: limit_reached: Sasniegts dažādu reakciju limits diff --git a/config/locales/nl.yml b/config/locales/nl.yml index fbfbdbcba2..f5bd4acc38 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -78,7 +78,7 @@ nl: accounts: add_email_domain_block: E-maildomein blokkeren approve: Goedkeuren - approved_msg: Het goedkeuren van het registratieverzoek van %{username} is geslaagd + approved_msg: Het goedkeuren van het account van %{username} is geslaagd are_you_sure: Weet je het zeker? avatar: Avatar by_domain: Domein @@ -224,6 +224,7 @@ nl: create_email_domain_block: E-maildomeinblokkade aanmaken create_ip_block: IP-regel aanmaken create_unavailable_domain: Niet beschikbaar domein aanmaken + create_user_role: Rol aanmaken demote_user: Gebruiker degraderen destroy_announcement: Mededeling verwijderen destroy_canonical_email_block: E-mailblokkade verwijderen @@ -235,6 +236,7 @@ nl: destroy_ip_block: IP-regel verwijderen destroy_status: Toot verwijderen destroy_unavailable_domain: Niet beschikbaar domein verwijderen + destroy_user_role: Rol permanent verwijderen disable_2fa_user: Tweestapsverificatie uitschakelen disable_custom_emoji: Lokale emojij uitschakelen disable_user: Gebruiker uitschakelen @@ -261,10 +263,13 @@ nl: update_domain_block: Domeinblokkade bijwerken update_ip_block: IP-regel bijwerken update_status: Bericht bijwerken + update_user_role: Rol bijwerken actions: approve_appeal_html: "%{name} heeft het bezwaar tegen de moderatie-actie van %{target} goedgekeurd" + approve_user_html: "%{name} heeft het account van %{target} goedgekeurd" assigned_to_self_report_html: "%{name} heeft rapportage %{target} aan zichzelf toegewezen" change_email_user_html: "%{name} veranderde het e-mailadres van gebruiker %{target}" + change_role_user_html: "%{name} wijzigde de rol van %{target}" confirm_user_html: E-mailadres van gebruiker %{target} is door %{name} bevestigd create_account_warning_html: "%{name} verzond een waarschuwing naar %{target}" create_announcement_html: "%{name} heeft de nieuwe mededeling %{target} aangemaakt" @@ -275,15 +280,19 @@ nl: create_email_domain_block_html: "%{name} heeft het e-maildomein %{target} geblokkeerd" create_ip_block_html: "%{name} maakte regel aan voor IP %{target}" create_unavailable_domain_html: "%{name} heeft de bezorging voor domein %{target} beëindigd" + create_user_role_html: "%{name} maakte de rol %{target} aan" demote_user_html: Gebruiker %{target} is door %{name} gedegradeerd destroy_announcement_html: "%{name} heeft de mededeling %{target} verwijderd" destroy_canonical_email_block_html: "%{name} deblokkeerde e-mail met de hash %{target}" + destroy_custom_emoji_html: "%{name} verwijderde de emoji %{target}" destroy_domain_allow_html: "%{name} heeft de federatie met het domein %{target} afgekeurd" destroy_domain_block_html: Domein %{target} is door %{name} gedeblokkeerd destroy_email_domain_block_html: "%{name} heeft het e-maildomein %{target} gedeblokkeerd" + destroy_instance_html: "%{name} verwijderde het domein %{target} volledig" destroy_ip_block_html: "%{name} verwijderde regel voor IP %{target}" destroy_status_html: Bericht van %{target} is door %{name} verwijderd destroy_unavailable_domain_html: "%{name} heeft de bezorging voor domein %{target} hervat" + destroy_user_role_html: "%{name} verwijderde de rol %{target}" disable_2fa_user_html: De vereiste tweestapsverificatie voor %{target} is door %{name} uitgeschakeld disable_custom_emoji_html: Emoji %{target} is door %{name} uitgeschakeld disable_user_html: Inloggen voor %{target} is door %{name} uitgeschakeld @@ -309,6 +318,7 @@ nl: update_domain_block_html: "%{name} heeft de domeinblokkade bijgewerkt voor %{target}" update_ip_block_html: "%{name} wijzigde de IP-regel voor %{target}" update_status_html: "%{name} heeft de berichten van %{target} bijgewerkt" + update_user_role_html: "%{name} wijzigde de rol %{target}" empty: Geen logs gevonden. filter_by_action: Op actie filteren filter_by_user: Op gebruiker filteren @@ -347,6 +357,7 @@ nl: enable: Inschakelen enabled: Ingeschakeld enabled_msg: Inschakelen van deze emoji geslaagd + image_hint: PNG of GIF niet groter dan %{size} list: In lijst listed: Weergegeven new: @@ -544,6 +555,7 @@ nl: report_notes: created_msg: Opmerking bij rapportage succesvol aangemaakt! destroyed_msg: Opmerking bij rapportage succesvol verwijderd! + today_at: Vandaag om %{time} reports: account: notes: @@ -563,7 +575,9 @@ nl: forwarded: Doorgestuurd forwarded_to: Doorgestuurd naar %{domain} mark_as_resolved: Markeer als opgelost + mark_as_sensitive: Als gevoelig markeren mark_as_unresolved: Markeer als onopgelost + no_one_assigned: Niemand notes: create: Opmerking toevoegen create_and_resolve: Oplossen met opmerking @@ -828,6 +842,7 @@ nl: warning: Wees voorzichtig met deze gegevens. Deel het nooit met iemand anders! your_token: Jouw toegangscode auth: + apply_for_account: Zet jezelf op de wachtlijst change_password: Wachtwoord delete_account: Account verwijderen delete_account_html: Wanneer je jouw account graag wilt verwijderen, kun je dat hier doen. We vragen jou daar om een bevestiging. @@ -847,6 +862,7 @@ nl: migrate_account: Naar een ander account verhuizen migrate_account_html: Wanneer je dit account naar een ander account wilt doorverwijzen, kun je dit hier instellen. or_log_in_with: Of inloggen met + privacy_policy_agreement_html: Ik heb het privacybeleid gelezen en ga daarmee akkoord providers: cas: CAS saml: SAML @@ -854,12 +870,18 @@ nl: registration_closed: "%{instance} laat geen nieuwe gebruikers toe" resend_confirmation: Verstuur de bevestigingsinstructies nogmaals reset_password: Wachtwoord opnieuw instellen + rules: + preamble: Deze zijn vastgesteld en worden gehandhaafd door de moderatoren van %{domain}. + title: Enkele basisregels. security: Beveiliging set_new_password: Nieuw wachtwoord instellen setup: email_below_hint_html: Wanneer onderstaand e-mailadres niet klopt, kun je dat hier veranderen. Je ontvangt dan hierna een bevestigingsmail. email_settings_hint_html: De bevestigingsmail is verzonden naar %{email}. Wanneer dat e-mailadres niet klopt, kun je dat veranderen in je accountinstellingen. title: Instellen + sign_up: + preamble: Je kunt met een Mastodon-account iedereen in het netwerk volgen, ongeacht waar deze persoon een account heeft. + title: Laten we je account op %{domain} instellen. status: account_status: Accountstatus confirming: Aan het wachten totdat de e-mail is bevestigd. @@ -1221,6 +1243,8 @@ nl: other: Overig posting_defaults: Standaardinstellingen voor posten public_timelines: Openbare tijdlijnen + privacy_policy: + title: Privacybeleid reactions: errors: limit_reached: Limiet van verschillende emoji-reacties bereikt @@ -1379,6 +1403,12 @@ nl: keep_direct: Directe berichten behouden keep_media: Berichten met mediabijlagen behouden keep_pinned: Vastgemaakte berichten behouden + keep_polls: Polls behouden + keep_polls_hint: Geen enkele poll van jou wordt verwijderd + keep_self_bookmark: Bladwijzers behouden + keep_self_bookmark_hint: Eigen berichten die je aan je bladwijzers hebt toegevoegd worden niet verwijderd + keep_self_fav: Favorieten behouden + keep_self_fav_hint: Eigen berichten die je als favoriet hebt gemarkeerd worden niet verwijderd min_age: '1209600': 2 weken '15778476': 6 maanden @@ -1388,6 +1418,8 @@ nl: '604800': 1 week '63113904': 2 jaar '7889238': 3 maanden + min_age_label: Te verwijderen na + min_favs: Berichten die minstens zoveel keer als favoriet zijn gemarkeerd behouden stream_entries: pinned: Vastgemaakt bericht reblogged: boostte @@ -1460,8 +1492,10 @@ nl: suspend: Account opgeschort welcome: edit_profile_action: Profiel instellen + edit_profile_step: Je kunt jouw profiel aanpassen door een profielafbeelding (avatar) te uploaden, jouw weergavenaam aan te passen en meer. Je kunt het handmatig goedkeuren van volgers instellen. explanation: Hier zijn enkele tips om je op weg te helpen final_action: Begin berichten te plaatsen + final_step: 'Begin berichten te plaatsen! Zelfs zonder volgers kunnen jouw openbare berichten door anderen bekeken worden, bijvoorbeeld op de lokale tijdlijn en onder hashtags. Je kunt jezelf voorstellen met het gebruik van de hashtag #introductions.' full_handle: Jouw volledige Mastodonadres full_handle_hint: Dit geef je aan jouw vrienden, zodat ze jouw berichten kunnen sturen of (vanaf een andere Mastodonserver) kunnen volgen. subject: Welkom op Mastodon diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 72d7a440c6..52516740d3 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -289,6 +289,7 @@ pl: confirm_user_html: "%{name} potwierdził(a) adres e-mail użytkownika %{target}" create_account_warning_html: "%{name} wysłał(a) ostrzeżenie do %{target}" create_announcement_html: "%{name} utworzył(a) nowe ogłoszenie %{target}" + create_canonical_email_block_html: "%{name} zablokował e-mail z hasłem %{target}" create_custom_emoji_html: "%{name} dodał(a) nowe emoji %{target}" create_domain_allow_html: "%{name} dodał(a) na białą listę domenę %{target}" create_domain_block_html: "%{name} zablokował(a) domenę %{target}" @@ -298,6 +299,7 @@ pl: create_user_role_html: "%{name} utworzył rolę %{target}" demote_user_html: "%{name} zdegradował(a) użytkownika %{target}" destroy_announcement_html: "%{name} usunął(-ęła) ogłoszenie %{target}" + destroy_canonical_email_block_html: "%{name} odblokował(a) e-mail z hasłem %{target}" destroy_custom_emoji_html: "%{name} usunął emoji %{target}" destroy_domain_allow_html: "%{name} usunął(-ęła) domenę %{target} z białej listy" destroy_domain_block_html: "%{name} odblokował(a) domenę %{target}" @@ -333,6 +335,7 @@ pl: update_announcement_html: "%{name} zaktualizował(a) ogłoszenie %{target}" update_custom_emoji_html: "%{name} zaktualizował(a) emoji %{target}" update_domain_block_html: "%{name} zaktualizował(a) blokadę domeny dla %{target}" + update_ip_block_html: "%{name} stworzył(a) regułę dla IP %{target}" update_status_html: "%{name} zaktualizował(a) wpis użytkownika %{target}" update_user_role_html: "%{name} zmienił rolę %{target}" empty: Nie znaleziono aktywności w dzienniku. @@ -976,12 +979,8 @@ pl: new_trends: body: 'Następujące elementy potrzebują recenzji zanim będą mogły być wyświetlane publicznie:' new_trending_links: - no_approved_links: Obecnie nie ma zatwierdzonych linków trendów. - requirements: 'Każdy z tych kandydatów może przekroczyć #%{rank} zatwierdzonych popularnych linków, który wynosi obecnie "%{lowest_link_title}" z wynikiem %{lowest_link_score}.' title: Popularne linki new_trending_statuses: - no_approved_statuses: Obecnie nie ma zatwierdzonych popularnych linków. - requirements: 'Każdy z tych kandydatów może przekroczyć #%{rank} zatwierdzonych popularnych teraz wpisów, który wynosi obecnie %{lowest_status_url} z wynikiem %{lowest_status_score}.' title: Popularne teraz new_trending_tags: no_approved_tags: Obecnie nie ma żadnych zatwierdzonych popularnych hasztagów. @@ -1061,6 +1060,7 @@ pl: title: Konfiguracja sign_up: preamble: Z kontem na tym serwerze Mastodon będziesz mógł obserwować każdą inną osobę w sieci, niezależnie od miejsca przechowywania ich konta. + title: Skonfigurujmy Twoje konto na %{domain}. status: account_status: Stan konta confirming: Oczekiwanie na potwierdzenie adresu e-mail. @@ -1256,6 +1256,11 @@ pl: many: "%{count} elementów na tej stronie jest wybrane." one: "%{count} element na tej stronie jest wybrany." other: "%{count} elementów na tej stronie jest wybrane." + all_matching_items_selected_html: + few: Wszystkie %{count} elementy pasujące do Twojego wyszukiwania zostały wybrane. + many: Wszystkie %{count} elementy pasujące do Twojego wyszukiwania zostały wybrane. + one: "%{count} element pasujący do Twojego wyszukiwania został wybrany." + other: Wszystkie %{count} elementy pasujące do Twojego wyszukiwania zostały wybrane. changes_saved_msg: Ustawienia zapisane! copy: Kopiuj delete: Usuń @@ -1263,6 +1268,11 @@ pl: none: Żaden order_by: Uporządkuj według save_changes: Zapisz zmiany + select_all_matching_items: + few: Zaznacz wszystkie %{count} elementy pasujące do wyszukiwania. + many: Zaznacz wszystkie %{count} elementy pasujące do wyszukiwania. + one: Zaznacz %{count} element pasujący do wyszukiwania. + other: Zaznacz wszystkie %{count} elementy pasujące do wyszukiwania. today: dzisiaj validation_errors: few: Coś jest wciąż nie tak! Przejrzyj %{count} poniższe błędy @@ -1446,6 +1456,8 @@ pl: other: Pozostałe posting_defaults: Domyślne ustawienia wpisów public_timelines: Publiczne osie czasu + privacy_policy: + title: Polityka prywatności reactions: errors: limit_reached: Przekroczono limit różnych reakcji diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index fc9d25c99e..3b2af4e56a 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -939,12 +939,8 @@ pt-PT: new_trends: body: 'Os seguintes itens precisam ser revistos antes de poderem ser exibidos publicamente:' new_trending_links: - no_approved_links: Não existem, atualmente, links aprovados em destaque. - requirements: 'Qualquer um destes candidatos pode ultrapassar o #%{rank} link aprovado em destaque, que é atualmente "%{lowest_link_title}" com uma pontuação de %{lowest_link_score}.' title: Links em destaque new_trending_statuses: - no_approved_statuses: Não existem, atualmente, publicações aprovadas em destaque. - requirements: 'Qualquer um destes candidatos pode ultrapassar a #%{rank} publicação aprovada em destaque, que é atualmente %{lowest_status_url} com uma pontuação de %{lowest_status_score}.' title: Publicações em destaque new_trending_tags: no_approved_tags: Não existem, atualmente, hashtags aprovadas em destaque. diff --git a/config/locales/ru.yml b/config/locales/ru.yml index c755743d09..330e586a49 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1362,6 +1362,8 @@ ru: other: Остальное posting_defaults: Настройки отправки по умолчанию public_timelines: Публичные ленты + privacy_policy: + title: Политика конфиденциальности reactions: errors: limit_reached: Достигнут лимит разных реакций diff --git a/config/locales/si.yml b/config/locales/si.yml index 021849fea1..ae80323f39 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -846,12 +846,8 @@ si: new_trends: body: 'පහත අයිතම ප්‍රසිද්ධියේ ප්‍රදර්ශනය කිරීමට පෙර සමාලෝචනයක් අවශ්‍ය වේ:' new_trending_links: - no_approved_links: දැනට අනුමත නැඹුරු සබැඳි නොමැත. - requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්‍රවණතා සබැඳිය ඉක්මවා යා හැකි අතර, එය දැනට ලකුණු %{lowest_link_score}ක් සමඟින් "%{lowest_link_title}" වේ.' title: නැඟී එන සබැඳි new_trending_statuses: - no_approved_statuses: දැනට අනුමත ප්‍රවණතා පළ කිරීම් නොමැත. - requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්‍රවණතා පළ කිරීම අභිබවා යා හැකි අතර, එය දැනට ලකුණු %{lowest_status_score}ක් සමඟින් %{lowest_status_url} වේ.' title: ප්‍රවණතා පළ කිරීම් new_trending_tags: no_approved_tags: දැනට අනුමත ප්‍රවණතා හැෂ් ටැග් නොමැත. diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index b41e6404b3..7c5400f94e 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -10,7 +10,7 @@ ast: irreversible: Los barritos peñeraos van desapaecer de mou irreversible, magar que se desanicie la peñera dempués password: Usa 8 caráuteres polo menos setting_hide_network: La xente que sigas y teas siguiendo nun va amosase nel perfil - setting_show_application: L'aplicación qu'uses pa barritar va amosase na vista detallada d'ellos + setting_show_application: L'aplicación qu'uses pa espublizar apaez na vista detallada de los tos artículos username: El nome d'usuariu va ser únicu en %{domain} featured_tag: name: 'Quiciabes quieras usar unu d''estos:' diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 5e8ef67b4c..b4785c54b3 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -92,9 +92,9 @@ ja: user: chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります user_role: - highlighted: これにより、役割が公開されます。 - name: 役割をバッジ表示する際の表示名 - permissions_as_keys: この役割を持つユーザーは次の機能にアクセスできます + highlighted: これによりロールが公開されます。 + name: ロールのバッジを表示する際の表示名 + permissions_as_keys: このロールを持つユーザーは次の機能にアクセスできます labels: account: fields: @@ -225,10 +225,10 @@ ja: trendable: トレンドへの表示を許可する usable: 投稿への使用を許可する user: - role: 役割 + role: ロール user_role: color: バッジの色 - highlighted: プロフィールに役割のバッジを表示する + highlighted: プロフィールにロールのバッジを表示する name: 名前 permissions_as_keys: 権限 position: 優先度 @@ -236,6 +236,7 @@ ja: events: 有効なイベント url: エンドポイントURL 'no': いいえ + not_recommended: 非推奨 recommended: おすすめ required: mark: "*" diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 20bb03cd48..d88e345834 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -7,12 +7,12 @@ tr: account_migration: acct: Yeni hesabınızı kullanıcıadı@alanadını şeklinde belirtin account_warning_preset: - text: URL'ler, etiketler ve bahsedenler gibi toot sözdizimini kullanabilirsiniz + text: URL'ler, etiketler ve bahsedenler gibi gönderi sözdizimini kullanabilirsiniz title: İsteğe bağlı. Alıcıya görünmez admin_account_action: - include_statuses: Kullanıcı hangi tootların denetleme eylemi ya da uyarısına neden olduğunu görecektir + include_statuses: Kullanıcı hangi gönderilerin denetleme eylemi veya uyarısına neden olduğunu görecektir send_email_notification: Kullanıcı, hesabına ne olduğuna dair bir açıklama alacak - text_html: İsteğe bağlı. Toot sözdizimleri kullanabilirsiniz. Zamandan kazanmak için uyarı ön-ayarları ekleyebilirsiniz + text_html: İsteğe bağlı. Gönderi sözdizimini kullanabilirsiniz. Zamandan kazanmak için uyarı ön-ayarları ekleyebilirsiniz type_html: "%{acct} ile ne yapılacağını seçin" types: disable: Kullanıcının hesabını kullanmasını engelle ama içeriklerini silme veya gizleme. @@ -26,7 +26,7 @@ tr: ends_at: İsteğe bağlı. Duyuru, bu tarihte otomatik olarak yayından kaldırılacak scheduled_at: Duyuruyu hemen yayınlamak için boş bırakın starts_at: İsteğe bağlı. Duyurunuzun belirli bir zaman aralığına bağlı olması durumunda - text: Toot söz dizimini kullanabilirsiniz. Lütfen duyurunun kullanıcının ekranında yer alacağı alanı göz önünde bulundurun + text: Gönderi sözdizimini kullanabilirsiniz. Lütfen duyurunun kullanıcının ekranında yer alacağı alanı göz önünde bulundurun appeal: text: Bir eyleme yalnızca bir kere itiraz edebilirsiniz defaults: @@ -42,13 +42,13 @@ tr: fields: Profilinizde tablo olarak görüntülenen en fazla 4 ögeye sahip olabilirsiniz header: PNG, GIF ya da JPG. En fazla %{size}. %{dimensions}px boyutuna küçültülecek inbox_url: Kullanmak istediğiniz aktarıcının ön sayfasından URL'yi kopyalayın - irreversible: Filtre uygulanmış tootlar, filtre daha sonra çıkartılsa bile geri dönüşümsüz biçimde kaybolur + irreversible: Filtrelenmiş gönderiler, filtre daha sonra kaldırılsa bile, geri dönüşümsüz biçimde kaybolur locale: Kullanıcı arayüzünün dili, e-postalar ve push bildirimleri locked: Takipçilerinizi manuel olarak kabul etmenizi ve gönderilerinizi varsayılan olarak sadece takipçilerinizin göreceği şekilde paylaşmanızı sağlar. password: En az 8 karakter kullanın - phrase: Metnin büyük/küçük harf durumundan veya tootun içerik uyarısından bağımsız olarak eşleştirilecek + phrase: Metnin büyük/küçük harf durumundan veya gönderinin içerik uyarısından bağımsız olarak eşleştirilecek scopes: Uygulamanın erişmesine izin verilen API'ler. Üst seviye bir kapsam seçtiyseniz, bireysel kapsam seçmenize gerek yoktur. - setting_aggregate_reblogs: Yakın zamanda boostlanmış tootlar için yeni boostları göstermeyin (yalnızca yeni alınan boostları etkiler) + setting_aggregate_reblogs: Yakın zamanda teşvik edilmiş gönderiler için yeni teşvikleri göstermeyin (yalnızca yeni alınan teşvikleri etkiler) setting_always_send_emails: Normalde, Mastodon'u aktif olarak kullanırken e-posta bildirimleri gönderilmeyecektir setting_default_sensitive: Hassas medya varsayılan olarak gizlidir ve bir tıklama ile gösterilebilir setting_display_media_default: Hassas olarak işaretlenmiş medyayı gizle @@ -56,7 +56,7 @@ tr: setting_display_media_show_all: Medyayı her zaman göster setting_hide_network: Takip ettiğiniz ve sizi takip eden kişiler profilinizde gösterilmeyecek setting_noindex: Herkese açık profilinizi ve durum sayfalarınızı etkiler - setting_show_application: Tootlamak için kullandığınız uygulama, tootlarınızın detaylı görünümünde gösterilecektir + setting_show_application: Gönderi gönderimi için kullandığınız uygulama, gönderilerinizin ayrıntılı görünümünde gösterilecektir setting_use_blurhash: Gradyenler gizli görsellerin renklerine dayanır, ancak detayları gizler setting_use_pending_items: Akışı otomatik olarak kaydırmak yerine, zaman çizelgesi güncellemelerini tek bir tıklamayla gizleyin username: Kullanıcı adınız %{domain} alanında benzersiz olacak @@ -96,7 +96,7 @@ tr: tag: name: Harflerin, örneğin daha okunabilir yapmak için, sadece büyük/küçük harf durumlarını değiştirebilirsiniz user: - chosen_languages: İşaretlendiğinde, yalnızca seçilen dillerdeki tootlar genel zaman çizelgelerinde görüntülenir + chosen_languages: İşaretlendiğinde, yalnızca seçilen dillerdeki gönderiler genel zaman çizelgelerinde görüntülenir role: Rol, kullanıcıların sahip olduğu izinleri denetler user_role: color: Arayüz boyunca rol için kullanılacak olan renk, hex biçiminde RGB @@ -120,7 +120,7 @@ tr: text: Ön ayarlı metin title: Başlık admin_account_action: - include_statuses: Bildirilen tootları e-postaya dahil et + include_statuses: Bildirilen gönderileri e-postaya dahil et send_email_notification: Kullanıcıyı e-posta ile bilgilendir text: Özel uyarı type: Eylem @@ -171,21 +171,21 @@ tr: setting_always_send_emails: Her zaman e-posta bildirimleri gönder setting_auto_play_gif: Hareketli GIF'leri otomatik oynat setting_boost_modal: Boostlamadan önce onay iletişim kutusu göster - setting_crop_images: Genişletilmemiş tootlardaki resimleri 16x9 olarak kırp + setting_crop_images: Genişletilmemiş gönderilerdeki resimleri 16x9 olarak kırp setting_default_language: Gönderi dili setting_default_privacy: Gönderi gizliliği setting_default_sensitive: Medyayı her zaman hassas olarak işaretle - setting_delete_modal: Bir tootu silmeden önce onay iletişim kutusu göster + setting_delete_modal: Bir gönderiyi silmeden önce onay iletişim kutusu göster setting_disable_swiping: Kaydırma hareketlerini devre dışı bırak setting_display_media: Medya görüntüleme setting_display_media_default: Varsayılan setting_display_media_hide_all: Tümünü gizle setting_display_media_show_all: Tümünü göster - setting_expand_spoilers: İçerik uyarılarıyla işaretli tootları her zaman genişlet + setting_expand_spoilers: İçerik uyarılarıyla işaretli gönderileri her zaman genişlet setting_hide_network: Sosyal grafiğini gizle setting_noindex: Arama motoru dizinine eklemeyi iptal et setting_reduce_motion: Animasyonlarda hareketi azalt - setting_show_application: Tootları göndermek için kullanılan uygulamayı belirt + setting_show_application: Gönderileri göndermek için kullanılan uygulamayı belirt setting_system_font_ui: Sistemin varsayılan yazı tipini kullan setting_theme: Site teması setting_trends: Bugünün gündemini göster @@ -240,7 +240,7 @@ tr: listable: Bu etiketin aramalarda ve profil dizininde görünmesine izin ver name: Etiket trendable: Bu etiketin gündem altında görünmesine izin ver - usable: Tootların bu etiketi kullanmasına izin ver + usable: Gönderilerin bu etiketi kullanmasına izin ver user: role: Rol user_role: diff --git a/config/locales/sl.yml b/config/locales/sl.yml index edf38feddc..efdda058c4 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -979,12 +979,8 @@ sl: new_trends: body: 'Naslednji elementi potrebujejo pregled, preden jih je možno javno prikazati:' new_trending_links: - no_approved_links: Trenutno ni odobrenih povezav v trendu. - requirements: Vsak od teh kandidatov bi lahko presegel odobreno povezavo v trendu št. %{rank}, ki je trenutno %{lowest_link_title} z rezultatom %{lowest_link_score}. title: Povezave v trendu new_trending_statuses: - no_approved_statuses: Trenutno ni odobrenih objav v trendu. - requirements: Vsak od teh kandidatov bi lahko presegel odobreno trendno objavo št. %{rank}, ki je trenutno %{lowest_status_url} z rezultatom %{lowest_status_score}. title: Trendne objave new_trending_tags: no_approved_tags: Trenutno ni odobrenih ključnikov v trendu. @@ -1025,6 +1021,7 @@ sl: warning: Bodite zelo previdni s temi podatki. Nikoli jih ne delite z nikomer! your_token: Vaš dostopni žeton auth: + apply_for_account: Vpišite se na čakalni seznam change_password: Geslo delete_account: Izbriši račun delete_account_html: Če želite izbrisati svoj račun, lahko nadaljujete tukaj. Prosili vas bomo za potrditev. @@ -1044,6 +1041,7 @@ sl: migrate_account: Premakni se na drug račun migrate_account_html: Če želite ta račun preusmeriti na drugega, ga lahko nastavite tukaj. or_log_in_with: Ali se prijavite z + privacy_policy_agreement_html: Prebral_a sem in se strinjam s pravilnikom o zasebnosti. providers: cas: CAS saml: SAML @@ -1051,12 +1049,18 @@ sl: registration_closed: "%{instance} ne sprejema novih članov" resend_confirmation: Ponovno pošlji navodila za potrditev reset_password: Ponastavi geslo + rules: + preamble: Slednje določajo in njihovo spoštovanje zagotavljajo moderatorji %{domain}. + title: Nekaj osnovnih pravil. security: Varnost set_new_password: Nastavi novo geslo setup: email_below_hint_html: Če spodnji e-poštni naslov ni pravilen, ga lahko spremenite tukaj in prejmete novo potrditveno e-pošto. email_settings_hint_html: Potrditvena e-pošta je bila poslana na %{email}. Če ta e-poštni naslov ni pravilen, ga lahko spremenite v nastavitvah računa. title: Nastavitev + sign_up: + preamble: Z računom na strežniku Mastodon boste lahko sledili vsem drugim v tem omrežju, ne glede na to, kje gostuje njihov račun. + title: Naj vas namestimo na %{domain}. status: account_status: Stanje računa confirming: Čakanje na potrditev e-pošte. @@ -1452,6 +1456,8 @@ sl: other: Ostalo posting_defaults: Privzete nastavitev objavljanja public_timelines: Javne časovnice + privacy_policy: + title: Pravilnik o zasebnosti reactions: errors: limit_reached: Dosežena omejitev različnih reakcij/odzivov @@ -1751,8 +1757,10 @@ sl: suspend: Račun je suspendiran welcome: edit_profile_action: Nastavitve profila + edit_profile_step: Profil lahko prilagodite tako, da naložite sliko profila, spremenite pojavno ime in drugo. Lahko izberete, da želite pregledati nove sledilce, preden jim dovolite sledenje. explanation: Tu je nekaj nasvetov za začetek final_action: Začnite objavljati + final_step: 'Začnite objavljati! Tudi brez sledilcev bodo vaše javne objave videli drugi, npr. na krajevni časovnici ali v ključnikih. Morda se želite predstaviti s ključnikom #introductions.' full_handle: Vaša polna ročica full_handle_hint: To bi povedali svojim prijateljem, da vam lahko pošljejo sporočila ali vam sledijo iz drugega strežnika. subject: Dobrodošli na Mastodon diff --git a/config/locales/sq.yml b/config/locales/sq.yml index d17ba6c873..03f0a14d43 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -935,11 +935,8 @@ sq: new_trends: body: 'Gjërat vijuese lypin një shqyrtim, përpara se të mund të shfaqen publikisht:' new_trending_links: - no_approved_links: Aktualisht s’ka lidhje në modë të miratuara. - requirements: 'Cilido prej këtyre kandidatëve mund të kalojë lidhjen e miratuar për në modë #%{rank}, që aktualisht është “%{lowest_link_title}” me pikë %{lowest_link_score}.' title: Lidhje në modë new_trending_statuses: - no_approved_statuses: Aktualisht s’ka postime në modë të miratuar. title: Postime në modë new_trending_tags: no_approved_tags: Aktualisht s’ka hashtag-ë në modë të miratuar. diff --git a/config/locales/sv.yml b/config/locales/sv.yml index a62990a5c6..fbce334bf6 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -942,6 +942,8 @@ sv: preferences: other: Annat public_timelines: Publika tidslinjer + privacy_policy: + title: Integritetspolicy reactions: errors: unrecognized_emoji: är inte en igenkänd emoji diff --git a/config/locales/th.yml b/config/locales/th.yml index 0016f2ffec..a7d7765c02 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -895,10 +895,8 @@ th: new_trends: body: 'รายการดังต่อไปนี้จำเป็นต้องมีการตรวจทานก่อนที่จะสามารถแสดงรายการเป็นสาธารณะ:' new_trending_links: - no_approved_links: ไม่มีลิงก์ที่กำลังนิยมที่ได้รับอนุมัติในปัจจุบัน title: ลิงก์ที่กำลังนิยม new_trending_statuses: - no_approved_statuses: ไม่มีโพสต์ที่กำลังนิยมที่ได้รับอนุมัติในปัจจุบัน title: โพสต์ที่กำลังนิยม new_trending_tags: no_approved_tags: ไม่มีแฮชแท็กที่กำลังนิยมที่ได้รับอนุมัติในปัจจุบัน diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 995fa1e303..5fdd8c1c5e 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -62,8 +62,8 @@ tr: posts: one: Gönderi other: Gönderiler - posts_tab_heading: Tootlar - posts_with_replies: Tootlar ve yanıtlar + posts_tab_heading: Gönderiler + posts_with_replies: Gönderiler ve yanıtlar roles: bot: Bot group: Grup @@ -568,11 +568,11 @@ tr: relays: add_new: Yeni aktarıcı ekle delete: Sil - description_html: "Federasyon aktarıcısı, kendisine abone olan ve yayın yapan sunucular arasında büyük miktarlarda herkese açık tootların değiş tokuşunu yapan aracı bir sunucudur. Küçük ve orta boyutlu sunucuların fediverse'ten içerik keşfetmesine yardımcı olurlar, aksi takdirde yerel kullanıcıların uzak sunuculardaki diğer kişileri manuel olarak takip etmeleri gerekecektir." + description_html: "Federasyon aktarıcısı, kendisine abone olan ve yayın yapan sunucular arasında büyük miktarlarda herkese açık gönderilerin değiş tokuşunu yapan aracı bir sunucudur. Küçük ve orta boyutlu sunucuların fediverse'ten içerik keşfetmesine yardımcı olurlar, aksi takdirde yerel kullanıcıların uzak sunuculardaki diğer kişileri manuel olarak takip etmeleri gerekecektir." disable: Devre dışı disabled: Devre dışı enable: Etkin - enable_hint: Etkinleştirildiğinde, sunucunuz bu aktarıcıdan gelecek tüm herkese açık tootlara abone olacak, ve kendisinin herkese açık tootlarını bu aktarıcıya göndermeye başlayacaktır. + enable_hint: Etkinleştirildiğinde, sunucunuz bu aktarıcıdan gelecek tüm herkese açık gönderilere abone olacak, ve kendisinin herkese açık gönderilerini bu aktarıcıya göndermeye başlayacaktır. enabled: Etkin inbox_url: Aktarıcı URL'si pending: Aktarıcının onaylaması için bekleniyor @@ -939,12 +939,8 @@ tr: new_trends: body: 'Aşağıdaki öğeler herkese açık olarak gösterilmeden önce gözden geçirilmelidir:' new_trending_links: - no_approved_links: Şu anda onaylanmış öne çıkan bağlantı yok. - requirements: 'Aşağıdaki adaylardan herhangi biri, şu anda %{lowest_link_score} skoruna sahip "%{lowest_link_title}" olan #%{rank} onaylanmış öne çıkan bağlantıyı geçebilir.' title: Öne çıkan bağlantılar new_trending_statuses: - no_approved_statuses: Şu anda onaylanmış öne çıkan gönderi yok. - requirements: 'Aşağıdaki adaylardan herhangi biri, şu anda %{lowest_status_score} skoruna sahip "%{lowest_status_url}" olan #%{rank} onaylanmış öne çıkan gönderiyi geçebilir.' title: Öne çıkan gönderiler new_trending_tags: no_approved_tags: Şu anda onaylanmış öne çıkan etiket yok. @@ -969,7 +965,7 @@ tr: guide_link: https://crowdin.com/project/mastodon guide_link_text: Herkes katkıda bulunabilir. sensitive_content: Hassas içerik - toot_layout: Toot yerleşimi + toot_layout: Gönderi düzeni application_mailer: notification_preferences: E-posta tercihlerini değiştir salutation: "%{name}," @@ -1336,7 +1332,7 @@ tr: favourite: body: "%{name} durumunu beğendi:" subject: "%{name} durumunu beğendi" - title: Yeni beğeni + title: Yeni Favori follow: body: "%{name} artık seni takip ediyor!" subject: "%{name} artık seni takip ediyor" @@ -1404,6 +1400,8 @@ tr: other: Diğer posting_defaults: Gönderi varsayılanları public_timelines: Genel zaman çizelgeleri + privacy_policy: + title: Gizlilik Politikası reactions: errors: limit_reached: Farklı reaksiyonların sınırına ulaşıldı @@ -1434,14 +1432,14 @@ tr: reason_html: "Bu adım neden gerekli?%{instance} kayıtlı olduğunuz sunucu olmayabilir, bu yüzden önce sizi kendi sunucunuza yönlendirmemiz gerekmektedir." remote_interaction: favourite: - proceed: Beğenmek için devam edin - prompt: 'Bu tootu beğenmek istiyorsunuz:' + proceed: Favorilere eklemek için devam edin + prompt: 'Bu gönderiyi favorilerinize eklemek istiyorsunuz:' reblog: proceed: Boostlamak için devam edin - prompt: 'Bu tootu boostlamak istiyorsunuz:' + prompt: 'Bu gönderiyi teşvik etmek istiyorsunuz:' reply: proceed: Yanıtlamak için devam edin - prompt: 'Bu tootu yanıtlamak istiyorsunuz:' + prompt: 'Bu gönderiyi yanıtlamak istiyorsunuz:' reports: errors: invalid_rules: geçerli kurallara işaret etmez @@ -1451,8 +1449,8 @@ tr: account: "@%{acct} hesabından herkese açık gönderiler" tag: "#%{hashtag} etiketli herkese açık gönderiler" scheduled_statuses: - over_daily_limit: O gün için %{limit} zamanlanmış toot sınırını aştınız - over_total_limit: "%{limit} zamanlanmış toot sınırını aştınız" + over_daily_limit: Bugün için %{limit} zamanlanmış gönderi sınırını aştınız + over_total_limit: "%{limit} zamanlanmış gönderi sınırını aştınız" too_soon: Programlanan tarih bugünden ileri bir tarihte olmalıdır sessions: activity: Son etkinlik @@ -1544,8 +1542,8 @@ tr: over_character_limit: "%{max} karakter limiti aşıldı" pin_errors: direct: Sadece değinilen kullanıcıların görebileceği gönderiler üstte tutulamaz - limit: Hali hazırda maksimum sayıda tootu sabitlediniz - ownership: Başkasının tootu sabitlenemez + limit: Halihazırda maksimum sayıda gönderi sabitlediniz + ownership: Başkasının gönderisi sabitlenemez reblog: Bir boost sabitlenemez poll: total_people: @@ -1574,7 +1572,7 @@ tr: enabled_hint: Belirli bir zaman eşiğine ulaşan eski gönderilerinizi, aşağıdaki istisnalara uymadıkları sürece otomatik olarak siler exceptions: İstisnalar explanation: Gönderi silme maliyetli bir iş olduğu için, sunucu çok yoğun olmadığında yavaş yavaş yapılmaktadır. Bu nedenle, gönderilerinizin zaman eşiği geldiğinde silinmesi belirli bir süre alabilir. - ignore_favs: Beğenileri yoksay + ignore_favs: Favorileri yoksay ignore_reblogs: Teşvikleri yoksay interaction_exceptions: Etkileşimlere dayalı istisnalar interaction_exceptions_explanation: Bir kere değerlendirmeye alındıktan sonra, belirtilen beğeni veya teşvik eşiğinin altında düşünce gönderilerin silinmesinin bir güvencesi yok. @@ -1605,7 +1603,7 @@ tr: min_reblogs: Şundan daha fazla teşvik edilen gönderileri sakla min_reblogs_hint: Bu belirtilenden daha fazla teşvik edilen gönderilerinizin herhangi birini silmez. Teşvik sayısından bağımsız olarak gönderilerin silinmesi için burayı boş bırakın stream_entries: - pinned: Sabitlenmiş toot + pinned: Sabitlenmiş gönderi reblogged: boostladı sensitive_content: Hassas içerik strikes: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 956e243661..a8331b8c51 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -972,12 +972,8 @@ uk: new_trends: body: 'Ці елементи потребують розгляду перед оприлюдненням:' new_trending_links: - no_approved_links: На цей час немає схвалених популярних посилань. - requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного посилання, яке зараз на «%{lowest_link_title}» з рейтингом %{lowest_link_score}.' title: Популярні посилання new_trending_statuses: - no_approved_statuses: На цей час немає схвалених популярних дописів. - requirements: 'Кожен з цих кандидатів може перевершити #%{rank} затвердженого популярного допису, який зараз на %{lowest_status_url} з рейтингом %{lowest_status_score}.' title: Популярні дописи new_trending_tags: no_approved_tags: На цей час немає схвалених популярних хештегів. @@ -1453,6 +1449,8 @@ uk: other: Інше posting_defaults: Промовчання для постів public_timelines: Глобальні стрічки + privacy_policy: + title: Політика конфіденційності reactions: errors: limit_reached: Досягнуто обмеження різних реакцій diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 111992eef2..91e8d8dd0a 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -917,12 +917,8 @@ vi: new_trends: body: 'Các mục sau đây cần được xem xét trước khi chúng hiển thị công khai:' new_trending_links: - no_approved_links: Hiện tại không có liên kết xu hướng nào được duyệt. - requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt liên kết xu hướng, với hiện tại là "%{lowest_link_title}" với điểm số %{lowest_link_score}.' title: Liên kết xu hướng new_trending_statuses: - no_approved_statuses: Hiện tại không có tút xu hướng nào được duyệt. - requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt tút xu hướng, với hiện tại là "%{lowest_status_url}" với điểm số %{lowest_status_score}.' title: Tút xu hướng new_trending_tags: no_approved_tags: Hiện tại không có hashtag xu hướng nào được duyệt. @@ -1374,6 +1370,8 @@ vi: other: Khác posting_defaults: Mặc định cho tút public_timelines: Bảng tin + privacy_policy: + title: Chính sách bảo mật reactions: errors: limit_reached: Bạn không nên thao tác liên tục diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 11df973130..cffcb0df83 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -919,12 +919,8 @@ zh-CN: new_trends: body: 以下项目需要审核才能公开显示: new_trending_links: - no_approved_links: 当前没有经过批准的热门链接。 - requirements: '以下候选均可超过 #%{rank} 已批准热门链接,当前为 "%{lowest_link_title}",分数为 %{lowest_link_score}。' title: 热门链接 new_trending_statuses: - no_approved_statuses: 当前没有经过批准的热门链接。 - requirements: '以下候选均可超过 #%{rank} 已批准热门嘟文,当前为 %{lowest_status_url} 分数为 %{lowest_status_score}。' title: 热门嘟文 new_trending_tags: no_approved_tags: 目前没有经批准的热门标签。 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index ea49d45d12..8f451e54a8 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -921,12 +921,8 @@ zh-TW: new_trends: body: 以下項目需要經過審核才能公開顯示: new_trending_links: - no_approved_links: 這些是目前仍未被審核之熱門連結。 - requirements: '這些候選中的任何一個都可能超過 #%{rank} 已批准的熱門連結,該連結目前是「%{lowest_link_title}」,得分為 %{lowest_link_score}。' title: 熱門連結 new_trending_statuses: - no_approved_statuses: 這些是目前仍未被審核之熱門嘟文。 - requirements: '這些候選中的任何一個都可能超過 #%{rank} 已批准的熱門嘟文,該嘟文目前是 %{lowest_status_url},得分為 %{lowest_status_score}。' title: 熱門嘟文 new_trending_tags: no_approved_tags: 這些是目前仍未被審核之熱門主題標籤。 @@ -1378,6 +1374,8 @@ zh-TW: other: 其他 posting_defaults: 嘟文預設值 public_timelines: 公開時間軸 + privacy_policy: + title: 隱私權政策 reactions: errors: limit_reached: 達到可回應之上限 From d3f1a010e561e3de9a1d99ec104f5b286aaffbda Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Mon, 10 Oct 2022 02:26:14 +0900 Subject: [PATCH 030/500] Fix fedi/local timeline nav link always hide (#19329) --- .../mastodon/features/ui/components/navigation_panel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index aa917c1ca5..4dadf294d2 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -58,7 +58,7 @@ class NavigationPanel extends React.Component { )} - {signedIn || timelinePreview && ( + {(signedIn || timelinePreview) && ( <> From 32c3bd3c53d14e3b43dd17e639475046bcb41183 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Mon, 10 Oct 2022 07:32:40 +0900 Subject: [PATCH 031/500] Use pep440 for Docker image tag rules (#19332) --- .github/workflows/build-image.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 624aabbe7a..39fe1bd0b7 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -33,7 +33,8 @@ jobs: latest=auto tags: | type=edge,branch=main - type=match,pattern=v(.*),group=0 + type=pep440,pattern={{raw}} + type=pep440,pattern=v{{major}}.{{minor}} type=ref,event=pr - uses: docker/build-push-action@v3 with: @@ -41,5 +42,5 @@ jobs: platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} - cache-from: type=registry,ref=tootsuite/mastodon:latest + cache-from: type=registry,ref=tootsuite/mastodon:edge cache-to: type=inline From 5f79200a5e39a5bf243068d040def2af35f211fc Mon Sep 17 00:00:00 2001 From: Jeremy Kescher Date: Sun, 9 Oct 2022 22:33:38 +0000 Subject: [PATCH 032/500] Remove/update old "tootsuite" references, except those needed for Docker (#19327) --- chart/values.yaml | 4 ++-- db/migrate/20170918125918_ids_to_bigints.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/chart/values.yaml b/chart/values.yaml index 4b18a9dfa5..48554412f9 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -24,7 +24,7 @@ mastodon: removeMedia: enabled: true schedule: "0 0 * * 0" - # available locales: https://github.com/tootsuite/mastodon/blob/master/config/application.rb#L43 + # available locales: https://github.com/mastodon/mastodon/blob/main/config/application.rb#L71 locale: en local_domain: mastodon.local # Use of WEB_DOMAIN requires careful consideration: https://docs.joinmastodon.org/admin/config/#federation @@ -261,7 +261,7 @@ externalAuth: # search: "., -" # replace: _ -# https://github.com/tootsuite/mastodon/blob/master/Dockerfile#L88 +# https://github.com/mastodon/mastodon/blob/main/Dockerfile#L75 # # if you manually change the UID/GID environment variables, ensure these values # match: diff --git a/db/migrate/20170918125918_ids_to_bigints.rb b/db/migrate/20170918125918_ids_to_bigints.rb index bcb2e9eca5..bf875e4e59 100644 --- a/db/migrate/20170918125918_ids_to_bigints.rb +++ b/db/migrate/20170918125918_ids_to_bigints.rb @@ -80,7 +80,7 @@ class IdsToBigints < ActiveRecord::Migration[5.1] say 'This migration has some sections that can be safely interrupted' say 'and restarted later, and will tell you when those are occurring.' say '' - say 'For more information, see https://github.com/tootsuite/mastodon/pull/5088' + say 'For more information, see https://github.com/mastodon/mastodon/pull/5088' 10.downto(1) do |i| say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true From 3eef8a7a81512f283300d2371d5b743611cb0d27 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Mon, 10 Oct 2022 13:51:16 +0900 Subject: [PATCH 033/500] Fix `ColumnLink` labels not disappearing in mobile UI (#19334) --- app/javascript/mastodon/features/ui/components/column_link.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/column_link.js b/app/javascript/mastodon/features/ui/components/column_link.js index 42da05c0ac..8eebbf5260 100644 --- a/app/javascript/mastodon/features/ui/components/column_link.js +++ b/app/javascript/mastodon/features/ui/components/column_link.js @@ -13,7 +13,7 @@ const ColumnLink = ({ icon, text, to, href, method, badge, transparent, ...other return ( {iconElement} - {text} + {text} {badgeElement} ); @@ -21,7 +21,7 @@ const ColumnLink = ({ icon, text, to, href, method, badge, transparent, ...other return ( {iconElement} - {text} + {text} {badgeElement} ); From 05148e2c77ba7a2ac2cbf2569f60a64440e8a55a Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Mon, 10 Oct 2022 15:03:19 +0900 Subject: [PATCH 034/500] Fix missing `skip_review?` (#19335) --- app/models/trends.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/trends.rb b/app/models/trends.rb index 151d734f9d..d07d62b71b 100644 --- a/app/models/trends.rb +++ b/app/models/trends.rb @@ -43,7 +43,7 @@ module Trends Setting.trends end - def skip_review? + def self.skip_review? Setting.trendable_by_default end From d7873433256746c9b453aeca31520d68c6de4975 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Tue, 11 Oct 2022 04:41:25 +0900 Subject: [PATCH 035/500] Hide list panel from nav bar in mobile layout (#19337) --- .../mastodon/features/ui/components/list_panel.js | 12 ++++++------ .../features/ui/components/navigation_panel.js | 2 +- app/javascript/mastodon/is_mobile.js | 13 ++++++++++++- app/javascript/styles/mastodon/about.scss | 4 ++-- app/javascript/styles/mastodon/components.scss | 6 +++++- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/list_panel.js b/app/javascript/mastodon/features/ui/components/list_panel.js index 411f62508e..2f92a9254e 100644 --- a/app/javascript/mastodon/features/ui/components/list_panel.js +++ b/app/javascript/mastodon/features/ui/components/list_panel.js @@ -1,12 +1,12 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { createSelector } from 'reselect'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { fetchLists } from 'mastodon/actions/lists'; import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import { NavLink, withRouter } from 'react-router-dom'; -import Icon from 'mastodon/components/icon'; +import { withRouter } from 'react-router-dom'; +import { fetchLists } from 'mastodon/actions/lists'; +import ColumnLink from './column_link'; const getOrderedLists = createSelector([state => state.get('lists')], lists => { if (!lists) { @@ -42,11 +42,11 @@ class ListPanel extends ImmutablePureComponent { } return ( -
+

{lists.map(list => ( - {list.get('title')} + ))}
); diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 4dadf294d2..166d3552bc 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -5,11 +5,11 @@ import { Link } from 'react-router-dom'; import Logo from 'mastodon/components/logo'; import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container'; import { showTrends, timelinePreview } from 'mastodon/initial_state'; +import ColumnLink from './column_link'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; import SignInBanner from './sign_in_banner'; -import ColumnLink from 'mastodon/features/ui/components/column_link'; const messages = defineMessages({ home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, diff --git a/app/javascript/mastodon/is_mobile.js b/app/javascript/mastodon/is_mobile.js index 2926eb4b17..3c8ec1545c 100644 --- a/app/javascript/mastodon/is_mobile.js +++ b/app/javascript/mastodon/is_mobile.js @@ -1,10 +1,19 @@ +// @ts-check + import { supportsPassiveEvents } from 'detect-passive-events'; import { forceSingleColumn } from 'mastodon/initial_state'; const LAYOUT_BREAKPOINT = 630; +/** + * @param {number} width + * @returns {boolean} + */ export const isMobile = width => width <= LAYOUT_BREAKPOINT; +/** + * @returns {string} + */ export const layoutFromWindow = () => { if (isMobile(window.innerWidth)) { return 'mobile'; @@ -17,11 +26,13 @@ export const layoutFromWindow = () => { const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; +const listenerOptions = supportsPassiveEvents ? { passive: true } : false; + let userTouching = false; -let listenerOptions = supportsPassiveEvents ? { passive: true } : false; const touchListener = () => { userTouching = true; + window.removeEventListener('touchstart', touchListener, listenerOptions); }; diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss index c82be742d3..8893e3cf09 100644 --- a/app/javascript/styles/mastodon/about.scss +++ b/app/javascript/styles/mastodon/about.scss @@ -163,8 +163,8 @@ $small-breakpoint: 960px; th, td { padding: 8px; - align-self: start; - align-items: start; + align-self: flex-start; + align-items: flex-start; word-break: break-all; &.nowrap { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 039d0b9041..a8919b9cbd 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2673,6 +2673,10 @@ $ui-header-height: 55px; .column-link span { display: none; } + + .list-panel { + display: none; + } } } @@ -2755,7 +2759,7 @@ $ui-header-height: 55px; .column-actions { display: flex; - align-items: start; + align-items: flex-start; justify-content: center; padding: 40px; padding-top: 40px; From c70bffd89f01599ea7ba002a25f5229256cf6851 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 11 Oct 2022 05:59:29 +0200 Subject: [PATCH 036/500] New Crowdin updates (#19330) * New translations doorkeeper.en.yml (Afrikaans) * New translations simple_form.en.yml (Arabic) * New translations activerecord.en.yml (Arabic) * New translations doorkeeper.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations activerecord.en.yml (Bulgarian) * New translations doorkeeper.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations activerecord.en.yml (Catalan) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Vietnamese) * New translations activerecord.en.yml (Dutch) * New translations en.yml (Asturian) * New translations en.yml (Sardinian) * New translations en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations activerecord.en.yml (Galician) * New translations en.yml (Sanskrit) * New translations en.yml (Kabyle) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Polish) * New translations doorkeeper.en.yml (Czech) * New translations simple_form.en.yml (Basque) * New translations simple_form.en.yml (Danish) * New translations activerecord.en.yml (Hebrew) * New translations simple_form.en.yml (Hebrew) * New translations activerecord.en.yml (Finnish) * New translations simple_form.en.yml (Finnish) * New translations doorkeeper.en.yml (Basque) * New translations activerecord.en.yml (Basque) * New translations doorkeeper.en.yml (Finnish) * New translations doorkeeper.en.yml (Frisian) * New translations simple_form.en.yml (Frisian) * New translations doorkeeper.en.yml (Greek) * New translations activerecord.en.yml (Greek) * New translations simple_form.en.yml (Greek) * New translations doorkeeper.en.yml (German) * New translations activerecord.en.yml (German) * New translations simple_form.en.yml (German) * New translations doorkeeper.en.yml (Danish) * New translations activerecord.en.yml (Frisian) * New translations activerecord.en.yml (Danish) * New translations doorkeeper.en.yml (Georgian) * New translations simple_form.en.yml (Korean) * New translations activerecord.en.yml (Korean) * New translations doorkeeper.en.yml (Korean) * New translations simple_form.en.yml (Georgian) * New translations activerecord.en.yml (Georgian) * New translations simple_form.en.yml (Hungarian) * New translations doorkeeper.en.yml (Japanese) * New translations activerecord.en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations doorkeeper.en.yml (Italian) * New translations activerecord.en.yml (Italian) * New translations simple_form.en.yml (Italian) * New translations doorkeeper.en.yml (Armenian) * New translations activerecord.en.yml (Armenian) * New translations simple_form.en.yml (Armenian) * New translations doorkeeper.en.yml (Hungarian) * New translations activerecord.en.yml (Hungarian) * New translations doorkeeper.en.yml (Hebrew) * New translations doorkeeper.en.yml (Dutch) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Chinese Traditional) * New translations doorkeeper.en.yml (Swedish) * New translations simple_form.en.yml (Turkish) * New translations activerecord.en.yml (Turkish) * New translations doorkeeper.en.yml (Turkish) * New translations simple_form.en.yml (Ukrainian) * New translations activerecord.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Ukrainian) * New translations activerecord.en.yml (Chinese Simplified) * New translations doorkeeper.en.yml (Chinese Simplified) * New translations activerecord.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Swedish) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Vietnamese) * New translations doorkeeper.en.yml (Vietnamese) * New translations simple_form.en.yml (Galician) * New translations doorkeeper.en.yml (Galician) * New translations simple_form.en.yml (Icelandic) * New translations activerecord.en.yml (Icelandic) * New translations activerecord.en.yml (Swedish) * New translations doorkeeper.en.yml (Serbian (Cyrillic)) * New translations activerecord.en.yml (Norwegian) * New translations activerecord.en.yml (Russian) * New translations doorkeeper.en.yml (Norwegian) * New translations activerecord.en.yml (Polish) * New translations doorkeeper.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations activerecord.en.yml (Portuguese) * New translations doorkeeper.en.yml (Portuguese) * New translations simple_form.en.yml (Russian) * New translations doorkeeper.en.yml (Russian) * New translations activerecord.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Slovak) * New translations activerecord.en.yml (Slovak) * New translations doorkeeper.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations activerecord.en.yml (Slovenian) * New translations doorkeeper.en.yml (Slovenian) * New translations simple_form.en.yml (Albanian) * New translations activerecord.en.yml (Albanian) * New translations doorkeeper.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations doorkeeper.en.yml (Icelandic) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Estonian) * New translations activerecord.en.yml (Croatian) * New translations doorkeeper.en.yml (Croatian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Kazakh) * New translations activerecord.en.yml (Kazakh) * New translations doorkeeper.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations doorkeeper.en.yml (Estonian) * New translations doorkeeper.en.yml (Thai) * New translations simple_form.en.yml (Latvian) * New translations activerecord.en.yml (Latvian) * New translations doorkeeper.en.yml (Latvian) * New translations activerecord.en.yml (Hindi) * New translations doorkeeper.en.yml (Hindi) * New translations simple_form.en.yml (Croatian) * New translations activerecord.en.yml (Thai) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations activerecord.en.yml (Indonesian) * New translations doorkeeper.en.yml (Indonesian) * New translations simple_form.en.yml (Persian) * New translations activerecord.en.yml (Persian) * New translations doorkeeper.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations activerecord.en.yml (Tamil) * New translations doorkeeper.en.yml (Tamil) * New translations activerecord.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Thai) * New translations doorkeeper.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations activerecord.en.yml (Bengali) * New translations activerecord.en.yml (Marathi) * New translations doorkeeper.en.yml (Marathi) * New translations activerecord.en.yml (Asturian) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations doorkeeper.en.yml (Asturian) * New translations doorkeeper.en.yml (Sinhala) * New translations simple_form.en.yml (Occitan) * New translations activerecord.en.yml (Occitan) * New translations doorkeeper.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Sinhala) * New translations simple_form.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations doorkeeper.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations activerecord.en.yml (Esperanto) * New translations doorkeeper.en.yml (Esperanto) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Breton) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Tatar) * New translations activerecord.en.yml (Tatar) * New translations doorkeeper.en.yml (Tatar) * New translations simple_form.en.yml (Malayalam) * New translations activerecord.en.yml (Malayalam) * New translations doorkeeper.en.yml (Malayalam) * New translations simple_form.en.yml (Breton) * New translations activerecord.en.yml (Breton) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Ido) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Ido) * New translations activerecord.en.yml (Ido) * New translations doorkeeper.en.yml (Kabyle) * New translations simple_form.en.yml (Corsican) * New translations activerecord.en.yml (Kabyle) * New translations simple_form.en.yml (Kabyle) * New translations doorkeeper.en.yml (Sardinian) * New translations activerecord.en.yml (Sardinian) * New translations simple_form.en.yml (Sardinian) * New translations doorkeeper.en.yml (Corsican) * New translations activerecord.en.yml (Corsican) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations activerecord.en.yml (Japanese) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Spanish, Argentina) * New translations en.json (Turkish) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.json (Vietnamese) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Ukrainian) * New translations en.json (Czech) * New translations simple_form.en.yml (Czech) * New translations en.json (Albanian) * New translations en.yml (Albanian) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.json (Portuguese) * New translations en.yml (Portuguese) * New translations en.yml (Ukrainian) * New translations en.json (Portuguese) * New translations en.json (Vietnamese) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Ukrainian) * New translations en.json (Vietnamese) * New translations simple_form.en.yml (Danish) * New translations en.json (Japanese) * New translations en.json (Hungarian) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Italian) * New translations en.json (German) * New translations en.json (German) * New translations en.json (Spanish) * New translations simple_form.en.yml (Spanish) * New translations en.json (Galician) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/ca.json | 12 +++--- app/javascript/mastodon/locales/cs.json | 20 +++++----- app/javascript/mastodon/locales/da.json | 10 ++--- app/javascript/mastodon/locales/de.json | 26 ++++++------- app/javascript/mastodon/locales/el.json | 2 +- app/javascript/mastodon/locales/es-AR.json | 12 +++--- app/javascript/mastodon/locales/es-MX.json | 32 ++++++++-------- app/javascript/mastodon/locales/es.json | 12 +++--- app/javascript/mastodon/locales/gl.json | 6 +-- app/javascript/mastodon/locales/hu.json | 10 ++--- app/javascript/mastodon/locales/it.json | 12 +++--- app/javascript/mastodon/locales/ja.json | 26 ++++++------- app/javascript/mastodon/locales/ko.json | 2 +- app/javascript/mastodon/locales/ku.json | 12 +++--- app/javascript/mastodon/locales/lv.json | 12 +++--- app/javascript/mastodon/locales/pl.json | 12 +++--- app/javascript/mastodon/locales/pt-PT.json | 44 +++++++++++----------- app/javascript/mastodon/locales/sl.json | 12 +++--- app/javascript/mastodon/locales/sq.json | 44 +++++++++++----------- app/javascript/mastodon/locales/tr.json | 12 +++--- app/javascript/mastodon/locales/uk.json | 22 +++++------ app/javascript/mastodon/locales/vi.json | 14 +++---- app/javascript/mastodon/locales/zh-TW.json | 12 +++--- config/locales/activerecord.ja.yml | 5 +++ config/locales/es-MX.yml | 2 + config/locales/ja.yml | 22 +++++++++++ config/locales/pt-PT.yml | 4 ++ config/locales/simple_form.ca.yml | 8 ++++ config/locales/simple_form.cs.yml | 8 ++++ config/locales/simple_form.da.yml | 8 ++++ config/locales/simple_form.es-AR.yml | 8 ++++ config/locales/simple_form.es.yml | 8 ++++ config/locales/simple_form.hu.yml | 4 ++ config/locales/simple_form.it.yml | 8 ++++ config/locales/simple_form.ja.yml | 17 +++++++++ config/locales/simple_form.ku.yml | 8 ++++ config/locales/simple_form.lv.yml | 8 ++++ config/locales/simple_form.pl.yml | 8 ++++ config/locales/simple_form.pt-PT.yml | 8 ++++ config/locales/simple_form.sl.yml | 8 ++++ config/locales/simple_form.sq.yml | 8 ++++ config/locales/simple_form.tr.yml | 8 ++++ config/locales/simple_form.uk.yml | 8 ++++ config/locales/simple_form.zh-TW.yml | 8 ++++ config/locales/sq.yml | 2 + config/locales/uk.yml | 5 +++ 46 files changed, 370 insertions(+), 189 deletions(-) diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index a74afed873..8be03d7fcf 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -151,12 +151,12 @@ "directory.local": "Només de {domain}", "directory.new_arrivals": "Arribades noves", "directory.recently_active": "Recentment actius", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Aquests son els apunts més recents d'usuaris amb els seus comptes a {domain}.", + "dismissable_banner.dismiss": "Ometre", + "dismissable_banner.explore_links": "Aquests son els enllaços que els usuaris estan comentant ara mateix en aquest i altres servidors de la xarxa descentralitzada.", + "dismissable_banner.explore_statuses": "Aquests apunts d'aquest i altres servidors de la xarxa descentralitzada estan guanyant l'atenció ara mateix en aquest servidor.", + "dismissable_banner.explore_tags": "Aquestes etiquetes estan guanyant l'atenció ara mateix dels usuaris d'aquest i altres servidors de la xarxa descentralitzada.", + "dismissable_banner.public_timeline": "Aquests son els apunts més recents dels usuaris d'aquest i d'altres servidors de la xarxa descentralitzada que aquest servidor en té coneixement.", "embed.instructions": "Incrusta aquesta publicació a la teva pàgina web copiant el codi següent.", "embed.preview": "Aquí està quin aspecte tindrà:", "emoji_button.activity": "Activitat", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index e4c6d82fd2..0920aef42f 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -151,12 +151,12 @@ "directory.local": "Pouze z domény {domain}", "directory.new_arrivals": "Nově příchozí", "directory.recently_active": "Nedávno aktivní", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Toto jsou nejnovější veřejné příspěvky od lidí, jejichž účty hostuje {domain}.", + "dismissable_banner.dismiss": "Odmítnout", + "dismissable_banner.explore_links": "O těchto novinkách hovoří lidé na tomto a dalších serverech decentralizované sítě.", + "dismissable_banner.explore_statuses": "Tyto příspěvky z této a dalších serverů v decentralizované síti nyní získávají trakci na tomto serveru.", + "dismissable_banner.explore_tags": "Tyto hashtagy právě teď získávají na popularitě mezi lidmi na tomto a dalších serverech decentralizované sítě.", + "dismissable_banner.public_timeline": "Toto jsou nejnovější veřejné příspěvky od lidí na tomto a jiných serverech decentralizované sítě, o které tento server ví.", "embed.instructions": "Pro přidání příspěvku na vaši webovou stránku zkopírujte níže uvedený kód.", "embed.preview": "Takhle to bude vypadat:", "emoji_button.activity": "Aktivita", @@ -254,10 +254,10 @@ "home.column_settings.show_replies": "Zobrazit odpovědi", "home.hide_announcements": "Skrýt oznámení", "home.show_announcements": "Zobrazit oznámení", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.favourite": "Pokud máte účet na Mastodonu, můžete tento příspěvek označit jako oblíbený a dát tak autorovi najevo, že si ho vážíte, a uložit si ho na později.", + "interaction_modal.description.follow": "S účtem na Mastodonu můžete sledovat {name} a přijímat příspěvky ve vašem domovském kanálu.", + "interaction_modal.description.reblog": "S účtem na Mastodonu můžete podpořit tento příspěvek a sdílet jej s vlastními sledujícími.", + "interaction_modal.description.reply": "S účtem na Mastodonu můžete reagovat na tento příspěvek.", "interaction_modal.on_another_server": "Na jiném serveru", "interaction_modal.on_this_server": "Na tomto serveru", "interaction_modal.other_server_instructions": "Jednoduše zkopírujte a vložte tuto adresu do vyhledávacího panelu vaší oblíbené aplikace nebo webového rozhraní, kde jste přihlášeni.", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index ea01b45a9b..a63104242a 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -151,11 +151,11 @@ "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nyligt aktive", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.community_timeline": "Dette er de seneste offentlige indlæg fra personer, hvis konti hostes af {domain}.", + "dismissable_banner.dismiss": "Afvis", + "dismissable_banner.explore_links": "Der tales lige nu om disse nyhedshistorier af folk på denne og andre servere i det decentraliserede netværk.", + "dismissable_banner.explore_statuses": "Disse indlæg vinder lige nu fodfæste på denne og andre servere i det decentraliserede netværk.", + "dismissable_banner.explore_tags": "Disse hashtages vinder lige nu fodfæste blandt folk på denne og andre servere i det decentraliserede netværk.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Indlejr dette indlæg på dit websted ved at kopiere nedenstående kode.", "embed.preview": "Sådan kommer det til at se ud:", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 6e73c44c42..28d037d52e 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -151,9 +151,9 @@ "directory.local": "Nur von {domain}", "directory.new_arrivals": "Neue Benutzer", "directory.recently_active": "Kürzlich aktiv", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.community_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen, deren Konten von {domain} gehostet werden.", + "dismissable_banner.dismiss": "Ablehnen", + "dismissable_banner.explore_links": "Diese Nachrichten werden gerade von Leuten auf diesem und anderen Servern des dezentralen Netzwerks besprochen.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", @@ -258,14 +258,14 @@ "interaction_modal.description.follow": "Mit einem Konto auf Mastodon kannst du {name} folgen, um seine Beiträge in deinem Home Feed zu erhalten.", "interaction_modal.description.reblog": "Mit einem Account auf Mastodon, kannst du diesen Beitrag boosten um ihn mit deinen eigenen Followern teilen.", "interaction_modal.description.reply": "Mit einem Account auf Mastodon können Sie auf diesen Beitrag antworten.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.on_another_server": "Auf einem anderen Server", + "interaction_modal.on_this_server": "Auf diesem Server", + "interaction_modal.other_server_instructions": "Kopiere einfach diese URL und füge sie in die Suchleiste deiner Lieblings-App oder in die Weboberfläche, in der du angemeldet bist, ein.", + "interaction_modal.preamble": "Da Mastodon dezentralisiert ist, kannst du dein bestehendes Konto auf einem anderen Mastodon-Server oder einer kompatiblen Plattform nutzen, wenn du kein Konto auf dieser Plattform hast.", + "interaction_modal.title.favourite": "Lieblingsbeitrag von {name}", + "interaction_modal.title.follow": "Folge {name}", + "interaction_modal.title.reblog": "Erhöhe {name}'s Beitrag", + "interaction_modal.title.reply": "Antworte auf den Post von {name}", "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}", "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}", "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}", @@ -424,8 +424,8 @@ "privacy.public.short": "Öffentlich", "privacy.unlisted.long": "Sichtbar für alle, aber nicht über Entdeckungsfunktionen", "privacy.unlisted.short": "Nicht gelistet", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Letztes Update am {date}", + "privacy_policy.title": "Datenschutzbestimmungen", "refresh": "Aktualisieren", "regeneration_indicator.label": "Laden…", "regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 932e035df7..4d0f413ef9 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -152,7 +152,7 @@ "directory.new_arrivals": "Νέες αφίξεις", "directory.recently_active": "Πρόσφατα ενεργοί", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "Παράβλεψη", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 7ba62cdd5a..510d790ee2 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -151,12 +151,12 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activos", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Estos son los mensajes públicos más recientes de cuentas alojadas en {domain}.", + "dismissable_banner.dismiss": "Descartar", + "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada ahora mismo.", + "dismissable_banner.explore_statuses": "Estos mensajes de este y otros servidores en la red descentralizada están ganando tracción en este servidor ahora mismo.", + "dismissable_banner.explore_tags": "Estas etiquetas están ganando tracción entre la gente en este y otros servidores de la red descentralizada ahora mismo.", + "dismissable_banner.public_timeline": "Estos son los mensajes públicos más recientes de personas en este y otros servidores de la red descentralizada que este servidor conoce.", "embed.instructions": "Insertá este mensaje a tu sitio web copiando el código de abajo.", "embed.preview": "Así es cómo se verá:", "emoji_button.activity": "Actividad", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 837e041e9d..aef413c501 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -145,8 +145,8 @@ "conversation.mark_as_read": "Marcar como leído", "conversation.open": "Ver conversación", "conversation.with": "Con {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiado", + "copypaste.copy": "Copiar", "directory.federated": "Desde el fediverso conocido", "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", @@ -254,18 +254,18 @@ "home.column_settings.show_replies": "Mostrar respuestas", "home.hide_announcements": "Ocultar anuncios", "home.show_announcements": "Mostrar anuncios", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Con una cuenta en Mastodon, puedes marcar como favorita esta publicación para que el autor sepa que te gusta y guardarla así para más adelante.", + "interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu línea temporal de inicio.", + "interaction_modal.description.reblog": "Con una cuenta en Mastodon, puedes impulsar esta publicación para compartirla con tus propios seguidores.", + "interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.", + "interaction_modal.on_another_server": "En un servidor diferente", + "interaction_modal.on_this_server": "En este servidor", + "interaction_modal.other_server_instructions": "Simplemente copia y pega esta URL en la barra de búsqueda de tu aplicación favorita o en la interfaz web donde hayas iniciado sesión.", + "interaction_modal.preamble": "Ya que Mastodon es descentralizado, puedes usar tu cuenta existente alojada en otro servidor Mastodon o plataforma compatible si no tienes una cuenta en este servidor.", + "interaction_modal.title.favourite": "Marcar como favorita la publicación de {name}", + "interaction_modal.title.follow": "Seguir a {name}", + "interaction_modal.title.reblog": "Impulsar la publicación de {name}", + "interaction_modal.title.reply": "Responder a la publicación de {name}", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -424,8 +424,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visible para todos, pero excluido de las funciones de descubrimiento", "privacy.unlisted.short": "No listado", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Ultima vez actualizado {date}", + "privacy_policy.title": "Política de Privacidad", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 7cde721ff1..32e3517d2d 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -151,12 +151,12 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activo", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de personas cuyas cuentas están alojadas en {domain}.", + "dismissable_banner.dismiss": "Descartar", + "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada en este momento.", + "dismissable_banner.explore_statuses": "Estas publicaciones de este y otros servidores en la red descentralizada están ganando popularidad en este servidor en este momento.", + "dismissable_banner.explore_tags": "Estas tendencias están ganando popularidad entre la gente en este y otros servidores de la red descentralizada en este momento.", + "dismissable_banner.public_timeline": "Estas son las publicaciones públicas más recientes de personas en este y otros servidores de la red descentralizada que este servidor conoce.", "embed.instructions": "Añade esta publicación a tu sitio web con el siguiente código.", "embed.preview": "Así es como se verá:", "emoji_button.activity": "Actividad", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index bbe33ed77d..d326816b42 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -151,9 +151,9 @@ "directory.local": "Só de {domain}", "directory.new_arrivals": "Recén chegadas", "directory.recently_active": "Activas recentemente", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.community_timeline": "Estas son as publicacións máis recentes das persoas que teñen a súa conta en {domain}.", + "dismissable_banner.dismiss": "Desbotar", + "dismissable_banner.explore_links": "As persoas deste servidor e da rede descentralizada están a falar destas historias agora mesmo.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index f355be5e3c..4988e751e1 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -151,11 +151,11 @@ "directory.local": "Csak innen: {domain}", "directory.new_arrivals": "Új csatlakozók", "directory.recently_active": "Nemrég aktív", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.community_timeline": "Ezek a legfrissebb nyilvános bejegyzések, amelyeket a(z) {domain} kiszolgáló fiókjait használó emberek tették közzé.", + "dismissable_banner.dismiss": "Eltüntetés", + "dismissable_banner.explore_links": "Jelenleg ezekről a hírekről beszélgetnek az ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek.", + "dismissable_banner.explore_statuses": "Jelenleg ezek a bejegyzések hódítanak teret ezen és a decentralizált hálózat egyéb kiszolgálóin.", + "dismissable_banner.explore_tags": "Jelenleg ezek a hashtagek hódítanak teret ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek körében.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Ágyazd be ezt a bejegyzést a weboldaladba az alábbi kód kimásolásával.", "embed.preview": "Így fog kinézni:", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 60c0e9539f..52fa109d54 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -151,12 +151,12 @@ "directory.local": "Solo da {domain}", "directory.new_arrivals": "Nuovi arrivi", "directory.recently_active": "Attivo di recente", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Questi sono i posti pubblici più recenti di persone i cui account sono ospitati da {domain}.", + "dismissable_banner.dismiss": "Ignora", + "dismissable_banner.explore_links": "Queste notizie sono in fase di discussione da parte di persone su questo e altri server della rete decentralizzata, in questo momento.", + "dismissable_banner.explore_statuses": "Questi post, da questo e da altri server nella rete decentralizzata, stanno guadagnando popolarità su questo server in questo momento.", + "dismissable_banner.explore_tags": "Questi hashtag stanno guadagnando popolarità tra le persone su questo e altri server della rete decentralizzata, in questo momento.", + "dismissable_banner.public_timeline": "Questi sono i post pubblici più recenti di persone, su questo e altri server della rete decentralizzata che questo server conosce.", "embed.instructions": "Incorpora questo post sul tuo sito web copiando il codice sotto.", "embed.preview": "Ecco come apparirà:", "emoji_button.activity": "Attività", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index da96ce676c..2301bae075 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -24,7 +24,7 @@ "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", "account.joined": "{date} に登録", - "account.languages": "Change subscribed languages", + "account.languages": "購読言語の変更", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", "account.media": "メディア", @@ -151,12 +151,12 @@ "directory.local": "{domain} のみ", "directory.new_arrivals": "新着順", "directory.recently_active": "最近の活動順", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "これらは{domain}がホストしている人たちの最新の公開投稿です。", + "dismissable_banner.dismiss": "閉じる", + "dismissable_banner.explore_links": "これらのニュース記事は現在分散型ネットワークの他のサーバーの人たちに話されています。", + "dismissable_banner.explore_statuses": "分散化ネットワーク内の他のサーバーのこれらの投稿は現在このサーバー上で注目されています。", + "dismissable_banner.explore_tags": "これらのハッシュタグは現在分散型ネットワークの他のサーバーの人たちに話されています。", + "dismissable_banner.public_timeline": "これらの投稿はこのサーバーが知っている分散型ネットワークの他のサーバーの人たちの最新の公開投稿です。", "embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。", "embed.preview": "表示例:", "emoji_button.activity": "活動", @@ -260,8 +260,8 @@ "interaction_modal.description.reply": "Mastodonのアカウントでこの投稿に反応できます。", "interaction_modal.on_another_server": "別のサーバー", "interaction_modal.on_this_server": "このサーバー", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.other_server_instructions": "このURLをコピーしてお気に入りのアプリの検索バーやログインしているWeb UIに貼り付けるだけです。", + "interaction_modal.preamble": "Mastodonは分散化されているためアカウントを持っていなくても別のMastodonサーバーまたは互換性のあるプラットフォームでホストされているアカウントを使用できます。", "interaction_modal.title.favourite": "{name}さんの投稿をお気に入り", "interaction_modal.title.follow": "{name}さんをフォロー", "interaction_modal.title.reblog": "{name}さんの投稿をブースト", @@ -498,7 +498,7 @@ "search_results.statuses_fts_disabled": "このサーバーでは投稿本文の検索は利用できません。", "search_results.title": "『{q}』の検索結果", "search_results.total": "{count, number}件の結果", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.about_active_users": "過去30日間にこのサーバーを使用している人 (月間アクティブユーザー)", "server_banner.active_users": "人のアクティブユーザー", "server_banner.administered_by": "管理者", "server_banner.introduction": "{domain}は{mastodon}を使った分散型ソーシャルネットワークの一部です。", @@ -506,7 +506,7 @@ "server_banner.server_stats": "サーバーの情報", "sign_in_banner.create_account": "アカウント作成", "sign_in_banner.sign_in": "ログイン", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "sign_in_banner.text": "ログインしてプロファイルやハッシュタグ、お気に入りをフォローしたり、投稿を共有したり、返信したり、別のサーバーのアカウントと交流したりできます。", "status.admin_account": "@{name}さんのモデレーション画面を開く", "status.admin_status": "この投稿をモデレーション画面で開く", "status.block": "@{name}さんをブロック", @@ -560,9 +560,9 @@ "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.lead": "選択した言語の投稿だけがホームとリストのタイムラインに表示されます。全ての言語の投稿を受け取る場合は全てのチェックを外して下さい。", "subscribed_languages.save": "変更を保存", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.target": "{target}さんの購読言語を変更します", "suggestions.dismiss": "隠す", "suggestions.header": "興味あるかもしれません…", "tabs_bar.federated_timeline": "連合", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 3c00280e57..f06bd2c5c5 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -152,7 +152,7 @@ "directory.new_arrivals": "새로운 사람들", "directory.recently_active": "최근 활동", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "지우기", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 905df44442..7a8ac599d4 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -151,12 +151,12 @@ "directory.local": "Tenê ji {domain}", "directory.new_arrivals": "Kesên ku nû hatine", "directory.recently_active": "Di demên dawî de çalak", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Ev şandiyên giştî yên herî dawî ji kesên ku ajimêrê wan ji aliyê {domain} ve têne pêşkêşkirin.", + "dismissable_banner.dismiss": "Paşguh bike", + "dismissable_banner.explore_links": "Ev çîrokên nûçeyan niha li ser vê û rajekarên din ên tora nenavendî ji aliyê mirovan ve têne axaftin.", + "dismissable_banner.explore_statuses": "Ev şandiyên ji vê û rajekarên din ên di tora nenavendî de niha li ser vê rajekarê balê dikşînin.", + "dismissable_banner.explore_tags": "Ev hashtagên ji vê û rajekarên din ên di tora nenavendî de niha li ser vê rajekarê balê dikşînin.", + "dismissable_banner.public_timeline": "Ev şandiyên gelemperî herî dawî yên mirovên li ser vê û rajekarên din ên tora nenavendî ne ku ev rajekar pê tê nasîn.", "embed.instructions": "Bi jêgirtina koda jêrîn vê şandiyê li ser malpera xwe bicîh bikin.", "embed.preview": "Wa ye wê wusa xuya bike:", "emoji_button.activity": "Çalakî", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 9353502e1d..c676898d1e 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -151,12 +151,12 @@ "directory.local": "Tikai no {domain}", "directory.new_arrivals": "Jaunpienācēji", "directory.recently_active": "Nesen aktīvs", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Šīs ir jaunākās publiskās ziņas no personām, kuru kontus mitina {domain}.", + "dismissable_banner.dismiss": "Atcelt", + "dismissable_banner.explore_links": "Par šiem jaunumiem šobrīd runā cilvēki šajā un citos decentralizētā tīkla serveros.", + "dismissable_banner.explore_statuses": "Šīs ziņas no šī un citiem decentralizētajā tīkla serveriem šobrīd gūst panākumus šajā serverī.", + "dismissable_banner.explore_tags": "Šie tēmturi šobrīd kļūst arvien populārāki cilvēku vidū šajā un citos decentralizētā tīkla serveros.", + "dismissable_banner.public_timeline": "Šīs ir jaunākās publiskās ziņas no cilvēkiem šajā un citos decentralizētā tīkla serveros, par kuriem šis serveris zina.", "embed.instructions": "Iestrādā šo ziņu savā mājaslapā, kopējot zemāk redzmo kodu.", "embed.preview": "Tas izskatīsies šādi:", "emoji_button.activity": "Aktivitāte", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 543018d619..db2fafee31 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -151,12 +151,12 @@ "directory.local": "Tylko z {domain}", "directory.new_arrivals": "Nowości", "directory.recently_active": "Ostatnio aktywne", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "To są najnowsze wpisy publiczne od osób, które mają założone konta na {domain}.", + "dismissable_banner.dismiss": "Schowaj", + "dismissable_banner.explore_links": "Te wiadomości obecnie są komentowane przez osoby z tego serwera i pozostałych w zdecentralizowanej sieci.", + "dismissable_banner.explore_statuses": "Obecnie te wpisy z tego serwera i pozostałych serwerów w zdecentralizowanej sieci zyskują popularność na tym serwerze.", + "dismissable_banner.explore_tags": "Te hasztagi obecnie zyskują popularność wśród osób z tego serwera i pozostałych w zdecentralizowanej sieci.", + "dismissable_banner.public_timeline": "To są najnowsze publiczne wpisy od osób z tego i innych serwerów zdecentralizowanej sieci, o których ten serwer wie.", "embed.instructions": "Osadź ten wpis na swojej stronie wklejając poniższy kod.", "embed.preview": "Tak będzie to wyglądać:", "emoji_button.activity": "Aktywność", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 3465d5418d..e9b7890374 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -145,18 +145,18 @@ "conversation.mark_as_read": "Marcar como lida", "conversation.open": "Ver conversa", "conversation.with": "Com {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiado", + "copypaste.copy": "Copiar", "directory.federated": "Do fediverso conhecido", "directory.local": "Apenas de {domain}", "directory.new_arrivals": "Recém chegados", "directory.recently_active": "Com actividade recente", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes de pessoas cujas contas são hospedadas por {domain}.", + "dismissable_banner.dismiss": "Descartar", + "dismissable_banner.explore_links": "Essas histórias de notícias estão, no momento, a ser faladas por pessoas neste e noutros servidores da rede descentralizada.", + "dismissable_banner.explore_statuses": "Estas publicações, deste e de outros servidores na rede descentralizada, estão, neste momento, a ganhar atenção neste servidor.", + "dismissable_banner.explore_tags": "Estas hashtags estão, neste momento, a ganhar atenção entre as pessoas neste e outros servidores da rede descentralizada.", + "dismissable_banner.public_timeline": "Estas são as publicações públicas mais recentes de pessoas neste e outros servidores da rede descentralizada que esse servidor conhece.", "embed.instructions": "Incorpore esta publicação no seu site copiando o código abaixo.", "embed.preview": "Podes ver aqui como irá ficar:", "emoji_button.activity": "Actividade", @@ -254,18 +254,18 @@ "home.column_settings.show_replies": "Mostrar respostas", "home.hide_announcements": "Ocultar anúncios", "home.show_announcements": "Exibir anúncios", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Com uma conta no Mastodon, pode adicionar esta publicação aos favoritos para que o autor saiba que gostou e salvá-la para mais tarde.", + "interaction_modal.description.follow": "Com uma conta no Mastodon, pode seguir {name} para receber as suas publicações na sua página inicial.", + "interaction_modal.description.reblog": "Com uma conta no Mastodon, pode impulsionar esta publicação para compartilhá-lo com os seus seguidores.", + "interaction_modal.description.reply": "Com uma conta no Mastodon, pode responder a esta publicação.", + "interaction_modal.on_another_server": "Num servidor diferente", + "interaction_modal.on_this_server": "Neste servidor", + "interaction_modal.other_server_instructions": "Basta copiar e colar este URL na barra de pesquisa do seu aplicativo favorito ou na interface web onde está conectado.", + "interaction_modal.preamble": "Uma vez que o Mastodon é descentralizado, pode utilizar a sua conta existente, hospedada em outro servidor Mastodon ou plataforma compatível, se não tiver uma conta neste servidor.", + "interaction_modal.title.favourite": "Adicionar a publicação de {name} aos favoritos", + "interaction_modal.title.follow": "Seguir {name}", + "interaction_modal.title.reblog": "Impulsionar a publicação de {name}", + "interaction_modal.title.reply": "Responder à publicação de {name}", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -424,8 +424,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visível para todos, mas não incluir em funcionalidades de divulgação", "privacy.unlisted.short": "Não listar", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Última atualização em {date}", + "privacy_policy.title": "Política de Privacidade", "refresh": "Actualizar", "regeneration_indicator.label": "A carregar…", "regeneration_indicator.sublabel": "A tua página inicial está a ser preparada!", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index bea82c6c41..cca9f6f74b 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -151,12 +151,12 @@ "directory.local": "Samo iz {domain}", "directory.new_arrivals": "Novi prišleki", "directory.recently_active": "Nedavno aktiven/a", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "To so najnovejše javne objave oseb, katerih računi gostujejo na {domain}.", + "dismissable_banner.dismiss": "Opusti", + "dismissable_banner.explore_links": "O teh novicah ravno zdaj veliko govorijo osebe na tem in drugih strežnikih decentraliziranega omrežja.", + "dismissable_banner.explore_statuses": "Te objave s tega in drugih strežnikov v decentraliziranem omrežju pridobivajo ravno zdaj veliko pozornosti na tem strežniku.", + "dismissable_banner.explore_tags": "Ravno zdaj dobivajo ti ključniki veliko pozoronosti med osebami na tem in drugih strežnikih decentraliziranega omrežja.", + "dismissable_banner.public_timeline": "To so zadnje javne objave oseb na tem in drugih strežnikih decentraliziranega omrežja, za katera ve ta strežnik.", "embed.instructions": "Vstavi ta status na svojo spletno stran tako, da kopirate spodnjo kodo.", "embed.preview": "Tako bo izgledalo:", "emoji_button.activity": "Dejavnost", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 180f92722f..074b0273ca 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -145,18 +145,18 @@ "conversation.mark_as_read": "Vëri shenjë si të lexuar", "conversation.open": "Shfaq bisedën", "conversation.with": "Me {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "U kopjua", + "copypaste.copy": "Kopjoje", "directory.federated": "Nga fedivers i njohur", "directory.local": "Vetëm nga {domain}", "directory.new_arrivals": "Të ardhur rishtas", "directory.recently_active": "Aktivë së fundi", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Këto janë postime më të freskëta publike nga persona llogaritë e të cilëve strehohen nga {domain}.", + "dismissable_banner.dismiss": "Hidhe tej", + "dismissable_banner.explore_links": "Këto histori të reja po tirren nga persona në këtë shërbyes dhe të tjerë të tillë të rrjetit të decentralizuar mu tani.", + "dismissable_banner.explore_statuses": "Këto postime nga ky shërbyes dhe të tjerë në rrjetin e decentralizuar po tërheqin vëmendjen tani.", + "dismissable_banner.explore_tags": "Këta hashtag-ë po tërheqin vëmendjen mes personave në këtë shërbyes dhe të tjerë të tillë të rrjetit të decentralizuar mu tani.", + "dismissable_banner.public_timeline": "Këto janë postimet publike më të freskëta nga persona në këtë shërbyes dhe të tjerë të rrejtit të decentralizuar për të cilët ky shërbyes ka dijeni.", "embed.instructions": "Trupëzojeni këtë gjendje në sajtin tuaj duke kopjuar kodin më poshtë.", "embed.preview": "Ja si do të duket:", "emoji_button.activity": "Veprimtari", @@ -254,18 +254,18 @@ "home.column_settings.show_replies": "Shfaq përgjigje", "home.hide_announcements": "Fshihi lajmërimet", "home.show_announcements": "Shfaqi lajmërimet", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Me një llogari në Mastodon, mund ta pëlqeni këtë postim, për t’i bërë të ditur autorit se e çmoni dhe e ruani për më vonë.", + "interaction_modal.description.follow": "Me një llogari në Mastodon, mund ta ndiqni {name} për të marrë postimet e tyre në prurjen tuaj të kreut.", + "interaction_modal.description.reblog": "Me një llogari në Mastodon, mund ta përforconi këtë postim për ta ndarë me ndjekësit tuaj.", + "interaction_modal.description.reply": "Me një llogari në Mastodon, mund t’i përgjigjeni këtij postimi.", + "interaction_modal.on_another_server": "Në një tjetër shërbyes", + "interaction_modal.on_this_server": "Në këtë shërbyes", + "interaction_modal.other_server_instructions": "Thjesht kopjojeni dhe ngjiteni këtë URL te shtylla e kërkimeve të aplikacionit tuaj apo ndërfaqes tuaj web të parapëlqyer, kur të jeni i futur në llogari.", + "interaction_modal.preamble": "Ngaqë Mastodon-i është i decentralizuar, mund të përdorni llogarinë tuaj ekzistuese të sterhuar nga një tjetër shërbyes Mastodon, ose platformë e përputhshme, nëse s’keni një llogari në këtë shërbyes.", + "interaction_modal.title.favourite": "Parapëlqejeni postimin e {name}", + "interaction_modal.title.follow": "Ndiq {name}", + "interaction_modal.title.reblog": "Përforconi postimin e {name}", + "interaction_modal.title.reply": "Përgjigjuni postimit të {name}", "intervals.full.days": "{number, plural, one {# ditë} other {# ditë}}", "intervals.full.hours": "{number, plural, one {# orë} other {# orë}}", "intervals.full.minutes": "{number, plural, one {# minutë} other {# minuta}}", @@ -424,8 +424,8 @@ "privacy.public.short": "Publik", "privacy.unlisted.long": "I dukshëm për të tërë, por lënë jashtë nga veçoritë e zbulimit", "privacy.unlisted.short": "Jo në lista", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Përditësuar së fundi më {date}", + "privacy_policy.title": "Rregulla Privatësie", "refresh": "Rifreskoje", "regeneration_indicator.label": "Po ngarkohet…", "regeneration_indicator.sublabel": "Prurja juaj vetjake po përgatitet!", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index ce9ca2023a..79d11933f8 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -151,12 +151,12 @@ "directory.local": "Yalnızca {domain} adresinden", "directory.new_arrivals": "Yeni gelenler", "directory.recently_active": "Son zamanlarda aktif", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Bunlar, {domain} sunucusunda hesabı olanların yakın zamandaki herkese açık gönderileridir.", + "dismissable_banner.dismiss": "Yoksay", + "dismissable_banner.explore_links": "Bunlar, ademi merkeziyetçi ağda bu ve diğer sunucularda şimdilerde insanların hakkında konuştuğu haber öyküleridir.", + "dismissable_banner.explore_statuses": "Ademi merkeziyetçi ağın bu ve diğer sunucularındaki bu gönderiler, mevcut sunucuda şimdilerde ilgi çekiyorlar.", + "dismissable_banner.explore_tags": "Bu etiketler, ademi merkeziyetçi ağdaki bu ve diğer sunuculardaki insanların şimdilerde ilgisini çekiyor.", + "dismissable_banner.public_timeline": "Bunlar, ademi merkeziyetçi ağdaki bu ve diğer sunuculardaki insanların son zamanlardaki herkese açık gönderilerinden bu sunucunun haberdar olduklarıdır.", "embed.instructions": "Aşağıdaki kodu kopyalayarak bu durumu sitenize gömün.", "embed.preview": "İşte nasıl görüneceği:", "emoji_button.activity": "Aktivite", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 46a6dddd05..c1eccbabce 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -151,12 +151,12 @@ "directory.local": "Лише з домену {domain}", "directory.new_arrivals": "Нові надходження", "directory.recently_active": "Нещодавно активні", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Це останні публічні дописи від людей, чиї облікові записи розміщені на {domain}.", + "dismissable_banner.dismiss": "Відхилити", + "dismissable_banner.explore_links": "Ці новини розповідають історії про людей на цих та інших серверах децентралізованої мережі прямо зараз.", + "dismissable_banner.explore_statuses": "Ці дописи з цього та інших серверів децентралізованої мережі зараз набирають популярності на цьому сервері.", + "dismissable_banner.explore_tags": "Ці хештеги зараз набирають популярності серед людей на цьому та інших серверах децентралізованої мережі.", + "dismissable_banner.public_timeline": "Це останні публічні дописи від людей на цьому та інших серверах децентралізованої мережі, про які відомо цьому серверу.", "embed.instructions": "Вбудуйте цей допис до вашого вебсайту, скопіювавши код нижче.", "embed.preview": "Ось як він виглядатиме:", "emoji_button.activity": "Діяльність", @@ -254,14 +254,14 @@ "home.column_settings.show_replies": "Показувати відповіді", "home.hide_announcements": "Приховати оголошення", "home.show_announcements": "Показати оголошення", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.favourite": "Маючи обліковий запис на Mastodon, ви можете вподобати цей допис, щоб дати автору знати, що ви його цінуєте, і зберегти його на потім.", + "interaction_modal.description.follow": "Маючи обліковий запис на Mastodon, ви можете підписатися на {name}, щоб отримувати дописи цього користувача у свою стрічку.", + "interaction_modal.description.reblog": "Маючи обліковий запис на Mastodon, ви можете поширити цей допис, щоб поділитися ним зі своїми підписниками.", + "interaction_modal.description.reply": "Маючи обліковий запис на Mastodon, ви можете відповісти на цей допис.", "interaction_modal.on_another_server": "На іншому сервері", "interaction_modal.on_this_server": "На цьому сервері", "interaction_modal.other_server_instructions": "Просто скопіюйте і вставте цей URL у панель пошуку вашого улюбленого застосунку або вебінтерфейсу, до якого ви ввійшли.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.preamble": "Оскільки Mastodon децентралізований, ви можете використовувати свій наявний обліковий запис, розміщений на іншому сервері Mastodon або сумісній платформі, якщо у вас немає облікового запису на цьому сервері.", "interaction_modal.title.favourite": "Вибраний допис {name}", "interaction_modal.title.follow": "Підписатися на {name}", "interaction_modal.title.reblog": "Пришвидшити пост {name}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 5b45c5d1cb..cac4082c40 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -26,7 +26,7 @@ "account.joined": "Đã tham gia {date}", "account.languages": "Đổi ngôn ngữ mong muốn", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", - "account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.", + "account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.", "account.media": "Media", "account.mention": "Nhắc đến @{name}", "account.moved_to": "{name} đã chuyển sang:", @@ -151,12 +151,12 @@ "directory.local": "Từ {domain}", "directory.new_arrivals": "Mới tham gia", "directory.recently_active": "Hoạt động gần đây", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Đây là những bài đăng gần đây của những người có tài khoản thuộc máy chủ {domain}.", + "dismissable_banner.dismiss": "Bỏ qua", + "dismissable_banner.explore_links": "Những câu chuyện mới này đang được mọi người bàn luận nhiều trên đây và những máy chủ khác của mạng lưới phi tập trung vào lúc này.", + "dismissable_banner.explore_statuses": "Những bài đăng này trên đây và những máy chủ khác của mạng lưới phi tập trung đang phổ biến trên máy chủ này ngay bây giờ.", + "dismissable_banner.explore_tags": "Những tag này đang được mọi người sử dụng nhiều trên đây và những máy chủ khác của mạng lưới phi tập trung vào lúc này.", + "dismissable_banner.public_timeline": "Đây là những bài đăng công khai gần đây nhất của những người trên đây và những máy chủ khác của mạng lưới phi tập trung mà máy chủ này biết.", "embed.instructions": "Sao chép đoạn mã dưới đây và chèn vào trang web của bạn.", "embed.preview": "Nó sẽ hiển thị như vầy:", "emoji_button.activity": "Hoạt động", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index c45269d6a2..3d12163c99 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -151,12 +151,12 @@ "directory.local": "僅來自 {domain} 網域", "directory.new_arrivals": "新人", "directory.recently_active": "最近活躍", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "這些是 {domain} 上面託管帳號之最新公開嘟文。", + "dismissable_banner.dismiss": "關閉", + "dismissable_banner.explore_links": "這些新聞故事正在被此伺服器以及去中心化網路上的人們熱烈討論著。", + "dismissable_banner.explore_statuses": "這些於這裡以及去中心化網路中其他伺服器發出的嘟文正在被此伺服器上的人們熱烈討論著。", + "dismissable_banner.explore_tags": "這些主題標籤正在被此伺服器以及去中心化網路上的人們熱烈討論著。", + "dismissable_banner.public_timeline": "這些是來自這裡以及去中心網路中其他已知伺服器之最新公開嘟文。", "embed.instructions": "要在您的網站嵌入此嘟文,請複製以下程式碼。", "embed.preview": "它將顯示成這樣:", "emoji_button.activity": "活動", diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index 06d63da7a7..3f25607b1f 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -38,9 +38,14 @@ ja: email: blocked: は禁止されているメールプロバイダを使用しています unreachable: は存在しないようです + role_id: + elevated: 現在と同じロールには変更できません user_role: attributes: permissions_as_keys: + dangerous: 基本ロールにとって安全でない権限を含みます + elevated: 現在のロールが所有していない権限は含めることはできません own_role: 現在と同じロールには変更できません position: + elevated: 現在と同じロールには変更できません own_role: 現在と同じロールには変更できません diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 0441b2a317..af335bc6c1 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1400,6 +1400,8 @@ es-MX: other: Otros posting_defaults: Configuración por defecto de publicaciones public_timelines: Líneas de tiempo públicas + privacy_policy: + title: Política de Privacidad reactions: errors: limit_reached: Límite de reacciones diferentes alcanzado diff --git a/config/locales/ja.yml b/config/locales/ja.yml index a8ec42890a..0493b22559 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -268,6 +268,7 @@ ja: approve_user_html: "%{target}から登録された%{name}さんを承認しました" assigned_to_self_report_html: "%{name}さんが通報 %{target}を自身の担当に割り当てました" change_email_user_html: "%{name}さんが%{target}さんのメールアドレスを変更しました" + change_role_user_html: "%{name}さんが%{target}さんのロールを変更しました" confirm_user_html: "%{name}さんが%{target}さんのメールアドレスを確認済みにしました" create_account_warning_html: "%{name}さんが%{target}さんに警告メールを送信しました" create_announcement_html: "%{name}さんが新しいお知らせ %{target}を作成しました" @@ -277,8 +278,10 @@ ja: create_email_domain_block_html: "%{name}さんが%{target}をメールドメインブロックに追加しました" create_ip_block_html: "%{name}さんがIP %{target}のルールを作成しました" create_unavailable_domain_html: "%{name}がドメイン %{target}への配送を停止しました" + create_user_role_html: "%{name}さんがロール『%{target}』を作成しました" demote_user_html: "%{name}さんが%{target}さんを降格しました" destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました" + destroy_custom_emoji_html: "%{name}さんがカスタム絵文字『%{target}』を削除しました" destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました" destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました" destroy_email_domain_block_html: "%{name}さんが%{target}をメールドメインブロックから外しました" @@ -286,6 +289,7 @@ ja: destroy_ip_block_html: "%{name}さんが IP %{target}のルールを削除しました" destroy_status_html: "%{name}さんが%{target}さんの投稿を削除しました" destroy_unavailable_domain_html: "%{name}がドメイン %{target}への配送を再開しました" + destroy_user_role_html: "%{name}さんがロール『%{target}』を削除しました" disable_2fa_user_html: "%{name}さんが%{target}さんの二要素認証を無効化しました" disable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を無効化しました" disable_sign_in_token_auth_user_html: "%{name}さんが%{target}さんのメールトークン認証を無効にしました" @@ -313,6 +317,7 @@ ja: update_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を更新しました" update_domain_block_html: "%{name}さんが%{target}のドメインブロックを更新しました" update_status_html: "%{name}さんが%{target}さんの投稿を更新しました" + update_user_role_html: "%{name}さんがロール『%{target}』を変更しました" empty: ログが見つかりませんでした filter_by_action: アクションでフィルター filter_by_user: ユーザーでフィルター @@ -404,6 +409,7 @@ ja: destroyed_msg: ドメインブロックを外しました domain: ドメイン edit: ドメインブロックを編集 + existing_domain_block: あなたは既に%{name}さんに厳しい制限を課しています。 existing_domain_block_html: 既に%{name}に対して、より厳しい制限を課しています。先にその制限を解除する必要があります。 new: create: ブロックを作成 @@ -625,6 +631,7 @@ ja: devops: 開発者 invites: 招待 moderation: モデレーション + special: スペシャル delete: 削除 description_html: "ユーザー ロールを使用すると、ユーザーがアクセスできる Mastodon の機能や領域をカスタマイズできます。" edit: "『%{name}』のロールを編集" @@ -858,6 +865,8 @@ ja: edit: エンドポイントを編集 enable: 有効化 enabled: アクティブ + enabled_events: + other: "%{count}件の有効なイベント" events: イベント new: 新しいwebhook status: ステータス @@ -926,6 +935,7 @@ ja: warning: このデータは気をつけて取り扱ってください。他の人と共有しないでください! your_token: アクセストークン auth: + apply_for_account: ウェイトリストを取得する change_password: パスワード delete_account: アカウントの削除 delete_account_html: アカウントを削除したい場合、こちらから手続きが行えます。削除する前に、確認画面があります。 @@ -1103,6 +1113,7 @@ ja: edit: add_keyword: キーワードを追加 keywords: キーワード + statuses: 個別の投稿 title: フィルターを編集 errors: invalid_context: 対象がないか無効です @@ -1116,10 +1127,18 @@ ja: other: "%{count}件のキーワード" statuses: other: "%{count}件の投稿" + statuses_long: + other: "%{count}件の投稿を非表示にしました" title: フィルター new: save: 新規フィルターを保存 title: 新規フィルターを追加 + statuses: + back_to_filter: フィルタに戻る + batch: + remove: フィルターから削除する + index: + title: フィルターされた投稿 footer: developers: 開発者向け more: さらに… @@ -1130,6 +1149,7 @@ ja: changes_saved_msg: 正常に変更されました! copy: コピー delete: 削除 + deselect: 選択解除 none: なし order_by: 並び順 save_changes: 変更を保存 @@ -1310,6 +1330,8 @@ ja: other: その他 posting_defaults: デフォルトの投稿設定 public_timelines: 公開タイムライン + privacy_policy: + title: プライバシーポリシー reactions: errors: limit_reached: リアクションの種類が上限に達しました diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 3b2af4e56a..672584d4f0 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1400,6 +1400,8 @@ pt-PT: other: Outro posting_defaults: Padrões de publicação public_timelines: Cronologias públicas + privacy_policy: + title: Política de Privacidade reactions: errors: limit_reached: Limite de reações diferentes atingido @@ -1687,8 +1689,10 @@ pt-PT: suspend: Conta suspensa welcome: edit_profile_action: Configurar o perfil + edit_profile_step: Pode personalizar o seu perfil carregando uma imagem de perfil, alterando o nome a exibir, entre outras opções. Pode optar por rever os novos seguidores antes de estes o poderem seguir. explanation: Aqui estão algumas dicas para começar final_action: Começar a publicar + final_step: 'Comece a publicar! Mesmo sem seguidores, as suas mensagens públicas podem ser vistas por outros, por exemplo, na cronologia local e em hashtags. Pode querer apresentar-se utilizando a hashtag #introduções ou #introductions.' full_handle: O seu nome completo full_handle_hint: Isto é o que tem de facultar aos seus amigos para que eles lhe possam enviar mensagens ou seguir a partir de outra instância. subject: Bem-vindo ao Mastodon diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 559185c2cd..787739d7ac 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -73,6 +73,10 @@ ca: actions: hide: Ocultar completament el contingut filtrat, comportant-se com si no existís warn: Oculta el contingut filtrat rera un avís mencionant el títol del filtre + form_admin_settings: + backups_retention_period: Mantenir els arxius d'usuari generats durant el número de dies especificats. + content_cache_retention_period: Els apunts des d'altres servidors s'esborraran després del número de dies especificat quan es configura un valor positiu. Això pot ser irreversible. + media_cache_retention_period: Els fitxers multimèdia descarregats s'esborraran després del número de dies especificat quan el valor configurat és positiu, i tornats a descarregats sota demanda. form_challenge: current_password: Estàs entrant en una àrea segura imports: @@ -207,6 +211,10 @@ ca: actions: hide: Oculta completament warn: Oculta amb un avís + form_admin_settings: + backups_retention_period: Període de retenció del arxiu d'usuari + content_cache_retention_period: Periode de retenció de la memòria cau de contingut + media_cache_retention_period: Període de retenció del cau multimèdia interactions: must_be_follower: Bloqueja les notificacions de persones que no em segueixen must_be_following: Bloqueja les notificacions de persones no seguides diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index abbe91160d..b5b788bd56 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -73,6 +73,10 @@ cs: actions: hide: Úplně schovat filtrovaný obsah tak, jako by neexistoval warn: Schovat filtrovaný obsah za varováním zmiňujicím název filtru + form_admin_settings: + backups_retention_period: Zachovat generované uživatelské archivy pro zadaný počet dní. + content_cache_retention_period: Příspěvky z jiných serverů budou odstraněny po zadaném počtu dní, pokud je nastavena kladná hodnota. To může být nevratné. + media_cache_retention_period: Stažené mediální soubory budou po zadaném počtu dní odstraněny, pokud je nastavena kladná hodnota, a na požádání znovu staženy. form_challenge: current_password: Vstupujete do zabezpečeného prostoru imports: @@ -207,6 +211,10 @@ cs: actions: hide: Zcela skrýt warn: Skrýt s varováním + form_admin_settings: + backups_retention_period: Doba uchovávání archivu uživatelů + content_cache_retention_period: Doba uchování mezipaměti obsahu + media_cache_retention_period: Doba uchovávání mezipaměti médií interactions: must_be_follower: Blokovat oznámení od lidí, kteří vás nesledují must_be_following: Blokovat oznámení od lidí, které nesledujete diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 5de688e128..37ecad9c8b 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -73,6 +73,10 @@ da: actions: hide: Skjul filtreret indhold helt (adfærd som om, det ikke fandtes) warn: Skjul filtreret indhold bag en advarsel, der nævner filterets titel + form_admin_settings: + backups_retention_period: Behold genererede brugerarkiver i det angivne antal dage. + content_cache_retention_period: Indlæg fra andre servere slettes efter det angivne antal dage, når sat til en positiv værdi. Dette kan være irreversibelt. + media_cache_retention_period: Downloadede mediefiler slettes efter det angivne antal dage, når sat til en positiv værdi, og gendownloades på forlangende. form_challenge: current_password: Du bevæger dig ind på et sikkert område imports: @@ -207,6 +211,10 @@ da: actions: hide: Skjul helt warn: Skjul bag en advarsel + form_admin_settings: + backups_retention_period: Brugerarkivs opbevaringsperiode + content_cache_retention_period: Indholds-cache opbevaringsperiode + media_cache_retention_period: Media-cache opbevaringsperiode interactions: must_be_follower: Blokér notifikationer fra ikke-følgere must_be_following: Blokér notifikationer fra folk, som ikke følges diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index e116925168..e479970b29 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -73,6 +73,10 @@ es-AR: actions: hide: Ocultar completamente el contenido filtrado, comportándose como si no existiera warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro + form_admin_settings: + backups_retention_period: Conservar los archivos historiales generados por el usuario durante el número de días especificado. + content_cache_retention_period: Los mensajes de otros servidores se eliminarán después del número especificado de días cuando se establezca un valor positivo. Esto puede ser irreversible. + media_cache_retention_period: Los archivos de medios descargados se eliminarán después del número especificado de días cuando se establezca un valor positivo, y se volverán a descargar a pedido. form_challenge: current_password: Estás ingresando en un área segura imports: @@ -207,6 +211,10 @@ es-AR: actions: hide: Ocultar completamente warn: Ocultar con una advertencia + form_admin_settings: + backups_retention_period: Período de retención del archivo historial del usuario + content_cache_retention_period: Período de retención de la caché de contenido + media_cache_retention_period: Período de retención de la caché de medios interactions: must_be_follower: Bloquear notificaciones de cuentas que no te siguen must_be_following: Bloquear notificaciones de cuentas que no seguís diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 03357e44b3..fef4595d4b 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -73,6 +73,10 @@ es: actions: hide: Ocultar completamente el contenido filtrado, comportándose como si no existiera warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro + form_admin_settings: + backups_retention_period: Mantener los archivos de usuario generados durante el número de días especificado. + content_cache_retention_period: Las publicaciones de otros servidores se eliminarán después del número especificado de días cuando se establezca un valor positivo. Esto puede ser irreversible. + media_cache_retention_period: Los archivos multimedia descargados se eliminarán después del número especificado de días cuando se establezca un valor positivo, y se redescargarán bajo demanda. form_challenge: current_password: Estás entrando en un área segura imports: @@ -207,6 +211,10 @@ es: actions: hide: Ocultar completamente warn: Ocultar con una advertencia + form_admin_settings: + backups_retention_period: Período de retención del archivo de usuario + content_cache_retention_period: Período de retención de caché de contenido + media_cache_retention_period: Período de retención de caché multimedia interactions: must_be_follower: Bloquear notificaciones de personas que no te siguen must_be_following: Bloquear notificaciones de personas que no sigues diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 16465ff793..050533ace9 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -207,6 +207,10 @@ hu: actions: hide: Teljes elrejtés warn: Elrejtés figyelmeztetéssel + form_admin_settings: + backups_retention_period: Felhasználói archívum megtartási időszaka + content_cache_retention_period: Tartalom-gyorsítótár megtartási időszaka + media_cache_retention_period: Média-gyorsítótár megtartási időszaka interactions: must_be_follower: Nem követőidtől érkező értesítések tiltása must_be_following: Nem követettjeidtől érkező értesítések tiltása diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index aeabbcdfd4..8cb8d7b85d 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -73,6 +73,10 @@ it: actions: hide: Nascondi completamente il contenuto filtrato, come se non esistesse warn: Nascondi il contenuto filtrato e mostra invece un avviso, citando il titolo del filtro + form_admin_settings: + backups_retention_period: Conserva gli archivi utente generati per il numero di giorni specificato. + content_cache_retention_period: I post da altri server verranno eliminati dopo il numero di giorni specificato se impostato su un valore positivo. Questo potrebbe essere irreversibile. + media_cache_retention_period: I file multimediali scaricati verranno eliminati dopo il numero di giorni specificato se impostati su un valore positivo e scaricati nuovamente su richiesta. form_challenge: current_password: Stai entrando in un'area sicura imports: @@ -207,6 +211,10 @@ it: actions: hide: Nascondi completamente warn: Nascondi con avviso + form_admin_settings: + backups_retention_period: Periodo di conservazione dell'archivio utente + content_cache_retention_period: Periodo di conservazione della cache dei contenuti + media_cache_retention_period: Periodo di conservazione della cache multimediale interactions: must_be_follower: Blocca notifiche da chi non ti segue must_be_following: Blocca notifiche dalle persone che non segui diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index b4785c54b3..312393a068 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -68,6 +68,10 @@ ja: with_dns_records: 指定したドメインのDNSレコードを取得し、その結果もメールドメインブロックに登録されます featured_tag: name: 'これらを使うといいかもしれません:' + form_admin_settings: + backups_retention_period: 生成されたユーザーのアーカイブを指定した日数の間保持します。 + content_cache_retention_period: 正の値に設定されている場合、他のサーバーの投稿は指定された日数の後に削除されます。元に戻せません。 + media_cache_retention_period: 正の値に設定されている場合、ダウンロードされたメディアファイルは指定された日数の後に削除され、リクエストに応じて再ダウンロードされます。 form_challenge: current_password: セキュリティ上重要なエリアにアクセスしています imports: @@ -80,6 +84,7 @@ ja: ip: IPv4またはIPv6アドレスを入力してください。CIDR構文を用いて範囲指定でブロックすることもできます。自分自身を締め出さないよう注意してください! severities: no_access: すべてのリソースへのアクセスをブロックします + sign_up_block: 新規のアカウント作成はできません sign_up_requires_approval: 承認するまで新規登録が完了しなくなります severity: このIPに対する措置を選択してください rule: @@ -91,10 +96,14 @@ ja: name: 視認性向上などのためにアルファベット大文字小文字の変更のみ行うことができます user: chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります + role: このロールはユーザーが持つ権限を管理します user_role: highlighted: これによりロールが公開されます。 name: ロールのバッジを表示する際の表示名 permissions_as_keys: このロールを持つユーザーは次の機能にアクセスできます + webhook: + events: 送信するイベントを選択 + url: イベントの送信先 labels: account: fields: @@ -191,6 +200,13 @@ ja: with_dns_records: ドメインのMXレコードとIPアドレスを含む featured_tag: name: ハッシュタグ + filters: + actions: + warn: 警告付きで隠す + form_admin_settings: + backups_retention_period: ユーザーアーカイブの保持期間 + content_cache_retention_period: コンテンツキャッシュの保持期間 + media_cache_retention_period: メディアキャッシュの保持期間 interactions: must_be_follower: フォロワー以外からの通知をブロック must_be_following: フォローしていないユーザーからの通知をブロック @@ -204,6 +220,7 @@ ja: ip: IP severities: no_access: ブロック + sign_up_block: アカウント作成をブロック sign_up_requires_approval: 登録を制限 severity: ルール notification_emails: diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index e4b0f07596..65cb504edd 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -75,6 +75,10 @@ ku: actions: hide: Naveroka parzûnkirî bi tevahî veşêre, mîna ku ew tune be tevbigere warn: Naveroka parzûnkirî li pişt hişyariyek ku sernavê parzûnê qal dike veşêre + form_admin_settings: + backups_retention_period: Arşîvên bikarhênerên çêkirî ji bo rojên diyarkirî tomar bike. + content_cache_retention_period: Şandiyên ji rajekarên din wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin. Dibe ku ev bê veger be. + media_cache_retention_period: Pelên medyayê yên daxistî wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin, û li gorî daxwazê ​​ji nû ve werin daxistin. form_challenge: current_password: Tu dikevî qadeke ewledar imports: @@ -209,6 +213,10 @@ ku: actions: hide: Bi tevahî veşêre warn: Bi hişyariyekê veşêre + form_admin_settings: + backups_retention_period: Serdema tomarkirina arşîva bikarhêner + content_cache_retention_period: Serdema tomarkirina bîrdanka naverokê + media_cache_retention_period: Serdema tomarkirina bîrdanka medyayê interactions: must_be_follower: Danezanên ji kesên ku ne şopînerên min tên asteng bike must_be_following: Agahdariyan asteng bike ji kesên ku tu wan naşopînî diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index cff70297e3..899392b101 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -73,6 +73,10 @@ lv: actions: hide: Paslēp filtrēto saturu pilnībā, izturoties tā, it kā tas neeksistētu warn: Paslēp filtrēto saturu aiz brīdinājuma, kurā minēts filtra nosaukums + form_admin_settings: + backups_retention_period: Saglabā ģenerētos lietotāju arhīvus norādīto dienu skaitā. + content_cache_retention_period: Ziņas no citiem serveriem tiks dzēstas pēc norādītā dienu skaita, ja ir iestatīta pozitīva vērtība. Tas var būt neatgriezeniski. + media_cache_retention_period: Lejupielādētie multivides faili tiks dzēsti pēc norādītā dienu skaita, kad tie būs iestatīti uz pozitīvu vērtību, un pēc pieprasījuma tiks lejupielādēti atkārtoti. form_challenge: current_password: Tu ieej drošā zonā imports: @@ -207,6 +211,10 @@ lv: actions: hide: Paslēpt pilnībā warn: Paslēpt ar brīdinājumu + form_admin_settings: + backups_retention_period: Lietotāja arhīva glabāšanas periods + content_cache_retention_period: Satura arhīva glabāšanas periods + media_cache_retention_period: Multivides kešatmiņas saglabāšanas periods interactions: must_be_follower: Bloķēt paziņojumus no ne-sekotājiem must_be_following: Bloķēt paziņojumus no cilvēkiem, kuriem tu neseko diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 665ac6af13..aae28cb202 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -73,6 +73,10 @@ pl: actions: hide: Całkowicie ukryj przefiltrowaną zawartość, jakby nie istniała warn: Ukryj filtrowaną zawartość za ostrzeżeniem wskazującym tytuł filtra + form_admin_settings: + backups_retention_period: Zachowaj wygenerowane archiwa użytkownika przez określoną liczbę dni. + content_cache_retention_period: Posty z innych serwerów zostaną usunięte po określonej liczbie dni, kiedy liczba jest ustawiona na wartość dodatnią. Może to być nieodwracalne. + media_cache_retention_period: Pobrane pliki multimedialne zostaną usunięte po określonej liczbie dni po ustawieniu na wartość dodatnią i ponownie pobrane na żądanie. form_challenge: current_password: Wchodzisz w strefę bezpieczną imports: @@ -207,6 +211,10 @@ pl: actions: hide: Ukryj całkowicie warn: Ukryj z ostrzeżeniem + form_admin_settings: + backups_retention_period: Okres przechowywania archiwum użytkownika + content_cache_retention_period: Okres przechowywania pamięci podręcznej + media_cache_retention_period: Okres przechowywania pamięci podręcznej interactions: must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 8c56bd2d27..bf10ee0959 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -73,6 +73,10 @@ pt-PT: actions: hide: Ocultar completamente o conteúdo filtrado, comportando-se como se não existisse warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro + form_admin_settings: + backups_retention_period: Manter os arquivos gerados pelos utilizadores por um número específico de dias. + content_cache_retention_period: Publicações de outros servidores serão excluídos após o número de dias especificado, quando definido com um valor positivo. Isso pode ser irreversível. + media_cache_retention_period: Os ficheiros de media descarregados serão excluídos após o número de dias especificado, quando definido com um valor positivo, e descarregados novamente quando solicitados. form_challenge: current_password: Está a entrar numa área restrita imports: @@ -207,6 +211,10 @@ pt-PT: actions: hide: Ocultar por completo warn: Ocultar com um aviso + form_admin_settings: + backups_retention_period: Período de retenção de arquivos de utilizador + content_cache_retention_period: Período de retenção de conteúdo em cache + media_cache_retention_period: Período de retenção de ficheiros de media em cache interactions: must_be_follower: Bloquear notificações de não-seguidores must_be_following: Bloquear notificações de pessoas que não segues diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 2724b1727f..1826801b8e 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -73,6 +73,10 @@ sl: actions: hide: Povsem skrij filtrirano vsebino, kot da ne bi obstajala warn: Skrij filtrirano vsebino za opozorilom, ki pomenja naslov filtra + form_admin_settings: + backups_retention_period: Hani tvorjene arhive uporabnikov navedeno število dni. + content_cache_retention_period: Objave z drugih strežnikov bodo izbrisane po navedenem številu dni, če je vrednost pozitivna. Ta dejanja lahko nepovratna. + media_cache_retention_period: Prenesene predstavnostne datoteke bodo izbrisane po navedenem številu dni, če je vrednost pozitivna, in ponovno prenesene na zahtevo. form_challenge: current_password: Vstopate v varovano območje imports: @@ -207,6 +211,10 @@ sl: actions: hide: Povsem skrij warn: Skrij z opozorilom + form_admin_settings: + backups_retention_period: Obdobje hrambe arhivov uporabnikov + content_cache_retention_period: Obdobje hrambe predpomnilnika vsebine + media_cache_retention_period: Obdobje hrambe predpomnilnika predstavnosti interactions: must_be_follower: Blokiraj obvestila nesledilcev must_be_following: Blokiraj obvestila oseb, ki jim ne sledite diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 0c0cd49985..bc0890e0d6 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -73,6 +73,10 @@ sq: actions: hide: Fshihe plotësisht lëndën e filtruar, duke u sjellë sikur të mos ekzistonte warn: Fshihe lëndën e filtruar pas një sinjalizimi që përmend titullin e filtrit + form_admin_settings: + backups_retention_period: Mbaji arkivat e prodhuara të përdoruesve për aq ditë sa numri i dhënë. + content_cache_retention_period: Postimet prej shërbyesve të tjerë do të fshihen pas numrit të dhënë të ditëve, kur këtij i jepet një vlerë pozitive. Kjo mund të jetë e pakthyeshme. + media_cache_retention_period: Kartelat media të shkarkuara do të fshihen pas numrit të dhënë të ditëve, kur këtij i jepet një vlerë pozitive dhe rishkarkohen po u kërkua. form_challenge: current_password: Po hyni në një zonë të sigurt imports: @@ -207,6 +211,10 @@ sq: actions: hide: Fshihe plotësisht warn: Fshihe me një sinjalizim + form_admin_settings: + backups_retention_period: Periudhë mbajtjeje arkivash përdoruesish + content_cache_retention_period: Periudhë mbajtjeje lënde fshehtine + media_cache_retention_period: Periudhë mbajtjeje lënde media interactions: must_be_follower: Blloko njoftime nga jo-ndjekës must_be_following: Blloko njoftime nga persona që s’i ndiqni diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index d88e345834..369db338a3 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -73,6 +73,10 @@ tr: actions: hide: Filtrelenmiş içeriği tamamen gizle, sanki varolmamış gibi warn: Filtrelenmiş içeriği, filtrenin başlığından söz eden bir uyarının arkasında gizle + form_admin_settings: + backups_retention_period: Üretilen kullanıcı arşivlerini belirli gün sayısı kadar sakla. + content_cache_retention_period: Pozitif bir sayı girildiğinde, diğer sunuculardan gelen gönderiler belirli bir gün sonra silinecektir. Silme geri alınamayabilir. + media_cache_retention_period: Pozitif bir sayı girildiğinde, diğer sunuculardan indirilen medya dosyaları belirli bir gün sonra silinecektir, isteğe bağlı olarak tekrar indirilebilir. form_challenge: current_password: Güvenli bir bölgeye giriyorsunuz imports: @@ -207,6 +211,10 @@ tr: actions: hide: Tamamen gizle warn: Uyarıyla gizle + form_admin_settings: + backups_retention_period: Kullanıcı arşivi saklama süresi + content_cache_retention_period: İçerik önbelleği saklama süresi + media_cache_retention_period: Medya önbelleği saklama süresi interactions: must_be_follower: Takipçim olmayan kişilerden gelen bildirimleri engelle must_be_following: Takip etmediğim kişilerden gelen bildirimleri engelle diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 3f12b6d6e7..3576d8eefe 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -73,6 +73,10 @@ uk: actions: hide: Повністю сховати фільтрований вміст, ніби його не існує warn: Сховати відфільтрований вміст за попередженням, у якому вказано заголовок фільтра + form_admin_settings: + backups_retention_period: Зберігати створені архіви користувача вказану кількість днів. + content_cache_retention_period: Матеріали з інших серверів будуть видалені після вказаної кількості днів, коли встановлено позитивне значення. Ця дія може бути незворотна. + media_cache_retention_period: Завантажені медіафайли будуть видалені після вказаної кількості днів після встановлення додатного значення та повторного завантаження за запитом. form_challenge: current_password: Ви входите до безпечної зони imports: @@ -207,6 +211,10 @@ uk: actions: hide: Сховати повністю warn: Сховати за попередженням + form_admin_settings: + backups_retention_period: Період утримання архіву користувача + content_cache_retention_period: Час зберігання кешу контенту + media_cache_retention_period: Період збереження кешу медіа interactions: must_be_follower: Блокувати сповіщення від непідписаних людей must_be_following: Блокувати сповіщення від людей, на яких ви не підписані diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index b5eb3e8c1f..5b3b4fcce3 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -73,6 +73,10 @@ zh-TW: actions: hide: 完全隱藏過濾內容,當作它似乎不曾存在過 warn: 隱藏過濾內容於過濾器標題之警告後 + form_admin_settings: + backups_retention_period: 將已產生的使用者封存資料保存特定天數。 + content_cache_retention_period: 當設定成正值時,從其他伺服器而來的嘟文會於指定天數後被刪除。這項操作可能是不可逆的。 + media_cache_retention_period: 當設定成正值時,已下載的多媒體檔案會於指定天數後被刪除,並且視需要重新下載。 form_challenge: current_password: 您正要進入安全區域 imports: @@ -207,6 +211,10 @@ zh-TW: actions: hide: 完全隱藏 warn: 隱藏於警告之後 + form_admin_settings: + backups_retention_period: 使用者封存資料保留期間 + content_cache_retention_period: 內容快取資料保留期間 + media_cache_retention_period: 多媒體快取資料保留期間 interactions: must_be_follower: 封鎖非跟隨者的通知 must_be_following: 封鎖您未跟隨之使用者的通知 diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 03f0a14d43..db07a8ea35 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1395,6 +1395,8 @@ sq: other: Tjetër posting_defaults: Parazgjedhje postimesh public_timelines: Rrjedha kohore publike + privacy_policy: + title: Rregulla Privatësie reactions: errors: limit_reached: U mbërrit në kufirin e reagimeve të ndryshme diff --git a/config/locales/uk.yml b/config/locales/uk.yml index a8331b8c51..8821a99e54 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -493,6 +493,11 @@ uk: unsuppress: Відновити поради щодо підписок instances: availability: + description_html: + few: Якщо доставлення до домену не вдалася за %{count} інших дні, жодних спроб доставлення не здійснюється, доки доставлення від домену не отримуватиметься. + many: Якщо доставлення до домену не вдалася за %{count} інших днів, жодних спроб доставлення не здійснюється, доки доставлення від домену не отримуватиметься. + one: Якщо доставлення до домену не вдалася %{count} день, жодних спроб доставлення не здійснюється, доки доставлення від домену не отримуватиметься. + other: Якщо доставлення до домену не вдалася за %{count} інших днів, жодних спроб доставлення не здійснюється, доки доставлення від домену не отримуватиметься. failure_threshold_reached: Досягнуто поріг допустимих помилок станом на %{date}. failures_recorded: few: Невдалих спроб за %{count} різні дні. From adf6fdf0a92850996bebd1ecf21d07960cae6a05 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:45:39 +0900 Subject: [PATCH 037/500] Bump @babel/runtime from 7.19.0 to 7.19.4 (#19343) Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.19.0 to 7.19.4. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.4/packages/babel-runtime) --- updated-dependencies: - dependency-name: "@babel/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 65467b71d8..36587cc145 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@babel/plugin-transform-runtime": "^7.19.1", "@babel/preset-env": "^7.19.3", "@babel/preset-react": "^7.18.6", - "@babel/runtime": "^7.19.0", + "@babel/runtime": "^7.19.4", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.7", diff --git a/yarn.lock b/yarn.lock index 5743a461ca..9610b357b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1100,10 +1100,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" - integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.4", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.4.tgz#a42f814502ee467d55b38dd1c256f53a7b885c78" + integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA== dependencies: regenerator-runtime "^0.13.4" From d868c1ced5356e4b07bc1077030c779b7dbe37c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:46:03 +0900 Subject: [PATCH 038/500] Bump @babel/preset-env from 7.19.3 to 7.19.4 (#19339) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.19.3 to 7.19.4. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.4/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 78 ++++++++++++++++++++++++++-------------------------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 36587cc145..361b812c78 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@babel/plugin-proposal-decorators": "^7.19.3", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.19.1", - "@babel/preset-env": "^7.19.3", + "@babel/preset-env": "^7.19.4", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.19.4", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index 9610b357b6..aa36e28392 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,10 +37,10 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151" - integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.3", "@babel/compat-data@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.4.tgz#95c86de137bf0317f3a570e1b6e996b427299747" + integrity sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw== "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.3", "@babel/core@^7.7.2": version "7.19.3" @@ -295,10 +295,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" @@ -474,14 +474,14 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== +"@babel/plugin-proposal-object-rest-spread@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz#a8fc86e8180ff57290c91a75d83fe658189b642d" + integrity sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q== dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/compat-data" "^7.19.4" + "@babel/helper-compilation-targets" "^7.19.3" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.18.8" @@ -698,12 +698,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== +"@babel/plugin-transform-block-scoping@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz#315d70f68ce64426db379a3d830e7ac30be02e9b" + integrity sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-classes@^7.19.0": version "7.19.0" @@ -727,12 +727,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.18.13": - version "7.18.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" - integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== +"@babel/plugin-transform-destructuring@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz#46890722687b9b89e1369ad0bd8dc6c5a3b4319d" + integrity sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" @@ -981,12 +981,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.3.tgz#52cd19abaecb3f176a4ff9cc5e15b7bf06bec754" - integrity sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w== +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.4.tgz#4c91ce2e1f994f717efb4237891c3ad2d808c94b" + integrity sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg== dependencies: - "@babel/compat-data" "^7.19.3" + "@babel/compat-data" "^7.19.4" "@babel/helper-compilation-targets" "^7.19.3" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-validator-option" "^7.18.6" @@ -1001,7 +1001,7 @@ "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-object-rest-spread" "^7.19.4" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-private-methods" "^7.18.6" @@ -1025,10 +1025,10 @@ "@babel/plugin-transform-arrow-functions" "^7.18.6" "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-block-scoping" "^7.19.4" "@babel/plugin-transform-classes" "^7.19.0" "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.13" + "@babel/plugin-transform-destructuring" "^7.19.4" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" @@ -1055,7 +1055,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.19.3" + "@babel/types" "^7.19.4" babel-plugin-polyfill-corejs2 "^0.3.3" babel-plugin-polyfill-corejs3 "^0.6.0" babel-plugin-polyfill-regenerator "^0.4.1" @@ -1132,12 +1132,12 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.3.tgz#fc420e6bbe54880bce6779ffaf315f5e43ec9624" - integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.4.tgz#0dd5c91c573a202d600490a35b33246fed8a41c7" + integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== dependencies: - "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" From 7f036be1699f2f6c31908ced4e17629ac099786b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:46:28 +0900 Subject: [PATCH 039/500] Bump eslint-plugin-react from 7.31.8 to 7.31.9 (#19342) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.31.8 to 7.31.9. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.31.8...v7.31.9) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 361b812c78..cb35b1d290 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.0.1", - "eslint-plugin-react": "~7.31.8", + "eslint-plugin-react": "~7.31.9", "jest": "^29.1.2", "jest-environment-jsdom": "^29.1.2", "postcss-scss": "^4.0.5", diff --git a/yarn.lock b/yarn.lock index aa36e28392..7fbd2b653d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4638,10 +4638,10 @@ eslint-plugin-promise@~6.0.1: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== -eslint-plugin-react@~7.31.8: - version "7.31.8" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" - integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== +eslint-plugin-react@~7.31.9: + version "7.31.9" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.9.tgz#7474ad4e21db368f61d17e1f2e78d43dbbdd50b2" + integrity sha512-vrVJwusIw4L99lyfXjtCw8HWdloajsiYslMavogrBe2Gl8gr95TJsJnOMRasN4b4N24I3XuJf6aAV6MhyGmjqw== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" From de345e70d83bbe9d1122321ab369c32d4a97d06d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:46:58 +0900 Subject: [PATCH 040/500] Bump express from 4.18.1 to 4.18.2 (#19340) Bumps [express](https://github.com/expressjs/express) from 4.18.1 to 4.18.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.1...4.18.2) --- updated-dependencies: - dependency-name: express dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index cb35b1d290..d449732830 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "es6-symbol": "^3.1.3", "escape-html": "^1.0.3", "exif-js": "^2.3.0", - "express": "^4.18.1", + "express": "^4.18.2", "file-loader": "^6.2.0", "font-awesome": "^4.7.0", "fuzzysort": "^1.9.0", diff --git a/yarn.lock b/yarn.lock index 7fbd2b653d..d31ba7e868 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2861,10 +2861,10 @@ bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" content-type "~1.0.4" @@ -2874,7 +2874,7 @@ body-parser@1.20.0: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.10.3" + qs "6.11.0" raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" @@ -4884,14 +4884,14 @@ expect@^29.1.2: jest-message-util "^29.1.2" jest-util "^29.1.2" -express@^4.17.1, express@^4.18.1: - version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== +express@^4.17.1, express@^4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.0" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.5.0" @@ -4910,7 +4910,7 @@ express@^4.17.1, express@^4.18.1: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.10.3" + qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.18.0" @@ -9085,10 +9085,10 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" From 5f6c0d63e3f9e90d57204126409bbda539e352d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 06:30:38 +0900 Subject: [PATCH 041/500] Bump axios from 0.27.2 to 1.1.2 (#19341) Bumps [axios](https://github.com/axios/axios) from 0.27.2 to 1.1.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.27.2...v1.1.2) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index d449732830..f4d41c64cd 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "array-includes": "^3.1.5", "arrow-key-navigation": "^1.2.0", "autoprefixer": "^9.8.8", - "axios": "^0.27.2", + "axios": "^1.1.2", "babel-loader": "^8.2.5", "babel-plugin-lodash": "^3.3.4", "babel-plugin-preval": "^5.1.0", diff --git a/yarn.lock b/yarn.lock index d31ba7e868..d44d495c95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2610,13 +2610,14 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== -axios@^0.27.2: - version "0.27.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" - integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== +axios@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.2.tgz#8b6f6c540abf44ab98d9904e8daf55351ca4a331" + integrity sha512-bznQyETwElsXl2RK7HLLwb5GPpOLlycxHCtrpDR/4RqqBzjARaOTo3jz4IgtntWUYee7Ne4S8UHd92VCuzPaWA== dependencies: - follow-redirects "^1.14.9" + follow-redirects "^1.15.0" form-data "^4.0.0" + proxy-from-env "^1.1.0" axobject-query@^2.2.0: version "2.2.0" @@ -5152,10 +5153,10 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.14.9: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== +follow-redirects@^1.0.0, follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== font-awesome@^4.7.0: version "4.7.0" @@ -9018,6 +9019,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" From 7afc6a630c76fb071bd189af3ac1366efc82f819 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 13 Oct 2022 04:07:30 +0900 Subject: [PATCH 042/500] Redirect non-logged-in user to owner statuses on single user mode (#19333) --- app/helpers/application_helper.rb | 4 + app/javascript/mastodon/features/ui/index.js | 4 +- app/javascript/mastodon/initial_state.js | 80 +++++++++++++++----- app/presenters/initial_state_presenter.rb | 2 +- app/serializers/initial_state_serializer.rb | 6 ++ spec/views/statuses/show.html.haml_spec.rb | 1 + 6 files changed, 77 insertions(+), 20 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 23884fbd4a..9cc34cab61 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -211,6 +211,10 @@ module ApplicationHelper state_params[:admin] = Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, '')) end + if single_user_mode? + state_params[:owner] = Account.local.without_suspended.where('id > 0').first + end + json = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(state_params), serializer: InitialStateSerializer).to_json # rubocop:disable Rails/OutputSafety content_tag(:script, json_escape(json).html_safe, id: 'initial-state', type: 'application/json') diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 2edd3b9fe2..8333ea2829 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -54,7 +54,7 @@ import { About, PrivacyPolicy, } from './util/async-components'; -import { me } from '../../initial_state'; +import initialState, { me, owner, singleUserMode } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; import Header from './components/header'; @@ -161,6 +161,8 @@ class SwitchingColumnsArea extends React.PureComponent { } else { redirect = ; } + } else if (singleUserMode && owner && initialState?.accounts[owner]) { + redirect = ; } else { redirect = ; } diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index 031c748cf0..f9843f7f8b 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -1,5 +1,44 @@ // @ts-check +/** + * @typedef Emoji + * @property {string} shortcode + * @property {string} static_url + * @property {string} url + */ + +/** + * @typedef AccountField + * @property {string} name + * @property {string} value + * @property {string} verified_at + */ + +/** + * @typedef Account + * @property {string} acct + * @property {string} avatar + * @property {string} avatar_static + * @property {boolean} bot + * @property {string} created_at + * @property {boolean=} discoverable + * @property {string} display_name + * @property {Emoji[]} emojis + * @property {AccountField[]} fields + * @property {number} followers_count + * @property {number} following_count + * @property {boolean} group + * @property {string} header + * @property {string} header_static + * @property {string} id + * @property {string=} last_status_at + * @property {boolean} locked + * @property {string} note + * @property {number} statuses_count + * @property {string} url + * @property {string} username + */ + /** * @typedef {[code: string, name: string, localName: string]} InitialStateLanguage */ @@ -22,11 +61,13 @@ * @property {string} locale * @property {string | null} mascot * @property {string=} me + * @property {string=} owner * @property {boolean} profile_directory * @property {boolean} registrations_open * @property {boolean} reduce_motion * @property {string} repository * @property {boolean} search_enabled + * @property {boolean} single_user_mode * @property {string} source_url * @property {string} streaming_api_base_url * @property {boolean} timeline_preview @@ -40,13 +81,14 @@ /** * @typedef InitialState + * @property {Record} accounts * @property {InitialStateLanguage[]} languages * @property {InitialStateMeta} meta */ const element = document.getElementById('initial-state'); /** @type {InitialState | undefined} */ -const initialState = element && JSON.parse(element.textContent); +const initialState = element?.textContent && JSON.parse(element.textContent); /** * @template {keyof InitialStateMeta} K @@ -55,32 +97,34 @@ const initialState = element && JSON.parse(element.textContent); */ const getMeta = (prop) => initialState?.meta && initialState.meta[prop]; -export const domain = getMeta('domain'); -export const reduceMotion = getMeta('reduce_motion'); +export const activityApiEnabled = getMeta('activity_api_enabled'); export const autoPlayGif = getMeta('auto_play_gif'); -export const displayMedia = getMeta('display_media'); -export const expandSpoilers = getMeta('expand_spoilers'); -export const unfollowModal = getMeta('unfollow_modal'); export const boostModal = getMeta('boost_modal'); +export const cropImages = getMeta('crop_images'); export const deleteModal = getMeta('delete_modal'); -export const me = getMeta('me'); -export const searchEnabled = getMeta('search_enabled'); +export const disableSwiping = getMeta('disable_swiping'); +export const displayMedia = getMeta('display_media'); +export const domain = getMeta('domain'); +export const expandSpoilers = getMeta('expand_spoilers'); +export const forceSingleColumn = !getMeta('advanced_layout'); export const limitedFederationMode = getMeta('limited_federation_mode'); +export const mascot = getMeta('mascot'); +export const me = getMeta('me'); +export const owner = getMeta('owner'); +export const profile_directory = getMeta('profile_directory'); +export const reduceMotion = getMeta('reduce_motion'); export const registrationsOpen = getMeta('registrations_open'); export const repository = getMeta('repository'); +export const searchEnabled = getMeta('search_enabled'); +export const showTrends = getMeta('trends'); +export const singleUserMode = getMeta('single_user_mode'); export const source_url = getMeta('source_url'); -export const version = getMeta('version'); -export const mascot = getMeta('mascot'); -export const profile_directory = getMeta('profile_directory'); -export const forceSingleColumn = !getMeta('advanced_layout'); +export const timelinePreview = getMeta('timeline_preview'); +export const title = getMeta('title'); +export const unfollowModal = getMeta('unfollow_modal'); export const useBlurhash = getMeta('use_blurhash'); export const usePendingItems = getMeta('use_pending_items'); -export const showTrends = getMeta('trends'); -export const title = getMeta('title'); -export const cropImages = getMeta('crop_images'); -export const disableSwiping = getMeta('disable_swiping'); -export const timelinePreview = getMeta('timeline_preview'); -export const activityApiEnabled = getMeta('activity_api_enabled'); +export const version = getMeta('version'); export const languages = initialState?.languages; export default initialState; diff --git a/app/presenters/initial_state_presenter.rb b/app/presenters/initial_state_presenter.rb index 129ea2a46b..ed04792119 100644 --- a/app/presenters/initial_state_presenter.rb +++ b/app/presenters/initial_state_presenter.rb @@ -2,7 +2,7 @@ class InitialStatePresenter < ActiveModelSerializers::Model attributes :settings, :push_subscription, :token, - :current_account, :admin, :text, :visibility + :current_account, :admin, :owner, :text, :visibility def role current_account&.user_role diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index bec725e1b4..ba446854c9 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -30,6 +30,7 @@ class InitialStateSerializer < ActiveModel::Serializer registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode, timeline_preview: Setting.timeline_preview, activity_api_enabled: Setting.activity_api_enabled, + single_user_mode: Rails.configuration.x.single_user_mode, } if object.current_account @@ -55,6 +56,10 @@ class InitialStateSerializer < ActiveModel::Serializer store[:crop_images] = Setting.crop_images end + if Rails.configuration.x.single_user_mode + store[:owner] = object.owner&.id&.to_s + end + store end # rubocop:enable Metrics/AbcSize @@ -78,6 +83,7 @@ class InitialStateSerializer < ActiveModel::Serializer store = {} store[object.current_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.current_account, serializer: REST::AccountSerializer) if object.current_account store[object.admin.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.admin, serializer: REST::AccountSerializer) if object.admin + store[object.owner.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.owner, serializer: REST::AccountSerializer) if object.owner store end diff --git a/spec/views/statuses/show.html.haml_spec.rb b/spec/views/statuses/show.html.haml_spec.rb index a698432166..eeea2f6985 100644 --- a/spec/views/statuses/show.html.haml_spec.rb +++ b/spec/views/statuses/show.html.haml_spec.rb @@ -12,6 +12,7 @@ describe 'statuses/show.html.haml', without_verify_partial_doubles: true do allow(view).to receive(:local_time) allow(view).to receive(:local_time_ago) allow(view).to receive(:current_account).and_return(nil) + allow(view).to receive(:single_user_mode?).and_return(false) assign(:instance_presenter, InstancePresenter.new) end From b04633a9614609f18b39ba0f0015df301a04ab64 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 13 Oct 2022 11:29:19 +0200 Subject: [PATCH 043/500] Add image processing and generate blurhash for server thumbnail (#19348) Remove separate server hero setting --- app/models/form/admin_settings.rb | 2 -- app/models/site_upload.rb | 27 ++++++++++++++++++- app/presenters/instance_presenter.rb | 4 --- app/serializers/rest/instance_serializer.rb | 15 ++++++++++- .../rest/v1/instance_serializer.rb | 2 +- app/views/admin/settings/edit.html.haml | 2 -- app/views/application/_sidebar.html.haml | 2 +- app/views/shared/_og.html.haml | 2 +- config/locales/en.yml | 3 --- ...1012181003_add_blurhash_to_site_uploads.rb | 5 ++++ db/schema.rb | 3 ++- spec/presenters/instance_presenter_spec.rb | 7 ----- 12 files changed, 50 insertions(+), 24 deletions(-) create mode 100644 db/migrate/20221012181003_add_blurhash_to_site_uploads.rb diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 7bd9e37439..b6bb3d7951 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -22,7 +22,6 @@ class Form::AdminSettings custom_css profile_directory thumbnail - hero mascot trends trendable_by_default @@ -49,7 +48,6 @@ class Form::AdminSettings UPLOAD_KEYS = %i( thumbnail - hero mascot ).freeze diff --git a/app/models/site_upload.rb b/app/models/site_upload.rb index cf10b30fc9..d3b81d4d52 100644 --- a/app/models/site_upload.rb +++ b/app/models/site_upload.rb @@ -12,10 +12,35 @@ # meta :json # created_at :datetime not null # updated_at :datetime not null +# blurhash :string # class SiteUpload < ApplicationRecord - has_attached_file :file + include Attachmentable + + STYLES = { + thumbnail: { + '@1x': { + format: 'png', + geometry: '1200x630#', + file_geometry_parser: FastGeometryParser, + blurhash: { + x_comp: 4, + y_comp: 4, + }.freeze, + }, + + '@2x': { + format: 'png', + geometry: '2400x1260#', + file_geometry_parser: FastGeometryParser, + }.freeze, + }.freeze, + + mascot: {}.freeze, + }.freeze + + has_attached_file :file, styles: ->(file) { STYLES[file.instance.var.to_sym] }, convert_options: { all: '-coalesce -strip' }, processors: [:lazy_thumbnail, :blurhash_transcoder, :type_corrector] validates_attachment_content_type :file, content_type: /\Aimage\/.*\z/ validates :file, presence: true diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb index c461ac55f3..43594a280d 100644 --- a/app/presenters/instance_presenter.rb +++ b/app/presenters/instance_presenter.rb @@ -84,10 +84,6 @@ class InstancePresenter < ActiveModelSerializers::Model @thumbnail ||= Rails.cache.fetch('site_uploads/thumbnail') { SiteUpload.find_by(var: 'thumbnail') } end - def hero - @hero ||= Rails.cache.fetch('site_uploads/hero') { SiteUpload.find_by(var: 'hero') } - end - def mascot @mascot ||= Rails.cache.fetch('site_uploads/mascot') { SiteUpload.find_by(var: 'mascot') } end diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index f4ea494277..dfa8ce40a8 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -17,7 +17,20 @@ class REST::InstanceSerializer < ActiveModel::Serializer has_many :rules, serializer: REST::RuleSerializer def thumbnail - object.thumbnail ? full_asset_url(object.thumbnail.file.url) : full_pack_url('media/images/preview.png') + if object.thumbnail + { + url: full_asset_url(object.thumbnail.file.url(:'@1x')), + blurhash: object.thumbnail.blurhash, + versions: { + '@1x': full_asset_url(object.thumbnail.file.url(:'@1x')), + '@2x': full_asset_url(object.thumbnail.file.url(:'@2x')), + }, + } + else + { + url: full_pack_url('media/images/preview.png'), + } + end end def usage diff --git a/app/serializers/rest/v1/instance_serializer.rb b/app/serializers/rest/v1/instance_serializer.rb index 47fa086fc2..8721754515 100644 --- a/app/serializers/rest/v1/instance_serializer.rb +++ b/app/serializers/rest/v1/instance_serializer.rb @@ -33,7 +33,7 @@ class REST::V1::InstanceSerializer < ActiveModel::Serializer end def thumbnail - instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url) : full_pack_url('media/images/preview.png') + instance_presenter.thumbnail ? full_asset_url(instance_presenter.thumbnail.file.url(:'@1x')) : full_pack_url('media/images/preview.png') end def stats diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index 79f73a60f0..15b1a2498c 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -34,8 +34,6 @@ .fields-row .fields-row__column.fields-row__column-6.fields-group = f.input :thumbnail, as: :file, wrapper: :with_block_label, label: t('admin.settings.thumbnail.title'), hint: site_upload_delete_hint(t('admin.settings.thumbnail.desc_html'), :thumbnail) - .fields-row__column.fields-row__column-6.fields-group - = f.input :hero, as: :file, wrapper: :with_block_label, label: t('admin.settings.hero.title'), hint: site_upload_delete_hint(t('admin.settings.hero.desc_html'), :hero) .fields-row .fields-row__column.fields-row__column-6.fields-group diff --git a/app/views/application/_sidebar.html.haml b/app/views/application/_sidebar.html.haml index eb2813dd03..6d18668b08 100644 --- a/app/views/application/_sidebar.html.haml +++ b/app/views/application/_sidebar.html.haml @@ -1,6 +1,6 @@ .hero-widget .hero-widget__img - = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title + = image_tag @instance_presenter.thumbnail&.file&.url(:'@1x') || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title .hero-widget__text %p= @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html') diff --git a/app/views/shared/_og.html.haml b/app/views/shared/_og.html.haml index b54ab2429a..2941b566e0 100644 --- a/app/views/shared/_og.html.haml +++ b/app/views/shared/_og.html.haml @@ -8,7 +8,7 @@ = opengraph 'og:type', 'website' = opengraph 'og:title', @instance_presenter.title = opengraph 'og:description', description -= opengraph 'og:image', full_asset_url(thumbnail&.file&.url || asset_pack_path('media/images/preview.png', protocol: :request)) += opengraph 'og:image', full_asset_url(thumbnail&.file&.url(:'@1x') || asset_pack_path('media/images/preview.png', protocol: :request)) = opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200' = opengraph 'og:image:height', thumbnail ? thumbnail.meta['height'] : '630' = opengraph 'twitter:card', 'summary_large_image' diff --git a/config/locales/en.yml b/config/locales/en.yml index bd913a5cad..8a70bd8cac 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -735,9 +735,6 @@ en: users: To logged-in local users domain_blocks_rationale: title: Show rationale - hero: - desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail - title: Hero image mascot: desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot title: Mascot image diff --git a/db/migrate/20221012181003_add_blurhash_to_site_uploads.rb b/db/migrate/20221012181003_add_blurhash_to_site_uploads.rb new file mode 100644 index 0000000000..e1c87712b1 --- /dev/null +++ b/db/migrate/20221012181003_add_blurhash_to_site_uploads.rb @@ -0,0 +1,5 @@ +class AddBlurhashToSiteUploads < ActiveRecord::Migration[6.1] + def change + add_column :site_uploads, :blurhash, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 2f9058509c..3972f777ad 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_10_06_061337) do +ActiveRecord::Schema.define(version: 2022_10_12_181003) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -866,6 +866,7 @@ ActiveRecord::Schema.define(version: 2022_10_06_061337) do t.json "meta" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.string "blurhash" t.index ["var"], name: "index_site_uploads_on_var", unique: true end diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb index a0a8628e8b..659c2cc2ff 100644 --- a/spec/presenters/instance_presenter_spec.rb +++ b/spec/presenters/instance_presenter_spec.rb @@ -99,13 +99,6 @@ describe InstancePresenter do end end - describe '#hero' do - it 'returns SiteUpload' do - hero = Fabricate(:site_upload, var: 'hero') - expect(instance_presenter.hero).to eq(hero) - end - end - describe '#mascot' do it 'returns SiteUpload' do mascot = Fabricate(:site_upload, var: 'mascot') From 1bd00036c284bcafb419eaf80347ba49d1b491d9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 13 Oct 2022 14:42:37 +0200 Subject: [PATCH 044/500] Change about page to be mounted in the web UI (#19345) --- app/controllers/about_controller.rb | 60 +- .../v1/instances/domain_blocks_controller.rb | 23 + .../extended_descriptions_controller.rb | 18 + .../fonts/montserrat/Montserrat-Medium.ttf | Bin 192488 -> 0 bytes .../fonts/montserrat/Montserrat-Regular.ttf | Bin 191860 -> 0 bytes .../fonts/montserrat/Montserrat-Regular.woff | Bin 81244 -> 0 bytes .../fonts/montserrat/Montserrat-Regular.woff2 | Bin 61840 -> 0 bytes app/javascript/mastodon/actions/server.js | 61 ++ app/javascript/mastodon/components/image.js | 33 + .../mastodon/components/server_banner.js | 8 +- .../mastodon/components/skeleton.js | 4 +- .../mastodon/features/about/index.js | 195 +++- .../mastodon/features/privacy_policy/index.js | 2 +- .../mastodon/features/report/rules.js | 2 +- .../features/ui/components/link_footer.js | 2 +- app/javascript/mastodon/reducers/server.js | 46 +- app/javascript/styles/application.scss | 2 - app/javascript/styles/contrast/diff.scss | 4 - app/javascript/styles/fonts/montserrat.scss | 21 - .../styles/mastodon-light/diff.scss | 86 +- app/javascript/styles/mastodon/about.scss | 902 +----------------- .../styles/mastodon/compact_header.scss | 34 - .../styles/mastodon/components.scss | 474 +++++++-- .../styles/mastodon/containers.scss | 1 - app/javascript/styles/mastodon/dashboard.scss | 1 - app/javascript/styles/mastodon/forms.scss | 63 +- app/javascript/styles/mastodon/widgets.scss | 229 +---- app/models/domain_block.rb | 4 +- app/models/extended_description.rb | 15 + .../rest/domain_block_serializer.rb | 17 + .../rest/extended_description_serializer.rb | 13 + app/views/about/_domain_blocks.html.haml | 12 - app/views/about/more.html.haml | 96 -- app/views/about/show.html.haml | 4 + config/locales/en.yml | 28 +- config/routes.rb | 6 +- spec/controllers/about_controller_spec.rb | 8 +- 37 files changed, 900 insertions(+), 1574 deletions(-) create mode 100644 app/controllers/api/v1/instances/domain_blocks_controller.rb create mode 100644 app/controllers/api/v1/instances/extended_descriptions_controller.rb delete mode 100644 app/javascript/fonts/montserrat/Montserrat-Medium.ttf delete mode 100644 app/javascript/fonts/montserrat/Montserrat-Regular.ttf delete mode 100644 app/javascript/fonts/montserrat/Montserrat-Regular.woff delete mode 100644 app/javascript/fonts/montserrat/Montserrat-Regular.woff2 create mode 100644 app/javascript/mastodon/components/image.js delete mode 100644 app/javascript/styles/fonts/montserrat.scss delete mode 100644 app/javascript/styles/mastodon/compact_header.scss create mode 100644 app/models/extended_description.rb create mode 100644 app/serializers/rest/domain_block_serializer.rb create mode 100644 app/serializers/rest/extended_description_serializer.rb delete mode 100644 app/views/about/_domain_blocks.html.haml delete mode 100644 app/views/about/more.html.haml create mode 100644 app/views/about/show.html.haml diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb index eae7de8c89..0fbc6a800d 100644 --- a/app/controllers/about_controller.rb +++ b/app/controllers/about_controller.rb @@ -1,63 +1,11 @@ # frozen_string_literal: true class AboutController < ApplicationController - include RegistrationSpamConcern + include WebAppControllerConcern - layout 'public' + skip_before_action :require_functional! - before_action :require_open_federation!, only: [:more] - before_action :set_body_classes, only: :show - before_action :set_instance_presenter - before_action :set_expires_in, only: [:more] - - skip_before_action :require_functional!, only: [:more] - - def more - flash.now[:notice] = I18n.t('about.instance_actor_flash') if params[:instance_actor] - - toc_generator = TOCGenerator.new(@instance_presenter.extended_description) - - @rules = Rule.ordered - @contents = toc_generator.html - @table_of_contents = toc_generator.toc - @blocks = DomainBlock.with_user_facing_limitations.by_severity if display_blocks? - end - - helper_method :display_blocks? - helper_method :display_blocks_rationale? - helper_method :public_fetch_mode? - helper_method :new_user - - private - - def require_open_federation! - not_found if whitelist_mode? - end - - def display_blocks? - Setting.show_domain_blocks == 'all' || (Setting.show_domain_blocks == 'users' && user_signed_in?) - end - - def display_blocks_rationale? - Setting.show_domain_blocks_rationale == 'all' || (Setting.show_domain_blocks_rationale == 'users' && user_signed_in?) - end - - def new_user - User.new.tap do |user| - user.build_account - user.build_invite_request - end - end - - def set_instance_presenter - @instance_presenter = InstancePresenter.new - end - - def set_body_classes - @hide_navbar = true - end - - def set_expires_in - expires_in 0, public: true + def show + expires_in 0, public: true unless user_signed_in? end end diff --git a/app/controllers/api/v1/instances/domain_blocks_controller.rb b/app/controllers/api/v1/instances/domain_blocks_controller.rb new file mode 100644 index 0000000000..37a6906fb6 --- /dev/null +++ b/app/controllers/api/v1/instances/domain_blocks_controller.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class Api::V1::Instances::DomainBlocksController < Api::BaseController + skip_before_action :require_authenticated_user!, unless: :whitelist_mode? + + before_action :require_enabled_api! + before_action :set_domain_blocks + + def index + expires_in 3.minutes, public: true + render json: @domain_blocks, each_serializer: REST::DomainBlockSerializer, with_comment: (Setting.show_domain_blocks_rationale == 'all' || (Setting.show_domain_blocks_rationale == 'users' && user_signed_in?)) + end + + private + + def require_enabled_api! + head 404 unless Setting.show_domain_blocks == 'all' || (Setting.show_domain_blocks == 'users' && user_signed_in?) + end + + def set_domain_blocks + @domain_blocks = DomainBlock.with_user_facing_limitations.by_severity + end +end diff --git a/app/controllers/api/v1/instances/extended_descriptions_controller.rb b/app/controllers/api/v1/instances/extended_descriptions_controller.rb new file mode 100644 index 0000000000..c72e16cff2 --- /dev/null +++ b/app/controllers/api/v1/instances/extended_descriptions_controller.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class Api::V1::Instances::ExtendedDescriptionsController < Api::BaseController + skip_before_action :require_authenticated_user!, unless: :whitelist_mode? + + before_action :set_extended_description + + def show + expires_in 3.minutes, public: true + render json: @extended_description, serializer: REST::ExtendedDescriptionSerializer + end + + private + + def set_extended_description + @extended_description = ExtendedDescription.current + end +end diff --git a/app/javascript/fonts/montserrat/Montserrat-Medium.ttf b/app/javascript/fonts/montserrat/Montserrat-Medium.ttf deleted file mode 100644 index 88d70b89c3f2740e9b9c80881616136b5f697091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192488 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
VsBJm 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 diff --git a/app/javascript/fonts/montserrat/Montserrat-Regular.ttf b/app/javascript/fonts/montserrat/Montserrat-Regular.ttf deleted file mode 100644 index 29ca85d4a8bcfb20443653e7305c7e981b03eec0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191860 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ύ-#QDTU#HGX) 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 diff --git a/app/javascript/fonts/montserrat/Montserrat-Regular.woff b/app/javascript/fonts/montserrat/Montserrat-Regular.woff deleted file mode 100644 index af3b5ec44a985f622e0c236b5ced7ad2fac3e855..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81244 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 z 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�JCU8l=A=5)$b)yS{kHcGnsjsDl4 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
  • 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 Hb6WraV$xGG diff --git a/app/javascript/mastodon/actions/server.js b/app/javascript/mastodon/actions/server.js index af8fef780f..31d4aea100 100644 --- a/app/javascript/mastodon/actions/server.js +++ b/app/javascript/mastodon/actions/server.js @@ -5,6 +5,14 @@ export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST'; export const SERVER_FETCH_SUCCESS = 'Server_FETCH_SUCCESS'; export const SERVER_FETCH_FAIL = 'Server_FETCH_FAIL'; +export const EXTENDED_DESCRIPTION_REQUEST = 'EXTENDED_DESCRIPTION_REQUEST'; +export const EXTENDED_DESCRIPTION_SUCCESS = 'EXTENDED_DESCRIPTION_SUCCESS'; +export const EXTENDED_DESCRIPTION_FAIL = 'EXTENDED_DESCRIPTION_FAIL'; + +export const SERVER_DOMAIN_BLOCKS_FETCH_REQUEST = 'SERVER_DOMAIN_BLOCKS_FETCH_REQUEST'; +export const SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS = 'SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS'; +export const SERVER_DOMAIN_BLOCKS_FETCH_FAIL = 'SERVER_DOMAIN_BLOCKS_FETCH_FAIL'; + export const fetchServer = () => (dispatch, getState) => { dispatch(fetchServerRequest()); @@ -28,3 +36,56 @@ const fetchServerFail = error => ({ type: SERVER_FETCH_FAIL, error, }); + +export const fetchExtendedDescription = () => (dispatch, getState) => { + dispatch(fetchExtendedDescriptionRequest()); + + api(getState) + .get('/api/v1/instance/extended_description') + .then(({ data }) => dispatch(fetchExtendedDescriptionSuccess(data))) + .catch(err => dispatch(fetchExtendedDescriptionFail(err))); +}; + +const fetchExtendedDescriptionRequest = () => ({ + type: EXTENDED_DESCRIPTION_REQUEST, +}); + +const fetchExtendedDescriptionSuccess = description => ({ + type: EXTENDED_DESCRIPTION_SUCCESS, + description, +}); + +const fetchExtendedDescriptionFail = error => ({ + type: EXTENDED_DESCRIPTION_FAIL, + error, +}); + +export const fetchDomainBlocks = () => (dispatch, getState) => { + dispatch(fetchDomainBlocksRequest()); + + api(getState) + .get('/api/v1/instance/domain_blocks') + .then(({ data }) => dispatch(fetchDomainBlocksSuccess(true, data))) + .catch(err => { + if (err.response.status === 404) { + dispatch(fetchDomainBlocksSuccess(false, [])); + } else { + dispatch(fetchDomainBlocksFail(err)); + } + }); +}; + +const fetchDomainBlocksRequest = () => ({ + type: SERVER_DOMAIN_BLOCKS_FETCH_REQUEST, +}); + +const fetchDomainBlocksSuccess = (isAvailable, blocks) => ({ + type: SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS, + isAvailable, + blocks, +}); + +const fetchDomainBlocksFail = error => ({ + type: SERVER_DOMAIN_BLOCKS_FETCH_FAIL, + error, +}); diff --git a/app/javascript/mastodon/components/image.js b/app/javascript/mastodon/components/image.js new file mode 100644 index 0000000000..6e81ddf082 --- /dev/null +++ b/app/javascript/mastodon/components/image.js @@ -0,0 +1,33 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import Blurhash from './blurhash'; +import classNames from 'classnames'; + +export default class Image extends React.PureComponent { + + static propTypes = { + src: PropTypes.string, + srcSet: PropTypes.string, + blurhash: PropTypes.string, + className: PropTypes.string, + }; + + state = { + loaded: false, + }; + + handleLoad = () => this.setState({ loaded: true }); + + render () { + const { src, srcSet, blurhash, className } = this.props; + const { loaded } = this.state; + + return ( +
    + {blurhash && } + +
    + ); + } + +} diff --git a/app/javascript/mastodon/components/server_banner.js b/app/javascript/mastodon/components/server_banner.js index ae4e200c34..c2336e43d3 100644 --- a/app/javascript/mastodon/components/server_banner.js +++ b/app/javascript/mastodon/components/server_banner.js @@ -7,13 +7,15 @@ import ShortNumber from 'mastodon/components/short_number'; import Skeleton from 'mastodon/components/skeleton'; import Account from 'mastodon/containers/account_container'; import { domain } from 'mastodon/initial_state'; +import Image from 'mastodon/components/image'; +import { Link } from 'react-router-dom'; const messages = defineMessages({ aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' }, }); const mapStateToProps = state => ({ - server: state.get('server'), + server: state.getIn(['server', 'server']), }); export default @connect(mapStateToProps) @@ -41,7 +43,7 @@ class ServerBanner extends React.PureComponent { {domain}, mastodon:
    Mastodon }} />
  • - {server.get('title')} +
    {isLoading ? ( @@ -83,7 +85,7 @@ class ServerBanner extends React.PureComponent {
    - +
    ); } diff --git a/app/javascript/mastodon/components/skeleton.js b/app/javascript/mastodon/components/skeleton.js index 09093e99c7..6a17ffb261 100644 --- a/app/javascript/mastodon/components/skeleton.js +++ b/app/javascript/mastodon/components/skeleton.js @@ -4,8 +4,8 @@ import PropTypes from 'prop-types'; const Skeleton = ({ width, height }) => ; Skeleton.propTypes = { - width: PropTypes.number, - height: PropTypes.number, + width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), + height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), }; export default Skeleton; diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.js index bc8d3a41b0..e9212565ac 100644 --- a/app/javascript/mastodon/features/about/index.js +++ b/app/javascript/mastodon/features/about/index.js @@ -1,27 +1,214 @@ import React from 'react'; -import { defineMessages, injectIntl } from 'react-intl'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import Column from 'mastodon/components/column'; import LinkFooter from 'mastodon/features/ui/components/link_footer'; import { Helmet } from 'react-helmet'; +import { fetchServer, fetchExtendedDescription, fetchDomainBlocks } from 'mastodon/actions/server'; +import Account from 'mastodon/containers/account_container'; +import Skeleton from 'mastodon/components/skeleton'; +import Icon from 'mastodon/components/icon'; +import classNames from 'classnames'; +import Image from 'mastodon/components/image'; const messages = defineMessages({ title: { id: 'column.about', defaultMessage: 'About' }, + rules: { id: 'about.rules', defaultMessage: 'Server rules' }, + blocks: { id: 'about.blocks', defaultMessage: 'Moderated servers' }, + silenced: { id: 'about.domain_blocks.silenced.title', defaultMessage: 'Limited' }, + silencedExplanation: { id: 'about.domain_blocks.silenced.explanation', defaultMessage: 'You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.' }, + suspended: { id: 'about.domain_blocks.suspended.title', defaultMessage: 'Suspended' }, + suspendedExplanation: { id: 'about.domain_blocks.suspended.explanation', defaultMessage: 'No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.' }, }); -export default @injectIntl +const severityMessages = { + silence: { + title: messages.silenced, + explanation: messages.silencedExplanation, + }, + + suspend: { + title: messages.suspended, + explanation: messages.suspendedExplanation, + }, +}; + +const mapStateToProps = state => ({ + server: state.getIn(['server', 'server']), + extendedDescription: state.getIn(['server', 'extendedDescription']), + domainBlocks: state.getIn(['server', 'domainBlocks']), +}); + +class Section extends React.PureComponent { + + static propTypes = { + title: PropTypes.string, + children: PropTypes.node, + open: PropTypes.bool, + onOpen: PropTypes.func, + }; + + state = { + collapsed: !this.props.open, + }; + + handleClick = () => { + const { onOpen } = this.props; + const { collapsed } = this.state; + + this.setState({ collapsed: !collapsed }, () => onOpen && onOpen()); + } + + render () { + const { title, children } = this.props; + const { collapsed } = this.state; + + return ( +
    +
    + {title} +
    + + {!collapsed && ( +
    {children}
    + )} +
    + ); + } + +} + +export default @connect(mapStateToProps) +@injectIntl class About extends React.PureComponent { static propTypes = { + server: ImmutablePropTypes.map, + extendedDescription: ImmutablePropTypes.map, + domainBlocks: ImmutablePropTypes.contains({ + isLoading: PropTypes.bool, + isAvailable: PropTypes.bool, + items: ImmutablePropTypes.list, + }), + dispatch: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, }; + componentDidMount () { + const { dispatch } = this.props; + dispatch(fetchServer()); + dispatch(fetchExtendedDescription()); + } + + handleDomainBlocksOpen = () => { + const { dispatch } = this.props; + dispatch(fetchDomainBlocks()); + } + render () { - const { intl } = this.props; + const { intl, server, extendedDescription, domainBlocks } = this.props; + const isLoading = server.get('isLoading'); return ( - +
    +
    + `${value} ${key.replace('@', '')}`).join(', ')} className='about__header__hero' /> +

    {isLoading ? : server.get('domain')}

    +

    Mastodon }} />

    +
    + +
    +
    +

    + + +
    + +
    + +
    +

    + + {isLoading ? : {server.getIn(['contact', 'email'])}} +
    +
    + +
    + {extendedDescription.get('isLoading') ? ( + <> + +
    + +
    + +
    + + + ) : (extendedDescription.get('content')?.length > 0 ? ( +
    + ) : ( +

    + ))} +
    + +
    + {!isLoading && (server.get('rules').isEmpty() ? ( +

    + ) : ( +
      + {server.get('rules').map(rule => ( +
    1. + {rule.get('text')} +
    2. + ))} +
    + ))} +
    + +
    + {domainBlocks.get('isLoading') ? ( + <> + +
    + + + ) : (domainBlocks.get('isAvailable') ? ( + <> +

    + +
    + + + + + + + + + + {domainBlocks.get('items').map(block => ( + + + + + + ))} + +
    {block.get('domain')}{intl.formatMessage(severityMessages[block.get('severity')].title)}{block.get('comment')}
    + + ) : ( +

    + ))} + + + +
    {intl.formatMessage(messages.title)} diff --git a/app/javascript/mastodon/features/privacy_policy/index.js b/app/javascript/mastodon/features/privacy_policy/index.js index 5fbe340c05..eee4255f47 100644 --- a/app/javascript/mastodon/features/privacy_policy/index.js +++ b/app/javascript/mastodon/features/privacy_policy/index.js @@ -44,7 +44,7 @@ class PrivacyPolicy extends React.PureComponent {
    diff --git a/app/javascript/mastodon/features/report/rules.js b/app/javascript/mastodon/features/report/rules.js index 2cb4a95b5a..920da68d63 100644 --- a/app/javascript/mastodon/features/report/rules.js +++ b/app/javascript/mastodon/features/report/rules.js @@ -7,7 +7,7 @@ import Button from 'mastodon/components/button'; import Option from './components/option'; const mapStateToProps = state => ({ - rules: state.getIn(['server', 'rules']), + rules: state.getIn(['server', 'server', 'rules']), }); export default @connect(mapStateToProps) diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index c4ce2a9855..cc3d835727 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -51,7 +51,7 @@ class LinkFooter extends React.PureComponent { const items = []; items.push(); - items.push(); + items.push(); items.push(); items.push(); items.push(); diff --git a/app/javascript/mastodon/reducers/server.js b/app/javascript/mastodon/reducers/server.js index 68131c6ddf..db9f2b5e6b 100644 --- a/app/javascript/mastodon/reducers/server.js +++ b/app/javascript/mastodon/reducers/server.js @@ -1,18 +1,52 @@ -import { SERVER_FETCH_REQUEST, SERVER_FETCH_SUCCESS, SERVER_FETCH_FAIL } from 'mastodon/actions/server'; -import { Map as ImmutableMap, fromJS } from 'immutable'; +import { + SERVER_FETCH_REQUEST, + SERVER_FETCH_SUCCESS, + SERVER_FETCH_FAIL, + EXTENDED_DESCRIPTION_REQUEST, + EXTENDED_DESCRIPTION_SUCCESS, + EXTENDED_DESCRIPTION_FAIL, + SERVER_DOMAIN_BLOCKS_FETCH_REQUEST, + SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS, + SERVER_DOMAIN_BLOCKS_FETCH_FAIL, +} from 'mastodon/actions/server'; +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; const initialState = ImmutableMap({ - isLoading: true, + server: ImmutableMap({ + isLoading: true, + }), + + extendedDescription: ImmutableMap({ + isLoading: true, + }), + + domainBlocks: ImmutableMap({ + isLoading: true, + isAvailable: true, + items: ImmutableList(), + }), }); export default function server(state = initialState, action) { switch (action.type) { case SERVER_FETCH_REQUEST: - return state.set('isLoading', true); + return state.setIn(['server', 'isLoading'], true); case SERVER_FETCH_SUCCESS: - return fromJS(action.server).set('isLoading', false); + return state.set('server', fromJS(action.server)).setIn(['server', 'isLoading'], false); case SERVER_FETCH_FAIL: - return state.set('isLoading', false); + return state.setIn(['server', 'isLoading'], false); + case EXTENDED_DESCRIPTION_REQUEST: + return state.setIn(['extendedDescription', 'isLoading'], true); + case EXTENDED_DESCRIPTION_SUCCESS: + return state.set('extendedDescription', fromJS(action.description)).setIn(['extendedDescription', 'isLoading'], false); + case EXTENDED_DESCRIPTION_FAIL: + return state.setIn(['extendedDescription', 'isLoading'], false); + case SERVER_DOMAIN_BLOCKS_FETCH_REQUEST: + return state.setIn(['domainBlocks', 'isLoading'], true); + case SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS: + return state.setIn(['domainBlocks', 'items'], fromJS(action.blocks)).setIn(['domainBlocks', 'isLoading'], false).setIn(['domainBlocks', 'isAvailable'], action.isAvailable); + case SERVER_DOMAIN_BLOCKS_FETCH_FAIL: + return state.setIn(['domainBlocks', 'isLoading'], false); default: return state; } diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss index bbea061957..e9f596e2fd 100644 --- a/app/javascript/styles/application.scss +++ b/app/javascript/styles/application.scss @@ -2,7 +2,6 @@ @import 'mastodon/variables'; @import 'fonts/roboto'; @import 'fonts/roboto-mono'; -@import 'fonts/montserrat'; @import 'mastodon/reset'; @import 'mastodon/basics'; @@ -10,7 +9,6 @@ @import 'mastodon/containers'; @import 'mastodon/lists'; @import 'mastodon/footer'; -@import 'mastodon/compact_header'; @import 'mastodon/widgets'; @import 'mastodon/forms'; @import 'mastodon/accounts'; diff --git a/app/javascript/styles/contrast/diff.scss b/app/javascript/styles/contrast/diff.scss index 841ed66480..22f5bcc94b 100644 --- a/app/javascript/styles/contrast/diff.scss +++ b/app/javascript/styles/contrast/diff.scss @@ -13,10 +13,6 @@ } } -.rich-formatting a, -.rich-formatting p a, -.rich-formatting li a, -.landing-page__short-description p a, .status__content a, .reply-indicator__content a { color: lighten($ui-highlight-color, 12%); diff --git a/app/javascript/styles/fonts/montserrat.scss b/app/javascript/styles/fonts/montserrat.scss deleted file mode 100644 index 170fe65429..0000000000 --- a/app/javascript/styles/fonts/montserrat.scss +++ /dev/null @@ -1,21 +0,0 @@ -@font-face { - font-family: mastodon-font-display; - src: - local('Montserrat'), - url('../fonts/montserrat/Montserrat-Regular.woff2') format('woff2'), - url('../fonts/montserrat/Montserrat-Regular.woff') format('woff'), - url('../fonts/montserrat/Montserrat-Regular.ttf') format('truetype'); - font-weight: 400; - font-display: swap; - font-style: normal; -} - -@font-face { - font-family: mastodon-font-display; - src: - local('Montserrat Medium'), - url('../fonts/montserrat/Montserrat-Medium.ttf') format('truetype'); - font-weight: 500; - font-display: swap; - font-style: normal; -} diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 0bc6247ef2..4b27e6b4f3 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -36,6 +36,20 @@ html { border-top: 0; } +.column > .scrollable.about { + border-top: 1px solid lighten($ui-base-color, 8%); +} + +.about__meta, +.about__section__title { + background: $white; + border: 1px solid lighten($ui-base-color, 8%); +} + +.rules-list li::before { + background: $ui-highlight-color; +} + .directory__card__img { background: lighten($ui-base-color, 12%); } @@ -45,10 +59,6 @@ html { border-bottom: 1px solid lighten($ui-base-color, 8%); } -.table-of-contents { - border: 1px solid lighten($ui-base-color, 8%); -} - .column-back-button, .column-header { background: $white; @@ -138,11 +148,6 @@ html { .compose-form__poll-wrapper select, .search__input, .setting-text, -.box-widget input[type="text"], -.box-widget input[type="email"], -.box-widget input[type="password"], -.box-widget textarea, -.statuses-grid .detailed-status, .report-dialog-modal__textarea, .audio-player { border: 1px solid lighten($ui-base-color, 8%); @@ -480,52 +485,16 @@ html { background: $white; } -.tabs-bar { - background: $white; - border: 1px solid lighten($ui-base-color, 8%); - border-bottom: 0; - - @media screen and (max-width: $no-gap-breakpoint) { - border-top: 0; - } - - &__link { - padding-bottom: 14px; - border-bottom-width: 1px; - border-bottom-color: lighten($ui-base-color, 8%); - - &:hover, - &:active, - &:focus { - background: $ui-base-color; - } - - &.active { - &:hover, - &:active, - &:focus { - background: transparent; - border-bottom-color: $ui-highlight-color; - } - } - } -} - // Change the default colors used on some parts of the profile pages .activity-stream-tabs { background: $account-background-color; border-bottom-color: lighten($ui-base-color, 8%); } -.box-widget, .nothing-here, .page-header, .directory__tag > a, -.directory__tag > div, -.landing-page__call-to-action, -.contact-widget, -.landing .hero-widget__text, -.landing-page__information.contact-widget { +.directory__tag > div { background: $white; border: 1px solid lighten($ui-base-color, 8%); @@ -536,11 +505,6 @@ html { } } -.landing .hero-widget__text { - border-top: 0; - border-bottom: 0; -} - .simple_form { input[type="text"], input[type="number"], @@ -553,26 +517,12 @@ html { } } -.landing .hero-widget__footer { - background: $white; - border: 1px solid lighten($ui-base-color, 8%); - border-top: 0; - - @media screen and (max-width: $no-gap-breakpoint) { - border: 0; - } -} - .picture-in-picture-placeholder { background: $white; border-color: lighten($ui-base-color, 8%); color: lighten($ui-base-color, 8%); } -.brand__tagline { - color: $ui-secondary-color; -} - .directory__tag > a { &:hover, &:active, @@ -666,8 +616,7 @@ html { } } -.simple_form, -.table-form { +.simple_form { .warning { box-shadow: none; background: rgba($error-red, 0.5); @@ -801,9 +750,6 @@ html { } .hero-widget, -.box-widget, -.contact-widget, -.landing-page__information.contact-widget, .moved-account-widget, .memoriam-widget, .activity-stream, diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss index 8893e3cf09..0183c43d5e 100644 --- a/app/javascript/styles/mastodon/about.scss +++ b/app/javascript/styles/mastodon/about.scss @@ -1,7 +1,5 @@ $maximum-width: 1235px; $fluid-breakpoint: $maximum-width + 20px; -$column-breakpoint: 700px; -$small-breakpoint: 960px; .container { box-sizing: border-box; @@ -15,892 +13,44 @@ $small-breakpoint: 960px; } } -.rich-formatting { - font-family: $font-sans-serif, sans-serif; - font-size: 14px; - font-weight: 400; - line-height: 1.7; - word-wrap: break-word; - color: $darker-text-color; - - a { - color: $highlight-text-color; - text-decoration: underline; - - &:hover, - &:focus, - &:active { - text-decoration: none; - } - } - - p, - li { - color: $darker-text-color; - } - - p { - margin-top: 0; - margin-bottom: 0.85em; - - &:last-child { - margin-bottom: 0; - } - } - - strong { - font-weight: 700; - color: $secondary-text-color; - } - - em { - font-style: italic; - color: $secondary-text-color; - } - - code { - font-size: 0.85em; - background: darken($ui-base-color, 8%); - border-radius: 4px; - padding: 0.2em 0.3em; - } - - h1, - h2, - h3, - h4, - h5, - h6 { - font-family: $font-display, sans-serif; - margin-top: 1.275em; - margin-bottom: 0.85em; - font-weight: 500; - color: $secondary-text-color; - } - - h1 { - font-size: 2em; - } - - h2 { - font-size: 1.75em; - } - - h3 { - font-size: 1.5em; - } - - h4 { - font-size: 1.25em; - } - - h5, - h6 { - font-size: 1em; - } - - ul { - list-style: disc; - } - - ol { - list-style: decimal; - } - - ul, - ol { - margin: 0; - padding: 0; - padding-left: 2em; - margin-bottom: 0.85em; - - &[type='a'] { - list-style-type: lower-alpha; - } - - &[type='i'] { - list-style-type: lower-roman; - } - } - - hr { - width: 100%; - height: 0; - border: 0; - border-bottom: 1px solid lighten($ui-base-color, 4%); - margin: 1.7em 0; - - &.spacer { - height: 1px; - border: 0; - } - } - - table { - width: 100%; - border-collapse: collapse; - break-inside: auto; - margin-top: 24px; - margin-bottom: 32px; - - thead tr, - tbody tr { - border-bottom: 1px solid lighten($ui-base-color, 4%); - font-size: 1em; - line-height: 1.625; - font-weight: 400; - text-align: left; - color: $darker-text-color; - } - - thead tr { - border-bottom-width: 2px; - line-height: 1.5; - font-weight: 500; - color: $dark-text-color; - } - - th, - td { - padding: 8px; - align-self: flex-start; - align-items: flex-start; - word-break: break-all; - - &.nowrap { - width: 25%; - position: relative; - - &::before { - content: ' '; - visibility: hidden; - } - - span { - position: absolute; - left: 8px; - right: 8px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - } - } - } - - & > :first-child { - margin-top: 0; - } +.brand { + position: relative; + text-decoration: none; } -.information-board { - background: darken($ui-base-color, 4%); - padding: 20px 0; - - .container-alt { - position: relative; - padding-right: 280px + 15px; - } - - &__sections { - display: flex; - justify-content: space-between; - flex-wrap: wrap; - } - - &__section { - flex: 1 0 0; - font-family: $font-sans-serif, sans-serif; - font-size: 16px; - line-height: 28px; - color: $primary-text-color; - text-align: right; - padding: 10px 15px; - - span, - strong { - display: block; - } - - span { - &:last-child { - color: $secondary-text-color; - } - } - - strong { - font-family: $font-display, sans-serif; - font-weight: 500; - font-size: 32px; - line-height: 48px; - } - - @media screen and (max-width: $column-breakpoint) { - text-align: center; - } - } - - .panel { - position: absolute; - width: 280px; - box-sizing: border-box; - background: darken($ui-base-color, 8%); - padding: 20px; - padding-top: 10px; - border-radius: 4px 4px 0 0; - right: 0; - bottom: -40px; - - .panel-header { - font-family: $font-display, sans-serif; - font-size: 14px; - line-height: 24px; - font-weight: 500; - color: $darker-text-color; - padding-bottom: 5px; - margin-bottom: 15px; - border-bottom: 1px solid lighten($ui-base-color, 4%); - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - - a, - span { - font-weight: 400; - color: darken($darker-text-color, 10%); - } - - a { - text-decoration: none; - } - } - } - - .owner { - text-align: center; - - .avatar { - width: 80px; - height: 80px; - margin: 0 auto; - margin-bottom: 15px; - - img { - display: block; - width: 80px; - height: 80px; - border-radius: 48px; - } - } - - .name { - font-size: 14px; - - a { - display: block; - color: $primary-text-color; - text-decoration: none; - - &:hover { - .display_name { - text-decoration: underline; - } - } - } - - .username { - display: block; - color: $darker-text-color; - } - } - } -} +.rules-list { + font-size: 15px; + line-height: 22px; + color: $primary-text-color; + counter-reset: list-counter; -.landing-page { - p, li { - font-family: $font-sans-serif, sans-serif; - font-size: 16px; - font-weight: 400; - line-height: 30px; - margin-bottom: 12px; - color: $darker-text-color; - - a { - color: $highlight-text-color; - text-decoration: underline; - } - } - - em { - display: inline; - margin: 0; - padding: 0; - font-weight: 700; - background: transparent; - font-family: inherit; - font-size: inherit; - line-height: inherit; - color: lighten($darker-text-color, 10%); - } - - h1 { - font-family: $font-display, sans-serif; - font-size: 26px; - line-height: 30px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - - small { - font-family: $font-sans-serif, sans-serif; - display: block; - font-size: 18px; - font-weight: 400; - color: lighten($darker-text-color, 10%); - } - } - - h2 { - font-family: $font-display, sans-serif; - font-size: 22px; - line-height: 26px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - h3 { - font-family: $font-display, sans-serif; - font-size: 18px; - line-height: 24px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - h4 { - font-family: $font-display, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - h5 { - font-family: $font-display, sans-serif; - font-size: 14px; - line-height: 24px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - h6 { - font-family: $font-display, sans-serif; - font-size: 12px; - line-height: 24px; + position: relative; + border-bottom: 1px solid lighten($ui-base-color, 8%); + padding: 1em 1.75em; + padding-left: 3em; font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - ul, - ol { - margin-left: 20px; - - &[type='a'] { - list-style-type: lower-alpha; - } - - &[type='i'] { - list-style-type: lower-roman; - } - } - - ul { - list-style: disc; - } - - ol { - list-style: decimal; - } - - li > ol, - li > ul { - margin-top: 6px; - } - - hr { - width: 100%; - height: 0; - border: 0; - border-bottom: 1px solid rgba($ui-base-lighter-color, 0.6); - margin: 20px 0; - - &.spacer { - height: 1px; - border: 0; - } - } - - &__information, - &__forms { - padding: 20px; - } - - &__call-to-action { - background: $ui-base-color; - border-radius: 4px; - padding: 25px 40px; - overflow: hidden; - box-sizing: border-box; - - .row { - width: 100%; - display: flex; - flex-direction: row-reverse; - flex-wrap: nowrap; - justify-content: space-between; - align-items: center; - } - - .row__information-board { - display: flex; - justify-content: flex-end; - align-items: flex-end; - - .information-board__section { - flex: 1 0 auto; - padding: 0 10px; - } - - @media screen and (max-width: $no-gap-breakpoint) { - width: 100%; - justify-content: space-between; - } - } - - .row__mascot { - flex: 1; - margin: 10px -50px 0 0; - - @media screen and (max-width: $no-gap-breakpoint) { - display: none; - } - } - } - - &__logo { - margin-right: 20px; - - img { - height: 50px; - width: auto; - mix-blend-mode: lighten; - } - } - - &__information { - padding: 45px 40px; - margin-bottom: 10px; - - &:last-child { - margin-bottom: 0; - } - - strong { + counter-increment: list-counter; + + &::before { + content: counter(list-counter); + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + background: $highlight-text-color; + color: $ui-base-color; + border-radius: 50%; + width: 4ch; + height: 4ch; font-weight: 500; - color: lighten($darker-text-color, 10%); - } - - .account { - border-bottom: 0; - padding: 0; - - &__display-name { - align-items: center; - display: flex; - margin-right: 5px; - } - - div.account__display-name { - &:hover { - .display-name strong { - text-decoration: none; - } - } - - .account__avatar { - cursor: default; - } - } - - &__avatar-wrapper { - margin-left: 0; - flex: 0 0 auto; - } - - .display-name { - font-size: 15px; - - &__account { - font-size: 14px; - } - } - } - - @media screen and (max-width: $small-breakpoint) { - .contact { - margin-top: 30px; - } - } - - @media screen and (max-width: $column-breakpoint) { - padding: 25px 20px; - } - } - - &__information, - &__forms, - #mastodon-timeline { - box-sizing: border-box; - background: $ui-base-color; - border-radius: 4px; - box-shadow: 0 0 6px rgba($black, 0.1); - } - - &__mascot { - height: 104px; - position: relative; - left: -40px; - bottom: 25px; - - img { - height: 190px; - width: auto; - } - } - - &__short-description { - .row { display: flex; - flex-wrap: wrap; + justify-content: center; align-items: center; - margin-bottom: 40px; - } - - @media screen and (max-width: $column-breakpoint) { - .row { - margin-bottom: 20px; - } - } - - p a { - color: $secondary-text-color; - } - - h1 { - font-weight: 500; - color: $primary-text-color; - margin-bottom: 0; - - small { - color: $darker-text-color; - - span { - color: $secondary-text-color; - } - } - } - - p:last-child { - margin-bottom: 0; - } - } - - &__hero { - margin-bottom: 10px; - - img { - display: block; - margin: 0; - max-width: 100%; - height: auto; - border-radius: 4px; - } - } - - @media screen and (max-width: 840px) { - .information-board { - .container-alt { - padding-right: 20px; - } - - .panel { - position: static; - margin-top: 20px; - width: 100%; - border-radius: 4px; - - .panel-header { - text-align: center; - } - } - } - } - - @media screen and (max-width: 675px) { - .header-wrapper { - padding-top: 0; - - &.compact { - padding-bottom: 0; - } - - &.compact .hero .heading { - text-align: initial; - } } - .header .container-alt, - .features .container-alt { - display: block; - } - } - - .cta { - margin: 20px; - } -} - -.landing { - margin-bottom: 100px; - - @media screen and (max-width: 738px) { - margin-bottom: 0; - } - - &__brand { - display: flex; - justify-content: center; - align-items: center; - padding: 50px; - - .logo { - fill: $primary-text-color; - height: 52px; - } - - @media screen and (max-width: $no-gap-breakpoint) { - padding: 0; - margin-bottom: 30px; - } - } - - .directory { - margin-top: 30px; - background: transparent; - box-shadow: none; - border-radius: 0; - } - - .hero-widget { - margin-top: 30px; - margin-bottom: 0; - - h4 { - padding: 10px; - text-transform: uppercase; - font-weight: 700; - font-size: 13px; - color: $darker-text-color; - } - - &__text { - border-radius: 0; - padding-bottom: 0; - } - - &__footer { - background: $ui-base-color; - padding: 10px; - border-radius: 0 0 4px 4px; - display: flex; - - &__column { - flex: 1 1 50%; - overflow-x: hidden; - } - } - - .account { - padding: 10px 0; - border-bottom: 0; - - .account__display-name { - display: flex; - align-items: center; - } - } - - &__counters__wrapper { - display: flex; - } - - &__counter { - padding: 10px; - width: 50%; - - strong { - font-family: $font-display, sans-serif; - font-size: 15px; - font-weight: 700; - display: block; - } - - span { - font-size: 14px; - color: $darker-text-color; - } - } - } - - .simple_form .user_agreement .label_input > label { - font-weight: 400; - color: $darker-text-color; - } - - .simple_form p.lead { - color: $darker-text-color; - font-size: 15px; - line-height: 20px; - font-weight: 400; - margin-bottom: 25px; - } - - &__grid { - max-width: 960px; - margin: 0 auto; - display: grid; - grid-template-columns: minmax(0, 50%) minmax(0, 50%); - grid-gap: 30px; - - @media screen and (max-width: 738px) { - grid-template-columns: minmax(0, 100%); - grid-gap: 10px; - - &__column-login { - grid-row: 1; - display: flex; - flex-direction: column; - - .box-widget { - order: 2; - flex: 0 0 auto; - } - - .hero-widget { - margin-top: 0; - margin-bottom: 10px; - order: 1; - flex: 0 0 auto; - } - } - - &__column-registration { - grid-row: 2; - } - - .directory { - margin-top: 10px; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - grid-gap: 0; - - .hero-widget { - display: block; - margin-bottom: 0; - box-shadow: none; - - &__img, - &__img img, - &__footer { - border-radius: 0; - } - } - - .hero-widget, - .box-widget, - .directory__tag { - border-bottom: 1px solid lighten($ui-base-color, 8%); - } - - .directory { - margin-top: 0; - - &__tag { - margin-bottom: 0; - - & > a, - & > div { - border-radius: 0; - box-shadow: none; - } - - &:last-child { - border-bottom: 0; - } - } - } - } - } -} - -.brand { - position: relative; - text-decoration: none; -} - -.brand__tagline { - display: block; - position: absolute; - bottom: -10px; - left: 50px; - width: 300px; - color: $ui-primary-color; - text-decoration: none; - font-size: 14px; - - @media screen and (max-width: $no-gap-breakpoint) { - position: static; - width: auto; - margin-top: 20px; - color: $dark-text-color; - } -} - -.rules-list { - background: darken($ui-base-color, 2%); - border: 1px solid darken($ui-base-color, 8%); - border-radius: 4px; - padding: 0.5em 2.5em !important; - margin-top: 1.85em !important; - - li { - border-bottom: 1px solid lighten($ui-base-color, 4%); - color: $dark-text-color; - padding: 1em; - &:last-child { border-bottom: 0; } } - - &__text { - color: $primary-text-color; - } } diff --git a/app/javascript/styles/mastodon/compact_header.scss b/app/javascript/styles/mastodon/compact_header.scss deleted file mode 100644 index 4980ab5f1a..0000000000 --- a/app/javascript/styles/mastodon/compact_header.scss +++ /dev/null @@ -1,34 +0,0 @@ -.compact-header { - h1 { - font-size: 24px; - line-height: 28px; - color: $darker-text-color; - font-weight: 500; - margin-bottom: 20px; - padding: 0 10px; - word-wrap: break-word; - - @media screen and (max-width: 740px) { - text-align: center; - padding: 20px 10px 0; - } - - a { - color: inherit; - text-decoration: none; - } - - small { - font-weight: 400; - color: $secondary-text-color; - } - - img { - display: inline-block; - margin-bottom: -5px; - margin-right: 15px; - width: 36px; - height: 36px; - } - } -} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index a8919b9cbd..d4657d1804 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -3261,6 +3261,7 @@ $ui-header-height: 55px; padding: 10px; padding-top: 20px; z-index: 1; + font-size: 13px; ul { margin-bottom: 10px; @@ -3272,7 +3273,6 @@ $ui-header-height: 55px; p { color: $dark-text-color; - font-size: 13px; margin-bottom: 20px; a { @@ -8266,79 +8266,202 @@ noscript { &__body { margin-top: 20px; - color: $secondary-text-color; - font-size: 15px; - line-height: 22px; + } +} - h1, - p, - ul, - ol { - margin-bottom: 20px; - } +.prose { + color: $secondary-text-color; + font-size: 15px; + line-height: 22px; - ul { - list-style: disc; - } + p, + ul, + ol { + margin-top: 1.25em; + margin-bottom: 1.25em; + } - ol { - list-style: decimal; - } + img { + margin-top: 2em; + margin-bottom: 2em; + } - ul, - ol { - padding-left: 1em; + video { + margin-top: 2em; + margin-bottom: 2em; + } + + figure { + margin-top: 2em; + margin-bottom: 2em; + + figcaption { + font-size: 0.875em; + line-height: 1.4285714; + margin-top: 0.8571429em; } + } - li { - margin-bottom: 10px; + figure > * { + margin-top: 0; + margin-bottom: 0; + } - &::marker { - color: $darker-text-color; - } + h1 { + font-size: 1.5em; + margin-top: 0; + margin-bottom: 1em; + line-height: 1.33; + } - &:last-child { - margin-bottom: 0; - } - } + h2 { + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6; + } + + h3, + h4, + h5, + h6 { + margin-top: 1.5em; + margin-bottom: 0.5em; + line-height: 1.5; + } - h1 { - color: $primary-text-color; - font-size: 19px; - line-height: 24px; - font-weight: 700; - margin-top: 30px; + ol { + counter-reset: list-counter; + } - &:first-child { - margin-top: 0; - } - } + li { + margin-top: 0.5em; + margin-bottom: 0.5em; + } - strong { - font-weight: 700; - color: $primary-text-color; - } + ol > li { + counter-increment: list-counter; - em { - font-style: italic; + &::before { + content: counter(list-counter) "."; + position: absolute; + left: 0; } + } - a { - color: $highlight-text-color; - text-decoration: underline; + ul > li::before { + content: ""; + position: absolute; + background-color: $darker-text-color; + border-radius: 50%; + width: 0.375em; + height: 0.375em; + top: 0.5em; + left: 0.25em; + } - &:focus, - &:hover, - &:active { - text-decoration: none; - } - } + ul > li, + ol > li { + position: relative; + padding-left: 1.75em; + } - hr { - border: 1px solid lighten($ui-base-color, 4%); - margin: 30px 0; + & > ul > li p { + margin-top: 0.75em; + margin-bottom: 0.75em; + } + + & > ul > li > *:first-child { + margin-top: 1.25em; + } + + & > ul > li > *:last-child { + margin-bottom: 1.25em; + } + + & > ol > li > *:first-child { + margin-top: 1.25em; + } + + & > ol > li > *:last-child { + margin-bottom: 1.25em; + } + + ul ul, + ul ol, + ol ul, + ol ol { + margin-top: 0.75em; + margin-bottom: 0.75em; + } + + h1, + h2, + h3, + h4, + h5, + h6, + strong, + b { + color: $primary-text-color; + font-weight: 700; + } + + em, + i { + font-style: italic; + } + + a { + color: $highlight-text-color; + text-decoration: underline; + + &:focus, + &:hover, + &:active { + text-decoration: none; } } + + code { + font-size: 0.875em; + background: darken($ui-base-color, 8%); + border-radius: 4px; + padding: 0.2em 0.3em; + } + + hr { + border: 0; + border-top: 1px solid lighten($ui-base-color, 4%); + margin-top: 3em; + margin-bottom: 3em; + } + + hr + * { + margin-top: 0; + } + + h2 + * { + margin-top: 0; + } + + h3 + * { + margin-top: 0; + } + + h4 + *, + h5 + *, + h6 + * { + margin-top: 0; + } + + & > :first-child { + margin-top: 0; + } + + & > :last-child { + margin-bottom: 0; + } } .dismissable-banner { @@ -8365,3 +8488,242 @@ noscript { justify-content: center; } } + +.image { + position: relative; + overflow: hidden; + + &__preview { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + } + + &.loaded &__preview { + display: none; + } + + img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; + border: 0; + background: transparent; + opacity: 0; + } + + &.loaded img { + opacity: 1; + } +} + +.about { + padding: 20px; + + @media screen and (min-width: $no-gap-breakpoint) { + border-radius: 4px; + } + + &__header { + margin-bottom: 30px; + + &__hero { + width: 100%; + height: auto; + aspect-ratio: 1.9; + background: lighten($ui-base-color, 4%); + border-radius: 8px; + margin-bottom: 30px; + } + + h1, + p { + text-align: center; + } + + h1 { + font-size: 24px; + line-height: 1.5; + font-weight: 700; + margin-bottom: 10px; + } + + p { + font-size: 16px; + line-height: 24px; + font-weight: 400; + color: $darker-text-color; + } + } + + &__meta { + background: lighten($ui-base-color, 4%); + border-radius: 4px; + display: flex; + margin-bottom: 30px; + font-size: 15px; + + &__column { + box-sizing: border-box; + width: 50%; + padding: 20px; + } + + &__divider { + width: 0; + border: 0; + border-style: solid; + border-color: lighten($ui-base-color, 8%); + border-left-width: 1px; + min-height: calc(100% - 60px); + flex: 0 0 auto; + } + + h4 { + font-size: 15px; + text-transform: uppercase; + color: $darker-text-color; + font-weight: 500; + margin-bottom: 20px; + } + + @media screen and (max-width: 600px) { + display: block; + + h4 { + text-align: center; + } + + &__column { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + } + + &__divider { + min-height: 0; + width: 100%; + border-left-width: 0; + border-top-width: 1px; + } + } + + .layout-multiple-columns & { + display: block; + + h4 { + text-align: center; + } + + &__column { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + } + + &__divider { + min-height: 0; + width: 100%; + border-left-width: 0; + border-top-width: 1px; + } + } + } + + &__mail { + color: $primary-text-color; + text-decoration: none; + font-weight: 500; + + &:hover, + &:focus, + &:active { + text-decoration: underline; + } + } + + .getting-started__footer { + padding: 0; + margin-top: 60px; + text-align: center; + font-size: 15px; + line-height: 22px; + + @media screen and (min-width: $no-gap-breakpoint) { + display: none; + } + } + + .account { + padding: 0; + border: 0; + } + + .account__avatar-wrapper { + margin-left: 0; + } + + .account__relationship { + display: none; + } + + &__section { + margin-bottom: 10px; + + &__title { + font-size: 17px; + font-weight: 600; + line-height: 22px; + padding: 20px; + border-radius: 4px; + background: lighten($ui-base-color, 4%); + color: $highlight-text-color; + cursor: pointer; + } + + &.active &__title { + border-radius: 4px 4px 0 0; + } + + &__body { + border: 1px solid lighten($ui-base-color, 4%); + border-top: 0; + padding: 20px; + font-size: 15px; + line-height: 22px; + } + } + + &__domain-blocks { + margin-top: 30px; + width: 100%; + border-collapse: collapse; + break-inside: auto; + + th { + text-align: left; + font-weight: 500; + color: $darker-text-color; + } + + thead tr, + tbody tr { + border-bottom: 1px solid lighten($ui-base-color, 8%); + } + + tbody tr:last-child { + border-bottom: 0; + } + + th, + td { + padding: 8px; + } + } +} diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss index 01ee562196..8e5ed03f07 100644 --- a/app/javascript/styles/mastodon/containers.scss +++ b/app/javascript/styles/mastodon/containers.scss @@ -30,7 +30,6 @@ outline: 0; padding: 12px 16px; line-height: 32px; - font-family: $font-display, sans-serif; font-weight: 500; font-size: 14px; } diff --git a/app/javascript/styles/mastodon/dashboard.scss b/app/javascript/styles/mastodon/dashboard.scss index c21fc9eba8..f25765d1da 100644 --- a/app/javascript/styles/mastodon/dashboard.scss +++ b/app/javascript/styles/mastodon/dashboard.scss @@ -38,7 +38,6 @@ font-weight: 500; font-size: 24px; color: $primary-text-color; - font-family: $font-display, sans-serif; margin-bottom: 20px; line-height: 30px; } diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 3d67f3b567..69a0b22d6e 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -139,18 +139,9 @@ code { } .rules-list { - list-style: decimal; font-size: 17px; line-height: 22px; - font-weight: 500; - background: transparent; - border: 0; - padding: 0.5em 1em !important; margin-bottom: 30px; - - li { - border-color: lighten($ui-base-color, 8%); - } } .hint { @@ -603,41 +594,6 @@ code { } } } - - &__overlay-area { - position: relative; - - &__blurred form { - filter: blur(2px); - } - - &__overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - background: rgba($ui-base-color, 0.65); - border-radius: 4px; - margin-left: -4px; - margin-top: -4px; - padding: 4px; - - &__content { - text-align: center; - - &.rich-formatting { - &, - p { - color: $primary-text-color; - } - } - } - } - } } .block-icon { @@ -908,24 +864,7 @@ code { } } -.table-form { - p { - margin-bottom: 15px; - - strong { - font-weight: 500; - - @each $lang in $cjk-langs { - &:lang(#{$lang}) { - font-weight: 700; - } - } - } - } -} - -.simple_form, -.table-form { +.simple_form { .warning { box-sizing: border-box; background: rgba($error-value-color, 0.5); diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss index 43284eb482..260a97c6d2 100644 --- a/app/javascript/styles/mastodon/widgets.scss +++ b/app/javascript/styles/mastodon/widgets.scss @@ -112,13 +112,6 @@ } } -.box-widget { - padding: 20px; - border-radius: 4px; - background: $ui-base-color; - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); -} - .placeholder-widget { padding: 16px; border-radius: 4px; @@ -128,47 +121,6 @@ margin-bottom: 10px; } -.contact-widget { - min-height: 100%; - font-size: 15px; - color: $darker-text-color; - line-height: 20px; - word-wrap: break-word; - font-weight: 400; - padding: 0; - - h4 { - padding: 10px; - text-transform: uppercase; - font-weight: 700; - font-size: 13px; - color: $darker-text-color; - } - - .account { - border-bottom: 0; - padding: 10px 0; - padding-top: 5px; - } - - & > a { - display: inline-block; - padding: 10px; - padding-top: 0; - color: $darker-text-color; - text-decoration: none; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - - &:hover, - &:focus, - &:active { - text-decoration: underline; - } - } -} - .moved-account-widget { padding: 15px; padding-bottom: 20px; @@ -249,37 +201,6 @@ margin-bottom: 10px; } -.page-header { - background: lighten($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - border-radius: 4px; - padding: 60px 15px; - text-align: center; - margin: 10px 0; - - h1 { - color: $primary-text-color; - font-size: 36px; - line-height: 1.1; - font-weight: 700; - margin-bottom: 10px; - } - - p { - font-size: 15px; - color: $darker-text-color; - } - - @media screen and (max-width: $no-gap-breakpoint) { - margin-top: 0; - background: lighten($ui-base-color, 4%); - - h1 { - font-size: 24px; - } - } -} - .directory { background: $ui-base-color; border-radius: 4px; @@ -366,34 +287,6 @@ } } -.avatar-stack { - display: flex; - justify-content: flex-end; - - .account__avatar { - flex: 0 0 auto; - width: 36px; - height: 36px; - border-radius: 50%; - position: relative; - margin-left: -10px; - background: darken($ui-base-color, 8%); - border: 2px solid $ui-base-color; - - &:nth-child(1) { - z-index: 1; - } - - &:nth-child(2) { - z-index: 2; - } - - &:nth-child(3) { - z-index: 3; - } - } -} - .accounts-table { width: 100%; @@ -495,11 +388,7 @@ .moved-account-widget, .memoriam-widget, -.box-widget, -.contact-widget, -.landing-page__information.contact-widget, -.directory, -.page-header { +.directory { @media screen and (max-width: $no-gap-breakpoint) { margin-bottom: 0; box-shadow: none; @@ -507,88 +396,6 @@ } } -$maximum-width: 1235px; -$fluid-breakpoint: $maximum-width + 20px; - -.statuses-grid { - min-height: 600px; - - @media screen and (max-width: 640px) { - width: 100% !important; // Masonry layout is unnecessary at this width - } - - &__item { - width: math.div(960px - 20px, 3); - - @media screen and (max-width: $fluid-breakpoint) { - width: math.div(940px - 20px, 3); - } - - @media screen and (max-width: 640px) { - width: 100%; - } - - @media screen and (max-width: $no-gap-breakpoint) { - width: 100vw; - } - } - - .detailed-status { - border-radius: 4px; - - @media screen and (max-width: $no-gap-breakpoint) { - border-top: 1px solid lighten($ui-base-color, 16%); - } - - &.compact { - .detailed-status__meta { - margin-top: 15px; - } - - .status__content { - font-size: 15px; - line-height: 20px; - - .emojione { - width: 20px; - height: 20px; - margin: -3px 0 0; - } - - .status__content__spoiler-link { - line-height: 20px; - margin: 0; - } - } - - .media-gallery, - .status-card, - .video-player { - margin-top: 15px; - } - } - } -} - -.notice-widget { - margin-bottom: 10px; - color: $darker-text-color; - - p { - margin-bottom: 10px; - - &:last-child { - margin-bottom: 0; - } - } - - a { - font-size: 14px; - line-height: 20px; - } -} - -.notice-widget, .placeholder-widget { a { text-decoration: none; @@ -602,37 +409,3 @@ $fluid-breakpoint: $maximum-width + 20px; } } } - -.table-of-contents { - background: darken($ui-base-color, 4%); - min-height: 100%; - font-size: 14px; - border-radius: 4px; - - li a { - display: block; - font-weight: 500; - padding: 15px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - text-decoration: none; - color: $primary-text-color; - border-bottom: 1px solid lighten($ui-base-color, 4%); - - &:hover, - &:focus, - &:active { - text-decoration: underline; - } - } - - li:last-child a { - border-bottom: 0; - } - - li ul { - padding-left: 20px; - border-bottom: 1px solid lighten($ui-base-color, 4%); - } -} diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index b08687787c..ad1dc2a38e 100644 --- a/app/models/domain_block.rb +++ b/app/models/domain_block.rb @@ -28,8 +28,8 @@ class DomainBlock < ApplicationRecord delegate :count, to: :accounts, prefix: true scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) } - scope :with_user_facing_limitations, -> { where(severity: [:silence, :suspend]).or(where(reject_media: true)) } - scope :by_severity, -> { order(Arel.sql('(CASE severity WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 0 END), reject_media, domain')) } + scope :with_user_facing_limitations, -> { where(severity: [:silence, :suspend]) } + scope :by_severity, -> { order(Arel.sql('(CASE severity WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 0 END), domain')) } def to_log_human_identifier domain diff --git a/app/models/extended_description.rb b/app/models/extended_description.rb new file mode 100644 index 0000000000..6e5c0d1b6a --- /dev/null +++ b/app/models/extended_description.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class ExtendedDescription < ActiveModelSerializers::Model + attributes :updated_at, :text + + def self.current + custom = Setting.find_by(var: 'site_extended_description') + + if custom&.value.present? + new(text: custom.value, updated_at: custom.updated_at) + else + new + end + end +end diff --git a/app/serializers/rest/domain_block_serializer.rb b/app/serializers/rest/domain_block_serializer.rb new file mode 100644 index 0000000000..678463e13b --- /dev/null +++ b/app/serializers/rest/domain_block_serializer.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class REST::DomainBlockSerializer < ActiveModel::Serializer + attributes :domain, :digest, :severity, :comment + + def domain + object.public_domain + end + + def digest + object.domain_digest + end + + def comment + object.public_comment if instance_options[:with_comment] + end +end diff --git a/app/serializers/rest/extended_description_serializer.rb b/app/serializers/rest/extended_description_serializer.rb new file mode 100644 index 0000000000..0c36490333 --- /dev/null +++ b/app/serializers/rest/extended_description_serializer.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class REST::ExtendedDescriptionSerializer < ActiveModel::Serializer + attributes :updated_at, :content + + def updated_at + object.updated_at&.iso8601 + end + + def content + object.text + end +end diff --git a/app/views/about/_domain_blocks.html.haml b/app/views/about/_domain_blocks.html.haml deleted file mode 100644 index 35a30f16ee..0000000000 --- a/app/views/about/_domain_blocks.html.haml +++ /dev/null @@ -1,12 +0,0 @@ -%table - %thead - %tr - %th= t('about.unavailable_content_description.domain') - %th= t('about.unavailable_content_description.reason') - %tbody - - domain_blocks.each do |domain_block| - %tr - %td.nowrap - %span{ title: "SHA-256: #{domain_block.domain_digest}" }= domain_block.public_domain - %td - = domain_block.public_comment if display_blocks_rationale? diff --git a/app/views/about/more.html.haml b/app/views/about/more.html.haml deleted file mode 100644 index a5a10b6205..0000000000 --- a/app/views/about/more.html.haml +++ /dev/null @@ -1,96 +0,0 @@ -- content_for :page_title do - = site_hostname - -- content_for :header_tags do - = javascript_pack_tag 'public', crossorigin: 'anonymous' - = render partial: 'shared/og' - -.grid-4 - .column-0 - .public-account-header.public-account-header--no-bar - .public-account-header__image - = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title, class: 'parallax' - - .column-1 - .landing-page__call-to-action{ dir: 'ltr' } - .row - .row__information-board - .information-board__section - %span= t 'about.user_count_before' - %strong= friendly_number_to_human @instance_presenter.user_count - %span= t 'about.user_count_after', count: @instance_presenter.user_count - .information-board__section - %span= t 'about.status_count_before' - %strong= friendly_number_to_human @instance_presenter.status_count - %span= t 'about.status_count_after', count: @instance_presenter.status_count - .row__mascot - .landing-page__mascot - = image_tag @instance_presenter.mascot&.file&.url || asset_pack_path('media/images/elephant_ui_plane.svg'), alt: '' - - .column-2 - .contact-widget - %h4= t 'about.administered_by' - - = account_link_to(@instance_presenter.contact.account) - - - if @instance_presenter.contact.email.present? - %h4 - = succeed ':' do - = t 'about.contact' - - = mail_to @instance_presenter.contact.email, nil, title: @instance_presenter.contact.email - - .column-3 - = render 'application/flashes' - - - if @contents.blank? && @rules.empty? && (!display_blocks? || @blocks&.empty?) - = nothing_here - - else - .box-widget - .rich-formatting - - unless @rules.empty? - %h2#rules= t('about.rules') - - %p= t('about.rules_html') - - %ol.rules-list - - @rules.each do |rule| - %li - .rules-list__text= rule.text - - = @contents.html_safe - - - if display_blocks? && !@blocks.empty? - %h2#unavailable-content= t('about.unavailable_content') - - %p= t('about.unavailable_content_html') - - - if (blocks = @blocks.select(&:reject_media?)) && !blocks.empty? - %h3= t('about.unavailable_content_description.rejecting_media_title') - %p= t('about.unavailable_content_description.rejecting_media') - = render partial: 'domain_blocks', locals: { domain_blocks: blocks } - - if (blocks = @blocks.select(&:silence?)) && !blocks.empty? - %h3= t('about.unavailable_content_description.silenced_title') - %p= t('about.unavailable_content_description.silenced') - = render partial: 'domain_blocks', locals: { domain_blocks: blocks } - - if (blocks = @blocks.select(&:suspend?)) && !blocks.empty? - %h3= t('about.unavailable_content_description.suspended_title') - %p= t('about.unavailable_content_description.suspended') - = render partial: 'domain_blocks', locals: { domain_blocks: blocks } - - .column-4 - %ul.table-of-contents - - unless @rules.empty? - %li= link_to t('about.rules'), '#rules' - - - @table_of_contents.each do |item| - %li - = link_to item.title, "##{item.anchor}" - - - unless item.children.empty? - %ul - - item.children.each do |sub_item| - %li= link_to sub_item.title, "##{sub_item.anchor}" - - - if display_blocks? && !@blocks.empty? - %li= link_to t('about.unavailable_content'), '#unavailable-content' diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml new file mode 100644 index 0000000000..aff28b9a92 --- /dev/null +++ b/app/views/about/show.html.haml @@ -0,0 +1,4 @@ +- content_for :page_title do + = t('about.title') + += render partial: 'shared/web_app' diff --git a/config/locales/en.yml b/config/locales/en.yml index 8a70bd8cac..11716234ef 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2,41 +2,15 @@ en: about: about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!' - about_this: About - administered_by: 'Administered by:' api: API apps: Mobile apps - contact: Contact contact_missing: Not set contact_unavailable: N/A documentation: Documentation hosted_on: Mastodon hosted on %{domain} - instance_actor_flash: | - This account is a virtual actor used to represent the server itself and not any individual user. - It is used for federation purposes and should not be blocked unless you want to block the whole instance, in which case you should use a domain block. privacy_policy: Privacy Policy - rules: Server rules - rules_html: 'Below is a summary of rules you need to follow if you want to have an account on this server of Mastodon:' source_code: Source code - status_count_after: - one: post - other: posts - status_count_before: Who published - unavailable_content: Moderated servers - unavailable_content_description: - domain: Server - reason: Reason - rejecting_media: 'Media files from these servers will not be processed or stored, and no thumbnails will be displayed, requiring manual click-through to the original file:' - rejecting_media_title: Filtered media - silenced: 'Posts from these servers will be hidden in public timelines and conversations, and no notifications will be generated from their users interactions, unless you are following them:' - silenced_title: Limited servers - suspended: 'No data from these servers will be processed, stored or exchanged, making any interaction or communication with users from these servers impossible:' - suspended_title: Suspended servers - unavailable_content_html: Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server. - user_count_after: - one: user - other: users - user_count_before: Home to + title: About what_is_mastodon: What is Mastodon? accounts: choices_html: "%{name}'s choices:" diff --git a/config/routes.rb b/config/routes.rb index e6098cd172..29ec0f8a56 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -487,7 +487,9 @@ Rails.application.routes.draw do resource :instance, only: [:show] do resources :peers, only: [:index], controller: 'instances/peers' resources :rules, only: [:index], controller: 'instances/rules' + resources :domain_blocks, only: [:index], controller: 'instances/domain_blocks' resource :privacy_policy, only: [:show], controller: 'instances/privacy_policies' + resource :extended_description, only: [:show], controller: 'instances/extended_descriptions' resource :activity, only: [:show], controller: 'instances/activity' end @@ -642,8 +644,8 @@ Rails.application.routes.draw do get '/web/(*any)', to: 'home#index', as: :web - get '/about', to: redirect('/') - get '/about/more', to: 'about#more' + get '/about', to: 'about#show' + get '/about/more', to: redirect('/about') get '/privacy-policy', to: 'privacy#show', as: :privacy_policy get '/terms', to: redirect('/privacy-policy') diff --git a/spec/controllers/about_controller_spec.rb b/spec/controllers/about_controller_spec.rb index 20069e4137..97143ec437 100644 --- a/spec/controllers/about_controller_spec.rb +++ b/spec/controllers/about_controller_spec.rb @@ -3,13 +3,9 @@ require 'rails_helper' RSpec.describe AboutController, type: :controller do render_views - describe 'GET #more' do + describe 'GET #show' do before do - get :more - end - - it 'assigns @instance_presenter' do - expect(assigns(:instance_presenter)).to be_kind_of InstancePresenter + get :show end it 'returns http success' do From 8a9d774a84b59db7d4d973be4392e50ddebf2484 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 13 Oct 2022 16:14:11 +0200 Subject: [PATCH 045/500] New Crowdin updates (#19344) * New translations simple_form.en.yml (Norwegian) * New translations activerecord.en.yml (Korean) * New translations devise.en.yml (Korean) * New translations doorkeeper.en.yml (Korean) * New translations devise.en.yml (Dutch) * New translations doorkeeper.en.yml (Dutch) * New translations activerecord.en.yml (Norwegian) * New translations devise.en.yml (Norwegian) * New translations doorkeeper.en.yml (Norwegian) * New translations activerecord.en.yml (Slovenian) * New translations devise.en.yml (Slovenian) * New translations devise.en.yml (Galician) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations devise.en.yml (Urdu (Pakistan)) * New translations activerecord.en.yml (Vietnamese) * New translations devise.en.yml (Vietnamese) * New translations doorkeeper.en.yml (Vietnamese) * New translations doorkeeper.en.yml (Galician) * New translations activerecord.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Icelandic) * New translations devise.en.yml (Icelandic) * New translations doorkeeper.en.yml (Icelandic) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations devise.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations activerecord.en.yml (Indonesian) * New translations devise.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations doorkeeper.en.yml (Slovenian) * New translations devise.en.yml (Swedish) * New translations simple_form.en.yml (Albanian) * New translations activerecord.en.yml (Albanian) * New translations devise.en.yml (Albanian) * New translations doorkeeper.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations activerecord.en.yml (Serbian (Cyrillic)) * New translations devise.en.yml (Serbian (Cyrillic)) * New translations doorkeeper.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations activerecord.en.yml (Swedish) * New translations doorkeeper.en.yml (Swedish) * New translations doorkeeper.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Turkish) * New translations activerecord.en.yml (Turkish) * New translations devise.en.yml (Turkish) * New translations doorkeeper.en.yml (Turkish) * New translations simple_form.en.yml (Ukrainian) * New translations activerecord.en.yml (Ukrainian) * New translations devise.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Ukrainian) * New translations activerecord.en.yml (Chinese Simplified) * New translations devise.en.yml (Chinese Simplified) * New translations devise.en.yml (Indonesian) * New translations doorkeeper.en.yml (Indonesian) * New translations simple_form.en.yml (Kazakh) * New translations doorkeeper.en.yml (Thai) * New translations simple_form.en.yml (Croatian) * New translations activerecord.en.yml (Croatian) * New translations devise.en.yml (Croatian) * New translations doorkeeper.en.yml (Croatian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations devise.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Kazakh) * New translations activerecord.en.yml (Thai) * New translations devise.en.yml (Kazakh) * New translations doorkeeper.en.yml (Kazakh) * New translations simple_form.en.yml (Estonian) * New translations activerecord.en.yml (Estonian) * New translations devise.en.yml (Estonian) * New translations doorkeeper.en.yml (Estonian) * New translations simple_form.en.yml (Latvian) * New translations activerecord.en.yml (Latvian) * New translations devise.en.yml (Latvian) * New translations doorkeeper.en.yml (Latvian) * New translations devise.en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Persian) * New translations doorkeeper.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Persian) * New translations devise.en.yml (Persian) * New translations doorkeeper.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations activerecord.en.yml (Tamil) * New translations devise.en.yml (Tamil) * New translations doorkeeper.en.yml (Tamil) * New translations simple_form.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Spanish, Argentina) * New translations devise.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Marathi) * New translations activerecord.en.yml (Spanish, Mexico) * New translations devise.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations activerecord.en.yml (Bengali) * New translations devise.en.yml (Bengali) * New translations activerecord.en.yml (Marathi) * New translations activerecord.en.yml (Hindi) * New translations devise.en.yml (Malayalam) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Tatar) * New translations activerecord.en.yml (Tatar) * New translations devise.en.yml (Tatar) * New translations doorkeeper.en.yml (Tatar) * New translations simple_form.en.yml (Malayalam) * New translations activerecord.en.yml (Malayalam) * New translations doorkeeper.en.yml (Malayalam) * New translations simple_form.en.yml (Breton) * New translations activerecord.en.yml (Breton) * New translations devise.en.yml (Breton) * New translations doorkeeper.en.yml (Breton) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations devise.en.yml (Hindi) * New translations doorkeeper.en.yml (Hindi) * New translations simple_form.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations devise.en.yml (Welsh) * New translations doorkeeper.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations activerecord.en.yml (Esperanto) * New translations devise.en.yml (Esperanto) * New translations doorkeeper.en.yml (Esperanto) * New translations simple_form.en.yml (Corsican) * New translations activerecord.en.yml (Corsican) * New translations devise.en.yml (Corsican) * New translations doorkeeper.en.yml (Corsican) * New translations simple_form.en.yml (Sardinian) * New translations activerecord.en.yml (Sardinian) * New translations devise.en.yml (Sardinian) * New translations doorkeeper.en.yml (Sardinian) * New translations devise.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Kabyle) * New translations activerecord.en.yml (Kabyle) * New translations devise.en.yml (Kabyle) * New translations doorkeeper.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations activerecord.en.yml (Ido) * New translations devise.en.yml (Ido) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Occitan) * New translations devise.en.yml (Kannada) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations activerecord.en.yml (Asturian) * New translations devise.en.yml (Asturian) * New translations doorkeeper.en.yml (Asturian) * New translations activerecord.en.yml (Occitan) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations devise.en.yml (Occitan) * New translations doorkeeper.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Serbian (Latin)) * New translations devise.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations devise.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations devise.en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Hungarian) * New translations en.yml (Arabic) * New translations en.yml (Bulgarian) * New translations en.yml (Catalan) * New translations en.yml (Danish) * New translations en.yml (Greek) * New translations en.yml (French) * New translations en.yml (Basque) * New translations en.yml (Finnish) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Romanian) * New translations en.yml (Spanish) * New translations en.yml (Albanian) * New translations en.yml (Turkish) * New translations en.yml (Ukrainian) * New translations en.yml (Ido) * New translations en.yml (Chinese Simplified) * New translations en.yml (Thai) * New translations en.yml (Swedish) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Slovenian) * New translations en.yml (Armenian) * New translations en.yml (Russian) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Slovak) * New translations en.yml (Norwegian) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.yml (Georgian) * New translations en.yml (Korean) * New translations en.yml (Lithuanian) * New translations en.yml (Dutch) * New translations en.yml (Indonesian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Icelandic) * New translations en.yml (Galician) * New translations en.yml (Vietnamese) * New translations en.yml (Chinese Traditional) * New translations en.yml (Persian) * New translations en.yml (Tamil) * New translations en.yml (Malayalam) * New translations en.yml (Welsh) * New translations en.yml (Esperanto) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Tatar) * New translations en.yml (Breton) * New translations en.yml (Sinhala) * New translations en.yml (Cornish) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Croatian) * New translations en.yml (Telugu) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Hindi) * New translations en.yml (Malay) * New translations en.yml (Sardinian) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations en.yml (Kabyle) * New translations en.yml (Taigi) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.yml (Occitan) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 13 +++ app/javascript/mastodon/locales/ar.json | 13 +++ app/javascript/mastodon/locales/ast.json | 13 +++ app/javascript/mastodon/locales/bg.json | 13 +++ app/javascript/mastodon/locales/bn.json | 13 +++ app/javascript/mastodon/locales/br.json | 13 +++ app/javascript/mastodon/locales/ca.json | 13 +++ app/javascript/mastodon/locales/ckb.json | 13 +++ app/javascript/mastodon/locales/co.json | 13 +++ app/javascript/mastodon/locales/cs.json | 13 +++ app/javascript/mastodon/locales/cy.json | 13 +++ app/javascript/mastodon/locales/da.json | 13 +++ app/javascript/mastodon/locales/de.json | 19 +++- .../mastodon/locales/defaultMessages.json | 56 +++++++++++ app/javascript/mastodon/locales/el.json | 13 +++ app/javascript/mastodon/locales/en-GB.json | 13 +++ app/javascript/mastodon/locales/en.json | 13 +++ app/javascript/mastodon/locales/eo.json | 13 +++ app/javascript/mastodon/locales/es-AR.json | 13 +++ app/javascript/mastodon/locales/es-MX.json | 25 +++-- app/javascript/mastodon/locales/es.json | 13 +++ app/javascript/mastodon/locales/et.json | 13 +++ app/javascript/mastodon/locales/eu.json | 13 +++ app/javascript/mastodon/locales/fa.json | 13 +++ app/javascript/mastodon/locales/fi.json | 13 +++ app/javascript/mastodon/locales/fr.json | 35 ++++--- app/javascript/mastodon/locales/fy.json | 13 +++ app/javascript/mastodon/locales/ga.json | 13 +++ app/javascript/mastodon/locales/gd.json | 13 +++ app/javascript/mastodon/locales/gl.json | 19 +++- app/javascript/mastodon/locales/he.json | 13 +++ app/javascript/mastodon/locales/hi.json | 13 +++ app/javascript/mastodon/locales/hr.json | 13 +++ app/javascript/mastodon/locales/hu.json | 13 +++ app/javascript/mastodon/locales/hy.json | 13 +++ app/javascript/mastodon/locales/id.json | 13 +++ app/javascript/mastodon/locales/io.json | 13 +++ app/javascript/mastodon/locales/is.json | 57 ++++++----- app/javascript/mastodon/locales/it.json | 13 +++ app/javascript/mastodon/locales/ja.json | 13 +++ app/javascript/mastodon/locales/ka.json | 13 +++ app/javascript/mastodon/locales/kab.json | 13 +++ app/javascript/mastodon/locales/kk.json | 13 +++ app/javascript/mastodon/locales/kn.json | 13 +++ app/javascript/mastodon/locales/ko.json | 55 +++++++---- app/javascript/mastodon/locales/ku.json | 13 +++ app/javascript/mastodon/locales/kw.json | 13 +++ app/javascript/mastodon/locales/lt.json | 13 +++ app/javascript/mastodon/locales/lv.json | 13 +++ app/javascript/mastodon/locales/mk.json | 13 +++ app/javascript/mastodon/locales/ml.json | 13 +++ app/javascript/mastodon/locales/mr.json | 13 +++ app/javascript/mastodon/locales/ms.json | 13 +++ app/javascript/mastodon/locales/nl.json | 13 +++ app/javascript/mastodon/locales/nn.json | 13 +++ app/javascript/mastodon/locales/no.json | 13 +++ app/javascript/mastodon/locales/oc.json | 13 +++ app/javascript/mastodon/locales/pa.json | 13 +++ app/javascript/mastodon/locales/pl.json | 13 +++ app/javascript/mastodon/locales/pt-BR.json | 13 +++ app/javascript/mastodon/locales/pt-PT.json | 13 +++ app/javascript/mastodon/locales/ro.json | 13 +++ app/javascript/mastodon/locales/ru.json | 13 +++ app/javascript/mastodon/locales/sa.json | 13 +++ app/javascript/mastodon/locales/sc.json | 13 +++ app/javascript/mastodon/locales/si.json | 51 ++++++---- app/javascript/mastodon/locales/sk.json | 13 +++ app/javascript/mastodon/locales/sl.json | 13 +++ app/javascript/mastodon/locales/sq.json | 13 +++ app/javascript/mastodon/locales/sr-Latn.json | 13 +++ app/javascript/mastodon/locales/sr.json | 13 +++ app/javascript/mastodon/locales/sv.json | 13 +++ app/javascript/mastodon/locales/szl.json | 13 +++ app/javascript/mastodon/locales/ta.json | 13 +++ app/javascript/mastodon/locales/tai.json | 13 +++ app/javascript/mastodon/locales/te.json | 13 +++ app/javascript/mastodon/locales/th.json | 53 ++++++---- app/javascript/mastodon/locales/tr.json | 13 +++ app/javascript/mastodon/locales/tt.json | 13 +++ app/javascript/mastodon/locales/ug.json | 13 +++ app/javascript/mastodon/locales/uk.json | 13 +++ app/javascript/mastodon/locales/ur.json | 13 +++ app/javascript/mastodon/locales/vi.json | 23 ++++- app/javascript/mastodon/locales/zgh.json | 13 +++ app/javascript/mastodon/locales/zh-CN.json | 13 +++ app/javascript/mastodon/locales/zh-HK.json | 13 +++ app/javascript/mastodon/locales/zh-TW.json | 13 +++ config/locales/ar.yml | 38 -------- config/locales/ast.yml | 14 --- config/locales/bg.yml | 21 ---- config/locales/bn.yml | 23 ----- config/locales/br.yml | 17 ---- config/locales/ca.yml | 30 ------ config/locales/ckb.yml | 30 ------ config/locales/co.yml | 30 ------ config/locales/cs.yml | 34 ------- config/locales/cy.yml | 38 -------- config/locales/da.yml | 30 ------ config/locales/de.yml | 30 ------ config/locales/devise.si.yml | 22 ++--- config/locales/doorkeeper.si.yml | 6 +- config/locales/el.yml | 30 ------ config/locales/eo.yml | 28 ------ config/locales/es-AR.yml | 36 +------ config/locales/es-MX.yml | 30 ------ config/locales/es.yml | 30 ------ config/locales/et.yml | 27 ------ config/locales/eu.yml | 28 ------ config/locales/fa.yml | 30 ------ config/locales/fi.yml | 30 ------ config/locales/fr.yml | 34 +------ config/locales/ga.yml | 3 - config/locales/gd.yml | 34 ------- config/locales/gl.yml | 30 ------ config/locales/he.yml | 34 ------- config/locales/hi.yml | 9 -- config/locales/hr.yml | 4 - config/locales/hu.yml | 30 ------ config/locales/hy.yml | 27 ------ config/locales/id.yml | 26 ----- config/locales/io.yml | 30 ------ config/locales/is.yml | 32 +------ config/locales/it.yml | 30 ------ config/locales/ja.yml | 26 ----- config/locales/ka.yml | 8 -- config/locales/kab.yml | 19 ---- config/locales/kk.yml | 25 ----- config/locales/ko.yml | 39 ++------ config/locales/ku.yml | 30 ------ config/locales/kw.yml | 2 - config/locales/lt.yml | 8 -- config/locales/lv.yml | 32 ------- config/locales/ml.yml | 8 -- config/locales/ms.yml | 25 ----- config/locales/nl.yml | 28 ------ config/locales/nn.yml | 25 ----- config/locales/no.yml | 28 ------ config/locales/oc.yml | 23 ----- config/locales/pl.yml | 34 ------- config/locales/pt-BR.yml | 30 ------ config/locales/pt-PT.yml | 30 ------ config/locales/ro.yml | 29 ------ config/locales/ru.yml | 34 ------- config/locales/sc.yml | 30 ------ config/locales/si.yml | 96 +++++++------------ config/locales/simple_form.de.yml | 8 ++ config/locales/simple_form.es-MX.yml | 8 ++ config/locales/simple_form.fr.yml | 3 + config/locales/simple_form.gl.yml | 8 ++ config/locales/simple_form.is.yml | 8 ++ config/locales/simple_form.ko.yml | 8 ++ config/locales/simple_form.si.yml | 14 +-- config/locales/simple_form.vi.yml | 8 ++ config/locales/sk.yml | 32 ------- config/locales/sl.yml | 34 ------- config/locales/sq.yml | 30 ------ config/locales/sr-Latn.yml | 4 - config/locales/sr.yml | 16 ---- config/locales/sv.yml | 28 ------ config/locales/ta.yml | 18 ---- config/locales/tai.yml | 2 - config/locales/te.yml | 11 --- config/locales/th.yml | 32 +------ config/locales/tr.yml | 30 ------ config/locales/tt.yml | 5 - config/locales/uk.yml | 32 ------- config/locales/vi.yml | 26 ----- config/locales/zgh.yml | 7 -- config/locales/zh-CN.yml | 28 ------ config/locales/zh-HK.yml | 28 ------ config/locales/zh-TW.yml | 28 ------ 171 files changed, 1411 insertions(+), 2003 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 09ff94ad9c..3519563d50 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Voeg by of verwyder van lyste", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index a928850dec..c6b10bbecb 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "مُلاحظة", "account.add_or_remove_from_list": "الإضافة أو الإزالة من القائمة", "account.badges.bot": "روبوت", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index a81b09ea98..4dff9d6165 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Amestar o desaniciar de les llistes", "account.badges.bot": "Robó", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 4248e2cce3..8cb4f993a3 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Бележка", "account.add_or_remove_from_list": "Добави или премахни от списъците", "account.badges.bot": "Бот", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index d3468ab08a..b80a943c54 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "বিজ্ঞপ্তি", "account.add_or_remove_from_list": "তালিকাতে যোগ বা অপসারণ করো", "account.badges.bot": "বট", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 96c2aaa665..47ba119659 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Notenn", "account.add_or_remove_from_list": "Ouzhpenn pe dilemel eus al listennadoù", "account.badges.bot": "Robot", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 8be03d7fcf..f6a5996d94 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Afegeix o elimina de les llistes", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 94adcc3b1f..6b887addee 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "تێبینی ", "account.add_or_remove_from_list": "زیادکردن یان سڕینەوە لە پێرستەکان", "account.badges.bot": "بوت", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 565adbc933..bf79a5b128 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Aghjunghje o toglie da e liste", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 0920aef42f..f56fb8d7d3 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Poznámka", "account.add_or_remove_from_list": "Přidat nebo odstranit ze seznamů", "account.badges.bot": "Robot", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 603d62b68d..b25834c363 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nodyn", "account.add_or_remove_from_list": "Ychwanegu neu Dileu o'r rhestrau", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index a63104242a..922314e30f 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Notat", "account.add_or_remove_from_list": "Tilføj eller fjern fra lister", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 28d037d52e..14b825bee2 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Notiz", "account.add_or_remove_from_list": "Hinzufügen oder Entfernen von Listen", "account.badges.bot": "Bot", @@ -154,9 +167,9 @@ "dismissable_banner.community_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen, deren Konten von {domain} gehostet werden.", "dismissable_banner.dismiss": "Ablehnen", "dismissable_banner.explore_links": "Diese Nachrichten werden gerade von Leuten auf diesem und anderen Servern des dezentralen Netzwerks besprochen.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.explore_statuses": "Diese Beiträge von diesem und anderen Servern im dezentralen Netzwerk gewinnen gerade an Reichweite auf diesem Server.", + "dismissable_banner.explore_tags": "Diese Hashtags gewinnen gerade unter den Leuten auf diesem und anderen Servern des dezentralen Netzwerkes an Reichweite.", + "dismissable_banner.public_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen auf diesem und anderen Servern des dezentralen Netzwerks, die dieser Server kennt.", "embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, indem du den folgenden Code einfügst.", "embed.preview": "So wird es aussehen:", "emoji_button.activity": "Aktivitäten", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 982c35e5df..ee8d960525 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -841,6 +841,62 @@ { "defaultMessage": "About", "id": "column.about" + }, + { + "defaultMessage": "Server rules", + "id": "about.rules" + }, + { + "defaultMessage": "Moderated servers", + "id": "about.blocks" + }, + { + "defaultMessage": "Limited", + "id": "about.domain_blocks.silenced.title" + }, + { + "defaultMessage": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "id": "about.domain_blocks.silenced.explanation" + }, + { + "defaultMessage": "Suspended", + "id": "about.domain_blocks.suspended.title" + }, + { + "defaultMessage": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "id": "about.domain_blocks.suspended.explanation" + }, + { + "defaultMessage": "Decentralized social media powered by {mastodon}", + "id": "about.powered_by" + }, + { + "defaultMessage": "Administered by:", + "id": "server_banner.administered_by" + }, + { + "defaultMessage": "Contact:", + "id": "about.contact" + }, + { + "defaultMessage": "This information has not been made available on this server.", + "id": "about.not_available" + }, + { + "defaultMessage": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "id": "about.domain_blocks.preamble" + }, + { + "defaultMessage": "Domain", + "id": "about.domain_blocks.domain" + }, + { + "defaultMessage": "Severity", + "id": "about.domain_blocks.severity" + }, + { + "defaultMessage": "Reason", + "id": "about.domain_blocks.comment" } ], "path": "app/javascript/mastodon/features/about/index.json" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 4d0f413ef9..4bc1351efc 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Σημείωση", "account.add_or_remove_from_list": "Προσθήκη ή Αφαίρεση από λίστες", "account.badges.bot": "Μποτ", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 3bd55e18a5..5745b53043 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 3ee9c681b0..3eb13a8ea1 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 7c74a117d0..087bcbb5b8 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Noto", "account.add_or_remove_from_list": "Aldoni al aŭ forigi el listoj", "account.badges.bot": "Roboto", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 510d790ee2..cff937c4ef 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agregar o quitar de las listas", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index aef413c501..793c65a3c5 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agregar o eliminar de las listas", "account.badges.bot": "Bot", @@ -151,12 +164,12 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activo", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de personas cuyas cuentas están alojadas en {domain}.", + "dismissable_banner.dismiss": "Descartar", + "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada en este momento.", + "dismissable_banner.explore_statuses": "Estas publicaciones de este y otros servidores en la red descentralizada están ganando popularidad en este servidor en este momento.", + "dismissable_banner.explore_tags": "Estas tendencias están ganando popularidad entre la gente en este y otros servidores de la red descentralizada en este momento.", + "dismissable_banner.public_timeline": "Estas son las publicaciones públicas más recientes de personas en este y otros servidores de la red descentralizada que este servidor conoce.", "embed.instructions": "Añade este toot a tu sitio web con el siguiente código.", "embed.preview": "Así es como se verá:", "emoji_button.activity": "Actividad", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 32e3517d2d..561fc84e65 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agregar o eliminar de listas", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 0d17189dde..380868da92 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Märge", "account.add_or_remove_from_list": "Lisa või Eemalda nimekirjadest", "account.badges.bot": "Robot", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 1583e84538..46f7d082d4 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Oharra", "account.add_or_remove_from_list": "Gehitu edo kendu zerrendetatik", "account.badges.bot": "Bot-a", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 64d705af21..9d6bb57924 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "یادداشت", "account.add_or_remove_from_list": "افزودن یا برداشتن از سیاهه‌ها", "account.badges.bot": "روبات", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 9ad114af92..6335c5ee35 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Muistiinpano", "account.add_or_remove_from_list": "Lisää tai poista listoilta", "account.badges.bot": "Botti", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 9561c7cfe3..754cf1021b 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Ajouter ou retirer des listes", "account.badges.bot": "Bot", @@ -145,13 +158,13 @@ "conversation.mark_as_read": "Marquer comme lu", "conversation.open": "Afficher la conversation", "conversation.with": "Avec {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copié", + "copypaste.copy": "Copier", "directory.federated": "Du fédiverse connu", "directory.local": "De {domain} seulement", "directory.new_arrivals": "Inscrit·e·s récemment", "directory.recently_active": "Actif·ve·s récemment", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.community_timeline": "Voici les messages publics les plus récents des personnes dont les comptes sont hébergés par {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", @@ -258,14 +271,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.on_another_server": "Sur un autre serveur", + "interaction_modal.on_this_server": "Sur ce serveur", + "interaction_modal.other_server_instructions": "Copiez et collez simplement cette URL dans la barre de recherche de votre application préférée ou dans l’interface web où vous êtes connecté.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.follow": "Suivre {name}", + "interaction_modal.title.reblog": "Partager la publication de {name}", + "interaction_modal.title.reply": "Répondre au message de {name}", "intervals.full.days": "{number, plural, one {# jour} other {# jours}}", "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -424,8 +437,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible pour tous, mais sans fonctionnalités de découverte", "privacy.unlisted.short": "Non listé", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Dernière mise à jour {date}", + "privacy_policy.title": "Politique de confidentialité", "refresh": "Actualiser", "regeneration_indicator.label": "Chargement…", "regeneration_indicator.sublabel": "Votre fil principal est en cours de préparation !", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index e23cd0b836..2fc9d1c15c 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 4db9b4aa31..ca82660b1b 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nóta", "account.add_or_remove_from_list": "Cuir Le nó Bain De na liostaí", "account.badges.bot": "Bota", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 881a8a7304..06cb820ce3 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nòta", "account.add_or_remove_from_list": "Cuir ris no thoir air falbh o na liostaichean", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index d326816b42..877a1dda5a 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Engadir ou eliminar das listaxes", "account.badges.bot": "Bot", @@ -154,9 +167,9 @@ "dismissable_banner.community_timeline": "Estas son as publicacións máis recentes das persoas que teñen a súa conta en {domain}.", "dismissable_banner.dismiss": "Desbotar", "dismissable_banner.explore_links": "As persoas deste servidor e da rede descentralizada están a falar destas historias agora mesmo.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.explore_statuses": "Está aumentando a popularidade destas publicacións no servidor e a rede descentralizada.", + "dismissable_banner.explore_tags": "Estes cancelos están gañando popularidade entre as persoas deste servidor e outros servidores da rede descentralizada.", + "dismissable_banner.public_timeline": "Estas son as publicacións máis recentes das persoas deste servidor e outros servidores da rede descentralizada cos que está conectado.", "embed.instructions": "Engade esta publicación ó teu sitio web copiando o seguinte código.", "embed.preview": "Así será mostrado:", "emoji_button.activity": "Actividade", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 000e20ff0f..6aeb0a47d6 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "הערה", "account.add_or_remove_from_list": "הוסף או הסר מהרשימות", "account.badges.bot": "בוט", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index a57f2bafff..0831628762 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "टिप्पणियाँ", "account.add_or_remove_from_list": "सूची में जोड़ें या हटाए", "account.badges.bot": "बॉट", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index cc589a19e7..95d38e7b16 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Bilješka", "account.add_or_remove_from_list": "Dodaj ili ukloni s liste", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 4988e751e1..cb554133c9 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Jegyzet", "account.add_or_remove_from_list": "Hozzáadás vagy eltávolítás a listákról", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index d15afa1bd5..f97c5296b0 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Նշում", "account.add_or_remove_from_list": "Աւելացնել կամ հեռացնել ցանկերից", "account.badges.bot": "Բոտ", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index c5b28705c6..23d80823aa 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Catatan", "account.add_or_remove_from_list": "Tambah atau Hapus dari daftar", "account.badges.bot": "בוט", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index b336963388..ec0a995844 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Noto", "account.add_or_remove_from_list": "Insertez o removez de listi", "account.badges.bot": "Boto", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index ad3d240cbc..c79d3d67e9 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Minnispunktur", "account.add_or_remove_from_list": "Bæta við eða fjarlægja af listum", "account.badges.bot": "Vélmenni", @@ -145,18 +158,18 @@ "conversation.mark_as_read": "Merkja sem lesið", "conversation.open": "Skoða samtal", "conversation.with": "Með {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Afritað", + "copypaste.copy": "Afrita", "directory.federated": "Frá samtengdum vefþjónum", "directory.local": "Einungis frá {domain}", "directory.new_arrivals": "Nýkomnir", "directory.recently_active": "Nýleg virkni", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Þetta eru nýjustu opinberu færslurnar frá fólki sem er hýst á {domain}.", + "dismissable_banner.dismiss": "Hunsa", + "dismissable_banner.explore_links": "Þetta eru fréttafærslur sem í augnablikinu er verið að tala um af fólki á þessum og öðrum netþjónum á dreifhýsta netkerfinu.", + "dismissable_banner.explore_statuses": "Þessar færslur frá þessum og öðrum netþjónum á dreifhýsta netkerfinu eru að fá aukna athygli í þessu töluðum orðum.", + "dismissable_banner.explore_tags": "Þetta eru myllumerki sem í augnablikinu eru að fá aukna athygli hjá fólki á þessum og öðrum netþjónum á dreifhýsta netkerfinu.", + "dismissable_banner.public_timeline": "Þetta eru nýjustu opinberar færslur frá fólki á þessum og öðrum netþjónum á dreifhýsta netkerfinu sem þessi netþjónn veit um.", "embed.instructions": "Felldu þessa færslu inn í vefsvæðið þitt með því að afrita kóðann hér fyrir neðan.", "embed.preview": "Svona mun þetta líta út:", "emoji_button.activity": "Virkni", @@ -254,18 +267,18 @@ "home.column_settings.show_replies": "Birta svör", "home.hide_announcements": "Fela auglýsingar", "home.show_announcements": "Birta auglýsingar", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Með notandaaðgangi á Mastodon geturðu sett þessa færslu í eftirlæti og þannig látið höfundinn vita að þú kunnir að meta hana og vistað hana til síðari tíma.", + "interaction_modal.description.follow": "Með notandaaðgangi á Mastodon geturðu fylgst með {name} og fengið færslur frá viðkomandi í heimastreymið þitt.", + "interaction_modal.description.reblog": "Með notandaaðgangi á Mastodon geturðu endurbirt þessa færslu til að deila henni með þeim sem fylgjast með þér.", + "interaction_modal.description.reply": "Með notandaaðgangi á Mastodon geturðu svarað þessari færslu.", + "interaction_modal.on_another_server": "Á öðrum netþjóni", + "interaction_modal.on_this_server": "Á þessum netþjóni", + "interaction_modal.other_server_instructions": "Þú einfaldlega afritar þessa slóð og límir hana inn í veffanga-/leitarstiku eftirlætisforritsins þíns eða í vefviðmótið þar sem þú ert skráð/ur inn.", + "interaction_modal.preamble": "Þar sem Mastodon er dreifhýst kerfi, þá geturðu notað aðgang sem er hýstur á öðrum Mastodon-þjóni eða öðru samhæfðu kerfi, ef þú ert ekki með notandaaðgang á þessum hér.", + "interaction_modal.title.favourite": "Setja færsluna frá {name} í eftirlæti", + "interaction_modal.title.follow": "Fylgjast með {name}", + "interaction_modal.title.reblog": "Endurbirta færsluna frá {name}", + "interaction_modal.title.reply": "Svara færslunni frá {name}", "intervals.full.days": "{number, plural, one {# dagur} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# klukkustund} other {# klukkustundir}}", "intervals.full.minutes": "{number, plural, one {# mínúta} other {# mínútur}}", @@ -424,8 +437,8 @@ "privacy.public.short": "Opinbert", "privacy.unlisted.long": "Sýnilegt öllum, en ekki tekið með í uppgötvunareiginleikum", "privacy.unlisted.short": "Óskráð", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Síðast uppfært {date}", + "privacy_policy.title": "Persónuverndarstefna", "refresh": "Endurlesa", "regeneration_indicator.label": "Hleð inn…", "regeneration_indicator.sublabel": "Verið er að útbúa heimastreymið þitt!", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 52fa109d54..44542415ee 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Le tue note sull'utente", "account.add_or_remove_from_list": "Aggiungi o togli dalle liste", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 2301bae075..d2745aa5ba 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "メモ", "account.add_or_remove_from_list": "リストから追加または外す", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 984d0ba975..b33ed4fc5d 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "ბოტი", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 456dbe027e..09b6333cd8 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Tazmilt", "account.add_or_remove_from_list": "Rnu neɣ kkes seg tebdarin", "account.badges.bot": "Aṛubut", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 2b2b31c49b..9d086ef2c5 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Жазба", "account.add_or_remove_from_list": "Тізімге қосу немесе жою", "account.badges.bot": "Бот", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index fac2293488..2856c9ffec 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "ಟಿಪ್ಪಣಿ", "account.add_or_remove_from_list": "ಪಟ್ಟಿಗೆ ಸೇರಿಸು ಅಥವ ಪಟ್ಟಿಯಿಂದ ತೆಗೆದುಹಾಕು", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index f06bd2c5c5..ab5d538ab4 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "노트", "account.add_or_remove_from_list": "리스트에 추가 혹은 삭제", "account.badges.bot": "봇", @@ -145,18 +158,18 @@ "conversation.mark_as_read": "읽은 상태로 표시", "conversation.open": "대화 보기", "conversation.with": "{names} 님과", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "복사됨", + "copypaste.copy": "복사", "directory.federated": "알려진 연합우주로부터", "directory.local": "{domain}에서만", "directory.new_arrivals": "새로운 사람들", "directory.recently_active": "최근 활동", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.community_timeline": "여기 있는 것들은 계정이 {domain}에 있는 사람들의 최근 공개 게시물들입니다.", "dismissable_banner.dismiss": "지우기", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.explore_links": "이 뉴스들은 이 서버와 분산화된 네트워크의 다른 서버에서 사람들이 지금 많이 이야기 하고 있는 것입니다.", + "dismissable_banner.explore_statuses": "이 게시물들은 이 서버와 분산화된 네트워크의 다른 서버에서 지금 인기를 끌고 있는 것들입니다.", + "dismissable_banner.explore_tags": "이 해시태그들은 이 서버와 분산화된 네트워크의 다른 서버에서 사람들의 인기를 끌고 있는 것들입니다.", + "dismissable_banner.public_timeline": "이 게시물들은 이 서버와 이 서버가 알고있는 분산화된 네트워크의 다른 서버에서 사람들이 게시한 최근 공개 게시물들입니다.", "embed.instructions": "아래의 코드를 복사하여 대화를 원하는 곳으로 공유하세요.", "embed.preview": "다음과 같이 표시됩니다:", "emoji_button.activity": "활동", @@ -254,18 +267,18 @@ "home.column_settings.show_replies": "답글 표시", "home.hide_announcements": "공지사항 숨기기", "home.show_announcements": "공지사항 보기", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "마스토돈 계정을 통해, 게시물을 마음에 들어 하는 것으로 작성자에게 호의를 표하고 나중에 보기 위해 저장할 수 있습니다.", + "interaction_modal.description.follow": "마스토돈 계정을 통해, {name} 님을 팔로우 하고 그의 게시물을 홈 피드에서 받아 볼 수 있습니다.", + "interaction_modal.description.reblog": "마스토돈 계정을 통해, 이 게시물을 부스트 하고 자신의 팔로워들에게 공유할 수 있습니다.", + "interaction_modal.description.reply": "마스토돈 계정을 통해, 이 게시물에 응답할 수 있습니다.", + "interaction_modal.on_another_server": "다른 서버에", + "interaction_modal.on_this_server": "이 서버에서", + "interaction_modal.other_server_instructions": "단순하게 이 URL을 당신이 좋아하는 앱이나 로그인 한 웹 인터페이스의 검색창에 복사/붙여넣기 하세요.", + "interaction_modal.preamble": "마스토돈은 분산화 되어 있기 때문에, 이곳에 계정이 없더라도 다른 곳에서 운영되는 마스토돈 서버나 호환 되는 플랫폼에 있는 계정을 사용할 수 있습니다.", + "interaction_modal.title.favourite": "{name} 님의 게시물을 마음에 들어하기", + "interaction_modal.title.follow": "{name} 님을 팔로우", + "interaction_modal.title.reblog": "{name} 님의 게시물을 부스트", + "interaction_modal.title.reply": "{name} 님의 게시물에 답글", "intervals.full.days": "{number} 일", "intervals.full.hours": "{number} 시간", "intervals.full.minutes": "{number} 분", @@ -424,8 +437,8 @@ "privacy.public.short": "공개", "privacy.unlisted.long": "모두가 볼 수 있지만, 발견하기 기능에서는 제외됨", "privacy.unlisted.short": "타임라인에 비표시", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "{date}에 마지막으로 업데이트됨", + "privacy_policy.title": "개인정보 정책", "refresh": "새로고침", "regeneration_indicator.label": "불러오는 중…", "regeneration_indicator.sublabel": "당신의 홈 피드가 준비되는 중입니다!", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 7a8ac599d4..d0359f8775 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nîşe", "account.add_or_remove_from_list": "Tevlî bike an rake ji rêzokê", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index cbce18efed..1049c1c948 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Noten", "account.add_or_remove_from_list": "Keworra po Dilea a rolyow", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index b15f3d3a35..54530b85bd 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Pastaba", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index c676898d1e..8bf21b1ccc 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Piezīme", "account.add_or_remove_from_list": "Pievienot vai noņemt no saraksta", "account.badges.bot": "Bots", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 84bafd74aa..a5081c82be 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Додади или одстрани од листа", "account.badges.bot": "Бот", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index e4c35f503a..977cd8c5b6 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "കുറിപ്പ്", "account.add_or_remove_from_list": "പട്ടികയിൽ ചേർക്കുകയോ/മാറ്റുകയോ ചെയ്യുക", "account.badges.bot": "റോബോട്ട്", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 014df9b956..7c129ddb6e 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "यादीत घाला किंवा यादीतून काढून टाका", "account.badges.bot": "स्वयंचलित खाते", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 1469c1d9e6..4cedca54b6 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Catatan", "account.add_or_remove_from_list": "Tambah atau Buang dari senarai", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index c58aa26898..f922463b82 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Opmerking", "account.add_or_remove_from_list": "Toevoegen of verwijderen vanuit lijsten", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 56cc3dbba1..c366b9a5e9 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Merknad", "account.add_or_remove_from_list": "Legg til eller tak vekk frå listene", "account.badges.bot": "Robot", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 2cc3c92366..322b023a97 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Notis", "account.add_or_remove_from_list": "Legg til eller fjern fra lister", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 4739fb0d3d..a30a6e9e9b 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nòta", "account.add_or_remove_from_list": "Ajustar o tirar de las listas", "account.badges.bot": "Robòt", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index f9c297e518..12134bbd1c 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index db2fafee31..2f3ed70d1b 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Notatka", "account.add_or_remove_from_list": "Dodaj lub usuń z list", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 8a10067a97..b7b30e7c4e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Adicionar ou remover de listas", "account.badges.bot": "Robô", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index e9b7890374..8a22282598 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Adicionar ou remover das listas", "account.badges.bot": "Robô", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index da39bd32cb..bf52a776f4 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Notă", "account.add_or_remove_from_list": "Adaugă sau elimină din liste", "account.badges.bot": "Robot", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 02d3b66a2e..582d1c1fd3 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Заметка", "account.add_or_remove_from_list": "Управление списками", "account.badges.bot": "Бот", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 309fbdcfed..2295d51a2d 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "टीका", "account.add_or_remove_from_list": "युज्यतां / नश्यतां सूच्याः", "account.badges.bot": "यन्त्रम्", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 5787771122..b31cd28090 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agiunghe o boga dae is listas", "account.badges.bot": "Robot", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 82f4512214..1010dc6afc 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "සටහන", "account.add_or_remove_from_list": "ලැයිස්තු වලින් එකතු හෝ ඉවත් කරන්න", "account.badges.bot": "ස්වයං ක්‍රමලේඛය", @@ -7,20 +20,20 @@ "account.block_domain": "{domain} වසම අවහිර කරන්න", "account.blocked": "අවහිර කර ඇත", "account.browse_more_on_origin_server": "මුල් පැතිකඩෙහි තවත් පිරික්සන්න", - "account.cancel_follow_request": "ඉල්ලීම අනුගමනය කිරීම අවලංගු කරන්න", + "account.cancel_follow_request": "අනුගමන ඉල්ලීම ඉවතලන්න", "account.direct": "@{name} සෘජු පණිවිඩය", - "account.disable_notifications": "@{name} පළ කරන විට මට දැනුම් දීම නවත්වන්න", + "account.disable_notifications": "@{name} පළ කරන විට මට දැනුම් නොදෙන්න", "account.domain_blocked": "වසම අවහිර කර ඇත", "account.edit_profile": "පැතිකඩ සංස්කරණය", "account.enable_notifications": "@{name} පළ කරන විට මට දැනුම් දෙන්න", "account.endorse": "පැතිකඩෙහි විශේෂාංගය", "account.follow": "අනුගමනය", "account.followers": "අනුගාමිකයින්", - "account.followers.empty": "කිසිවෙකු තවමත් මෙම පරිශීලකයා අනුගමනය නොකරයි.", + "account.followers.empty": "කිසිවෙක් අනුගමනය කර නැත.", "account.followers_counter": "{count, plural, one {{counter} අනුගාමිකයෙක්} other {{counter} අනුගාමිකයින්}}", "account.following": "අනුගමනය", - "account.following_counter": "{count, plural, one {{counter} අනුගමනය කරන්න} other {{counter} අනුගමනය කරන්න}}", - "account.follows.empty": "මෙම පරිශීලකයා තවමත් කිසිවෙකු අනුගමනය නොකරයි.", + "account.following_counter": "{count, plural, one {අනුගාමිකයින් {counter}} other {අනුගාමිකයින් {counter}}}", + "account.follows.empty": "තවමත් කිසිවෙක් අනුගමනය නොකරයි.", "account.follows_you": "ඔබව අනුගමනය කරයි", "account.hide_reblogs": "@{name}සිට බූස්ට් සඟවන්න", "account.joined": "{date} එක් වී ඇත", @@ -53,7 +66,7 @@ "admin.dashboard.monthly_retention": "ලියාපදිංචි වීමෙන් පසු මාසය අනුව පරිශීලක රඳවා ගැනීමේ අනුපාතය", "admin.dashboard.retention.average": "සාමාන්යය", "admin.dashboard.retention.cohort": "ලියාපදිංචි වීමේ මාසය", - "admin.dashboard.retention.cohort_size": "නව පරිශීලකයින්", + "admin.dashboard.retention.cohort_size": "නව පරිශ්‍රීලකයින්", "alert.rate_limited.message": "{retry_time, time, medium} කට පසුව උත්සාහ කරන්න.", "alert.rate_limited.title": "මිල සීමා සහිතයි", "alert.unexpected.message": "අනපේක්ෂිත දෝෂයක් ඇතිවුනා.", @@ -69,15 +82,15 @@ "bundle_modal_error.close": "වසන්න", "bundle_modal_error.message": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", "bundle_modal_error.retry": "නැවත උත්සාහ කරන්න", - "column.about": "About", - "column.blocks": "අවහිර කළ පරිශීලකයින්", + "column.about": "පිලිබඳව", + "column.blocks": "අවහිර කළ අය", "column.bookmarks": "පොත් යොමු", "column.community": "දේශීය කාලරේඛාව", "column.direct": "සෘජු පණිවිඩ", "column.directory": "පැතිකඩ පිරික්සන්න", "column.domain_blocks": "අවහිර කළ වසම්", "column.favourites": "ප්‍රියතමයන්", - "column.follow_requests": "ඉල්ලීම් අනුගමනය කරන්න", + "column.follow_requests": "අනුගමන ඉල්ලීම්", "column.home": "මුල් පිටුව", "column.lists": "ලේඛන", "column.mutes": "නිහඬ කළ අය", @@ -145,8 +158,8 @@ "conversation.mark_as_read": "කියවූ බව යොදන්න", "conversation.open": "සංවාදය බලන්න", "conversation.with": "{names} සමඟ", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "පිටපත් විය", + "copypaste.copy": "පිටපතක්", "directory.federated": "දන්නා fediverse වලින්", "directory.local": "{domain} වෙතින් පමණි", "directory.new_arrivals": "නව පැමිණීම්", @@ -230,14 +243,14 @@ "follow_request.reject": "ප්‍රතික්‍ෂේප", "follow_requests.unlocked_explanation": "ඔබගේ ගිණුම අගුලු දමා නොතිබුණද, {domain} කාර්ය මණ්ඩලය සිතුවේ ඔබට මෙම ගිණුම් වලින් ලැබෙන ඉල්ලීම් හස්තීයව සමාලෝචනය කිරීමට අවශ්‍ය විය හැකි බවයි.", "generic.saved": "සුරැකිණි", - "getting_started.directory": "Directory", + "getting_started.directory": "නාමාවලිය", "getting_started.documentation": "ප්‍රලේඛනය", "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "පටන් ගන්න", "getting_started.invite": "මිනිසුන්ට ආරාධනය", - "getting_started.privacy_policy": "Privacy Policy", + "getting_started.privacy_policy": "රහස්‍යතා ප්‍රතිපත්තිය", "getting_started.security": "ගිණුමේ සැකසුම්", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "මාස්ටඩන් ගැන", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", @@ -277,7 +290,7 @@ "keyboard_shortcuts.description": "සවිස්තරය", "keyboard_shortcuts.direct": "සෘජු පණිවිඩ තීරුව විවෘත කිරීමට", "keyboard_shortcuts.down": "ලැයිස්තුවේ පහළට ගමන් කිරීමට", - "keyboard_shortcuts.enter": "තත්ත්වය විවෘත කිරීමට", + "keyboard_shortcuts.enter": "ලිපිය අරින්න", "keyboard_shortcuts.favourite": "කැමති කිරීමට", "keyboard_shortcuts.favourites": "ප්රියතම ලැයිස්තුව විවෘත කිරීමට", "keyboard_shortcuts.federated": "ෆෙඩරේටඩ් කාලරාමුව විවෘත කිරීමට", @@ -291,7 +304,7 @@ "keyboard_shortcuts.my_profile": "ඔබගේ පැතිකඩ අරින්න", "keyboard_shortcuts.notifications": "දැනුම්දීම් තීරුව විවෘත කිරීමට", "keyboard_shortcuts.open_media": "මාධ්‍ය අරින්න", - "keyboard_shortcuts.pinned": "පින් කළ මෙවලම් ලැයිස්තුව විවෘත කිරීමට", + "keyboard_shortcuts.pinned": "ඇමිණූ ලිපි ලේඛනය අරින්න", "keyboard_shortcuts.profile": "කතෘගේ පැතිකඩ අරින්න", "keyboard_shortcuts.reply": "පිළිතුරු දීමට", "keyboard_shortcuts.requests": "පහත ඉල්ලීම් ලැයිස්තුව විවෘත කිරීමට", @@ -478,7 +491,7 @@ "report.thanks.title_actionable": "වාර්තා කිරීමට ස්තූතියි, අපි මේ ගැන සොයා බලමු.", "report.unfollow": "@{name}අනුගමනය නොකරන්න", "report.unfollow_explanation": "ඔබ මෙම ගිණුම අනුගමනය කරයි. ඔබේ නිවසේ සංග්‍රහයේ ඔවුන්ගේ පළ කිරීම් තවදුරටත් නොදැකීමට, ඒවා අනුගමනය නොකරන්න.", - "report_notification.attached_statuses": "{count, plural, one {{count} තැපැල්} other {{count} තනතුරු}} අමුණා ඇත", + "report_notification.attached_statuses": "{count, plural, one {ලිපි {count}} other {ලිපි {count} ක්}} අමුණා ඇත", "report_notification.categories.other": "වෙනත්", "report_notification.categories.spam": "ආයාචිත", "report_notification.categories.violation": "නීතිය කඩ කිරීම", @@ -487,7 +500,7 @@ "search_popout.search_format": "උසස් සෙවුම් ආකෘතිය", "search_popout.tips.full_text": "සරල පෙළ ඔබ ලියා ඇති, ප්‍රිය කළ, වැඩි කළ හෝ සඳහන් කර ඇති තත්ත්වයන් මෙන්ම ගැළපෙන පරිශීලක නාම, සංදර්ශක නම් සහ හැෂ් ටැග් ලබා දෙයි.", "search_popout.tips.hashtag": "හෑෂ් ටැගය", - "search_popout.tips.status": "තත්ත්වය", + "search_popout.tips.status": "ලිපිය", "search_popout.tips.text": "සරල පෙළ ගැළපෙන සංදර්ශක නම්, පරිශීලක නාම සහ හැෂ් ටැග් ලබා දෙයි", "search_popout.tips.user": "පරිශීලක", "search_results.accounts": "මිනිසුන්", @@ -582,7 +595,7 @@ "trends.trending_now": "දැන් ප්‍රවණතාවය", "ui.beforeunload": "ඔබ මාස්ටඩන් හැර ගියහොත් කටුපිටපත අහිමි වේ.", "units.short.billion": "{count}බී", - "units.short.million": "{count}එම්", + "units.short.million": "ද.ල. {count}", "units.short.thousand": "{count}කි", "upload_area.title": "උඩුගතයට ඇද දමන්න", "upload_button.label": "රූප, දෘශ්‍යක හෝ හඬපට යොදන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 95242d5c38..bd71ec54d2 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Poznámka", "account.add_or_remove_from_list": "Pridaj do, alebo odober zo zoznamov", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index cca9f6f74b..7006bfb6fc 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Opombe", "account.add_or_remove_from_list": "Dodaj ali odstrani s seznamov", "account.badges.bot": "Robot", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 074b0273ca..608fc54dbf 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Shënim", "account.add_or_remove_from_list": "Shtoni ose Hiqni prej listash", "account.badges.bot": "Robot", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index d387a7a0cf..838e543d14 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index fa484302f8..5cfa1aa5a3 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Напомена", "account.add_or_remove_from_list": "Додај или Одстрани са листа", "account.badges.bot": "Бот", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 83a32ace1f..47f8b90cba 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Anteckning", "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor", "account.badges.bot": "Robot", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index f9c297e518..12134bbd1c 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index df216d0cea..859d22627f 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "குறிப்பு", "account.add_or_remove_from_list": "பட்டியல்களில் சேர்/நீக்கு", "account.badges.bot": "பாட்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 2697a197a2..30489828e9 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 893f9df986..f50ffc9d40 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "జాబితాల నుండి చేర్చు లేదా తీసివేయి", "account.badges.bot": "బాట్", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index c468438066..a99156dcd5 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "หมายเหตุ", "account.add_or_remove_from_list": "เพิ่มหรือเอาออกจากรายการ", "account.badges.bot": "บอต", @@ -69,7 +82,7 @@ "bundle_modal_error.close": "ปิด", "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", "bundle_modal_error.retry": "ลองอีกครั้ง", - "column.about": "About", + "column.about": "เกี่ยวกับ", "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", "column.community": "เส้นเวลาในเซิร์ฟเวอร์", @@ -145,14 +158,14 @@ "conversation.mark_as_read": "ทำเครื่องหมายว่าอ่านแล้ว", "conversation.open": "ดูการสนทนา", "conversation.with": "กับ {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "คัดลอกแล้ว", + "copypaste.copy": "คัดลอก", "directory.federated": "จากจักรวาลสหพันธ์ที่รู้จัก", "directory.local": "จาก {domain} เท่านั้น", "directory.new_arrivals": "มาใหม่", "directory.recently_active": "ใช้งานล่าสุด", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "ปิด", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -230,14 +243,14 @@ "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", "generic.saved": "บันทึกแล้ว", - "getting_started.directory": "Directory", + "getting_started.directory": "ไดเรกทอรี", "getting_started.documentation": "เอกสารประกอบ", "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "เริ่มต้นใช้งาน", "getting_started.invite": "เชิญผู้คน", "getting_started.privacy_policy": "นโยบายความเป็นส่วนตัว", "getting_started.security": "การตั้งค่าบัญชี", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "เกี่ยวกับ Mastodon", "hashtag.column_header.tag_mode.all": "และ {additional}", "hashtag.column_header.tag_mode.any": "หรือ {additional}", "hashtag.column_header.tag_mode.none": "โดยไม่มี {additional}", @@ -258,14 +271,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "ในเซิร์ฟเวอร์อื่น", + "interaction_modal.on_this_server": "ในเซิร์ฟเวอร์นี้", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.favourite": "ชื่นชอบโพสต์ของ {name}", + "interaction_modal.title.follow": "ติดตาม {name}", + "interaction_modal.title.reblog": "ดันโพสต์ของ {name}", + "interaction_modal.title.reply": "ตอบกลับโพสต์ของ {name}", "intervals.full.days": "{number, plural, other {# วัน}}", "intervals.full.hours": "{number, plural, other {# ชั่วโมง}}", "intervals.full.minutes": "{number, plural, other {# นาที}}", @@ -331,8 +344,8 @@ "mute_modal.duration": "ระยะเวลา", "mute_modal.hide_notifications": "ซ่อนการแจ้งเตือนจากผู้ใช้นี้?", "mute_modal.indefinite": "ไม่มีกำหนด", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "เกี่ยวกับ", + "navigation_bar.apps": "รับแอป", "navigation_bar.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "navigation_bar.bookmarks": "ที่คั่นหน้า", "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์", @@ -346,7 +359,7 @@ "navigation_bar.filters": "คำที่ซ่อนอยู่", "navigation_bar.follow_requests": "คำขอติดตาม", "navigation_bar.follows_and_followers": "การติดตามและผู้ติดตาม", - "navigation_bar.info": "About", + "navigation_bar.info": "เกี่ยวกับ", "navigation_bar.keyboard_shortcuts": "ปุ่มลัด", "navigation_bar.lists": "รายการ", "navigation_bar.logout": "ออกจากระบบ", @@ -425,7 +438,7 @@ "privacy.unlisted.long": "ปรากฏแก่ทั้งหมด แต่เลือกไม่รับคุณลักษณะการค้นพบ", "privacy.unlisted.short": "ไม่อยู่ในรายการ", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.title": "นโยบายความเป็นส่วนตัว", "refresh": "รีเฟรช", "regeneration_indicator.label": "กำลังโหลด…", "regeneration_indicator.sublabel": "กำลังเตรียมฟีดหน้าแรกของคุณ!", @@ -499,11 +512,11 @@ "search_results.title": "ค้นหาสำหรับ {q}", "search_results.total": "{count, number} {count, plural, other {ผลลัพธ์}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.active_users": "ผู้ใช้ที่ใช้งานอยู่", + "server_banner.administered_by": "ดูแลโดย:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", + "server_banner.learn_more": "เรียนรู้เพิ่มเติม", + "server_banner.server_stats": "สถิติเซิร์ฟเวอร์:", "sign_in_banner.create_account": "สร้างบัญชี", "sign_in_banner.sign_in": "ลงชื่อเข้า", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 79d11933f8..a13bb945d0 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Not", "account.add_or_remove_from_list": "Listelere ekle veya kaldır", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 9507985747..bca39d2b6f 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Язма", "account.add_or_remove_from_list": "Исемлеккә кертү я бетерү", "account.badges.bot": "Бот", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index f9c297e518..12134bbd1c 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Bot", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index c1eccbabce..62f03a8a0e 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Примітка", "account.add_or_remove_from_list": "Додати або видалити зі списків", "account.badges.bot": "Бот", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index d77e4fd041..60b34b792c 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "نوٹ", "account.add_or_remove_from_list": "فہرست میں شامل یا برطرف کریں", "account.badges.bot": "روبوٹ", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index cac4082c40..d3068b6c97 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "Ghi chú", "account.add_or_remove_from_list": "Thêm hoặc Xóa khỏi danh sách", "account.badges.bot": "Bot", @@ -151,12 +164,12 @@ "directory.local": "Từ {domain}", "directory.new_arrivals": "Mới tham gia", "directory.recently_active": "Hoạt động gần đây", - "dismissable_banner.community_timeline": "Đây là những bài đăng gần đây của những người có tài khoản thuộc máy chủ {domain}.", + "dismissable_banner.community_timeline": "Những tút gần đây của những người có tài khoản thuộc máy chủ {domain}.", "dismissable_banner.dismiss": "Bỏ qua", - "dismissable_banner.explore_links": "Những câu chuyện mới này đang được mọi người bàn luận nhiều trên đây và những máy chủ khác của mạng lưới phi tập trung vào lúc này.", - "dismissable_banner.explore_statuses": "Những bài đăng này trên đây và những máy chủ khác của mạng lưới phi tập trung đang phổ biến trên máy chủ này ngay bây giờ.", - "dismissable_banner.explore_tags": "Những tag này đang được mọi người sử dụng nhiều trên đây và những máy chủ khác của mạng lưới phi tập trung vào lúc này.", - "dismissable_banner.public_timeline": "Đây là những bài đăng công khai gần đây nhất của những người trên đây và những máy chủ khác của mạng lưới phi tập trung mà máy chủ này biết.", + "dismissable_banner.explore_links": "Những sự kiện đang được thảo luận nhiều trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", + "dismissable_banner.explore_statuses": "Những tút đang phổ biến trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", + "dismissable_banner.explore_tags": "Những hashtag đang được sử dụng nhiều trên máy chủ này và và những máy chủ khác thuộc mạng liên hợp của nó.", + "dismissable_banner.public_timeline": "Những tút công khai gần đây nhất trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", "embed.instructions": "Sao chép đoạn mã dưới đây và chèn vào trang web của bạn.", "embed.preview": "Nó sẽ hiển thị như vầy:", "emoji_button.activity": "Hoạt động", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 910d0e4b94..305f21b0d4 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "ⵍⵎⴷ ⵓⴳⴳⴰⵔ", "account.add_or_remove_from_list": "ⵔⵏⵓ ⵏⵖ ⵙⵉⵜⵜⵢ ⵙⴳ ⵜⵍⴳⴰⵎⵜ", "account.badges.bot": "ⴰⴱⵓⵜ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 90a212fab6..97d097c4cd 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "备注", "account.add_or_remove_from_list": "从列表中添加或移除", "account.badges.bot": "机器人", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 6cce3008ad..f02fc90748 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "筆記", "account.add_or_remove_from_list": "從列表中新增或移除", "account.badges.bot": "機械人", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 3d12163c99..69725fe259 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,4 +1,17 @@ { + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", "account.account_note_header": "備註", "account.add_or_remove_from_list": "從列表中新增或移除", "account.badges.bot": "機器人", diff --git a/config/locales/ar.yml b/config/locales/ar.yml index bd17cbea20..0caa22ebec 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -2,48 +2,13 @@ ar: about: about_mastodon_html: 'شبكة التواصل الإجتماعية المستقبَليّة: مِن دون إعلانات ، غير خاضعة لرقابة الشركات ، تصميم أخلاقي ولامركزية! بياناتكم مِلك لكم مع ماستدون!' - about_this: عن مثيل الخادم هذا - administered_by: 'يُديره:' api: واجهة برمجة التطبيقات apps: تطبيقات الأجهزة المحمولة - contact: للتواصل معنا contact_missing: لم يتم تعيينه contact_unavailable: غير متوفر documentation: الدليل hosted_on: ماستدون مُستضاف على %{domain} - instance_actor_flash: | - هذا الحساب هو ممثل افتراضي يستخدم لتمثيل الخادم نفسه وليس أي مستخدم فردي. - يستخدم لأغراض الاتحاد ولا ينبغي حظره إلا إذا كنت ترغب في حظر مثيل الخادم بأكمله، في هذه الحالة يجب عليك استخدام أداة حظر النطاق. - rules: قوانين الخادم - rules_html: 'فيما يلي ملخص للقوانين التي تحتاج إلى اتباعها إذا كنت تريد أن يكون لديك حساب على هذا الخادم من ماستدون:' source_code: الشفرة المصدرية - status_count_after: - few: منشورات - many: منشورات - one: منشور - other: منشورات - two: منشورات - zero: منشورات - status_count_before: نشروا - unavailable_content: محتوى غير متوفر - unavailable_content_description: - domain: الخادم - reason: السبب - rejecting_media: 'لن يتم معالجة أو تخزين ملفات الوسائط القادمة من هذه الخوادم، ولن يتم عرض أي صور مصغرة، مما يتطلب النقر اليدوي على الملف الأصلي:' - rejecting_media_title: وسائط مصفّاة - silenced: 'سيتم إخفاء المنشورات القادمة من هذه الخوادم في الخيوط الزمنية والمحادثات العامة، ولن يتم إنشاء أي إخطارات من جراء تفاعلات مستخدميها، ما لم تُتَابعهم:' - silenced_title: الخوادم المكتومة - suspended: 'لن يتم معالجة أي بيانات قادمة من هذه الخوادم أو تخزينها أو تبادلها، مما سيجعل أي تفاعل أو اتصال مع المستخدمين والمستخدمات المنتمين إلى هذه الخوادم مستحيلة:' - suspended_title: الخوادم المعلَّقة - unavailable_content_html: يسمح لك ماستدون عموماً بعرض محتوى المستخدمين القادم من أي خادم آخر في الفديفرس والتفاعل معهم. وهذه هي الاستثناءات التي وضعت على هذا الخادوم بالذات. - user_count_after: - few: مستخدمين - many: مستخدمين - one: مستخدم - other: مستخدمين - two: مستخدمين - zero: مستخدمين - user_count_before: يستضيف what_is_mastodon: ما هو ماستدون ؟ accounts: choices_html: 'توصيات %{name}:' @@ -614,9 +579,6 @@ ar: users: للمستخدمين المتصلين محليا domain_blocks_rationale: title: اظهر السبب - hero: - desc_html: معروض على الصفحة الأولى. لا يقل عن 600 × 100 بكسل. عند عدم التعيين ، تعود الصورة إلى النسخة المصغرة على سبيل المثال - title: الصورة الرأسية mascot: desc_html: معروض على عدة صفحات، يوصى بِعلى الأقل 293x205 بكسل، عند عدم التعيين، تعود الصورة إلى التميمة الافتراضية title: صورة الماسكوت diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 3500b454b2..b3916dba07 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -2,28 +2,14 @@ ast: about: about_mastodon_html: 'La rede social del futuru: ¡ensin anuncios nin vixilancia, con un diseñu éticu y descentralizáu! Controla los tos datos con Mastodon.' - about_this: Tocante a - administered_by: 'Alministráu por:' api: API apps: Aplicaciones pa móviles - contact: Contautu contact_missing: Nun s'afitó contact_unavailable: N/D documentation: Documentación hosted_on: Mastodon ta agospiáu en %{domain} privacy_policy: Política de privacidá source_code: Códigu fonte - status_count_after: - one: artículu - other: artículos - status_count_before: Que crearon - unavailable_content_description: - domain: Sirvidor - reason: Motivu - user_count_after: - one: usuariu - other: usuarios - user_count_before: Ye'l llar de what_is_mastodon: "¿Qué ye Mastodon?" accounts: featured_tags_hint: Pues destacar etiquetes específiques que van amosase equí. diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 71ddbeb1c6..8fc126ec11 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -2,34 +2,13 @@ bg: about: about_mastodon_html: Mastodon е безплатен сървър с отворен код за социални мрежи. Като децентрализирана алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне Mastodon и лесно да вземе участие в социалната мрежа. - about_this: За тази инстанция - administered_by: 'Администрирано от:' api: API apps: Мобилни приложения - contact: За контакти contact_missing: Не е зададено contact_unavailable: Не е приложимо documentation: Документация hosted_on: Mastodon е хостван на %{domain} source_code: Програмен код - status_count_after: - one: състояние - other: състояния - status_count_before: Написали - unavailable_content: Модерирани сървъри - unavailable_content_description: - domain: Сървър - reason: Причина - rejecting_media: 'Мултимедийните файлове от тези сървъри няма да бъдат обработени или съхранени и няма да бъдат показани миниатюри, което ще изисква ръчно щракване върху оригиналния файл:' - rejecting_media_title: Филтрирана мултимедия - silenced: 'Публикациите от тези сървъри ще бъдат скрити в обществени емисии и разговори и няма да се генерират известия от взаимодействията на потребителите им, освен ако не ги следвате:' - silenced_title: Заглушени сървъри - suspended: 'Никакви данни от тези сървъри няма да бъдат обработвани, съхранявани или обменяни, което прави невъзможно всяко взаимодействие или комуникация с потребители от тези сървъри:' - suspended_title: Спрени сървъри - user_count_after: - one: потребител - other: потребители - user_count_before: Дом на what_is_mastodon: Какво е Mastodon? accounts: choices_html: 'Избори на %{name}:' diff --git a/config/locales/bn.yml b/config/locales/bn.yml index 2c45084937..4b05ae50c5 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -2,36 +2,13 @@ bn: about: about_mastodon_html: মাস্টাডন উন্মুক্ত ইন্টারনেটজালের নিয়ম এবং স্বাধীন ও মুক্ত উৎসের সফটওয়্যারের ভিত্তিতে তৈরী একটি সামাজিক যোগাযোগ মাধ্যম। এটি ইমেইলের মত বিকেন্দ্রীভূত। - about_this: কি - administered_by: 'পরিচালনা করছেন:' api: সফটওয়্যার তৈরীর নিয়ম (API) apps: মোবাইল অ্যাপ - contact: যোগাযোগ contact_missing: নেই contact_unavailable: প্রযোজ্য নয় documentation: ব্যবহারবিলি hosted_on: এই মাস্টাডনটি আছে %{domain} এ - instance_actor_flash: "এই অ্যাকাউন্টটি ভার্চুয়াল এক্টর যা নিজে কোনও সার্ভারের প্রতিনিধিত্ব করতে ব্যবহৃত হয় এবং কোনও পৃথক ব্যবহারকারী নয়। এটি ফেডারেশনের উদ্দেশ্যে ব্যবহৃত হয় এবং আপনি যদি পুরো ইনস্ট্যান্স ব্লক করতে না চান তবে অবরুদ্ধ করা উচিত নয়, সেক্ষেত্রে আপনার ডোমেন ব্লক ব্যবহার করা উচিত। \n" source_code: আসল তৈরীপত্র - status_count_after: - one: অবস্থা - other: স্থিতিগুলি - status_count_before: কে লিখেছে - unavailable_content: অনুপলব্ধ সামগ্রী - unavailable_content_description: - domain: সার্ভার - reason: কারণ - rejecting_media: 'এই সার্ভারগুলি থেকে মিডিয়া ফাইলগুলি প্রক্রিয়া করা বা সংরক্ষণ করা হবে না এবং কোনও থাম্বনেইল প্রদর্শিত হবে না, মূল ফাইলটিতে ম্যানুয়াল ক্লিক-মাধ্যমে প্রয়োজন:' - rejecting_media_title: ফিল্টার করা মিডিয়া - silenced: 'এই সার্ভারগুলির পোস্টগুলি জনসাধারণের টাইমলাইন এবং কথোপকথনে লুকানো থাকবে এবং আপনি যদি তাদের অনুসরণ না করেন তবে তাদের ব্যবহারকারীর ইন্টারঅ্যাকশন থেকে কোনও বিজ্ঞপ্তি উত্পন্ন হবে না:' - silenced_title: নীরব করা সার্ভার - suspended: 'এই সার্ভারগুলি থেকে কোনও ডেটা প্রক্রিয়াজাতকরণ, সংরক্ষণ বা আদান-প্রদান করা হবে না, এই সার্ভারগুলির ব্যবহারকারীদের সাথে কোনও মিথস্ক্রিয়া বা যোগাযোগকে অসম্ভব করে তুলেছে:' - suspended_title: স্থগিত করা সার্ভার - unavailable_content_html: ম্যাস্টোডন সাধারণত আপনাকে ফেদিভার্স এ অন্য কোনও সার্ভারের ব্যবহারকারীদের থেকে সামগ্রী দেখতে এবং তাদের সাথে আলাপচারিতা করার অনুমতি দেয়। এই ব্যতিক্রম যে এই বিশেষ সার্ভারে তৈরি করা হয়েছে। - user_count_after: - one: ব্যবহারকারী - other: জনের - user_count_before: বাসা what_is_mastodon: মাস্টাডনটি কি ? accounts: choices_html: "%{name} বাছাই:" diff --git a/config/locales/br.yml b/config/locales/br.yml index 1813641eab..773fd559e4 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -1,26 +1,9 @@ --- br: about: - about_this: Diàr-benn api: API apps: Arloadoù pellgomz - contact: Darempred - rules: Reolennoù ar servijer source_code: Boneg tarzh - status_count_after: - few: toud - many: toud - one: toud - other: toud - two: toud - unavailable_content_description: - domain: Dafariad - user_count_after: - few: implijer·ez - many: implijer·ez - one: implijer·ez - other: implijer·ez - two: implijer·ez what_is_mastodon: Petra eo Mastodon? accounts: follow: Heuliañ diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 2fb2f1941b..51c8d0ebc8 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -2,41 +2,14 @@ ca: about: about_mastodon_html: 'La xarxa social del futur: sense anuncis, sense vigilància corporativa, disseny ètic i descentralització. Tingues el control de les teves dades amb Mastodon!' - about_this: Quant a - administered_by: 'Administrat per:' api: API apps: Aplicacions mòbils - contact: Contacte contact_missing: No configurat contact_unavailable: N/D documentation: Documentació hosted_on: Mastodon allotjat a %{domain} - instance_actor_flash: | - Aquest compte és un actor virtual usat per representar el servidor i no qualsevol usuari individual. - Es fa servir per a propòsits de federació i no s'ha de ser bloquejar si no voleu bloquejar tota la instància. En aquest cas, hauríeu d'utilitzar un bloqueig de domini. privacy_policy: Política de Privacitat - rules: Normes del servidor - rules_html: 'A continuació, es mostra un resum de les normes que has de seguir si vols tenir un compte en aquest servidor de Mastodon:' source_code: Codi font - status_count_after: - one: publicació - other: publicacions - status_count_before: Qui ha publicat - unavailable_content: Servidors moderats - unavailable_content_description: - domain: Servidor - reason: Motiu - rejecting_media: 'Els arxius multimèdia d''aquests servidors no seran processats ni emmagatzemats. No es mostrarà cap miniatura i caldrà fer clic en l''arxiu original:' - rejecting_media_title: Arxius multimèdia filtrats - silenced: 'Les publicacions d''aquests servidors s''ocultaran en les línies de temps públiques i en les converses. No es generarà cap notificació de les interaccions dels seus usuaris, tret que els segueixis:' - silenced_title: Servidors limitats - suspended: 'No es processaran, emmagatzemaran ni s''intercanviaran dades d''aquests servidors i serà impossible interactuar o comunicar-se amb els usuaris d''aquests servidors:' - suspended_title: Servidors suspesos - unavailable_content_html: En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular. - user_count_after: - one: usuari - other: usuaris - user_count_before: Tenim what_is_mastodon: Què és Mastodon? accounts: choices_html: 'Eleccions de %{name}:' @@ -735,9 +708,6 @@ ca: users: Per als usuaris locals en línia domain_blocks_rationale: title: Mostra el raonament - hero: - desc_html: Es mostra en pàgina frontal. Recomanat al menys 600x100px. Si no es configura es mostrarà el del servidor - title: Imatge d’heroi mascot: desc_html: Es mostra a diverses pàgines. Es recomana com a mínim 293 × 205px. Si no està configurat, torna a la mascota predeterminada title: Imatge de la mascota diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 078b757ea9..0f2d8b5807 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -2,40 +2,13 @@ ckb: about: about_mastodon_html: 'تۆڕی کۆمەڵایەتی داهاتوو: هیچ ڕیکلامێک ، هیچ چاودێرییەکی کۆمپانیا ، دیزاینی ئەخلاقی و لامەرکەزی! خاوەنی داتاکانت نابێ لە ماستۆدۆن!' - about_this: دەربارە - administered_by: 'بەڕێوەبراو لەلایەن:' api: API apps: ئەپەکانی مۆبایل - contact: بەردەنگ contact_missing: سازنەکراوە contact_unavailable: بوونی نییە documentation: بەڵگەکان hosted_on: مەستودۆن میوانداری کراوە لە %{domain} - instance_actor_flash: | - ئەم هەژمارەیە ئەکتەرێکی خەیاڵی بەکارهاتووە بۆ نوێنەرایەتی کردنی خودی ڕاژەکە و نەک هیچ بەکارهێنەرێکی تاک. - بۆ مەبەستی فیدراسیۆن بەکاردێت و نابێت بلۆک بکرێت مەگەر دەتەوێت هەموو نمونەکە بلۆک بکەیت، کە لە حاڵەتەش دا پێویستە بلۆکی دۆمەین بەکاربهێنیت. - rules: یاساکانی سێرڤەر - rules_html: 'لە خوارەوە کورتەیەک لەو یاسایانە دەخەینەڕوو کە پێویستە پەیڕەوی لێبکەیت ئەگەر بتەوێت ئەکاونتێکت هەبێت لەسەر ئەم سێرڤەرەی ماستۆدۆن:' source_code: کۆدی سەرچاوە - status_count_after: - one: دۆخ - other: پۆست - status_count_before: لە لایەن یەکەوە - unavailable_content: ڕاژەی چاودێریکراو - unavailable_content_description: - domain: ڕاژەکار - reason: هۆکار - rejecting_media: 'پەڕگەکانی میدیا لەم ڕاژانەوە پرۆسە ناکرێت یان هەڵناگیرێن، و هیچ وێنۆچکەیەک پیشان نادرێت، پێویستی بە کرتە کردنی دەستی هەیە بۆ فایلە سەرەکیەکە:' - rejecting_media_title: پاڵێوەری میدیا - silenced: 'بابەتەکانی ئەم ڕاژانە لە هێڵی کاتی گشتی و گفتوگۆکاندا دەشاردرێنەوە، و هیچ ئاگانامێک دروست ناکرێت لە چالاکی بەکارهێنەرانیان، مەگەر تۆ بەدوایان دەچیت:' - silenced_title: ڕاژە ناچالاکەکان - suspended: 'هیچ داتایەک لەم ڕاژانەوە پرۆسە ناکرێت، خەزن دەکرێت یان دەگۆڕدرێتەوە، وا دەکات هیچ کارلێک یان پەیوەندییەک لەگەڵ بەکارهێنەران لەم ڕاژانە مەحاڵ بێت:' - suspended_title: ڕاژە ڕاگیراوەکان - unavailable_content_html: ماستۆدۆن بە گشتی ڕێگەت پێدەدات بۆ پیشاندانی ناوەڕۆک لە و کارلێ کردن لەگەڵ بەکارهێنەران لە هەر ڕاژەیەکی تر بە گشتی. ئەمانە ئەو بەدەرکردنانەن کە کراون لەسەر ئەم ڕاژە تایبەتە. - user_count_after: - one: بەکارهێنەر - other: بەکارهێنەران - user_count_before: "`خاوەن" what_is_mastodon: ماستۆدۆن چییە? accounts: choices_html: 'هەڵبژاردنەکانی %{name}:' @@ -572,9 +545,6 @@ ckb: users: بۆ چوونە ژوورەوەی بەکارهێنەرانی ناوخۆ domain_blocks_rationale: title: پیشاندانی ڕێژەیی - hero: - desc_html: نیشان درا لە پەڕەی سەرەتا. بەلایەنی کەمەوە 600x100px پێشنیارکراوە. کاتێک ڕێک نەکەویت، دەگەڕێتەوە بۆ وێنۆجکەی ڕاژە - title: وێنەی پاڵەوان mascot: desc_html: نیشان دراوە لە چەند لاپەڕەیەک. بەلایەنی کەمەوە 293× 205px پێشنیارکراوە. کاتێک دیاری ناکرێت، دەگەڕێتەوە بۆ بەختبەختێکی ئاسایی title: وێنەی ماسکۆت diff --git a/config/locales/co.yml b/config/locales/co.yml index a576f91a05..55e03d15ae 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -2,40 +2,13 @@ co: about: about_mastodon_html: 'A rete suciale di u futuru: micca pubblicità, micca surveglianza, cuncezzione etica, è dicentralizazione! Firmate in cuntrollu di i vostri dati cù Mastodon!' - about_this: À prupositu - administered_by: 'Amministratu da:' api: API apps: Applicazione per u telefuninu - contact: Cuntattu contact_missing: Mancante contact_unavailable: Micca dispunibule documentation: Ducumentazione hosted_on: Mastodon allughjatu nant’à %{domain} - instance_actor_flash: | - Stu contu ghjè un'attore virtuale chì ghjove à riprisentà u servore sanu è micca un veru utilizatore. - Hè utilizatu da a federazione è ùn deve micca esse bluccatu eccettu s'e voi vulete bluccà tuttu u servore, in quellu casu duvereste utilizà un blucchime di duminiu. - rules: Regule di u servore - rules_html: 'Eccu un riassuntu di e regule da siguità s''e voi vulete creà un contu nant''à quessu servore di Mastodon:' source_code: Codice di fonte - status_count_after: - one: statutu - other: statuti - status_count_before: Chì anu pubblicatu - unavailable_content: Cuntinutu micca dispunibule - unavailable_content_description: - domain: Servore - reason: Ragione - rejecting_media: 'I fugliali media da stu servore ùn saranu micca arregistrati è e vignette ùn saranu micca affissate, duverete cliccà manualmente per accede à l''altru servore è vedeli:' - rejecting_media_title: Media filtrati - silenced: 'I statuti da stu servore ùn saranu mai visti tranne nant''a vostra pagina d''accolta s''e voi siguitate l''autore:' - silenced_title: Servori silenzati - suspended: 'Ùn puderete micca siguità qualsiasi nant''à stu servore, i dati versu o da quallà ùn saranu mai accessi, scambiati o arregistrati:' - suspended_title: Servori suspesi - unavailable_content_html: Mastodon vi parmette in generale di vede u cuntinutu è interagisce cù l'utilizatori di tutti l'altri servori di u fediversu. Quessi sò l'eccezzione fatte nant'à stu servore in particulare. - user_count_after: - one: utilizatore - other: utilizatori - user_count_before: Ci sò what_is_mastodon: Quale hè Mastodon? accounts: choices_html: "%{name} ricumanda:" @@ -531,9 +504,6 @@ co: users: À l'utilizatori lucali cunnettati domain_blocks_rationale: title: Vede ragiò - hero: - desc_html: Affissatu nant’a pagina d’accolta. Ricumandemu almenu 600x100px. S’ellu ùn hè micca definiti, a vignetta di u servore sarà usata - title: Ritrattu di cuprendula mascot: desc_html: Affissata nant'à parechje pagine. Almenu 293x205px ricumandatu. S'ella hè lasciata viota, a mascotta predefinita sarà utilizata title: Ritrattu di a mascotta diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 370fa82c3a..8b6b266e9f 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -2,45 +2,14 @@ cs: about: about_mastodon_html: 'Sociální síť budoucnosti: žádné reklamy, žádné korporátní sledování, etický design a decentralizace! S Mastodonem vlastníte svoje data!' - about_this: O tomto serveru - administered_by: 'Server spravuje:' api: API apps: Mobilní aplikace - contact: Kontakt contact_missing: Nenastaveno contact_unavailable: Neuvedeno documentation: Dokumentace hosted_on: Mastodon na doméně %{domain} - instance_actor_flash: | - Tento účet je virtuální aktér, který představuje server samotný, nikoliv účet jednotlivého uživatele. - Používá se pro účely federace a nesmí být blokován, pokud nechcete blokovat celý server. V takovém případě použijte blokaci domény. privacy_policy: Ochrana osobních údajů - rules: Pravidla serveru - rules_html: 'Níže je shrnutí pravidel, která musíte dodržovat, pokud chcete mít účet na tomto Mastodon serveru:' source_code: Zdrojový kód - status_count_after: - few: příspěvky - many: příspěvků - one: příspěvek - other: příspěvků - status_count_before: Kteří napsali - unavailable_content: Moderované servery - unavailable_content_description: - domain: Server - reason: Důvod - rejecting_media: 'Mediální soubory z tohoto serveru nebudou zpracovány a nebudou zobrazeny žádné náhledy. Pro prohlédnutí médií bude třeba manuálně přejít na druhý server:' - rejecting_media_title: Filtrovaná média - silenced: 'Příspěvky z těchto serverů nebudou zobrazeny ve veřejných časových osách a konverzacích a nebudou generována oznámení o interakcích uživatelů z toho serveru, pokud je nesledujete:' - silenced_title: Omezené servery - suspended: 'Žádná data z těchto serverů nebudou zpracována, ukládána ani vyměňována, čímž bude znemožněna jakákoliv interakce či komunikace s uživateli z těchto serverů:' - suspended_title: Pozastavené servery - unavailable_content_html: Mastodon vám obvykle dovoluje prohlížet si obsah a komunikovat s uživateli z jakéhokoliv dalšího serveru ve fedivesmíru. Tohle jsou výjimky, které byly zavedeny na tomto konkrétním serveru. - user_count_after: - few: uživatelé - many: uživatelů - one: uživatel - other: uživatelů - user_count_before: Domov what_is_mastodon: Co je Mastodon? accounts: choices_html: 'Volby %{name}:' @@ -759,9 +728,6 @@ cs: users: Přihlášeným místním uživatelům domain_blocks_rationale: title: Zobrazit odůvodnění - hero: - desc_html: Zobrazuje se na hlavní stránce. Doporučujeme rozlišení alespoň 600x100 px. Pokud toto není nastaveno, bude zobrazena miniatura serveru - title: Hlavní obrázek mascot: desc_html: Zobrazuje se na několika stránkách. Doporučujeme rozlišení alespoň 293x205 px. Pokud toto není nastaveno, bude zobrazen výchozí maskot title: Obrázek maskota diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 73ec9800b1..adcff7da77 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -2,48 +2,13 @@ cy: about: about_mastodon_html: Mae Mastodon yn rwydwaith cymdeithasol sy'n seiliedig ar brotocolau gwe a meddalwedd cod agored rhad ac am ddim. Yn debyg i e-bost mae'n ddatganoledig. - about_this: Ynghylch - administered_by: 'Gweinyddir gan:' api: API apps: Apiau symudol - contact: Cyswllt contact_missing: Heb ei osod contact_unavailable: Ddim yn berthnasol documentation: Dogfennaeth hosted_on: Mastodon wedi ei weinyddu ar %{domain} - instance_actor_flash: | - Mae'r cyfrif hwn yn actor rhithwir a ddefnyddir i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol. - Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei rwystro oni bai eich bod am rwystro'r achos cyfan, ac os felly dylech ddefnyddio bloc parth. - rules: Rheolau gweinydd - rules_html: 'Isod mae crynodeb o''r rheolau y mae angen i chi eu dilyn os ydych chi am gael cyfrif ar y gweinydd hwn o Mastodon:' source_code: Cod ffynhonnell - status_count_after: - few: statwsau - many: statwsau - one: statws - other: statwsau - two: statwsau - zero: statwsau - status_count_before: Ysgrifennwyd gan - unavailable_content: Cynnwys nad yw ar gael - unavailable_content_description: - domain: Gweinydd - reason: 'Rheswm:' - rejecting_media: Ni fydd ffeiliau cyfryngau o'r gweinydd hwn yn cael eu prosesu ac ni fydd unrhyw fawd yn cael eu harddangos, sy'n gofyn am glicio â llaw i'r gweinydd arall. - rejecting_media_title: Cyfrwng hidliedig - silenced: Ni fydd swyddi o'r gweinydd hwn yn ymddangos yn unman heblaw eich porthiant cartref os dilynwch yr awdur. - silenced_title: Gweinyddion wedi'i tawelu - suspended: Ni fyddwch yn gallu dilyn unrhyw un o'r gweinydd hwn, ac ni fydd unrhyw ddata ohono'n cael ei brosesu na'i storio, ac ni chyfnewidir unrhyw ddata. - suspended_title: Gweinyddion wedi'i gwahardd - unavailable_content_html: Yn gyffredinol, mae Mastodon yn caniatáu ichi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn. - user_count_after: - few: defnyddwyr - many: defnyddwyr - one: defnyddiwr - other: defnyddwyr - two: defnyddwyr - zero: defnyddwyr - user_count_before: Cartref i what_is_mastodon: Beth yw Mastodon? accounts: choices_html: 'Dewisiadau %{name}:' @@ -440,9 +405,6 @@ cy: users: I ddefnyddwyr lleol mewngofnodadwy domain_blocks_rationale: title: Dangos rhesymwaith - hero: - desc_html: Yn cael ei arddangos ar y dudadlen flaen. Awgrymir 600x100px oleia. Pan nad yw wedi ei osod, mae'n ymddangos fel mân-lun yr achos - title: Delwedd arwr mascot: desc_html: I'w arddangos ar nifer o dudalennau. Awgrymir 293x205px o leiaf. Pan nad yw wedi ei osod, cwympo nôl i'r mascot rhagosodedig title: Llun mascot diff --git a/config/locales/da.yml b/config/locales/da.yml index be4a677ef6..2758fa2af7 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -2,41 +2,14 @@ da: about: about_mastodon_html: 'Fremtidens sociale netværk: Ingen annoncer, ingen virksomhedsovervågning, etisk design og decentralisering! Vær ejer af egne data med Mastodon!' - about_this: Om - administered_by: 'Håndteres af:' api: API apps: Mobil-apps - contact: Kontakt contact_missing: Ikke angivet contact_unavailable: Utilgængelig documentation: Dokumentation hosted_on: Mostodon hostet på %{domain} - instance_actor_flash: | - Denne konto er en virtuel aktør brugt som repræsentation af selve serveren og ikke en individuel bruger. - Den bruges til fællesformål og bør ikke blokeres, medmindre hele instansen ønskes blokeret, i hvilket tilfælde man bør bruge domæneblokering. privacy_policy: Fortrolighedspolitik - rules: Serverregler - rules_html: 'Nedenfor ses en oversigt over regler, som skal følges, hvis man ønsker at have en konto på denne Mastodon-server:' source_code: Kildekode - status_count_after: - one: indlæg - other: indlæg - status_count_before: Som har postet - unavailable_content: Modererede servere - unavailable_content_description: - domain: Server - reason: Årsag - rejecting_media: 'Mediefiler fra disse servere hverken behandles eller gemmes, og ingen miniaturebilleder vises, hvilket kræver manuelt klik-igennem til originalfilen:' - rejecting_media_title: Filtrerede medier - silenced: 'Indlæg fra disse servere er skjult i offentlige tidslinjer og konversationer, og der genereres ingen notifikationer fra deres brugerinteraktioner, medmindre man følger dem:' - silenced_title: Begrænsede servere - suspended: 'Data fra disse servere hverken behandles, gemmes eller udveksles, hvilket umuliggør interaktion eller kommunikation med brugere fra disse servere:' - suspended_title: Suspenderede servere - unavailable_content_html: Mastodon tillader generelt, at man ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server. - user_count_after: - one: bruger - other: brugere - user_count_before: Hjem til what_is_mastodon: Hvad er Mastodon? accounts: choices_html: "%{name}s valg:" @@ -734,9 +707,6 @@ da: users: Til indloggede lokale brugere domain_blocks_rationale: title: Vis begrundelse - hero: - desc_html: Vises på forsiden. Mindst 600x100px anbefales. Hvis ikke opsat, benyttes serverminiaturebillede - title: Heltebillede mascot: desc_html: Vises på flere sider. Mindst 293x205px anbefales. Hvis ikke opsat, benyttes standardmaskot title: Maskotbillede diff --git a/config/locales/de.yml b/config/locales/de.yml index 4f89455908..a30c6ad296 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -2,41 +2,14 @@ de: about: about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail! - about_this: Über diesen Server - administered_by: 'Betrieben von:' api: API apps: Mobile Apps - contact: Kontakt contact_missing: Nicht angegeben contact_unavailable: Nicht verfügbar documentation: Dokumentation hosted_on: Mastodon, gehostet auf %{domain} - instance_actor_flash: | - Dieses Konto ist ein virtueller Akteur, welcher den Server selbst – und nicht einen einzelnen Benutzer – repräsentiert. - Dieser wird für Föderationszwecke verwendet und sollte nicht blockiert werden, es sei denn, du möchtest die gesamte Instanz blockieren. privacy_policy: Datenschutzerklärung - rules: Server-Regeln - rules_html: 'Unten ist eine Zusammenfassung der Regeln, denen du folgen musst, wenn du ein Konto auf diesem Mastodon-Server haben möchtest:' source_code: Quellcode - status_count_after: - one: Beitrag - other: Beiträge - status_count_before: mit - unavailable_content: Nicht verfügbarer Inhalt - unavailable_content_description: - domain: Server - reason: 'Grund:' - rejecting_media: Mediendateien dieses Servers werden nicht verarbeitet und keine Thumbnails werden angezeigt, was manuelles Anklicken auf den anderen Server erfordert. - rejecting_media_title: Gefilterte Medien - silenced: Beiträge von diesem Server werden nirgends angezeigt, außer in deiner Startseite, wenn du der Person folgst, die den Beitrag verfasst hat. - silenced_title: Stummgeschaltete Server - suspended: Du kannst niemanden von diesem Server folgen, und keine Daten werden verarbeitet oder gespeichert und keine Daten ausgetauscht. - suspended_title: Gesperrte Server - unavailable_content_html: Mastodon erlaubt es dir generell, mit Inhalten zu interagieren, diese anzuzeigen und mit anderen Nutzern im Fediversum über Server hinweg zu interagieren. Dies sind die Ausnahmen, die auf diesem bestimmten Server gemacht wurden. - user_count_after: - one: Profil - other: Profile - user_count_before: Hostet what_is_mastodon: Was ist Mastodon? accounts: choices_html: "%{name} empfiehlt:" @@ -735,9 +708,6 @@ de: users: Für angemeldete lokale Benutzer domain_blocks_rationale: title: Rationale anzeigen - hero: - desc_html: Wird auf der Startseite angezeigt. Mindestens 600x100px sind empfohlen. Wenn es nicht gesetzt wurde, wird das Server-Thumbnail dafür verwendet - title: Bild für Einstiegsseite mascot: desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde, wird stattdessen das Standard-Maskottchen genutzt werden. title: Maskottchen-Bild diff --git a/config/locales/devise.si.yml b/config/locales/devise.si.yml index 08b7286cbf..a20057cef9 100644 --- a/config/locales/devise.si.yml +++ b/config/locales/devise.si.yml @@ -24,28 +24,28 @@ si: explanation_when_pending: ඔබ මෙම විද්‍යුත් තැපැල් ලිපිනය සමඟ %{host} වෙත ආරාධනාවක් සඳහා ඉල්ලුම් කළා. ඔබ ඔබගේ විද්‍යුත් තැපැල් ලිපිනය තහවුරු කළ පසු, අපි ඔබගේ අයදුම්පත සමාලෝචනය කරන්නෙමු. ඔබගේ විස්තර වෙනස් කිරීමට හෝ ඔබගේ ගිණුම මකා දැමීමට ඔබට පුරනය විය හැක, නමුත් ඔබගේ ගිණුම අනුමත වන තුරු ඔබට බොහෝ කාර්යයන් වෙත ප්‍රවේශ විය නොහැක. ඔබගේ අයදුම්පත ප්‍රතික්ෂේප කළහොත්, ඔබගේ දත්ත ඉවත් කරනු ඇත, එබැවින් ඔබෙන් වැඩිදුර ක්‍රියාමාර්ග අවශ්‍ය නොවනු ඇත. මේ ඔබ නොවේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න. extra_html: කරුණාකර සේවාදායකයේ නීති සහ අපගේ සේවා කොන්දේසිද පරීක්ෂා කරන්න. subject: 'Mastodon: %{instance}සඳහා තහවුරු කිරීමේ උපදෙස්' - title: වි. තැපැල් ලිපිනය තහවුරු කරන්න + title: වි. තැපෑල තහවුරු කරන්න email_changed: explanation: 'ඔබගේ ගිණුම සඳහා ඊමේල් ලිපිනය වෙනස් වෙමින් පවතී:' extra: ඔබ ඔබගේ විද්‍යුත් තැපෑල වෙනස් නොකළේ නම්, යම් අයෙකු ඔබගේ ගිණුමට ප්‍රවේශය ලබා ගෙන ඇති බව පෙනෙන්නට තිබේ. ඔබගේ ගිණුමෙන් අගුලු දමා ඇත්නම් කරුණාකර ඔබගේ මුරපදය වහාම වෙනස් කරන්න හෝ සේවාදායක පරිපාලක අමතන්න. subject: 'මාස්ටඩන්: වි-තැපෑල වෙනස් විය' - title: නව විද්‍යුත් තැපැල් ලිපිනය + title: නව වි-තැපැල් ලිපිනය password_change: explanation: ඔබගේ ගිණුම සඳහා මුරපදය වෙනස් කර ඇත. extra: ඔබ ඔබගේ මුරපදය වෙනස් නොකළේ නම්, යමෙකු ඔබගේ ගිණුමට ප්‍රවේශය ලබා ගෙන ඇති බව පෙනෙන්නට තිබේ. ඔබගේ ගිණුමෙන් අගුලු දමා ඇත්නම් කරුණාකර ඔබගේ මුරපදය වහාම වෙනස් කරන්න හෝ සේවාදායක පරිපාලක අමතන්න. subject: 'Mastodon: මුරපදය වෙනස් විය' - title: මුරපදය වෙනස් කරන ලදී + title: මුරපදය වෙනස් විය reconfirmation_instructions: explanation: ඔබගේ ඊමේල් වෙනස් කිරීමට නව ලිපිනය තහවුරු කරන්න. extra: මෙම වෙනස ඔබ විසින් ආරම්භ කරන ලද්දක් නොවේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න. ඔබ ඉහත සබැඳියට ප්‍රවේශ වන තෙක් Mastodon ගිණුම සඳහා ඊමේල් ලිපිනය වෙනස් නොවේ. subject: 'Mastodon: %{instance}සඳහා විද්‍යුත් තැපෑල තහවුරු කරන්න' - title: වි. තැපැල් ලිපිනය තහවුරු කරන්න + title: වි-තැපෑල තහවුරු කරන්න reset_password_instructions: action: මුරපදය වෙනස් කරන්න explanation: ඔබ ඔබගේ ගිණුම සඳහා නව මුරපදයක් ඉල්ලා ඇත. extra: ඔබ මෙය ඉල්ලා නොසිටියේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න. ඔබ ඉහත සබැඳියට ප්‍රවේශ වී අලුත් එකක් සාදන තෙක් ඔබේ මුරපදය වෙනස් නොවනු ඇත. subject: 'Mastodon: මුරපද උපදෙස් යළි පිහිටුවන්න' - title: මුරපදය නැවත සැකසීම + title: මුරපදය යළි සැකසීම two_factor_disabled: explanation: ඔබගේ ගිණුම සඳහා ද්වි-සාධක සත්‍යාපනය අබල කර ඇත. විද්‍යුත් තැපැල් ලිපිනය සහ මුරපදය පමණක් භාවිතයෙන් දැන් පුරනය විය හැක. subject: 'Mastodon: ද්වි සාධක සත්‍යාපනය අක්‍රීය කර ඇත' @@ -57,9 +57,9 @@ si: two_factor_recovery_codes_changed: explanation: පෙර ප්‍රතිසාධන කේත අවලංගු කර නව ඒවා උත්පාදනය කර ඇත. subject: 'Mastodon: ද්වි-සාධක ප්‍රතිසාධන කේත නැවත උත්පාදනය කරන ලදී' - title: ද්විපියවර ප්‍රතිසාධන කේත වෙනස් වේ + title: ද්විපියවර ප්‍රතිසාධන කේත වෙනස් විය unlock_instructions: - subject: 'මාස්ටඩන්: අගුලුහැරීමේ උපදේශනය' + subject: 'මාස්ටඩන්: අගුළු හැරීමේ උපදේශ' webauthn_credential: added: explanation: පහත ආරක්ෂක යතුර ඔබගේ ගිණුමට එක් කර ඇත @@ -93,12 +93,12 @@ si: signed_up_but_locked: ඔබ සාර්ථකව ලියාපදිංචි වී ඇත. කෙසේ වෙතත්, ඔබගේ ගිණුම අගුලු දමා ඇති නිසා අපට ඔබව පුරනය කිරීමට නොහැකි විය. signed_up_but_pending: තහවුරු කිරීමේ සබැඳියක් සහිත පණිවිඩයක් ඔබගේ විද්‍යුත් තැපැල් ලිපිනයට යවා ඇත. ඔබ සබැඳිය ක්ලික් කළ පසු, අපි ඔබගේ අයදුම්පත සමාලෝචනය කරන්නෙමු. එය අනුමත වුවහොත් ඔබට දැනුම් දෙනු ලැබේ. signed_up_but_unconfirmed: තහවුරු කිරීමේ සබැඳියක් සහිත පණිවිඩයක් ඔබගේ විද්‍යුත් තැපැල් ලිපිනයට යවා ඇත. ඔබගේ ගිණුම සක්‍රිය කිරීමට කරුණාකර සබැඳිය අනුගමනය කරන්න. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. - update_needs_confirmation: ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කළ හැකි නමුත් අපට ඔබගේ නව විද්‍යුත් තැපැල් ලිපිනය තහවුරු කර ගත යුතුය. කරුණාකර ඔබගේ විද්‍යුත් තැපෑල පරීක්ෂා කර තහවුරු කිරීමේ සබැඳිය අනුගමනය කරන්න ඔබගේ නව විද්‍යුත් තැපැල් ලිපිනය තහවුරු කරන්න. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් බහාලුම පරීක්ෂා කරන්න. + update_needs_confirmation: ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන වුවද අපට නව වි-තැපැල් ලිපිනය තහවුරු කර ගැනීමට වුවමනා කෙරේ. කරුණාකර ඔබගේ වි-තැපෑල පරීක්‍ෂා කර ඊට අදාළ සබැඳිය අනුගමනය කර ඔබගේ නව වි-තැපැල් ලිපිනය තහවුරු කරන්න. ඔබට මෙම වි-තැපෑල නොලැබුණේ නම් කරුණාකර අයාචිත තැපැල් බහාලුම බලන්න. updated: ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කර ඇත. sessions: - already_signed_out: සාර්ථකව නික්මුනි. - signed_in: සාර්ථකව පිවිසෙන්න. - signed_out: සාර්ථකව නික්මුනි. + already_signed_out: සාර්ථකව නික්මිණි. + signed_in: සාර්ථකව පිවිසුණි. + signed_out: සාර්ථකව නික්මිණි. unlocks: send_instructions: මිනිත්තු කිහිපයකින් ඔබගේ ගිණුම අගුළු හරින ආකාරය පිළිබඳ උපදෙස් සහිත විද්‍යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. send_paranoid_instructions: ඔබගේ ගිණුම තිබේ නම්, මිනිත්තු කිහිපයකින් එය අගුළු හරින ආකාරය පිළිබඳ උපදෙස් සහිත විද්‍යුත් තැපෑලක් ඔබට ලැබෙනු ඇත. ඔබට මෙම විද්‍යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් ෆෝල්ඩරය පරීක්ෂා කරන්න. diff --git a/config/locales/doorkeeper.si.yml b/config/locales/doorkeeper.si.yml index 4bbfa4e90e..ebb7f474fc 100644 --- a/config/locales/doorkeeper.si.yml +++ b/config/locales/doorkeeper.si.yml @@ -126,7 +126,7 @@ si: blocks: කුට්ටි bookmarks: පිටු සලකුණු conversations: සංවාද - crypto: අන්තයේ සිට අගට සංකේතනය කිරීම + crypto: අන්ත සංකේතනය favourites: ප්රියතම filters: පෙරහන් follow: සබඳතා @@ -138,7 +138,7 @@ si: push: තල්ලු දැනුම්දීම් reports: වාර්තා search: සොයන්න - statuses: තනතුරු + statuses: ලිපි layouts: admin: nav: @@ -174,7 +174,7 @@ si: write:blocks: ගිණුම් සහ වසම් අවහිර කරන්න write:bookmarks: පිටු සලකුණු සටහන් write:conversations: සංවාද නිහඬ කිරීම සහ මකා දැමීම - write:favourites: ප්රියතම තනතුරු + write:favourites: ප්‍රියතම ලිපි write:filters: පෙරහන් කරන්න write:follows: මිනිසුන් අනුගමනය කරන්න write:lists: ලැයිස්තු සාදන්න diff --git a/config/locales/el.yml b/config/locales/el.yml index 61745f0dc5..0ed5980279 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -2,41 +2,14 @@ el: about: about_mastodon_html: 'Το κοινωνικό δίκτυο του μέλλοντος: Χωρίς διαφημίσεις, χωρίς εταιρίες να σε κατασκοπεύουν, ηθικά σχεδιασμένο και αποκεντρωμένο! Με το Mastodon τα δεδομένα σου είναι πραγματικά δικά σου!' - about_this: Σχετικά - administered_by: 'Διαχειριστής:' api: API apps: Εφαρμογές κινητών - contact: Επικοινωνία contact_missing: Δεν έχει οριστεί contact_unavailable: Μη διαθέσιμο documentation: Τεκμηρίωση hosted_on: Το Mastodon φιλοξενείται στο %{domain} - instance_actor_flash: | - Αυτός ο λογαριασμός είναι εικονικός και απεικονίζει ολόκληρο τον κόμβο, όχι κάποιο συγκεκριμένο χρήστη. - Χρησιμεύει στη λειτουργία της ομοσπονδίας και δε θα πρέπει να αποκλειστεί, εκτός κι αν είναι επιθυμητός ο αποκλεισμός ολόκληρου του κόμβου. Σε αυτή την περίπτωση θα πρέπει να χρησιμοποιηθεί η λειτουργία αποκλεισμού τομέα. privacy_policy: Πολιτική Απορρήτου - rules: Κανόνες διακομιστή - rules_html: 'Παρακάτω είναι μια σύνοψη των κανόνων που πρέπει να ακολουθήσετε αν θέλετε να έχετε ένα λογαριασμό σε αυτόν τον διακομιστή Mastodon:' source_code: Πηγαίος κώδικας - status_count_after: - one: δημοσίευση - other: δημοσιεύσεις - status_count_before: Που έγραψαν - unavailable_content: Μη διαθέσιμο - unavailable_content_description: - domain: Διακομιστής - reason: 'Αιτία:' - rejecting_media: 'Τα αρχεία πολυμέσων αυτών των διακομιστών δεν θα επεξεργάζονται, δεν θα αποθηκεύονται και δεν θα εμφανίζεται η προεπισκόπησή τους, απαιτώντας χειροκίνητη επιλογή μέχρι το αρχικό αρχείο:' - rejecting_media_title: Φιλτραρισμένα πολυμέσα - silenced: 'Οι δημοσιεύσεις αυτών των διακομιστών θα είναι κρυμμένες από τις δημόσιες ροές και συζητήσεις, ενώ δεν θα δημιουργούνται ειδοποιήσεις για τις ενέργειες των χρηστών τους, εκτός κι αν τους ακολουθείς:' - silenced_title: Αποσιωπημένοι διακομιστές - suspended: 'Κανένα δεδομένο δε θα επεξεργάζεται, δε θα αποθηκεύεται και δε θα ανταλλάσσεται για αυτούς τους διακομιστές, καθιστώντας οποιαδήποτε αλληλεπίδραση ή επικοινωνία με χρήστες από αυτούς τους διακομιστές αδύνατη:' - suspended_title: Διακομιστές σε αναστολή - unavailable_content_html: Το Mastodon γενικά επιτρέπει να δεις περιεχόμενο και να αλληλεπιδράσεις με χρήστες από οποιονδήποτε διακομιστή στο fediverse. Εδώ είναι οι εξαιρέσεις που ισχύουν σε αυτόν τον συγκεκριμένο διακομιστή. - user_count_after: - one: χρήστης - other: χρήστες - user_count_before: Σπίτι για what_is_mastodon: Τι είναι το Mastodon; accounts: choices_html: 'Επιλογές από %{name}:' @@ -513,9 +486,6 @@ el: users: Προς συνδεδεμένους τοπικούς χρήστες domain_blocks_rationale: title: Εμφάνιση σκεπτικού - hero: - desc_html: Εμφανίζεται στην μπροστινή σελίδα. Συνίσταται τουλάχιστον 600x100px. Όταν λείπει, χρησιμοποιείται η μικρογραφία του κόμβου - title: Εικόνα ήρωα mascot: desc_html: Εμφάνιση σε πολλαπλές σελίδες. Προτεινόμενο 293x205px τουλάχιστον. Αν δεν έχει οριστεί, χρησιμοποιεί την προεπιλεγμένη μασκότ title: Εικόνα μασκότ diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 0e849f13ce..35e29ef3df 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -2,38 +2,13 @@ eo: about: about_mastodon_html: 'Mastodon estas socia retejo de la estonteco: sen reklamo, sen kompania gvato, etika dezajno kaj malcentraligo! Vi regu viajn datumojn kun Mastodon!' - about_this: Pri - administered_by: 'Administrata de:' api: API apps: Poŝtelefonaj aplikaĵoj - contact: Kontakto contact_missing: Ne ŝargita contact_unavailable: Ne disponebla documentation: Dokumentado hosted_on: "%{domain} estas nodo de Mastodon" - instance_actor_flash: 'Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo, kaj devas ne esti brokita, krom se vi ne volas bloki la tutan servilon, tiuokaze vi devas uzi blokadon de domajno. - - ' - rules: Reguloj de la servilo source_code: Fontkodo - status_count_after: - one: mesaĝo - other: mesaĝoj - status_count_before: Kie skribiĝis - unavailable_content: Moderigitaj serviloj - unavailable_content_description: - domain: Servilo - reason: Motivo - rejecting_media: 'La aŭdovidaj dosieroj de ĉi tiuj serviloj ne estos prilaboritaj aŭ stokitaj, kaj neniu bildeto estos montrita, do necesas klaki permane por vidi la originalan afiŝon:' - rejecting_media_title: Filtritaj aŭdovidaĵoj - silenced: 'La mesaĝoj de tiuj serviloj estos kaŝitaj de publikaj templinio kaj konversacioj, kaj la interagoj de la uzantoj donas neniun sciigon, ĝis vi sekvos ilin:' - silenced_title: Limigitaj serviloj - suspended: 'Neniu datumo de ĉi tiuj serviloj estos prilaboritaj, stokitaj, aŭ interŝanĝitaj, neeble fari interagon aŭ komunikon kun la uzantoj de ĉi tiuj serviloj:' - suspended_title: Suspenditaj serviloj - user_count_after: - one: uzanto - other: uzantoj - user_count_before: Hejmo de what_is_mastodon: Kio estas Mastodon? accounts: choices_html: 'Proponoj de %{name}:' @@ -528,9 +503,6 @@ eo: users: Al salutintaj lokaj uzantoj domain_blocks_rationale: title: Montri la kialon - hero: - desc_html: Montrata en la ĉefpaĝo. Almenaŭ 600x100px rekomendita. Kiam ne agordita, la bildeto de la servilo estos uzata - title: Kapbildo mascot: desc_html: Montrata en pluraj paĝoj. Rekomendataj estas almenaŭ 293x205px. Se ĉi tio ne estas agordita, la defaŭlta maskoto uziĝas title: Maskota bildo diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 749ac27ee6..d6de0f1d9e 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -2,41 +2,14 @@ es-AR: about: about_mastodon_html: 'La red social del futuro: ¡sin publicidad, sin vigilancia corporativa, con diseño ético y descentralización! ¡Con Mastodon vos sos el dueño de tus datos!' - about_this: Acerca de Mastodon - administered_by: 'Administrado por:' api: API apps: Aplicaciones móviles - contact: Contacto contact_missing: No establecido contact_unavailable: No disponible documentation: Documentación hosted_on: Mastodon alojado en %{domain} - instance_actor_flash: | - Esta cuenta es un actor virtual usado para representar al propio servidor y no a ningún usuario individual. - Se usa para fines federativos y no debe ser bloqueado a menos que quieras bloquear toda la instancia, en cuyo caso deberías usar un bloqueo de dominio. privacy_policy: Política de privacidad - rules: Reglas del servidor - rules_html: 'Abajo hay un resumen de las reglas que tenés que seguir si querés tener una cuenta en este servidor de Mastodon:' source_code: Código fuente - status_count_after: - one: mensaje - other: mensajes - status_count_before: Que enviaron - unavailable_content: Servidores moderados - unavailable_content_description: - domain: Servidor - reason: Motivo - rejecting_media: 'Los archivos de medios de este servidor no van a ser procesados y no se mostrarán miniaturas, lo que requiere un clic manual hacia el archivo original:' - rejecting_media_title: Medios filtrados - silenced: 'Los mensajes de estos servidores se ocultarán en las líneas temporales y conversaciones públicas, y no se generarán notificaciones de las interacciones de sus usuarios, a menos que los estés siguiendo:' - silenced_title: Servidores limitados - suspended: 'No se procesarán, almacenarán o intercambiarán datos de estos servidores, haciendo imposible cualquier interacción o comunicación con los usuarios de estos servidores:' - suspended_title: Servidores suspendidos - unavailable_content_html: Mastodon generalmente te permite ver contenido e interactuar con usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se hicieron en este servidor en particular. - user_count_after: - one: usuario - other: usuarios - user_count_before: Hogar de what_is_mastodon: "¿Qué es Mastodon?" accounts: choices_html: 'Recomendados de %{name}:' @@ -471,7 +444,7 @@ es-AR: status: Estado suppress: Eliminar recomendación de cuentas para seguir suppressed: Eliminado - title: Recomendaciones de cuentas para seguir + title: Recom. de cuentas a seguir unsuppress: Restablecer recomendaciones de cuentas para seguir instances: availability: @@ -735,9 +708,6 @@ es-AR: users: A usuarios locales con sesiones abiertas domain_blocks_rationale: title: Mostrar razonamiento - hero: - desc_html: Mostrado en la página principal. Se recomienda un tamaño mínimo de 600x100 píxeles. Predeterminadamente se establece a la miniatura del servidor - title: Imagen de portada mascot: desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205 píxeles. Cuando no se especifica, se muestra la mascota predeterminada title: Imagen de la mascota @@ -1513,9 +1483,9 @@ es-AR: preferences: Configuración profile: Perfil relationships: Seguimientos - statuses_cleanup: Eliminación automática de mensajes + statuses_cleanup: Eliminación auto. de mensajes strikes: Moderación de incumplimientos - two_factor_authentication: Autenticación de dos factores + two_factor_authentication: Aut. de dos factores webauthn_authentication: Llaves de seguridad statuses: attached: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index af335bc6c1..fcaa0b6fa4 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -2,41 +2,14 @@ es-MX: about: about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' - about_this: Información - administered_by: 'Administrado por:' api: API apps: Aplicaciones móviles - contact: Contacto contact_missing: No especificado contact_unavailable: No disponible documentation: Documentación hosted_on: Mastodon hosteado en %{domain} - instance_actor_flash: | - Esta cuenta es un actor virtual usado para representar al servidor y no a ningún usuario individual. - Se usa para fines federativos y no debe ser bloqueado a menos que usted quiera bloquear toda la instancia, en cuyo caso se debe utilizar un bloque de dominio. privacy_policy: Política de Privacidad - rules: Normas del servidor - rules_html: 'A continuación hay un resumen de las normas que debes seguir si quieres tener una cuenta en este servidor de Mastodon:' source_code: Código fuente - status_count_after: - one: estado - other: estados - status_count_before: Qué han escrito - unavailable_content: Contenido no disponible - unavailable_content_description: - domain: Servidor - reason: 'Motivo:' - rejecting_media: Los archivos multimedia de este servidor no serán procesados y no se mostrarán miniaturas, lo que requiere un clic manual en el otro servidor. - rejecting_media_title: Medios filtrados - silenced: Las publicaciones de este servidor no se mostrarán en ningún lugar salvo en el Inicio si sigues al autor. - silenced_title: Servidores silenciados - suspended: No podrás seguir a nadie de este servidor, y ningún dato de este será procesado o almacenado, y no se intercambiarán datos. - suspended_title: Servidores suspendidos - unavailable_content_html: Mastodon generalmente le permite ver contenido e interactuar con usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular. - user_count_after: - one: usuario - other: usuarios - user_count_before: Tenemos what_is_mastodon: "¿Qué es Mastodon?" accounts: choices_html: 'Elecciones de %{name}:' @@ -735,9 +708,6 @@ es-MX: users: Para los usuarios locales que han iniciado sesión domain_blocks_rationale: title: Mostrar la razón de ser - hero: - desc_html: Mostrado en la página principal. Recomendable al menos 600x100px. Por defecto se establece a la miniatura de la instancia - title: Imagen de portada mascot: desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205px. Cuando no se especifica, se muestra la mascota por defecto title: Imagen de la mascota diff --git a/config/locales/es.yml b/config/locales/es.yml index 19a4bf30f1..46866fdd87 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -2,41 +2,14 @@ es: about: about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' - about_this: Información - administered_by: 'Administrado por:' api: API apps: Aplicaciones móviles - contact: Contacto contact_missing: No especificado contact_unavailable: No disponible documentation: Documentación hosted_on: Mastodon alojado en %{domain} - instance_actor_flash: | - Esta cuenta es un actor virtual usado para representar al servidor y no a ningún usuario individual. - Se usa para fines federativos y no debe ser bloqueado a menos que usted quiera bloquear toda la instancia, en cuyo caso se debe utilizar un bloque de dominio. privacy_policy: Política de Privacidad - rules: Normas del servidor - rules_html: 'A continuación hay un resumen de las normas que debes seguir si quieres tener una cuenta en este servidor de Mastodon:' source_code: Código fuente - status_count_after: - one: estado - other: estados - status_count_before: Qué han escrito - unavailable_content: Contenido no disponible - unavailable_content_description: - domain: Servidor - reason: 'Motivo:' - rejecting_media: Los archivos multimedia de este servidor no serán procesados y no se mostrarán miniaturas, lo que requiere un clic manual en el otro servidor. - rejecting_media_title: Medios filtrados - silenced: Las publicaciones de este servidor no se mostrarán en ningún lugar salvo en el Inicio si sigues al autor. - silenced_title: Servidores silenciados - suspended: No podrás seguir a nadie de este servidor, y ningún dato de este será procesado o almacenado, y no se intercambiarán datos. - suspended_title: Servidores suspendidos - unavailable_content_html: Mastodon generalmente le permite ver contenido e interactuar con usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular. - user_count_after: - one: usuario - other: usuarios - user_count_before: Tenemos what_is_mastodon: "¿Qué es Mastodon?" accounts: choices_html: 'Elecciones de %{name}:' @@ -735,9 +708,6 @@ es: users: Para los usuarios locales que han iniciado sesión domain_blocks_rationale: title: Mostrar la razón de ser - hero: - desc_html: Mostrado en la página principal. Recomendable al menos 600x100px. Por defecto se establece a la miniatura de la instancia - title: Imagen de portada mascot: desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205px. Cuando no se especifica, se muestra la mascota por defecto title: Imagen de la mascota diff --git a/config/locales/et.yml b/config/locales/et.yml index cac35e2b4f..65c74774e1 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -2,37 +2,13 @@ et: about: about_mastodon_html: 'Tuleviku sotsiaalvõrgustik: Reklaamivaba, korporatiivse järelvalveta, eetiline kujundus ning detsentraliseeritus! Oma enda andmeid Mastodonis!' - about_this: Meist - administered_by: 'Administraator:' api: API apps: Mobiilirakendused - contact: Kontakt contact_missing: Määramata contact_unavailable: Pole saadaval documentation: Dokumentatsioon hosted_on: Mastodon majutatud %{domain}-is - instance_actor_flash: | - See konto on virtuaalne näitleja, mis esindab tervet serverit ning mitte ühtegi kindlat isikut. - Seda kasutatakse föderatiivsetel põhjustel ning seda ei tohiks blokeerida, välja arvatud juhul, kui soovite blokeerida tervet serverit, kuid sellel juhul soovitame hoopis kasutada domeeni blokeerimist. - rules: Serveri reeglid - rules_html: 'Järgneb kokkuvõte reeglitest, mida pead järgima, kui lood endale siin Mastodoni serveris konto:' source_code: Lähtekood - status_count_after: - one: postitust - other: staatuseid - status_count_before: Kes on avaldanud - unavailable_content: Sisu pole saadaval - unavailable_content_description: - reason: Põhjus - rejecting_media: 'Meedia failid sellelt serverilt ei töödelda ega salvestata ning mitte ühtegi eelvaadet ei kuvata, mis nõuab manuaalselt vajutust originaalfailile:' - rejecting_media_title: Filtreeritud meediaga - silenced: 'Postitused nendelt serveritelt peidetakse avalikes ajajoontes ja vestlustes ning mitte ühtegi teavitust ei tehta nende kasutajate tegevustest, välja arvatud juhul, kui Te neid jälgite:' - suspended: 'Mitte mingeid andmeid nendelt serveritelt ei töödelda, salvestata ega vahetata, tehes igasuguse interaktsiooni või kirjavahetuse kasutajatega nendelt serveritelt võimatuks:' - unavailable_content_html: Mastodon tavaliselt lubab Teil vaadata sisu ning suhelda kasutajatega üks kõik millisest teisest serverist fediversumis. Need on erandid, mis on paika pandud sellel kindlal serveril. - user_count_after: - one: kasutajale - other: kasutajale - user_count_before: Koduks what_is_mastodon: Mis on Mastodon? accounts: choices_html: "%{name}-i valikud:" @@ -396,9 +372,6 @@ et: users: Sisseloginud kohalikele kasutajatele domain_blocks_rationale: title: Näita põhjendust - hero: - desc_html: Kuvatud kodulehel. Vähemalt 600x100px soovitatud. Kui pole seadistatud, kuvatakse serveri pisililt - title: Maskotipilt mascot: desc_html: Kuvatakse mitmel lehel. Vähemalt 293x205px soovitatud. Kui pole seadistatud, kuvatakse vaikimisi maskott title: Maskotipilt diff --git a/config/locales/eu.yml b/config/locales/eu.yml index f3da9364d8..21bdf5c98b 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -2,38 +2,13 @@ eu: about: about_mastodon_html: 'Etorkizuneko sare soziala: ez iragarkirik eta ez zelatatze korporatiborik, diseinu etikoa eta deszentralizazioa! Izan zure datuen jabea Mastodonekin!' - about_this: Honi buruz - administered_by: 'Administratzailea(k):' api: APIa apps: Aplikazio mugikorrak - contact: Kontaktua contact_missing: Ezarri gabe contact_unavailable: E/E documentation: Dokumentazioa hosted_on: Mastodon %{domain} domeinuan ostatatua - instance_actor_flash: "Kontu hau zerbitzaria bera adierazten duen aktore birtual bat da, ez norbanako bat. Federaziorako erabiltzen da eta ez zenuke blokeatu behar instantzia osoa blokeatu nahi ez baduzu, kasu horretan domeinua blokeatzea egokia litzateke. \n" - rules: Zerbitzariaren arauak - rules_html: 'Behean Mastodon zerbitzari honetan kontua eduki nahi baduzu jarraitu beharreko arauen laburpena daukazu:' source_code: Iturburu kodea - status_count_after: - one: bidalketa - other: bidalketa - status_count_before: Hauek - unavailable_content: Eduki eskuraezina - unavailable_content_description: - domain: Zerbitzaria - reason: Arrazoia - rejecting_media: 'Zerbitzari hauetako multimedia fitxategiak ez dira prozesatuko ez gordeko, eta ez dira iruditxoak bistaratuko, jatorrizko irudira joan behar izango da klik eginez:' - rejecting_media_title: Iragazitako multimedia - silenced: 'Zerbitzari hauetako bidalketak denbora-lerro eta elkarrizketa publikoetan ezkutatuko dira, eta bere erabiltzaileen interakzioek ez dute jakinarazpenik sortuko ez badituzu jarraitzen:' - silenced_title: Isilarazitako zerbitzariak - suspended: 'Ez da zerbitzari hauetako daturik prozesatuko, gordeko, edo partekatuko, zerbitzari hauetako erabiltzaileekin komunikatzea ezinezkoa eginez:' - suspended_title: Kanporatutako zerbitzariak - unavailable_content_html: Mastodonek orokorrean fedibertsoko beste zerbitzarietako erabiltzaileen edukia ikustea eta beraiekin aritzea ahalbidetzen dizu. Salbuespena egin da zerbitzari zehatz honekin. - user_count_after: - one: erabiltzaile - other: erabiltzaile - user_count_before: Hemen what_is_mastodon: Zer da Mastodon? accounts: choices_html: "%{name}(r)en aukerak:" @@ -623,9 +598,6 @@ eu: users: Saioa hasita duten erabiltzaile lokalei domain_blocks_rationale: title: Erakutsi arrazoia - hero: - desc_html: Azaleko orrian bistaratua. Gutxienez 600x100px aholkatzen da. Ezartzen ez bada, zerbitzariaren irudia hartuko du - title: Azaleko irudia mascot: desc_html: Hainbat orritan bistaratua. Gutxienez 293x205px aholkatzen da. Ezarri ezean lehenetsitako maskota erakutsiko da title: Maskotaren irudia diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 504d4cd8d5..a280fef511 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -2,40 +2,13 @@ fa: about: about_mastodon_html: 'شبکهٔ اجتماعی آینده: بدون تبلیغات، بدون شنود از طرف شرکت‌ها، طراحی اخلاق‌مدار، و معماری غیرمتمرکز! با ماستودون صاحب داده‌های خودتان باشید!' - about_this: درباره - administered_by: 'به مدیریت:' api: رابط برنامه‌نویسی کاربردی apps: اپ‌های موبایل - contact: تماس contact_missing: تنظیم نشده contact_unavailable: موجود نیست documentation: مستندات hosted_on: ماستودون، میزبانی‌شده روی %{domain} - instance_actor_flash: | - این حساب، بازیگری مجازی به نمایندگی خود کارساز بوده و کاربری واقعی نیست. - این حساب برای مقاصد خودگردانی به کار می‌رفته و نباید مسدود شود؛ مگر این که بخواهید کل نمونه را مسدود کنید که در آن صورت نیز باید از انسداد دامنه استفاده کنید. - rules: قوانین کارساز - rules_html: 'در زیر خلاصه‌ای از قوانینی که در صورت علاقه به داشتن حسابی روی این کارساز ماستودون، باید رعایت کنید آمده است:' source_code: کدهای منبع - status_count_after: - one: چیز نوشته‌اند - other: چیز نوشته‌اند - status_count_before: که در کنار هم - unavailable_content: محتوای ناموجود - unavailable_content_description: - domain: کارساز - reason: دلیل - rejecting_media: 'پرونده‌های رسانه از این کارسازها پردازش یا ذخیره نخواهند شد و هیچ بندانگشتی‌ای نمایش نخواهد یافت. نیازمند کلیک دستی برای رسیدن به پروندهٔ اصلی:' - rejecting_media_title: رسانه‌های پالوده - silenced: 'فرسته‌ها از این کارسازها در خط‌زمانی‌های عمومی و گفت‌وگوها پنهان خواهند بود و هیچ آگاهی‌ای از برهم‌کنش‌های کاربرانشان ایجاد نخواهد شد،‌مگر این که دنبالشان کنید:' - silenced_title: کارسازهای خموش - suspended: 'هیچ داده‌ای از این کارسازها پردازش، ذخیره یا مبادله نخواهد شد، که هرگونه برهم‌کنش یا ارتباط با کاربران این کارسازها را غیرممکن خواهد کرد:' - suspended_title: کارسازهای معلّق - unavailable_content_html: ماستودون عموماً می‌گذارد محتوا را از از هر کارساز دیگری در دنیای شبکه‌های اجتماعی غیرمتمرکز دیده و با آنان برهم‌کنش داشته باشید. این‌ها استثناهایی هستند که روی این کارساز خاص وضع شده‌اند. - user_count_after: - one: کاربر - other: کاربر - user_count_before: میزبان what_is_mastodon: ماستودون چیست؟ accounts: choices_html: 'انتخاب‌های %{name}:' @@ -603,9 +576,6 @@ fa: users: برای کاربران محلی واردشده domain_blocks_rationale: title: دیدن دلیل - hero: - desc_html: در صفحهٔ آغازین نمایش می‌یابد. دست‌کم ۶۰۰×۱۰۰ پیکسل توصیه می‌شود. اگر تعیین نشود، با تصویر بندانگشتی سرور جایگزین خواهد شد - title: تصویر سربرگ mascot: desc_html: در صفحه‌های گوناگونی نمایش می‌یابد. دست‌کم ۲۹۳×۲۰۵ پیکسل. اگر تعیین نشود، با تصویر پیش‌فرض جایگزین خواهد شد title: تصویر نماد diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 4a51826fcb..f3c4db9916 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -2,40 +2,13 @@ fi: about: about_mastodon_html: 'Tulevaisuuden sosiaalinen verkosto: Ei mainoksia, ei valvontaa, toteutettu avoimilla protokollilla ja hajautettu! Pidä tietosi ominasi Mastodonilla!' - about_this: Tietoa tästä palvelimesta - administered_by: 'Ylläpitäjä:' api: Rajapinta apps: Mobiilisovellukset - contact: Ota yhteyttä contact_missing: Ei asetettu contact_unavailable: Ei saatavilla documentation: Dokumentaatio hosted_on: Mastodon palvelimella %{domain} - instance_actor_flash: | - Tämä on virtuaalitili, joka edustaa itse palvelinta eikä yksittäistä käyttäjää. - Sitä käytetään yhdistämistarkoituksiin, eikä sitä saa estää, ellet halua estää koko palvelinta, jolloin sinun on käytettävä verkkotunnuksen estoa. - rules: Palvelimen säännöt - rules_html: 'Alla on yhteenveto säännöistä, joita sinun on noudatettava, jos haluat olla tili tällä Mastodonin palvelimella:' source_code: Lähdekoodi - status_count_after: - one: julkaisun - other: julkaisua - status_count_before: Julkaistu - unavailable_content: Moderoidut palvelimet - unavailable_content_description: - domain: Palvelin - reason: Syy - rejecting_media: 'Näiden palvelimien mediatiedostoja ei käsitellä tai tallenneta eikä pikkukuvia näytetä, mikä edellyttää manuaalista klikkausta alkuperäiseen tiedostoon:' - rejecting_media_title: Media suodatettu - silenced: 'Julkaisut näiltä palvelimilta piilotetaan julkisilta aikajanoilta ja keskusteluista, ilmoituksia ei luoda näiden käyttäjien tekemistä toiminnoista, jos et seuraa heitä:' - silenced_title: Hiljennetyt palvelimet - suspended: 'Dataa näiltä palvelimilta ei tulla käsittelemään, tallentamaan tai jakamaan. Tämä tekee kommunikoinnin näiden käyttäjien kanssa mahdottomaksi:' - suspended_title: Keskeytetyt palvelimet - unavailable_content_html: Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle. - user_count_after: - one: käyttäjä - other: käyttäjää - user_count_before: Palvelimella what_is_mastodon: Mikä on Mastodon? accounts: choices_html: "%{name} valinnat:" @@ -728,9 +701,6 @@ fi: users: Kirjautuneille paikallisille käyttäjille domain_blocks_rationale: title: Näytä syy - hero: - desc_html: Näytetään etusivulla. Suosituskoko vähintään 600x100 pikseliä. Jos kuvaa ei aseteta, käytetään instanssin pikkukuvaa - title: Sankarin kuva mascot: desc_html: Näytetään useilla sivuilla. Suositus vähintään 293×205px. Kun ei ole asetettu, käytetään oletuskuvaa title: Maskottikuva diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 9a8edacb5d..064037d809 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -2,41 +2,14 @@ fr: about: about_mastodon_html: 'Le réseau social de l''avenir : pas de publicité, pas de surveillance institutionnelle, conception éthique et décentralisation ! Gardez le contrôle de vos données avec Mastodon !' - about_this: À propos - administered_by: 'Administré par :' api: API apps: Applications mobiles - contact: Contact contact_missing: Non défini contact_unavailable: Non disponible documentation: Documentation hosted_on: Serveur Mastodon hébergé sur %{domain} - instance_actor_flash: | - Ce compte est un acteur virtuel utilisé pour représenter le serveur lui-même et non un·e utilisateur·rice individuel·le. - Il est utilisé à des fins de fédération et ne doit pas être bloqué à moins que vous ne vouliez bloquer l’instance entière, auquel cas vous devriez utiliser un blocage de domaine. privacy_policy: Politique de confidentialité - rules: Règles du serveur - rules_html: 'Voici un résumé des règles que vous devez suivre si vous voulez avoir un compte sur ce serveur de Mastodon :' source_code: Code source - status_count_after: - one: message - other: messages - status_count_before: Ayant publié - unavailable_content: Serveurs modérés - unavailable_content_description: - domain: Serveur - reason: Motif - rejecting_media: 'Les fichiers média de ces serveurs ne seront ni traités ni stockés, et aucune miniature ne sera affichée, rendant nécessaire de cliquer vers le fichier d’origine :' - rejecting_media_title: Médias filtrés - silenced: 'Les messages de ces serveurs seront cachés des flux publics et conversations, et les interactions de leurs utilisateur·rice·s ne donneront lieu à aucune notification, à moins que vous ne les suiviez :' - silenced_title: Serveurs limités - suspended: 'Aucune donnée venant de ces serveurs ne sera traitée, stockée ou échangée, rendant impossible toute interaction ou communication avec les utilisateur·rice·s de ces serveurs :' - suspended_title: Serveurs suspendus - unavailable_content_html: Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateur·rice·s de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier. - user_count_after: - one: utilisateur - other: utilisateur·rice·s - user_count_before: Abrite what_is_mastodon: Qu’est-ce que Mastodon ? accounts: choices_html: "%{name} recommande :" @@ -321,6 +294,7 @@ fr: update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}" update_domain_block_html: "%{name} a mis à jour le blocage de domaine pour %{target}" update_status_html: "%{name} a mis à jour le message de %{target}" + update_user_role_html: "%{name} a changé le rôle %{target}" empty: Aucun journal trouvé. filter_by_action: Filtrer par action filter_by_user: Filtrer par utilisateur·ice @@ -728,9 +702,6 @@ fr: users: Aux utilisateur·rice·s connecté·e·s localement domain_blocks_rationale: title: Montrer la raison - hero: - desc_html: Affichée sur la page d’accueil. Au moins 600x100px recommandé. Lorsqu’elle n’est pas définie, se rabat sur la vignette du serveur - title: Image d’en-tête mascot: desc_html: Affiché sur plusieurs pages. Au moins 293×205px recommandé. Lorsqu’il n’est pas défini, retombe à la mascotte par défaut title: Image de la mascotte @@ -993,6 +964,7 @@ fr: migrate_account: Déménager vers un compte différent migrate_account_html: Si vous voulez rediriger ce compte vers un autre, vous pouvez le configurer ici. or_log_in_with: Ou authentifiez-vous avec + privacy_policy_agreement_html: J’ai lu et j’accepte la politique de confidentialité providers: cas: CAS saml: SAML @@ -1376,6 +1348,8 @@ fr: other: Autre posting_defaults: Paramètres de publication par défaut public_timelines: Fils publics + privacy_policy: + title: Politique de confidentialité reactions: errors: limit_reached: Limite de réactions différentes atteinte diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 4656b83db8..8542761c5d 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -2,9 +2,6 @@ ga: about: api: API - unavailable_content_description: - domain: Freastalaí - reason: Fáth accounts: posts_tab_heading: Postálacha roles: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index ffae2ee2fd..9ce456ae46 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -2,44 +2,13 @@ gd: about: about_mastodon_html: 'An lìonra sòisealta dhan àm ri teachd: Gun sanasachd, gun chaithris corporra, dealbhadh beusail agus dì-mheadhanachadh! Gabh sealbh air an dàta agad fhèin le Mastodon!' - about_this: Mu dhèidhinn - administered_by: 'Rianachd le:' api: API apps: Aplacaidean mobile - contact: Fios thugainn contact_missing: Cha deach a shuidheachadh contact_unavailable: Chan eil seo iomchaidh documentation: Docamaideadh hosted_on: Mastodon ’ga òstadh air %{domain} - instance_actor_flash: | - ’S e actar biortail a tha sa chunntas seo a riochdaicheas am frithealaiche fhèin seach cleachdaiche sònraichte. - Tha e ’ga chleachdadh a chùm co-nasgaidh agus cha bu chòir dhut a bhacadh ach ma tha thu airson an t-ionstans gu lèir a bhacadh agus b’ fheàirrde thu bacadh àrainne a chleachdadh an àite sin. - rules: Riaghailtean an fhrithealaiche - rules_html: 'Tha geàrr-chunntas air na riaghailtean a dh’fheumas tu gèilleadh riutha ma tha thu airson cunntas fhaighinn air an fhrithealaiche Mastodon seo gu h-ìosal:' source_code: Bun-tùs - status_count_after: - few: postaichean - one: phost - other: post - two: phost - status_count_before: A dh’fhoillsich - unavailable_content: Frithealaichean fo mhaorsainneachd - unavailable_content_description: - domain: Frithealaiche - reason: Adhbhar - rejecting_media: 'Cha dèid faidhlichean meadhain o na frithealaichean seo a phròiseasadh no a stòradh agus cha dèid dealbhagan dhiubh a shealltainn. Feumar briogadh gus an ruigear am faidhle tùsail a làimh:' - rejecting_media_title: Meadhanan criathraichte - silenced: 'Thèid postaichean o na frithealaichean seo fhalach air loidhnichean-ama is còmhraidhean poblach agus cha dèid brathan a ghintinn à conaltraidhean nan cleachdaichean aca ach ma bhios tu fèin a’ leantainn orra:' - silenced_title: Frithealaichean cuingichte - suspended: 'Cha dèid dàta sam bith o na frithealaichean seo a phròiseasadh, a stòradh no iomlaid agus chan urrainn do na cleachdaichean o na frithealaichean sin conaltradh an-seo:' - suspended_title: Frithealaichean à rèim - unavailable_content_html: San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus conaltradh leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo. - user_count_after: - few: cleachdaichean - one: chleachdaiche - other: cleachdaiche - two: chleachdaiche - user_count_before: "’Na dhachaigh do" what_is_mastodon: Dè th’ ann am Mastodon? accounts: choices_html: 'Roghadh is taghadh %{name}:' @@ -751,9 +720,6 @@ gd: users: Dhan luchd-chleachdaidh a clàraich a-steach gu h-ionadail domain_blocks_rationale: title: Seall an t-adhbhar - hero: - desc_html: Thèid seo a shealltainn air a’ phrìomh-dhuilleag. Mholamaid 600x100px air a char as lugha. Mura dèid seo a shuidheachadh, thèid dealbhag an fhrithealaiche a shealltainn ’na àite - title: Dealbh gaisgich mascot: desc_html: Thèid seo a shealltainn air iomadh duilleag. Mholamaid 293×205px air a char as lugha. Mura dèid seo a shuidheachadh, thèid an suaichnean a shealltainn ’na àite title: Dealbh suaichnein diff --git a/config/locales/gl.yml b/config/locales/gl.yml index db840b4e3b..f9b6a11dcb 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -2,41 +2,14 @@ gl: about: about_mastodon_html: 'A rede social do futuro: Sen publicidade, sen seguimento por empresas, deseño ético e descentralización! En Mastodon ti posúes os teus datos!' - about_this: Acerca de - administered_by: 'Administrada por:' api: API apps: Aplicacións móbiles - contact: Contacto contact_missing: Non establecido contact_unavailable: Non dispoñíbel documentation: Documentación hosted_on: Mastodon aloxado en %{domain} - instance_actor_flash: 'Esta conta é un actor virtual utilizado para representar ao servidor e non a unha usuaria individual. Utilízase para propósitos de federación e non debería estar bloqueada a menos que queiras bloquear a toda a instancia, en tal caso deberías utilizar o bloqueo do dominio. - - ' privacy_policy: Política de Privacidade - rules: Regras do servidor - rules_html: 'Aquí tes un resumo das regras que debes seguir se queres ter unha conta neste servidor de Mastodon:' source_code: Código fonte - status_count_after: - one: publicación - other: publicacións - status_count_before: Que publicaron - unavailable_content: Contido non dispoñíbel - unavailable_content_description: - domain: Servidor - reason: Razón - rejecting_media: 'Os ficheiros multimedia deste servidor non serán procesados e non se amosarán miniaturas, o que require un clic manual no ficheiro orixinal:' - rejecting_media_title: Multimedia filtrado - silenced: 'As publicacións destes servidores non se amosarán en conversas e cronoloxías públicas, nin terás notificacións xeradas polas interaccións das usuarias, a menos que as estés a seguir:' - silenced_title: Servidores acalados - suspended: 'Non se procesarán, almacenarán nin intercambiarán datos destes servidores, o que fai imposíbel calquera interacción ou comunicación coas usuarias dende estes servidores:' - suspended_title: Servidores suspendidos - unavailable_content_html: O Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular. - user_count_after: - one: usuaria - other: usuarias - user_count_before: Fogar de what_is_mastodon: Qué é Mastodon? accounts: choices_html: 'Escollas de %{name}:' @@ -735,9 +708,6 @@ gl: users: Para usuarias locais conectadas domain_blocks_rationale: title: Amosar motivo - hero: - desc_html: Amosado na páxina principal. Polo menos 600x100px recomendados. Se non está definido, estará por defecto a miniatura do servidor - title: Imaxe do heroe mascot: desc_html: Amosado en varias páxinas. Polo menos 293x205px recomendados. Se non está definido, estará a mascota por defecto title: Imaxe da mascota diff --git a/config/locales/he.yml b/config/locales/he.yml index 5ad05fee9d..9806849102 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -2,44 +2,13 @@ he: about: about_mastodon_html: מסטודון היא רשת חברתית חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ברשת החברתית באופן חלק. - about_this: אודות שרת זה - administered_by: 'מנוהל ע"י:' api: ממשק apps: יישומונים לנייד - contact: יצירת קשר contact_missing: ללא הגדרה contact_unavailable: לא רלוונטי/חסר documentation: תיעוד hosted_on: מסטודון שיושב בכתובת %{domain} - instance_actor_flash: | - חשבון זה הינו פועל וירטואלי המשמש לייצוג השרת עצמו ולא משתמש ספציפי. - הוא משמש למטרת פדרציה ואין לחסום אותו אלא למטרת חסימת המופע כולו, ובמקרה כזה עדיף להשתמש בחסימת מופע. - rules: כללי השרת - rules_html: 'להלן סיכום הכללים שעליך לעקוב אחריהם על מנת להשתמש בחשבון בשרת מסטודון זה:' source_code: קוד מקור - status_count_after: - many: פוסטים - one: פוסט - other: פוסטים - two: פוסטים - status_count_before: שכתבו - unavailable_content: שרתים מוגבלים - unavailable_content_description: - domain: שרת - reason: סיבה - rejecting_media: 'קבצי מדיה משרתים אלה לא יעובדו או ישמרו, ותמונות ממוזערות לא יוצגו. נדרשת הקלקה ידנית על מנת לצפות בקובץ המקורי:' - rejecting_media_title: מדיה מסוננת - silenced: 'חצרוצים משרתים אלה יוסתרו מפידים ושיחות פומביים, ושום התראות לא ינתנו על אינטראקציות עם משתמשיהם, אלא אם הינך במעקב אחריהם:' - silenced_title: שרתים מוגבלים - suspended: 'שום מידע עם שרתים אלה לא יעובד, יישמר או יוחלף, מה שהופך כל תקשורת עם משתמשיהם לבלתי אפשרית:' - suspended_title: שרתים מושעים - unavailable_content_html: ככלל מסטודון מאפשר לך לצפות בתוכן ולתקשר עם משתמשים בכל שרת בפדרציה. אלו הם היוצאים מן הכלל שהוגדרו עבור שרת זה. - user_count_after: - many: משתמשים - one: משתמש - other: משתמשים - two: משתמשים - user_count_before: ביתם של what_is_mastodon: מה זה מסטודון? accounts: choices_html: 'בחירותיו/ה של %{name}:' @@ -760,9 +729,6 @@ he: users: למשתמשים מקומיים מחוברים domain_blocks_rationale: title: הצגת רציונל - hero: - desc_html: מוצגת בדף הראשי. מומלץ לפחות 600x100px. אם לא נבחר, מוצגת במקום תמונה מוקטנת מהשרת - title: תמונת גיבור mascot: desc_html: מוצגת בכל מיני דפים. מומלץ לפחות 293×205px. אם לא נבחר, מוצג במקום קמע ברירת המחדל title: תמונת קמע diff --git a/config/locales/hi.yml b/config/locales/hi.yml index 1bb333b48a..7678edc385 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -1,14 +1,5 @@ --- hi: - about: - about_this: विवरण - contact: संपर्क - status_count_after: - one: स्थिति - other: स्थितियां - unavailable_content_description: - domain: सर्वर - reason: कारण errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 10065520d1..c05b3dcd64 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -2,14 +2,10 @@ hr: about: about_mastodon_html: 'Društvena mreža budućnosti: bez oglasa, bez korporativnog nadzora, etički dizajn i decentralizacija! Budite u vlasništvu svojih podataka pomoću Mastodona!' - about_this: Dodatne informacije apps: Mobilne aplikacije - contact: Kontakt contact_missing: Nije postavljeno documentation: Dokumentacija source_code: Izvorni kôd - status_count_before: Koji su objavili - unavailable_content: Moderirani poslužitelji accounts: follow: Prati following: Praćenih diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 39a06d754b..c0607183d3 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -2,41 +2,14 @@ hu: about: about_mastodon_html: 'A jövő közösségi hálózata: Hirdetések és céges megfigyelés nélkül, etikus dizájnnal és decentralizációval! Legyél a saját adataid ura a Mastodonnal!' - about_this: Névjegy - administered_by: 'Adminisztrátor:' api: API apps: Mobil appok - contact: Kapcsolat contact_missing: Nincs megadva contact_unavailable: N/A documentation: Dokumentáció hosted_on: "%{domain} Mastodon szerver" - instance_actor_flash: | - Ez a fiók virtuális, magát a szervert reprezentálja, nem pedig konkrét - felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni, hacsak nem akarod a teljes szervert kitiltani, mely esetben a domain tiltásának használata javasolt. privacy_policy: Adatvédelmi szabályzat - rules: Szerverünk szabályai - rules_html: 'Alább látod azon követendő szabályok összefoglalóját, melyet be kell tartanod, ha szeretnél fiókot ezen a szerveren:' source_code: Forráskód - status_count_after: - one: bejegyzést írt - other: bejegyzést írt - status_count_before: Eddig - unavailable_content: Kimoderált szerverek - unavailable_content_description: - domain: Szerver - reason: 'Indok:' - rejecting_media: A szerverről származó médiafájlok nem kerülnek feldolgozásra, és nem jelennek meg miniatűrök, amelyek kézi átkattintást igényelnek a másik szerverre. - rejecting_media_title: Kiszűrt média - silenced: 'Az ezen szerverekről származó bejegyzéseket elrejtjük a nyilvános idővonalakról és beszélgetésekből, a rajtuk lévő felhasználók műveleteiről nem küldünk értesítéseket, hacsak nem követed őket:' - silenced_title: Elnémított szerverek - suspended: Nem fogsz tudni követni senkit ebből a szerverből, és nem kerül feldolgozásra vagy tárolásra a tőle származó adat, és nincs adatcsere. - suspended_title: Felfüggesztett szerverek - unavailable_content_html: A Mastodon általában mindenféle tartalomcserét és interakciót lehetővé tesz bármelyik szerverrel a fediverzumban. Ezek azok a kivételek, melyek a mi szerverünkön érvényben vannak. - user_count_after: - one: felhasználónk - other: felhasználónk - user_count_before: Összesen what_is_mastodon: Mi a Mastodon? accounts: choices_html: "%{name} választásai:" @@ -737,9 +710,6 @@ hu: users: Bejelentkezett helyi felhasználóknak domain_blocks_rationale: title: Mutasd meg az indokolást - hero: - desc_html: A kezdőoldalon látszik. Legalább 600x100px méret javasolt. Ha nincs beállítva, a szerver bélyegképet használjuk - title: Hősi kép mascot: desc_html: Több oldalon is látszik. Legalább 293×205px méret javasolt. Ha nincs beállítva, az alapértelmezett kabalát használjuk title: Kabala kép diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 135fd4255e..1c1bd5bbd3 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -2,38 +2,13 @@ hy: about: about_mastodon_html: Ապագայի սոցցանցը։ Ոչ մի գովազդ, ոչ մի կորպորատիվ վերահսկողութիւն, էթիկական դիզայն, եւ ապակենտրոնացում։ Մաստադոնում դու ես քո տուեալների տէրը։ - about_this: Մեր մասին - administered_by: Ադմինիստրատոր՝ api: API apps: Բջջային յաւելուածներ - contact: Կոնտակտ contact_missing: Սահմանված չէ contact_unavailable: Ոչինչ չկա documentation: Փաստաթղթեր hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում - instance_actor_flash: "Այս հաշիւ վիրտուալ դերասան է, օգտագործուում է սպասարկիչը, այլ ոչ անհատ օգտատիրոջը ներկայացնելու, համար։ Օգտագործուում է ֆեդերացիայի նպատակով, ու չպէտք է արգելափակուի, եթէ չէք ցանկանում արգելափակել ողջ հանգոյցը, որի դէպքում պէտք է օգտագործէք տիրոյթի արգելափակումը։ \n" - rules: Սերուերի կանոնները - rules_html: Այս սերուերում հաշիւ ունենալու համար անհրաժեշտ է պահպանել ստորեւ նշուած կանոնները։ source_code: Ելատեքստ - status_count_after: - one: գրառում - other: ստատուս - status_count_before: Որոնք արել են՝ - unavailable_content: Մոդերացուող սպասարկիչներ - unavailable_content_description: - domain: Սպասարկիչ - reason: Պատճառը՝ - rejecting_media: Այս հանգոյցների նիւթերը չեն մշակուի կամ պահուի։ Չեն ցուցադրուի նաև մանրապատկերները, պահանջելով ինքնուրոյն անցում դէպի բնօրինակ նիւթը։ - rejecting_media_title: Զտուած մեդիա - silenced: Այս սպասարկչի հրապարակումները թաքցուած են հանրային հոսքից եւ զրոյցներից, եւ ոչ մի ծանուցում չի գեներացուում նրանց օգտատէրերի գործողութիւններից, եթէ նրանց չէք հետեւում․ - silenced_title: Լռեցուած սպասարկիչներ - suspended: Ոչ մի տուեալ այս սպասարկիչներից չի գործարկուում, պահուում կամ փոխանակուում, կատարել որեւէ գործողութիւն կամ հաղորդակցութիւն այս սպասարկիչի օգտատէրերի հետ անհնար է․ - suspended_title: Կասեցուած սպասարկիչներ - unavailable_content_html: Մաստոդոնն ընդհանրապէս թոյլատրում է տեսնել բովանդակութիւնը եւ շփուել այլ դաշնեզերքի այլ հանգոյցների հետ։ Սրանք բացառութիւններն են, որոնք կիրառուել են հէնց այս հանգոյցի համար։ - user_count_after: - one: օգտատէր - other: օգտատերեր - user_count_before: Այստեղ են what_is_mastodon: Ի՞նչ է Մաստոդոնը accounts: choices_html: "%{name}-ի ընտրանի՝" @@ -429,8 +404,6 @@ hy: all: Բոլորին disabled: Ոչ մէկին title: Ցուցադրել տիրոյթը արգելափակումները - hero: - title: Հերոսի պատկեր profile_directory: desc_html: Թոյլատրել օգտատէրերին բացայայտուել title: Միացնել հաշուի մատեանը diff --git a/config/locales/id.yml b/config/locales/id.yml index 7501c612a1..58a78594d6 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -2,36 +2,13 @@ id: about: about_mastodon_html: Mastodon adalah sebuah jejaring sosial terbuka, open-sourcedesentralisasi dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam jejaring sosial dengan mudah. - about_this: Tentang server ini - administered_by: 'Dikelola oleh:' api: API apps: Aplikasi mobile - contact: Kontak contact_missing: Belum diset contact_unavailable: Tidak Tersedia documentation: Dokumentasi hosted_on: Mastodon dihosting di %{domain} - instance_actor_flash: "Akun ini adalah aktor virtual yang dipakai untuk merepresentasikan server, bukan pengguna individu. Ini dipakai untuk tujuan federasi dan jangan diblokir kecuali Anda ingin memblokir seluruh instansi, yang seharusnya Anda pakai blokir domain. \n" - rules: Aturan server - rules_html: 'Di bawah ini adalah ringkasan aturan yang perlu Anda ikuti jika Anda ingin memiliki akun di server Mastodon ini:' source_code: Kode sumber - status_count_after: - other: status - status_count_before: Yang telah menulis - unavailable_content: Konten tak tersedia - unavailable_content_description: - domain: Server - reason: Alasan - rejecting_media: 'Berkas media dari server ini tak akan diproses dan disimpan, dan tak akan ada gambar kecil yang ditampilkan, perlu klik manual utk menuju berkas asli:' - rejecting_media_title: Media yang disaring - silenced: 'Pos dari server ini akan disembunyikan dari linimasa publik dan percakapan, dan takkan ada notifikasi yang dibuat dari interaksi pengguna mereka, kecuali Anda mengikuti mereka:' - silenced_title: Server yang dibisukan - suspended: 'Takkan ada data yang diproses, disimpan, dan ditukarkan dari server ini, sehingga interaksi atau komunikasi dengan pengguna dari server ini tak mungkin dilakukan:' - suspended_title: Server yang ditangguhkan - unavailable_content_html: Mastodon umumnya mengizinkan Anda untuk melihat konten dan berinteraksi dengan pengguna dari server lain di fediverse. Ini adalah pengecualian yang dibuat untuk beberapa server. - user_count_after: - other: pengguna - user_count_before: Tempat bernaung bagi what_is_mastodon: Apa itu Mastodon? accounts: choices_html: 'Pilihan %{name}:' @@ -638,9 +615,6 @@ id: users: Ke pengguna lokal yang sudah login domain_blocks_rationale: title: Tampilkan alasan - hero: - desc_html: Ditampilkan di halaman depan. Direkomendasikan minimal 600x100px. Jika tidak diatur, kembali ke server gambar kecil - title: Gambar pertama mascot: desc_html: Ditampilkan di banyak halaman. Direkomendasikan minimal 293x205px. Jika tidak diatur, kembali ke maskot bawaan title: Gambar maskot diff --git a/config/locales/io.yml b/config/locales/io.yml index 03c36c4291..17b4e28014 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -2,41 +2,14 @@ io: about: about_mastodon_html: Mastodon esas gratuita, apertitkodexa sociala reto. Ol esas sencentra altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la sociala reto tote glate. - about_this: Pri ta instaluro - administered_by: 'Administresis da:' api: API apps: Smartfonsoftwari - contact: Kontaktar contact_missing: Ne fixigita contact_unavailable: Nula documentation: Dokumentajo hosted_on: Mastodon hostigesas che %{domain} - instance_actor_flash: 'Ca konto esas virtuala aganto quo uzesas por reprezentar la servilo e ne irga individuala uzanto. Ol uzesas por federskopo e ne debas restriktesar se vu ne volas obstruktar tota instanco, se ol esas la kaso, do vu debas uzar domenobstrukto. - - ' privacy_policy: Privatesguidilo - rules: Servilreguli - rules_html: 'La subo montras rezumo di reguli quon vu bezonas sequar se vu volas havar konto che ca servilo di Mastodon:' source_code: Fontkodexo - status_count_after: - one: posto - other: posti - status_count_before: Qua publikigis - unavailable_content: Jerata servili - unavailable_content_description: - domain: Servilo - reason: Motivo - rejecting_media: 'Mediifaili de ca servili ne procedagesas o retenesos, e imajeti ne montresos, do manuala klikto bezonesas a originala failo:' - rejecting_media_title: Filtrita medii - silenced: 'Posti de ca servili celesos en publika tempolinei e konversi, e notifiki ne facesos de oli uzantinteragi, se vu ne sequas oli:' - silenced_title: Limitizita servili - suspended: 'Informi de ca servili procedagesos o retenesos o interchanjesos, do irga interago o komuniko kun uzanti de ca servili esas neposibla:' - suspended_title: Restriktita servili - unavailable_content_html: Mastodon generale permisas on vidar kontenajo e interagar kun uzanti de irga altra servilo en fediverso. Existas eceptioni quo facesis che ca partikulara servilo. - user_count_after: - one: uzanto - other: uzanti - user_count_before: Hemo di what_is_mastodon: Quo esas Mastodon? accounts: choices_html: 'Selektaji di %{name}:' @@ -735,9 +708,6 @@ io: users: A enirinta lokala uzanti domain_blocks_rationale: title: Montrez motivo - hero: - desc_html: Montresas che chefpagino. Minime 600x100px rekomendesas. Se ne fixesis, ol retrouzas servilimajeto - title: Heroimajo mascot: desc_html: Montresas che multa chefpagino. Minime 293x205px rekomendesas. Se ne fixesis, ol retrouzas reprezentanto title: Reprezenterimajo diff --git a/config/locales/is.yml b/config/locales/is.yml index 724a641507..f7e420843c 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -2,41 +2,14 @@ is: about: about_mastodon_html: 'Samfélagsnet framtíðarinnar: Engar auglýsingar, ekkert eftirlit stórfyrirtækja, siðleg hönnun og engin miðstýring! Þú átt þín eigin gögn í Mastodon!' - about_this: Um hugbúnaðinn - administered_by: 'Stýrt af:' api: API-kerfisviðmót apps: Farsímaforrit - contact: Hafa samband contact_missing: Ekki skilgreint contact_unavailable: Ekki til staðar documentation: Hjálparskjöl hosted_on: Mastodon hýst á %{domain} - instance_actor_flash: | - Þessi aðgangur er sýndarnotandi sem er notaður til að tákna sjálfan vefþjóninn en ekki neinn einstakan notanda. - Tilgangur hans tengist virkni vefþjónasambandsins og ætti alls ekki að loka á hann nema að þú viljir útiloka allan viðkomandi vefþjón, en þá ætti frekar að útiloka sjálft lénið. privacy_policy: Persónuverndarstefna - rules: Reglur netþjónsins - rules_html: 'Hér fyrir neðan er yfirlit yfir þær reglur sem þú þarft að fara eftir ef þú ætlar að vera með notandaaðgang á þessum Mastodon-netþjóni:' source_code: Grunnkóði - status_count_after: - one: færsla - other: færslur - status_count_before: Sem stóðu fyrir - unavailable_content: Ekki tiltækt efni - unavailable_content_description: - domain: Vefþjónn - reason: Ástæða - rejecting_media: 'Myndefnisskrár frá þessum vefþjónum verða hvorki birtar né geymdar og engar smámyndir frá þeim birtar, sem krefst þess að smellt sé handvirkt til að nálgast upprunalegu skrárnar:' - rejecting_media_title: Síuð gögn - silenced: 'Færslur frá þessum vefþjónum verða faldar í opinberum tímalínum og samtölum, auk þess sem engar tilkynningar verða til þvið aðgerðir notendanna, nema ef þú fylgist með þeim:' - silenced_title: Þaggaðir netþjónar - suspended: 'Engin gögn frá þessum vefþjónum verða unnin, geymd eða skipst á, sem gerir samskipti við notendur frá þessum vefþjónum ómöguleg:' - suspended_title: Netþjónar í frysti - unavailable_content_html: Mastodon leyfir þér almennt að skoða og eiga við efni frá notendum frá hvaða vefþjóni sem er í vefþjónasambandinu. Þetta eru þær undantekningar sem hafa verið gerðar á þessum tiltekna vefþjóni. - user_count_after: - one: notanda - other: notendur - user_count_before: Hýsir what_is_mastodon: Hvað er Mastodon? accounts: choices_html: "%{name} hefur valið:" @@ -735,9 +708,6 @@ is: users: Til innskráðra staðværra notenda domain_blocks_rationale: title: Birta röksemdafærslu - hero: - desc_html: Birt á forsíðunni. Mælt með að hún sé a.m.k. 600×100 mynddílar. Þegar þetta er ekki stillt, er notuð smámynd netþjónsins - title: Aðalmynd mascot: desc_html: Birt á ýmsum síðum. Mælt með að hún sé a.m.k. 293×205 mynddílar. Þegar þetta er ekki stillt, er notuð smámynd netþjónsins title: Mynd af lukkudýri @@ -1400,6 +1370,8 @@ is: other: Annað posting_defaults: Sjálfgefin gildi við gerð færslna public_timelines: Opinberar tímalínur + privacy_policy: + title: Persónuverndarstefna reactions: errors: limit_reached: Hámarki mismunandi viðbragða náð diff --git a/config/locales/it.yml b/config/locales/it.yml index 42c5ede2a9..42581d8b30 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -2,41 +2,14 @@ it: about: about_mastodon_html: 'Il social network del futuro: niente pubblicità, niente controllo da parte di qualche azienda privata, design etico e decentralizzazione! Con Mastodon il proprietario dei tuoi dati sei tu!' - about_this: A proposito di questo server - administered_by: 'Amministrato da:' api: API apps: Applicazioni per dispositivi mobili - contact: Contatti contact_missing: Non impostato contact_unavailable: N/D documentation: Documentazione hosted_on: Mastodon ospitato su %{domain} - instance_actor_flash: | - Questo account è un attore virtuale utilizzato per rappresentare il server stesso e non un particolare utente. - È utilizzato per scopi di federazione e non dovrebbe essere bloccato a meno che non si voglia bloccare l'intera istanza: in questo caso si dovrebbe utilizzare un blocco di dominio. privacy_policy: Politica sulla Privacy - rules: Regole del server - rules_html: 'Di seguito è riportato un riassunto delle regole che devi seguire se vuoi avere un account su questo server di Mastodon:' source_code: Codice sorgente - status_count_after: - one: stato - other: stati - status_count_before: Che hanno pubblicato - unavailable_content: Server moderati - unavailable_content_description: - domain: Server - reason: 'Motivo:' - rejecting_media: I file multimediali di questo server non saranno elaborati e non verranno visualizzate miniature, che richiedono clic manuale sull'altro server. - rejecting_media_title: Media filtrati - silenced: 'I messaggi da questi server saranno nascosti nelle timeline e nelle conversazioni pubbliche, e nessuna notifica verrà generata dalle interazioni dei loro utenti, a meno che non li stai seguendo:' - silenced_title: Server silenziati - suspended: 'Nessun dato da questi server sarà elaborato, memorizzato o scambiato, rendendo impossibile qualsiasi interazione o comunicazione con gli utenti di questi server:' - suspended_title: Server sospesi - unavailable_content_html: Mastodon generalmente permette di visualizzare i contenuti e interagire con gli utenti di qualsiasi altro server nel fediverse. Queste sono le eccezioni che sono state create su questo specifico server. - user_count_after: - one: utente - other: utenti - user_count_before: Home di what_is_mastodon: Che cos'è Mastodon? accounts: choices_html: 'Suggerimenti da %{name}:' @@ -735,9 +708,6 @@ it: users: Agli utenti locali connessi domain_blocks_rationale: title: Mostra motivazione - hero: - desc_html: Mostrata nella pagina iniziale. Almeno 600x100 px consigliati. Se non impostata, sarà usato il thumbnail del server - title: Immagine dell'eroe mascot: desc_html: Mostrata su più pagine. Almeno 293×205px consigliati. Se non impostata, sarò usata la mascotte predefinita title: Immagine della mascotte diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 0493b22559..d12895f060 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -2,37 +2,14 @@ ja: about: about_mastodon_html: Mastodonは、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 - about_this: 詳細情報 - administered_by: '管理者:' api: API apps: アプリ - contact: 連絡先 contact_missing: 未設定 contact_unavailable: N/A documentation: ドキュメント hosted_on: Mastodon hosted on %{domain} - instance_actor_flash: "このアカウントはサーバーそのものを示す仮想的なもので、特定のユーザーを示すものではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックするときは、このアカウントをブロックせずに、ドメインブロックを使用してください。 \n" privacy_policy: プライバシーポリシー - rules: サーバーのルール - rules_html: 'このMastodonサーバーには、アカウントの所持にあたって従うべきルールが設定されています。概要は以下の通りです:' source_code: ソースコード - status_count_after: - other: 投稿 - status_count_before: 投稿数 - unavailable_content: 制限中のサーバー - unavailable_content_description: - domain: サーバー - reason: 制限理由 - rejecting_media: 'これらのサーバーからのメディアファイルは処理されず、保存や変換もされません。サムネイルも表示されません。表示するにはクリックしてそのサーバーに直接アクセスする必要があります:' - rejecting_media_title: メディアを拒否しているサーバー - silenced: 'これらのサーバーからの投稿は公開タイムラインと会話から隠されます。また該当するユーザーからの通知は相手をフォローしている場合を除き表示されません:' - silenced_title: サイレンス済みのサーバー - suspended: 'これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません:' - suspended_title: 停止済みのサーバー - unavailable_content_html: 通常Mastodonでは連合先のどんなサーバーのユーザーとでもやりとりできます。ただし次のサーバーには例外が設定されています。 - user_count_after: - other: 人 - user_count_before: ユーザー数 what_is_mastodon: Mastodonとは? accounts: choices_html: "%{name}によるおすすめ:" @@ -707,9 +684,6 @@ ja: users: ログイン済みローカルユーザーのみ許可 domain_blocks_rationale: title: コメントを表示 - hero: - desc_html: フロントページに表示されます。サイズは600x100px以上推奨です。未設定の場合、標準のサムネイルが使用されます - title: ヒーローイメージ mascot: desc_html: 複数のページに表示されます。サイズは293x205px以上推奨です。未設定の場合、標準のマスコットが使用されます title: マスコットイメージ diff --git a/config/locales/ka.yml b/config/locales/ka.yml index f1ce832d3a..f7e8206001 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -2,18 +2,13 @@ ka: about: about_mastodon_html: მასტოდონი ღია ვებ პროტოკოლებზე და უფასო, ღია პროგრამებზე დაფუძნებული სოციალური ქსელია. ის ისეთი დეცენტრალიზებულია როგორც ელ-ფოსტა. - about_this: შესახებ - administered_by: 'ადმინისტრატორი:' api: აპი apps: მობილური აპლიკაციები - contact: კონტაქტი contact_missing: არაა დაყენებული contact_unavailable: მიუწ. documentation: დოკუმენტაცია hosted_on: მასტოდონს მასპინძლობს %{domain} source_code: კოდი - status_count_before: ვინც უავტორა - user_count_before: სახლი what_is_mastodon: რა არის მასტოდონი? accounts: choices_html: "%{name}-ის არჩევნები:" @@ -224,9 +219,6 @@ ka: contact_information: email: ბიზნეს ელ-ფოსტა username: საკონტაქტო მომხმარებლის სახელი - hero: - desc_html: წინა გვერდზე გამოჩენილი. მინ. 600/100პიქს. რეკომენდირებული. როდესაც არაა დაყენებული, ჩნდება ინსტანციის პიქტოგრამა - title: გმირი სურათი peers_api_enabled: desc_html: დომენების სახელები რომლებსაც შეხვდა ეს ინსტანცია ფედივერსში title: გამოაქვეყნე აღმოჩენილი ინსტანციების სია diff --git a/config/locales/kab.yml b/config/locales/kab.yml index a202db2f85..1389426eb6 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -2,32 +2,13 @@ kab: about: about_mastodon_html: 'Azeṭṭa ametti n uzekka: Ulac deg-s asussen, ulac taɛessast n tsuddiwin fell-ak, yebna ɣef leqder d ttrebga, daɣen d akeslemmas! Akked Maṣṭudun, isefka-inek ad qimen inek!' - about_this: Γef - administered_by: 'Yettwadbel sɣur:' api: API apps: Isnasen izirazen - contact: Anermis contact_missing: Ur yettusbadu ara contact_unavailable: Wlac documentation: Amnir hosted_on: Maṣṭudun yersen deg %{domain} - rules: Ilugan n uqeddac source_code: Tangalt Taɣbalut - status_count_after: - one: n tsuffeɣt - other: n tsuffiɣin - status_count_before: I d-yessuffɣen - unavailable_content: Ulac agbur - unavailable_content_description: - domain: Aqeddac - reason: Taɣzent - silenced: 'Tisuffɣin ara d-yekken seg yiqeddacen-agi ad ttwaffrent deg tsuddmin tizuyaz d yidiwenniten, daɣen ur ttilin ara telɣa ɣef usedmer n yimseqdacen-nsen, skud ur ten-teḍfiṛeḍ ara:' - silenced_title: Imeẓla yeggugmen - unavailable_content_html: Maṣṭudun s umata yeḍmen-ak ad teẓreḍ agbur, ad tesdemreḍ akked yimseqdacen-nniḍen seg yal aqeddac deg fedivers. Ha-tent-an ɣur-k tsuraf i yellan deg uqeddac-agi. - user_count_after: - one: amseqdac - other: imseqdacen - user_count_before: Amagger n what_is_mastodon: D acu-t Maṣṭudun? accounts: choices_html: 'Afranen n %{name}:' diff --git a/config/locales/kk.yml b/config/locales/kk.yml index f1dd088297..090a1ae085 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -2,34 +2,12 @@ kk: about: about_mastodon_html: Mastodon - әлеуметтік желіге негізделген, тегін және веб протоколды, ашық кодты бағдарлама. Ол email сияқты орталығы жоқ құрылым. - about_this: Туралы - administered_by: 'Админ:' apps: Мобиль қосымшалар - contact: Байланыс contact_missing: Бапталмаған contact_unavailable: Белгісіз documentation: Құжаттама hosted_on: Mastodon орнатылған %{domain} доменінде - instance_actor_flash: | - Бұл аккаунт кез-келген жеке пайдаланушыны емес, сервердің өзін көрсету үшін қолданылатын виртуалды актер. - Ол федерация мақсаттарында қолданылады және сіз барлығын бұғаттағыңыз келмейінше, бұғатталмауы керек, бұл жағдайда сіз домен блогын қолданған жөн. source_code: Ашық коды - status_count_after: - one: жазба - other: жазба - status_count_before: Барлығы - unavailable_content: Қолжетімсіз контент - unavailable_content_description: - domain: Сервер - reason: Себеп - rejecting_media: 'Бұл серверлердегі медиа файлдар өңделмейді немесе сақталмайды және түпнұсқаға қолмен басуды қажет ететін нобайлар көрсетілмейді:' - silenced: 'Осы серверлердегі жазбалар жалпы уақыт кестесінде және сөйлесулерде жасырын болады және егер сіз оларды бақыламасаңыз, олардың пайдаланушыларының өзара әрекеттестігі туралы ешқандай хабарламалар жасалмайды:' - suspended: 'Бұл серверлерден ешқандай дерек өңделмейді, сақталмайды немесе алмаспайды, бұл серверлердегі пайдаланушылармен өзара әрекеттесуді немесе байланыс орнатуды мүмкін етпейді:' - unavailable_content_html: Мастодон, әдетте, мазмұнды көруге және кез-келген басқа сервердегі пайдаланушылармен қарым-қатынас жасауға мүмкіндік береді. Бұл нақты серверде жасалған ерекше жағдайлар. - user_count_after: - one: қолданушы - other: қолданушы - user_count_before: Желіде what_is_mastodon: Mastodon деген не? accounts: choices_html: "%{name} таңдаулары:" @@ -338,9 +316,6 @@ kk: users: Жергілікті қолданушыларға domain_blocks_rationale: title: Дәлелді көрсету - hero: - desc_html: Бастапқы бетінде көрсетіледі. Кем дегенде 600x100px ұсынылады. Орнатылмаған кезде, сервердің нобайына оралады - title: Қаһарман суреті mascot: desc_html: Displayed on multiple pages. Кем дегенде 293×205px рекоменделеді. When not set, falls back to default mascot title: Маскот суреті diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 8436841690..b07f1c41ca 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -2,39 +2,14 @@ ko: about: about_mastodon_html: 마스토돈은 오픈 소스 기반의 소셜 네트워크 서비스 입니다. 상용 플랫폼의 대체로서 분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 마스토돈 인스턴스를 만들 수 있으며, 아주 매끄럽게 소셜 네트워크에 참가할 수 있습니다. - about_this: 이 인스턴스에 대해서 - administered_by: '관리자:' api: API apps: 모바일 앱 - contact: 연락처 contact_missing: 미설정 contact_unavailable: 없음 documentation: 문서 hosted_on: "%{domain}에서 호스팅 되는 마스토돈" - instance_actor_flash: | - 이 계정은 가상의 actor로서 개인 사용자가 아닌 서버 자체를 나타냅니다. - 이것은 페더레이션을 목적으로 사용 되며 인스턴스 전체를 차단하려 하지 않는 이상 차단하지 않아야 합니다, 그 경우에는 도메인 차단을 사용하세요. privacy_policy: 개인정보 처리방침 - rules: 서버 규칙 - rules_html: '아래의 글은 이 마스토돈 서버에 계정이 있다면 따라야 할 규칙의 요약입니다:' source_code: 소스 코드 - status_count_after: - other: 개 - status_count_before: 게시물 수 - unavailable_content: 이용 불가능한 컨텐츠 - unavailable_content_description: - domain: 서버 - reason: 이유 - rejecting_media: 이 서버의 미디어 파일들은 처리되지 않고 썸네일또한 보이지 않게 됩니다. 수동으로 클릭하여 해당 서버로 가게 됩니다. - rejecting_media_title: 필터링 된 미디어 - silenced: 이 서버의 게시물은 작성자를 팔로우 한 경우에만 홈 피드에 나타나며 이를 제외한 어디에도 나타나지 않습니다. - silenced_title: 침묵 된 서버들 - suspended: 이 서버의 아무도 팔로우 할 수 없으며, 어떤 데이터도 처리되거나 저장 되지 않고 데이터가 교환 되지도 않습니다. - suspended_title: 금지된 서버들 - unavailable_content_html: 마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다. - user_count_after: - other: 명 - user_count_before: 사용자 수 what_is_mastodon: 마스토돈이란? accounts: choices_html: "%{name}의 추천:" @@ -146,7 +121,7 @@ ko: no_role_assigned: 할당된 역할 없음 not_subscribed: 구독하지 않음 pending: 심사 대기 - perform_full_suspension: 정지시키기 + perform_full_suspension: 정지 previous_strikes: 이전의 처벌들 previous_strikes_description_html: other: 이 계정은 %{count} 번의 처벌이 있었습니다. @@ -176,7 +151,7 @@ ko: security_measures: only_password: 암호만 password_and_2fa: 암호와 2단계 인증 - sensitive: 민감함 + sensitive: 민감함 강제 sensitized: 민감함으로 설정됨 shared_inbox_url: 공유된 inbox URL show: @@ -721,9 +696,6 @@ ko: users: 로그인 한 사용자에게 domain_blocks_rationale: title: 사유 보여주기 - hero: - desc_html: 프론트페이지에 표시 됩니다. 최소 600x100픽셀을 권장합니다. 만약 설정되지 않았다면, 서버의 썸네일이 사용 됩니다 - title: 히어로 이미지 mascot: desc_html: 여러 페이지에서 보여집니다. 최소 293x205px을 추천합니다. 설정 되지 않은 경우, 기본 마스코트가 사용 됩니다 title: 마스코트 이미지 @@ -1000,6 +972,9 @@ ko: email_below_hint_html: 아래의 이메일 계정이 올바르지 않을 경우, 여기서 변경하고 새 확인 메일을 받을 수 있습니다. email_settings_hint_html: 확인 메일이 %{email}로 보내졌습니다. 이메일 주소가 올바르지 않은 경우, 계정 설정에서 변경하세요. title: 설정 + sign_up: + preamble: 이 마스토돈 서버의 계정을 통해, 네트워크에 속한 다른 사람들을, 그들이 어떤 서버에 있든 팔로우 할 수 있습니다. + title: "%{domain}에 가입하기 위한 정보들을 입력하세요." status: account_status: 계정 상태 confirming: 이메일 확인 과정이 완료되기를 기다리는 중. @@ -1371,6 +1346,8 @@ ko: other: 기타 posting_defaults: 게시물 기본설정 public_timelines: 공개 타임라인 + privacy_policy: + title: 개인정보 정책 reactions: errors: limit_reached: 다른 리액션 제한에 도달했습니다 @@ -1652,8 +1629,10 @@ ko: suspend: 계정 정지 됨 welcome: edit_profile_action: 프로필 설정 + edit_profile_step: 프로필 사진을 업로드하고, 사람들에게 표시 될 이름을 바꾸는 것 등으로 당신의 프로필을 커스텀 할 수 있습니다. 사람들이 당신을 팔로우 하기 전에 리뷰를 거치게 할 수도 있습니다. explanation: 시작하기 전에 몇가지 팁들을 준비했습니다 final_action: 포스팅 시작하기 + final_step: '게시물을 올리세요! 팔로워가 없더라도, 공개 게시물들은 다른 사람에게 보여질 수 있습니다, 예를 들자면 로컬이나 연합 타임라인 등이 있습니다. 사람들에게 자신을 소개하고 싶다면 #툿친소 해시태그를 이용해보세요.' full_handle: 당신의 풀 핸들 full_handle_hint: 이것을 당신의 친구들에게 알려주면 다른 서버에서 팔로우 하거나 메시지를 보낼 수 있습니다. subject: 마스토돈에 오신 것을 환영합니다 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index cea5033bb6..df2b7e65d3 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -2,41 +2,14 @@ ku: about: about_mastodon_html: 'Tora civakî ya pêşerojê: Ne reklam, ne çavdêriya pargîdanî, sêwirana exlaqî, û desentralîzasyon! Bi Mastodon re bibe xwediyê daneyên xwe!' - about_this: Derbar - administered_by: 'Tê bi rêvebirin ji aliyê:' api: API apps: Sepana mobîl - contact: Têkilî contact_missing: Nehate sazkirin contact_unavailable: N/A documentation: Pelbend hosted_on: Mastodon li ser %{domain} tê pêşkêşkirin - instance_actor_flash: 'Ev ajimêr şanogereke aşopî ye ji bo rajekar were naskirin tê bikaranîn ne ajimêra kesî ye. Ji bo armanca giştî dixebite û divê neye astengkirin heya ku te xwest hemû mînakan asteng bikî, di vir de ku tu navpereke astengiyê bi kar bînî. - - ' privacy_policy: Politîka taybetiyê - rules: Rêbazên rajekar - rules_html: 'Heger tu bixwazî ajimêrekî li ser rajekarê mastodon vebikî, li jêrê de kurtasî ya qaîdeyên ku tu guh bidî heye:' source_code: Çavkaniya Kodî - status_count_after: - one: şandî - other: şandî - status_count_before: Hatin weşan - unavailable_content: Rajekarên li hev kirî - unavailable_content_description: - domain: Rajekar - reason: Sedem - rejecting_media: 'Pelên medyayê yên ji van rajekaran nayên pêvajoyî kirin an tomarkirin, û tu dîmenek nayên xuyakirin, ku pêdivî ye ku bi desta pêlêkirina pelika rasteqîn hebe:' - rejecting_media_title: Medyayên parzûnkirî - silenced: 'Şandiyên ji van rajekaran dê di demnameyên û axaftinên gelemperî de bêne veşartin, û heya ku tu wan neşopînî dê ji çalakiyên bikarhênerên wan agahdariyek çênebe:' - silenced_title: Rajekarên sînor kirî - suspended: 'Dê tu daneya ji van rajekaran neyê berhev kirin, tomarkirin an jî guhertin, ku têkilî an danûstendinek bi bikarhênerên van rajekaran re tune dike:' - suspended_title: Rajekarên rawestî - unavailable_content_html: Mastodon bi gelemperî dihêle ku tu naverokê bibînî û bi bikarhênerên ji rajekareke din a li fendiverse re têkilî dayne. Ev awaretyên ku li ser vê rajekara taybetî hatine çêkirin ev in. - user_count_after: - one: bikarhêner - other: bikarhêner - user_count_before: Serrûpel what_is_mastodon: Mastodon çi ye? accounts: choices_html: 'Hilbijartina %{name}:' @@ -737,9 +710,6 @@ ku: users: Ji bo bikarhênerên herêmî yên xwe tomar kirine domain_blocks_rationale: title: Sedemê nîşan bike - hero: - desc_html: Li ser rûpela pêşîn tê xuyakirin. Bi kêmanî 600x100px tê pêşniyarkirin. Dema ku neyê sazkirin, vedigere ser dîmena wêneya piçûk a rajekar - title: Wêneya lehengê mascot: desc_html: Li ser rûpela pêşîn tê xuyakirin. Bi kêmanî 293×205px tê pêşniyarkirin. Dema ku neyê sazkirin, vedigere ser dîmena wêneya piçûk a maskot ya heyî title: Wêneya maskot diff --git a/config/locales/kw.yml b/config/locales/kw.yml index 62d535b1b0..4be328237b 100644 --- a/config/locales/kw.yml +++ b/config/locales/kw.yml @@ -1,7 +1,5 @@ --- kw: - about: - about_this: A-dro dhe accounts: roles: group: Bagas diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 8148b65393..235059a238 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -2,16 +2,11 @@ lt: about: about_mastodon_html: Mastodon, tai socialinis tinklas pagrįstas atviro kodo programavimu, ir atvirais web protokolais. Visiškai nemokamas. Ši sistema decantrilizuota kaip jūsų elektroninis paštas. - about_this: Apie - administered_by: 'Administruoja:' apps: Mobilioji Aplikacija - contact: Kontaktai contact_missing: Nenustatyta documentation: Dokumentacija hosted_on: Mastodon palaikomas naudojantis %{domain} talpinimu source_code: Šaltinio kodas - status_count_before: Autorius - user_count_before: Namai what_is_mastodon: Kas tai, Mastodon? accounts: choices_html: "%{name} pasirinkimai:" @@ -261,9 +256,6 @@ lt: custom_css: desc_html: Pakeisk išvaizdą su CSS užkraunamu kiekviename puslapyje title: Asmeninis CSS - hero: - desc_html: Rodomas pagrindiniame puslapyje. Bent 600x100px rekomenduojama. Kai nenustatyta, renkamasi numatytą serverio nuotrauką - title: Herojaus nuotrauka mascot: desc_html: Rodoma keleta puslapių. Bent 293×205px rekomenduoja. Kai nenustatyą, renkamasi numatytą varianta title: Talismano nuotrauka diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 632ad0e840..507e906a73 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -2,43 +2,14 @@ lv: about: about_mastodon_html: 'Nākotnes sociālais tīkls: bez reklāmām, bez korporatīvās uzraudzības, ētisks dizains un decentralizācija! Pārvaldi savus datus ar Mastodon!' - about_this: Par - administered_by: 'Administrē:' api: API apps: Mobilās lietotnes - contact: Kontakts contact_missing: Nav uzstādīts contact_unavailable: N/A documentation: Dokumentācija hosted_on: Mastodon mitināts %{domain} - instance_actor_flash: | - Šis konts ir virtuāls aktieris, ko izmanto, lai pārstāvētu pašu serveri, nevis atsevišķu lietotāju. - To izmanto apvienošanas nolūkos, un to nedrīkst bloķēt, ja vien nevēlies bloķēt visu instanci, un tādā gadījumā tev jāizmanto domēna bloķēšana. privacy_policy: Privātuma Politika - rules: Servera noteikumi - rules_html: 'Tālāk ir sniegts noteikumu kopsavilkums, kas jāievēro, ja vēlies izveidot kontu šajā Mastodon serverī:' source_code: Pirmkods - status_count_after: - one: ziņa - other: ziņas - zero: nav - status_count_before: Kurš publicējis - unavailable_content: Moderētie serveri - unavailable_content_description: - domain: Serveris - reason: Iemesls - rejecting_media: 'Multivides faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:' - rejecting_media_title: Filtrēta multivide - silenced: 'Ziņas no šiem serveriem tiks paslēptas publiskās ziņu lentās un sarunās, un no lietotāju mijiedarbības netiks ģenerēti paziņojumi, ja vien tu tiem nesekosi:' - silenced_title: Ierobežoti serveri - suspended: 'Nekādi dati no šiem serveriem netiks apstrādāti, uzglabāti vai apmainīti, padarot neiespējamu jebkādu mijiedarbību vai saziņu ar lietotājiem no šiem serveriem:' - suspended_title: Apturēti serveri - unavailable_content_html: Mastodon parasti ļauj apskatīt saturu un mijiedarboties ar lietotājiem no jebkura cita federācijas servera. Šie ir izņēmumi, kas veikti šajā konkrētajā serverī. - user_count_after: - one: lietotājs - other: lietotāji - zero: lietotājI - user_count_before: Mājās uz what_is_mastodon: Kas ir Mastodon? accounts: choices_html: "%{name} izvēles:" @@ -751,9 +722,6 @@ lv: users: Vietējiem reģistrētiem lietotājiem domain_blocks_rationale: title: Rādīt pamatojumus - hero: - desc_html: Parādīts pirmajā lapā. Ieteicams vismaz 600x100 pikseļus. Ja tas nav iestatīts, atgriežas servera sīktēlā - title: Varoņa attēls mascot: desc_html: Parādīts vairākās lapās. Ieteicams vismaz 293 × 205 pikseļi. Ja tas nav iestatīts, tiek atgriezts noklusējuma talismans title: Talismana attēls diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 2ec8f0889c..db09164f68 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -1,20 +1,12 @@ --- ml: about: - about_this: കുറിച്ച് api: എപിഐ apps: മൊബൈൽ ആപ്പുകൾ - contact: ബന്ധപ്പെടുക contact_missing: സജ്ജമാക്കിയിട്ടില്ല contact_unavailable: ലഭ്യമല്ല documentation: വിവരണം source_code: സോഴ്സ് കോഡ് - status_count_before: ആരാൽ എഴുതപ്പെട്ടു - unavailable_content: ലഭ്യമല്ലാത്ത ഉള്ളടക്കം - unavailable_content_description: - domain: സെർവർ - reason: കാരണം - suspended_title: താൽക്കാലികമായി നിർത്തിവെച്ച സെർവറുകൾ what_is_mastodon: എന്താണ് മാസ്റ്റഡോൺ? accounts: follow: പിന്തുടരുക diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 3bc0ed68ba..5b32aa09db 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -2,38 +2,13 @@ ms: about: about_mastodon_html: 'Rangkaian sosial masa hadapan: Tiada iklan, tiada pengawasan korporat, reka bentuk beretika, dan desentralisasi! Miliki data anda dengan Mastodon!' - about_this: Perihal - administered_by: 'Ditadbir oleh:' api: API apps: Aplikasi mudah alih - contact: Hubungi kami contact_missing: Tidak ditetapkan contact_unavailable: Tidak tersedia documentation: Pendokumenan hosted_on: Mastodon dihoskan di %{domain} - instance_actor_flash: | - Akaun ini ialah pelaku maya yang digunakan untuk mewakili pelayan itu sendiri dan bukannya mana-mana pengguna individu. - Ia digunakan untuk tujuan persekutuan dan tidak patut disekat melainkan anda ingin menyekat keseluruhan tika, yang mana anda sepatutnya gunakan sekatan domain. - rules: Peraturan pelayan - rules_html: 'Di bawah ini ringkasan peraturan yang anda perlu ikuti jika anda ingin mempunyai akaun di pelayan Mastodon yang ini:' source_code: Kod sumber - status_count_after: - other: hantaran - status_count_before: Siapa terbitkan - unavailable_content: Pelayan disederhanakan - unavailable_content_description: - domain: Pelayan - reason: Sebab - rejecting_media: 'Fail-fail media daripada pelayan-pelayan ini tidak akan diproses atau disimpan, dan tiada gambar kecil yang akan dipaparkan, memerlukan anda untuk klik fail asal:' - rejecting_media_title: Media ditapis - silenced: 'Hantaran daripada pelayan-pelayan ini akan disembunyikan di garis masa dan perbualan awam, dan tiada pemberitahuan yang akan dijana daripada interaksi pengguna mereka, melainkan anda mengikuti mereka:' - silenced_title: Pelayan didiamkan - suspended: 'Tiada data daripada pelayan-pelayan ini yang akan diproses, disimpan atau ditukar, membuatkan sebarang interaksi atau perhubungan dengan pengguna daripada pelayan-pelayan ini menjadi mustahil:' - suspended_title: Pelayan digantung - unavailable_content_html: Mastodon secara amnya membenarkan anda melihat kandungan daripada dan berinteraksi dengan pengguna daripada mana-mana pelayan dalam dunia persekutuan. Ini pengecualian yang telah dilakukan di pelayan ini secara khususnya. - user_count_after: - other: pengguna - user_count_before: Rumah bagi what_is_mastodon: Apakah itu Mastodon? accounts: choices_html: 'Pilihan %{name}:' diff --git a/config/locales/nl.yml b/config/locales/nl.yml index f5bd4acc38..b61cae2511 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -2,39 +2,14 @@ nl: about: about_mastodon_html: Mastodon is een sociaal netwerk dat gebruikt maakt van open webprotocollen en vrije software. Het is net zoals e-mail gedecentraliseerd. - about_this: Over deze server - administered_by: 'Beheerd door:' api: API apps: Mobiele apps - contact: Contact contact_missing: Niet ingesteld contact_unavailable: n.v.t documentation: Documentatie hosted_on: Mastodon op %{domain} - instance_actor_flash: "Dit account is een virtuel actor dat wordt gebruikt om de server zelf te vertegenwoordigen en is geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden geblokkeerd, tenzij je de hele server wilt blokkeren. In zo'n geval dien je echter een domeinblokkade te gebruiken. \n" privacy_policy: Privacybeleid - rules: Serverregels - rules_html: 'Hieronder vind je een samenvatting van de regels die je op deze Mastodon-server moet opvolgen:' source_code: Broncode - status_count_after: - one: toot - other: berichten - status_count_before: Zij schreven - unavailable_content: Gemodereerde servers - unavailable_content_description: - domain: Server - reason: 'Reden:' - rejecting_media: 'Mediabestanden van deze server worden niet verwerkt en er worden geen thumbnails getoond. Je moet handmatig naar deze server doorklikken om de mediabestanden te kunnen bekijken:' - rejecting_media_title: Mediabestanden geweigerd - silenced: Berichten van deze server worden nergens weergegeven, behalve op jouw eigen starttijdlijn wanneer je het account volgt. - silenced_title: Beperkte servers - suspended: Je bent niet in staat om iemand van deze server te volgen, en er worden geen gegevens van deze server verwerkt of opgeslagen, en met deze server uitgewisseld. - suspended_title: Opgeschorte servers - unavailable_content_html: Met Mastodon kun je in het algemeen berichten bekijken van en communiceren met gebruikers van elke andere server in de fediverse. Dit zijn de uitzonderingen die door deze server zijn gemaakt en expliciet alleen hier gelden. - user_count_after: - one: gebruiker - other: gebruikers - user_count_before: Thuisbasis van what_is_mastodon: Wat is Mastodon? accounts: choices_html: 'Aanbevelingen van %{name}:' @@ -669,9 +644,6 @@ nl: users: Aan ingelogde lokale gebruikers domain_blocks_rationale: title: Motivering tonen - hero: - desc_html: Wordt op de voorpagina getoond. Tenminste 600x100px aanbevolen. Wanneer dit niet is ingesteld wordt de thumbnail van de Mastodonserver getoond - title: Hero-afbeelding mascot: desc_html: Wordt op meerdere pagina's weergegeven. Tenminste 293×205px aanbevolen. Wanneer dit niet is ingesteld wordt de standaardmascotte getoond title: Mascotte-afbeelding diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 96296deb75..620d87deb2 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -2,35 +2,13 @@ nn: about: about_mastodon_html: 'Framtidas sosiale nettverk: Ingen annonsar, ingen verksemder som overvaker deg, etisk design og desentralisering! Eig idéane dine med Mastodon!' - about_this: Om oss - administered_by: 'Administrert av:' api: API apps: Mobilappar - contact: Kontakt contact_missing: Ikkje sett contact_unavailable: I/T documentation: Dokumentasjon hosted_on: "%{domain} er vert for Mastodon" - instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" - rules: Tenarreglar - rules_html: 'Nedanfor er eit samandrag av reglar du må fylgje dersom du vil ha ein konto på denne Mastodontenaren:' source_code: Kjeldekode - status_count_before: Som skreiv - unavailable_content: Utilgjengeleg innhald - unavailable_content_description: - domain: Sørvar - reason: Grunn - rejecting_media: 'Mediafiler fra disse tjenerne vil ikke bli behandlet eller lagret, og ingen miniatyrbilder vil bli vist, noe som vil kreve manuell klikking for å besøke den opprinnelige filen:' - rejecting_media_title: Filtrert media - silenced: 'Innlegg frå desse tenarane vert gøymde frå offentlege tidsliner og samtalar, og det kjem ingen varsel frå samhandlingane til brukarane deira, med mindre du fylgjer dei:' - silenced_title: Stilnede tjenere - suspended: 'Ingen data frå desse tenarane vert handsama, lagra eller sende til andre, som gjer det umogeleg å samhandla eller kommunisera med andre brukarar frå desse tenarane:' - suspended_title: Suspenderte tjenere - unavailable_content_html: Mastodon gjev deg som regel lov til å sjå innhald og samhandla med brukarar frå alle andre tenarar i fødiverset. Dette er unnataka som er valde for akkurat denne tenaren. - user_count_after: - one: brukar - other: brukarar - user_count_before: Her bur what_is_mastodon: Kva er Mastodon? accounts: choices_html: "%{name} sine val:" @@ -487,9 +465,6 @@ nn: users: Til lokale brukarar som er logga inn domain_blocks_rationale: title: Vis kvifor - hero: - desc_html: Vises på forsiden. Minst 600×100px er anbefalt. Dersom dette ikke er valgt, faller det tilbake på tjenerens miniatyrbilde - title: Heltebilete mascot: desc_html: Vist på flere sider. Minst 293×205px er anbefalt. Dersom det ikke er valgt, faller det tilbake til standardmaskoten title: Maskotbilete diff --git a/config/locales/no.yml b/config/locales/no.yml index 09d0d57044..f0871ac379 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -2,38 +2,13 @@ 'no': about: about_mastodon_html: Mastodon er et sosialt nettverk laget med fri programvare. Et desentralisert alternativ til kommersielle plattformer. Slik kan det unngå risikoene ved å ha et enkelt selskap som monopoliserer din kommunikasjon. Velg en tjener du stoler på — uansett hvilken du velger så kan du kommunisere med alle andre. Alle kan kjøre sin egen Mastodon og delta sømløst i det sosiale nettverket. - about_this: Om - administered_by: 'Administrert av:' api: API apps: Mobilapper - contact: Kontakt contact_missing: Ikke innstilt contact_unavailable: Ikke tilgjengelig documentation: Dokumentasjon hosted_on: Mastodon driftet på %{domain} - instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n" - rules: Server regler - rules_html: 'Nedenfor er et sammendrag av reglene du må følge om du vil ha en konto på denne serveren av Mastodon:' source_code: Kildekode - status_count_after: - one: innlegg - other: statuser - status_count_before: Som skrev - unavailable_content: Utilgjengelig innhold - unavailable_content_description: - domain: Tjener - reason: Årsak - rejecting_media: 'Mediafiler fra disse tjenerne vil ikke bli behandlet eller lagret, og ingen miniatyrbilder vil bli vist, noe som vil kreve manuell klikking for å besøke den opprinnelige filen:' - rejecting_media_title: Filtrert media - silenced: 'Innlegg fra disse tjenerne vil bli skjult fra offentlige tidslinjer og samtaler, og ingen varslinger vil bli generert fra disse brukernes samhandlinger, med mindre du følger dem:' - silenced_title: Stilnede tjenere - suspended: 'Ingen data fra disse tjenerne vil bli behandlet, lagret, eller utvekslet, noe som vil gjøre enhver samhandling eller kommunikasjon med brukere fra disse tjenerne umulig:' - suspended_title: Suspenderte tjenere - unavailable_content_html: Mastodon lar deg vanligvis se innhold fra og samhandle med brukere fra enhver annen tjener i strømiverset. Dette er unntakene som har blitt gjort på denne spesifikke tjeneren. - user_count_after: - one: bruker - other: brukere - user_count_before: Her bor what_is_mastodon: Hva er Mastodon? accounts: choices_html: "%{name} sine anbefalte:" @@ -482,9 +457,6 @@ users: Til lokale brukere som er logget inn domain_blocks_rationale: title: Vis grunnlaget - hero: - desc_html: Vises på forsiden. Minst 600×100px er anbefalt. Dersom dette ikke er valgt, faller det tilbake på tjenerens miniatyrbilde - title: Heltebilde mascot: desc_html: Vist på flere sider. Minst 293×205px er anbefalt. Dersom det ikke er valgt, faller det tilbake til standardmaskoten title: Maskotbilde diff --git a/config/locales/oc.yml b/config/locales/oc.yml index ef7f285ebb..b310f02eb9 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -2,33 +2,13 @@ oc: about: about_mastodon_html: Mastodon es un malhum social bastit amb de protocòls liures e gratuits. Es descentralizat coma los corrièls. - about_this: A prepaus d’aquesta instància - administered_by: 'Administrat per :' api: API apps: Aplicacions per mobil - contact: Contacte contact_missing: Pas parametrat contact_unavailable: Pas disponible documentation: Documentacion hosted_on: Mastodon albergat sus %{domain} - rules: Règlas del servidor source_code: Còdi font - status_count_after: - one: estatut - other: estatuts - status_count_before: qu’an escrich - unavailable_content: Contengut pas disponible - unavailable_content_description: - domain: Servidor - reason: 'Motiu :' - rejecting_media: 'Los fichièrs mèdias d’aquestes servidors estant seràn pas tractats o gardats e pas cap de miniatura serà pas mostrada, demanda de clicar sul fichièr original :' - rejecting_media_title: Mèdias filtrats - silenced_title: Servidors muts - suspended_title: Servidors suspenduts - user_count_after: - one: utilizaire - other: utilizaires - user_count_before: Ostal de what_is_mastodon: Qu’es Mastodon ? accounts: choices_html: 'Recomandacions de %{name} :' @@ -428,9 +408,6 @@ oc: users: Als utilizaires locals connectats domain_blocks_rationale: title: Mostrar lo rasonament - hero: - desc_html: Mostrat en primièra pagina. Almens 600x100px recomandat. S’es pas configurat l’imatge del servidor serà mostrat - title: Imatge de l’eròi mascot: desc_html: Mostrat sus mantun pagina. Almens 293×205px recomandat. S’es pas configurat, mostrarem la mascòta per defaut title: Imatge de la mascòta diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 52516740d3..88e664400b 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -2,45 +2,14 @@ pl: about: about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform. - about_this: O tej instancji - administered_by: 'Administrowana przez:' api: API apps: Aplikacje - contact: Kontakt contact_missing: Nie ustawiono contact_unavailable: Nie dotyczy documentation: Dokumentacja hosted_on: Mastodon uruchomiony na %{domain} - instance_actor_flash: | - To konto jest wirtualnym nadawcą, używanym do reprezentacji serwera, a nie jakiegokolwiek użytkownika. - Jest używane w celu federowania i nie powinno być blokowane, chyba że chcesz zablokować całą instację, w takim przypadku użyj blokady domeny. privacy_policy: Polityka prywatności - rules: Regulamin serwera - rules_html: 'Poniżej znajduje się podsumowanie zasad, których musisz przestrzegać, jeśli chcesz mieć konto na tym serwerze Mastodona:' source_code: Kod źródłowy - status_count_after: - few: wpisów - many: wpisów - one: wpisu - other: wpisów - status_count_before: Są autorami - unavailable_content: Niedostępne treści - unavailable_content_description: - domain: Serwer - reason: Powód - rejecting_media: 'Pliki multimedialne z tych serwerów nie będą przetwarzane ani przechowywane, ani ich miniaturki nie będą wyświetlane, wymuszając ręczne przejście do oryginalnego pliku:' - rejecting_media_title: Filtrowana zawartość multimedialna - silenced: 'Posty z tych serwerów będą ukryte na publicznych osiach czasu i konwersacjach, a powiadomienia z interakcji ich użytkowników nie będą generowane, chyba że ich obserwujesz:' - silenced_title: Wyciszone serwery - suspended: 'Żadne dane z tych serwerów nie będą przetwarzane, przechowywane ani wymieniane, sprawiając że jakakolwiek interakcja czy komunikacja z użytkownikami tych serwerów będzie niemożliwa:' - suspended_title: Zawieszone serwery - unavailable_content_html: Normalnie Mastodon pozwala ci przeglądać treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. To są wyjątki, które zostały stworzone na tym konkretnym serwerze. - user_count_after: - few: użytkowników - many: użytkowników - one: użytkownik - other: użytkowników - user_count_before: Z serwera korzysta what_is_mastodon: Czym jest Mastodon? accounts: choices_html: 'Polecani przez %{name}:' @@ -767,9 +736,6 @@ pl: users: Zalogowanym lokalnym użytkownikom domain_blocks_rationale: title: Pokaż uzasadnienia - hero: - desc_html: Wyświetlany na stronie głównej. Zalecany jest rozmiar przynajmniej 600x100 pikseli. Jeżeli nie ustawiony, zostanie użyta miniatura serwera - title: Obraz bohatera mascot: desc_html: Wyświetlany na wielu stronach. Zalecany jest rozmiar przynajmniej 293px × 205px. Jeżeli nie ustawiono, zostanie użyta domyślna title: Obraz maskotki diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index acd715fa0f..6f789bc4ed 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -2,40 +2,13 @@ pt-BR: about: about_mastodon_html: 'A rede social do futuro: Sem anúncios, sem vigilância corporativa, com design ético e muita descentralização! Possua seus próprios dados com o Mastodon!' - about_this: Sobre - administered_by: 'Administrado por:' api: API apps: Aplicativos - contact: Contato contact_missing: Não definido contact_unavailable: Não disponível documentation: Documentação hosted_on: Instância Mastodon em %{domain} - instance_actor_flash: | - Esta conta é um ator virtual usado para representar o próprio servidor e não qualquer usuário individual. - É usado para propósitos de federação e não deve ser bloqueado a menos que queira bloquear toda a instância, o que no caso devia usar um bloqueio de domínio. - rules: Regras do servidor - rules_html: 'Abaixo está um resumo das regras que você precisa seguir se você quer ter uma conta neste servidor do Mastodon:' source_code: Código-fonte - status_count_after: - one: toot - other: toots - status_count_before: Autores de - unavailable_content: Conteúdo indisponível - unavailable_content_description: - domain: Instância - reason: 'Motivo:' - rejecting_media: 'Arquivos de mídia destas instâncias não serão processados ou armazenados e nenhuma miniatura será exibida, exigindo que o usuário abra o arquivo original manualmente:' - rejecting_media_title: Mídia filtrada - silenced: 'Toots destas instâncias serão ocultos em linhas e conversas públicas, e nenhuma notificação será gerada a partir das interações dos seus usuários, a menos que esteja sendo seguido:' - silenced_title: Servidores silenciados - suspended: 'Você não será capaz de seguir ninguém destas instâncias, e nenhum dado delas será processado, armazenado ou trocado:' - suspended_title: Servidores banidos - unavailable_content_html: Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico. - user_count_after: - one: usuário - other: usuários - user_count_before: Casa de what_is_mastodon: O que é Mastodon? accounts: choices_html: 'Sugestões de %{name}:' @@ -709,9 +682,6 @@ pt-BR: users: Para usuários locais logados domain_blocks_rationale: title: Mostrar motivo - hero: - desc_html: Aparece na página inicial. Recomendado ao menos 600x100px. Se não estiver definido, a miniatura da instância é usada no lugar - title: Imagem de capa mascot: desc_html: Mostrado em diversas páginas. Recomendado ao menos 293×205px. Quando não está definido, o mascote padrão é mostrado title: Imagem do mascote diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 672584d4f0..1995702319 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -2,41 +2,14 @@ pt-PT: about: about_mastodon_html: Mastodon é uma rede social baseada em protocolos abertos da web e software livre e gratuito. É descentralizado como e-mail. - about_this: Sobre esta instância - administered_by: 'Administrado por:' api: API apps: Aplicações móveis - contact: Contacto contact_missing: Não configurado contact_unavailable: n.d. documentation: Documentação hosted_on: Mastodon em %{domain} - instance_actor_flash: | - Esta conta é um actor virtual usado para representar a própria instância e não um utilizador individual. - É usada para motivos de federação e não deve ser bloqueada a não ser que que queira bloquear a instância por completo. Se for esse o caso, deverá usar o bloqueio de domínio. privacy_policy: Política de Privacidade - rules: Regras da instância - rules_html: 'Abaixo está um resumo das regras que precisa seguir se pretender ter uma conta nesta instância do Mastodon:' source_code: Código fonte - status_count_after: - one: publicação - other: publicações - status_count_before: Que fizeram - unavailable_content: Conteúdo indisponível - unavailable_content_description: - domain: Instância - reason: Motivo - rejecting_media: 'Arquivos de media destas instâncias não serão processados ou armazenados, e nenhuma miniatura será exibida, o que requer que o utilizador clique e abra o arquivo original manualmente:' - rejecting_media_title: Media filtrada - silenced: 'Publicações destas instâncias serão ocultas em linhas do tempo e conversas públicas, e nenhuma notificação será gerada a partir das interações dos seus utilizadores, a menos que você os esteja a seguir:' - silenced_title: Servidores silenciados - suspended: 'Nenhum dado dessas instâncias será processado, armazenado ou trocado, tornando qualquer interação ou comunicação com os utilizadores dessas instâncias impossível:' - suspended_title: Servidores suspensos - unavailable_content_html: Mastodon geralmente permite que você veja o conteúdo e interaja com utilizadores de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico. - user_count_after: - one: utilizador - other: utilizadores - user_count_before: Casa para what_is_mastodon: O que é o Mastodon? accounts: choices_html: 'escolhas de %{name}:' @@ -735,9 +708,6 @@ pt-PT: users: Para utilizadores locais que se encontrem autenticados domain_blocks_rationale: title: Mostrar motivo - hero: - desc_html: Apresentado na primeira página. Pelo menos 600x100px recomendados. Quando não é definido, é apresentada a miniatura da instância - title: Imagem Hero mascot: desc_html: Apresentada em múltiplas páginas. Pelo menos 293x205px recomendados. Quando não é definida, é apresentada a mascote predefinida title: Imagem da mascote diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 1c05834e2b..bcd385b6b5 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -2,42 +2,13 @@ ro: about: about_mastodon_html: 'Rețeaua socială a viitorului: Fără reclame, fără supraveghere corporativă, design etic și descentralizare! Dețineți-vă datele cu Mastodon!' - about_this: Despre - administered_by: 'Administrat de:' api: API apps: Aplicații mobile - contact: Contact contact_missing: Nesetat contact_unavailable: Indisponibil documentation: Documentație hosted_on: Mastodon găzduit de %{domain} - instance_actor_flash: | - Acest cont este un actor virtual folosit pentru a reprezenta serverul în sine și nu un utilizator individual. - Acesta este folosit în scopuri de federație și nu ar trebui blocat decât dacă doriți să blocați întreaga instanță, în ce caz trebuie să utilizaţi un bloc de domeniu. - rules: Regulile serverului - rules_html: 'Mai jos este un rezumat al regulilor pe care trebuie să le urmezi dacă vrei să ai un cont pe acest server de Mastodon:' source_code: Cod sursă - status_count_after: - few: stări - one: stare - other: de stări - status_count_before: Care au postat - unavailable_content: Conținut indisponibil - unavailable_content_description: - domain: Server - reason: Motiv - rejecting_media: 'Fişierele media de pe aceste servere nu vor fi procesate sau stocate şi nici o miniatură nu va fi afişată, necesitând click manual la fişierul original:' - rejecting_media_title: Fișiere media filtrate - silenced: 'Postările de pe aceste servere vor fi ascunse în cronologii și conversații publice, și nici o notificare nu va fi generată de interacțiunile utilizatorilor lor decât dacă le urmărești:' - silenced_title: Servere limitate - suspended: 'Nici o informație de pe aceste servere nu va fi procesată, stocată sau schimbată, ceea ce face imposibilă orice interacțiune sau comunicare cu utilizatorii de pe aceste servere:' - suspended_title: Servere suspendate - unavailable_content_html: Mastodon vă permite în general să vedeți conținutul din orice alt server și să interacționați cu utilizatorii din rețea. Acestea sunt excepţiile care au fost făcute pe acest server. - user_count_after: - few: utilizatori - one: utilizator - other: de utilizatori - user_count_before: Casa a what_is_mastodon: Ce este Mastodon? accounts: choices_html: 'Alegerile lui %{name}:' diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 330e586a49..ec600f8d8a 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -2,45 +2,14 @@ ru: about: about_mastodon_html: 'Социальная сеть будущего: никакой рекламы, слежки корпорациями, этичный дизайн и децентрализация! С Mastodon ваши данные под вашим контролем.' - about_this: Об этом узле - administered_by: 'Администратор узла:' api: API apps: Приложения - contact: Связаться contact_missing: не указан contact_unavailable: неизв. documentation: Документация hosted_on: Вы получили это сообщение, так как зарегистрированы на %{domain} - instance_actor_flash: | - Эта учетная запись является виртуальным персонажем, используемым для представления самого сервера, а не какого-либо пользователя. - Используется для целей федерации и не должен быть заблокирован, если вы не хотите заблокировать всю инстанцию, вместо этого лучше использовать доменную блокировку. privacy_policy: Политика конфиденциальности - rules: Правила сервера - rules_html: 'Ниже приведена сводка правил, которых вам нужно придерживаться, если вы хотите иметь учётную запись на этом сервере Мастодона:' source_code: Исходный код - status_count_after: - few: поста - many: постов - one: пост - other: поста - status_count_before: И опубликовано - unavailable_content: Недоступный контент - unavailable_content_description: - domain: Сервер - reason: Причина - rejecting_media: 'Медиафайлы с этих серверов не будут обработаны или сохранены. Их миниатюры не будут отображаться и вам придётся вручную нажимать на исходный файл:' - rejecting_media_title: Отфильтрованные файлы - silenced: 'Посты с этих серверов будут скрыты из публичных лент и обсуждений, как и не будут рассылаться уведомления касательно действий тамошних пользователей, если, конечно, вы не подписаны на них:' - silenced_title: Заглушенные серверы - suspended: 'Обмен, хранение и обработка данных с этих серверов будут прекращены, что сделает невозможным взаимодействие или общение с пользователями с этих серверов:' - suspended_title: Заблокированные пользователи - unavailable_content_html: 'Mastodon в основном позволяет просматривать содержимое и взаимодействовать с другими пользователями любых серверов в федерации. Вот исключения, сделанные конкретно для этого сервера:' - user_count_after: - few: пользователя - many: пользователей - one: пользователь - other: пользователя - user_count_before: Здесь расположились what_is_mastodon: Что такое Mastodon? accounts: choices_html: "%{name} рекомендует:" @@ -721,9 +690,6 @@ ru: users: Залогиненным локальным пользователям domain_blocks_rationale: title: Показать обоснование - hero: - desc_html: Отображается на главной странице. Рекомендуется разрешение не менее 600х100px. Если не установлено, используется изображение узла - title: Баннер узла mascot: desc_html: Отображается на различных страницах. Рекомендуется размер не менее 293×205px. Если ничего не выбрано, используется персонаж по умолчанию title: Персонаж сервера diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 45d81cf88b..231057e12e 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -2,40 +2,13 @@ sc: about: about_mastodon_html: 'Sa rete sotziale de su benidore: sena publitzidade, sena vigilàntzia corporativa, disinnu èticu e detzentralizatzione! Sias mere de is datos tuos cun Mastodon!' - about_this: Informatziones - administered_by: 'Amministradu dae:' api: API apps: Aplicatziones mòbiles - contact: Cuntatu contact_missing: No cunfiguradu contact_unavailable: No a disponimentu documentation: Documentatzione hosted_on: Mastodon allogiadu in %{domain} - instance_actor_flash: 'Custu contu est un''atore virtuale impreadu pro rapresentare su pròpiu serbidore, no est un''utente individuale. Benit impreadu pro punnas de federatzione e no ddu dias dèpere blocare si non boles blocare su domìniu intreu, e in cussu casu dias dèpere impreare unu blocu de domìniu. - - ' - rules: Règulas de su serbidore - rules_html: 'Depes sighire is règulas imbenientes si boles tènnere unu contu in custu serbidore de Mastodon:' source_code: Còdighe de orìgine - status_count_after: - one: istadu - other: istados - status_count_before: Atributzione de - unavailable_content: Serbidores moderados - unavailable_content_description: - domain: Serbidore - reason: Resone - rejecting_media: 'Is documentos multimediales de custos serbidores no ant a èssere protzessados o sarvados e peruna miniadura at a èssere ammustrada, ca tenent bisòngiu de unu clic manuale in su documentu originale:' - rejecting_media_title: Cuntenutos multimediales filtrados - silenced: 'Is messàgios dae custos serbidores ant a èssere cuados in is lìnias de tempus e is arresonadas pùblicas, e no at a èssere generada peruna notìfica dae is interatziones de is utentes, francu chi nde sias sighende:' - silenced_title: Serbidores a sa muda - suspended: 'Perunu datu de custos serbidores at a èssere protzessadu, immagasinadu o cuncambiadu; est impossìbile duncas cale si siat interatzione o comunicatzione cun is utentes de custos serbidores:' - suspended_title: Serbidores suspèndidos - unavailable_content_html: Mastodon ti permitit de bìdere su cuntenutu de utentes de cale si siat àteru serbidore de su fediversu. Custas sunt etzetziones fatas in custu serbidore ispetzìficu. - user_count_after: - one: utente - other: utentes - user_count_before: Allogiadu dae what_is_mastodon: Ite est Mastodon? accounts: choices_html: 'Sèberos de %{name}:' @@ -500,9 +473,6 @@ sc: users: Pro utentes locales in lìnia domain_blocks_rationale: title: Ammustra sa resone - hero: - desc_html: Ammustradu in sa pàgina printzipale. Cussigiadu a su mancu 600x100px. Si no est cunfiguradu, at a èssere ammustradu cussu de su serbidore - title: Immàgine de eroe mascot: desc_html: Ammustrada in vàrias pàginas. Cussigiadu a su mancu 293x205px. Si no est cunfiguradu, torra a su personàgiu predefinidu title: Immàgine de su personàgiu diff --git a/config/locales/si.yml b/config/locales/si.yml index ae80323f39..41999e6a23 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -2,46 +2,19 @@ si: about: about_mastodon_html: 'අනාගත සමාජ ජාලය: දැන්වීම් නැත, ආයතනික නිරීක්ෂණ නැත, සදාචාරාත්මක සැලසුම් සහ විමධ්‍යගත කිරීම! Mastodon සමඟ ඔබේ දත්ත අයිති කරගන්න!' - about_this: පිලිබඳව - administered_by: 'පරිපාලනය කරන්නේ:' api: යෙ.ක්‍ර. මු. (API) apps: ජංගම යෙදුම් - contact: සබඳතාව contact_missing: සකස් කර නැත contact_unavailable: අ/නොවේ documentation: ප්‍රලේඛනය hosted_on: Mastodon %{domain}හි සත්කාරකත්වය දරයි - instance_actor_flash: | - මෙම ගිණුම සේවාදායකයම නියෝජනය කිරීමට භාවිතා කරන අතථ්‍ය නළුවෙකු වන අතර කිසිදු තනි පරිශීලකයෙකු නොවේ. - එය ෆෙඩරේෂන් අරමුණු සඳහා භාවිතා කරන අතර ඔබට සම්පූර්ණ අවස්ථාව අවහිර කිරීමට අවශ්‍ය නම් මිස අවහිර නොකළ යුතුය, මෙම අවස්ථාවේදී ඔබ ඩොමේන් බ්ලොක් එකක් භාවිතා කළ යුතුය. - rules: සේවාදායකයේ නීති - rules_html: 'ඔබට Mastodon හි මෙම සේවාදායකයේ ගිණුමක් ඇති කර ගැනීමට අවශ්‍ය නම් ඔබ අනුගමනය කළ යුතු නීති වල සාරාංශයක් පහත දැක්වේ:' source_code: මූල කේතය - status_count_after: - one: තත්ත්වය - other: තත්ත්වයන් - status_count_before: කවුද පළ කළේ - unavailable_content: මධ්‍යස්ථ සේවාදායකයන් - unavailable_content_description: - domain: සේවාදායකය - reason: හේතුව - rejecting_media: 'මෙම සේවාදායකයන්ගෙන් මාධ්‍ය ගොනු සැකසීම හෝ ගබඩා කිරීම සිදු නොවනු ඇති අතර, මුල් ගොනුව වෙත අතින් ක්ලික් කිරීම අවශ්‍ය වන, සිඟිති රූ නොපෙන්වනු ඇත:' - rejecting_media_title: පෙරූ මාධ්‍ය - silenced: 'මෙම සේවාදායකයන්ගෙන් පළ කිරීම් පොදු කාලරේඛා සහ සංවාදවල සඟවනු ඇති අතර, ඔබ ඒවා අනුගමනය කරන්නේ නම් මිස, ඔවුන්ගේ පරිශීලක අන්තර්ක්‍රියාවලින් කිසිදු දැනුම්දීමක් ජනනය නොවේ:' - silenced_title: සීමාසහිත සේවාදායක - suspended: 'මෙම සේවාදායකයන්ගෙන් කිසිදු දත්තයක් සැකසීම, ගබඩා කිරීම හෝ හුවමාරු කිරීම සිදු නොවනු ඇත, මෙම සේවාදායකයන්ගෙන් පරිශීලකයින් සමඟ කිසියම් අන්තර්ක්‍රියා හෝ සන්නිවේදනයක් කළ නොහැක:' - suspended_title: අත්හිටවූ සේවාදායකයන් - unavailable_content_html: Mastodon සාමාන්‍යයෙන් ඔබට ෆෙඩිවර්ස් හි වෙනත් ඕනෑම සේවාදායකයකින් අන්තර්ගතය බැලීමට සහ පරිශීලකයින් සමඟ අන්තර් ක්‍රියා කිරීමට ඉඩ සලසයි. මෙම විශේෂිත සේවාදායකයේ සිදු කර ඇති ව්‍යතිරේක මේවාය. - user_count_after: - one: පරිශීලක - other: පරිශීලකයින් - user_count_before: ගෙදරට what_is_mastodon: මාස්ටඩන් යනු කුමක්ද? accounts: choices_html: "%{name}හි තේරීම්:" endorsements_hint: ඔබට වෙබ් අතුරු මුහුණතෙන් ඔබ අනුගමනය කරන පුද්ගලයින් අනුමත කළ හැකි අතර, ඔවුන් මෙහි පෙන්වනු ඇත. featured_tags_hint: ඔබට මෙහි සංදර්ශන කෙරෙන විශේෂිත හැෂ් ටැග් විශේෂාංගගත කළ හැක. - follow: අනුගමනය කරන්න + follow: අනුගමනය followers: one: අනුගාමිකයා other: අනුගාමිකයින් @@ -59,10 +32,10 @@ si: pin_errors: following: ඔබට අනුමත කිරීමට අවශ්‍ය පුද්ගලයා ඔබ දැනටමත් අනුගමනය කරමින් සිටිය යුතුය posts: - one: තැපැල් - other: තනතුරු - posts_tab_heading: තනතුරු - posts_with_replies: පළ කිරීම් සහ පිළිතුරු + one: ලිපිය + other: ලිපි + posts_tab_heading: ලිපි + posts_with_replies: පළ කිරීම් හා පිළිතුරු roles: bot: ස්වයං ක්‍රමලේඛය group: සමූහය @@ -179,7 +152,7 @@ si: targeted_reports: වෙනත් අය විසින් වාර්තා කරන ලදී silence: සීමාව silenced: සීමාසහිත - statuses: තත්ත්වයන් + statuses: ලිපි strikes: පෙර වැඩ වර්ජන subscribe: දායක වන්න suspend: අත්හිටුවන්න @@ -443,7 +416,7 @@ si: follow_recommendations: description_html: "නව පරිශීලකයින්ට රසවත් අන්තර්ගතයන් ඉක්මනින් සොයා ගැනීමට උපකාර වන නිර්දේශ අනුගමනය කරන්න. පෞද්ගලීකරණය කළ පසු විපරම් නිර්දේශ සැකසීමට තරම් පරිශීලකයෙකු අන් අය සමඟ අන්තර් ක්‍රියා කර නොමැති විට, ඒ වෙනුවට මෙම ගිණුම් නිර්දේශ කෙරේ. දී ඇති භාෂාවක් සඳහා ඉහළම මෑත කාලීන නියැලීම් සහ ඉහළම දේශීය අනුගාමික සංඛ්‍යාව සහිත ගිණුම් මිශ්‍රණයකින් ඒවා දෛනික පදනමින් නැවත ගණනය කෙරේ." language: භාෂාව සඳහා - status: තත්ත්වය + status: තත්‍වය suppress: අනුගමනය නිර්දේශය යටපත් කරන්න suppressed: යටපත් කළා title: නිර්දේශ අනුගමනය කරන්න @@ -484,7 +457,7 @@ si: instance_languages_dimension: ඉහළම භාෂා instance_media_attachments_measure: ගබඩා කළ මාධ්‍ය ඇමුණුම් instance_reports_measure: ඔවුන් ගැන වාර්තා - instance_statuses_measure: ගබඩා කළ තනතුරු + instance_statuses_measure: ගබඩා කළ ලිපි delivery: all: සියල්ල clear: බෙදා හැරීමේ දෝෂ ඉවත් කරන්න @@ -520,7 +493,7 @@ si: filter: all: සියල්ල available: පවතින - expired: කල් ඉකුත් වී ඇත + expired: ඉකුත් වී ඇත title: පෙරහන title: ඇරයුම් ip_blocks: @@ -532,10 +505,10 @@ si: '15778476': මාස 6 '2629746': මාස 1 '31556952': අවුරුදු 1 - '86400': දින 1 + '86400': දවස් 1 '94670856': අවුරුදු 3 new: - title: නව අ.ජා. කෙ.(IP) නීතියක් සාදන්න + title: නව අ.ජා.කෙ. නීතියක් සාදන්න no_ip_block_selected: IP රීති කිසිවක් තෝරා නොගත් බැවින් වෙනස් කර නැත title: අ.ජා. කෙ. (IP) නීති relationships: @@ -649,9 +622,6 @@ si: users: පුරනය වී ඇති දේශීය පරිශීලකයින් වෙත domain_blocks_rationale: title: තාර්කිකත්වය පෙන්වන්න - hero: - desc_html: මුල් පිටුවේ ප්‍රදර්ශනය කෙරේ. අවම වශයෙන් 600x100px නිර්දේශිතයි. සකසා නොමැති විට, සේවාදායක සිඟිති රුව වෙත ආපසු වැටේ - title: වීර රූපය mascot: desc_html: පිටු කිහිපයක ප්‍රදර්ශනය කෙරේ. අවම වශයෙන් 293×205px නිර්දේශිතයි. සකසා නොමැති විට, පෙරනිමි මැස්කොට් වෙත ආපසු වැටේ title: මැස්කොට් රූපය @@ -737,7 +707,7 @@ si: sidekiq_process_check: message_html: "%{value} පෝලිම්(ය) සඳහා Sidekiq ක්‍රියාවලියක් ක්‍රියාත්මක නොවේ. කරුණාකර ඔබේ Sidekiq වින්‍යාසය සමාලෝචනය කරන්න" tags: - review: තත්ත්වය සමාලෝචනය කරන්න + review: තත්‍වය සමාලෝචනය updated_msg: Hashtag සැකසුම් සාර්ථකව යාවත්කාලීන කරන ලදී title: පරිපාලනය trends: @@ -821,7 +791,7 @@ si: new: නව webhook rotate_secret: රහස කරකවන්න secret: අත්සන් කිරීමේ රහස - status: තත්ත්වය + status: තත්‍වය webhook: වෙබ්හුක් admin_mailer: new_appeal: @@ -893,7 +863,7 @@ si: delete_account_html: ඔබට ඔබගේ ගිණුම මකා දැමීමට අවශ්‍ය නම්, ඔබට මෙතැනින් ඉදිරියට යා හැක. තහවුරු කිරීම සඳහා ඔබෙන් අසනු ඇත. description: prefix_invited_by_user: "@%{name} ඔබට Mastodon හි මෙම සේවාදායකයට සම්බන්ධ වීමට ආරාධනා කරයි!" - prefix_sign_up: අදම Mastodon හි ලියාපදිංචි වන්න! + prefix_sign_up: අදම මාස්ටඩන් හි ලියාපදිංචි වන්න! suffix: ගිණුමක් සමඟ, ඔබට ඕනෑම Mastodon සේවාදායකයකින් සහ තවත් බොහෝ දේ භාවිතා කරන්නන් සමඟ පුද්ගලයින් අනුගමනය කිරීමට, යාවත්කාලීන කිරීම් පළ කිරීමට සහ පණිවිඩ හුවමාරු කර ගැනීමට හැකි වනු ඇත! didnt_get_confirmation: තහවුරු කිරීමේ උපදෙස් ලැබුණේ නැද්ද? dont_have_your_security_key: ඔබගේ ආරක්ෂක යතුර නොමැතිද? @@ -907,7 +877,7 @@ si: migrate_account: වෙනත් ගිණුමකට යන්න migrate_account_html: ඔබට මෙම ගිණුම වෙනත් එකකට හරවා යැවීමට අවශ්‍ය නම්, ඔබට එය මෙහි වින්‍යාසගත කළ හැක. or_log_in_with: හෝ සමඟින් පිවිසෙන්න - register: ලියාපදිංචි වන්න + register: ලියාපදිංචිය registration_closed: "%{instance} නව සාමාජිකයින් පිළිගන්නේ නැත" resend_confirmation: තහවුරු කිරීමේ උපදෙස් නැවත යවන්න reset_password: මුරපදය නැවත සකසන්න @@ -930,14 +900,14 @@ si: already_following: ඔබ දැනටමත් මෙම ගිණුම අනුගමනය කරයි already_requested: ඔබ දැනටමත් එම ගිණුමට අනුගමනය ඉල්ලීමක් යවා ඇත error: අවාසනාවකට, දුරස්ථ ගිණුම සෙවීමේදී දෝෂයක් ඇති විය - follow: අනුගමනය කරන්න + follow: අනුගමනය follow_request: 'ඔබ පහත ඉල්ලීමක් යවා ඇත:' following: 'සාර්ථකත්වය! ඔබ දැන් පහත දැක්වේ:' post_follow: close: හෝ ඔබට මෙම කවුළුව වසාදැමිය හැකිය. return: පරිශීලකගේ පැතිකඩ පෙන්වන්න web: වියමන ට යන්න - title: "%{acct}අනුගමනය කරන්න" + title: "%{acct} අනුගමනය" challenge: confirm: ඉදිරියට hint_html: "ඉඟිය: අපි ඉදිරි පැය සඳහා නැවත ඔබගේ මුරපදය ඔබෙන් නොඉල්ලමු." @@ -1082,7 +1052,7 @@ si: generic: all: සියල්ල changes_saved_msg: වෙනස්කම් සාර්ථකව සුරකින ලදී! - copy: පිටපත් + copy: පිටපතක් delete: මකන්න none: කිසිවක් නැත order_by: විසින් ඇණවුම් කරන්න @@ -1105,7 +1075,7 @@ si: success: ඔබගේ දත්ත සාර්ථකව උඩුගත කර ඇති අතර නියමිත වේලාවට සැකසෙනු ඇත types: blocking: අවහිර කිරීමේ ලැයිස්තුව - bookmarks: පොත් යොමු කරන්න + bookmarks: පොත් යොමු domain_blocking: වසම් අවහිර කිරීමේ ලැයිස්තුව following: පහත ලැයිස්තුව muting: නිහඬ කිරීමේ ලැයිස්තුව @@ -1139,7 +1109,7 @@ si: login_activities: authentication_methods: otp: ද්වි-සාධක සත්‍යාපන යෙදුම - password: මුර පදය + password: මුරපදය sign_in_token: ඊමේල් ආරක්ෂක කේතය webauthn: ආරක්ෂක යතුරු description_html: ඔබ හඳුනා නොගත් ක්‍රියාකාරකම් ඔබ දුටුවහොත්, ඔබේ මුරපදය වෙනස් කිරීම සහ ද්වි-සාධක සත්‍යාපනය සක්‍රීය කිරීම සලකා බලන්න. @@ -1233,9 +1203,9 @@ si: format: "%n%u" units: billion: බී - million: එම් + million: ද.ල. quadrillion: ප්‍රශ්නය - thousand: කේ + thousand: ද. trillion: ටී otp_authentication: code_hint: තහවුරු කිරීමට ඔබගේ සත්‍යාපන යෙදුම මගින් ජනනය කරන ලද කේතය ඇතුළු කරන්න @@ -1247,7 +1217,7 @@ si: wrong_code: ඇතුළත් කළ කේතය අවලංගුයි! සේවාදායක වේලාව සහ උපාංග වේලාව නිවැරදිද? pagination: newer: අලුත් - next: සඳහා + next: ඊළඟ older: වැඩිහිටි prev: පෙර truncate: "…" @@ -1286,7 +1256,7 @@ si: remove_selected_domains: තෝරාගත් වසම් වලින් සියලුම අනුගාමිකයින් ඉවත් කරන්න remove_selected_followers: තෝරාගත් අනුගාමිකයින් ඉවත් කරන්න remove_selected_follows: තෝරාගත් පරිශීලකයින් අනුගමනය නොකරන්න - status: ගිණුමේ තත්ත්වය + status: ගිණුමේ තත්‍වය remote_follow: acct: ඔබට ක්‍රියා කිරීමට අවශ්‍ය ඔබගේ username@domain ඇතුලත් කරන්න missing_resource: ඔබගේ ගිණුම සඳහා අවශ්‍ය යළි-යොමුවීම් URL එක සොයා ගැනීමට නොහැකි විය @@ -1344,7 +1314,7 @@ si: adobe_air: ඇඩෝබි එයාර් android: ඇන්ඩ්‍රොයිඩ් blackberry: බ්ලැක්බෙරි - chrome_os: ක්‍රෝම්ස් + chrome_os: ක්‍රෝම් ඕඑස් firefox_os: ෆයර්ෆොක්ස් ඕඑස් ios: අයිඕඑස් linux: ලිනක්ස් @@ -1367,10 +1337,10 @@ si: delete: ගිණුම මකා දැමීම development: සංවර්ධනය edit_profile: පැතිකඩ සංස්කරණය - export: දත්ත නිර්යාත + export: දත්ත නිර්යාතය featured_tags: විශේෂාංගගත හැෂ් ටැග් - import: ආයත කරන්න - import_and_export: ආයාත සහ නිර්යාත + import: ආයාතය + import_and_export: ආයාත හා නිර්යාත migrate: ගිණුම් සංක්‍රමණය notifications: දැනුම්දීම් preferences: මනාප @@ -1426,7 +1396,7 @@ si: direct: සෘජු private: අනුගාමිකයින්-පමණි private_long: අනුගාමිකයින්ට පමණක් පෙන්වන්න - public: ප්රසිද්ධ + public: ප්‍රසිද්ධ public_long: හැමෝටම පේනවා unlisted: ලැයිස්තුගත නොකළ unlisted_long: සෑම කෙනෙකුටම දැකිය හැක, නමුත් පොදු කාලරාමුවෙහි ලැයිස්තුගත කර නොමැත @@ -1443,8 +1413,8 @@ si: keep_direct_hint: ඔබගේ සෘජු පණිවිඩ කිසිවක් මකන්නේ නැත keep_media: මාධ්‍ය ඇමුණුම් සමඟ පළ කිරීම් තබා ගන්න keep_media_hint: මාධ්‍ය ඇමුණුම් ඇති ඔබේ පළ කිරීම් කිසිවක් මකන්නේ නැත - keep_pinned: පින් කළ පළ කිරීම් තබා ගන්න - keep_pinned_hint: ඔබගේ පින් කළ පළ කිරීම් කිසිවක් මකන්නේ නැත + keep_pinned: ඇමිණූ ලිපි තබාගන්න + keep_pinned_hint: ඔබ ඇමිණූ ලිපි කිසිවක් නොමැකෙයි keep_polls: ඡන්ද තබා ගන්න keep_polls_hint: ඔබගේ ඡන්ද විමසීම් කිසිවක් මකන්නේ නැත keep_self_bookmark: ඔබ පිටු සලකුණු කළ පළ කිරීම් තබා ගන්න @@ -1466,9 +1436,9 @@ si: min_reblogs: අඩුම තරමේ පෝස්ට් බූස්ට් කරගෙන තියාගන්න min_reblogs_hint: අඩුම තරමින් මෙම වාර ගණන වැඩි කර ඇති ඔබගේ පළ කිරීම් කිසිවක් මකා නොදමන්න. බූස්ට් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න stream_entries: - pinned: පින් කළ පළ කිරීම + pinned: ඇමිණූ ලිපිය reblogged: ඉහල නැංවීය - sensitive_content: සංවේදී අන්තර්ගතය + sensitive_content: සංවේදී අන්තර්ගතයකි strikes: errors: too_late: මෙම වර්ජනයට අභියාචනයක් ඉදිරිපත් කිරීමට ප්‍රමාද වැඩියි diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 0d712bf5f2..757a589dbf 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -73,6 +73,10 @@ de: actions: hide: Den gefilterten Inhalt vollständig ausblenden, als hätte er nie existiert warn: Den gefilterten Inhalt hinter einer Warnung ausblenden, die den Filtertitel beinhaltet + form_admin_settings: + backups_retention_period: Behalte generierte Benutzerarchive für die angegebene Anzahl von Tagen. + content_cache_retention_period: Beiträge von anderen Servern werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht. Dies kann eventuell nicht rückgängig gemacht werden. + media_cache_retention_period: Heruntergeladene Mediendateien werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht und bei Bedarf erneut heruntergeladen. form_challenge: current_password: Du betrittst einen sicheren Bereich imports: @@ -207,6 +211,10 @@ de: actions: hide: Komplett ausblenden warn: Mit einer Warnung ausblenden + form_admin_settings: + backups_retention_period: Aufbewahrungsfrist für Benutzerarchive + content_cache_retention_period: Aufbewahrungsfrist für Inhalte im Cache + media_cache_retention_period: Aufbewahrungsfrist für den Medien-Cache interactions: must_be_follower: Benachrichtigungen von Profilen blockieren, die mir nicht folgen must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index f59c06687a..80d5b83fe4 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -73,6 +73,10 @@ es-MX: actions: hide: Ocultar completamente el contenido filtrado, comportándose como si no existiera warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro + form_admin_settings: + backups_retention_period: Mantener los archivos de usuario generados durante el número de días especificado. + content_cache_retention_period: Las publicaciones de otros servidores se eliminarán después del número especificado de días cuando se establezca un valor positivo. Esto puede ser irreversible. + media_cache_retention_period: Los archivos multimedia descargados se eliminarán después del número especificado de días cuando se establezca un valor positivo, y se redescargarán bajo demanda. form_challenge: current_password: Estás entrando en un área segura imports: @@ -207,6 +211,10 @@ es-MX: actions: hide: Ocultar completamente warn: Ocultar con una advertencia + form_admin_settings: + backups_retention_period: Período de retención del archivo de usuario + content_cache_retention_period: Período de retención de caché de contenido + media_cache_retention_period: Período de retención de caché multimedia interactions: must_be_follower: Bloquear notificaciones de personas que no te siguen must_be_following: Bloquear notificaciones de personas que no sigues diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index f68c2c9a6b..c0c460f1da 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -207,6 +207,9 @@ fr: actions: hide: Cacher complètement warn: Cacher derrière un avertissement + form_admin_settings: + content_cache_retention_period: Durée de rétention du contenu dans le cache + media_cache_retention_period: Durée de rétention des médias dans le cache interactions: must_be_follower: Bloquer les notifications des personnes qui ne vous suivent pas must_be_following: Bloquer les notifications des personnes que vous ne suivez pas diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 3b050eeee3..9a7bd4cf4b 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -73,6 +73,10 @@ gl: actions: hide: Agochar todo o contido filtrado, facer coma se non existise warn: Agochar o contido filtrado tras un aviso que conteña o nome do filtro + form_admin_settings: + backups_retention_period: Gardar os arquivos xerados pola usuaria durante o número de días indicado. + content_cache_retention_period: As publicacións desde outros servidores serán eliminados despois do número de días indicados ao poñer un valor positivo. É unha acción irreversible. + media_cache_retention_period: Os ficheiros multimedia descargados serán eliminados despois do número de días indicado ao establecer un valor positivo, e voltos a descargar baixo petición. form_challenge: current_password: Estás entrando nun área segura imports: @@ -207,6 +211,10 @@ gl: actions: hide: Agochar completamente warn: Agochar tras un aviso + form_admin_settings: + backups_retention_period: Período de retención do arquivo da usuaria + content_cache_retention_period: Período de retención da caché do contido + media_cache_retention_period: Período de retención da caché multimedia interactions: must_be_follower: Bloquear as notificacións de non-seguidoras must_be_following: Bloquea as notificacións de persoas que non segues diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index bdc9c03803..326e261687 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -73,6 +73,10 @@ is: actions: hide: Fela síað efni algerlega, rétt eins og það sé ekki til staðar warn: Fela síað efni á bakvið aðvörun sem tekur fram titil síunnar + form_admin_settings: + backups_retention_period: Halda safni notandans í tiltekinn fjölda daga. + content_cache_retention_period: Færslum af öðrum netþjónum verður eytt eftir tiltekinn fjölda daga þegar þetta er jákvætt gildi. Þetta gæti verið óafturkallanleg aðgerð. + media_cache_retention_period: Sóttu myndefni verður eytt eftir tiltekinn fjölda daga þegar þetta er jákvætt gildi og síðan sótt aftur eftir þörfum. form_challenge: current_password: Þú ert að fara inn á öryggissvæði imports: @@ -207,6 +211,10 @@ is: actions: hide: Fela alveg warn: Fela með aðvörun + form_admin_settings: + backups_retention_period: Tímalengd sem safni notandans er haldið eftir + content_cache_retention_period: Tímalengd sem haldið er í biðminni + media_cache_retention_period: Tímalengd sem myndefni haldið interactions: must_be_follower: Loka á tilkynningar frá þeim sem ekki eru fylgjendur must_be_following: Loka á tilkynningar frá þeim sem þú fylgist ekki með diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index fe8e010cf5..30851b9329 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -73,6 +73,10 @@ ko: actions: hide: 필터에 걸러진 글을 처음부터 없었던 것처럼 완전히 가리기 warn: 필터에 걸러진 글을 필터 제목과 함께 경고 뒤에 가리기 + form_admin_settings: + backups_retention_period: 생성된 사용자 아카이브를 며칠동안 저장할 지. + content_cache_retention_period: 양수가 설정되었다면 다른 서버의 게시물은 여기서 설정된 일수가 지나면 삭제될 것입니다. 되돌릴 수 없는 작업일 수 있습니다. + media_cache_retention_period: 양수로 설정된 경우 다운로드된 미디어 파일들은 지정된 일수가 지나면 삭제될 것이고 필요할 때 다시 다운로드 될 것입니다. form_challenge: current_password: 당신은 보안 구역에 진입하고 있습니다 imports: @@ -207,6 +211,10 @@ ko: actions: hide: 완전히 숨기기 warn: 경고와 함께 숨기기 + form_admin_settings: + backups_retention_period: 사용자 아카이브 유지 기한 + content_cache_retention_period: 컨텐트 캐시 유지 기한 + media_cache_retention_period: 미디어 캐시 유지 기한 interactions: must_be_follower: 나를 팔로우 하지 않는 사람에게서 온 알림을 차단 must_be_following: 내가 팔로우 하지 않는 사람에게서 온 알림을 차단 diff --git a/config/locales/simple_form.si.yml b/config/locales/simple_form.si.yml index 4df9f619bf..e2ada04aa7 100644 --- a/config/locales/simple_form.si.yml +++ b/config/locales/simple_form.si.yml @@ -115,13 +115,13 @@ si: include_statuses: විද්‍යුත් තැපෑලෙහි වාර්තා කරන ලද පළ කිරීම් ඇතුළත් කරන්න send_email_notification: විද්‍යුත් තැපෑලෙන් පරිශීලකයාට දැනුම් දෙන්න text: අභිරුචි අනතුරු ඇඟවීම - type: ක්‍රියාව + type: ක්‍රියාමාර්ගය types: disable: කැටි කරන්න none: අනතුරු ඇඟවීමක් යවන්න sensitive: පවතී silence: සීමාව - suspend: අවශ්ය + suspend: අත්හිටුවන්න warning_preset_id: අනතුරු ඇඟවීමේ පෙරසිටුවක් භාවිතා කරන්න announcement: all_day: දවස පුරා සිදුවීම @@ -156,7 +156,7 @@ si: new_password: නව මුරපදය note: ජෛව otp_attempt: ද්වි සාධක කේතය - password: මුර පදය + password: මුරපදය phrase: මූල පදය හෝ වාක්‍ය ඛණ්ඩය setting_advanced_layout: උසස් වෙබ් අතුරු මුහුණත සබල කරන්න setting_aggregate_reblogs: කණ්ඩායම් කාලරේඛාව වැඩි කරයි @@ -179,17 +179,17 @@ si: setting_reduce_motion: සජීවිකරණවල චලනය අඩු කරන්න setting_show_application: පළ කිරීම් යැවීමට භාවිතා කරන යෙදුම හෙළි කරන්න setting_system_font_ui: පද්ධතියේ පෙරනිමි අකුරු භාවිතා කරන්න - setting_theme: අඩවියේ මාතෘකාව + setting_theme: අඩවියේ තේමාව setting_trends: අද ප්‍රවණතා පෙන්වන්න setting_unfollow_modal: යමෙකු අනුගමනය නොකිරීමට පෙර තහවුරු කිරීමේ සංවාදය පෙන්වන්න setting_use_blurhash: සැඟවුණු මාධ්‍ය සඳහා වර්ණවත් අනුක්‍රමික පෙන්වන්න setting_use_pending_items: මන්දගාමී මාදිලිය severity: බරපතලකම - sign_in_token_attempt: ආරක්ෂණ කේතය + sign_in_token_attempt: ආරක්‍ෂණ කේතය title: ශීර්ෂය type: ආයාත වර්ගය username: පරිශීලක නාමය - username_or_email: පරිශීලක නාමය හෝ වි-තැපෑල + username_or_email: පරි. නාමය හෝ වි-තැපෑල whole_word: සමස්ත වචනය email_domain_block: with_dns_records: වසමෙහි MX වාර්තා සහ IP ඇතුළත් කරන්න @@ -239,7 +239,7 @@ si: recommended: නිර්දේශිත required: mark: "*" - text: අවශ්යයි + text: අවශ්‍යයි title: sessions: webauthn: පුරනය වීමට ඔබගේ ආරක්ෂක යතුරු වලින් එකක් භාවිතා කරන්න diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 502bc55194..399733c0ec 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -73,6 +73,10 @@ vi: actions: hide: Ẩn hoàn toàn nội dung đã lọc, hoạt động như thể nó không tồn tại warn: Ẩn nội dung đã lọc đằng sau một cảnh báo đề cập đến tiêu đề của bộ lọc + form_admin_settings: + backups_retention_period: Lưu trữ dữ liệu người dùng đã tạo trong số ngày được chỉ định. + content_cache_retention_period: Tút từ các máy chủ khác sẽ bị xóa sau số ngày được chỉ định. Sau đó có thể không thể phục hồi được. + media_cache_retention_period: Media đã tải xuống sẽ bị xóa sau số ngày được chỉ định và sẽ tải xuống lại theo yêu cầu. form_challenge: current_password: Biểu mẫu này an toàn imports: @@ -207,6 +211,10 @@ vi: actions: hide: Ẩn toàn bộ warn: Ẩn kèm theo cảnh báo + form_admin_settings: + backups_retention_period: Thời hạn lưu trữ nội dung người dùng sao lưu + content_cache_retention_period: Thời hạn lưu trữ cache nội dung + media_cache_retention_period: Thời hạn lưu trữ cache media interactions: must_be_follower: Chặn thông báo từ những người không theo dõi bạn must_be_following: Chặn thông báo từ những người bạn không theo dõi diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 49820a229f..4b06fdd1e2 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -2,41 +2,12 @@ sk: about: about_mastodon_html: Mastodon je sociálna sieť založená na otvorených webových protokoloch a na slobodnom softvéri. Je decentralizovaná, podobne ako email. - about_this: O tomto serveri - administered_by: 'Správcom je:' apps: Aplikácie - contact: Kontakt contact_missing: Nezadaný contact_unavailable: Neuvedený/á documentation: Dokumentácia hosted_on: Mastodon hostovaný na %{domain} - instance_actor_flash: | - Tento účet je virtuálnym aktérom, ktorý predstavuje samotný server a nie žiadného jedného užívateľa. - Je využívaný pre potreby federovania a nemal by byť blokovaný, pokiaľ nechceš zablokovať celý server, čo ide lepšie dosiahnúť cez blokovanie domény. - rules: Serverové pravidlá source_code: Zdrojový kód - status_count_after: - few: príspevkov - many: príspevkov - one: príspevok - other: príspevky - status_count_before: Ktorí napísali - unavailable_content: Nedostupný obsah - unavailable_content_description: - reason: 'Dôvod:' - rejecting_media: 'Mediálne súbory z týchto serverov nebudú spracované, alebo ukladané, a nebudú z nich zobrazované žiadne náhľady, vyžadujúc ručné prekliknutie priamo až k pôvodnému súboru:' - rejecting_media_title: Triedené médiá - silenced: 'Príspevky z týchto serverov budú skryté z verejných osí a z konverzácií, a nebudú vytvorené žiadné oboznámena ohľadom aktivity ich užívateľov, pokiaľ ich nenásleduješ:' - silenced_title: Utíšené servery - suspended: 'Z týchto serverov nebudú spracovávané, ukladané, alebo vymieňané žiadne dáta, čo urobí nemožnou akúkoľvek interakciu, alebo komunikáciu s užívateľmi z týchto serverov:' - suspended_title: Vylúčené servery - unavailable_content_html: Vo všeobecnosti, Mastodon ti dovoľuje vidieť obsah, a komunikovať s užívateľmi akéhokoľvek iného serveru v rámci fediversa. Toto sú výnimky, ktoré boli vytvorené na tomto konkrétnom serveri. - user_count_after: - few: užívateľov - many: užívatelia - one: užívateľ - other: užívateľov - user_count_before: Domov pre what_is_mastodon: Čo je Mastodon? accounts: choices_html: "%{name}vé voľby:" @@ -504,9 +475,6 @@ sk: users: Prihláseným, miestnym užívateľom domain_blocks_rationale: title: Ukáž zdôvodnenie - hero: - desc_html: Zobrazuje sa na hlavnej stránke. Doporučené je rozlišenie aspoň 600x100px. Pokiaľ nič nieje dodané, bude nastavený základný orázok serveru. - title: Obrázok hrdinu mascot: desc_html: Zobrazované na viacerých stránkach. Odporúčaná veľkosť aspoň 293×205px. Pokiaľ nieje nahraté, bude zobrazený základný maskot. title: Obrázok maskota diff --git a/config/locales/sl.yml b/config/locales/sl.yml index efdda058c4..aacfd4c390 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -2,45 +2,14 @@ sl: about: about_mastodon_html: Mastodon je socialno omrežje, ki temelji na odprtih spletnih protokolih in prosti ter odprtokodni programski opremi. Je decentraliziran, kot e-pošta. - about_this: O Mastodonu - administered_by: 'Upravlja:' api: API (programerski vmesnik aplikacije) apps: Mobilne aplikacije - contact: Kontakt contact_missing: Ni nastavljeno contact_unavailable: Ni na voljo documentation: Dokumentacija hosted_on: Mastodon gostuje na %{domain} - instance_actor_flash: | - Ta račun je navidezni igralec, ki predstavlja strežnik in ne posameznega uporabnika. - Uporablja se za namene federacije in se ne blokira, če ne želite blokirati celotne instance. V tem primeru blokirajte domeno. privacy_policy: Pravilnik o zasebnosti - rules: Pravila strežnika - rules_html: 'Spodaj je povzetek pravil, ki jim morate slediti, če želite imeti račun na tem strežniku Mastodon:' source_code: Izvorna koda - status_count_after: - few: stanja - one: stanje - other: objav - two: stanja - status_count_before: Ki so avtorji - unavailable_content: Moderirani strežniki - unavailable_content_description: - domain: Strežnik - reason: Razlog - rejecting_media: 'Medijske datoteke s teh strežnikov ne bodo obdelane ali shranjene, nobene ogledne sličice ne bodo prikazane, kar bo zahtevalo ročno klikanje po izvorni datoteki:' - rejecting_media_title: Filtrirane datoteke - silenced: 'Objave s teh strežnikov bodo skrite v javnih časovnicah ter pogovorih in nobena obvestila ne bodo izdelana iz interakcij njihovih uporabnikov, razen če jim sledite:' - silenced_title: Omejeni strežniki - suspended: 'Nobeni podatki s teh strežnikov ne bodo obdelani, shranjeni ali izmenjani, zaradi česar je nemogoča kakršna koli interakcija ali komunikacija z uporabniki s teh strežnikov:' - suspended_title: Suspendirani strežniki - unavailable_content_html: Mastodon vam splošno omogoča ogled vsebin in interakcijo z uporabniki iz vseh drugih strežnikov v fediverzumu. To so izjeme, opravljene na tem strežniku. - user_count_after: - few: uporabniki - one: uporabnik - other: uporabnikov - two: uporabnika - user_count_before: Dom za what_is_mastodon: Kaj je Mastodon? accounts: choices_html: "%{name} izbire:" @@ -767,9 +736,6 @@ sl: users: Prijavljenim krajevnim uporabnikom domain_blocks_rationale: title: Pokaži razlago - hero: - desc_html: Prikazano na sprednji strani. Priporoča se vsaj 600x100px. Ko ni nastavljen, se vrne na sličico strežnika - title: Slika junaka mascot: desc_html: Prikazano na več straneh. Priporočena je najmanj 293 × 205 px. Ko ni nastavljen, se vrne na privzeto maskoto title: Slika maskote diff --git a/config/locales/sq.yml b/config/locales/sq.yml index db07a8ea35..2ea9fb8f70 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -2,41 +2,14 @@ sq: about: about_mastodon_html: 'Rrjeti shoqëror i së ardhmes: Pa reklama, pa survejim nga korporata, konceptim etik dhe decentralizim! Jini zot i të dhënave tuaja, me Mastodon-in!' - about_this: Mbi - administered_by: 'Administruar nga:' api: API apps: Aplikacione për celular - contact: Kontakt contact_missing: I parregulluar contact_unavailable: N/A documentation: Dokumentim hosted_on: Mastodon i strehuar në %{domain} - instance_actor_flash: | - Kjo llogari është një aktor virtual i përdorur për të përfaqësuar vetë shërbyesin dhe jo ndonjë përdorues individual. - Përdoret për qëllime federimi dhe s’duhet bllokuar, veç në daçi të bllokoni krejt instancën, me ç’rast do të duhej të përdornit bllokim përkatësie. privacy_policy: Rregulla Privatësie - rules: Rregulla shërbyesi - rules_html: 'Më poshtë keni një përmbledhje të rregullave që duhet të ndiqni, nëse doni të keni një llogari në këtë shërbyes Mastodon:' source_code: Kod burim - status_count_after: - one: mesazh - other: mesazhe - status_count_before: Që kanë krijuar - unavailable_content: Shërbyes të moderuar - unavailable_content_description: - domain: Shërbyes - reason: Arsye - rejecting_media: 'Kartelat media prej këtyre shërbyesve s’do të përpunohen apo depozitohen, dhe s’do të shfaqet ndonjë miniaturë, duke kërkuar kështu doemos klikim dorazi te kartela origjinale:' - rejecting_media_title: Media e filtruar - silenced: 'Postimet prej këtyre shërbyesve do të jenë të fshehura në rrjedha kohore dhe biseda publike, dhe prej ndërveprimeve të përdoruesve të tyre s’do të prodhohen njoftime, veç në i ndjekshi:' - silenced_title: Shërbyes të heshtuar - suspended: 'Prej këtyre shërbyesve s’do të përpunohen, depozitohen apo shkëmbehen të dhëna, duke e bërë të pamundur çfarëdo ndërveprimi apo komunikimi me përdorues prej këtyre shërbyesve:' - suspended_title: Shërbyes të pezulluar - unavailable_content_html: Mastodon-i përgjithësisht ju lejon të shihni lëndë nga përdorues dhe të ndërveproni me të tillë prej cilitdo shërbyes në fedivers. Këto janë përjashtimet që janë bërë në këtë shërbyes. - user_count_after: - one: përdorues - other: përdorues - user_count_before: Shtëpi e what_is_mastodon: Ç’është Mastodon-i? accounts: choices_html: 'Zgjedhje të %{name}:' @@ -732,9 +705,6 @@ sq: users: Për përdorues vendorë që kanë bërë hyrjen domain_blocks_rationale: title: Shfaq arsye - hero: - desc_html: E shfaqur në faqen ballore. Këshillohet të paktën 600x100px. Kur nuk caktohet gjë, përdoret miniaturë e shërbyesit - title: Figurë heroi mascot: desc_html: E shfaqur në faqe të shumta. Këshillohet të paktën 293x205. Kur nuk caktohet gjë, përdoret simboli parazgjedhje title: Figurë simboli diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index cf8f3b028a..0d9f14a966 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -2,13 +2,9 @@ sr-Latn: about: about_mastodon_html: Mastodont je društvena mreža bazirana na otvorenim protokolima i slobodnom softveru otvorenog koda. Decentralizovana je kao što je decentralizovana e-pošta. - about_this: O instanci - contact: Kontakt contact_missing: Nije postavljeno hosted_on: Mastodont hostovan na %{domain} source_code: Izvorni kod - status_count_before: Koji su napisali - user_count_before: Dom za what_is_mastodon: Šta je Mastodont? accounts: media: Multimedija diff --git a/config/locales/sr.yml b/config/locales/sr.yml index a51817761d..683afafcb3 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -2,24 +2,11 @@ sr: about: about_mastodon_html: Мастодон је друштвена мрежа базирана на отвореним протоколима и слободном софтверу отвореног кода. Децентрализована је као што је децентрализована е-пошта. - about_this: О инстанци - administered_by: 'Администрирано од стране:' apps: Мобилне апликације - contact: Контакт contact_missing: Није постављено documentation: Документација hosted_on: Мастодонт хостован на %{domain} source_code: Изворни код - status_count_after: - few: статуси - one: статус - other: статуса - status_count_before: Који су написали - user_count_after: - few: корисници - one: корисник - other: корисника - user_count_before: Дом за what_is_mastodon: Шта је Мастодон? accounts: choices_html: "%{name}'s избори:" @@ -275,9 +262,6 @@ sr: custom_css: desc_html: Промени изглед на свакој страни када се CSS учита title: Произвољни CSS - hero: - desc_html: Приказано на почетној страни. Препоручено је бар 600х100рх. Када се не одреди, враћа се на иконицу инстанце - title: Лого слика mascot: desc_html: Приказано на више страна. Препоручено је бар 293×205px. Када није постављена, користи се подразумевана маскота title: Слика маскоте diff --git a/config/locales/sv.yml b/config/locales/sv.yml index fbce334bf6..aad17e680f 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -2,38 +2,13 @@ sv: about: about_mastodon_html: Mastodon är ett socialt nätverk baserat på öppna webbprotokoll och gratis, öppen källkodsprogramvara. Det är decentraliserat som e-post. - about_this: Om - administered_by: 'Administreras av:' api: API apps: Mobilappar - contact: Kontakt contact_missing: Inte inställd contact_unavailable: Ej tillämplig documentation: Dokumentation hosted_on: Mastodon-värd på %{domain} - instance_actor_flash: "Detta konto är en virtuell agent som används för att representera servern själv och inte någon individuell användare. Det används av sammanslutningsskäl och ska inte blockeras såvitt du inte vill blockera hela instansen, och för detta fall ska domänblockering användas. \n" - rules: Serverns regler - rules_html: 'Nedan en sammanfattning av kontoreglerna för denna Mastodonserver:' source_code: Källkod - status_count_after: - one: status - other: statusar - status_count_before: Som skapat - unavailable_content: Otillgängligt innehåll - unavailable_content_description: - domain: Server - reason: Anledning - rejecting_media: 'Mediafiler från dessa servers kommer inte hanteras eller lagras, och inga miniatyrer kammer att visas, utan manuell klickning erfordras på originalfilen:' - rejecting_media_title: Filtrerade media - silenced: 'Poster från dessa servers kommer att döljas i publika tidslinjer och konversationer, och meddelanden kommer inte att genereras från deras användares handlingar, förutom om du följer dem:' - silenced_title: Ljuddämpade värddatorer - suspended: 'Ingen data från dessa serverdatorer kommer bearbetas, lagras eller bytas ut vilket omöjliggör kommunikation med användare från dessa serverdatorer:' - suspended_title: Avstängda värddatorer - unavailable_content_html: Mastodon låter dig se material från, och interagera med, andra användare i servernätverket. Det är undantag som gjorts på denna serverdator. - user_count_after: - one: användare - other: användare - user_count_before: Hem till what_is_mastodon: Vad är Mastodon? accounts: choices_html: "%{name}s val:" @@ -516,9 +491,6 @@ sv: users: För inloggade lokala användare domain_blocks_rationale: title: Visa motiv - hero: - desc_html: Visas på framsidan. Minst 600x100px rekommenderas. Om inte angiven faller den tillbaka på instansens miniatyrbild - title: Hjältebild mascot: title: Maskot bild peers_api_enabled: diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 8f54f93f4a..638ab1f479 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -2,31 +2,13 @@ ta: about: about_mastodon_html: 'எதிர்காலத்தின் சமூகப் பிணையம்: விளம்பரம் இல்லை, பொதுநிறுவனக் கண்காணிப்பு இல்லை, நெறிக்குட்பட்ட வரைவுத்திட்டம், மற்றும் பகிர்ந்தாளுதல்! மஸ்டோடோனுடன் உங்கள் தரவுகள் உங்களுக்கே சொந்தம்!' - about_this: தகவல் - administered_by: 'நிர்வாகம்:' api: செயலிக்கான மென்பொருள் இடைமுகம் API apps: கைப்பேசி செயலிகள் - contact: தொடர்புக்கு contact_missing: நிறுவப்படவில்லை contact_unavailable: பொ/இ documentation: ஆவணச்சான்று hosted_on: மாஸ்டோடாண் %{domain} இனையத்தில் இயங்குகிறது source_code: நிரல் மூலம் - status_count_after: - one: பதிவு - other: பதிவுகள் - status_count_before: எழுதிய - unavailable_content: விசயங்கள் இல்லை - unavailable_content_description: - domain: வழங்கி - reason: காரணம் - rejecting_media_title: வடிகட்டப்பட்ட மீடியா - silenced_title: அணைக்கபட்ட சர்வர்கள் - suspended_title: இடைநீக்கப்பட்ட சர்வர்கள் - user_count_after: - one: பயனர் - other: பயனர்கள் - user_count_before: இணைந்திருக்கும் what_is_mastodon: மச்டொடன் என்றால் என்ன? accounts: choices_html: "%{name}-இன் தேர்வுகள்:" diff --git a/config/locales/tai.yml b/config/locales/tai.yml index b4cbbbcb23..decc28717a 100644 --- a/config/locales/tai.yml +++ b/config/locales/tai.yml @@ -1,8 +1,6 @@ --- tai: about: - unavailable_content_description: - reason: Lí-iû what_is_mastodon: Siáⁿ-mih sī Mastodon? errors: '400': The request you submitted was invalid or malformed. diff --git a/config/locales/te.yml b/config/locales/te.yml index 4741240245..8a1e2e0bb5 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -2,23 +2,12 @@ te: about: about_mastodon_html: మాస్టొడాన్ అనేది ఒక సామాజిక మాధ్యమం. ఇది పూర్తిగా ఉచితం మరియు స్వేచ్ఛా సాఫ్టువేరు. ఈమెయిల్ లాగానే ఇది వికేంద్రీకరించబడినది. - about_this: గురించి - administered_by: 'నిర్వహణలో:' apps: మొబైల్ యాప్స్ - contact: సంప్రదించండి contact_missing: ఇంకా సెట్ చేయలేదు contact_unavailable: వర్తించదు documentation: పత్రీకరణ hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది source_code: సోర్సు కోడ్ - status_count_after: - one: స్థితి - other: స్థితులు - status_count_before: ఎవరు రాశారు - user_count_after: - one: వినియోగదారు - other: వినియోగదారులు - user_count_before: హోం కు what_is_mastodon: మాస్టొడాన్ అంటే ఏమిటి? accounts: choices_html: "%{name}'s ఎంపికలు:" diff --git a/config/locales/th.yml b/config/locales/th.yml index a7d7765c02..d2a27cb304 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -2,39 +2,14 @@ th: about: about_mastodon_html: 'เครือข่ายสังคมแห่งอนาคต: ไม่มีโฆษณา ไม่มีการสอดแนมโดยองค์กร การออกแบบตามหลักจริยธรรม และการกระจายศูนย์! เป็นเจ้าของข้อมูลของคุณด้วย Mastodon!' - about_this: เกี่ยวกับ - administered_by: 'ดูแลโดย:' api: API apps: แอปมือถือ - contact: ติดต่อ contact_missing: ไม่ได้ตั้ง contact_unavailable: ไม่มี documentation: เอกสารประกอบ hosted_on: Mastodon ที่โฮสต์ที่ %{domain} - instance_actor_flash: 'บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการปิดกั้นเว้นแต่คุณต้องการปิดกั้นทั้งอินสแตนซ์ ในกรณีนี้คุณควรใช้การปิดกั้นโดเมน - - ' privacy_policy: นโยบายความเป็นส่วนตัว - rules: กฎของเซิร์ฟเวอร์ - rules_html: 'ด้านล่างคือข้อมูลสรุปของกฎที่คุณจำเป็นต้องปฏิบัติตามหากคุณต้องการมีบัญชีในเซิร์ฟเวอร์ Mastodon นี้:' source_code: โค้ดต้นฉบับ - status_count_after: - other: โพสต์ - status_count_before: ผู้เผยแพร่ - unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม - unavailable_content_description: - domain: เซิร์ฟเวอร์ - reason: เหตุผล - rejecting_media: 'จะไม่ประมวลผลหรือจัดเก็บไฟล์สื่อจากเซิร์ฟเวอร์เหล่านี้ และจะไม่แสดงภาพขนาดย่อ ต้องมีการคลิกไปยังไฟล์ต้นฉบับด้วยตนเอง:' - rejecting_media_title: สื่อที่กรองอยู่ - silenced: 'จะซ่อนโพสต์จากเซิร์ฟเวอร์เหล่านี้ในเส้นเวลาสาธารณะและการสนทนา และจะไม่สร้างการแจ้งเตือนจากการโต้ตอบของผู้ใช้ เว้นแต่คุณกำลังติดตามผู้ใช้:' - silenced_title: เซิร์ฟเวอร์ที่จำกัดอยู่ - suspended: 'จะไม่ประมวลผล จัดเก็บ หรือแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์เหล่านี้ ทำให้การโต้ตอบหรือการสื่อสารใด ๆ กับผู้ใช้จากเซิร์ฟเวอร์เหล่านี้เป็นไปไม่ได้:' - suspended_title: เซิร์ฟเวอร์ที่ระงับอยู่ - unavailable_content_html: โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ - user_count_after: - other: ผู้ใช้ - user_count_before: บ้านของ what_is_mastodon: Mastodon คืออะไร? accounts: choices_html: 'ตัวเลือกของ %{name}:' @@ -708,9 +683,6 @@ th: users: ให้กับผู้ใช้ในเซิร์ฟเวอร์ที่เข้าสู่ระบบ domain_blocks_rationale: title: แสดงคำชี้แจงเหตุผล - hero: - desc_html: แสดงในหน้าแรก อย่างน้อย 600x100px ที่แนะนำ เมื่อไม่ได้ตั้ง กลับไปใช้ภาพขนาดย่อเซิร์ฟเวอร์ - title: ภาพแบนเนอร์หลัก mascot: desc_html: แสดงในหลายหน้า อย่างน้อย 293×205px ที่แนะนำ เมื่อไม่ได้ตั้ง กลับไปใช้มาสคอตเริ่มต้น title: ภาพมาสคอต @@ -960,6 +932,8 @@ th: registration_closed: "%{instance} ไม่ได้กำลังเปิดรับสมาชิกใหม่" resend_confirmation: ส่งคำแนะนำการยืนยันใหม่ reset_password: ตั้งรหัสผ่านใหม่ + rules: + title: กฎพื้นฐานบางประการ security: ความปลอดภัย set_new_password: ตั้งรหัสผ่านใหม่ setup: @@ -1313,6 +1287,8 @@ th: other: อื่น ๆ posting_defaults: ค่าเริ่มต้นการโพสต์ public_timelines: เส้นเวลาสาธารณะ + privacy_policy: + title: นโยบายความเป็นส่วนตัว reactions: errors: unrecognized_emoji: ไม่ใช่อีโมจิที่รู้จัก diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 5fdd8c1c5e..c10aa6c6a9 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -2,41 +2,14 @@ tr: about: about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir. - about_this: Hakkında - administered_by: 'Yönetici:' api: API apps: Mobil uygulamalar - contact: İletişim contact_missing: Ayarlanmadı contact_unavailable: Yok documentation: Belgeler hosted_on: Mastodon %{domain} üzerinde barındırılıyor - instance_actor_flash: | - Bu hesap, herhangi bir kullanıcıyı değil sunucunun kendisini temsil etmek için kullanılan sanal bir aktördür. - Federasyon amaçlı kullanılır ve tüm yansıyı engellemek istemediğiniz sürece engellenmemelidir; bu durumda bir etki alanı bloğu kullanmanız gerekir. privacy_policy: Gizlilik Politikası - rules: Sunucu kuralları - rules_html: 'Aşağıda, bu Mastodon sunucusu üzerinde bir hesap açmak istiyorsanız uymanız gereken kuralların bir özeti var:' source_code: Kaynak kodu - status_count_after: - one: durum yazıldı - other: durum yazıldı - status_count_before: Şu ana kadar - unavailable_content: Denetlenen sunucular - unavailable_content_description: - domain: Sunucu - reason: Sebep - rejecting_media: 'Bu sunuculardaki medya dosyaları işlenmeyecek ya da saklanmayacak, ve hiçbir küçük resim gösterilmeyecektir, dolayısıyla orjinal dosyaya manuel tıklama gerekecektir:' - rejecting_media_title: Filtrelenmiş medya - silenced: 'Bu sunuculardan gelen gönderiler genel zaman çizelgelerinde ve konuşmalarda gizlenecek ve siz onları takip etmediğiniz sürece, kullanıcıların etkileşimlerinden hiçbir bildirim alınmayacaktır:' - silenced_title: Susturulmuş sunucular - suspended: 'Bu sunuculardaki hiçbir veri işlenmeyecek, saklanmayacak veya değiş tokuş edilmeyecektir, dolayısıyla bu sunuculardaki kullanıcılarla herhangi bir etkileşim ya da iletişim imkansız olacaktır:' - suspended_title: Askıya alınan sunucular - unavailable_content_html: Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır. - user_count_after: - one: kullanıcı - other: kullanıcı - user_count_before: Kayıtlı what_is_mastodon: Mastodon nedir? accounts: choices_html: "%{name} kişisinin seçimleri:" @@ -735,9 +708,6 @@ tr: users: Oturum açan yerel kullanıcılara domain_blocks_rationale: title: Gerekçeyi göster - hero: - desc_html: Önsayfada görüntülenir. En az 600x100px önerilir. Ayarlanmadığında, sunucu küçük resmi kullanılır - title: Kahraman görseli mascot: desc_html: Birden fazla sayfada görüntülenir. En az 293x205px önerilir. Ayarlanmadığında, varsayılan maskot kullanılır title: Maskot görseli diff --git a/config/locales/tt.yml b/config/locales/tt.yml index f762424e5b..fe3c74ccde 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -1,13 +1,8 @@ --- tt: about: - about_this: Хакында api: API contact_unavailable: Юк - unavailable_content_description: - domain: Сервер - user_count_after: - other: кулланучы accounts: follow: Языл following: Язылгансыз diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 8821a99e54..67aff52c5a 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -2,43 +2,14 @@ uk: about: about_mastodon_html: 'Соціальна мережа майбутнього: жодної реклами, жодного корпоративного нагляду, етичний дизайн та децентралізація! З Mastodon ваші дані під вашим контролем!' - about_this: Про цей сервер - administered_by: 'Адміністратор:' api: API apps: Мобільні застосунки - contact: Зв'язатися contact_missing: Не зазначено contact_unavailable: Недоступно documentation: Документація hosted_on: Mastodon розміщено на %{domain} - instance_actor_flash: "Цей обліковий запис є віртуальною особою, яка використовується для представлення самого сервера, а не певного користувача. Він використовується для потреб федерації і не повинен бути заблокований, якщо тільки ви не хочете заблокувати весь сервер, у цьому випадку ви повинні скористатися блокуванням домену. \n" privacy_policy: Політика конфіденційності - rules: Правила сервера - rules_html: 'Внизу наведено підсумок правил, яких ви повинні дотримуватися, якщо хочете мати обліковий запис на цьому сервері Mastodon:' source_code: Вихідний код - status_count_after: - few: статуса - many: статусів - one: статус - other: статуси - status_count_before: Опубліковано - unavailable_content: Недоступний вміст - unavailable_content_description: - domain: Сервер - reason: Причина - rejecting_media: 'Медіа файли з цих серверів не будуть оброблятися або зберігатись, а мініатюри відображатись. Щоб побачити оригінальний файл, треба буде натиснути на посилання:' - rejecting_media_title: Відфільтровані медіа - silenced: 'Повідомлення з цих серверів будуть приховані в публічних стрічках та розмовах, також ви не отримуватимете сповіщень щодо взаємодій з їх користувачами, якщо ви їх не відстежуєте:' - silenced_title: Заглушені сервери - suspended: 'Жодна інформація з цих серверів не буде оброблена, збережена чи передана, що робить спілкування з користувачами цих серверів неможливим:' - suspended_title: Призупинені сервери - unavailable_content_html: Mastodon зазвичай дозволяє вам взаємодіяти з користувачами будь-яких серверів в Федіверсі та переглядати їх контент. Ось винятки, які було зроблено на цьому конкретному сервері. - user_count_after: - few: користувача - many: користувачів - one: користувач - other: користувачі - user_count_before: Тут живе what_is_mastodon: Що таке Mastodon? accounts: choices_html: 'Вподобання %{name}:' @@ -765,9 +736,6 @@ uk: users: Для авторизованих локальних користувачів domain_blocks_rationale: title: Обґрунтування - hero: - desc_html: Зображується на головній сторінці. Рекомендовано як мінімум 600x100 пікселів. Якщо не встановлено, буде використана мініатюра сервера - title: Банер серверу mascot: desc_html: Зображується на декількох сторінках. Щонайменше 293×205 пікселів рекомендовано. Якщо не вказано, буде використано персонаж за замовчуванням title: Талісман diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 91e8d8dd0a..cac29b2a31 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -2,37 +2,14 @@ vi: about: about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không bán thông tin người dùng và phi tập trung! Làm chủ dữ liệu của bạn với Mastodon!' - about_this: Giới thiệu - administered_by: 'Quản trị viên:' api: API apps: Apps - contact: Liên lạc contact_missing: Chưa thiết lập contact_unavailable: N/A documentation: Tài liệu hosted_on: "%{domain} vận hành nhờ Mastodon" - instance_actor_flash: "Đây là một tài khoản ảo được sử dụng để đại diện cho máy chủ chứ không phải bất kỳ người dùng cá nhân nào. Nó được sử dụng cho mục đích liên kết và không nên chặn trừ khi bạn muốn chặn toàn bộ máy chủ. \n" privacy_policy: Chính sách bảo mật - rules: Quy tắc máy chủ - rules_html: 'Bên dưới là những quy tắc của máy chủ Mastodon này, bạn phải đọc kỹ trước khi đăng ký:' source_code: Mã nguồn - status_count_after: - other: tút - status_count_before: Nơi lưu giữ - unavailable_content: Giới hạn chung - unavailable_content_description: - domain: Máy chủ - reason: Lý do - rejecting_media: 'Ảnh và video từ những máy chủ sau sẽ không được xử lý, lưu trữ và hiển thị hình thu nhỏ. Bắt buộc nhấp thủ công vào tệp gốc để xem:' - rejecting_media_title: Ảnh và video - silenced: 'Tút từ những máy chủ sau sẽ bị ẩn trên bảng tin, trong tin nhắn và không có thông báo nào được tạo từ các tương tác của người dùng của họ, trừ khi bạn có theo dõi người dùng của họ:' - silenced_title: Những máy chủ bị hạn chế - suspended: 'Những máy chủ sau sẽ không được xử lý, lưu trữ hoặc trao đổi nội dung. Mọi tương tác hoặc giao tiếp với người dùng từ các máy chủ này đều bị cấm:' - suspended_title: Những máy chủ bị vô hiệu hóa - unavailable_content_html: Mastodon cho phép bạn tương tác nội dung và giao tiếp với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng. - user_count_after: - other: người dùng - user_count_before: Nhà của what_is_mastodon: Mastodon là gì? accounts: choices_html: "%{name} tôn vinh:" @@ -717,9 +694,6 @@ vi: users: Để đăng nhập người dùng cục bộ domain_blocks_rationale: title: Hiển thị lý do - hero: - desc_html: Hiển thị trên trang chủ. Kích cỡ tối thiểu 600x100px. Mặc định dùng hình thu nhỏ của máy chủ - title: Hình ảnh giới thiệu mascot: desc_html: Hiển thị trên nhiều trang. Kích cỡ tối thiểu 293 × 205px. Mặc định dùng linh vật Mastodon title: Logo máy chủ diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index a9eb3ee495..fd5592c238 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -1,13 +1,6 @@ --- zgh: about: - about_this: ⵖⴼ - contact: ⴰⵎⵢⴰⵡⴰⴹ - status_count_after: - one: ⴰⴷⴷⴰⴷ - other: ⴰⴷⴷⴰⴷⵏ - unavailable_content_description: - domain: ⴰⵎⴰⴽⴽⴰⵢ what_is_mastodon: ⵎⴰ'ⵢⴷ ⵉⴳⴰⵏ ⵎⴰⵙⵜⵔⴷⵓⵎ? accounts: follow: ⴹⴼⵕ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index cffcb0df83..3ad48e4daf 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -2,39 +2,14 @@ zh-CN: about: about_mastodon_html: Mastodon 是一个建立在开放式网络协议和自由、开源软件之上的社交网络,有着类似于电子邮件的分布式设计。 - about_this: 关于本站 - administered_by: 本站管理员: api: API apps: 移动应用 - contact: 联系方式 contact_missing: 未设定 contact_unavailable: 未公开 documentation: 文档 hosted_on: 运行在 %{domain} 上的 Mastodon 站点 - instance_actor_flash: | - 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。 - 该账号用于达成互联之目的,除非你想要封禁整个实例,否则该账号不应该被封禁。在此种情况下,你应该使用域名封禁。 privacy_policy: 隐私政策 - rules: 服务器规则 - rules_html: 如果你想要在此Mastodon服务器上拥有一个账户,你必须遵守相应的规则,摘要如下: source_code: 源码 - status_count_after: - other: 条嘟文 - status_count_before: 他们共嘟出了 - unavailable_content: 被限制的服务器 - unavailable_content_description: - domain: 服务器 - reason: 原因 - rejecting_media: 来自这些服务器的媒体文件将不会被处理或存储,缩略图也不会显示,需要手动点击打开原始文件。 - rejecting_media_title: 被过滤的媒体文件 - silenced: 来自这些服务器上的帖子将不会出现在公共时间轴和会话中,通知功能也不会提醒这些用户的动态;只有你关注了这些用户,才会收到用户互动的通知消息。 - silenced_title: 已限制的服务器 - suspended: 这些服务器的数据将不会被处理、存储或者交换,本站也将无法和来自这些服务器的用户互动或者交流。 - suspended_title: 已被封禁的服务器 - unavailable_content_html: 通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但是某些站点上不排除会有例外。 - user_count_after: - other: 位用户 - user_count_before: 这里共注册有 what_is_mastodon: Mastodon 是什么? accounts: choices_html: "%{name} 的推荐:" @@ -719,9 +694,6 @@ zh-CN: users: 对本地已登录用户 domain_blocks_rationale: title: 显示理由 - hero: - desc_html: 将用于在首页展示。推荐使用分辨率 600×100px 以上的图片。如未设置,将默认使用本站缩略图。 - title: 主题图片 mascot: desc_html: 用于在首页展示。推荐分辨率 293×205px 以上。未指定的情况下将使用默认吉祥物。 title: 吉祥物图像 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 5c703f820e..257537460f 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -2,38 +2,13 @@ zh-HK: about: about_mastodon_html: Mastodon(萬象)是屬於未來的社交網路︰無廣告煩擾、無企業監控、設計講道義、分散無大台!立即重奪個人資料的控制權,使用 Mastodon 吧! - about_this: 關於本伺服器 - administered_by: 管理者: api: API apps: 手機 App - contact: 聯絡 contact_missing: 未設定 contact_unavailable: 不適用 documentation: 說明文件 hosted_on: 在 %{domain} 運作的 Mastodon 伺服器 - instance_actor_flash: | - 這個帳戶是代表伺服器,而非代表任何個人用戶的虛擬帳號。 - 此帳戶是為聯盟協定而設。除非你想封鎖整個伺服器的話,否則請不要封鎖這個帳戶。如果你想封鎖伺服器,請使用網域封鎖以達到相同效果。 - rules: 系統規則 - rules_html: 如果你想要在本站開一個新帳戶,以下是你需要遵守的規則: source_code: 源代碼 - status_count_after: - other: 篇文章 - status_count_before: 共發佈了 - unavailable_content: 受限制的伺服器 - unavailable_content_description: - domain: 伺服器 - reason: 原因 - rejecting_media: 這些伺服器的媒體檔案將不會被處理或儲存,我們亦不會展示其縮圖。請手動點擊以觀看原始檔: - rejecting_media_title: 被篩選的媒體檔案 - silenced: 除非你已經關注個別使用者,否則來自這些伺服器的文章和通知將會被隱藏。 - silenced_title: 已靜音的伺服器 - suspended: 來自這些伺服器的所有數據將不會被處理。你將不可能聯絡來自這些伺服器的使用者。 - suspended_title: 已停權的伺服器 - unavailable_content_html: Mastodon 通常讓你瀏覽其他社交聯盟網站的所有內容,但是對於這個特定網站,有這些特別的例外規則。 - user_count_after: - other: 位使用者 - user_count_before: 本站共有 what_is_mastodon: Mastodon (萬象)是甚麼? accounts: choices_html: "%{name} 的選擇:" @@ -520,9 +495,6 @@ zh-HK: users: 所有已登入的帳號 domain_blocks_rationale: title: 顯示原因予 - hero: - desc_html: 在首頁顯示。推薦最小 600x100px。如果留空,就會默認為服務站縮圖 - title: 主題圖片 mascot: desc_html: 在不同頁面顯示。推薦最小 293×205px。如果留空,就會默認為伺服器縮圖。 title: 縮圖 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 8f451e54a8..7f9fbbea17 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -2,39 +2,14 @@ zh-TW: about: about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳號,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的社群網路交流。 - about_this: 關於本站 - administered_by: 管理者: api: API apps: 行動應用程式 - contact: 聯絡我們 contact_missing: 未設定 contact_unavailable: 未公開 documentation: 文件 hosted_on: 在 %{domain} 運作的 Mastodon 站點 - instance_actor_flash: '這個帳戶是個用來代表伺服器本身的虛擬角色,而非實際的使用者。它是用來聯盟用的,除非您想要封鎖整個站台,不然不該封鎖它。但要封鎖整個站台,您可以使用網域封鎖功能。 - - ' privacy_policy: 隱私權政策 - rules: 伺服器規則 - rules_html: 以下是您若想在此 Mastodon 伺服器建立帳號必須遵守的規則總結: source_code: 原始碼 - status_count_after: - other: 條嘟文 - status_count_before: 他們共嘟出了 - unavailable_content: 無法取得的內容 - unavailable_content_description: - domain: 伺服器 - reason: 原因 - rejecting_media: 不會處理或儲存這些伺服器的媒體檔案,也不會顯示縮圖,需要手動點選原始檔: - rejecting_media_title: 過濾的媒體 - silenced: 這些伺服器的嘟文會被從公開時間軸與對話中隱藏,而且與它們的使用者互動並不會產生任何通知,除非您追蹤他們: - silenced_title: 靜音的伺服器 - suspended: 來自這些伺服器的資料都不會被處理、儲存或交換,也無法和這些伺服器上的使用者互動與溝通: - suspended_title: 暫停的伺服器 - unavailable_content_html: Mastodon 一般來說允許您閱讀並和任何聯盟伺服器上的使用者互動。這些伺服器是這個站台設下的例外。 - user_count_after: - other: 位使用者 - user_count_before: 註冊使用者數 what_is_mastodon: 什麼是 Mastodon? accounts: choices_html: "%{name} 的選擇:" @@ -721,9 +696,6 @@ zh-TW: users: 套用至所有登入的本機使用者 domain_blocks_rationale: title: 顯示解釋原因 - hero: - desc_html: 在首頁顯示。推薦最小 600x100px。如果留空,就會重設回伺服器預覽圖 - title: 主題圖片 mascot: desc_html: 在許多頁面都會顯示。推薦最小 293x205px。如果留空,將採用預設的吉祥物 title: 吉祥物圖片 From f01310dadbca94c74aa44e0a4725d49c5ac15434 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 14 Oct 2022 01:44:23 +0200 Subject: [PATCH 046/500] Fix trending statuses returning more than one post by the same author (#19349) --- app/models/status_trend.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/status_trend.rb b/app/models/status_trend.rb index 33fd6b0043..b0f1b6942d 100644 --- a/app/models/status_trend.rb +++ b/app/models/status_trend.rb @@ -17,5 +17,5 @@ class StatusTrend < ApplicationRecord belongs_to :status belongs_to :account - scope :allowed, -> { where(allowed: true) } + scope :allowed, -> { joins('INNER JOIN (SELECT account_id, MAX(score) AS max_score FROM status_trends GROUP BY account_id) AS grouped_status_trends ON status_trends.account_id = grouped_status_trends.account_id AND status_trends.score = grouped_status_trends.max_score').where(allowed: true) } end From 219c38b9217d6dbb1621c27f64e9bf86bf92ec19 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 14 Oct 2022 10:16:37 +0900 Subject: [PATCH 047/500] Replace `CancelToken` to `AbortSignal` (#19352) --- app/javascript/mastodon/actions/compose.js | 46 ++++++++++--------- app/javascript/mastodon/api.js | 53 ++++++++++++++++------ app/javascript/mastodon/extra_polyfills.js | 1 + app/javascript/mastodon/load_polyfills.js | 1 + jsconfig.json | 22 +++++++++ package.json | 1 + yarn.lock | 5 ++ 7 files changed, 92 insertions(+), 37 deletions(-) create mode 100644 jsconfig.json diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 32d8c229e4..da11a9d5a3 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -1,18 +1,20 @@ -import api from '../api'; -import { CancelToken, isCancel } from 'axios'; +import { isCancel } from 'axios'; import { throttle } from 'lodash'; -import { search as emojiSearch } from '../features/emoji/emoji_mart_search_light'; -import { tagHistory } from '../settings'; +import { defineMessages } from 'react-intl'; +import api from 'mastodon/api'; +import { search as emojiSearch } from 'mastodon/features/emoji/emoji_mart_search_light'; +import { tagHistory } from 'mastodon/settings'; +import resizeImage from 'mastodon/utils/resize_image'; +import { showAlert, showAlertForError } from './alerts'; import { useEmoji } from './emojis'; -import resizeImage from '../utils/resize_image'; import { importFetchedAccounts } from './importer'; -import { updateTimeline } from './timelines'; -import { showAlertForError } from './alerts'; -import { showAlert } from './alerts'; import { openModal } from './modal'; -import { defineMessages } from 'react-intl'; +import { updateTimeline } from './timelines'; -let cancelFetchComposeSuggestionsAccounts, cancelFetchComposeSuggestionsTags; +/** @type {AbortController | undefined} */ +let fetchComposeSuggestionsAccountsController; +/** @type {AbortController | undefined} */ +let fetchComposeSuggestionsTagsController; export const COMPOSE_CHANGE = 'COMPOSE_CHANGE'; export const COMPOSE_SUBMIT_REQUEST = 'COMPOSE_SUBMIT_REQUEST'; @@ -433,8 +435,8 @@ export function undoUploadCompose(media_id) { }; export function clearComposeSuggestions() { - if (cancelFetchComposeSuggestionsAccounts) { - cancelFetchComposeSuggestionsAccounts(); + if (fetchComposeSuggestionsAccountsController) { + fetchComposeSuggestionsAccountsController.abort(); } return { type: COMPOSE_SUGGESTIONS_CLEAR, @@ -442,14 +444,14 @@ export function clearComposeSuggestions() { }; const fetchComposeSuggestionsAccounts = throttle((dispatch, getState, token) => { - if (cancelFetchComposeSuggestionsAccounts) { - cancelFetchComposeSuggestionsAccounts(); + if (fetchComposeSuggestionsAccountsController) { + fetchComposeSuggestionsAccountsController.abort(); } + fetchComposeSuggestionsAccountsController = new AbortController(); + api(getState).get('/api/v1/accounts/search', { - cancelToken: new CancelToken(cancel => { - cancelFetchComposeSuggestionsAccounts = cancel; - }), + signal: fetchComposeSuggestionsAccountsController.signal, params: { q: token.slice(1), @@ -472,16 +474,16 @@ const fetchComposeSuggestionsEmojis = (dispatch, getState, token) => { }; const fetchComposeSuggestionsTags = throttle((dispatch, getState, token) => { - if (cancelFetchComposeSuggestionsTags) { - cancelFetchComposeSuggestionsTags(); + if (fetchComposeSuggestionsTagsController) { + fetchComposeSuggestionsTagsController.abort(); } dispatch(updateSuggestionTags(token)); + fetchComposeSuggestionsTagsController = new AbortController(); + api(getState).get('/api/v2/search', { - cancelToken: new CancelToken(cancel => { - cancelFetchComposeSuggestionsTags = cancel; - }), + signal: fetchComposeSuggestionsTagsController.signal, params: { type: 'hashtags', diff --git a/app/javascript/mastodon/api.js b/app/javascript/mastodon/api.js index 645ef65006..6bbddbef66 100644 --- a/app/javascript/mastodon/api.js +++ b/app/javascript/mastodon/api.js @@ -1,20 +1,31 @@ +// @ts-check + import axios from 'axios'; import LinkHeader from 'http-link-header'; import ready from './ready'; +/** + * @param {import('axios').AxiosResponse} response + * @returns {LinkHeader} + */ export const getLinks = response => { const value = response.headers.link; if (!value) { - return { refs: [] }; + return new LinkHeader(); } return LinkHeader.parse(value); }; +/** @type {import('axios').RawAxiosRequestHeaders} */ const csrfHeader = {}; +/** + * @returns {void} + */ const setCSRFHeader = () => { + /** @type {HTMLMetaElement | null} */ const csrfToken = document.querySelector('meta[name=csrf-token]'); if (csrfToken) { @@ -24,6 +35,10 @@ const setCSRFHeader = () => { ready(setCSRFHeader); +/** + * @param {() => import('immutable').Map} getState + * @returns {import('axios').RawAxiosRequestHeaders} + */ const authorizationHeaderFromState = getState => { const accessToken = getState && getState().getIn(['meta', 'access_token'], ''); @@ -36,17 +51,25 @@ const authorizationHeaderFromState = getState => { }; }; -export default getState => axios.create({ - headers: { - ...csrfHeader, - ...authorizationHeaderFromState(getState), - }, - - transformResponse: [function (data) { - try { - return JSON.parse(data); - } catch(Exception) { - return data; - } - }], -}); +/** + * @param {() => import('immutable').Map} getState + * @returns {import('axios').AxiosInstance} + */ +export default function api(getState) { + return axios.create({ + headers: { + ...csrfHeader, + ...authorizationHeaderFromState(getState), + }, + + transformResponse: [ + function (data) { + try { + return JSON.parse(data); + } catch { + return data; + } + }, + ], + }); +} diff --git a/app/javascript/mastodon/extra_polyfills.js b/app/javascript/mastodon/extra_polyfills.js index 13c4f6da9e..395f1ed050 100644 --- a/app/javascript/mastodon/extra_polyfills.js +++ b/app/javascript/mastodon/extra_polyfills.js @@ -1,3 +1,4 @@ +import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'; import 'intersection-observer'; import 'requestidlecallback'; import objectFitImages from 'object-fit-images'; diff --git a/app/javascript/mastodon/load_polyfills.js b/app/javascript/mastodon/load_polyfills.js index 73eedc9dcc..cc5bcd18f1 100644 --- a/app/javascript/mastodon/load_polyfills.js +++ b/app/javascript/mastodon/load_polyfills.js @@ -26,6 +26,7 @@ function loadPolyfills() { // Edge does not have requestIdleCallback and object-fit CSS property. // This avoids shipping them all the polyfills. const needsExtraPolyfills = !( + window.AbortController && window.IntersectionObserver && window.IntersectionObserverEntry && 'isIntersecting' in IntersectionObserverEntry.prototype && diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000000..7471fb9db9 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "allowJs": true, + "baseUrl": "./app/javascript", + "checkJs": false, + "experimentalDecorators": true, + "jsx": "react", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "module": "ES2022", + "moduleResolution": "node", + "noEmit": true, + "resolveJsonModule": true, + "strict": false, + "target": "ES2022" + }, + "exclude": [ + "**/build/*", + "**/node_modules/*", + "**/public/*", + "**/vendor/*" + ] +} diff --git a/package.json b/package.json index f4d41c64cd..4a678f65a2 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.7", + "abortcontroller-polyfill": "^1.7.5", "array-includes": "^3.1.5", "arrow-key-navigation": "^1.2.0", "autoprefixer": "^9.8.8", diff --git a/yarn.lock b/yarn.lock index d44d495c95..cdd34b82c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2203,6 +2203,11 @@ abab@^2.0.6: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== +abortcontroller-polyfill@^1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" From e02bdc14fdf9b811a241dbaec8605cc70cb2961c Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 14 Oct 2022 23:14:22 +0900 Subject: [PATCH 048/500] Fix missing `isCancel` (#19354) --- app/javascript/mastodon/actions/compose.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index da11a9d5a3..0cfc1868ee 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -1,4 +1,4 @@ -import { isCancel } from 'axios'; +import axios from 'axios'; import { throttle } from 'lodash'; import { defineMessages } from 'react-intl'; import api from 'mastodon/api'; @@ -462,9 +462,11 @@ const fetchComposeSuggestionsAccounts = throttle((dispatch, getState, token) => dispatch(importFetchedAccounts(response.data)); dispatch(readyComposeSuggestionsAccounts(token, response.data)); }).catch(error => { - if (!isCancel(error)) { + if (!axios.isCancel(error)) { dispatch(showAlertForError(error)); } + }).finally(() => { + fetchComposeSuggestionsAccountsController = undefined; }); }, 200, { leading: true, trailing: true }); @@ -495,9 +497,11 @@ const fetchComposeSuggestionsTags = throttle((dispatch, getState, token) => { }).then(({ data }) => { dispatch(readyComposeSuggestionsTags(token, data.hashtags)); }).catch(error => { - if (!isCancel(error)) { + if (!axios.isCancel(error)) { dispatch(showAlertForError(error)); } + }).finally(() => { + fetchComposeSuggestionsTagsController = undefined; }); }, 200, { leading: true, trailing: true }); From c618d3a0a557530c85b60870958b1cd7b4320f43 Mon Sep 17 00:00:00 2001 From: prplecake Date: Fri, 14 Oct 2022 17:20:54 -0500 Subject: [PATCH 049/500] Make "No $entity selected" errors more accurate (#19356) Previously all controllers would use the single "No accounts changed as none were selected" message. This commit changes them to read "tags", "posts", "emojis", etc. where necessary. --- app/controllers/admin/custom_emojis_controller.rb | 2 +- .../admin/trends/links/preview_card_providers_controller.rb | 2 +- app/controllers/admin/trends/links_controller.rb | 2 +- app/controllers/admin/trends/statuses_controller.rb | 2 +- app/controllers/admin/trends/tags_controller.rb | 2 +- config/locales/en.yml | 6 ++++++ 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/controllers/admin/custom_emojis_controller.rb b/app/controllers/admin/custom_emojis_controller.rb index 2c33e9f8f7..00d069cdfb 100644 --- a/app/controllers/admin/custom_emojis_controller.rb +++ b/app/controllers/admin/custom_emojis_controller.rb @@ -34,7 +34,7 @@ module Admin @form = Form::CustomEmojiBatch.new(form_custom_emoji_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing - flash[:alert] = I18n.t('admin.accounts.no_account_selected') + flash[:alert] = I18n.t('admin.custom_emojis.no_emoji_selected') rescue Mastodon::NotPermittedError flash[:alert] = I18n.t('admin.custom_emojis.not_permitted') ensure diff --git a/app/controllers/admin/trends/links/preview_card_providers_controller.rb b/app/controllers/admin/trends/links/preview_card_providers_controller.rb index 97dee8eca4..768b79f8db 100644 --- a/app/controllers/admin/trends/links/preview_card_providers_controller.rb +++ b/app/controllers/admin/trends/links/preview_card_providers_controller.rb @@ -14,7 +14,7 @@ class Admin::Trends::Links::PreviewCardProvidersController < Admin::BaseControll @form = Trends::PreviewCardProviderBatch.new(trends_preview_card_provider_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing - flash[:alert] = I18n.t('admin.accounts.no_account_selected') + flash[:alert] = I18n.t('admin.trends.links.publishers.no_publisher_selected') ensure redirect_to admin_trends_links_preview_card_providers_path(filter_params) end diff --git a/app/controllers/admin/trends/links_controller.rb b/app/controllers/admin/trends/links_controller.rb index a3454f2dab..83d68eba63 100644 --- a/app/controllers/admin/trends/links_controller.rb +++ b/app/controllers/admin/trends/links_controller.rb @@ -15,7 +15,7 @@ class Admin::Trends::LinksController < Admin::BaseController @form = Trends::PreviewCardBatch.new(trends_preview_card_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing - flash[:alert] = I18n.t('admin.accounts.no_account_selected') + flash[:alert] = I18n.t('admin.trends.links.no_link_selected') ensure redirect_to admin_trends_links_path(filter_params) end diff --git a/app/controllers/admin/trends/statuses_controller.rb b/app/controllers/admin/trends/statuses_controller.rb index 2b8226138f..004f42b0c3 100644 --- a/app/controllers/admin/trends/statuses_controller.rb +++ b/app/controllers/admin/trends/statuses_controller.rb @@ -15,7 +15,7 @@ class Admin::Trends::StatusesController < Admin::BaseController @form = Trends::StatusBatch.new(trends_status_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing - flash[:alert] = I18n.t('admin.accounts.no_account_selected') + flash[:alert] = I18n.t('admin.trends.statuses.no_status_selected') ensure redirect_to admin_trends_statuses_path(filter_params) end diff --git a/app/controllers/admin/trends/tags_controller.rb b/app/controllers/admin/trends/tags_controller.rb index 98dd6c8ec2..f5946448ae 100644 --- a/app/controllers/admin/trends/tags_controller.rb +++ b/app/controllers/admin/trends/tags_controller.rb @@ -14,7 +14,7 @@ class Admin::Trends::TagsController < Admin::BaseController @form = Trends::TagBatch.new(trends_tag_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save rescue ActionController::ParameterMissing - flash[:alert] = I18n.t('admin.accounts.no_account_selected') + flash[:alert] = I18n.t('admin.trends.tags.no_tag_selected') ensure redirect_to admin_trends_tags_path(filter_params) end diff --git a/config/locales/en.yml b/config/locales/en.yml index 11716234ef..504f1b364d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -345,6 +345,7 @@ en: listed: Listed new: title: Add new custom emoji + no_emoji_selected: No emojis were changed as none were selected not_permitted: You are not permitted to perform this action overwrite: Overwrite shortcode: Shortcode @@ -813,6 +814,9 @@ en: description_html: These are links that are currently being shared a lot by accounts that your server sees posts from. It can help your users find out what's going on in the world. No links are displayed publicly until you approve the publisher. You can also allow or reject individual links. disallow: Disallow link disallow_provider: Disallow publisher + no_link_selected: No links were changed as none were selected + publishers: + no_publisher_selected: No publishers were changed as none were selected shared_by_over_week: one: Shared by one person over the last week other: Shared by %{count} people over the last week @@ -832,6 +836,7 @@ en: description_html: These are posts that your server knows about that are currently being shared and favourited a lot at the moment. It can help your new and returning users to find more people to follow. No posts are displayed publicly until you approve the author, and the author allows their account to be suggested to others. You can also allow or reject individual posts. disallow: Disallow post disallow_account: Disallow author + no_status_selected: No trending posts were changed as none were selected not_discoverable: Author has not opted-in to being discoverable shared_by: one: Shared or favourited one time @@ -847,6 +852,7 @@ en: tag_uses_measure: total uses description_html: These are hashtags that are currently appearing in a lot of posts that your server sees. It can help your users find out what people are talking the most about at the moment. No hashtags are displayed publicly until you approve them. listable: Can be suggested + no_tag_selected: No tags were changed as none were selected not_listable: Won't be suggested not_trendable: Won't appear under trends not_usable: Cannot be used From 4c7b5fb6c1787438ef130d9aecd5d0a4d54d08a9 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Sun, 16 Oct 2022 15:43:59 +0900 Subject: [PATCH 050/500] Add featured tags selector for WebUI (#19358) * Add featured tags selector for WebUI * Add title to tag count --- .../mastodon/actions/featured_tags.js | 34 +++++++++ app/javascript/mastodon/actions/timelines.js | 4 +- .../account/components/featured_tags.js | 71 +++++++++++++++++++ .../account_timeline/components/header.js | 20 ++++-- .../features/account_timeline/index.js | 26 ++++--- app/javascript/mastodon/features/ui/index.js | 1 + app/javascript/mastodon/locales/en.json | 3 + .../mastodon/reducers/user_lists.js | 28 +++++++- .../styles/mastodon/components.scss | 27 +++++++ 9 files changed, 194 insertions(+), 20 deletions(-) create mode 100644 app/javascript/mastodon/actions/featured_tags.js create mode 100644 app/javascript/mastodon/features/account/components/featured_tags.js diff --git a/app/javascript/mastodon/actions/featured_tags.js b/app/javascript/mastodon/actions/featured_tags.js new file mode 100644 index 0000000000..18bb615394 --- /dev/null +++ b/app/javascript/mastodon/actions/featured_tags.js @@ -0,0 +1,34 @@ +import api from '../api'; + +export const FEATURED_TAGS_FETCH_REQUEST = 'FEATURED_TAGS_FETCH_REQUEST'; +export const FEATURED_TAGS_FETCH_SUCCESS = 'FEATURED_TAGS_FETCH_SUCCESS'; +export const FEATURED_TAGS_FETCH_FAIL = 'FEATURED_TAGS_FETCH_FAIL'; + +export const fetchFeaturedTags = (id) => (dispatch, getState) => { + if (getState().getIn(['user_lists', 'featured_tags', id, 'items'])) { + return; + } + + dispatch(fetchFeaturedTagsRequest(id)); + + api(getState).get(`/api/v1/accounts/${id}/featured_tags`) + .then(({ data }) => dispatch(fetchFeaturedTagsSuccess(id, data))) + .catch(err => dispatch(fetchFeaturedTagsFail(id, err))); +}; + +export const fetchFeaturedTagsRequest = (id) => ({ + type: FEATURED_TAGS_FETCH_REQUEST, + id, +}); + +export const fetchFeaturedTagsSuccess = (id, tags) => ({ + type: FEATURED_TAGS_FETCH_SUCCESS, + id, + tags, +}); + +export const fetchFeaturedTagsFail = (id, error) => ({ + type: FEATURED_TAGS_FETCH_FAIL, + id, + error, +}); diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js index 44fedd5c27..a3434908f0 100644 --- a/app/javascript/mastodon/actions/timelines.js +++ b/app/javascript/mastodon/actions/timelines.js @@ -143,8 +143,8 @@ export function fillTimelineGaps(timelineId, path, params = {}, done = noOp) { export const expandHomeTimeline = ({ maxId } = {}, done = noOp) => expandTimeline('home', '/api/v1/timelines/home', { max_id: maxId }, done); export const expandPublicTimeline = ({ maxId, onlyMedia, onlyRemote } = {}, done = noOp) => expandTimeline(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, max_id: maxId, only_media: !!onlyMedia }, done); export const expandCommunityTimeline = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }, done); -export const expandAccountTimeline = (accountId, { maxId, withReplies } = {}) => expandTimeline(`account:${accountId}${withReplies ? ':with_replies' : ''}`, `/api/v1/accounts/${accountId}/statuses`, { exclude_replies: !withReplies, max_id: maxId }); -export const expandAccountFeaturedTimeline = accountId => expandTimeline(`account:${accountId}:pinned`, `/api/v1/accounts/${accountId}/statuses`, { pinned: true }); +export const expandAccountTimeline = (accountId, { maxId, withReplies, tagged } = {}) => expandTimeline(`account:${accountId}${withReplies ? ':with_replies' : ''}${tagged ? `:${tagged}` : ''}`, `/api/v1/accounts/${accountId}/statuses`, { exclude_replies: !withReplies, tagged, max_id: maxId }); +export const expandAccountFeaturedTimeline = (accountId, { tagged } = {}) => expandTimeline(`account:${accountId}:pinned${tagged ? `:${tagged}` : ''}`, `/api/v1/accounts/${accountId}/statuses`, { pinned: true, tagged }); export const expandAccountMediaTimeline = (accountId, { maxId } = {}) => expandTimeline(`account:${accountId}:media`, `/api/v1/accounts/${accountId}/statuses`, { max_id: maxId, only_media: true, limit: 40 }); export const expandListTimeline = (id, { maxId } = {}, done = noOp) => expandTimeline(`list:${id}`, `/api/v1/timelines/list/${id}`, { max_id: maxId }, done); export const expandHashtagTimeline = (hashtag, { maxId, tags, local } = {}, done = noOp) => { diff --git a/app/javascript/mastodon/features/account/components/featured_tags.js b/app/javascript/mastodon/features/account/components/featured_tags.js new file mode 100644 index 0000000000..3d5b8b0793 --- /dev/null +++ b/app/javascript/mastodon/features/account/components/featured_tags.js @@ -0,0 +1,71 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { defineMessages, injectIntl } from 'react-intl'; +import classNames from 'classnames'; +import Permalink from 'mastodon/components/permalink'; +import ShortNumber from 'mastodon/components/short_number'; +import { List as ImmutableList } from 'immutable'; + +const messages = defineMessages({ + hashtag_all: { id: 'account.hashtag_all', defaultMessage: 'All' }, + hashtag_all_description: { id: 'account.hashtag_all_description', defaultMessage: 'All posts (deselect hashtags)' }, + hashtag_select_description: { id: 'account.hashtag_select_description', defaultMessage: 'Select hashtag #{name}' }, + statuses_counter: { id: 'account.statuses_counter', defaultMessage: '{count, plural, one {{counter} Post} other {{counter} Posts}}' }, +}); + +const mapStateToProps = (state, { account }) => ({ + featuredTags: state.getIn(['user_lists', 'featured_tags', account.get('id'), 'items'], ImmutableList()), +}); + +export default @connect(mapStateToProps) +@injectIntl +class FeaturedTags extends ImmutablePureComponent { + + static contextTypes = { + router: PropTypes.object, + }; + + static propTypes = { + account: ImmutablePropTypes.map, + featuredTags: ImmutablePropTypes.list, + tagged: PropTypes.string, + intl: PropTypes.object.isRequired, + }; + + render () { + const { account, featuredTags, tagged, intl } = this.props; + + if (!account || featuredTags.isEmpty()) { + return null; + } + + const suspended = account.get('suspended'); + + return ( +
    +
    +
    + {intl.formatMessage(messages.hashtag_all)} + {!suspended && featuredTags.map(featuredTag => { + const name = featuredTag.get('name'); + const url = featuredTag.get('url'); + const to = `/@${account.get('acct')}/tagged/${name}`; + const desc = intl.formatMessage(messages.hashtag_select_description, { name }); + const count = featuredTag.get('statuses_count'); + + return ( + + #{name} ({}) + + ); + })} +
    +
    +
    + ); + } + +} diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js index f31848f412..ea34a934a7 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.js +++ b/app/javascript/mastodon/features/account_timeline/components/header.js @@ -1,7 +1,8 @@ -import React from 'react'; +import React, { Fragment } from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import InnerHeader from '../../account/components/header'; +import FeaturedTags from '../../account/components/featured_tags'; import ImmutablePureComponent from 'react-immutable-pure-component'; import MovedNote from './moved_note'; import { FormattedMessage } from 'react-intl'; @@ -27,6 +28,7 @@ export default class Header extends ImmutablePureComponent { hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, + tagged: PropTypes.string, }; static contextTypes = { @@ -102,7 +104,7 @@ export default class Header extends ImmutablePureComponent { } render () { - const { account, hidden, hideTabs } = this.props; + const { account, hidden, hideTabs, tagged } = this.props; if (account === null) { return null; @@ -134,11 +136,15 @@ export default class Header extends ImmutablePureComponent { /> {!(hideTabs || hidden) && ( -
    - - - -
    + +
    + + + +
    + + +
    )}
    ); diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index 5b592c5a76..51fb76f1f6 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -18,10 +18,11 @@ import { me } from 'mastodon/initial_state'; import { connectTimeline, disconnectTimeline } from 'mastodon/actions/timelines'; import LimitedAccountHint from './components/limited_account_hint'; import { getAccountHidden } from 'mastodon/selectors'; +import { fetchFeaturedTags } from '../../actions/featured_tags'; const emptyList = ImmutableList(); -const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) => { +const mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = false }) => { const accountId = id || state.getIn(['accounts_map', acct]); if (!accountId) { @@ -30,7 +31,7 @@ const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) = }; } - const path = withReplies ? `${accountId}:with_replies` : accountId; + const path = withReplies ? `${accountId}:with_replies` : `${accountId}${tagged ? `:${tagged}` : ''}`; return { accountId, @@ -38,7 +39,7 @@ const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) = remoteUrl: state.getIn(['accounts', accountId, 'url']), isAccount: !!state.getIn(['accounts', accountId]), statusIds: state.getIn(['timelines', `account:${path}`, 'items'], emptyList), - featuredStatusIds: withReplies ? ImmutableList() : state.getIn(['timelines', `account:${accountId}:pinned`, 'items'], emptyList), + featuredStatusIds: withReplies ? ImmutableList() : state.getIn(['timelines', `account:${accountId}:pinned${tagged ? `:${tagged}` : ''}`, 'items'], emptyList), isLoading: state.getIn(['timelines', `account:${path}`, 'isLoading']), hasMore: state.getIn(['timelines', `account:${path}`, 'hasMore']), suspended: state.getIn(['accounts', accountId, 'suspended'], false), @@ -62,6 +63,7 @@ class AccountTimeline extends ImmutablePureComponent { params: PropTypes.shape({ acct: PropTypes.string, id: PropTypes.string, + tagged: PropTypes.string, }).isRequired, accountId: PropTypes.string, dispatch: PropTypes.func.isRequired, @@ -80,15 +82,16 @@ class AccountTimeline extends ImmutablePureComponent { }; _load () { - const { accountId, withReplies, dispatch } = this.props; + const { accountId, withReplies, params: { tagged }, dispatch } = this.props; dispatch(fetchAccount(accountId)); if (!withReplies) { - dispatch(expandAccountFeaturedTimeline(accountId)); + dispatch(expandAccountFeaturedTimeline(accountId, { tagged })); } - dispatch(expandAccountTimeline(accountId, { withReplies })); + dispatch(fetchFeaturedTags(accountId)); + dispatch(expandAccountTimeline(accountId, { withReplies, tagged })); if (accountId === me) { dispatch(connectTimeline(`account:${me}`)); @@ -106,12 +109,17 @@ class AccountTimeline extends ImmutablePureComponent { } componentDidUpdate (prevProps) { - const { params: { acct }, accountId, dispatch } = this.props; + const { params: { acct, tagged }, accountId, withReplies, dispatch } = this.props; if (prevProps.accountId !== accountId && accountId) { this._load(); } else if (prevProps.params.acct !== acct) { dispatch(lookupAccount(acct)); + } else if (prevProps.params.tagged !== tagged) { + if (!withReplies) { + dispatch(expandAccountFeaturedTimeline(accountId, { tagged })); + } + dispatch(expandAccountTimeline(accountId, { withReplies, tagged })); } if (prevProps.accountId === me && accountId !== me) { @@ -128,7 +136,7 @@ class AccountTimeline extends ImmutablePureComponent { } handleLoadMore = maxId => { - this.props.dispatch(expandAccountTimeline(this.props.accountId, { maxId, withReplies: this.props.withReplies })); + this.props.dispatch(expandAccountTimeline(this.props.accountId, { maxId, withReplies: this.props.withReplies, tagged: this.props.params.tagged })); } render () { @@ -174,7 +182,7 @@ class AccountTimeline extends ImmutablePureComponent { } + prepend={} alwaysPrepend append={remoteMessage} scrollKey='account_timeline' diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 8333ea2829..8f9f38036f 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -195,6 +195,7 @@ class SwitchingColumnsArea extends React.PureComponent { + diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 3eb13a8ea1..d840a7103f 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -35,6 +35,9 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.hashtag_all": "All", + "account.hashtag_all_description": "All posts (deselect hashtags)", + "account.hashtag_select_description": "Select hashtag #{name}", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", "account.languages": "Change subscribed languages", diff --git a/app/javascript/mastodon/reducers/user_lists.js b/app/javascript/mastodon/reducers/user_lists.js index 10aaa2d682..f19c1e2e9d 100644 --- a/app/javascript/mastodon/reducers/user_lists.js +++ b/app/javascript/mastodon/reducers/user_lists.js @@ -22,7 +22,7 @@ import { FOLLOW_REQUESTS_EXPAND_FAIL, FOLLOW_REQUEST_AUTHORIZE_SUCCESS, FOLLOW_REQUEST_REJECT_SUCCESS, -} from '../actions/accounts'; + } from '../actions/accounts'; import { REBLOGS_FETCH_SUCCESS, FAVOURITES_FETCH_SUCCESS, @@ -51,7 +51,12 @@ import { DIRECTORY_EXPAND_SUCCESS, DIRECTORY_EXPAND_FAIL, } from 'mastodon/actions/directory'; -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; +import { + FEATURED_TAGS_FETCH_REQUEST, + FEATURED_TAGS_FETCH_SUCCESS, + FEATURED_TAGS_FETCH_FAIL, +} from 'mastodon/actions/featured_tags'; +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; const initialListState = ImmutableMap({ next: null, @@ -67,6 +72,7 @@ const initialState = ImmutableMap({ follow_requests: initialListState, blocks: initialListState, mutes: initialListState, + featured_tags: initialListState, }); const normalizeList = (state, path, accounts, next) => { @@ -89,6 +95,18 @@ const normalizeFollowRequest = (state, notification) => { }); }; +const normalizeFeaturedTag = (featuredTags, accountId) => { + const normalizeFeaturedTag = { ...featuredTags, accountId: accountId }; + return fromJS(normalizeFeaturedTag); +}; + +const normalizeFeaturedTags = (state, path, featuredTags, accountId) => { + return state.setIn(path, ImmutableMap({ + items: ImmutableList(featuredTags.map(featuredTag => normalizeFeaturedTag(featuredTag, accountId)).sort((a, b) => b.get('statuses_count') - a.get('statuses_count'))), + isLoading: false, + })); +}; + export default function userLists(state = initialState, action) { switch(action.type) { case FOLLOWERS_FETCH_SUCCESS: @@ -160,6 +178,12 @@ export default function userLists(state = initialState, action) { case DIRECTORY_FETCH_FAIL: case DIRECTORY_EXPAND_FAIL: return state.setIn(['directory', 'isLoading'], false); + case FEATURED_TAGS_FETCH_SUCCESS: + return normalizeFeaturedTags(state, ['featured_tags', action.id], action.tags, action.id); + case FEATURED_TAGS_FETCH_REQUEST: + return state.setIn(['featured_tags', action.id, 'isLoading'], true); + case FEATURED_TAGS_FETCH_FAIL: + return state.setIn(['featured_tags', action.id, 'isLoading'], false); default: return state; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index d4657d1804..f8f9200f47 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7338,6 +7338,33 @@ noscript { } } } + + &__hashtag-links { + overflow: hidden; + padding: 10px 5px; + margin: 0; + color: $darker-text-color; + border-bottom: 1px solid lighten($ui-base-color, 12%); + + a { + display: inline-block; + color: $darker-text-color; + text-decoration: none; + padding: 5px 10px; + font-weight: 500; + + strong { + font-weight: 700; + color: $primary-text-color; + } + } + + a.active { + color: darken($ui-base-color, 4%); + background: $darker-text-color; + border-radius: 18px; + } + } } &__account-note { From 3702afec9f0a0009297baab5636000fa3a5b7789 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Mon, 17 Oct 2022 15:32:48 +0900 Subject: [PATCH 051/500] Add detailed description section to issue template (#19365) --- .github/ISSUE_TEMPLATE/1.bug_report.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/1.bug_report.yml b/.github/ISSUE_TEMPLATE/1.bug_report.yml index 9cdf813f7b..cdd08d2b0d 100644 --- a/.github/ISSUE_TEMPLATE/1.bug_report.yml +++ b/.github/ISSUE_TEMPLATE/1.bug_report.yml @@ -31,6 +31,11 @@ body: description: What happened? validations: required: true + - type: textarea + attributes: + label: Detailed description + validations: + required: false - type: textarea attributes: label: Specifications @@ -38,5 +43,14 @@ body: What version or commit hash of Mastodon did you find this bug in? If a front-end issue, what browser and operating systems were you using? + placeholder: | + Mastodon 3.5.3 (or Edge) + Ruby 2.7.6 (or v3.1.2) + Node.js 16.18.0 + + Google Chrome 106.0.5249.119 + Firefox 105.0.3 + + etc... validations: required: true From 8a1d10cb35bdd89c2c950aa65cbdca737ac763fc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 18 Oct 2022 18:57:01 +0200 Subject: [PATCH 052/500] Fix error while server rules are loading in report modal in web UI (#19385) --- app/javascript/mastodon/features/report/category.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/report/category.js b/app/javascript/mastodon/features/report/category.js index 3658bb7075..7eeae6da2a 100644 --- a/app/javascript/mastodon/features/report/category.js +++ b/app/javascript/mastodon/features/report/category.js @@ -5,6 +5,7 @@ import { connect } from 'react-redux'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; import Option from './components/option'; +import { List as ImmutableList } from 'immutable'; const messages = defineMessages({ dislike: { id: 'report.reasons.dislike', defaultMessage: 'I don\'t like it' }, @@ -20,7 +21,7 @@ const messages = defineMessages({ }); const mapStateToProps = state => ({ - rules: state.getIn(['server', 'rules']), + rules: state.getIn(['server', 'rules'], ImmutableList()), }); export default @connect(mapStateToProps) From dd5d99f83f20740addcd47591177496795344122 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 18 Oct 2022 19:01:59 +0200 Subject: [PATCH 053/500] Fix error on migration page (#19386) --- app/views/settings/migrations/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/settings/migrations/show.html.haml b/app/views/settings/migrations/show.html.haml index 492f6fe12c..14bebb19b0 100644 --- a/app/views/settings/migrations/show.html.haml +++ b/app/views/settings/migrations/show.html.haml @@ -76,7 +76,7 @@ - if migration.target_account.present? = compact_account_link_to migration.target_account - else - = migration.pretty_acct + = migration.acct %td= number_with_delimiter migration.followers_count From 9c7f4ab8e8d19d29a5b9367ebaec8fc8af70ab7f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 18 Oct 2022 19:33:11 +0200 Subject: [PATCH 054/500] Fix missing rules in report modal in web UI (#19387) --- app/javascript/mastodon/features/report/category.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/report/category.js b/app/javascript/mastodon/features/report/category.js index 7eeae6da2a..c6c0a506f3 100644 --- a/app/javascript/mastodon/features/report/category.js +++ b/app/javascript/mastodon/features/report/category.js @@ -21,7 +21,7 @@ const messages = defineMessages({ }); const mapStateToProps = state => ({ - rules: state.getIn(['server', 'rules'], ImmutableList()), + rules: state.getIn(['server', 'server', 'rules'], ImmutableList()), }); export default @connect(mapStateToProps) From 4adb267f9177f6036f8f27cd37544c54b97f3dd2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 18 Oct 2022 21:21:20 +0200 Subject: [PATCH 055/500] Fix showing translate button when status has no language in web UI (#19388) --- app/javascript/mastodon/components/status_content.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index a88c5f0841..6ad3e018a7 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -181,7 +181,7 @@ class StatusContent extends React.PureComponent { const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); - const renderTranslate = this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && intl.locale !== status.get('language'); + const renderTranslate = this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && status.get('language') !== null && intl.locale !== status.get('language'); const language = preloadedLanguages.find(lang => lang[0] === status.get('language')); const languageName = language ? language[2] : status.get('language'); From 1b83040bd45770ff831ff697418aaa2468a1516a Mon Sep 17 00:00:00 2001 From: prplecake Date: Tue, 18 Oct 2022 17:12:55 -0500 Subject: [PATCH 056/500] Don't use "unfollow language" when cancelling follow requests (#19363) * Don't use "unfollow language" when cancelling follow requests - Adds two new i18n keys: `confirmations.cancel_follow_request.confirm` and `confirmations.cancel_follow_request.message` - Update the header container to use new language * "Withdraw follow request" instead of "cancel follow request" --- .../mastodon/features/account/components/header.js | 2 +- .../account_timeline/containers/header_container.js | 11 ++++++++++- .../features/directory/components/account_card.js | 2 +- app/javascript/mastodon/locales/en.json | 4 +++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 17ab7db771..44c53f9cea 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -20,7 +20,7 @@ import { Helmet } from 'react-helmet'; const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, follow: { id: 'account.follow', defaultMessage: 'Follow' }, - cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Cancel follow request' }, + cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Withdraw follow request' }, requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.js index 46fa573dd8..62e59939c5 100644 --- a/app/javascript/mastodon/features/account_timeline/containers/header_container.js +++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.js @@ -23,6 +23,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { unfollowModal } from '../../../initial_state'; const messages = defineMessages({ + cancelFollowRequestConfirm: { id: 'confirmations.cancel_follow_request.confirm', defaultMessage: 'Withdraw request' }, unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Hide entire domain' }, }); @@ -42,7 +43,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch, { intl }) => ({ onFollow (account) { - if (account.getIn(['relationship', 'following']) || account.getIn(['relationship', 'requested'])) { + if (account.getIn(['relationship', 'following'])) { if (unfollowModal) { dispatch(openModal('CONFIRM', { message: @{account.get('acct')} }} />, @@ -52,6 +53,14 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ } else { dispatch(unfollowAccount(account.get('id'))); } + } else if (account.getIn(['relationship', 'requested'])) { + if (unfollowModal) { + dispatch(openModal('CONFIRM', { + message: @{account.get('acct')} }} />, + confirm: intl.formatMessage(messages.cancelFollowRequestConfirm), + onConfirm: () => dispatch(unfollowAccount(account.get('id'))), + })); + } } else { dispatch(followAccount(account.get('id'))); } diff --git a/app/javascript/mastodon/features/directory/components/account_card.js b/app/javascript/mastodon/features/directory/components/account_card.js index 27ba4e7f40..7c675a1471 100644 --- a/app/javascript/mastodon/features/directory/components/account_card.js +++ b/app/javascript/mastodon/features/directory/components/account_card.js @@ -23,7 +23,7 @@ import classNames from 'classnames'; const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, follow: { id: 'account.follow', defaultMessage: 'Follow' }, - cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Cancel follow request' }, + cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Withdraw follow request' }, requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' }, unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' }, diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index d840a7103f..f827032ae9 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -20,7 +20,7 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", @@ -146,6 +146,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Block entire domain", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", From aefa9253d61def572396c18a8d2ac3cc706ffa2e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 19 Oct 2022 11:30:59 +0200 Subject: [PATCH 057/500] Change featured hashtags to be displayed in navigation panel (#19382) --- app/javascript/mastodon/components/hashtag.js | 36 ++++++++--- .../mastodon/components/navigation_portal.js | 30 ++++++++++ .../account/components/featured_tags.js | 60 +++++++------------ .../containers/featured_tags_container.js | 15 +++++ .../mastodon/features/account/navigation.js | 51 ++++++++++++++++ .../account_timeline/components/header.js | 20 +++---- .../ui/components/navigation_panel.js | 11 +--- .../styles/mastodon/components.scss | 33 ---------- .../rest/featured_tag_serializer.rb | 8 +++ 9 files changed, 162 insertions(+), 102 deletions(-) create mode 100644 app/javascript/mastodon/components/navigation_portal.js create mode 100644 app/javascript/mastodon/features/account/containers/featured_tags_container.js create mode 100644 app/javascript/mastodon/features/account/navigation.js diff --git a/app/javascript/mastodon/components/hashtag.js b/app/javascript/mastodon/components/hashtag.js index 4a5a4bb57a..8dd27290a9 100644 --- a/app/javascript/mastodon/components/hashtag.js +++ b/app/javascript/mastodon/components/hashtag.js @@ -65,23 +65,35 @@ ImmutableHashtag.propTypes = { hashtag: ImmutablePropTypes.map.isRequired, }; -const Hashtag = ({ name, href, to, people, history, className }) => ( +const Hashtag = ({ name, href, to, people, uses, history, className, description, withGraph }) => (
    {name ? #{name} : } - {typeof people !== 'undefined' ? : } + {description ? ( + {description} + ) : ( + typeof people !== 'undefined' ? : + )}
    -
    - - 0)}> - - - -
    + {typeof uses !== 'undefined' && ( +
    + +
    + )} + + {withGraph && ( +
    + + 0)}> + + + +
    + )}
    ); @@ -90,9 +102,15 @@ Hashtag.propTypes = { href: PropTypes.string, to: PropTypes.string, people: PropTypes.number, + description: PropTypes.node, uses: PropTypes.number, history: PropTypes.arrayOf(PropTypes.number), className: PropTypes.string, + withGraph: PropTypes.bool, +}; + +Hashtag.defaultProps = { + withGraph: true, }; export default Hashtag; diff --git a/app/javascript/mastodon/components/navigation_portal.js b/app/javascript/mastodon/components/navigation_portal.js new file mode 100644 index 0000000000..b2d054a3b6 --- /dev/null +++ b/app/javascript/mastodon/components/navigation_portal.js @@ -0,0 +1,30 @@ +import React from 'react'; +import { Switch, Route, withRouter } from 'react-router-dom'; +import { showTrends } from 'mastodon/initial_state'; +import Trends from 'mastodon/features/getting_started/containers/trends_container'; +import AccountNavigation from 'mastodon/features/account/navigation'; + +const DefaultNavigation = () => ( + <> + {showTrends && ( + <> +
    + + + )} + +); + +export default @withRouter +class NavigationPortal extends React.PureComponent { + + render () { + return ( + + + + + ); + } + +} diff --git a/app/javascript/mastodon/features/account/components/featured_tags.js b/app/javascript/mastodon/features/account/components/featured_tags.js index 3d5b8b0793..5837f6e6d8 100644 --- a/app/javascript/mastodon/features/account/components/featured_tags.js +++ b/app/javascript/mastodon/features/account/components/featured_tags.js @@ -1,27 +1,16 @@ import React from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { defineMessages, injectIntl } from 'react-intl'; -import classNames from 'classnames'; -import Permalink from 'mastodon/components/permalink'; -import ShortNumber from 'mastodon/components/short_number'; -import { List as ImmutableList } from 'immutable'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import Hashtag from 'mastodon/components/hashtag'; const messages = defineMessages({ - hashtag_all: { id: 'account.hashtag_all', defaultMessage: 'All' }, - hashtag_all_description: { id: 'account.hashtag_all_description', defaultMessage: 'All posts (deselect hashtags)' }, - hashtag_select_description: { id: 'account.hashtag_select_description', defaultMessage: 'Select hashtag #{name}' }, - statuses_counter: { id: 'account.statuses_counter', defaultMessage: '{count, plural, one {{counter} Post} other {{counter} Posts}}' }, + lastStatusAt: { id: 'account.featured_tags.last_status_at', defaultMessage: 'Last post on {date}' }, + empty: { id: 'account.featured_tags.last_status_never', defaultMessage: 'No posts' }, }); -const mapStateToProps = (state, { account }) => ({ - featuredTags: state.getIn(['user_lists', 'featured_tags', account.get('id'), 'items'], ImmutableList()), -}); - -export default @connect(mapStateToProps) -@injectIntl +export default @injectIntl class FeaturedTags extends ImmutablePureComponent { static contextTypes = { @@ -36,34 +25,27 @@ class FeaturedTags extends ImmutablePureComponent { }; render () { - const { account, featuredTags, tagged, intl } = this.props; + const { account, featuredTags, intl } = this.props; - if (!account || featuredTags.isEmpty()) { + if (!account || account.get('suspended') || featuredTags.isEmpty()) { return null; } - const suspended = account.get('suspended'); - return ( -
    -
    -
    - {intl.formatMessage(messages.hashtag_all)} - {!suspended && featuredTags.map(featuredTag => { - const name = featuredTag.get('name'); - const url = featuredTag.get('url'); - const to = `/@${account.get('acct')}/tagged/${name}`; - const desc = intl.formatMessage(messages.hashtag_select_description, { name }); - const count = featuredTag.get('statuses_count'); - - return ( - - #{name} ({}) - - ); - })} -
    -
    +
    +

    }} />

    + + {featuredTags.map(featuredTag => ( + 0) ? intl.formatMessage(messages.lastStatusAt, { date: intl.formatDate(featuredTag.get('last_status_at'), { month: 'short', day: '2-digit' }) }) : intl.formatMessage(messages.empty)} + /> + ))}
    ); } diff --git a/app/javascript/mastodon/features/account/containers/featured_tags_container.js b/app/javascript/mastodon/features/account/containers/featured_tags_container.js new file mode 100644 index 0000000000..7e206567fb --- /dev/null +++ b/app/javascript/mastodon/features/account/containers/featured_tags_container.js @@ -0,0 +1,15 @@ +import { connect } from 'react-redux'; +import FeaturedTags from '../components/featured_tags'; +import { makeGetAccount } from 'mastodon/selectors'; +import { List as ImmutableList } from 'immutable'; + +const mapStateToProps = () => { + const getAccount = makeGetAccount(); + + return (state, { accountId }) => ({ + account: getAccount(state, accountId), + featuredTags: state.getIn(['user_lists', 'featured_tags', accountId, 'items'], ImmutableList()), + }); +}; + +export default connect(mapStateToProps)(FeaturedTags); diff --git a/app/javascript/mastodon/features/account/navigation.js b/app/javascript/mastodon/features/account/navigation.js new file mode 100644 index 0000000000..1226741395 --- /dev/null +++ b/app/javascript/mastodon/features/account/navigation.js @@ -0,0 +1,51 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import FeaturedTags from 'mastodon/features/account/containers/featured_tags_container'; + +const mapStateToProps = (state, { match: { params: { acct } } }) => { + const accountId = state.getIn(['accounts_map', acct]); + + if (!accountId) { + return { + isLoading: true, + }; + } + + return { + accountId, + isLoading: false, + }; +}; + +export default @connect(mapStateToProps) +class AccountNavigation extends React.PureComponent { + + static propTypes = { + match: PropTypes.shape({ + params: PropTypes.shape({ + acct: PropTypes.string, + tagged: PropTypes.string, + }).isRequired, + }).isRequired, + + accountId: PropTypes.string, + isLoading: PropTypes.bool, + }; + + render () { + const { accountId, isLoading, match: { params: { tagged } } } = this.props; + + if (isLoading) { + return null; + } + + return ( + <> +
    + + + ); + } + +} diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js index ea34a934a7..f31848f412 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.js +++ b/app/javascript/mastodon/features/account_timeline/components/header.js @@ -1,8 +1,7 @@ -import React, { Fragment } from 'react'; +import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import InnerHeader from '../../account/components/header'; -import FeaturedTags from '../../account/components/featured_tags'; import ImmutablePureComponent from 'react-immutable-pure-component'; import MovedNote from './moved_note'; import { FormattedMessage } from 'react-intl'; @@ -28,7 +27,6 @@ export default class Header extends ImmutablePureComponent { hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, - tagged: PropTypes.string, }; static contextTypes = { @@ -104,7 +102,7 @@ export default class Header extends ImmutablePureComponent { } render () { - const { account, hidden, hideTabs, tagged } = this.props; + const { account, hidden, hideTabs } = this.props; if (account === null) { return null; @@ -136,15 +134,11 @@ export default class Header extends ImmutablePureComponent { /> {!(hideTabs || hidden) && ( - -
    - - - -
    - - -
    +
    + + + +
    )}
    ); diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 166d3552bc..757ef54ae2 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -3,13 +3,13 @@ import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; import Logo from 'mastodon/components/logo'; -import TrendsContainer from 'mastodon/features/getting_started/containers/trends_container'; -import { showTrends, timelinePreview } from 'mastodon/initial_state'; +import { timelinePreview } from 'mastodon/initial_state'; import ColumnLink from './column_link'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; import SignInBanner from './sign_in_banner'; +import NavigationPortal from 'mastodon/components/navigation_portal'; const messages = defineMessages({ home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, @@ -93,12 +93,7 @@ class NavigationPanel extends React.Component {
    - {showTrends && ( - -
    - - - )} +
    ); } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f8f9200f47..587eba6633 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7338,33 +7338,6 @@ noscript { } } } - - &__hashtag-links { - overflow: hidden; - padding: 10px 5px; - margin: 0; - color: $darker-text-color; - border-bottom: 1px solid lighten($ui-base-color, 12%); - - a { - display: inline-block; - color: $darker-text-color; - text-decoration: none; - padding: 5px 10px; - font-weight: 500; - - strong { - font-weight: 700; - color: $primary-text-color; - } - } - - a.active { - color: darken($ui-base-color, 4%); - background: $darker-text-color; - border-radius: 18px; - } - } } &__account-note { @@ -7482,12 +7455,6 @@ noscript { margin-left: 5px; color: $secondary-text-color; text-decoration: none; - - &__asterisk { - color: $darker-text-color; - font-size: 18px; - vertical-align: super; - } } &__sparkline { diff --git a/app/serializers/rest/featured_tag_serializer.rb b/app/serializers/rest/featured_tag_serializer.rb index 8abcd9b90f..c4b35ab03a 100644 --- a/app/serializers/rest/featured_tag_serializer.rb +++ b/app/serializers/rest/featured_tag_serializer.rb @@ -16,4 +16,12 @@ class REST::FeaturedTagSerializer < ActiveModel::Serializer def name object.display_name end + + def statuses_count + object.statuses_count.to_s + end + + def last_status_at + object.last_status_at&.to_date&.iso8601 + end end From 7d3d29c418bfe2a4c87326fe06bebb3e2688686d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Oct 2022 09:47:06 +0900 Subject: [PATCH 058/500] Bump eslint-plugin-promise from 6.0.1 to 6.1.0 (#19369) Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 6.0.1 to 6.1.0. - [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases) - [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v6.0.1...v6.1.0) --- updated-dependencies: - dependency-name: eslint-plugin-promise dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4a678f65a2..440f2b0edd 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", - "eslint-plugin-promise": "~6.0.1", + "eslint-plugin-promise": "~6.1.0", "eslint-plugin-react": "~7.31.9", "jest": "^29.1.2", "jest-environment-jsdom": "^29.1.2", diff --git a/yarn.lock b/yarn.lock index cdd34b82c0..5887efed7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4639,10 +4639,10 @@ eslint-plugin-jsx-a11y@~6.6.1: minimatch "^3.1.2" semver "^6.3.0" -eslint-plugin-promise@~6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" - integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== +eslint-plugin-promise@~6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.0.tgz#99e54d07272df5a6440209cb36d0d692be0610dd" + integrity sha512-NYCfDZF/KHt27p06nFAttgWuFyIDSUMnNaJBIY1FY9GpBFhdT2vMG64HlFguSgcJeyM5by6Yr5csSOuJm60eXQ== eslint-plugin-react@~7.31.9: version "7.31.9" From 2792184907cbbcfbd4de8abc2687271042ba9d6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Oct 2022 09:47:48 +0900 Subject: [PATCH 059/500] Bump stylelint from 14.13.0 to 14.14.0 (#19373) Bumps [stylelint](https://github.com/stylelint/stylelint) from 14.13.0 to 14.14.0. - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/14.13.0...14.14.0) --- updated-dependencies: - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 440f2b0edd..a1eb16de2d 100644 --- a/package.json +++ b/package.json @@ -161,7 +161,7 @@ "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", "react-test-renderer": "^16.14.0", - "stylelint": "^14.13.0", + "stylelint": "^14.14.0", "stylelint-config-standard-scss": "^5.0.0", "webpack-dev-server": "^3.11.3", "yargs": "^17.6.0" diff --git a/yarn.lock b/yarn.lock index 5887efed7f..a14b3d659c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8882,7 +8882,7 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.15, postcss@^8.4.16, postcss@^8.4.17: +postcss@^8.2.15, postcss@^8.4.17: version "8.4.17" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.17.tgz#f87863ec7cd353f81f7ab2dec5d67d861bbb1be5" integrity sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q== @@ -10669,10 +10669,10 @@ stylelint-scss@^4.0.0: postcss-selector-parser "^6.0.6" postcss-value-parser "^4.1.0" -stylelint@^14.13.0: - version "14.13.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.13.0.tgz#0c0b8ba8c5cf39522a50c9928f5e44897c678538" - integrity sha512-NJSAdloiAB/jgVJKxMR90mWlctvmeBFGFVUvyKngi9+j/qPSJ5ZB+u8jOmGbLTnS7OHrII9NFGehPRyar8U5vg== +stylelint@^14.14.0: + version "14.14.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.14.0.tgz#1acb52497c9a921f23f9c4014d4e0ee6eba768d0" + integrity sha512-yUI+4xXfPHVnueYddSQ/e1GuEA/2wVhWQbGj16AmWLtQJtn28lVxfS4b0CsWyVRPgd3Auzi0NXOthIEUhtQmmA== dependencies: "@csstools/selector-specificity" "^2.0.2" balanced-match "^2.0.0" @@ -10697,7 +10697,7 @@ stylelint@^14.13.0: micromatch "^4.0.5" normalize-path "^3.0.0" picocolors "^1.0.0" - postcss "^8.4.16" + postcss "^8.4.17" postcss-media-query-parser "^0.2.3" postcss-resolve-nested-selector "^0.1.1" postcss-safe-parser "^6.0.0" From 4d9a3f8ab02779cc61e579068cbfc3d1ac5420b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Oct 2022 09:49:52 +0900 Subject: [PATCH 060/500] Bump react-select from 5.4.0 to 5.5.1 (#19377) Bumps [react-select](https://github.com/JedWatson/react-select) from 5.4.0 to 5.5.1. - [Release notes](https://github.com/JedWatson/react-select/releases) - [Changelog](https://github.com/JedWatson/react-select/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/JedWatson/react-select/compare/react-select@5.4.0...react-select@5.5.1) --- updated-dependencies: - dependency-name: react-select dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 24 +++++++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index a1eb16de2d..6119e85d6d 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "react-redux-loading-bar": "^5.0.4", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", - "react-select": "^5.4.0", + "react-select": "^5.5.1", "react-sparklines": "^1.7.0", "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.4", diff --git a/yarn.lock b/yarn.lock index a14b3d659c..a0246798b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1254,6 +1254,18 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@floating-ui/core@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.0.1.tgz#00e64d74e911602c8533957af0cce5af6b2e93c8" + integrity sha512-bO37brCPfteXQfFY0DyNDGB3+IMe4j150KFQcgJ5aBP295p9nBGeHEs/p0czrRbtlHq4Px/yoPXO/+dOCcF4uA== + +"@floating-ui/dom@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.0.2.tgz#c5184c52c6f50abd11052d71204f4be2d9245237" + integrity sha512-5X9WSvZ8/fjy3gDu8yx9HAA4KG1lazUN2P4/VnaXLxTO9Dz53HI1oYoh1OlhqFNlHgGDiwFX5WhFCc2ljbW3yA== + dependencies: + "@floating-ui/core" "^1.0.1" + "@formatjs/intl-unified-numberformat@^3.3.3": version "3.3.6" resolved "https://registry.yarnpkg.com/@formatjs/intl-unified-numberformat/-/intl-unified-numberformat-3.3.6.tgz#ab69818f7568894023cb31fdb5b5c7eed62c6537" @@ -9349,18 +9361,20 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" -react-select@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.4.0.tgz#81f6ac73906126706f104751ee14437bd16798f4" - integrity sha512-CjE9RFLUvChd5SdlfG4vqxZd55AZJRrLrHzkQyTYeHlpOztqcgnyftYAolJ0SGsBev6zAs6qFrjm6KU3eo2hzg== +react-select@^5.5.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.5.1.tgz#60cc6767e77396cdf1d6f49a10555b80d27e749a" + integrity sha512-zOXIKvNqrnBn030Goi7pRHfLJHnvjPweA4uDyj9me8YPqgkaJp+vX3eNGHOzTlI442rbfPUMGrEZQnymJn/XUg== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" "@emotion/react" "^11.8.1" + "@floating-ui/dom" "^1.0.1" "@types/react-transition-group" "^4.4.0" memoize-one "^5.0.0" prop-types "^15.6.0" react-transition-group "^4.3.0" + use-isomorphic-layout-effect "^1.1.2" react-side-effect@^2.1.0: version "2.1.2" @@ -11353,7 +11367,7 @@ use-composed-ref@^1.3.0: resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== -use-isomorphic-layout-effect@^1.1.1: +use-isomorphic-layout-effect@^1.1.1, use-isomorphic-layout-effect@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== From d19c7f4a4ce7bc7ee24e02cf0ba956e9297f2b45 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Oct 2022 11:54:45 +0900 Subject: [PATCH 061/500] Bump eslint-plugin-react from 7.31.9 to 7.31.10 (#19370) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.31.9 to 7.31.10. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.31.9...v7.31.10) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6119e85d6d..5d8f20abf1 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.1.0", - "eslint-plugin-react": "~7.31.9", + "eslint-plugin-react": "~7.31.10", "jest": "^29.1.2", "jest-environment-jsdom": "^29.1.2", "postcss-scss": "^4.0.5", diff --git a/yarn.lock b/yarn.lock index a0246798b3..6ae965464c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4656,10 +4656,10 @@ eslint-plugin-promise@~6.1.0: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.0.tgz#99e54d07272df5a6440209cb36d0d692be0610dd" integrity sha512-NYCfDZF/KHt27p06nFAttgWuFyIDSUMnNaJBIY1FY9GpBFhdT2vMG64HlFguSgcJeyM5by6Yr5csSOuJm60eXQ== -eslint-plugin-react@~7.31.9: - version "7.31.9" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.9.tgz#7474ad4e21db368f61d17e1f2e78d43dbbdd50b2" - integrity sha512-vrVJwusIw4L99lyfXjtCw8HWdloajsiYslMavogrBe2Gl8gr95TJsJnOMRasN4b4N24I3XuJf6aAV6MhyGmjqw== +eslint-plugin-react@~7.31.10: + version "7.31.10" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz#6782c2c7fe91c09e715d536067644bbb9491419a" + integrity sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" From b0e3f0312c3271a2705f912602fcba70f4ed8b69 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Thu, 20 Oct 2022 16:15:52 +0900 Subject: [PATCH 062/500] Add synchronization of remote featured tags (#19380) * Add LIMIT of featured tag to instance API response * Add featured_tags_collection_url to Account * Add synchronization of remote featured tags * Deliver update activity when updating featured tag * Remove featured_tags_collection_url * Revert "Add featured_tags_collection_url to Account" This reverts commit cff349fc27b104ded2df6bb5665132dc24dab09c. * Add hashtag sync from featured collections * Fix tag name normalize * Add target option to fetch featured collection * Refactor fetch_featured_tags_collection_service * Add LIMIT of featured tag to v1/instance API response --- .../api/v1/featured_tags_controller.rb | 2 + .../settings/featured_tags_controller.rb | 2 + app/models/featured_tag.rb | 4 +- app/serializers/rest/instance_serializer.rb | 4 + .../rest/v1/instance_serializer.rb | 4 + .../fetch_featured_collection_service.rb | 31 +++++++- .../fetch_featured_tags_collection_service.rb | 78 +++++++++++++++++++ .../activitypub/process_account_service.rb | 7 +- .../synchronize_featured_collection_worker.rb | 6 +- ...hronize_featured_tags_collection_worker.rb | 13 ++++ .../activitypub/update_distribution_worker.rb | 2 + 11 files changed, 148 insertions(+), 5 deletions(-) create mode 100644 app/services/activitypub/fetch_featured_tags_collection_service.rb create mode 100644 app/workers/activitypub/synchronize_featured_tags_collection_worker.rb diff --git a/app/controllers/api/v1/featured_tags_controller.rb b/app/controllers/api/v1/featured_tags_controller.rb index c1ead4f540..a67db7040a 100644 --- a/app/controllers/api/v1/featured_tags_controller.rb +++ b/app/controllers/api/v1/featured_tags_controller.rb @@ -14,11 +14,13 @@ class Api::V1::FeaturedTagsController < Api::BaseController def create @featured_tag = current_account.featured_tags.create!(featured_tag_params) + ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) render json: @featured_tag, serializer: REST::FeaturedTagSerializer end def destroy @featured_tag.destroy! + ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) render_empty end diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index aadff7c835..ae714e9125 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -13,6 +13,7 @@ class Settings::FeaturedTagsController < Settings::BaseController @featured_tag = current_account.featured_tags.new(featured_tag_params) if @featured_tag.save + ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) redirect_to settings_featured_tags_path else set_featured_tags @@ -24,6 +25,7 @@ class Settings::FeaturedTagsController < Settings::BaseController def destroy @featured_tag.destroy! + ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) redirect_to settings_featured_tags_path end diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index 201ce75f5c..b16c79ac79 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -26,6 +26,8 @@ class FeaturedTag < ApplicationRecord attr_writer :name + LIMIT = 10 + def name tag_id.present? ? tag.name : @name end @@ -50,7 +52,7 @@ class FeaturedTag < ApplicationRecord end def validate_featured_tags_limit - errors.add(:base, I18n.t('featured_tags.errors.limit')) if account.featured_tags.count >= 10 + errors.add(:base, I18n.t('featured_tags.errors.limit')) if account.featured_tags.count >= LIMIT end def validate_tag_name diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index dfa8ce40a8..7d00b20ba0 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -47,6 +47,10 @@ class REST::InstanceSerializer < ActiveModel::Serializer streaming: Rails.configuration.x.streaming_api_base_url, }, + accounts: { + max_featured_tags: FeaturedTag::LIMIT, + }, + statuses: { max_characters: StatusLengthValidator::MAX_CHARS, max_media_attachments: 4, diff --git a/app/serializers/rest/v1/instance_serializer.rb b/app/serializers/rest/v1/instance_serializer.rb index 8721754515..99d1b2bd62 100644 --- a/app/serializers/rest/v1/instance_serializer.rb +++ b/app/serializers/rest/v1/instance_serializer.rb @@ -58,6 +58,10 @@ class REST::V1::InstanceSerializer < ActiveModel::Serializer def configuration { + accounts: { + max_featured_tags: FeaturedTag::LIMIT, + }, + statuses: { max_characters: StatusLengthValidator::MAX_CHARS, max_media_attachments: 4, diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb index 37d05e0556..026fe24c5e 100644 --- a/app/services/activitypub/fetch_featured_collection_service.rb +++ b/app/services/activitypub/fetch_featured_collection_service.rb @@ -3,10 +3,11 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService include JsonLdHelper - def call(account) + def call(account, **options) return if account.featured_collection_url.blank? || account.suspended? || account.local? @account = account + @options = options @json = fetch_resource(@account.featured_collection_url, true, local_follower) return unless supported_context?(@json) @@ -36,7 +37,15 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService end def process_items(items) + process_note_items(items) if @options[:note] + process_hashtag_items(items) if @options[:hashtag] + end + + def process_note_items(items) status_ids = items.filter_map do |item| + type = item['type'] + next unless type == 'Note' + uri = value_or_id(item) next if ActivityPub::TagManager.instance.local_uri?(uri) @@ -67,6 +76,26 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService end end + def process_hashtag_items(items) + names = items.filter_map { |item| item['type'] == 'Hashtag' && item['name']&.delete_prefix('#') }.map { |name| HashtagNormalizer.new.normalize(name) } + to_remove = [] + to_add = names + + FeaturedTag.where(account: @account).map(&:name).each do |name| + if names.include?(name) + to_add.delete(name) + else + to_remove << name + end + end + + FeaturedTag.includes(:tag).where(account: @account, tags: { name: to_remove }).delete_all unless to_remove.empty? + + to_add.each do |name| + FeaturedTag.create!(account: @account, name: name) + end + end + def local_follower return @local_follower if defined?(@local_follower) diff --git a/app/services/activitypub/fetch_featured_tags_collection_service.rb b/app/services/activitypub/fetch_featured_tags_collection_service.rb new file mode 100644 index 0000000000..5559199381 --- /dev/null +++ b/app/services/activitypub/fetch_featured_tags_collection_service.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +class ActivityPub::FetchFeaturedTagsCollectionService < BaseService + include JsonLdHelper + + def call(account, url) + return if url.blank? || account.suspended? || account.local? + + @account = account + @json = fetch_resource(url, true, local_follower) + + return unless supported_context?(@json) + + process_items(collection_items(@json)) + end + + private + + def collection_items(collection) + all_items = [] + + collection = fetch_collection(collection['first']) if collection['first'].present? + + while collection.is_a?(Hash) + items = begin + case collection['type'] + when 'Collection', 'CollectionPage' + collection['items'] + when 'OrderedCollection', 'OrderedCollectionPage' + collection['orderedItems'] + end + end + + break if items.blank? + + all_items.concat(items) + + break if all_items.size >= FeaturedTag::LIMIT + + collection = collection['next'].present? ? fetch_collection(collection['next']) : nil + end + + all_items + end + + def fetch_collection(collection_or_uri) + return collection_or_uri if collection_or_uri.is_a?(Hash) + return if invalid_origin?(collection_or_uri) + + fetch_resource_without_id_validation(collection_or_uri, local_follower, true) + end + + def process_items(items) + names = items.filter_map { |item| item['type'] == 'Hashtag' && item['name']&.delete_prefix('#') }.map { |name| HashtagNormalizer.new.normalize(name) } + to_remove = [] + to_add = names + + FeaturedTag.where(account: @account).map(&:name).each do |name| + if names.include?(name) + to_add.delete(name) + else + to_remove << name + end + end + + FeaturedTag.includes(:tag).where(account: @account, tags: { name: to_remove }).delete_all unless to_remove.empty? + + to_add.each do |name| + FeaturedTag.create!(account: @account, name: name) + end + end + + def local_follower + return @local_follower if defined?(@local_follower) + + @local_follower = @account.followers.local.without_suspended.first + end +end diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 456b3524b5..3834d79ccf 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -39,6 +39,7 @@ class ActivityPub::ProcessAccountService < BaseService unless @options[:only_key] || @account.suspended? check_featured_collection! if @account.featured_collection_url.present? + check_featured_tags_collection! if @json['featuredTags'].present? check_links! unless @account.fields.empty? end @@ -149,7 +150,11 @@ class ActivityPub::ProcessAccountService < BaseService end def check_featured_collection! - ActivityPub::SynchronizeFeaturedCollectionWorker.perform_async(@account.id) + ActivityPub::SynchronizeFeaturedCollectionWorker.perform_async(@account.id, { 'hashtag' => @json['featuredTags'].blank? }) + end + + def check_featured_tags_collection! + ActivityPub::SynchronizeFeaturedTagsCollectionWorker.perform_async(@account.id, @json['featuredTags']) end def check_links! diff --git a/app/workers/activitypub/synchronize_featured_collection_worker.rb b/app/workers/activitypub/synchronize_featured_collection_worker.rb index 7a0898e89d..f67d693cb3 100644 --- a/app/workers/activitypub/synchronize_featured_collection_worker.rb +++ b/app/workers/activitypub/synchronize_featured_collection_worker.rb @@ -5,8 +5,10 @@ class ActivityPub::SynchronizeFeaturedCollectionWorker sidekiq_options queue: 'pull', lock: :until_executed - def perform(account_id) - ActivityPub::FetchFeaturedCollectionService.new.call(Account.find(account_id)) + def perform(account_id, options = {}) + options = { note: true, hashtag: false }.deep_merge(options.deep_symbolize_keys) + + ActivityPub::FetchFeaturedCollectionService.new.call(Account.find(account_id), **options) rescue ActiveRecord::RecordNotFound true end diff --git a/app/workers/activitypub/synchronize_featured_tags_collection_worker.rb b/app/workers/activitypub/synchronize_featured_tags_collection_worker.rb new file mode 100644 index 0000000000..14af4f725c --- /dev/null +++ b/app/workers/activitypub/synchronize_featured_tags_collection_worker.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class ActivityPub::SynchronizeFeaturedTagsCollectionWorker + include Sidekiq::Worker + + sidekiq_options queue: 'pull', lock: :until_executed + + def perform(account_id, url) + ActivityPub::FetchFeaturedTagsCollectionService.new.call(Account.find(account_id), url) + rescue ActiveRecord::RecordNotFound + true + end +end diff --git a/app/workers/activitypub/update_distribution_worker.rb b/app/workers/activitypub/update_distribution_worker.rb index 81fde63b84..d0391bb6f6 100644 --- a/app/workers/activitypub/update_distribution_worker.rb +++ b/app/workers/activitypub/update_distribution_worker.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class ActivityPub::UpdateDistributionWorker < ActivityPub::RawDistributionWorker + sidekiq_options queue: 'push', lock: :until_executed + # Distribute an profile update to servers that might have a copy # of the account in question def perform(account_id, options = {}) From 839f893168ab221b08fa439012189e6c29a2721a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 20 Oct 2022 14:35:29 +0200 Subject: [PATCH 063/500] Change public accounts pages to mount the web UI (#19319) * Change public accounts pages to mount the web UI * Fix handling of remote usernames in routes - When logged in, serve web app - When logged out, redirect to permalink - Fix `app-body` class not being set sometimes due to name conflict * Fix missing `multiColumn` prop * Fix failing test * Use `discoverable` attribute to control indexing directives * Fix `` not using `multiColumn` * Add `noindex` to accounts in REST API * Change noindex directive to not be rendered by default before a route is mounted * Add loading indicator for detailed status in web UI * Fix missing indicator appearing while account is loading in web UI --- app/controllers/about_controller.rb | 8 + app/controllers/account_follow_controller.rb | 12 - .../account_unfollow_controller.rb | 12 - app/controllers/accounts_controller.rb | 58 -- .../concerns/account_controller_concern.rb | 3 +- .../concerns/web_app_controller_concern.rb | 13 +- .../follower_accounts_controller.rb | 5 +- .../following_accounts_controller.rb | 5 +- app/controllers/home_controller.rb | 13 +- app/controllers/privacy_controller.rb | 8 + app/controllers/remote_follow_controller.rb | 41 - .../remote_interaction_controller.rb | 55 -- app/controllers/statuses_controller.rb | 2 +- app/controllers/tags_controller.rb | 10 +- app/helpers/accounts_helper.rb | 50 +- .../mastodon/components/error_boundary.js | 7 + .../mastodon/components/missing_indicator.js | 5 + .../mastodon/containers/mastodon.js | 2 +- .../mastodon/features/about/index.js | 6 +- .../features/account/components/header.js | 5 +- .../features/account_timeline/index.js | 12 +- .../features/bookmarked_statuses/index.js | 1 + .../features/community_timeline/index.js | 1 + .../mastodon/features/compose/index.js | 5 + .../features/direct_timeline/index.js | 1 + .../mastodon/features/directory/index.js | 1 + .../mastodon/features/domain_blocks/index.js | 6 + .../mastodon/features/explore/index.js | 1 + .../features/favourited_statuses/index.js | 1 + .../mastodon/features/favourites/index.js | 5 + .../features/follow_recommendations/index.js | 5 + .../features/follow_requests/index.js | 5 + .../features/getting_started/index.js | 1 + .../features/hashtag_timeline/index.js | 1 + .../mastodon/features/home_timeline/index.js | 3 +- .../features/keyboard_shortcuts/index.js | 5 + .../mastodon/features/list_timeline/index.js | 1 + .../mastodon/features/lists/index.js | 1 + .../mastodon/features/mutes/index.js | 5 + .../mastodon/features/notifications/index.js | 1 + .../features/pinned_statuses/index.js | 4 + .../mastodon/features/privacy_policy/index.js | 6 +- .../features/public_timeline/index.js | 1 + .../mastodon/features/reblogs/index.js | 5 + .../mastodon/features/status/index.js | 17 +- .../ui/components/bundle_column_error.js | 27 +- .../features/ui/components/column_loading.js | 6 +- .../features/ui/components/columns_area.js | 4 +- .../features/ui/components/modal_root.js | 21 +- app/javascript/mastodon/features/ui/index.js | 4 +- .../features/ui/util/async-components.js | 8 + .../features/ui/util/react_router_helpers.js | 4 +- app/javascript/mastodon/main.js | 8 - app/javascript/mastodon/reducers/statuses.js | 6 + app/javascript/mastodon/selectors/index.js | 2 +- .../service_worker/web_push_notifications.js | 26 +- app/javascript/packs/public.js | 29 - app/javascript/styles/application.scss | 1 - app/javascript/styles/contrast/diff.scss | 4 - .../styles/mastodon-light/diff.scss | 89 -- .../styles/mastodon/containers.scss | 782 ------------------ app/javascript/styles/mastodon/footer.scss | 152 ---- app/javascript/styles/mastodon/rtl.scss | 74 -- app/javascript/styles/mastodon/statuses.scss | 3 +- app/lib/permalink_redirector.rb | 36 +- app/models/account.rb | 1 + app/models/user.rb | 4 + app/serializers/rest/account_serializer.rb | 7 +- app/views/about/show.html.haml | 3 + app/views/accounts/_bio.html.haml | 21 - app/views/accounts/_header.html.haml | 43 - app/views/accounts/_moved.html.haml | 20 - app/views/accounts/show.html.haml | 76 +- app/views/follower_accounts/index.html.haml | 18 +- app/views/following_accounts/index.html.haml | 18 +- app/views/home/index.html.haml | 3 + app/views/layouts/public.html.haml | 60 -- app/views/privacy/show.html.haml | 3 + app/views/remote_follow/new.html.haml | 20 - app/views/remote_interaction/new.html.haml | 24 - app/views/statuses/_detailed_status.html.haml | 6 +- app/views/statuses/_simple_status.html.haml | 6 +- app/views/statuses/show.html.haml | 2 +- app/views/tags/show.html.haml | 5 + config/locales/en.yml | 40 - config/routes.rb | 57 +- package.json | 1 - .../account_follow_controller_spec.rb | 64 -- .../account_unfollow_controller_spec.rb | 64 -- spec/controllers/accounts_controller_spec.rb | 194 ----- .../authorize_interactions_controller_spec.rb | 4 +- .../follower_accounts_controller_spec.rb | 21 - .../following_accounts_controller_spec.rb | 21 - .../remote_follow_controller_spec.rb | 135 --- .../remote_interaction_controller_spec.rb | 39 - spec/controllers/tags_controller_spec.rb | 7 +- spec/features/profile_spec.rb | 26 +- spec/lib/permalink_redirector_spec.rb | 31 +- spec/requests/account_show_page_spec.rb | 15 - spec/routing/accounts_routing_spec.rb | 88 +- yarn.lock | 5 - 101 files changed, 389 insertions(+), 2464 deletions(-) delete mode 100644 app/controllers/account_follow_controller.rb delete mode 100644 app/controllers/account_unfollow_controller.rb delete mode 100644 app/controllers/remote_follow_controller.rb delete mode 100644 app/controllers/remote_interaction_controller.rb delete mode 100644 app/javascript/styles/mastodon/footer.scss delete mode 100644 app/views/accounts/_bio.html.haml delete mode 100644 app/views/accounts/_header.html.haml delete mode 100644 app/views/accounts/_moved.html.haml delete mode 100644 app/views/layouts/public.html.haml delete mode 100644 app/views/remote_follow/new.html.haml delete mode 100644 app/views/remote_interaction/new.html.haml create mode 100644 app/views/tags/show.html.haml delete mode 100644 spec/controllers/account_follow_controller_spec.rb delete mode 100644 spec/controllers/account_unfollow_controller_spec.rb delete mode 100644 spec/controllers/remote_follow_controller_spec.rb delete mode 100644 spec/controllers/remote_interaction_controller_spec.rb diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb index 0fbc6a800d..1043486140 100644 --- a/app/controllers/about_controller.rb +++ b/app/controllers/about_controller.rb @@ -5,7 +5,15 @@ class AboutController < ApplicationController skip_before_action :require_functional! + before_action :set_instance_presenter + def show expires_in 0, public: true unless user_signed_in? end + + private + + def set_instance_presenter + @instance_presenter = InstancePresenter.new + end end diff --git a/app/controllers/account_follow_controller.rb b/app/controllers/account_follow_controller.rb deleted file mode 100644 index 33394074db..0000000000 --- a/app/controllers/account_follow_controller.rb +++ /dev/null @@ -1,12 +0,0 @@ -# frozen_string_literal: true - -class AccountFollowController < ApplicationController - include AccountControllerConcern - - before_action :authenticate_user! - - def create - FollowService.new.call(current_user.account, @account, with_rate_limit: true) - redirect_to account_path(@account) - end -end diff --git a/app/controllers/account_unfollow_controller.rb b/app/controllers/account_unfollow_controller.rb deleted file mode 100644 index 378ec86dc6..0000000000 --- a/app/controllers/account_unfollow_controller.rb +++ /dev/null @@ -1,12 +0,0 @@ -# frozen_string_literal: true - -class AccountUnfollowController < ApplicationController - include AccountControllerConcern - - before_action :authenticate_user! - - def create - UnfollowService.new.call(current_user.account, @account) - redirect_to account_path(@account) - end -end diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index d92f91b305..5ceea5d3c1 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -9,7 +9,6 @@ class AccountsController < ApplicationController before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers - before_action :set_body_classes skip_around_action :set_locale, if: -> { [:json, :rss].include?(request.format&.to_sym) } skip_before_action :require_functional!, unless: :whitelist_mode? @@ -18,24 +17,6 @@ class AccountsController < ApplicationController respond_to do |format| format.html do expires_in 0, public: true unless user_signed_in? - - @pinned_statuses = [] - @endorsed_accounts = @account.endorsed_accounts.to_a.sample(4) - @featured_hashtags = @account.featured_tags.order(statuses_count: :desc) - - if current_account && @account.blocking?(current_account) - @statuses = [] - return - end - - @pinned_statuses = cached_filtered_status_pins if show_pinned_statuses? - @statuses = cached_filtered_status_page - @rss_url = rss_url - - unless @statuses.empty? - @older_url = older_url if @statuses.last.id > filtered_statuses.last.id - @newer_url = newer_url if @statuses.first.id < filtered_statuses.first.id - end end format.rss do @@ -55,18 +36,6 @@ class AccountsController < ApplicationController private - def set_body_classes - @body_classes = 'with-modals' - end - - def show_pinned_statuses? - [replies_requested?, media_requested?, tag_requested?, params[:max_id].present?, params[:min_id].present?].none? - end - - def filtered_pinned_statuses - @account.pinned_statuses.where(visibility: [:public, :unlisted]) - end - def filtered_statuses default_statuses.tap do |statuses| statuses.merge!(hashtag_scope) if tag_requested? @@ -113,26 +82,6 @@ class AccountsController < ApplicationController end end - def older_url - pagination_url(max_id: @statuses.last.id) - end - - def newer_url - pagination_url(min_id: @statuses.first.id) - end - - def pagination_url(max_id: nil, min_id: nil) - if tag_requested? - short_account_tag_url(@account, params[:tag], max_id: max_id, min_id: min_id) - elsif media_requested? - short_account_media_url(@account, max_id: max_id, min_id: min_id) - elsif replies_requested? - short_account_with_replies_url(@account, max_id: max_id, min_id: min_id) - else - short_account_url(@account, max_id: max_id, min_id: min_id) - end - end - def media_requested? request.path.split('.').first.end_with?('/media') && !tag_requested? end @@ -145,13 +94,6 @@ class AccountsController < ApplicationController request.path.split('.').first.end_with?(Addressable::URI.parse("/tagged/#{params[:tag]}").normalize) end - def cached_filtered_status_pins - cache_collection( - filtered_pinned_statuses, - Status - ) - end - def cached_filtered_status_page cache_collection_paginated_by_id( filtered_statuses, diff --git a/app/controllers/concerns/account_controller_concern.rb b/app/controllers/concerns/account_controller_concern.rb index 11eac0eb6b..2f7d84df04 100644 --- a/app/controllers/concerns/account_controller_concern.rb +++ b/app/controllers/concerns/account_controller_concern.rb @@ -3,13 +3,12 @@ module AccountControllerConcern extend ActiveSupport::Concern + include WebAppControllerConcern include AccountOwnedConcern FOLLOW_PER_PAGE = 12 included do - layout 'public' - before_action :set_instance_presenter before_action :set_link_headers, if: -> { request.format.nil? || request.format == :html } end diff --git a/app/controllers/concerns/web_app_controller_concern.rb b/app/controllers/concerns/web_app_controller_concern.rb index 8a6c73af3e..c671ce785c 100644 --- a/app/controllers/concerns/web_app_controller_concern.rb +++ b/app/controllers/concerns/web_app_controller_concern.rb @@ -4,15 +4,24 @@ module WebAppControllerConcern extend ActiveSupport::Concern included do - before_action :set_body_classes + before_action :redirect_unauthenticated_to_permalinks! + before_action :set_app_body_class before_action :set_referrer_policy_header end - def set_body_classes + def set_app_body_class @body_classes = 'app-body' end def set_referrer_policy_header response.headers['Referrer-Policy'] = 'origin' end + + def redirect_unauthenticated_to_permalinks! + return if user_signed_in? + + redirect_path = PermalinkRedirector.new(request.path).redirect_path + + redirect_to(redirect_path) if redirect_path.present? + end end diff --git a/app/controllers/follower_accounts_controller.rb b/app/controllers/follower_accounts_controller.rb index da7bb4ed23..e4d8cc4950 100644 --- a/app/controllers/follower_accounts_controller.rb +++ b/app/controllers/follower_accounts_controller.rb @@ -3,6 +3,7 @@ class FollowerAccountsController < ApplicationController include AccountControllerConcern include SignatureVerification + include WebAppControllerConcern before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers @@ -14,10 +15,6 @@ class FollowerAccountsController < ApplicationController respond_to do |format| format.html do expires_in 0, public: true unless user_signed_in? - - next if @account.hide_collections? - - follows end format.json do diff --git a/app/controllers/following_accounts_controller.rb b/app/controllers/following_accounts_controller.rb index c37e3b68c4..f84dca1e5a 100644 --- a/app/controllers/following_accounts_controller.rb +++ b/app/controllers/following_accounts_controller.rb @@ -3,6 +3,7 @@ class FollowingAccountsController < ApplicationController include AccountControllerConcern include SignatureVerification + include WebAppControllerConcern before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers @@ -14,10 +15,6 @@ class FollowingAccountsController < ApplicationController respond_to do |format| format.html do expires_in 0, public: true unless user_signed_in? - - next if @account.hide_collections? - - follows end format.json do diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index b4d6578b92..d8ee82a7a2 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -3,21 +3,14 @@ class HomeController < ApplicationController include WebAppControllerConcern - before_action :redirect_unauthenticated_to_permalinks! before_action :set_instance_presenter - def index; end + def index + expires_in 0, public: true unless user_signed_in? + end private - def redirect_unauthenticated_to_permalinks! - return if user_signed_in? - - redirect_path = PermalinkRedirector.new(request.path).redirect_path - - redirect_to(redirect_path) if redirect_path.present? - end - def set_instance_presenter @instance_presenter = InstancePresenter.new end diff --git a/app/controllers/privacy_controller.rb b/app/controllers/privacy_controller.rb index bc98bca516..2c98bf3bf4 100644 --- a/app/controllers/privacy_controller.rb +++ b/app/controllers/privacy_controller.rb @@ -5,7 +5,15 @@ class PrivacyController < ApplicationController skip_before_action :require_functional! + before_action :set_instance_presenter + def show expires_in 0, public: true if current_account.nil? end + + private + + def set_instance_presenter + @instance_presenter = InstancePresenter.new + end end diff --git a/app/controllers/remote_follow_controller.rb b/app/controllers/remote_follow_controller.rb deleted file mode 100644 index db1604644f..0000000000 --- a/app/controllers/remote_follow_controller.rb +++ /dev/null @@ -1,41 +0,0 @@ -# frozen_string_literal: true - -class RemoteFollowController < ApplicationController - include AccountOwnedConcern - - layout 'modal' - - before_action :set_body_classes - - skip_before_action :require_functional! - - def new - @remote_follow = RemoteFollow.new(session_params) - end - - def create - @remote_follow = RemoteFollow.new(resource_params) - - if @remote_follow.valid? - session[:remote_follow] = @remote_follow.acct - redirect_to @remote_follow.subscribe_address_for(@account) - else - render :new - end - end - - private - - def resource_params - params.require(:remote_follow).permit(:acct) - end - - def session_params - { acct: session[:remote_follow] || current_account&.username } - end - - def set_body_classes - @body_classes = 'modal-layout' - @hide_header = true - end -end diff --git a/app/controllers/remote_interaction_controller.rb b/app/controllers/remote_interaction_controller.rb deleted file mode 100644 index 6c29a2b9ff..0000000000 --- a/app/controllers/remote_interaction_controller.rb +++ /dev/null @@ -1,55 +0,0 @@ -# frozen_string_literal: true - -class RemoteInteractionController < ApplicationController - include Authorization - - layout 'modal' - - before_action :authenticate_user!, if: :whitelist_mode? - before_action :set_interaction_type - before_action :set_status - before_action :set_body_classes - - skip_before_action :require_functional!, unless: :whitelist_mode? - - def new - @remote_follow = RemoteFollow.new(session_params) - end - - def create - @remote_follow = RemoteFollow.new(resource_params) - - if @remote_follow.valid? - session[:remote_follow] = @remote_follow.acct - redirect_to @remote_follow.interact_address_for(@status) - else - render :new - end - end - - private - - def resource_params - params.require(:remote_follow).permit(:acct) - end - - def session_params - { acct: session[:remote_follow] || current_account&.username } - end - - def set_status - @status = Status.find(params[:id]) - authorize @status, :show? - rescue Mastodon::NotPermittedError - not_found - end - - def set_body_classes - @body_classes = 'modal-layout' - @hide_header = true - end - - def set_interaction_type - @interaction_type = %w(reply reblog favourite).include?(params[:type]) ? params[:type] : 'reply' - end -end diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index 181c76c9ae..bb4e5b01f4 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -1,11 +1,11 @@ # frozen_string_literal: true class StatusesController < ApplicationController + include WebAppControllerConcern include StatusControllerConcern include SignatureAuthentication include Authorization include AccountOwnedConcern - include WebAppControllerConcern before_action :require_account_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_status diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 2890c179d8..f0a0993506 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -2,18 +2,16 @@ class TagsController < ApplicationController include SignatureVerification + include WebAppControllerConcern PAGE_SIZE = 20 PAGE_SIZE_MAX = 200 - layout 'public' - before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :authenticate_user!, if: :whitelist_mode? before_action :set_local before_action :set_tag before_action :set_statuses - before_action :set_body_classes before_action :set_instance_presenter skip_before_action :require_functional!, unless: :whitelist_mode? @@ -21,7 +19,7 @@ class TagsController < ApplicationController def show respond_to do |format| format.html do - redirect_to web_path("tags/#{@tag.name}") + expires_in 0, public: true unless user_signed_in? end format.rss do @@ -54,10 +52,6 @@ class TagsController < ApplicationController end end - def set_body_classes - @body_classes = 'with-modals' - end - def set_instance_presenter @instance_presenter = InstancePresenter.new end diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb index 59664373dd..6301919a9e 100644 --- a/app/helpers/accounts_helper.rb +++ b/app/helpers/accounts_helper.rb @@ -20,54 +20,10 @@ module AccountsHelper end def account_action_button(account) - if user_signed_in? - if account.id == current_user.account_id - link_to settings_profile_url, class: 'button logo-button' do - safe_join([logo_as_symbol, t('settings.edit_profile')]) - end - elsif current_account.following?(account) || current_account.requested?(account) - link_to account_unfollow_path(account), class: 'button logo-button button--destructive', data: { method: :post } do - safe_join([logo_as_symbol, t('accounts.unfollow')]) - end - elsif !(account.memorial? || account.moved?) - link_to account_follow_path(account), class: "button logo-button#{account.blocking?(current_account) ? ' disabled' : ''}", data: { method: :post } do - safe_join([logo_as_symbol, t('accounts.follow')]) - end - end - elsif !(account.memorial? || account.moved?) - link_to account_remote_follow_path(account), class: 'button logo-button modal-button', target: '_new' do - safe_join([logo_as_symbol, t('accounts.follow')]) - end - end - end - - def minimal_account_action_button(account) - if user_signed_in? - return if account.id == current_user.account_id - - if current_account.following?(account) || current_account.requested?(account) - link_to account_unfollow_path(account), class: 'icon-button active', data: { method: :post }, title: t('accounts.unfollow') do - fa_icon('user-times fw') - end - elsif !(account.memorial? || account.moved?) - link_to account_follow_path(account), class: "icon-button#{account.blocking?(current_account) ? ' disabled' : ''}", data: { method: :post }, title: t('accounts.follow') do - fa_icon('user-plus fw') - end - end - elsif !(account.memorial? || account.moved?) - link_to account_remote_follow_path(account), class: 'icon-button modal-button', target: '_new', title: t('accounts.follow') do - fa_icon('user-plus fw') - end - end - end + return if account.memorial? || account.moved? - def account_badge(account) - if account.bot? - content_tag(:div, content_tag(:div, t('accounts.roles.bot'), class: 'account-role bot'), class: 'roles') - elsif account.group? - content_tag(:div, content_tag(:div, t('accounts.roles.group'), class: 'account-role group'), class: 'roles') - elsif account.user_role&.highlighted? - content_tag(:div, content_tag(:div, account.user_role.name, class: "account-role user-role-#{account.user_role.id}"), class: 'roles') + link_to ActivityPub::TagManager.instance.url_for(account), class: 'button logo-button', target: '_new' do + safe_join([logo_as_symbol, t('accounts.follow')]) end end diff --git a/app/javascript/mastodon/components/error_boundary.js b/app/javascript/mastodon/components/error_boundary.js index ca4a2cfe14..02d5616d69 100644 --- a/app/javascript/mastodon/components/error_boundary.js +++ b/app/javascript/mastodon/components/error_boundary.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { version, source_url } from 'mastodon/initial_state'; import StackTrace from 'stacktrace-js'; +import { Helmet } from 'react-helmet'; export default class ErrorBoundary extends React.PureComponent { @@ -84,6 +85,7 @@ export default class ErrorBoundary extends React.PureComponent { )}

    +

    { likelyBrowserAddonIssue ? ( @@ -91,8 +93,13 @@ export default class ErrorBoundary extends React.PureComponent { )}

    +

    Mastodon v{version} · ·

    + + + +
    ); } diff --git a/app/javascript/mastodon/components/missing_indicator.js b/app/javascript/mastodon/components/missing_indicator.js index 7b0101bab8..05e0d653d7 100644 --- a/app/javascript/mastodon/components/missing_indicator.js +++ b/app/javascript/mastodon/components/missing_indicator.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import illustration from 'mastodon/../images/elephant_ui_disappointed.svg'; import classNames from 'classnames'; +import { Helmet } from 'react-helmet'; const MissingIndicator = ({ fullPage }) => (
    @@ -14,6 +15,10 @@ const MissingIndicator = ({ fullPage }) => (
    + + + +
    ); diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.js index 8e5a1fa3a6..730695c49d 100644 --- a/app/javascript/mastodon/containers/mastodon.js +++ b/app/javascript/mastodon/containers/mastodon.js @@ -78,7 +78,7 @@ export default class Mastodon extends React.PureComponent { - + diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.js index e9212565ac..75fed9b95b 100644 --- a/app/javascript/mastodon/features/about/index.js +++ b/app/javascript/mastodon/features/about/index.js @@ -94,6 +94,7 @@ class About extends React.PureComponent { }), dispatch: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, + multiColumn: PropTypes.bool, }; componentDidMount () { @@ -108,11 +109,11 @@ class About extends React.PureComponent { } render () { - const { intl, server, extendedDescription, domainBlocks } = this.props; + const { multiColumn, intl, server, extendedDescription, domainBlocks } = this.props; const isLoading = server.get('isLoading'); return ( - +
    `${value} ${key.replace('@', '')}`).join(', ')} className='about__header__hero' /> @@ -212,6 +213,7 @@ class About extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 44c53f9cea..954cb0ee79 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -270,7 +270,9 @@ class Header extends ImmutablePureComponent { const content = { __html: account.get('note_emojified') }; const displayNameHtml = { __html: account.get('display_name_html') }; const fields = account.get('fields'); - const acct = account.get('acct').indexOf('@') === -1 && domain ? `${account.get('acct')}@${domain}` : account.get('acct'); + const isLocal = account.get('acct').indexOf('@') === -1; + const acct = isLocal && domain ? `${account.get('acct')}@${domain}` : account.get('acct'); + const isIndexable = !account.get('noindex'); let badge; @@ -373,6 +375,7 @@ class Header extends ImmutablePureComponent { {titleFromAccount(account)} +
    ); diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index 51fb76f1f6..437cee95c7 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -142,19 +142,17 @@ class AccountTimeline extends ImmutablePureComponent { render () { const { accountId, statusIds, featuredStatusIds, isLoading, hasMore, blockedBy, suspended, isAccount, hidden, multiColumn, remote, remoteUrl } = this.props; - if (!isAccount) { + if (isLoading && statusIds.isEmpty()) { return ( - - + ); - } - - if (!statusIds && isLoading) { + } else if (!isLoading && !isAccount) { return ( - + + ); } diff --git a/app/javascript/mastodon/features/bookmarked_statuses/index.js b/app/javascript/mastodon/features/bookmarked_statuses/index.js index 0e466e5ed4..097be17c96 100644 --- a/app/javascript/mastodon/features/bookmarked_statuses/index.js +++ b/app/javascript/mastodon/features/bookmarked_statuses/index.js @@ -99,6 +99,7 @@ class Bookmarks extends ImmutablePureComponent { {intl.formatMessage(messages.heading)} + ); diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js index 7575218025..7b3f8845f6 100644 --- a/app/javascript/mastodon/features/community_timeline/index.js +++ b/app/javascript/mastodon/features/community_timeline/index.js @@ -151,6 +151,7 @@ class CommunityTimeline extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index c27556a0ee..763c715de8 100644 --- a/app/javascript/mastodon/features/compose/index.js +++ b/app/javascript/mastodon/features/compose/index.js @@ -18,6 +18,7 @@ import { mascot } from '../../initial_state'; import Icon from 'mastodon/components/icon'; import { logOut } from 'mastodon/utils/log_out'; import Column from 'mastodon/components/column'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ start: { id: 'getting_started.heading', defaultMessage: 'Getting started' }, @@ -145,6 +146,10 @@ class Compose extends React.PureComponent { + + + + ); } diff --git a/app/javascript/mastodon/features/direct_timeline/index.js b/app/javascript/mastodon/features/direct_timeline/index.js index cfaa9c4c5d..8dcc43e286 100644 --- a/app/javascript/mastodon/features/direct_timeline/index.js +++ b/app/javascript/mastodon/features/direct_timeline/index.js @@ -98,6 +98,7 @@ class DirectTimeline extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/directory/index.js b/app/javascript/mastodon/features/directory/index.js index 0ce7919b6c..b45faa049b 100644 --- a/app/javascript/mastodon/features/directory/index.js +++ b/app/javascript/mastodon/features/directory/index.js @@ -169,6 +169,7 @@ class Directory extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/domain_blocks/index.js b/app/javascript/mastodon/features/domain_blocks/index.js index edb80aef41..43b275c2d9 100644 --- a/app/javascript/mastodon/features/domain_blocks/index.js +++ b/app/javascript/mastodon/features/domain_blocks/index.js @@ -11,6 +11,7 @@ import ColumnBackButtonSlim from '../../components/column_back_button_slim'; import DomainContainer from '../../containers/domain_container'; import { fetchDomainBlocks, expandDomainBlocks } from '../../actions/domain_blocks'; import ScrollableList from '../../components/scrollable_list'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.domain_blocks', defaultMessage: 'Blocked domains' }, @@ -59,6 +60,7 @@ class Blocks extends ImmutablePureComponent { return ( + , )} + + + + ); } diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.js index 566be631e0..1c7049e97d 100644 --- a/app/javascript/mastodon/features/explore/index.js +++ b/app/javascript/mastodon/features/explore/index.js @@ -84,6 +84,7 @@ class Explore extends React.PureComponent { {intl.formatMessage(messages.title)} + )} diff --git a/app/javascript/mastodon/features/favourited_statuses/index.js b/app/javascript/mastodon/features/favourited_statuses/index.js index f1d32eff17..3741f68f6b 100644 --- a/app/javascript/mastodon/features/favourited_statuses/index.js +++ b/app/javascript/mastodon/features/favourited_statuses/index.js @@ -99,6 +99,7 @@ class Favourites extends ImmutablePureComponent { {intl.formatMessage(messages.heading)} + ); diff --git a/app/javascript/mastodon/features/favourites/index.js b/app/javascript/mastodon/features/favourites/index.js index 673317f04a..ad10744dae 100644 --- a/app/javascript/mastodon/features/favourites/index.js +++ b/app/javascript/mastodon/features/favourites/index.js @@ -11,6 +11,7 @@ import LoadingIndicator from 'mastodon/components/loading_indicator'; import ScrollableList from 'mastodon/components/scrollable_list'; import AccountContainer from 'mastodon/containers/account_container'; import Column from 'mastodon/features/ui/components/column'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ refresh: { id: 'refresh', defaultMessage: 'Refresh' }, @@ -80,6 +81,10 @@ class Favourites extends ImmutablePureComponent { , )} + + + + ); } diff --git a/app/javascript/mastodon/features/follow_recommendations/index.js b/app/javascript/mastodon/features/follow_recommendations/index.js index 32b55eeb37..5f7baa64ca 100644 --- a/app/javascript/mastodon/features/follow_recommendations/index.js +++ b/app/javascript/mastodon/features/follow_recommendations/index.js @@ -12,6 +12,7 @@ import Column from 'mastodon/features/ui/components/column'; import Account from './components/account'; import imageGreeting from 'mastodon/../images/elephant_ui_greeting.svg'; import Button from 'mastodon/components/button'; +import { Helmet } from 'react-helmet'; const mapStateToProps = state => ({ suggestions: state.getIn(['suggestions', 'items']), @@ -104,6 +105,10 @@ class FollowRecommendations extends ImmutablePureComponent { )}
    + + + +
    ); } diff --git a/app/javascript/mastodon/features/follow_requests/index.js b/app/javascript/mastodon/features/follow_requests/index.js index 1f9b635bb7..d16aa7737e 100644 --- a/app/javascript/mastodon/features/follow_requests/index.js +++ b/app/javascript/mastodon/features/follow_requests/index.js @@ -12,6 +12,7 @@ import AccountAuthorizeContainer from './containers/account_authorize_container' import { fetchFollowRequests, expandFollowRequests } from '../../actions/accounts'; import ScrollableList from '../../components/scrollable_list'; import { me } from '../../initial_state'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.follow_requests', defaultMessage: 'Follow requests' }, @@ -87,6 +88,10 @@ class FollowRequests extends ImmutablePureComponent { , )} + + + +
    ); } diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index 42a5b581f7..f002ffc774 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -138,6 +138,7 @@ class GettingStarted extends ImmutablePureComponent { {intl.formatMessage(messages.menu)} + ); diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js index 0f7df5036c..ec524be8f8 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/index.js +++ b/app/javascript/mastodon/features/hashtag_timeline/index.js @@ -228,6 +228,7 @@ class HashtagTimeline extends React.PureComponent { #{id} + ); diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js index 68770b739d..838ed7dd84 100644 --- a/app/javascript/mastodon/features/home_timeline/index.js +++ b/app/javascript/mastodon/features/home_timeline/index.js @@ -20,7 +20,7 @@ const messages = defineMessages({ title: { id: 'column.home', defaultMessage: 'Home' }, show_announcements: { id: 'home.show_announcements', defaultMessage: 'Show announcements' }, hide_announcements: { id: 'home.hide_announcements', defaultMessage: 'Hide announcements' }, -}); +}); const mapStateToProps = state => ({ hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0, @@ -167,6 +167,7 @@ class HomeTimeline extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.js b/app/javascript/mastodon/features/keyboard_shortcuts/index.js index 2a32577baf..9a870478da 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.js +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.js @@ -4,6 +4,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import ImmutablePureComponent from 'react-immutable-pure-component'; import ColumnHeader from 'mastodon/components/column_header'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'keyboard_shortcuts.heading', defaultMessage: 'Keyboard Shortcuts' }, @@ -164,6 +165,10 @@ class KeyboardShortcuts extends ImmutablePureComponent {
    + + + + ); } diff --git a/app/javascript/mastodon/features/list_timeline/index.js b/app/javascript/mastodon/features/list_timeline/index.js index f0a7a0c7ff..fd9d33df71 100644 --- a/app/javascript/mastodon/features/list_timeline/index.js +++ b/app/javascript/mastodon/features/list_timeline/index.js @@ -212,6 +212,7 @@ class ListTimeline extends React.PureComponent { {title} + ); diff --git a/app/javascript/mastodon/features/lists/index.js b/app/javascript/mastodon/features/lists/index.js index 389a0c5c89..017595ba03 100644 --- a/app/javascript/mastodon/features/lists/index.js +++ b/app/javascript/mastodon/features/lists/index.js @@ -80,6 +80,7 @@ class Lists extends ImmutablePureComponent { {intl.formatMessage(messages.heading)} + ); diff --git a/app/javascript/mastodon/features/mutes/index.js b/app/javascript/mastodon/features/mutes/index.js index c21433cc41..65df6149fe 100644 --- a/app/javascript/mastodon/features/mutes/index.js +++ b/app/javascript/mastodon/features/mutes/index.js @@ -11,6 +11,7 @@ import ColumnBackButtonSlim from '../../components/column_back_button_slim'; import AccountContainer from '../../containers/account_container'; import { fetchMutes, expandMutes } from '../../actions/mutes'; import ScrollableList from '../../components/scrollable_list'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.mutes', defaultMessage: 'Muted users' }, @@ -72,6 +73,10 @@ class Mutes extends ImmutablePureComponent { , )} + + + + ); } diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js index 4577bcb2dc..f1bc5f160b 100644 --- a/app/javascript/mastodon/features/notifications/index.js +++ b/app/javascript/mastodon/features/notifications/index.js @@ -281,6 +281,7 @@ class Notifications extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/pinned_statuses/index.js b/app/javascript/mastodon/features/pinned_statuses/index.js index 67b13f10aa..c6790ea063 100644 --- a/app/javascript/mastodon/features/pinned_statuses/index.js +++ b/app/javascript/mastodon/features/pinned_statuses/index.js @@ -8,6 +8,7 @@ import ColumnBackButtonSlim from '../../components/column_back_button_slim'; import StatusList from '../../components/status_list'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.pins', defaultMessage: 'Pinned post' }, @@ -54,6 +55,9 @@ class PinnedStatuses extends ImmutablePureComponent { hasMore={hasMore} bindToDocument={!multiColumn} /> + + + ); } diff --git a/app/javascript/mastodon/features/privacy_policy/index.js b/app/javascript/mastodon/features/privacy_policy/index.js index eee4255f47..3df487e8ff 100644 --- a/app/javascript/mastodon/features/privacy_policy/index.js +++ b/app/javascript/mastodon/features/privacy_policy/index.js @@ -15,6 +15,7 @@ class PrivacyPolicy extends React.PureComponent { static propTypes = { intl: PropTypes.object, + multiColumn: PropTypes.bool, }; state = { @@ -32,11 +33,11 @@ class PrivacyPolicy extends React.PureComponent { } render () { - const { intl } = this.props; + const { intl, multiColumn } = this.props; const { isLoading, content, lastUpdated } = this.state; return ( - +

    @@ -51,6 +52,7 @@ class PrivacyPolicy extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js index 8dbef98c0b..a41be07e15 100644 --- a/app/javascript/mastodon/features/public_timeline/index.js +++ b/app/javascript/mastodon/features/public_timeline/index.js @@ -153,6 +153,7 @@ class PublicTimeline extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js index 7704a049f4..70d338ef14 100644 --- a/app/javascript/mastodon/features/reblogs/index.js +++ b/app/javascript/mastodon/features/reblogs/index.js @@ -11,6 +11,7 @@ import Column from '../ui/components/column'; import ScrollableList from '../../components/scrollable_list'; import Icon from 'mastodon/components/icon'; import ColumnHeader from '../../components/column_header'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ refresh: { id: 'refresh', defaultMessage: 'Refresh' }, @@ -80,6 +81,10 @@ class Reblogs extends ImmutablePureComponent { , )} + + + + ); } diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index f9a97c9b5c..02f390c6a1 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -7,6 +7,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import { createSelector } from 'reselect'; import { fetchStatus } from '../../actions/statuses'; import MissingIndicator from '../../components/missing_indicator'; +import LoadingIndicator from 'mastodon/components/loading_indicator'; import DetailedStatus from './components/detailed_status'; import ActionBar from './components/action_bar'; import Column from '../ui/components/column'; @@ -145,6 +146,7 @@ const makeMapStateToProps = () => { } return { + isLoading: state.getIn(['statuses', props.params.statusId, 'isLoading']), status, ancestorsIds, descendantsIds, @@ -187,6 +189,7 @@ class Status extends ImmutablePureComponent { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, status: ImmutablePropTypes.map, + isLoading: PropTypes.bool, ancestorsIds: ImmutablePropTypes.list, descendantsIds: ImmutablePropTypes.list, intl: PropTypes.object.isRequired, @@ -566,9 +569,17 @@ class Status extends ImmutablePureComponent { render () { let ancestors, descendants; - const { status, ancestorsIds, descendantsIds, intl, domain, multiColumn, pictureInPicture } = this.props; + const { isLoading, status, ancestorsIds, descendantsIds, intl, domain, multiColumn, pictureInPicture } = this.props; const { fullscreen } = this.state; + if (isLoading) { + return ( + + + + ); + } + if (status === null) { return ( @@ -586,6 +597,9 @@ class Status extends ImmutablePureComponent { descendants =
    {this.renderChildren(descendantsIds)}
    ; } + const isLocal = status.getIn(['account', 'acct'], '').indexOf('@') === -1; + const isIndexable = !status.getIn(['account', 'noindex']); + const handlers = { moveUp: this.handleHotkeyMoveUp, moveDown: this.handleHotkeyMoveDown, @@ -659,6 +673,7 @@ class Status extends ImmutablePureComponent { {titleFromStatus(status)} +
    ); diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error.js b/app/javascript/mastodon/features/ui/components/bundle_column_error.js index f39ebd900b..ab6d4aa441 100644 --- a/app/javascript/mastodon/features/ui/components/bundle_column_error.js +++ b/app/javascript/mastodon/features/ui/components/bundle_column_error.js @@ -1,11 +1,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; - -import Column from './column'; -import ColumnHeader from './column_header'; -import ColumnBackButtonSlim from '../../../components/column_back_button_slim'; -import IconButton from '../../../components/icon_button'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; +import IconButton from 'mastodon/components/icon_button'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ title: { id: 'bundle_column_error.title', defaultMessage: 'Network error' }, @@ -18,6 +17,7 @@ class BundleColumnError extends React.PureComponent { static propTypes = { onRetry: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, + multiColumn: PropTypes.bool, } handleRetry = () => { @@ -25,16 +25,25 @@ class BundleColumnError extends React.PureComponent { } render () { - const { intl: { formatMessage } } = this.props; + const { multiColumn, intl: { formatMessage } } = this.props; return ( - - - + + +
    {formatMessage(messages.body)}
    + + + +
    ); } diff --git a/app/javascript/mastodon/features/ui/components/column_loading.js b/app/javascript/mastodon/features/ui/components/column_loading.js index 0cdfd05d80..e5ed225844 100644 --- a/app/javascript/mastodon/features/ui/components/column_loading.js +++ b/app/javascript/mastodon/features/ui/components/column_loading.js @@ -10,6 +10,7 @@ export default class ColumnLoading extends ImmutablePureComponent { static propTypes = { title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]), icon: PropTypes.string, + multiColumn: PropTypes.bool, }; static defaultProps = { @@ -18,10 +19,11 @@ export default class ColumnLoading extends ImmutablePureComponent { }; render() { - let { title, icon } = this.props; + let { title, icon, multiColumn } = this.props; + return ( - +
    ); diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index cc1bc83e0e..9ee6fca43c 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -139,11 +139,11 @@ class ColumnsArea extends ImmutablePureComponent { } renderLoading = columnId => () => { - return columnId === 'COMPOSE' ? : ; + return columnId === 'COMPOSE' ? : ; } renderError = (props) => { - return ; + return ; } render () { diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 5c273ffa48..2224a82077 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -11,9 +11,7 @@ import VideoModal from './video_modal'; import BoostModal from './boost_modal'; import AudioModal from './audio_modal'; import ConfirmationModal from './confirmation_modal'; -import SubscribedLanguagesModal from 'mastodon/features/subscribed_languages_modal'; import FocalPointModal from './focal_point_modal'; -import InteractionModal from 'mastodon/features/interaction_modal'; import { MuteModal, BlockModal, @@ -23,7 +21,10 @@ import { ListAdder, CompareHistoryModal, FilterModal, + InteractionModal, + SubscribedLanguagesModal, } from 'mastodon/features/ui/util/async-components'; +import { Helmet } from 'react-helmet'; const MODAL_COMPONENTS = { 'MEDIA': () => Promise.resolve({ default: MediaModal }), @@ -41,8 +42,8 @@ const MODAL_COMPONENTS = { 'LIST_ADDER': ListAdder, 'COMPARE_HISTORY': CompareHistoryModal, 'FILTER': FilterModal, - 'SUBSCRIBED_LANGUAGES': () => Promise.resolve({ default: SubscribedLanguagesModal }), - 'INTERACTION': () => Promise.resolve({ default: InteractionModal }), + 'SUBSCRIBED_LANGUAGES': SubscribedLanguagesModal, + 'INTERACTION': InteractionModal, }; export default class ModalRoot extends React.PureComponent { @@ -111,9 +112,15 @@ export default class ModalRoot extends React.PureComponent { return ( {visible && ( - - {(SpecificComponent) => } - + <> + + {(SpecificComponent) => } + + + + + + )} ); diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 8f9f38036f..0039918574 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -197,8 +197,8 @@ class SwitchingColumnsArea extends React.PureComponent { - - + + diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index c79dc014c4..7686a69ea5 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -166,6 +166,14 @@ export function FilterModal () { return import(/*webpackChunkName: "modals/filter_modal" */'../components/filter_modal'); } +export function InteractionModal () { + return import(/*webpackChunkName: "modals/interaction_modal" */'../../interaction_modal'); +} + +export function SubscribedLanguagesModal () { + return import(/*webpackChunkName: "modals/subscribed_languages_modal" */'../../subscribed_languages_modal'); +} + export function About () { return import(/*webpackChunkName: "features/about" */'../../about'); } diff --git a/app/javascript/mastodon/features/ui/util/react_router_helpers.js b/app/javascript/mastodon/features/ui/util/react_router_helpers.js index d452b871f7..a65d79def6 100644 --- a/app/javascript/mastodon/features/ui/util/react_router_helpers.js +++ b/app/javascript/mastodon/features/ui/util/react_router_helpers.js @@ -53,7 +53,9 @@ export class WrappedRoute extends React.Component { } renderLoading = () => { - return ; + const { multiColumn } = this.props; + + return ; } renderError = (props) => { diff --git a/app/javascript/mastodon/main.js b/app/javascript/mastodon/main.js index f33375b502..d0337ce0cd 100644 --- a/app/javascript/mastodon/main.js +++ b/app/javascript/mastodon/main.js @@ -12,14 +12,6 @@ const perf = require('mastodon/performance'); function main() { perf.start('main()'); - if (window.history && history.replaceState) { - const { pathname, search, hash } = window.location; - const path = pathname + search + hash; - if (!(/^\/web($|\/)/).test(path)) { - history.replaceState(null, document.title, `/web${path}`); - } - } - return ready(async () => { const mountNode = document.getElementById('mastodon'); const props = JSON.parse(mountNode.getAttribute('data-props')); diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index 7efb49d857..c30c1e2ccd 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -15,6 +15,8 @@ import { STATUS_COLLAPSE, STATUS_TRANSLATE_SUCCESS, STATUS_TRANSLATE_UNDO, + STATUS_FETCH_REQUEST, + STATUS_FETCH_FAIL, } from '../actions/statuses'; import { TIMELINE_DELETE } from '../actions/timelines'; import { STATUS_IMPORT, STATUSES_IMPORT } from '../actions/importer'; @@ -37,6 +39,10 @@ const initialState = ImmutableMap(); export default function statuses(state = initialState, action) { switch(action.type) { + case STATUS_FETCH_REQUEST: + return state.setIn([action.id, 'isLoading'], true); + case STATUS_FETCH_FAIL: + return state.delete(action.id); case STATUS_IMPORT: return importStatus(state, action.status); case STATUSES_IMPORT: diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index 3dd7f48972..bf46c810e2 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -41,7 +41,7 @@ export const makeGetStatus = () => { ], (statusBase, statusReblog, accountBase, accountReblog, filters) => { - if (!statusBase) { + if (!statusBase || statusBase.get('isLoading')) { return null; } diff --git a/app/javascript/mastodon/service_worker/web_push_notifications.js b/app/javascript/mastodon/service_worker/web_push_notifications.js index 9b75e9b9dc..f125957773 100644 --- a/app/javascript/mastodon/service_worker/web_push_notifications.js +++ b/app/javascript/mastodon/service_worker/web_push_notifications.js @@ -15,7 +15,7 @@ const notify = options => icon: '/android-chrome-192x192.png', tag: GROUP_TAG, data: { - url: (new URL('/web/notifications', self.location)).href, + url: (new URL('/notifications', self.location)).href, count: notifications.length + 1, preferred_locale: options.data.preferred_locale, }, @@ -90,7 +90,7 @@ export const handlePush = (event) => { options.tag = notification.id; options.badge = '/badge.png'; options.image = notification.status && notification.status.media_attachments.length > 0 && notification.status.media_attachments[0].preview_url || undefined; - options.data = { access_token, preferred_locale, id: notification.status ? notification.status.id : notification.account.id, url: notification.status ? `/web/@${notification.account.acct}/${notification.status.id}` : `/web/@${notification.account.acct}` }; + options.data = { access_token, preferred_locale, id: notification.status ? notification.status.id : notification.account.id, url: notification.status ? `/@${notification.account.acct}/${notification.status.id}` : `/@${notification.account.acct}` }; if (notification.status && notification.status.spoiler_text || notification.status.sensitive) { options.data.hiddenBody = htmlToPlainText(notification.status.content); @@ -115,7 +115,7 @@ export const handlePush = (event) => { tag: notification_id, timestamp: new Date(), badge: '/badge.png', - data: { access_token, preferred_locale, url: '/web/notifications' }, + data: { access_token, preferred_locale, url: '/notifications' }, }); }), ); @@ -166,24 +166,10 @@ const removeActionFromNotification = (notification, action) => { const openUrl = url => self.clients.matchAll({ type: 'window' }).then(clientList => { - if (clientList.length !== 0) { - const webClients = clientList.filter(client => /\/web\//.test(client.url)); - - if (webClients.length !== 0) { - const client = findBestClient(webClients); - const { pathname } = new URL(url, self.location); - - if (pathname.startsWith('/web/')) { - return client.focus().then(client => client.postMessage({ - type: 'navigate', - path: pathname.slice('/web/'.length - 1), - })); - } - } else if ('navigate' in clientList[0]) { // Chrome 42-48 does not support navigate - const client = findBestClient(clientList); + if (clientList.length !== 0 && 'navigate' in clientList[0]) { // Chrome 42-48 does not support navigate + const client = findBestClient(clientList); - return client.navigate(url).then(client => client.focus()); - } + return client.navigate(url).then(client => client.focus()); } return self.clients.openWindow(url); diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index e42468e0c6..5ff45fa552 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -33,7 +33,6 @@ function main() { const { messages } = getLocale(); const React = require('react'); const ReactDOM = require('react-dom'); - const Rellax = require('rellax'); const { createBrowserHistory } = require('history'); const scrollToDetailedStatus = () => { @@ -112,12 +111,6 @@ function main() { scrollToDetailedStatus(); } - const parallaxComponents = document.querySelectorAll('.parallax'); - - if (parallaxComponents.length > 0 ) { - new Rellax('.parallax', { speed: -1 }); - } - delegate(document, '#registration_user_password_confirmation,#registration_user_password', 'input', () => { const password = document.getElementById('registration_user_password'); const confirmation = document.getElementById('registration_user_password_confirmation'); @@ -168,28 +161,6 @@ function main() { }); }); - delegate(document, '.webapp-btn', 'click', ({ target, button }) => { - if (button !== 0) { - return true; - } - window.location.href = target.href; - return false; - }); - - delegate(document, '.modal-button', 'click', e => { - e.preventDefault(); - - let href; - - if (e.target.nodeName !== 'A') { - href = e.target.parentNode.href; - } else { - href = e.target.href; - } - - window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes'); - }); - delegate(document, '#account_display_name', 'input', ({ target }) => { const name = document.querySelector('.card .display-name strong'); if (name) { diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss index e9f596e2fd..81a040108e 100644 --- a/app/javascript/styles/application.scss +++ b/app/javascript/styles/application.scss @@ -8,7 +8,6 @@ @import 'mastodon/branding'; @import 'mastodon/containers'; @import 'mastodon/lists'; -@import 'mastodon/footer'; @import 'mastodon/widgets'; @import 'mastodon/forms'; @import 'mastodon/accounts'; diff --git a/app/javascript/styles/contrast/diff.scss b/app/javascript/styles/contrast/diff.scss index 22f5bcc94b..27eb837df0 100644 --- a/app/javascript/styles/contrast/diff.scss +++ b/app/javascript/styles/contrast/diff.scss @@ -68,10 +68,6 @@ color: $darker-text-color; } -.public-layout .public-account-header__tabs__tabs .counter.active::after { - border-bottom: 4px solid $ui-highlight-color; -} - .compose-form .autosuggest-textarea__textarea::placeholder, .compose-form .spoiler-input__input::placeholder { color: $inverted-text-color; diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 4b27e6b4f3..20e973b8b3 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -655,95 +655,6 @@ html { } } -.public-layout { - .account__section-headline { - border: 1px solid lighten($ui-base-color, 8%); - - @media screen and (max-width: $no-gap-breakpoint) { - border-top: 0; - } - } - - .header, - .public-account-header, - .public-account-bio { - box-shadow: none; - } - - .public-account-bio, - .hero-widget__text { - background: $account-background-color; - } - - .header { - background: $ui-base-color; - border: 1px solid lighten($ui-base-color, 8%); - - @media screen and (max-width: $no-gap-breakpoint) { - border: 0; - } - - .brand { - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 4%); - } - } - } - - .public-account-header { - &__image { - background: lighten($ui-base-color, 12%); - - &::after { - box-shadow: none; - } - } - - &__bar { - &::before { - background: $account-background-color; - border: 1px solid lighten($ui-base-color, 8%); - border-top: 0; - } - - .avatar img { - border-color: $account-background-color; - } - - @media screen and (max-width: $no-columns-breakpoint) { - background: $account-background-color; - border: 1px solid lighten($ui-base-color, 8%); - border-top: 0; - } - } - - &__tabs { - &__name { - h1, - h1 small { - color: $white; - - @media screen and (max-width: $no-columns-breakpoint) { - color: $primary-text-color; - } - } - } - } - - &__extra { - .public-account-bio { - border: 0; - } - - .public-account-bio .account__header__fields { - border-color: lighten($ui-base-color, 8%); - } - } - } -} - .notification__filter-bar button.active::after, .account__section-headline a.active::after { border-color: transparent transparent $white; diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss index 8e5ed03f07..b49b93984c 100644 --- a/app/javascript/styles/mastodon/containers.scss +++ b/app/javascript/styles/mastodon/containers.scss @@ -104,785 +104,3 @@ margin-left: 10px; } } - -.grid-3 { - display: grid; - grid-gap: 10px; - grid-template-columns: 3fr 1fr; - grid-auto-columns: 25%; - grid-auto-rows: max-content; - - .column-0 { - grid-column: 1 / 3; - grid-row: 1; - } - - .column-1 { - grid-column: 1; - grid-row: 2; - } - - .column-2 { - grid-column: 2; - grid-row: 2; - } - - .column-3 { - grid-column: 1 / 3; - grid-row: 3; - } - - @media screen and (max-width: $no-gap-breakpoint) { - grid-gap: 0; - grid-template-columns: minmax(0, 100%); - - .column-0 { - grid-column: 1; - } - - .column-1 { - grid-column: 1; - grid-row: 3; - } - - .column-2 { - grid-column: 1; - grid-row: 2; - } - - .column-3 { - grid-column: 1; - grid-row: 4; - } - } -} - -.grid-4 { - display: grid; - grid-gap: 10px; - grid-template-columns: repeat(4, minmax(0, 1fr)); - grid-auto-columns: 25%; - grid-auto-rows: max-content; - - .column-0 { - grid-column: 1 / 5; - grid-row: 1; - } - - .column-1 { - grid-column: 1 / 4; - grid-row: 2; - } - - .column-2 { - grid-column: 4; - grid-row: 2; - } - - .column-3 { - grid-column: 2 / 5; - grid-row: 3; - } - - .column-4 { - grid-column: 1; - grid-row: 3; - } - - .landing-page__call-to-action { - min-height: 100%; - } - - .flash-message { - margin-bottom: 10px; - } - - @media screen and (max-width: 738px) { - grid-template-columns: minmax(0, 50%) minmax(0, 50%); - - .landing-page__call-to-action { - padding: 20px; - display: flex; - align-items: center; - justify-content: center; - } - - .row__information-board { - width: 100%; - justify-content: center; - align-items: center; - } - - .row__mascot { - display: none; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - grid-gap: 0; - grid-template-columns: minmax(0, 100%); - - .column-0 { - grid-column: 1; - } - - .column-1 { - grid-column: 1; - grid-row: 3; - } - - .column-2 { - grid-column: 1; - grid-row: 2; - } - - .column-3 { - grid-column: 1; - grid-row: 5; - } - - .column-4 { - grid-column: 1; - grid-row: 4; - } - } -} - -.public-layout { - @media screen and (max-width: $no-gap-breakpoint) { - padding-top: 48px; - } - - .container { - max-width: 960px; - - @media screen and (max-width: $no-gap-breakpoint) { - padding: 0; - } - } - - .header { - background: lighten($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - border-radius: 4px; - height: 48px; - margin: 10px 0; - display: flex; - align-items: stretch; - justify-content: center; - flex-wrap: nowrap; - overflow: hidden; - - @media screen and (max-width: $no-gap-breakpoint) { - position: fixed; - width: 100%; - top: 0; - left: 0; - margin: 0; - border-radius: 0; - box-shadow: none; - z-index: 110; - } - - & > div { - flex: 1 1 33.3%; - min-height: 1px; - } - - .nav-left { - display: flex; - align-items: stretch; - justify-content: flex-start; - flex-wrap: nowrap; - } - - .nav-center { - display: flex; - align-items: stretch; - justify-content: center; - flex-wrap: nowrap; - } - - .nav-right { - display: flex; - align-items: stretch; - justify-content: flex-end; - flex-wrap: nowrap; - } - - .brand { - display: block; - padding: 15px; - - .logo { - display: block; - height: 18px; - width: auto; - position: relative; - bottom: -2px; - fill: $primary-text-color; - - @media screen and (max-width: $no-gap-breakpoint) { - height: 20px; - } - } - - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 12%); - } - } - - .nav-link { - display: flex; - align-items: center; - padding: 0 1rem; - font-size: 12px; - font-weight: 500; - text-decoration: none; - color: $darker-text-color; - white-space: nowrap; - text-align: center; - - &:hover, - &:focus, - &:active { - text-decoration: underline; - color: $primary-text-color; - } - - @media screen and (max-width: 550px) { - &.optional { - display: none; - } - } - } - - .nav-button { - background: lighten($ui-base-color, 16%); - margin: 8px; - margin-left: 0; - border-radius: 4px; - - &:hover, - &:focus, - &:active { - text-decoration: none; - background: lighten($ui-base-color, 20%); - } - } - } - - $no-columns-breakpoint: 600px; - - .grid { - display: grid; - grid-gap: 10px; - grid-template-columns: minmax(300px, 3fr) minmax(298px, 1fr); - grid-auto-columns: 25%; - grid-auto-rows: max-content; - - .column-0 { - grid-row: 1; - grid-column: 1; - } - - .column-1 { - grid-row: 1; - grid-column: 2; - } - - @media screen and (max-width: $no-columns-breakpoint) { - grid-template-columns: 100%; - grid-gap: 0; - - .column-1 { - display: none; - } - } - } - - .page-header { - @media screen and (max-width: $no-gap-breakpoint) { - border-bottom: 0; - } - } - - .public-account-header { - overflow: hidden; - margin-bottom: 10px; - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - - &.inactive { - opacity: 0.5; - - .public-account-header__image, - .avatar { - filter: grayscale(100%); - } - - .logo-button { - background-color: $secondary-text-color; - } - } - - .logo-button { - padding: 3px 15px; - } - - &__image { - border-radius: 4px 4px 0 0; - overflow: hidden; - height: 300px; - position: relative; - background: darken($ui-base-color, 12%); - - &::after { - content: ""; - display: block; - position: absolute; - width: 100%; - height: 100%; - box-shadow: inset 0 -1px 1px 1px rgba($base-shadow-color, 0.15); - top: 0; - left: 0; - } - - img { - object-fit: cover; - display: block; - width: 100%; - height: 100%; - margin: 0; - border-radius: 4px 4px 0 0; - } - - @media screen and (max-width: 600px) { - height: 200px; - } - } - - &--no-bar { - margin-bottom: 0; - - .public-account-header__image, - .public-account-header__image img { - border-radius: 4px; - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - margin-bottom: 0; - box-shadow: none; - - &__image::after { - display: none; - } - - &__image, - &__image img { - border-radius: 0; - } - } - - &__bar { - position: relative; - margin-top: -80px; - display: flex; - justify-content: flex-start; - - &::before { - content: ""; - display: block; - background: lighten($ui-base-color, 4%); - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 60px; - border-radius: 0 0 4px 4px; - z-index: -1; - } - - .avatar { - display: block; - width: 120px; - height: 120px; - padding-left: 20px - 4px; - flex: 0 0 auto; - - img { - display: block; - width: 100%; - height: 100%; - margin: 0; - border-radius: 50%; - border: 4px solid lighten($ui-base-color, 4%); - background: darken($ui-base-color, 8%); - } - } - - @media screen and (max-width: 600px) { - margin-top: 0; - background: lighten($ui-base-color, 4%); - border-radius: 0 0 4px 4px; - padding: 5px; - - &::before { - display: none; - } - - .avatar { - width: 48px; - height: 48px; - padding: 7px 0; - padding-left: 10px; - - img { - border: 0; - border-radius: 4px; - } - - @media screen and (max-width: 360px) { - display: none; - } - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - - @media screen and (max-width: $no-columns-breakpoint) { - flex-wrap: wrap; - } - } - - &__tabs { - flex: 1 1 auto; - margin-left: 20px; - - &__name { - padding-top: 20px; - padding-bottom: 8px; - - h1 { - font-size: 20px; - line-height: 18px * 1.5; - color: $primary-text-color; - font-weight: 500; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - text-shadow: 1px 1px 1px $base-shadow-color; - - small { - display: block; - font-size: 14px; - color: $primary-text-color; - font-weight: 400; - overflow: hidden; - text-overflow: ellipsis; - } - } - } - - @media screen and (max-width: 600px) { - margin-left: 15px; - display: flex; - justify-content: space-between; - align-items: center; - - &__name { - padding-top: 0; - padding-bottom: 0; - - h1 { - font-size: 16px; - line-height: 24px; - text-shadow: none; - - small { - color: $darker-text-color; - } - } - } - } - - &__tabs { - display: flex; - justify-content: flex-start; - align-items: stretch; - height: 58px; - - .details-counters { - display: flex; - flex-direction: row; - min-width: 300px; - } - - @media screen and (max-width: $no-columns-breakpoint) { - .details-counters { - display: none; - } - } - - .counter { - min-width: 33.3%; - box-sizing: border-box; - flex: 0 0 auto; - color: $darker-text-color; - padding: 10px; - border-right: 1px solid lighten($ui-base-color, 4%); - cursor: default; - text-align: center; - position: relative; - - a { - display: block; - } - - &:last-child { - border-right: 0; - } - - &::after { - display: block; - content: ""; - position: absolute; - bottom: 0; - left: 0; - width: 100%; - border-bottom: 4px solid $ui-primary-color; - opacity: 0.5; - transition: all 400ms ease; - } - - &.active { - &::after { - border-bottom: 4px solid $highlight-text-color; - opacity: 1; - } - - &.inactive::after { - border-bottom-color: $secondary-text-color; - } - } - - &:hover { - &::after { - opacity: 1; - transition-duration: 100ms; - } - } - - a { - text-decoration: none; - color: inherit; - } - - .counter-label { - font-size: 12px; - display: block; - } - - .counter-number { - font-weight: 500; - font-size: 18px; - margin-bottom: 5px; - color: $primary-text-color; - font-family: $font-display, sans-serif; - } - } - - .spacer { - flex: 1 1 auto; - height: 1px; - } - - &__buttons { - padding: 7px 8px; - } - } - } - - &__extra { - display: none; - margin-top: 4px; - - .public-account-bio { - border-radius: 0; - box-shadow: none; - background: transparent; - margin: 0 -5px; - - .account__header__fields { - border-top: 1px solid lighten($ui-base-color, 12%); - } - - .roles { - display: none; - } - } - - &__links { - margin-top: -15px; - font-size: 14px; - color: $darker-text-color; - - a { - display: inline-block; - color: $darker-text-color; - text-decoration: none; - padding: 15px; - font-weight: 500; - - strong { - font-weight: 700; - color: $primary-text-color; - } - } - } - - @media screen and (max-width: $no-columns-breakpoint) { - display: block; - flex: 100%; - } - } - } - - .account__section-headline { - border-radius: 4px 4px 0 0; - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - } - - .detailed-status__meta { - margin-top: 25px; - } - - .public-account-bio { - background: lighten($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - border-radius: 4px; - overflow: hidden; - margin-bottom: 10px; - - @media screen and (max-width: $no-gap-breakpoint) { - box-shadow: none; - margin-bottom: 0; - border-radius: 0; - } - - .account__header__fields { - margin: 0; - border-top: 0; - - a { - color: $highlight-text-color; - } - - dl:first-child .verified { - border-radius: 0 4px 0 0; - } - - .verified a { - color: $valid-value-color; - } - } - - .account__header__content { - padding: 20px; - padding-bottom: 0; - color: $primary-text-color; - } - - &__extra, - .roles { - padding: 20px; - font-size: 14px; - color: $darker-text-color; - } - - .roles { - padding-bottom: 0; - } - } - - .directory__list { - display: grid; - grid-gap: 10px; - grid-template-columns: minmax(0, 50%) minmax(0, 50%); - - .account-card { - display: flex; - flex-direction: column; - } - - @media screen and (max-width: $no-gap-breakpoint) { - display: block; - - .account-card { - margin-bottom: 10px; - display: block; - } - } - } - - .card-grid { - display: flex; - flex-wrap: wrap; - min-width: 100%; - margin: 0 -5px; - - & > div { - box-sizing: border-box; - flex: 1 0 auto; - width: 300px; - padding: 0 5px; - margin-bottom: 10px; - max-width: 33.333%; - - @media screen and (max-width: 900px) { - max-width: 50%; - } - - @media screen and (max-width: 600px) { - max-width: 100%; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - margin: 0; - border-top: 1px solid lighten($ui-base-color, 8%); - - & > div { - width: 100%; - padding: 0; - margin-bottom: 0; - border-bottom: 1px solid lighten($ui-base-color, 8%); - - &:last-child { - border-bottom: 0; - } - - .card__bar { - background: $ui-base-color; - - &:hover, - &:active, - &:focus { - background: lighten($ui-base-color, 4%); - } - } - } - } - } -} diff --git a/app/javascript/styles/mastodon/footer.scss b/app/javascript/styles/mastodon/footer.scss deleted file mode 100644 index 0c3e420332..0000000000 --- a/app/javascript/styles/mastodon/footer.scss +++ /dev/null @@ -1,152 +0,0 @@ -.public-layout { - .footer { - text-align: left; - padding-top: 20px; - padding-bottom: 60px; - font-size: 12px; - color: lighten($ui-base-color, 34%); - - @media screen and (max-width: $no-gap-breakpoint) { - padding-left: 20px; - padding-right: 20px; - } - - .grid { - display: grid; - grid-gap: 10px; - grid-template-columns: 1fr 1fr 2fr 1fr 1fr; - - .column-0 { - grid-column: 1; - grid-row: 1; - min-width: 0; - } - - .column-1 { - grid-column: 2; - grid-row: 1; - min-width: 0; - } - - .column-2 { - grid-column: 3; - grid-row: 1; - min-width: 0; - text-align: center; - - h4 a { - color: lighten($ui-base-color, 34%); - } - } - - .column-3 { - grid-column: 4; - grid-row: 1; - min-width: 0; - } - - .column-4 { - grid-column: 5; - grid-row: 1; - min-width: 0; - } - - @media screen and (max-width: 690px) { - grid-template-columns: 1fr 2fr 1fr; - - .column-0, - .column-1 { - grid-column: 1; - } - - .column-1 { - grid-row: 2; - } - - .column-2 { - grid-column: 2; - } - - .column-3, - .column-4 { - grid-column: 3; - } - - .column-4 { - grid-row: 2; - } - } - - @media screen and (max-width: 600px) { - .column-1 { - display: block; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - .column-0, - .column-1, - .column-3, - .column-4 { - display: none; - } - - .column-2 h4 { - display: none; - } - } - } - - .legal-xs { - display: none; - text-align: center; - padding-top: 20px; - - @media screen and (max-width: $no-gap-breakpoint) { - display: block; - } - } - - h4 { - text-transform: uppercase; - font-weight: 700; - margin-bottom: 8px; - color: $darker-text-color; - - a { - color: inherit; - text-decoration: none; - } - } - - ul a, - .legal-xs a { - text-decoration: none; - color: lighten($ui-base-color, 34%); - - &:hover, - &:active, - &:focus { - text-decoration: underline; - } - } - - .brand { - .logo { - display: block; - height: 36px; - width: auto; - margin: 0 auto; - color: lighten($ui-base-color, 34%); - } - - &:hover, - &:focus, - &:active { - .logo { - color: lighten($ui-base-color, 38%); - } - } - } - } -} diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index 98eb1511cc..ccec8e95e4 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -53,16 +53,6 @@ body.rtl { right: -26px; } - .landing-page__logo { - margin-right: 0; - margin-left: 20px; - } - - .landing-page .features-list .features-list__row .visual { - margin-left: 0; - margin-right: 15px; - } - .column-link__icon, .column-header__icon { margin-right: 0; @@ -350,44 +340,6 @@ body.rtl { margin-left: 45px; } - .landing-page .header-wrapper .mascot { - right: 60px; - left: auto; - } - - .landing-page__call-to-action .row__information-board { - direction: rtl; - } - - .landing-page .header .hero .floats .float-1 { - left: -120px; - right: auto; - } - - .landing-page .header .hero .floats .float-2 { - left: 210px; - right: auto; - } - - .landing-page .header .hero .floats .float-3 { - left: 110px; - right: auto; - } - - .landing-page .header .links .brand img { - left: 0; - } - - .landing-page .fa-external-link { - padding-right: 5px; - padding-left: 0 !important; - } - - .landing-page .features #mastodon-timeline { - margin-right: 0; - margin-left: 30px; - } - @media screen and (min-width: 631px) { .column, .drawer { @@ -415,32 +367,6 @@ body.rtl { padding-right: 0; } - .public-layout { - .header { - .nav-button { - margin-left: 8px; - margin-right: 0; - } - } - - .public-account-header__tabs { - margin-left: 0; - margin-right: 20px; - } - } - - .landing-page__information { - .account__display-name { - margin-right: 0; - margin-left: 5px; - } - - .account__avatar-wrapper { - margin-left: 12px; - margin-right: 0; - } - } - .card__bar .display-name { margin-left: 0; margin-right: 15px; diff --git a/app/javascript/styles/mastodon/statuses.scss b/app/javascript/styles/mastodon/statuses.scss index a3237a6307..ce71d11e4e 100644 --- a/app/javascript/styles/mastodon/statuses.scss +++ b/app/javascript/styles/mastodon/statuses.scss @@ -137,8 +137,7 @@ a.button.logo-button { justify-content: center; } -.embed, -.public-layout { +.embed { .status__content[data-spoiler="folded"] { .e-content { display: none; diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb index 6d15f39638..cf1a376251 100644 --- a/app/lib/permalink_redirector.rb +++ b/app/lib/permalink_redirector.rb @@ -8,16 +8,14 @@ class PermalinkRedirector end def redirect_path - if path_segments[0] == 'web' - if path_segments[1].present? && path_segments[1].start_with?('@') && path_segments[2] =~ /\d/ - find_status_url_by_id(path_segments[2]) - elsif path_segments[1].present? && path_segments[1].start_with?('@') - find_account_url_by_name(path_segments[1]) - elsif path_segments[1] == 'statuses' && path_segments[2] =~ /\d/ - find_status_url_by_id(path_segments[2]) - elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/ - find_account_url_by_id(path_segments[2]) - end + if path_segments[0].present? && path_segments[0].start_with?('@') && path_segments[1] =~ /\d/ + find_status_url_by_id(path_segments[1]) + elsif path_segments[0].present? && path_segments[0].start_with?('@') + find_account_url_by_name(path_segments[0]) + elsif path_segments[0] == 'statuses' && path_segments[1] =~ /\d/ + find_status_url_by_id(path_segments[1]) + elsif path_segments[0] == 'accounts' && path_segments[1] =~ /\d/ + find_account_url_by_id(path_segments[1]) end end @@ -29,18 +27,12 @@ class PermalinkRedirector def find_status_url_by_id(id) status = Status.find_by(id: id) - - return unless status&.distributable? - - ActivityPub::TagManager.instance.url_for(status) + ActivityPub::TagManager.instance.url_for(status) if status&.distributable? && !status.account.local? end def find_account_url_by_id(id) account = Account.find_by(id: id) - - return unless account - - ActivityPub::TagManager.instance.url_for(account) + ActivityPub::TagManager.instance.url_for(account) if account.present? && !account.local? end def find_account_url_by_name(name) @@ -48,12 +40,6 @@ class PermalinkRedirector domain = nil if TagManager.instance.local_domain?(domain) account = Account.find_remote(username, domain) - return unless account - - ActivityPub::TagManager.instance.url_for(account) - end - - def find_tag_url_by_name(name) - tag_path(CGI.unescape(name)) + ActivityPub::TagManager.instance.url_for(account) if account.present? && !account.local? end end diff --git a/app/models/account.rb b/app/models/account.rb index 1be7b4d12c..df7fa8d502 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -134,6 +134,7 @@ class Account < ApplicationRecord :role, :locale, :shows_application?, + :prefers_noindex?, to: :user, prefix: true, allow_nil: true diff --git a/app/models/user.rb b/app/models/user.rb index 4767189a07..6d566b1c26 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -281,6 +281,10 @@ class User < ApplicationRecord save! end + def prefers_noindex? + setting_noindex + end + def preferred_posting_language valid_locale_cascade(settings.default_language, locale, I18n.locale) end diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb index c52a89d872..e521dacaaa 100644 --- a/app/serializers/rest/account_serializer.rb +++ b/app/serializers/rest/account_serializer.rb @@ -14,6 +14,7 @@ class REST::AccountSerializer < ActiveModel::Serializer attribute :suspended, if: :suspended? attribute :silenced, key: :limited, if: :silenced? + attribute :noindex, if: :local? class FieldSerializer < ActiveModel::Serializer include FormattingHelper @@ -103,7 +104,11 @@ class REST::AccountSerializer < ActiveModel::Serializer object.silenced? end - delegate :suspended?, :silenced?, to: :object + def noindex + object.user_prefers_noindex? + end + + delegate :suspended?, :silenced?, :local?, to: :object def moved_and_not_nested? object.moved? && object.moved_to_account.moved_to_account_id.nil? diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index aff28b9a92..05d8989add 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -1,4 +1,7 @@ - content_for :page_title do = t('about.title') +- content_for :header_tags do + = render partial: 'shared/og' + = render partial: 'shared/web_app' diff --git a/app/views/accounts/_bio.html.haml b/app/views/accounts/_bio.html.haml deleted file mode 100644 index e2539b1d4a..0000000000 --- a/app/views/accounts/_bio.html.haml +++ /dev/null @@ -1,21 +0,0 @@ -- fields = account.fields - -.public-account-bio - - unless fields.empty? - .account__header__fields - - fields.each do |field| - %dl - %dt.emojify{ title: field.name }= prerender_custom_emojis(h(field.name), account.emojis) - %dd{ title: field.value, class: custom_field_classes(field) } - - if field.verified? - %span.verified__mark{ title: t('accounts.link_verified_on', date: l(field.verified_at)) } - = fa_icon 'check' - = prerender_custom_emojis(account_field_value_format(field), account.emojis) - - = account_badge(account) - - - if account.note.present? - .account__header__content.emojify= prerender_custom_emojis(account_bio_format(account), account.emojis) - - .public-account-bio__extra - = t 'accounts.joined', date: l(account.created_at, format: :month) diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml deleted file mode 100644 index d9966723a7..0000000000 --- a/app/views/accounts/_header.html.haml +++ /dev/null @@ -1,43 +0,0 @@ -.public-account-header{:class => ("inactive" if account.moved?)} - .public-account-header__image - = image_tag (prefers_autoplay? ? account.header_original_url : account.header_static_url), class: 'parallax' - .public-account-header__bar - = link_to short_account_url(account), class: 'avatar' do - = image_tag (prefers_autoplay? ? account.avatar_original_url : account.avatar_static_url), id: 'profile_page_avatar', data: { original: full_asset_url(account.avatar_original_url), static: full_asset_url(account.avatar_static_url), autoplay: prefers_autoplay? } - .public-account-header__tabs - .public-account-header__tabs__name - %h1 - = display_name(account, custom_emojify: true) - %small - = acct(account) - = fa_icon('lock') if account.locked? - .public-account-header__tabs__tabs - .details-counters - .counter{ class: active_nav_class(short_account_url(account), short_account_with_replies_url(account), short_account_media_url(account)) } - = link_to short_account_url(account), class: 'u-url u-uid', title: number_with_delimiter(account.statuses_count) do - %span.counter-number= friendly_number_to_human account.statuses_count - %span.counter-label= t('accounts.posts', count: account.statuses_count) - - .counter{ class: active_nav_class(account_following_index_url(account)) } - = link_to account_following_index_url(account), title: number_with_delimiter(account.following_count) do - %span.counter-number= friendly_number_to_human account.following_count - %span.counter-label= t('accounts.following', count: account.following_count) - - .counter{ class: active_nav_class(account_followers_url(account)) } - = link_to account_followers_url(account), title: number_with_delimiter(account.followers_count) do - %span.counter-number= friendly_number_to_human account.followers_count - %span.counter-label= t('accounts.followers', count: account.followers_count) - .spacer - .public-account-header__tabs__tabs__buttons - = account_action_button(account) - - .public-account-header__extra - = render 'accounts/bio', account: account - - .public-account-header__extra__links - = link_to account_following_index_url(account) do - %strong= friendly_number_to_human account.following_count - = t('accounts.following', count: account.following_count) - = link_to account_followers_url(account) do - %strong= friendly_number_to_human account.followers_count - = t('accounts.followers', count: account.followers_count) diff --git a/app/views/accounts/_moved.html.haml b/app/views/accounts/_moved.html.haml deleted file mode 100644 index 2f46e0dd0f..0000000000 --- a/app/views/accounts/_moved.html.haml +++ /dev/null @@ -1,20 +0,0 @@ -- moved_to_account = account.moved_to_account - -.moved-account-widget - .moved-account-widget__message - = fa_icon 'suitcase' - = t('accounts.moved_html', name: content_tag(:bdi, content_tag(:strong, display_name(account, custom_emojify: true), class: :emojify)), new_profile_link: link_to(content_tag(:strong, safe_join(['@', content_tag(:span, moved_to_account.pretty_acct)])), ActivityPub::TagManager.instance.url_for(moved_to_account), class: 'mention')) - - .moved-account-widget__card - = link_to ActivityPub::TagManager.instance.url_for(moved_to_account), class: 'detailed-status__display-name p-author h-card', target: '_blank', rel: 'me noopener noreferrer' do - .detailed-status__display-avatar - .account__avatar-overlay - .account__avatar-overlay-base - = image_tag moved_to_account.avatar_static_url - .account__avatar-overlay-overlay - = image_tag account.avatar_static_url - - %span.display-name - %bdi - %strong.emojify= display_name(moved_to_account, custom_emojify: true) - %span @#{moved_to_account.pretty_acct} diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml index 7fa688bd35..a51dcd7be4 100644 --- a/app/views/accounts/show.html.haml +++ b/app/views/accounts/show.html.haml @@ -2,85 +2,13 @@ = "#{display_name(@account)} (#{acct(@account)})" - content_for :header_tags do - - if @account.user&.setting_noindex + - if @account.user_prefers_noindex? %meta{ name: 'robots', content: 'noindex, noarchive' }/ %link{ rel: 'alternate', type: 'application/rss+xml', href: @rss_url }/ %link{ rel: 'alternate', type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(@account) }/ - - if @older_url - %link{ rel: 'next', href: @older_url }/ - - if @newer_url - %link{ rel: 'prev', href: @newer_url }/ - = opengraph 'og:type', 'profile' = render 'og', account: @account, url: short_account_url(@account, only_path: false) - -= render 'header', account: @account, with_bio: true - -.grid - .column-0 - .h-feed - %data.p-name{ value: "#{@account.username} on #{site_hostname}" }/ - - .account__section-headline - = active_link_to t('accounts.posts_tab_heading'), short_account_url(@account) - = active_link_to t('accounts.posts_with_replies'), short_account_with_replies_url(@account) - = active_link_to t('accounts.media'), short_account_media_url(@account) - - - if user_signed_in? && @account.blocking?(current_account) - .nothing-here.nothing-here--under-tabs= t('accounts.unavailable') - - elsif @statuses.empty? - = nothing_here 'nothing-here--under-tabs' - - else - .activity-stream.activity-stream--under-tabs - - if params[:page].to_i.zero? - = render partial: 'statuses/status', collection: @pinned_statuses, as: :status, locals: { pinned: true } - - - if @newer_url - .entry= link_to_newer @newer_url - - = render partial: 'statuses/status', collection: @statuses, as: :status - - - if @older_url - .entry= link_to_older @older_url - - .column-1 - - if @account.memorial? - .memoriam-widget= t('in_memoriam_html') - - elsif @account.moved? - = render 'moved', account: @account - - = render 'bio', account: @account - - - if @endorsed_accounts.empty? && @account.id == current_account&.id - .placeholder-widget= t('accounts.endorsements_hint') - - elsif !@endorsed_accounts.empty? - .endorsements-widget - %h4= t 'accounts.choices_html', name: content_tag(:bdi, display_name(@account, custom_emojify: true)) - - - @endorsed_accounts.each do |account| - = account_link_to account - - - if @featured_hashtags.empty? && @account.id == current_account&.id - .placeholder-widget - = t('accounts.featured_tags_hint') - = link_to settings_featured_tags_path do - = t('featured_tags.add_new') - = fa_icon 'chevron-right fw' - - else - - @featured_hashtags.each do |featured_tag| - .directory__tag{ class: params[:tag] == featured_tag.name ? 'active' : nil } - = link_to short_account_tag_path(@account, featured_tag.tag) do - %h4 - = fa_icon 'hashtag' - = featured_tag.display_name - %small - - if featured_tag.last_status_at.nil? - = t('accounts.nothing_here') - - else - %time.formatted{ datetime: featured_tag.last_status_at.iso8601, title: l(featured_tag.last_status_at) }= l featured_tag.last_status_at - .trends__item__current= friendly_number_to_human featured_tag.statuses_count - - = render 'application/sidebar' += render partial: 'shared/web_app' diff --git a/app/views/follower_accounts/index.html.haml b/app/views/follower_accounts/index.html.haml index 92de35a9fc..d93540c028 100644 --- a/app/views/follower_accounts/index.html.haml +++ b/app/views/follower_accounts/index.html.haml @@ -1,20 +1,6 @@ -- content_for :page_title do - = t('accounts.people_who_follow', name: display_name(@account)) - - content_for :header_tags do %meta{ name: 'robots', content: 'noindex' }/ - = render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false) -= render 'accounts/header', account: @account - -- if @account.hide_collections? - .nothing-here= t('accounts.network_hidden') -- elsif user_signed_in? && @account.blocking?(current_account) - .nothing-here= t('accounts.unavailable') -- elsif @follows.empty? - = nothing_here -- else - .card-grid - = render partial: 'application/card', collection: @follows.map(&:account), as: :account + = render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false) - = paginate @follows += render 'shared/web_app' diff --git a/app/views/following_accounts/index.html.haml b/app/views/following_accounts/index.html.haml index 9bb1a9eddf..d93540c028 100644 --- a/app/views/following_accounts/index.html.haml +++ b/app/views/following_accounts/index.html.haml @@ -1,20 +1,6 @@ -- content_for :page_title do - = t('accounts.people_followed_by', name: display_name(@account)) - - content_for :header_tags do %meta{ name: 'robots', content: 'noindex' }/ - = render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false) -= render 'accounts/header', account: @account - -- if @account.hide_collections? - .nothing-here= t('accounts.network_hidden') -- elsif user_signed_in? && @account.blocking?(current_account) - .nothing-here= t('accounts.unavailable') -- elsif @follows.empty? - = nothing_here -- else - .card-grid - = render partial: 'application/card', collection: @follows.map(&:target_account), as: :account + = render 'accounts/og', account: @account, url: account_followers_url(@account, only_path: false) - = paginate @follows += render 'shared/web_app' diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml index 76a02e0f04..45990cd10c 100644 --- a/app/views/home/index.html.haml +++ b/app/views/home/index.html.haml @@ -1,4 +1,7 @@ - content_for :header_tags do + - unless request.path == '/' + %meta{ name: 'robots', content: 'noindex' }/ + = render partial: 'shared/og' = render 'shared/web_app' diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml deleted file mode 100644 index 9b9e725e97..0000000000 --- a/app/views/layouts/public.html.haml +++ /dev/null @@ -1,60 +0,0 @@ -- content_for :header_tags do - = render_initial_state - = javascript_pack_tag 'public', crossorigin: 'anonymous' - -- content_for :content do - .public-layout - - unless @hide_navbar - .container - %nav.header - .nav-left - = link_to root_url, class: 'brand' do - = logo_as_symbol(:wordmark) - - - unless whitelist_mode? - = link_to t('about.about_this'), about_more_path, class: 'nav-link optional' - = link_to t('about.apps'), 'https://joinmastodon.org/apps', class: 'nav-link optional' - - .nav-center - - .nav-right - - if user_signed_in? - = link_to t('settings.back'), root_url, class: 'nav-link nav-button webapp-btn' - - else - = link_to_login t('auth.login'), class: 'webapp-btn nav-link nav-button' - = link_to t('auth.register'), available_sign_up_path, class: 'webapp-btn nav-link nav-button' - - .container= yield - - .container - .footer - .grid - .column-0 - %h4= t 'footer.resources' - %ul - %li= link_to t('about.privacy_policy'), privacy_policy_path - .column-1 - %h4= t 'footer.developers' - %ul - %li= link_to t('about.documentation'), 'https://docs.joinmastodon.org/' - %li= link_to t('about.api'), 'https://docs.joinmastodon.org/client/intro/' - .column-2 - %h4= link_to t('about.what_is_mastodon'), 'https://joinmastodon.org/' - = link_to logo_as_symbol, root_url, class: 'brand' - .column-3 - %h4= site_hostname - %ul - - unless whitelist_mode? - %li= link_to t('about.about_this'), about_more_path - %li= "v#{Mastodon::Version.to_s}" - .column-4 - %h4= t 'footer.more' - %ul - %li= link_to t('about.source_code'), Mastodon::Version.source_url - %li= link_to t('about.apps'), 'https://joinmastodon.org/apps' - .legal-xs - = link_to "v#{Mastodon::Version.to_s}", Mastodon::Version.source_url - · - = link_to t('about.privacy_policy'), privacy_policy_path - -= render template: 'layouts/application' diff --git a/app/views/privacy/show.html.haml b/app/views/privacy/show.html.haml index cfc285925e..95e506641b 100644 --- a/app/views/privacy/show.html.haml +++ b/app/views/privacy/show.html.haml @@ -1,4 +1,7 @@ - content_for :page_title do = t('privacy_policy.title') +- content_for :header_tags do + = render partial: 'shared/og' + = render 'shared/web_app' diff --git a/app/views/remote_follow/new.html.haml b/app/views/remote_follow/new.html.haml deleted file mode 100644 index 4e9601f6aa..0000000000 --- a/app/views/remote_follow/new.html.haml +++ /dev/null @@ -1,20 +0,0 @@ -- content_for :header_tags do - %meta{ name: 'robots', content: 'noindex' }/ - -.form-container - .follow-prompt - %h2= t('remote_follow.prompt') - - = render partial: 'application/card', locals: { account: @account } - - = simple_form_for @remote_follow, as: :remote_follow, url: account_remote_follow_path(@account) do |f| - = render 'shared/error_messages', object: @remote_follow - - = f.input :acct, placeholder: t('remote_follow.acct'), input_html: { autocapitalize: 'none', autocorrect: 'off' } - - .actions - = f.button :button, t('remote_follow.proceed'), type: :submit - - %p.hint.subtle-hint - = t('remote_follow.reason_html', instance: site_hostname) - = t('remote_follow.no_account_html', sign_up_path: available_sign_up_path) diff --git a/app/views/remote_interaction/new.html.haml b/app/views/remote_interaction/new.html.haml deleted file mode 100644 index 2cc0fcb93d..0000000000 --- a/app/views/remote_interaction/new.html.haml +++ /dev/null @@ -1,24 +0,0 @@ -- content_for :header_tags do - %meta{ name: 'robots', content: 'noindex' }/ - -.form-container - .follow-prompt - %h2= t("remote_interaction.#{@interaction_type}.prompt") - - .public-layout - .activity-stream.activity-stream--highlighted - = render 'statuses/status', status: @status - - = simple_form_for @remote_follow, as: :remote_follow, url: remote_interaction_path(@status) do |f| - = render 'shared/error_messages', object: @remote_follow - - = hidden_field_tag :type, @interaction_type - - = f.input :acct, placeholder: t('remote_follow.acct'), input_html: { autocapitalize: 'none', autocorrect: 'off' } - - .actions - = f.button :button, t("remote_interaction.#{@interaction_type}.proceed"), type: :submit - - %p.hint.subtle-hint - = t('remote_follow.reason_html', instance: site_hostname) - = t('remote_follow.no_account_html', sign_up_path: available_sign_up_path) diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml index c67f0e4d9b..37001b0221 100644 --- a/app/views/statuses/_detailed_status.html.haml +++ b/app/views/statuses/_detailed_status.html.haml @@ -56,7 +56,7 @@ - else = link_to status.application.name, status.application.website, class: 'detailed-status__application', target: '_blank', rel: 'noopener noreferrer' · - = link_to remote_interaction_path(status, type: :reply), class: 'modal-button detailed-status__link' do + %span.detailed-status__link - if status.in_reply_to_id.nil? = fa_icon('reply') - else @@ -65,12 +65,12 @@ = " " · - if status.public_visibility? || status.unlisted_visibility? - = link_to remote_interaction_path(status, type: :reblog), class: 'modal-button detailed-status__link' do + %span.detailed-status__link = fa_icon('retweet') %span.detailed-status__reblogs>= friendly_number_to_human status.reblogs_count = " " · - = link_to remote_interaction_path(status, type: :favourite), class: 'modal-button detailed-status__link' do + %span.detailed-status__link = fa_icon('star') %span.detailed-status__favorites>= friendly_number_to_human status.favourites_count = " " diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml index f16d2c186b..bfde3a2608 100644 --- a/app/views/statuses/_simple_status.html.haml +++ b/app/views/statuses/_simple_status.html.haml @@ -53,18 +53,18 @@ = t 'statuses.show_thread' .status__action-bar - = link_to remote_interaction_path(status, type: :reply), class: 'status__action-bar-button icon-button icon-button--with-counter modal-button' do + %span.status__action-bar-button.icon-button.icon-button--with-counter - if status.in_reply_to_id.nil? = fa_icon 'reply fw' - else = fa_icon 'reply-all fw' %span.icon-button__counter= obscured_counter status.replies_count - = link_to remote_interaction_path(status, type: :reblog), class: 'status__action-bar-button icon-button modal-button' do + %span.status__action-bar-button.icon-button - if status.distributable? = fa_icon 'retweet fw' - elsif status.private_visibility? || status.limited_visibility? = fa_icon 'lock fw' - else = fa_icon 'at fw' - = link_to remote_interaction_path(status, type: :favourite), class: 'status__action-bar-button icon-button modal-button' do + %span.status__action-bar-button.icon-button = fa_icon 'star fw' diff --git a/app/views/statuses/show.html.haml b/app/views/statuses/show.html.haml index 5a3c94b844..106c41725e 100644 --- a/app/views/statuses/show.html.haml +++ b/app/views/statuses/show.html.haml @@ -2,7 +2,7 @@ = t('statuses.title', name: display_name(@account), quote: truncate(@status.spoiler_text.presence || @status.text, length: 50, omission: '…', escape: false)) - content_for :header_tags do - - if @account.user&.setting_noindex + - if @account.user_prefers_noindex? %meta{ name: 'robots', content: 'noindex, noarchive' }/ %link{ rel: 'alternate', type: 'application/json+oembed', href: api_oembed_url(url: short_account_status_url(@account, @status), format: 'json') }/ diff --git a/app/views/tags/show.html.haml b/app/views/tags/show.html.haml new file mode 100644 index 0000000000..4b4967a8f5 --- /dev/null +++ b/app/views/tags/show.html.haml @@ -0,0 +1,5 @@ +- content_for :header_tags do + %meta{ name: 'robots', content: 'noindex' }/ + = render partial: 'shared/og' + += render partial: 'shared/web_app' diff --git a/config/locales/en.yml b/config/locales/en.yml index 504f1b364d..412178ca39 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2,47 +2,26 @@ en: about: about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!' - api: API - apps: Mobile apps contact_missing: Not set contact_unavailable: N/A - documentation: Documentation hosted_on: Mastodon hosted on %{domain} - privacy_policy: Privacy Policy - source_code: Source code title: About - what_is_mastodon: What is Mastodon? accounts: - choices_html: "%{name}'s choices:" - endorsements_hint: You can endorse people you follow from the web interface, and they will show up here. - featured_tags_hint: You can feature specific hashtags that will be displayed here. follow: Follow followers: one: Follower other: Followers following: Following instance_actor_flash: This account is a virtual actor used to represent the server itself and not any individual user. It is used for federation purposes and should not be suspended. - joined: Joined %{date} last_active: last active link_verified_on: Ownership of this link was checked on %{date} - media: Media - moved_html: "%{name} has moved to %{new_profile_link}:" - network_hidden: This information is not available nothing_here: There is nothing here! - people_followed_by: People whom %{name} follows - people_who_follow: People who follow %{name} pin_errors: following: You must be already following the person you want to endorse posts: one: Post other: Posts posts_tab_heading: Posts - posts_with_replies: Posts and replies - roles: - bot: Bot - group: Group - unavailable: Profile unavailable - unfollow: Unfollow admin: account_actions: action: Perform action @@ -1176,9 +1155,6 @@ en: hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the web interface. title: Filtered posts footer: - developers: Developers - more: More… - resources: Resources trending_now: Trending now generic: all: All @@ -1221,7 +1197,6 @@ en: following: Following list muting: Muting list upload: Upload - in_memoriam_html: In Memoriam. invites: delete: Deactivate expired: Expired @@ -1402,22 +1377,7 @@ en: remove_selected_follows: Unfollow selected users status: Account status remote_follow: - acct: Enter your username@domain you want to act from missing_resource: Could not find the required redirect URL for your account - no_account_html: Don't have an account? You can sign up here - proceed: Proceed to follow - prompt: 'You are going to follow:' - reason_html: "Why is this step necessary? %{instance} might not be the server where you are registered, so we need to redirect you to your home server first." - remote_interaction: - favourite: - proceed: Proceed to favourite - prompt: 'You want to favourite this post:' - reblog: - proceed: Proceed to boost - prompt: 'You want to boost this post:' - reply: - proceed: Proceed to reply - prompt: 'You want to reply to this post:' reports: errors: invalid_rules: does not reference valid rules diff --git a/config/routes.rb b/config/routes.rb index 29ec0f8a56..1ed585f196 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,6 +3,31 @@ require 'sidekiq_unique_jobs/web' require 'sidekiq-scheduler/web' +# Paths of routes on the web app that to not require to be indexed or +# have alternative format representations requiring separate controllers +WEB_APP_PATHS = %w( + /getting-started + /keyboard-shortcuts + /home + /public + /public/local + /conversations + /lists/(*any) + /notifications + /favourites + /bookmarks + /pinned + /start + /directory + /explore/(*any) + /search + /publish + /follow_requests + /blocks + /domain_blocks + /mutes +).freeze + Rails.application.routes.draw do root 'home#index' @@ -59,9 +84,6 @@ Rails.application.routes.draw do get '/authorize_follow', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" } resources :accounts, path: 'users', only: [:show], param: :username do - get :remote_follow, to: 'remote_follow#new' - post :remote_follow, to: 'remote_follow#create' - resources :statuses, only: [:show] do member do get :activity @@ -85,16 +107,21 @@ Rails.application.routes.draw do resource :inbox, only: [:create], module: :activitypub - get '/@:username', to: 'accounts#show', as: :short_account - get '/@:username/with_replies', to: 'accounts#show', as: :short_account_with_replies - get '/@:username/media', to: 'accounts#show', as: :short_account_media - get '/@:username/tagged/:tag', to: 'accounts#show', as: :short_account_tag - get '/@:account_username/:id', to: 'statuses#show', as: :short_account_status - get '/@:account_username/:id/embed', to: 'statuses#embed', as: :embed_short_account_status + constraints(username: /[^@\/.]+/) do + get '/@:username', to: 'accounts#show', as: :short_account + get '/@:username/with_replies', to: 'accounts#show', as: :short_account_with_replies + get '/@:username/media', to: 'accounts#show', as: :short_account_media + get '/@:username/tagged/:tag', to: 'accounts#show', as: :short_account_tag + end - get '/interact/:id', to: 'remote_interaction#new', as: :remote_interaction - post '/interact/:id', to: 'remote_interaction#create' + constraints(account_username: /[^@\/.]+/) do + get '/@:account_username/following', to: 'following_accounts#index' + get '/@:account_username/followers', to: 'follower_accounts#index' + get '/@:account_username/:id', to: 'statuses#show', as: :short_account_status + get '/@:account_username/:id/embed', to: 'statuses#embed', as: :embed_short_account_status + end + get '/@:username_with_domain/(*any)', to: 'home#index', constraints: { username_with_domain: /([^\/])+?/ }, format: false get '/settings', to: redirect('/settings/profile') namespace :settings do @@ -187,9 +214,6 @@ Rails.application.routes.draw do resource :relationships, only: [:show, :update] resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update] - get '/explore', to: redirect('/web/explore') - get '/public', to: redirect('/web/public') - get '/public/local', to: redirect('/web/public/local') get '/media_proxy/:id/(*any)', to: 'media_proxy#show', as: :media_proxy resource :authorize_interaction, only: [:show, :create] @@ -642,8 +666,11 @@ Rails.application.routes.draw do end end - get '/web/(*any)', to: 'home#index', as: :web + WEB_APP_PATHS.each do |path| + get path, to: 'home#index' + end + get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web get '/about', to: 'about#show' get '/about/more', to: redirect('/about') diff --git a/package.json b/package.json index 5d8f20abf1..0a57336d68 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,6 @@ "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.1", "regenerator-runtime": "^0.13.9", - "rellax": "^1.12.1", "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", diff --git a/spec/controllers/account_follow_controller_spec.rb b/spec/controllers/account_follow_controller_spec.rb deleted file mode 100644 index d33cd0499e..0000000000 --- a/spec/controllers/account_follow_controller_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'rails_helper' - -describe AccountFollowController do - render_views - - let(:user) { Fabricate(:user) } - let(:alice) { Fabricate(:account, username: 'alice') } - - describe 'POST #create' do - let(:service) { double } - - subject { post :create, params: { account_username: alice.username } } - - before do - allow(FollowService).to receive(:new).and_return(service) - allow(service).to receive(:call) - end - - context 'when account is permanently suspended' do - before do - alice.suspend! - alice.deletion_request.destroy - subject - end - - it 'returns http gone' do - expect(response).to have_http_status(410) - end - end - - context 'when account is temporarily suspended' do - before do - alice.suspend! - subject - end - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - context 'when signed out' do - before do - subject - end - - it 'does not follow' do - expect(FollowService).not_to receive(:new) - end - end - - context 'when signed in' do - before do - sign_in(user) - subject - end - - it 'redirects to account path' do - expect(service).to have_received(:call).with(user.account, alice, with_rate_limit: true) - expect(response).to redirect_to(account_path(alice)) - end - end - end -end diff --git a/spec/controllers/account_unfollow_controller_spec.rb b/spec/controllers/account_unfollow_controller_spec.rb deleted file mode 100644 index a11f7aa684..0000000000 --- a/spec/controllers/account_unfollow_controller_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'rails_helper' - -describe AccountUnfollowController do - render_views - - let(:user) { Fabricate(:user) } - let(:alice) { Fabricate(:account, username: 'alice') } - - describe 'POST #create' do - let(:service) { double } - - subject { post :create, params: { account_username: alice.username } } - - before do - allow(UnfollowService).to receive(:new).and_return(service) - allow(service).to receive(:call) - end - - context 'when account is permanently suspended' do - before do - alice.suspend! - alice.deletion_request.destroy - subject - end - - it 'returns http gone' do - expect(response).to have_http_status(410) - end - end - - context 'when account is temporarily suspended' do - before do - alice.suspend! - subject - end - - it 'returns http forbidden' do - expect(response).to have_http_status(403) - end - end - - context 'when signed out' do - before do - subject - end - - it 'does not unfollow' do - expect(UnfollowService).not_to receive(:new) - end - end - - context 'when signed in' do - before do - sign_in(user) - subject - end - - it 'redirects to account path' do - expect(service).to have_received(:call).with(user.account, alice) - expect(response).to redirect_to(account_path(alice)) - end - end - end -end diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb index 12266c800b..defa8b2d38 100644 --- a/spec/controllers/accounts_controller_spec.rb +++ b/spec/controllers/accounts_controller_spec.rb @@ -99,100 +99,6 @@ RSpec.describe AccountsController, type: :controller do end it_behaves_like 'common response characteristics' - - it 'renders public status' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'renders self-reply' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'renders status with media' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'renders reblog' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'renders pinned status' do - expect(response.body).to include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'does not render reply to someone else' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reply)) - end - end - - context 'when signed-in' do - let(:user) { Fabricate(:user) } - - before do - sign_in(user) - end - - context 'when user follows account' do - before do - user.account.follow!(account) - get :show, params: { username: account.username, format: format } - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - end - - context 'when user is blocked' do - before do - account.block!(user.account) - get :show, params: { username: account.username, format: format } - end - - it 'renders unavailable message' do - expect(response.body).to include(I18n.t('accounts.unavailable')) - end - - it 'does not render public status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'does not render self-reply' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'does not render status with media' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'does not render reblog' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'does not render pinned status' do - expect(response.body).to_not include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'does not render reply to someone else' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reply)) - end - end end context 'with replies' do @@ -202,38 +108,6 @@ RSpec.describe AccountsController, type: :controller do end it_behaves_like 'common response characteristics' - - it 'renders public status' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'renders self-reply' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'renders status with media' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'renders reblog' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'does not render pinned status' do - expect(response.body).to_not include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'renders reply to someone else' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_reply)) - end end context 'with media' do @@ -243,38 +117,6 @@ RSpec.describe AccountsController, type: :controller do end it_behaves_like 'common response characteristics' - - it 'does not render public status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'does not render self-reply' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'renders status with media' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'does not render reblog' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'does not render pinned status' do - expect(response.body).to_not include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'does not render reply to someone else' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reply)) - end end context 'with tag' do @@ -289,42 +131,6 @@ RSpec.describe AccountsController, type: :controller do end it_behaves_like 'common response characteristics' - - it 'does not render public status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status)) - end - - it 'does not render self-reply' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_self_reply)) - end - - it 'does not render status with media' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_media)) - end - - it 'does not render reblog' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reblog.reblog)) - end - - it 'does not render pinned status' do - expect(response.body).to_not include(I18n.t('stream_entries.pinned')) - end - - it 'does not render private status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_private)) - end - - it 'does not render direct status' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_direct)) - end - - it 'does not render reply to someone else' do - expect(response.body).to_not include(ActivityPub::TagManager.instance.url_for(status_reply)) - end - - it 'renders status with tag' do - expect(response.body).to include(ActivityPub::TagManager.instance.url_for(status_tag)) - end end end diff --git a/spec/controllers/authorize_interactions_controller_spec.rb b/spec/controllers/authorize_interactions_controller_spec.rb index 99f3f6ffc6..44f52df69f 100644 --- a/spec/controllers/authorize_interactions_controller_spec.rb +++ b/spec/controllers/authorize_interactions_controller_spec.rb @@ -39,7 +39,7 @@ describe AuthorizeInteractionsController do end it 'sets resource from url' do - account = Account.new + account = Fabricate(:account) service = double allow(ResolveURLService).to receive(:new).and_return(service) allow(service).to receive(:call).with('http://example.com').and_return(account) @@ -51,7 +51,7 @@ describe AuthorizeInteractionsController do end it 'sets resource from acct uri' do - account = Account.new + account = Fabricate(:account) service = double allow(ResolveAccountService).to receive(:new).and_return(service) allow(service).to receive(:call).with('found@hostname').and_return(account) diff --git a/spec/controllers/follower_accounts_controller_spec.rb b/spec/controllers/follower_accounts_controller_spec.rb index 4d2a6e01a9..ab2e82e850 100644 --- a/spec/controllers/follower_accounts_controller_spec.rb +++ b/spec/controllers/follower_accounts_controller_spec.rb @@ -34,27 +34,6 @@ describe FollowerAccountsController do expect(response).to have_http_status(403) end end - - it 'assigns follows' do - expect(response).to have_http_status(200) - - assigned = assigns(:follows).to_a - expect(assigned.size).to eq 2 - expect(assigned[0]).to eq follow1 - expect(assigned[1]).to eq follow0 - end - - it 'does not assign blocked users' do - user = Fabricate(:user) - user.account.block!(follower0) - sign_in(user) - - expect(response).to have_http_status(200) - - assigned = assigns(:follows).to_a - expect(assigned.size).to eq 1 - expect(assigned[0]).to eq follow1 - end end context 'when format is json' do diff --git a/spec/controllers/following_accounts_controller_spec.rb b/spec/controllers/following_accounts_controller_spec.rb index bb6d221cac..e43dbf882b 100644 --- a/spec/controllers/following_accounts_controller_spec.rb +++ b/spec/controllers/following_accounts_controller_spec.rb @@ -34,27 +34,6 @@ describe FollowingAccountsController do expect(response).to have_http_status(403) end end - - it 'assigns follows' do - expect(response).to have_http_status(200) - - assigned = assigns(:follows).to_a - expect(assigned.size).to eq 2 - expect(assigned[0]).to eq follow1 - expect(assigned[1]).to eq follow0 - end - - it 'does not assign blocked users' do - user = Fabricate(:user) - user.account.block!(followee0) - sign_in(user) - - expect(response).to have_http_status(200) - - assigned = assigns(:follows).to_a - expect(assigned.size).to eq 1 - expect(assigned[0]).to eq follow1 - end end context 'when format is json' do diff --git a/spec/controllers/remote_follow_controller_spec.rb b/spec/controllers/remote_follow_controller_spec.rb deleted file mode 100644 index 01d43f48c2..0000000000 --- a/spec/controllers/remote_follow_controller_spec.rb +++ /dev/null @@ -1,135 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe RemoteFollowController do - render_views - - describe '#new' do - it 'returns success when session is empty' do - account = Fabricate(:account) - get :new, params: { account_username: account.to_param } - - expect(response).to have_http_status(200) - expect(response).to render_template(:new) - expect(assigns(:remote_follow).acct).to be_nil - end - - it 'populates the remote follow with session data when session exists' do - session[:remote_follow] = 'user@example.com' - account = Fabricate(:account) - get :new, params: { account_username: account.to_param } - - expect(response).to have_http_status(200) - expect(response).to render_template(:new) - expect(assigns(:remote_follow).acct).to eq 'user@example.com' - end - end - - describe '#create' do - before do - @account = Fabricate(:account, username: 'test_user') - end - - context 'with a valid acct' do - context 'when webfinger values are wrong' do - it 'renders new when redirect url is nil' do - resource_with_nil_link = double(link: nil) - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@example.com').and_return(resource_with_nil_link) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@example.com' } } - - expect(response).to render_template(:new) - expect(response.body).to include(I18n.t('remote_follow.missing_resource')) - end - - it 'renders new when template is nil' do - resource_with_link = double(link: nil) - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@example.com').and_return(resource_with_link) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@example.com' } } - - expect(response).to render_template(:new) - expect(response.body).to include(I18n.t('remote_follow.missing_resource')) - end - end - - context 'when webfinger values are good' do - before do - resource_with_link = double(link: 'http://example.com/follow_me?acct={uri}') - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@example.com').and_return(resource_with_link) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@example.com' } } - end - - it 'saves the session' do - expect(session[:remote_follow]).to eq 'user@example.com' - end - - it 'redirects to the remote location' do - expect(response).to redirect_to("http://example.com/follow_me?acct=https%3A%2F%2F#{Rails.configuration.x.local_domain}%2Fusers%2Ftest_user") - end - end - end - - context 'with an invalid acct' do - it 'renders new when acct is missing' do - post :create, params: { account_username: @account.to_param, remote_follow: { acct: '' } } - - expect(response).to render_template(:new) - end - - it 'renders new with error when webfinger fails' do - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@example.com').and_raise(Webfinger::Error) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@example.com' } } - - expect(response).to render_template(:new) - expect(response.body).to include(I18n.t('remote_follow.missing_resource')) - end - - it 'renders new when occur HTTP::ConnectionError' do - allow_any_instance_of(WebfingerHelper).to receive(:webfinger!).with('acct:user@unknown').and_raise(HTTP::ConnectionError) - post :create, params: { account_username: @account.to_param, remote_follow: { acct: 'user@unknown' } } - - expect(response).to render_template(:new) - expect(response.body).to include(I18n.t('remote_follow.missing_resource')) - end - end - end - - context 'with a permanently suspended account' do - before do - @account = Fabricate(:account) - @account.suspend! - @account.deletion_request.destroy - end - - it 'returns http gone on GET to #new' do - get :new, params: { account_username: @account.to_param } - - expect(response).to have_http_status(410) - end - - it 'returns http gone on POST to #create' do - post :create, params: { account_username: @account.to_param } - - expect(response).to have_http_status(410) - end - end - - context 'with a temporarily suspended account' do - before do - @account = Fabricate(:account) - @account.suspend! - end - - it 'returns http forbidden on GET to #new' do - get :new, params: { account_username: @account.to_param } - - expect(response).to have_http_status(403) - end - - it 'returns http forbidden on POST to #create' do - post :create, params: { account_username: @account.to_param } - - expect(response).to have_http_status(403) - end - end -end diff --git a/spec/controllers/remote_interaction_controller_spec.rb b/spec/controllers/remote_interaction_controller_spec.rb deleted file mode 100644 index bb0074b114..0000000000 --- a/spec/controllers/remote_interaction_controller_spec.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -describe RemoteInteractionController, type: :controller do - render_views - - let(:status) { Fabricate(:status) } - - describe 'GET #new' do - it 'returns 200' do - get :new, params: { id: status.id } - expect(response).to have_http_status(200) - end - end - - describe 'POST #create' do - context '@remote_follow is valid' do - it 'returns 302' do - allow_any_instance_of(RemoteFollow).to receive(:valid?) { true } - allow_any_instance_of(RemoteFollow).to receive(:addressable_template) do - Addressable::Template.new('https://hoge.com') - end - - post :create, params: { id: status.id, remote_follow: { acct: '@hoge' } } - expect(response).to have_http_status(302) - end - end - - context '@remote_follow is invalid' do - it 'returns 200' do - allow_any_instance_of(RemoteFollow).to receive(:valid?) { false } - post :create, params: { id: status.id, remote_follow: { acct: '@hoge' } } - - expect(response).to have_http_status(200) - end - end - end -end diff --git a/spec/controllers/tags_controller_spec.rb b/spec/controllers/tags_controller_spec.rb index 1fd8494d64..547bcfb395 100644 --- a/spec/controllers/tags_controller_spec.rb +++ b/spec/controllers/tags_controller_spec.rb @@ -10,16 +10,15 @@ RSpec.describe TagsController, type: :controller do let!(:late) { Fabricate(:status, tags: [tag], text: 'late #test') } context 'when tag exists' do - it 'redirects to web version' do + it 'returns http success' do get :show, params: { id: 'test', max_id: late.id } - expect(response).to redirect_to('/web/tags/test') + expect(response).to have_http_status(200) end end context 'when tag does not exist' do - it 'returns http missing for non-existent tag' do + it 'returns http not found' do get :show, params: { id: 'none' } - expect(response).to have_http_status(404) end end diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb index b6de3e9d15..ec4f9a53fe 100644 --- a/spec/features/profile_spec.rb +++ b/spec/features/profile_spec.rb @@ -18,36 +18,16 @@ feature 'Profile' do visit account_path('alice') is_expected.to have_title("alice (@alice@#{local_domain})") - - within('.public-account-header h1') do - is_expected.to have_content("alice @alice@#{local_domain}") - end - - bio_elem = first('.public-account-bio') - expect(bio_elem).to have_content(alice_bio) - # The bio has hashtags made clickable - expect(bio_elem).to have_link('cryptology') - expect(bio_elem).to have_link('science') - # Nicknames are make clickable - expect(bio_elem).to have_link('@alice') - expect(bio_elem).to have_link('@bob') - # Nicknames not on server are not clickable - expect(bio_elem).not_to have_link('@pepe') end scenario 'I can change my account' do visit settings_profile_path + fill_in 'Display name', with: 'Bob' fill_in 'Bio', with: 'Bob is silent' - first('.btn[type=submit]').click - is_expected.to have_content 'Changes successfully saved!' - # View my own public profile and see the changes - click_link "Bob @bob@#{local_domain}" + first('button[type=submit]').click - within('.public-account-header h1') do - is_expected.to have_content("Bob @bob@#{local_domain}") - end - expect(first('.public-account-bio')).to have_content('Bob is silent') + is_expected.to have_content 'Changes successfully saved!' end end diff --git a/spec/lib/permalink_redirector_spec.rb b/spec/lib/permalink_redirector_spec.rb index abda57da49..a009136561 100644 --- a/spec/lib/permalink_redirector_spec.rb +++ b/spec/lib/permalink_redirector_spec.rb @@ -3,40 +3,31 @@ require 'rails_helper' describe PermalinkRedirector do + let(:remote_account) { Fabricate(:account, username: 'alice', domain: 'example.com', url: 'https://example.com/@alice', id: 2) } + describe '#redirect_url' do before do - account = Fabricate(:account, username: 'alice', id: 1) - Fabricate(:status, account: account, id: 123) + Fabricate(:status, account: remote_account, id: 123, url: 'https://example.com/status-123') end it 'returns path for legacy account links' do - redirector = described_class.new('web/accounts/1') - expect(redirector.redirect_path).to eq 'https://cb6e6126.ngrok.io/@alice' + redirector = described_class.new('accounts/2') + expect(redirector.redirect_path).to eq 'https://example.com/@alice' end it 'returns path for legacy status links' do - redirector = described_class.new('web/statuses/123') - expect(redirector.redirect_path).to eq 'https://cb6e6126.ngrok.io/@alice/123' - end - - it 'returns path for legacy tag links' do - redirector = described_class.new('web/timelines/tag/hoge') - expect(redirector.redirect_path).to be_nil + redirector = described_class.new('statuses/123') + expect(redirector.redirect_path).to eq 'https://example.com/status-123' end it 'returns path for pretty account links' do - redirector = described_class.new('web/@alice') - expect(redirector.redirect_path).to eq 'https://cb6e6126.ngrok.io/@alice' + redirector = described_class.new('@alice@example.com') + expect(redirector.redirect_path).to eq 'https://example.com/@alice' end it 'returns path for pretty status links' do - redirector = described_class.new('web/@alice/123') - expect(redirector.redirect_path).to eq 'https://cb6e6126.ngrok.io/@alice/123' - end - - it 'returns path for pretty tag links' do - redirector = described_class.new('web/tags/hoge') - expect(redirector.redirect_path).to be_nil + redirector = described_class.new('@alice/123') + expect(redirector.redirect_path).to eq 'https://example.com/status-123' end end end diff --git a/spec/requests/account_show_page_spec.rb b/spec/requests/account_show_page_spec.rb index 4e51cf7efc..e84c46c47f 100644 --- a/spec/requests/account_show_page_spec.rb +++ b/spec/requests/account_show_page_spec.rb @@ -3,17 +3,6 @@ require 'rails_helper' describe 'The account show page' do - it 'Has an h-feed with correct number of h-entry objects in it' do - alice = Fabricate(:account, username: 'alice', display_name: 'Alice') - _status = Fabricate(:status, account: alice, text: 'Hello World') - _status2 = Fabricate(:status, account: alice, text: 'Hello World Again') - _status3 = Fabricate(:status, account: alice, text: 'Are You Still There World?') - - get '/@alice' - - expect(h_feed_entries.size).to eq(3) - end - it 'has valid opengraph tags' do alice = Fabricate(:account, username: 'alice', display_name: 'Alice') _status = Fabricate(:status, account: alice, text: 'Hello World') @@ -33,8 +22,4 @@ describe 'The account show page' do def head_section Nokogiri::Slop(response.body).html.head end - - def h_feed_entries - Nokogiri::HTML(response.body).search('.h-feed .h-entry') - end end diff --git a/spec/routing/accounts_routing_spec.rb b/spec/routing/accounts_routing_spec.rb index d04cb27f04..3f0e9b3e95 100644 --- a/spec/routing/accounts_routing_spec.rb +++ b/spec/routing/accounts_routing_spec.rb @@ -1,31 +1,83 @@ require 'rails_helper' describe 'Routes under accounts/' do - describe 'the route for accounts who are followers of an account' do - it 'routes to the followers action with the right username' do - expect(get('/users/name/followers')). - to route_to('follower_accounts#index', account_username: 'name') + context 'with local username' do + let(:username) { 'alice' } + + it 'routes /@:username' do + expect(get("/@#{username}")).to route_to('accounts#show', username: username) end - end - describe 'the route for accounts who are followed by an account' do - it 'routes to the following action with the right username' do - expect(get('/users/name/following')). - to route_to('following_accounts#index', account_username: 'name') + it 'routes /@:username.json' do + expect(get("/@#{username}.json")).to route_to('accounts#show', username: username, format: 'json') + end + + it 'routes /@:username.rss' do + expect(get("/@#{username}.rss")).to route_to('accounts#show', username: username, format: 'rss') + end + + it 'routes /@:username/:id' do + expect(get("/@#{username}/123")).to route_to('statuses#show', account_username: username, id: '123') + end + + it 'routes /@:username/:id/embed' do + expect(get("/@#{username}/123/embed")).to route_to('statuses#embed', account_username: username, id: '123') + end + + it 'routes /@:username/following' do + expect(get("/@#{username}/following")).to route_to('following_accounts#index', account_username: username) + end + + it 'routes /@:username/followers' do + expect(get("/@#{username}/followers")).to route_to('follower_accounts#index', account_username: username) + end + + it 'routes /@:username/with_replies' do + expect(get("/@#{username}/with_replies")).to route_to('accounts#show', username: username) + end + + it 'routes /@:username/media' do + expect(get("/@#{username}/media")).to route_to('accounts#show', username: username) end - end - describe 'the route for following an account' do - it 'routes to the follow create action with the right username' do - expect(post('/users/name/follow')). - to route_to('account_follow#create', account_username: 'name') + it 'routes /@:username/tagged/:tag' do + expect(get("/@#{username}/tagged/foo")).to route_to('accounts#show', username: username, tag: 'foo') end end - describe 'the route for unfollowing an account' do - it 'routes to the unfollow create action with the right username' do - expect(post('/users/name/unfollow')). - to route_to('account_unfollow#create', account_username: 'name') + context 'with remote username' do + let(:username) { 'alice@example.com' } + + it 'routes /@:username' do + expect(get("/@#{username}")).to route_to('home#index', username_with_domain: username) + end + + it 'routes /@:username/:id' do + expect(get("/@#{username}/123")).to route_to('home#index', username_with_domain: username, any: '123') + end + + it 'routes /@:username/:id/embed' do + expect(get("/@#{username}/123/embed")).to route_to('home#index', username_with_domain: username, any: '123/embed') + end + + it 'routes /@:username/following' do + expect(get("/@#{username}/following")).to route_to('home#index', username_with_domain: username, any: 'following') + end + + it 'routes /@:username/followers' do + expect(get("/@#{username}/followers")).to route_to('home#index', username_with_domain: username, any: 'followers') + end + + it 'routes /@:username/with_replies' do + expect(get("/@#{username}/with_replies")).to route_to('home#index', username_with_domain: username, any: 'with_replies') + end + + it 'routes /@:username/media' do + expect(get("/@#{username}/media")).to route_to('home#index', username_with_domain: username, any: 'media') + end + + it 'routes /@:username/tagged/:tag' do + expect(get("/@#{username}/tagged/foo")).to route_to('home#index', username_with_domain: username, any: 'tagged/foo') end end end diff --git a/yarn.lock b/yarn.lock index 6ae965464c..98666f23df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9663,11 +9663,6 @@ regjsparser@^0.8.2: dependencies: jsesc "~0.5.0" -rellax@^1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/rellax/-/rellax-1.12.1.tgz#1b433ef7ac4aa3573449a33efab391c112f6b34d" - integrity sha512-XBIi0CDpW5FLTujYjYBn1CIbK2CJL6TsAg/w409KghP2LucjjzBjsujXDAjyBLWgsfupfUcL5WzdnIPcGfK7XA== - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" From 74738b49933eeadb6e837711ef1a1d0718829b6c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 20 Oct 2022 14:47:42 +0200 Subject: [PATCH 064/500] Fix error on profile in web UI (#19396) --- app/javascript/mastodon/features/account_timeline/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index 437cee95c7..bfb5f7c80e 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -28,6 +28,7 @@ const mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = fa if (!accountId) { return { isLoading: true, + statusIds: emptyList, }; } From 21af674fb2ce94cbf4d240ece508531f46581297 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 09:16:33 +0900 Subject: [PATCH 065/500] Bump axios from 1.1.2 to 1.1.3 (#19372) Bumps [axios](https://github.com/axios/axios) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.1.2...v1.1.3) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0a57336d68..9f80959c51 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "array-includes": "^3.1.5", "arrow-key-navigation": "^1.2.0", "autoprefixer": "^9.8.8", - "axios": "^1.1.2", + "axios": "^1.1.3", "babel-loader": "^8.2.5", "babel-plugin-lodash": "^3.3.4", "babel-plugin-preval": "^5.1.0", diff --git a/yarn.lock b/yarn.lock index 98666f23df..d9cf69ba2d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2627,10 +2627,10 @@ axe-core@^4.4.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== -axios@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.2.tgz#8b6f6c540abf44ab98d9904e8daf55351ca4a331" - integrity sha512-bznQyETwElsXl2RK7HLLwb5GPpOLlycxHCtrpDR/4RqqBzjARaOTo3jz4IgtntWUYee7Ne4S8UHd92VCuzPaWA== +axios@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" + integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" From 9215ad5f198787188632a06e199d702f8ac9e642 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 09:17:03 +0900 Subject: [PATCH 066/500] Bump postcss from 8.4.17 to 8.4.18 (#19375) Bumps [postcss](https://github.com/postcss/postcss) from 8.4.17 to 8.4.18. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.17...8.4.18) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9f80959c51..a7141c7a7e 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "object.values": "^1.1.5", "path-complete-extname": "^1.0.0", "pg": "^8.5.0", - "postcss": "^8.4.17", + "postcss": "^8.4.18", "postcss-loader": "^3.0.0", "postcss-object-fit-images": "^1.1.2", "promise.prototype.finally": "^3.1.3", diff --git a/yarn.lock b/yarn.lock index d9cf69ba2d..843764c55c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8894,10 +8894,10 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.2.15, postcss@^8.4.17: - version "8.4.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.17.tgz#f87863ec7cd353f81f7ab2dec5d67d861bbb1be5" - integrity sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q== +postcss@^8.2.15, postcss@^8.4.17, postcss@^8.4.18: + version "8.4.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2" + integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" From 23d367f544485eaeed888c707012a8282bbb5806 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Oct 2022 10:05:50 +0200 Subject: [PATCH 067/500] Fix too many featured tags causing navigation panel scroll in web UI (#19398) --- .../mastodon/features/account/components/featured_tags.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/account/components/featured_tags.js b/app/javascript/mastodon/features/account/components/featured_tags.js index 5837f6e6d8..51be9a6092 100644 --- a/app/javascript/mastodon/features/account/components/featured_tags.js +++ b/app/javascript/mastodon/features/account/components/featured_tags.js @@ -35,7 +35,7 @@ class FeaturedTags extends ImmutablePureComponent {

    }} />

    - {featuredTags.map(featuredTag => ( + {featuredTags.take(3).map(featuredTag => ( Date: Fri, 21 Oct 2022 10:06:03 +0200 Subject: [PATCH 068/500] Fix case-sensitive look-up for profiles in web UI (#19397) --- app/javascript/mastodon/features/account_timeline/index.js | 3 ++- app/javascript/mastodon/reducers/accounts_map.js | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index bfb5f7c80e..525837c72c 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -19,11 +19,12 @@ import { connectTimeline, disconnectTimeline } from 'mastodon/actions/timelines' import LimitedAccountHint from './components/limited_account_hint'; import { getAccountHidden } from 'mastodon/selectors'; import { fetchFeaturedTags } from '../../actions/featured_tags'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const emptyList = ImmutableList(); const mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = false }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/mastodon/reducers/accounts_map.js b/app/javascript/mastodon/reducers/accounts_map.js index e0d42e9cd4..53e08c8fbe 100644 --- a/app/javascript/mastodon/reducers/accounts_map.js +++ b/app/javascript/mastodon/reducers/accounts_map.js @@ -1,14 +1,16 @@ import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from '../actions/importer'; import { Map as ImmutableMap } from 'immutable'; +export const normalizeForLookup = str => str.toLowerCase(); + const initialState = ImmutableMap(); export default function accountsMap(state = initialState, action) { switch(action.type) { case ACCOUNT_IMPORT: - return state.set(action.account.acct, action.account.id); + return state.set(normalizeForLookup(action.account.acct), action.account.id); case ACCOUNTS_IMPORT: - return state.withMutations(map => action.accounts.forEach(account => map.set(account.acct, account.id))); + return state.withMutations(map => action.accounts.forEach(account => map.set(normalizeForLookup(account.acct), account.id))); default: return state; } From 94feb2b93ff1f381f8dba1ad361a2afd134f02a8 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 21 Oct 2022 18:48:22 +0900 Subject: [PATCH 069/500] Fix `FetchFeaturedCollectionService` spec (#19401) Regression from #19380 --- app/services/activitypub/fetch_featured_collection_service.rb | 3 +-- .../activitypub/fetch_featured_collection_service_spec.rb | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb index 026fe24c5e..50a187ad98 100644 --- a/app/services/activitypub/fetch_featured_collection_service.rb +++ b/app/services/activitypub/fetch_featured_collection_service.rb @@ -43,8 +43,7 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService def process_note_items(items) status_ids = items.filter_map do |item| - type = item['type'] - next unless type == 'Note' + next unless item.is_a?(String) || item['type'] == 'Note' uri = value_or_id(item) next if ActivityPub::TagManager.instance.local_uri?(uri) diff --git a/spec/services/activitypub/fetch_featured_collection_service_spec.rb b/spec/services/activitypub/fetch_featured_collection_service_spec.rb index f552b9dc07..e6336dc1b1 100644 --- a/spec/services/activitypub/fetch_featured_collection_service_spec.rb +++ b/spec/services/activitypub/fetch_featured_collection_service_spec.rb @@ -65,7 +65,7 @@ RSpec.describe ActivityPub::FetchFeaturedCollectionService, type: :service do stub_request(:get, 'https://example.com/account/pinned/3').to_return(status: 404) stub_request(:get, 'https://example.com/account/pinned/4').to_return(status: 200, body: Oj.dump(status_json_4)) - subject.call(actor) + subject.call(actor, note: true, hashtag: false) end it 'sets expected posts as pinned posts' do From 6e1be17b6125635a463dff4a96e76490096cb297 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 19:17:18 +0900 Subject: [PATCH 070/500] Bump stackprof from 0.2.21 to 0.2.22 (#19367) Bumps [stackprof](https://github.com/tmm1/stackprof) from 0.2.21 to 0.2.22. - [Release notes](https://github.com/tmm1/stackprof/releases) - [Changelog](https://github.com/tmm1/stackprof/blob/master/CHANGELOG.md) - [Commits](https://github.com/tmm1/stackprof/compare/v0.2.21...v0.2.22) --- updated-dependencies: - dependency-name: stackprof dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 81cd3dadbc..28c6e73481 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -647,7 +647,7 @@ GEM sshkit (1.21.2) net-scp (>= 1.1.2) net-ssh (>= 2.8.0) - stackprof (0.2.21) + stackprof (0.2.22) statsd-ruby (1.5.0) stoplight (3.0.0) strong_migrations (0.7.9) From 6faa51edc77073c73873daf1ca43a91366543b38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 20:09:17 +0900 Subject: [PATCH 071/500] Bump regenerator-runtime from 0.13.9 to 0.13.10 (#19371) Bumps [regenerator-runtime](https://github.com/facebook/regenerator) from 0.13.9 to 0.13.10. - [Release notes](https://github.com/facebook/regenerator/releases) - [Commits](https://github.com/facebook/regenerator/compare/regenerator-runtime@0.13.9...regenerator-runtime@0.13.10) --- updated-dependencies: - dependency-name: regenerator-runtime dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a7141c7a7e..b1f3054ce4 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "redux": "^4.2.0", "redux-immutable": "^4.0.0", "redux-thunk": "^2.4.1", - "regenerator-runtime": "^0.13.9", + "regenerator-runtime": "^0.13.10", "requestidlecallback": "^0.3.0", "reselect": "^4.1.6", "rimraf": "^3.0.2", diff --git a/yarn.lock b/yarn.lock index 843764c55c..5711902e4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9597,10 +9597,10 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.13.10, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== regenerator-transform@^0.15.0: version "0.15.0" From 7777524145884a311439dd3fc3b55f8e0a247e34 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Fri, 21 Oct 2022 20:22:02 +0900 Subject: [PATCH 072/500] Fix featured tag display name in setting (#19404) --- app/views/settings/featured_tags/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/settings/featured_tags/index.html.haml b/app/views/settings/featured_tags/index.html.haml index 5d87e2862d..595094fc76 100644 --- a/app/views/settings/featured_tags/index.html.haml +++ b/app/views/settings/featured_tags/index.html.haml @@ -21,7 +21,7 @@ %div %h4 = fa_icon 'hashtag' - = featured_tag.name + = featured_tag.display_name %small - if featured_tag.last_status_at.nil? = t('accounts.nothing_here') From e623c07372a1f3e3b4e5e8c48683f9aefe7c79f7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Oct 2022 13:47:56 +0200 Subject: [PATCH 073/500] New Crowdin updates (#19350) * New translations en.yml (Danish) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Icelandic) * New translations en.yml (Czech) * New translations en.json (Czech) * New translations en.yml (Latvian) * New translations en.yml (Polish) * New translations en.json (Thai) * New translations simple_form.en.yml (Thai) * New translations en.yml (Galician) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Thai) * New translations en.json (Korean) * New translations en.yml (German) * New translations en.yml (Turkish) * New translations en.yml (Polish) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Kabyle) * New translations en.json (Kabyle) * New translations en.yml (Kabyle) * New translations doorkeeper.en.yml (Kabyle) * New translations en.json (Scottish Gaelic) * New translations en.json (Spanish, Mexico) * New translations en.json (Greek) * New translations en.json (Chinese Traditional) * New translations en.json (Kabyle) * New translations en.json (Czech) * New translations en.json (Catalan) * New translations en.json (Korean) * New translations en.json (Ukrainian) * New translations en.yml (Spanish) * New translations en.json (Albanian) * New translations en.yml (Albanian) * New translations en.json (Spanish) * New translations en.json (Polish) * New translations en.json (Icelandic) * New translations en.json (Scottish Gaelic) * New translations en.json (Italian) * New translations en.json (Danish) * New translations en.json (Russian) * New translations en.json (Slovenian) * New translations en.yml (Slovenian) * New translations en.json (Spanish, Argentina) * New translations en.json (Latvian) * New translations en.json (German) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.yml (Ido) * New translations en.json (Turkish) * New translations simple_form.en.yml (Ido) * New translations en.json (Galician) * New translations en.json (Portuguese) * New translations en.yml (Portuguese) * New translations en.json (Portuguese) * New translations en.yml (Portuguese) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.json (Hebrew) * New translations en.json (Slovak) * New translations en.json (Korean) * New translations en.json (Macedonian) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Slovenian) * New translations en.json (Armenian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Vietnamese) * New translations en.json (Galician) * New translations en.json (Icelandic) * New translations en.json (Italian) * New translations en.json (Hungarian) * New translations en.json (Thai) * New translations en.json (Sinhala) * New translations en.json (Bulgarian) * New translations en.json (Ido) * New translations en.json (German) * New translations en.json (Tamil) * New translations en.json (Esperanto) * New translations en.json (Czech) * New translations en.json (Dutch) * New translations en.json (Albanian) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations en.json (Romanian) * New translations en.json (Irish) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.json (Danish) * New translations en.json (Greek) * New translations en.json (Basque) * New translations en.json (Finnish) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Persian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Cornish) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (Occitan) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Malayalam) * New translations en.json (Corsican) * New translations en.json (Sardinian) * New translations en.json (Sanskrit) * New translations en.json (Kabyle) * New translations en.json (Breton) * New translations en.json (Tatar) * New translations en.json (Spanish, Argentina) * New translations en.json (Estonian) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Kazakh) * New translations en.json (Latvian) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Welsh) * New translations en.json (Standard Moroccan Tamazight) * New translations en.json (Catalan) * New translations en.json (Danish) * New translations en.json (Ido) * New translations en.json (Korean) * New translations en.json (Chinese Traditional) * New translations en.json (Spanish, Argentina) * New translations en.json (Ido) * New translations en.json (Galician) * New translations en.json (Greek) * New translations en.json (Polish) * New translations en.json (Ukrainian) * New translations en.json (Italian) * New translations en.json (Icelandic) * New translations en.json (Turkish) * New translations en.json (Ido) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations en.json (Vietnamese) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Russian) * New translations en.json (Portuguese) * New translations en.json (Latvian) * New translations en.json (Portuguese) * New translations en.json (Ukrainian) * New translations en.yml (Galician) * New translations en.yml (Greek) * New translations en.yml (Afrikaans) * New translations en.yml (Arabic) * New translations en.yml (Bulgarian) * New translations en.yml (Catalan) * New translations en.yml (Danish) * New translations en.yml (Basque) * New translations en.yml (Finnish) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.yml (Hungarian) * New translations en.yml (French) * New translations en.yml (Turkish) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Chinese Simplified) * New translations en.yml (Spanish) * New translations en.yml (Albanian) * New translations en.yml (Ukrainian) * New translations en.yml (Romanian) * New translations en.yml (Ido) * New translations en.yml (Thai) * New translations en.yml (Armenian) * New translations en.yml (Russian) * New translations en.yml (Slovak) * New translations en.yml (Slovenian) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Italian) * New translations en.yml (Georgian) * New translations en.yml (Korean) * New translations en.yml (Japanese) * New translations en.yml (Lithuanian) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Icelandic) * New translations en.yml (Persian) * New translations en.yml (Indonesian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Tamil) * New translations en.yml (Esperanto) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Tatar) * New translations en.yml (Malayalam) * New translations en.yml (Breton) * New translations en.yml (Sinhala) * New translations en.yml (Cornish) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations en.yml (Welsh) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Croatian) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Malay) * New translations en.yml (Telugu) * New translations en.yml (Occitan) * New translations en.yml (Taigi) * New translations en.yml (Kabyle) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Sardinian) * New translations en.yml (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.json (Kurmanji (Kurdish)) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * New translations en.json (Spanish) * Run `yarn manage:translations` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 7 +- app/javascript/mastodon/locales/ar.json | 7 +- app/javascript/mastodon/locales/ast.json | 7 +- app/javascript/mastodon/locales/bg.json | 7 +- app/javascript/mastodon/locales/bn.json | 7 +- app/javascript/mastodon/locales/br.json | 7 +- app/javascript/mastodon/locales/ca.json | 33 +++-- app/javascript/mastodon/locales/ckb.json | 7 +- app/javascript/mastodon/locales/co.json | 7 +- app/javascript/mastodon/locales/cs.json | 33 +++-- app/javascript/mastodon/locales/cy.json | 7 +- app/javascript/mastodon/locales/da.json | 41 +++--- app/javascript/mastodon/locales/de.json | 31 +++-- .../mastodon/locales/defaultMessages.json | 29 ++++- app/javascript/mastodon/locales/el.json | 13 +- app/javascript/mastodon/locales/en-GB.json | 7 +- app/javascript/mastodon/locales/en.json | 10 +- app/javascript/mastodon/locales/eo.json | 7 +- app/javascript/mastodon/locales/es-AR.json | 33 +++-- app/javascript/mastodon/locales/es-MX.json | 33 +++-- app/javascript/mastodon/locales/es.json | 33 +++-- app/javascript/mastodon/locales/et.json | 7 +- app/javascript/mastodon/locales/eu.json | 7 +- app/javascript/mastodon/locales/fa.json | 7 +- app/javascript/mastodon/locales/fi.json | 7 +- app/javascript/mastodon/locales/fr.json | 7 +- app/javascript/mastodon/locales/fy.json | 7 +- app/javascript/mastodon/locales/ga.json | 7 +- app/javascript/mastodon/locales/gd.json | 13 +- app/javascript/mastodon/locales/gl.json | 33 +++-- app/javascript/mastodon/locales/he.json | 7 +- app/javascript/mastodon/locales/hi.json | 7 +- app/javascript/mastodon/locales/hr.json | 7 +- app/javascript/mastodon/locales/hu.json | 33 +++-- app/javascript/mastodon/locales/hy.json | 7 +- app/javascript/mastodon/locales/id.json | 7 +- app/javascript/mastodon/locales/io.json | 77 +++++------ app/javascript/mastodon/locales/is.json | 33 +++-- app/javascript/mastodon/locales/it.json | 33 +++-- app/javascript/mastodon/locales/ja.json | 35 ++--- app/javascript/mastodon/locales/ka.json | 7 +- app/javascript/mastodon/locales/kab.json | 49 +++---- app/javascript/mastodon/locales/kk.json | 7 +- app/javascript/mastodon/locales/kn.json | 7 +- app/javascript/mastodon/locales/ko.json | 23 ++-- app/javascript/mastodon/locales/ku.json | 33 +++-- app/javascript/mastodon/locales/kw.json | 7 +- app/javascript/mastodon/locales/lt.json | 7 +- app/javascript/mastodon/locales/lv.json | 33 +++-- app/javascript/mastodon/locales/mk.json | 7 +- app/javascript/mastodon/locales/ml.json | 7 +- app/javascript/mastodon/locales/mr.json | 7 +- app/javascript/mastodon/locales/ms.json | 7 +- app/javascript/mastodon/locales/nl.json | 45 ++++--- app/javascript/mastodon/locales/nn.json | 7 +- app/javascript/mastodon/locales/no.json | 7 +- app/javascript/mastodon/locales/oc.json | 7 +- app/javascript/mastodon/locales/pa.json | 7 +- app/javascript/mastodon/locales/pl.json | 33 +++-- app/javascript/mastodon/locales/pt-BR.json | 7 +- app/javascript/mastodon/locales/pt-PT.json | 33 +++-- app/javascript/mastodon/locales/ro.json | 7 +- app/javascript/mastodon/locales/ru.json | 27 ++-- app/javascript/mastodon/locales/sa.json | 7 +- app/javascript/mastodon/locales/sc.json | 7 +- app/javascript/mastodon/locales/si.json | 7 +- app/javascript/mastodon/locales/sk.json | 7 +- app/javascript/mastodon/locales/sl.json | 33 +++-- app/javascript/mastodon/locales/sq.json | 33 +++-- app/javascript/mastodon/locales/sr-Latn.json | 7 +- app/javascript/mastodon/locales/sr.json | 7 +- app/javascript/mastodon/locales/sv.json | 7 +- app/javascript/mastodon/locales/szl.json | 7 +- app/javascript/mastodon/locales/ta.json | 7 +- app/javascript/mastodon/locales/tai.json | 7 +- app/javascript/mastodon/locales/te.json | 7 +- app/javascript/mastodon/locales/th.json | 37 +++--- app/javascript/mastodon/locales/tr.json | 33 +++-- app/javascript/mastodon/locales/tt.json | 7 +- app/javascript/mastodon/locales/ug.json | 7 +- app/javascript/mastodon/locales/uk.json | 33 +++-- app/javascript/mastodon/locales/ur.json | 7 +- app/javascript/mastodon/locales/vi.json | 33 +++-- app/javascript/mastodon/locales/zgh.json | 7 +- app/javascript/mastodon/locales/zh-CN.json | 7 +- app/javascript/mastodon/locales/zh-HK.json | 7 +- app/javascript/mastodon/locales/zh-TW.json | 33 +++-- config/locales/af.yml | 1 - config/locales/ar.yml | 39 ------ config/locales/ast.yml | 36 ------ config/locales/bg.yml | 23 ---- config/locales/bn.yml | 20 --- config/locales/br.yml | 15 --- config/locales/ca.yml | 47 +------ config/locales/ckb.yml | 39 ------ config/locales/co.yml | 39 ------ config/locales/cs.yml | 48 ++----- config/locales/cy.yml | 41 ------ config/locales/da.yml | 49 ++----- config/locales/de.yml | 47 +------ config/locales/doorkeeper.kab.yml | 13 ++ config/locales/el.yml | 41 +----- config/locales/eo.yml | 37 ------ config/locales/es-AR.yml | 47 +------ config/locales/es-MX.yml | 47 +------ config/locales/es.yml | 47 +------ config/locales/et.yml | 41 ------ config/locales/eu.yml | 39 ------ config/locales/fa.yml | 39 ------ config/locales/fi.yml | 39 ------ config/locales/fr.yml | 40 ------ config/locales/ga.yml | 6 - config/locales/gd.yml | 43 +----- config/locales/gl.yml | 49 ++----- config/locales/he.yml | 39 ------ config/locales/hr.yml | 17 --- config/locales/hu.yml | 51 ++------ config/locales/hy.yml | 26 ---- config/locales/id.yml | 39 ------ config/locales/io.yml | 59 +++------ config/locales/is.yml | 47 +------ config/locales/it.yml | 47 +------ config/locales/ja.yml | 41 +----- config/locales/ka.yml | 25 ---- config/locales/kab.yml | 43 ++---- config/locales/kk.yml | 38 ------ config/locales/ko.yml | 41 +----- config/locales/ku.yml | 47 +------ config/locales/kw.yml | 3 - config/locales/lt.yml | 35 ----- config/locales/lv.yml | 47 +------ config/locales/ml.yml | 14 -- config/locales/ms.yml | 20 --- config/locales/nl.yml | 122 +++++++++++------- config/locales/nn.yml | 39 ------ config/locales/no.yml | 39 ------ config/locales/oc.yml | 39 ------ config/locales/pl.yml | 47 +------ config/locales/pt-BR.yml | 39 ------ config/locales/pt-PT.yml | 47 +------ config/locales/ro.yml | 36 ------ config/locales/ru.yml | 43 +----- config/locales/sc.yml | 39 ------ config/locales/si.yml | 39 ------ config/locales/simple_form.hu.yml | 4 + config/locales/simple_form.io.yml | 8 ++ config/locales/simple_form.nl.yml | 11 ++ config/locales/simple_form.ru.yml | 4 + config/locales/simple_form.th.yml | 4 + config/locales/sk.yml | 37 ------ config/locales/sl.yml | 61 ++------- config/locales/sq.yml | 47 +------ config/locales/sr-Latn.yml | 11 -- config/locales/sr.yml | 32 ----- config/locales/sv.yml | 36 ------ config/locales/ta.yml | 19 --- config/locales/tai.yml | 2 - config/locales/te.yml | 15 --- config/locales/th.yml | 46 +------ config/locales/tr.yml | 47 +------ config/locales/tt.yml | 8 -- config/locales/uk.yml | 47 +------ config/locales/vi.yml | 47 +------ config/locales/zgh.yml | 9 -- config/locales/zh-CN.yml | 40 ------ config/locales/zh-HK.yml | 39 ------ config/locales/zh-TW.yml | 49 ++----- 167 files changed, 1271 insertions(+), 2974 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 3519563d50..fafa609200 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -20,13 +20,16 @@ "account.block_domain": "Blokeer alles van {domain}", "account.blocked": "Geblok", "account.browse_more_on_origin_server": "Snuffel rond op oorspronklike profiel", - "account.cancel_follow_request": "Kanselleer volgversoek", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Stuur direkte boodskap aan @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Redigeer profiel", "account.enable_notifications": "Stel my in kennis wanneer @{name} plasings maak", "account.endorse": "Beklemtoon op profiel", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Volg", "account.followers": "Volgelinge", "account.followers.empty": "Niemand volg tans hierdie gebruiker nie.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index c6b10bbecb..07b786ca0f 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -20,13 +20,16 @@ "account.block_domain": "حظر اسم النِّطاق {domain}", "account.blocked": "محظور", "account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي", - "account.cancel_follow_request": "إلغاء طلب المتابَعة", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "مراسلة @{name} بشكل مباشر", "account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}", "account.domain_blocked": "اسم النِّطاق محظور", "account.edit_profile": "تعديل الملف الشخصي", "account.enable_notifications": "أشعرني عندما ينشر @{name}", "account.endorse": "أوصِ به على صفحتك الشخصية", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "متابعة", "account.followers": "مُتابِعون", "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "حظره والإبلاغ عنه", "confirmations.block.confirm": "حظر", "confirmations.block.message": "هل أنتَ مُتأكدٌ أنكَ تُريدُ حَظرَ {name}؟", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "حذف", "confirmations.delete.message": "هل أنتَ مُتأكدٌ أنك تُريدُ حَذفَ هذا المنشور؟", "confirmations.delete_list.confirm": "حذف", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 4dff9d6165..325b2e3e50 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -20,13 +20,16 @@ "account.block_domain": "Anubrir tolo de {domain}", "account.blocked": "Bloquiada", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Encaboxar la solicitú de siguimientu", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Unviar un mensaxe direutu a @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Dominiu anubríu", "account.edit_profile": "Editar el perfil", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Destacar nel perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Siguir", "account.followers": "Siguidores", "account.followers.empty": "Naide sigue a esti usuariu entá.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquiar ya informar", "confirmations.block.confirm": "Bloquiar", "confirmations.block.message": "¿De xuru que quies bloquiar a {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Desaniciar", "confirmations.delete.message": "¿De xuru que quies desaniciar esti estáu?", "confirmations.delete_list.confirm": "Desaniciar", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 8cb4f993a3..7c5bde927c 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -20,13 +20,16 @@ "account.block_domain": "скрий всичко от (домейн)", "account.blocked": "Блокирани", "account.browse_more_on_origin_server": "Разгледайте повече в оригиналния профил", - "account.cancel_follow_request": "Откажи искането за следване", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct Message @{name}", "account.disable_notifications": "Спрете да ме уведомявате, когато @{name} публикува", "account.domain_blocked": "Скрит домейн", "account.edit_profile": "Редактирай профила", "account.enable_notifications": "Уведомявайте ме, когато @{name} публикува", "account.endorse": "Характеристика на профила", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Последвай", "account.followers": "Последователи", "account.followers.empty": "Все още никой не следва този потребител.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Блокиране и докладване", "confirmations.block.confirm": "Блокиране", "confirmations.block.message": "Сигурни ли сте, че искате да блокирате {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Изтриване", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Изтриване", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index b80a943c54..fef216cde9 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} থেকে সব লুকাও", "account.blocked": "অবরুদ্ধ", "account.browse_more_on_origin_server": "মূল প্রোফাইলটিতে আরও ব্রাউজ করুন", - "account.cancel_follow_request": "অনুসরণ অনুরোধ বাতিল করো", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name} কে সরাসরি বার্তা", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "ডোমেন গোপন করুন", "account.edit_profile": "প্রোফাইল পরিবর্তন করুন", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "নিজের পাতায় দেখান", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "অনুসরণ", "account.followers": "অনুসরণকারী", "account.followers.empty": "এই ব্যক্তিকে এখনো কেউ অনুসরণ করে না।", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "ব্লক করুন এবং রিপোর্ট করুন", "confirmations.block.confirm": "ব্লক করুন", "confirmations.block.message": "আপনি কি নিশ্চিত {name} কে ব্লক করতে চান?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "মুছে ফেলুন", "confirmations.delete.message": "আপনি কি নিশ্চিত যে এই লেখাটি মুছে ফেলতে চান ?", "confirmations.delete_list.confirm": "মুছে ফেলুন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 47ba119659..bedf197d77 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -20,13 +20,16 @@ "account.block_domain": "Berzañ pep tra eus {domain}", "account.blocked": "Stanket", "account.browse_more_on_origin_server": "Furchal muioc'h war ar profil kentañ", - "account.cancel_follow_request": "Nullañ ar bedadenn heuliañ", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Kas ur gemennadenn prevez da @{name}", "account.disable_notifications": "Paouez d'am c'hemenn pa vez toudet gant @{name}", "account.domain_blocked": "Domani berzet", "account.edit_profile": "Aozañ ar profil", "account.enable_notifications": "Ma c'hemenn pa vez toudet gant @{name}", "account.endorse": "Lakaat war-wel war ar profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Heuliañ", "account.followers": "Heulier·ezed·ien", "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Berzañ ha Disklêriañ", "confirmations.block.confirm": "Stankañ", "confirmations.block.message": "Ha sur oc'h e fell deoc'h stankañ {name} ?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Dilemel", "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel an toud-mañ ?", "confirmations.delete_list.confirm": "Dilemel", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f6a5996d94..f6e229201f 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidors moderats", + "about.contact": "Contacte:", + "about.domain_blocks.comment": "Motiu", + "about.domain_blocks.domain": "Domini", + "about.domain_blocks.preamble": "En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular.", + "about.domain_blocks.severity": "Severitat", + "about.domain_blocks.silenced.explanation": "Generalment no veuràs perfils ni contingut d'aquest servidor, a menys que el cerquis explícitament o optis per ell seguint-lo.", + "about.domain_blocks.silenced.title": "Limitat", + "about.domain_blocks.suspended.explanation": "No es processaran, emmagatzemaran ni s'intercanviaran dades d'aquest servidor, fent impossible qualsevol interacció o comunicació amb els usuaris d'aquest servidor.", + "about.domain_blocks.suspended.title": "Suspès", + "about.not_available": "Aquesta informació no s'ha fet disponible en aquest servidor.", + "about.powered_by": "Xarxa social descentralitzada impulsada per {mastodon}", + "about.rules": "Normes del servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Afegeix o elimina de les llistes", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Bloqueja el domini {domain}", "account.blocked": "Bloquejat", "account.browse_more_on_origin_server": "Navega més en el perfil original", - "account.cancel_follow_request": "Anul·la la sol·licitud de seguiment", + "account.cancel_follow_request": "Retirar la sol·licitud de seguiment", "account.direct": "Envia missatge directe a @{name}", "account.disable_notifications": "No em notifiquis les publicacions de @{name}", "account.domain_blocked": "Domini bloquejat", "account.edit_profile": "Edita el perfil", "account.enable_notifications": "Notifica’m les publicacions de @{name}", "account.endorse": "Recomana en el teu perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Segueix", "account.followers": "Seguidors", "account.followers.empty": "Ningú segueix aquest usuari encara.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloqueja i informa", "confirmations.block.confirm": "Bloqueja", "confirmations.block.message": "Segur que vols bloquejar a {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar sol·licitud", + "confirmations.cancel_follow_request.message": "Estàs segur que vols retirar la teva sol·licitud de seguiment de {name}?", "confirmations.delete.confirm": "Suprimeix", "confirmations.delete.message": "Segur que vols eliminar la publicació?", "confirmations.delete_list.confirm": "Suprimeix", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 6b887addee..edd3240379 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -20,13 +20,16 @@ "account.block_domain": "بلۆکی هەموو شتێک لە {domain}", "account.blocked": "بلۆککرا", "account.browse_more_on_origin_server": "گەڕانی فرەتر لە سەر پرۆفایلی سەرەکی", - "account.cancel_follow_request": "بەتاڵکردنی داوای شوێنکەوتن", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "پەیامی تایبەت بە @{name}", "account.disable_notifications": "ئاگانامە مەنێرە بۆم کاتێک @{name} پۆست دەکرێت", "account.domain_blocked": "دۆمەین قەپاتکرا", "account.edit_profile": "دەستکاری پرۆفایل", "account.enable_notifications": "ئاگادارم بکەوە کاتێک @{name} بابەتەکان", "account.endorse": "ناساندن لە پرۆفایل", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "شوێنکەوتن", "account.followers": "شوێنکەوتووان", "account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "بلۆک & گوزارشت", "confirmations.block.confirm": "بلۆک", "confirmations.block.message": "ئایا دڵنیایت لەوەی دەتەوێت {name} بلۆک بکەیت?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "سڕینەوە", "confirmations.delete.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە?", "confirmations.delete_list.confirm": "سڕینەوە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index bf79a5b128..e1681bc8a7 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -20,13 +20,16 @@ "account.block_domain": "Piattà u duminiu {domain}", "account.blocked": "Bluccatu", "account.browse_more_on_origin_server": "Vede di più nant'à u prufile uriginale", - "account.cancel_follow_request": "Annullà a dumanda d'abbunamentu", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Missaghju direttu @{name}", "account.disable_notifications": "Ùn mi nutificate più quandu @{name} pubblica qualcosa", "account.domain_blocked": "Duminiu piattatu", "account.edit_profile": "Mudificà u prufile", "account.enable_notifications": "Nutificate mi quandu @{name} pubblica qualcosa", "account.endorse": "Fà figurà nant'à u prufilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Siguità", "account.followers": "Abbunati", "account.followers.empty": "Nisunu hè abbunatu à st'utilizatore.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bluccà è signalà", "confirmations.block.confirm": "Bluccà", "confirmations.block.message": "Site sicuru·a che vulete bluccà @{name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Toglie", "confirmations.delete.message": "Site sicuru·a che vulete sguassà stu statutu?", "confirmations.delete_list.confirm": "Toglie", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index f56fb8d7d3..40cbbba3ce 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderované servery", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Důvod", + "about.domain_blocks.domain": "Doména", + "about.domain_blocks.preamble": "Mastodon vám obecně umožňuje prohlížet obsah a komunikovat s uživateli z jakéhokoliv jiného serveru ve fediveru. Toto jsou výjimky, které byly uděleny na tomto konkrétním serveru.", + "about.domain_blocks.severity": "Závažnost", + "about.domain_blocks.silenced.explanation": "Z tohoto serveru obecně neuvidíte profily a obsah, pokud se na něj výslovně nepodíváte, nebo se k němu připojíte sledováním.", + "about.domain_blocks.silenced.title": "Omezeno", + "about.domain_blocks.suspended.explanation": "Žádná data z tohoto serveru nebudou zpracovávána, uložena ani vyměňována, což znemožňuje jakoukoli interakci nebo komunikaci s uživateli z tohoto serveru.", + "about.domain_blocks.suspended.title": "Pozastaveno", + "about.not_available": "Tato informace nebyla zpřístupněna na tomto serveru.", + "about.powered_by": "Decentralizovaná sociální média poháněná {mastodon}", + "about.rules": "Pravidla serveru", "account.account_note_header": "Poznámka", "account.add_or_remove_from_list": "Přidat nebo odstranit ze seznamů", "account.badges.bot": "Robot", @@ -20,13 +20,16 @@ "account.block_domain": "Blokovat doménu {domain}", "account.blocked": "Blokován", "account.browse_more_on_origin_server": "Více na původním profilu", - "account.cancel_follow_request": "Zrušit žádost o sledování", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Poslat @{name} přímou zprávu", "account.disable_notifications": "Zrušit upozorňování na příspěvky @{name}", "account.domain_blocked": "Doména blokována", "account.edit_profile": "Upravit profil", "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sledovat", "account.followers": "Sledující", "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokovat a nahlásit", "confirmations.block.confirm": "Blokovat", "confirmations.block.message": "Opravdu chcete zablokovat {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Smazat", "confirmations.delete.message": "Opravdu chcete smazat tento příspěvek?", "confirmations.delete_list.confirm": "Smazat", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index b25834c363..967bb6aeac 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -20,13 +20,16 @@ "account.block_domain": "Blocio parth {domain}", "account.blocked": "Blociwyd", "account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol", - "account.cancel_follow_request": "Canslo cais dilyn", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Neges breifat @{name}", "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", "account.domain_blocked": "Parth wedi ei flocio", "account.edit_profile": "Golygu proffil", "account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio", "account.endorse": "Arddangos ar fy mhroffil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Dilyn", "account.followers": "Dilynwyr", "account.followers.empty": "Does neb yn dilyn y defnyddiwr hwn eto.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Rhwystro ac Adrodd", "confirmations.block.confirm": "Blocio", "confirmations.block.message": "Ydych chi'n sicr eich bod eisiau blocio {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Dileu", "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y post hwn?", "confirmations.delete_list.confirm": "Dileu", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 922314e30f..97e5eeb5a0 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Modererede servere", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Årsag", + "about.domain_blocks.domain": "Domæne", + "about.domain_blocks.preamble": "Mastodon tillader generelt, at man ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server.", + "about.domain_blocks.severity": "Alvorlighed", + "about.domain_blocks.silenced.explanation": "Man vil generelt ikke se profiler og indhold fra denne server, medmindre man udtrykkeligt slå den op eller vælger den ved at følge.", + "about.domain_blocks.silenced.title": "Begrænset", + "about.domain_blocks.suspended.explanation": "Data fra denne server hverken behandles, gemmes eller udveksles, hvilket umuliggør interaktion eller kommunikation med brugere fra denne server.", + "about.domain_blocks.suspended.title": "Udelukket", + "about.not_available": "Denne information er ikke blevet gjort tilgængelig på denne server.", + "about.powered_by": "Decentraliserede sociale medier drevet af {mastodon}", + "about.rules": "Serverregler", "account.account_note_header": "Notat", "account.add_or_remove_from_list": "Tilføj eller fjern fra lister", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Blokér domænet {domain}", "account.blocked": "Blokeret", "account.browse_more_on_origin_server": "Tjek mere ud på den oprindelige profil", - "account.cancel_follow_request": "Annullér følgeanmodning", + "account.cancel_follow_request": "Annullér følg-anmodning", "account.direct": "Direkte besked til @{name}", "account.disable_notifications": "Advisér mig ikke længere, når @{name} poster", "account.domain_blocked": "Domæne blokeret", "account.edit_profile": "Redigér profil", "account.enable_notifications": "Advisér mig, når @{name} poster", "account.endorse": "Fremhæv på profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Følg", "account.followers": "Følgere", "account.followers.empty": "Ingen følger denne bruger endnu.", @@ -37,7 +40,7 @@ "account.follows_you": "Følger dig", "account.hide_reblogs": "Skjul boosts fra @{name}", "account.joined": "Tilmeldt {date}", - "account.languages": "Change subscribed languages", + "account.languages": "Skift abonnementssprog", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", "account.media": "Medier", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokér og Anmeld", "confirmations.block.confirm": "Blokér", "confirmations.block.message": "Sikker på, at du vil blokere {name}?", + "confirmations.cancel_follow_request.confirm": "Annullér anmodning", + "confirmations.cancel_follow_request.message": "Sikker på, at anmodningen om at følge {name} skal annulleres?", "confirmations.delete.confirm": "Slet", "confirmations.delete.message": "Sikker på, at du vil slette dette indlæg?", "confirmations.delete_list.confirm": "Slet", @@ -164,12 +169,12 @@ "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nyligt aktive", - "dismissable_banner.community_timeline": "Dette er de seneste offentlige indlæg fra personer, hvis konti hostes af {domain}.", + "dismissable_banner.community_timeline": "Disse er de seneste offentlige indlæg fra personer med konti hostes af {domain}.", "dismissable_banner.dismiss": "Afvis", "dismissable_banner.explore_links": "Der tales lige nu om disse nyhedshistorier af folk på denne og andre servere i det decentraliserede netværk.", "dismissable_banner.explore_statuses": "Disse indlæg vinder lige nu fodfæste på denne og andre servere i det decentraliserede netværk.", "dismissable_banner.explore_tags": "Disse hashtages vinder lige nu fodfæste blandt folk på denne og andre servere i det decentraliserede netværk.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.public_timeline": "Disse er de seneste offentlige indlæg fra folk på denne og andre servere i det decentraliserede netværk, som denne server kender.", "embed.instructions": "Indlejr dette indlæg på dit websted ved at kopiere nedenstående kode.", "embed.preview": "Sådan kommer det til at se ud:", "emoji_button.activity": "Aktivitet", @@ -575,7 +580,7 @@ "status.unpin": "Frigør fra profil", "subscribed_languages.lead": "Kun indlæg på udvalgte sprog vil fremgå på Hjem og listetidslinjer efter ændringen. Vælg ingen for at modtage indlæg på alle sprog.", "subscribed_languages.save": "Gem ændringer", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.target": "Skift abonnementssprog for {target}", "suggestions.dismiss": "Afvis foreslag", "suggestions.header": "Du er måske interesseret i…", "tabs_bar.federated_timeline": "Fælles", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 14b825bee2..a1b7993004 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", + "about.blocks": "Moderierte Server", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Begründung", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.preamble": "Mastodon erlaubt es dir generell, mit Inhalten zu interagieren, diese anzuzeigen und mit anderen Nutzern im Fediversum über Server hinweg zu interagieren. Dies sind die Ausnahmen, die auf diesem bestimmten Server gemacht wurden.", + "about.domain_blocks.severity": "Schweregrad", + "about.domain_blocks.silenced.explanation": "In der Regel werden Sie keine Profile und Inhalte von diesem Server sehen, es sei denn, Sie suchen explizit danach oder entscheiden sich für diesen Server, indem Sie ihm folgen.", + "about.domain_blocks.silenced.title": "Limitiert", + "about.domain_blocks.suspended.explanation": "Es werden keine Daten von diesem Server verarbeitet, gespeichert oder ausgetauscht, so dass eine Interaktion oder Kommunikation mit Nutzern dieses Servers nicht möglich ist.", + "about.domain_blocks.suspended.title": "Gesperrt", + "about.not_available": "Diese Informationen sind auf diesem Server nicht verfügbar.", + "about.powered_by": "Dezentrale soziale Medien betrieben von {mastodon}", + "about.rules": "Serverregeln", "account.account_note_header": "Notiz", "account.add_or_remove_from_list": "Hinzufügen oder Entfernen von Listen", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Alles von {domain} verstecken", "account.blocked": "Blockiert", "account.browse_more_on_origin_server": "Mehr auf dem Originalprofil durchsuchen", - "account.cancel_follow_request": "Folgeanfrage abbrechen", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direktnachricht an @{name}", "account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet", "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", "account.endorse": "Auf Profil hervorheben", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Folgen", "account.followers": "Follower", "account.followers.empty": "Diesem Profil folgt noch niemand.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blockieren und melden", "confirmations.block.confirm": "Blockieren", "confirmations.block.message": "Bist du dir sicher, dass du {name} blockieren möchtest?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Löschen", "confirmations.delete.message": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", "confirmations.delete_list.confirm": "Löschen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index ee8d960525..3b4cd8adbd 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -955,6 +955,10 @@ }, { "descriptors": [ + { + "defaultMessage": "Withdraw request", + "id": "confirmations.cancel_follow_request.confirm" + }, { "defaultMessage": "Unfollow", "id": "confirmations.unfollow.confirm" @@ -967,6 +971,10 @@ "defaultMessage": "Are you sure you want to unfollow {name}?", "id": "confirmations.unfollow.message" }, + { + "defaultMessage": "Are you sure you want to withdraw your request to follow {name}?", + "id": "confirmations.cancel_follow_request.message" + }, { "defaultMessage": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", "id": "confirmations.domain_block.message" @@ -1012,6 +1020,23 @@ ], "path": "app/javascript/mastodon/features/account/components/account_note.json" }, + { + "descriptors": [ + { + "defaultMessage": "Last post on {date}", + "id": "account.featured_tags.last_status_at" + }, + { + "defaultMessage": "No posts", + "id": "account.featured_tags.last_status_never" + }, + { + "defaultMessage": "{name}'s featured hashtags", + "id": "account.featured_tags.title" + } + ], + "path": "app/javascript/mastodon/features/account/components/featured_tags.json" + }, { "descriptors": [ { @@ -1023,7 +1048,7 @@ "id": "account.follow" }, { - "defaultMessage": "Cancel follow request", + "defaultMessage": "Withdraw follow request", "id": "account.cancel_follow_request" }, { @@ -1839,7 +1864,7 @@ "id": "account.follow" }, { - "defaultMessage": "Cancel follow request", + "defaultMessage": "Withdraw follow request", "id": "account.cancel_follow_request" }, { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 4bc1351efc..072ef0fe27 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -1,10 +1,10 @@ { "about.blocks": "Moderated servers", - "about.contact": "Contact:", + "about.contact": "Επικοινωνία:", "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.domain": "Τομέας (Domain)", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Σοβαρότητα", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -20,13 +20,16 @@ "account.block_domain": "Αποκλεισμός {domain}", "account.blocked": "Αποκλεισμένος/η", "account.browse_more_on_origin_server": "Δες περισσότερα στο αρχικό προφίλ", - "account.cancel_follow_request": "Ακύρωση αιτήματος ακολούθησης", + "account.cancel_follow_request": "Απόσυρση αιτήματος παρακολούθησης", "account.direct": "Άμεσο μήνυμα προς @{name}", "account.disable_notifications": "Διακοπή ειδοποιήσεων για τις δημοσιεύσεις του/της @{name}", "account.domain_blocked": "Ο τομέας αποκλείστηκε", "account.edit_profile": "Επεξεργασία προφίλ", "account.enable_notifications": "Έναρξη ειδοποιήσεων για τις δημοσιεύσεις του/της @{name}", "account.endorse": "Προβολή στο προφίλ", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ακολούθησε", "account.followers": "Ακόλουθοι", "account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Αποκλεισμός & Καταγγελία", "confirmations.block.confirm": "Απόκλεισε", "confirmations.block.message": "Σίγουρα θες να αποκλείσεις {name};", + "confirmations.cancel_follow_request.confirm": "Απόσυρση αιτήματος", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Διέγραψε", "confirmations.delete.message": "Σίγουρα θες να διαγράψεις αυτή τη δημοσίευση;", "confirmations.delete_list.confirm": "Διέγραψε", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 5745b53043..1cbed45263 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index f827032ae9..83a2d206a8 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -27,6 +27,9 @@ "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -35,9 +38,6 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", - "account.hashtag_all": "All", - "account.hashtag_all_description": "All posts (deselect hashtags)", - "account.hashtag_select_description": "Select hashtag #{name}", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined": "Joined {date}", "account.languages": "Change subscribed languages", @@ -138,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this post?", "confirmations.delete_list.confirm": "Delete", @@ -146,8 +148,6 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Block entire domain", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.logout.confirm": "Log out", "confirmations.logout.message": "Are you sure you want to log out?", "confirmations.mute.confirm": "Mute", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 087bcbb5b8..708a071693 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -20,13 +20,16 @@ "account.block_domain": "Bloki la domajnon {domain}", "account.blocked": "Blokita", "account.browse_more_on_origin_server": "Foliumi pli ĉe la originala profilo", - "account.cancel_follow_request": "Nuligi la demandon de sekvado", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Rekte mesaĝi @{name}", "account.disable_notifications": "Ne plu sciigi min kiam @{name} mesaĝas", "account.domain_blocked": "Domajno blokita", "account.edit_profile": "Redakti la profilon", "account.enable_notifications": "Sciigi min kiam @{name} mesaĝas", "account.endorse": "Rekomendi ĉe via profilo", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sekvi", "account.followers": "Sekvantoj", "account.followers.empty": "Ankoraŭ neniu sekvas tiun uzanton.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloki kaj raporti", "confirmations.block.confirm": "Bloki", "confirmations.block.message": "Ĉu vi certas, ke vi volas bloki {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Forigi", "confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun mesaĝon?", "confirmations.delete_list.confirm": "Forigi", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index cff937c4ef..87a1f332d3 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", + "about.domain_blocks.severity": "Gravedad", + "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busqués explícitamente o sigás alguna cuenta.", + "about.domain_blocks.silenced.title": "Limitados", + "about.domain_blocks.suspended.explanation": "Ningún dato de este servidor será procesado, almacenado o intercambiado, haciendo imposible cualquier interacción o comunicación con los usuarios de este servidor.", + "about.domain_blocks.suspended.title": "Suspendidos", + "about.not_available": "Esta información no está disponible en este servidor.", + "about.powered_by": "Redes sociales descentralizadas con tecnología de {mastodon}", + "about.rules": "Reglas del servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agregar o quitar de las listas", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Explorar más en el perfil original", - "account.cancel_follow_request": "Cancelar la solicitud de seguimiento", + "account.cancel_follow_request": "Retirar la solicitud de seguimiento", "account.direct": "Mensaje directo a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} envíe mensajes", "account.domain_blocked": "Dominio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} envíe mensajes", "account.endorse": "Destacar en el perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear y denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "¿Estás seguro que querés bloquear a {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar solicitud", + "confirmations.cancel_follow_request.message": "¿Estás seguro que querés retirar tu solicitud para seguir a {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro que querés eliminar este mensaje?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 793c65a3c5..06b03b1b33 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Razón", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", + "about.domain_blocks.severity": "Gravedad", + "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busques explícitamente o sigas alguna cuenta.", + "about.domain_blocks.silenced.title": "Limitado", + "about.domain_blocks.suspended.explanation": "Ningún dato de este servidor será procesado, almacenado o intercambiado, haciendo imposible cualquier interacción o comunicación con los usuarios de este servidor.", + "about.domain_blocks.suspended.title": "Suspendido", + "about.not_available": "Esta información no está disponible en este servidor.", + "about.powered_by": "Redes sociales descentralizadas con tecnología de {mastodon}", + "about.rules": "Reglas del servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agregar o eliminar de las listas", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", - "account.cancel_follow_request": "Cancelar la solicitud de seguimiento", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Mensaje directo a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", "account.domain_blocked": "Dominio oculto", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en mi perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear y Reportar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "¿Estás seguro de que quieres bloquear a {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro de que quieres borrar este toot?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 561fc84e65..53661edb1c 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Razón", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", + "about.domain_blocks.severity": "Gravedad", + "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busques explícitamente o sigas alguna cuenta.", + "about.domain_blocks.silenced.title": "Limitado", + "about.domain_blocks.suspended.explanation": "Ningún dato de este servidor será procesado, almacenado o intercambiado, haciendo imposible cualquier interacción o comunicación con los usuarios de este servidor.", + "about.domain_blocks.suspended.title": "Suspendido", + "about.not_available": "Esta información no está disponible en este servidor.", + "about.powered_by": "Redes sociales descentralizadas con tecnología de {mastodon}", + "about.rules": "Reglas del servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Agregar o eliminar de listas", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", - "account.cancel_follow_request": "Cancelar la solicitud de seguimiento", + "account.cancel_follow_request": "Retirar solicitud de seguimiento", "account.direct": "Mensaje directo a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", "account.domain_blocked": "Dominio oculto", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Mostrar en perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear y Reportar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "¿Estás seguro de que quieres bloquear a {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar solicitud", + "confirmations.cancel_follow_request.message": "¿Estás seguro de que deseas retirar tu solicitud para seguir a {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro de que quieres borrar esta publicación?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 380868da92..94a42a6b0a 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -20,13 +20,16 @@ "account.block_domain": "Peida kõik domeenist {domain}", "account.blocked": "Blokeeritud", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Tühista jälgimistaotlus", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Saada otsesõnum @{name}'ile", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domeen peidetud", "account.edit_profile": "Muuda profiili", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Too profiilil esile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Jälgi", "account.followers": "Jälgijad", "account.followers.empty": "Keegi ei jälgi seda kasutajat veel.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokeeri & Teata", "confirmations.block.confirm": "Blokeeri", "confirmations.block.message": "Olete kindel, et soovite blokeerida {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Kustuta", "confirmations.delete.message": "Olete kindel, et soovite selle staatuse kustutada?", "confirmations.delete_list.confirm": "Kustuta", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 46f7d082d4..a65470eb2e 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -20,13 +20,16 @@ "account.block_domain": "Ezkutatu {domain} domeinuko guztia", "account.blocked": "Blokeatuta", "account.browse_more_on_origin_server": "Arakatu gehiago jatorrizko profilean", - "account.cancel_follow_request": "Ezeztatu jarraitzeko eskaria", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Mezu zuzena @{name}(r)i", "account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzailearen bidalketetan", "account.domain_blocked": "Ezkutatutako domeinua", "account.edit_profile": "Aldatu profila", "account.enable_notifications": "Jakinarazi @{name} erabiltzaileak bidalketak egitean", "account.endorse": "Nabarmendu profilean", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Jarraitu", "account.followers": "Jarraitzaileak", "account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokeatu eta salatu", "confirmations.block.confirm": "Blokeatu", "confirmations.block.message": "Ziur {name} blokeatu nahi duzula?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Ezabatu", "confirmations.delete.message": "Ziur bidalketa hau ezabatu nahi duzula?", "confirmations.delete_list.confirm": "Ezabatu", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 9d6bb57924..29fc0776e5 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -20,13 +20,16 @@ "account.block_domain": "مسدود کردن دامنهٔ {domain}", "account.blocked": "مسدود", "account.browse_more_on_origin_server": "مرور بیش‌تر روی نمایهٔ اصلی", - "account.cancel_follow_request": "لغو درخواست پی‌گیری", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "پیام مستقیم به ‎@{name}", "account.disable_notifications": "آگاه کردن من هنگام فرسته‌های ‎@{name} را متوقّف کن", "account.domain_blocked": "دامنه مسدود شد", "account.edit_profile": "ویرایش نمایه", "account.enable_notifications": "هنگام فرسته‌های ‎@{name} مرا آگاه کن", "account.endorse": "معرّفی در نمایه", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "پی‌گیری", "account.followers": "پی‌گیرندگان", "account.followers.empty": "هنوز کسی این کاربر را پی‌گیری نمی‌کند.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "مسدود کردن و گزارش", "confirmations.block.confirm": "مسدود کردن", "confirmations.block.message": "مطمئنید که می‌خواهید {name} را مسدود کنید؟", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "حذف", "confirmations.delete.message": "آیا مطمئنید که می‌خواهید این فرسته را حذف کنید؟", "confirmations.delete_list.confirm": "حذف", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 6335c5ee35..adeb4c0059 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -20,13 +20,16 @@ "account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}", "account.blocked": "Estetty", "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", - "account.cancel_follow_request": "Peruuta seurauspyyntö", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Pikaviesti käyttäjälle @{name}", "account.disable_notifications": "Lopeta @{name}:n julkaisuista ilmoittaminen", "account.domain_blocked": "Verkko-osoite piilotettu", "account.edit_profile": "Muokkaa profiilia", "account.enable_notifications": "Ilmoita @{name}:n julkaisuista", "account.endorse": "Suosittele profiilissasi", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seuraa", "account.followers": "Seuraajat", "account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Estä ja raportoi", "confirmations.block.confirm": "Estä", "confirmations.block.message": "Haluatko varmasti estää käyttäjän {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Poista", "confirmations.delete.message": "Haluatko varmasti poistaa tämän julkaisun?", "confirmations.delete_list.confirm": "Poista", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 754cf1021b..90033e0960 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -20,13 +20,16 @@ "account.block_domain": "Bloquer le domaine {domain}", "account.blocked": "Bloqué·e", "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", - "account.cancel_follow_request": "Annuler la demande de suivi", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Envoyer un message direct à @{name}", "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie quelque chose", "account.endorse": "Recommander sur votre profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Suivre", "account.followers": "Abonné·e·s", "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquer et signaler", "confirmations.block.confirm": "Bloquer", "confirmations.block.message": "Voulez-vous vraiment bloquer {name} ?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Supprimer", "confirmations.delete.message": "Voulez-vous vraiment supprimer ce message ?", "confirmations.delete_list.confirm": "Supprimer", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 2fc9d1c15c..2837dd89c0 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domein blokkearre", "account.edit_profile": "Profyl oanpasse", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Folgje", "account.followers": "Folgers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokkearre & Oanjaan", "confirmations.block.confirm": "Blokkearre", "confirmations.block.message": "Wolle jo {name} werklik blokkearre?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Fuortsmite", "confirmations.delete.message": "Wolle jo dit berjocht werklik fuortsmite?", "confirmations.delete_list.confirm": "Fuortsmite", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index ca82660b1b..b91daf8149 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -20,13 +20,16 @@ "account.block_domain": "Bac ainm fearainn {domain}", "account.blocked": "Bactha", "account.browse_more_on_origin_server": "Brabhsáil níos mó ar an phróifíl bhunaidh", - "account.cancel_follow_request": "Cealaigh iarratas leanúnaí", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Seol teachtaireacht dhíreach chuig @{name}", "account.disable_notifications": "Éirigh as ag cuir mé in eol nuair bpostálann @{name}", "account.domain_blocked": "Ainm fearainn bactha", "account.edit_profile": "Cuir an phróifíl in eagar", "account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}", "account.endorse": "Cuir ar an phróifíl mar ghné", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Lean", "account.followers": "Leantóirí", "account.followers.empty": "Ní leanann éinne an t-úsáideoir seo fós.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 06cb820ce3..92b8424fb0 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -20,13 +20,16 @@ "account.block_domain": "Bac an àrainn {domain}", "account.blocked": "’Ga bhacadh", "account.browse_more_on_origin_server": "Rùraich barrachd dheth air a’ phròifil thùsail", - "account.cancel_follow_request": "Sguir dhen iarrtas leantainn", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Cuir teachdaireachd dhìreach gu @{name}", "account.disable_notifications": "Na cuir brath thugam tuilleadh nuair a chuireas @{name} post ris", "account.domain_blocked": "Chaidh an àrainn a bhacadh", "account.edit_profile": "Deasaich a’ phròifil", "account.enable_notifications": "Cuir brath thugam nuair a chuireas @{name} post ris", "account.endorse": "Brosnaich air a’ phròifil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Lean air", "account.followers": "Luchd-leantainn", "account.followers.empty": "Chan eil neach sam bith a’ leantainn air a’ chleachdaiche seo fhathast.", @@ -64,7 +67,7 @@ "account_note.placeholder": "Briog airson nòta a chur ris", "admin.dashboard.daily_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir latha", "admin.dashboard.monthly_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir mìos", - "admin.dashboard.retention.average": "Średnia", + "admin.dashboard.retention.average": "Cuibheasach", "admin.dashboard.retention.cohort": "Mìos a’ chlàraidh", "admin.dashboard.retention.cohort_size": "Cleachdaichean ùra", "alert.rate_limited.message": "Feuch ris a-rithist às dèidh {retry_time, time, medium}.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bac ⁊ dèan gearan", "confirmations.block.confirm": "Bac", "confirmations.block.message": "A bheil thu cinnteach gu bheil thu airson {name} a bhacadh?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Sguab às", "confirmations.delete.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", "confirmations.delete_list.confirm": "Sguab às", @@ -157,7 +162,7 @@ "conversation.delete": "Sguab às an còmhradh", "conversation.mark_as_read": "Cuir comharra gun deach a leughadh", "conversation.open": "Seall an còmhradh", - "conversation.with": "Le {names}", + "conversation.with": "Còmhla ri {names}", "copypaste.copied": "Copied", "copypaste.copy": "Copy", "directory.federated": "On cho-shaoghal aithnichte", @@ -526,7 +531,7 @@ "status.bookmark": "Cuir ris na comharran-lìn", "status.cancel_reblog_private": "Na brosnaich tuilleadh", "status.cannot_reblog": "Cha ghabh am post seo brosnachadh", - "status.copy": "Dèan lethbhreac dhen cheangal air a’ phost", + "status.copy": "Dèan lethbhreac dhen cheangal dhan phost", "status.delete": "Sguab às", "status.detailed_status": "Mion-shealladh a’ chòmhraidh", "status.direct": "Cuir teachdaireachd dhìreach gu @{name}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 877a1dda5a..00e6ce9c04 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Razón", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular.", + "about.domain_blocks.severity": "Rigurosidade", + "about.domain_blocks.silenced.explanation": "Por defecto non verás perfís e contido desde este servidor, a menos que mires de xeito explícito ou optes por seguir ese contido ou usuaria.", + "about.domain_blocks.silenced.title": "Limitada", + "about.domain_blocks.suspended.explanation": "Non se procesarán, almacenarán nin intercambiarán datos con este servidor, o que fai imposible calquera interacción ou comunicación coas usuarias deste servidor.", + "about.domain_blocks.suspended.title": "Suspendida", + "about.not_available": "Esta información non está dispoñible neste servidor.", + "about.powered_by": "Comunicación social descentralizada grazas a {mastodon}", + "about.rules": "Regras do servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Engadir ou eliminar das listaxes", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Agochar todo de {domain}", "account.blocked": "Bloqueada", "account.browse_more_on_origin_server": "Busca máis no perfil orixinal", - "account.cancel_follow_request": "Desbotar solicitude de seguimento", + "account.cancel_follow_request": "Retirar solicitude de seguimento", "account.direct": "Mensaxe directa a @{name}", "account.disable_notifications": "Deixar de notificarme cando @{name} publica", "account.domain_blocked": "Dominio agochado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Noficarme cando @{name} publique", "account.endorse": "Amosar no perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidoras", "account.followers.empty": "Aínda ninguén segue esta usuaria.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear e denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "Tes a certeza de querer bloquear a {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar solicitude", + "confirmations.cancel_follow_request.message": "Tes a certeza de querer retirar a solicitude para seguir a {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "Tes a certeza de querer eliminar esta publicación?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 6aeb0a47d6..dfbf30a456 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -20,13 +20,16 @@ "account.block_domain": "חסמו את קהילת {domain}", "account.blocked": "לחסום", "account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי", - "account.cancel_follow_request": "בטל בקשת מעקב", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "הודעה ישירה ל@{name}", "account.disable_notifications": "הפסק לשלוח לי התראות כש@{name} מפרסמים", "account.domain_blocked": "הדומיין חסום", "account.edit_profile": "עריכת פרופיל", "account.enable_notifications": "שלח לי התראות כש@{name} מפרסם", "account.endorse": "קדם את החשבון בפרופיל", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "עקוב", "account.followers": "עוקבים", "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "לחסום ולדווח", "confirmations.block.confirm": "לחסום", "confirmations.block.message": "האם את/ה בטוח/ה שברצונך למחוק את \"{name}\"?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "למחוק", "confirmations.delete.message": "בטוח/ה שאת/ה רוצה למחוק את ההודעה?", "confirmations.delete_list.confirm": "למחוק", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 0831628762..a60aa04d9d 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} के सारी चीज़े छुपाएं", "account.blocked": "ब्लॉक", "account.browse_more_on_origin_server": "मूल प्रोफ़ाइल पर अधिक ब्राउज़ करें", - "account.cancel_follow_request": "फ़ॉलो रिक्वेस्ट रद्द करें", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "प्रत्यक्ष संदेश @{name}", "account.disable_notifications": "@{name} पोस्ट के लिए मुझे सूचित मत करो", "account.domain_blocked": "छिपा हुआ डोमेन", "account.edit_profile": "प्रोफ़ाइल संपादित करें", "account.enable_notifications": "जब @{name} पोस्ट मौजूद हो सूचित करें", "account.endorse": "प्रोफ़ाइल पर दिखाए", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "फॉलो करें", "account.followers": "फॉलोवर", "account.followers.empty": "कोई भी इस यूज़र् को फ़ॉलो नहीं करता है", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "ब्लॉक एवं रिपोर्ट", "confirmations.block.confirm": "ब्लॉक", "confirmations.block.message": "क्या आप वाकई {name} को ब्लॉक करना चाहते हैं?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "मिटाए", "confirmations.delete.message": "क्या आप वाकई इस स्टेटस को हटाना चाहते हैं?", "confirmations.delete_list.confirm": "मिटाए", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 95d38e7b16..86f9cd0de8 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -20,13 +20,16 @@ "account.block_domain": "Blokiraj domenu {domain}", "account.blocked": "Blokirano", "account.browse_more_on_origin_server": "Pogledajte više na izvornom profilu", - "account.cancel_follow_request": "Otkaži zahtjev za praćenje", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Pošalji poruku @{name}", "account.disable_notifications": "Nemoj me obavjestiti kada @{name} napravi objavu", "account.domain_blocked": "Domena je blokirana", "account.edit_profile": "Uredi profil", "account.enable_notifications": "Obavjesti me kada @{name} napravi objavu", "account.endorse": "Istakni na profilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Prati", "account.followers": "Pratitelji", "account.followers.empty": "Nitko još ne prati korisnika/cu.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokiraj i prijavi", "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Sigurno želite blokirati {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Obriši", "confirmations.delete.message": "Stvarno želite obrisati ovaj toot?", "confirmations.delete_list.confirm": "Obriši", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index cb554133c9..aa5660ff85 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", + "about.blocks": "Moderált kiszolgálók", + "about.contact": "Kapcsolat:", + "about.domain_blocks.comment": "Indoklás", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.preamble": "A Mastodon általában mindenféle tartalomcserét és interakciót lehetővé tesz bármelyik másik kiszolgálóval a födiverzumban. Ezek azok a kivételek, amelyek a mi kiszolgálónkon érvényben vannak.", + "about.domain_blocks.severity": "Súlyosság", + "about.domain_blocks.silenced.explanation": "Általában nem fogsz profilokat és tartalmat látni erről a kiszolgálóról, hacsak közvetlenül fel nem keresed vagy követed.", + "about.domain_blocks.silenced.title": "Korlátozott", + "about.domain_blocks.suspended.explanation": "A kiszolgáló adatai nem lesznek feldolgozva, tárolva vagy megosztva, lehetetlenné téve mindennemű interakciót és kommunikációt a kiszolgáló felhasználóival.", + "about.domain_blocks.suspended.title": "Felfüggesztett", + "about.not_available": "Ez az információ nem lett közzétéve ezen a kiszolgálón.", + "about.powered_by": "Decentralizált közösségi média a {mastodon} segítségével", + "about.rules": "Kiszolgáló szabályai", "account.account_note_header": "Jegyzet", "account.add_or_remove_from_list": "Hozzáadás vagy eltávolítás a listákról", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Domain blokkolása: {domain}", "account.blocked": "Letiltva", "account.browse_more_on_origin_server": "Böngéssz tovább az eredeti profilon", - "account.cancel_follow_request": "Követési kérelem visszavonása", + "account.cancel_follow_request": "Követési kérés visszavonása", "account.direct": "Közvetlen üzenet @{name} számára", "account.disable_notifications": "Ne figyelmeztessen, ha @{name} bejegyzést tesz közzé", "account.domain_blocked": "Letiltott domain", "account.edit_profile": "Profil szerkesztése", "account.enable_notifications": "Figyelmeztessen, ha @{name} bejegyzést tesz közzé", "account.endorse": "Kiemelés a profilodon", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Követés", "account.followers": "Követő", "account.followers.empty": "Ezt a felhasználót még senki sem követi.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Letiltás és jelentés", "confirmations.block.confirm": "Letiltás", "confirmations.block.message": "Biztos, hogy letiltod: {name}?", + "confirmations.cancel_follow_request.confirm": "Kérés visszavonása", + "confirmations.cancel_follow_request.message": "Biztos, hogy visszavonod a(z) {name} felhasználóra vonatkozó követési kérésedet?", "confirmations.delete.confirm": "Törlés", "confirmations.delete.message": "Biztos, hogy törölni szeretnéd ezt a bejegyzést?", "confirmations.delete_list.confirm": "Törlés", @@ -169,7 +174,7 @@ "dismissable_banner.explore_links": "Jelenleg ezekről a hírekről beszélgetnek az ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek.", "dismissable_banner.explore_statuses": "Jelenleg ezek a bejegyzések hódítanak teret ezen és a decentralizált hálózat egyéb kiszolgálóin.", "dismissable_banner.explore_tags": "Jelenleg ezek a hashtagek hódítanak teret ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek körében.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.public_timeline": "Ezek a legfrissebb bejegyzések azoktól, akik a decentralizált hálózat más kiszolgálóin vannak, és ez a kiszolgáló tud róluk.", "embed.instructions": "Ágyazd be ezt a bejegyzést a weboldaladba az alábbi kód kimásolásával.", "embed.preview": "Így fog kinézni:", "emoji_button.activity": "Tevékenység", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index f97c5296b0..69749098a6 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -20,13 +20,16 @@ "account.block_domain": "Թաքցնել ամէնը հետեւեալ տիրոյթից՝ {domain}", "account.blocked": "Արգելափակուած է", "account.browse_more_on_origin_server": "Դիտել աւելին իրական պրոֆիլում", - "account.cancel_follow_request": "չեղարկել հետեւելու հայցը", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Նամակ գրել @{name} -ին", "account.disable_notifications": "Ծանուցումները անջատել @{name} գրառումների համար", "account.domain_blocked": "Տիրոյթը արգելափակուած է", "account.edit_profile": "Խմբագրել անձնական էջը", "account.enable_notifications": "Ծանուցել ինձ @{name} գրառումների մասին", "account.endorse": "Ցուցադրել անձնական էջում", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Հետեւել", "account.followers": "Հետեւողներ", "account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Արգելափակել եւ բողոքել", "confirmations.block.confirm": "Արգելափակել", "confirmations.block.message": "Վստա՞հ ես, որ ուզում ես արգելափակել {name}֊ին։", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Ջնջել", "confirmations.delete.message": "Վստա՞հ ես, որ ուզում ես ջնջել այս գրառումը։", "confirmations.delete_list.confirm": "Ջնջել", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 23d80823aa..195dc793e9 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -20,13 +20,16 @@ "account.block_domain": "Blokir domain {domain}", "account.blocked": "Terblokir", "account.browse_more_on_origin_server": "Lihat lebih lanjut diprofil asli", - "account.cancel_follow_request": "Batalkan permintaan ikuti", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Pesan Langsung @{name}", "account.disable_notifications": "Berhenti memberitahu saya ketika @{name} memposting", "account.domain_blocked": "Domain diblokir", "account.edit_profile": "Ubah profil", "account.enable_notifications": "Beritahu saya saat @{name} memposting", "account.endorse": "Tampilkan di profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ikuti", "account.followers": "Pengikut", "account.followers.empty": "Pengguna ini belum ada pengikut.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokir & Laporkan", "confirmations.block.confirm": "Blokir", "confirmations.block.message": "Apa anda yakin ingin memblokir {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Hapus", "confirmations.delete.message": "Apa anda yakin untuk menghapus status ini?", "confirmations.delete_list.confirm": "Hapus", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index ec0a995844..b0f3798987 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Jerata servili", + "about.contact": "Kontaktajo:", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Domeno", + "about.domain_blocks.preamble": "Mastodon generale permisas on vidar kontenajo e interagar kun uzanti de irga altra servilo en fediverso. Existas eceptioni quo facesis che ca partikulara servilo.", + "about.domain_blocks.severity": "Severeso", + "about.domain_blocks.silenced.explanation": "On generale ne vidar profili e kontenajo de ca servilo, se on ne reale trovar o voluntale juntar per sequar.", + "about.domain_blocks.silenced.title": "Limitizita", + "about.domain_blocks.suspended.explanation": "Nula informi de ca servili procedagesos o retenesos o interchanjesos, do irga interago o komuniko kun uzanti de ca servili esas neposibla.", + "about.domain_blocks.suspended.title": "Restriktita", + "about.not_available": "Ca informo ne igesis che ca servilo.", + "about.powered_by": "Necentraligita sociala ret quo povigesas da {mastodon}", + "about.rules": "Servilreguli", "account.account_note_header": "Noto", "account.add_or_remove_from_list": "Insertez o removez de listi", "account.badges.bot": "Boto", @@ -20,13 +20,16 @@ "account.block_domain": "Hide everything from {domain}", "account.blocked": "Restriktita", "account.browse_more_on_origin_server": "Videz pluse che originala profilo", - "account.cancel_follow_request": "Removez sequodemando", + "account.cancel_follow_request": "Desendez sequodemando", "account.direct": "Direct Message @{name}", "account.disable_notifications": "Cesez avizar me kande @{name} postas", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Modifikar profilo", "account.enable_notifications": "Avizez me kande @{name} postas", "account.endorse": "Traito di profilo", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sequar", "account.followers": "Sequanti", "account.followers.empty": "Nulu sequas ca uzanto til nun.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Restriktez e Raportizez", "confirmations.block.confirm": "Restriktez", "confirmations.block.message": "Ka vu certe volas restrikar {name}?", + "confirmations.cancel_follow_request.confirm": "Desendez demando", + "confirmations.cancel_follow_request.message": "Ka vu certe volas desendar vua demando di sequar {name}?", "confirmations.delete.confirm": "Efacez", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Efacez", @@ -158,18 +163,18 @@ "conversation.mark_as_read": "Markizez quale lektita", "conversation.open": "Videz konverso", "conversation.with": "Kun {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiesis", + "copypaste.copy": "Kopiez", "directory.federated": "De savita fediverso", "directory.local": "De {domain} nur", "directory.new_arrivals": "Nova venanti", "directory.recently_active": "Recenta aktivo", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Co esas maxim recenta publika posti de personi quo havas konto quo hostigesas da {domain}.", + "dismissable_banner.dismiss": "Ignorez", + "dismissable_banner.explore_links": "Ca nova rakonti parolesas da personi che ca e altra servili di necentraligita situo nun.", + "dismissable_banner.explore_statuses": "Ca posti de ca e altra servili en la necentraligita situo bezonas plu famoza che ca servilo nun.", + "dismissable_banner.explore_tags": "Ca hashtagi bezonas plu famoza inter personi che ca e altra servili di la necentraligita situo nun.", + "dismissable_banner.public_timeline": "Co esas maxim recenta publika posti de personi en ca e altra servili di la necentraligita situo quo savesas da ca servilo.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Co esas quon ol semblos tale:", "emoji_button.activity": "Ago", @@ -267,18 +272,18 @@ "home.column_settings.show_replies": "Montrar respondi", "home.hide_announcements": "Celez anunci", "home.show_announcements": "Montrez anunci", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Per konto che Mastodon, vu povas favorizar ca posto por savigar postero ke vu gratitudizar lu e retenar por la futuro.", + "interaction_modal.description.follow": "Per konto che Mastodon, vu povas sequar {name} por ganar ola posti en vua hemniuzeto.", + "interaction_modal.description.reblog": "Per konto che Mastodon, vu povas bustizar ca posti por partigar kun sua sequanti.", + "interaction_modal.description.reply": "Per konto che Mastodon, vu povas respondar ca posto.", + "interaction_modal.on_another_server": "Che diferanta servilo", + "interaction_modal.on_this_server": "Che ca servilo", + "interaction_modal.other_server_instructions": "Jus kopiez e glutinar ca URL a trovbuxo di vua favorata softwaro o retintervizajo en vua ekirsituo.", + "interaction_modal.preamble": "Pro ke Mastodon esas necentraligita, on povas uzar vua havata konto quo hostigesas altra servilo di Mastodon o konciliebla metodo se on ne havas konto hike.", + "interaction_modal.title.favourite": "Favorata posto di {name}", + "interaction_modal.title.follow": "Sequez {name}", + "interaction_modal.title.reblog": "Bustizez posto di {name}", + "interaction_modal.title.reply": "Respondez posto di {name}", "intervals.full.days": "{number, plural, one {# dio} other {# dii}}", "intervals.full.hours": "{number, plural, one {# horo} other {# hori}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}", @@ -437,8 +442,8 @@ "privacy.public.short": "Publike", "privacy.unlisted.long": "Videbla da omnu ma voluntala ne inkluzas deskovrotraiti", "privacy.unlisted.short": "Ne enlistigota", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Antea novajo ye {date}", + "privacy_policy.title": "Privatesguidilo", "refresh": "Rifreshez", "regeneration_indicator.label": "Chargas…", "regeneration_indicator.sublabel": "Vua hemniuzeto preparesas!", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index c79d3d67e9..0db7690dd7 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Netþjónar með efnisumsjón", + "about.contact": "Hafa samband:", + "about.domain_blocks.comment": "Ástæða", + "about.domain_blocks.domain": "Lén", + "about.domain_blocks.preamble": "Mastodon leyfir þér almennt að skoða og eiga við efni frá notendum frá hvaða vefþjóni sem er í vefþjónasambandinu. Þetta eru þær undantekningar sem hafa verið gerðar á þessum tiltekna vefþjóni.", + "about.domain_blocks.severity": "Mikilvægi", + "about.domain_blocks.silenced.explanation": "Þú munt almennt ekki sjá notandasnið og efni af þessum netþjóni nema þú flettir því upp sérstaklega eða veljir að fylgjast með því.", + "about.domain_blocks.silenced.title": "Takmarkað", + "about.domain_blocks.suspended.explanation": "Engin gögn frá þessum vefþjóni verða unnin, geymd eða skipst á, sem gerir samskipti við notendur frá þessum vefþjóni ómöguleg.", + "about.domain_blocks.suspended.title": "Í bið", + "about.not_available": "Þessar upplýsingar hafa ekki verið gerðar aðgengilegar á þessum netþjóni.", + "about.powered_by": "Dreihýstur samskiptamiðill keyrður með {mastodon}", + "about.rules": "Reglur netþjónsins", "account.account_note_header": "Minnispunktur", "account.add_or_remove_from_list": "Bæta við eða fjarlægja af listum", "account.badges.bot": "Vélmenni", @@ -20,13 +20,16 @@ "account.block_domain": "Útiloka lénið {domain}", "account.blocked": "Útilokaður", "account.browse_more_on_origin_server": "Skoða nánari upplýsingar á notandasniðinu", - "account.cancel_follow_request": "Hætta við beiðni um að fylgjas", + "account.cancel_follow_request": "Taka fylgjendabeiðni til baka", "account.direct": "Bein skilaboð til @{name}", "account.disable_notifications": "Hætta að láta mig vita þegar @{name} sendir inn", "account.domain_blocked": "Lén útilokað", "account.edit_profile": "Breyta notandasniði", "account.enable_notifications": "Láta mig vita þegar @{name} sendir inn", "account.endorse": "Birta á notandasniði", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Fylgjast með", "account.followers": "Fylgjendur", "account.followers.empty": "Ennþá fylgist enginn með þessum notanda.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Útiloka og kæra", "confirmations.block.confirm": "Útiloka", "confirmations.block.message": "Ertu viss um að þú viljir loka á {name}?", + "confirmations.cancel_follow_request.confirm": "Taka beiðni til baka", + "confirmations.cancel_follow_request.message": "Ertu viss um að þú viljir taka til baka beiðnina um að fylgjast með {name}?", "confirmations.delete.confirm": "Eyða", "confirmations.delete.message": "Ertu viss um að þú viljir eyða þessari færslu?", "confirmations.delete_list.confirm": "Eyða", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 44542415ee..ccaa7d3e61 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Server moderati", + "about.contact": "Contatto:", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.preamble": "Mastodon, generalmente, ti consente di visualizzare i contenuti e interagire con gli utenti da qualsiasi altro server nel fediverso. Queste sono le eccezioni che sono state fatte su questo particolare server.", + "about.domain_blocks.severity": "Gravità", + "about.domain_blocks.silenced.explanation": "Generalmente non vedrai i profili e i contenuti di questo server, a meno che tu non lo cerchi esplicitamente o che tu scelga di seguirlo.", + "about.domain_blocks.silenced.title": "Silenziato", + "about.domain_blocks.suspended.explanation": "Nessun dato proveniente da questo server verrà elaborato, conservato o scambiato, rendendo impossibile qualsiasi interazione o comunicazione con gli utenti da questo server.", + "about.domain_blocks.suspended.title": "Sospeso", + "about.not_available": "Queste informazioni non sono state rese disponibili su questo server.", + "about.powered_by": "Social media decentralizzati alimentati da {mastodon}", + "about.rules": "Regole del server", "account.account_note_header": "Le tue note sull'utente", "account.add_or_remove_from_list": "Aggiungi o togli dalle liste", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Blocca dominio {domain}", "account.blocked": "Bloccato", "account.browse_more_on_origin_server": "Sfoglia di più sul profilo originale", - "account.cancel_follow_request": "Annulla richiesta di seguire", + "account.cancel_follow_request": "Annulla la richiesta di seguire", "account.direct": "Messaggio diretto a @{name}", "account.disable_notifications": "Smetti di avvisarmi quando @{name} pubblica un post", "account.domain_blocked": "Dominio bloccato", "account.edit_profile": "Modifica profilo", "account.enable_notifications": "Avvisami quando @{name} pubblica un post", "account.endorse": "Metti in evidenza sul profilo", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Segui", "account.followers": "Follower", "account.followers.empty": "Nessuno segue ancora questo utente.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blocca & Segnala", "confirmations.block.confirm": "Blocca", "confirmations.block.message": "Sei sicuro di voler bloccare {name}?", + "confirmations.cancel_follow_request.confirm": "Annulla la richiesta", + "confirmations.cancel_follow_request.message": "Sei sicuro di voler annullare la tua richiesta per seguire {name}?", "confirmations.delete.confirm": "Cancella", "confirmations.delete.message": "Sei sicuro di voler cancellare questo post?", "confirmations.delete_list.confirm": "Cancella", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index d2745aa5ba..f48f295516 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.blocks": "制限中のサーバー", + "about.contact": "連絡先", + "about.domain_blocks.comment": "制限理由", + "about.domain_blocks.domain": "ドメイン", + "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。", + "about.domain_blocks.severity": "重大性", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.silenced.title": "制限", + "about.domain_blocks.suspended.explanation": "これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません。", + "about.domain_blocks.suspended.title": "停止済み", + "about.not_available": "この情報はこのサーバーでは利用できません。", + "about.powered_by": "{mastodon}による分散型ソーシャルメディア", + "about.rules": "サーバーのルール", "account.account_note_header": "メモ", "account.add_or_remove_from_list": "リストから追加または外す", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "{domain}全体をブロック", "account.blocked": "ブロック済み", "account.browse_more_on_origin_server": "リモートで表示", - "account.cancel_follow_request": "フォローリクエストを取り消す", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name}さんにダイレクトメッセージ", "account.disable_notifications": "@{name}さんの投稿時の通知を停止", "account.domain_blocked": "ドメインブロック中", "account.edit_profile": "プロフィール編集", "account.enable_notifications": "@{name}さんの投稿時に通知", "account.endorse": "プロフィールで紹介する", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "フォロー", "account.followers": "フォロワー", "account.followers.empty": "まだ誰もフォローしていません。", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "ブロックし通報", "confirmations.block.confirm": "ブロック", "confirmations.block.message": "本当に{name}さんをブロックしますか?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "削除", "confirmations.delete.message": "本当に削除しますか?", "confirmations.delete_list.confirm": "削除", @@ -167,7 +172,7 @@ "dismissable_banner.community_timeline": "これらは{domain}がホストしている人たちの最新の公開投稿です。", "dismissable_banner.dismiss": "閉じる", "dismissable_banner.explore_links": "これらのニュース記事は現在分散型ネットワークの他のサーバーの人たちに話されています。", - "dismissable_banner.explore_statuses": "分散化ネットワーク内の他のサーバーのこれらの投稿は現在このサーバー上で注目されています。", + "dismissable_banner.explore_statuses": "分散型ネットワーク内の他のサーバーのこれらの投稿は現在このサーバー上で注目されています。", "dismissable_banner.explore_tags": "これらのハッシュタグは現在分散型ネットワークの他のサーバーの人たちに話されています。", "dismissable_banner.public_timeline": "これらの投稿はこのサーバーが知っている分散型ネットワークの他のサーバーの人たちの最新の公開投稿です。", "embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。", @@ -591,7 +596,7 @@ "timeline_hint.resources.followers": "フォロワー", "timeline_hint.resources.follows": "フォロー", "timeline_hint.resources.statuses": "以前の投稿", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "過去{days, plural, one {{days}日} other {{days}日}}に{count, plural, one {{counter}人} other {{counter} 人}}", "trends.trending_now": "トレンドタグ", "ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。", "units.short.billion": "{count}B", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index b33ed4fc5d..a66d93f009 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -20,13 +20,16 @@ "account.block_domain": "დაიმალოს ყველაფერი დომენიდან {domain}", "account.blocked": "დაიბლოკა", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "პირდაპირი წერილი @{name}-ს", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "დომენი დამალულია", "account.edit_profile": "პროფილის ცვლილება", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "გამორჩევა პროფილზე", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "გაყოლა", "account.followers": "მიმდევრები", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "ბლოკი", "confirmations.block.message": "დარწმუნებული ხართ, გსურთ დაბლოკოთ {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "გაუქმება", "confirmations.delete.message": "დარწმუნებული ხართ, გსურთ გააუქმოთ ეს სტატუსი?", "confirmations.delete_list.confirm": "გაუქმება", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 09b6333cd8..b5b8cb3c66 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -20,13 +20,16 @@ "account.block_domain": "Ffer kra i d-yekkan seg {domain}", "account.blocked": "Yettusewḥel", "account.browse_more_on_origin_server": "Snirem ugar deg umeɣnu aneẓli", - "account.cancel_follow_request": "Sefsex asuter n uḍfar", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Izen usrid i @{name}", "account.disable_notifications": "Ḥbes ur iyi-d-ttazen ara ilɣa mi ara d-isuffeɣ @{name}", "account.domain_blocked": "Taɣult yeffren", "account.edit_profile": "Ẓreg amaɣnu", "account.enable_notifications": "Azen-iyi-d ilɣa mi ara d-isuffeɣ @{name}", "account.endorse": "Welleh fell-as deg umaɣnu-inek", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ḍfer", "account.followers": "Imeḍfaren", "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.", @@ -46,13 +49,13 @@ "account.mute": "Sgugem @{name}", "account.mute_notifications": "Sgugem tilɣa sγur @{name}", "account.muted": "Yettwasgugem", - "account.posts": "Tijewwaqin", - "account.posts_with_replies": "Tijewwaqin akked tririyin", + "account.posts": "Tisuffaɣ", + "account.posts_with_replies": "Tisuffaɣ d tririyin", "account.report": "Cetki ɣef @{name}", "account.requested": "Di laɛḍil ad yettwaqbel. Ssit i wakken ad yefsex usuter n uḍfar", "account.share": "Bḍu amaɣnu n @{name}", "account.show_reblogs": "Ssken-d inebḍa n @{name}", - "account.statuses_counter": "{count, plural, one {{counter} ajewwaq} other {{counter} ijewwaqen}}", + "account.statuses_counter": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}", "account.unblock": "Serreḥ i @{name}", "account.unblock_domain": "Ssken-d {domain}", "account.unblock_short": "Unblock", @@ -82,11 +85,11 @@ "bundle_modal_error.close": "Mdel", "bundle_modal_error.message": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", "bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen", - "column.about": "About", + "column.about": "Γef", "column.blocks": "Imiḍanen yettusḥebsen", "column.bookmarks": "Ticraḍ", "column.community": "Tasuddemt tadigant", - "column.direct": "Direct messages", + "column.direct": "Iznan usriden", "column.directory": "Inig deg imaɣnuten", "column.domain_blocks": "Taɣulin yeffren", "column.favourites": "Ismenyifen", @@ -108,8 +111,8 @@ "community.column_settings.local_only": "Adigan kan", "community.column_settings.media_only": "Allal n teywalt kan", "community.column_settings.remote_only": "Anmeggag kan", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Beddel tutlayt", + "compose.language.search": "Nadi tutlayin …", "compose_form.direct_message_warning_learn_more": "Issin ugar", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", @@ -127,14 +130,16 @@ "compose_form.save_changes": "Sekles ibeddilen", "compose_form.sensitive.hide": "Creḍ allal n teywalt d anafri", "compose_form.sensitive.marked": "Allal n teywalt yettwacreḍ d anafri", - "compose_form.sensitive.unmarked": "Allal n teywalt ur yettwacreḍ ara d anafri", - "compose_form.spoiler.marked": "Aḍris yeffer deffir n walɣu", - "compose_form.spoiler.unmarked": "Aḍris ur yettwaffer ara", - "compose_form.spoiler_placeholder": "Aru alɣu-inek da", + "compose_form.sensitive.unmarked": "{count, plural, one {Amidya ur yettwacreḍ ara d anafri} other {Imidyaten ur ttwacreḍen ara d inafriyen}}", + "compose_form.spoiler.marked": "Kkes aḍris yettwaffren deffir n walɣu", + "compose_form.spoiler.unmarked": "Rnu aḍris yettwaffren deffir n walɣu", + "compose_form.spoiler_placeholder": "Aru alɣu-inek·inem da", "confirmation_modal.cancel": "Sefsex", "confirmations.block.block_and_report": "Sewḥel & sewɛed", "confirmations.block.confirm": "Sewḥel", "confirmations.block.message": "Tebγiḍ s tidet ad tesḥebseḍ {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Kkes", "confirmations.delete.message": "Tebɣiḍ s tidet ad tekkseḍ tasuffeɣt-agi?", "confirmations.delete_list.confirm": "Kkes", @@ -159,7 +164,7 @@ "conversation.open": "Ssken adiwenni", "conversation.with": "Akked {names}", "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copy": "Nγel", "directory.federated": "Deg fedivers yettwasnen", "directory.local": "Seg {domain} kan", "directory.new_arrivals": "Imaynuten id yewḍen", @@ -216,7 +221,7 @@ "errors.unexpected_crash.report_issue": "Mmel ugur", "explore.search_results": "Search results", "explore.suggested_follows": "I kečč·kem", - "explore.title": "Explore", + "explore.title": "Snirem", "explore.trending_links": "News", "explore.trending_statuses": "Tisuffaɣ", "explore.trending_tags": "Ihacṭagen", @@ -344,13 +349,13 @@ "mute_modal.duration": "Tanzagt", "mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?", "mute_modal.indefinite": "Ur yettwasbadu ara", - "navigation_bar.about": "About", + "navigation_bar.about": "Γef", "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Imseqdacen yettusḥebsen", "navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.community_timeline": "Tasuddemt tadigant", "navigation_bar.compose": "Aru tajewwiqt tamaynut", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Iznan usridden", "navigation_bar.discover": "Ẓer", "navigation_bar.domain_blocks": "Tiɣula yeffren", "navigation_bar.edit_profile": "Ẓreg amaɣnu", @@ -359,7 +364,7 @@ "navigation_bar.filters": "Awalen i yettwasgugmen", "navigation_bar.follow_requests": "Isuturen n teḍfeṛt", "navigation_bar.follows_and_followers": "Imeḍfaṛen akked wid i teṭṭafaṛeḍ", - "navigation_bar.info": "About", + "navigation_bar.info": "Γef", "navigation_bar.keyboard_shortcuts": "Inegzumen n unasiw", "navigation_bar.lists": "Tibdarin", "navigation_bar.logout": "Ffeɣ", @@ -515,7 +520,7 @@ "server_banner.active_users": "active users", "server_banner.administered_by": "Administered by:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", + "server_banner.learn_more": "Issin ugar", "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", "sign_in_banner.sign_in": "Sign in", @@ -532,7 +537,7 @@ "status.direct": "Izen usrid i @{name}", "status.edit": "Ẓreg", "status.edited": "Tettwaẓreg deg {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}", "status.embed": "Seddu", "status.favourite": "Rnu ɣer yismenyifen", "status.filter": "Filter this post", @@ -568,13 +573,13 @@ "status.show_more_all": "Ẓerr ugar lebda", "status.show_original": "Show original", "status.show_thread": "Ssken-d lxiḍ", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translate": "Suqel", + "status.translated_from": "Yettwasuqel seg {lang}", "status.uncached_media_warning": "Ulac-it", "status.unmute_conversation": "Kkes asgugem n udiwenni", "status.unpin": "Kkes asenteḍ seg umaɣnu", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "Sekles ibeddilen", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Sefsex asumer", "suggestions.header": "Ahat ad tcelgeḍ deg…", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 9d086ef2c5..7017467b31 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -20,13 +20,16 @@ "account.block_domain": "Домендегі барлығын бұғатта {domain}", "account.blocked": "Бұғатталды", "account.browse_more_on_origin_server": "Толығырақ оригинал профилінде қара", - "account.cancel_follow_request": "Жазылуға сұранымды қайтару", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Жеке хат @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Домен жабық", "account.edit_profile": "Профильді өңдеу", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Профильде рекомендеу", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Жазылу", "account.followers": "Оқырмандар", "account.followers.empty": "Әлі ешкім жазылмаған.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Блок және Шағым", "confirmations.block.confirm": "Бұғаттау", "confirmations.block.message": "{name} атты қолданушыны бұғаттайтыныңызға сенімдісіз бе?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Өшіру", "confirmations.delete.message": "Бұл жазбаны өшіресіз бе?", "confirmations.delete_list.confirm": "Өшіру", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 2856c9ffec..d266d34926 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -20,13 +20,16 @@ "account.block_domain": "Hide everything from {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "ಹಿಂಬಾಲಿಸಿ", "account.followers": "ಹಿಂಬಾಲಕರು", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index ab5d538ab4..34c86130f6 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -1,17 +1,17 @@ { "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.contact": "연락처:", + "about.domain_blocks.comment": "사유", + "about.domain_blocks.domain": "도메인", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "심각도", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.silenced.title": "제한됨", + "about.domain_blocks.suspended.explanation": "이 서버의 어떤 데이터도 처리되거나, 저장 되거나 공유되지 않고, 이 서버의 어떤 유저와도 상호작용 하거나 대화할 수 없습니다.", + "about.domain_blocks.suspended.title": "정지됨", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.powered_by": "{mastodon}에 의해 구동되는 분산화된 소셜 미디어", + "about.rules": "서버 규칙", "account.account_note_header": "노트", "account.add_or_remove_from_list": "리스트에 추가 혹은 삭제", "account.badges.bot": "봇", @@ -27,6 +27,9 @@ "account.edit_profile": "프로필 편집", "account.enable_notifications": "@{name} 의 게시물 알림 켜기", "account.endorse": "프로필에 추천하기", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "팔로우", "account.followers": "팔로워", "account.followers.empty": "아직 아무도 이 사용자를 팔로우하고 있지 않습니다.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "차단하고 신고하기", "confirmations.block.confirm": "차단", "confirmations.block.message": "정말로 {name}를 차단하시겠습니까?", + "confirmations.cancel_follow_request.confirm": "요청 무시", + "confirmations.cancel_follow_request.message": "정말 {name}님에 대한 팔로우 요청을 취소하시겠습니까?", "confirmations.delete.confirm": "삭제", "confirmations.delete.message": "정말로 이 게시물을 삭제하시겠습니까?", "confirmations.delete_list.confirm": "삭제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index d0359f8775..c6ecd3c95a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Rajekarên çavdêrkirî", + "about.contact": "Têkilî:", + "about.domain_blocks.comment": "Sedem", + "about.domain_blocks.domain": "Navper", + "about.domain_blocks.preamble": "Mastodon bi gelemperî dihêle ku tu naverokê bibînî û bi bikarhênerên ji rajekareke din a li fendiverse re têkilî dayne. Ev awaretyên ku li ser vê rajekara taybetî hatine çêkirin ev in.", + "about.domain_blocks.severity": "Asta girîngiyê", + "about.domain_blocks.silenced.explanation": "Heye ku tu bi awayekî vekirî lê negerî an jî bi şopandinê hilnebijêrî, tu yêbi giştî profîl û naverok ji vê rajekarê nebînî.", + "about.domain_blocks.silenced.title": "Sînorkirî", + "about.domain_blocks.suspended.explanation": "Dê tu daneya ji van rajekaran neyê berhev kirin, tomarkirin an jî guhertin, ku têkilî an danûstendinek bi bikarhênerên van rajekaran re tune dike.", + "about.domain_blocks.suspended.title": "Hatiye rawestandin", + "about.not_available": "Ev zanyarî li ser vê rajekarê nehatine peydakirin.", + "about.powered_by": "Medyaya civakî ya nenavendî bi hêzdariya {mastodon}", + "about.rules": "Rêbazên rajekar", "account.account_note_header": "Nîşe", "account.add_or_remove_from_list": "Tevlî bike an rake ji rêzokê", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "{domain} navpar asteng bike", "account.blocked": "Astengkirî", "account.browse_more_on_origin_server": "Li pelên resen bêhtir bigere", - "account.cancel_follow_request": "Daxwaza şopandinê rake", + "account.cancel_follow_request": "Daxwaza şopandinê vekişîne", "account.direct": "Peyamekê bişîne @{name}", "account.disable_notifications": "Êdî min agahdar neke gava @{name} diweşîne", "account.domain_blocked": "Navper hate astengkirin", "account.edit_profile": "Profîlê serrast bike", "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne", "account.endorse": "Taybetiyên li ser profîl", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Bişopîne", "account.followers": "Şopîner", "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Asteng bike & ragihîne", "confirmations.block.confirm": "Asteng bike", "confirmations.block.message": "Ma tu dixwazî ku {name} asteng bikî?", + "confirmations.cancel_follow_request.confirm": "Daxwazê vekişîne", + "confirmations.cancel_follow_request.message": "Tu dixwazî ​​daxwaza xwe ya şopandina {name} vekşînî?", "confirmations.delete.confirm": "Jê bibe", "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?", "confirmations.delete_list.confirm": "Jê bibe", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 1049c1c948..a1c19b1838 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -20,13 +20,16 @@ "account.block_domain": "Lettya gorfarth {domain}", "account.blocked": "Lettys", "account.browse_more_on_origin_server": "Peuri moy y'n profil derowel", - "account.cancel_follow_request": "Dilea govyn holya", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Messach didro dhe @{name}", "account.disable_notifications": "Hedhi ow gwarnya pan wra @{name} postya", "account.domain_blocked": "Gorfarth lettys", "account.edit_profile": "Golegi profil", "account.enable_notifications": "Gwra ow gwarnya pan wra @{name} postya", "account.endorse": "Diskwedhes yn profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Holya", "account.followers": "Holyoryon", "account.followers.empty": "Ny wra nagonan holya'n devnydhyer ma hwath.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Lettya & Reportya", "confirmations.block.confirm": "Lettya", "confirmations.block.message": "Owgh hwi sur a vynnes lettya {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Dilea", "confirmations.delete.message": "Owgh hwi sur a vynnes dilea'n post ma?", "confirmations.delete_list.confirm": "Dilea", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 54530b85bd..bdb5b43d5d 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -20,13 +20,16 @@ "account.block_domain": "Hide everything from {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sekti", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 8bf21b1ccc..acf4911b59 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderētie serveri", + "about.contact": "Kontakts:", + "about.domain_blocks.comment": "Iemesls", + "about.domain_blocks.domain": "Domēns", + "about.domain_blocks.preamble": "Mastodon parasti ļauj apskatīt saturu un mijiedarboties ar lietotājiem no jebkura cita federācijas servera. Šie ir izņēmumi, kas veikti šajā konkrētajā serverī.", + "about.domain_blocks.severity": "Nozīmīgums", + "about.domain_blocks.silenced.explanation": "Parasti tu neredzēsi profilus un saturu no šī servera, ja vien tu nepārprotami izvēlēsies to pārskatīt vai sekot.", + "about.domain_blocks.silenced.title": "Ierobežotās", + "about.domain_blocks.suspended.explanation": "Nekādi dati no šī servera netiks apstrādāti, uzglabāti vai apmainīti, padarot neiespējamu mijiedarbību vai saziņu ar lietotājiem no šī servera.", + "about.domain_blocks.suspended.title": "Apturētie", + "about.not_available": "Šī informācija šajā serverī nav bijusi pieejama.", + "about.powered_by": "Decentralizētu sociālo multividi nodrošina {mastodon}", + "about.rules": "Servera noteikumi", "account.account_note_header": "Piezīme", "account.add_or_remove_from_list": "Pievienot vai noņemt no saraksta", "account.badges.bot": "Bots", @@ -20,13 +20,16 @@ "account.block_domain": "Bloķēt domēnu {domain}", "account.blocked": "Bloķēts", "account.browse_more_on_origin_server": "Pārlūkot vairāk sākotnējā profilā", - "account.cancel_follow_request": "Atcelt sekošanas pieprasījumu", + "account.cancel_follow_request": "Atsaukt sekošanas pieprasījumu", "account.direct": "Privāta ziņa @{name}", "account.disable_notifications": "Pārtraukt man paziņot, kad @{name} publicē ierakstu", "account.domain_blocked": "Domēns ir bloķēts", "account.edit_profile": "Rediģēt profilu", "account.enable_notifications": "Man paziņot, kad @{name} publicē ierakstu", "account.endorse": "Izcelts profilā", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sekot", "account.followers": "Sekotāji", "account.followers.empty": "Šim lietotājam patreiz nav sekotāju.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloķēt un ziņot", "confirmations.block.confirm": "Bloķēt", "confirmations.block.message": "Vai tiešām vēlies bloķēt lietotāju {name}?", + "confirmations.cancel_follow_request.confirm": "Atsaukt pieprasījumu", + "confirmations.cancel_follow_request.message": "Vai tiešām vēlies atsaukt pieprasījumu sekot {name}?", "confirmations.delete.confirm": "Dzēst", "confirmations.delete.message": "Vai tiešām vēlaties dzēst šo ziņu?", "confirmations.delete_list.confirm": "Dzēst", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index a5081c82be..dde2f6d582 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -20,13 +20,16 @@ "account.block_domain": "Сокријај се од {domain}", "account.blocked": "Блокиран", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Одкажи барање за следење", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Директна порана @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Скриен домен", "account.edit_profile": "Измени профил", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Карактеристики на профилот", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Следи", "account.followers": "Следбеници", "account.followers.empty": "Никој не го следи овој корисник сеуште.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Блокирај и Пријави", "confirmations.block.confirm": "Блокирај", "confirmations.block.message": "Сигурни сте дека дека го блокирате {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Избриши", "confirmations.delete.message": "Сигурни сте дека го бришите статусот?", "confirmations.delete_list.confirm": "Избриши", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 977cd8c5b6..b19475c4b0 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} എന്ന മേഖല തടയുക", "account.blocked": "തടഞ്ഞു", "account.browse_more_on_origin_server": "യഥാർത്ഥ പ്രൊഫൈലിലേക്ക് പോവുക", - "account.cancel_follow_request": "പിന്തുടരാനുള്ള അപേക്ഷ നിരസിക്കുക", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name}-ന്(ക്ക്) നേരിട്ട് സന്ദേശം അയക്കുക", "account.disable_notifications": "@{name} പോസ്റ്റുചെയ്യുന്നത് എന്നെ അറിയിക്കുന്നത് നിർത്തുക", "account.domain_blocked": "മേഖല തടഞ്ഞു", "account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", "account.enable_notifications": "@{name} പോസ്റ്റ് ചെയ്യുമ്പോൾ എന്നെ അറിയിക്കുക", "account.endorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കുക", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "പിന്തുടരുക", "account.followers": "പിന്തുടരുന്നവർ", "account.followers.empty": "ഈ ഉപയോക്താവിനെ ആരും ഇതുവരെ പിന്തുടരുന്നില്ല.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "തടയുകയും റിപ്പോർട്ടും ചെയ്യുക", "confirmations.block.confirm": "തടയുക", "confirmations.block.message": "{name} തടയാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "മായ്ക്കുക", "confirmations.delete.message": "ഈ ടൂട്ട് ഇല്ലാതാക്കണം എന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?", "confirmations.delete_list.confirm": "മായ്ക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 7c129ddb6e..4d62bf0d41 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} पासून सर्व लपवा", "account.blocked": "ब्लॉक केले आहे", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "अनुयायी होण्याची विनंती रद्द करा", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "थेट संदेश @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "प्रोफाइल एडिट करा", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "अनुयायी व्हा", "account.followers": "अनुयायी", "account.followers.empty": "ह्या वापरकर्त्याचा आतापर्यंत कोणी अनुयायी नाही.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "हटवा", "confirmations.delete.message": "हे स्टेटस तुम्हाला नक्की हटवायचंय?", "confirmations.delete_list.confirm": "हटवा", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 4cedca54b6..0615b64dcf 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -20,13 +20,16 @@ "account.block_domain": "Sekat domain {domain}", "account.blocked": "Disekat", "account.browse_more_on_origin_server": "Layari selebihnya di profil asal", - "account.cancel_follow_request": "Batalkan permintaan ikutan", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Mesej terus @{name}", "account.disable_notifications": "Berhenti memaklumi saya apabila @{name} mengirim hantaran", "account.domain_blocked": "Domain disekat", "account.edit_profile": "Sunting profil", "account.enable_notifications": "Maklumi saya apabila @{name} mengirim hantaran", "account.endorse": "Tampilkan di profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ikuti", "account.followers": "Pengikut", "account.followers.empty": "Belum ada yang mengikuti pengguna ini.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Sekat & Lapor", "confirmations.block.confirm": "Sekat", "confirmations.block.message": "Adakah anda pasti anda ingin menyekat {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Padam", "confirmations.delete.message": "Adakah anda pasti anda ingin memadam hantaran ini?", "confirmations.delete_list.confirm": "Padam", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index f922463b82..77fe2703cf 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "Gemodereerde servers", "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.comment": "Reden", + "about.domain_blocks.domain": "Domein", + "about.domain_blocks.preamble": "In het algemeen kun je met Mastodon berichten ontvangen van, en interactie hebben met gebruikers van elke server in de fediverse. Dit zijn de uitzonderingen die op deze specifieke server gelden.", + "about.domain_blocks.severity": "Zwaarte", + "about.domain_blocks.silenced.explanation": "In het algemeen zie je geen berichten en accounts van deze server, tenzij je berichten expliciet opzoekt of ervoor kiest om een account van deze server te volgen.", + "about.domain_blocks.silenced.title": "Beperkt", + "about.domain_blocks.suspended.explanation": "Er worden geen gegevens van deze server verwerkt, opgeslagen of uitgewisseld, wat interactie of communicatie met gebruikers van deze server onmogelijk maakt.", + "about.domain_blocks.suspended.title": "Opgeschort", + "about.not_available": "Deze informatie is door deze server niet openbaar gemaakt.", + "about.powered_by": "Gedecentraliseerde sociale media, mogelijk gemaakt door {mastodon}", + "about.rules": "Serverregels", "account.account_note_header": "Opmerking", "account.add_or_remove_from_list": "Toevoegen of verwijderen vanuit lijsten", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Alles van {domain} verbergen", "account.blocked": "Geblokkeerd", "account.browse_more_on_origin_server": "Meer op het originele profiel bekijken", - "account.cancel_follow_request": "Volgverzoek annuleren", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name} een direct bericht sturen", "account.disable_notifications": "Geef geen melding meer wanneer @{name} een bericht plaatst", "account.domain_blocked": "Domein geblokkeerd", "account.edit_profile": "Profiel bewerken", "account.enable_notifications": "Geef een melding wanneer @{name} een bericht plaatst", "account.endorse": "Op profiel weergeven", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Volgen", "account.followers": "Volgers", "account.followers.empty": "Niemand volgt nog deze gebruiker.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokkeren en rapporteren", "confirmations.block.confirm": "Blokkeren", "confirmations.block.message": "Weet je het zeker dat je {name} wilt blokkeren?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Verwijderen", "confirmations.delete.message": "Weet je het zeker dat je dit bericht wilt verwijderen?", "confirmations.delete_list.confirm": "Verwijderen", @@ -164,12 +169,12 @@ "directory.local": "Alleen {domain}", "directory.new_arrivals": "Nieuwe accounts", "directory.recently_active": "Onlangs actief", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Dit zijn de meest recente openbare berichten van accounts op {domain}. Je kunt onder 'instellingen > voorkeuren > overig' kiezen welke talen je wilt zien.", + "dismissable_banner.dismiss": "Sluiten", + "dismissable_banner.explore_links": "Deze nieuwsberichten winnen aan populariteit op deze en andere servers binnen het decentrale netwerk.", + "dismissable_banner.explore_statuses": "Deze berichten winnen aan populariteit op deze en andere servers binnen het decentrale netwerk.", + "dismissable_banner.explore_tags": "Deze hashtags winnen aan populariteit op deze en andere servers binnen het decentrale netwerk.", + "dismissable_banner.public_timeline": "Dit zijn de meest recente openbare berichten van accounts op deze en andere servers binnen het decentrale netwerk. Je kunt onder 'instellingen > voorkeuren > overig' kiezen welke talen je wilt zien.", "embed.instructions": "Embed dit bericht op jouw website door de onderstaande code te kopiëren.", "embed.preview": "Zo komt het eruit te zien:", "emoji_button.activity": "Activiteiten", @@ -591,7 +596,7 @@ "timeline_hint.resources.followers": "Volgers", "timeline_hint.resources.follows": "Volgend", "timeline_hint.resources.statuses": "Oudere berichten", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persoon} other {{counter} mensen}} {days, plural, one {in het afgelopen etmaal} other {in de afgelopen {days} dagen}}", "trends.trending_now": "Huidige trends", "ui.beforeunload": "Je concept gaat verloren wanneer je Mastodon verlaat.", "units.short.billion": "{count} mrd.", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index c366b9a5e9..1c6a2f5354 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -20,13 +20,16 @@ "account.block_domain": "Skjul alt frå {domain}", "account.blocked": "Blokkert", "account.browse_more_on_origin_server": "Sjå gjennom meir på den opphavlege profilen", - "account.cancel_follow_request": "Fjern fylgjeførespurnad", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Send melding til @{name}", "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", "account.domain_blocked": "Domenet er gøymt", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg", "account.endorse": "Framhev på profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Fylg", "account.followers": "Fylgjarar", "account.followers.empty": "Ingen fylgjer denne brukaren enno.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokker & rapporter", "confirmations.block.confirm": "Blokker", "confirmations.block.message": "Er du sikker på at du vil blokkera {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Slett", "confirmations.delete.message": "Er du sikker på at du vil sletta denne statusen?", "confirmations.delete_list.confirm": "Slett", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 322b023a97..936e8d5b4e 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -20,13 +20,16 @@ "account.block_domain": "Skjul alt fra {domain}", "account.blocked": "Blokkert", "account.browse_more_on_origin_server": "Bla mer på den opprinnelige profilen", - "account.cancel_follow_request": "Avbryt følge forespørsel", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct Message @{name}", "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", "account.domain_blocked": "Domenet skjult", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg", "account.endorse": "Vis frem på profilen", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Følg", "account.followers": "Følgere", "account.followers.empty": "Ingen følger denne brukeren ennå.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokker og rapporter", "confirmations.block.confirm": "Blokkèr", "confirmations.block.message": "Er du sikker på at du vil blokkere {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Slett", "confirmations.delete.message": "Er du sikker på at du vil slette denne statusen?", "confirmations.delete_list.confirm": "Slett", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index a30a6e9e9b..f5cbc468ec 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -20,13 +20,16 @@ "account.block_domain": "Tot amagar del domeni {domain}", "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Navigar sul perfil original", - "account.cancel_follow_request": "Anullar la demanda de seguiment", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Escriure un MP a @{name}", "account.disable_notifications": "Quitar de m’avisar quand @{name} publica quicòm", "account.domain_blocked": "Domeni amagat", "account.edit_profile": "Modificar lo perfil", "account.enable_notifications": "M’avisar quand @{name} publica quicòm", "account.endorse": "Mostrar pel perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sègre", "account.followers": "Seguidors", "account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blocar e senhalar", "confirmations.block.confirm": "Blocar", "confirmations.block.message": "Volètz vertadièrament blocar {name} ?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Escafar", "confirmations.delete.message": "Volètz vertadièrament escafar l’estatut ?", "confirmations.delete_list.confirm": "Suprimir", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 12134bbd1c..ed1f9c3ae6 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 2f3ed70d1b..51a69b2c5a 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Serwery moderowane", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Powód", + "about.domain_blocks.domain": "Domena", + "about.domain_blocks.preamble": "Normalnie Mastodon pozwala ci przeglądać i reagować na treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. To są wyjątki, które zostały stworzone na tym konkretnym serwerze.", + "about.domain_blocks.severity": "Priorytet", + "about.domain_blocks.silenced.explanation": "Zazwyczaj nie zobaczysz profili i treści z tego serwera, chyba że wyraźnie go poszukasz lub zdecydujesz się go obserwować.", + "about.domain_blocks.silenced.title": "Ograniczone", + "about.domain_blocks.suspended.explanation": "Żadne dane z tego serwera nie będą przetwarzane, przechowywane lub wymieniane, co uniemożliwia jakąkolwiek interakcję lub komunikację z użytkownikami z tego serwera.", + "about.domain_blocks.suspended.title": "Zawieszono", + "about.not_available": "Ta informacja nie została udostępniona na tym serwerze.", + "about.powered_by": "Zdecentralizowane media społecznościowe w technologii {mastodon}", + "about.rules": "Regulamin serwera", "account.account_note_header": "Notatka", "account.add_or_remove_from_list": "Dodaj lub usuń z list", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Blokuj wszystko z {domain}", "account.blocked": "Zablokowany(-a)", "account.browse_more_on_origin_server": "Zobacz więcej na oryginalnym profilu", - "account.cancel_follow_request": "Zrezygnuj z prośby o możliwość śledzenia", + "account.cancel_follow_request": "Wycofaj żądanie obserwowania", "account.direct": "Wyślij wiadomość bezpośrednią do @{name}", "account.disable_notifications": "Przestań powiadamiać mnie o wpisach @{name}", "account.domain_blocked": "Ukryto domenę", "account.edit_profile": "Edytuj profil", "account.enable_notifications": "Powiadamiaj mnie o wpisach @{name}", "account.endorse": "Wyróżnij na profilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Śledź", "account.followers": "Śledzący", "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Zablokuj i zgłoś", "confirmations.block.confirm": "Zablokuj", "confirmations.block.message": "Czy na pewno chcesz zablokować {name}?", + "confirmations.cancel_follow_request.confirm": "Wycofaj żądanie", + "confirmations.cancel_follow_request.message": "Czy na pewno chcesz wycofać zgłoszenie śledzenia {name}?", "confirmations.delete.confirm": "Usuń", "confirmations.delete.message": "Czy na pewno chcesz usunąć ten wpis?", "confirmations.delete_list.confirm": "Usuń", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index b7b30e7c4e..72cfa4ffa2 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -20,13 +20,16 @@ "account.block_domain": "Bloquear domínio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Veja mais no perfil original", - "account.cancel_follow_request": "Cancelar solicitação", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Enviar toot direto para @{name}", "account.disable_notifications": "Cancelar notificações de @{name}", "account.domain_blocked": "Domínio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar novos toots de @{name}", "account.endorse": "Recomendar", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Nada aqui.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear e denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "Você tem certeza de que deseja bloquear {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Excluir", "confirmations.delete.message": "Você tem certeza de que deseja excluir este toot?", "confirmations.delete_list.confirm": "Excluir", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 8a22282598..1fd0a92581 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Servidores moderados", + "about.contact": "Contacto:", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Domínio", + "about.domain_blocks.preamble": "Mastodon geralmente permite que veja e interaja com o conteúdo de utilizadores de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", + "about.domain_blocks.severity": "Severidade", + "about.domain_blocks.silenced.explanation": "Geralmente não verá perfis e conteúdo deste servidor, a menos que os procure explicitamente ou opte por os seguir.", + "about.domain_blocks.silenced.title": "Limitados", + "about.domain_blocks.suspended.explanation": "Nenhum dado dessas instâncias será processado, armazenado ou trocado, tornando qualquer interação ou comunicação com os utilizadores dessas instâncias impossível.", + "about.domain_blocks.suspended.title": "Supensos", + "about.not_available": "Esta informação não foi disponibilizada neste servidor.", + "about.powered_by": "Rede social descentralizada baseada no {mastodon}", + "about.rules": "Regras da instância", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Adicionar ou remover das listas", "account.badges.bot": "Robô", @@ -20,13 +20,16 @@ "account.block_domain": "Esconder tudo do domínio {domain}", "account.blocked": "Bloqueado(a)", "account.browse_more_on_origin_server": "Encontrar mais no perfil original", - "account.cancel_follow_request": "Cancelar pedido para seguir", + "account.cancel_follow_request": "Retirar pedido para seguir", "account.direct": "Enviar mensagem direta para @{name}", "account.disable_notifications": "Parar de me notificar das publicações de @{name}", "account.domain_blocked": "Domínio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar-me das publicações de @{name}", "account.endorse": "Destacar no perfil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Ainda ninguém segue este utilizador.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloquear e Denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "De certeza que queres bloquear {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar pedido", + "confirmations.cancel_follow_request.message": "Tem a certeza que pretende retirar o pedido para seguir {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "De certeza que quer eliminar esta publicação?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index bf52a776f4..a3be7fb59b 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -20,13 +20,16 @@ "account.block_domain": "Blochează domeniul {domain}", "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Vezi mai multe pe profilul original", - "account.cancel_follow_request": "Anulează cererea de abonare", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Trimite-i un mesaj direct lui @{name}", "account.disable_notifications": "Nu îmi mai trimite notificări când postează @{name}", "account.domain_blocked": "Domeniu blocat", "account.edit_profile": "Modifică profilul", "account.enable_notifications": "Trimite-mi o notificare când postează @{name}", "account.endorse": "Promovează pe profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Abonează-te", "account.followers": "Abonați", "account.followers.empty": "Acest utilizator încă nu are abonați.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blochează și raportează", "confirmations.block.confirm": "Blochează", "confirmations.block.message": "Ești sigur că vrei să blochezi pe {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Elimină", "confirmations.delete.message": "Ești sigur că vrei să elimini această postare?", "confirmations.delete_list.confirm": "Elimină", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 582d1c1fd3..db6a266113 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.blocks": "Модерируемые серверы", + "about.contact": "Контакты:", + "about.domain_blocks.comment": "Причина", + "about.domain_blocks.domain": "Домен", + "about.domain_blocks.preamble": "Mastodon обычно позволяет просматривать содержимое и взаимодействовать с другими пользователями любых серверов в Федиверсе. Вот исключения, сделанные конкретно для этого сервера.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.powered_by": "Децентрализованные социальные сети на базе {mastodon}", + "about.rules": "Правила сервера", "account.account_note_header": "Заметка", "account.add_or_remove_from_list": "Управление списками", "account.badges.bot": "Бот", @@ -20,13 +20,16 @@ "account.block_domain": "Заблокировать {domain}", "account.blocked": "Заблокирован(а)", "account.browse_more_on_origin_server": "Посмотреть в оригинальном профиле", - "account.cancel_follow_request": "Отменить подписку", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Написать @{name}", "account.disable_notifications": "Не уведомлять о постах от @{name}", "account.domain_blocked": "Домен заблокирован", "account.edit_profile": "Редактировать профиль", "account.enable_notifications": "Уведомлять о постах от @{name}", "account.endorse": "Рекомендовать в профиле", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Подписаться", "account.followers": "Подписчики", "account.followers.empty": "На этого пользователя пока никто не подписан.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Заблокировать и пожаловаться", "confirmations.block.confirm": "Заблокировать", "confirmations.block.message": "Вы уверены, что хотите заблокировать {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Удалить", "confirmations.delete.message": "Вы уверены, что хотите удалить этот пост?", "confirmations.delete_list.confirm": "Удалить", @@ -164,11 +169,11 @@ "directory.local": "Только с {domain}", "directory.new_arrivals": "Новички", "directory.recently_active": "Недавно активные", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.community_timeline": "Это самые последние публичные сообщения от людей, чьи учетные записи размещены в {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_tags": "Эти хэштеги привлекают людей на этом и других серверах децентрализованной сети прямо сейчас.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:", "embed.preview": "Так это будет выглядеть:", @@ -512,7 +517,7 @@ "search_results.title": "Поиск {q}", "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", + "server_banner.active_users": "активные пользователи", "server_banner.administered_by": "Управляется:", "server_banner.introduction": "{domain} является частью децентрализованной социальной сети, основанной на {mastodon}.", "server_banner.learn_more": "Узнать больше", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 2295d51a2d..db7613b276 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -20,13 +20,16 @@ "account.block_domain": "अवरुध्यतां प्रदेशः {domain}", "account.blocked": "अवरुद्धम्", "account.browse_more_on_origin_server": "अधिकं मूलव्यक्तिगतविवरणे दृश्यताम्", - "account.cancel_follow_request": "अनुसरणानुरोधो नश्यताम्", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "प्रत्यक्षसन्देशः @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "प्रदेशो निषिद्धः", "account.edit_profile": "सम्पाद्यताम्", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "व्यक्तिगतविवरणे वैशिष्ट्यम्", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "अनुस्रियताम्", "account.followers": "अनुसर्तारः", "account.followers.empty": "नाऽनुसर्तारो वर्तन्ते", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "अवरुध्य आविद्यताम्", "confirmations.block.confirm": "निषेधः", "confirmations.block.message": "निश्चयेनाऽवरोधो विधेयः {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "नश्यताम्", "confirmations.delete.message": "निश्चयेन दौत्यमिदं नश्यताम्?", "confirmations.delete_list.confirm": "नश्यताम्", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index b31cd28090..7a534f689c 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -20,13 +20,16 @@ "account.block_domain": "Bloca su domìniu {domain}", "account.blocked": "Blocadu", "account.browse_more_on_origin_server": "Esplora de prus in su profilu originale", - "account.cancel_follow_request": "Annulla rechesta de sighidura", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Messàgiu deretu a @{name}", "account.disable_notifications": "Non mi notìfiches prus cando @{name} pùblichet messàgios", "account.domain_blocked": "Domìniu blocadu", "account.edit_profile": "Modìfica profilu", "account.enable_notifications": "Notìfica·mi cando @{name} pùblicat messàgios", "account.endorse": "Cussìgia in su profilu tuo", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sighi", "account.followers": "Sighiduras", "account.followers.empty": "Nemos sighit ancora custa persone.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bloca e signala", "confirmations.block.confirm": "Bloca", "confirmations.block.message": "Seguru chi boles blocare {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Cantzella", "confirmations.delete.message": "Seguru chi boles cantzellare custa publicatzione?", "confirmations.delete_list.confirm": "Cantzella", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 1010dc6afc..e18b0abe4d 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} වසම අවහිර කරන්න", "account.blocked": "අවහිර කර ඇත", "account.browse_more_on_origin_server": "මුල් පැතිකඩෙහි තවත් පිරික්සන්න", - "account.cancel_follow_request": "අනුගමන ඉල්ලීම ඉවතලන්න", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name} සෘජු පණිවිඩය", "account.disable_notifications": "@{name} පළ කරන විට මට දැනුම් නොදෙන්න", "account.domain_blocked": "වසම අවහිර කර ඇත", "account.edit_profile": "පැතිකඩ සංස්කරණය", "account.enable_notifications": "@{name} පළ කරන විට මට දැනුම් දෙන්න", "account.endorse": "පැතිකඩෙහි විශේෂාංගය", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "අනුගමනය", "account.followers": "අනුගාමිකයින්", "account.followers.empty": "කිසිවෙක් අනුගමනය කර නැත.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "අවහිර කර වාර්තා කරන්න", "confirmations.block.confirm": "අවහිර", "confirmations.block.message": "ඔබට {name} අවහිර කිරීමට වුවමනා ද?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "මකන්න", "confirmations.delete.message": "ඔබට මෙම තත්ත්වය මැකීමට අවශ්‍ය බව විශ්වාසද?", "confirmations.delete_list.confirm": "මකන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index bd71ec54d2..199bce6911 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -20,13 +20,16 @@ "account.block_domain": "Ukry všetko z {domain}", "account.blocked": "Blokovaný/á", "account.browse_more_on_origin_server": "Prehľadávaj viac na pôvodnom profile", - "account.cancel_follow_request": "Zruš žiadosť o sledovanie", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Priama správa pre @{name}", "account.disable_notifications": "Prestaň oznamovať, keď má príspevky @{name}", "account.domain_blocked": "Doména ukrytá", "account.edit_profile": "Uprav profil", "account.enable_notifications": "Oboznamuj ma, keď má @{name} príspevky", "account.endorse": "Zobrazuj na profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Nasleduj", "account.followers": "Sledujúci", "account.followers.empty": "Tohto používateľa ešte nikto nenásleduje.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Zablokuj a nahlás", "confirmations.block.confirm": "Blokuj", "confirmations.block.message": "Si si istý/á, že chceš blokovať {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Vymaž", "confirmations.delete.message": "Si si istý/á, že chceš vymazať túto správu?", "confirmations.delete_list.confirm": "Vymaž", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 7006bfb6fc..98e113ea12 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderirani strežniki", + "about.contact": "Stik:", + "about.domain_blocks.comment": "Razlog", + "about.domain_blocks.domain": "Domena", + "about.domain_blocks.preamble": "Mastodon vam splošno omogoča ogled vsebin in interakcijo z uporabniki iz vseh drugih strežnikov v fediverzumu. To so izjeme, opravljene na tem strežniku.", + "about.domain_blocks.severity": "Resnost", + "about.domain_blocks.silenced.explanation": "V splošnem ne boste videli profilov in vsebin s tega strežnika, če jih eksplicino ne poiščete ali nanje naročite s sledenjem.", + "about.domain_blocks.silenced.title": "Omejeno", + "about.domain_blocks.suspended.explanation": "Nobeni podatki s tega strežnika ne bodo obdelani, shranjeni ali izmenjani, zaradi česar je nemogoča kakršna koli interakcija ali komunikacija z uporabniki s tega strežnika.", + "about.domain_blocks.suspended.title": "Suspendiran", + "about.not_available": "Ti podatki še niso na voljo na tem strežniku.", + "about.powered_by": "Decentraliziran družabni medij, ki ga poganja {mastodon}", + "about.rules": "Pravila strežnika", "account.account_note_header": "Opombe", "account.add_or_remove_from_list": "Dodaj ali odstrani s seznamov", "account.badges.bot": "Robot", @@ -20,13 +20,16 @@ "account.block_domain": "Blokiraj domeno {domain}", "account.blocked": "Blokirano", "account.browse_more_on_origin_server": "Brskaj več po izvirnem profilu", - "account.cancel_follow_request": "Prekliči prošnjo za sledenje", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Neposredno sporočilo @{name}", "account.disable_notifications": "Ne obveščaj me več, ko ima @{name} novo objavo", "account.domain_blocked": "Blokirana domena", "account.edit_profile": "Uredi profil", "account.enable_notifications": "Obvesti me, ko ima @{name} novo objavo", "account.endorse": "Izpostavi v profilu", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sledi", "account.followers": "Sledilci", "account.followers.empty": "Nihče ne sledi temu uporabniku.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blokiraj in Prijavi", "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Ali ste prepričani, da želite blokirati {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Izbriši", "confirmations.delete.message": "Ali ste prepričani, da želite izbrisati to objavo?", "confirmations.delete_list.confirm": "Izbriši", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 608fc54dbf..1bb0b16ac8 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Shërbyes të moderuar", + "about.contact": "Kontakt:", + "about.domain_blocks.comment": "Arsye", + "about.domain_blocks.domain": "Përkatësi", + "about.domain_blocks.preamble": "Mastodon-i ju lë përgjithësisht të shihni lëndë prej përdoruesish dhe të ndërveproni me ta nga cilido shërbyes tjetër qofshin në fedivers. Ka përjashtime që janë bërë në këtë shërbyes të dhënë.", + "about.domain_blocks.severity": "Rëndësi", + "about.domain_blocks.silenced.explanation": "Përgjithësisht s’do të shihni profile dhe lëndë nga ky shërbyes, veç në i kërkofshi shprehimisht apo zgjidhni të bëhet kjo, duke i ndjekur.", + "about.domain_blocks.silenced.title": "E kufizuar", + "about.domain_blocks.suspended.explanation": "S’do të përpunohen, depozitohen apo shkëmbehen të dhëna të këtij shërbyesi, duke e bërë të pamundur çfarëdo ndërveprimi apo komunikimi me përdorues nga ky shërbyes.", + "about.domain_blocks.suspended.title": "E pezulluar", + "about.not_available": "Ky informacion nuk jepet në këtë shërbyes.", + "about.powered_by": "Media shoqërore e decentralizuar, bazuar në {mastodon}", + "about.rules": "Rregulla shërbyesi", "account.account_note_header": "Shënim", "account.add_or_remove_from_list": "Shtoni ose Hiqni prej listash", "account.badges.bot": "Robot", @@ -20,13 +20,16 @@ "account.block_domain": "Blloko përkatësinë {domain}", "account.blocked": "E bllokuar", "account.browse_more_on_origin_server": "Shfletoni më tepër rreth profilit origjinal", - "account.cancel_follow_request": "Anulo kërkesë ndjekjeje", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Mesazh i drejtpërdrejtë për @{name}", "account.disable_notifications": "Resht së njoftuari mua, kur poston @{name}", "account.domain_blocked": "Përkatësia u bllokua", "account.edit_profile": "Përpunoni profilin", "account.enable_notifications": "Njoftomë, kur poston @{name}", "account.endorse": "Pasqyrojeni në profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Ndiqeni", "account.followers": "Ndjekës", "account.followers.empty": "Këtë përdorues ende s’e ndjek kush.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Bllokojeni & Raportojeni", "confirmations.block.confirm": "Bllokoje", "confirmations.block.message": "Jeni i sigurt se doni të bllokohet {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Fshije", "confirmations.delete.message": "Jeni i sigurt se doni të fshihet kjo gjendje?", "confirmations.delete_list.confirm": "Fshije", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 838e543d14..7a01383209 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -20,13 +20,16 @@ "account.block_domain": "Sakrij sve sa domena {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct Message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain hidden", "account.edit_profile": "Izmeni profil", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Zaprati", "account.followers": "Pratioca", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Da li ste sigurni da želite da blokirate korisnika {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Obriši", "confirmations.delete.message": "Da li ste sigurni da želite obrišete ovaj status?", "confirmations.delete_list.confirm": "Obriši", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 5cfa1aa5a3..6140f5a5a9 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -20,13 +20,16 @@ "account.block_domain": "Сакриј све са домена {domain}", "account.blocked": "Блокиран", "account.browse_more_on_origin_server": "Погледајте још на оригиналном налогу", - "account.cancel_follow_request": "Поништи захтеве за праћење", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Директна порука @{name}", "account.disable_notifications": "Прекини обавештавање за објаве корисника @{name}", "account.domain_blocked": "Домен сакривен", "account.edit_profile": "Уреди налог", "account.enable_notifications": "Обавести ме када @{name} објави", "account.endorse": "Истакнуто на налогу", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Запрати", "account.followers": "Пратиоци", "account.followers.empty": "Тренутно нико не прати овог корисника.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Блокирај и Пријави", "confirmations.block.confirm": "Блокирај", "confirmations.block.message": "Да ли сте сигурни да желите да блокирате корисника {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Обриши", "confirmations.delete.message": "Да ли сте сигурни да желите обришете овај статус?", "confirmations.delete_list.confirm": "Обриши", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 47f8b90cba..5e054b1f22 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -20,13 +20,16 @@ "account.block_domain": "Dölj allt från {domain}", "account.blocked": "Blockerad", "account.browse_more_on_origin_server": "Läs mer på original profilen", - "account.cancel_follow_request": "Avbryt följarförfrågan", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Skicka ett direktmeddelande till @{name}", "account.disable_notifications": "Sluta meddela mig när @{name} tutar", "account.domain_blocked": "Domän dold", "account.edit_profile": "Redigera profil", "account.enable_notifications": "Meddela mig när @{name} tutar", "account.endorse": "Visa på profil", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Följ", "account.followers": "Följare", "account.followers.empty": "Ingen följer denna användare än.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Blockera & rapportera", "confirmations.block.confirm": "Blockera", "confirmations.block.message": "Är du säker på att du vill blockera {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Radera", "confirmations.delete.message": "Är du säker på att du vill radera denna status?", "confirmations.delete_list.confirm": "Radera", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 12134bbd1c..ed1f9c3ae6 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 859d22627f..99d97fef60 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} யில் இருந்து வரும் எல்லாவற்றையும் மறை", "account.blocked": "முடக்கப்பட்டது", "account.browse_more_on_origin_server": "மேலும் உலாவ சுயவிவரத்திற்குச் செல்க", - "account.cancel_follow_request": "பின்தொடரும் கோரிக்கையை நிராகரி", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "நேரடி செய்தி @{name}", "account.disable_notifications": "@{name} பதிவிட்டல் எனக்கு தெரியபடுத்த வேண்டாம்", "account.domain_blocked": "மறைக்கப்பட்டத் தளங்கள்", "account.edit_profile": "சுயவிவரத்தை மாற்று", "account.enable_notifications": "@{name} பதிவிட்டல் எனக்குத் தெரியப்படுத்தவும்", "account.endorse": "சுயவிவரத்தில் வெளிப்படுத்து", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "பின்தொடர்", "account.followers": "பின்தொடர்பவர்கள்", "account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "தடுத்துப் புகாரளி", "confirmations.block.confirm": "தடு", "confirmations.block.message": "{name}-ஐ நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "நீக்கு", "confirmations.delete.message": "இப்பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", "confirmations.delete_list.confirm": "நீக்கு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 30489828e9..94fc0f72ed 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index f50ffc9d40..5b1c22f922 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} నుంచి అన్నీ దాచిపెట్టు", "account.blocked": "బ్లాక్ అయినవి", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name}కు నేరుగా సందేశం పంపు", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "డొమైన్ దాచిపెట్టబడినది", "account.edit_profile": "ప్రొఫైల్ని సవరించండి", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "ప్రొఫైల్లో చూపించు", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "అనుసరించు", "account.followers": "అనుచరులు", "account.followers.empty": "ఈ వినియోగదారుడిని ఇంకా ఎవరూ అనుసరించడంలేదు.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "బ్లాక్ చేయి", "confirmations.block.message": "మీరు ఖచ్చితంగా {name}ని బ్లాక్ చేయాలనుకుంటున్నారా?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "తొలగించు", "confirmations.delete.message": "మీరు ఖచ్చితంగా ఈ స్టేటస్ ని తొలగించాలనుకుంటున్నారా?", "confirmations.delete_list.confirm": "తొలగించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index a99156dcd5..aba6b2c002 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.blocks": "เซิร์ฟเวอร์ที่มีการควบคุม", + "about.contact": "ติดต่อ:", + "about.domain_blocks.comment": "เหตุผล", + "about.domain_blocks.domain": "โดเมน", + "about.domain_blocks.preamble": "โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ", + "about.domain_blocks.severity": "ความรุนแรง", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.silenced.title": "จำกัดอยู่", + "about.domain_blocks.suspended.explanation": "จะไม่ประมวลผล จัดเก็บ หรือแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์นี้ ทำให้การโต้ตอบหรือการสื่อสารใด ๆ กับผู้ใช้จากเซิร์ฟเวอร์นี้เป็นไปไม่ได้", + "about.domain_blocks.suspended.title": "ระงับอยู่", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.powered_by": "สื่อสังคมแบบกระจายศูนย์ที่ขับเคลื่อนโดย {mastodon}", + "about.rules": "กฎของเซิร์ฟเวอร์", "account.account_note_header": "หมายเหตุ", "account.add_or_remove_from_list": "เพิ่มหรือเอาออกจากรายการ", "account.badges.bot": "บอต", @@ -20,13 +20,16 @@ "account.block_domain": "ปิดกั้นโดเมน {domain}", "account.blocked": "ปิดกั้นอยู่", "account.browse_more_on_origin_server": "เรียกดูเพิ่มเติมในโปรไฟล์ดั้งเดิม", - "account.cancel_follow_request": "ยกเลิกคำขอติดตาม", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "ส่งข้อความโดยตรงถึง @{name}", "account.disable_notifications": "หยุดแจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.domain_blocked": "ปิดกั้นโดเมนอยู่", "account.edit_profile": "แก้ไขโปรไฟล์", "account.enable_notifications": "แจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.endorse": "แนะนำในโปรไฟล์", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "ติดตาม", "account.followers": "ผู้ติดตาม", "account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "ปิดกั้นแล้วรายงาน", "confirmations.block.confirm": "ปิดกั้น", "confirmations.block.message": "คุณแน่ใจหรือไม่ว่าต้องการปิดกั้น {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "ลบ", "confirmations.delete.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?", "confirmations.delete_list.confirm": "ลบ", @@ -245,7 +250,7 @@ "generic.saved": "บันทึกแล้ว", "getting_started.directory": "ไดเรกทอรี", "getting_started.documentation": "เอกสารประกอบ", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon เป็นซอฟต์แวร์เสรีและโอเพนซอร์ส คุณสามารถดูโค้ดต้นฉบับ มีส่วนร่วม หรือรายงานปัญหาได้ที่ {repository}", "getting_started.heading": "เริ่มต้นใช้งาน", "getting_started.invite": "เชิญผู้คน", "getting_started.privacy_policy": "นโยบายความเป็นส่วนตัว", @@ -369,7 +374,7 @@ "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", "navigation_bar.security": "ความปลอดภัย", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "คุณจำเป็นต้องลงชื่อเข้าเพื่อเข้าถึงทรัพยากรนี้", "notification.admin.report": "{name} ได้รายงาน {target}", "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", @@ -437,7 +442,7 @@ "privacy.public.short": "สาธารณะ", "privacy.unlisted.long": "ปรากฏแก่ทั้งหมด แต่เลือกไม่รับคุณลักษณะการค้นพบ", "privacy.unlisted.short": "ไม่อยู่ในรายการ", - "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.last_updated": "อัปเดตล่าสุดเมื่อ {date}", "privacy_policy.title": "นโยบายความเป็นส่วนตัว", "refresh": "รีเฟรช", "regeneration_indicator.label": "กำลังโหลด…", @@ -514,7 +519,7 @@ "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "ผู้ใช้ที่ใช้งานอยู่", "server_banner.administered_by": "ดูแลโดย:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.introduction": "{domain} เป็นส่วนหนึ่งของเครือข่ายสังคมแบบกระจายศูนย์ที่ขับเคลื่อนโดย {mastodon}", "server_banner.learn_more": "เรียนรู้เพิ่มเติม", "server_banner.server_stats": "สถิติเซิร์ฟเวอร์:", "sign_in_banner.create_account": "สร้างบัญชี", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index a13bb945d0..a00d05b2ee 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Denetlenen sunucular", + "about.contact": "İletişim:", + "about.domain_blocks.comment": "Gerekçe", + "about.domain_blocks.domain": "Alan adı", + "about.domain_blocks.preamble": "Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır.", + "about.domain_blocks.severity": "Önem derecesi", + "about.domain_blocks.silenced.explanation": "Açık bir şekilde aramadığınız veya takip ederek abone olmadığınız sürece, bu sunucudaki profilleri veya içerikleri genelde göremeyeceksiniz.", + "about.domain_blocks.silenced.title": "Sınırlı", + "about.domain_blocks.suspended.explanation": "Bu sunucudaki hiçbir veri işlenmeyecek, saklanmayacak veya değiş tokuş edilmeyecektir, dolayısıyla bu sunucudaki kullanıcılarla herhangi bir etkileşim veya iletişim imkansız olacaktır.", + "about.domain_blocks.suspended.title": "Askıya alındı", + "about.not_available": "Bu sunucuda bu bilgi kullanıma sunulmadı.", + "about.powered_by": "{mastodon} destekli ademi merkeziyetçi sosyal medya", + "about.rules": "Sunucu kuralları", "account.account_note_header": "Not", "account.add_or_remove_from_list": "Listelere ekle veya kaldır", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "{domain} alan adını engelle", "account.blocked": "Engellendi", "account.browse_more_on_origin_server": "Orijinal profilde daha fazlasına göz atın", - "account.cancel_follow_request": "Takip isteğini iptal et", + "account.cancel_follow_request": "Takip isteğini geri çek", "account.direct": "@{name} adlı kişiye mesaj gönder", "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", "account.domain_blocked": "Alan adı engellendi", "account.edit_profile": "Profili düzenle", "account.enable_notifications": "@{name}'in gönderilerini bana bildir", "account.endorse": "Profilimde öne çıkar", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Takip et", "account.followers": "Takipçi", "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Engelle ve Bildir", "confirmations.block.confirm": "Engelle", "confirmations.block.message": "{name} adlı kullanıcıyı engellemek istediğinden emin misin?", + "confirmations.cancel_follow_request.confirm": "İsteği geri çek", + "confirmations.cancel_follow_request.message": "{name} kişisini takip etme isteğini geri çekmek istediğinden emin misin?", "confirmations.delete.confirm": "Sil", "confirmations.delete.message": "Bu tootu silmek istediğinden emin misin?", "confirmations.delete_list.confirm": "Sil", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index bca39d2b6f..4ca7e4ad4d 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} доменын блоклау", "account.blocked": "Блокланган", "account.browse_more_on_origin_server": "Тулырак оригинал профилендә карап була", - "account.cancel_follow_request": "Язылуга сорауны бетерү", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "@{name} өчен яңа хат", "account.disable_notifications": "@{name} язулары өчен белдерүләр сүндерү", "account.domain_blocked": "Домен блокланган", "account.edit_profile": "Профильны үзгәртү", "account.enable_notifications": "@{name} язулары өчен белдерүләр яндыру", "account.endorse": "Профильдә рекомендацияләү", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Языл", "account.followers": "Язылучылар", "account.followers.empty": "Әле беркем дә язылмаган.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Блоклау", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Бетерү", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Бетерү", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 12134bbd1c..ed1f9c3ae6 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -20,13 +20,16 @@ "account.block_domain": "Block domain {domain}", "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Follow", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "Delete", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 62f03a8a0e..db900b0029 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Модеровані сервери", + "about.contact": "Kонтакти:", + "about.domain_blocks.comment": "Причина", + "about.domain_blocks.domain": "Домен", + "about.domain_blocks.preamble": "Mastodon зазвичай дозволяє вам взаємодіяти з користувачами будь-яких серверів у Федіверсі та переглядати їх вміст. Ось винятки, які було зроблено на цьому конкретному сервері.", + "about.domain_blocks.severity": "Важливість", + "about.domain_blocks.silenced.explanation": "Ви загалом не побачите профілі та вміст цього сервера, якщо тільки Ви не обрали його явним або не обрали його наступним чином.", + "about.domain_blocks.silenced.title": "Обмежені", + "about.domain_blocks.suspended.explanation": "Дані з цього сервера не обробляться, зберігаються чи обмінюються, взаємодію чи спілкування з користувачами цього сервера неможливі.", + "about.domain_blocks.suspended.title": "Призупинено", + "about.not_available": "Ця інформація не доступна на цьому сервері.", + "about.powered_by": "Децентралізовані соціальні мережі від {mastodon}", + "about.rules": "Правила сервера", "account.account_note_header": "Примітка", "account.add_or_remove_from_list": "Додати або видалити зі списків", "account.badges.bot": "Бот", @@ -20,13 +20,16 @@ "account.block_domain": "Заблокувати домен {domain}", "account.blocked": "Заблоковані", "account.browse_more_on_origin_server": "Переглянути більше в оригінальному профілі", - "account.cancel_follow_request": "Скасувати запит на підписку", + "account.cancel_follow_request": "Відкликати запит на стеження", "account.direct": "Надіслати пряме повідомлення @{name}", "account.disable_notifications": "Не повідомляти мене про дописи @{name}", "account.domain_blocked": "Домен заблоковано", "account.edit_profile": "Редагувати профіль", "account.enable_notifications": "Повідомляти мене про дописи @{name}", "account.endorse": "Рекомендувати у профілі", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Підписатися", "account.followers": "Підписники", "account.followers.empty": "Ніхто ще не підписаний на цього користувача.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Заблокувати та поскаржитися", "confirmations.block.confirm": "Заблокувати", "confirmations.block.message": "Ви впевнені, що хочете заблокувати {name}?", + "confirmations.cancel_follow_request.confirm": "Відкликати запит", + "confirmations.cancel_follow_request.message": "Ви дійсно бажаєте відкликати запит на стеження за {name}?", "confirmations.delete.confirm": "Видалити", "confirmations.delete.message": "Ви впевнені, що хочете видалити цей допис?", "confirmations.delete_list.confirm": "Видалити", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 60b34b792c..8be3a12a37 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -20,13 +20,16 @@ "account.block_domain": "{domain} سے سب چھپائیں", "account.blocked": "مسدود کردہ", "account.browse_more_on_origin_server": "اصل پروفائل پر مزید براؤز کریں", - "account.cancel_follow_request": "درخواستِ پیروی منسوخ کریں", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "راست پیغام @{name}", "account.disable_notifications": "جب @{name} پوسٹ کرے تو مجھ مطلع نہ کریں", "account.domain_blocked": "پوشیدہ ڈومین", "account.edit_profile": "مشخص ترمیم کریں", "account.enable_notifications": "جب @{name} پوسٹ کرے تو مجھ مطلع کریں", "account.endorse": "مشکص پر نمایاں کریں", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "پیروی کریں", "account.followers": "پیروکار", "account.followers.empty": "\"ہنوز اس صارف کی کوئی پیروی نہیں کرتا\".", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "شکایت کریں اور بلاک کریں", "confirmations.block.confirm": "بلاک", "confirmations.block.message": "کیا واقعی آپ {name} کو بلاک کرنا چاہتے ہیں؟", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "ڈیلیٹ", "confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete_list.confirm": "ڈیلیٹ", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index d3068b6c97..79f68b9e43 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Giới hạn chung", + "about.contact": "Liên lạc:", + "about.domain_blocks.comment": "Lý do", + "about.domain_blocks.domain": "Máy chủ", + "about.domain_blocks.preamble": "Mastodon cho phép bạn tương tác nội dung và giao tiếp với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.", + "about.domain_blocks.severity": "Mức độ", + "about.domain_blocks.silenced.explanation": "Nói chung, bạn sẽ không thấy người dùng và nội dung từ máy chủ này, trừ khi bạn tự tìm kiếm hoặc tự theo dõi.", + "about.domain_blocks.silenced.title": "Hạn chế", + "about.domain_blocks.suspended.explanation": "Dữ liệu từ máy chủ này sẽ không được xử lý, lưu trữ hoặc trao đổi. Mọi tương tác hoặc giao tiếp với người dùng từ máy chủ này đều bị cấm.", + "about.domain_blocks.suspended.title": "Vô hiệu hóa", + "about.not_available": "Máy chủ này chưa cung cấp thông tin.", + "about.powered_by": "Mạng xã hội liên hợp {mastodon}", + "about.rules": "Quy tắc máy chủ", "account.account_note_header": "Ghi chú", "account.add_or_remove_from_list": "Thêm hoặc Xóa khỏi danh sách", "account.badges.bot": "Bot", @@ -20,13 +20,16 @@ "account.block_domain": "Ẩn mọi thứ từ {domain}", "account.blocked": "Đã chặn", "account.browse_more_on_origin_server": "Truy cập trang của người này", - "account.cancel_follow_request": "Hủy yêu cầu theo dõi", + "account.cancel_follow_request": "Thu hồi yêu cầu theo dõi", "account.direct": "Nhắn riêng @{name}", "account.disable_notifications": "Tắt thông báo khi @{name} đăng tút", "account.domain_blocked": "Người đã chặn", "account.edit_profile": "Sửa hồ sơ", "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Theo dõi", "account.followers": "Người theo dõi", "account.followers.empty": "Chưa có người theo dõi nào.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Chặn & Báo cáo", "confirmations.block.confirm": "Chặn", "confirmations.block.message": "Bạn có thật sự muốn chặn {name}?", + "confirmations.cancel_follow_request.confirm": "Thu hồi yêu cầu", + "confirmations.cancel_follow_request.message": "Bạn có chắc muốn thu hồi yêu cầu theo dõi của bạn với {name}?", "confirmations.delete.confirm": "Xóa bỏ", "confirmations.delete.message": "Bạn thật sự muốn xóa tút này?", "confirmations.delete_list.confirm": "Xóa bỏ", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 305f21b0d4..629f1b2691 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -20,13 +20,16 @@ "account.block_domain": "ⴳⴷⵍ ⵉⴳⵔ {domain}", "account.blocked": "ⵉⵜⵜⵓⴳⴷⵍ", "account.browse_more_on_origin_server": "ⵙⵜⴰⵔⴰ ⵓⴳⴳⴰⵔ ⴳ ⵉⴼⵔⵙ ⴰⵏⵚⵍⵉ", - "account.cancel_follow_request": "ⵙⵔ ⵜⵓⵜⵔⴰ ⵏ ⵓⴹⴼⵕ", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "ⵜⵓⵣⵉⵏⵜ ⵜⵓⵙⵔⵉⴷⵜ @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "ⵉⵜⵜⵓⴳⴷⵍ ⵉⴳⵔ", "account.edit_profile": "ⵙⵏⴼⵍ ⵉⴼⵔⵙ", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "ⴹⴼⵕ", "account.followers": "ⵉⵎⴹⴼⴰⵕⵏ", "account.followers.empty": "No one follows this user yet.", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "ⴳⴷⵍ", "confirmations.block.message": "ⵉⵙ ⵏⵉⵜ ⵜⵅⵙⴷ ⴰⴷ ⵜⴳⴷⵍⴷ {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "ⴽⴽⵙ", "confirmations.delete.message": "ⵉⵙ ⵏⵉⵜ ⵜⵅⵙⴷ ⴰⴷ ⵜⴽⴽⵙⴷ ⵜⴰⵥⵕⵉⴳⵜ ⴰ?", "confirmations.delete_list.confirm": "ⴽⴽⵙ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 97d097c4cd..b63b1e0fcb 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -20,13 +20,16 @@ "account.block_domain": "屏蔽 {domain} 实例", "account.blocked": "已屏蔽", "account.browse_more_on_origin_server": "在原始个人资料页面上浏览详情", - "account.cancel_follow_request": "取消关注请求", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "发送私信给 @{name}", "account.disable_notifications": "当 @{name} 发嘟时不要通知我", "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发嘟时通知我", "account.endorse": "在个人资料中推荐此用户", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "关注", "account.followers": "关注者", "account.followers.empty": "目前无人关注此用户。", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "屏蔽与举报", "confirmations.block.confirm": "屏蔽", "confirmations.block.message": "你确定要屏蔽 {name} 吗?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "删除", "confirmations.delete.message": "你确定要删除这条嘟文吗?", "confirmations.delete_list.confirm": "删除", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index f02fc90748..3575d876bf 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -20,13 +20,16 @@ "account.block_domain": "封鎖來自 {domain} 的一切文章", "account.blocked": "已封鎖", "account.browse_more_on_origin_server": "瀏覽原服務站上的個人資料頁", - "account.cancel_follow_request": "取消關注請求", + "account.cancel_follow_request": "Withdraw follow request", "account.direct": "私訊 @{name}", "account.disable_notifications": "如果 @{name} 發文請不要再通知我", "account.domain_blocked": "服務站被封鎖", "account.edit_profile": "修改個人資料", "account.enable_notifications": "如果 @{name} 發文請通知我", "account.endorse": "在個人資料頁推薦對方", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "關注", "account.followers": "關注者", "account.followers.empty": "尚未有人關注這位使用者。", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "封鎖並檢舉", "confirmations.block.confirm": "封鎖", "confirmations.block.message": "你確定要封鎖{name}嗎?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "刪除", "confirmations.delete.message": "你確定要刪除這文章嗎?", "confirmations.delete_list.confirm": "刪除", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 69725fe259..8161aa013d 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "受管制的伺服器", + "about.contact": "聯絡我們:", + "about.domain_blocks.comment": "原因", + "about.domain_blocks.domain": "網域", + "about.domain_blocks.preamble": "Mastodon 一般來說允許您閱讀並和聯邦宇宙上任何伺服器的使用者互動。這些伺服器是這個站台設下的例外。", + "about.domain_blocks.severity": "嚴重性", + "about.domain_blocks.silenced.explanation": "一般來說您不會看到來自這個伺服器的個人檔案和內容,除非您明確地打開或著跟隨此個人檔案。", + "about.domain_blocks.silenced.title": "受限的", + "about.domain_blocks.suspended.explanation": "來自此伺服器的資料都不會被處理、儲存或交換,也無法和此伺服器上的使用者互動與溝通。", + "about.domain_blocks.suspended.title": "已停權", + "about.not_available": "這個資料於此伺服器上不可存取。", + "about.powered_by": "由 {mastodon} 提供之去中心化社群媒體", + "about.rules": "伺服器規則", "account.account_note_header": "備註", "account.add_or_remove_from_list": "從列表中新增或移除", "account.badges.bot": "機器人", @@ -20,13 +20,16 @@ "account.block_domain": "封鎖來自 {domain} 網域的所有內容", "account.blocked": "已封鎖", "account.browse_more_on_origin_server": "於該伺服器的個人檔案頁上瀏覽更多", - "account.cancel_follow_request": "取消跟隨請求", + "account.cancel_follow_request": "收回跟隨請求", "account.direct": "傳私訊給 @{name}", "account.disable_notifications": "取消來自 @{name} 嘟文的通知", "account.domain_blocked": "已封鎖網域", "account.edit_profile": "編輯個人檔案", "account.enable_notifications": "當 @{name} 嘟文時通知我", "account.endorse": "在個人檔案推薦對方", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "跟隨", "account.followers": "跟隨者", "account.followers.empty": "尚未有人跟隨這位使用者。", @@ -135,6 +138,8 @@ "confirmations.block.block_and_report": "封鎖並檢舉", "confirmations.block.confirm": "封鎖", "confirmations.block.message": "您確定要封鎖 {name} ?", + "confirmations.cancel_follow_request.confirm": "收回請求", + "confirmations.cancel_follow_request.message": "您確定要收回跟隨 {name} 的請求嗎?", "confirmations.delete.confirm": "刪除", "confirmations.delete.message": "您確定要刪除這則嘟文?", "confirmations.delete_list.confirm": "刪除", diff --git a/config/locales/af.yml b/config/locales/af.yml index cb8c4cf18f..de85a69515 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -2,7 +2,6 @@ af: about: contact_unavailable: NVT - documentation: Dokumentasie hosted_on: Mastodon gehuisves op %{domain} admin: domain_blocks: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 0caa22ebec..bb98ccb08a 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -2,18 +2,10 @@ ar: about: about_mastodon_html: 'شبكة التواصل الإجتماعية المستقبَليّة: مِن دون إعلانات ، غير خاضعة لرقابة الشركات ، تصميم أخلاقي ولامركزية! بياناتكم مِلك لكم مع ماستدون!' - api: واجهة برمجة التطبيقات - apps: تطبيقات الأجهزة المحمولة contact_missing: لم يتم تعيينه contact_unavailable: غير متوفر - documentation: الدليل hosted_on: ماستدون مُستضاف على %{domain} - source_code: الشفرة المصدرية - what_is_mastodon: ما هو ماستدون ؟ accounts: - choices_html: 'توصيات %{name}:' - endorsements_hint: يمكنك التوصية بالأشخاص الذين تتابعهم من واجهة الويب، وسيظهرون هنا. - featured_tags_hint: يمكنك عرض وسوم محددة سيتم عرضها هنا. follow: اتبع followers: few: متابِعون @@ -24,15 +16,9 @@ ar: zero: متابِعون following: مُتابَع instance_actor_flash: هذا الحساب هو ممثل افتراضي يُستخدم لتمثيل الخادم نفسه ولا يمثل أي مستخدم فردي، يُستخدم لأغراض الاتحاد ولا ينبغي حظره. - joined: انضم·ت في %{date} last_active: آخر نشاط link_verified_on: تم التحقق مِن مالك هذا الرابط بتاريخ %{date} - media: الوسائط - moved_html: "%{name} إنتقلَ إلى %{new_profile_link}:" - network_hidden: إنّ المعطيات غير متوفرة nothing_here: لا يوجد أي شيء هنا! - people_followed_by: الأشخاص الذين يتبعهم %{name} - people_who_follow: الأشخاص الذين يتبعون %{name} pin_errors: following: يجب أن تكون مِن متابعي حساب الشخص الذي تريد إبرازه posts: @@ -43,12 +29,6 @@ ar: two: منشورَيْن zero: منشور posts_tab_heading: المنشورات - posts_with_replies: المنشورات والردود - roles: - bot: روبوت - group: فريق - unavailable: الصفحة التعريفية غير متوفرة - unfollow: إلغاء المتابعة admin: account_actions: action: تنفيذ الإجراء @@ -940,9 +920,6 @@ ar: new: title: إضافة عامل تصفية جديد footer: - developers: المطورون - more: المزيد… - resources: الموارد trending_now: المتداولة الآن generic: all: الكل @@ -979,7 +956,6 @@ ar: following: قائمة المستخدمين المتبوعين muting: قائمة الكتم upload: تحميل - in_memoriam_html: في ذكرى. invites: delete: تعطيل expired: انتهت صلاحيتها @@ -1159,22 +1135,7 @@ ar: remove_selected_follows: الغي متابعة المستخدمين الذين اخترتهم status: حالة الحساب remote_follow: - acct: قم بإدخال عنوان حسابك username@domain الذي من خلاله تود النشاط missing_resource: تعذر العثور على رابط التحويل المطلوب الخاص بحسابك - no_account_html: أليس عندك حساب بعدُ ؟ يُمْكنك التسجيل مِن هنا - proceed: أكمل المتابعة - prompt: 'إنك بصدد متابعة:' - reason_html: "لماذا هذه الخطوة ضرورية؟ %{instance} قد لا يكون هذا الخادم هو الذي سجلت فيه حيابك، لذا نحن بحاجة إلى إعادة توجيهك إلى خادمك الرئيسي أولاً." - remote_interaction: - favourite: - proceed: المواصلة إلى المفضلة - prompt: 'ترغب في إضافة هذا المنشور إلى مفضلتك:' - reblog: - proceed: المواصلة إلى الترقية - prompt: 'ترغب في مشاركة هذا المنشور:' - reply: - proceed: المواصلة إلى الرد - prompt: 'ترغب في الرد على هذا المنشور:' rss: content_warning: 'تحذير عن المحتوى:' descriptions: diff --git a/config/locales/ast.yml b/config/locales/ast.yml index b3916dba07..965a16aeba 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -2,33 +2,18 @@ ast: about: about_mastodon_html: 'La rede social del futuru: ¡ensin anuncios nin vixilancia, con un diseñu éticu y descentralizáu! Controla los tos datos con Mastodon.' - api: API - apps: Aplicaciones pa móviles contact_missing: Nun s'afitó contact_unavailable: N/D - documentation: Documentación hosted_on: Mastodon ta agospiáu en %{domain} - privacy_policy: Política de privacidá - source_code: Códigu fonte - what_is_mastodon: "¿Qué ye Mastodon?" accounts: - featured_tags_hint: Pues destacar etiquetes específiques que van amosase equí. followers: one: Siguidor other: Siguidores - joined: Xunióse en %{date} - moved_html: "%{name} mudóse a %{new_profile_link}:" - network_hidden: Esta información nun ta disponible nothing_here: "¡Equí nun hai nada!" - people_followed_by: Persones a les que sigue %{name} - people_who_follow: Persones que siguen a %{name} posts: one: Artículu other: Artículos posts_tab_heading: Artículos - posts_with_replies: Barritos y rempuestes - roles: - bot: Robó admin: accounts: are_you_sure: "¿De xuru?" @@ -229,10 +214,6 @@ ast: title: Peñeres new: title: Amestar una peñera nueva - footer: - developers: Desendolcadores - more: Más… - resources: Recursos generic: all: Too changes_saved_msg: "¡Los cambeos guardáronse correutamente!" @@ -252,7 +233,6 @@ ast: following: Llista de siguidores muting: Llista de xente silenciao upload: Xubir - in_memoriam_html: N'alcordanza. invites: delete: Desactivar expired: Caducó @@ -325,22 +305,6 @@ ast: relationship: Rellación remove_selected_follows: Dexar de siguir a los usuarios seleicionaos status: Estáu - remote_follow: - acct: Introduz el nome_usuariu@dominiu dende'l que lo quies facer - no_account_html: "¿Nun tienes una cuenta? Pues rexistrate equí" - proceed: Siguir - prompt: 'Vas siguir a:' - reason_html: "¿Por qué esti pasu ye precisu? %{instance} seique nun seya'l sirvidor onde tas rexistráu, polo que precisamos redirixite primero al de to." - remote_interaction: - favourite: - proceed: Siguir - prompt: 'Quies marcar esti barritu como favoritu:' - reblog: - proceed: Siguir - prompt: 'Quies compartir esti barritu:' - reply: - proceed: Siguir - prompt: 'Quies responder a esti barritu:' sessions: browser: Restolador browsers: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 8fc126ec11..83a5df302f 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -2,44 +2,24 @@ bg: about: about_mastodon_html: Mastodon е безплатен сървър с отворен код за социални мрежи. Като децентрализирана алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне Mastodon и лесно да вземе участие в социалната мрежа. - api: API - apps: Мобилни приложения contact_missing: Не е зададено contact_unavailable: Не е приложимо - documentation: Документация hosted_on: Mastodon е хостван на %{domain} - source_code: Програмен код - what_is_mastodon: Какво е Mastodon? accounts: - choices_html: 'Избори на %{name}:' - endorsements_hint: Можете да подкрепите хората, които следите, от уеб интерфейса и те ще се покажат тук. - featured_tags_hint: Можете да представите конкретни хаштагове, които ще се показват тук. follow: Последвай followers: one: Последовател other: Последователи following: Следва - joined: Присъединил се на %{date} last_active: последна дейност link_verified_on: Собствеността върху тази връзка е проверена на %{date} - media: Мултимедия - moved_html: "%{name} се премести в %{new_profile_link}:" - network_hidden: Тази информация не е налична nothing_here: Тук няма никого! - people_followed_by: Хора, които %{name} следва - people_who_follow: Хора, които следват %{name} pin_errors: following: Трябва вече да следвате човека, когото искате да подкрепите posts: one: Публикация other: Публикации posts_tab_heading: Публикации - posts_with_replies: Публикации и отговори - roles: - bot: Бот - group: Група - unavailable: Профилът не е наличен - unfollow: Не следвай admin: account_actions: action: Изпълняване на действие @@ -214,10 +194,7 @@ bg: next: Напред prev: Назад remote_follow: - acct: Въведи потребителско_име@домейн, от които искаш да следваш missing_resource: Неуспешно търсене на нужния URL за пренасочване за твоя акаунт - proceed: Започни следване - prompt: 'Ще последваш:' settings: authorized_apps: Упълномощени приложения back: Обратно към Mastodon diff --git a/config/locales/bn.yml b/config/locales/bn.yml index 4b05ae50c5..5a40fad8f3 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -2,44 +2,24 @@ bn: about: about_mastodon_html: মাস্টাডন উন্মুক্ত ইন্টারনেটজালের নিয়ম এবং স্বাধীন ও মুক্ত উৎসের সফটওয়্যারের ভিত্তিতে তৈরী একটি সামাজিক যোগাযোগ মাধ্যম। এটি ইমেইলের মত বিকেন্দ্রীভূত। - api: সফটওয়্যার তৈরীর নিয়ম (API) - apps: মোবাইল অ্যাপ contact_missing: নেই contact_unavailable: প্রযোজ্য নয় - documentation: ব্যবহারবিলি hosted_on: এই মাস্টাডনটি আছে %{domain} এ - source_code: আসল তৈরীপত্র - what_is_mastodon: মাস্টাডনটি কি ? accounts: - choices_html: "%{name} বাছাই:" - endorsements_hint: আপনি ওয়েব ইন্টারফেস থেকে অনুসরণ করা লোকেদের প্রচার করতে পারেন এবং তারা এখানে প্রদর্শিত হবে। - featured_tags_hint: আপনি এখানে নির্দিষ্ট হ্যাশট্যাগগুলি বৈশিষ্ট্যযুক্ত করতে পারেন যেটা এখানে প্রদর্শিত হবে। follow: যুক্ত followers: one: যুক্ত আছে other: যারা যুক্ত হয়েছে following: যুক্ত করা - joined: যোগদান হয় %{date} last_active: শেষ সক্রিয় ছিল link_verified_on: এই লিংকের মালিকানা শেষ চেক করা হয় %{date} তারিখে - media: ছবি বা ভিডিও - moved_html: "%{name} চলে গেছে %{new_profile_link} তে:" - network_hidden: এই তথ্যটি নেই nothing_here: এখানে কিছুই নেই! - people_followed_by: "%{name} যাদেরকে অনুসরণ করে" - people_who_follow: যারা %{name} কে অনুসরণ করে pin_errors: following: সমর্থন করতে অনুসরণ থাকা লাগবে posts: one: লেখা other: লেখাগুলো posts_tab_heading: লেখাগুলো - posts_with_replies: লেখা এবং মতামত - roles: - bot: রোবট - group: গোষ্ঠী - unavailable: প্রোফাইল অনুপলব্ধ - unfollow: অনুসরণ বাদ admin: account_actions: action: করা diff --git a/config/locales/br.yml b/config/locales/br.yml index 773fd559e4..afb102dc76 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -1,10 +1,5 @@ --- br: - about: - api: API - apps: Arloadoù pellgomz - source_code: Boneg tarzh - what_is_mastodon: Petra eo Mastodon? accounts: follow: Heuliañ followers: @@ -14,7 +9,6 @@ br: other: Heulier·ez two: Heulier·ez following: O heuliañ - media: Media posts: few: Toud many: Toud @@ -22,12 +16,6 @@ br: other: Toud two: Toud posts_tab_heading: Toudoù - posts_with_replies: Toudoù ha respontoù - roles: - bot: Robot - group: Strollad - unavailable: Profil dihegerz - unfollow: Diheuliañ admin: accounts: avatar: Avatar @@ -193,9 +181,6 @@ br: index: delete: Dilemel title: Siloù - footer: - developers: Diorroerien - more: Muioc'h… generic: all: Pep tra copy: Eilañ diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 51c8d0ebc8..c5f21b0cb9 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -2,46 +2,26 @@ ca: about: about_mastodon_html: 'La xarxa social del futur: sense anuncis, sense vigilància corporativa, disseny ètic i descentralització. Tingues el control de les teves dades amb Mastodon!' - api: API - apps: Aplicacions mòbils contact_missing: No configurat contact_unavailable: N/D - documentation: Documentació hosted_on: Mastodon allotjat a %{domain} - privacy_policy: Política de Privacitat - source_code: Codi font - what_is_mastodon: Què és Mastodon? + title: Quant a accounts: - choices_html: 'Eleccions de %{name}:' - endorsements_hint: Pots recomanar persones que segueixes des de la interfície de web i apareixeran aquí. - featured_tags_hint: Pots presentar etiquetes específiques que seràn mostrades aquí. follow: Segueix followers: one: Seguidor other: Seguidors following: Seguint instance_actor_flash: Aquest compte és un actor virtual usat per a representar el mateix servidor i no cap usuari individual. Es fa servir per a federar i no s'hauria d'esborrar. - joined: Unit des de %{date} last_active: última activitat link_verified_on: La propietat d'aquest enllaç s'ha verificat el %{date} - media: Mèdia - moved_html: "%{name} s'ha mogut a %{new_profile_link}:" - network_hidden: Aquesta informació no està disponible nothing_here: No hi ha res aquí! - people_followed_by: Persones seguides per %{name} - people_who_follow: Usuaris que segueixen %{name} pin_errors: following: Has d'estar seguint la persona que vulguis avalar posts: one: Publicació other: Publicacions posts_tab_heading: Publicacions - posts_with_replies: Publicacions i respostes - roles: - bot: Bot - group: Grup - unavailable: Perfil inaccessible - unfollow: Deixa de seguir admin: account_actions: action: Realitzar acció @@ -344,6 +324,7 @@ ca: listed: Enumerat new: title: Afegeix emoji personalitzat nou + no_emoji_selected: No s'ha canviat cap emoji perquè cap ha estat seleccionat not_permitted: No tens permís per a realitzar aquesta acció overwrite: Sobreescriure shortcode: Codi curt @@ -812,6 +793,9 @@ ca: description_html: Aquests son enllaços que ara mateix s'estan compartint molt per els comptes que el teu servidor en veu les publicacions. Poden ajudar als teus usuaris a trobar què està passant en el món. Cap dels enllaços es mostra publicament fins que no aprovis el mitjà. També pots aceptar o rebutjar enllaços individuals. disallow: No permetre l'enllaç disallow_provider: No permetre el mitjà + no_link_selected: No s'ha canviat cap enllaç perquè cap ha estat seleccionat + publishers: + no_publisher_selected: No s'ha canviat cap editor perquè cap ha estat seleccionat shared_by_over_week: one: Compartit per una persona en la darrera setmana other: Compartit per %{count} persones en la darrera setmana @@ -831,6 +815,7 @@ ca: description_html: Aquestes son publicacions que el teu servidor veu i que ara mateix s'estan compartint i afavorint molt. Poden ajudar als teus nous usuaris i als que retornen a trobar més gent a qui seguir. Cap publicació es mostra publicament fins que no aprovis l'autor i l'autor permeti que el seu compte sigui sugerit a altres. També pots aceptar o rebutjar publicacions individuals. disallow: Rebutja publicació disallow_account: Rebutja autor + no_status_selected: No s'ha canviat els apunts en tendència perquè cap ha estat seleccionat not_discoverable: L'autor no ha activat poder ser detectable shared_by: one: Compartit o afavorit una vegada @@ -846,6 +831,7 @@ ca: tag_uses_measure: total usos description_html: Aquestes son etiquetes que ara mateix estan apareixen en moltes publicacions que el teu servidor veu. Poden ajudar als teus usuaris a trobar de què està parlant majoritariament la gent en aquest moment. Cap etiqueta es mostra publicament fins que no l'aprovis. listable: Es pot suggerir + no_tag_selected: No s'ha canviat cap etiqueta perquè cap ha estat seleccionada not_listable: No es pot suggerir not_trendable: No apareixeran en les tendències not_usable: No pot ser emprat @@ -1169,9 +1155,6 @@ ca: hint: Aquest filtre aplica als apunts seleccionats independentment d'altres criteris. Pots afegir més apunts a aquest filtre des de l'interfície Web. title: Apunts filtrats footer: - developers: Desenvolupadors - more: Més… - resources: Recursos trending_now: En tendència generic: all: Tot @@ -1214,7 +1197,6 @@ ca: following: Llista de seguits muting: Llista de silenciats upload: Carrega - in_memoriam_html: En Memòria. invites: delete: Desactiva expired: Caducat @@ -1394,22 +1376,7 @@ ca: remove_selected_follows: Deixa de seguir als usuaris seleccionats status: Estat del compte remote_follow: - acct: Escriu el teu usuari@domini des del qual vols seguir missing_resource: No s'ha pogut trobar la URL de redirecció necessària per al compte - no_account_html: No tens cap compte? Pots registrar-te aquí - proceed: Comença a seguir - prompt: 'Seguiràs a:' - reason_html: "Per què és necessari aquest pas? %{instance} pot ser que no sigui el servidor on estàs registrat per tant primer hem de redirigir-te al teu servidor." - remote_interaction: - favourite: - proceed: Procedir a afavorir - prompt: 'Vols marcar com a favorit aquesta publicació:' - reblog: - proceed: Procedir a impulsar - prompt: 'Vols impulsar aquesta publicació:' - reply: - proceed: Procedir a respondre - prompt: 'Vols respondre a aquesta publicació:' reports: errors: invalid_rules: no fa referència a normes vàlides diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 0f2d8b5807..56f34d50fa 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -2,45 +2,25 @@ ckb: about: about_mastodon_html: 'تۆڕی کۆمەڵایەتی داهاتوو: هیچ ڕیکلامێک ، هیچ چاودێرییەکی کۆمپانیا ، دیزاینی ئەخلاقی و لامەرکەزی! خاوەنی داتاکانت نابێ لە ماستۆدۆن!' - api: API - apps: ئەپەکانی مۆبایل contact_missing: سازنەکراوە contact_unavailable: بوونی نییە - documentation: بەڵگەکان hosted_on: مەستودۆن میوانداری کراوە لە %{domain} - source_code: کۆدی سەرچاوە - what_is_mastodon: ماستۆدۆن چییە? accounts: - choices_html: 'هەڵبژاردنەکانی %{name}:' - endorsements_hint: دەتوانیت ئەو کەسانە پەسەند بکەیت کە پەیڕەویان دەکەیت لە ڕووکاری وێب، و ئەوان لێرە دەردەکەون. - featured_tags_hint: دەتوانیت هاشتاگی تایبەت پێشکەش بکەیت کە لێرە پیشان دەدرێت. follow: شوێن کەوە followers: one: شوێنکەوتوو other: شوێن‌کەوتووان following: شوێن‌کەوتووی instance_actor_flash: ئەم ئەکاونتە ئەکتەرێکی مەجازییە کە بەکاردێت بۆ نوێنەرایەتیکردنی خودی سێرڤەرەکە نەک هیچ بەکارهێنەرێکی تاکەکەسی. بۆ مەبەستی فیدراسیۆن بەکاردێت و نابێت ڕابگیرێت. - joined: بەشداری %{date} last_active: دوا چالاکی link_verified_on: خاوەنداریەتی ئەم لینکە لە %{date} چێک کراوە - media: میدیا - moved_html: "%{name} گواستراوەتەوە بۆ %{new_profile_link}:" - network_hidden: ئەم زانیاریە بەردەست نیە nothing_here: لێرە هیچ نییە! - people_followed_by: ئەو کەسانەی کە %{name} بەدوایدا دەکەون - people_who_follow: ئەو کەسانەی کە بەدوای %{name} دا دەکەون pin_errors: following: تۆ دەبێت هەر ئێستا بە دوای ئەو کەسەدا بیت کە دەتەوێت پەسەندی بکەیت posts: one: توت other: تووتەکان posts_tab_heading: تووتەکان - posts_with_replies: تووتەکان و وڵامەکان - roles: - bot: بۆت - group: گرووپ - unavailable: پرۆفایل بەردەست نیە - unfollow: بەدوادانەچو admin: account_actions: action: ئەنجامدانی کردار @@ -808,9 +788,6 @@ ckb: new: title: زیادکردنی فلتەری نوێ footer: - developers: پەرەپێدەران - more: زیاتر… - resources: سەرچاوەکان trending_now: هەوادارانی ئێستا generic: all: هەموو @@ -839,7 +816,6 @@ ckb: following: لیستی خوارەوە muting: لیستی کپکردنەوە upload: بارکردن - in_memoriam_html: لەیادبوون. invites: delete: لەکارخستن expired: بەسەرچووە @@ -984,22 +960,7 @@ ckb: remove_selected_follows: کۆتایی بە بەدوادانەچوی بەکارهێنەرە دیاریکراوەکان بدە status: دۆخی هەژمارە remote_follow: - acct: ناونیشانی هەژمارەی username@domainخۆت لێرە بنووسە missing_resource: نەیتوانی URLی ئاراستەکردنەوەی پێویست بدۆزێتەوە بۆ ئەژمێرەکەت - no_account_html: هێشتا نەبووی بە ئەندام؟ لێرە دەتوانی هەژمارەیەک دروست بکەی - proceed: بەردەوام بە بۆ بەدواداچوون - prompt: 'تۆ بەدوای دا دەچیت:' - reason_html: " بۆچی ئەم هەنگاوە پێویستە؟ %{instance} لەوانەیە ئەو ڕاژەیە نەبێت کە تۆ تۆمارت کردووە، بۆیە پێویستە سەرەتا دووبارە ئاڕاستەت بکەین بۆ ڕاژەکاری ماڵەوەت." - remote_interaction: - favourite: - proceed: بۆ دڵخوازکردنی ئەم توتە - prompt: 'دەتەوێت ئەم تووتە تپەسەند بکەیت؛:' - reblog: - proceed: بەردەوام بە بۆ دووبارە توتاندن - prompt: 'دەتەوێت ئەم تووتە دووبارە بکەیتەوە:' - reply: - proceed: بۆ وەڵامدانەوە - prompt: 'دەتەوێت ئەم تووتە وڵام بدەیتەوە:' scheduled_statuses: over_daily_limit: ئێوە لە سنووری ڕیپێدراوی %{limit} توتی ئەو رۆژە،خۆرتر ڕۆیشتوویت over_total_limit: تۆ سنووری خشتەکراوی %{limit} ت بەزاندووە diff --git a/config/locales/co.yml b/config/locales/co.yml index 55e03d15ae..48909a4b58 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -2,45 +2,25 @@ co: about: about_mastodon_html: 'A rete suciale di u futuru: micca pubblicità, micca surveglianza, cuncezzione etica, è dicentralizazione! Firmate in cuntrollu di i vostri dati cù Mastodon!' - api: API - apps: Applicazione per u telefuninu contact_missing: Mancante contact_unavailable: Micca dispunibule - documentation: Ducumentazione hosted_on: Mastodon allughjatu nant’à %{domain} - source_code: Codice di fonte - what_is_mastodon: Quale hè Mastodon? accounts: - choices_html: "%{name} ricumanda:" - endorsements_hint: Pudete appughjà i conti chì siguitate dapoi l'interfaccia web, è saranu mustrati quì. - featured_tags_hint: Pudete mette in mostra qualchì hashtag chì saranu affissati quì. follow: Siguità followers: one: Abbunatu·a other: Abbunati following: Abbunamenti instance_actor_flash: Stu contu virtuale riprisenta u servore stessu, micca un'utilizatore individuale. Hè utilizatu per scopi di federazione è ùn duveria mai esse suspesu. - joined: Quì dapoi %{date} last_active: ultima attività link_verified_on: A pruprietà d'issu ligame hè stata verificata u %{date} - media: Media - moved_html: "%{name} hà cambiatu di contu, avà hè nant’à %{new_profile_link}:" - network_hidden: St'infurmazione ùn hè micca dispunibule nothing_here: Ùn c’hè nunda quì! - people_followed_by: Seguitati da %{name} - people_who_follow: Seguitanu %{name} pin_errors: following: Duvete digià siguità a persona che vulete ricumandà posts: one: Statutu other: Statuti posts_tab_heading: Statuti - posts_with_replies: Statuti è risposte - roles: - bot: Bot - group: Gruppu - unavailable: Prufile micca dispunibule - unfollow: Ùn siguità più admin: account_actions: action: Realizà un'azzione @@ -787,9 +767,6 @@ co: new: title: Aghjunghje un novu filtru footer: - developers: Sviluppatori - more: Di più… - resources: Risorse trending_now: Tindenze d'avà generic: all: Tuttu @@ -820,7 +797,6 @@ co: following: Persone chì seguitate muting: Persone chì piattate upload: Impurtà - in_memoriam_html: In mimoria. invites: delete: Disattivà expired: Spirata @@ -986,22 +962,7 @@ co: remove_selected_follows: Ùn siguità più l'utilizatori selezziunati status: Statutu di u contu remote_follow: - acct: Entrate u vostru cugnome@istanza da induve vulete siguità stu contu missing_resource: Ùn avemu pussutu à truvà l’indirizzu di ridirezzione - no_account_html: Ùn avete micca un contu? Pudete arregistravi quì - proceed: Cuntinuà per siguità - prompt: 'Avete da siguità:' - reason_html: "Perchè hè necessaria sta tappa? %{instance} ùn hè forse micca u servore induve site arregistratu·a, allora primu duvemu riindirizzavi à u vostru servore." - remote_interaction: - favourite: - proceed: Cuntinuà per favurisce - prompt: 'Vulete aghjunghje stu statutu à i vostri favuriti:' - reblog: - proceed: Cuntinuà per sparte - prompt: 'Vulete sparte stu statutu:' - reply: - proceed: Cuntinuà per risponde - prompt: 'Vulete risponde à stu statutu:' scheduled_statuses: over_daily_limit: Avete trapassatu a limita di %{limit} statuti pianificati per stu ghjornu over_total_limit: Avete trapassatu a limita di %{limit} statuti pianificati diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 8b6b266e9f..08e9e187b4 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -2,19 +2,11 @@ cs: about: about_mastodon_html: 'Sociální síť budoucnosti: žádné reklamy, žádné korporátní sledování, etický design a decentralizace! S Mastodonem vlastníte svoje data!' - api: API - apps: Mobilní aplikace contact_missing: Nenastaveno contact_unavailable: Neuvedeno - documentation: Dokumentace hosted_on: Mastodon na doméně %{domain} - privacy_policy: Ochrana osobních údajů - source_code: Zdrojový kód - what_is_mastodon: Co je Mastodon? + title: O aplikaci accounts: - choices_html: 'Volby %{name}:' - endorsements_hint: Z webového rozhraní můžete podpořit lidi, které sledujete. Ti se poté zobrazí zde. - featured_tags_hint: Můžete vybrat konkrétní hashtagy, které se zobrazí zde. follow: Sledovat followers: few: Sledující @@ -23,15 +15,9 @@ cs: other: Sledujících following: Sledovaných instance_actor_flash: Tento účet je virtuální aktér, který představuje server samotný, nikoliv jednotlivého uživatele. Používá se pro účely federace a neměl by být pozastaven. - joined: Uživatelem od %{date} last_active: naposledy aktivní link_verified_on: Vlastnictví tohoto odkazu bylo zkontrolováno %{date} - media: Média - moved_html: 'Uživatel %{name} se přesunul na %{new_profile_link}:' - network_hidden: Tato informace není k dispozici nothing_here: Nic tu není! - people_followed_by: Lidé, které sleduje %{name} - people_who_follow: Lidé, kteří sledují %{name} pin_errors: following: Osobu, kterou chcete podpořit, už musíte sledovat posts: @@ -40,12 +26,6 @@ cs: one: Příspěvek other: Příspěvků posts_tab_heading: Příspěvky - posts_with_replies: Příspěvky a odpovědi - roles: - bot: Robot - group: Skupina - unavailable: Profil není dostupný - unfollow: Přestat sledovat admin: account_actions: action: Vykonat akci @@ -342,6 +322,7 @@ cs: listed: Uvedeno new: title: Přidat nové vlastní emoji + no_emoji_selected: Žádné emoji nebyly změněny, protože nikdo nebyl vybrán not_permitted: K provedené této akce nemáte dostatečná oprávnění overwrite: Přepsat shortcode: Zkratka @@ -832,6 +813,9 @@ cs: description_html: Toto jsou odkazy, které jsou momentálně hojně sdíleny účty, jejichž příspěvky váš server vidí. To může pomoct vašim uživatelům zjistit, co se děje ve světě. Žádné odkazy se nezobrazují veřejně, dokud neschválíte vydavatele. Můžete také povolit nebo zamítnout jednotlivé odkazy. disallow: Zakázat odkaz disallow_provider: Zakázat vydavatele + no_link_selected: Nebyly změněny žádné odkazy, protože nebyl vybrán žádný + publishers: + no_publisher_selected: Nebyly změněny žádní publikující, protože nikdo nebyl vybrán shared_by_over_week: few: Sdílený %{count} lidmi za poslední týden many: Sdílený %{count} lidmi za poslední týden @@ -853,6 +837,7 @@ cs: description_html: Toto jsou příspěvky, o kterých váš server ví, že jsou momentálně hodně sdíleny a oblibovány. To může pomoci vašim novým i vracejícím se uživatelům najít další lidi ke sledování. Žádné příspěvky se nezobrazují veřejně, dokud neschválíte autora a tento autor nepovolí navrhování svého účtu ostatním. Můžete také povolit či zamítnout jednotlivé příspěvky. disallow: Zakázat příspěvek disallow_account: Zakázat autora + no_status_selected: Nebyly změněny žádné populární příspěvky, protože nikdo nebyl vybrán not_discoverable: Autor nepovolil navrhování svého účtu ostatním shared_by: few: "%{friendly_count} sdílení nebo oblíbení" @@ -870,6 +855,7 @@ cs: tag_uses_measure: použití celkem description_html: Toto jsou hashtagy, které se momentálně objevují v mnoha příspěvcích, které váš server vidí. To může pomoci vašim uživatelům zjistit, o čem lidé zrovna nejvíce mluví. Žádné hashtagy se nezobrazují veřejně, dokud je neschválíte. listable: Může být navrhován + no_tag_selected: Nebyly změněny žádné štítky, protože nikdo nebyl vybrán not_listable: Nebude navrhován not_trendable: Neobjeví se mezi populárními not_usable: Nemůže být používán @@ -979,6 +965,7 @@ cs: warning: Zacházejte s těmito daty opatrně. Nikdy je s nikým nesdílejte! your_token: Váš přístupový token auth: + apply_for_account: Přejít na čekací frontu change_password: Heslo delete_account: Odstranit účet delete_account_html: Chcete-li odstranit svůj účet, pokračujte zde. Budete požádáni o potvrzení. @@ -1196,9 +1183,6 @@ cs: hint: Tento filtr se vztahuje na výběr jednotlivých příspěvků bez ohledu na jiná kritéria. Do tohoto filtru můžete přidat více příspěvků z webového rozhraní. title: Filtrované příspěvky footer: - developers: Vývojáři - more: Více… - resources: Zdroje trending_now: Právě populární generic: all: Všechny @@ -1234,7 +1218,6 @@ cs: following: Seznam sledovaných muting: Seznam ignorovaných upload: Nahrát - in_memoriam_html: In Memoriam. invites: delete: Deaktivovat expired: Expirováno @@ -1416,22 +1399,7 @@ cs: remove_selected_follows: Přestat sledovat vybrané uživatele status: Stav účtu remote_follow: - acct: Napište svou přezdívku@doménu, ze které chcete jednat missing_resource: Nemůžeme najít požadovanou přesměrovávací URL adresu pro váš účet - no_account_html: Ještě nemáte účet? Tady se můžete zaregistrovat - proceed: Pokračovat ke sledování - prompt: 'Budete sledovat:' - reason_html: "Proč je tento krok nutný? %{instance} nemusí být serverem, na kterém jste registrováni, a proto vás musíme nejdříve přesměrovat na váš domovský server." - remote_interaction: - favourite: - proceed: Pokračovat k oblíbení - prompt: 'Chcete si oblíbit tento příspěvek:' - reblog: - proceed: Pokračovat k boostnutí - prompt: 'Chcete boostnout tento příspěvek:' - reply: - proceed: Pokračovat k odpovědi - prompt: 'Chcete odpovědět na tento příspěvek:' reports: errors: invalid_rules: neodkazuje na platná pravidla diff --git a/config/locales/cy.yml b/config/locales/cy.yml index adcff7da77..756bcea87a 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -2,18 +2,10 @@ cy: about: about_mastodon_html: Mae Mastodon yn rwydwaith cymdeithasol sy'n seiliedig ar brotocolau gwe a meddalwedd cod agored rhad ac am ddim. Yn debyg i e-bost mae'n ddatganoledig. - api: API - apps: Apiau symudol contact_missing: Heb ei osod contact_unavailable: Ddim yn berthnasol - documentation: Dogfennaeth hosted_on: Mastodon wedi ei weinyddu ar %{domain} - source_code: Cod ffynhonnell - what_is_mastodon: Beth yw Mastodon? accounts: - choices_html: 'Dewisiadau %{name}:' - endorsements_hint: Gallwch gymeradwyo pobl rydych chi'n eu dilyn o'r rhyngwyneb gwe, a byddan nhw'n ymddangos yma. - featured_tags_hint: Gallwch ychwanegu hashnodau penodol a fydd yn cael eu harddangos yma. follow: Dilynwch followers: few: Dilynwyr @@ -24,15 +16,9 @@ cy: zero: Dilynwyr following: Yn dilyn instance_actor_flash: Mae'r cyfrif hwn yn actor rhithwir a ddefnyddir i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol. Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei atal. - joined: Ymunodd %{date} last_active: diweddaraf link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date} - media: Cyfryngau - moved_html: 'Mae %{name} wedi symud i %{new_profile_link}:' - network_hidden: Nid yw'r wybodaeth hyn ar gael nothing_here: Does dim byd yma! - people_followed_by: Pobl y mae %{name} yn ei ddilyn - people_who_follow: Pobl sy'n dilyn %{name} pin_errors: following: Rhaid i ti fod yn dilyn y person yr ydych am ei gymeradwyo yn barod posts: @@ -43,12 +29,6 @@ cy: two: Tŵtiau zero: Tŵtiau posts_tab_heading: Postiadau - posts_with_replies: Postiadau ac atebion - roles: - bot: Bot - group: Grŵp - unavailable: Proffil ddim ar gael - unfollow: Dad-ddilyn admin: account_actions: action: Cyflawni gweithred @@ -651,9 +631,6 @@ cy: new: title: Ychwanegu hidlydd newydd footer: - developers: Datblygwyr - more: Mwy… - resources: Adnoddau trending_now: Yn tueddu nawr generic: all: Popeth @@ -685,7 +662,6 @@ cy: following: Rhestr dilyn muting: Rhestr tawelu upload: Uwchlwytho - in_memoriam_html: Er cof. invites: delete: Dadactifadu expired: Wedi darfod @@ -836,24 +812,7 @@ cy: remove_selected_follows: Dad-ddilyn y defnyddwyr dewisiedig status: Statws cyfrif remote_follow: - acct: Mewnbynnwch eich enwdefnyddiwr@parth yr ydych eisiau gweithredu ohonno missing_resource: Ni ellir canfod yr URL ailgyferio angenrheidiol i'ch cyfrif - no_account_html: Heb gyfrif? Mae modd i chi gofrestru yma - proceed: Ymlaen i ddilyn - prompt: 'Yr ydych am ddilyn:' - reason_html: |- - Pam yw'r cam hyn yn angenrheidiol? - Efallai nid yw %{instance} yn gweinydd ble wnaethoch gofrestru, felly mae'n rhaid i ni ailarweinio chi at eich gweinydd catref yn gyntaf. - remote_interaction: - favourite: - proceed: Ymlaen i hoffi - prompt: 'Hoffech hoffi''r tŵt hon:' - reblog: - proceed: Ymlaen i fŵstio - prompt: 'Hoffech fŵstio''r tŵt hon:' - reply: - proceed: Ymlaen i ateb - prompt: 'Hoffech ateb y tŵt hon:' scheduled_statuses: over_daily_limit: Rydych wedi rhagori'r cyfwng o %{limit} o dŵtiau rhestredig ar y dydd hynny over_total_limit: Rydych wedi rhagori'r cyfwng o %{limit} o dŵtiau rhestredig diff --git a/config/locales/da.yml b/config/locales/da.yml index 2758fa2af7..f3b030cc0f 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -2,46 +2,26 @@ da: about: about_mastodon_html: 'Fremtidens sociale netværk: Ingen annoncer, ingen virksomhedsovervågning, etisk design og decentralisering! Vær ejer af egne data med Mastodon!' - api: API - apps: Mobil-apps contact_missing: Ikke angivet contact_unavailable: Utilgængelig - documentation: Dokumentation hosted_on: Mostodon hostet på %{domain} - privacy_policy: Fortrolighedspolitik - source_code: Kildekode - what_is_mastodon: Hvad er Mastodon? + title: Om accounts: - choices_html: "%{name}s valg:" - endorsements_hint: Man kan støtte personer, man følger, fra webgrænsefladen, som så vil fremgå hér. - featured_tags_hint: Man kan fremhæve bestemte hashtags, som så vil fremgå hér. follow: Følg followers: one: Følger other: Følgere following: Følger instance_actor_flash: Denne konto er en virtuel aktør repræsenterende selve serveren og ikke en individuel bruger. Den anvendes til fællesformål og bør ikke suspenderes. - joined: Tilmeldt %{date} last_active: senest aktiv link_verified_on: Ejerskab af dette link blev tjekket %{date} - media: Medier - moved_html: "%{name} er flyttet til %{new_profile_link}:" - network_hidden: Denne information er utilgængelig nothing_here: Der er intet hér! - people_followed_by: Personer, som %{name} følger - people_who_follow: Personer, som følger %{name} pin_errors: following: Man skal allerede følge den person, man ønsker at støtte posts: one: Indlæg other: Indlæg posts_tab_heading: Indlæg - posts_with_replies: Indlæg og svar - roles: - bot: Bot - group: Gruppe - unavailable: Profil utilgængelig - unfollow: Følg ikke længere admin: account_actions: action: Udfør handling @@ -344,6 +324,7 @@ da: listed: Oplistet new: title: Tilføj ny tilpasset emoji + no_emoji_selected: Ingen emoji ændret (da ingen var valgt) not_permitted: Ingen tilladelse til at udføre denne handling overwrite: Overskriv shortcode: Kortkode @@ -640,6 +621,7 @@ da: administrator: Administrator administrator_description: Brugere med denne rolle kan omgå alle tilladelser delete_user_data: Slet brugerdata + delete_user_data_description: Tillader brugere at slette andre brugeres data straks invite_users: Invitere brugere invite_users_description: Tillader brugere at invitere nye personer til serveren manage_announcements: Håndtere bekendtgørelser @@ -811,6 +793,9 @@ da: description_html: Disse er links, som pt. deles meget af konti, som serveren ser indlæg fra. Det kan hjælpe ens brugere med at finde ud af, hvad der sker i verden. Ingen links vises offentligt, før man godkender udgiveren. Man kan også tillade/afvise individuelle links. disallow: Tillad ikke link disallow_provider: Tillad ikke udgiver + no_link_selected: Intet link ændret (da intet var valgt) + publishers: + no_publisher_selected: Ingen udgiver ændret (da ingen var valgt) shared_by_over_week: one: Delt af én person den seneste uge other: Delt af %{count} personer den seneste uge @@ -830,6 +815,7 @@ da: description_html: Disse er indlæg, serveren kender til, som pt. deles og favoritmarkeres meget. Det kan hjælpe nye og tilbagevendende brugere til at finde flere personer at følge. Ingen indlæg vises offentligt, før man godkender forfatteren, samt denne tillader sin konto at blive foreslået andre. Man kan også tillade/afvise individuelle indlæg. disallow: Tillad ikke indlæg disallow_account: Tillad ikke forfatter + no_status_selected: Intet tendensindlæg ændret (da intet var valgt) not_discoverable: Forfatteren har ikke valgt at kunne findes shared_by: one: Delt eller favoritmarkeret én gang @@ -845,6 +831,7 @@ da: tag_uses_measure: anvendelser i alt description_html: Disse er hashtags, som pt. vises i en masse indlæg, som serveren ser. Det kan hjælpe brugerne til at finde ud af, hvad folk taler mest om pt. Ingen hashtags vises offentligt, før man godkender dem. listable: Kan foreslås + no_tag_selected: Intet tag ændret (da intet var valgt) not_listable: Foreslås ikke not_trendable: Vises ikke under tendenser not_usable: Kan ikke anvendes @@ -1168,9 +1155,6 @@ da: hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webfladen. title: Filtrerede indlæg footer: - developers: Udviklere - more: Mere… - resources: Ressourcer trending_now: Trender lige nu generic: all: Alle @@ -1213,7 +1197,6 @@ da: following: Følgningsliste muting: Tavsgørelsesliste upload: Upload - in_memoriam_html: Til minde om. invites: delete: Deaktivér expired: Udløbet @@ -1393,22 +1376,7 @@ da: remove_selected_follows: Følg ikke længere valgte brugere status: Kontostatus remote_follow: - acct: Angiv det brugernavn@domæne, hvorfra du vil ageres missing_resource: Nødvendige omdirigerings-URL til kontoen ikke fundet - no_account_html: Har ingen konto? Der kan oprettes én hér - proceed: Fortsæt for at følge - prompt: 'Du er ved at følge:' - reason_html: "Hvorfor er dette trin nødvendigt? %{instance} er måske ikke den server, hvorpå man er registreret, så man skal først omdirigeres til sin hjemmeserver." - remote_interaction: - favourite: - proceed: Fortsæt for at favoritmarkere - prompt: 'Favoritmarkere dette indlæg:' - reblog: - proceed: Fortsæt for at booste - prompt: 'Booste dette indlæg:' - reply: - proceed: Fortsæt for at besvare - prompt: 'Besvare dette indlæg:' reports: errors: invalid_rules: refererer ikke til gyldige regler @@ -1661,6 +1629,7 @@ da: edit_profile_step: Man kan tilpasse sin profil ved at uploade profilfoto, overskrift, ændre visningsnavn mv. Ønskes nye følgere vurderet, før de må følge dig, kan kontoen låses. explanation: Her er nogle råd for at få dig i gang final_action: Begynd at poste + final_step: 'Begynd at poste! Selv uden følgere vil offentlige indlæg kunne ses af andre f.eks. på den lokale tidslinje og i hashtags. Man kan introducere sig selv via hastagget #introductions.' full_handle: Dit fulde brugernavn full_handle_hint: Dette er, hvad du oplyser til dine venner, så de kan sende dig beskeder eller følge dig fra andre server. subject: Velkommen til Mastodon diff --git a/config/locales/de.yml b/config/locales/de.yml index a30c6ad296..e1e298ef0b 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -2,46 +2,26 @@ de: about: about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail! - api: API - apps: Mobile Apps contact_missing: Nicht angegeben contact_unavailable: Nicht verfügbar - documentation: Dokumentation hosted_on: Mastodon, gehostet auf %{domain} - privacy_policy: Datenschutzerklärung - source_code: Quellcode - what_is_mastodon: Was ist Mastodon? + title: Über accounts: - choices_html: "%{name} empfiehlt:" - endorsements_hint: Du kannst Personen, denen du über die Weboberfläche folgst, auswählen, und sie werden hier angezeigt. - featured_tags_hint: Du kannst spezifische Hashtags, die hier angezeigt werden, angeben. follow: Folgen followers: one: Folgender other: Folgende following: Folgt instance_actor_flash: Dieses Konto ist ein virtueller Akteur, der den Server selbst repräsentiert und nicht ein einzelner Benutzer. Es wird für Föderationszwecke verwendet und sollte nicht gesperrt werden. - joined: Beigetreten am %{date} last_active: zuletzt aktiv link_verified_on: Besitz des Links wurde überprüft am %{date} - media: Medien - moved_html: "%{name} ist auf %{new_profile_link} umgezogen:" - network_hidden: Diese Informationen sind nicht verfügbar nothing_here: Hier gibt es nichts! - people_followed_by: Profile, denen %{name} folgt - people_who_follow: Profile, die %{name} folgen pin_errors: following: Du musst dieser Person bereits folgen, um sie empfehlen zu können posts: one: Beitrag other: Beiträge posts_tab_heading: Beiträge - posts_with_replies: Beiträge mit Antworten - roles: - bot: Bot - group: Gruppe - unavailable: Profil nicht verfügbar - unfollow: Entfolgen admin: account_actions: action: Aktion ausführen @@ -344,6 +324,7 @@ de: listed: Gelistet new: title: Eigenes Emoji hinzufügen + no_emoji_selected: Keine Emojis wurden geändert, da keine ausgewählt wurden not_permitted: Du bist für die Durchführung dieses Vorgangs nicht berechtigt overwrite: Überschreiben shortcode: Kürzel @@ -812,6 +793,9 @@ de: description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen. disallow: Verbiete Link disallow_provider: Verbiete Herausgeber + no_link_selected: Keine Links wurden geändert, da keine ausgewählt wurden + publishers: + no_publisher_selected: Es wurden keine Herausgeber geändert, da keine ausgewählt wurden shared_by_over_week: one: In der letzten Woche von einer Person geteilt other: In der letzten Woche von %{count} Personen geteilt @@ -831,6 +815,7 @@ de: description_html: Dies sind Beiträge, von denen dein Server weiß, dass sie derzeit viel geteilt und favorisiert werden. Es kann deinen neuen und wiederkehrenden Benutzern helfen, weitere Personen zu finden. Es werden keine Beiträge öffentlich angezeigt, bis du den Autor genehmigst und der Autor es zulässt, sein Konto anderen Benutzern zeigen zu lassen. Du kannst auch einzelne Beiträge zulassen oder ablehnen. disallow: Beitrag verbieten disallow_account: Autor verbieten + no_status_selected: Keine angesagten Beiträge wurden geändert, da keine ausgewählt wurden not_discoverable: Der Autor hat sich nicht dafür entschieden, entdeckt zu werden shared_by: one: Einmal geteilt oder favorisiert @@ -846,6 +831,7 @@ de: tag_uses_measure: Gesamtnutzungen description_html: Dies sind Hashtags, die derzeit in vielen Beiträgen erscheinen, die dein Server sieht. Es kann deinen Benutzern helfen, herauszufinden, worüber die Menschen im Moment am meisten reden. Es werden keine Hashtags öffentlich angezeigt, bis du sie genehmigst. listable: Kann vorgeschlagen werden + no_tag_selected: Keine Tags wurden geändert, da keine ausgewählt wurden not_listable: Wird nicht vorgeschlagen not_trendable: Wird nicht unter Trends angezeigt not_usable: Kann nicht verwendet werden @@ -1169,9 +1155,6 @@ de: hint: Dieser Filter wird verwendet, um einzelne Beiträge unabhängig von anderen Kriterien auszuwählen. Du kannst mehr Beiträge zu diesem Filter über die Webschnittstelle hinzufügen. title: Gefilterte Beiträge footer: - developers: Entwickler - more: Mehr… - resources: Ressourcen trending_now: In den Trends generic: all: Alle @@ -1214,7 +1197,6 @@ de: following: Folgeliste muting: Stummschaltungsliste upload: Hochladen - in_memoriam_html: In Gedenken. invites: delete: Deaktivieren expired: Abgelaufen @@ -1394,22 +1376,7 @@ de: remove_selected_follows: Entfolge ausgewählten Benutzern status: Kontostatus remote_follow: - acct: Profilname@Domain, von wo aus du dieser Person folgen möchtest missing_resource: Die erforderliche Weiterleitungs-URL für dein Konto konnte nicht gefunden werden - no_account_html: Noch kein Konto? Du kannst dich hier anmelden - proceed: Weiter - prompt: 'Du wirst dieser Person folgen:' - reason_html: "Warum ist dieser Schritt erforderlich?%{instance} ist möglicherweise nicht der Server, auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten." - remote_interaction: - favourite: - proceed: Fortfahren zum Favorisieren - prompt: 'Du möchtest diesen Beitrag favorisieren:' - reblog: - proceed: Fortfahren zum Teilen - prompt: 'Du möchtest diesen Beitrag teilen:' - reply: - proceed: Fortfahren zum Antworten - prompt: 'Du möchtest auf diesen Beitrag antworten:' reports: errors: invalid_rules: verweist nicht auf gültige Regeln diff --git a/config/locales/doorkeeper.kab.yml b/config/locales/doorkeeper.kab.yml index d179793026..ba1d7057a1 100644 --- a/config/locales/doorkeeper.kab.yml +++ b/config/locales/doorkeeper.kab.yml @@ -79,6 +79,19 @@ kab: authorized_applications: destroy: notice: Yettwaḥwi wesnas. + grouped_scopes: + title: + accounts: Imiḍanen + admin/accounts: Tadbelt n imiḍan + crypto: Awgelhen seg yixef ɣer yixef + favourites: Ismenyifen + filters: Imzizdigen + lists: Tibdarin + notifications: Tilɣa + push: Tilɣa yettudemmren + reports: Ineqqisen + search: Nadi + statuses: Tisuffaɣ layouts: admin: nav: diff --git a/config/locales/el.yml b/config/locales/el.yml index 0ed5980279..baafb1a612 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -2,45 +2,25 @@ el: about: about_mastodon_html: 'Το κοινωνικό δίκτυο του μέλλοντος: Χωρίς διαφημίσεις, χωρίς εταιρίες να σε κατασκοπεύουν, ηθικά σχεδιασμένο και αποκεντρωμένο! Με το Mastodon τα δεδομένα σου είναι πραγματικά δικά σου!' - api: API - apps: Εφαρμογές κινητών contact_missing: Δεν έχει οριστεί contact_unavailable: Μη διαθέσιμο - documentation: Τεκμηρίωση hosted_on: Το Mastodon φιλοξενείται στο %{domain} - privacy_policy: Πολιτική Απορρήτου - source_code: Πηγαίος κώδικας - what_is_mastodon: Τι είναι το Mastodon; + title: Σχετικά με accounts: - choices_html: 'Επιλογές από %{name}:' - endorsements_hint: Μπορεις να εγκρίνεις ανθρώπους που ακολουθείς μέσω της δικτυακής εφαρμογής και αυτοί θα εμφανίζονται εδώ. - featured_tags_hint: Μπορείς να επιλέξεις συγκεκριμένες ετικέτες που θα εμφανίζονται εδώ. follow: Ακολούθησε followers: one: Ακόλουθος other: Ακόλουθοι following: Ακολουθεί - joined: Εγγράφηκε στις %{date} last_active: τελευταία ενεργός/ή link_verified_on: Η κυριότητα αυτού του συνδέσμου ελέγχθηκε στις %{date} - media: Πολυμέσα - moved_html: 'Ο/Η %{name} μετακόμισε στο %{new_profile_link}:' - network_hidden: Αυτή η πληροφορία δεν είναι διαθέσιμη nothing_here: Δεν υπάρχει τίποτα εδώ! - people_followed_by: Χρήστες που ακολουθεί ο/η %{name} - people_who_follow: Χρήστες που ακολουθούν τον/την %{name} pin_errors: following: Πρέπει ήδη να ακολουθείς το άτομο που θέλεις να επιδοκιμάσεις posts: one: Τουτ other: Τουτ posts_tab_heading: Τουτ - posts_with_replies: Τουτ και απαντήσεις - roles: - bot: Μποτ (αυτόματος λογαριασμός) - group: Ομάδα - unavailable: Το προφίλ δεν είναι διαθέσιμο - unfollow: Διακοπή παρακολούθησης admin: account_actions: action: Εκτέλεση ενέργειας @@ -778,9 +758,6 @@ el: save: Αποθήκευση νέου φίλτρου title: Πρόσθεσε νέο φίλτρο footer: - developers: Ανάπτυξη - more: Περισσότερα… - resources: Πόροι trending_now: Τάσεις generic: all: Όλα @@ -812,7 +789,6 @@ el: following: Λίστα ακολούθων muting: Λίστα αποσιωπήσεων upload: Ανέβασμα - in_memoriam_html: Εις μνήμην. invites: delete: Απενεργοποίησε expired: Ληγμένη @@ -974,22 +950,7 @@ el: remove_selected_follows: Διακοπή παρακολούθησης επιλεγμένων χρηστών status: Κατάσταση λογαριασμού remote_follow: - acct: Γράψε το ΌνομαΧρήστη@τομέα από όπου θέλεις να εκτελέσεις την ενέργεια αυτή missing_resource: Δεν βρέθηκε το απαιτούμενο URL ανακατεύθυνσης για το λογαριασμό σου - no_account_html: Δεν έχεις λογαριασμό; Μπορείς να γραφτείς εδώ - proceed: Συνέχισε για να ακολουθήσεις - prompt: 'Ετοιμάζεσαι να ακολουθήσεις:' - reason_html: "Γιατί χρειάζεται αυτό το βήμα; Το %{instance} μπορεί να μην είναι ο κόμβος που έχεις γραφτεί, έτσι πρέπει να σε ανακατευθύνουμε στο δικό σου." - remote_interaction: - favourite: - proceed: Συνέχισε για σημείωση ως αγαπημένου - prompt: 'Θέλεις να σημειώσεις ως αγαπημένο αυτό το τουτ:' - reblog: - proceed: Συνέχισε για προώθηση - prompt: 'Θέλεις να προωθήσεις αυτό το τουτ:' - reply: - proceed: Συνέχισε για να απαντήσεις - prompt: 'Θέλεις να απαντήσεις σε αυτό το τουτ:' reports: errors: invalid_rules: δεν παραπέμπει σε έγκυρους κανόνες diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 35e29ef3df..c62c02eef4 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -2,43 +2,25 @@ eo: about: about_mastodon_html: 'Mastodon estas socia retejo de la estonteco: sen reklamo, sen kompania gvato, etika dezajno kaj malcentraligo! Vi regu viajn datumojn kun Mastodon!' - api: API - apps: Poŝtelefonaj aplikaĵoj contact_missing: Ne ŝargita contact_unavailable: Ne disponebla - documentation: Dokumentado hosted_on: "%{domain} estas nodo de Mastodon" - source_code: Fontkodo - what_is_mastodon: Kio estas Mastodon? accounts: - choices_html: 'Proponoj de %{name}:' follow: Sekvi followers: one: Sekvanto other: Sekvantoj following: Sekvatoj instance_actor_flash: Ĉi tiu konto estas virtuala agento uzata por reprezenti la servilon mem kaj neniu individua uzanto. Ĝi estas uzata por celoj de la federaĵo kaj devas ne esti suspendita. - joined: Aliĝis je %{date} last_active: laste aktiva link_verified_on: Proprieto de ĉi tiu ligilo estis kontrolita je %{date} - media: Aŭdovidaĵoj - moved_html: "%{name} moviĝis al %{new_profile_link}:" - network_hidden: Tiu informo ne estas disponebla nothing_here: Estas nenio ĉi tie! - people_followed_by: Sekvatoj de %{name} - people_who_follow: Sekvantoj de %{name} pin_errors: following: Vi devas sekvi la homon, kiun vi volas proponi posts: one: Mesaĝo other: Mesaĝoj posts_tab_heading: Mesaĝoj - posts_with_replies: Mesaĝoj kaj respondoj - roles: - bot: Roboto - group: Grupo - unavailable: Profilo ne disponebla - unfollow: Ne plu sekvi admin: account_actions: action: Plenumi agon @@ -810,9 +792,6 @@ eo: save: Konservi novan filtrilon title: Aldoni novan filtrilon footer: - developers: Programistoj - more: Pli… - resources: Rimedoj trending_now: Nunaj furoraĵoj generic: all: Ĉio @@ -843,7 +822,6 @@ eo: following: Listo de sekvatoj muting: Listo de silentigitoj upload: Alŝuti - in_memoriam_html: Memore invites: delete: Malaktivigi expired: Eksvalida @@ -993,22 +971,7 @@ eo: remove_selected_follows: Ne plu sekvi elektitajn uzantojn status: Statuso de la konto remote_follow: - acct: Enmetu vian uzantnomo@domajno de kie vi volas agi missing_resource: La bezonata URL de plusendado por via konto ne estis trovita - no_account_html: Ĉu vi ne havas konton? Vi povas registriĝi tie - proceed: Daŭrigi por eksekvi - prompt: 'Vi eksekvos:' - reason_html: "Kial necesas ĉi tiu paŝo?%{instance} povus ne esti la servilo, kie vi registriĝis, do ni unue bezonas alidirekti vin al via hejma servilo." - remote_interaction: - favourite: - proceed: Konfirmi la stelumon - prompt: 'Vi volas aldoni ĉi tiun mesaĝon al viaj preferaĵoj:' - reblog: - proceed: Procedi pri la suprenigo - prompt: 'Vi deziras suprenigi ĉi tiun mesaĝon:' - reply: - proceed: Konfirmi la respondon - prompt: 'Vi volas respondi al ĉi tiu mesaĝo:' rss: content_warning: 'Averto pri enhavo:' scheduled_statuses: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index d6de0f1d9e..111567766a 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -2,46 +2,26 @@ es-AR: about: about_mastodon_html: 'La red social del futuro: ¡sin publicidad, sin vigilancia corporativa, con diseño ético y descentralización! ¡Con Mastodon vos sos el dueño de tus datos!' - api: API - apps: Aplicaciones móviles contact_missing: No establecido contact_unavailable: No disponible - documentation: Documentación hosted_on: Mastodon alojado en %{domain} - privacy_policy: Política de privacidad - source_code: Código fuente - what_is_mastodon: "¿Qué es Mastodon?" + title: Información accounts: - choices_html: 'Recomendados de %{name}:' - endorsements_hint: Podés recomendar, desde la interface web, a cuentas que seguís, y van a aparecer acá. - featured_tags_hint: Podés destacar etiquetas específicas que se mostrarán acá. follow: Seguir followers: one: Seguidor other: Seguidores following: Siguiendo instance_actor_flash: Esta cuenta es un actor virtual usado para representar al servidor en sí mismo y no a ningún usuario individual. Se usa para propósitos de la federación y no debe ser suspendido. - joined: En este servidor desde %{date} last_active: última actividad link_verified_on: La propiedad de este enlace fue verificada el %{date} - media: Medios - moved_html: "%{name} se mudó a %{new_profile_link}:" - network_hidden: Esta información no está disponible nothing_here: "¡No hay nada acá!" - people_followed_by: "%{name} sigue a estas personas" - people_who_follow: Estas personas siguen a %{name} pin_errors: following: Ya tenés que estar siguiendo a la cuenta que querés recomendar posts: one: Mensaje other: Mensajes posts_tab_heading: Mensajes - posts_with_replies: Mensajes y respuestas - roles: - bot: Bot - group: Grupo - unavailable: Perfil no disponible - unfollow: Dejar de seguir admin: account_actions: action: Ejecutar acción @@ -344,6 +324,7 @@ es-AR: listed: Listados new: title: Agregar nuevo emoji personalizado + no_emoji_selected: No se cambió ningún emoji, ya que ninguno fue seleccionado not_permitted: No tenés permiso para realizar esta acción overwrite: Sobreescribir shortcode: Código corto @@ -812,6 +793,9 @@ es-AR: description_html: Estos son enlaces que actualmente están siendo muy compartidos por cuentas desde las que tu servidor ve los mensajes. Esto puede ayudar a tus usuarios a averiguar qué está pasando en el mundo. No hay enlaces que se muestren públicamente hasta que autoricés al publicador. También podés permitir o rechazar enlaces individuales. disallow: Rechazar enlace disallow_provider: Rechazar medio + no_link_selected: No se cambió ningún enlace, ya que ninguno fue seleccionado + publishers: + no_publisher_selected: No se cambió ningún medio, ya que ninguno fue seleccionado shared_by_over_week: one: Compartido por una persona durante la última semana other: Compartido por %{count} personas durante la última semana @@ -831,6 +815,7 @@ es-AR: description_html: Estos son mensajes que tu servidor detecta que están siendo compartidos y marcados como favoritos muchas veces en este momento. Esto puede ayudar a tus usuarios nuevos y retornantes a encontrar más cuentas para seguir. No hay mensajes que se muestren públicamente hasta que aprobés al autor, y el autor permita que su cuenta sea sugerida a otros. También podés permitir o rechazar mensajes individuales. disallow: Rechazar mensaje disallow_account: Rechazar autor + no_status_selected: No se cambió ningún mensaje en tendencia, ya que ninguno fue seleccionado not_discoverable: El autor optó ser detectable shared_by: one: Compartido o marcado como favorito una vez @@ -846,6 +831,7 @@ es-AR: tag_uses_measure: usos totales description_html: Estas son etiquetas que están apareciendo en muchos mensajes que tu servidor ve. Esto puede ayudar a tus usuarios a averiguar de qué habla la gente en estos momentos. No hay etiquetas que se muestren públicamente hasta que las aprobés. listable: Pueden ser recomendadas + no_tag_selected: No se cambió ninguna etiqueta, ya que ninguna fue seleccionada not_listable: No serán recomendadas not_trendable: No aparecerán en tendencias not_usable: No podrán ser usadas @@ -1169,9 +1155,6 @@ es-AR: hint: Este filtro se aplica a la selección de mensajes individuales, independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web. title: Mensajes filtrados footer: - developers: Desarrolladores - more: Más… - resources: Recursos trending_now: Tendencia ahora generic: all: Todas @@ -1214,7 +1197,6 @@ es-AR: following: Lista de seguidos muting: Lista de silenciados upload: Subir - in_memoriam_html: Cuenta conmemorativa. invites: delete: Desactivar expired: Vencidas @@ -1394,22 +1376,7 @@ es-AR: remove_selected_follows: Dejar de seguir a los usuarios seleccionados status: Estado de la cuenta remote_follow: - acct: Ingresá tu usuario@dominio desde el que querés continuar missing_resource: No se pudo encontrar la dirección web de redireccionamiento requerida para tu cuenta - no_account_html: "¿No tenés cuenta? Podés registrarte acá" - proceed: Proceder para seguir - prompt: 'Vas a seguir a:' - reason_html: "¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." - remote_interaction: - favourite: - proceed: Proceder para marcar como favorito - prompt: 'Vas a marcar este mensaje como favorito:' - reblog: - proceed: Proceder para adherir - prompt: 'Vas a adherir a este mensaje:' - reply: - proceed: Proceder para responder - prompt: 'Vas a responder a este mensaje:' reports: errors: invalid_rules: no hace referencia a reglas válidas diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index fcaa0b6fa4..45ca39d1ba 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -2,46 +2,26 @@ es-MX: about: about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' - api: API - apps: Aplicaciones móviles contact_missing: No especificado contact_unavailable: No disponible - documentation: Documentación hosted_on: Mastodon hosteado en %{domain} - privacy_policy: Política de Privacidad - source_code: Código fuente - what_is_mastodon: "¿Qué es Mastodon?" + title: Acerca de accounts: - choices_html: 'Elecciones de %{name}:' - endorsements_hint: Puedes recomendar a gente que sigues desde la interfaz web, y aparecerán allí. - featured_tags_hint: Puede presentar hashtags específicos que se mostrarán aquí. follow: Seguir followers: one: Seguidor other: Seguidores following: Siguiendo instance_actor_flash: Esta cuenta es un actor virtual utilizado para representar al servidor en sí mismo y no a ningún usuario individual. Se utiliza para propósitos de la federación y no se debe suspender. - joined: Se unió el %{date} last_active: última conexión link_verified_on: La propiedad de este vínculo fue verificada el %{date} - media: Multimedia - moved_html: "%{name} se ha trasladado a %{new_profile_link}:" - network_hidden: Esta información no está disponible nothing_here: "¡No hay nada aquí!" - people_followed_by: Usuarios a quien %{name} sigue - people_who_follow: Usuarios que siguen a %{name} pin_errors: following: Debes estar siguiendo a la persona a la que quieres aprobar posts: one: Toot other: Toots posts_tab_heading: Toots - posts_with_replies: Toots con respuestas - roles: - bot: Bot - group: Grupo - unavailable: Perfil no disponible - unfollow: Dejar de seguir admin: account_actions: action: Realizar acción @@ -344,6 +324,7 @@ es-MX: listed: Listados new: title: Añadir nuevo emoji personalizado + no_emoji_selected: No se cambió ningún emoji ya que no se seleccionó ninguno not_permitted: No tienes permiso para realizar esta acción overwrite: Sobrescribir shortcode: Código de atajo @@ -812,6 +793,9 @@ es-MX: description_html: Estos son enlaces que actualmente están siendo compartidos mucho por las cuentas desde las que tu servidor ve los mensajes. Pueden ayudar a tus usuarios a averiguar qué está pasando en el mundo. Ningún enlace se muestren públicamente hasta que autorice al dominio. También puede permitir o rechazar enlaces individuales. disallow: Rechazar enlace disallow_provider: Rechazar editor + no_link_selected: No se cambió ningún enlace ya que no se seleccionó ninguno + publishers: + no_publisher_selected: No se cambió ningún editor ya que no se seleccionó ninguno shared_by_over_week: one: Compartido por una persona durante la última semana other: Compartido por %{count} personas durante la última semana @@ -831,6 +815,7 @@ es-MX: description_html: Estos son publicaciones que su servidor conoce que están siendo compartidas y marcadas como favoritas mucho en este momento. Pueden ayudar a tus usuarios nuevos y retornantes a encontrar más gente a la que seguir. No hay mensajes que se muestren públicamente hasta que apruebes el autor y el autor permita que su cuenta sea sugerida a otros. También puedes permitir o rechazar mensajes individuales. disallow: Rechazar publicación disallow_account: No permitir autor + no_status_selected: No se cambió ninguna publicación en tendencia ya que no se seleccionó ninguna not_discoverable: El autor no ha optado por ser detectable shared_by: one: Compartido o marcado como favorito una vez @@ -846,6 +831,7 @@ es-MX: tag_uses_measure: usuarios totales description_html: Estos son etiquetas que están apareciendo en muchos posts que tu servidor ve. Pueden ayudar a tus usuarios a averiguar de qué habla más gente en estos momentos. No hay hashtags que se muestren públicamente hasta que los apruebes. listable: Pueden ser recomendadas + no_tag_selected: No se cambió ninguna etiqueta ya que no se seleccionó ninguna not_listable: No serán recomendadas not_trendable: No aparecerán en tendencias not_usable: No pueden ser usadas @@ -1169,9 +1155,6 @@ es-MX: hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. title: Publicaciones filtradas footer: - developers: Desarrolladores - more: Mas… - resources: Recursos trending_now: Tendencia ahora generic: all: Todos @@ -1214,7 +1197,6 @@ es-MX: following: Lista de seguidos muting: Lista de silenciados upload: Cargar - in_memoriam_html: En memoria. invites: delete: Desactivar expired: Expiradas @@ -1394,22 +1376,7 @@ es-MX: remove_selected_follows: Dejar de seguir a los usuarios seleccionados status: Estado de la cuenta remote_follow: - acct: Ingresa tu usuario@dominio desde el que quieres seguir missing_resource: No se pudo encontrar la URL de redirección requerida para tu cuenta - no_account_html: "¿No tienes una cuenta? Puedes registrarte aqui" - proceed: Proceder a seguir - prompt: 'Vas a seguir a:' - reason_html: "¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." - remote_interaction: - favourite: - proceed: Proceder a marcar como favorito - prompt: 'Quieres marcar como favorito este toot:' - reblog: - proceed: Proceder a retootear - prompt: 'Quieres retootear este toot:' - reply: - proceed: Proceder a responder - prompt: 'Quieres responder a este toot:' reports: errors: invalid_rules: no hace referencia a reglas válidas diff --git a/config/locales/es.yml b/config/locales/es.yml index 46866fdd87..2be153de01 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -2,46 +2,26 @@ es: about: about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!' - api: API - apps: Aplicaciones móviles contact_missing: No especificado contact_unavailable: No disponible - documentation: Documentación hosted_on: Mastodon alojado en %{domain} - privacy_policy: Política de Privacidad - source_code: Código fuente - what_is_mastodon: "¿Qué es Mastodon?" + title: Acerca de accounts: - choices_html: 'Elecciones de %{name}:' - endorsements_hint: Puedes recomendar a gente que sigues desde la interfaz web, y aparecerán allí. - featured_tags_hint: Puede presentar hashtags específicos que se mostrarán aquí. follow: Seguir followers: one: Seguidor other: Seguidores following: Siguiendo instance_actor_flash: Esta cuenta es un actor virtual utilizado para representar al servidor en sí mismo y no a ningún usuario individual. Se utiliza para propósitos de la federación y no se debe suspender. - joined: Se unió el %{date} last_active: última conexión link_verified_on: La propiedad de este vínculo fue verificada el %{date} - media: Multimedia - moved_html: "%{name} se ha trasladado a %{new_profile_link}:" - network_hidden: Esta información no está disponible nothing_here: "¡No hay nada aquí!" - people_followed_by: Usuarios a quien %{name} sigue - people_who_follow: Usuarios que siguen a %{name} pin_errors: following: Debes estar siguiendo a la persona a la que quieres aprobar posts: one: Publicación other: Publicaciones posts_tab_heading: Publicaciones - posts_with_replies: Publicaciones y respuestas - roles: - bot: Bot - group: Grupo - unavailable: Perfil no disponible - unfollow: Dejar de seguir admin: account_actions: action: Realizar acción @@ -344,6 +324,7 @@ es: listed: Listados new: title: Añadir nuevo emoji personalizado + no_emoji_selected: No se cambió ningún emoji ya que no se seleccionó ninguno not_permitted: No tienes permiso para realizar esta acción overwrite: Sobrescribir shortcode: Código de atajo @@ -812,6 +793,9 @@ es: description_html: Estos son enlaces que actualmente están siendo compartidos mucho por las cuentas desde las que tu servidor ve los mensajes. Pueden ayudar a tus usuarios a averiguar qué está pasando en el mundo. Ningún enlace se muestren públicamente hasta que autorice al dominio. También puede permitir o rechazar enlaces individuales. disallow: Rechazar enlace disallow_provider: Rechazar medio + no_link_selected: No se cambió ningún enlace ya que no se seleccionó ninguno + publishers: + no_publisher_selected: No se cambió ningún editor ya que no se seleccionó ninguno shared_by_over_week: one: Compartido por una persona durante la última semana other: Compartido por %{count} personas durante la última semana @@ -831,6 +815,7 @@ es: description_html: Estos son publicaciones que su servidor conoce que están siendo compartidas y marcadas como favoritas mucho en este momento. Pueden ayudar a tus usuarios nuevos y retornantes a encontrar más gente a la que seguir. No hay mensajes que se muestren públicamente hasta que apruebes el autor y el autor permita que su cuenta sea sugerida a otros. También puedes permitir o rechazar mensajes individuales. disallow: No permitir publicación disallow_account: No permitir autor + no_status_selected: No se cambió ninguna publicación en tendencia ya que no se seleccionó ninguna not_discoverable: El autor no ha optado por ser detectable shared_by: one: Compartido o marcado como favorito una vez @@ -846,6 +831,7 @@ es: tag_uses_measure: usos totales description_html: Estos son etiquetas que están apareciendo en muchos posts que tu servidor ve. Pueden ayudar a tus usuarios a averiguar de qué habla más gente en estos momentos. No hay hashtags que se muestren públicamente hasta que los apruebes. listable: Pueden ser recomendadas + no_tag_selected: No se cambió ninguna etiqueta ya que no se seleccionó ninguna not_listable: No serán recomendadas not_trendable: No aparecerán en tendencias not_usable: No pueden ser usadas @@ -1169,9 +1155,6 @@ es: hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web. title: Publicaciones filtradas footer: - developers: Desarrolladores - more: Mas… - resources: Recursos trending_now: Tendencia ahora generic: all: Todos @@ -1214,7 +1197,6 @@ es: following: Lista de seguidos muting: Lista de silenciados upload: Cargar - in_memoriam_html: En memoria. invites: delete: Desactivar expired: Expiradas @@ -1394,22 +1376,7 @@ es: remove_selected_follows: Dejar de seguir a los usuarios seleccionados status: Estado de la cuenta remote_follow: - acct: Ingresa tu usuario@dominio desde el que quieres seguir missing_resource: No se pudo encontrar la URL de redirección requerida para tu cuenta - no_account_html: "¿No tienes una cuenta? Puedes registrarte aqui" - proceed: Proceder a seguir - prompt: 'Vas a seguir a:' - reason_html: "¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen." - remote_interaction: - favourite: - proceed: Proceder a marcar como favorito - prompt: 'Quieres marcar como favorita esta publicación:' - reblog: - proceed: Proceder a retootear - prompt: 'Quieres retootear esta publicación:' - reply: - proceed: Proceder a responder - prompt: 'Quieres responder a esta publicación:' reports: errors: invalid_rules: no hace referencia a reglas válidas diff --git a/config/locales/et.yml b/config/locales/et.yml index 65c74774e1..2135b7bfb7 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -2,44 +2,24 @@ et: about: about_mastodon_html: 'Tuleviku sotsiaalvõrgustik: Reklaamivaba, korporatiivse järelvalveta, eetiline kujundus ning detsentraliseeritus! Oma enda andmeid Mastodonis!' - api: API - apps: Mobiilirakendused contact_missing: Määramata contact_unavailable: Pole saadaval - documentation: Dokumentatsioon hosted_on: Mastodon majutatud %{domain}-is - source_code: Lähtekood - what_is_mastodon: Mis on Mastodon? accounts: - choices_html: "%{name}-i valikud:" - endorsements_hint: Te saate heaks kiita inimesi, keda jälgite, veebiliidesest ning neid kuvatakse siin. - featured_tags_hint: Te saate valida kindlaid silte, mida kuvatakse siin. follow: Jälgi followers: one: Jälgija other: Jälgijaid following: Jälgib - joined: Liitus %{date} last_active: viimati aktiivne link_verified_on: Selle lingi autorsust kontrolliti %{date} - media: Meedia - moved_html: "%{name} kolis %{new_profile_link}:" - network_hidden: Neid andmeid pole saadaval nothing_here: Siin pole midagi! - people_followed_by: Inimesed, keda %{name} jälgib - people_who_follow: Inimesed, kes jälgivad kasutajat %{name} pin_errors: following: Te peate juba olema selle kasutaja jälgija, keda te heaks kiidate posts: one: Postitus other: Postitused posts_tab_heading: Postitused - posts_with_replies: Postitused ja vastused - roles: - bot: Robot - group: Grupp - unavailable: Profiil pole saadaval - unfollow: Lõpeta jälgimine admin: account_actions: action: Täida tegevus @@ -612,9 +592,6 @@ et: new: title: Lisa uus filter footer: - developers: Arendajad - more: Rohkem… - resources: Materjalid trending_now: Praegu trendikad generic: all: Kõik @@ -642,7 +619,6 @@ et: following: Jälgimiste nimekiri muting: Vaigistuse nimekiri upload: Lae üles - in_memoriam_html: Mälestamaks. invites: delete: Peata expired: Aegunud @@ -780,24 +756,7 @@ et: remove_selected_follows: Lõpeta valitud kasutajate jälgimine status: Konto olek remote_follow: - acct: Sisestage oma kasutajanimi@domeen, kust te soovite jälgida missing_resource: Ei suutnud leida vajalikku suunamise URLi Teie konto jaoks - no_account_html: Teil pole veel kontot? Saate luua ühe siit - proceed: Jätka jälgimiseks - prompt: 'Te hakkate jälgima:' - reason_html: |- - Miks on see samm vajalik? - %{instance} ei pruugi olla server, kus asub Teie konto, nii et me peame Teid suunama oma kodu serverile. - remote_interaction: - favourite: - proceed: Jätka lemmikuks lisamiseks - prompt: 'Te soovite lisada seda tuututust lemmikutesse:' - reblog: - proceed: Jätka upitamiseks - prompt: 'Te soovite seda tuututust upitada:' - reply: - proceed: Jätka vastamiseks - prompt: 'Te soovite vastata sellele tuututusele:' scheduled_statuses: over_daily_limit: Te olete jõudnud maksimum lubatud ajastatud tuututuste arvuni %{limit} selle päeva kohta over_total_limit: Te olete jõudnud maksimum lubatud ajastatud tuututuste arvuni %{limit} diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 21bdf5c98b..edfaffc370 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -2,45 +2,25 @@ eu: about: about_mastodon_html: 'Etorkizuneko sare soziala: ez iragarkirik eta ez zelatatze korporatiborik, diseinu etikoa eta deszentralizazioa! Izan zure datuen jabea Mastodonekin!' - api: APIa - apps: Aplikazio mugikorrak contact_missing: Ezarri gabe contact_unavailable: E/E - documentation: Dokumentazioa hosted_on: Mastodon %{domain} domeinuan ostatatua - source_code: Iturburu kodea - what_is_mastodon: Zer da Mastodon? accounts: - choices_html: "%{name}(r)en aukerak:" - endorsements_hint: Jarraitzen duzun jendea sustatu dezakezu web interfazearen bidez, eta hemen agertuko da. - featured_tags_hint: Hemen agertuko diren traolak nabarmendu ditzakezu. follow: Jarraitu followers: one: Jarraitzaile other: jarraitzaile following: Jarraitzen instance_actor_flash: Kontu hau zerbitzaria adierazten duen aktore birtual bat da eta ez banako erabiltzaile bat. Federatzeko helburuarekin erabiltzen da eta ez da kanporatu behar. - joined: "%{date}(e)an elkartua" last_active: azkenekoz aktiboa link_verified_on: 'Esteka honen jabetzaren egiaztaketa data: %{date}' - media: Multimedia - moved_html: "%{name} hona migratu da %{new_profile_link}:" - network_hidden: Informazio hau ez dago eskuragarri nothing_here: Ez dago ezer hemen! - people_followed_by: "%{name}(e)k jarraitzen dituenak" - people_who_follow: "%{name} jarraitzen dutenak" pin_errors: following: Onetsi nahi duzun pertsona aurretik jarraitu behar duzu posts: one: Bidalketa other: Bidalketa posts_tab_heading: Bidalketa - posts_with_replies: Bidalketak eta erantzunak - roles: - bot: Bot-a - group: Taldea - unavailable: Profila ez dago eskuragarri - unfollow: Utzi jarraitzeari admin: account_actions: action: Burutu ekintza @@ -944,9 +924,6 @@ eu: new: title: Gehitu iragazki berria footer: - developers: Garatzaileak - more: Gehiago… - resources: Baliabideak trending_now: Joera orain generic: all: Denak @@ -979,7 +956,6 @@ eu: following: Jarraitutakoen zerrenda muting: Mutututakoen zerrenda upload: Igo - in_memoriam_html: Memoriala. invites: delete: Desaktibatu expired: Iraungitua @@ -1150,22 +1126,7 @@ eu: remove_selected_follows: Utzi hautatutako erabiltzaileak jarraitzeari status: Kontuaren egoera remote_follow: - acct: Sartu jarraitzeko erabili nahi duzun erabiltzaile@domeinua missing_resource: Ezin izan da zure konturako behar den birbideratze URL-a - no_account_html: Ez duzu konturik? Izena eman dezakezu - proceed: Ekin jarraitzeari - prompt: 'Hau jarraituko duzu:' - reason_html: "Zergaitik eman behar da urrats hau?%{instance} agian ez da izena eman duzun zerbitzaria, eta zure hasiera-zerbitzarira eraman behar zaitugu aurretik." - remote_interaction: - favourite: - proceed: Bihurtu gogoko - prompt: 'Bidalketa hau gogoko bihurtu nahi duzu:' - reblog: - proceed: Eman bultzada - prompt: 'Bidalketa honi bultzada eman nahi diozu:' - reply: - proceed: Ekin erantzuteari - prompt: 'Bidalketa honi erantzun nahi diozu:' scheduled_statuses: over_daily_limit: 'Egun horretarako programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}' over_total_limit: 'Programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}' diff --git a/config/locales/fa.yml b/config/locales/fa.yml index a280fef511..c1979a1a6a 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -2,45 +2,25 @@ fa: about: about_mastodon_html: 'شبکهٔ اجتماعی آینده: بدون تبلیغات، بدون شنود از طرف شرکت‌ها، طراحی اخلاق‌مدار، و معماری غیرمتمرکز! با ماستودون صاحب داده‌های خودتان باشید!' - api: رابط برنامه‌نویسی کاربردی - apps: اپ‌های موبایل contact_missing: تنظیم نشده contact_unavailable: موجود نیست - documentation: مستندات hosted_on: ماستودون، میزبانی‌شده روی %{domain} - source_code: کدهای منبع - what_is_mastodon: ماستودون چیست؟ accounts: - choices_html: 'انتخاب‌های %{name}:' - endorsements_hint: شما می‌توانید از محیط وب ماستودون، کسانی را که پی می‌گیرید به دیگران هم پیشنهاد دهید تا این‌جا نشان داده شوند. - featured_tags_hint: می‌توانید برچسب‌های خاصی را مشخّص کنید تا این‌جا دیده شوند. follow: پیگیری followers: one: پیگیر other: پیگیر following: پی می‌گیرد instance_actor_flash: این حساب یک عامل مجازی است که به نمایندگی از خود کارساز استفاده می‌شود و نه هیچ یکی از کاربران. این حساب به منظور اتصال به فدراسیون استفاده می‌شود و نباید معلق شود. - joined: پیوسته از %{date} last_active: آخرین فعالیت link_verified_on: مالکیت این پیوند در %{date} بررسی شد - media: عکس و ویدیو - moved_html: "%{name} حساب خود را به %{new_profile_link} منتقل کرده است:" - network_hidden: این اطلاعات در دسترس نیست nothing_here: این‌جا چیزی نیست! - people_followed_by: کسانی که %{name} پی می‌گیرد - people_who_follow: کسانی که %{name} را پی می‌گیرند pin_errors: following: باید کاربری که می‌خواهید پیشنهاد دهید را دنبال کرده باشید posts: one: فرسته other: فرسته‌ها posts_tab_heading: فرسته‌ها - posts_with_replies: فرسته‌ها و پاسخ‌ها - roles: - bot: ربات - group: گروه - unavailable: نمایهٔ ناموجود - unfollow: پایان پیگیری admin: account_actions: action: انجامِ کنش @@ -904,9 +884,6 @@ fa: new: title: افزودن پالایهٔ جدید footer: - developers: برنامه‌نویسان - more: بیشتر… - resources: منابع trending_now: پرطرفدار generic: all: همه @@ -939,7 +916,6 @@ fa: following: سیاههٔ پی‌گیری muting: سیاههٔ خموشی upload: بارگذاری - in_memoriam_html: به یادبود. invites: delete: غیرفعال‌سازی expired: منقضی‌شده @@ -1113,22 +1089,7 @@ fa: remove_selected_follows: به پیگیری از کاربران انتخاب‌شده پایان بده status: وضعیت حساب remote_follow: - acct: نشانی حساب username@domain خود را این‌جا بنویسید missing_resource: نشانی اینترنتی برای رسیدن به حساب شما پیدا نشد - no_account_html: هنوز عضو نیستید؟ این‌جا می‌توانید حساب باز کنید - proceed: درخواست پیگیری - prompt: 'شما قرار است این حساب را پیگیری کنید:' - reason_html: "چرا این گام ضروریست؟ ممکن است %{instance} کارسازی نباشد که شما رویش حساب دارید؛ پس لازم است پیش از هرچیز، به کارساز خودتان هدایتتان کنیم." - remote_interaction: - favourite: - proceed: به سمت پسندیدن - prompt: 'شما می‌خواهید این فرسته را بپسندید:' - reblog: - proceed: به سمت تقویت - prompt: 'شما می‌خواهید این فرسته را تقویت کنید:' - reply: - proceed: به سمت پاسخ‌دادن - prompt: 'شما می‌خواهید به این فرسته پاسخ دهید:' scheduled_statuses: over_daily_limit: شما از حد مجاز %{limit} فرسته زمان‌بندی‌شده در آن روز فراتر رفته‌اید over_total_limit: شما از حد مجاز %{limit} فرسته زمان‌بندی‌شده فراتر رفته‌اید diff --git a/config/locales/fi.yml b/config/locales/fi.yml index f3c4db9916..fe8d77158e 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -2,45 +2,25 @@ fi: about: about_mastodon_html: 'Tulevaisuuden sosiaalinen verkosto: Ei mainoksia, ei valvontaa, toteutettu avoimilla protokollilla ja hajautettu! Pidä tietosi ominasi Mastodonilla!' - api: Rajapinta - apps: Mobiilisovellukset contact_missing: Ei asetettu contact_unavailable: Ei saatavilla - documentation: Dokumentaatio hosted_on: Mastodon palvelimella %{domain} - source_code: Lähdekoodi - what_is_mastodon: Mikä on Mastodon? accounts: - choices_html: "%{name} valinnat:" - endorsements_hint: Voit suositella seuraamiasi henkilöitä web käyttöliittymän kautta, ne tulevat näkymään tähän. - featured_tags_hint: Voit käyttää tiettyjä aihesanoja, jotka näytetään täällä. follow: Seuraa followers: one: Seuraaja other: Seuraajat following: Seuratut instance_actor_flash: Tämä on virtuaalitili, jota käytetään edustamaan itse palvelinta eikä yksittäistä käyttäjää. Sitä käytetään yhdistämistarkoituksiin, eikä sitä tule keskeyttää. - joined: Liittynyt %{date} last_active: viimeksi aktiivinen link_verified_on: Tämän linkin omistus on tarkastettu %{date} - media: Media - moved_html: "%{name} on muuttanut osoitteeseen %{new_profile_link}:" - network_hidden: Nämä tiedot eivät ole käytettävissä nothing_here: Täällä ei ole mitään! - people_followed_by: Henkilöt, joita %{name} seuraa - people_who_follow: Käyttäjän %{name} seuraajat pin_errors: following: Sinun täytyy seurata henkilöä jota haluat tukea posts: one: Julkaisu other: Julkaisut posts_tab_heading: Julkaisut - posts_with_replies: Julkaisut ja vastaukset - roles: - bot: Botti - group: Ryhmä - unavailable: Profiili ei saatavilla - unfollow: Lopeta seuraaminen admin: account_actions: action: Suorita toimenpide @@ -1148,9 +1128,6 @@ fi: hint: Tämä suodatin koskee yksittäisten viestien valintaa muista kriteereistä riippumatta. Voit lisätä lisää viestejä tähän suodattimeen web-käyttöliittymästä. title: Suodatetut viestit footer: - developers: Kehittäjille - more: Lisää… - resources: Resurssit trending_now: Suosittua nyt generic: all: Kaikki @@ -1183,7 +1160,6 @@ fi: following: Seurattujen lista muting: Mykistettyjen lista upload: Lähetä - in_memoriam_html: Muistoissamme. invites: delete: Poista käytöstä expired: Vanhentunut @@ -1361,22 +1337,7 @@ fi: remove_selected_follows: Lopeta valittujen käyttäjien seuraaminen status: Tilin tila remote_follow: - acct: Syötä se käyttäjätunnus@verkkotunnus, josta haluat seurata missing_resource: Vaadittavaa uudelleenohjaus-URL:ää tiliisi ei löytynyt - no_account_html: Eikö sinulla ole tiliä? Voit rekisteröityä täällä - proceed: Siirry seuraamaan - prompt: 'Olet aikeissa seurata:' - reason_html: "Miksi tämä vaihe on tarpeen? %{instance} ei ehkä ole se palvelin, jolle olet rekisteröitynyt, joten meidän täytyy ensin ohjata sinut kotipalvelimellesi." - remote_interaction: - favourite: - proceed: Jatka suosikiksi lisäämiseen - prompt: 'Haluat lisätä suosikiksi julkaisun:' - reblog: - proceed: Jatka buustaamiseen - prompt: 'Haluat buustata julkaisun:' - reply: - proceed: Jatka vastaamiseen - prompt: 'Haluat vastata julkaisuun:' reports: errors: invalid_rules: ei viittaa voimassa oleviin sääntöihin diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 064037d809..4b3c53db3e 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -2,46 +2,25 @@ fr: about: about_mastodon_html: 'Le réseau social de l''avenir : pas de publicité, pas de surveillance institutionnelle, conception éthique et décentralisation ! Gardez le contrôle de vos données avec Mastodon !' - api: API - apps: Applications mobiles contact_missing: Non défini contact_unavailable: Non disponible - documentation: Documentation hosted_on: Serveur Mastodon hébergé sur %{domain} - privacy_policy: Politique de confidentialité - source_code: Code source - what_is_mastodon: Qu’est-ce que Mastodon ? accounts: - choices_html: "%{name} recommande :" - endorsements_hint: Vous pouvez recommander des personnes que vous suivez depuis l’interface web, et elles apparaîtront ici. - featured_tags_hint: Vous pouvez mettre en avant certains hashtags qui seront affichés ici. follow: Suivre followers: one: Abonné·e other: Abonné·e·s following: Abonnements instance_actor_flash: Ce compte est un acteur virtuel utilisé pour représenter le serveur lui-même et non un utilisateur individuel. Il est utilisé à des fins de fédération et ne doit pas être suspendu. - joined: Inscrit·e en %{date} last_active: dernière activité link_verified_on: La propriété de ce lien a été vérifiée le %{date} - media: Médias - moved_html: "%{name} a changé de compte pour %{new_profile_link} :" - network_hidden: Cette information n’est pas disponible nothing_here: Rien à voir ici ! - people_followed_by: Personnes suivies par %{name} - people_who_follow: Personnes qui suivent %{name} pin_errors: following: Vous devez être déjà abonné·e à la personne que vous désirez recommander posts: one: Message other: Messages posts_tab_heading: Messages - posts_with_replies: Messages et réponses - roles: - bot: Robot - group: Groupe - unavailable: Profil non disponible - unfollow: Ne plus suivre admin: account_actions: action: Effectuer l'action @@ -1156,9 +1135,6 @@ fr: index: title: Messages filtrés footer: - developers: Développeurs - more: Davantage… - resources: Ressources trending_now: Tendance en ce moment generic: all: Tous @@ -1192,7 +1168,6 @@ fr: following: Liste d’utilisateur·rice·s suivi·e·s muting: Liste d’utilisateur·rice·s que vous masquez upload: Importer - in_memoriam_html: En mémoire de. invites: delete: Désactiver expired: Expiré @@ -1372,22 +1347,7 @@ fr: remove_selected_follows: Ne plus suivre les comptes sélectionnés status: État du compte remote_follow: - acct: Entrez l’adresse profil@serveur depuis laquelle vous voulez effectuer cette action missing_resource: L’URL de redirection requise pour votre compte n’a pas pu être trouvée - no_account_html: Vous n’avez pas de compte ? Vous pouvez vous inscrire ici - proceed: Confirmer l’abonnement - prompt: 'Vous allez suivre :' - reason_html: "Pourquoi cette étape est-elle nécessaire? %{instance} pourrait ne pas être le serveur sur lequel vous vous êtes inscrit·e, et nous devons donc vous rediriger vers votre serveur de base en premier." - remote_interaction: - favourite: - proceed: Confirmer l’ajout aux favoris - prompt: 'Vous souhaitez ajouter ce message à vos favoris :' - reblog: - proceed: Confirmer le partage - prompt: 'Vous souhaitez partager ce message :' - reply: - proceed: Confirmer la réponse - prompt: 'Vous souhaitez répondre à ce message :' reports: errors: invalid_rules: ne fait pas référence à des règles valides diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 8542761c5d..14936b4ba7 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1,13 +1,7 @@ --- ga: - about: - api: API accounts: posts_tab_heading: Postálacha - roles: - bot: Róbat - group: Grúpa - unfollow: Ná lean admin: accounts: are_you_sure: An bhfuil tú cinnte? diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 9ce456ae46..0e50fe542f 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -2,18 +2,10 @@ gd: about: about_mastodon_html: 'An lìonra sòisealta dhan àm ri teachd: Gun sanasachd, gun chaithris corporra, dealbhadh beusail agus dì-mheadhanachadh! Gabh sealbh air an dàta agad fhèin le Mastodon!' - api: API - apps: Aplacaidean mobile contact_missing: Cha deach a shuidheachadh contact_unavailable: Chan eil seo iomchaidh - documentation: Docamaideadh hosted_on: Mastodon ’ga òstadh air %{domain} - source_code: Bun-tùs - what_is_mastodon: Dè th’ ann am Mastodon? accounts: - choices_html: 'Roghadh is taghadh %{name}:' - endorsements_hint: "’S urrainn dhut daoine air a leanas tu a bhrosnachadh on eadar-aghaidh-lìn agus nochdaidh iad an-seo." - featured_tags_hint: "’S urrainn dhut tagaichean hais sònraichte a bhrosnachadh a thèid a shealltainn an-seo." follow: Lean air followers: few: Luchd-leantainn @@ -22,15 +14,9 @@ gd: two: Luchd-leantainn following: A’ leantainn instance_actor_flash: "’S e actar biortail a tha sa chunntas seo a riochdaicheas am frithealaiche fhèin seach cleachdaiche sònraichte. Tha e ’ga chleachdadh a chùm co-nasgaidh agus cha bu chòir dhut a chur à rèim." - joined: Air ballrachd fhaighinn %{date} last_active: an gnìomh mu dheireadh link_verified_on: Chaidh dearbhadh cò leis a tha an ceangal seo %{date} - media: Meadhanan - moved_html: 'Chaidh %{name} imrich gu %{new_profile_link}:' - network_hidden: Chan eil am fiosrachadh seo ri fhaighinn nothing_here: Chan eil dad an-seo! - people_followed_by: Daoine air a leanas %{name} - people_who_follow: Daoine a tha a’ leantainn air %{name} pin_errors: following: Feumaidh tu leantainn air neach mus urrainn dhut a bhrosnachadh posts: @@ -39,12 +25,6 @@ gd: other: Postaichean two: Postaichean posts_tab_heading: Postaichean - posts_with_replies: Postaichean ’s freagairtean - roles: - bot: Bot - group: Buidheann - unavailable: Chan eil a’ phròifil ri làimh - unfollow: Na lean tuilleadh admin: account_actions: action: Gabh an gnìomh @@ -407,7 +387,7 @@ gd: title: Bacadh àrainne ùr obfuscate: Doilleirich ainm na h-àrainne obfuscate_hint: Doilleirich pàirt de dh’ainm na h-àrainne air an liosta ma tha foillseachadh liosta nan cuingeachaidhean àrainne an comas - private_comment: Beachd prìobhaideachd + private_comment: Beachd prìobhaideach private_comment_hint: Beachd mu chuingeachadh na h-àrainne seo nach cleachd ach na maoir. public_comment: Beachd poblach public_comment_hint: Beachd poblach mu chuingeachadh na h-àrainne seo ma tha foillseachadh liosta nan cuingeachaidhean àrainne an comas. @@ -508,7 +488,7 @@ gd: all: Na h-uile limited: Cuingichte title: Maorsainneachd - private_comment: Beachd prìobhaideachd + private_comment: Beachd prìobhaideach public_comment: Beachd poblach purge: Purgaidich purge_description_html: Ma tha thu dhen bheachd gu bheil an àrainn seo far loidhne gu buan, ’s urrainn dhut a h-uile clàr cunntais ’s an dàta co-cheangailte on àrainn ud a sguabadh às san stòras agad. Dh’fhaoidte gun doir sin greis mhath. @@ -1162,9 +1142,6 @@ gd: save: Sàbhail a’ chriathrag ùr title: Cuir criathrag ùr ris footer: - developers: Luchd-leasachaidh - more: Barrachd… - resources: Goireasan trending_now: A’ treandadh an-dràsta generic: all: Na h-uile @@ -1199,7 +1176,6 @@ gd: following: Liosta dhen fheadhainn air a leanas tu muting: Liosta a’ mhùchaidh upload: Luchdaich suas - in_memoriam_html: Mar chuimhneachan. invites: delete: Cuir à gnìomh expired: Dh’fhalbh an ùine air @@ -1379,22 +1355,7 @@ gd: remove_selected_follows: Na lean air na cleachdaichean a thagh thu tuilleadh status: Staid a’ chunntais remote_follow: - acct: Cuir a-steach ainm-cleachdaiche@àrainn airson a chur ort missing_resource: Cha do lorg sinn URL ath-stiùiridh riatanach a’ chunntais agad - no_account_html: Nach eil cunntas agad? ’S urrainn dhut clàradh leinn an-seo - proceed: Lean air adhart gus leantainn air - prompt: 'Bidh thu a’ leantainn air:' - reason_html: "Carson a tha feum air a’ cheum seo? Dh’fhaoidte nach e %{instance} am frithealaiche far an do rinn thu clàradh agus feumaidh sinn d’ ath-stiùireadh dhan fhrithealaiche dachaigh agad an toiseach." - remote_interaction: - favourite: - proceed: Lean air adhart gus a chur ris na h-annsachdan - prompt: 'Tha thu airson am post seo a chur ris na h-annsachdan:' - reblog: - proceed: Lean air adhart gus a bhrosnachadh - prompt: 'Tha thu airson am post seo a bhrosnachadh:' - reply: - proceed: Lean air adhart gus freagairt - prompt: 'Tha thu airson freagairt dhan phost seo:' reports: errors: invalid_rules: gun iomradh air riaghailtean dligheach diff --git a/config/locales/gl.yml b/config/locales/gl.yml index f9b6a11dcb..ec4346c7f7 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -2,46 +2,26 @@ gl: about: about_mastodon_html: 'A rede social do futuro: Sen publicidade, sen seguimento por empresas, deseño ético e descentralización! En Mastodon ti posúes os teus datos!' - api: API - apps: Aplicacións móbiles contact_missing: Non establecido contact_unavailable: Non dispoñíbel - documentation: Documentación hosted_on: Mastodon aloxado en %{domain} - privacy_policy: Política de Privacidade - source_code: Código fonte - what_is_mastodon: Qué é Mastodon? + title: Acerca de accounts: - choices_html: 'Escollas de %{name}:' - endorsements_hint: Podes suxerir a persoas que segues dende a interface web, e amosaranse aquí. - featured_tags_hint: Podes destacar determinados cancelos que se amosarán aquí. follow: Seguir followers: one: Seguidora other: Seguidoras following: Seguindo instance_actor_flash: Esta conta é un actor virtual utilizado para representar ó servidor mesmo e non a unha usuaria individual. Utilízase por motivos de federación e non debería estar suspendida. - joined: Uniuse en %{date} last_active: última actividade link_verified_on: A propiedade desta ligazón foi verificada en %{date} - media: Multimedia - moved_html: "%{name} mudouse a %{new_profile_link}:" - network_hidden: Esta información non está dispoñíbel nothing_here: Non hai nada aquí! - people_followed_by: Persoas que segue %{name} - people_who_follow: Persoas que seguen a %{name} pin_errors: following: Tes que seguir á persoa que queres engadir posts: one: Publicación other: Publicacións posts_tab_heading: Publicacións - posts_with_replies: Publicacións e respostas - roles: - bot: Bot - group: Grupo - unavailable: Perfil non dispoñíbel - unfollow: Deixar de seguir admin: account_actions: action: Executar acción @@ -344,6 +324,7 @@ gl: listed: Listado new: title: Engadir nova emoticona personalizado + no_emoji_selected: Non se cambiou ningún emoji xa que ningún foi seleccionado not_permitted: Non podes realizar esta acción overwrite: Sobrescribir shortcode: Código curto @@ -812,6 +793,9 @@ gl: description_html: Estas son ligazóns que actualmente están sendo compartidas por moitas contas das que o teu servidor recibe publicación. Pode ser de utilidade para as túas usuarias para saber o que acontece polo mundo. Non se mostran ligazóns de xeito público a non ser que autorices a quen as publica. Tamén podes permitir ou rexeitar ligazóns de xeito individual. disallow: Denegar ligazón disallow_provider: Denegar orixe + no_link_selected: Non se cambiou ningunha ligazón xa que non había ningunha seleccionada + publishers: + no_publisher_selected: Non se cambiou ningún autor xa que ningún foi seleccionado shared_by_over_week: one: Compartido por unha persoa na última semana other: Compartido por %{count} persoas na última semana @@ -831,6 +815,7 @@ gl: description_html: Estas son publicacións que o teu servidor coñece que están sendo compartidas e favorecidas en gran número neste intre. Pode ser útil para as persoas recén chegadas e as que retornan para que atopen persoas a quen seguir. Non se mostran publicamente a menos que aprobes a autora, e a autora permita que a súa conta sexa suxerida a outras. Tamén podes rexeitar ou aprobar publicacións individuais. disallow: Rexeitar publicación disallow_account: Rexeitar autora + no_status_selected: Non se cambiou ningunha publicación en voga xa que non había ningunha seleccionada not_discoverable: A autora non elexiu poder ser atopada shared_by: one: Compartida ou favorecida unha vez @@ -846,6 +831,7 @@ gl: tag_uses_measure: total de usos description_html: Estes son cancelos que actualmente están presentes en moitas publicacións que o teu servidor recibe. Pode ser útil para que as túas usuarias atopen a outras persoas a través do máis comentado neste intre. Non se mostran cancelos públicamente que non fosen aprobados por ti. listable: Pode ser suxerida + no_tag_selected: Non se cambiaron cancelos porque ningún foi seleccionado not_listable: Non vai ser suxerida not_trendable: Non aparecerá en tendencias not_usable: Non pode ser usado @@ -926,7 +912,7 @@ gl: remove: Desligar alcume appearance: advanced_web_interface: Interface web avanzada - advanced_web_interface_hint: Se queres empregar todo o ancho da túa pantalla, a interface web avanzada permíteche configurar diferentes columnas para ver tanta información como desexe. Inicio, notificacións, cronoloxía federada, calquera número de listaxes e cancelos. + advanced_web_interface_hint: Se queres empregar todo o ancho da pantalla, a interface web avanzada permíteche configurar diferentes columnas para ver tanta información como queiras. Inicio, notificacións, cronoloxía federada, varias listaxes e cancelos. animations_and_accessibility: Animacións e accesibilidade confirmation_dialogs: Diálogos de confirmación discovery: Descubrir @@ -1169,9 +1155,6 @@ gl: hint: Este filtro aplícase para seleccionar publicacións individuais independentemente de outros criterios. Podes engadir máis publicacións a este filtro desde a interface web. title: Publicacións filtradas footer: - developers: Desenvolvedoras - more: Máis… - resources: Recursos trending_now: Tendencia agora generic: all: Todo @@ -1214,7 +1197,6 @@ gl: following: Lista de seguimento muting: Lista de usuarias acaladas upload: Subir - in_memoriam_html: Lembranzas. invites: delete: Desactivar expired: Caducou @@ -1394,22 +1376,7 @@ gl: remove_selected_follows: Deixar de seguir as usuarias escollidas status: Estado da conta remote_follow: - acct: Introduza o seu usuaria@servidor desde onde quere interactuar missing_resource: Non se puido atopar o URL de redirecionamento requerido para a súa conta - no_account_html: Non ten unha conta? Pode rexistrarse aquí - proceed: Proceda para seguir - prompt: 'Vas seguir a:' - reason_html: "Por que é necesario este paso?%{instance} podería non ser o servidor onde se rexistrou, así que precisamo redirixila primeiro ao seu servidor de orixe." - remote_interaction: - favourite: - proceed: Darlle a favorito - prompt: 'Vas marcar favorita esta publicación:' - reblog: - proceed: Darlle a promocionar - prompt: 'Vas promover esta publicación:' - reply: - proceed: Responde - prompt: 'Vas responder a esta publicación:' reports: errors: invalid_rules: non fai referencia a regras válidas diff --git a/config/locales/he.yml b/config/locales/he.yml index 9806849102..95dadd06dc 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -2,18 +2,10 @@ he: about: about_mastodon_html: מסטודון היא רשת חברתית חופשית, מבוססת תוכנה חופשית ("קוד פתוח"). כאלטרנטיבה בלתי ריכוזית לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד — לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ברשת החברתית באופן חלק. - api: ממשק - apps: יישומונים לנייד contact_missing: ללא הגדרה contact_unavailable: לא רלוונטי/חסר - documentation: תיעוד hosted_on: מסטודון שיושב בכתובת %{domain} - source_code: קוד מקור - what_is_mastodon: מה זה מסטודון? accounts: - choices_html: 'בחירותיו/ה של %{name}:' - endorsements_hint: תוכל/י להמליץ על אנשים לעקוב אחריהם דרך ממשק הווב, והם יופיעו כאן. - featured_tags_hint: תוכל/י להציג האשתגיות ספציפיות והן תופענה כאן. follow: לעקוב followers: many: עוקבים @@ -22,15 +14,9 @@ he: two: עוקבים following: נעקבים instance_actor_flash: חשבון זה הינו פועל וירטואלי המשמש לייצוג השרת עצמו ולא אף משתמש ספציפי. הוא משמש למטרות פדרציה ואין להשעותו. - joined: הצטרף/ה ב-%{date} last_active: פעילות אחרונה link_verified_on: בעלות על קישורית זו נבדקה לאחרונה ב-%{date} - media: מדיה - moved_html: "%{name} עבר(ה) אל %{new_profile_link}:" - network_hidden: מידע זה אינו זמין nothing_here: אין פה שום דבר! - people_followed_by: הנעקבים של %{name} - people_who_follow: העוקבים של %{name} pin_errors: following: עליך לעקוב אחרי חשבון לפני שניתן יהיה להמליץ עליו posts: @@ -39,12 +25,6 @@ he: other: פוסטים two: פוסטים posts_tab_heading: חצרוצים - posts_with_replies: חצרוצים ותגובות - roles: - bot: בוט - group: קבוצה - unavailable: פרופיל לא זמין - unfollow: הפסקת מעקב admin: account_actions: action: בצע/י פעולה @@ -1178,9 +1158,6 @@ he: hint: פילטר זה חל באופן של בחירת פוסטים בודדים ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד פוסטים לפילטר זה ממשק הווב. title: פוסטים שסוננו footer: - developers: מפתחות - more: עוד… - resources: משאבים trending_now: נושאים חמים generic: all: הכל @@ -1216,7 +1193,6 @@ he: following: רשימת נעקבים muting: רשימת השתקות upload: יבוא - in_memoriam_html: לזכר. invites: delete: ביטול הפעלה expired: פג תוקף @@ -1396,22 +1372,7 @@ he: remove_selected_follows: בטל מעקב אחר המשתמשים שסומנו status: מצב חשבון remote_follow: - acct: נא להקליד שם_משתמש@קהילה מהם ברצונך לעקוב missing_resource: לא ניתן למצוא קישורית להפניה לחשבונך - no_account_html: אין לך חשבון? ניתן להרשם כאן - proceed: להמשיך ולעקוב - prompt: 'לעקוב אחרי:' - reason_html: "למה שלב זה הכרחי? %{instance} עשוי לא להיות השרת בו את/ה רשום/ה, כך שנצטרך קודם כל להעביר אותך לשרת הבית." - remote_interaction: - favourite: - proceed: המשך לחיבוב - prompt: 'ברצונך לחבב פוסט זה:' - reblog: - proceed: המשיכו להדהוד - prompt: 'ברצונך להדהד פוסט זה:' - reply: - proceed: המשיבו לתגובה - prompt: 'ברצונך להשיב לפוסט זה:' reports: errors: invalid_rules: לא מתייחס לכללים קבילים diff --git a/config/locales/hr.yml b/config/locales/hr.yml index c05b3dcd64..7a9ee2dc39 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -2,24 +2,13 @@ hr: about: about_mastodon_html: 'Društvena mreža budućnosti: bez oglasa, bez korporativnog nadzora, etički dizajn i decentralizacija! Budite u vlasništvu svojih podataka pomoću Mastodona!' - apps: Mobilne aplikacije contact_missing: Nije postavljeno - documentation: Dokumentacija - source_code: Izvorni kôd accounts: follow: Prati following: Praćenih last_active: posljednja aktivnost - media: Medijski sadržaj nothing_here: Ovdje nema ničeg! - people_followed_by: Ljudi koje %{name} prati - people_who_follow: Ljudi koji prate %{name} posts_tab_heading: Tootovi - posts_with_replies: Tootovi i odgovori - roles: - group: Grupa - unavailable: Profil nije dostupan - unfollow: Prestani pratiti admin: account_actions: action: Izvrši radnju @@ -113,9 +102,6 @@ hr: new: title: Dodaj novi filter footer: - developers: Razvijatelji - more: Više… - resources: Resursi trending_now: Popularno generic: all: Sve @@ -181,10 +167,7 @@ hr: errors: already_voted: Već ste glasali u ovoj anketi remote_follow: - acct: Unesite Vaše KorisničkoIme@domena s kojim želite izvršiti radnju missing_resource: Nije moguće pronaći traženi URL preusmjeravanja za Vaš račun - proceed: Dalje - prompt: 'Pratit ćete:' sessions: platforms: other: nepoznata platforma diff --git a/config/locales/hu.yml b/config/locales/hu.yml index c0607183d3..bbd0abd04d 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -2,19 +2,11 @@ hu: about: about_mastodon_html: 'A jövő közösségi hálózata: Hirdetések és céges megfigyelés nélkül, etikus dizájnnal és decentralizációval! Legyél a saját adataid ura a Mastodonnal!' - api: API - apps: Mobil appok contact_missing: Nincs megadva contact_unavailable: N/A - documentation: Dokumentáció hosted_on: "%{domain} Mastodon szerver" - privacy_policy: Adatvédelmi szabályzat - source_code: Forráskód - what_is_mastodon: Mi a Mastodon? + title: Névjegy accounts: - choices_html: "%{name} választásai:" - endorsements_hint: A webes felületen promózhatsz általad követett embereket, akik itt fognak megjelenni. - featured_tags_hint: Szerepeltethetsz bizonyos hashtageket, melyek itt jelennek majd meg. follow: Követés followers: one: Követő @@ -23,27 +15,15 @@ hu: instance_actor_flash: |- Ez a fiók virtuális, magát a szervert reprezentálja, nem pedig konkrét felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni. - joined: Csatlakozott %{date} last_active: utoljára aktív link_verified_on: 'A hivatkozás tulajdonosa ekkor volt ellenőrizve: %{date}' - media: Média - moved_html: "%{name} ide költözött: %{new_profile_link}" - network_hidden: Ez az információ nem elérhető nothing_here: Nincs itt semmi! - people_followed_by: "%{name} követettjei" - people_who_follow: "%{name} követői" pin_errors: following: Ehhez szükséges, hogy kövesd már a felhasználót posts: one: Bejegyzés other: Bejegyzés posts_tab_heading: Bejegyzés - posts_with_replies: Bejegyzés válaszokkal - roles: - bot: Bot - group: Csoport - unavailable: Nincs ilyen profil - unfollow: Követés vége admin: account_actions: action: Művelet végrehajtása @@ -346,6 +326,7 @@ hu: listed: Felsorolva new: title: Új egyéni emodzsi hozzáadása + no_emoji_selected: Nem változott meg egy emodzsi sem, mert semmi sem volt kiválasztva not_permitted: Nem vagy jogosult a művelet végrehajtására overwrite: Felülírás shortcode: Rövidítés @@ -436,7 +417,7 @@ hu: create: Domain hozzáadása resolve: Domain feloldása title: Új e-mail domain tiltása - no_email_domain_block_selected: Nem változott meg egyetlen e-mail domain tiltás sem, mert nem volt egy sem kiválasztva + no_email_domain_block_selected: Nem változott meg egy domain tiltás sem, mert semmi sem volt kiválasztva resolved_dns_records_hint_html: A domain név a következő MX domain-ekre oldódik fel, melyek valójában fogadják az e-mailt. Az MX domain letiltása minden olyan feliratkozást tiltani fog, melyben az e-mailcím ugyanazt az MX domaint használja, még akkor is, ha a látható domain név más. Légy óvatos, hogy ne tilts le nagy e-mail szolgáltatókat. resolved_through_html: Feloldva %{domain}-n keresztül title: Tiltott e-mail domainek @@ -536,7 +517,7 @@ hu: '94670856': 3 év new: title: Új IP szabály létrehozása - no_ip_block_selected: Nem változtattunk egy IP szabályon sem, mivel egy sem volt kiválasztva + no_ip_block_selected: Nem változott meg egy IP-szabály sem, mert semmi sem volt kiválasztva title: IP szabály relationships: title: "%{acct} kapcsolatai" @@ -814,6 +795,9 @@ hu: description_html: Ezek olyan hivatkozások, melyeket a szervered által látott fiókok mostanában sokat osztanak meg. Ez segíthet a felhasználóidnak rátalálni arra, hogy mi történik a világban. Egy hivatkozást sem mutatunk meg nyilvánosan, amíg a közzétevőt jóvá nem hagytad. A hivatkozásokat külön is engedélyezheted vagy visszautasíthatod. disallow: Hivatkozás letiltása disallow_provider: Közzétevő letiltása + no_link_selected: Nem változott meg egy hivatkozás sem, mert semmi sem volt kiválasztva + publishers: + no_publisher_selected: Nem változott meg egy közzétevő sem, mert semmi sem volt kiválasztva shared_by_over_week: one: Egy ember osztotta meg a múlt héten other: "%{count} ember osztotta meg a múlt héten" @@ -833,6 +817,7 @@ hu: description_html: Ezek olyan, a szervered által ismert bejegyzések, melyeket mostanság gyakran osztanak meg vagy jelölnek kedvencnek. Ez segíthet az új vagy visszatérő felhasználóidnak, hogy több követhető személyt találjanak Egyetlen bejegyzést sem mutatunk meg nyilvánosan, amíg ennek szerzőjét nem hagytad jóvá és ő nem járult hozzá, hogy őt másoknak ajánlják. Bejegyzéseket egyenként is engedélyezhetsz vagy visszautasíthatsz. disallow: Bejegyzés tiltása disallow_account: Szerző tiltása + no_status_selected: Nem változott meg egy felkapott bejegyzés sem, mert semmi sem volt kiválasztva not_discoverable: A szerző nem járult hozzá, hogy mások rátalálhassanak shared_by: one: Megosztva vagy kedvencnek jelölve egy alkalommal @@ -848,6 +833,7 @@ hu: tag_uses_measure: összes használat description_html: Ezek olyan hashtag-ek, melyek mostanság nagyon sok bejegyzésben jelennek meg, melyet a szervered lát. Ez segíthet a felhasználóidnak abban, hogy megtudják, miről beszélnek legtöbbet az emberek az adott pillanatban. Egyetlen hashtag-et sem mutatunk meg nyilvánosan, amíg azt nem hagytad jóvá. listable: Javasolható + no_tag_selected: Nem változott meg egy címke sem, mert semmi sem volt kiválasztva not_listable: Nem lesz javasolva not_trendable: Nem fog megjelenni a trendek alatt not_usable: Nem használható @@ -1171,9 +1157,6 @@ hu: hint: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik a megadott kritériumoktól függetlenül. Újabb bejegyzéseket adhatsz hozzá ehhez a szűrőhöz a webes felületen keresztül. title: Megszűrt bejegyzések footer: - developers: Fejlesztőknek - more: Többet… - resources: Segédanyagok trending_now: Most felkapott generic: all: Mind @@ -1216,7 +1199,6 @@ hu: following: Követettjeid listája muting: Némított felhasználók listája upload: Feltöltés - in_memoriam_html: Emlékünkben. invites: delete: Visszavonás expired: Lejárt @@ -1396,22 +1378,7 @@ hu: remove_selected_follows: Kiválasztottak követésének abbahagyása status: Fiók állapota remote_follow: - acct: Írd be a felhasználódat, amelyről követni szeretnéd felhasznalonev@domain formátumban missing_resource: A fiókodnál nem található a szükséges átirányítási URL - no_account_html: Nincs fiókod? Regisztrálj itt - proceed: Tovább a követéshez - prompt: 'Őt tervezed követni:' - reason_html: "Miért van erre szükség? %{instance} nem feltétlenül az a szerver, ahol regisztrálva vagy, ezért először a saját szerveredre irányítunk." - remote_interaction: - favourite: - proceed: Jelöljük kedvencnek - prompt: 'Ezt a bejegyzést szeretnéd kedvencnek jelölni:' - reblog: - proceed: Tovább a megtoláshoz - prompt: 'Ezt a bejegyzést szeretnéd megtolni:' - reply: - proceed: Válaszadás - prompt: 'Erre a bejegyzésre szeretnél válaszolni:' reports: errors: invalid_rules: nem hivatkozik érvényes szabályra diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 1c1bd5bbd3..7ba00a8478 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -2,45 +2,25 @@ hy: about: about_mastodon_html: Ապագայի սոցցանցը։ Ոչ մի գովազդ, ոչ մի կորպորատիվ վերահսկողութիւն, էթիկական դիզայն, եւ ապակենտրոնացում։ Մաստադոնում դու ես քո տուեալների տէրը։ - api: API - apps: Բջջային յաւելուածներ contact_missing: Սահմանված չէ contact_unavailable: Ոչինչ չկա - documentation: Փաստաթղթեր hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում - source_code: Ելատեքստ - what_is_mastodon: Ի՞նչ է Մաստոդոնը accounts: - choices_html: "%{name}-ի ընտրանի՝" - endorsements_hint: Վէբ ինտերֆէյսից կարող ես ցուցադրել մարդկանց, որոնց հետեւում ես, եւ նրանք կը ցուցադրուեն այստեղ։ - featured_tags_hint: Դու կարող ես ցուցադրել յատուկ պիտակներ, որոնք կը ցուցադրուեն այստեղ։ follow: Հետևել followers: one: Հետեւորդ other: Հետևորդներ following: Հետեւած instance_actor_flash: Այս հաշիւը վիրտուալ դերասան է, որը ներկայացնում է հանգոյցը, եւ ոչ որեւէ անհատ օգտատիրոջ։ Այն օգտագործուում է ֆեդերացիայի նպատակներով եւ չպէտք է կասեցուի։ - joined: Միացել են %{date} last_active: վերջին այցը link_verified_on: Սոյն յղման տիրապետումը ստուգուած է՝ %{date}֊ին - media: Մեդիա - moved_html: "%{name} տեղափոխուել է %{new_profile_link}" - network_hidden: Այս տուեալը հասանելի չէ nothing_here: Այստեղ բան չկայ - people_followed_by: Մարդիկ, որոնց %{name}ը հետեւում է - people_who_follow: Մարդիկ, որոնք հետեւում են %{name}ին pin_errors: following: Դու պէտք է հետեւես մարդուն, որին ցանկանում ես խրախուսել posts: one: Գրառում other: Գրառումներ posts_tab_heading: Գրառումներ - posts_with_replies: Գրառումներ եւ պատասխաններ - roles: - bot: Բոտ - group: Խումբ - unavailable: Պրոֆիլը հասանելի չի - unfollow: Չհետևել admin: account_actions: action: Կատարել գործողութիւն @@ -602,9 +582,6 @@ hy: new: title: Ավելացնել ֆիլտր footer: - developers: Մշակողներ - more: Ավելին… - resources: Ռեսուրսներ trending_now: Այժմ արդիական generic: all: Բոլորը @@ -756,9 +733,6 @@ hy: remove_selected_followers: Հեռացնել նշուած հետեւորդներին remove_selected_follows: Ապահետեւել նշուած օգտատէրերին status: Հաշուի կարգավիճակ - remote_follow: - acct: Մուտքագրիր քո օգտանուն@տիրոյթ, որի անունից ցանկանում ես գործել - prompt: Դու պատրաստուում ես հետևել՝ scheduled_statuses: too_soon: Նախադրուած ամսաթիւը պէտք է լինի ապագայում sessions: diff --git a/config/locales/id.yml b/config/locales/id.yml index 58a78594d6..026081e842 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -2,43 +2,23 @@ id: about: about_mastodon_html: Mastodon adalah sebuah jejaring sosial terbuka, open-sourcedesentralisasi dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam jejaring sosial dengan mudah. - api: API - apps: Aplikasi mobile contact_missing: Belum diset contact_unavailable: Tidak Tersedia - documentation: Dokumentasi hosted_on: Mastodon dihosting di %{domain} - source_code: Kode sumber - what_is_mastodon: Apa itu Mastodon? accounts: - choices_html: 'Pilihan %{name}:' - endorsements_hint: Anda dapat mempromosikan orang yang Anda ikuti lewat antar muka web, dan mereka akan muncul di sini. - featured_tags_hint: Anda dapat mengunggulkan tagar tertentu yang akan ditampilkan di sini. follow: Ikuti followers: other: Pengikut following: Mengikuti instance_actor_flash: Akun ini adalah aktor virtual yang merepresentasikan server itu sendiri dan bukan pengguna individu. Ini dipakai untuk tujuan gabungan dan seharusnya tidak ditangguhkan. - joined: Bergabung pada %{date} last_active: terakhir aktif link_verified_on: Kepemilikan tautan ini telah dicek pada %{date} - media: Media - moved_html: "%{name} telah pindah ke %{new_profile_link}:" - network_hidden: Informasi ini tidak tersedia nothing_here: Tidak ada apapun disini! - people_followed_by: Orang yang diikuti %{name} - people_who_follow: Orang-orang yang mengikuti %{name} pin_errors: following: Anda harus mengikuti orang yang ingin anda endorse posts: other: Toot posts_tab_heading: Toot - posts_with_replies: Toot dan balasan - roles: - bot: Bot - group: Grup - unavailable: Profil tidak tersedia - unfollow: Berhenti mengikuti admin: account_actions: action: Lakukan aksi @@ -1029,9 +1009,6 @@ id: new: title: Tambah saringan baru footer: - developers: Pengembang - more: Lainnya… - resources: Sumber daya trending_now: Sedang tren generic: all: Semua @@ -1063,7 +1040,6 @@ id: following: Daftar diikuti muting: Daftar didiamkan upload: Unggah - in_memoriam_html: Dalam memori. invites: delete: Nonaktifkan expired: Kedaluwarsa @@ -1238,22 +1214,7 @@ id: remove_selected_follows: Batal ikuti pengguna terpilih status: Status akun remote_follow: - acct: Masukkan namapengguna@domain yang akan anda ikuti missing_resource: Tidak dapat menemukan URL redirect dari akun anda - no_account_html: Tidak memiliki akun? Anda dapat mendaftar di sini - proceed: Lanjutkan untuk mengikuti - prompt: 'Anda akan mengikuti:' - reason_html: "Mengapa langkah ini penting? %{instance} mungkin saja bukan tempat Anda mendaftar, sehingga kami perlu mengalihkan Anda ke server beranda lebih dahulu." - remote_interaction: - favourite: - proceed: Lanjutkan ke favorit - prompt: 'Anda ingin memfavoritkan toot ini:' - reblog: - proceed: Lanjutkan ke boost - prompt: 'Anda ingin mem-boost toot ini:' - reply: - proceed: Lanjutkan ke balasan - prompt: 'Anda ingin membalas toot ini:' reports: errors: invalid_rules: tidak mereferensikan aturan yang valid diff --git a/config/locales/io.yml b/config/locales/io.yml index 17b4e28014..4d515ce6b0 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -2,46 +2,26 @@ io: about: about_mastodon_html: Mastodon esas gratuita, apertitkodexa sociala reto. Ol esas sencentra altra alternativo a komercala servadi. Ol evitigas, ke sola firmo guvernez tua tota komunikadol. Selektez servero, quan tu fidas. Irge qua esas tua selekto, tu povas komunikar kun omna altra uzeri. Irgu povas krear sua propra instaluro di Mastodon en sua servero, e partoprenar en la sociala reto tote glate. - api: API - apps: Smartfonsoftwari contact_missing: Ne fixigita contact_unavailable: Nula - documentation: Dokumentajo hosted_on: Mastodon hostigesas che %{domain} - privacy_policy: Privatesguidilo - source_code: Fontkodexo - what_is_mastodon: Quo esas Mastodon? + title: Pri co accounts: - choices_html: 'Selektaji di %{name}:' - endorsements_hint: Vu povas rekomendar personi quon vu sequas de retintervizajo, e oli montresos hike. - featured_tags_hint: Vu povas estalar partikulara hashtagi quo montresos hike. follow: Sequar followers: one: Sequanto other: Sequanti following: Sequati instance_actor_flash: Ca konto esas virtuala aganto quo uzesas por reprezentar la servilo e ne irga individuala uzanto. Ol uzesas por federskopo e ne debas restriktesar. - joined: Juntis ye %{date} last_active: lasta aktiva tempo link_verified_on: Proprieteso di ca ligilo kontrolesis ye %{date} - media: Medii - moved_html: "%{name} transferesis a %{new_profile_link}:" - network_hidden: Ca informi ne esas disponebla nothing_here: Esas nulo hike! - people_followed_by: Sequati da %{name} - people_who_follow: Sequanti di %{name} pin_errors: following: Vu mustas ja sequar persono quon vu volas estalar posts: one: Posto other: Posti posts_tab_heading: Posti - posts_with_replies: Posti e respondi - roles: - bot: Boto - group: Grupo - unavailable: Profilo esas nedisponebla - unfollow: Dessequar admin: account_actions: action: Agez @@ -344,6 +324,7 @@ io: listed: Listita new: title: Insertez nova kustumizita emocimajo + no_emoji_selected: Nula emocimaji chanjesis pro ke nulo selektesis not_permitted: Vu ne permisesis agar co overwrite: Remplasez shortcode: Kurtkodexo @@ -812,6 +793,9 @@ io: description_html: Co esas ligili quo nun multe partigesas da konti kun posti quon vua servilo vidas. Ol povas helpar vua uzanti lernar quo eventas en mondo. Ligili ne publike montresas til vu aprobar publikiganto. Vu povas anke permisar o refuzar individuala ligili. disallow: Despermisez ligilo disallow_provider: Despermisez publikiganto + no_link_selected: Nula ligili chanjesis pro ke nulo selektesis + publishers: + no_publisher_selected: Nula publikiganti chanjesis pro ke nulo selektesis shared_by_over_week: one: Partigesis da 1 persono de pos antea semano other: Partigesis da %{count} personi de pos antea semano @@ -831,6 +815,7 @@ io: description_html: Co esas posti quon vua servilo savas quale nun partigesas e favorizesas multe nun. Ol povas helpar vua nova e retrovenanta uzanti trovar plu multa personi por sequar. Posti ne publike montresas til vu aprobar la skribanto, e la skribanto permisas sua konto sugestesas a altra personi. Vu povas anke permisar o refuzar individuala posti. disallow: Despermisez posto disallow_account: Despermisez skribanto + no_status_selected: Nula tendencoza posti chanjesis pro ke nulo selektesis not_discoverable: Skribanto ne konsentis pri esar deskovrebla shared_by: one: Partigesis o favorizesis 1 foye @@ -846,6 +831,7 @@ io: tag_uses_measure: uzsumo description_html: Co esas hashtagi quo nun aparas en multa posti quon vua servilo vidas. Ol povas helpar vua uzanti lernar quon personi parolas frequente nun. Hashtagi ne montresas publike til vu aprobar. listable: Povas sugestesar + no_tag_selected: Nula tagi chanjesis pro ke nulo selektesis not_listable: Ne sugestesar not_trendable: Ne aparas che tendenci not_usable: Ne povas uzesar @@ -951,6 +937,7 @@ io: warning: Sorgemez per ca informi. Ne partigez kun irgu! your_token: Vua acesficho auth: + apply_for_account: Esez sur vartlisto change_password: Pasvorto delete_account: Efacez konto delete_account_html: Se vu volas efacar vua konto, vu povas irar hike. Vu demandesos konfirmar. @@ -970,6 +957,7 @@ io: migrate_account: Transferez a diferanta konto migrate_account_html: Se vu volas ridirektar ca konto a diferanto, vu povas ajustar hike. or_log_in_with: O eniras per + privacy_policy_agreement_html: Me lektis e konsentis privatesguidilo providers: cas: CAS saml: SAML @@ -977,12 +965,18 @@ io: registration_closed: "%{instance} ne aceptas nova membri" resend_confirmation: Risendar la instrucioni por konfirmar reset_password: Chanjar la pasvorto + rules: + preamble: Co igesas e exekutesas da jereri di %{domain}. + title: Kelka bazala reguli. security: Chanjar pasvorto set_new_password: Selektar nova pasvorto setup: email_below_hint_html: Se suba retpostoadreso esas nekorekta, vu povas chanjar hike e ganar nova konfirmretposto. email_settings_hint_html: Konfirmretposto sendesis a %{email}. Se ta retpostoadreso ne esas korekta, vu povas chanjar en kontoopcioni. title: Komencoprocedo + sign_up: + preamble: Per konto en ca servilo di Mastodon, on povas sequar irga persono en ca reto, ne ye ube ona konto hostagisas. + title: Ni komencigez vu en %{domain}. status: account_status: Kontostando confirming: Vartas retpostokonfirmo finar. @@ -1161,9 +1155,6 @@ io: hint: Ca filtrilo aplikesas a selektita posti ne segun altra kriterio. Vu povas pozar plu multa posti a ca filtrilo de retintervizajo. title: Filtrita posti footer: - developers: Developeri - more: Pluse… - resources: Moyeni trending_now: Nuna tendenco generic: all: Omna @@ -1206,7 +1197,6 @@ io: following: Listo de sequati muting: Silenciglisto upload: Kargar - in_memoriam_html: Memorialo. invites: delete: Deaktivigez expired: Expiris @@ -1362,6 +1352,8 @@ io: other: Altra posting_defaults: Originala postoopcioni public_timelines: Publika tempolinei + privacy_policy: + title: Privatesguidilo reactions: errors: limit_reached: Limito di diferanta reakto atingesis @@ -1384,22 +1376,7 @@ io: remove_selected_follows: Desequez selektita uzanti status: Kontostando remote_follow: - acct: Enpozez tua uzernomo@instaluro de ube tu volas sequar ta uzero missing_resource: La URL di plussendado ne povis esar trovita - no_account_html: Ka vu ne havas konto? Vu povas registrar hike - proceed: Durar por plussendar - prompt: 'Tu sequeskos:' - reason_html: "Por quo ca demarsho bezonesas? %{instance} forsan ne esas servilo ube vu registris, do ni bezonas ridirektar vu a vua hemservilo unesme." - remote_interaction: - favourite: - proceed: Durez favorizar - prompt: 'Vu povas favorizar ca posto:' - reblog: - proceed: Durez bustar - prompt: 'Vu volas bustar ca posto:' - reply: - proceed: Durez respondar - prompt: 'Vu volas respondar ca posto:' reports: errors: invalid_rules: ne refera valida reguli @@ -1649,8 +1626,10 @@ io: suspend: Konto restriktigesis welcome: edit_profile_action: Facez profilo + edit_profile_step: Vu povas kustumizar vua profilo per adchargar profilimajo, chanjesar vua montronomo e plue. Vu povas selektas kontrolar nova sequanti ante oli permisesas sequar vu. explanation: Subo esas guidilo por helpar vu komencar final_action: Komencez postigar + final_step: 'Jus postigez! Mem sen sequanti, vua publika posti povas videsar da altra personi, exemplo es en lokala tempolineo e en hashtagi. Vu povas anke introduktar su en #introductions hashtagi.' full_handle: Vua kompleta profilnomo full_handle_hint: Co esas quon vu dicos a amiki por ke oli povas mesajigar o sequar vu de altra servilo. subject: Bonveno a Mastodon diff --git a/config/locales/is.yml b/config/locales/is.yml index f7e420843c..aa8f55804c 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -2,46 +2,26 @@ is: about: about_mastodon_html: 'Samfélagsnet framtíðarinnar: Engar auglýsingar, ekkert eftirlit stórfyrirtækja, siðleg hönnun og engin miðstýring! Þú átt þín eigin gögn í Mastodon!' - api: API-kerfisviðmót - apps: Farsímaforrit contact_missing: Ekki skilgreint contact_unavailable: Ekki til staðar - documentation: Hjálparskjöl hosted_on: Mastodon hýst á %{domain} - privacy_policy: Persónuverndarstefna - source_code: Grunnkóði - what_is_mastodon: Hvað er Mastodon? + title: Um hugbúnaðinn accounts: - choices_html: "%{name} hefur valið:" - endorsements_hint: Þú getur auglýst efni frá fólki sem þú fylgir í vefviðmótinu og mun það birtast hér. - featured_tags_hint: Þú getur gefið sérstökum myllumerkjum aukið vægi og birtast þau þá hér. follow: Fylgjast með followers: one: fylgjandi other: fylgjendur following: Fylgist með instance_actor_flash: Þessi notandaaðgangur er sýndarnotandi sem stendur fyrir sjálfan netþjóninn en ekki neinn einstakling. Hann er notaður við skýjasambandsmiðlun og ætti ekki að setja hann í bið eða banna. - joined: Gerðist þátttakandi %{date} last_active: síðasta virkni link_verified_on: Eignarhald á þessum tengli var athugað þann %{date} - media: Myndefni - moved_html: "%{name} hefur verið færður í %{new_profile_link}:" - network_hidden: Þessar upplýsingar ekki tiltækar nothing_here: Það er ekkert hér! - people_followed_by: Fólk sem %{name} fylgist með - people_who_follow: Fólk sem fylgist með %{name} pin_errors: following: Þú þarft að vera þegar að fylgjast með þeim sem þú ætlar að mæla með posts: one: Færsla other: Færslur posts_tab_heading: Færslur - posts_with_replies: Færslur og svör - roles: - bot: Róbót - group: Hópur - unavailable: Notandasnið ekki tiltækt - unfollow: Hætta að fylgja admin: account_actions: action: Framkvæma aðgerð @@ -344,6 +324,7 @@ is: listed: Skráð new: title: Bæta við nýju sérsniðnu tjáningartákni + no_emoji_selected: Engum táknum var breytt þar sem engin voru valin not_permitted: Þú hefur ekki réttindi til að framkvæma þessa aðgerð overwrite: Skrifa yfir shortcode: Stuttkóði @@ -812,6 +793,9 @@ is: description_html: Þetta eru tenglar/slóðir sem mikið er deilt af notendum sem netþjónninn þinn sér færslur frá. Þeir geta hjálpað notendunum þínu við að finna út hvað sé í gangi í heiminum. Engir tenglar birtast opinberlega fyrr en þú hefur samþykkt útgefanda þeirra. Þú getur líka leyft eða hafnað eintökum tenglum. disallow: Ekki leyfa tengil disallow_provider: Ekki leyfa útgefanda + no_link_selected: Engum tenglum var breytt þar sem engir voru valdir + publishers: + no_publisher_selected: Engum útgefendum var breytt þar sem engir voru valdir shared_by_over_week: one: Deilt af einum aðila síðustu vikuna other: Deilt af %{count} aðilum síðustu vikuna @@ -831,6 +815,7 @@ is: description_html: Þetta eru færslur sem netþjónninn þinn veit að er víða deilt eða eru mikið sett í eftirlæti þessa stundina. Þær geta hjálpað nýjum sem eldri notendum þínum við að finna fleira fólk til að fylgjast með. Engar færslur birtast opinberlega fyrr en þú hefur samþykkt höfund þeirra og að viðkomandi höfundur leyfi að efni frá þeim sé notað í tillögur til annarra. Þú getur líka leyft eða hafnað eintökum færslum. disallow: Ekki leyfa færslu disallow_account: Ekki leyfa höfund + no_status_selected: Engum vinsælum færslum var breytt þar sem engar voru valdar not_discoverable: Höfundur hefur ekki beðið um að vera finnanlegur shared_by: one: ShaDeilt eða gert að eftirlæti einu sinni @@ -846,6 +831,7 @@ is: tag_uses_measure: tilvik alls description_html: Þetta eru myllumerki sem birtast núna í mjög mörgum færslum sem netþjónninn þinn sér. Þau geta hjálpað notendunum þínu við að finna út hvað sé mest í umræðunni hjá öðru fólki. Engin myllumerki birtast opinberlega fyrr en þú hefur samþykkt þau. listable: Má stinga uppá + no_tag_selected: Engum merkjum var breytt þar sem engin voru valin not_listable: Mun ekki vera stungið uppá not_trendable: Mun ekki birtast í vinsældum not_usable: Má ekki nota @@ -1169,9 +1155,6 @@ is: hint: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Þú getur bætt fleiri færslum í þessa síu í vefviðmótinu. title: Síaðar færslur footer: - developers: Forritarar - more: Meira… - resources: Tilföng trending_now: Í umræðunni núna generic: all: Allt @@ -1214,7 +1197,6 @@ is: following: Listi yfir þá sem fylgst er með muting: Listi yfir þagganir upload: Senda inn - in_memoriam_html: Minning. invites: delete: Gera óvirkt expired: Útrunnið @@ -1394,22 +1376,7 @@ is: remove_selected_follows: Hætta að fylgjast með völdum notendum status: Staða aðgangs remote_follow: - acct: Settu inn notandanafn@lén þaðan sem þú vilt vera virk/ur missing_resource: Gat ekki fundið endurbeiningarslóðina fyrir notandaaðganginn þinn - no_account_html: Ertu ekki með aðgang? Þú getur nýskráð þig hér - proceed: Halda áfram í að fylgjast með - prompt: 'Þú ætlar að fara að fylgjast með:' - reason_html: "Hvers vegna er þetta skref nauðsynlegt? %{instance} er ekki endilega netþjónninn þar sem þú ert skráð/ur, þannig að við verðum að endurbeina þér á heimaþjóninn þinn fyrst." - remote_interaction: - favourite: - proceed: Halda áfram í að setja í eftirlæti - prompt: 'Þú ætlar að setja þessa færslu í eftirlæti:' - reblog: - proceed: Halda áfram í endurbirtingu - prompt: 'Þú ætlar að endurbirta þessa færslu:' - reply: - proceed: Halda áfram í að svara - prompt: 'Þú ætlar að svara þessari færslu:' reports: errors: invalid_rules: vísar ekki til gildra reglna diff --git a/config/locales/it.yml b/config/locales/it.yml index 42581d8b30..a1aa2ee664 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -2,46 +2,26 @@ it: about: about_mastodon_html: 'Il social network del futuro: niente pubblicità, niente controllo da parte di qualche azienda privata, design etico e decentralizzazione! Con Mastodon il proprietario dei tuoi dati sei tu!' - api: API - apps: Applicazioni per dispositivi mobili contact_missing: Non impostato contact_unavailable: N/D - documentation: Documentazione hosted_on: Mastodon ospitato su %{domain} - privacy_policy: Politica sulla Privacy - source_code: Codice sorgente - what_is_mastodon: Che cos'è Mastodon? + title: Info accounts: - choices_html: 'Suggerimenti da %{name}:' - endorsements_hint: 'Puoi segnalare persone che segui e che apprezzi dall''interfaccia web: saranno mostrate qui.' - featured_tags_hint: Puoi mettere in evidenza determinati hashtag che verranno visualizzati qui. follow: Segui followers: one: Seguace other: Seguaci following: Segui instance_actor_flash: Questo account è un attore virtuale usato per rappresentare il server stesso e non un singolo utente. Viene utilizzato per scopi federativi e non dovrebbe essere sospeso. - joined: Dal %{date} last_active: ultima attività link_verified_on: La proprietà di questo link è stata controllata il %{date} - media: Media - moved_html: "%{name} si è spostato su %{new_profile_link}:" - network_hidden: Questa informazione non e' disponibile nothing_here: Qui non c'è nulla! - people_followed_by: Persone seguite da %{name} - people_who_follow: Persone che seguono %{name} pin_errors: following: Devi gia seguire la persona che vuoi promuovere posts: one: Toot other: Toot posts_tab_heading: Toot - posts_with_replies: Toot e risposte - roles: - bot: Bot - group: Gruppo - unavailable: Profilo non disponibile - unfollow: Non seguire più admin: account_actions: action: Esegui azione @@ -344,6 +324,7 @@ it: listed: Elencato new: title: Aggiungi nuovo emoji personalizzato + no_emoji_selected: Nessuna emoji è stata cambiata in quanto nessuna è stata selezionata not_permitted: Non hai il permesso di eseguire questa azione overwrite: Sovrascrivi shortcode: Scorciatoia @@ -812,6 +793,9 @@ it: description_html: Questi sono collegamenti che attualmente vengono molto condivisi dagli account di cui il server vede i post. Può aiutare i tuoi utenti a scoprire cosa sta succedendo nel mondo. Nessun link viene visualizzato pubblicamente finché non si approva chi lo pubblica. È anche possibile permettere o rifiutare i singoli collegamenti. disallow: Non consentire link disallow_provider: Non consentire editore + no_link_selected: Nessun collegamento è stato modificato in quanto nessuno è stato selezionato + publishers: + no_publisher_selected: Nessun editore è stato modificato in quanto nessuno è stato selezionato shared_by_over_week: one: Condiviso da una persona nell'ultima settimana other: Condiviso da %{count} persone nell'ultima settimana @@ -831,6 +815,7 @@ it: description_html: Questi sono post noti al tuo server che sono attualmente molto condivisi e preferiti. Può aiutare i tuoi utenti (nuovi e non) a trovare più persone da seguire. Nessun post viene visualizzato pubblicamente fino a quando si approva l'autore, e l'autore permette che il suo account sia suggerito ad altri. È anche possibile permettere o rifiutare singoli post. disallow: Non consentire post disallow_account: Non consentire autore + no_status_selected: Nessun post di tendenza è stato modificato in quanto nessuno è stato selezionato not_discoverable: L'autore non ha optato di essere scopribile shared_by: one: Condiviso o preferito una volta @@ -846,6 +831,7 @@ it: tag_uses_measure: usi totali description_html: Questi sono hashtag che attualmente compaiono in molti post che il tuo server vede. Può aiutare i tuoi utenti a scoprire di cosa le persone stanno parlando di più al momento. Nessun hashtag viene visualizzato pubblicamente finché non lo approvi. listable: Suggeribile + no_tag_selected: Nessun tag è stato modificato in quanto nessuno è stato selezionato not_listable: Non sarà suggerito not_trendable: Non apparirà nelle tendenze not_usable: Inutilizzabile @@ -1171,9 +1157,6 @@ it: hint: Questo filtro si applica a singoli post indipendentemente da altri criteri. Puoi aggiungere più post a questo filtro dall'interfaccia Web. title: Post filtrati footer: - developers: Sviluppatori - more: Altro… - resources: Risorse trending_now: Di tendenza ora generic: all: Tutto @@ -1216,7 +1199,6 @@ it: following: Lista dei seguiti muting: Lista dei silenziati upload: Carica - in_memoriam_html: In Memoriam. invites: delete: Disattiva expired: Scaduto @@ -1396,22 +1378,7 @@ it: remove_selected_follows: Smetti di seguire gli utenti selezionati status: Stato dell'account remote_follow: - acct: Inserisci il tuo username@dominio da cui vuoi seguire questo utente missing_resource: Impossibile trovare l'URL di reindirizzamento richiesto per il tuo account - no_account_html: Non hai un account? Puoi iscriverti qui - proceed: Conferma - prompt: 'Stai per seguire:' - reason_html: "Perchè questo passo è necessario? %{instance} potrebbe non essere il server nel quale tu sei registrato, quindi dobbiamo reindirizzarti prima al tuo server." - remote_interaction: - favourite: - proceed: Continua per segnare come apprezzato - prompt: 'Vuoi segnare questo post come apprezzato:' - reblog: - proceed: Continua per condividere - prompt: 'Vuoi condividere questo post:' - reply: - proceed: Continua per rispondere - prompt: 'Vuoi rispondere a questo post:' reports: errors: invalid_rules: non fa riferimento a regole valide diff --git a/config/locales/ja.yml b/config/locales/ja.yml index d12895f060..2bcfcfdf1a 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -2,44 +2,24 @@ ja: about: about_mastodon_html: Mastodonは、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。 - api: API - apps: アプリ contact_missing: 未設定 contact_unavailable: N/A - documentation: ドキュメント hosted_on: Mastodon hosted on %{domain} - privacy_policy: プライバシーポリシー - source_code: ソースコード - what_is_mastodon: Mastodonとは? + title: About accounts: - choices_html: "%{name}によるおすすめ:" - endorsements_hint: あなたがフォローしている中でおすすめしたい人をここで紹介できます。 - featured_tags_hint: 特定のハッシュタグをここに表示できます。 follow: フォロー followers: other: フォロワー following: フォロー中 instance_actor_flash: このアカウントは、個々のユーザーではなく、サーバー自体を表すために使用される仮想のユーザーです。 連合のために使用されるため、停止しないで下さい。 - joined: "%{date}に登録" last_active: 最後の活動 link_verified_on: このリンクの所有権は%{date}に確認されました - media: メディア - moved_html: "%{name}さんは%{new_profile_link}に引っ越しました:" - network_hidden: この情報は利用できません nothing_here: 何もありません! - people_followed_by: "%{name}さんがフォロー中のアカウント" - people_who_follow: "%{name}さんをフォロー中のアカウント" pin_errors: following: おすすめしたい人はあなたが既にフォローしている必要があります posts: other: 投稿 posts_tab_heading: 投稿 - posts_with_replies: 投稿と返信 - roles: - bot: Bot - group: Group - unavailable: プロフィールは利用できません - unfollow: フォロー解除 admin: account_actions: action: アクションを実行 @@ -1114,9 +1094,6 @@ ja: index: title: フィルターされた投稿 footer: - developers: 開発者向け - more: さらに… - resources: リソース trending_now: トレンドタグ generic: all: すべて @@ -1149,7 +1126,6 @@ ja: following: フォロー中のアカウントリスト muting: ミュートしたアカウントリスト upload: アップロード - in_memoriam_html: 故人を偲んで。 invites: delete: 無効化 expired: 期限切れ @@ -1328,22 +1304,7 @@ ja: remove_selected_follows: 選択したユーザーをフォロー解除 status: 状態 remote_follow: - acct: あなたの ユーザー名@ドメイン を入力してください missing_resource: リダイレクト先が見つかりませんでした - no_account_html: アカウントをお持ちではないですか?こちらからサインアップできます - proceed: フォローする - prompt: 'フォローしようとしています:' - reason_html: "なぜこの手順が必要でしょうか? %{instance}はあなたが登録されているサーバーではないかもしれないので、まずあなたのサーバーに転送する必要があります。" - remote_interaction: - favourite: - proceed: お気に入り登録する - prompt: 'お気に入り登録しようとしています:' - reblog: - proceed: ブーストする - prompt: 'ブーストしようとしています:' - reply: - proceed: 返信する - prompt: '返信しようとしています:' reports: errors: invalid_rules: 有効なルールを参照していません diff --git a/config/locales/ka.yml b/config/locales/ka.yml index f7e8206001..c3ea20326b 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -2,31 +2,15 @@ ka: about: about_mastodon_html: მასტოდონი ღია ვებ პროტოკოლებზე და უფასო, ღია პროგრამებზე დაფუძნებული სოციალური ქსელია. ის ისეთი დეცენტრალიზებულია როგორც ელ-ფოსტა. - api: აპი - apps: მობილური აპლიკაციები contact_missing: არაა დაყენებული contact_unavailable: მიუწ. - documentation: დოკუმენტაცია hosted_on: მასტოდონს მასპინძლობს %{domain} - source_code: კოდი - what_is_mastodon: რა არის მასტოდონი? accounts: - choices_html: "%{name}-ის არჩევნები:" follow: გაყევი following: მიჰყვება - joined: გაწევრიანდა %{date} - media: მედია - moved_html: "%{name} გადავიდა %{new_profile_link}:" - network_hidden: ეს ინფორმაცია ხელმიუწვდომელია nothing_here: აქ არაფერია! - people_followed_by: ხალხი ვისაც %{name} მიჰყვება - people_who_follow: ხალხი ვინც მიჰყვება %{name}-ს pin_errors: following: იმ ადამიანს, ვინც მოგწონთ, უკვე უნდა მიჰყვებოდეთ - posts_with_replies: ტუტები და პასუხები - roles: - bot: ბოტი - unfollow: ნუღარ მიჰყვები admin: account_moderation_notes: create: დატოვეთ ჩანაწერი @@ -363,10 +347,6 @@ ka: title: ფილტრები new: title: ახალი ფილტრის დამატება - footer: - developers: დეველოპერები - more: მეტი… - resources: რესურსები generic: changes_saved_msg: ცვლილებები წარმატებით დამახსოვრდა! save_changes: ცვლილებების შენახვა @@ -381,7 +361,6 @@ ka: following: დადევნების სია muting: გაჩუმების სია upload: ატვირთვა - in_memoriam_html: მემორანდუმში. invites: delete: დეაქტივაცია expired: ვადა გაუვიდა @@ -455,11 +434,7 @@ ka: preferences: other: სხვა remote_follow: - acct: შეიყვანეთ თქვენი username@domain საიდანაც გსურთ გაჰყვეთ missing_resource: საჭირო გადამისამართების ურლ თქვენი ანგარიშისთვის ვერ მოიძებნა - no_account_html: არ გაქვთ ანგარიში? შეგიძლიათ დარეგისტრირდეთ აქ - proceed: გააგრძელეთ გასაყოლად - prompt: 'თქვენ გაჰყვებით:' sessions: activity: ბოლო აქტივობა browser: ბრაუზერი diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 1389426eb6..7c14000e61 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -2,39 +2,22 @@ kab: about: about_mastodon_html: 'Azeṭṭa ametti n uzekka: Ulac deg-s asussen, ulac taɛessast n tsuddiwin fell-ak, yebna ɣef leqder d ttrebga, daɣen d akeslemmas! Akked Maṣṭudun, isefka-inek ad qimen inek!' - api: API - apps: Isnasen izirazen contact_missing: Ur yettusbadu ara contact_unavailable: Wlac - documentation: Amnir hosted_on: Maṣṭudun yersen deg %{domain} - source_code: Tangalt Taɣbalut - what_is_mastodon: D acu-t Maṣṭudun? + title: Γef accounts: - choices_html: 'Afranen n %{name}:' follow: Ḍfeṛ followers: one: Umeḍfaṛ other: Imeḍfaṛen following: Yeṭafaṛ - joined: Ikcemed deg %{date} last_active: armud aneggaru - media: Taɣwalt - moved_html: 'ibeddel %{name} amiḍan ɣer %{new_profile_link}:' - network_hidden: Ulac isalli-agi nothing_here: Ulac kra da! - people_followed_by: Imdanen i yeṭṭafaṛ %{name} - people_who_follow: Imdanen yeṭṭafaṛen %{name} posts: one: Tajewwiqt other: Tijewwiqin posts_tab_heading: Tijewwiqin - posts_with_replies: Tijewwaqin akked tririyin - roles: - bot: Aṛubut - group: Agraw - unavailable: Ur nufi ara amaɣnu-a - unfollow: Ur ṭṭafaṛ ara admin: account_actions: action: Eg tigawt @@ -387,6 +370,11 @@ kab: unresolved: Ur yefra ara updated_at: Yettwaleqqem view_profile: Wali amaɣnu + roles: + categories: + administration: Tadbelt + privileges: + administrator: Anedbal rules: add_new: Rnu alugen delete: Kkes @@ -541,9 +529,7 @@ kab: new: title: Rnu yiwen umzizdig amaynut footer: - developers: Ineflayen - more: Ugar… - resources: Iɣbula + trending_now: Ayen mucaɛen tura generic: all: Akk changes_saved_msg: Ttwaskelsen ibelliden-ik·im akken ilaq! @@ -637,16 +623,6 @@ kab: primary: Agejdan relationship: Assaɣ status: Addad n umiḍan - remote_follow: - no_account_html: Ur tesɛid ara amiḍan? Tzmreḍ ad jerdeḍ da - proceed: Kemmel taḍfart - remote_interaction: - favourite: - proceed: Kemmel asmenyef - reblog: - proceed: Sentem beṭṭu - reply: - proceed: Kemmel tiririt sessions: activity: Armud aneggaru browser: Iminig @@ -716,6 +692,7 @@ kab: video: one: "%{count} n tbidyutt" other: "%{count} n tbidyutin" + edited_at_html: Tettwaẓreg %{date} open_in_web: Ldi deg Web poll: total_people: @@ -744,7 +721,7 @@ kab: '2629746': 1 n wayyur '31556952': 1 n useggas '5259492': 2 n wayyuren - '604800': 1 week + '604800': 1 umalas '63113904': 2 n yiseggasen '7889238': 3 n wayyuren stream_entries: @@ -768,6 +745,8 @@ kab: otp: Asnas n usesteb webauthn: Tisura n teɣlist user_mailer: + appeal_approved: + action: Ddu ɣer umiḍan-ik·im warning: categories: spam: Aspam diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 090a1ae085..cc17ed911f 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -2,43 +2,24 @@ kk: about: about_mastodon_html: Mastodon - әлеуметтік желіге негізделген, тегін және веб протоколды, ашық кодты бағдарлама. Ол email сияқты орталығы жоқ құрылым. - apps: Мобиль қосымшалар contact_missing: Бапталмаған contact_unavailable: Белгісіз - documentation: Құжаттама hosted_on: Mastodon орнатылған %{domain} доменінде - source_code: Ашық коды - what_is_mastodon: Mastodon деген не? accounts: - choices_html: "%{name} таңдаулары:" - endorsements_hint: Сіз веб-интерфейстен адамдарға қолдау көрсете аласыз және олар осында көрсетіледі. - featured_tags_hint: Мұнда көрсетілетін нақты хэштегтерді ұсына аласыз. follow: Жазылу followers: one: Оқырман other: Оқырман following: Жазылғандары - joined: Тіркелген күні %{date} last_active: соңғы әрекеті link_verified_on: Сілтеме меншігі расталған күн %{date} - media: Медиа - moved_html: "%{name} мына жерге көшті %{new_profile_link}:" - network_hidden: Бұл ақпарат қолжетімді емес nothing_here: Бұл жерде ештеңе жоқ! - people_followed_by: "%{name} жазылған адамдар" - people_who_follow: "%{name} атты қолданушының оқырмандары" pin_errors: following: Оқығыңыз келген адамға жазылуыңыз керек posts: one: Жазба other: Жазба posts_tab_heading: Жазба - posts_with_replies: Жазбалар және жауаптар - roles: - bot: Бот - group: Топ - unavailable: Профиль қолжетімді емес - unfollow: Оқымау admin: account_actions: action: Әрекетті орындаңыз @@ -549,9 +530,6 @@ kk: new: title: Жаңа фильтр қосу footer: - developers: Жасаушылар - more: Тағы… - resources: Ресурстар trending_now: Бүгінгі трендтер generic: all: Барлығы @@ -578,7 +556,6 @@ kk: following: Жазылғандар тізімі muting: Үнсіздер тізімі upload: Жүктеу - in_memoriam_html: Естеліктерде. invites: delete: Ажырату expired: Мерзімі өткен @@ -698,22 +675,7 @@ kk: remove_selected_follows: Таңдалған қолданушыларды оқымау status: Аккаунт статусы remote_follow: - acct: Өзіңіздің username@domain теріңіз missing_resource: Аккаунтыңызға байланған URL табылмады - no_account_html: Әлі тіркелмегенсіз бе? Мына жерден тіркеліп алыңыз - proceed: Жазылу - prompt: 'Жазылғыңыз келеді:' - reason_html: "Неліктен бұл қадам қажет? %{instance} тіркелгіңіз келген сервер болмауы мүмкін, сондықтан сізді алдымен ішкі серверіңізге қайта бағыттау қажет." - remote_interaction: - favourite: - proceed: Таңдаулыға қосу - prompt: 'Мына жазбаны таңдаулыға қосасыз:' - reblog: - proceed: Жазба бөлісу - prompt: 'Сіз мына жазбаны бөлісесіз:' - reply: - proceed: Жауап жазу - prompt: 'Сіз мына жазбаға жауап жазасыз:' scheduled_statuses: over_daily_limit: Сіз бір күндік %{limit} жазба лимитін тауыстыңыз over_total_limit: Сіз %{limit} жазба лимитін тауыстыңыз diff --git a/config/locales/ko.yml b/config/locales/ko.yml index b07f1c41ca..3149be4589 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -2,44 +2,24 @@ ko: about: about_mastodon_html: 마스토돈은 오픈 소스 기반의 소셜 네트워크 서비스 입니다. 상용 플랫폼의 대체로서 분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 마스토돈 인스턴스를 만들 수 있으며, 아주 매끄럽게 소셜 네트워크에 참가할 수 있습니다. - api: API - apps: 모바일 앱 contact_missing: 미설정 contact_unavailable: 없음 - documentation: 문서 hosted_on: "%{domain}에서 호스팅 되는 마스토돈" - privacy_policy: 개인정보 처리방침 - source_code: 소스 코드 - what_is_mastodon: 마스토돈이란? + title: 정보 accounts: - choices_html: "%{name}의 추천:" - endorsements_hint: 내가 팔로우 하고 있는 사람들을 여기에 추천 할 수 있습니다. - featured_tags_hint: 특정한 해시태그들을 여기에 표시되도록 할 수 있습니다. follow: 팔로우 followers: other: 팔로워 following: 팔로잉 instance_actor_flash: 이 계정은 서버 자신을 나타내기 위한 가상의 계정이며 개인 사용자가 아닙니다. 이 계정은 연합을 위해 사용되며 정지되지 않아야 합니다. - joined: "%{date}에 가입함" last_active: 최근 활동 link_verified_on: "%{date}에 이 링크의 소유가 확인되었습니다" - media: 미디어 - moved_html: "%{name}은 %{new_profile_link}으로 이동되었습니다:" - network_hidden: 이 정보는 사용할 수 없습니다 nothing_here: 아무 것도 없습니다! - people_followed_by: "%{name} 님이 팔로우 중인 계정" - people_who_follow: "%{name} 님을 팔로우 중인 계정" pin_errors: following: 추천하려는 사람을 팔로우 하고 있어야 합니다 posts: other: 게시물 posts_tab_heading: 게시물 - posts_with_replies: 게시물과 답장 - roles: - bot: 봇 - group: 그룹 - unavailable: 프로필 사용 불가 - unfollow: 팔로우 해제 admin: account_actions: action: 조치 취하기 @@ -1150,9 +1130,6 @@ ko: hint: 이 필터는 다른 기준에 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 웹 인터페이스에서 더 많은 게시물들을 이 필터에 추가할 수 있습니다. title: 필터링된 게시물 footer: - developers: 개발자 - more: 더 보기… - resources: 리소스 trending_now: 지금 유행중 generic: all: 모두 @@ -1191,7 +1168,6 @@ ko: following: 팔로우 중인 계정 목록 muting: 뮤트 중인 계정 목록 upload: 업로드 - in_memoriam_html: 고인의 계정입니다. invites: delete: 비활성화 expired: 만료됨 @@ -1370,22 +1346,7 @@ ko: remove_selected_follows: 선택한 사용자들을 팔로우 해제 status: 계정 상태 remote_follow: - acct: 당신이 사용하는 아이디@도메인을 입력해 주십시오 missing_resource: 리디렉션 대상을 찾을 수 없습니다 - no_account_html: 계정이 없나요? 여기에서 가입 할 수 있습니다 - proceed: 팔로우 하기 - prompt: '팔로우 하려 하고 있습니다:' - reason_html: "왜 이 과정이 필요하죠?%{instance}는 당신이 가입한 서버가 아닐 것입니다, 당신의 홈 서버로 먼저 가야 합니다." - remote_interaction: - favourite: - proceed: 좋아요 진행 - prompt: '이 게시물을 좋아요 하려고 합니다:' - reblog: - proceed: 부스트 진행 - prompt: '이 게시물을 부스트 하려 합니다:' - reply: - proceed: 답장 진행 - prompt: '이 게시물에 답장을 하려 합니다:' reports: errors: invalid_rules: 올바른 규칙을 포함하지 않습니다 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index df2b7e65d3..b2914fef02 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -2,46 +2,26 @@ ku: about: about_mastodon_html: 'Tora civakî ya pêşerojê: Ne reklam, ne çavdêriya pargîdanî, sêwirana exlaqî, û desentralîzasyon! Bi Mastodon re bibe xwediyê daneyên xwe!' - api: API - apps: Sepana mobîl contact_missing: Nehate sazkirin contact_unavailable: N/A - documentation: Pelbend hosted_on: Mastodon li ser %{domain} tê pêşkêşkirin - privacy_policy: Politîka taybetiyê - source_code: Çavkaniya Kodî - what_is_mastodon: Mastodon çi ye? + title: Derbar accounts: - choices_html: 'Hilbijartina %{name}:' - endorsements_hint: Tu dikarî kesên ku di navrûya tevnê de dişopînî bipejirînî û ew ê li vir were nîşankirin. - featured_tags_hint: Tu dikarî hashtagên taybet ên ku wê li vir werin nîşandan bibînî. follow: Bişopîne followers: one: Şopîner other: Şopîner following: Dişopîne instance_actor_flash: Ev ajimêr listikvaneke rastkî ye ku ji bo wek nûnerê rajekar bixwe tê bikaranîn û ne bikarhênerek kesane. Ew ji bo mebestên giştî tê bikaranîn û divê neyê rawestandin. - joined: Di %{date} de tevlî bû last_active: çalakiya dawî link_verified_on: Xwedaniya li vê girêdanê di %{date} de hatiye kontrolkirin - media: Medya - moved_html: "%{name} bar kire %{new_profile_link}:" - network_hidden: Ev zanyarî berdest nîne nothing_here: Li vir tiştek tune ye! - people_followed_by: Kesên ku %{name} wan dişopîne - people_who_follow: Kesên%{name} dişopîne pin_errors: following: Kesê ku tu dixwazî bipejirînî jixwe tu vê dişopînî posts: one: Şandî other: Şandî posts_tab_heading: Şandî - posts_with_replies: Şandî û bersiv - roles: - bot: Bot - group: Kom - unavailable: Profîl nay bikaranîn - unfollow: Neşopîne admin: account_actions: action: Çalakî yê bike @@ -344,6 +324,7 @@ ku: listed: Rêzokkirî new: title: Hestokên kesane yên nû lê zêde bike + no_emoji_selected: Tu emojî nehatin hilbijartin ji ber vê tu şandî jî nehatin guhertin not_permitted: Mafê te tune ku tu vê çalakiyê bikî overwrite: Bi ser de binivsîne shortcode: Kurtekod @@ -814,6 +795,9 @@ ku: description_html: Van girêdanên ku niha ji hêla ajimêrên ku rajekarê te ji wan peyaman dibîne pir têne parvekirin. Ew dikare ji bikarhênerên te re bibe alîkar ku fêr bibin ka li cîhanê çi diqewime. Heya ku tu weşanger nepejirînin, ti girêdan bi gelemperî nayê xuyangkirin. Her weha tu dikarî mafê bidî girêdanên kesane an jî nedî. disallow: Mafê nede girêdanê disallow_provider: Mafê nede weşanger + no_link_selected: Tu girêdan nehatin hilbijartin ji ber vê tu girêdan jî nehatin guhertin + publishers: + no_publisher_selected: Tu weşan nehatin hilbijartin ji ber vê tu weşan jî nehatin guhertin shared_by_over_week: one: Di nava hefteya dawî de ji aliyê keskekî ve hate parvekirin other: Di nava hefteya dawî de ji aliyê %{count} ve hate parvekirin @@ -833,6 +817,7 @@ ku: description_html: Van şandiyên ku rajekarê te pê dizane ku niha pir têne parvekirin û bijartekirin. Ew dikare ji bikarhênerên te yên nû û yên vedigerin re bibe alîkar ku bêtir mirovên ku bişopînin bibînin. Heya ku tu nivîskar nepejirînî, tu şandî bi gelemperî nayên xuyangkirin, û nivîskar mafê dide ku ajimêrê xwe ji kesên din re were pêşniyarkirin. Her weha tu dikarî mafê bidî şandiyên kesane an jî nedî. disallow: Mafê nede şandiyê disallow_account: Mafê nede nivîskar + no_status_selected: Tu şandiyên rojevê nehatin hilbijartin ji ber vê tu şandî jî nehatin guhertin not_discoverable: Nivîskar nejilbijartiye ji bo ku were kifşkirin shared_by: one: Yek carî parvekirî an bijartî @@ -848,6 +833,7 @@ ku: tag_uses_measure: bikaranîna giştî description_html: Ev hashtag in ku niha di gelek şandiyên ku rajekarê te dibîne de xuya dibin. Ew dikare ji bikarhênerên te re bibe alîkar ku fêr bibin ka mirov di vê demê de herî pir li ser çi diaxive. Heya ku tu wan nepejirînî, tu hashtag bi gelemperî nayê xuyangkirin. listable: Dikare were pêşniyarkirin + no_tag_selected: Tu hashtag nehatin hilbijartin ji ber vê tu hashtag jî nehatin guhertin not_listable: Nikare wer pêşniyarkirin not_trendable: Wê di bin rojevan de xuya neke not_usable: Nikare were bikaranîn @@ -1171,9 +1157,6 @@ ku: hint: Ev parzûn bêyî pîvanên din ji bo hilbijartina şandiyên kesane tê sepandin. Tu dikarî ji navrûya tevnê bêtir şandiyan tevlî vê parzûnê bikî. title: Şandiyên parzûnkirî footer: - developers: Pêşdebir - more: Bêtir… - resources: Çavkanî trending_now: Niha rojevê de generic: all: Hemû @@ -1216,7 +1199,6 @@ ku: following: Rêzoka yên dişopînin muting: Rêzoka bêdengiyê upload: Bar bike - in_memoriam_html: Di bîranînê de. invites: delete: Neçalak bike expired: Dema wê qediya @@ -1396,22 +1378,7 @@ ku: remove_selected_follows: Bikarhênerên hilbijartî neşopîne status: Rewşa ajimêr remote_follow: - acct: Navnîşana ajimêra xwe username@domain yê ku tu yê jê çalakî bikî binvsîne missing_resource: Ji bona ajimêra te pêwistiya beralîkirina URLyê nehate dîtin - no_account_html: Ajimêra te tune? Tu dikarîli vir tomar bibe - proceed: Şopandinê bidomîne - prompt: 'Tu yê bişopînî:' - reason_html: "Ev gav ji bona çi pêwîst e?%{instance}rajekerên ku tu tomarkiriyî dibe ku tunebe, ji bona vê divê pêşî te beralîyê rajekera te bi xwe bikin." - remote_interaction: - favourite: - proceed: Ber bi bijarteyê ve biçe - prompt: 'Tu dixwazî vê şandiyê bibijêrî:' - reblog: - proceed: Bo bilindkirinê bidomîne - prompt: 'Tu dixwazî vê şandî ye bilind bikî:' - reply: - proceed: Bersivandinê bidomîne - prompt: 'Tu dixwazî bersiva vê şandiyê bidî:' reports: errors: invalid_rules: rêbazên derbasdar nîşan nadê diff --git a/config/locales/kw.yml b/config/locales/kw.yml index 4be328237b..7683e30423 100644 --- a/config/locales/kw.yml +++ b/config/locales/kw.yml @@ -1,8 +1,5 @@ --- kw: - accounts: - roles: - group: Bagas admin: accounts: email: Ebost diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 235059a238..c160f4c977 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -2,32 +2,17 @@ lt: about: about_mastodon_html: Mastodon, tai socialinis tinklas pagrįstas atviro kodo programavimu, ir atvirais web protokolais. Visiškai nemokamas. Ši sistema decantrilizuota kaip jūsų elektroninis paštas. - apps: Mobilioji Aplikacija contact_missing: Nenustatyta - documentation: Dokumentacija hosted_on: Mastodon palaikomas naudojantis %{domain} talpinimu - source_code: Šaltinio kodas - what_is_mastodon: Kas tai, Mastodon? accounts: - choices_html: "%{name} pasirinkimai:" follow: Sekti following: Sekami - joined: Prisijungiai %{date} last_active: paskutinį kartą aktyvus link_verified_on: Nuorodos nuosavybė paskutinį kartą tikrinta %{date} - media: Medija - moved_html: "%{name} persikėlė į %{new_profile_link}:" - network_hidden: Ši informacija neprieinama nothing_here: Čia nieko nėra! - people_followed_by: Žmonės, kuriuos %{name} seka - people_who_follow: Žmonės kurie seka %{name} pin_errors: following: Privalai sekti žmogų kurį nori pagerbti posts_tab_heading: Tootai - posts_with_replies: Tootai ir atsakymai - roles: - bot: Bot'as - unfollow: Nesekti admin: account_actions: action: Veiksmas @@ -413,10 +398,6 @@ lt: title: Filtrai new: title: Pridėti naują filtrą - footer: - developers: Programuotojai - more: Daugiau… - resources: Resursai generic: changes_saved_msg: Pakeitimai sėkmingai išsaugoti! copy: Kopijuoti @@ -435,7 +416,6 @@ lt: following: Sekėju sąrašas muting: Tildomų sąrašas upload: Įkelti - in_memoriam_html: Atminimui. invites: delete: Deaktyvuoti expired: Pasibaigęs @@ -497,22 +477,7 @@ lt: preferences: other: Kita remote_follow: - acct: Įveskite Jūsų slapyvardį@domenas kurį norite naudoti missing_resource: Jūsų paskyros nukreipimo URL nerasta - no_account_html: Neturite paskyros? Jūs galite užsiregistruoti čia - proceed: Sekti - prompt: 'Jūs seksite:' - reason_html: "Kodėl šis žingsnis svarbus?%{instance} gali būti serveris, kuriame jūs nesate užsiregistravęs, todėl mes turime jus nukreipti į Jūsų namų serveri." - remote_interaction: - favourite: - proceed: Pamėgti - prompt: 'Jūs norite pamėgti šį toot''ą:' - reblog: - proceed: Pakelti - prompt: 'Jūs norite pakelti šį toot''ą:' - reply: - proceed: Atsakyti - prompt: 'Jūs norite atsakyti šiam toot''ui:' scheduled_statuses: over_daily_limit: Jūs pasieketė limitą (%{limit}) galimų toot'ų per dieną over_total_limit: Jūs pasieketė %{limit} limitą galimų toot'ų diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 507e906a73..aca42fe58e 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -2,19 +2,11 @@ lv: about: about_mastodon_html: 'Nākotnes sociālais tīkls: bez reklāmām, bez korporatīvās uzraudzības, ētisks dizains un decentralizācija! Pārvaldi savus datus ar Mastodon!' - api: API - apps: Mobilās lietotnes contact_missing: Nav uzstādīts contact_unavailable: N/A - documentation: Dokumentācija hosted_on: Mastodon mitināts %{domain} - privacy_policy: Privātuma Politika - source_code: Pirmkods - what_is_mastodon: Kas ir Mastodon? + title: Par accounts: - choices_html: "%{name} izvēles:" - endorsements_hint: Jūs varat apstiprināt cilvēkus, kuriem sekojat no tīmekļa saskarnes, un viņi tiks parādīti šeit. - featured_tags_hint: Šeit vari norādīt īpašus tēmturus, kuri tiks parādīti šeit. follow: Sekot followers: one: Sekotājs @@ -22,15 +14,9 @@ lv: zero: Sekotāju following: Seko instance_actor_flash: Šis konts ir virtuāls aktieris, ko izmanto, lai pārstāvētu pašu serveri, nevis atsevišķu lietotāju. To izmanto federācijas nolūkos, un to nevajadzētu apturēt. - joined: Pievienojās %{date} last_active: pēdējā aktivitāte link_verified_on: Šīs saites piederība tika pārbaudīta %{date} - media: Multivide - moved_html: "%{name} ir pārcēlies uz %{new_profile_link}:" - network_hidden: Šāda informācija nav pieejama nothing_here: Te nekā nav! - people_followed_by: Cilvēki, kuriem %{name} seko - people_who_follow: Cilvēki, kuri seko %{name} pin_errors: following: Tev jau ir jāseko personai, kuru vēlies apstiprināt posts: @@ -38,12 +24,6 @@ lv: other: Ziņas zero: Ziņu posts_tab_heading: Ziņas - posts_with_replies: Ziņas un atbildes - roles: - bot: Bots - group: Grupa - unavailable: Profils nav pieejams - unfollow: Pārstāt sekot admin: account_actions: action: Veikt darbību @@ -347,6 +327,7 @@ lv: listed: Uzrakstītas new: title: Pievienojiet jaunas pielāgotās emocijzīmes + no_emoji_selected: Neviena emocijzīme netika mainīta, jo neviena netika atlasīta not_permitted: Tev nav atļauts veikt šo darbību overwrite: Pārrakstīt shortcode: Īskods @@ -826,6 +807,9 @@ lv: description_html: Šīs ir saites, kuras pašlaik bieži koplieto konti, no kuriem tavs serveris redz ziņas. Tas var palīdzēt taviem lietotājiem uzzināt, kas notiek pasaulē. Kamēr tu neapstiprini izdevēju, neviena saite netiek rādīta publiski. Vari arī atļaut vai noraidīt atsevišķas saites. disallow: Neatļaut saiti disallow_provider: Neatļaut publicētāju + no_link_selected: Neviena saite netika mainīta, jo neviena netika atlasīta + publishers: + no_publisher_selected: Neviens publicētājs netika mainīts, jo neviens netika atlasīts shared_by_over_week: one: Pēdējās nedēļas laikā kopīgoja viena persona other: Pēdējās nedēļas laikā kopīgoja %{count} personas @@ -846,6 +830,7 @@ lv: description_html: Šīs ir ziņas, par kurām tavs serveris zina un kuras pašlaik tiek koplietotas un pašlaik ir daudz izlasē. Tas var palīdzēt taviem jaunajiem un atkārtotiem lietotājiem atrast vairāk cilvēku, kam sekot. Neviena ziņa netiek publiski rādīta, kamēr neesi apstiprinājis autoru un autors atļauj savu kontu ieteikt citiem. Vari arī atļaut vai noraidīt atsevišķas ziņas. disallow: Neatļaut publicēt disallow_account: Neatļaut autoru + no_status_selected: Neviena populāra ziņa netika mainīta, jo neviena netika atlasīta not_discoverable: Autors nav izvēlējies būt atklājams shared_by: one: Vienreiz kopīgots vai pievienots izlasei @@ -862,6 +847,7 @@ lv: tag_uses_measure: lietojumi pavisam description_html: Šīs ir atsauces, kas pašlaik tiek rādītas daudzās ziņās, kuras redz tavs serveris. Tas var palīdzēt taviem lietotājiem uzzināt, par ko cilvēki šobrīd runā visvairāk. Neviena atsauce netiek rādīta publiski, kamēr tu neesi tās apstiprinājis. listable: Var tikt ieteikts + no_tag_selected: Neviena atzīme netika mainīta, jo neviena netika atlasīta not_listable: Nevar tikt ieteikts not_trendable: Neparādīsies pie tendencēm not_usable: Nevar tikt lietots @@ -1190,9 +1176,6 @@ lv: hint: Šis filtrs attiecas uz atsevišķu ziņu atlasi neatkarīgi no citiem kritērijiem. Šim filtram tu vari pievienot vairāk ziņu, izmantojot tīmekļa saskarni. title: Filtrētās ziņas footer: - developers: Izstrādātāji - more: Vairāk… - resources: Resursi trending_now: Šobrīd tendences generic: all: Visi @@ -1239,7 +1222,6 @@ lv: following: Šāds saraksts muting: Izslēgšanas saraksts upload: Augšupielādēt - in_memoriam_html: Piemiņai. invites: delete: Deaktivizēt expired: Beigušies @@ -1420,22 +1402,7 @@ lv: remove_selected_follows: Pārtraukt sekošanu atlasītajiem lietotājiem status: Konta statuss remote_follow: - acct: Ievadi savu lietotajvards@domens, no kura vēlies darboties missing_resource: Nevarēja atrast tavam kontam nepieciešamo novirzīšanas URL - no_account_html: Vai tev nav konta? Tu vari piereģistrēties šeit - proceed: Turpini lai sekotu - prompt: 'Tu gatavojies sekot:' - reason_html: " Kāpēc šis solis ir nepieciešams? %{instance}, iespējams, nav serveris, kurā esi reģistrēts, tāpēc mums vispirms ir jānovirza tevi uz tavu mājas serveri." - remote_interaction: - favourite: - proceed: Pārej uz izlasi - prompt: 'Tu vēlies pievienot izlasei šo ziņu:' - reblog: - proceed: Turpini paaugstināt - prompt: 'Tu vēlies paugstināt šo ziņu:' - reply: - proceed: Turpini lai atbildētu - prompt: 'Tu vēlies atbildēt uz šo ziņu:' reports: errors: invalid_rules: neatsaucas uz derīgiem noteikumiem diff --git a/config/locales/ml.yml b/config/locales/ml.yml index db09164f68..d5442c96cb 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -1,29 +1,15 @@ --- ml: about: - api: എപിഐ - apps: മൊബൈൽ ആപ്പുകൾ contact_missing: സജ്ജമാക്കിയിട്ടില്ല contact_unavailable: ലഭ്യമല്ല - documentation: വിവരണം - source_code: സോഴ്സ് കോഡ് - what_is_mastodon: എന്താണ് മാസ്റ്റഡോൺ? accounts: follow: പിന്തുടരുക following: പിന്തുടരുന്നു - joined: "%{date} ൽ ചേർന്നു" last_active: അവസാനം സജീവമായിരുന്നത് link_verified_on: സന്ധിയുടെ ഉടമസ്ഥാവസ്‌കാശം %{date} ൽ പരിശോധിക്കപ്പെട്ടു - media: മാധ്യമങ്ങൾ - moved_html: "%{name}, %{new_profile_link} ലേക്ക് നീങ്ങിയിരിക്കുന്നു:" - network_hidden: ഈ വിവരം ലഭ്യമല്ല nothing_here: ഇവിടെ ഒന്നുമില്ല! posts_tab_heading: ടൂട്ടുകൾ - posts_with_replies: ടൂട്ടുകളും മറുപടികളും - roles: - bot: ബോട്ട് - group: ഗ്രൂപ്പ് - unavailable: പ്രൊഫൈൽ ലഭ്യമല്ല admin: accounts: add_email_domain_block: ഇ-മെയിൽ ഡൊമെയ്ൻ തടയുക diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 5b32aa09db..ecd6414937 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -2,43 +2,23 @@ ms: about: about_mastodon_html: 'Rangkaian sosial masa hadapan: Tiada iklan, tiada pengawasan korporat, reka bentuk beretika, dan desentralisasi! Miliki data anda dengan Mastodon!' - api: API - apps: Aplikasi mudah alih contact_missing: Tidak ditetapkan contact_unavailable: Tidak tersedia - documentation: Pendokumenan hosted_on: Mastodon dihoskan di %{domain} - source_code: Kod sumber - what_is_mastodon: Apakah itu Mastodon? accounts: - choices_html: 'Pilihan %{name}:' - endorsements_hint: Anda boleh syorkan orang yang anda ikuti menggunakan antara muka sesawang, dan mereka akan ditunjukkan di sini. - featured_tags_hint: Anda boleh mempromosikan tanda pagar khusus yang akan dipaparkan di sini. follow: Ikut followers: other: Pengikut following: Mengikuti instance_actor_flash: Akaun ini ialah pelaku maya yang digunakan untuk mewakili pelayan itu sendiri dan bukan mana-mana pengguna individu. Ia digunakan untuk tujuan persekutuan dan tidak patut digantung. - joined: Sertai pada %{date} last_active: aktif terakhir link_verified_on: Pemilikan pautan ini diperiksa pada %{date} - media: Media - moved_html: "%{name} telah berpindah ke %{new_profile_link}:" - network_hidden: Maklumat ini tidak tersedia nothing_here: Tiada apa-apa di sini! - people_followed_by: Orang yang %{name} ikuti - people_who_follow: Orang yang mengikut %{name} pin_errors: following: Anda mestilah sudah mengikuti orang yang anda ingin syorkan posts: other: Hantaran posts_tab_heading: Hantaran - posts_with_replies: Hantaran dan balasan - roles: - bot: Bot - group: Kumpulan - unavailable: Profil tidak tersedia - unfollow: Nyahikut admin: account_actions: action: Ambil tindakan diff --git a/config/locales/nl.yml b/config/locales/nl.yml index b61cae2511..37db2a1886 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -2,46 +2,26 @@ nl: about: about_mastodon_html: Mastodon is een sociaal netwerk dat gebruikt maakt van open webprotocollen en vrije software. Het is net zoals e-mail gedecentraliseerd. - api: API - apps: Mobiele apps contact_missing: Niet ingesteld contact_unavailable: n.v.t - documentation: Documentatie hosted_on: Mastodon op %{domain} - privacy_policy: Privacybeleid - source_code: Broncode - what_is_mastodon: Wat is Mastodon? + title: Over accounts: - choices_html: 'Aanbevelingen van %{name}:' - endorsements_hint: Je kunt mensen die je volgt in de webomgeving aanbevelen, waarna ze dan hier zullen verschijnen. - featured_tags_hint: Je kunt specifieke hashtags uitlichten, waarna ze dan hier zullen verschijnen. follow: Volgen followers: one: Volger other: Volgers following: Volgend instance_actor_flash: Dit account is een 'virtual actor' waarmee de server zichzelf vertegenwoordigd en is dus geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden opgeschort. - joined: Geregistreerd in %{date} last_active: laatst actief link_verified_on: Eigendom van deze link is gecontroleerd op %{date} - media: Media - moved_html: "%{name} is verhuisd naar %{new_profile_link}:" - network_hidden: Deze informatie is niet beschikbaar nothing_here: Hier is niets! - people_followed_by: Mensen die %{name} volgen - people_who_follow: Mensen die %{name} volgen pin_errors: following: Je moet dit account wel al volgen, alvorens je het kan aanbevelen posts: one: Toot other: Berichten posts_tab_heading: Berichten - posts_with_replies: Berichten en reacties - roles: - bot: Bot - group: Groep - unavailable: Profiel niet beschikbaar - unfollow: Ontvolgen admin: account_actions: action: Actie uitvoeren @@ -124,8 +104,8 @@ nl: perform_full_suspension: Opschorten previous_strikes: Eerdere overtredingen previous_strikes_description_html: - one: Dit account heeft één overtreding. - other: Dit account heeft %{count} overtredingen. + one: Dit account heeft één overtreding gemaakt. + other: Dit account heeft %{count} overtredingen gemaakt. promote: Promoveren protocol: Protocol public: Openbaar @@ -337,6 +317,7 @@ nl: listed: Weergegeven new: title: Lokale emoji toevoegen + no_emoji_selected: Er werden geen emoji's gewijzigd, omdat er geen enkele werd geselecteerd not_permitted: Het hebt geen rechten om deze actie uit te voeren overwrite: Overschrijven shortcode: Verkorte code @@ -421,6 +402,7 @@ nl: domain: Domein new: create: Blokkeren + resolve: Domein opzoeken title: Nieuw e-maildomein blokkeren title: Geblokkeerde e-maildomeinen follow_recommendations: @@ -433,6 +415,7 @@ nl: unsuppress: Account weer aanbevelen instances: availability: + no_failures_recorded: Geen storingen bekend. title: Beschikbaarheid warning: De laatste poging om met deze server te verbinden was onsuccesvol back_to_all: Alles @@ -538,6 +521,7 @@ nl: other: "%{count} opmerkingen" action_log: Auditlog action_taken_by: Actie uitgevoerd door + add_to_report: Meer aan de rapportage toevoegen are_you_sure: Weet je het zeker? assign_to_self: Aan mij toewijzen assigned: Toegewezen moderator @@ -587,6 +571,7 @@ nl: moderation: Moderatie special: Speciaal delete: Verwijderen + edit: Rol '%{name}' bewerken everyone: Standaardrechten everyone_full_description_html: Dit is de basisrol die van toepassing is op alle gebruikers, zelfs voor diegenen zonder toegewezen rol. Alle andere rollen hebben de rechten van deze rol als minimum. permissions_count: @@ -700,7 +685,9 @@ nl: destroyed_msg: Verwijderen website-upload geslaagd! statuses: back_to_account: Terug naar accountpagina + back_to_report: Terug naar de rapportage batch: + remove_from_report: Uit de rapportage verwijderen report: Rapportage deleted: Verwijderd media: @@ -732,34 +719,70 @@ nl: disallow: Weigeren links: allow: Link toestaan - allow_provider: Uitgever toestaan + allow_provider: Website goedkeuren + description_html: Dit zijn links die momenteel veel worden gedeeld door accounts waar jouw server berichten van ontvangt. Hierdoor kunnen jouw gebruikers zien wat er in de wereld aan de hand is. Er worden geen links weergeven totdat je de website hebt goedgekeurd. Je kunt ook individuele links goed- of afkeuren. disallow: Link toestaan - disallow_provider: Website toestaan + disallow_provider: Website afkeuren + no_link_selected: Er werden geen links gewijzigd, omdat er geen enkele werd geselecteerd + publishers: + no_publisher_selected: Er werden geen websites gewijzigd, omdat er geen enkele werd geselecteerd title: Trending links only_allowed: Alleen toegestaan pending_review: In afwachting van beoordeling preview_card_providers: allowed: Links van deze website kunnen trending worden - rejected: Links van deze website kunnen niet trending worden - title: Uitgevers + rejected: Links naar deze nieuwssite kunnen niet trending worden + title: Websites rejected: Afgewezen statuses: allow: Bericht toestaan allow_account: Gebruiker toestaan disallow: Bericht niet toestaan disallow_account: Gebruiker niet toestaan + no_status_selected: Er werden geen trending berichten gewijzigd, omdat er geen enkele werd geselecteerd not_discoverable: Gebruiker heeft geen toestemming gegeven om vindbaar te zijn title: Trending berichten tags: + current_score: Huidige score is %{score} dashboard: + tag_accounts_measure: aantal unieke keren gebruikt tag_languages_dimension: Populaire talen tag_servers_dimension: Populaire servers + tag_servers_measure: verschillende servers + tag_uses_measure: totaal aantal keer gebruikt + listable: Kan worden aanbevolen + no_tag_selected: Er werden geen hashtags gewijzigd, omdat er geen enkele werd geselecteerd + not_listable: Wordt niet aanbevolen + not_usable: Kan niet worden gebruikt + title: Trending hashtags + trending_rank: 'Trending #%{rank}' + usable: Kan worden gebruikt + title: Trends + trending: Trending warning_presets: add_new: Nieuwe toevoegen delete: Verwijderen edit_preset: Preset voor waarschuwing bewerken empty: Je hebt nog geen presets voor waarschuwingen toegevoegd. title: Presets voor waarschuwingen beheren + webhooks: + add_new: Eindpunt toevoegen + delete: Verwijderen + disable: Uitschakelen + disabled: Uitgeschakeld + edit: Eindpunt bewerken + enable: Inschakelen + enabled: Ingeschakeld + enabled_events: + one: 1 ingeschakelde gebeurtenis + other: "%{count} ingeschakelde gebeurtenissen" + events: Gebeurtenissen + new: Nieuwe webhook + rotate_secret: Secret opnieuw genereren + secret: Signing secret + status: Status + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -780,6 +803,13 @@ nl: body: "%{reporter} heeft %{target} gerapporteerd" body_remote: Iemand van %{domain} heeft %{target} gerapporteerd subject: Nieuwe rapportage op %{instance} (#%{id}) + new_trends: + new_trending_links: + title: Trending links + new_trending_statuses: + title: Trending berichten + new_trending_tags: + title: Trending hashtags aliases: add_new: Alias aanmaken created_msg: Succesvol een nieuwe alias aangemaakt. Je kunt nu met de verhuizing vanaf het oude account beginnen. @@ -860,6 +890,7 @@ nl: functional: Jouw account kan in diens geheel gebruikt worden. pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd. redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}. + view_strikes: Bekijk de eerder door moderatoren vastgestelde overtredingen die je hebt gemaakt too_fast: Formulier is te snel ingediend. Probeer het nogmaals. use_security_key: Beveiligingssleutel gebruiken authorize_follow: @@ -920,6 +951,7 @@ nl: username_unavailable: Jouw gebruikersnaam zal onbeschikbaar blijven disputes: strikes: + action_taken: Genomen maatregel appeal: Bezwaar appeal_approved: Het ingediende bezwaar is goedgekeurd en de eerder vastgestelde overtreding is niet langer geldig appeal_rejected: Het ingediende bezwaar is afgewezen @@ -928,7 +960,12 @@ nl: appeals: submit: Bezwaar indienen approve_appeal: Bezwaar goedkeuren + associated_report: Bijbehorende rapportage + created_at: Datum en tijd + recipient: Geadresseerd aan reject_appeal: Bezwaar afgewezen + status: 'Bericht #%{id}' + title: "%{action} van %{date}" title_actions: delete_statuses: Verwijdering bericht disable: Bevriezen van account @@ -1021,9 +1058,6 @@ nl: index: title: Gefilterde berichten footer: - developers: Ontwikkelaars - more: Meer… - resources: Hulpmiddelen trending_now: Trends generic: all: Alles @@ -1066,7 +1100,6 @@ nl: following: Volglijst muting: Negeerlijst upload: Uploaden - in_memoriam_html: In memoriam. invites: delete: Deactiveren expired: Verlopen @@ -1098,6 +1131,7 @@ nl: password: wachtwoord sign_in_token: beveiligingscode via e-mail webauthn: beveiligingssleutels + title: Inloggeschiedenis media_attachments: validations: images_and_video: Een video kan niet aan een bericht met afbeeldingen worden gekoppeld @@ -1144,6 +1178,8 @@ nl: admin: report: subject: "%{name} heeft een rapportage ingediend" + sign_up: + subject: "%{name} heeft zich geregistreerd" favourite: body: 'Jouw bericht werd door %{name} als favoriet gemarkeerd:' subject: "%{name} markeerde jouw bericht als favoriet" @@ -1239,22 +1275,9 @@ nl: remove_selected_follows: Geselecteerde gebruikers ontvolgen status: Accountstatus remote_follow: - acct: Geef jouw account@domein op die je wilt gebruiken missing_resource: Kon vereiste doorverwijzings-URL voor jouw account niet vinden - no_account_html: Heb je geen account? Je kunt er hier een registreren - proceed: Ga verder om te volgen - prompt: 'Jij gaat volgen:' - reason_html: " Waarom is deze extra stap nodig? %{instance} is wellicht niet de server waarop jij je geregistreerd hebt. We verwijzen je eerst door naar jouw eigen server." - remote_interaction: - favourite: - proceed: Doorgaan met het markeren als favoriet - prompt: 'Je wilt het volgende bericht als favoriet markeren:' - reblog: - proceed: Doorgaan met boosten - prompt: 'Je wilt het volgende bericht boosten:' - reply: - proceed: Doorgaan met reageren - prompt: 'Je wilt op het volgende bericht reageren:' + rss: + content_warning: 'Inhoudswaarschuwing:' scheduled_statuses: over_daily_limit: Je hebt de limiet van %{limit} in te plannen berichten voor vandaag overschreden over_total_limit: Je hebt de limiet van %{limit} in te plannen berichten overschreden @@ -1319,6 +1342,8 @@ nl: preferences: Voorkeuren profile: Profiel relationships: Volgers en gevolgden + statuses_cleanup: Automatisch berichten verwijderen + strikes: Vastgestelde overtredingen two_factor_authentication: Tweestapsverificatie webauthn_authentication: Beveiligingssleutels statuses: @@ -1370,6 +1395,7 @@ nl: unlisted: Minder openbaar unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen statuses_cleanup: + exceptions: Uitzonderingen ignore_favs: Favorieten negeren ignore_reblogs: Boosts negeren keep_direct: Directe berichten behouden @@ -1398,7 +1424,7 @@ nl: sensitive_content: Gevoelige inhoud strikes: errors: - too_late: De periode dat je bezwaar kon maken is verstreken + too_late: De periode dat je bezwaar kunt maken tegen deze overtreding is verstreken tags: does_not_match_previous_name: komt niet overeen met de vorige naam themes: @@ -1409,6 +1435,7 @@ nl: formats: default: "%d %B %Y om %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Toevoegen disable: Tweestapsverificatie uitschakelen @@ -1439,6 +1466,7 @@ nl: subject: Jouw archief staat klaar om te worden gedownload title: Archief ophalen suspicious_sign_in: + change_password: jouw wachtwoord wijzigen title: Een nieuwe registratie warning: appeal: Bezwaar indienen diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 620d87deb2..c0a40c41cb 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -2,45 +2,25 @@ nn: about: about_mastodon_html: 'Framtidas sosiale nettverk: Ingen annonsar, ingen verksemder som overvaker deg, etisk design og desentralisering! Eig idéane dine med Mastodon!' - api: API - apps: Mobilappar contact_missing: Ikkje sett contact_unavailable: I/T - documentation: Dokumentasjon hosted_on: "%{domain} er vert for Mastodon" - source_code: Kjeldekode - what_is_mastodon: Kva er Mastodon? accounts: - choices_html: "%{name} sine val:" - endorsements_hint: Du kan fremja folk dy fylgjer frå grensesnittet på nettet, og då visast dei her. - featured_tags_hint: Du kan velja emneknaggar som skal visast her. follow: Fylg followers: one: Fylgjar other: Fylgjarar following: Fylgjer instance_actor_flash: Denne kontoen er en virtuell figur som brukes til å representere selve serveren og ikke noen individuell bruker. Den brukes til forbundsformål og bør ikke oppheves. - joined: Vart med %{date} last_active: sist aktiv link_verified_on: Eigarskap for denne lenkja vart sist sjekka %{date} - media: Media - moved_html: "%{name} har flytta til %{new_profile_link}:" - network_hidden: Denne informasjonen er ikkje tilgjengeleg nothing_here: Her er det ingenting! - people_followed_by: Folk som %{name} fylgjer - people_who_follow: Folk som fylgjer %{name} pin_errors: following: Du må allereie fylgja personen du vil fremja posts: one: Tut other: Tut posts_tab_heading: Tut - posts_with_replies: Tut og svar - roles: - bot: Robot - group: Gruppe - unavailable: Profil ikkje tilgjengeleg - unfollow: Slutt å fylgja admin: account_actions: action: Utfør @@ -723,9 +703,6 @@ nn: new: title: Legg til nytt filter footer: - developers: Utviklarar - more: Meir… - resources: Ressursar trending_now: Populært no generic: all: Alle @@ -754,7 +731,6 @@ nn: following: Fylgjeliste muting: Dempeliste upload: Last opp - in_memoriam_html: Til minne. invites: delete: Slå av expired: Utgått @@ -915,22 +891,7 @@ nn: remove_selected_follows: Slutt å fylgja desse brukarane status: Kontostatus remote_follow: - acct: Tast inn brukernavn@domene som du vil følge fra missing_resource: Kunne ikke finne URLen for din konto - no_account_html: Har du ikkje konto? Du kan melda deg inn her - proceed: Hald fram med å fylgja - prompt: 'Du kjem til å fylgja:' - reason_html: "Hvorfor dette trinnet er nødvendig?%{instance} er kanskje ikke tjeneren som du er registrert på, så vi må omdirigere deg til hjemmetjeneren din først." - remote_interaction: - favourite: - proceed: Merk som favoritt - prompt: 'Du vil merkja dette tutet som favoritt:' - reblog: - proceed: Framhev - prompt: 'Du vil framheva dette tutet:' - reply: - proceed: Svar - prompt: 'Du vil svara på dette tutet:' scheduled_statuses: over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter diff --git a/config/locales/no.yml b/config/locales/no.yml index f0871ac379..550868ba3c 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -2,45 +2,25 @@ 'no': about: about_mastodon_html: Mastodon er et sosialt nettverk laget med fri programvare. Et desentralisert alternativ til kommersielle plattformer. Slik kan det unngå risikoene ved å ha et enkelt selskap som monopoliserer din kommunikasjon. Velg en tjener du stoler på — uansett hvilken du velger så kan du kommunisere med alle andre. Alle kan kjøre sin egen Mastodon og delta sømløst i det sosiale nettverket. - api: API - apps: Mobilapper contact_missing: Ikke innstilt contact_unavailable: Ikke tilgjengelig - documentation: Dokumentasjon hosted_on: Mastodon driftet på %{domain} - source_code: Kildekode - what_is_mastodon: Hva er Mastodon? accounts: - choices_html: "%{name} sine anbefalte:" - endorsements_hint: Du kan fremheve personer du følger fra nettgrensesnittet som deretter vil bli vist her. - featured_tags_hint: Du kan fremheve spesifikke emneknagger som vil bli vist her. follow: Følg followers: one: Følger other: Følgere following: Følger instance_actor_flash: Denne kontoen er en virtuell figur som brukes til å representere selve serveren og ikke noen individuell bruker. Den brukes til forbundsformål og bør ikke oppheves. - joined: Ble med den %{date} last_active: sist aktiv link_verified_on: Eierskap av denne lenken ble sjekket %{date} - media: Media - moved_html: "%{name} har flyttet til %{new_profile_link}:" - network_hidden: Denne informasjonen er ikke tilgjengelig nothing_here: Det er ingenting her! - people_followed_by: Folk som %{name} følger - people_who_follow: Folk som følger %{name} pin_errors: following: Du må allerede følge personen du vil fremheve posts: one: Tut other: Tuter posts_tab_heading: Tuter - posts_with_replies: Tuter med svar - roles: - bot: Bot - group: Gruppe - unavailable: Profilen er utilgjengelig - unfollow: Slutt å følge admin: account_actions: action: Utfør handling @@ -705,9 +685,6 @@ new: title: Legg til nytt filter footer: - developers: Utviklere - more: Mer… - resources: Ressurser trending_now: Trender nå generic: all: Alle @@ -733,7 +710,6 @@ following: Følgeliste muting: Dempeliste upload: Opplastning - in_memoriam_html: Til minne. invites: delete: Deaktiver expired: Utløpt @@ -894,22 +870,7 @@ remove_selected_follows: Avfølg de valgte brukerne status: Kontostatus remote_follow: - acct: Tast inn brukernavn@domene som du vil følge fra missing_resource: Kunne ikke finne URLen for din konto - no_account_html: Har du ikke en konto? Da kan du lage en konto her - proceed: Fortsett med følging - prompt: 'Du vil følge:' - reason_html: "Hvorfor dette trinnet er nødvendig?%{instance} er kanskje ikke tjeneren som du er registrert på, så vi må omdirigere deg til hjemmetjeneren din først." - remote_interaction: - favourite: - proceed: Fortsett til likingen - prompt: 'Du ønsker å like denne tuten:' - reblog: - proceed: Fortsett til fremhevingen - prompt: 'Du ønsker å fremheve denne tuten:' - reply: - proceed: Fortsett til svaret - prompt: 'Du ønsker å svare på denne tuten:' scheduled_statuses: over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter diff --git a/config/locales/oc.yml b/config/locales/oc.yml index b310f02eb9..1d2fdbe4ed 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -2,44 +2,24 @@ oc: about: about_mastodon_html: Mastodon es un malhum social bastit amb de protocòls liures e gratuits. Es descentralizat coma los corrièls. - api: API - apps: Aplicacions per mobil contact_missing: Pas parametrat contact_unavailable: Pas disponible - documentation: Documentacion hosted_on: Mastodon albergat sus %{domain} - source_code: Còdi font - what_is_mastodon: Qu’es Mastodon ? accounts: - choices_html: 'Recomandacions de %{name} :' - endorsements_hint: Podètz recomandar personas que seguètz a partir de l’interfàcia web, apreissaràn aquí. - featured_tags_hint: Podètz indicar d’etiquetas que mostrarem aquí. follow: Sègre followers: one: Seguidor other: Seguidors following: Abonaments - joined: Arribèt en %{date} last_active: darrièra activitat link_verified_on: La proprietat d’aqueste ligam foguèt verificada lo %{date} - media: Mèdias - moved_html: "%{name} a mudat a %{new_profile_link} :" - network_hidden: Aquesta informacion es pas disponibla nothing_here: I a pas res aquí ! - people_followed_by: Lo monde que %{name} sèc - people_who_follow: Lo monde que sègon %{name} pin_errors: following: Vos cal d’en primièr sègre las personas que volètz promòure posts: one: Tut other: Tuts posts_tab_heading: Tuts - posts_with_replies: Tuts e responsas - roles: - bot: Robòt - group: Grop - unavailable: Perfil indisponible - unfollow: Quitar de sègre admin: account_actions: action: Realizar una accion @@ -647,9 +627,6 @@ oc: new: title: Ajustar un nòu filtre footer: - developers: Desvolopaires - more: Mai… - resources: Ressorsas trending_now: Tendéncia del moment generic: all: Tot @@ -679,7 +656,6 @@ oc: following: Lista de monde que seguètz muting: Lista de monde que volètz pas legir upload: Importar - in_memoriam_html: En Memòria. invites: delete: Desactivar expired: Expirat @@ -813,22 +789,7 @@ oc: remove_selected_follows: Quitar de sègre las personas seleccionadas status: Estat del compte remote_follow: - acct: Picatz vòstre utilizaire@domeni que que volètz utilizar per sègre aqueste utilizaire missing_resource: URL de redireccion pas trobada - no_account_html: Avètz pas cap de compte ? Podètz vos marcar aquí - proceed: Clicatz per sègre - prompt: 'Sètz per sègre :' - reason_html: "Perque aquesta etapa es necessària ?%{instance} es benlèu pas lo servidor ont vos marquèretz, doncas nos cal vos redirigir cap a vòstre prim servidor per començar." - remote_interaction: - favourite: - proceed: Contunhar per metre en favorit - prompt: 'Volètz metre en favorit aqueste tut :' - reblog: - proceed: Contunhar per repartejar - prompt: 'Volètz repartejar aqueste tut :' - reply: - proceed: Contunhar per respondre - prompt: 'Volètz respondre a aqueste tut :' scheduled_statuses: over_daily_limit: Avètz passat la limita de %{limit} tuts programats per aquel jorn over_total_limit: Avètz passat la limita de %{limit} tuts programats diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 88e664400b..c7c19b0aec 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -2,19 +2,11 @@ pl: about: about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform. - api: API - apps: Aplikacje contact_missing: Nie ustawiono contact_unavailable: Nie dotyczy - documentation: Dokumentacja hosted_on: Mastodon uruchomiony na %{domain} - privacy_policy: Polityka prywatności - source_code: Kod źródłowy - what_is_mastodon: Czym jest Mastodon? + title: O nas accounts: - choices_html: 'Polecani przez %{name}:' - endorsements_hint: Możesz promować ludzi, których obserwujesz, z poziomu interfejsu webowego - wtedy oni pojawią się w tym miejscu. - featured_tags_hint: Możesz przedstawić w tym miejscu kilka wybranych hasztagów. follow: Śledź followers: few: śledzących @@ -23,15 +15,9 @@ pl: other: Śledzących following: śledzonych instance_actor_flash: To konto jest wirtualnym profilem używanym do reprezentowania samego serwera, a nie żadnego indywidualnego użytkownika. Jest ono stosowane do celów federacji i nie powinien być zawieszany. - joined: Dołączył(a) %{date} last_active: ostatnio aktywny(-a) link_verified_on: Własność tego odnośnika została sprawdzona %{date} - media: Zawartość multimedialna - moved_html: "%{name} korzysta teraz z konta %{new_profile_link}:" - network_hidden: Ta informacja nie jest dostępna nothing_here: Niczego tu nie ma! - people_followed_by: Konta śledzone przez %{name} - people_who_follow: Osoby, które śledzą konto %{name} pin_errors: following: Musisz śledzić osobę, którą chcesz polecać posts: @@ -40,12 +26,6 @@ pl: one: wpis other: Wpisów posts_tab_heading: Wpisy - posts_with_replies: Wpisy z odpowiedziami - roles: - bot: Bot - group: Grupa - unavailable: Profil niedostępny - unfollow: Przestań śledzić admin: account_actions: action: Wykonaj działanie @@ -350,6 +330,7 @@ pl: listed: Widoczne new: title: Dodaj nowe niestandardowe emoji + no_emoji_selected: Żadne emoji nie zostały zmienione, ponieważ żadnych nie wybrano not_permitted: Nie masz uprawnień do wykonania tego działania overwrite: Zastąp shortcode: Krótki kod @@ -840,6 +821,9 @@ pl: description_html: Są to linki, które są obecnie często udostępniane przez konta, z których Twój serwer widzi posty. Może to pomóc Twoim użytkownikom dowiedzieć się, co dzieje się na świecie. Żadne linki nie są wyświetlane publicznie dopóki nie zaakceptujesz wydawcy. Możesz również zezwolić lub odrzucić indywidualne linki. disallow: Nie zezwalaj na link disallow_provider: Nie zezwalaj na wydawcę + no_link_selected: Żadne linki nie zostały zmienione, ponieważ żadnych nie wybrano + publishers: + no_publisher_selected: Żadni publikujcy nie zostali zmienieni, ponieważ żadnych nie wybrano shared_by_over_week: few: Udostępnione przez %{count} osoby w ciągu ostatniego tygodnia many: Udostępnione przez %{count} osób w ciągu ostatniego tygodnia @@ -861,6 +845,7 @@ pl: description_html: Są to wpisy, o których Twój serwer wie i które są obecnie często udostępniane i dodawane do ulubionych. Może to pomóc nowym i powracającym użytkownikom znaleźć więcej osób do śledzenia. Żadne posty nie są wyświetlane publicznie, dopóki nie zatwierdzisz autora, a autor ustawi zezwolenie na wyświetlanie się w katalogu. Możesz również zezwolić lub odrzucić poszczególne posty. disallow: Nie zezwalaj na post disallow_account: Nie zezwalaj na autora + no_status_selected: Żadne popularne wpisy nie zostały zmienione, ponieważ żadnych nie wybrano not_discoverable: Autor nie włączył opcji, by być wyświetlany w katalogu shared_by: few: Udostępnione i dodane do ulubionych %{friendly_count} razy @@ -878,6 +863,7 @@ pl: tag_uses_measure: użyć łącznie description_html: To są hasztagi, które obecnie pojawiają się w wielu wpisach, które widzisz na serwerze. Może to pomóc Twoim użytkownikom dowiedzieć się, o czym obecnie ludzie najchętniej rozmawiają. Żadne hasztagi nie są wyświetlane publicznie, dopóki ich nie zaakceptujesz. listable: Można zasugerować + no_tag_selected: Żadne tagi nie zostały zmienione, ponieważ żadnych nie wybrano not_listable: Nie można zasugerować not_trendable: Nie pojawia się pod trendami not_usable: Nie mogą zostać użyte @@ -1211,9 +1197,6 @@ pl: hint: Ten filtr ma zastosowanie do wybierania poszczególnych wpisów niezależnie od pozostałych kryteriów. Możesz dodać więcej wpisów do tego filtra z interfejsu internetowego. title: Filtrowane posty footer: - developers: Dla programistów - more: Więcej… - resources: Zasoby trending_now: Obecnie na czasie generic: all: Wszystkie @@ -1264,7 +1247,6 @@ pl: following: Lista śledzonych muting: Lista wyciszonych upload: Załaduj - in_memoriam_html: Ku pamięci. invites: delete: Wygaś expired: Wygasły @@ -1446,22 +1428,7 @@ pl: remove_selected_follows: Przestań śledzić zaznaczonych użytkowników status: Stan konta remote_follow: - acct: Podaj swój adres (nazwa@domena), z którego chcesz wykonać działanie missing_resource: Nie udało się znaleźć adresu przekierowania z Twojej domeny - no_account_html: Nie masz konta? Możesz zarejestrować się tutaj - proceed: Śledź - prompt: 'Zamierzasz śledzić:' - reason_html: "Dlaczego ten krok jest konieczny? %{instance} może nie być serwerem na którym jesteś zarejestrowany(-a), więc musisz zostać przekierowany(-a) na swój serwer." - remote_interaction: - favourite: - proceed: Przejdź do dodania do ulubionych - prompt: 'Chcesz dodać ten wpis do ulubionych:' - reblog: - proceed: Przejdź do podbicia - prompt: 'Chcesz podbić ten wpis:' - reply: - proceed: Przejdź do dodawania odpowiedzi - prompt: 'Chcesz odpowiedzieć na ten wpis:' reports: errors: invalid_rules: nie odwołuje się do prawidłowych reguł diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 6f789bc4ed..00d7ce9a53 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -2,45 +2,25 @@ pt-BR: about: about_mastodon_html: 'A rede social do futuro: Sem anúncios, sem vigilância corporativa, com design ético e muita descentralização! Possua seus próprios dados com o Mastodon!' - api: API - apps: Aplicativos contact_missing: Não definido contact_unavailable: Não disponível - documentation: Documentação hosted_on: Instância Mastodon em %{domain} - source_code: Código-fonte - what_is_mastodon: O que é Mastodon? accounts: - choices_html: 'Sugestões de %{name}:' - endorsements_hint: Você pode sugerir pessoas que você segue, elas aparecerão aqui. - featured_tags_hint: Você pode destacar hashtags específicas, elas aparecerão aqui. follow: Seguir followers: one: Seguidor other: Seguidores following: Seguindo instance_actor_flash: Esta conta é um ator virtual usado para representar o próprio servidor e não um usuário individual. É utilizada para fins de federação e não deve ser suspensa. - joined: Entrou em %{date} last_active: última atividade link_verified_on: O link foi verificado em %{date} - media: Mídia - moved_html: "%{name} se mudou para %{new_profile_link}:" - network_hidden: Informação indisponível nothing_here: Nada aqui! - people_followed_by: Pessoas que %{name} segue - people_who_follow: Pessoas que seguem %{name} pin_errors: following: Você deve estar seguindo a pessoa que você deseja sugerir posts: one: Toot other: Toots posts_tab_heading: Toots - posts_with_replies: Toots e respostas - roles: - bot: Robô - group: Grupo - unavailable: Perfil indisponível - unfollow: Deixar de seguir admin: account_actions: action: Tomar uma atitude @@ -1060,9 +1040,6 @@ pt-BR: save: Salvar novo filtro title: Adicionar filtro footer: - developers: Desenvolvedores - more: Mais… - resources: Recursos trending_now: Em alta no momento generic: all: Tudo @@ -1095,7 +1072,6 @@ pt-BR: following: Pessoas que você segue muting: Lista de silenciados upload: Enviar - in_memoriam_html: Em memória. invites: delete: Desativar expired: Expirados @@ -1273,22 +1249,7 @@ pt-BR: remove_selected_follows: Deixar de seguir usuários selecionados status: Status da conta remote_follow: - acct: Digite o seu usuário@domínio para continuar missing_resource: Não foi possível encontrar o link de redirecionamento para sua conta - no_account_html: Não tem uma conta? Você pode criar uma aqui - proceed: Continue para seguir - prompt: 'Você seguirá:' - reason_html: "Por que esse passo é necessário? %{instance} pode não ser a instância onde você se hospedou, então precisamos redirecionar você para a sua instância primeiro." - remote_interaction: - favourite: - proceed: Continue para favoritar - prompt: 'Você favoritará este toot:' - reblog: - proceed: Continue para dar boost - prompt: 'Você dará boost neste toot:' - reply: - proceed: Continue para responder - prompt: 'Você responderá este toot:' reports: errors: invalid_rules: não faz referência a regras válidas diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 1995702319..4e0d2f9ccc 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -2,46 +2,26 @@ pt-PT: about: about_mastodon_html: Mastodon é uma rede social baseada em protocolos abertos da web e software livre e gratuito. É descentralizado como e-mail. - api: API - apps: Aplicações móveis contact_missing: Não configurado contact_unavailable: n.d. - documentation: Documentação hosted_on: Mastodon em %{domain} - privacy_policy: Política de Privacidade - source_code: Código fonte - what_is_mastodon: O que é o Mastodon? + title: Sobre accounts: - choices_html: 'escolhas de %{name}:' - endorsements_hint: Você pode, através da interface web, escolher endossar pessoas que segue, e elas aparecerão aqui. - featured_tags_hint: Você pode destacar hashtags específicas que serão exibidas aqui. follow: Seguir followers: one: Seguidor other: Seguidores following: A seguir instance_actor_flash: Esta conta é um actor virtual usado para representar a própria instância e não um utilizador individual. É usada para motivos de federação e não deve ser suspenso. - joined: Aderiu %{date} last_active: última vez activo link_verified_on: A posse deste link foi verificada em %{date} - media: Media - moved_html: "%{name} mudou-se para %{new_profile_link}:" - network_hidden: Esta informação não está disponível nothing_here: Não há nada aqui! - people_followed_by: Pessoas seguidas por %{name} - people_who_follow: Pessoas que seguem %{name} pin_errors: following: Tu tens de estar a seguir a pessoa que pretendes apoiar posts: one: Publicação other: Publicações posts_tab_heading: Publicações - posts_with_replies: Posts e Respostas - roles: - bot: Robô - group: Grupo - unavailable: Perfil indisponível - unfollow: Deixar de seguir admin: account_actions: action: Executar acção @@ -344,6 +324,7 @@ pt-PT: listed: Listado new: title: Adicionar novo emoji customizado + no_emoji_selected: Nenhum emojis foi alterado, pois nenhum foi selecionado not_permitted: Não está autorizado a executar esta ação overwrite: Sobrescrever shortcode: Código de atalho @@ -812,6 +793,9 @@ pt-PT: description_html: Estes são links que atualmente estão a ser frequentemente partilhados por contas visiveis pelo seu servidor. Eles podem ajudar os seus utilizador a descobrir o que está a acontecer no mundo. Nenhum link é exibido publicamente até que aprove o editor. Também pode permitir ou rejeitar links individualmente. disallow: Não permitir link disallow_provider: Não permitir editor + no_link_selected: Nenhum link foi alterado, pois nenhum foi selecionado + publishers: + no_publisher_selected: Nenhum editor foi alterado, pois nenhum foi selecionado shared_by_over_week: one: Partilhado por uma pessoa na última semana other: Partilhado por %{count} pessoas na última semana @@ -831,6 +815,7 @@ pt-PT: description_html: Estas são publicações que o seu servidor conhece e que atualmente estão a ser frequentemente partilhadas e adicionadas aos favoritos. Isto pode ajudar os seus utilizadores, novos e retornados, a encontrar mais pessoas para seguir. Nenhuma publicação será exibida publicamente até que aprove o autor, e o autor permita que a sua conta seja sugerida a outros. Você também pode permitir ou rejeitar publicações individualmente. disallow: Não permitir publicação disallow_account: Não permitir autor + no_status_selected: Nenhuma publicação em tendência foi alterada, pois nenhuma foi selecionada not_discoverable: O autor optou por não permitir que a sua conta seja sugerida a outros shared_by: one: Partilhado ou adicionado aos favoritos uma vez @@ -846,6 +831,7 @@ pt-PT: tag_uses_measure: utilizações totais description_html: Estas são hashtags que aparecem atualmente com frequência em publicações visíveis pelo seu servidor. Isto pode ajudar os seus utilizadores a descobrir o que está ser mais falado no momento. Nenhuma hashtag é exibida publicamente até que a aprove. listable: Pode ser sugerida + no_tag_selected: Nenhuma etiqueta foi alterada, pois nenhuma foi selecionada not_listable: Não será sugerida not_trendable: Não aparecerá nas tendências not_usable: Não pode ser utilizada @@ -1169,9 +1155,6 @@ pt-PT: hint: Este filtro aplica-se a publicações individuais selecionadas independentemente de outros critérios. Pode adicionar mais publicações a este filtro através da interface web. title: Publicações filtradas footer: - developers: Responsáveis pelo desenvolvimento - more: Mais… - resources: Recursos trending_now: Tendências atuais generic: all: Tudo @@ -1214,7 +1197,6 @@ pt-PT: following: Lista de pessoas que estás a seguir muting: Lista de utilizadores silenciados upload: Enviar - in_memoriam_html: Em memória. invites: delete: Desativar expired: Expirados @@ -1394,22 +1376,7 @@ pt-PT: remove_selected_follows: Deixar de seguir os utilizadores selecionados status: Estado da conta remote_follow: - acct: Introduza o seu utilizador@domínio do qual quer seguir missing_resource: Não foi possível achar a URL de redirecionamento para sua conta - no_account_html: Não tens uma conta? Tu podes aderir aqui - proceed: Prossiga para seguir - prompt: 'Você vai seguir:' - reason_html: " Porque é este passo necessário? %{instance} pode não ser a instância onde você está registado. Por isso, precisamos de o redirecionar para a sua instância de origem em primeiro lugar." - remote_interaction: - favourite: - proceed: Prosseguir para os favoritos - prompt: 'Queres favoritar esta publicação:' - reblog: - proceed: Prosseguir com partilha - prompt: 'Queres partilhar esta publicação:' - reply: - proceed: Prosseguir com resposta - prompt: 'Queres responder a esta publicação:' reports: errors: invalid_rules: não faz referência a regras válidas diff --git a/config/locales/ro.yml b/config/locales/ro.yml index bcd385b6b5..b96d22dd59 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -2,18 +2,10 @@ ro: about: about_mastodon_html: 'Rețeaua socială a viitorului: Fără reclame, fără supraveghere corporativă, design etic și descentralizare! Dețineți-vă datele cu Mastodon!' - api: API - apps: Aplicații mobile contact_missing: Nesetat contact_unavailable: Indisponibil - documentation: Documentație hosted_on: Mastodon găzduit de %{domain} - source_code: Cod sursă - what_is_mastodon: Ce este Mastodon? accounts: - choices_html: 'Alegerile lui %{name}:' - endorsements_hint: Poți promova oameni pe care îi urmărești din interfața web, și ei vor apărea aici. - featured_tags_hint: Puteți promova anumite hashtag-uri care vor fi afișate aici. follow: Urmărește followers: few: Urmăritori @@ -21,15 +13,9 @@ ro: other: De Urmăritori following: Urmăriți instance_actor_flash: Acest cont este un actor virtual folosit pentru a reprezenta serverul în sine și nu un utilizator individual. Acesta este utilizat în scopuri federative şi nu trebuie suspendat. - joined: Înscris %{date} last_active: ultima activitate link_verified_on: Proprietatea acestui link a fost verificată la %{date} - media: Media - moved_html: "%{name} s-a mutat la %{new_profile_link}:" - network_hidden: Aceste informaţii nu sunt disponibile nothing_here: Nu există nimic aici! - people_followed_by: Persoane pe care %{name} le urmărește - people_who_follow: Persoane care urmăresc pe %{name} pin_errors: following: Trebuie să urmăriți deja persoana pe care doriți să o aprobați posts: @@ -37,12 +23,6 @@ ro: one: Postare other: De Postări posts_tab_heading: Postări - posts_with_replies: Postări și răspunsuri - roles: - bot: Robot - group: Grup - unavailable: Profil indisponibil - unfollow: Nu mai urmării admin: account_actions: action: Efectuează acțiunea @@ -374,7 +354,6 @@ ro: following: Lista de urmărire muting: Lista de ignorare upload: Încarcă - in_memoriam_html: În Memoria. invites: delete: Dezactivați expired: Expirat @@ -464,22 +443,7 @@ ro: remove_selected_follows: Anulează urmărirea utilizatorilor selectați status: Starea contului remote_follow: - acct: Introduceți numele@domeniu din care doriți să acționați missing_resource: Nu s-a putut găsi URL-ul de redirecționare necesar pentru contul dvs - no_account_html: Nu ai un cont? Poți să te înregistrezi aici - proceed: Continuă să urmărești - prompt: 'Vei urmării pe:' - reason_html: "De ce este necesar acest pas? %{instance} ar putea să nu fie serverul în care sunteți înregistrat, așa că trebuie să te redirecționăm către serverul tău de acasă." - remote_interaction: - favourite: - proceed: Continuă să favorizezi - prompt: 'Vrei să favorizezi această postare:' - reblog: - proceed: Continuă să dai impuls - prompt: 'Vrei să impulsionezi această postare:' - reply: - proceed: Continuă să răspunzi - prompt: 'Vrei să răspunzi la această postare:' scheduled_statuses: over_daily_limit: Ai depășit limita de %{limit} postări programate pentru acea zi over_total_limit: Ai depășit limita de %{limit} postări programate diff --git a/config/locales/ru.yml b/config/locales/ru.yml index ec600f8d8a..fc84808f9e 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -2,19 +2,10 @@ ru: about: about_mastodon_html: 'Социальная сеть будущего: никакой рекламы, слежки корпорациями, этичный дизайн и децентрализация! С Mastodon ваши данные под вашим контролем.' - api: API - apps: Приложения contact_missing: не указан contact_unavailable: неизв. - documentation: Документация hosted_on: Вы получили это сообщение, так как зарегистрированы на %{domain} - privacy_policy: Политика конфиденциальности - source_code: Исходный код - what_is_mastodon: Что такое Mastodon? accounts: - choices_html: "%{name} рекомендует:" - endorsements_hint: Вы можете рекомендовать людей, которые вы отслеживаете из веб-интерфейса, и они будут показаны здесь. - featured_tags_hint: Вы можете указать конкретные хэштеги, которые будут отображаться здесь. follow: Подписаться followers: few: подписчика @@ -23,15 +14,9 @@ ru: other: подписчиков following: подписки instance_actor_flash: Эта учетная запись - виртуальный пользователь, используемый для представления самого сервера, а не отдельного пользователя. Она используется для организационных целей и не может быть заморожена. - joined: 'Дата регистрации: %{date}' last_active: последняя активность link_verified_on: Владение этой ссылкой было проверено %{date} - media: Медиафайлы - moved_html: "%{name} переехал(а) на %{new_profile_link}:" - network_hidden: Эта информация недоступна nothing_here: Здесь ничего нет! - people_followed_by: Люди, на которых подписан(а) %{name} - people_who_follow: Подписчики %{name} pin_errors: following: Чтобы порекомендовать кого-то, надо сначала на них подписаться posts: @@ -40,12 +25,6 @@ ru: one: Пост other: статусов posts_tab_heading: Посты - posts_with_replies: Посты с ответами - roles: - bot: Бот - group: Группа - unavailable: Профиль недоступен - unfollow: Отписаться admin: account_actions: action: Выполнить действие @@ -349,6 +328,7 @@ ru: listed: В списке new: title: Добавить новый эмодзи + no_emoji_selected: Не было изменено ни одного эмодзи not_permitted: У вас нет прав для совершения данного действия overwrite: Заменить shortcode: Краткий код @@ -789,6 +769,7 @@ ru: allow_provider: Разрешить издание disallow: Запретить ссылку disallow_provider: Отклонить издание + no_link_selected: Ссылки не были изменены, так как не были выбраны ни один shared_by_over_week: few: Поделилось %{count} человека за последнюю неделю many: Поделилось %{count} человек за последнюю неделю @@ -964,6 +945,7 @@ ru: title: Установка sign_up: preamble: С учётной записью на этом сервере Mastodon вы сможете следить за любым другим пользователем в сети, независимо от того, где размещён их аккаунт. + title: Зарегистрируйтесь в %{domain}. status: account_status: Статус учётной записи confirming: Ожидание подтверждения e-mail. @@ -1133,9 +1115,6 @@ ru: batch: remove: Удалить из фильтра footer: - developers: Разработчикам - more: Ещё… - resources: Ссылки trending_now: Актуально сейчас generic: all: Любой @@ -1170,7 +1149,6 @@ ru: following: Подписки muting: Список глушения upload: Загрузить - in_memoriam_html: В память о пользователе. invites: delete: Удалить expired: Истекло @@ -1352,22 +1330,7 @@ ru: remove_selected_follows: Отписаться от выбранных пользователей status: Статус учётной записи remote_follow: - acct: Введите свой username@domain для продолжения missing_resource: Поиск требуемого перенаправления URL для Вашей учётной записи завершился неудачей - no_account_html: Нет учётной записи? Вы можете зарегистрироваться здесь - proceed: Продолжить подписку - prompt: 'Вы хотите подписаться на:' - reason_html: "Почему это необходимо? Возможно, %{instance} не является узлом, на котором вы зарегистрированы, поэтому нам сперва нужно перенаправить вас на домашний узел." - remote_interaction: - favourite: - proceed: Добавить в избранное - prompt: 'Вы собираетесь добавить в избранное следующий пост:' - reblog: - proceed: Продвинуть пост - prompt: 'Вы хотите продвинуть этот пост:' - reply: - proceed: Ответить - prompt: 'Вы собираетесь ответить на этот пост:' reports: errors: invalid_rules: не ссылается на действительные правила diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 231057e12e..664cdb8572 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -2,45 +2,25 @@ sc: about: about_mastodon_html: 'Sa rete sotziale de su benidore: sena publitzidade, sena vigilàntzia corporativa, disinnu èticu e detzentralizatzione! Sias mere de is datos tuos cun Mastodon!' - api: API - apps: Aplicatziones mòbiles contact_missing: No cunfiguradu contact_unavailable: No a disponimentu - documentation: Documentatzione hosted_on: Mastodon allogiadu in %{domain} - source_code: Còdighe de orìgine - what_is_mastodon: Ite est Mastodon? accounts: - choices_html: 'Sèberos de %{name}:' - endorsements_hint: Podes cussigiare gente chi sighis dae s'interfache web, e at a aparèssere inoghe. - featured_tags_hint: Podes evidentziare etichetas ispetzìficas chi ant a èssere ammustradas inoghe. follow: Sighi followers: one: Sighidura other: Sighiduras following: Sighende instance_actor_flash: Custu contu est un'atore virtuale chi costumaiat a rapresentare su serbidore etotu e nono unu cale si siat utente individuale. Est impreadu pro finalidades de sa federatzione e non si depet suspèndere. - joined: At aderidu su %{date} last_active: ùrtima atividade link_verified_on: Sa propiedade de custu ligàmene est istada controllada su %{date} - media: Elementos multimediales - moved_html: "%{name} est istadu trasferidu a %{new_profile_link}:" - network_hidden: Custa informatzione no est a disponimentu nothing_here: Nudda inoghe. - people_followed_by: Gente sighida dae %{name} - people_who_follow: Gente chi sighit a %{name} pin_errors: following: Depes sighire sa persone chi boles promòvere posts: one: Tut other: Tuts posts_tab_heading: Tuts - posts_with_replies: Tuts e rispostas - roles: - bot: Bot - group: Grupu - unavailable: Su profilu no est a disponimentu - unfollow: Non sigas prus admin: account_actions: action: Faghe un'atzione @@ -741,9 +721,6 @@ sc: new: title: Agiunghe unu filtru nou footer: - developers: Iscuadra de isvilupu - more: Àteru… - resources: Resursas trending_now: Est tendèntzia immoe generic: all: Totus @@ -774,7 +751,6 @@ sc: following: Lista de sighiduras muting: Lista gente a sa muda upload: Càrriga - in_memoriam_html: In memoriam. invites: delete: Disativa expired: Iscadidu @@ -934,22 +910,7 @@ sc: remove_selected_follows: Non sigas prus is persones seletzionadas status: Istadu de su contu remote_follow: - acct: Inserta·nche s'utente@domìniu tuo dae su chi boles sighire custa persone missing_resource: Impossìbile agatare sa rechesta de indiritzamentu URL pro su contu tuo - no_account_html: Non tenes ancora unu contu? Ti podes registrare inoghe - proceed: Cumintza a sighire - prompt: 'As a sighire a:' - reason_html: "Pro ite serbit custu? Podet èssere chi %{instance} non siat su serbidore aunde ses registradu, pro custu tenimus bisòngiu de ti torrare a indiritzare prima a su serbidore tuo." - remote_interaction: - favourite: - proceed: Sighi pro marcare che a preferidu - prompt: 'Boles marcare comente a preferidu custu tut:' - reblog: - proceed: Sighi pro cumpartzire - prompt: 'Boles cumpartzire custu tut:' - reply: - proceed: Sighi pro rispòndere - prompt: 'Boles rispòndere a custu tut:' scheduled_statuses: over_daily_limit: As superadu su lìmite de %{limit} tuts programmados pro cudda die over_total_limit: As superadu su lìmite de %{limit} tuts programmados diff --git a/config/locales/si.yml b/config/locales/si.yml index 41999e6a23..54127c2548 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -2,45 +2,25 @@ si: about: about_mastodon_html: 'අනාගත සමාජ ජාලය: දැන්වීම් නැත, ආයතනික නිරීක්ෂණ නැත, සදාචාරාත්මක සැලසුම් සහ විමධ්‍යගත කිරීම! Mastodon සමඟ ඔබේ දත්ත අයිති කරගන්න!' - api: යෙ.ක්‍ර. මු. (API) - apps: ජංගම යෙදුම් contact_missing: සකස් කර නැත contact_unavailable: අ/නොවේ - documentation: ප්‍රලේඛනය hosted_on: Mastodon %{domain}හි සත්කාරකත්වය දරයි - source_code: මූල කේතය - what_is_mastodon: මාස්ටඩන් යනු කුමක්ද? accounts: - choices_html: "%{name}හි තේරීම්:" - endorsements_hint: ඔබට වෙබ් අතුරු මුහුණතෙන් ඔබ අනුගමනය කරන පුද්ගලයින් අනුමත කළ හැකි අතර, ඔවුන් මෙහි පෙන්වනු ඇත. - featured_tags_hint: ඔබට මෙහි සංදර්ශන කෙරෙන විශේෂිත හැෂ් ටැග් විශේෂාංගගත කළ හැක. follow: අනුගමනය followers: one: අනුගාමිකයා other: අනුගාමිකයින් following: අනුගමනය instance_actor_flash: මෙම ගිණුම සේවාදායකයම නියෝජනය කිරීමට භාවිතා කරන අතථ්‍ය නළුවෙකු වන අතර කිසිදු තනි පරිශීලකයෙකු නොවේ. එය ෆෙඩරේෂන් අරමුණු සඳහා භාවිතා කරන අතර අත්හිටුවිය යුතු නොවේ. - joined: "%{date} එක් වී ඇත" last_active: අවසාන ක්රියාකාරී link_verified_on: මෙම සබැඳියේ හිමිකාරිත්වය %{date}හි පරීක්ෂා කරන ලදී - media: මාධ්‍යය - moved_html: "%{name} %{new_profile_link}මාරු වී ඇත:" - network_hidden: මෙම තොරතුරු ලබා ගත නොහැක nothing_here: මෙහි කිසිත් නැත! - people_followed_by: "%{name} අනුගමනය කරන පුද්ගලයින්" - people_who_follow: "%{name}අනුගමනය කරන පුද්ගලයින්" pin_errors: following: ඔබට අනුමත කිරීමට අවශ්‍ය පුද්ගලයා ඔබ දැනටමත් අනුගමනය කරමින් සිටිය යුතුය posts: one: ලිපිය other: ලිපි posts_tab_heading: ලිපි - posts_with_replies: පළ කිරීම් හා පිළිතුරු - roles: - bot: ස්වයං ක්‍රමලේඛය - group: සමූහය - unavailable: පැතිකඩ නොමැත - unfollow: අනුගමනය නොකරන්න admin: account_actions: action: ක්‍රියාව සිදු කරන්න @@ -1045,9 +1025,6 @@ si: save: නව පෙරහන සුරකින්න title: නව පෙරහනක් එකතු කරන්න footer: - developers: සංවර්ධකයින් - more: තව… - resources: සම්පත් trending_now: දැන් ප්‍රවණතාවය generic: all: සියල්ල @@ -1080,7 +1057,6 @@ si: following: පහත ලැයිස්තුව muting: නිහඬ කිරීමේ ලැයිස්තුව upload: උඩුගත කරන්න - in_memoriam_html: මතකය තුළ. invites: delete: අක්රිය කරන්න expired: කල් ඉකුත් වී ඇත @@ -1258,22 +1234,7 @@ si: remove_selected_follows: තෝරාගත් පරිශීලකයින් අනුගමනය නොකරන්න status: ගිණුමේ තත්‍වය remote_follow: - acct: ඔබට ක්‍රියා කිරීමට අවශ්‍ය ඔබගේ username@domain ඇතුලත් කරන්න missing_resource: ඔබගේ ගිණුම සඳහා අවශ්‍ය යළි-යොමුවීම් URL එක සොයා ගැනීමට නොහැකි විය - no_account_html: ගිණුමක් නැද්ද? ඔබට මෙහි ලියාපදිංචි විය හැක - proceed: අනුගමනය කිරීමට ඉදිරියට යන්න - prompt: 'ඔබ අනුගමනය කිරීමට යන්නේ:' - reason_html: "මෙම පියවර අවශ්ය වන්නේ ඇයි? %{instance} ඔබ ලියාපදිංචි වී ඇති සේවාදායකය නොවිය හැක, එබැවින් අපට පළමුව ඔබව ඔබගේ නිවසේ සේවාදායකය වෙත හරවා යැවිය යුතුය." - remote_interaction: - favourite: - proceed: ප්රියතම වෙත ඉදිරියට යන්න - prompt: 'ඔබට මෙම පෝස්ටය ප්‍රියතම කිරීමට අවශ්‍යයි:' - reblog: - proceed: වැඩි කිරීමට ඉදිරියට යන්න - prompt: 'ඔබට මෙම පළ කිරීම වැඩි කිරීමට අවශ්‍යයි:' - reply: - proceed: පිළිතුරු දීමට ඉදිරියට යන්න - prompt: 'ඔබට මෙම පළ කිරීමට පිළිතුරු දීමට අවශ්‍යයි:' reports: errors: invalid_rules: වලංගු නීති සඳහන් නොකරයි diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 050533ace9..e2dd896d17 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -73,6 +73,10 @@ hu: actions: hide: A szűrt tartalom teljes elrejtése, mintha nem is létezne warn: A szűrt tartalom a szűrő címét említő figyelmeztetés mögé rejtése + form_admin_settings: + backups_retention_period: Az előállított felhasználói archívumok megtartása a megadott napokig. + content_cache_retention_period: A más kiszolgálókról származó bejegyzések megadott számú nap után törölve lesznek, ha pozitív értékre van állítva. Ez lehet, hogy nem fordítható vissza. + media_cache_retention_period: A letöltött médiafájlok megadott számú nap után törölve lesznek, ha pozitív értékre van állítva, és igény szerint újból le lesznek töltve. form_challenge: current_password: Beléptél egy biztonsági térben imports: diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index bb54524717..b32d8eb1e1 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -73,6 +73,10 @@ io: actions: hide: Komplete celez filtrita kontenajo quale ol ne existas warn: Celez filtrita kontenajo dop avert quo montras titulo di filtrilo + form_admin_settings: + backups_retention_period: Retenez igita uzantoarkivi por la diiquanto. + content_cache_retention_period: Posti de altra servili efacesos pos la diiquanto kande fixesas a positiva nombro. Co darfas desagesar. + media_cache_retention_period: Deschargita mediifaili efacesos pos la diiquanto kande fixesas a positiva nombro, e rideschargesas irgatempe. form_challenge: current_password: Vu eniras sekura areo imports: @@ -207,6 +211,10 @@ io: actions: hide: Tote celez warn: Celez kun averto + form_admin_settings: + backups_retention_period: Uzantoarkivretendurtempo + content_cache_retention_period: Kontenajmemorajretendurtempo + media_cache_retention_period: Mediimemorajretendurtempo interactions: must_be_follower: Celar la savigi da homi, qui ne sequas tu must_be_following: Celar la savigi da homi, quin tu ne sequas diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 0beed91734..115c7894d3 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -71,6 +71,10 @@ nl: actions: hide: Verberg de gefilterde inhoud volledig, alsof het niet bestaat warn: Verberg de gefilterde inhoud achter een waarschuwing, met de titel van het filter als waarschuwingstekst + form_admin_settings: + backups_retention_period: De aangemaakte gebruikersarchieven voor het opgegeven aantal dagen behouden. + content_cache_retention_period: 'Berichten van andere servers worden na het opgegeven aantal dagen verwijderd. Let op: Dit is onomkeerbaar.' + media_cache_retention_period: Mediabestanden die van andere servers zijn gedownload worden na het opgegeven aantal dagen verwijderd en worden op verzoek opnieuw gedownload. form_challenge: current_password: Je betreedt een veilige omgeving imports: @@ -98,6 +102,8 @@ nl: role: De rol bepaalt welke rechten een gebruiker heeft user_role: permissions_as_keys: Gebruikers met deze rol hebben toegang tot... + webhook: + events: Selecteer de te verzenden gebeurtenissen labels: account: fields: @@ -198,6 +204,10 @@ nl: actions: hide: Volledig verbergen warn: Met een waarschuwing verbergen + form_admin_settings: + backups_retention_period: Bewaartermijn gebruikersarchief + content_cache_retention_period: Bewaartermijn berichtencache + media_cache_retention_period: Bewaartermijn mediacache interactions: must_be_follower: Meldingen van mensen die jou niet volgen blokkeren must_be_following: Meldingen van mensen die jij niet volgt blokkeren @@ -240,6 +250,7 @@ nl: permissions_as_keys: Rechten position: Prioriteit webhook: + events: Ingeschakelde gebeurtenissen url: Eindpunt URL 'no': Nee not_recommended: Niet aanbevolen diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index a9042b25d0..bb304a9e46 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -73,6 +73,10 @@ ru: actions: hide: Полностью скрыть отфильтрованный контент так, как будто его не существует warn: Скрыть отфильтрованный контент за предупреждением с указанием названия фильтра + form_admin_settings: + backups_retention_period: Сохранять сгенерированные пользовательские архивы для указанного количества дней. + content_cache_retention_period: Записи с других серверов будут удалены после указанного количества дней, когда установлено положительное значение. Это может быть необратимо. + media_cache_retention_period: Скачанные медиа-файлы будут удалены после указанного количества дней, когда установлено положительное значение и повторно загружены по требованию. form_challenge: current_password: Вы переходите к настройкам безопасности imports: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 27ad0abd58..e674641155 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -207,6 +207,10 @@ th: actions: hide: ซ่อนอย่างสมบูรณ์ warn: ซ่อนด้วยคำเตือน + form_admin_settings: + backups_retention_period: ระยะเวลาการเก็บรักษาการเก็บถาวรผู้ใช้ + content_cache_retention_period: ระยะเวลาการเก็บรักษาแคชเนื้อหา + media_cache_retention_period: ระยะเวลาการเก็บรักษาแคชสื่อ interactions: must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 4b06fdd1e2..9b7fc25d6d 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -2,17 +2,10 @@ sk: about: about_mastodon_html: Mastodon je sociálna sieť založená na otvorených webových protokoloch a na slobodnom softvéri. Je decentralizovaná, podobne ako email. - apps: Aplikácie contact_missing: Nezadaný contact_unavailable: Neuvedený/á - documentation: Dokumentácia hosted_on: Mastodon hostovaný na %{domain} - source_code: Zdrojový kód - what_is_mastodon: Čo je Mastodon? accounts: - choices_html: "%{name}vé voľby:" - endorsements_hint: Môžeš ukázať sledovaných užívateľov, s ktorými si spriaznený/á cez webové rozhranie, a tí tu budú zobrazení. - featured_tags_hint: Môžeš zvýrazniť určité haštagy, ktoré tu budú zobrazené. follow: Následuj followers: few: Sledovateľov @@ -20,15 +13,9 @@ sk: one: Sledujúci other: Sledovatelia following: Následujem - joined: Pridal/a sa v %{date} last_active: naposledy aktívny link_verified_on: Vlastníctvo tohto odkazu bolo skontrolované %{date} - media: Médiá - moved_html: "%{name} účet bol presunutý na %{new_profile_link}:" - network_hidden: Táto informácia nieje k dispozícii nothing_here: Nič tu nie je! - people_followed_by: Ľudia, ktorých %{name} sleduje - people_who_follow: Ľudia sledujúci %{name} pin_errors: following: Musíš už následovať toho človeka, ktorého si praješ zviditeľniť posts: @@ -37,11 +24,6 @@ sk: one: Príspevok other: Príspevkov posts_tab_heading: Príspevky - posts_with_replies: Príspevky s odpoveďami - roles: - group: Skupina - unavailable: Profil nieje dostupný - unfollow: Prestaň sledovať admin: account_actions: action: Vykonaj @@ -731,9 +713,6 @@ sk: new: title: Pridaj nové triedenie footer: - developers: Vývojári - more: Viac… - resources: Podklady trending_now: Teraz populárne generic: all: Všetko @@ -766,7 +745,6 @@ sk: following: Zoznam sledovaných muting: Zoznam ignorovaných upload: Nahraj - in_memoriam_html: V pamäti. invites: delete: Deaktivuj expired: Neplatné @@ -913,22 +891,7 @@ sk: remove_selected_follows: Prestaň sledovať vybraných užívateľov status: Stav účtu remote_follow: - acct: Napíš svoju prezývku@doménu z ktorej chceš následovať missing_resource: Nemožno nájsť potrebnú presmerovaciu adresu k tvojmu účtu - no_account_html: Nemáš účet? Môžeš sa zaregistrovať tu - proceed: Začni následovať - prompt: 'Budeš sledovať:' - reason_html: "Načo je tento krok potrebný? %{instance} nemusí byť práve tým serverom na ktorom si zaregistrovaný/á, takže je ťa najprv potrebné presmerovať na tvoj domáci server." - remote_interaction: - favourite: - proceed: Pokračuj k obľúbeniu - prompt: 'Chceš si obľúbiť tento príspevok:' - reblog: - proceed: Pokračuj k vyzdvihnutiu - prompt: 'Chceš vyzdvihnúť tento príspevok:' - reply: - proceed: Pokračuj odpovedaním - prompt: 'Chceš odpovedať na tento príspevok:' scheduled_statuses: over_daily_limit: Prekročil/a si denný limit %{limit} predplánovaných príspevkov over_total_limit: Prekročil/a si limit %{limit} predplánovaných príspevkov diff --git a/config/locales/sl.yml b/config/locales/sl.yml index aacfd4c390..7b160ae512 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -2,19 +2,11 @@ sl: about: about_mastodon_html: Mastodon je socialno omrežje, ki temelji na odprtih spletnih protokolih in prosti ter odprtokodni programski opremi. Je decentraliziran, kot e-pošta. - api: API (programerski vmesnik aplikacije) - apps: Mobilne aplikacije contact_missing: Ni nastavljeno contact_unavailable: Ni na voljo - documentation: Dokumentacija hosted_on: Mastodon gostuje na %{domain} - privacy_policy: Pravilnik o zasebnosti - source_code: Izvorna koda - what_is_mastodon: Kaj je Mastodon? + title: O programu accounts: - choices_html: "%{name} izbire:" - endorsements_hint: Osebe, ki jim sledite, lahko podprete prek spletnega vmesnika in prikazane bodo tukaj. - featured_tags_hint: Izpostavite lahko določene ključnike, ki bodo prikazani na tem mestu. follow: Sledi followers: few: Sledilci @@ -23,15 +15,9 @@ sl: two: Sledilca following: Sledim instance_actor_flash: Ta račun je navidezni akter, ki se uporablja za predstavljanje strežnika samega in ne posameznega uporabnika. Uporablja se za namene federacije in se ne sme začasno ustaviti. - joined: Se je pridružil na %{date} last_active: zadnja dejavnost link_verified_on: Lastništvo te povezave je bilo preverjeno na %{date} - media: Mediji - moved_html: "%{name} se je prestavil na %{new_profile_link}:" - network_hidden: Ta informacija ni na voljo nothing_here: Tukaj ni ničesar! - people_followed_by: Ljudje, ki jim sledi %{name} - people_who_follow: Ljudje, ki sledijo %{name} pin_errors: following: Verjetno že sledite osebi, ki jo želite potrditi posts: @@ -40,12 +26,6 @@ sl: other: Objav two: Tuta posts_tab_heading: Objave - posts_with_replies: Objave in odgovori - roles: - bot: Robot - group: Skupina - unavailable: Profil ni na voljo - unfollow: Prenehaj slediti admin: account_actions: action: Izvedi dejanje @@ -201,7 +181,7 @@ sl: create_account_warning: Ustvari opozorilo create_announcement: Ustvari obvestilo create_canonical_email_block: Ustvari blokado e-pošte - create_custom_emoji: Ustvari emodži po meri + create_custom_emoji: Ustvari emotikon po meri create_domain_allow: Ustvari odobritev domene create_domain_block: Ustvari blokado domene create_email_domain_block: Ustvari blokado domene e-pošte @@ -211,7 +191,7 @@ sl: demote_user: Ponižaj uporabnika destroy_announcement: Izbriši obvestilo destroy_canonical_email_block: Izbriši blokado e-pošte - destroy_custom_emoji: Izbriši emodži po meri + destroy_custom_emoji: Izbriši emotikon po meri destroy_domain_allow: Izbriši odobritev domene destroy_domain_block: Izbriši blokado domene destroy_email_domain_block: Izbriši blokado domene e-pošte @@ -221,10 +201,10 @@ sl: destroy_unavailable_domain: Izbriši domeno, ki ni na voljo destroy_user_role: Uniči vlogo disable_2fa_user: Onemogoči - disable_custom_emoji: Onemogoči emodži po meri + disable_custom_emoji: Onemogoči emotikon po meri disable_sign_in_token_auth_user: Onemogoči overjanje z žetonom po e-pošti za uporabnika disable_user: Onemogoči uporabnika - enable_custom_emoji: Omogoči emodži po meri + enable_custom_emoji: Omogoči emotikon po meri enable_sign_in_token_auth_user: Omogoči overjanje z žetonom po e-pošti za uporabnika enable_user: Omogoči uporabnika memorialize_account: Spomenificiraj račun @@ -244,7 +224,7 @@ sl: unsilence_account: Razveljavi omejitev računa unsuspend_account: Prekliči začasno prekinitev računa update_announcement: Posodobi objavo - update_custom_emoji: Posodobi emodži po meri + update_custom_emoji: Posodobi emotikon po meri update_domain_block: Posodobi blokado domene update_ip_block: Posodobi pravilo IP update_status: Posodobi objavo @@ -350,6 +330,7 @@ sl: listed: Navedeno new: title: Dodaj nove emotikone + no_emoji_selected: Noben emotikon ni bil spremenjen, ker noben ni bil izbran not_permitted: Nimate pravic za izvedbo tega dejanja. overwrite: Prepiši shortcode: Kratka koda @@ -677,8 +658,8 @@ sl: manage_appeals_description: Omogoča uporabnikom, da pregledajo pritožbe glede dejanj moderiranja manage_blocks: Upravljaj blokirano manage_blocks_description: Omogoča uporabnikom, da blokirajo ponudnike e-pošte in naslove IP - manage_custom_emojis: Upravljaj emodžije po meri - manage_custom_emojis_description: Omogoča uporabnikom, da upravljajo emodžije po meri na strežniku + manage_custom_emojis: Upravljaj emotikone po meri + manage_custom_emojis_description: Omogoča uporabnikom, da upravljajo emotikone po meri na strežniku manage_federation: Upravljaj beli seznam manage_federation_description: Omogoča uporabnikom blokirati ali dovoljevati vstop na beli seznam z druimi domenami ter nadzirati dostavljivost manage_invites: Upravljaj vabila @@ -840,6 +821,9 @@ sl: description_html: To so povezave, ki jih trenutno veliko delijo računi, iz katerih vaš strežnik vidi objave. Vašim uporabnikom lahko pomaga izvedeti, kaj se dogaja po svetu. Nobene povezave niso javno prikazane, dokler ne odobrite izdajatelja. Posamezne povezave lahko tudi dovolite ali zavrnete. disallow: Ne dovoli povezave disallow_provider: Ne dovoli izdajatelja + no_link_selected: Nobena povezava ni bila spremenjena, ker nobena ni bila izbrana + publishers: + no_publisher_selected: Noben izdajatelj ni bil spremenjen, ker noben ni bila izbran shared_by_over_week: few: Delile %{count} osebe v zadnjem tednu one: Delila %{count} oseba v zadnjem tednu @@ -861,6 +845,7 @@ sl: description_html: To so objave, za katere vaš strežnik ve, da so trenutno v skupni rabi in med priljubljenimi. Vašim novim uporabnikom in uporabnikom, ki se vračajo, lahko pomaga najti več oseb, ki jim bodo sledili. Nobena objava ni javno prikazana, dokler avtorja ne odobrite in avtor ne dovoli, da se njegov račun predlaga drugim. Posamezne objave lahko tudi dovolite ali zavrnete. disallow: Ne dovoli objave disallow_account: Ne dovoli avtorja + no_status_selected: Nobena trendna objava ni bila spremenjena, ker ni bila nobena izbrana not_discoverable: Avtor ni dovolil, da bi ga bilo moč odkriti shared_by: few: Deljeno ali priljubljeno %{friendly_count}-krat @@ -878,6 +863,7 @@ sl: tag_uses_measure: uporab skupaj description_html: To so ključniki, ki se trenutno pojavljajo v številnih objavah, ki jih vidi vaš strežnik. Uporabnikom lahko pomaga ugotoviti, o čem ljudje trenutno največ govorijo. Noben ključnik ni javno prikazan, dokler ga ne odobrite. listable: Je moč predlagati + no_tag_selected: Nobena značka ni bila spremenjena, ker nobena ni bila izbrana not_listable: Ne bo predlagano not_trendable: Se ne bo pojavilo med trendi not_usable: Ni mogoče uporabiti @@ -1211,9 +1197,6 @@ sl: hint: Ta filter se nanaša na posamezne objave ne glede na druge pogoje. Filtru lahko dodate več objav prek spletnega vmesnika. title: Filtrirane objave footer: - developers: Razvijalci - more: Več… - resources: Viri trending_now: Zdaj v trendu generic: all: Vse @@ -1264,7 +1247,6 @@ sl: following: Seznam uporabnikov, katerim sledite muting: Seznam utišanih upload: Pošlji - in_memoriam_html: V spomin. invites: delete: Onemogoči expired: Poteklo @@ -1446,22 +1428,7 @@ sl: remove_selected_follows: Prenehaj slediti izbranim uporabnikom status: Stanje računa remote_follow: - acct: Vnesite uporabniško_ime@domena, iz katerega želite delovati missing_resource: Za vaš račun ni bilo mogoče najti zahtevanega URL-ja za preusmeritev - no_account_html: Še nimate računa? Tukaj se lahko prijavite - proceed: Nadaljujte - prompt: 'Sledili boste:' - reason_html: "Zakaj je ta korak potreben? %{instance} morda ni strežnik, kjer ste registrirani, zato vas moramo najprej preusmeriti na domači strežnik." - remote_interaction: - favourite: - proceed: Nadaljuj s priljubljenim - prompt: 'Želite vzljubiti to objavo:' - reblog: - proceed: Nadaljuj s izpostavljanjem - prompt: 'Želite izpostaviti to objavo:' - reply: - proceed: Nadaljuj z odgovorom - prompt: 'Želite odgovoriti na to objavo:' reports: errors: invalid_rules: se ne sklicuje na veljavna pravila diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 2ea9fb8f70..eea76f2592 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -2,46 +2,26 @@ sq: about: about_mastodon_html: 'Rrjeti shoqëror i së ardhmes: Pa reklama, pa survejim nga korporata, konceptim etik dhe decentralizim! Jini zot i të dhënave tuaja, me Mastodon-in!' - api: API - apps: Aplikacione për celular contact_missing: I parregulluar contact_unavailable: N/A - documentation: Dokumentim hosted_on: Mastodon i strehuar në %{domain} - privacy_policy: Rregulla Privatësie - source_code: Kod burim - what_is_mastodon: Ç’është Mastodon-i? + title: Mbi accounts: - choices_html: 'Zgjedhje të %{name}:' - endorsements_hint: Mund t’i mbështesni personat që nga ndërfaqja web, dhe do të shfaqen këtu. - featured_tags_hint: Mund të zgjidhni hashtag-ë të veçantë që do të shfaqen këtu. follow: Ndiqeni followers: one: Ndjekës other: Ndjekës following: Ndjekje instance_actor_flash: Kjo llogari është një aktor virtual, i përdorur për të përfaqësuar vetë shërbyesin dhe jo ndonjë përdorues individual. Përdoret për qëllime federimi dhe s’duhet pezulluar. - joined: U bë pjesë më %{date} last_active: aktiv së fundi link_verified_on: Pronësia e kësaj lidhjeje qe kontrolluar më %{date} - media: Media - moved_html: "%{name} ka kaluar te %{new_profile_link}:" - network_hidden: Këto të dhëna s’janë të passhme nothing_here: S’ka gjë këtu! - people_followed_by: Persona të ndjekur nga %{name} - people_who_follow: Persona që ndjekin %{name} pin_errors: following: Personin që doni të pasqyroni, duhet ta keni ndjekur tashmë posts: one: Mesazh other: Mesazhe posts_tab_heading: Mesazhe - posts_with_replies: Mesazhe dhe përgjigje - roles: - bot: Robot - group: Grup - unavailable: Profil jashtë funksionimi - unfollow: Resht së ndjekuri admin: account_actions: action: Kryeje veprimin @@ -344,6 +324,7 @@ sq: listed: Në listë new: title: Shtoni emoxhi të ri vetjak + no_emoji_selected: S’u ndryshuan emoxhi, ngaqë s’qe përzgjedhur i tillë not_permitted: S’keni leje të kryeni këtë veprim overwrite: Mbishkruaje shortcode: Kod i shkurtër @@ -809,6 +790,9 @@ sq: description_html: Këto janë lidhje që ndahen aktualisht shumë me llogari prej të cilave shërbyesi juaj sheh postime. Mund të ndihmojë përdoruesit tuaj të gjejnë se ç’po ndodh në botë. S’shfaqen lidhje publikisht, deri sa të miratoni botuesin. Mundeni edhe të lejoni ose hidhni poshtë lidhje individuale. disallow: Hiq lejimin e lidhjes disallow_provider: Mos e lejo botuesin + no_link_selected: S’u ndryshuan lidhje, ngaqë s’qe përzgjedhur e tillë + publishers: + no_publisher_selected: S’u ndryshuan botues, ngaqë s’qe përzgjedhur i tillë shared_by_over_week: one: Ndarë me të tjerë nga një person gjatë javës së kaluar other: Ndarë me të tjerë nga %{count} vetë gjatë javës së kaluar @@ -828,6 +812,7 @@ sq: description_html: Këto janë postime të cilat shërbyesi juaj di se po ndahen shumë dhe po zgjidhen si të parapëlqyera për çastin. Mund të ndihmojnë përdoruesit tuaj të rinj dhe të riardhur të gjejnë më tepër vetë për të ndjekur. S’shfaqen postime publikisht, pa miratuar ju autorin dhe autori lejon që llogaria e tij t’u sugjerohet të tjerëve. Mundeni edhe të lejoni, ose hidhni, poshtë postime individuale. disallow: Mos lejo postim disallow_account: Mos lejo autor + no_status_selected: S’u ndryshuan postime në modë, ngaqë s’qe përzgjedhur i tillë not_discoverable: Autori s’ka zgjedhur të jetë i zbulueshëm shared_by: one: Ndarë me të tjerë, ose shënuar si e parapëlqyer një herë @@ -843,6 +828,7 @@ sq: tag_uses_measure: përdorime gjithsej description_html: Këta hashtag-ë aktualisht po shfaqen në një numër të madh postimesh që sheh shërbyesi juaj. Kjo mund të ndihmojë përdoruesit tuaj të gjejnë se për çfarë po flasin më shumë njerëzit aktualisht. Pa i miratuar ju, nuk shfaqen publikisht hashtag-ë. listable: Mund të sugjerohet + no_tag_selected: S’u ndryshuan etiketa, ngaqë s’qe përzgjedhur e tillë not_listable: S’do të sugjerohet not_trendable: S’do të shfaqet nën të modës not_usable: S’mund të përdoret @@ -1164,9 +1150,6 @@ sq: hint: Ky filtër aplikohet për të përzgjedhur postime individuale, pavarësisht kriteresh të tjera. Që nga ndërfaqja web mund të shtoni më tepër postime te ky filtër. title: Postime të filtruar footer: - developers: Zhvillues - more: Më tepër… - resources: Burime trending_now: Prirjet e tashme generic: all: Krejt @@ -1209,7 +1192,6 @@ sq: following: Listë ndjekjesh muting: Listë heshtimesh upload: Ngarkoje - in_memoriam_html: In Memoriam. invites: delete: Çaktivizoje expired: Ka skaduar @@ -1389,22 +1371,7 @@ sq: remove_selected_follows: Hiqe ndjekjen e përdoruesve të përzgjedhur status: Gjendje llogarie remote_follow: - acct: Jepni çiftin tuaj emërpërdoruesi@përkatësi prej të cilit doni që të veprohet missing_resource: S’u gjet dot URL-ja e domosdoshme e ridrejtimit për llogarinë tuaj - no_account_html: S’keni llogari? Mund të regjistroheni këtu - proceed: Ripohoni ndjekjen - prompt: 'Do të ndiqni:' - reason_html: "Pse është i domosdoshëm ky hap? %{instance} mund të mos jetë shërbyesi ku jeni regjistruar, ndaj na duhet t’ju ridrejtojmë së pari te shërbyesi juaj Home." - remote_interaction: - favourite: - proceed: Ripohoni parapëlqimin - prompt: 'Doni të parapëlqeni këtë mesazh:' - reblog: - proceed: Ripohoni përforcimin - prompt: 'Doni të përforconi këtë mesazh:' - reply: - proceed: Ripohoni përgjigjen - prompt: 'Doni t’i përgjigjeni këtij mesazhi:' reports: errors: invalid_rules: s’i referohet ndonjë rregulli të vlefshëm diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 0d9f14a966..7506c4d4d9 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -4,16 +4,8 @@ sr-Latn: about_mastodon_html: Mastodont je društvena mreža bazirana na otvorenim protokolima i slobodnom softveru otvorenog koda. Decentralizovana je kao što je decentralizovana e-pošta. contact_missing: Nije postavljeno hosted_on: Mastodont hostovan na %{domain} - source_code: Izvorni kod - what_is_mastodon: Šta je Mastodont? accounts: - media: Multimedija - moved_html: "%{name} je pomeren na %{new_profile_link}:" nothing_here: Ovde nema ništa! - people_followed_by: Ljudi koje %{name} prati - people_who_follow: Ljudi koji prate %{name} - posts_with_replies: Tutovi i odgovori - unfollow: Otprati admin: account_moderation_notes: create: Napravi @@ -324,10 +316,7 @@ sr-Latn: preferences: other: Ostali remote_follow: - acct: Unesite Vaš korisnik@domen sa koga želite da pratite missing_resource: Ne mogu da nađem zahtevanu adresu preusmeravanja za Vaš nalog - proceed: Nastavite da zapratite - prompt: 'Zapratite će:' sessions: activity: Poslednja aktivnost browser: Veb čitač diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 683afafcb3..89f8bc6317 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -2,29 +2,18 @@ sr: about: about_mastodon_html: Мастодон је друштвена мрежа базирана на отвореним протоколима и слободном софтверу отвореног кода. Децентрализована је као што је децентрализована е-пошта. - apps: Мобилне апликације contact_missing: Није постављено - documentation: Документација hosted_on: Мастодонт хостован на %{domain} - source_code: Изворни код - what_is_mastodon: Шта је Мастодон? accounts: - choices_html: "%{name}'s избори:" follow: Запрати followers: few: Пратиоци one: Пратиоц other: Пратиоци following: Пратим - joined: Придружио/ла се %{date} last_active: последњи пут активни link_verified_on: Власништво над овом везом је проверено %{date} - media: Медији - moved_html: "%{name} је прешао на %{new_profile_link}:" - network_hidden: Ова информација није доступна nothing_here: Овде нема ништа! - people_followed_by: Људи које %{name} прати - people_who_follow: Људи који прате %{name} pin_errors: following: Морате пратити ову особу ако хоћете да потврдите posts: @@ -32,11 +21,6 @@ sr: one: Труба other: Трубе posts_tab_heading: Трубе - posts_with_replies: Трубе и одговори - roles: - bot: Бот - unavailable: Налог је недоступан - unfollow: Отпрати admin: account_actions: action: Извршите радњу @@ -414,10 +398,6 @@ sr: title: Филтери new: title: Додај нови филтер - footer: - developers: Програмери - more: Више… - resources: Ресурси generic: changes_saved_msg: Измене успешно сачуване! copy: Копирај @@ -501,19 +481,7 @@ sr: preferences: other: Остало remote_follow: - acct: Унесите Ваш корисник@домен са кога желите да пратите missing_resource: Не могу да нађем захтевану адресу преусмеравања за Ваш налог - no_account_html: Немате налог? Можете се пријавити овде - proceed: Наставите да би сте запратили - prompt: 'Запратићете:' - reason_html: "Зашто је овај корак неопходан?%{instance} можда није сервер на којем сте регистровани, тако да прво морамо да вас преусмеримо на ваш сервер." - remote_interaction: - reblog: - proceed: Наставите да бисте поделили - prompt: 'Желите да делите ову трубу:' - reply: - proceed: Наставите да бисте одговорили - prompt: 'Желите да одговорите на ову трубу:' scheduled_statuses: over_daily_limit: Прекорачили сте границу од %{limit} планираних труба за тај дан over_total_limit: Прекорачили сте границу од %{limit} планираних труба diff --git a/config/locales/sv.yml b/config/locales/sv.yml index aad17e680f..8066252118 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -2,45 +2,25 @@ sv: about: about_mastodon_html: Mastodon är ett socialt nätverk baserat på öppna webbprotokoll och gratis, öppen källkodsprogramvara. Det är decentraliserat som e-post. - api: API - apps: Mobilappar contact_missing: Inte inställd contact_unavailable: Ej tillämplig - documentation: Dokumentation hosted_on: Mastodon-värd på %{domain} - source_code: Källkod - what_is_mastodon: Vad är Mastodon? accounts: - choices_html: "%{name}s val:" - endorsements_hint: Från webbgränssnittet kan du rekommendera följare, som sedan visas här. - featured_tags_hint: Du kan använda fyrkanter som visas här. follow: Följa followers: one: Följare other: Följare following: Följer instance_actor_flash: Detta konto är en virtuell aktör som används för att representera servern själv och inte någon enskild användare. Den används för federationsändamål och bör inte upphävas. - joined: Gick med %{date} last_active: senast aktiv link_verified_on: Ägarskap för denna länk kontrollerades den %{date} - media: Media - moved_html: "%{name} har flyttat till %{new_profile_link}:" - network_hidden: Denna information är inte tillgänglig nothing_here: Det finns inget här! - people_followed_by: Personer som %{name} följer - people_who_follow: Personer som följer %{name} pin_errors: following: Du måste vara följare av den person du vill godkänna posts: one: Tuta other: Tutor posts_tab_heading: Tutor - posts_with_replies: Toots med svar - roles: - bot: Robot - group: Grupp - unavailable: Profilen är inte tillgänglig - unfollow: Sluta följa admin: account_actions: action: Utför åtgärd @@ -745,9 +725,6 @@ sv: new: title: Lägg till nytt filter footer: - developers: Utvecklare - more: Mer… - resources: Resurser trending_now: Trendar nu generic: all: Alla @@ -776,7 +753,6 @@ sv: following: Lista av följare muting: Lista av nertystade upload: Ladda upp - in_memoriam_html: Till minne av. invites: delete: Avaktivera expired: Utgånget @@ -937,19 +913,7 @@ sv: remove_selected_follows: Sluta följ valda användare status: Kontostatus remote_follow: - acct: Ange ditt användarnamn@domän du vill följa från missing_resource: Det gick inte att hitta den begärda omdirigeringsadressen för ditt konto - no_account_html: Har du inget konto? Du kan registrera dig här - proceed: Fortsätt för att följa - prompt: 'Du kommer att följa:' - reason_html: "Varför är det här steget nödvändigt? %{instance} är kanske inte den server du är registrerad vid, så vi behöver dirigera dig till din hemserver först." - remote_interaction: - favourite: - proceed: Fortsätt till favorit - prompt: 'Du vill favorit-markera det här inlägget:' - reply: - proceed: Fortsätt till svar - prompt: 'Du vill svara på det här inlägget:' sessions: activity: Senaste aktivitet browser: Webbläsare diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 638ab1f479..d691c0ec81 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -2,39 +2,20 @@ ta: about: about_mastodon_html: 'எதிர்காலத்தின் சமூகப் பிணையம்: விளம்பரம் இல்லை, பொதுநிறுவனக் கண்காணிப்பு இல்லை, நெறிக்குட்பட்ட வரைவுத்திட்டம், மற்றும் பகிர்ந்தாளுதல்! மஸ்டோடோனுடன் உங்கள் தரவுகள் உங்களுக்கே சொந்தம்!' - api: செயலிக்கான மென்பொருள் இடைமுகம் API - apps: கைப்பேசி செயலிகள் contact_missing: நிறுவப்படவில்லை contact_unavailable: பொ/இ - documentation: ஆவணச்சான்று hosted_on: மாஸ்டோடாண் %{domain} இனையத்தில் இயங்குகிறது - source_code: நிரல் மூலம் - what_is_mastodon: மச்டொடன் என்றால் என்ன? accounts: - choices_html: "%{name}-இன் தேர்வுகள்:" - featured_tags_hint: குறிப்பிட்ட சிட்டைகளை இங்கு நீங்கள் காட்சிப்படுத்தலாம். follow: பின்தொடர் followers: one: பின்தொடர்பவர் other: பின்தொடர்பவர்கள் following: பின்தொடரும் - joined: "%{date} அன்று இனைந்தார்" last_active: கடைசியாக பார்த்தது - media: படங்கள் - moved_html: "%{name} %{new_profile_link}க்கு மாறியுள்ளது:" - network_hidden: இத்தகவல் கிடைக்கவில்லை nothing_here: இங்கு எதுவும் இல்லை! - people_followed_by: "%{name} பின்தொடரும் நபர்கள்" - people_who_follow: "%{name}ஐ பின்தொடரும் நபர்கள்" pin_errors: following: தாங்கள் அங்கீகரிக்க விரும்பும் நபரை தாங்கள் ஏற்கனவே பின்தொடரந்து கொண்டு இருக்க வேண்டும் posts_tab_heading: பிளிறல்கள் - posts_with_replies: பிளிறல்கள் மற்றும் மறுமொழிகள் - roles: - bot: பொறி - group: குழு - unavailable: சுயவிவரம் கிடைக்கவில்லை - unfollow: பின்தொடராதே admin: account_actions: action: நடவடிக்கை எடு diff --git a/config/locales/tai.yml b/config/locales/tai.yml index decc28717a..3b22e9999b 100644 --- a/config/locales/tai.yml +++ b/config/locales/tai.yml @@ -1,7 +1,5 @@ --- tai: - about: - what_is_mastodon: Siáⁿ-mih sī Mastodon? errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/te.yml b/config/locales/te.yml index 8a1e2e0bb5..d325d0fba0 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -2,39 +2,24 @@ te: about: about_mastodon_html: మాస్టొడాన్ అనేది ఒక సామాజిక మాధ్యమం. ఇది పూర్తిగా ఉచితం మరియు స్వేచ్ఛా సాఫ్టువేరు. ఈమెయిల్ లాగానే ఇది వికేంద్రీకరించబడినది. - apps: మొబైల్ యాప్స్ contact_missing: ఇంకా సెట్ చేయలేదు contact_unavailable: వర్తించదు - documentation: పత్రీకరణ hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది - source_code: సోర్సు కోడ్ - what_is_mastodon: మాస్టొడాన్ అంటే ఏమిటి? accounts: - choices_html: "%{name}'s ఎంపికలు:" follow: అనుసరించు followers: one: అనుచరి other: అనుచరులు following: అనుసరిస్తున్నారు - joined: "%{date}న చేరారు" last_active: చివరిగా క్రియాశీలకంగా వుంది link_verified_on: ఈ లంకె యొక్క యాజమాన్యాన్ని చివరిగా పరిశీలించింది %{date}న - media: మీడియా - moved_html: "%{name} ఈ %{new_profile_link}కు మారారు:" - network_hidden: ఈ సమాచారం అందుబాటులో లేదు nothing_here: ఇక్కడ ఏమీ లేదు! - people_followed_by: "%{name} అనుసరించే వ్యక్తులు" - people_who_follow: "%{name}ను అనుసరించే వ్యక్తులు" pin_errors: following: మీరు ధృవీకరించాలనుకుంటున్న వ్యక్తిని మీరిప్పటికే అనుసరిస్తూ వుండాలి posts: one: టూటు other: టూట్లు posts_tab_heading: టూట్లు - posts_with_replies: టూట్లు మరియు ప్రత్యుత్తరాలు - roles: - bot: బోట్ - unfollow: అనుసరించవద్దు admin: account_actions: action: చర్య తీసుకో diff --git a/config/locales/th.yml b/config/locales/th.yml index d2a27cb304..123d2c3425 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -2,44 +2,24 @@ th: about: about_mastodon_html: 'เครือข่ายสังคมแห่งอนาคต: ไม่มีโฆษณา ไม่มีการสอดแนมโดยองค์กร การออกแบบตามหลักจริยธรรม และการกระจายศูนย์! เป็นเจ้าของข้อมูลของคุณด้วย Mastodon!' - api: API - apps: แอปมือถือ contact_missing: ไม่ได้ตั้ง contact_unavailable: ไม่มี - documentation: เอกสารประกอบ hosted_on: Mastodon ที่โฮสต์ที่ %{domain} - privacy_policy: นโยบายความเป็นส่วนตัว - source_code: โค้ดต้นฉบับ - what_is_mastodon: Mastodon คืออะไร? + title: เกี่ยวกับ accounts: - choices_html: 'ตัวเลือกของ %{name}:' - endorsements_hint: คุณสามารถแนะนำผู้คนที่คุณติดตามจากส่วนติดต่อเว็บ และเขาจะปรากฏที่นี่ - featured_tags_hint: คุณสามารถแนะนำแฮชแท็กที่เฉพาะเจาะจงที่จะแสดงที่นี่ follow: ติดตาม followers: other: ผู้ติดตาม following: กำลังติดตาม instance_actor_flash: บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการระงับ - joined: เข้าร่วมเมื่อ %{date} last_active: ใช้งานล่าสุด link_verified_on: ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ %{date} - media: สื่อ - moved_html: "%{name} ได้ย้ายไปยัง %{new_profile_link}:" - network_hidden: ไม่มีข้อมูลนี้ nothing_here: ไม่มีสิ่งใดที่นี่! - people_followed_by: ผู้คนที่ %{name} ติดตาม - people_who_follow: ผู้คนที่ติดตาม %{name} pin_errors: following: คุณต้องกำลังติดตามบุคคลที่คุณต้องการแนะนำอยู่แล้ว posts: other: โพสต์ posts_tab_heading: โพสต์ - posts_with_replies: โพสต์และการตอบกลับ - roles: - bot: บอต - group: กลุ่ม - unavailable: โปรไฟล์ไม่พร้อมใช้งาน - unfollow: เลิกติดตาม admin: account_actions: action: ทำการกระทำ @@ -906,6 +886,7 @@ th: warning: ระวังเป็นอย่างสูงกับข้อมูลนี้ อย่าแบ่งปันข้อมูลกับใครก็ตาม! your_token: โทเคนการเข้าถึงของคุณ auth: + apply_for_account: เข้ารายชื่อผู้รอ change_password: รหัสผ่าน delete_account: ลบบัญชี delete_account_html: หากคุณต้องการลบบัญชีของคุณ คุณสามารถ ดำเนินการต่อที่นี่ คุณจะได้รับการถามเพื่อการยืนยัน @@ -925,6 +906,7 @@ th: migrate_account: ย้ายไปยังบัญชีอื่น migrate_account_html: หากคุณต้องการเปลี่ยนเส้นทางบัญชีนี้ไปยังบัญชีอื่น คุณสามารถ กำหนดค่าบัญชีที่นี่ or_log_in_with: หรือเข้าสู่ระบบด้วย + privacy_policy_agreement_html: ฉันได้อ่านและเห็นด้วยกับ นโยบายความเป็นส่วนตัว providers: cas: CAS saml: SAML @@ -940,6 +922,8 @@ th: email_below_hint_html: หากที่อยู่อีเมลด้านล่างไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลที่นี่และรับอีเมลยืนยันใหม่ email_settings_hint_html: ส่งอีเมลยืนยันไปยัง %{email} แล้ว หากที่อยู่อีเมลนั้นไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลได้ในการตั้งค่าบัญชี title: การตั้งค่า + sign_up: + title: มาตั้งค่าของคุณใน %{domain} กันเลย status: account_status: สถานะบัญชี confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์ @@ -1103,9 +1087,6 @@ th: index: title: โพสต์ที่กรองอยู่ footer: - developers: นักพัฒนา - more: เพิ่มเติม… - resources: ทรัพยากร trending_now: กำลังนิยม generic: all: ทั้งหมด @@ -1144,7 +1125,6 @@ th: following: รายการติดตาม muting: รายการซ่อน upload: อัปโหลด - in_memoriam_html: เพื่อระลึกถึง invites: delete: ปิดใช้งาน expired: หมดอายุแล้ว @@ -1196,6 +1176,8 @@ th: followers_count: ผู้ติดตาม ณ เวลาที่ย้าย incoming_migrations: การย้ายจากบัญชีอื่น incoming_migrations_html: เพื่อย้ายจากบัญชีอื่นไปยังบัญชีนี้ ก่อนอื่นคุณจำเป็นต้อง สร้างนามแฝงบัญชี + moved_msg: ตอนนี้กำลังเปลี่ยนเส้นทางบัญชีของคุณไปยัง %{acct} และกำลังย้ายผู้ติดตามของคุณไป + not_redirecting: บัญชีของคุณไม่ได้กำลังเปลี่ยนเส้นทางไปยังบัญชีอื่นใดในปัจจุบัน on_cooldown: คุณเพิ่งโยกย้ายบัญชีของคุณ ฟังก์ชันนี้จะพร้อมใช้งานอีกครั้งในอีก %{count} วัน past_migrations: การโยกย้ายที่ผ่านมา proceed_with_move: ย้ายผู้ติดตาม @@ -1310,21 +1292,7 @@ th: remove_selected_follows: เลิกติดตามผู้ใช้ที่เลือก status: สถานะบัญชี remote_follow: - acct: ป้อน username@domain ของคุณที่คุณต้องการกระทำจาก missing_resource: ไม่พบ URL การเปลี่ยนเส้นทางที่จำเป็นสำหรับบัญชีของคุณ - no_account_html: ไม่มีบัญชี? คุณสามารถ ลงทะเบียนที่นี่ - proceed: ดำเนินการต่อเพื่อติดตาม - prompt: 'คุณกำลังจะติดตาม:' - remote_interaction: - favourite: - proceed: ดำเนินการต่อเพื่อชื่นชอบ - prompt: 'คุณต้องการชื่นชอบโพสต์นี้:' - reblog: - proceed: ดำเนินการต่อเพื่อดัน - prompt: 'คุณต้องการดันโพสต์นี้:' - reply: - proceed: ดำเนินการต่อเพื่อตอบกลับ - prompt: 'คุณต้องการตอบกลับโพสต์นี้:' reports: errors: invalid_rules: ไม่ได้อ้างอิงกฎที่ถูกต้อง diff --git a/config/locales/tr.yml b/config/locales/tr.yml index c10aa6c6a9..f18ccd234f 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -2,46 +2,26 @@ tr: about: about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir. - api: API - apps: Mobil uygulamalar contact_missing: Ayarlanmadı contact_unavailable: Yok - documentation: Belgeler hosted_on: Mastodon %{domain} üzerinde barındırılıyor - privacy_policy: Gizlilik Politikası - source_code: Kaynak kodu - what_is_mastodon: Mastodon nedir? + title: Hakkında accounts: - choices_html: "%{name} kişisinin seçimleri:" - endorsements_hint: Takip ettiğiniz kişileri web arayüzünden onaylayabilirsiniz, burada görünecekler. - featured_tags_hint: Burada görüntülenecek belirli etiketlere sahip olabilirsiniz. follow: Takip et followers: one: Takipçi other: Takipçi following: Takip edilenler instance_actor_flash: Bu hesap, herhangi bir bireysel kullanıcı değil, sunucunun kendisini temsil etmek için kullanılan sanal bir aktördür. Birleştirme amacıyla kullanılmaktadır ve askıya alınmamalıdır. - joined: "%{date} tarihinde katıldı" last_active: son etkinlik link_verified_on: Bu bağlantının mülkiyeti %{date} tarihinde kontrol edildi - media: Medya - moved_html: "%{name}, %{new_profile_link} adresine taşındı:" - network_hidden: Bu bilgi mevcut değil nothing_here: Burada henüz hiçbir gönderi yok! - people_followed_by: Kullanıcı %{name}'in takip ettikleri - people_who_follow: Kullanıcı %{name}'i takip edenler pin_errors: following: Onaylamak istediğiniz kişiyi zaten takip ediyor olmalısınız posts: one: Gönderi other: Gönderiler posts_tab_heading: Gönderiler - posts_with_replies: Gönderiler ve yanıtlar - roles: - bot: Bot - group: Grup - unavailable: Profil kullanılamıyor - unfollow: Takibi bırak admin: account_actions: action: Eylemi gerçekleştir @@ -344,6 +324,7 @@ tr: listed: Listelenen new: title: Yeni özel emoji ekle + no_emoji_selected: Hiçbiri seçilmediğinden hiçbir emoji değiştirilmedi not_permitted: Bu işlemi gerçekleştirme izniniz yok overwrite: Üzerine yaz shortcode: Kısa kod @@ -812,6 +793,9 @@ tr: description_html: Bu bağlantılar şu anda sunucunuzun gönderilerini gördüğü hesaplarca bolca paylaşılıyor. Kullanıcılarınızın dünyada neler olduğunu görmesine yardımcı olabilir. Yayıncıyı onaylamadığınız sürece hiçbir bağlantı herkese açık yayınlanmaz. Tekil bağlantıları onaylayabilir veya reddedebilirsiniz. disallow: Bağlantıya izin verme disallow_provider: Yayıncıya izin verme + no_link_selected: Hiçbiri seçilmediğinden hiçbir bağlantı değiştirilmedi + publishers: + no_publisher_selected: Hiçbiri seçilmediğinden hiçbir yayıncı değiştirilmedi shared_by_over_week: one: Geçen hafta bir kişi paylaştı other: Geçen hafta %{count} kişi paylaştı @@ -831,6 +815,7 @@ tr: description_html: Bunlar, sunucunuzca bilinen, şu an sıklıkla paylaşılan ve beğenilen gönderilerdir. Yeni ve geri dönen kullanıcılarınızın takip etmesi için daha fazla kullanıcı bulmasına yararlar. Siz yazarı onaylamadığınız ve yazar hesabının başkalarına önerilmesine izin vermediği sürece gönderileri herkese açık olarak gösterilmez. Tekil gönderileri de onaylayabilir veya reddedebilirsiniz. disallow: Gönderi iznini kaldır disallow_account: Yazar iznini kaldır + no_status_selected: Hiçbiri seçilmediğinden hiçbir öne çıkan gönderi değiştirilmedi not_discoverable: Yazar keşfedilebilir olmamayı seçiyor shared_by: one: Bir defa paylaşıldı veya favorilendi @@ -846,6 +831,7 @@ tr: tag_uses_measure: toplam kullanım description_html: Bunlar sunucunuzun gördüğü gönderilerde sıklıkla gözüken etiketlerdir. Kullanıcılarınızın, şu an en çok ne hakkında konuşulduğunu görmesine yardımcı olurlar. Onaylamadığınız sürece etiketler herkese açık görünmez. listable: Önerilebilir + no_tag_selected: Hiçbiri seçilmediğinden hiçbir etiket değiştirilmedi not_listable: Önerilmeyecek not_trendable: Öne çıkanlar altında görünmeyecek not_usable: Kullanılamaz @@ -1169,9 +1155,6 @@ tr: hint: Bu filtre diğer ölçütlerden bağımsız olarak tekil gönderileri seçmek için uygulanıyor. Web arayüzünü kullanarak bu filtreye daha fazla gönderi ekleyebilirsiniz. title: Filtrelenmiş gönderiler footer: - developers: Geliştiriciler - more: Daha Fazla… - resources: Kaynaklar trending_now: Şu an gündemde generic: all: Tümü @@ -1214,7 +1197,6 @@ tr: following: Takip edilenler listesi muting: Susturulanlar listesi upload: Yükle - in_memoriam_html: Hatırada. invites: delete: Devre dışı bırak expired: Süresi dolmuş @@ -1394,22 +1376,7 @@ tr: remove_selected_follows: Seçili kullanıcıları takip etmeyi bırak status: Hesap durumu remote_follow: - acct: İşlem yapmak istediğiniz kullaniciadi@alanadini girin missing_resource: Hesabınız için gerekli yönlendirme URL'si bulunamadı - no_account_html: Hesabınız yok mu? Buradan kaydolabilirsiniz - proceed: Takip etmek için devam edin - prompt: Bu kullanıcıyı takip etmek istediğinize emin misiniz? - reason_html: "Bu adım neden gerekli?%{instance} kayıtlı olduğunuz sunucu olmayabilir, bu yüzden önce sizi kendi sunucunuza yönlendirmemiz gerekmektedir." - remote_interaction: - favourite: - proceed: Favorilere eklemek için devam edin - prompt: 'Bu gönderiyi favorilerinize eklemek istiyorsunuz:' - reblog: - proceed: Boostlamak için devam edin - prompt: 'Bu gönderiyi teşvik etmek istiyorsunuz:' - reply: - proceed: Yanıtlamak için devam edin - prompt: 'Bu gönderiyi yanıtlamak istiyorsunuz:' reports: errors: invalid_rules: geçerli kurallara işaret etmez diff --git a/config/locales/tt.yml b/config/locales/tt.yml index fe3c74ccde..40a0207e5b 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -1,16 +1,10 @@ --- tt: about: - api: API contact_unavailable: Юк accounts: follow: Языл following: Язылгансыз - media: Медиа - roles: - bot: Бот - group: Törkem - unfollow: Язылынмау admin: accounts: avatar: Аватар @@ -158,8 +152,6 @@ tt: index: delete: Бетерү title: Сөзгечләр - footer: - more: Тагы… generic: all: Бөтенесе copy: Күчереп алу diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 67aff52c5a..93c4724b48 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -2,19 +2,11 @@ uk: about: about_mastodon_html: 'Соціальна мережа майбутнього: жодної реклами, жодного корпоративного нагляду, етичний дизайн та децентралізація! З Mastodon ваші дані під вашим контролем!' - api: API - apps: Мобільні застосунки contact_missing: Не зазначено contact_unavailable: Недоступно - documentation: Документація hosted_on: Mastodon розміщено на %{domain} - privacy_policy: Політика конфіденційності - source_code: Вихідний код - what_is_mastodon: Що таке Mastodon? + title: Про програму accounts: - choices_html: 'Вподобання %{name}:' - endorsements_hint: У веб-інтерфейсі ви можете рекомендувати людей, на яких підписані, і вони з'являться тут. - featured_tags_hint: Ви можете вказати хештеги, які будуть відображатись тут. follow: Підписатися followers: few: Підписника @@ -23,15 +15,9 @@ uk: other: Підписників following: Підписаний(-а) instance_actor_flash: Цей обліковий запис є віртуальним персонажем, який використовується для показу самого сервера, а не будь-якого окремого користувача. Він використовується з метою федералізації і не повинен бути зупинений. - joined: Приєднався %{date} last_active: остання активність link_verified_on: Права власності на це посилання були перевірені %{date} - media: Медіа - moved_html: "%{name} переїхав до %{new_profile_link}:" - network_hidden: Ця інформація недоступна nothing_here: Тут нічого немає! - people_followed_by: Люди, на яких підписаний(-а) %{name} - people_who_follow: Підписники %{name} pin_errors: following: Ви повинні бути підписаним на людину, яку бажаєте схвалити posts: @@ -40,12 +26,6 @@ uk: one: Дмух other: Дмухів posts_tab_heading: Дмухи - posts_with_replies: Дмухи та відповіді - roles: - bot: Бот - group: Група - unavailable: Профіль недоступний - unfollow: Відписатися admin: account_actions: action: Виконати дію @@ -350,6 +330,7 @@ uk: listed: У списку new: title: Додати новий емодзі + no_emoji_selected: Жоден емоджі не було змінено, оскільки жоден не було вибрано not_permitted: Вам не дозволено виконувати цю дію overwrite: Переписати shortcode: Шорткод @@ -840,6 +821,9 @@ uk: description_html: Це посилання, з яких наразі багаторазово поширюються записи, з яких Ваш сервер бачить пости. Це може допомогти вашим користувачам дізнатися, що відбувається в світі. Посилання не відображається публічно, поки ви не затверджуєте його публікацію. Ви також можете дозволити або відхилити окремі посилання. disallow: Заборонити посилання disallow_provider: Заборонити публікатора + no_link_selected: Жодне посилання не було змінено, оскільки жодне не було вибрано + publishers: + no_publisher_selected: Жодного видавця не було змінено, оскільки жодного не було вибрано shared_by_over_week: few: Поширили %{count} людини за останній тиждень many: Поширили %{count} людей за останній тиждень @@ -861,6 +845,7 @@ uk: description_html: Це дописи, про які ваш сервер знає як такі, що в даний час є спільні і навіть ті, які зараз є дуже популярними. Це може допомогти вашим новим та старим користувачам, щоб знайти більше людей для слідування. Жоден запис не відображається публічно, поки ви не затверджуєте автора, і автор дозволяє іншим користувачам підписатися на це. Ви також можете дозволити або відхилити окремі повідомлення. disallow: Заборонити допис disallow_account: Заборонити автора + no_status_selected: Жодного популярного допису не було змінено, оскільки жодного не було вибрано not_discoverable: Автор не вирішив бути видимим shared_by: few: Поділитись або додати в улюблені %{friendly_count} рази @@ -878,6 +863,7 @@ uk: tag_uses_measure: всього використань description_html: Ці хештеґи, які бачить ваш сервер, в цей час з’являються у багатьох дописах. Це може допомогти вашим користувачам дізнатися про що люди наразі найбільше говорять. Жодні хештеґи публічно не показуються, доки ви їх не затвердите. listable: Може бути запропоновано + no_tag_selected: Жоден теґ не було змінено, оскільки жоден не було вибрано not_listable: Не буде запропоновано not_trendable: Не показуватиметься серед популярних not_usable: Неможливо використати @@ -1211,9 +1197,6 @@ uk: hint: Цей фільтр застосовується для вибору окремих дописів, незалежно від інших критеріїв. Ви можете додавати більше дописів до цього фільтра з вебінтерфейсу. title: Відфільтровані дописи footer: - developers: Розробникам - more: Більше… - resources: Ресурси trending_now: Актуальні generic: all: Усі @@ -1264,7 +1247,6 @@ uk: following: Підписки muting: Список глушення upload: Завантажити - in_memoriam_html: Пам'ятник. invites: delete: Деактивувати expired: Вийшов @@ -1446,22 +1428,7 @@ uk: remove_selected_follows: Не стежити за обраними користувачами status: Статус облікового запису remote_follow: - acct: Введіть username@domain, яким ви хочете підписатися missing_resource: Не вдалося знайти необхідний URL переадресації для вашого облікового запису - no_account_html: Не маєте облікового запису? Ви можете зареєструватися тут - proceed: Перейти до підписки - prompt: 'Ви хочете підписатися на:' - reason_html: "Чому це необхідно? %{instance} можливо, не є сервером, на якому ви зареєстровані, тому ми маємо спрямувати вас до вашого домашнього сервера." - remote_interaction: - favourite: - proceed: Перейти до додавання в улюблені - prompt: 'Ви хочете зробити улюбленим цей дмух:' - reblog: - proceed: Перейти до передмухування - prompt: 'Ви хочете передмухнути цей дмух:' - reply: - proceed: Перейти до відповіді - prompt: 'Ви хочете відповісти на цей дмух:' reports: errors: invalid_rules: не посилається на чинні правила diff --git a/config/locales/vi.yml b/config/locales/vi.yml index cac29b2a31..3252840ca9 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -2,44 +2,24 @@ vi: about: about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không bán thông tin người dùng và phi tập trung! Làm chủ dữ liệu của bạn với Mastodon!' - api: API - apps: Apps contact_missing: Chưa thiết lập contact_unavailable: N/A - documentation: Tài liệu hosted_on: "%{domain} vận hành nhờ Mastodon" - privacy_policy: Chính sách bảo mật - source_code: Mã nguồn - what_is_mastodon: Mastodon là gì? + title: Giới thiệu accounts: - choices_html: "%{name} tôn vinh:" - endorsements_hint: Bạn có thể tôn vinh những người bạn theo dõi và họ sẽ hiển thị ở giao diện web. - featured_tags_hint: Bạn có thể cho biết những hashtag thường dùng ở đây. follow: Theo dõi followers: other: Người theo dõi following: Theo dõi instance_actor_flash: Tài khoản này được dùng để đại diện cho máy chủ và không phải là người thật. Đừng bao giờ vô hiệu hóa tài khoản này. - joined: Đã tham gia %{date} last_active: online link_verified_on: Liên kết này đã được xác minh quyền sở hữu vào %{date} - media: Media - moved_html: "%{name} đã chuyển sang %{new_profile_link}:" - network_hidden: Dữ liệu đã bị ẩn nothing_here: Trống trơn! - people_followed_by: Những người %{name} theo dõi - people_who_follow: Những người theo dõi %{name} pin_errors: following: Để tôn vinh người nào đó, bạn phải theo dõi họ trước posts: other: Tút posts_tab_heading: Tút - posts_with_replies: Trả lời - roles: - bot: Tài khoản Bot - group: Nhóm - unavailable: Tài khoản bị đình chỉ - unfollow: Ngưng theo dõi admin: account_actions: action: Thực hiện hành động @@ -341,6 +321,7 @@ vi: listed: Liệt kê new: title: Thêm Emoji mới + no_emoji_selected: Không có emoji nào thay đổi vì không có emoji nào được chọn not_permitted: Bạn không có quyền thực hiện việc này overwrite: Ghi đè shortcode: Viết tắt @@ -798,6 +779,9 @@ vi: description_html: Đây là những liên kết được chia sẻ nhiều trên máy chủ của bạn. Nó có thể giúp người dùng tìm hiểu những gì đang xảy ra trên thế giới. Không có liên kết nào được hiển thị công khai cho đến khi bạn duyệt nguồn đăng. Bạn cũng có thể cho phép hoặc từ chối từng liên kết riêng. disallow: Cấm liên kết disallow_provider: Cấm nguồn đăng + no_link_selected: Không có liên kết nào thay đổi vì không có liên kết nào được chọn + publishers: + no_publisher_selected: Không có nguồn đăng nào thay đổi vì không có nguồn đăng nào được chọn shared_by_over_week: other: "%{count} người chia sẻ tuần rồi" title: Liên kết xu hướng @@ -816,6 +800,7 @@ vi: description_html: Đây là những tút đang được đăng lại và yêu thích rất nhiều trên máy chủ của bạn. Nó có thể giúp người dùng mới và người dùng cũ tìm thấy nhiều người hơn để theo dõi. Không có tút nào được hiển thị công khai cho đến khi bạn cho phép người đăng và người cho phép đề xuất tài khoản của họ cho người khác. Bạn cũng có thể cho phép hoặc từ chối từng tút riêng. disallow: Cấm tút disallow_account: Cấm người đăng + no_status_selected: Không có tút thịnh hành nào thay đổi vì không có tút nào được chọn not_discoverable: Tác giả đã chọn không tham gia mục khám phá shared_by: other: Được thích và đăng lại %{friendly_count} lần @@ -830,6 +815,7 @@ vi: tag_uses_measure: tổng người dùng description_html: Đây là những hashtag đang xuất hiện trong rất nhiều tút trên máy chủ của bạn. Nó có thể giúp người dùng của bạn tìm ra những gì mọi người đang quan tâm nhiều nhất vào lúc này. Không có hashtag nào được hiển thị công khai cho đến khi bạn cho phép chúng. listable: Có thể đề xuất + no_tag_selected: Không có hashtag thịnh hành nào thay đổi vì không có hashtag nào được chọn not_listable: Không thể đề xuất not_trendable: Không xuất hiện xu hướng not_usable: Không được phép dùng @@ -1148,9 +1134,6 @@ vi: hint: Bộ lọc này áp dụng để chọn các tút riêng lẻ bất kể các tiêu chí khác. Bạn có thể thêm các tút khác vào bộ lọc này từ giao diện web. title: Những tút đã lọc footer: - developers: Phát triển - more: Nhiều hơn - resources: Quy tắc trending_now: Xu hướng generic: all: Tất cả @@ -1189,7 +1172,6 @@ vi: following: Danh sách người theo dõi muting: Danh sách người đã ẩn upload: Tải lên - in_memoriam_html: Tưởng Niệm invites: delete: Vô hiệu hóa expired: Hết hạn @@ -1368,22 +1350,7 @@ vi: remove_selected_follows: Ngưng theo dõi những người đã chọn status: Trạng thái của họ remote_follow: - acct: Nhập địa chỉ Mastodon của bạn (tên@máy chủ) missing_resource: Không tìm thấy URL chuyển hướng cho tài khoản của bạn - no_account_html: Nếu chưa có tài khoản, hãy đăng ký - proceed: Theo dõi - prompt: 'Bạn vừa yêu cầu theo dõi:' - reason_html: "Tại sao bước này là cần thiết? %{instance} có thể không phải là máy chủ nơi bạn đã đăng ký, vì vậy chúng tôi cần chuyển hướng bạn đến máy chủ của bạn trước." - remote_interaction: - favourite: - proceed: Thích tút - prompt: 'Bạn muốn thích tút này:' - reblog: - proceed: Tiếp tục đăng lại - prompt: Bạn có muốn đăng lại tút này? - reply: - proceed: Tiếp tục trả lời - prompt: Bạn có muốn trả lời tút này? reports: errors: invalid_rules: không đúng với quy tắc diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index fd5592c238..2da3b538c6 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -1,17 +1,10 @@ --- zgh: - about: - what_is_mastodon: ⵎⴰ'ⵢⴷ ⵉⴳⴰⵏ ⵎⴰⵙⵜⵔⴷⵓⵎ? accounts: follow: ⴹⴼⵕ followers: one: ⴰⵎⴹⴼⴰⵕ other: ⵉⵎⴹⴼⴰⵕⵏ - media: ⵉⵙⵏⵖⵎⵉⵙⵏ - roles: - bot: ⴰⴱⵓⵜ - group: ⵜⴰⵔⴰⴱⴱⵓⵜ - unfollow: ⴽⴽⵙ ⴰⴹⴼⴼⵓⵕ admin: accounts: change_email: @@ -109,8 +102,6 @@ zgh: filters: index: delete: ⴽⴽⵙ - footer: - more: ⵓⴳⴳⴰⵔ… generic: all: ⵎⴰⵕⵕⴰ copy: ⵙⵏⵖⵍ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 3ad48e4daf..fd6925a9fe 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -2,44 +2,23 @@ zh-CN: about: about_mastodon_html: Mastodon 是一个建立在开放式网络协议和自由、开源软件之上的社交网络,有着类似于电子邮件的分布式设计。 - api: API - apps: 移动应用 contact_missing: 未设定 contact_unavailable: 未公开 - documentation: 文档 hosted_on: 运行在 %{domain} 上的 Mastodon 站点 - privacy_policy: 隐私政策 - source_code: 源码 - what_is_mastodon: Mastodon 是什么? accounts: - choices_html: "%{name} 的推荐:" - endorsements_hint: 你可以在 web 界面上推荐你关注的人,他们会显示在这里。 - featured_tags_hint: 你可以精选一些话题标签展示在这里。 follow: 关注 followers: other: 关注者 following: 正在关注 instance_actor_flash: 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。该账号用于达成互联之目的,不应该被停用。 - joined: 加入于 %{date} last_active: 最近活动 link_verified_on: 此链接的所有权已在 %{date} 检查 - media: 媒体 - moved_html: "%{name} 已经迁移到 %{new_profile_link}:" - network_hidden: 此信息不可用 nothing_here: 这里什么都没有! - people_followed_by: "%{name} 关注的人" - people_who_follow: 关注 %{name} 的人 pin_errors: following: 你必须关注你要推荐的人 posts: other: 嘟文 posts_tab_heading: 嘟文 - posts_with_replies: 嘟文和回复 - roles: - bot: 机器人 - group: 群组 - unavailable: 个人资料不可用 - unfollow: 取消关注 admin: account_actions: action: 执行操作 @@ -1148,9 +1127,6 @@ zh-CN: hint: 无论其他条件如何,此过滤器适用于选用个别嘟文。你可以从网页界面中向此过滤器加入更多嘟文。 title: 过滤的嘟文 footer: - developers: 开发者 - more: 更多… - resources: 资源 trending_now: 现在流行 generic: all: 全部 @@ -1189,7 +1165,6 @@ zh-CN: following: 关注列表 muting: 隐藏列表 upload: 上传 - in_memoriam_html: 谨此悼念。 invites: delete: 停用 expired: 已失效 @@ -1366,22 +1341,7 @@ zh-CN: remove_selected_follows: 取消关注所选用户 status: 帐户状态 remote_follow: - acct: 请输入你的“用户名@实例域名” missing_resource: 无法确定你的帐户的跳转 URL - no_account_html: 还没有账号?你可以注册一个 - proceed: 确认关注 - prompt: 你正准备关注: - reason_html: "为什么需要这个步骤? %{instance} 可能不是你所注册的服务器,所以我们需要先跳转到你所在的服务器。" - remote_interaction: - favourite: - proceed: 确认标记为喜欢 - prompt: 你想要标记此嘟文为喜欢: - reblog: - proceed: 确认转嘟 - prompt: 你想要转嘟此条: - reply: - proceed: 确认回复 - prompt: 你想要回复此嘟文: reports: errors: invalid_rules: 没有引用有效的规则 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 257537460f..3724c4f4ca 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -2,43 +2,23 @@ zh-HK: about: about_mastodon_html: Mastodon(萬象)是屬於未來的社交網路︰無廣告煩擾、無企業監控、設計講道義、分散無大台!立即重奪個人資料的控制權,使用 Mastodon 吧! - api: API - apps: 手機 App contact_missing: 未設定 contact_unavailable: 不適用 - documentation: 說明文件 hosted_on: 在 %{domain} 運作的 Mastodon 伺服器 - source_code: 源代碼 - what_is_mastodon: Mastodon (萬象)是甚麼? accounts: - choices_html: "%{name} 的選擇:" - endorsements_hint: 你可以推薦正在關注的人,他們會被顯示在你的個人頁面。 - featured_tags_hint: 你可以推薦不同標籤,它們也會在此處出現。 follow: 關注 followers: other: 關注者 following: 正在關注 instance_actor_flash: 這個帳戶是結盟用的本伺服器的虛擬象徵,並不代表任何個別用戶。請不要把帳號停權。 - joined: 於 %{date} 加入 last_active: 上次活躍時間 link_verified_on: 此連結的所有權已在 %{date} 檢查過 - media: 媒體 - moved_html: "%{name} 已經轉移到 %{new_profile_link}:" - network_hidden: 此信息不可用 nothing_here: 暫時未有內容可以顯示! - people_followed_by: "%{name} 關注的人" - people_who_follow: 關注 %{name} 的人 pin_errors: following: 你只能推薦你正在關注的使用者。 posts: other: 文章 posts_tab_heading: 文章 - posts_with_replies: 包含回覆的文章 - roles: - bot: 機械人 - group: 群組 - unavailable: 無法取得個人檔案 - unfollow: 取消關注 admin: account_actions: action: 執行動作 @@ -763,9 +743,6 @@ zh-HK: new: title: 新增篩選器 footer: - developers: 開發者 - more: 更多...... - resources: 項目 trending_now: 今期流行 generic: all: 全部 @@ -795,7 +772,6 @@ zh-HK: following: 你所關注的用戶名單 muting: 靜音名單 upload: 上載 - in_memoriam_html: 謹此悼念。 invites: delete: 停用 expired: 已失效 @@ -965,22 +941,7 @@ zh-HK: remove_selected_follows: 取消關注所選用戶 status: 帳戶帖文 remote_follow: - acct: 請輸入你想使用的「使用者名稱@域名」身份 missing_resource: 無法找到你用戶的轉接網址 - no_account_html: 沒有帳號?你可以在這裏註冊 - proceed: 下一步 - prompt: 你希望關注︰ - reason_html: "為甚麼有必要做這個步驟?因為%{instance}未必是你註冊的伺服器,所以我們首先需要將你帶回你的伺服器。" - remote_interaction: - favourite: - proceed: 下一步 - prompt: 你要求把這篇文章加入最愛: - reblog: - proceed: 繼續轉嘟 - prompt: 你想轉推: - reply: - proceed: 下一步 - prompt: 你想回覆: scheduled_statuses: over_daily_limit: 你已經超越了當天排定發文的限額 (%{limit}) over_total_limit: 你已經超越了排定發文的限額 (%{limit}) diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 7f9fbbea17..a469b9369b 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -2,44 +2,24 @@ zh-TW: about: about_mastodon_html: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳號,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的社群網路交流。 - api: API - apps: 行動應用程式 contact_missing: 未設定 contact_unavailable: 未公開 - documentation: 文件 hosted_on: 在 %{domain} 運作的 Mastodon 站點 - privacy_policy: 隱私權政策 - source_code: 原始碼 - what_is_mastodon: 什麼是 Mastodon? + title: 關於本站 accounts: - choices_html: "%{name} 的選擇:" - endorsements_hint: 推薦您已經跟隨的人,將他們釘選在您的個人頁面。 - featured_tags_hint: 您可以推薦不同主題標籤,它們也會在此處出現。 follow: 跟隨 followers: other: 跟隨者 following: 正在跟隨 instance_actor_flash: 這個帳號是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為聯邦宇宙且不應被停權。 - joined: 加入於 %{date} last_active: 上次活躍時間 link_verified_on: 此連結的所有權已在 %{date} 檢查過 - media: 媒體 - moved_html: "%{name} 已經搬遷到 %{new_profile_link}:" - network_hidden: 此訊息不可用 nothing_here: 暫時沒有內容可供顯示! - people_followed_by: "%{name} 跟隨的人" - people_who_follow: 跟隨 %{name} 的人 pin_errors: following: 您只能推薦您正在跟隨的使用者。 posts: other: 嘟文 posts_tab_heading: 嘟文 - posts_with_replies: 嘟文與回覆 - roles: - bot: 機器人 - group: 群組 - unavailable: 無法取得個人檔案 - unfollow: 取消跟隨 admin: account_actions: action: 執行動作 @@ -341,6 +321,7 @@ zh-TW: listed: 已顯示 new: title: 加入新的自訂表情符號 + no_emoji_selected: 未選取任何 emoji,因此未變更 not_permitted: 您無權執行此操作 overwrite: 覆蓋 shortcode: 短代碼 @@ -797,9 +778,12 @@ zh-TW: links: allow: 允許連結 allow_provider: 允許發行者 - description_html: 這些連結是正在被您伺服器上看到該嘟文之帳號大量分享。這些連結可以幫助您的使用者探索現在世界上正在發生的事情。除非您核准該發佈者,連結將不被公開展示。您也可以核准或駁回個別連結。 + description_html: 這些連結是正在被您伺服器上看到該嘟文之帳號大量分享。這些連結可以幫助您的使用者探索現在世界上正在發生的事情。除非您核准該發行者,連結將不被公開展示。您也可以核准或駁回個別連結。 disallow: 不允許連結 disallow_provider: 不允許發行者 + no_link_selected: 未選取任何鏈結,因此未變更 + publishers: + no_publisher_selected: 未選取任何發行者,因此未變更 shared_by_over_week: other: 上週被 %{count} 名使用者分享 title: 熱門連結 @@ -818,6 +802,7 @@ zh-TW: description_html: 這些是您伺服器上已知被正在大量分享及加入最愛之嘟文。這些嘟文能幫助您伺服器上舊雨新知發現更多帳號來跟隨。除非您核准該作者且作者允許他們的帳號被推薦至其他人,嘟文將不被公開展示。您可以核准或駁回個別嘟文。 disallow: 不允許嘟文 disallow_account: 不允許作者 + no_status_selected: 未選取任何熱門嘟文,因此未變更 not_discoverable: 嘟文作者選擇不被發現 shared_by: other: 分享過或/及收藏過 %{friendly_count} 次 @@ -832,6 +817,7 @@ zh-TW: tag_uses_measure: 總使用次數 description_html: 這些主題標籤正在您的伺服器上大量嘟文中出現。這些主題標籤能幫助您的使用者發現人們正集中討論的內容。除非您核准,主題標籤將不被公開展示。 listable: 能被建議 + no_tag_selected: 未選取任何主題標籤,因此未變更 not_listable: 不能被建議 not_trendable: 不會登上熱門 not_usable: 不可被使用 @@ -1150,9 +1136,6 @@ zh-TW: hint: 此過濾器會套用至所選之各別嘟文,不管它們有無符合其他條件。您可以從網頁介面中將更多嘟文加入至此過濾器。 title: 已過濾之嘟文 footer: - developers: 開發者 - more: 更多...... - resources: 資源 trending_now: 現正熱門 generic: all: 全部 @@ -1191,7 +1174,6 @@ zh-TW: following: 您關注的使用者名單 muting: 您靜音的使用者名單 upload: 上傳 - in_memoriam_html: 謹此悼念。 invites: delete: 停用 expired: 已失效 @@ -1370,22 +1352,7 @@ zh-TW: remove_selected_follows: 取消跟隨所選使用者 status: 帳號狀態 remote_follow: - acct: 請輸入您的使用者名稱@站點網域 missing_resource: 無法找到資源 - no_account_html: 還沒有帳號?您可以於這裡註冊 - proceed: 下一步 - prompt: 您希望跟隨: - reason_html: "為什麼要經過這個步驟?因為%{instance}未必是您註冊的伺服器,我們需要先將您帶回您駐在的伺服器。" - remote_interaction: - favourite: - proceed: 加入到最愛 - prompt: 您欲將此嘟文加入最愛 - reblog: - proceed: 確認轉嘟 - prompt: 您想轉嘟此嘟文: - reply: - proceed: 確認回覆 - prompt: 您想回覆此嘟文 reports: errors: invalid_rules: 未引用有效規則 From c60f9cb86568f65d8e743b41c482163ef1ceaf99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 20:48:29 +0900 Subject: [PATCH 074/500] Bump npmlog from 6.0.2 to 7.0.0 (#19376) Bumps [npmlog](https://github.com/npm/npmlog) from 6.0.2 to 7.0.0. - [Release notes](https://github.com/npm/npmlog/releases) - [Changelog](https://github.com/npm/npmlog/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/npmlog/compare/v6.0.2...v7.0.0) --- updated-dependencies: - dependency-name: npmlog dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 75 +++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 61 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index b1f3054ce4..fc84309e16 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "marky": "^1.2.5", "mini-css-extract-plugin": "^1.6.2", "mkdirp": "^1.0.4", - "npmlog": "^6.0.2", + "npmlog": "^7.0.0", "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", "object.values": "^1.1.5", diff --git a/yarn.lock b/yarn.lock index 5711902e4e..7ec3b28469 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2215,6 +2215,13 @@ abab@^2.0.6: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + abortcontroller-polyfill@^1.7.5: version "1.7.5" resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" @@ -2419,13 +2426,13 @@ aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -are-we-there-yet@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" - integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== +are-we-there-yet@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz#3ff397dc14f08b52dd8b2a64d3cee154ab8760d2" + integrity sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw== dependencies: delegates "^1.0.0" - readable-stream "^3.6.0" + readable-stream "^4.1.0" argparse@^1.0.7: version "1.0.10" @@ -2814,6 +2821,11 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3075,6 +3087,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + bufferutil@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" @@ -4808,6 +4828,11 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -4818,6 +4843,11 @@ events@^3.0.0: resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + eventsource@^1.0.7: version "1.1.1" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.1.tgz#4544a35a57d7120fba4fa4c86cb4023b2c09df2f" @@ -5303,10 +5333,10 @@ fuzzysort@^1.9.0: resolved "https://registry.yarnpkg.com/fuzzysort/-/fuzzysort-1.9.0.tgz#d36d27949eae22340bb6f7ba30ea6751b92a181c" integrity sha512-MOxCT0qLTwLqmEwc7UtU045RKef7mc8Qz8eR4r2bLNEq9dy/c3ZKMEFp6IEst69otkQdFZ4FfgH2dmZD+ddX1g== -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== +gauge@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-5.0.0.tgz#e270ca9d97dae84abf64e5277ef1ebddc7dd1e2f" + integrity sha512-0s5T5eciEG7Q3ugkxAkFtaDhrrhXsCRivA5y8C9WMHWuI8UlMOJg7+Iwf7Mccii+Dfs3H5jHepU0joPVyQU0Lw== dependencies: aproba "^1.0.3 || ^2.0.0" color-support "^1.1.3" @@ -5859,6 +5889,11 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" @@ -7893,14 +7928,14 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== +npmlog@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-7.0.0.tgz#09731bbb33019813704d6635b55f35a1b1784b34" + integrity sha512-p+OVCIQx1Rehplt2DNgBERrKtE5Ej0/rqdcNz5PbohpKHDPprGAl142qQuozmzWUM9uNjvstEO+A92CwytJPcQ== dependencies: - are-we-there-yet "^3.0.0" + are-we-there-yet "^4.0.0" console-control-strings "^1.1.0" - gauge "^4.0.3" + gauge "^5.0.0" set-blocking "^2.0.0" nth-check@^1.0.2: @@ -9515,6 +9550,16 @@ readable-stream@^3.0.0, readable-stream@^3.0.6, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.2.0.tgz#a7ef523d3b39e4962b0db1a1af22777b10eeca46" + integrity sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" From abf6c87ee8b57e09dca5f5b1fe1839a314e1aa46 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Oct 2022 14:07:02 +0200 Subject: [PATCH 075/500] Fix remote account in contact account setting not being used (#19351) --- app/presenters/instance_presenter.rb | 4 +++- app/validators/existing_username_validator.rb | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb index 43594a280d..fba3cc734b 100644 --- a/app/presenters/instance_presenter.rb +++ b/app/presenters/instance_presenter.rb @@ -12,7 +12,9 @@ class InstancePresenter < ActiveModelSerializers::Model end def account - Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, '')) + username, domain = Setting.site_contact_username.strip.gsub(/\A@/, '').split('@', 2) + domain = nil if TagManager.instance.local_domain?(domain) + Account.find_remote(username, domain) if username.present? end end diff --git a/app/validators/existing_username_validator.rb b/app/validators/existing_username_validator.rb index 8f7d96b8e9..1c55968216 100644 --- a/app/validators/existing_username_validator.rb +++ b/app/validators/existing_username_validator.rb @@ -6,7 +6,7 @@ class ExistingUsernameValidator < ActiveModel::EachValidator usernames_and_domains = begin value.split(',').map do |str| - username, domain = str.strip.gsub(/\A@/, '').split('@') + username, domain = str.strip.gsub(/\A@/, '').split('@', 2) domain = nil if TagManager.instance.local_domain?(domain) next if username.blank? @@ -21,8 +21,8 @@ class ExistingUsernameValidator < ActiveModel::EachValidator if options[:multiple] record.errors.add(attribute, I18n.t('existing_username_validator.not_found_multiple', usernames: usernames_with_no_accounts.join(', '))) if usernames_with_no_accounts.any? - else - record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) if usernames_with_no_accounts.any? || usernames_and_domains.size > 1 + elsif usernames_with_no_accounts.any? || usernames_and_domains.size > 1 + record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) end end end From 7c152acb2cc545a87610de349a94e14f45fbed5d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 11:44:41 +0200 Subject: [PATCH 076/500] Change settings area to be separated into categories in admin UI (#19407) And update all descriptions --- .../admin/settings/about_controller.rb | 9 ++ .../admin/settings/appearance_controller.rb | 9 ++ .../admin/settings/branding_controller.rb | 9 ++ .../settings/content_retention_controller.rb | 9 ++ .../admin/settings/discovery_controller.rb | 9 ++ .../settings/registrations_controller.rb | 9 ++ app/controllers/admin/settings_controller.rb | 10 +- .../admin/site_uploads_controller.rb | 2 +- app/helpers/admin/settings_helper.rb | 7 -- app/javascript/styles/mastodon/admin.scss | 82 +++++++++++--- .../styles/mastodon/components.scss | 5 + app/javascript/styles/mastodon/forms.scss | 16 ++- app/models/form/admin_settings.rb | 57 +++++----- .../rest/extended_description_serializer.rb | 12 ++- app/views/admin/settings/about/show.html.haml | 33 ++++++ .../admin/settings/appearance/show.html.haml | 34 ++++++ .../admin/settings/branding/show.html.haml | 39 +++++++ .../settings/content_retention/show.html.haml | 22 ++++ .../admin/settings/discovery/show.html.haml | 40 +++++++ app/views/admin/settings/edit.html.haml | 102 ------------------ .../settings/registrations/show.html.haml | 27 +++++ .../admin/settings/shared/_links.html.haml | 8 ++ app/views/layouts/admin.html.haml | 11 +- config/locales/en.yml | 87 +++++---------- config/locales/simple_form.en.yml | 37 +++++++ config/navigation.rb | 2 +- config/routes.rb | 13 ++- .../settings/branding_controller_spec.rb | 53 +++++++++ .../admin/settings_controller_spec.rb | 71 ------------ 29 files changed, 528 insertions(+), 296 deletions(-) create mode 100644 app/controllers/admin/settings/about_controller.rb create mode 100644 app/controllers/admin/settings/appearance_controller.rb create mode 100644 app/controllers/admin/settings/branding_controller.rb create mode 100644 app/controllers/admin/settings/content_retention_controller.rb create mode 100644 app/controllers/admin/settings/discovery_controller.rb create mode 100644 app/controllers/admin/settings/registrations_controller.rb create mode 100644 app/views/admin/settings/about/show.html.haml create mode 100644 app/views/admin/settings/appearance/show.html.haml create mode 100644 app/views/admin/settings/branding/show.html.haml create mode 100644 app/views/admin/settings/content_retention/show.html.haml create mode 100644 app/views/admin/settings/discovery/show.html.haml delete mode 100644 app/views/admin/settings/edit.html.haml create mode 100644 app/views/admin/settings/registrations/show.html.haml create mode 100644 app/views/admin/settings/shared/_links.html.haml create mode 100644 spec/controllers/admin/settings/branding_controller_spec.rb delete mode 100644 spec/controllers/admin/settings_controller_spec.rb diff --git a/app/controllers/admin/settings/about_controller.rb b/app/controllers/admin/settings/about_controller.rb new file mode 100644 index 0000000000..86327fe397 --- /dev/null +++ b/app/controllers/admin/settings/about_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::AboutController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_about_path + end +end diff --git a/app/controllers/admin/settings/appearance_controller.rb b/app/controllers/admin/settings/appearance_controller.rb new file mode 100644 index 0000000000..39b2448d80 --- /dev/null +++ b/app/controllers/admin/settings/appearance_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::AppearanceController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_appearance_path + end +end diff --git a/app/controllers/admin/settings/branding_controller.rb b/app/controllers/admin/settings/branding_controller.rb new file mode 100644 index 0000000000..4a4d76f497 --- /dev/null +++ b/app/controllers/admin/settings/branding_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::BrandingController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_branding_path + end +end diff --git a/app/controllers/admin/settings/content_retention_controller.rb b/app/controllers/admin/settings/content_retention_controller.rb new file mode 100644 index 0000000000..b88336a2c4 --- /dev/null +++ b/app/controllers/admin/settings/content_retention_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::ContentRetentionController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_content_retention_path + end +end diff --git a/app/controllers/admin/settings/discovery_controller.rb b/app/controllers/admin/settings/discovery_controller.rb new file mode 100644 index 0000000000..be4b57f79a --- /dev/null +++ b/app/controllers/admin/settings/discovery_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::DiscoveryController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_discovery_path + end +end diff --git a/app/controllers/admin/settings/registrations_controller.rb b/app/controllers/admin/settings/registrations_controller.rb new file mode 100644 index 0000000000..b4a74349c0 --- /dev/null +++ b/app/controllers/admin/settings/registrations_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::RegistrationsController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_registrations_path + end +end diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index dc1c79b7fd..338a3638c4 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -2,7 +2,7 @@ module Admin class SettingsController < BaseController - def edit + def show authorize :settings, :show? @admin_settings = Form::AdminSettings.new @@ -15,14 +15,18 @@ module Admin if @admin_settings.save flash[:notice] = I18n.t('generic.changes_saved_msg') - redirect_to edit_admin_settings_path + redirect_to after_update_redirect_path else - render :edit + render :show end end private + def after_update_redirect_path + raise NotImplementedError + end + def settings_params params.require(:form_admin_settings).permit(*Form::AdminSettings::KEYS) end diff --git a/app/controllers/admin/site_uploads_controller.rb b/app/controllers/admin/site_uploads_controller.rb index cacecedb0a..a5d2cf41cf 100644 --- a/app/controllers/admin/site_uploads_controller.rb +++ b/app/controllers/admin/site_uploads_controller.rb @@ -9,7 +9,7 @@ module Admin @site_upload.destroy! - redirect_to edit_admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg') + redirect_to admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg') end private diff --git a/app/helpers/admin/settings_helper.rb b/app/helpers/admin/settings_helper.rb index baf14ab257..a133b4e7d9 100644 --- a/app/helpers/admin/settings_helper.rb +++ b/app/helpers/admin/settings_helper.rb @@ -1,11 +1,4 @@ # frozen_string_literal: true module Admin::SettingsHelper - def site_upload_delete_hint(hint, var) - upload = SiteUpload.find_by(var: var.to_s) - return hint unless upload - - link = link_to t('admin.site_uploads.delete'), admin_site_upload_path(upload), data: { method: :delete } - safe_join([hint, link], '
    '.html_safe) - end end diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 1c5494cde8..affe1c79c2 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -188,21 +188,70 @@ $content-width: 840px; padding-top: 30px; } - &-heading { - display: flex; + &__heading { padding-bottom: 36px; border-bottom: 1px solid lighten($ui-base-color, 8%); - margin: -15px -15px 40px 0; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; + margin-bottom: 40px; - & > * { - margin-top: 15px; - margin-right: 15px; + &__row { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + margin: -15px -15px 0 0; + + & > * { + margin-top: 15px; + margin-right: 15px; + } } - &-actions { + &__tabs { + margin-top: 30px; + margin-bottom: -31px; + + & > div { + display: flex; + gap: 10px; + } + + a { + font-size: 14px; + display: inline-flex; + align-items: center; + padding: 7px 15px; + border-radius: 4px; + color: $darker-text-color; + text-decoration: none; + position: relative; + font-weight: 500; + gap: 5px; + white-space: nowrap; + + &.selected { + font-weight: 700; + color: $primary-text-color; + + &::after { + content: ""; + display: block; + width: 100%; + border-bottom: 1px solid $ui-highlight-color; + position: absolute; + bottom: -5px; + left: 0; + } + } + + &:hover, + &:focus, + &:active { + background: lighten($ui-base-color, 4%); + } + } + } + + &__actions { display: inline-flex; & > :not(:first-child) { @@ -228,11 +277,7 @@ $content-width: 840px; color: $secondary-text-color; font-size: 24px; line-height: 36px; - font-weight: 400; - - @media screen and (max-width: $no-columns-breakpoint) { - font-weight: 700; - } + font-weight: 700; } h3 { @@ -437,6 +482,11 @@ body, } } + & > div { + display: flex; + gap: 5px; + } + strong { font-weight: 500; text-transform: uppercase; @@ -1143,7 +1193,7 @@ a.name-tag, path:first-child { fill: rgba($highlight-text-color, 0.25) !important; - fill-opacity: 1 !important; + fill-opacity: 100% !important; } path:last-child { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 587eba6633..5d0ff85361 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -29,6 +29,11 @@ background: transparent; padding: 0; cursor: pointer; + text-decoration: none; + + &--destructive { + color: $error-value-color; + } &:hover, &:active { diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 69a0b22d6e..25c9c9fe55 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -254,7 +254,7 @@ code { & > label { font-family: inherit; - font-size: 16px; + font-size: 14px; color: $primary-text-color; display: block; font-weight: 500; @@ -291,6 +291,20 @@ code { .input:last-child { margin-bottom: 0; } + + &__thumbnail { + display: block; + margin: 0; + margin-bottom: 10px; + max-width: 100%; + height: auto; + border-radius: 4px; + background: url("images/void.png"); + + &:last-child { + margin-bottom: 0; + } + } } .fields-row { diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index b6bb3d7951..957a32b7c9 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -8,7 +8,6 @@ class Form::AdminSettings site_contact_email site_title site_short_description - site_description site_extended_description site_terms registrations_mode @@ -53,45 +52,55 @@ class Form::AdminSettings attr_accessor(*KEYS) - validates :site_short_description, :site_description, html: { wrap_with: :p } - validates :site_extended_description, :site_terms, :closed_registrations_message, html: true - validates :registrations_mode, inclusion: { in: %w(open approved none) } - validates :site_contact_email, :site_contact_username, presence: true - validates :site_contact_username, existing_username: true - validates :bootstrap_timeline_accounts, existing_username: { multiple: true } - validates :show_domain_blocks, inclusion: { in: %w(disabled users all) } - validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) } - validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true + validates :registrations_mode, inclusion: { in: %w(open approved none) }, if: -> { defined?(@registrations_mode) } + validates :site_contact_email, :site_contact_username, presence: true, if: -> { defined?(@site_contact_username) || defined?(@site_contact_email) } + validates :site_contact_username, existing_username: true, if: -> { defined?(@site_contact_username) } + validates :bootstrap_timeline_accounts, existing_username: { multiple: true }, if: -> { defined?(@bootstrap_timeline_accounts) } + validates :show_domain_blocks, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks) } + validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks_rationale) } + validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true, if: -> { defined?(@media_cache_retention_period) || defined?(@content_cache_retention_period) || defined?(@backups_retention_period) } + validates :site_short_description, length: { maximum: 200 }, if: -> { defined?(@site_short_description) } - def initialize(_attributes = {}) - super - initialize_attributes + KEYS.each do |key| + define_method(key) do + return instance_variable_get("@#{key}") if instance_variable_defined?("@#{key}") + + stored_value = begin + if UPLOAD_KEYS.include?(key) + SiteUpload.where(var: key).first_or_initialize(var: key) + else + Setting.public_send(key) + end + end + + instance_variable_set("@#{key}", stored_value) + end + end + + UPLOAD_KEYS.each do |key| + define_method("#{key}=") do |file| + value = public_send(key) + value.file = file + end end def save return false unless valid? KEYS.each do |key| - value = instance_variable_get("@#{key}") + next unless instance_variable_defined?("@#{key}") - if UPLOAD_KEYS.include?(key) && !value.nil? - upload = SiteUpload.where(var: key).first_or_initialize(var: key) - upload.update(file: value) + if UPLOAD_KEYS.include?(key) + public_send(key).save else setting = Setting.where(var: key).first_or_initialize(var: key) - setting.update(value: typecast_value(key, value)) + setting.update(value: typecast_value(key, instance_variable_get("@#{key}"))) end end end private - def initialize_attributes - KEYS.each do |key| - instance_variable_set("@#{key}", Setting.public_send(key)) if instance_variable_get("@#{key}").nil? - end - end - def typecast_value(key, value) if BOOLEAN_KEYS.include?(key) value == '1' diff --git a/app/serializers/rest/extended_description_serializer.rb b/app/serializers/rest/extended_description_serializer.rb index 0c36490333..c0fa3450d0 100644 --- a/app/serializers/rest/extended_description_serializer.rb +++ b/app/serializers/rest/extended_description_serializer.rb @@ -8,6 +8,16 @@ class REST::ExtendedDescriptionSerializer < ActiveModel::Serializer end def content - object.text + if object.text.present? + markdown.render(object.text) + else + '' + end + end + + private + + def markdown + @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML) end end diff --git a/app/views/admin/settings/about/show.html.haml b/app/views/admin/settings/about/show.html.haml new file mode 100644 index 0000000000..366d213f62 --- /dev/null +++ b/app/views/admin/settings/about/show.html.haml @@ -0,0 +1,33 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.about.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_about_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.about.preamble') + + .fields-group + = f.input :site_extended_description, wrapper: :with_block_label, as: :text, input_html: { rows: 8 } + + %p.hint + = t 'admin.settings.about.rules_hint' + = link_to t('admin.settings.about.manage_rules'), admin_rules_path + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :show_domain_blocks, wrapper: :with_label, collection: %i(disabled users all), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' + .fields-row__column.fields-row__column-6.fields-group + = f.input :show_domain_blocks_rationale, wrapper: :with_label, collection: %i(disabled users all), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' + + .fields-group + = f.input :site_terms, wrapper: :with_block_label, as: :text, input_html: { rows: 8 } + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/appearance/show.html.haml b/app/views/admin/settings/appearance/show.html.haml new file mode 100644 index 0000000000..d321c4b04b --- /dev/null +++ b/app/views/admin/settings/appearance/show.html.haml @@ -0,0 +1,34 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.appearance.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_appearance_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.appearance.preamble') + + .fields-group + = f.input :theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false + + .fields-group + = f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 } + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :mascot, as: :file, wrapper: :with_block_label + + .fields-row__column.fields-row__column-6.fields-group + - if @admin_settings.mascot.persisted? + = image_tag @admin_settings.mascot.file.url, class: 'fields-group__thumbnail' + = link_to admin_site_upload_path(@admin_settings.mascot), data: { method: :delete }, class: 'link-button link-button--destructive' do + = fa_icon 'trash fw' + = t('admin.site_uploads.delete') + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/branding/show.html.haml b/app/views/admin/settings/branding/show.html.haml new file mode 100644 index 0000000000..74a6fadf98 --- /dev/null +++ b/app/views/admin/settings/branding/show.html.haml @@ -0,0 +1,39 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.branding.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_branding_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.branding.preamble') + + .fields-group + = f.input :site_title, wrapper: :with_label + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :site_contact_username, wrapper: :with_label + .fields-row__column.fields-row__column-6.fields-group + = f.input :site_contact_email, wrapper: :with_label + + .fields-group + = f.input :site_short_description, wrapper: :with_block_label, as: :text, input_html: { rows: 2, maxlength: 200 } + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :thumbnail, as: :file, wrapper: :with_block_label + .fields-row__column.fields-row__column-6.fields-group + - if @admin_settings.thumbnail.persisted? + = image_tag @admin_settings.thumbnail.file.url(:'@1x'), class: 'fields-group__thumbnail' + = link_to admin_site_upload_path(@admin_settings.thumbnail), data: { method: :delete }, class: 'link-button link-button--destructive' do + = fa_icon 'trash fw' + = t('admin.site_uploads.delete') + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/content_retention/show.html.haml b/app/views/admin/settings/content_retention/show.html.haml new file mode 100644 index 0000000000..36856127f2 --- /dev/null +++ b/app/views/admin/settings/content_retention/show.html.haml @@ -0,0 +1,22 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.content_retention.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_content_retention_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.content_retention.preamble') + + .fields-group + = f.input :media_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + = f.input :content_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + = f.input :backups_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/discovery/show.html.haml b/app/views/admin/settings/discovery/show.html.haml new file mode 100644 index 0000000000..e63c853fb8 --- /dev/null +++ b/app/views/admin/settings/discovery/show.html.haml @@ -0,0 +1,40 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.discovery.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_discovery_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.discovery.preamble') + + %h4= t('admin.settings.discovery.trends') + + .fields-group + = f.input :trends, as: :boolean, wrapper: :with_label + + .fields-group + = f.input :trendable_by_default, as: :boolean, wrapper: :with_label + + %h4= t('admin.settings.discovery.public_timelines') + + .fields-group + = f.input :timeline_preview, as: :boolean, wrapper: :with_label + + %h4= t('admin.settings.discovery.follow_recommendations') + + .fields-group + = f.input :bootstrap_timeline_accounts, wrapper: :with_block_label + + %h4= t('admin.settings.discovery.profile_directory') + + .fields-group + = f.input :profile_directory, as: :boolean, wrapper: :with_label + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml deleted file mode 100644 index 15b1a2498c..0000000000 --- a/app/views/admin/settings/edit.html.haml +++ /dev/null @@ -1,102 +0,0 @@ -- content_for :header_tags do - = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' - -- content_for :page_title do - = t('admin.settings.title') - - - content_for :heading_actions do - = button_tag t('generic.save_changes'), class: 'button', form: 'edit_admin' - -= simple_form_for @admin_settings, url: admin_settings_path, html: { method: :patch, id: 'edit_admin' } do |f| - = render 'shared/error_messages', object: @admin_settings - - .fields-group - = f.input :site_title, wrapper: :with_label, label: t('admin.settings.site_title') - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :theme, collection: Themes.instance.names, label: t('simple_form.labels.defaults.setting_theme'), label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false - .fields-row__column.fields-row__column-6.fields-group - = f.input :registrations_mode, collection: %w(open approved none), wrapper: :with_label, label: t('admin.settings.registrations_mode.title'), include_blank: false, label_method: lambda { |mode| I18n.t("admin.settings.registrations_mode.modes.#{mode}") } - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :site_contact_username, wrapper: :with_label, label: t('admin.settings.contact_information.username') - .fields-row__column.fields-row__column-6.fields-group - = f.input :site_contact_email, wrapper: :with_label, label: t('admin.settings.contact_information.email') - - .fields-group - = f.input :site_short_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_short_description.title'), hint: t('admin.settings.site_short_description.desc_html'), input_html: { rows: 2 } - - .fields-group - = f.input :site_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description.title'), hint: t('admin.settings.site_description.desc_html'), input_html: { rows: 2 } - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :thumbnail, as: :file, wrapper: :with_block_label, label: t('admin.settings.thumbnail.title'), hint: site_upload_delete_hint(t('admin.settings.thumbnail.desc_html'), :thumbnail) - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :mascot, as: :file, wrapper: :with_block_label, label: t('admin.settings.mascot.title'), hint: site_upload_delete_hint(t('admin.settings.mascot.desc_html'), :mascot) - - %hr.spacer/ - - .fields-group - = f.input :require_invite_text, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.require_invite_text.title'), hint: t('admin.settings.registrations.require_invite_text.desc_html'), disabled: !approved_registrations? - - %hr.spacer/ - - .fields-group - = f.input :bootstrap_timeline_accounts, wrapper: :with_block_label, label: t('admin.settings.bootstrap_timeline_accounts.title'), hint: t('admin.settings.bootstrap_timeline_accounts.desc_html') - - %hr.spacer/ - - - unless whitelist_mode? - .fields-group - = f.input :timeline_preview, as: :boolean, wrapper: :with_label, label: t('admin.settings.timeline_preview.title'), hint: t('admin.settings.timeline_preview.desc_html') - - - unless whitelist_mode? - .fields-group - = f.input :activity_api_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.activity_api_enabled.title'), hint: t('admin.settings.activity_api_enabled.desc_html'), recommended: true - - .fields-group - = f.input :peers_api_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.peers_api_enabled.title'), hint: t('admin.settings.peers_api_enabled.desc_html'), recommended: true - - .fields-group - = f.input :preview_sensitive_media, as: :boolean, wrapper: :with_label, label: t('admin.settings.preview_sensitive_media.title'), hint: t('admin.settings.preview_sensitive_media.desc_html') - - .fields-group - = f.input :profile_directory, as: :boolean, wrapper: :with_label, label: t('admin.settings.profile_directory.title'), hint: t('admin.settings.profile_directory.desc_html') - - .fields-group - = f.input :trends, as: :boolean, wrapper: :with_label, label: t('admin.settings.trends.title'), hint: t('admin.settings.trends.desc_html') - - .fields-group - = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html'), recommended: :not_recommended - - .fields-group - = f.input :noindex, as: :boolean, wrapper: :with_label, label: t('admin.settings.default_noindex.title'), hint: t('admin.settings.default_noindex.desc_html') - - %hr.spacer/ - - .fields-row - .fields-row__column.fields-row__column-6.fields-group - = f.input :show_domain_blocks, wrapper: :with_label, collection: %i(disabled users all), label: t('admin.settings.domain_blocks.title'), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' - .fields-row__column.fields-row__column-6.fields-group - = f.input :show_domain_blocks_rationale, wrapper: :with_label, collection: %i(disabled users all), label: t('admin.settings.domain_blocks_rationale.title'), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' - - .fields-group - = f.input :site_extended_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description_extended.title'), hint: t('admin.settings.site_description_extended.desc_html'), input_html: { rows: 8 } unless whitelist_mode? - = f.input :closed_registrations_message, as: :text, wrapper: :with_block_label, label: t('admin.settings.registrations.closed_message.title'), hint: t('admin.settings.registrations.closed_message.desc_html'), input_html: { rows: 8 } - = f.input :site_terms, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_terms.title'), hint: t('admin.settings.site_terms.desc_html'), input_html: { rows: 8 } - = f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 }, label: t('admin.settings.custom_css.title'), hint: t('admin.settings.custom_css.desc_html') - - %hr.spacer/ - - .fields-group - = f.input :media_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } - = f.input :content_cache_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } - = f.input :backups_retention_period, wrapper: :with_block_label, input_html: { pattern: '[0-9]+' } - - .actions - = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/registrations/show.html.haml b/app/views/admin/settings/registrations/show.html.haml new file mode 100644 index 0000000000..0129332d7b --- /dev/null +++ b/app/views/admin/settings/registrations/show.html.haml @@ -0,0 +1,27 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('admin.settings.registrations.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_branding_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.registrations.preamble') + + .fields-row + .fields-row__column.fields-row__column-6.fields-group + = f.input :registrations_mode, collection: %w(open approved none), wrapper: :with_label, include_blank: false, label_method: lambda { |mode| I18n.t("admin.settings.registrations_mode.modes.#{mode}") } + + .fields-row__column.fields-row__column-6.fields-group + = f.input :require_invite_text, as: :boolean, wrapper: :with_label, disabled: !approved_registrations? + + .fields-group + = f.input :closed_registrations_message, as: :text, wrapper: :with_block_label, input_html: { rows: 2 } + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/shared/_links.html.haml b/app/views/admin/settings/shared/_links.html.haml new file mode 100644 index 0000000000..1294c26ce1 --- /dev/null +++ b/app/views/admin/settings/shared/_links.html.haml @@ -0,0 +1,8 @@ +.content__heading__tabs + = render_navigation renderer: :links do |primary| + - primary.item :branding, safe_join([fa_icon('pencil fw'), t('admin.settings.branding.title')]), admin_settings_branding_path + - primary.item :about, safe_join([fa_icon('file-text fw'), t('admin.settings.about.title')]), admin_settings_about_path + - primary.item :registrations, safe_join([fa_icon('users fw'), t('admin.settings.registrations.title')]), admin_settings_registrations_path + - primary.item :discovery, safe_join([fa_icon('search fw'), t('admin.settings.discovery.title')]), admin_settings_discovery_path + - primary.item :content_retention, safe_join([fa_icon('history fw'), t('admin.settings.content_retention.title')]), admin_settings_content_retention_path + - primary.item :appearance, safe_join([fa_icon('desktop fw'), t('admin.settings.appearance.title')]), admin_settings_appearance_path diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index e577b98036..59021ad887 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -22,15 +22,16 @@ .content-wrapper .content - .content-heading + .content__heading - if content_for?(:heading) = yield :heading - else - %h2= yield :page_title + .content__heading__row + %h2= yield :page_title - - if :heading_actions - .content-heading-actions - = yield :heading_actions + - if content_for?(:heading_actions) + .content__heading__actions + = yield :heading_actions = render 'application/flashes' diff --git a/config/locales/en.yml b/config/locales/en.yml index 412178ca39..70850d478d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -667,79 +667,40 @@ en: empty: No server rules have been defined yet. title: Server rules settings: - activity_api_enabled: - desc_html: Counts of locally published posts, active users, and new registrations in weekly buckets - title: Publish aggregate statistics about user activity in the API - bootstrap_timeline_accounts: - desc_html: Separate multiple usernames by comma. These accounts will be guaranteed to be shown in follow recommendations - title: Recommend these accounts to new users - contact_information: - email: Business e-mail - username: Contact username - custom_css: - desc_html: Modify the look with CSS loaded on every page - title: Custom CSS - default_noindex: - desc_html: Affects all users who have not changed this setting themselves - title: Opt users out of search engine indexing by default + about: + manage_rules: Manage server rules + preamble: Provide in-depth information about how the server is operated, moderated, funded. + rules_hint: There is a dedicated area for rules that your users are expected to adhere to. + title: About + appearance: + preamble: Customize Mastodon's web interface. + title: Appearance + branding: + preamble: Your server's branding differentiates it from other servers in the network. This information may be displayed across a variety of environments, such as Mastodon's web interface, native applications, in link previews on other websites and within messaging apps, and so on. For this reason, it is best to keep this information clear, short and concise. + title: Branding + content_retention: + preamble: Control how user-generated content is stored in Mastodon. + title: Content retention + discovery: + follow_recommendations: Follow recommendations + preamble: Surfacing interesting content is instrumental in onboarding new users who may not know anyone Mastodon. Control how various discovery features work on your server. + profile_directory: Profile directory + public_timelines: Public timelines + title: Discovery + trends: Trends domain_blocks: all: To everyone disabled: To no one - title: Show domain blocks users: To logged-in local users - domain_blocks_rationale: - title: Show rationale - mascot: - desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot - title: Mascot image - peers_api_enabled: - desc_html: Domain names this server has encountered in the fediverse - title: Publish list of discovered servers in the API - preview_sensitive_media: - desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive - title: Show sensitive media in OpenGraph previews - profile_directory: - desc_html: Allow users to be discoverable - title: Enable profile directory registrations: - closed_message: - desc_html: Displayed on frontpage when registrations are closed. You can use HTML tags - title: Closed registration message - require_invite_text: - desc_html: When registrations require manual approval, make the “Why do you want to join?” text input mandatory rather than optional - title: Require new users to enter a reason to join + preamble: Control who can create an account on your server. + title: Registrations registrations_mode: modes: approved: Approval required for sign up none: Nobody can sign up open: Anyone can sign up - title: Registrations mode - site_description: - desc_html: Introductory paragraph on the API. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a> and <em>. - title: Server description - site_description_extended: - desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML tags - title: Custom extended information - site_short_description: - desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. - title: Short server description - site_terms: - desc_html: You can write your own privacy policy. You can use HTML tags - title: Custom privacy policy - site_title: Server name - thumbnail: - desc_html: Used for previews via OpenGraph and API. 1200x630px recommended - title: Server thumbnail - timeline_preview: - desc_html: Display link to public timeline on landing page and allow API access to the public timeline without authentication - title: Allow unauthenticated access to public timeline - title: Site settings - trendable_by_default: - desc_html: Specific trending content can still be explicitly disallowed - title: Allow trends without prior review - trends: - desc_html: Publicly display previously reviewed content that is currently trending - title: Trends + title: Server Settings site_uploads: delete: Delete uploaded file destroyed_msg: Site upload successfully deleted! diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index db5b45e410..64281d7b74 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -75,8 +75,25 @@ en: warn: Hide the filtered content behind a warning mentioning the filter's title form_admin_settings: backups_retention_period: Keep generated user archives for the specified number of days. + bootstrap_timeline_accounts: These accounts will be pinned to the top of new users' follow recommendations. + closed_registrations_message: Displayed when sign-ups are closed content_cache_retention_period: Posts from other servers will be deleted after the specified number of days when set to a positive value. This may be irreversible. + custom_css: You can apply custom styles on the web version of Mastodon. + mascot: Overrides the illustration in the advanced web interface. media_cache_retention_period: Downloaded media files will be deleted after the specified number of days when set to a positive value, and re-downloaded on demand. + profile_directory: The profile directory lists all users who have opted-in to be discoverable. + require_invite_text: When sign-ups require manual approval, make the “Why do you want to join?” text input mandatory rather than optional + site_contact_email: How people can reach you for legal or support inquiries. + site_contact_username: How people can reach you on Mastodon. + site_extended_description: Any additional information that may be useful to visitors and your users. Can be structured with Markdown syntax. + site_short_description: A short description to help uniquely identify your server. Who is running it, who is it for? + site_terms: Use your own privacy policy or leave blank to use the default. Can be structured with Markdown syntax. + site_title: How people may refer to your server besides its domain name. + theme: Theme that logged out visitors and new users see. + thumbnail: A roughly 2:1 image displayed alongside your server information. + timeline_preview: Logged out visitors will be able to browse the most recent public posts available on the server. + trendable_by_default: Skip manual review of trending content. Individual items can still be removed from trends after the fact. + trends: Trends show which posts, hashtags and news stories are gaining traction on your server. form_challenge: current_password: You are entering a secure area imports: @@ -213,8 +230,28 @@ en: warn: Hide with a warning form_admin_settings: backups_retention_period: User archive retention period + bootstrap_timeline_accounts: Always recommend these accounts to new users + closed_registrations_message: Custom message when sign-ups are not available content_cache_retention_period: Content cache retention period + custom_css: Custom CSS + mascot: Custom mascot (legacy) media_cache_retention_period: Media cache retention period + profile_directory: Enable profile directory + registrations_mode: Who can sign-up + require_invite_text: Require a reason to join + show_domain_blocks: Show domain blocks + show_domain_blocks_rationale: Show why domains were blocked + site_contact_email: Contact e-mail + site_contact_username: Contact username + site_extended_description: Extended description + site_short_description: Server description + site_terms: Privacy Policy + site_title: Server name + theme: Default theme + thumbnail: Server thumbnail + timeline_preview: Allow unauthenticated access to public timelines + trendable_by_default: Allow trends without prior review + trends: Enable trends interactions: must_be_follower: Block notifications from non-followers must_be_following: Block notifications from people you don't follow diff --git a/config/navigation.rb b/config/navigation.rb index 706de0471b..e901fb9323 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -52,7 +52,7 @@ SimpleNavigation::Configuration.run do |navigation| n.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), nil, if: -> { current_user.can?(:view_dashboard, :manage_settings, :manage_rules, :manage_announcements, :manage_custom_emojis, :manage_webhooks, :manage_federation) } do |s| s.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_path, if: -> { current_user.can?(:view_dashboard) } - s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_path, if: -> { current_user.can?(:manage_settings) }, highlights_on: %r{/admin/settings} + s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), admin_settings_path, if: -> { current_user.can?(:manage_settings) }, highlights_on: %r{/admin/settings} s.item :rules, safe_join([fa_icon('gavel fw'), t('admin.rules.title')]), admin_rules_path, highlights_on: %r{/admin/rules}, if: -> { current_user.can?(:manage_rules) } s.item :roles, safe_join([fa_icon('vcard fw'), t('admin.roles.title')]), admin_roles_path, highlights_on: %r{/admin/roles}, if: -> { current_user.can?(:manage_roles) } s.item :announcements, safe_join([fa_icon('bullhorn fw'), t('admin.announcements.title')]), admin_announcements_path, highlights_on: %r{/admin/announcements}, if: -> { current_user.can?(:manage_announcements) } diff --git a/config/routes.rb b/config/routes.rb index 1ed585f196..b44479e77c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -241,7 +241,18 @@ Rails.application.routes.draw do end end - resource :settings, only: [:edit, :update] + get '/settings', to: redirect('/admin/settings/branding') + get '/settings/edit', to: redirect('/admin/settings/branding') + + namespace :settings do + resource :branding, only: [:show, :update], controller: 'branding' + resource :registrations, only: [:show, :update], controller: 'registrations' + resource :content_retention, only: [:show, :update], controller: 'content_retention' + resource :about, only: [:show, :update], controller: 'about' + resource :appearance, only: [:show, :update], controller: 'appearance' + resource :discovery, only: [:show, :update], controller: 'discovery' + end + resources :site_uploads, only: [:destroy] resources :invites, only: [:index, :create, :destroy] do diff --git a/spec/controllers/admin/settings/branding_controller_spec.rb b/spec/controllers/admin/settings/branding_controller_spec.rb new file mode 100644 index 0000000000..ee1c441bc5 --- /dev/null +++ b/spec/controllers/admin/settings/branding_controller_spec.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Admin::Settings::BrandingController, type: :controller do + render_views + + describe 'When signed in as an admin' do + before do + sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user + end + + describe 'GET #show' do + it 'returns http success' do + get :show + + expect(response).to have_http_status(200) + end + end + + describe 'PUT #update' do + before do + allow_any_instance_of(Form::AdminSettings).to receive(:valid?).and_return(true) + end + + around do |example| + before = Setting.site_short_description + Setting.site_short_description = nil + example.run + Setting.site_short_description = before + Setting.new_setting_key = nil + end + + it 'cannot create a setting value for a non-admin key' do + expect(Setting.new_setting_key).to be_blank + + patch :update, params: { form_admin_settings: { new_setting_key: 'New key value' } } + + expect(response).to redirect_to(admin_settings_branding_path) + expect(Setting.new_setting_key).to be_nil + end + + it 'creates a settings value that didnt exist before for eligible key' do + expect(Setting.site_short_description).to be_blank + + patch :update, params: { form_admin_settings: { site_short_description: 'New key value' } } + + expect(response).to redirect_to(admin_settings_branding_path) + expect(Setting.site_short_description).to eq 'New key value' + end + end + end +end diff --git a/spec/controllers/admin/settings_controller_spec.rb b/spec/controllers/admin/settings_controller_spec.rb deleted file mode 100644 index 46749f76c6..0000000000 --- a/spec/controllers/admin/settings_controller_spec.rb +++ /dev/null @@ -1,71 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Admin::SettingsController, type: :controller do - render_views - - describe 'When signed in as an admin' do - before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user - end - - describe 'GET #edit' do - it 'returns http success' do - get :edit - - expect(response).to have_http_status(200) - end - end - - describe 'PUT #update' do - before do - allow_any_instance_of(Form::AdminSettings).to receive(:valid?).and_return(true) - end - - describe 'for a record that doesnt exist' do - around do |example| - before = Setting.site_extended_description - Setting.site_extended_description = nil - example.run - Setting.site_extended_description = before - Setting.new_setting_key = nil - end - - it 'cannot create a setting value for a non-admin key' do - expect(Setting.new_setting_key).to be_blank - - patch :update, params: { form_admin_settings: { new_setting_key: 'New key value' } } - - expect(response).to redirect_to(edit_admin_settings_path) - expect(Setting.new_setting_key).to be_nil - end - - it 'creates a settings value that didnt exist before for eligible key' do - expect(Setting.site_extended_description).to be_blank - - patch :update, params: { form_admin_settings: { site_extended_description: 'New key value' } } - - expect(response).to redirect_to(edit_admin_settings_path) - expect(Setting.site_extended_description).to eq 'New key value' - end - end - - context do - around do |example| - site_title = Setting.site_title - example.run - Setting.site_title = site_title - end - - it 'updates a settings value' do - Setting.site_title = 'Original' - patch :update, params: { form_admin_settings: { site_title: 'New title' } } - - expect(response).to redirect_to(edit_admin_settings_path) - expect(Setting.site_title).to eq 'New title' - end - end - end - end -end From 1d34eff63f65dd0809af172cf3b1ed5e24c62eaf Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Sat, 22 Oct 2022 18:49:41 +0900 Subject: [PATCH 077/500] Add featured tag add/remove activity handler (#19408) --- app/lib/activitypub/activity/add.rb | 22 +++++++++++++++++++++- app/lib/activitypub/activity/remove.rb | 25 ++++++++++++++++++++++++- app/models/featured_tag.rb | 2 ++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/app/lib/activitypub/activity/add.rb b/app/lib/activitypub/activity/add.rb index 845eeaef79..9e2483983d 100644 --- a/app/lib/activitypub/activity/add.rb +++ b/app/lib/activitypub/activity/add.rb @@ -2,12 +2,32 @@ class ActivityPub::Activity::Add < ActivityPub::Activity def perform - return unless @json['target'].present? && value_or_id(@json['target']) == @account.featured_collection_url + return if @json['target'].blank? + case value_or_id(@json['target']) + when @account.featured_collection_url + case @object['type'] + when 'Hashtag' + add_featured_tags + else + add_featured + end + end + end + + private + + def add_featured status = status_from_object return unless !status.nil? && status.account_id == @account.id && !@account.pinned?(status) StatusPin.create!(account: @account, status: status) end + + def add_featured_tags + name = @object['name']&.delete_prefix('#') + + FeaturedTag.create!(account: @account, name: name) if name.present? + end end diff --git a/app/lib/activitypub/activity/remove.rb b/app/lib/activitypub/activity/remove.rb index f523ead9f6..f5cbef6757 100644 --- a/app/lib/activitypub/activity/remove.rb +++ b/app/lib/activitypub/activity/remove.rb @@ -2,8 +2,22 @@ class ActivityPub::Activity::Remove < ActivityPub::Activity def perform - return unless @json['target'].present? && value_or_id(@json['target']) == @account.featured_collection_url + return if @json['target'].blank? + case value_or_id(@json['target']) + when @account.featured_collection_url + case @object['type'] + when 'Hashtag' + remove_featured_tags + else + remove_featured + end + end + end + + private + + def remove_featured status = status_from_uri(object_uri) return unless !status.nil? && status.account_id == @account.id @@ -11,4 +25,13 @@ class ActivityPub::Activity::Remove < ActivityPub::Activity pin = StatusPin.find_by(account: @account, status: status) pin&.destroy! end + + def remove_featured_tags + name = @object['name']&.delete_prefix('#') + + return if name.blank? + + featured_tag = FeaturedTag.by_name(name).find_by(account: @account) + featured_tag&.destroy! + end end diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index b16c79ac79..4a8d7224a9 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -22,6 +22,8 @@ class FeaturedTag < ApplicationRecord before_create :set_tag before_create :reset_data + scope :by_name, ->(name) { joins(:tag).where(tag: { name: HashtagNormalizer.new.normalize(name) }) } + delegate :display_name, to: :tag attr_writer :name From 53e86747e49dea5e4314bc3fedef4d69ba8f338e Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Sat, 22 Oct 2022 21:30:59 +0900 Subject: [PATCH 078/500] Fix duplicate featured tags (#19403) * Fix duplicate featured tags * Add unique tag name validator * Fix error message --- app/models/featured_tag.rb | 1 + ..._featured_tags_on_account_id_and_tag_id.rb | 19 +++++++++++++++++++ db/schema.rb | 4 ++-- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index 4a8d7224a9..ec234a6fd9 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -60,5 +60,6 @@ class FeaturedTag < ApplicationRecord def validate_tag_name errors.add(:name, :blank) if @name.blank? errors.add(:name, :invalid) unless @name.match?(/\A(#{Tag::HASHTAG_NAME_RE})\z/i) + errors.add(:name, :taken) if FeaturedTag.by_name(@name).where(account_id: account_id).exists? end end diff --git a/db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb b/db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb new file mode 100644 index 0000000000..74d7673f7d --- /dev/null +++ b/db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb @@ -0,0 +1,19 @@ +class AddIndexFeaturedTagsOnAccountIdAndTagId < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def up + duplicates = FeaturedTag.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM featured_tags GROUP BY account_id, tag_id HAVING count(*) > 1').to_ary + + duplicates.each do |row| + FeaturedTag.where(id: row['ids'].split(',')[0...-1]).destroy_all + end + + add_index :featured_tags, [:account_id, :tag_id], unique: true, algorithm: :concurrently + remove_index :featured_tags, [:account_id], algorithm: :concurrently + end + + def down + add_index :featured_tags, [:account_id], algorithm: :concurrently + remove_index :featured_tags, [:account_id, :tag_id], unique: true, algorithm: :concurrently + end +end diff --git a/db/schema.rb b/db/schema.rb index 3972f777ad..ed00d9e742 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_10_12_181003) do +ActiveRecord::Schema.define(version: 2022_10_21_055441) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -442,7 +442,7 @@ ActiveRecord::Schema.define(version: 2022_10_12_181003) do t.datetime "last_status_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["account_id"], name: "index_featured_tags_on_account_id" + t.index ["account_id", "tag_id"], name: "index_featured_tags_on_account_id_and_tag_id", unique: true t.index ["tag_id"], name: "index_featured_tags_on_tag_id" end From 062b3c9090c6935d4bf754e7aeb37793a2aa7b68 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 22 Oct 2022 18:09:51 +0200 Subject: [PATCH 079/500] Change landing page to be /about instead of /explore when trends are disabled (#19414) --- app/javascript/mastodon/features/ui/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 0039918574..531747cae1 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -54,7 +54,7 @@ import { About, PrivacyPolicy, } from './util/async-components'; -import initialState, { me, owner, singleUserMode } from '../../initial_state'; +import initialState, { me, owner, singleUserMode, showTrends } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding'; import Header from './components/header'; @@ -163,8 +163,10 @@ class SwitchingColumnsArea extends React.PureComponent { } } else if (singleUserMode && owner && initialState?.accounts[owner]) { redirect = ; - } else { + } else if (showTrends) { redirect = ; + } else { + redirect = ; } return ( From 73a48318a19a207c63f6d03ecea8ce35b7e2364a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 18:30:20 +0200 Subject: [PATCH 080/500] Fix error when rendering limited account in web UI (#19413) --- app/javascript/mastodon/components/avatar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.js index 976d85cdba..dd3932ae6c 100644 --- a/app/javascript/mastodon/components/avatar.js +++ b/app/javascript/mastodon/components/avatar.js @@ -64,7 +64,7 @@ export default class Avatar extends React.PureComponent { onMouseLeave={this.handleMouseLeave} style={style} role='img' - aria-label={account.get('acct')} + aria-label={account?.get('acct')} /> ); } From 74ead7d10698c7f18ca22c07d2f04ff81f419097 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Sun, 23 Oct 2022 01:30:55 +0900 Subject: [PATCH 081/500] Change featured tag updates to add/remove activity (#19409) * Change featured tag updates to add/remove activity * Fix to check for the existence of feature tag * Rename service and worker * Merge AddHashtagSerializer with AddSerializer * Undo removal of sidekiq_options --- .../api/v1/featured_tags_controller.rb | 8 +++---- .../settings/featured_tags_controller.rb | 13 ++++++----- app/models/featured_tag.rb | 4 ++++ app/serializers/activitypub/add_serializer.rb | 23 +++++++++++++++++-- .../activitypub/hashtag_serializer.rb | 2 ++ .../activitypub/remove_serializer.rb | 23 +++++++++++++++++-- app/services/create_featured_tag_service.rb | 21 +++++++++++++++++ app/services/remove_featured_tag_service.rb | 18 +++++++++++++++ .../account_raw_distribution_worker.rb | 9 ++++++++ app/workers/remove_featured_tag_worker.rb | 11 +++++++++ 10 files changed, 117 insertions(+), 15 deletions(-) create mode 100644 app/services/create_featured_tag_service.rb create mode 100644 app/services/remove_featured_tag_service.rb create mode 100644 app/workers/activitypub/account_raw_distribution_worker.rb create mode 100644 app/workers/remove_featured_tag_worker.rb diff --git a/app/controllers/api/v1/featured_tags_controller.rb b/app/controllers/api/v1/featured_tags_controller.rb index a67db7040a..edb42a94ea 100644 --- a/app/controllers/api/v1/featured_tags_controller.rb +++ b/app/controllers/api/v1/featured_tags_controller.rb @@ -13,14 +13,12 @@ class Api::V1::FeaturedTagsController < Api::BaseController end def create - @featured_tag = current_account.featured_tags.create!(featured_tag_params) - ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) - render json: @featured_tag, serializer: REST::FeaturedTagSerializer + featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name]) + render json: featured_tag, serializer: REST::FeaturedTagSerializer end def destroy - @featured_tag.destroy! - ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) + RemoveFeaturedTagWorker.perform_async(current_account.id, @featured_tag.id) render_empty end diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index ae714e9125..cc6ec08438 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -10,10 +10,8 @@ class Settings::FeaturedTagsController < Settings::BaseController end def create - @featured_tag = current_account.featured_tags.new(featured_tag_params) - - if @featured_tag.save - ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) + if !featured_tag_exists? + CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name]) redirect_to settings_featured_tags_path else set_featured_tags @@ -24,13 +22,16 @@ class Settings::FeaturedTagsController < Settings::BaseController end def destroy - @featured_tag.destroy! - ActivityPub::UpdateDistributionWorker.perform_in(3.minutes, current_account.id) + RemoveFeaturedTagWorker.perform_async(current_account.id, @featured_tag.id) redirect_to settings_featured_tags_path end private + def featured_tag_exists? + current_account.featured_tags.by_name(featured_tag_params[:name]).exists? + end + def set_featured_tag @featured_tag = current_account.featured_tags.find(params[:id]) end diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index ec234a6fd9..3f5cddce6f 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -30,6 +30,10 @@ class FeaturedTag < ApplicationRecord LIMIT = 10 + def sign? + true + end + def name tag_id.present? ? tag.name : @name end diff --git a/app/serializers/activitypub/add_serializer.rb b/app/serializers/activitypub/add_serializer.rb index 6f5aab17f9..436b05086f 100644 --- a/app/serializers/activitypub/add_serializer.rb +++ b/app/serializers/activitypub/add_serializer.rb @@ -1,10 +1,29 @@ # frozen_string_literal: true class ActivityPub::AddSerializer < ActivityPub::Serializer + class UriSerializer < ActiveModel::Serializer + include RoutingHelper + + def serializable_hash(*_args) + ActivityPub::TagManager.instance.uri_for(object) + end + end + + def self.serializer_for(model, options) + case model.class.name + when 'Status' + UriSerializer + when 'FeaturedTag' + ActivityPub::HashtagSerializer + else + super + end + end + include RoutingHelper attributes :type, :actor, :target - attribute :proper_object, key: :object + has_one :proper_object, key: :object def type 'Add' @@ -15,7 +34,7 @@ class ActivityPub::AddSerializer < ActivityPub::Serializer end def proper_object - ActivityPub::TagManager.instance.uri_for(object) + object end def target diff --git a/app/serializers/activitypub/hashtag_serializer.rb b/app/serializers/activitypub/hashtag_serializer.rb index 90929c57f9..2b24eb8cc1 100644 --- a/app/serializers/activitypub/hashtag_serializer.rb +++ b/app/serializers/activitypub/hashtag_serializer.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class ActivityPub::HashtagSerializer < ActivityPub::Serializer + context_extensions :hashtag + include RoutingHelper attributes :type, :href, :name diff --git a/app/serializers/activitypub/remove_serializer.rb b/app/serializers/activitypub/remove_serializer.rb index 7fefda59da..fb224f8a99 100644 --- a/app/serializers/activitypub/remove_serializer.rb +++ b/app/serializers/activitypub/remove_serializer.rb @@ -1,10 +1,29 @@ # frozen_string_literal: true class ActivityPub::RemoveSerializer < ActivityPub::Serializer + class UriSerializer < ActiveModel::Serializer + include RoutingHelper + + def serializable_hash(*_args) + ActivityPub::TagManager.instance.uri_for(object) + end + end + + def self.serializer_for(model, options) + case model.class.name + when 'Status' + UriSerializer + when 'FeaturedTag' + ActivityPub::HashtagSerializer + else + super + end + end + include RoutingHelper attributes :type, :actor, :target - attribute :proper_object, key: :object + has_one :proper_object, key: :object def type 'Remove' @@ -15,7 +34,7 @@ class ActivityPub::RemoveSerializer < ActivityPub::Serializer end def proper_object - ActivityPub::TagManager.instance.uri_for(object) + object end def target diff --git a/app/services/create_featured_tag_service.rb b/app/services/create_featured_tag_service.rb new file mode 100644 index 0000000000..c99d16113b --- /dev/null +++ b/app/services/create_featured_tag_service.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class CreateFeaturedTagService < BaseService + include Payloadable + + def call(account, name) + @account = account + + FeaturedTag.create!(account: account, name: name).tap do |featured_tag| + ActivityPub::AccountRawDistributionWorker.perform_async(build_json(featured_tag), account.id) if @account.local? + end + rescue ActiveRecord::RecordNotUnique + FeaturedTag.by_name(name).find_by!(account: account) + end + + private + + def build_json(featured_tag) + Oj.dump(serialize_payload(featured_tag, ActivityPub::AddSerializer, signer: @account)) + end +end diff --git a/app/services/remove_featured_tag_service.rb b/app/services/remove_featured_tag_service.rb new file mode 100644 index 0000000000..2aa70e8fc6 --- /dev/null +++ b/app/services/remove_featured_tag_service.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class RemoveFeaturedTagService < BaseService + include Payloadable + + def call(account, featured_tag) + @account = account + + featured_tag.destroy! + ActivityPub::AccountRawDistributionWorker.perform_async(build_json(featured_tag), account.id) if @account.local? + end + + private + + def build_json(featured_tag) + Oj.dump(serialize_payload(featured_tag, ActivityPub::RemoveSerializer, signer: @account)) + end +end diff --git a/app/workers/activitypub/account_raw_distribution_worker.rb b/app/workers/activitypub/account_raw_distribution_worker.rb new file mode 100644 index 0000000000..a84c7d2142 --- /dev/null +++ b/app/workers/activitypub/account_raw_distribution_worker.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class ActivityPub::AccountRawDistributionWorker < ActivityPub::RawDistributionWorker + protected + + def inboxes + @inboxes ||= AccountReachFinder.new(@account).inboxes + end +end diff --git a/app/workers/remove_featured_tag_worker.rb b/app/workers/remove_featured_tag_worker.rb new file mode 100644 index 0000000000..065ec79d81 --- /dev/null +++ b/app/workers/remove_featured_tag_worker.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class RemoveFeaturedTagWorker + include Sidekiq::Worker + + def perform(account_id, featured_tag_id) + RemoveFeaturedTagService.new.call(Account.find(account_id), FeaturedTag.find(featured_tag_id)) + rescue ActiveRecord::RecordNotFound + true + end +end From 45d3b324883c1e72ad5f9820d3c23f7f779f28db Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sun, 23 Oct 2022 06:14:58 +0900 Subject: [PATCH 082/500] Fix `Settings::FeaturedTagsController` (#19418) Regression from #19409 --- app/controllers/settings/featured_tags_controller.rb | 9 +++------ app/services/create_featured_tag_service.rb | 10 +++++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index cc6ec08438..b3db04a426 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -10,8 +10,9 @@ class Settings::FeaturedTagsController < Settings::BaseController end def create - if !featured_tag_exists? - CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name]) + @featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name], force: false) + + if @featured_tag.valid? redirect_to settings_featured_tags_path else set_featured_tags @@ -28,10 +29,6 @@ class Settings::FeaturedTagsController < Settings::BaseController private - def featured_tag_exists? - current_account.featured_tags.by_name(featured_tag_params[:name]).exists? - end - def set_featured_tag @featured_tag = current_account.featured_tags.find(params[:id]) end diff --git a/app/services/create_featured_tag_service.rb b/app/services/create_featured_tag_service.rb index c99d16113b..3cc59156db 100644 --- a/app/services/create_featured_tag_service.rb +++ b/app/services/create_featured_tag_service.rb @@ -3,14 +3,18 @@ class CreateFeaturedTagService < BaseService include Payloadable - def call(account, name) + def call(account, name, force: true) @account = account FeaturedTag.create!(account: account, name: name).tap do |featured_tag| ActivityPub::AccountRawDistributionWorker.perform_async(build_json(featured_tag), account.id) if @account.local? end - rescue ActiveRecord::RecordNotUnique - FeaturedTag.by_name(name).find_by!(account: account) + rescue ActiveRecord::RecordNotUnique, ActiveRecord::RecordInvalid => e + if force && e.is_a(ActiveRecord::RecordNotUnique) + FeaturedTag.by_name(name).find_by!(account: account) + else + account.featured_tags.new(name: name) + end end private From 56efa8d22f041ca87efdfb2e95e80d213e72dde9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 23:15:14 +0200 Subject: [PATCH 083/500] Fix reply not opening compose page on certain screen sizes in web UI (#19417) Fix ellipsis next to icons on navigation panel on some browsers --- app/javascript/mastodon/actions/compose.js | 4 +--- app/javascript/styles/mastodon/components.scss | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 0cfc1868ee..42d4ad8dff 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -79,10 +79,8 @@ const messages = defineMessages({ uploadErrorPoll: { id: 'upload_error.poll', defaultMessage: 'File upload not allowed with polls.' }, }); -const COMPOSE_PANEL_BREAKPOINT = 600 + (285 * 1) + (10 * 1); - export const ensureComposeIsVisible = (getState, routerHistory) => { - if (!getState().getIn(['compose', 'mounted']) && window.innerWidth < COMPOSE_PANEL_BREAKPOINT) { + if (!getState().getIn(['compose', 'mounted'])) { routerHistory.push('/publish'); } }; diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 5d0ff85361..107a4e5862 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -3176,7 +3176,6 @@ $ui-header-height: 55px; padding: 15px; text-decoration: none; overflow: hidden; - text-overflow: ellipsis; white-space: nowrap; &:hover, From a43a8237681187f6e56524aa3effcfc998a877de Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 23:18:32 +0200 Subject: [PATCH 084/500] Add error boundary around routes in web UI (#19412) * Add error boundary around routes in web UI * Update app/javascript/mastodon/features/ui/util/react_router_helpers.js Co-authored-by: Yamagishi Kazutoshi * Update app/javascript/mastodon/features/ui/util/react_router_helpers.js Co-authored-by: Yamagishi Kazutoshi * Update app/javascript/mastodon/features/ui/components/bundle_column_error.js Co-authored-by: Yamagishi Kazutoshi Co-authored-by: Yamagishi Kazutoshi --- .../ui/components/bundle_column_error.js | 157 +++++++++++++++--- app/javascript/mastodon/features/ui/index.js | 6 +- .../features/ui/util/react_router_helpers.js | 34 +++- .../styles/mastodon/components.scss | 53 +++++- 4 files changed, 219 insertions(+), 31 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error.js b/app/javascript/mastodon/features/ui/components/bundle_column_error.js index ab6d4aa441..dfe970ad0b 100644 --- a/app/javascript/mastodon/features/ui/components/bundle_column_error.js +++ b/app/javascript/mastodon/features/ui/components/bundle_column_error.js @@ -1,44 +1,155 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { defineMessages, injectIntl } from 'react-intl'; +import { injectIntl, FormattedMessage } from 'react-intl'; import Column from 'mastodon/components/column'; -import ColumnHeader from 'mastodon/components/column_header'; -import IconButton from 'mastodon/components/icon_button'; +import Button from 'mastodon/components/button'; import { Helmet } from 'react-helmet'; +import { Link } from 'react-router-dom'; +import classNames from 'classnames'; +import { autoPlayGif } from 'mastodon/initial_state'; -const messages = defineMessages({ - title: { id: 'bundle_column_error.title', defaultMessage: 'Network error' }, - body: { id: 'bundle_column_error.body', defaultMessage: 'Something went wrong while loading this component.' }, - retry: { id: 'bundle_column_error.retry', defaultMessage: 'Try again' }, -}); +class GIF extends React.PureComponent { + static propTypes = { + src: PropTypes.string.isRequired, + staticSrc: PropTypes.string.isRequired, + className: PropTypes.string, + animate: PropTypes.bool, + }; + + static defaultProps = { + animate: autoPlayGif, + }; + + state = { + hovering: false, + }; + + handleMouseEnter = () => { + const { animate } = this.props; + + if (!animate) { + this.setState({ hovering: true }); + } + } + + handleMouseLeave = () => { + const { animate } = this.props; + + if (!animate) { + this.setState({ hovering: false }); + } + } + + render () { + const { src, staticSrc, className, animate } = this.props; + const { hovering } = this.state; + + return ( + + ); + } + +} + +class CopyButton extends React.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 ( + + ); + } + +} + +export default @injectIntl class BundleColumnError extends React.PureComponent { static propTypes = { - onRetry: PropTypes.func.isRequired, + errorType: PropTypes.oneOf(['routing', 'network', 'error']), + onRetry: PropTypes.func, intl: PropTypes.object.isRequired, multiColumn: PropTypes.bool, - } + stacktrace: PropTypes.string, + }; + + static defaultProps = { + errorType: 'routing', + }; handleRetry = () => { - this.props.onRetry(); + const { onRetry } = this.props; + + if (onRetry) { + onRetry(); + } } render () { - const { multiColumn, intl: { formatMessage } } = this.props; + const { errorType, multiColumn, stacktrace } = this.props; - return ( - - + let title, body; + switch(errorType) { + case 'routing': + title = ; + body = ; + break; + case 'network': + title = ; + body = ; + break; + case 'error': + title = ; + body = ; + break; + } + + return ( +
    - - {formatMessage(messages.body)} + + +
    +

    {title}

    +

    {body}

    + +
    + {errorType === 'network' && } + {errorType === 'error' && } + +
    +
    @@ -49,5 +160,3 @@ class BundleColumnError extends React.PureComponent { } } - -export default injectIntl(BundleColumnError); diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 531747cae1..7cda5e106c 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -3,7 +3,7 @@ import React from 'react'; import { HotKeys } from 'react-hotkeys'; import { defineMessages, injectIntl } from 'react-intl'; import { connect } from 'react-redux'; -import { Redirect, withRouter } from 'react-router-dom'; +import { Redirect, Route, withRouter } from 'react-router-dom'; import PropTypes from 'prop-types'; import NotificationsContainer from './containers/notifications_container'; import LoadingBarContainer from './containers/loading_bar_container'; @@ -18,6 +18,7 @@ import { clearHeight } from '../../actions/height_cache'; import { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers'; import { WrappedSwitch, WrappedRoute } from './util/react_router_helpers'; +import BundleColumnError from './components/bundle_column_error'; import UploadArea from './components/upload_area'; import ColumnsAreaContainer from './containers/columns_area_container'; import PictureInPicture from 'mastodon/features/picture_in_picture'; @@ -39,7 +40,6 @@ import { HashtagTimeline, Notifications, FollowRequests, - GenericNotFound, FavouritedStatuses, BookmarkedStatuses, ListTimeline, @@ -219,7 +219,7 @@ class SwitchingColumnsArea extends React.PureComponent { - + ); diff --git a/app/javascript/mastodon/features/ui/util/react_router_helpers.js b/app/javascript/mastodon/features/ui/util/react_router_helpers.js index a65d79def6..2ee06c3ff6 100644 --- a/app/javascript/mastodon/features/ui/util/react_router_helpers.js +++ b/app/javascript/mastodon/features/ui/util/react_router_helpers.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Switch, Route } from 'react-router-dom'; - +import StackTrace from 'stacktrace-js'; import ColumnLoading from '../components/column_loading'; import BundleColumnError from '../components/bundle_column_error'; import BundleContainer from '../containers/bundle_container'; @@ -42,8 +42,38 @@ export class WrappedRoute extends React.Component { componentParams: {}, }; + static getDerivedStateFromError () { + return { + hasError: true, + }; + }; + + state = { + hasError: false, + stacktrace: '', + }; + + componentDidCatch (error) { + StackTrace.fromError(error).then(stackframes => { + this.setState({ stacktrace: error.toString() + '\n' + stackframes.map(frame => frame.toString()).join('\n') }); + }).catch(err => { + console.error(err); + }); + } + renderComponent = ({ match }) => { const { component, content, multiColumn, componentParams } = this.props; + const { hasError, stacktrace } = this.state; + + if (hasError) { + return ( + + ); + } return ( @@ -59,7 +89,7 @@ export class WrappedRoute extends React.Component { } renderError = (props) => { - return ; + return ; } render () { diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 107a4e5862..afe9f9da97 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -89,6 +89,15 @@ cursor: default; } + &.copyable { + transition: background 300ms linear; + } + + &.copied { + background: $valid-value-color; + transition: none; + } + &::-moz-focus-inner { border: 0; } @@ -2656,7 +2665,8 @@ $ui-header-height: 55px; .column-header, .column-back-button, - .scrollable { + .scrollable, + .error-column { border-radius: 0 !important; } } @@ -4292,7 +4302,6 @@ a.status-card.compact:hover { } .empty-column-indicator, -.error-column, .follow_requests-unlocked_explanation { color: $dark-text-color; background: $ui-base-color; @@ -4330,7 +4339,47 @@ a.status-card.compact:hover { } .error-column { + padding: 20px; + background: $ui-base-color; + border-radius: 4px; + display: flex; + flex: 1 1 auto; + align-items: center; + justify-content: center; flex-direction: column; + cursor: default; + + &__image { + max-width: 350px; + margin-top: -50px; + } + + &__message { + text-align: center; + color: $darker-text-color; + font-size: 15px; + line-height: 22px; + + h1 { + font-size: 28px; + line-height: 33px; + font-weight: 700; + margin-bottom: 15px; + color: $primary-text-color; + } + + p { + max-width: 48ch; + } + + &__actions { + margin-top: 30px; + display: flex; + gap: 10px; + align-items: center; + justify-content: center; + } + } } @keyframes heartbeat { From c2c14331b2c04293d8c3f94950027cf9633fd18a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 14:05:18 +0200 Subject: [PATCH 085/500] Fix PWA manifest using `/web` paths (#19421) --- app/javascript/mastodon/service_worker/entry.js | 15 +++------------ app/serializers/manifest_serializer.rb | 6 +++--- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js index e4c66cc000..4ec16d8e22 100644 --- a/app/javascript/mastodon/service_worker/entry.js +++ b/app/javascript/mastodon/service_worker/entry.js @@ -60,24 +60,15 @@ registerRoute( self.addEventListener('install', function(event) { event.waitUntil(Promise.all([openWebCache(), fetchRoot()]).then(([cache, root]) => cache.put('/', root))); }); + self.addEventListener('activate', function(event) { event.waitUntil(self.clients.claim()); }); + self.addEventListener('fetch', function(event) { const url = new URL(event.request.url); - if (url.pathname.startsWith('/web/')) { - const asyncResponse = fetchRoot(); - const asyncCache = openWebCache(); - - event.respondWith(asyncResponse.then( - response => { - const clonedResponse = response.clone(); - asyncCache.then(cache => cache.put('/', clonedResponse)).catch(); - return response; - }, - () => asyncCache.then(cache => cache.match('/')))); - } else if (url.pathname === '/auth/sign_out') { + if (url.pathname === '/auth/sign_out') { const asyncResponse = fetch(event.request); const asyncCache = openWebCache(); diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb index 6b52964804..fb7ab563ca 100644 --- a/app/serializers/manifest_serializer.rb +++ b/app/serializers/manifest_serializer.rb @@ -52,7 +52,7 @@ class ManifestSerializer < ActiveModel::Serializer end def start_url - '/web/home' + '/home' end def scope @@ -77,11 +77,11 @@ class ManifestSerializer < ActiveModel::Serializer [ { name: 'Compose new post', - url: '/web/publish', + url: '/publish', }, { name: 'Notifications', - url: '/web/notifications', + url: '/notifications', }, ] end From 1fd6460b02d2e73c94e7c6b1fa8fdc4d2ae36241 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 15:58:24 +0200 Subject: [PATCH 086/500] Change floating action button to be a button in header in web UI (#19422) - Fix theme color - Fix elephant being too big on error page on small screens - Remove "Follows and Followers" link from navigation panel --- .../features/ui/components/columns_area.js | 26 ++----------- .../mastodon/features/ui/components/header.js | 21 +++++++--- .../ui/components/navigation_panel.js | 1 - app/javascript/mastodon/features/ui/index.js | 2 +- .../styles/mastodon/components.scss | 39 +------------------ app/serializers/manifest_serializer.rb | 2 +- app/views/layouts/application.html.haml | 2 +- 7 files changed, 25 insertions(+), 68 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js index 9ee6fca43c..f4824f0457 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.js +++ b/app/javascript/mastodon/features/ui/components/columns_area.js @@ -1,9 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { Link } from 'react-router-dom'; import BundleContainer from '../containers/bundle_container'; import ColumnLoading from './column_loading'; import DrawerLoading from './drawer_loading'; @@ -21,10 +19,8 @@ import { ListTimeline, Directory, } from '../../ui/util/async-components'; -import Icon from 'mastodon/components/icon'; import ComposePanel from './compose_panel'; import NavigationPanel from './navigation_panel'; - import { supportsPassiveEvents } from 'detect-passive-events'; import { scrollRight } from '../../../scroll'; @@ -43,22 +39,13 @@ const componentMap = { 'DIRECTORY': Directory, }; -const messages = defineMessages({ - publish: { id: 'compose_form.publish', defaultMessage: 'Publish' }, -}); - -const shouldHideFAB = path => path.match(/^\/statuses\/|^\/@[^/]+\/\d+|^\/publish|^\/explore|^\/getting-started|^\/start/); - -export default @(component => injectIntl(component, { withRef: true })) -class ColumnsArea extends ImmutablePureComponent { +export default class ColumnsArea extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object.isRequired, - identity: PropTypes.object.isRequired, }; static propTypes = { - intl: PropTypes.object.isRequired, columns: ImmutablePropTypes.list.isRequired, isModalOpen: PropTypes.bool.isRequired, singleColumn: PropTypes.bool, @@ -143,17 +130,14 @@ class ColumnsArea extends ImmutablePureComponent { } renderError = (props) => { - return ; + return ; } render () { - const { columns, children, singleColumn, isModalOpen, intl } = this.props; + const { columns, children, singleColumn, isModalOpen } = this.props; const { renderComposePanel } = this.state; - const { signedIn } = this.context.identity; if (singleColumn) { - const floatingActionButton = (!signedIn || shouldHideFAB(this.context.router.history.location.pathname)) ? null : ; - return (
    @@ -162,7 +146,7 @@ class ColumnsArea extends ImmutablePureComponent {
    -
    +
    {children}
    @@ -172,8 +156,6 @@ class ColumnsArea extends ImmutablePureComponent {
    - - {floatingActionButton}
    ); } diff --git a/app/javascript/mastodon/features/ui/components/header.js b/app/javascript/mastodon/features/ui/components/header.js index c49f48cc98..a1c281315c 100644 --- a/app/javascript/mastodon/features/ui/components/header.js +++ b/app/javascript/mastodon/features/ui/components/header.js @@ -1,6 +1,6 @@ import React from 'react'; import Logo from 'mastodon/components/logo'; -import { Link } from 'react-router-dom'; +import { Link, withRouter } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; import { registrationsOpen, me } from 'mastodon/initial_state'; import Avatar from 'mastodon/components/avatar'; @@ -16,25 +16,36 @@ const Account = connect(state => ({ )); -export default class Header extends React.PureComponent { +export default @withRouter +class Header extends React.PureComponent { static contextTypes = { identity: PropTypes.object, }; + static propTypes = { + location: PropTypes.object, + }; + render () { const { signedIn } = this.context.identity; + const { location } = this.props; let content; if (signedIn) { - content = ; + content = ( + <> + {location.pathname !== '/publish' && } + + + ); } else { content = ( - + <> - + ); } diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 757ef54ae2..10678f7d8c 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -84,7 +84,6 @@ class NavigationPanel extends React.Component {
    - )} diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 7cda5e106c..298f2111de 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -145,7 +145,7 @@ class SwitchingColumnsArea extends React.PureComponent { setRef = c => { if (c) { - this.node = c.getWrappedInstance(); + this.node = c; } } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index afe9f9da97..cca29161a8 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2565,30 +2565,6 @@ $ui-header-height: 55px; } } -.floating-action-button { - position: fixed; - display: flex; - justify-content: center; - align-items: center; - width: 3.9375rem; - height: 3.9375rem; - bottom: 1.3125rem; - right: 1.3125rem; - background: darken($ui-highlight-color, 2%); - color: $white; - border-radius: 50%; - font-size: 21px; - line-height: 21px; - text-decoration: none; - box-shadow: 2px 3px 9px rgba($base-shadow-color, 0.4); - - &:hover, - &:focus, - &:active { - background: $ui-highlight-color; - } -} - @media screen and (min-width: $no-gap-breakpoint) { .tabs-bar { width: 100%; @@ -2603,7 +2579,6 @@ $ui-header-height: 55px; margin-bottom: 10px; } - .floating-action-button, .tabs-bar__link.optional { display: none; } @@ -2620,10 +2595,6 @@ $ui-header-height: 55px; @media screen and (max-width: $no-gap-breakpoint - 1px) { $sidebar-width: 285px; - .with-fab .scrollable .item-list:last-child { - padding-bottom: 5.25rem; - } - .columns-area__panels__main { width: calc(100% - $sidebar-width); } @@ -4350,6 +4321,7 @@ a.status-card.compact:hover { cursor: default; &__image { + width: 70%; max-width: 350px; margin-top: -50px; } @@ -7270,6 +7242,7 @@ noscript { &__buttons { display: flex; align-items: center; + gap: 8px; padding-top: 55px; overflow: hidden; @@ -7279,14 +7252,6 @@ noscript { box-sizing: content-box; padding: 2px; } - - & > .icon-button { - margin-right: 8px; - } - - .button { - margin: 0 8px; - } } &__name { diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb index fb7ab563ca..5604325be4 100644 --- a/app/serializers/manifest_serializer.rb +++ b/app/serializers/manifest_serializer.rb @@ -40,7 +40,7 @@ class ManifestSerializer < ActiveModel::Serializer end def theme_color - '#6364FF' + '#191b22' end def background_color diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 3e50de3fbf..52cdce7c6c 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -21,7 +21,7 @@ %link{ rel: 'mask-icon', href: asset_pack_path('media/images/logo-symbol-icon.svg'), color: '#6364FF' }/ %link{ rel: 'manifest', href: manifest_path(format: :json) }/ - %meta{ name: 'theme-color', content: '#6364FF' }/ + %meta{ name: 'theme-color', content: '#191b22' }/ %meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/ %meta{ name: 'apple-itunes-app', content: 'app-id=1571998974' }/ From 3124f946ee734f59bfd6a96609f1003d29413e8e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 17:46:35 +0200 Subject: [PATCH 087/500] New Crowdin updates (#19405) * New translations en.yml (Kazakh) * New translations en.json (English, United Kingdom) * New translations en.json (Estonian) * New translations en.yml (Estonian) * New translations en.json (Latvian) * New translations en.yml (Latvian) * New translations en.json (Hindi) * New translations en.yml (Hindi) * New translations en.json (Malay) * New translations en.yml (Malay) * New translations en.json (Telugu) * New translations en.yml (Telugu) * New translations en.yml (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.yml (Sanskrit) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Silesian) * New translations en.json (Silesian) * New translations en.yml (Taigi) * New translations en.json (Taigi) * New translations en.yml (Kabyle) * New translations en.json (Kabyle) * New translations en.json (Sanskrit) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Sardinian) * New translations en.json (Sardinian) * New translations en.yml (Corsican) * New translations en.json (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.json (Catalan) * New translations en.json (Polish) * New translations en.json (Slovenian) * New translations en.json (Ukrainian) * New translations en.json (Latvian) * New translations en.json (Portuguese) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Hungarian) * New translations en.json (Italian) * New translations en.json (Greek) * New translations en.json (Ukrainian) * New translations en.json (Spanish, Argentina) * New translations en.json (Ido) * New translations en.json (Chinese Traditional) * New translations en.json (Danish) * New translations en.json (Japanese) * New translations en.json (Japanese) * New translations en.json (Galician) * New translations en.yml (Hungarian) * New translations en.yml (Arabic) * New translations en.yml (Catalan) * New translations en.yml (Danish) * New translations en.yml (Greek) * New translations en.yml (French) * New translations en.yml (Basque) * New translations en.yml (Finnish) * New translations en.yml (Hebrew) * New translations simple_form.en.yml (Czech) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Spanish) * New translations en.yml (Turkish) * New translations en.yml (Albanian) * New translations en.yml (Ukrainian) * New translations en.yml (Ido) * New translations en.yml (Chinese Simplified) * New translations en.yml (Thai) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.yml (Georgian) * New translations en.yml (Armenian) * New translations en.yml (Swedish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Slovenian) * New translations en.yml (Norwegian) * New translations en.yml (Korean) * New translations en.yml (Lithuanian) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.yml (Polish) * New translations en.yml (Portuguese) * New translations en.yml (Russian) * New translations en.yml (Slovak) * New translations en.yml (Persian) * New translations en.yml (Welsh) * New translations en.yml (Esperanto) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Breton) * New translations en.yml (Sinhala) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Malay) * New translations en.yml (Asturian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Basque) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Vietnamese) * New translations en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations en.yml (Sardinian) * New translations simple_form.en.yml (Chinese Simplified) * New translations en.yml (Kabyle) * New translations en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Tatar) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Corsican) * New translations simple_form.en.yml (Sardinian) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Indonesian) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Croatian) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Catalan) * New translations en.yml (Greek) * New translations en.yml (Italian) * New translations en.yml (Polish) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Italian) * New translations en.yml (Czech) * New translations en.yml (Spanish) * New translations simple_form.en.yml (Czech) * New translations en.json (Spanish) * New translations en.yml (Catalan) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Italian) * New translations en.yml (Portuguese) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Portuguese) * New translations en.json (Czech) * New translations simple_form.en.yml (Czech) * New translations en.yml (Portuguese) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Latvian) * New translations en.yml (Korean) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.yml (Ukrainian) * New translations en.yml (Danish) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.yml (Chinese Traditional) * New translations en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Hungarian) * New translations devise.en.yml (Hungarian) * New translations doorkeeper.en.yml (Hungarian) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Spanish, Argentina) * New translations en.yml (Ukrainian) * New translations en.yml (Danish) * New translations en.yml (Hungarian) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (Hungarian) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Ukrainian) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations simple_form.en.yml (Thai) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Ido) * New translations simple_form.en.yml (Ido) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.json (Vietnamese) * New translations en.yml (Slovenian) * New translations simple_form.en.yml (Slovenian) * New translations en.json (Irish) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 10 +- app/javascript/mastodon/locales/ar.json | 10 +- app/javascript/mastodon/locales/ast.json | 10 +- app/javascript/mastodon/locales/bg.json | 10 +- app/javascript/mastodon/locales/bn.json | 10 +- app/javascript/mastodon/locales/br.json | 10 +- app/javascript/mastodon/locales/ca.json | 16 ++- app/javascript/mastodon/locales/ckb.json | 10 +- app/javascript/mastodon/locales/co.json | 10 +- app/javascript/mastodon/locales/cs.json | 16 ++- app/javascript/mastodon/locales/cy.json | 10 +- app/javascript/mastodon/locales/da.json | 16 ++- app/javascript/mastodon/locales/de.json | 10 +- .../mastodon/locales/defaultMessages.json | 47 +++++-- app/javascript/mastodon/locales/el.json | 16 ++- app/javascript/mastodon/locales/en-GB.json | 10 +- app/javascript/mastodon/locales/en.json | 10 +- app/javascript/mastodon/locales/eo.json | 10 +- app/javascript/mastodon/locales/es-AR.json | 16 ++- app/javascript/mastodon/locales/es-MX.json | 16 ++- app/javascript/mastodon/locales/es.json | 16 ++- app/javascript/mastodon/locales/et.json | 10 +- app/javascript/mastodon/locales/eu.json | 10 +- app/javascript/mastodon/locales/fa.json | 10 +- app/javascript/mastodon/locales/fi.json | 10 +- app/javascript/mastodon/locales/fr.json | 10 +- app/javascript/mastodon/locales/fy.json | 10 +- app/javascript/mastodon/locales/ga.json | 40 +++--- app/javascript/mastodon/locales/gd.json | 10 +- app/javascript/mastodon/locales/gl.json | 16 ++- app/javascript/mastodon/locales/he.json | 10 +- app/javascript/mastodon/locales/hi.json | 10 +- app/javascript/mastodon/locales/hr.json | 10 +- app/javascript/mastodon/locales/hu.json | 26 ++-- app/javascript/mastodon/locales/hy.json | 10 +- app/javascript/mastodon/locales/id.json | 10 +- app/javascript/mastodon/locales/io.json | 16 ++- app/javascript/mastodon/locales/is.json | 10 +- app/javascript/mastodon/locales/it.json | 16 ++- app/javascript/mastodon/locales/ja.json | 22 +-- app/javascript/mastodon/locales/ka.json | 10 +- app/javascript/mastodon/locales/kab.json | 10 +- app/javascript/mastodon/locales/kk.json | 10 +- app/javascript/mastodon/locales/kn.json | 10 +- app/javascript/mastodon/locales/ko.json | 10 +- app/javascript/mastodon/locales/ku.json | 16 ++- app/javascript/mastodon/locales/kw.json | 10 +- app/javascript/mastodon/locales/lt.json | 10 +- app/javascript/mastodon/locales/lv.json | 16 ++- app/javascript/mastodon/locales/mk.json | 10 +- app/javascript/mastodon/locales/ml.json | 10 +- app/javascript/mastodon/locales/mr.json | 10 +- app/javascript/mastodon/locales/ms.json | 10 +- app/javascript/mastodon/locales/nl.json | 10 +- app/javascript/mastodon/locales/nn.json | 10 +- app/javascript/mastodon/locales/no.json | 10 +- app/javascript/mastodon/locales/oc.json | 10 +- app/javascript/mastodon/locales/pa.json | 10 +- app/javascript/mastodon/locales/pl.json | 16 ++- app/javascript/mastodon/locales/pt-BR.json | 10 +- app/javascript/mastodon/locales/pt-PT.json | 16 ++- app/javascript/mastodon/locales/ro.json | 10 +- app/javascript/mastodon/locales/ru.json | 10 +- app/javascript/mastodon/locales/sa.json | 10 +- app/javascript/mastodon/locales/sc.json | 10 +- app/javascript/mastodon/locales/si.json | 10 +- app/javascript/mastodon/locales/sk.json | 10 +- app/javascript/mastodon/locales/sl.json | 22 +-- app/javascript/mastodon/locales/sq.json | 10 +- app/javascript/mastodon/locales/sr-Latn.json | 10 +- app/javascript/mastodon/locales/sr.json | 10 +- app/javascript/mastodon/locales/sv.json | 10 +- app/javascript/mastodon/locales/szl.json | 10 +- app/javascript/mastodon/locales/ta.json | 10 +- app/javascript/mastodon/locales/tai.json | 10 +- app/javascript/mastodon/locales/te.json | 10 +- app/javascript/mastodon/locales/th.json | 26 ++-- app/javascript/mastodon/locales/tr.json | 10 +- app/javascript/mastodon/locales/tt.json | 10 +- app/javascript/mastodon/locales/ug.json | 10 +- app/javascript/mastodon/locales/uk.json | 16 ++- app/javascript/mastodon/locales/ur.json | 10 +- app/javascript/mastodon/locales/vi.json | 16 ++- app/javascript/mastodon/locales/zgh.json | 10 +- app/javascript/mastodon/locales/zh-CN.json | 10 +- app/javascript/mastodon/locales/zh-HK.json | 10 +- app/javascript/mastodon/locales/zh-TW.json | 16 ++- config/locales/ar.yml | 58 -------- config/locales/ast.yml | 8 -- config/locales/br.yml | 2 - config/locales/ca.yml | 87 ++++-------- config/locales/ckb.yml | 57 -------- config/locales/co.yml | 58 -------- config/locales/cs.yml | 86 ++++-------- config/locales/cy.yml | 55 -------- config/locales/da.yml | 87 ++++-------- config/locales/de.yml | 64 --------- config/locales/devise.hu.yml | 4 +- config/locales/doorkeeper.hu.yml | 14 +- config/locales/el.yml | 70 ++-------- config/locales/eo.yml | 52 -------- config/locales/es-AR.yml | 87 ++++-------- config/locales/es-MX.yml | 64 --------- config/locales/es.yml | 87 ++++-------- config/locales/et.yml | 55 -------- config/locales/eu.yml | 58 -------- config/locales/fa.yml | 58 -------- config/locales/fi.yml | 58 -------- config/locales/fr.yml | 63 --------- config/locales/gd.yml | 58 -------- config/locales/gl.yml | 64 --------- config/locales/he.yml | 58 -------- config/locales/hu.yml | 125 ++++++------------ config/locales/hy.yml | 24 ---- config/locales/id.yml | 58 -------- config/locales/io.yml | 87 ++++-------- config/locales/is.yml | 64 --------- config/locales/it.yml | 87 ++++-------- config/locales/ja.yml | 78 +++-------- config/locales/ka.yml | 37 ------ config/locales/kab.yml | 9 -- config/locales/kk.yml | 55 -------- config/locales/ko.yml | 66 +-------- config/locales/ku.yml | 69 +--------- config/locales/lt.yml | 46 ------- config/locales/lv.yml | 87 ++++-------- config/locales/ms.yml | 16 --- config/locales/nl.yml | 64 --------- config/locales/nn.yml | 57 -------- config/locales/no.yml | 57 -------- config/locales/oc.yml | 53 -------- config/locales/pl.yml | 87 ++++-------- config/locales/pt-BR.yml | 58 -------- config/locales/pt-PT.yml | 82 +++--------- config/locales/ru.yml | 61 --------- config/locales/sc.yml | 58 -------- config/locales/si.yml | 58 -------- config/locales/simple_form.ca.yml | 31 +++++ config/locales/simple_form.cs.yml | 23 ++++ config/locales/simple_form.da.yml | 36 +++++ config/locales/simple_form.el.yml | 5 + config/locales/simple_form.es-AR.yml | 37 ++++++ config/locales/simple_form.es.yml | 37 ++++++ config/locales/simple_form.hu.yml | 29 +++- config/locales/simple_form.io.yml | 37 ++++++ config/locales/simple_form.it.yml | 37 ++++++ config/locales/simple_form.ku.yml | 2 + config/locales/simple_form.lv.yml | 37 ++++++ config/locales/simple_form.pl.yml | 37 ++++++ config/locales/simple_form.pt-PT.yml | 20 +++ config/locales/simple_form.sl.yml | 29 ++++ config/locales/simple_form.th.yml | 16 +++ config/locales/simple_form.uk.yml | 37 ++++++ config/locales/simple_form.zh-TW.yml | 37 ++++++ config/locales/sk.yml | 55 -------- config/locales/sl.yml | 86 ++++-------- config/locales/sq.yml | 64 --------- config/locales/sr-Latn.yml | 25 ---- config/locales/sr.yml | 46 ------- config/locales/sv.yml | 54 -------- config/locales/th.yml | 81 +++--------- config/locales/tr.yml | 64 --------- config/locales/uk.yml | 87 ++++-------- config/locales/vi.yml | 64 --------- config/locales/zgh.yml | 3 - config/locales/zh-CN.yml | 64 --------- config/locales/zh-HK.yml | 58 -------- config/locales/zh-TW.yml | 87 ++++-------- 168 files changed, 1712 insertions(+), 3663 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index fafa609200..96cd5bfe99 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Probeer weer", - "bundle_column_error.title": "Netwerk fout", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Iets het verkeerd gegaan terwyl hierdie komponent besig was om te laai.", "bundle_modal_error.retry": "Probeer weer", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 07b786ca0f..f85d15a56c 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -79,9 +79,15 @@ "audio.hide": "إخفاء المقطع الصوتي", "autosuggest_hashtag.per_week": "{count} في الأسبوع", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", - "bundle_column_error.body": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "إعادة المُحاولة", - "bundle_column_error.title": "خطأ في الشبكة", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "إغلاق", "bundle_modal_error.message": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", "bundle_modal_error.retry": "إعادة المُحاولة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 325b2e3e50..94eaac85ed 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per selmana", "boost_modal.combo": "Pues primir {combo} pa saltar esto la próxima vegada", - "bundle_column_error.body": "Asocedió daqué malo mentanto se cargaba esti componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Asocedió daqué malo mentanto se cargaba esti componente.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 7c5bde927c..8f1b4c770d 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -79,9 +79,15 @@ "audio.hide": "Скриване на видеото", "autosuggest_hashtag.per_week": "{count} на седмица", "boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път", - "bundle_column_error.body": "Нещо се обърка при зареждането на този компонент.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Опитай отново", - "bundle_column_error.title": "Мрежова грешка", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Затваряне", "bundle_modal_error.message": "Нещо се обърка при зареждането на този компонент.", "bundle_modal_error.retry": "Опитайте отново", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index fef216cde9..f0852da210 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "প্রতি সপ্তাহে {count}", "boost_modal.combo": "পরেরবার আপনি {combo} টিপলে এটি আর আসবে না", - "bundle_column_error.body": "এই অংশটি দেখতে যেয়ে কোনো সমস্যা হয়েছে।.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "আবার চেষ্টা করুন", - "bundle_column_error.title": "নেটওয়ার্কের সমস্যা", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "বন্ধ করুন", "bundle_modal_error.message": "এই অংশটি দেখাতে যেয়ে কোনো সমস্যা হয়েছে।.", "bundle_modal_error.retry": "আবার চেষ্টা করুন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index bedf197d77..9ed8c12363 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} bep sizhun", "boost_modal.combo": "Ar wezh kentañ e c'halliot gwaskañ war {combo} evit tremen hebiou", - "bundle_column_error.body": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Klask en-dro", - "bundle_column_error.title": "Fazi rouedad", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Serriñ", "bundle_modal_error.message": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", "bundle_modal_error.retry": "Klask en-dro", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f6e229201f..c6575e85a4 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -27,9 +27,9 @@ "account.edit_profile": "Edita el perfil", "account.enable_notifications": "Notifica’m les publicacions de @{name}", "account.endorse": "Recomana en el teu perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Darrer apunt el {date}", + "account.featured_tags.last_status_never": "Sense apunts", + "account.featured_tags.title": "etiquetes destacades de {name}", "account.follow": "Segueix", "account.followers": "Seguidors", "account.followers.empty": "Ningú segueix aquest usuari encara.", @@ -79,9 +79,15 @@ "audio.hide": "Amaga l'àudio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", - "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tornar-ho a provar", - "bundle_column_error.title": "Error de connexió", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", "bundle_modal_error.retry": "Tornar-ho a provar", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index edd3240379..d4fe8637ba 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} هەرهەفتە", "boost_modal.combo": "دەتوانیت دەست بنێی بە سەر {combo} بۆ بازدان لە جاری داهاتوو", - "bundle_column_error.body": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "دووبارە هەوڵبدە", - "bundle_column_error.title": "هەڵيی تۆڕ", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "داخستن", "bundle_modal_error.message": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", "bundle_modal_error.retry": "دووبارە تاقی بکەوە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index e1681bc8a7..1794cfd959 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Pudete appughjà nant'à {combo} per saltà quessa a prussima volta", - "bundle_column_error.body": "C'hè statu un prublemu caricandu st'elementu.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Pruvà torna", - "bundle_column_error.title": "Errore di cunnessione", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Chjudà", "bundle_modal_error.message": "C'hè statu un prublemu caricandu st'elementu.", "bundle_modal_error.retry": "Pruvà torna", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 40cbbba3ce..c0dabc26bc 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -28,8 +28,8 @@ "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_never": "Žádné příspěvky", + "account.featured_tags.title": "Hlavní hashtagy {name}", "account.follow": "Sledovat", "account.followers": "Sledující", "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.", @@ -79,9 +79,15 @@ "audio.hide": "Skrýt zvuk", "autosuggest_hashtag.per_week": "{count} za týden", "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", - "bundle_column_error.body": "Při načítání této komponenty se něco pokazilo.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Zkuste to znovu", - "bundle_column_error.title": "Chyba sítě", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zavřít", "bundle_modal_error.message": "Při načítání této komponenty se něco pokazilo.", "bundle_modal_error.retry": "Zkusit znovu", @@ -282,7 +288,7 @@ "interaction_modal.preamble": "Protože je Mastodon decentralizovaný, pokud nemáte účet na tomto serveru, můžete použít svůj existující účet hostovaný jiným Mastodon serverem nebo kompatibilní platformou.", "interaction_modal.title.favourite": "Oblíbený příspěvek {name}", "interaction_modal.title.follow": "Sledovat {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reblog": "Zvýšit příspěvek uživatele {name}", "interaction_modal.title.reply": "Odpovědět na příspěvek uživatele {name}", "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dní} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodin} other {# hodin}}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 967bb6aeac..b6ef7cb041 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} yr wythnos", "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa", - "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Ceisiwch eto", - "bundle_column_error.title": "Gwall rhwydwaith", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cau", "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", "bundle_modal_error.retry": "Ceiswich eto", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 97e5eeb5a0..25bc52289e 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -27,9 +27,9 @@ "account.edit_profile": "Redigér profil", "account.enable_notifications": "Advisér mig, når @{name} poster", "account.endorse": "Fremhæv på profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Seneste indlæg {date}", + "account.featured_tags.last_status_never": "Ingen indlæg", + "account.featured_tags.title": "{name}s fremhævede hashtags", "account.follow": "Følg", "account.followers": "Følgere", "account.followers.empty": "Ingen følger denne bruger endnu.", @@ -79,9 +79,15 @@ "audio.hide": "Skjul lyd", "autosuggest_hashtag.per_week": "{count} pr. uge", "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", - "bundle_column_error.body": "Noget gik galt under indlæsningen af denne komponent.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Forsøg igen", - "bundle_column_error.title": "Netværksfejl", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", "bundle_modal_error.retry": "Forsøg igen", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index a1b7993004..78d43a4483 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -79,9 +79,15 @@ "audio.hide": "Audio stummschalten", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", - "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Erneut versuchen", - "bundle_column_error.title": "Netzwerkfehler", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Schließen", "bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.", "bundle_modal_error.retry": "Erneut versuchen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 3b4cd8adbd..9e5462f7fe 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -3701,17 +3701,45 @@ }, { "descriptors": [ + { + "defaultMessage": "Copied", + "id": "copypaste.copied" + }, + { + "defaultMessage": "404", + "id": "bundle_column_error.routing.title" + }, + { + "defaultMessage": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "id": "bundle_column_error.routing.body" + }, { "defaultMessage": "Network error", - "id": "bundle_column_error.title" + "id": "bundle_column_error.network.title" }, { - "defaultMessage": "Something went wrong while loading this component.", - "id": "bundle_column_error.body" + "defaultMessage": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "id": "bundle_column_error.network.body" + }, + { + "defaultMessage": "Oh, no!", + "id": "bundle_column_error.error.title" + }, + { + "defaultMessage": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "id": "bundle_column_error.error.body" }, { "defaultMessage": "Try again", "id": "bundle_column_error.retry" + }, + { + "defaultMessage": "Copy error report", + "id": "bundle_column_error.copy_stacktrace" + }, + { + "defaultMessage": "Go back home", + "id": "bundle_column_error.return" } ], "path": "app/javascript/mastodon/features/ui/components/bundle_column_error.json" @@ -3733,15 +3761,6 @@ ], "path": "app/javascript/mastodon/features/ui/components/bundle_modal_error.json" }, - { - "descriptors": [ - { - "defaultMessage": "Publish", - "id": "compose_form.publish" - } - ], - "path": "app/javascript/mastodon/features/ui/components/columns_area.json" - }, { "descriptors": [ { @@ -3882,6 +3901,10 @@ }, { "descriptors": [ + { + "defaultMessage": "Publish", + "id": "compose_form.publish" + }, { "defaultMessage": "Sign in", "id": "sign_in_banner.sign_in" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 072ef0fe27..476250b379 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -27,9 +27,9 @@ "account.edit_profile": "Επεξεργασία προφίλ", "account.enable_notifications": "Έναρξη ειδοποιήσεων για τις δημοσιεύσεις του/της @{name}", "account.endorse": "Προβολή στο προφίλ", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Τελευταία δημοσίευση στις {date}", + "account.featured_tags.last_status_never": "Καμία Ανάρτηση", + "account.featured_tags.title": "προβεβλημένα hashtags του/της {name}", "account.follow": "Ακολούθησε", "account.followers": "Ακόλουθοι", "account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.", @@ -79,9 +79,15 @@ "audio.hide": "Απόκρυψη αρχείου ήχου", "autosuggest_hashtag.per_week": "{count} ανα εβδομάδα", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά", - "bundle_column_error.body": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Δοκίμασε ξανά", - "bundle_column_error.title": "Σφάλμα δικτύου", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Κλείσιμο", "bundle_modal_error.message": "Κάτι πήγε στραβά κατά τη φόρτωση του στοιχείου.", "bundle_modal_error.retry": "Δοκίμασε ξανά", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 1cbed45263..b6f1e0d58c 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 83a2d206a8..10fe869c6a 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 708a071693..a6a80bc020 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -79,9 +79,15 @@ "audio.hide": "Kaŝi aŭdion", "autosuggest_hashtag.per_week": "{count} semajne", "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", - "bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Provu refoje", - "bundle_column_error.title": "Eraro de reto", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermi", "bundle_modal_error.message": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", "bundle_modal_error.retry": "Provu refoje", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 87a1f332d3..c2ac354928 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} envíe mensajes", "account.endorse": "Destacar en el perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Último mensaje: {date}", + "account.featured_tags.last_status_never": "Sin mensajes", + "account.featured_tags.title": "Etiquetas destacadas de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -79,9 +79,15 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez", - "bundle_column_error.body": "Algo salió mal al cargar este componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Intentá de nuevo", - "bundle_column_error.title": "Error de red", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Intentá de nuevo", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 06b03b1b33..a667c68031 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -20,7 +20,7 @@ "account.block_domain": "Bloquear dominio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Ver más en el perfil original", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Retirar solicitud de seguimiento", "account.direct": "Mensaje directo a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", "account.domain_blocked": "Dominio oculto", @@ -79,9 +79,15 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", - "bundle_column_error.body": "Algo salió mal al cargar este componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Inténtalo de nuevo", - "bundle_column_error.title": "Error de red", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", @@ -138,8 +144,8 @@ "confirmations.block.block_and_report": "Bloquear y Reportar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "¿Estás seguro de que quieres bloquear a {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar solicitud", + "confirmations.cancel_follow_request.message": "¿Estás seguro de que deseas retirar tu solicitud para seguir a {name}?", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro de que quieres borrar este toot?", "confirmations.delete_list.confirm": "Eliminar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 53661edb1c..8a8462facb 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Mostrar en perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Última publicación el {date}", + "account.featured_tags.last_status_never": "Sin publicaciones", + "account.featured_tags.title": "Etiquetas destacadas de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -79,9 +79,15 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", - "bundle_column_error.body": "Algo salió mal al cargar este componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Inténtalo de nuevo", - "bundle_column_error.title": "Error de red", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 94a42a6b0a..a660a9f958 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} nädalas", "boost_modal.combo": "Võite vajutada {combo}, et see järgmine kord vahele jätta", - "bundle_column_error.body": "Midagi läks valesti selle komponendi laadimisel.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Proovi uuesti", - "bundle_column_error.title": "Võrgu viga", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sulge", "bundle_modal_error.message": "Selle komponendi laadimisel läks midagi viltu.", "bundle_modal_error.retry": "Proovi uuesti", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index a65470eb2e..f8ddbd6894 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} asteko", "boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko", - "bundle_column_error.body": "Zerbait okerra gertatu da osagai hau kargatzean.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Saiatu berriro", - "bundle_column_error.title": "Sareko errorea", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Itxi", "bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.", "bundle_modal_error.retry": "Saiatu berriro", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 29fc0776e5..f4a4d5efa1 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} در هفته", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", - "bundle_column_error.body": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "تلاش دوباره", - "bundle_column_error.title": "خطای شبکه", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "بستن", "bundle_modal_error.message": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", "bundle_modal_error.retry": "تلاش دوباره", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index adeb4c0059..c0ff844cca 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -79,9 +79,15 @@ "audio.hide": "Piilota ääni", "autosuggest_hashtag.per_week": "{count} viikossa", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", - "bundle_column_error.body": "Jokin meni vikaan komponenttia ladattaessa.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Yritä uudestaan", - "bundle_column_error.title": "Verkkovirhe", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sulje", "bundle_modal_error.message": "Jokin meni vikaan komponenttia ladattaessa.", "bundle_modal_error.retry": "Yritä uudelleen", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 90033e0960..aee14a62bd 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -79,9 +79,15 @@ "audio.hide": "Masquer l'audio", "autosuggest_hashtag.per_week": "{count} par semaine", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", - "bundle_column_error.body": "Une erreur s’est produite lors du chargement de ce composant.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Réessayer", - "bundle_column_error.title": "Erreur réseau", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermer", "bundle_modal_error.message": "Une erreur s’est produite lors du chargement de ce composant.", "bundle_modal_error.retry": "Réessayer", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 2837dd89c0..ab1f1c23d1 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Slute", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Opnij probearje", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index b91daf8149..004f1ce673 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -1,8 +1,8 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "Freastalaithe faoi stiúir", + "about.contact": "Teagmháil:", + "about.domain_blocks.comment": "Fáth", + "about.domain_blocks.domain": "Fearann", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", @@ -11,7 +11,7 @@ "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Rialacha an fhreastalaí", "account.account_note_header": "Nóta", "account.add_or_remove_from_list": "Cuir Le nó Bain De na liostaí", "account.badges.bot": "Bota", @@ -79,16 +79,22 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Bain triail as arís", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Dún", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Bain triail as arís", "column.about": "About", "column.blocks": "Cuntais choiscthe", "column.bookmarks": "Leabharmharcanna", - "column.community": "Local timeline", + "column.community": "Amlíne áitiúil", "column.direct": "Direct messages", "column.directory": "Brabhsáil próifílí", "column.domain_blocks": "Blocked domains", @@ -97,7 +103,7 @@ "column.home": "Baile", "column.lists": "Liostaí", "column.mutes": "Úsáideoirí balbhaithe", - "column.notifications": "Notifications", + "column.notifications": "Fógraí", "column.pins": "Pinned post", "column.public": "Federated timeline", "column_back_button.label": "Siar", @@ -108,7 +114,7 @@ "column_header.show_settings": "Show settings", "column_header.unpin": "Díghreamaigh", "column_subheading.settings": "Socruithe", - "community.column_settings.local_only": "Local only", + "community.column_settings.local_only": "Áitiúil amháin", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", "compose.language.change": "Change language", @@ -134,15 +140,15 @@ "compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "Write your warning here", - "confirmation_modal.cancel": "Cancel", + "confirmation_modal.cancel": "Cealaigh", "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", - "confirmations.delete.confirm": "Delete", + "confirmations.delete.confirm": "Scrios", "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?", - "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.confirm": "Scrios", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.discard_edit_media.confirm": "Faigh réidh de", "confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?", @@ -166,7 +172,7 @@ "copypaste.copied": "Copied", "copypaste.copy": "Copy", "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", + "directory.local": "Ó {domain} amháin", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", @@ -303,7 +309,7 @@ "keyboard_shortcuts.home": "to open home timeline", "keyboard_shortcuts.hotkey": "Hotkey", "keyboard_shortcuts.legend": "to display this legend", - "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.local": "Oscail an amlíne áitiúil", "keyboard_shortcuts.mention": "to mention author", "keyboard_shortcuts.muted": "Oscail liosta na n-úsáideoirí balbhaithe", "keyboard_shortcuts.my_profile": "Oscail do phróifíl", @@ -353,7 +359,7 @@ "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", - "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.community_timeline": "Amlíne áitiúil", "navigation_bar.compose": "Cum postáil nua", "navigation_bar.direct": "Direct messages", "navigation_bar.discover": "Discover", @@ -585,7 +591,7 @@ "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", "tabs_bar.home": "Baile", - "tabs_bar.local_timeline": "Local", + "tabs_bar.local_timeline": "Áitiúil", "tabs_bar.notifications": "Notifications", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 92b8424fb0..90efdf86b6 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -79,9 +79,15 @@ "audio.hide": "Falaich an fhuaim", "autosuggest_hashtag.per_week": "{count} san t-seachdain", "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras", - "bundle_column_error.body": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Feuch ris a-rithist", - "bundle_column_error.title": "Mearachd lìonraidh", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Dùin", "bundle_modal_error.message": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", "bundle_modal_error.retry": "Feuch ris a-rithist", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 00e6ce9c04..649ed031eb 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Noficarme cando @{name} publique", "account.endorse": "Amosar no perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Última publicación o {date}", + "account.featured_tags.last_status_never": "Sen publicacións", + "account.featured_tags.title": "Cancelos destacados de {name}", "account.follow": "Seguir", "account.followers": "Seguidoras", "account.followers.empty": "Aínda ninguén segue esta usuaria.", @@ -79,9 +79,15 @@ "audio.hide": "Agochar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez", - "bundle_column_error.body": "Ocorreu un erro ó cargar este compoñente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Téntao de novo", - "bundle_column_error.title": "Fallo na rede", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Pechar", "bundle_modal_error.message": "Ocorreu un erro ó cargar este compoñente.", "bundle_modal_error.retry": "Téntao de novo", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index dfbf30a456..1d360abc47 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -79,9 +79,15 @@ "audio.hide": "השתק", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", - "bundle_column_error.body": "משהו השתבש בעת טעינת הרכיב הזה.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "לנסות שוב", - "bundle_column_error.title": "שגיאת רשת", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "לסגור", "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.", "bundle_modal_error.retry": "לנסות שוב", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index a60aa04d9d..4592d65ff4 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} हर सप्ताह", "boost_modal.combo": "अगली बार स्किप करने के लिए आप {combo} दबा सकते है", - "bundle_column_error.body": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "दुबारा कोशिश करें", - "bundle_column_error.title": "नेटवर्क त्रुटि", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "बंद", "bundle_modal_error.message": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", "bundle_modal_error.retry": "दुबारा कोशिश करें", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 86f9cd0de8..8bcad04086 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} tjedno", "boost_modal.combo": "Možete pritisnuti {combo} kako biste preskočili ovo sljedeći put", - "bundle_column_error.body": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Pokušajte ponovno", - "bundle_column_error.title": "Greška mreže", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovno", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index aa5660ff85..dcf2044ed3 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -27,9 +27,9 @@ "account.edit_profile": "Profil szerkesztése", "account.enable_notifications": "Figyelmeztessen, ha @{name} bejegyzést tesz közzé", "account.endorse": "Kiemelés a profilodon", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Legutolsó bejegyzés ideje: {date}", + "account.featured_tags.last_status_never": "Nincs bejegyzés", + "account.featured_tags.title": "{name} kiemelt hashtagjei", "account.follow": "Követés", "account.followers": "Követő", "account.followers.empty": "Ezt a felhasználót még senki sem követi.", @@ -79,9 +79,15 @@ "audio.hide": "Hang elrejtése", "autosuggest_hashtag.per_week": "{count} hetente", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", - "bundle_column_error.body": "Valami hiba történt a komponens betöltése közben.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Próbáld újra", - "bundle_column_error.title": "Hálózati hiba", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bezárás", "bundle_modal_error.message": "Hiba történt a komponens betöltésekor.", "bundle_modal_error.retry": "Próbáld újra", @@ -212,7 +218,7 @@ "empty_column.lists": "Még nem hoztál létre listát. Ha csinálsz egyet, itt látszik majd.", "empty_column.mutes": "Még egy felhasználót sem némítottál le.", "empty_column.notifications": "Jelenleg nincsenek értesítéseid. Lépj kapcsolatba másokkal, hogy elindítsd a beszélgetést.", - "empty_column.public": "Jelenleg itt nincs semmi! Írj valamit nyilvánosan vagy kövess más szervereken levő felhasználókat, hogy megtöltsd", + "empty_column.public": "Jelenleg itt nincs semmi! Írj valamit nyilvánosan vagy kövess más kiszolgálón levő felhasználókat, hogy megtöltsd.", "error.unexpected_crash.explanation": "Egy hiba vagy böngésző inkompatibilitás miatt ez az oldal nem jeleníthető meg rendesen.", "error.unexpected_crash.explanation_addons": "Ezt az oldalt nem lehet helyesen megjeleníteni. Ezt a hibát valószínűleg egy böngésző beépülő vagy egy automatikus fordító okozza.", "error.unexpected_crash.next_steps": "Próbáld frissíteni az oldalt. Ha ez nem segít, egy másik böngészőn vagy appon keresztül még mindig használhatod a Mastodont.", @@ -516,15 +522,15 @@ "search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.", "search_results.title": "Keresés erre: {q}", "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}", - "server_banner.about_active_users": "Az elmúlt 30 napban ezt a szervert használók száma (Havi Aktív Felhasználók)", + "server_banner.about_active_users": "Az elmúlt 30 napban ezt a kiszolgálót használók száma (Havi aktív felhasználók)", "server_banner.active_users": "aktív felhasználó", "server_banner.administered_by": "Adminisztrátor:", "server_banner.introduction": "{domain} része egy decentralizált közösségi hálónak, melyet a {mastodon} hajt meg.", "server_banner.learn_more": "Tudj meg többet", - "server_banner.server_stats": "Szerverstatisztika:", + "server_banner.server_stats": "Kiszolgálóstatisztika:", "sign_in_banner.create_account": "Fiók létrehozása", "sign_in_banner.sign_in": "Bejelentkezés", - "sign_in_banner.text": "Jelentkezz be profilok vagy hashtagek követéséhez, bejegyzések megosztásához, megválaszolásához, vagy kommunikálj a fiókodból más szerverekkel.", + "sign_in_banner.text": "Jelentkezz be profilok vagy hashtagek követéséhez, bejegyzések megosztásához, megválaszolásához, vagy kommunikálj a fiókodból más kiszolgálókkal.", "status.admin_account": "Moderációs felület megnyitása @{name} fiókhoz", "status.admin_status": "Bejegyzés megnyitása a moderációs felületen", "status.block": "@{name} letiltása", @@ -592,7 +598,7 @@ "time_remaining.minutes": "{number, plural, one {# perc} other {# perc}} van hátra", "time_remaining.moments": "Pillanatok vannak hátra", "time_remaining.seconds": "{number, plural, one {# másodperc} other {# másodperc}} van hátra", - "timeline_hint.remote_resource_not_displayed": "más szerverekről származó {resource} tartalmakat nem mutatjuk.", + "timeline_hint.remote_resource_not_displayed": "a más kiszolgálókról származó {resource} tartalmak nem jelennek meg.", "timeline_hint.resources.followers": "Követő", "timeline_hint.resources.follows": "Követett", "timeline_hint.resources.statuses": "Régi bejegyzések", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 69749098a6..5eae2c3687 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "շաբաթը՝ {count}", "boost_modal.combo": "Կարող ես սեղմել {combo}՝ սա յաջորդ անգամ բաց թողնելու համար", - "bundle_column_error.body": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Կրկին փորձել", - "bundle_column_error.title": "Ցանցային սխալ", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Փակել", "bundle_modal_error.message": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", "bundle_modal_error.retry": "Կրկին փորձել", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 195dc793e9..fd5aa3ed4f 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -79,9 +79,15 @@ "audio.hide": "Indonesia", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", - "bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Coba lagi", - "bundle_column_error.title": "Kesalahan jaringan", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Kesalahan terjadi saat memuat komponen ini.", "bundle_modal_error.retry": "Coba lagi", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index b0f3798987..e2d0ac35a9 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -27,9 +27,9 @@ "account.edit_profile": "Modifikar profilo", "account.enable_notifications": "Avizez me kande @{name} postas", "account.endorse": "Traito di profilo", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Antea posto ye {date}", + "account.featured_tags.last_status_never": "Nula posti", + "account.featured_tags.title": "Estalita hashtagi di {name}", "account.follow": "Sequar", "account.followers": "Sequanti", "account.followers.empty": "Nulu sequas ca uzanto til nun.", @@ -79,9 +79,15 @@ "audio.hide": "Celez audio", "autosuggest_hashtag.per_week": "{count} dum singla semano", "boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo", - "bundle_column_error.body": "Nulo ne functionis dum chargar ca kompozaj.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Probez itere", - "bundle_column_error.title": "Rederor", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Klozez", "bundle_modal_error.message": "Nulo ne functionis dum chargar ca kompozaj.", "bundle_modal_error.retry": "Probez itere", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 0db7690dd7..e5fead8e1a 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -79,9 +79,15 @@ "audio.hide": "Fela hljóð", "autosuggest_hashtag.per_week": "{count} á viku", "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst", - "bundle_column_error.body": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Reyndu aftur", - "bundle_column_error.title": "Villa í netkerfi", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Loka", "bundle_modal_error.message": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", "bundle_modal_error.retry": "Reyndu aftur", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index ccaa7d3e61..8651746e73 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -27,9 +27,9 @@ "account.edit_profile": "Modifica profilo", "account.enable_notifications": "Avvisami quando @{name} pubblica un post", "account.endorse": "Metti in evidenza sul profilo", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Ultimo post il {date}", + "account.featured_tags.last_status_never": "Nessun post", + "account.featured_tags.title": "Hashtag in evidenza di {name}", "account.follow": "Segui", "account.followers": "Follower", "account.followers.empty": "Nessuno segue ancora questo utente.", @@ -79,9 +79,15 @@ "audio.hide": "Nascondi audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", - "bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Riprova", - "bundle_column_error.title": "Errore di rete", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Chiudi", "bundle_modal_error.message": "Qualcosa è andato storto durante il caricamento di questo componente.", "bundle_modal_error.retry": "Riprova", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index f48f295516..e85d743d37 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -20,16 +20,16 @@ "account.block_domain": "{domain}全体をブロック", "account.blocked": "ブロック済み", "account.browse_more_on_origin_server": "リモートで表示", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "フォローリクエストの取り消し", "account.direct": "@{name}さんにダイレクトメッセージ", "account.disable_notifications": "@{name}さんの投稿時の通知を停止", "account.domain_blocked": "ドメインブロック中", "account.edit_profile": "プロフィール編集", "account.enable_notifications": "@{name}さんの投稿時に通知", "account.endorse": "プロフィールで紹介する", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "最終投稿 {date}", + "account.featured_tags.last_status_never": "投稿がありません", + "account.featured_tags.title": "{name}の注目ハッシュタグ", "account.follow": "フォロー", "account.followers": "フォロワー", "account.followers.empty": "まだ誰もフォローしていません。", @@ -79,9 +79,15 @@ "audio.hide": "音声を閉じる", "autosuggest_hashtag.per_week": "{count} 回 / 週", "boost_modal.combo": "次からは{combo}を押せばスキップできます", - "bundle_column_error.body": "コンポーネントの読み込み中に問題が発生しました。", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "再試行", - "bundle_column_error.title": "ネットワークエラー", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "閉じる", "bundle_modal_error.message": "コンポーネントの読み込み中に問題が発生しました。", "bundle_modal_error.retry": "再試行", @@ -138,8 +144,8 @@ "confirmations.block.block_and_report": "ブロックし通報", "confirmations.block.confirm": "ブロック", "confirmations.block.message": "本当に{name}さんをブロックしますか?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "フォローリクエストを取り消す", + "confirmations.cancel_follow_request.message": "{name}に対するフォローリクエストを取り消しますか?", "confirmations.delete.confirm": "削除", "confirmations.delete.message": "本当に削除しますか?", "confirmations.delete_list.confirm": "削除", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index a66d93f009..a45a27b02e 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "კვირაში {count}", "boost_modal.combo": "შეგიძლიათ დააჭიროთ {combo}-ს რათა შემდეგ ჯერზე გამოტოვოთ ეს", - "bundle_column_error.body": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "სცადეთ კიდევ ერთხელ", - "bundle_column_error.title": "ქსელის შეცდომა", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "დახურვა", "bundle_modal_error.message": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.", "bundle_modal_error.retry": "სცადეთ კიდევ ერთხელ", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index b5b8cb3c66..781095c9f3 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} i yimalas", "boost_modal.combo": "Tzemreḍ ad tetekkiḍ ɣef {combo} akken ad tessurfeḍ aya tikelt-nniḍen", - "bundle_column_error.body": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Ɛreḍ tikelt-nniḍen", - "bundle_column_error.title": "Tuccḍa deg uẓeṭṭa", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Mdel", "bundle_modal_error.message": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", "bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 7017467b31..790b6adb2e 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} аптасына", "boost_modal.combo": "Келесіде өткізіп жіберу үшін басыңыз {combo}", - "bundle_column_error.body": "Бұл компонентті жүктеген кезде бір қате пайда болды.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Қайтадан көріңіз", - "bundle_column_error.title": "Желі қатесі", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Жабу", "bundle_modal_error.message": "Бұл компонентті жүктеген кезде бір қате пайда болды.", "bundle_modal_error.retry": "Қайтадан көріңіз", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index d266d34926..b3697b1b6f 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "ಮರಳಿ ಪ್ರಯತ್ನಿಸಿ", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 34c86130f6..d8d4b687fe 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -79,9 +79,15 @@ "audio.hide": "소리 숨기기", "autosuggest_hashtag.per_week": "주간 {count}회", "boost_modal.combo": "다음엔 {combo}를 눌러서 이 과정을 건너뛸 수 있습니다", - "bundle_column_error.body": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "다시 시도", - "bundle_column_error.title": "네트워크 에러", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "닫기", "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index c6ecd3c95a..b2ce6ba114 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -27,9 +27,9 @@ "account.edit_profile": "Profîlê serrast bike", "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne", "account.endorse": "Taybetiyên li ser profîl", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Şandiya dawî di {date} de", + "account.featured_tags.last_status_never": "Şandî tune ne", + "account.featured_tags.title": "{name}'s hashtagên taybet", "account.follow": "Bişopîne", "account.followers": "Şopîner", "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.", @@ -79,9 +79,15 @@ "audio.hide": "Dengê veşêre", "autosuggest_hashtag.per_week": "Her hefte {count}", "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", - "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Dîsa biceribîne", - "bundle_column_error.title": "Çewtiya torê", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bigire", "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", "bundle_modal_error.retry": "Dîsa bicerbîne", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index a1c19b1838..8e0b431048 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} an seythen", "boost_modal.combo": "Hwi a yll gwaska {combo} dhe woheles hemma an nessa tro", - "bundle_column_error.body": "Neppyth eth yn kamm ow karga'n elven ma.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Assayewgh arta", - "bundle_column_error.title": "Gwall ròsweyth", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Degea", "bundle_modal_error.message": "Neppyth eth yn kamm ow karga'n elven ma.", "bundle_modal_error.retry": "Assayewgh arta", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index bdb5b43d5d..813eaf197b 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Tinklo klaida", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index acf4911b59..08fe1ae5eb 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -27,9 +27,9 @@ "account.edit_profile": "Rediģēt profilu", "account.enable_notifications": "Man paziņot, kad @{name} publicē ierakstu", "account.endorse": "Izcelts profilā", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Beidzamā ziņa {date}", + "account.featured_tags.last_status_never": "Publikāciju nav", + "account.featured_tags.title": "{name} piedāvātie haštagi", "account.follow": "Sekot", "account.followers": "Sekotāji", "account.followers.empty": "Šim lietotājam patreiz nav sekotāju.", @@ -79,9 +79,15 @@ "audio.hide": "Slēpt audio", "autosuggest_hashtag.per_week": "{count} nedēļā", "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", - "bundle_column_error.body": "Kaut kas nogāja greizi ielādējot šo komponenti.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Mēģini vēlreiz", - "bundle_column_error.title": "Tīkla kļūda", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Aizvērt", "bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.", "bundle_modal_error.retry": "Mēģini vēlreiz", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index dde2f6d582..b3135c9c9e 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} неделно", "boost_modal.combo": "Кликни {combo} за да го прескокниш ова нареден пат", - "bundle_column_error.body": "Се случи проблем при вчитувањето.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Обидете се повторно", - "bundle_column_error.title": "Мрежна грешка", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Настана грешка при прикажувањето на оваа веб-страница.", "bundle_modal_error.retry": "Обидете се повторно", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index b19475c4b0..a8c7ef61e7 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "ആഴ്ച തോറും {count}", "boost_modal.combo": "അടുത്ത തവണ ഇത് ഒഴിവാക്കുവാൻ {combo} ഞെക്കാവുന്നതാണ്", - "bundle_column_error.body": "ഈ ഘടകം പ്രദശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "വീണ്ടും ശ്രമിക്കുക", - "bundle_column_error.title": "ശൃംഖലയിലെ പിഴവ്", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "അടയ്ക്കുക", "bundle_modal_error.message": "ഈ വെബ്പേജ് പ്രദർശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.", "bundle_modal_error.retry": "വീണ്ടും ശ്രമിക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 4d62bf0d41..b2d32cc4e6 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} प्रतिसप्ताह", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "हा घटक लोड करतांना काहीतरी चुकले आहे.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "पुन्हा प्रयत्न करा", - "bundle_column_error.title": "नेटवर्क त्रुटी", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "बंद करा", "bundle_modal_error.message": "हा घटक लोड करतांना काहीतरी चुकले आहे.", "bundle_modal_error.retry": "पुन्हा प्रयत्न करा", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 0615b64dcf..341bca041a 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} seminggu", "boost_modal.combo": "Anda boleh tekan {combo} untuk melangkauinya pada waktu lain", - "bundle_column_error.body": "Terdapat kesilapan ketika memuatkan komponen ini.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Cuba lagi", - "bundle_column_error.title": "Ralat rangkaian", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Ada yang tidak kena semasa memuatkan komponen ini.", "bundle_modal_error.retry": "Cuba lagi", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 77fe2703cf..51a66f3560 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -79,9 +79,15 @@ "audio.hide": "Audio verbergen", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan", - "bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Opnieuw proberen", - "bundle_column_error.title": "Netwerkfout", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1c6a2f5354..f62b1a832b 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per veke", "boost_modal.combo": "Du kan trykkja {combo} for å hoppa over dette neste gong", - "bundle_column_error.body": "Noko gjekk gale mens denne komponenten vart lasta ned.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Prøv igjen", - "bundle_column_error.title": "Nettverksfeil", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Lat att", "bundle_modal_error.message": "Noko gjekk gale under lastinga av denne komponenten.", "bundle_modal_error.retry": "Prøv igjen", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 936e8d5b4e..a3614fc33f 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per uke", "boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang", - "bundle_column_error.body": "Noe gikk galt mens denne komponenten lastet.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Prøv igjen", - "bundle_column_error.title": "Nettverksfeil", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Lukk", "bundle_modal_error.message": "Noe gikk galt da denne komponenten lastet.", "bundle_modal_error.retry": "Prøv igjen", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index f5cbc468ec..176ca5dcc3 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven", - "bundle_column_error.body": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tornar ensajar", - "bundle_column_error.title": "Error de ret", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tampar", "bundle_modal_error.message": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", "bundle_modal_error.retry": "Tornar ensajar", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index ed1f9c3ae6..e008749667 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 51a69b2c5a..a0642273a8 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -27,9 +27,9 @@ "account.edit_profile": "Edytuj profil", "account.enable_notifications": "Powiadamiaj mnie o wpisach @{name}", "account.endorse": "Wyróżnij na profilu", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Ostatni post {date}", + "account.featured_tags.last_status_never": "Brak postów", + "account.featured_tags.title": "Polecane hasztagi {name}", "account.follow": "Śledź", "account.followers": "Śledzący", "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.", @@ -79,9 +79,15 @@ "audio.hide": "Ukryj dźwięk", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", - "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Spróbuj ponownie", - "bundle_column_error.title": "Błąd sieci", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zamknij", "bundle_modal_error.message": "Coś poszło nie tak podczas ładowania tego składnika.", "bundle_modal_error.retry": "Spróbuj ponownie", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 72cfa4ffa2..713a2da2d1 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez", - "bundle_column_error.body": "Erro ao carregar este componente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tente novamente", - "bundle_column_error.title": "Erro de rede", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Erro ao carregar este componente.", "bundle_modal_error.retry": "Tente novamente", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 1fd0a92581..a3beb8d26d 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar-me das publicações de @{name}", "account.endorse": "Destacar no perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Última publicação em {date}", + "account.featured_tags.last_status_never": "Sem publicações", + "account.featured_tags.title": "Hashtags destacadas por {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Ainda ninguém segue este utilizador.", @@ -79,9 +79,15 @@ "audio.hide": "Ocultar áudio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pode clicar {combo} para não voltar a ver", - "bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tente de novo", - "bundle_column_error.title": "Erro de rede", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.", "bundle_modal_error.retry": "Tente de novo", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index a3be7fb59b..04af086618 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} pe săptămână", "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", - "bundle_column_error.body": "A apărut o eroare la încărcarea acestui element.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Încearcă din nou", - "bundle_column_error.title": "Eroare de rețea", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Închide", "bundle_modal_error.message": "A apărut o eroare la încărcarea acestui element.", "bundle_modal_error.retry": "Încearcă din nou", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index db6a266113..92612af247 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -79,9 +79,15 @@ "audio.hide": "Скрыть аудио", "autosuggest_hashtag.per_week": "{count} / неделю", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", - "bundle_column_error.body": "Что-то пошло не так при загрузке этого компонента.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Попробовать снова", - "bundle_column_error.title": "Ошибка сети", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Закрыть", "bundle_modal_error.message": "Что-то пошло не так при загрузке этого компонента.", "bundle_modal_error.retry": "Попробовать снова", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index db7613b276..d18bc78b3c 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} प्रतिसप्ताहे", "boost_modal.combo": "{combo} अत्र स्प्रष्टुं शक्यते, त्यक्तुमेतमन्यस्मिन् समये", - "bundle_column_error.body": "विषयस्याऽऽरोपणे कश्चिद्दोषो जातः", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "पुनः यतताम्", - "bundle_column_error.title": "जाले दोषः", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "पिधीयताम्", "bundle_modal_error.message": "आरोपणे कश्चन दोषो जातः", "bundle_modal_error.retry": "पुनः यतताम्", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 7a534f689c..54a23cffab 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} a sa chida", "boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit", - "bundle_column_error.body": "Faddina in su carrigamentu de custu cumponente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Torra·bi a proare", - "bundle_column_error.title": "Faddina de connessione", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Serra", "bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.", "bundle_modal_error.retry": "Torra·bi a proare", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index e18b0abe4d..0ab05ed58a 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -79,9 +79,15 @@ "audio.hide": "හඬපටය සඟවන්න", "autosuggest_hashtag.per_week": "සතියකට {count}", "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට ඔබට {combo} එබිය හැක", - "bundle_column_error.body": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "නැවත උත්සාහ කරන්න", - "bundle_column_error.title": "ජාලයේ දෝෂයකි", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "වසන්න", "bundle_modal_error.message": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", "bundle_modal_error.retry": "නැවත උත්සාහ කරන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 199bce6911..21bf1b6995 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -79,9 +79,15 @@ "audio.hide": "Skry zvuk", "autosuggest_hashtag.per_week": "{count} týždenne", "boost_modal.combo": "Nabudúce môžeš kliknúť {combo} pre preskočenie", - "bundle_column_error.body": "Pri načítaní tohto prvku nastala nejaká chyba.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Skús to znova", - "bundle_column_error.title": "Chyba siete", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zatvor", "bundle_modal_error.message": "Nastala chyba pri načítaní tohto komponentu.", "bundle_modal_error.retry": "Skúsiť znova", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 98e113ea12..571042e2e6 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -20,16 +20,16 @@ "account.block_domain": "Blokiraj domeno {domain}", "account.blocked": "Blokirano", "account.browse_more_on_origin_server": "Brskaj več po izvirnem profilu", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Umakni zahtevo za sledenje", "account.direct": "Neposredno sporočilo @{name}", "account.disable_notifications": "Ne obveščaj me več, ko ima @{name} novo objavo", "account.domain_blocked": "Blokirana domena", "account.edit_profile": "Uredi profil", "account.enable_notifications": "Obvesti me, ko ima @{name} novo objavo", "account.endorse": "Izpostavi v profilu", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Zadnja objava {date}", + "account.featured_tags.last_status_never": "Ni objav", + "account.featured_tags.title": "Izpostavljeni ključniki {name}", "account.follow": "Sledi", "account.followers": "Sledilci", "account.followers.empty": "Nihče ne sledi temu uporabniku.", @@ -79,9 +79,15 @@ "audio.hide": "Skrij zvok", "autosuggest_hashtag.per_week": "{count} na teden", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", - "bundle_column_error.body": "Med nalaganjem te komponente je prišlo do napake.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Poskusi ponovno", - "bundle_column_error.title": "Napaka omrežja", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zapri", "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", "bundle_modal_error.retry": "Poskusi ponovno", @@ -138,8 +144,8 @@ "confirmations.block.block_and_report": "Blokiraj in Prijavi", "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Ali ste prepričani, da želite blokirati {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Umakni zahtevo", + "confirmations.cancel_follow_request.message": "Ali ste prepričani, da želite umakniti svojo zahtevo, da bi sledili {name}?", "confirmations.delete.confirm": "Izbriši", "confirmations.delete.message": "Ali ste prepričani, da želite izbrisati to objavo?", "confirmations.delete_list.confirm": "Izbriši", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 1bb0b16ac8..f30d920f8f 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -79,9 +79,15 @@ "audio.hide": "Fshihe audion", "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}", - "bundle_column_error.body": "Diç shkoi ters teksa ngarkohej ky përbërës.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Riprovoni", - "bundle_column_error.title": "Gabim rrjeti", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Mbylle", "bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_modal_error.retry": "Riprovoni", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 7a01383209..92f1bee4c4 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Možete pritisnuti {combo} da preskočite ovo sledeći put", - "bundle_column_error.body": "Nešto je pošlo po zlu prilikom učitavanja ove komponente.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Pokušajte ponovo", - "bundle_column_error.title": "Mrežna greška", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto nije bilo u redu pri učitavanju ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovo", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 6140f5a5a9..9faac37bba 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} недељно", "boost_modal.combo": "Можете притиснути {combo} да прескочите ово следећи пут", - "bundle_column_error.body": "Нешто је пошло по злу приликом учитавања ове компоненте.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Покушајте поново", - "bundle_column_error.title": "Мрежна грешка", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Нешто није било у реду при учитавању ове компоненте.", "bundle_modal_error.retry": "Покушајте поново", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 5e054b1f22..32a405b9a0 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -79,9 +79,15 @@ "audio.hide": "Dölj audio", "autosuggest_hashtag.per_week": "{count} per vecka", "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång", - "bundle_column_error.body": "Något gick fel medan denna komponent laddades.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Försök igen", - "bundle_column_error.title": "Nätverksfel", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Stäng", "bundle_modal_error.message": "Något gick fel när denna komponent laddades.", "bundle_modal_error.retry": "Försök igen", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index ed1f9c3ae6..e008749667 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 99d97fef60..7f88275e40 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -79,9 +79,15 @@ "audio.hide": "ஆடியோவை மறை", "autosuggest_hashtag.per_week": "ஒவ்வொரு வாரம் {count}", "boost_modal.combo": "நீங்கள் இதை அடுத்தமுறை தவிர்க்க {combo} வை அழுத்தவும்", - "bundle_column_error.body": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "மீண்டும் முயற்சிக்கவும்", - "bundle_column_error.title": "பிணையப் பிழை", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "மூடுக", "bundle_modal_error.message": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", "bundle_modal_error.retry": "மீண்டும் முயற்சி செய்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 94fc0f72ed..c70f45cdb6 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 5b1c22f922..75fd5644cb 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "మీరు తదుపరిసారి దీనిని దాటవేయడానికి {combo} నొక్కవచ్చు", - "bundle_column_error.body": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "మళ్ళీ ప్రయత్నించండి", - "bundle_column_error.title": "నెట్వర్క్ లోపం", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "మూసివేయు", "bundle_modal_error.message": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.", "bundle_modal_error.retry": "మళ్ళీ ప్రయత్నించండి", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index aba6b2c002..d16f2c1eac 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -20,16 +20,16 @@ "account.block_domain": "ปิดกั้นโดเมน {domain}", "account.blocked": "ปิดกั้นอยู่", "account.browse_more_on_origin_server": "เรียกดูเพิ่มเติมในโปรไฟล์ดั้งเดิม", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "ถอนคำขอติดตาม", "account.direct": "ส่งข้อความโดยตรงถึง @{name}", "account.disable_notifications": "หยุดแจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.domain_blocked": "ปิดกั้นโดเมนอยู่", "account.edit_profile": "แก้ไขโปรไฟล์", "account.enable_notifications": "แจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.endorse": "แนะนำในโปรไฟล์", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "โพสต์ล่าสุดเมื่อ {date}", + "account.featured_tags.last_status_never": "ไม่มีโพสต์", + "account.featured_tags.title": "แฮชแท็กที่แนะนำของ {name}", "account.follow": "ติดตาม", "account.followers": "ผู้ติดตาม", "account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้", @@ -65,8 +65,8 @@ "account.unmute_notifications": "เลิกซ่อนการแจ้งเตือนจาก @{name}", "account.unmute_short": "เลิกซ่อน", "account_note.placeholder": "คลิกเพื่อเพิ่มหมายเหตุ", - "admin.dashboard.daily_retention": "อัตราการรักษาผู้ใช้ตามวันหลังจากลงทะเบียน", - "admin.dashboard.monthly_retention": "อัตราการรักษาผู้ใช้ตามเดือนหลังจากลงทะเบียน", + "admin.dashboard.daily_retention": "อัตราการเก็บรักษาผู้ใช้ตามวันหลังจากลงทะเบียน", + "admin.dashboard.monthly_retention": "อัตราการเก็บรักษาผู้ใช้ตามเดือนหลังจากลงทะเบียน", "admin.dashboard.retention.average": "ค่าเฉลี่ย", "admin.dashboard.retention.cohort": "เดือนที่ลงทะเบียน", "admin.dashboard.retention.cohort_size": "ผู้ใช้ใหม่", @@ -79,9 +79,15 @@ "audio.hide": "ซ่อนเสียง", "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", - "bundle_column_error.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "ลองอีกครั้ง", - "bundle_column_error.title": "ข้อผิดพลาดเครือข่าย", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "ปิด", "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", "bundle_modal_error.retry": "ลองอีกครั้ง", @@ -138,8 +144,8 @@ "confirmations.block.block_and_report": "ปิดกั้นแล้วรายงาน", "confirmations.block.confirm": "ปิดกั้น", "confirmations.block.message": "คุณแน่ใจหรือไม่ว่าต้องการปิดกั้น {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "ถอนคำขอ", + "confirmations.cancel_follow_request.message": "คุณแน่ใจหรือไม่ว่าต้องการถอนคำขอเพื่อติดตาม {name} ของคุณ?", "confirmations.delete.confirm": "ลบ", "confirmations.delete.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?", "confirmations.delete_list.confirm": "ลบ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index a00d05b2ee..6806aa1991 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -79,9 +79,15 @@ "audio.hide": "Sesi gizle", "autosuggest_hashtag.per_week": "Haftada {count}", "boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsin", - "bundle_column_error.body": "Bu bileşen yüklenirken bir şeyler ters gitti.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Tekrar deneyin", - "bundle_column_error.title": "Ağ hatası", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Kapat", "bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.", "bundle_modal_error.retry": "Tekrar deneyin", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 4ca7e4ad4d..cd87bd7a6f 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Ябу", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index ed1f9c3ae6..e008749667 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", - "bundle_column_error.title": "Network error", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index db900b0029..dd5a396d87 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -27,9 +27,9 @@ "account.edit_profile": "Редагувати профіль", "account.enable_notifications": "Повідомляти мене про дописи @{name}", "account.endorse": "Рекомендувати у профілі", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Останній допис {date}", + "account.featured_tags.last_status_never": "Немає дописів", + "account.featured_tags.title": "{name} виділяє хештеґи", "account.follow": "Підписатися", "account.followers": "Підписники", "account.followers.empty": "Ніхто ще не підписаний на цього користувача.", @@ -79,9 +79,15 @@ "audio.hide": "Сховати аудіо", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", - "bundle_column_error.body": "Щось пішло не так під час завантаження цього компоненту.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Спробуйте ще раз", - "bundle_column_error.title": "Помилка мережі", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Закрити", "bundle_modal_error.message": "Щось пішло не так під час завантаження цього компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 8be3a12a37..f68c829bbf 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} فی ہفتہ", "boost_modal.combo": "آئیندہ یہ نہ دیکھنے کیلئے آپ {combo} دبا سکتے ہیں", - "bundle_column_error.body": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "دوبارہ کوشش کریں", - "bundle_column_error.title": "نیٹ ورک کی خرابی", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "بند کریں", "bundle_modal_error.message": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.", "bundle_modal_error.retry": "دوبارہ کوشش کریں", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 79f68b9e43..1ef82dffd5 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -27,9 +27,9 @@ "account.edit_profile": "Sửa hồ sơ", "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Tút gần nhất {date}", + "account.featured_tags.last_status_never": "Chưa có tút", + "account.featured_tags.title": "Hashtag {name} thường dùng", "account.follow": "Theo dõi", "account.followers": "Người theo dõi", "account.followers.empty": "Chưa có người theo dõi nào.", @@ -79,9 +79,15 @@ "audio.hide": "Ẩn âm thanh", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", - "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Thử lại", - "bundle_column_error.title": "Không có kết nối internet", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Đóng", "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_modal_error.retry": "Thử lại", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 629f1b2691..41fe0786aa 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} ⵙ ⵉⵎⴰⵍⴰⵙⵙ", "boost_modal.combo": "You can press {combo} to skip this next time", - "bundle_column_error.body": "Something went wrong while loading this component.", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "ⴰⵍⵙ ⴰⵔⵎ", - "bundle_column_error.title": "ⴰⵣⴳⴰⵍ ⵏ ⵓⵥⵟⵟⴰ", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "ⵔⴳⵍ", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "ⴰⵍⵙ ⴰⵔⵎ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index b63b1e0fcb..9a2c4a03d6 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -79,9 +79,15 @@ "audio.hide": "隐藏音频", "autosuggest_hashtag.per_week": "每星期 {count} 条", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", - "bundle_column_error.body": "载入这个组件时发生了错误。", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "重试", - "bundle_column_error.title": "网络错误", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 3575d876bf..abc6d98d86 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -79,9 +79,15 @@ "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "如你想在下次路過這顯示,請按{combo},", - "bundle_column_error.body": "加載本組件出錯。", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "重試", - "bundle_column_error.title": "網絡錯誤", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "加載本組件出錯。", "bundle_modal_error.retry": "重試", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 8161aa013d..7d76a8cd0d 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -27,9 +27,9 @@ "account.edit_profile": "編輯個人檔案", "account.enable_notifications": "當 @{name} 嘟文時通知我", "account.endorse": "在個人檔案推薦對方", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "上次嘟文於 {date}", + "account.featured_tags.last_status_never": "沒有嘟文", + "account.featured_tags.title": "{name} 的特色主題標籤", "account.follow": "跟隨", "account.followers": "跟隨者", "account.followers.empty": "尚未有人跟隨這位使用者。", @@ -79,9 +79,15 @@ "audio.hide": "隱藏音訊", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "下次您可以按 {combo} 跳過", - "bundle_column_error.body": "載入此元件時發生錯誤。", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "重試", - "bundle_column_error.title": "網路錯誤", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "載入此元件時發生錯誤。", "bundle_modal_error.retry": "重試", diff --git a/config/locales/ar.yml b/config/locales/ar.yml index bb98ccb08a..a4a0aec5cf 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -537,73 +537,15 @@ ar: empty: لم يتم تحديد قواعد الخادم بعد. title: قوانين الخادم settings: - activity_api_enabled: - desc_html: عدد المنشورات المحلية و المستخدمين الناشطين و التسجيلات الأسبوعية الجديدة - title: نشر مُجمل الإحصائيات عن نشاط المستخدمين - bootstrap_timeline_accounts: - desc_html: افصل بين أسماء المستخدمين المتعددة بواسطة الفاصلة. استعمل الحسابات المحلية والمفتوحة فقط. الافتراضي عندما تكون فارغة كل المسؤولين المحليين. - title: الاشتراكات الافتراضية للمستخدمين الجدد - contact_information: - email: البريد الإلكتروني المهني - username: الاتصال بالمستخدِم - custom_css: - desc_html: يقوم بتغيير المظهر بواسطة سي أس أس يُحمَّل على كافة الصفحات - title: سي أس أس مخصص - default_noindex: - desc_html: يؤثر على جميع المستخدمين الذين لم يغيروا هذا الإعداد بأنفسهم - title: عدم السماح مبدئيا لمحركات البحث بفهرسة الملفات التعريفية للمستخدمين domain_blocks: all: للجميع disabled: لا أحد - title: اظهر خاصية حجب النطاقات users: للمستخدمين المتصلين محليا - domain_blocks_rationale: - title: اظهر السبب - mascot: - desc_html: معروض على عدة صفحات، يوصى بِعلى الأقل 293x205 بكسل، عند عدم التعيين، تعود الصورة إلى التميمة الافتراضية - title: صورة الماسكوت - peers_api_enabled: - desc_html: أسماء النطاقات التي التقى بها مثيل الخادوم على البيئة الموحَّدة فديفرس - title: نشر عدد مثيلات الخوادم التي تم مصادفتها - preview_sensitive_media: - desc_html: روابط المُعَاينة على مواقع الويب الأخرى ستقوم بعرض صُوَر مصغّرة حتى و إن كانت الوسائط حساسة - title: إظهار الصور الحساسة في مُعاينات أوبن غراف - profile_directory: - desc_html: السماح للمستخدمين الكشف عن حساباتهم - title: تفعيل دليل الصفحات التعريفية - registrations: - closed_message: - desc_html: يتم عرضه على الصفحة الرئيسية عندما يتم غلق تسجيل الحسابات الجديدة. يمكنكم إستخدام علامات الأيتش تي أم أل HTML - title: رسالة التسجيلات المقفلة - require_invite_text: - desc_html: عندما تتطلب التسجيلات الموافقة اليدوية، جعل إدخال نص لسؤال "لماذا تريد أن تنضم؟" إلزاميا بدلاً من اختياري - title: الطلب من المستخدمين الجدد إدخال سبب للتسجيل registrations_mode: modes: approved: طلب الموافقة لازم عند إنشاء حساب none: لا أحد يمكنه إنشاء حساب open: يمكن للجميع إنشاء حساب - title: طريقة إنشاء الحسابات - site_description: - desc_html: فقرة تمهيدية على الصفحة الأولى. صف ميزات خادوم ماستدون هذا و ما يميّزه عن الآخرين. يمكنك استخدام علامات HTML ، ولا سيما <a> و <em>. - title: وصف مثيل الخادوم - site_description_extended: - desc_html: مكان جيد لمدونة قواعد السلوك والقواعد والإرشادات وغيرها من الأمور التي تحدد حالتك. يمكنك استخدام علامات HTML - title: الوصف المُفصّل للموقع - site_short_description: - desc_html: يتم عرضه في لوحة جانبية و في البيانات الوصفية. قم بوصف ماستدون و ما يميز هذا السيرفر عن الآخرين في فقرة موجزة. إن تركت الحقل فارغا فسوف يتم عرض الوصف الافتراضي لمثيل الخادوم. - title: مقدمة وصفية قصيرة عن مثيل الخادوم - site_title: اسم مثيل الخادم - thumbnail: - desc_html: يستخدم للعروض السابقة عبر Open Graph و API. 1200x630px موصى به - title: الصورة الرمزية المصغرة لمثيل الخادوم - timeline_preview: - desc_html: عرض الخيط العمومي على صفحة الاستقبال - title: مُعاينة الخيط العام - title: إعدادات الموقع - trends: - desc_html: عرض علني للوسوم المستعرضة سابقاً التي هي رائجة الآن - title: الوسوم المتداولة site_uploads: delete: احذف الملف الذي تم تحميله destroyed_msg: تم حذف التحميل مِن الموقع بنجاح! diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 965a16aeba..30bb52c5a8 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -97,14 +97,6 @@ ast: permissions_count: one: "%{count} permisu" other: "%{count} permisos" - settings: - site_description: - title: Descripción del sirvidor - site_terms: - desc_html: Pues escribir la to política de privacidá. Tamién pues usar etiquetes HTML - title: Política de privacidá personalizada - site_title: Nome del sirvidor - title: Axustes del sitiu title: Alministración webhooks: events: Eventos diff --git a/config/locales/br.yml b/config/locales/br.yml index afb102dc76..b9bf388869 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -116,8 +116,6 @@ br: settings: domain_blocks: all: D'an holl dud - site_title: Anv ar servijer - title: Arventennoù al lec'hienn statuses: deleted: Dilamet warning_presets: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index c5f21b0cb9..5b09132933 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -667,79 +667,40 @@ ca: empty: Encara no s'han definit les normes del servidor. title: Normes del servidor settings: - activity_api_enabled: - desc_html: Nombre de publicacions publicades localment, usuaris actius i registres nous en períodes setmanals - title: Publica estadístiques agregades sobre l'activitat de l'usuari - bootstrap_timeline_accounts: - desc_html: Separa diversos noms d'usuari amb comes. Només funcionaran els comptes locals i desblocats. El valor predeterminat quan està buit és tots els administradors locals. - title: El seguiment per defecte per als usuaris nous - contact_information: - email: Adreça electrònica d'empresa - username: Nom d'usuari del contacte - custom_css: - desc_html: Modifica l'aspecte amb CSS carregat a cada pàgina - title: CSS personalitzat - default_noindex: - desc_html: Afecta a tots els usuaris que no han canviat aquest ajustament ells mateixos - title: Configura per defecte als usuaris fora de la indexació del motor de cerca + about: + manage_rules: Gestiona les normes del servidor + preamble: Proporciona informació detallada sobre com funciona, com es modera i com es financia el servidor. + rules_hint: Hi ha un àrea dedicada a les normes a les que s'espera que els teus usuaris s'hi adhereixin. + title: Quant a + appearance: + preamble: Personalitza l'interfície web de Mastodon. + title: Aparença + branding: + preamble: La marca del teu servidor el diferència dels demés servidors de la xarxa. Aquesta informació es pot mostrar en diversos entorns com ara en l'interfície web, en les aplicacions natives, en les previsualitzacions dels enllaços en altres webs, dins les aplicacions de missatgeria i d'altres. Per aquesta raó, és millor mantenir aquesta informació clara, breu i precisa. + title: Marca + content_retention: + preamble: Controla com es desa a Mastodon el contingut generat per l'usuari. + title: Retenció de contingut + discovery: + follow_recommendations: Seguir les recomanacions + preamble: L'aparició de contingut interessant és fonamental per atraure els nous usuaris que podrien no saber res de Mastodon. Controla com funcionen diverses opcions de descobriment en el teu servidor. + profile_directory: Directori de perfils + public_timelines: Línies de temps públiques + title: Descobriment + trends: Tendències domain_blocks: all: Per a tothom disabled: Per a ningú - title: Mostra els bloquejos de domini users: Per als usuaris locals en línia - domain_blocks_rationale: - title: Mostra el raonament - mascot: - desc_html: Es mostra a diverses pàgines. Es recomana com a mínim 293 × 205px. Si no està configurat, torna a la mascota predeterminada - title: Imatge de la mascota - peers_api_enabled: - desc_html: Els noms de domini que aquest servidor ha trobat al fedivers - title: Publica la llista de servidors descoberts - preview_sensitive_media: - desc_html: Les visualitzacions prèvies d'enllaços d'altres llocs web mostraran una miniatura encara que els mitjans de comunicació estiguin marcats com a sensibles - title: Mostra els mitjans sensibles a les previsualitzacions d'OpenGraph - profile_directory: - desc_html: Permet als usuaris ser descoberts - title: Habilita el directori de perfils registrations: - closed_message: - desc_html: Apareix en la primera pàgina quan es tanquen els registres. Pots utilitzar etiquetes HTML - title: Missatge de registre tancat - require_invite_text: - desc_html: Quan el registre requereix aprovació manual, fer que sigui obligatori enlloc d'opcions l escriure el text de la solicitud d'invitació "Perquè vols unirte?" - title: Requerir als nous usuaris omplir el text de la solicitud d'invitació + preamble: Controla qui pot crear un compte en el teu servidor. + title: Registres registrations_mode: modes: approved: Es requereix l’aprovació per registrar-se none: Ningú no pot registrar-se open: Qualsevol pot registrar-se - title: Mode de registres - site_description: - desc_html: Paràgraf introductori a la pàgina principal i en etiquetes meta. Pots utilitzar etiquetes HTML, en particular <a> i <em>. - title: Descripció del servidor - site_description_extended: - desc_html: Un bon lloc per al codi de conducta, regles, directrius i altres coses que distingeixen el teu servidor. Pots utilitzar etiquetes HTML - title: Descripció ampliada del lloc - site_short_description: - desc_html: Es mostra a la barra lateral i a metaetiquetes. Descriu en un únic paràgraf què és Mastodon i què fa que aquest servidor sigui especial. - title: Descripció curta del servidor - site_terms: - desc_html: Pots escriure la teva pròpia política de privacitat. Pots fer servir etiquetes HTML - title: Política de privacitat personalitzada - site_title: Nom del servidor - thumbnail: - desc_html: S'utilitza per obtenir visualitzacions prèvies a través d'OpenGraph i API. Es recomana 1200x630px - title: Miniatura del servidor - timeline_preview: - desc_html: Mostra l'enllaç a la línia de temps pública a la pàgina inicial i permet l'accés a l'API a la línia de temps pública sense autenticació - title: Permet l'accés no autenticat a la línia de temps pública - title: Configuració del lloc - trendable_by_default: - desc_html: El contingut específic de la tendència encara pot explícitament no estar permès - title: Permet tendències sense revisió prèvia - trends: - desc_html: Mostra públicament les etiquetes revisades anteriorment que actualment estan en tendència - title: Etiquetes tendència + title: Paràmetres del servidor site_uploads: delete: Esborra el fitxer pujat destroyed_msg: La càrrega al lloc s'ha suprimit correctament! diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 56f34d50fa..562c6b00a9 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -503,72 +503,15 @@ ckb: empty: هێشتا هیچ یاسایەکی سێرڤەر پێناسە نەکراوە. title: یاساکانی سێرڤەر settings: - activity_api_enabled: - desc_html: ژماردنی دۆخی بڵاوکراوە ی ناوخۆیی و بەکارهێنەرە چالاکەکان و تۆماری نوێ لە سەتڵی هەفتانە - title: بڵاوکردنەوەی ئاماری کۆ دەربارەی چالاکی بەکارهێنەر - bootstrap_timeline_accounts: - desc_html: چەند ناوی بەکارهێنەرێک جیابکە بە بۆر، تەنها هەژمارەی بلۆککراوەکان و ناوخۆیی کاردەکەن. بنەڕەت کاتێک بەتاڵ بوو هەموو بەڕێوەبەرە خۆجێیەکانن. - title: بەدواداچوەکانی گریمانەیی بۆ بەکارهێنەرە نوێکان - contact_information: - email: ئیمەیلی بازرگانی - username: ناوی بەکارهێنەر - custom_css: - desc_html: دەستکاری کردنی شێوەی CSS بارکراو لەسەر هەموو لاپەڕەکان - title: CSSی تایبەتمەند - default_noindex: - desc_html: کاردەکاتە سەر هەموو بەکارهێنەرەکان کە ئەم ڕێکخستنە خۆیان نەگۆڕاون - title: بەکارهێنەران لە پێڕستکردنی بزوێنەری گەڕان بە گریمانەیی هەڵبژێن domain_blocks: all: بۆ هەموو کەسێک disabled: بۆ هیچ کەسێک - title: بلۆکەکانی دۆمەین پیشان بدە users: بۆ چوونە ژوورەوەی بەکارهێنەرانی ناوخۆ - domain_blocks_rationale: - title: پیشاندانی ڕێژەیی - mascot: - desc_html: نیشان دراوە لە چەند لاپەڕەیەک. بەلایەنی کەمەوە 293× 205px پێشنیارکراوە. کاتێک دیاری ناکرێت، دەگەڕێتەوە بۆ بەختبەختێکی ئاسایی - title: وێنەی ماسکۆت - peers_api_enabled: - desc_html: ناوی دۆمەینەکانێک کە ئەم ڕاژە پەیوەندی پێوەگرتووە - title: بڵاوکردنەوەی لیستی راژەکانی دۆزراوە - preview_sensitive_media: - desc_html: بینینی لینک لە وێب سایتەکانی تر وێنۆچکەیەک پیشان دەدات تەنانەت ئەگەر میدیاکە بە هەستیاری نیشان کرابێت - title: پیشاندانی میدیای هەستیار لە پێشبینیەکانی OpenGraph - profile_directory: - desc_html: ڕێگەدان بە بەکارهێنەران بۆ دۆزینەوەیان - title: چالاککردنی ڕێنیشاندەرێکی پرۆفایل - registrations: - closed_message: - desc_html: لە پەڕەی پێشەوە پیشان دەدرێت کاتێک تۆمارەکان داخراون. دەتوانیت تاگەکانی HTML بەکاربێنیت - title: نامەی تۆمارکردن داخراو - require_invite_text: - desc_html: کاتێک تۆمارکردنەکان پێویستیان بە ڕەزامەندی دەستی هەیە، "بۆچی دەتەوێت بەشداری بکەیت؟" نووسینی دەق ئیجبارییە نەک ئیختیاری registrations_mode: modes: approved: پەسەندکردنی داواکراو بۆ ناوتۆمارکردن none: کەس ناتوانێت خۆی تۆمار بکات open: هەر کەسێک دەتوانێت خۆی تۆمار بکات - title: مەرجی تۆمارکردن - site_description: - desc_html: کورتە باسیک دەربارەی API، دەربارەی ئەوە چ شتێک دەربارەی ئەم ڕاژەی ماستۆدۆن تایبەتە یان هەر شتێکی گرینگی دیکە. دەتوانن HTML بنووسن، بەتایبەت <a> وە <em>. - title: دەربارەی ئەم ڕاژە - site_description_extended: - desc_html: شوێنیکی باشە بۆ نووسینی سیاسەتی ئیس، یاسا و ڕێسا ، ڕێنمایی و هەر شتیک کە تایبەت بەم ڕاژیە، تاگەکانی HTMLــلیش ڕێگەی پێدراوە - title: زانیاری تەواوکەری تایبەتمەندی - site_short_description: - desc_html: نیشان لە شریتی لاتەنیشت و مێتا تاگەکان. لە پەرەگرافێک دا وەسفی بکە کە ماستۆدۆن چیە و چی وا لە ڕاژە کە دەکات تایبەت بێت. - title: دەربارەی ئەم ڕاژە - site_title: ناوی ڕاژە - thumbnail: - desc_html: بۆ پێشبینین بەکارهاتووە لە ڕێگەی OpenGraph وە API. ڕووناکی بینین ١٢٠٠x٦٣٠پیکسێڵ پێشنیارکراوە - title: وێنەی بچکۆلەی ڕاژە - timeline_preview: - desc_html: لینکەکە نیشان بدە بۆ هێڵی کاتی گشتی لەسەر پەڕەی نیشتنەوە و ڕێگە بە API بدە دەستگەیشتنی هەبێت بۆ هێڵی کاتی گشتی بەبێ سەلماندنی ڕەسەنایەتی - title: ڕێگەبدە بە چوونە ژورەوەی نەسەلمێنراو بۆ هێڵی کاتی گشتی - title: ڕێکخستنەکانی ماڵپەڕ - trends: - desc_html: بە ئاشکرا هاشتاگی پێداچوونەوەی پێشوو پیشان بدە کە ئێستا بەرچاوکراوەن - title: هاشتاگی بەرچاوکراوە site_uploads: delete: سڕینەوەی فایلی بارکراو destroyed_msg: بارکردنی ماڵپەڕ بە سەرکەوتوویی سڕدراوەتەوە! diff --git a/config/locales/co.yml b/config/locales/co.yml index 48909a4b58..6e2066acca 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -462,73 +462,15 @@ co: edit: Mudificà regula title: Regule di u servore settings: - activity_api_enabled: - desc_html: Numeri di statuti creati quì, utilizatori attivi, è arregistramenti novi tutte e settimane - title: Pubblicà statistiche nant’à l’attività di l’utilizatori - bootstrap_timeline_accounts: - desc_html: Cugnomi separati cù virgule. Solu pussibule cù conti lucali è pubblichi. Quandu a lista hè viota, tutti l’amministratori lucali saranu selezziunati. - title: Abbunamenti predefiniti per l’utilizatori novi - contact_information: - email: E-mail prufissiunale - username: Identificatore di cuntattu - custom_css: - desc_html: Mudificà l'apparenza cù CSS caricatu nant'à ogni pagina - title: CSS persunalizatu - default_noindex: - desc_html: Tocca tutti quelli ch'ùn anu micca cambiatu stu parametru - title: Ritirà l'utilizatori di l'indicazione nant'à i mutori di ricerca domain_blocks: all: À tutti disabled: À nimu - title: Mustrà blucchime di duminiu users: À l'utilizatori lucali cunnettati - domain_blocks_rationale: - title: Vede ragiò - mascot: - desc_html: Affissata nant'à parechje pagine. Almenu 293x205px ricumandatu. S'ella hè lasciata viota, a mascotta predefinita sarà utilizata - title: Ritrattu di a mascotta - peers_api_enabled: - desc_html: Indirizzi web stu servore hà vistu indè u fediversu - title: Pubblicà a lista di servori cunnisciuti - preview_sensitive_media: - desc_html: E priviste di i ligami nant'à l'altri siti mustreranu una vignetta ancu s'ellu hè marcatu cum'è sensibile u media - title: Vede media sensibili in e viste OpenGraph - profile_directory: - desc_html: Auturizà a scuperta di l'utilizatori - title: Attivà l'annuariu di i prufili - registrations: - closed_message: - desc_html: Affissatu nant’a pagina d’accolta quandu l’arregistramenti sò chjosi. Pudete fà usu di u furmattu HTML - title: Missaghju per l’arregistramenti chjosi - require_invite_text: - desc_html: Quandu l'arregistramenti necessitanu un'apprubazione manuale, fà chì u testu "Perchè vulete ghjunghje?" sia ubligatoriu invece d'esse facultativu - title: Richiede chì i novi utilizatori empiinu una dumanda d'invitazione registrations_mode: modes: approved: Apprubazione necessaria per arregistrassi none: Nimu ùn pò arregistrassi open: Tutt'ognunu pò arregistrassi - title: Modu d'arregistramenti - site_description: - desc_html: Paragrafu di prisentazione nant’a pagina d’accolta. Parlate di cio chì rende stu servore speziale, o d'altre cose impurtante. Pudete fà usu di marchi HTML, in particulare <a> è <em>. - title: Discrizzione di u servore - site_description_extended: - desc_html: Una bona piazza per e regule, infurmazione è altre cose chì l’utilizatori duverìanu sapè. Pudete fà usu di marchi HTML - title: Discrizzione stesa di u situ - site_short_description: - desc_html: Mustratu indè a barra laterala è i tag meta. Spiegate quale hè Mastodon è ciò chì rende u vostru servore speciale in un paragrafu. S'ella hè lasciata viota, a discrizzione di u servore sarà utilizata. - title: Descrizzione corta di u servore - site_title: Nome di u servore - thumbnail: - desc_html: Utilizatu per viste cù OpenGraph è l’API. Ricumandemu 1200x630px - title: Vignetta di u servore - timeline_preview: - desc_html: Vede a linea pubblica nant’a pagina d’accolta - title: Vista di e linee - title: Parametri di u situ - trends: - desc_html: Mustrà à u pubblicu i hashtag chì sò stati digià verificati è chì sò in e tendenze avà - title: Tendenze di hashtag site_uploads: delete: Sguassà u fugliale caricatu destroyed_msg: Fugliale sguassatu da u situ! diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 08e9e187b4..64224e8d51 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -687,79 +687,39 @@ cs: empty: Zatím nebyla definována žádná pravidla serveru. title: Pravidla serveru settings: - activity_api_enabled: - desc_html: Počty lokálně publikovaných příspěvků, aktivních uživatelů a nových registrací, v týdenních intervalech - title: Publikovat hromadné statistiky o uživatelské aktivitě v API - bootstrap_timeline_accounts: - desc_html: Více uživatelských jmen oddělte čárkou. U těchto účtů bude zaručeno, že budou vždy zobrazeny mezi doporučenými sledováními - title: Doporučit tyto účty novým uživatelům - contact_information: - email: Pracovní e-mail - username: Uživatelské jméno pro kontaktování - custom_css: - desc_html: Pozměnit vzhled pomocí CSS šablony načítané na každé stránce - title: Vlastní CSS - default_noindex: - desc_html: Ovlivňuje všechny uživatele, kteří toto nastavení sami nezměnili - title: Ve výchozím stavu odhlásit uživatele z indexování vyhledávači + about: + manage_rules: Spravovat pravidla serveru + preamble: Uveďte podrobné informace o tom, jak je server provozován, moderován, financován. + rules_hint: Existuje vyhrazená oblast pro pravidla, u nichž se očekává, že je budou uživatelé dodržovat. + title: O aplikaci + appearance: + preamble: Přizpůsobte si webové rozhraní Mastodon. + title: Vzhled + branding: + title: Značka + content_retention: + preamble: Určuje, jak je obsah generovaný uživatelem uložen v Mastodonu. + title: Uchovávání obsahu + discovery: + follow_recommendations: Doporučená sledování + preamble: Povrchový zajímavý obsah je užitečný pro zapojení nových uživatelů, kteří možná neznají žádného Mastodona. Mějte pod kontrolou, jak různé objevovací funkce fungují na vašem serveru. + profile_directory: Adresář profilů + public_timelines: Veřejné časové osy + title: Objevujte + trends: Trendy domain_blocks: all: Všem disabled: Nikomu - title: Zobrazit blokace domén users: Přihlášeným místním uživatelům - domain_blocks_rationale: - title: Zobrazit odůvodnění - mascot: - desc_html: Zobrazuje se na několika stránkách. Doporučujeme rozlišení alespoň 293x205 px. Pokud toto není nastaveno, bude zobrazen výchozí maskot - title: Obrázek maskota - peers_api_enabled: - desc_html: Domény, na které tento server narazil ve fedivesmíru - title: Zveřejnit seznam objevených serverů v API - preview_sensitive_media: - desc_html: Náhledy odkazů na jiných stránkách budou zobrazeny i pokud jsou media označena jako citlivá - title: Zobrazovat v náhledech OpenGraph i citlivá média - profile_directory: - desc_html: Dovolit uživatelům být objevitelní - title: Povolit adresář profilů registrations: - closed_message: - desc_html: Zobrazí se na hlavní stránce, jsou-li registrace uzavřeny. Můžete použít i HTML značky - title: Zpráva o uzavřených registracích - require_invite_text: - desc_html: Když jsou registrace schvalovány ručně, udělat odpověď na otázku "Proč se chcete připojit?" povinnou - title: Požadovat od nových uživatelů zdůvodnění založení + preamble: Mějte pod kontrolou, kdo může vytvořit účet na vašem serveru. + title: Registrace registrations_mode: modes: approved: Pro registraci je vyžadováno schválení none: Nikdo se nemůže registrovat open: Kdokoliv se může registrovat - title: Režim registrací - site_description: - desc_html: Úvodní odstavec v API. Popište, čím se tento server Mastodon odlišuje od ostatních, a cokoliv jiného, co je důležité. Můžete zde používat HTML značky, hlavně <a> a <em>. - title: Popis serveru - site_description_extended: - desc_html: Dobré místo pro vaše pravidla, pokyny a jiné věci, které váš server odlišují od ostatních. Lze použít HTML značky - title: Vlastní rozšířené informace - site_short_description: - desc_html: Zobrazeno v postranním panelu a meta značkách. V jednom odstavci popište, co je Mastodon a čím se tento server odlišuje od ostatních. - title: Krátký popis serveru - site_terms: - desc_html: Můžete napsat své vlastní zásady ochrany osobních údajů. HTML tagy můžete použít - title: Vlastní zásady ochrany osobních údajů - site_title: Název serveru - thumbnail: - desc_html: Používáno pro náhledy přes OpenGraph a API. Doporučujeme rozlišení 1200x630px - title: Miniatura serveru - timeline_preview: - desc_html: Zobrazit na hlavní stránce odkaz na veřejnou časovou osu a povolit přístup na veřejnou časovou osu pomocí API bez autentizace - title: Povolit neautentizovaný přístup k časové ose - title: Nastavení stránky - trendable_by_default: - desc_html: Specifický populární obsah může být i nadále výslovně zakázán - title: Povolit trendy bez předchozí revize - trends: - desc_html: Veřejně zobrazit dříve schválený obsah, který je zrovna populární - title: Trendy + title: Nastavení serveru site_uploads: delete: Odstranit nahraný soubor destroyed_msg: Upload stránky byl úspěšně smazán! diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 756bcea87a..88edb06d1b 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -363,70 +363,15 @@ cy: unresolved: Heb ei ddatrys updated_at: Diweddarwyd settings: - activity_api_enabled: - desc_html: Niferoedd o statysau wedi eu postio'n lleol, defnyddwyr gweithredol, a cofrestradau newydd mewn bwcedi wythnosol - title: Cyhoeddi ystatedgau cyfangronedig am weithgaredd defnyddwyr - bootstrap_timeline_accounts: - desc_html: Gwahanu sawl enw defnyddiwr a coma. Dim ond cyfrifoedd lleol a cyfrifoedd heb eu cloi fydd yn gweithio. Tra bod yn aros yn wag yr hyn sy'n rhagosodedig yw'r holl weinyddwyr lleol. - title: Dilyn diofyn i ddefnyddwyr newydd - contact_information: - email: E-bost busnes - username: Enw defnyddiwr cyswllt - custom_css: - desc_html: Addasu gwedd gyda CSS wedi lwytho ar bob tudalen - title: CSS wedi'i addasu - default_noindex: - desc_html: Yn effeithio pob defnyddwr sydd heb newid y gosodiad ei hun - title: Eithrio defnyddwyr o fynegai peiriannau chwilio yn rhagosodiedig domain_blocks: all: I bawb disabled: I neb - title: Dangos rhwystriadau parth users: I ddefnyddwyr lleol mewngofnodadwy - domain_blocks_rationale: - title: Dangos rhesymwaith - mascot: - desc_html: I'w arddangos ar nifer o dudalennau. Awgrymir 293x205px o leiaf. Pan nad yw wedi ei osod, cwympo nôl i'r mascot rhagosodedig - title: Llun mascot - peers_api_enabled: - desc_html: Enwau parth y mae'r achos hwn wedi dod ar ei draws yn y ffedysawd - title: Cyhoeddi rhestr o achosion dargynfyddiedig - preview_sensitive_media: - desc_html: Bydd rhagolygon ar wefannau eraill yn dangos ciplun hyd yn oed os oes na gyfryngau wedi eu marcio'n sensitif - title: Dangos cyfryngau sensitif mewn rhagolygon OpenGraph - profile_directory: - desc_html: Caniatáu i ddefnyddwyr gael eu gweld - title: Galluogi cyfeiriadur proffil - registrations: - closed_message: - desc_html: I'w arddangos ar y dudalen flaen wedi i gofrestru cau. Mae modd defnyddio tagiau HTML - title: Neges gofrestru caeëdig registrations_mode: modes: approved: Mae angen cymeradwyaeth ar gyfer cofrestru none: Ni all unrhyw un cofrestru open: Gall unrhyw un cofrestru - title: Modd cofrestriadau - site_description: - desc_html: Paragraff agoriadol ar y dudalen flaen. Disgrifiwch yr hyn sy'n arbennig am y gweinydd Mastodon hwn ac unrhywbeth arall o bwys. Mae modd defnyddio tagiau HTML <a> a <em>. - title: Disgrifiad achos - site_description_extended: - desc_html: Lle da ar gyfer eich cod ymddygiad, rheolau, canllawiau a phethau eraill sy'n gwneud eich achos yn whanol. Mae modd i chi ddefnyddio tagiau HTML - title: Gwybodaeth bellach wedi ei addasu - site_short_description: - desc_html: Yn cael ei ddangos yn bar ar yr ochr a tagiau meto. Digrifiwch beth yw Mastodon a beth sy'n gwneud y gweinydd hwn mewn un paragraff. Os yn wag, wedi ei ragosod i ddangos i disgrifiad yr achos. - title: Disgrifiad byr o'r achos - site_title: Enw'r achos - thumbnail: - desc_html: Ceith ei ddefnyddio ar gyfer rhagolygon drwy OpenGraph a'r API. Argymhellir 1200x630px - title: Mân-lun yr achos - timeline_preview: - desc_html: Dangos ffrwd gyhoeddus ar y dudalen lanio - title: Rhagolwg o'r ffrwd - title: Gosodiadau'r wefan - trends: - desc_html: Arddangos hashnodau a adolygwyd yn gynt yn gyhoeddus sydd yn tueddu yn bresennol - title: Hashnodau tueddig site_uploads: delete: Dileu ffeil sydd wedi'i uwchlwytho destroyed_msg: Uwchlwythiad wefan wedi'i ddileu yn lwyddianus! diff --git a/config/locales/da.yml b/config/locales/da.yml index f3b030cc0f..5128e87f32 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -667,79 +667,40 @@ da: empty: Ingen serverregler defineret endnu. title: Serverregler settings: - activity_api_enabled: - desc_html: Antal lokalt opslåede indlæg, aktive brugere samt nye tilmeldinger i ugentlige opdelinger - title: Offentliggør samlede statistikker vedr. brugeraktivitet i API'en - bootstrap_timeline_accounts: - desc_html: Adskil flere brugernavne med kommaer. Disse konti vil være garanteret visning i følg-anbefalinger - title: Anbefal disse konti til nye brugere - contact_information: - email: Forretningse-mail - username: Kontaktbrugernavn - custom_css: - desc_html: Ændre udseendet med CSS indlæst på hver side - title: Tilpasset CSS - default_noindex: - desc_html: Påvirker alle brugere, som ikke selv har ændret denne indstilling - title: Fravælg som standard søgemaskineindekseringer for brugere + about: + manage_rules: Håndtér serverregler + preamble: Giv dybdegående oplysninger om, hvordan serveren opereres, modereres, finansieres. + rules_hint: Der er et dedikeret område for regler, som forventes overholdt af brugerne. + title: Om + appearance: + preamble: Tilpas Mastodon-webgrænsefladen. + title: Udseende + branding: + preamble: Serverens branding adskiller den fra andres i netværket. Oplysningerne kan vises på tværs af div. miljøer, såsom Mastodon-webgrænsefladen, dedikerede applikationer, i-link forhåndsvisninger på andre websteder og i besked-apps mv. Oplysningerne bør derfor være klare og detaljerede, men samtidig kortfattede. + title: Branding + content_retention: + preamble: Styr, hvordan Mastodon gemmer brugergenereret indhold. + title: Indholdsopbevaring + discovery: + follow_recommendations: Følg-anbefalinger + preamble: At vise interessant indhold er vital ifm. at få nye brugere om bord, som måske ikke kender nogen på Mastodon. Styr, hvordan forskellige opdagelsesfunktioner fungerer på serveren. + profile_directory: Profilmappe + public_timelines: Offentlige tidslinjer + title: Opdagelse + trends: Trends domain_blocks: all: Til alle disabled: Til ingen - title: Vis domæneblokeringer users: Til indloggede lokale brugere - domain_blocks_rationale: - title: Vis begrundelse - mascot: - desc_html: Vises på flere sider. Mindst 293x205px anbefales. Hvis ikke opsat, benyttes standardmaskot - title: Maskotbillede - peers_api_enabled: - desc_html: Domænenavne, denne server er stødt på i fediverset - title: Udgiv liste over fundne server i API'en - preview_sensitive_media: - desc_html: Linkforhåndsvisninger på andre websteder vil vise et miniaturebillede, selv hvis mediet er markeret som sensitivt - title: Vis sensitive medier i OpenGraph-forhåndsvisninger - profile_directory: - desc_html: Tillad brugere at blive fundet - title: Aktivér profilmappe registrations: - closed_message: - desc_html: Vises på forside, når tilmeldingsmuligheder er lukket. HTML-tags kan bruges - title: Lukket tilmelding-besked - require_invite_text: - desc_html: Når tilmelding kræver manuel godkendelse, så gør “Hvorfor ønsker du at deltage?” tekstinput obligatorisk i stedet for valgfrit - title: Nye brugere afkræves tilmeldingsbegrundelse + preamble: Styr, hvem der kan oprette en konto på serveren. + title: Registreringer registrations_mode: modes: approved: Tilmeldingsgodkendelse kræves none: Ingen kan tilmelde sig open: Alle kan tilmelde sig - title: Tilmeldingstilstand - site_description: - desc_html: Introduktionsafsnit på API'en. Beskriv, hvad der gør denne Mastodonserver speciel samt alt andet vigtigt. HTML-tags kan bruges, især <a> og <em>. - title: Serverbeskrivelse - site_description_extended: - desc_html: Et god placering til adfærdskodes, regler, retningslinjer mv., som gør denne server unik. HTML-tags kan bruges - title: Tilpasset udvidet information - site_short_description: - desc_html: Vises på sidebjælke og metatags. Beskriv i et enkelt afsnit, hvad Mastodon er, og hvad der gør denne server speciel. - title: Kort serverbeskrivelse - site_terms: - desc_html: Man kan skrive sin egen fortrolighedspolitik. HTML-tags understøttes - title: Tilpasset fortrolighedspolitik - site_title: Servernavn - thumbnail: - desc_html: Bruges til forhåndsvisninger via OpenGraph og API. 1200x630px anbefales - title: Serverminiaturebillede - timeline_preview: - desc_html: Vis link til offentlig tidslinje på indgangssiden og lad API'en tilgå den offentlige tidslinje uden godkendelse - title: Tillad ikke-godkendt tilgang til offentlig tidslinje - title: Webstedsindstillinger - trendable_by_default: - desc_html: Bestemt tendensindhold kan stadig udtrykkeligt forbydes - title: Tillad tendenser uden forudgående gennemsyn - trends: - desc_html: Vis offentligt tidligere reviderede hashtags, som pt. trender - title: Populært + title: Serverindstillinger site_uploads: delete: Slet uploadet fil destroyed_msg: Websteds-upload blev slettet! diff --git a/config/locales/de.yml b/config/locales/de.yml index e1e298ef0b..2727654310 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -667,79 +667,15 @@ de: empty: Es wurden bis jetzt keine Server-Regeln definiert. title: Server-Regeln settings: - activity_api_enabled: - desc_html: Anzahl der lokal geposteten Beiträge, aktiven Nutzern und neuen Registrierungen in wöchentlichen Zusammenfassungen - title: Veröffentliche gesamte Statistiken über Benutzeraktivitäten - bootstrap_timeline_accounts: - desc_html: Mehrere Profilnamen durch Kommata trennen. Diese Konten werden immer in den Folgemempfehlungen angezeigt - title: Konten, welche neuen Benutzern empfohlen werden sollen - contact_information: - email: Öffentliche E-Mail-Adresse - username: Profilname für die Kontaktaufnahme - custom_css: - desc_html: Verändere das Aussehen mit CSS-Stilen, die auf jeder Seite geladen werden - title: Benutzerdefiniertes CSS - default_noindex: - desc_html: Beeinflusst alle Benutzer, die diese Einstellung nicht selbst geändert haben - title: Benutzer aus Suchmaschinen-Indizierung standardmäßig herausnehmen domain_blocks: all: An alle disabled: An niemanden - title: Zeige Domain-Blockaden users: Für angemeldete lokale Benutzer - domain_blocks_rationale: - title: Rationale anzeigen - mascot: - desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde, wird stattdessen das Standard-Maskottchen genutzt werden. - title: Maskottchen-Bild - peers_api_enabled: - desc_html: Domain-Namen, die der Server im Fediversum gefunden hat - title: Veröffentliche entdeckte Server durch die API - preview_sensitive_media: - desc_html: Linkvorschauen auf anderen Webseiten werden ein Vorschaubild anzeigen, obwohl die Medien als NSFW markiert sind - title: NSFW-Medien in OpenGraph-Vorschau anzeigen - profile_directory: - desc_html: Erlaube es Benutzern, auffindbar zu sein - title: Aktiviere Profilverzeichnis - registrations: - closed_message: - desc_html: Wird auf der Einstiegsseite gezeigt, wenn die Anmeldung geschlossen ist. Du kannst HTML-Tags nutzen - title: Nachricht über geschlossene Registrierung - require_invite_text: - desc_html: Wenn eine Registrierung manuell genehmigt werden muss, mache den „Warum möchtest du beitreten?“-Text obligatorisch statt optional - title: Neue Benutzer müssen einen Einladungstext ausfüllen registrations_mode: modes: approved: Zustimmung benötigt zur Registrierung none: Niemand kann sich registrieren open: Jeder kann sich registrieren - title: Registrierungsmodus - site_description: - desc_html: Einleitungsabschnitt auf der Frontseite. Beschreibe, was diesen Mastodon-Server ausmacht. Du kannst HTML-Tags benutzen, insbesondere <a> und <em>. - title: Beschreibung des Servers - site_description_extended: - desc_html: Bietet sich für Verhaltenskodizes, Regeln, Richtlinien und weiteres an, was deinen Server auszeichnet. Du kannst HTML-Tags benutzen - title: Erweiterte Beschreibung des Servers - site_short_description: - desc_html: Wird in der Seitenleiste und in Meta-Tags angezeigt. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet. - title: Kurze Beschreibung des Servers - site_terms: - desc_html: Sie können Ihre eigenen Datenschutzrichtlinien schreiben. Sie können HTML-Tags verwenden - title: Benutzerdefinierte Datenschutzerklärung - site_title: Name des Servers - thumbnail: - desc_html: Wird für die Vorschau via OpenGraph und API verwendet. 1200×630 px wird empfohlen - title: Vorschaubild des Servers - timeline_preview: - desc_html: Auf der Einstiegsseite die öffentliche Zeitleiste anzeigen - title: Zeitleisten-Vorschau - title: Server-Einstellungen - trendable_by_default: - desc_html: Bestimmte angesagte Inhalte können immer noch explizit deaktiviert werden - title: Trends ohne vorherige Überprüfung erlauben - trends: - desc_html: Zuvor überprüfte Hashtags öffentlich anzeigen, die derzeit angesagt sind - title: Trendende Hashtags site_uploads: delete: Hochgeladene Datei löschen destroyed_msg: Upload erfolgreich gelöscht! diff --git a/config/locales/devise.hu.yml b/config/locales/devise.hu.yml index 82520cef75..ddadd17894 100644 --- a/config/locales/devise.hu.yml +++ b/config/locales/devise.hu.yml @@ -22,7 +22,7 @@ hu: action_with_app: Megerősítés majd vissza ide %{app} explanation: Ezzel az e-mail címmel kezdeményeztek regisztrációt a(z) %{host} oldalon. Csak egy kattintás, és a felhasználói fiókodat aktiváljuk. Ha a regisztrációt nem te kezdeményezted, kérjük tekintsd ezt az e-mailt tárgytalannak. explanation_when_pending: Ezzel az e-mail címmel meghívást kértél a(z) %{host} oldalon. Ahogy megerősíted az e-mail címed, átnézzük a jelentkezésedet. Ennek ideje alatt nem tudsz belépni. Ha a jelentkezésed elutasítjuk, az adataidat töröljük, más teendőd nincs. Ha a kérelmet nem te kezdeményezted, kérjük tekintsd ezt az e-mailt tárgytalannak. - extra_html: Kérjük tekintsd át a a szerver szabályzatát és a felhasználási feltételeket. + extra_html: Tekintsd át a a kiszolgáló szabályait és a felhasználási feltételeket. subject: 'Mastodon: Megerősítési lépések ehhez az instancehez: %{instance}' title: E-mail cím megerősítése email_changed: @@ -32,7 +32,7 @@ hu: title: Új e-mail cím password_change: explanation: A fiókodhoz tartozó jelszót megváltoztattuk. - extra: Ha nem te kezdeményezted a fiókodhoz tartozó jelszó módosítását, valaki hozzáférhetett a fiókodhoz. Legjobb, ha azonnal megváltoztatod a jelszavadat; ha nem férsz hozzá a fiókodhoz, vedd fel a kapcsolatot a szervered adminisztrátorával. + extra: Ha nem te kérted a fiókod jelszavának módosítását, akkor valaki hozzáférhetett a fiókodhoz. Legjobb, ha azonnal megváltoztatod a jelszavadat; ha nem férsz hozzá a fiókodhoz, vedd fel a kapcsolatot a kiszolgálód adminisztrátorával. subject: 'Mastodon: Jelszavad megváltoztattuk' title: Sikeres jelszómódosítás reconfirmation_instructions: diff --git a/config/locales/doorkeeper.hu.yml b/config/locales/doorkeeper.hu.yml index d8959bfa26..b394098a48 100644 --- a/config/locales/doorkeeper.hu.yml +++ b/config/locales/doorkeeper.hu.yml @@ -80,7 +80,7 @@ hu: title: Engedélyezett alkalmazásaid errors: messages: - access_denied: Az erőforrás tulajdonosa vagy hitelesítő kiszolgálója megtagadta a kérést. + access_denied: Az erőforrás tulajdonosa vagy az engedélyező kiszolgáló elutasította a kérést. credential_flow_not_configured: Az erőforrás tulajdonos jelszóadatainak átadása megszakadt, mert a Doorkeeper.configure.resource_owner_from_credentials beállítatlan. invalid_client: A kliens hitelesítése megszakadt, mert ismeretlen a kliens, a kliens nem küldött hitelesítést, vagy a hitelesítés módja nem támogatott. invalid_grant: A biztosított hitelesítés érvénytelen, lejárt, visszavont, vagy nem egyezik a hitelesítési kérésben használt URI-val, vagy más kliensnek címezték. @@ -96,11 +96,11 @@ hu: revoked: Hozzáférési kulcsot visszavonták unknown: Hozzáférési kulcs érvénytelen resource_owner_authenticator_not_configured: Erőforrás tulajdonos keresés megszakadt, ugyanis a Doorkeeper.configure.resource_owner_authenticator beállítatlan. - server_error: Hitelesítő szervert váratlan esemény érte, mely meggátolta a kérés teljesítését. - temporarily_unavailable: A hitelesítő szerver jelenleg nem tudja teljesíteni a kérést átmeneti túlterheltség vagy a kiszolgáló karbantartása miatt. + server_error: Az engedélyező kiszolgáló váratlan körülménybe ütközött, ami megakadályozta, hogy teljesítse a kérést. + temporarily_unavailable: Az engedélyezési kiszolgáló jelenleg nem tudja kezelni a kérelmet a kiszolgáló ideiglenes túlterhelése vagy karbantartása miatt. unauthorized_client: A kliens nincs feljogosítva erre a kérésre. - unsupported_grant_type: A hitelesítés módja nem támogatott a hitelesítő kiszolgálón. - unsupported_response_type: A hitelesítő kiszolgáló nem támogatja ezt a választ. + unsupported_grant_type: Az engedélyezés megadási típusát nem támogatja az engedélyezési kiszolgáló. + unsupported_response_type: Az engedélyezési kiszolgáló nem támogatja ezt a választípust. flash: applications: create: @@ -147,10 +147,10 @@ hu: application: title: OAuth engedély szükséges scopes: - admin:read: szerver minden adatának olvasása + admin:read: a kiszolgáló összes adatának olvasása admin:read:accounts: minden kényes fiókadat olvasása admin:read:reports: minden bejelentés és bejelentett fiók kényes adatainak olvasása - admin:write: szerver minden adatának változtatása + admin:write: a kiszolgáló összes adatának módosítása admin:write:accounts: moderációs műveletek végzése fiókokon admin:write:reports: moderációs műveletek végzése bejelentéseken crypto: végpontok közti titkosítás használata diff --git a/config/locales/el.yml b/config/locales/el.yml index baafb1a612..b33a275cfe 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -444,73 +444,29 @@ el: empty: Δεν έχουν οριστεί ακόμα κανόνες διακομιστή. title: Κανόνες διακομιστή settings: - activity_api_enabled: - desc_html: Καταμέτρηση τοπικών δημοσιεύσεων, ενεργών χρηστών και νέων εγγραφών σε εβδομαδιαίες ομαδοποιήσεις - title: Δημοσίευση συγκεντρωτικών στατιστικών για τη δραστηριότητα χρηστών - bootstrap_timeline_accounts: - desc_html: Διαχωρίστε πολλαπλά ονόματα χρηστών με κόμματα. Λειτουργεί μόνο με τοπικούς και ανοιχτούς λογαριασμούς. Αν είναι κενό, περιλαμβάνει όλους τους τοπικούς διαχειριστές. - title: Προεπιλεγμένοι λογαριασμοί για παρακολούθηση από τους νέους χρήστες - contact_information: - email: Επαγγελματικό email - username: Όνομα χρήστη επικοινωνίας - custom_css: - desc_html: Τροποποίηση της εμφάνισης μέσω CSS που φορτώνεται σε κάθε σελίδα - title: Προσαρμοσμένο CSS - default_noindex: - desc_html: Επηρεάζει όσους χρήστες δεν έχουν αλλάξει αυτή τη ρύθμιση - title: Εξαίρεση χρηστών από τις μηχανές αναζήτησης + about: + manage_rules: Διαχείριση κανόνων διακομιστή + title: Σχετικά με + appearance: + title: Εμφάνιση + content_retention: + title: Διατήρηση περιεχομένου + discovery: + profile_directory: Κατάλογος προφίλ + public_timelines: Δημόσιες ροές + trends: Τάσεις domain_blocks: all: Για όλους disabled: Για κανέναν - title: Εμφάνιση αποκλεισμένων τομέων users: Προς συνδεδεμένους τοπικούς χρήστες - domain_blocks_rationale: - title: Εμφάνιση σκεπτικού - mascot: - desc_html: Εμφάνιση σε πολλαπλές σελίδες. Προτεινόμενο 293x205px τουλάχιστον. Αν δεν έχει οριστεί, χρησιμοποιεί την προεπιλεγμένη μασκότ - title: Εικόνα μασκότ - peers_api_enabled: - desc_html: Ονόματα τομέων που αυτός ο κόμβος έχει ήδη συναντήσει στο fediverse - title: Δημοσίευση λίστας κόμβων που έχουν ανακαλυφθεί - preview_sensitive_media: - desc_html: Οι προεπισκοπήσεις συνδέσμων σε τρίτους ιστότοπους θα είναι ορατές ακόμα κι όταν το πολυμέσο έχει σημειωθεί ως ευαίσθητο - title: Εμφάνιση ευαίσθητων πολυμέσων στις προεπισκοπήσεις OpenGraph - profile_directory: - desc_html: Να επιτρέπεται η ανακάλυψη χρηστών - title: Ενεργοποίηση του καταλόγου χρηστών registrations: - closed_message: - desc_html: Εμφανίζεται στην εισαγωγική σελίδα όταν οι εγγραφές είναι κλειστές. Μπορείς να χρησιμοποιήσεις HTML tags - title: Μήνυμα κλεισμένων εγγραφών + title: Εγγραφές registrations_mode: modes: approved: Απαιτείται έγκριση για εγγραφή none: Δεν μπορεί να εγγραφεί κανείς open: Μπορεί να εγγραφεί ο οποιοσδήποτε - title: Μέθοδος εγγραφής - site_description: - desc_html: Εισαγωγική παράγραφος στην αρχική σελίδα. Περιέγραψε τι κάνει αυτό τον διακομιστή Mastodon διαφορετικό και ό,τι άλλο ενδιαφέρον. Μπορείς να χρησιμοποιήσεις HTML tags, συγκεκριμένα < a> και < em>. - title: Περιγραφή κόμβου - site_description_extended: - desc_html: Ένα καλό μέρος για τον κώδικα δεοντολογίας, τους κανόνες, τις οδηγίες και ό,τι άλλο διαφοροποιεί τον κόμβο σου. Μπορείς να χρησιμοποιήσεις και κώδικα HTML - title: Προσαρμοσμένες εκτεταμένες πληροφορίες - site_short_description: - desc_html: Εμφανίζεται στην πλαϊνή μπάρα και στα meta tags. Περιέγραψε τι είναι το Mastodon και τι κάνει αυτό τον διακομιστή ιδιαίτερο σε μια παράγραφο. Αν μείνει κενό, θα χρησιμοποιήσει την προκαθορισμένη περιγραφή του κόμβου. - title: Σύντομη περιγραφή του κόμβου - site_terms: - desc_html: Μπορείτε να γράψετε τη δική σας πολιτική απορρήτου. Μπορείτε να χρησιμοποιήσετε ετικέτες HTML - title: Προσαρμοσμένη πολιτική απορρήτου - site_title: Όνομα κόμβου - thumbnail: - desc_html: Χρησιμοποιείται για προεπισκοπήσεις μέσω του OpenGraph και του API. Συστήνεται 1200x630px - title: Μικρογραφία κόμβου - timeline_preview: - desc_html: Εμφάνισε τη δημόσια ροή στην αρχική σελίδα - title: Προεπισκόπιση ροής - title: Ρυθμίσεις ιστότοπου - trends: - desc_html: Δημόσια εμφάνιση ετικετών που έχουν ήδη εγκριθεί και είναι δημοφιλείς - title: Δημοφιλείς ετικέτες + title: Ρυθμίσεις διακομιστή site_uploads: delete: Διαγραφή μεταφορτωμένου αρχείου destroyed_msg: Η μεταφόρτωση ιστότοπου διαγράφηκε επιτυχώς! diff --git a/config/locales/eo.yml b/config/locales/eo.yml index c62c02eef4..f4f4d48191 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -466,67 +466,15 @@ eo: edit: Redakti la regulon title: Reguloj de la servilo settings: - activity_api_enabled: - desc_html: Sumo de lokaj mesaĝoj, aktivaj uzantoj, kaj novaj registriĝoj laŭsemajne - title: Publikigi kunmetitajn statistikojn pri la uzanta agado - bootstrap_timeline_accounts: - desc_html: Disigi plurajn uzantnomojn per komo. Funkcios nur por lokaj neŝlositaj kontoj. Kiam malplena, la dekomenca valoro estas ĉiuj lokaj administrantoj. - title: Dekomencaj sekvadoj por novaj uzantoj - contact_information: - email: Publika retadreso - username: Kontakta uzantnomo - custom_css: - desc_html: Ŝanĝi la aspekton per CSS ŝargita en ĉiu pago - title: Propra CSS domain_blocks: all: Al ciuj disabled: Al neniu - title: Vidi domajna blokado users: Al salutintaj lokaj uzantoj - domain_blocks_rationale: - title: Montri la kialon - mascot: - desc_html: Montrata en pluraj paĝoj. Rekomendataj estas almenaŭ 293x205px. Se ĉi tio ne estas agordita, la defaŭlta maskoto uziĝas - title: Maskota bildo - peers_api_enabled: - desc_html: Nomoj de domajnoj, kiujn ĉi tiu servilo renkontis en la federauniverso - title: Publikigi liston de malkovritaj serviloj - preview_sensitive_media: - desc_html: La antaŭmontroj de ligilo al la aliaj retejoj montros bildeton eĉ se la aŭdovidaĵo estas markita kiel tikla - title: Montri tiklajn aŭdovidaĵojn en la antaŭvidoj de OpenGraph - profile_directory: - desc_html: Permesi al uzantoj esti troveblaj - title: Ebligi la profilujon - registrations: - closed_message: - desc_html: Montrita sur la hejma paĝo kiam registriĝoj estas fermitaj. Vi povas uzi HTML-etikedojn - title: Mesaĝo pri fermitaj registriĝoj registrations_mode: modes: approved: Bezonas aprobi por aliĝi none: Neniu povas aliĝi open: Iu povas aliĝi - title: Reĝimo de registriĝo - site_description: - desc_html: Enkonduka alineo en la ĉefpaĝo. Priskribu la unikaĵojn de ĉi tiu nodo de Mastodon, kaj ĉiujn aliajn gravaĵojn. Vi povas uzi HTML-etikedojn, kiel <a> kaj <em>. - title: Priskribo de la servilo - site_description_extended: - desc_html: Bona loko por viaj sintenaj reguloj, aliaj reguloj, gvidlinioj kaj aliaj aferoj, kiuj apartigas vian serilon. Vi povas uzi HTML-etikedojn - title: Propraj detalaj informoj - site_short_description: - desc_html: Afiŝita en la flankpanelo kaj metadatumaj etikedoj. Priskribu kio estas Mastodon, kaj kio specialas en ĉi tiu nodo, per unu alineo. Se malplena, la priskribo de la servilo estos uzata. - title: Mallonga priskribo de la servilo - site_title: Nomo de la servilo - thumbnail: - desc_html: Uzata por antaŭvidoj per OpenGraph kaj per API. 1200x630px rekomendita - title: Bildeto de la servilo - timeline_preview: - desc_html: Montri publikan templinion en komenca paĝo - title: Permesi la neaŭtentigitan aliron al la publika templinio - title: Retejaj agordoj - trends: - desc_html: Publike montri antaŭe kontrolitajn kradvortojn, kiuj nune furoras - title: Furoraj kradvortoj site_uploads: delete: Forigi elŝutitan dosieron destroyed_msg: Reteja alŝuto sukcese forigita! diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 111567766a..f88cd29bff 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -667,79 +667,40 @@ es-AR: empty: Aún no se han definido las reglas del servidor. title: Reglas del servidor settings: - activity_api_enabled: - desc_html: Conteos de mensajes publicados localmente, usuarios activos y nuevos registros en tandas semanales - title: Publicar estadísticas agregadas sobre la actividad del usuario en la API - bootstrap_timeline_accounts: - desc_html: Separar múltiples nombres de usuario con coma. Sólo funcionarán las cuentas locales y desbloqueadas. Predeterminadamente, cuando está vacío se trata de todos los administradores locales. - title: Recomendar estas cuentas a usuarios nuevos - contact_information: - email: Correo electrónico de negocios - username: Nombre de usuario de contacto - custom_css: - desc_html: Modificá la apariencia con CSS cargado en cada página - title: CSS personalizado - default_noindex: - desc_html: Afecta a todos los usuarios que no cambiaron esta configuración por sí mismos - title: Quitar predeterminadamente a los usuarios de la indexación de los motores de búsqueda + about: + manage_rules: Administrar reglas del servidor + preamble: Proveé información en profundidad sobre cómo el servidor es operado, moderado y financiado. + rules_hint: Hay un área dedicada para las reglas a las que se espera que tus usuarios se adhieran. + title: Información + appearance: + preamble: Personalizá la interface web de Mastodon. + title: Apariencia + branding: + preamble: La marca de tu servidor lo diferencia de otros servidores de la red. Esta información puede mostrarse a través de una variedad de entornos, como en la interface web de Mastodon, en aplicaciones nativas, en previsualizaciones de enlaces en otros sitios web y en aplicaciones de mensajería, etc. Por esta razón, es mejor mantener esta información clara, breve y concisa. + title: Marca + content_retention: + preamble: Controlá cómo el contenido generado por el usuario se almacena en Mastodon. + title: Retención de contenido + discovery: + follow_recommendations: Recom. de cuentas a seguir + preamble: Exponer contenido interesante a la superficie es fundamental para incorporar nuevos usuarios que pueden no conocer a nadie Mastodon. Controlá cómo funcionan varias opciones de descubrimiento en tu servidor. + profile_directory: Directorio de perfiles + public_timelines: Líneas temporales públicas + title: Descubrí + trends: Tendencias domain_blocks: all: A todos disabled: A nadie - title: Mostrar dominios bloqueados users: A usuarios locales con sesiones abiertas - domain_blocks_rationale: - title: Mostrar razonamiento - mascot: - desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205 píxeles. Cuando no se especifica, se muestra la mascota predeterminada - title: Imagen de la mascota - peers_api_enabled: - desc_html: Nombres de dominio que este servidor encontró en el fediverso - title: Publicar lista de servidores descubiertos en la API - preview_sensitive_media: - desc_html: Las previsualizaciones de enlaces en otros sitios web mostrarán una miniatura incluso si el medio está marcado como contenido sensible - title: Mostrar medios sensibles en previsualizaciones de OpenGraph - profile_directory: - desc_html: Permitir que los usuarios puedan ser descubiertos - title: Habilitar directorio de perfiles registrations: - closed_message: - desc_html: Mostrado en la página principal cuando los registros de nuevas cuentas están cerrados. Podés usar etiquetas HTML - title: Mensaje de registro de nuevas cuentas cerrado - require_invite_text: - desc_html: Cuando los registros requieran aprobación manual, hacé que la solicitud de invitación "¿Por qué querés unirte?" sea obligatoria, en vez de opcional - title: Requerir que los nuevos usuarios llenen un texto de solicitud de invitación + preamble: Controlá quién puede crear una cuenta en tu servidor. + title: Registros registrations_mode: modes: approved: Se requiere aprobación para registrarse none: Nadie puede registrarse open: Cualquiera puede registrarse - title: Modo de registros - site_description: - desc_html: Párrafo introductorio en la API. Describe qué hace especial a este servidor de Mastodon y todo lo demás que sea importante. Podés usar etiquetas HTML, en particular <a> y <em>. - title: Descripción del servidor - site_description_extended: - desc_html: Un buen lugar para tu código de conducta, reglas, directrices y otras cosas que definen tu servidor. Podés usar etiquets HTML - title: Información extendida personalizada - site_short_description: - desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe qué es Mastodon y qué hace especial a este servidor en un solo párrafo. - title: Descripción corta del servidor - site_terms: - desc_html: Podés escribir tu propia política de privacidad. Podés usar etiquetas HTML - title: Política de privacidad personalizada - site_title: Nombre del servidor - thumbnail: - desc_html: Usado para previsualizaciones vía OpenGraph y APIs. Se recomienda 1200x630 píxeles - title: Miniatura del servidor - timeline_preview: - desc_html: Mostrar enlace a la línea temporal pública en la página de inicio y permitir el acceso a la API a la línea temporal pública sin autenticación - title: Permitir acceso no autorizado a la línea temporal pública - title: Configuración del sitio - trendable_by_default: - desc_html: El contenido de tendencias específicas todavía puede ser explícitamente desactivado - title: Permitir tendencias sin revisión previa - trends: - desc_html: Mostrar públicamente etiquetas previamente revisadas que son tendencia actualmente - title: Tendencias + title: Configuraciones del servidor site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Subida al sitio eliminada exitosamente!" diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 45ca39d1ba..889c0232d6 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -667,79 +667,15 @@ es-MX: empty: Aún no se han definido las normas del servidor. title: Normas del servidor settings: - activity_api_enabled: - desc_html: Conteo de estados publicados localmente, usuarios activos, y nuevos registros en periodos semanales - title: Publicar estadísticas locales acerca de actividad de usuario - bootstrap_timeline_accounts: - desc_html: Separa con comas los nombres de usuario. Solo funcionará para cuentas locales desbloqueadas. Si se deja vacío, se tomará como valor por defecto a todos los administradores locales. - title: Seguimientos predeterminados para usuarios nuevos - contact_information: - email: Correo de trabajo - username: Nombre de usuario - custom_css: - desc_html: Modificar el aspecto con CSS cargado en cada página - title: CSS personalizado - default_noindex: - desc_html: Afecta a todos los usuarios que no han cambiado esta configuración por sí mismos - title: Optar por los usuarios fuera de la indexación en los motores de búsqueda por defecto domain_blocks: all: A todos disabled: A nadie - title: Mostrar dominios bloqueados users: Para los usuarios locales que han iniciado sesión - domain_blocks_rationale: - title: Mostrar la razón de ser - mascot: - desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205px. Cuando no se especifica, se muestra la mascota por defecto - title: Imagen de la mascota - peers_api_enabled: - desc_html: Nombres de dominio que esta instancia ha encontrado en el fediverso - title: Publicar lista de instancias descubiertas - preview_sensitive_media: - desc_html: Los enlaces de vistas previas en otras web mostrarán una miniatura incluso si el medio está marcado como contenido sensible - title: Mostrar contenido sensible en previews de OpenGraph - profile_directory: - desc_html: Permitir que los usuarios puedan ser descubiertos - title: Habilitar directorio de perfiles - registrations: - closed_message: - desc_html: Se muestra en la portada cuando los registros están cerrados. Puedes usar tags HTML - title: Mensaje de registro cerrado - require_invite_text: - desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional - title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación registrations_mode: modes: approved: Se requiere aprobación para registrarse none: Nadie puede registrarse open: Cualquiera puede registrarse - title: Modo de registros - site_description: - desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a> y <em>. - title: Descripción de instancia - site_description_extended: - desc_html: Un buen lugar para tu código de conducta, reglas, guías y otras cosas que estén impuestas aparte en tu instancia. Puedes usar tags HTML - title: Información extendida personalizada - site_short_description: - desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo. si está vacío, pone por defecto la descripción de la instancia. - title: Descripción corta de la instancia - site_terms: - desc_html: Puedes escribir tu propia política de privacidad. Puedes usar etiquetas HTML - title: Política de privacidad personalizada - site_title: Nombre de instancia - thumbnail: - desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px - title: Portada de instancia - timeline_preview: - desc_html: Mostrar línea de tiempo pública en la portada - title: Previsualización - title: Ajustes del sitio - trendable_by_default: - desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado - title: Permitir tendencias sin revisión previa - trends: - desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia - title: Hashtags de tendencia site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Carga del sitio eliminada con éxito!" diff --git a/config/locales/es.yml b/config/locales/es.yml index 2be153de01..d0a2d970c5 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -667,79 +667,40 @@ es: empty: Aún no se han definido las normas del servidor. title: Normas del servidor settings: - activity_api_enabled: - desc_html: Conteo de estados publicados localmente, usuarios activos, y nuevos registros en periodos semanales - title: Publicar estadísticas locales acerca de actividad de usuario - bootstrap_timeline_accounts: - desc_html: Separa con comas los nombres de usuario. Solo funcionará para cuentas locales desbloqueadas. Si se deja vacío, se tomará como valor por defecto a todos los administradores locales. - title: Seguimientos predeterminados para usuarios nuevos - contact_information: - email: Correo de trabajo - username: Nombre de usuario - custom_css: - desc_html: Modificar el aspecto con CSS cargado en cada página - title: CSS personalizado - default_noindex: - desc_html: Afecta a todos los usuarios que no han cambiado esta configuración por sí mismos - title: Optar por los usuarios fuera de la indexación en los motores de búsqueda por defecto + about: + manage_rules: Administrar reglas del servidor + preamble: Proporciona información detallada sobre cómo el servidor es operado, moderado y financiado. + rules_hint: Hay un área dedicada para las reglas a las que se espera que tus usuarios se adhieran. + title: Acerca de + appearance: + preamble: Personalizar la interfaz web de Mastodon. + title: Apariencia + branding: + preamble: La marca de tu servidor lo diferencia de otros servidores de la red. Esta información puede mostrarse a través de una variedad de entornos, como en la interfaz web de Mastodon, en aplicaciones nativas, en previsualizaciones de enlaces en otros sitios web y en aplicaciones de mensajería, etc. Por esta razón, es mejor mantener esta información clara, breve y concisa. + title: Marca + content_retention: + preamble: Controlar cómo el contenido generado por el usuario se almacena en Mastodon. + title: Retención de contenido + discovery: + follow_recommendations: Recomendaciones de cuentas + preamble: Exponer contenido interesante a la superficie es fundamental para incorporar nuevos usuarios que pueden no conocer a nadie Mastodon. Controla cómo funcionan varias opciones de descubrimiento en tu servidor. + profile_directory: Directorio de perfiles + public_timelines: Lineas de tiempo públicas + title: Descubrimiento + trends: Tendencias domain_blocks: all: A todos disabled: A nadie - title: Mostrar dominios bloqueados users: Para los usuarios locales que han iniciado sesión - domain_blocks_rationale: - title: Mostrar la razón de ser - mascot: - desc_html: Mostrado en múltiples páginas. Se recomienda un tamaño mínimo de 293x205px. Cuando no se especifica, se muestra la mascota por defecto - title: Imagen de la mascota - peers_api_enabled: - desc_html: Nombres de dominio que esta instancia ha encontrado en el fediverso - title: Publicar lista de instancias descubiertas - preview_sensitive_media: - desc_html: Los enlaces de vistas previas en otras web mostrarán una miniatura incluso si el medio está marcado como contenido sensible - title: Mostrar contenido sensible en previews de OpenGraph - profile_directory: - desc_html: Permitir que los usuarios puedan ser descubiertos - title: Habilitar directorio de perfiles registrations: - closed_message: - desc_html: Se muestra en la portada cuando los registros están cerrados. Puedes usar tags HTML - title: Mensaje de registro cerrado - require_invite_text: - desc_html: Cuando los registros requieren aprobación manual, haga obligatorio en la invitaciones el campo "¿Por qué quieres unirte?" en lugar de opcional - title: Requiere a los nuevos usuarios rellenar un texto de solicitud de invitación + preamble: Controla quién puede crear una cuenta en tu servidor. + title: Registros registrations_mode: modes: approved: Se requiere aprobación para registrarse none: Nadie puede registrarse open: Cualquiera puede registrarse - title: Modo de registros - site_description: - desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <a> y <em>. - title: Descripción de instancia - site_description_extended: - desc_html: Un buen lugar para tu código de conducta, reglas, guías y otras cosas que estén impuestas aparte en tu instancia. Puedes usar tags HTML - title: Información extendida personalizada - site_short_description: - desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo. si está vacío, pone por defecto la descripción de la instancia. - title: Descripción corta de la instancia - site_terms: - desc_html: Puedes escribir tu propia política de privacidad. Puedes usar etiquetas HTML - title: Política de privacidad personalizada - site_title: Nombre de instancia - thumbnail: - desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px - title: Portada de instancia - timeline_preview: - desc_html: Mostrar línea de tiempo pública en la portada - title: Previsualización - title: Ajustes del sitio - trendable_by_default: - desc_html: El contenido específico de tendencias todavía puede ser explícitamente desactivado - title: Permitir tendencias sin revisión previa - trends: - desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia - title: Hashtags de tendencia + title: Ajustes del Servidor site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Carga del sitio eliminada con éxito!" diff --git a/config/locales/et.yml b/config/locales/et.yml index 2135b7bfb7..10f7b67ca8 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -330,70 +330,15 @@ et: unresolved: Lahendamata updated_at: Uuendatud settings: - activity_api_enabled: - desc_html: Kohalike postituste, aktiivsete kasutajate ja uute registreerimiste numbrid iganädalaste "ämbritena" - title: Avalda koondstatistikat selle kasutaja aktiivsusest - bootstrap_timeline_accounts: - desc_html: Eralda mitut kasutajanime komadega. Ainult kohalikud ja lukustamata kasutajate nimed töötavad. Kui tühi, on vaikesätteks kõik kohalikud administraatorid. - title: Vaikimisi jälgimised uutele kasutajatele - contact_information: - email: Äri e-post - username: Kontakt kasutajanimi - custom_css: - desc_html: Muuda kujundust CSSi abil, mis laetakse igal lehel - title: Kohandatud CSS - default_noindex: - desc_html: Mõjutab kõiki kasutajaid, kes pole seda sätet ise muutnud - title: Loobu kasutajate otsingumootoritesse indekseerimisest vaikimisi domain_blocks: all: Kõigile disabled: Mitte kellelegi - title: Näita domeeniblokeeringuid users: Sisseloginud kohalikele kasutajatele - domain_blocks_rationale: - title: Näita põhjendust - mascot: - desc_html: Kuvatakse mitmel lehel. Vähemalt 293x205px soovitatud. Kui pole seadistatud, kuvatakse vaikimisi maskott - title: Maskotipilt - peers_api_enabled: - desc_html: Domeenid, mida see server on kohanud fediversumis - title: Avalda nimekiri avastatud serveritest - preview_sensitive_media: - desc_html: Lingi eelvaated teistel veebisaitidel kuvab pisipilti, isegi kui meedia on märgitud tundlikuks - title: Kuva tundlikku meediat OpenGraphi eelvaadetes - profile_directory: - desc_html: Luba kasutajate avastamine - title: Luba profiilikataloog - registrations: - closed_message: - desc_html: Kuvatud esilehel kui registreerimised on suletud. Te võite kasutada HTMLi silte - title: Suletud registreerimiste sõnum registrations_mode: modes: approved: Kinnitus vajalik konto loomisel none: Keegi ei saa kontoid luua open: Kõik võivad kontoid luua - title: Registreerimisrežiim - site_description: - desc_html: Sissejuhatuslik lõik API kohta. Kirjelda, mis teeb selle Mastodoni serveri eriliseks ja ka muud tähtsat. Te saate kasutada HTMLi silte, peamiselt <a> ja <em>. - title: Serveri kirjeldus - site_description_extended: - desc_html: Hea koht käitumisreegliteks, reegliteks, suunisteks ja muuks, mis teevad Teie serveri eriliseks. Te saate kasutada HTML silte - title: Lisa informatsioon - site_short_description: - desc_html: Kuvatud küljeribal ja metasiltides. Kirjelda, mis on Mastodon ja mis on selles serveris erilist ühes lõigus. - title: Serveri lühikirjeldus - site_title: Serveri nimi - thumbnail: - desc_html: Kasutatud OpenGraph ja API eelvaadeteks. 1200x630px soovitatud - title: Serveri pisipilt - timeline_preview: - desc_html: Kuva avalikku ajajoont esilehel - title: Ajajoone eelvaade - title: Lehe seaded - trends: - desc_html: Kuva avalikult eelnevalt üle vaadatud sildid, mis on praegu trendikad - title: Populaarsed sildid praegu site_uploads: delete: Kustuta üleslaetud fail destroyed_msg: Üleslaetud fail edukalt kustutatud! diff --git a/config/locales/eu.yml b/config/locales/eu.yml index edfaffc370..d71a10dfa5 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -556,73 +556,15 @@ eu: empty: Ez da zerbitzariko araurik definitu oraindik. title: Zerbitzariaren arauak settings: - activity_api_enabled: - desc_html: Lokalki argitaratutako bidalketa kopurua, erabiltzaile aktiboak, eta izen emate berriak asteko - title: Argitaratu erabiltzaile-jardueraren estatistikak - bootstrap_timeline_accounts: - desc_html: Banandu erabiltzaile-izenak koma bitartez. Giltzapetu gabeko kontu lokalekin dabil bakarrik. Hutsik dagoenean lehenetsitakoa admin lokal guztiak da. - title: Lehenetsitako jarraipena erabiltzaile berrientzat - contact_information: - email: Laneko e-mail helbidea - username: Kontaktuaren erabiltzaile-izena - custom_css: - desc_html: Aldatu itxura orri bakoitzean kargatutako CSS bidez - title: CSS pertsonala - default_noindex: - desc_html: Ezarpen hau berez aldatu ez duten erabiltzaile guztiei eragiten die - title: Utzi erabiltzaileak bilatzailearen indexaziotik kanpo lehenetsita domain_blocks: all: Guztiei disabled: Inori ez - title: Erakutsi domeinu-blokeoak users: Saioa hasita duten erabiltzaile lokalei - domain_blocks_rationale: - title: Erakutsi arrazoia - mascot: - desc_html: Hainbat orritan bistaratua. Gutxienez 293x205px aholkatzen da. Ezarri ezean lehenetsitako maskota erakutsiko da - title: Maskotaren irudia - peers_api_enabled: - desc_html: Zerbitzari honek fedibertsoan aurkitutako domeinu-izenak - title: Argitaratu aurkitutako zerbitzarien zerrenda - preview_sensitive_media: - desc_html: Beste webguneetako esteken aurrebistak iruditxoa izango du multimedia hunkigarri gisa markatzen bada ere - title: Erakutsi multimedia hunkigarria OpenGraph aurrebistetan - profile_directory: - desc_html: Baimendu erabiltzaileak aurkigarriak izatea - title: Gaitu profil-direktorioa - registrations: - closed_message: - desc_html: Azaleko orrian bistaratua izen ematea ixten denean. HTML etiketak erabili ditzakezu - title: Izen emate itxiaren mezua - require_invite_text: - desc_html: Izen emateak eskuz onartu behar direnean, "Zergatik elkartu nahi duzu?" testu sarrera derrigorrezko bezala ezarri, ez hautazko - title: Eskatu erabiltzaile berriei bat egiteko arrazoia sartzeko registrations_mode: modes: approved: Izena emateko onarpena behar da none: Ezin du inork izena eman open: Edonork eman dezake izena - title: Erregistratzeko modua - site_description: - desc_html: Azaleko orrian agertuko den sarrera paragrafoa. Azaldu zerk egiten duen berezi Mastodon zerbitzari hau eta garrantzizko beste edozer. HTML etiketak erabili ditzakezu, zehazki <a> eta <em>. - title: Zerbitzariaren deskripzioa - site_description_extended: - desc_html: Zure jokabide-koderako toki on bat, arauak, gidalerroak eta zure zerbitzari desberdin egiten duten bestelakoak. HTML etiketak erabili ditzakezu - title: Informazio hedatu pertsonalizatua - site_short_description: - desc_html: Albo-barra eta meta etiketetan bistaratua. Deskribatu zerk egiten duen Mastodon zerbitzari hau berezia paragrafo batean. Hutsik lagatzekotan lehenetsitako deskripzioa agertuko da. - title: Zerbitzariaren deskripzio laburra - site_title: Zerbitzariaren izena - thumbnail: - desc_html: Aurrebistetarako erabilia OpenGraph eta API bidez. 1200x630px aholkatzen da - title: Zerbitzariaren iruditxoa - timeline_preview: - desc_html: Bistaratu denbora-lerro publikoa hasiera orrian - title: Denbora-lerroaren aurrebista - title: Gunearen ezarpenak - trends: - desc_html: Erakutsi publikoki orain joeran dauden aurretik errebisatutako traolak - title: Traolak joeran site_uploads: delete: Ezabatu igotako fitxategia destroyed_msg: Guneko igoera ongi ezabatu da! diff --git a/config/locales/fa.yml b/config/locales/fa.yml index c1979a1a6a..7dc4dae0a8 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -534,73 +534,15 @@ fa: empty: هنوز هیچ قانونی برای کارساز تعریف نشده. title: قوانین کارساز settings: - activity_api_enabled: - desc_html: تعداد فرسته‌های محلی، کاربران فعال، و کاربران تازه در هر هفته - title: انتشار آمار تجمیعی دربارهٔ فعالیت کاربران - bootstrap_timeline_accounts: - desc_html: نام‌های کاربری را با ویرگول از هم جدا کنید. این حساب‌ها تضمین می‌شوند که در پیشنهادهای پی‌گیری نشان داده شوند - title: پیگیری‌های پیش‌فرض برای کاربران تازه - contact_information: - email: رایانامهٔ تجاری - username: نام کاربری - custom_css: - desc_html: ظاهر ماستودون را با CSS-ای که در همهٔ صفحه‌ها جاسازی می‌شود تغییر دهید - title: سبک CSS سفارشی - default_noindex: - desc_html: روی همهٔ کاربرانی که این تنظیم را خودشان تغییر نداده‌اند تأثیر می‌گذارد - title: درخواست پیش‌فرض از طرف کاربران برای ظاهر نشدن در نتایج موتورهای جستجوگر domain_blocks: all: برای همه disabled: برای هیچ‌کدام - title: نمایش دامنه‌های مسدود شده users: برای کاربران محلی واردشده - domain_blocks_rationale: - title: دیدن دلیل - mascot: - desc_html: در صفحه‌های گوناگونی نمایش می‌یابد. دست‌کم ۲۹۳×۲۰۵ پیکسل. اگر تعیین نشود، با تصویر پیش‌فرض جایگزین خواهد شد - title: تصویر نماد - peers_api_enabled: - desc_html: دامین‌هایی که این سرور به آن‌ها برخورده است - title: انتشار سیاههٔ کارسازهای کشف شده در API - preview_sensitive_media: - desc_html: پیوند به سایت‌های دیگر پیش‌نمایشی خواهد داشت که یک تصویر کوچک را نشان می‌دهد، حتی اگر نوشته به عنوان حساس علامت‌گذاری شده باشد - title: نمایش تصاویر حساسیت‌برانگیز در پیش‌نمایش‌های OpenGraph - profile_directory: - desc_html: اجازه به کاربران برای قابل کشف بودن - title: به کار انداختن شاخهٔ نمایه - registrations: - closed_message: - desc_html: وقتی امکان ثبت نام روی سرور فعال نباشد در صفحهٔ اصلی نمایش می‌یابد
    می‌توانید HTML بنویسید - title: پیغام برای فعال‌نبودن ثبت نام - require_invite_text: - desc_html: زمانی که نام‌نویسی نیازمند تایید دستی است، متن «چرا می‌خواهید عضو شود؟» بخش درخواست دعوت را به جای اختیاری، اجباری کنید - title: نیازمند پر کردن متن درخواست دعوت توسط کاربران جدید registrations_mode: modes: approved: ثبت نام نیازمند تأیید مدیران است none: کسی نمی‌تواند ثبت نام کند open: همه می‌توانند ثبت نام کنند - title: شرایط ثبت نام - site_description: - desc_html: معرفی کوتاهی دربارهٔ رابط برنامه‌نویسی کاربردی. دربارهٔ این که چه چیزی دربارهٔ این کارساز ماستودون ویژه است یا هر چیز مهم دیگری بنویسید. می‌توانید HTML بنویسید، به‌ویژه <a> و <em>. - title: دربارهٔ این سرور - site_description_extended: - desc_html: جای خوبی برای نوشتن سیاست‌های کاربری، قانون‌ها، راهنماها، و هر چیزی که ویژهٔ این سرور است. تگ‌های HTML هم مجاز است - title: اطلاعات تکمیلی سفارشی - site_short_description: - desc_html: روی نوار کناری و همچنین به عنوان فرادادهٔ صفحه‌ها نمایش می‌یابد. در یک بند توضیح دهید که ماستودون چیست و چرا این کارساز با بقیه فرق دارد. - title: توضیح کوتاه دربارهٔ سرور - site_title: نام سرور - thumbnail: - desc_html: برای دیدن با OpenGraph و رابط برنامه‌نویسی. وضوح پیشنهادی ۱۲۰۰×۶۳۰ پیکسل - title: تصویر کوچک سرور - timeline_preview: - desc_html: نوشته‌های عمومی این سرور را در صفحهٔ آغازین نشان دهید - title: پیش‌نمایش نوشته‌ها - title: تنظیمات سایت - trends: - desc_html: برچسب‌های عمومی که پیش‌تر بازبینی شده‌اند و هم‌اینک پرطرفدارند - title: پرطرفدارها site_uploads: delete: پرونده بارگذاری شده را پاک کنید destroyed_msg: بارگذاری پایگاه با موفقیت حذف شد! diff --git a/config/locales/fi.yml b/config/locales/fi.yml index fe8d77158e..22e0147e67 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -659,73 +659,15 @@ fi: empty: Palvelimen sääntöjä ei ole vielä määritelty. title: Palvelimen säännöt settings: - activity_api_enabled: - desc_html: Paikallisesti julkaistujen tilojen, aktiivisten käyttäjien ja uusien rekisteröintien määrät viikoittain - title: Julkaise koostetilastoja käyttäjien aktiivisuudesta - bootstrap_timeline_accounts: - desc_html: Erota käyttäjänimet pilkulla. Vain paikalliset ja lukitsemattomat tilit toimivat. Jos kenttä jätetään tyhjäksi, oletusarvona ovat kaikki paikalliset ylläpitäjät. - title: Uudet käyttäjät seuraavat oletuksena seuraavia tilejä - contact_information: - email: Työsähköposti - username: Yhteyshenkilön käyttäjänimi - custom_css: - desc_html: Muokkaa ulkoasua CSS:llä, joka on ladattu jokaiselle sivulle - title: Mukautettu CSS - default_noindex: - desc_html: Vaikuttaa kaikkiin käyttäjiin, jotka eivät ole muuttaneet tätä asetusta itse - title: Valitse oletuksena käyttäjät hakukoneiden indeksoinnin ulkopuolelle domain_blocks: all: Kaikille disabled: Ei kenellekkään - title: Näytä domainestot users: Kirjautuneille paikallisille käyttäjille - domain_blocks_rationale: - title: Näytä syy - mascot: - desc_html: Näytetään useilla sivuilla. Suositus vähintään 293×205px. Kun ei ole asetettu, käytetään oletuskuvaa - title: Maskottikuva - peers_api_enabled: - desc_html: Verkkotunnukset, jotka tämä instanssi on kohdannut fediversumissa - title: Julkaise löydettyjen instanssien luettelo - preview_sensitive_media: - desc_html: Linkin esikatselu muilla sivustoilla näyttää pikkukuvan vaikka media on merkitty arkaluonteiseksi - title: Näytä arkaluontoiset mediat OpenGraph esikatselussa - profile_directory: - desc_html: Salli käyttäjien olla löydettävissä - title: Ota profiilihakemisto käyttöön - registrations: - closed_message: - desc_html: Näytetään etusivulla, kun rekisteröinti on suljettu. HTML-tagit käytössä - title: Viesti, kun rekisteröinti on suljettu - require_invite_text: - desc_html: Kun rekisteröinnit edellyttävät manuaalista hyväksyntää, tee “Miksi haluat liittyä?” teksti pakolliseksi eikä valinnaiseksi - title: Vaadi uusia käyttäjiä antamaan liittymisen syy registrations_mode: modes: approved: Rekisteröinti vaatii hyväksynnän none: Kukaan ei voi rekisteröityä open: Kaikki voivat rekisteröityä - title: Rekisteröintitapa - site_description: - desc_html: Esittelykappale etusivulla ja metatunnisteissa. HTML-tagit käytössä, tärkeimmät ovat <a> ja <em>. - title: Instanssin kuvaus - site_description_extended: - desc_html: Hyvä paikka käytösohjeille, säännöille, ohjeistuksille ja muille instanssin muista erottaville asioille. HTML-tagit käytössä - title: Omavalintaiset laajat tiedot - site_short_description: - desc_html: Näytetään sivupalkissa ja kuvauksessa. Kerro yhdessä kappaleessa, mitä Mastodon on ja mikä tekee palvelimesta erityisen. - title: Lyhyt instanssin kuvaus - site_title: Instanssin nimi - thumbnail: - desc_html: Käytetään esikatseluissa OpenGraphin ja API:n kautta. Suosituskoko 1200x630 pikseliä - title: Instanssin pikkukuva - timeline_preview: - desc_html: Näytä julkinen aikajana aloitussivulla - title: Aikajanan esikatselu - title: Sivuston asetukset - trends: - desc_html: Näytä julkisesti aiemmin tarkistetut hashtagit, jotka ovat tällä hetkellä saatavilla - title: Trendaavat aihetunnisteet site_uploads: delete: Poista ladattu tiedosto destroyed_msg: Sivuston lataus onnistuneesti poistettu! diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 4b3c53db3e..2c34543adb 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -659,78 +659,15 @@ fr: empty: Aucune règle de serveur n'a été définie pour l'instant. title: Règles du serveur settings: - activity_api_enabled: - desc_html: Nombre de messages publiés localement, de comptes actifs et de nouvelles inscriptions regroupés par semaine - title: Publier des statistiques agrégées sur l’activité des utilisateur·rice·s - bootstrap_timeline_accounts: - desc_html: Séparez les noms d'utilisateur·rice·s par des virgules. Ces comptes seront affichés dans les recommendations d'abonnement - title: Recommender ces comptes aux nouveaux·elles utilisateur·rice·s - contact_information: - email: Entrez une adresse courriel publique - username: Entrez un nom d’utilisateur·ice - custom_css: - desc_html: Modifier l’apparence avec une CSS chargée sur chaque page - title: CSS personnalisé - default_noindex: - desc_html: Affecte tous les utilisateurs qui n'ont pas changé eux-mêmes ce paramètre - title: Opter pour le retrait de l'indexation des moteurs de recherche par défaut domain_blocks: all: À tout le monde disabled: À personne - title: Afficher le blocage de domaines users: Aux utilisateur·rice·s connecté·e·s localement - domain_blocks_rationale: - title: Montrer la raison - mascot: - desc_html: Affiché sur plusieurs pages. Au moins 293×205px recommandé. Lorsqu’il n’est pas défini, retombe à la mascotte par défaut - title: Image de la mascotte - peers_api_enabled: - desc_html: Noms des domaines que ce serveur a découvert dans le fédiverse - title: Publier la liste des serveurs découverts dans l’API - preview_sensitive_media: - desc_html: Les aperçus de lien sur les autres sites web afficheront une vignette même si les médias sont marqués comme sensibles - title: Montrer les médias sensibles dans les prévisualisations OpenGraph - profile_directory: - desc_html: Permettre aux utilisateur·ice·s d’être découvert·e·s - title: Activer l’annuaire des profils - registrations: - closed_message: - desc_html: Affiché sur la page d’accueil lorsque les inscriptions sont fermées. Vous pouvez utiliser des balises HTML - title: Message de fermeture des inscriptions - require_invite_text: - desc_html: Lorsque les enregistrements nécessitent une approbation manuelle, rendre le texte de l’invitation "Pourquoi voulez-vous vous inscrire ?" obligatoire plutôt que facultatif - title: Exiger que les nouveaux utilisateurs remplissent un texte de demande d’invitation registrations_mode: modes: approved: Approbation requise pour s’inscrire none: Personne ne peut s’inscrire open: N’importe qui peut s’inscrire - title: Mode d’enregistrement - site_description: - desc_html: Paragraphe introductif sur l'API. Décrivez les particularités de ce serveur Mastodon et précisez toute autre chose qui vous semble importante. Vous pouvez utiliser des balises HTML, en particulier <a> et <em>. - title: Description du serveur - site_description_extended: - desc_html: L’endroit idéal pour afficher votre code de conduite, les règles, les guides et autres choses qui rendent votre serveur différent. Vous pouvez utiliser des balises HTML - title: Description étendue du serveur - site_short_description: - desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description du serveur sera affiché par défaut. - title: Description courte du serveur - site_terms: - desc_html: Vous pouvez écrire votre propre politique de confidentialité. Vous pouvez utiliser des balises HTML - title: Politique de confidentialité personnalisée - site_title: Nom du serveur - thumbnail: - desc_html: Utilisée pour les prévisualisations via OpenGraph et l’API. 1200x630px recommandé - title: Vignette du serveur - timeline_preview: - desc_html: Afficher un lien vers le fil public sur la page d’accueil et autoriser l'accès anonyme au fil public via l'API - title: Autoriser la prévisualisation anonyme du fil global - title: Paramètres du serveur - trendable_by_default: - title: Autoriser les tendances sans révision préalable - trends: - desc_html: Afficher publiquement les hashtags approuvés qui sont populaires en ce moment - title: Hashtags populaires site_uploads: delete: Supprimer le fichier téléversé destroyed_msg: Téléversement sur le site supprimé avec succès ! diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 0e50fe542f..fc9a2334e9 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -678,73 +678,15 @@ gd: empty: Cha deach riaghailtean an fhrithealaiche a mhìneachadh fhathast. title: Riaghailtean an fhrithealaiche settings: - activity_api_enabled: - desc_html: Cunntasan nam postaichean a chaidh fhoillseachadh gu h-ionadail, nan cleachdaichean gnìomhach ’s nan clàraidhean ùra an am bucaidean seachdaineil - title: Foillsich agragaid dhen stadastaireachd mu ghnìomhachd nan cleachdaichean san API - bootstrap_timeline_accounts: - desc_html: Sgar iomadh ainm cleachdaiche le cromag. Cuiridh sinn geall gun nochd na cunntasan seo am measg nam molaidhean leantainn - title: Mol na cunntasan seo do chleachdaichean ùra - contact_information: - email: Post-d gnìomhachais - username: Ainm cleachdaiche a’ chonaltraidh - custom_css: - desc_html: Atharraich an coltas le CSS a thèid a luchdadh le gach duilleag - title: CSS gnàthaichte - default_noindex: - desc_html: Bidh buaidh air a h-uile cleachdaiche nach do dh’atharraich an roghainn seo dhaibh fhèin - title: Thoir air falbh ro-aonta nan cleachdaichean air inneacsadh le einnseanan-luirg mar a’ bhun-roghainn domain_blocks: all: Dhan a h-uile duine disabled: Na seall idir - title: Seall bacaidhean àrainne users: Dhan luchd-chleachdaidh a clàraich a-steach gu h-ionadail - domain_blocks_rationale: - title: Seall an t-adhbhar - mascot: - desc_html: Thèid seo a shealltainn air iomadh duilleag. Mholamaid 293×205px air a char as lugha. Mura dèid seo a shuidheachadh, thèid an suaichnean a shealltainn ’na àite - title: Dealbh suaichnein - peers_api_enabled: - desc_html: Ainmean àrainne air an do thachair am frithealaiche seo sa cho-shaoghal - title: Foillsich liosta nam frithealaichean a chaidh a rùrachadh san API - preview_sensitive_media: - desc_html: Ro-sheallaidh ceanglaichean dealbhag fhiù ’s ma chaidh comharradh gu bheil am meadhan frionasach - title: Seall meadhanan frionasach ann an ro-sheallaidhean OpenGraph - profile_directory: - desc_html: Suidhich gun gabh cleachdaichean a rùrachadh - title: Cuir eòlaire nam pròifil an comas - registrations: - closed_message: - desc_html: Thèid seo a shealltainn air an duilleag-dhachaigh nuair a bhios an clàradh dùinte. ’S urrainn dhut tagaichean HTML a chleachdadh - title: Teachdaireachd a’ chlàraidh dhùinte - require_invite_text: - desc_html: Nuair a bhios aontachadh a làimh riatanach dhan chlàradh, dèan an raon teacsa “Carson a bu mhiann leat ballrachd fhaighinn?” riatanach seach roghainneil - title: Iarr air cleachdaichean ùra gun innis iad carson a tha iad ag iarraidh ballrachd registrations_mode: modes: approved: Tha aontachadh riatanach airson clàradh none: Chan fhaod neach sam bith clàradh open: "’S urrainn do neach sam bith clàradh" - title: Modh a’ chlàraidh - site_description: - desc_html: Earrann tuairisgeil air an API. Mìnich dè tha sònraichte mun fhrithealaiche Mastodon seo agus rud sa bith eile a tha cudromach. ’S urrainn dhut tagaichean HTML a chleachdadh agus <a> ’s <em> gu sònraichte. - title: Tuairisgeul an fhrithealaiche - site_description_extended: - desc_html: Seo deagh àite airson an còd-giùlain, na riaghailtean ’s na comharran-treòrachaidh agad agus do nithean eile a tha sònraichte mun fhrithealaiche agad. ‘S urrainn dhut tagaichean HTML a chleachdadh - title: Fiosrachadh leudaichte gnàthaichte - site_short_description: - desc_html: Nochdaidh seo air a’ bhàr-taoibh agus sna meata-thagaichean. Mìnich dè th’ ann am Mastodon agus dè tha sònraichte mun fhrithealaiche agad ann an aon earrann a-mhàin. - title: Tuairisgeul goirid an fhrithealaiche - site_title: Ainm an fhrithealaiche - thumbnail: - desc_html: Thèid seo a chleachdadh airson ro-sheallaidhean slighe OpenGraph no API. Mholamaid 1200x630px - title: Dealbhag an fhrithealaiche - timeline_preview: - desc_html: Seall ceangal dhan loidhne-ama phoblach air an duilleag-landaidh is ceadaich inntrigeadh gun ùghdarrachadh leis an API air an loidhne-ama phoblach - title: Ceadaich inntrigeadh gun ùghdarrachadh air an loidhne-ama phoblach - title: Roghainnean na làraich - trends: - desc_html: Seall susbaint gu poblach a chaidh lèirmheas a dhèanamh oirre roimhe ’s a tha a’ treandadh - title: Treandaichean site_uploads: delete: Sguab às am faidhle a chaidh a luchdadh suas destroyed_msg: Chaidh an luchdadh suas dhan làrach a sguabadh às! diff --git a/config/locales/gl.yml b/config/locales/gl.yml index ec4346c7f7..4e6e73a326 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -667,79 +667,15 @@ gl: empty: Aínda non se definiron as regras do servidor. title: Regras do servidor settings: - activity_api_enabled: - desc_html: Conta de estados publicados de xeito local, usuarias activas, e novos rexistros en períodos semanais - title: Publicar na API estatísticas acumuladas sobre a actividade da usuaria - bootstrap_timeline_accounts: - desc_html: Separar os múltiples nomes de usuaria con vírgulas. Estas contas teñen garantido aparecer nas recomendacións de seguimento - title: Recoméndalle estas contas ás novas usuarias - contact_information: - email: Email de negocios - username: Nome de usuaria de contacto - custom_css: - desc_html: Modificar a aparencia con CSS cargado en cada páxina - title: CSS personalizado - default_noindex: - desc_html: Aféctalle a todas as usuarias que non cambiaron os axustes elas mesmas - title: Por omisión exclúe as usuarias do indexado por servidores de busca domain_blocks: all: Para todos disabled: Para ninguén - title: Amosar dominios bloqueados users: Para usuarias locais conectadas - domain_blocks_rationale: - title: Amosar motivo - mascot: - desc_html: Amosado en varias páxinas. Polo menos 293x205px recomendados. Se non está definido, estará a mascota por defecto - title: Imaxe da mascota - peers_api_enabled: - desc_html: Nomes de dominio que este servidor atopou no fediverso - title: Publicar na API listaxe de servidores descobertos - preview_sensitive_media: - desc_html: A vista previa de ligazóns de outros sitios web mostrará unha imaxe incluso si os medios están marcados como sensibles - title: Mostrar medios sensibles con vista previa OpenGraph - profile_directory: - desc_html: Permitir que as usuarias poidan ser descubertas - title: Activar o directorio de perfil - registrations: - closed_message: - desc_html: Mostrado na páxina de portada cando o rexistro está pechado. Pode utilizar cancelos HTML - title: Mensaxe de rexistro pechado - require_invite_text: - desc_html: Cando os rexistros requiren aprobación manual, facer que o texto "Por que te queres rexistrar?" do convite sexa obrigatorio en lugar de optativo - title: Require que as novas usuarias completen solicitude de texto do convite registrations_mode: modes: approved: Precisa aprobación para rexistrarse none: Rexistro pechado open: Rexistro aberto - title: Estado do rexistro - site_description: - desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar cancelos HTML, en particular <a> e <em>. - title: Descrición do servidor - site_description_extended: - desc_html: Un bo lugar para o teu código de conduta, regras, guías e outras cousas para diferenciar o teu servidor. Podes empregar cancelos HTML - title: Información extendida da personalización - site_short_description: - desc_html: Amosado na barra lateral e nos cancelos meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Se está baleiro, amosará a descrición do servidor. - title: Descrición curta do servidor - site_terms: - desc_html: Podes escribir a túa propia Política de Privacidade e usar etiquetas HTML - title: Política de Privacidade propia - site_title: Nome do servidor - thumbnail: - desc_html: Utilizado para vistas previsas vía OpenGraph e API. Recoméndase 1200x630px - title: Icona do servidor - timeline_preview: - desc_html: Mostrar ligazón á cronoloxía pública na páxina de benvida e permitir o acceso API á cronoloxía pública sen ter autenticación - title: Permitir acceso á cronoloxía pública sen autenticación - title: Axustes do sitio - trendable_by_default: - desc_html: Poderase prohibir igualmente contido en voga específico - title: Permitir tendencias sen aprobación previa - trends: - desc_html: Amosar de xeito público cancelos revisados previamente que actualmente son tendencia - title: Cancelos en tendencia site_uploads: delete: Eliminar o ficheiro subido destroyed_msg: Eliminado correctamente o subido! diff --git a/config/locales/he.yml b/config/locales/he.yml index 95dadd06dc..46fd07d308 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -687,73 +687,15 @@ he: empty: שום כללי שרת לא הוגדרו עדיין. title: כללי שרת settings: - activity_api_enabled: - desc_html: מספר החצרוצים שפורסמו מקומית, משתמשים פעילים, והרשמות חדשות בדליים שבועיים - title: פרסום סטטיסטיקות מקובצות עבור פעילות משתמשים בממשק - bootstrap_timeline_accounts: - desc_html: הפרדת משתמשים מרובים בפסיק. למשתמשים אלה מובטח שהם יכללו בהמלצות המעקב - title: המלצה על חשבונות אלה למשתמשים חדשים - contact_information: - email: נא להקליד כתובת דוא"ל פומבית - username: נא להכניס שם משתמש - custom_css: - desc_html: שינוי המראה בעזרת CSS הנטען בכל דף - title: CSS יחודי - default_noindex: - desc_html: משפיע על כל המשתמשים שלא שינו את ההגדרה בעצמם - title: לא לכלול משתמשים במנוע החיפוש כברירת מחדל domain_blocks: all: לכולם disabled: לאף אחד - title: צפיה בחסימת דומיינים users: למשתמשים מקומיים מחוברים - domain_blocks_rationale: - title: הצגת רציונל - mascot: - desc_html: מוצגת בכל מיני דפים. מומלץ לפחות 293×205px. אם לא נבחר, מוצג במקום קמע ברירת המחדל - title: תמונת קמע - peers_api_enabled: - desc_html: שמות דומיינים ששרת זה נתקל בהם ברחבי הפדרציה - title: פרסם רשימה של שרתים שנתגלו דרך הממשק - preview_sensitive_media: - desc_html: תצוגה מקדימה של קישוריות לאתרים אחרים יוצגו כתמונה מוקטנת אפילו אם המדיה מסומנת כרגישה - title: הצגת מדיה רגישה בתצוגה מקדימה של OpenGraph - profile_directory: - desc_html: הרשאה למשתמשים להתגלות - title: הרשאה לספריית פרופילים - registrations: - closed_message: - desc_html: מוצג על הדף הראשי כאשר ההרשמות סגורות. ניתן להשתמש בתגיות HTML - title: מסר סגירת הרשמות - require_invite_text: - desc_html: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי - title: אלץ משתמשים חדשים למלא סיבת הצטרפות registrations_mode: modes: approved: נדרש אישור הרשמה none: אף אחד לא יכול להרשם open: כל אחד יכול להרשם - title: מצב הרשמות - site_description: - desc_html: מוצג כפסקה על הדף הראשי ומשמש כתגית מטא. ניתן להשתמש בתגיות HTML, ובמיוחד ב־ < a> ו־ < em> . - title: תיאור האתר - site_description_extended: - desc_html: מקום טוב להצגת כללים, הנחיות, ודברים אחרים שמבדלים אותך ממופעים אחרים. ניתן להשתמש בתגיות HTML - title: תיאור אתר מורחב - site_short_description: - desc_html: מוצג בעמודה הצידית ובמטא תגים. מתאר מהו מסטודון ומה מיחד שרת זה בפסקה בודדת. - title: תאור שרת קצר - site_title: כותרת האתר - thumbnail: - desc_html: משמש לתצוגה מקדימה דרך OpenGraph והממשק. מומלץ 1200x630px - title: תמונה ממוזערת מהשרת - timeline_preview: - desc_html: הצגת קישורית לפיד הפומבי מדף הנחיתה והרשאה לממשק לגשת לפיד הפומבי ללא אימות - title: הרשאת גישה בלתי מאומתת לפיד הפומבי - title: הגדרות אתר - trends: - desc_html: הצגה פומבית של תוכן שנסקר בעבר ומופיע כרגע בנושאים החמים - title: נושאים חמים site_uploads: delete: מחיקת קובץ שהועלה destroyed_msg: העלאת אתר נמחקה בהצלחה! diff --git a/config/locales/hu.yml b/config/locales/hu.yml index bbd0abd04d..e982f00c18 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -12,9 +12,7 @@ hu: one: Követő other: Követő following: Követett - instance_actor_flash: |- - Ez a fiók virtuális, magát a szervert reprezentálja, nem pedig konkrét - felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni. + instance_actor_flash: Ez a fiók virtuális, magát a kiszolgálót reprezentálja, nem pedig konkrét felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni. last_active: utoljára aktív link_verified_on: 'A hivatkozás tulajdonosa ekkor volt ellenőrizve: %{date}' nothing_here: Nincs itt semmi! @@ -362,7 +360,7 @@ hu: space: Tárhely használat title: Műszerfal top_languages: Legaktívabb nyelvek - top_servers: Legaktívabb szerverek + top_servers: Legaktívabb kiszolgálók website: Weboldal disputes: appeals: @@ -440,7 +438,7 @@ hu: other: Sikertelen próbálkozás %{count} különböző napon. no_failures_recorded: Nem rögzítettünk hibát. title: Elérhetőség - warning: Sikertelen volt az utolsó csatlakozási próbálkozás ehhez a szerverhez + warning: Az utolsó csatlakozási próbálkozás ehhez a kiszolgálóhoz sikertelen volt back_to_all: Mind back_to_limited: Korlátozott back_to_warning: Figyelmeztetés @@ -633,7 +631,7 @@ hu: manage_blocks: Letiltások kezelése manage_blocks_description: Lehetővé teszi, hogy a felhasználó letiltson email szolgáltatókat és IP címeket manage_custom_emojis: Egyedi emodzsik kezelése - manage_custom_emojis_description: Lehetővé teszi a felhasználó számára, hogy a kiszolgáló egyedi emodzsiait kezelje + manage_custom_emojis_description: Lehetővé teszi a felhasználó számára, hogy a kiszolgáló egyéni emodzsiait kezelje manage_federation: Föderáció kezelése manage_federation_description: Lehetővé teszi a felhasználó számára, hogy más domainnekkel való föderációt engedélyezzen vagy letiltson, illetve szabályozza a kézbesítést manage_invites: Meghívások kezelése @@ -647,7 +645,7 @@ hu: manage_settings: Beállítások kezelése manage_settings_description: Lehetővé teszi, hogy a felhasználó megváltoztassa az oldal beállításait manage_taxonomies: Taxonómiák kezelése - manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a népszerű tartalmakat és frissítse a hashtagek beállításait + manage_taxonomies_description: Lehetővé teszi, hogy a felhasználó átnézze a felkapott tartalmakat és frissítse a hashtagek beállításait manage_user_access: Felhasználói hozzáférések kezelése manage_user_access_description: Lehetővé teszi, hogy a felhasználó letiltsa mások kétlépcsős azonosítását, megváltoztassa az email címüket, és alaphelyzetbe állítsa a jelszavukat manage_users: Felhasználók kezelése @@ -664,84 +662,41 @@ hu: rules: add_new: Szabály hozzáadása delete: Törlés - description_html: Bár a többség azt állítja, hogy elolvasták és egyetértenek a felhasználói feltételekkel, általában ez nem teljesül, amíg egy probléma elő nem jön. Tedd könnyebbé a szervered szabályainak áttekintését azzal, hogy pontokba foglalod azt egy listába. Próbáld meg a különálló szabályokat megtartani rövidnek, egyszerűnek. Próbáld meg azt is, hogy nem darabolod fel őket sok különálló kis pontra. + description_html: Bár a többség azt állítja, hogy elolvasták és egyetértenek a felhasználói feltételekkel, általában ez nem teljesül, amíg egy probléma elő nem jön. Tedd könnyebbé a kiszolgálód szabályainak áttekintését azzal, hogy pontokba foglalod azt egy listában. Az egyes szabályok legyenek rövidek és egyszerűek. Próbáld meg nem túl sok önálló pontra darabolni őket. edit: Szabály szerkesztése - empty: Nincsenek még szerver szabályok definiálva. - title: Szerverszabályzat + empty: Még nincsenek meghatározva a kiszolgáló szabályai. + title: Kiszolgáló szabályai settings: - activity_api_enabled: - desc_html: Helyi bejegyzések, aktív felhasználók és új regisztrációk száma heti bontásban - title: Felhasználói aktivitás összesített statisztikájának publikussá tétele - bootstrap_timeline_accounts: - desc_html: Az egyes felhasználóneveket vesszővel válaszd el! Csak helyi és aktivált fiókok esetében működik. Üresen (alapértelmezettként) minden helyi adminisztrátorra érvényes. - title: Alapértelmezett követések új felhasználók esetében - contact_information: - email: Kapcsolattartói e-mail cím - username: Kapcsolattartó felhasználóneve - custom_css: - desc_html: Változtasd meg a kinézetet ebben a CSS-ben, mely minden oldalon be fog töltődni - title: Egyéni CSS - default_noindex: - desc_html: Olyan felhasználókat érinti, akik nem módosították ezt a beállítást - title: Alapértelmezésként ne indexeljék a keresők a felhasználóinkat + about: + manage_rules: Kiszolgáló szabályainak kezelése + preamble: Adj meg részletes információkat arról, hogy a kiszolgáló hogyan működik, miként moderálják és finanszírozzák. + title: Névjegy + appearance: + title: Megjelenés + branding: + preamble: A kiszolgáló márkajelzése különbözteti meg a hálózat többi kiszolgálójától. Ez az információ számos környezetben megjelenhet, például a Mastodon webes felületén, natív alkalmazásokban, más weboldalakon és üzenetküldő alkalmazásokban megjelenő hivatkozások előnézetben stb. Ezért a legjobb, ha ez az információ világos, rövid és tömör. + content_retention: + title: Tartalom megtartása + discovery: + follow_recommendations: Ajánlottak követése + preamble: Az érdekes tartalmak felszínre hozása fontos szerepet játszik az új felhasználók bevonásában, akik esetleg nem ismerik a Mastodont. Szabályozd, hogy a különböző felfedezési funkciók hogyan működjenek a kiszolgálón. + profile_directory: Profiladatbázis + public_timelines: Nyilvános idővonalak + title: Felfedezés + trends: Trendek domain_blocks: all: Mindenkinek disabled: Senkinek - title: Domain tiltások megjelenitése users: Bejelentkezett helyi felhasználóknak - domain_blocks_rationale: - title: Mutasd meg az indokolást - mascot: - desc_html: Több oldalon is látszik. Legalább 293×205px méret javasolt. Ha nincs beállítva, az alapértelmezett kabalát használjuk - title: Kabala kép - peers_api_enabled: - desc_html: Domainek, amelyekkel ez a szerver kapcsolatban áll - title: Szerverek listájának közzététele, melyekkel ez a szerver kapcsolatban áll - preview_sensitive_media: - desc_html: Más weboldalakon linkelt tartalmaink előnézetében mindenképp benne lesz egy bélyegkép még akkor is, ha a médiát kényesnek jelölték meg - title: Kényes média mutatása OpenGraph előnézetben - profile_directory: - desc_html: Lehetővé teszi, hogy a felhasználóinkat megtalálják - title: Profil adatbázis engedélyezése registrations: - closed_message: - desc_html: Ez az üzenet jelenik meg a főoldalon, ha a regisztráció nem engedélyezett. HTML-tageket is használhatsz - title: Üzenet, ha a regisztráció nem engedélyezett - require_invite_text: - desc_html: Ha a regisztrációhoz kézi jóváhagyásra van szükség, akkor a „Miért akarsz csatlakozni?” válasz kitöltése legyen kötelező, és ne opcionális - title: Az új felhasználóktól legyen megkövetelve a meghívási kérés szövegének kitöltése + preamble: Szabályozd, hogy ki hozhat létre fiókot a kiszolgálón. + title: Regisztrációk registrations_mode: modes: approved: A regisztráció engedélyhez kötött none: Senki sem regisztrálhat open: Bárki regisztrálhat - title: Regisztrációs mód - site_description: - desc_html: Rövid bemutatkozás a főoldalon és a meta fejlécekben. Írd le, mi teszi ezt a szervert különlegessé! Használhatod a <a> és <em> HTML tageket. - title: Kiszolgáló leírása - site_description_extended: - desc_html: Ide teheted például a közösségi és egyéb szabályzatot, útmutatókat és mindent, ami egyedivé teszi szerveredet. HTML-tageket is használhatsz - title: További egyéni információk - site_short_description: - desc_html: Oldalsávban és meta tag-ekben jelenik meg. Írd le, mi teszi ezt a szervert különlegessé egyetlen bekezdésben. - title: Rövid leírás - site_terms: - desc_html: Megírhatod a saját adatvédelmi szabályzatodat. Használhatsz HTML címkéket. - title: Egyéni adatvédelmi szabályzat - site_title: A szerver neve - thumbnail: - desc_html: Az OpenGraph-on és API-n keresztüli előnézetekhez használatos. Ajánlott mérete 1200×630 képpont. - title: A szerver bélyegképe - timeline_preview: - desc_html: Nyilvános idővonal megjelenítése a főoldalon - title: A nyilvános idővonal hitelesítés nélküli elérésének engedélyezése - title: Webhely beállításai - trendable_by_default: - desc_html: Az egyes felkapott tartalmak továbbra is explicit módon tilthatók - title: Trendek engedélyezése előzetes ellenőrzés nélkül - trends: - desc_html: Előzetesen engedélyezett és most felkapott hashtagek nyilvános megjelenítése - title: Felkapott hashtagek + title: Kiszolgálóbeállítások site_uploads: delete: Feltöltött fájl törlése destroyed_msg: Sikeresen töröltük a site feltöltését! @@ -777,7 +732,7 @@ hu: message_html: 'Nem kompatibilis Elasticsearch verzió: %{value}' version_comparison: Az Elasticsearch %{running_version} fut, de %{required_version} szükséges rules_check: - action: Szerver szabályok menedzselése + action: Kiszolgáló szabályainak kezelése message_html: Még nem definiáltál egy szerver szabályt sem. sidekiq_process_check: message_html: Nincs Sidekiq folyamat, mely a %{value} sorhoz van rendelve. Kérlek, nézd át a Sidekiq beállításait @@ -792,7 +747,7 @@ hu: links: allow: Hivatkozás engedélyezése allow_provider: Közzétevő engedélyezése - description_html: Ezek olyan hivatkozások, melyeket a szervered által látott fiókok mostanában sokat osztanak meg. Ez segíthet a felhasználóidnak rátalálni arra, hogy mi történik a világban. Egy hivatkozást sem mutatunk meg nyilvánosan, amíg a közzétevőt jóvá nem hagytad. A hivatkozásokat külön is engedélyezheted vagy visszautasíthatod. + description_html: Ezek olyan hivatkozások, melyeket a kiszolgálód által látott fiókok mostanában sokat osztanak meg. Ez segíthet a felhasználóidnak rátalálni arra, hogy mi történik a világban. Egy hivatkozást sem jelenik meg nyilvánosan, amíg a közzétevőt jóvá nem hagytad. A hivatkozásokat külön is engedélyezheted vagy elutasíthatod. disallow: Hivatkozás letiltása disallow_provider: Közzétevő letiltása no_link_selected: Nem változott meg egy hivatkozás sem, mert semmi sem volt kiválasztva @@ -807,14 +762,14 @@ hu: pending_review: Áttekintésre vár preview_card_providers: allowed: A közzétevő hivatkozásai felkapottak lehetnek - description_html: Ezek olyan domainek, melyekre vonatkozó hivatkozásokat gyakran osztanak meg a szervereden. A hivatkozások nem lesznek nyilvánosan trendik, amíg a hivatkozás domainjét jóvá nem hagytad. A jóváhagyásod (vagy visszautasításod) az aldomainekre is vonatkozik. + description_html: Ezek olyan domainek, melyekre vonatkozó hivatkozásokat gyakran osztanak meg a kiszolgálódon. A hivatkozások nem lesznek nyilvánosan felkapottak, amíg a hivatkozás domainjét jóvá nem hagytad. A jóváhagyásod (vagy elutasításod) az aldomainekre is vonatkozik. rejected: A közzétevő hivatkozásai nem lesznek felkapottak title: Közzétévők rejected: Elutasított statuses: allow: Bejegyzés engedélyezése allow_account: Szerző engedélyezése - description_html: Ezek olyan, a szervered által ismert bejegyzések, melyeket mostanság gyakran osztanak meg vagy jelölnek kedvencnek. Ez segíthet az új vagy visszatérő felhasználóidnak, hogy több követhető személyt találjanak Egyetlen bejegyzést sem mutatunk meg nyilvánosan, amíg ennek szerzőjét nem hagytad jóvá és ő nem járult hozzá, hogy őt másoknak ajánlják. Bejegyzéseket egyenként is engedélyezhetsz vagy visszautasíthatsz. + description_html: Ezek olyan, a szervered által ismert bejegyzések, melyeket mostanság gyakran osztanak meg vagy jelölnek kedvencnek. Ez segíthet az új vagy visszatérő felhasználóidnak, hogy több követhető személyt találjanak. Egyetlen bejegyzés sem jelenik meg nyilvánosan, amíg ennek szerzőjét nem hagytad jóvá és ő nem járult hozzá, hogy őt másoknak ajánlják. Bejegyzéseket egyenként is engedélyezhetsz vagy visszautasíthatsz. disallow: Bejegyzés tiltása disallow_account: Szerző tiltása no_status_selected: Nem változott meg egy felkapott bejegyzés sem, mert semmi sem volt kiválasztva @@ -831,7 +786,7 @@ hu: tag_servers_dimension: Legnépszerűbb kiszolgálók tag_servers_measure: különböző kiszolgáló tag_uses_measure: összes használat - description_html: Ezek olyan hashtag-ek, melyek mostanság nagyon sok bejegyzésben jelennek meg, melyet a szervered lát. Ez segíthet a felhasználóidnak abban, hogy megtudják, miről beszélnek legtöbbet az emberek az adott pillanatban. Egyetlen hashtag-et sem mutatunk meg nyilvánosan, amíg azt nem hagytad jóvá. + description_html: Ezek olyan hashtagek, melyek mostanság nagyon sok bejegyzésben jelennek meg, melyet a szervered lát. Ez segíthet a felhasználóidnak abban, hogy megtudják, miről beszélnek legtöbbet az emberek az adott pillanatban. Egyetlen hashtaget sem jelenik meg nyilvánosan, amíg azt nem hagytad jóvá. listable: Javasolható no_tag_selected: Nem változott meg egy címke sem, mert semmi sem volt kiválasztva not_listable: Nem lesz javasolva @@ -944,7 +899,7 @@ hu: delete_account: Felhasználói fiók törlése delete_account_html: Felhasználói fiókod törléséhez kattints ide. A rendszer újbóli megerősítést fog kérni. description: - prefix_invited_by_user: "@%{name} meghív téged, hogy csatlakozz erre a Mastodon szerverre!" + prefix_invited_by_user: "@%{name} meghív téged, hogy csatlakozz ehhez a Mastodon kiszolgálóhoz." prefix_sign_up: Regisztrláj még ma a Mastodonra! suffix: Egy fiókkal követhetsz másokat, bejegyzéseket tehetsz közzé, eszmét cserélhetsz más Mastodon szerverek felhasználóival! didnt_get_confirmation: Nem kaptad meg a megerősítési lépéseket? @@ -1089,7 +1044,7 @@ hu: '500': content: Sajnáljuk, valami hiba történt a mi oldalunkon. title: Az oldal nem megfelelő - '503': Az oldalt nem tudjuk megmutatni átmeneti szerverprobléma miatt. + '503': Az oldalt átmeneti kiszolgálóprobléma miatt nem lehet kiszolgálni. noscript_html: A Mastodon webalkalmazás használatához engedélyezned kell a JavaScriptet. A másik megoldás, hogy kipróbálsz egy platformodnak megfelelő alkalmazást. existing_username_validator: not_found: ezzel a névvel nem találtunk helyi felhasználót @@ -1190,7 +1145,7 @@ hu: merge_long: Megtartjuk a meglévő bejegyzéseket és hozzávesszük az újakat overwrite: Felülírás overwrite_long: Lecseréljük újakkal a jelenlegi bejegyzéseket - preface: Itt importálhatod egy másik szerverről lementett adataidat, például követettjeid és letiltott felhasználóid listáját. + preface: Itt importálhatod egy másik kiszolgálóról lementett adataidat, például követettjeid és letiltott felhasználóid listáját. success: Adataidat sikeresen feltöltöttük és feldolgozásukat megkezdtük types: blocking: Letiltottak listája @@ -1216,7 +1171,7 @@ hu: one: 1 használat other: "%{count} használat" max_uses_prompt: Nincs korlát - prompt: Az itt generált linkek megosztásával hívhatod meg ismerőseidet erre a szerverre + prompt: Az itt előállított hivatkozások megosztásával hívhatod meg ismerőseidet erre a kiszolgálóra table: expires_at: Lejárat uses: Használat @@ -1332,7 +1287,7 @@ hu: instructions_html: "Olvasd be ezt a QR-kódot a telefonodon futó Google Authenticator vagy egyéb TOTP alkalmazással. A jövőben ez az alkalmazás fog számodra hozzáférési kódot generálni a belépéshez." manual_instructions: 'Ha nem sikerült a QR-kód beolvasása, itt a szöveges kulcs, amelyet manuálisan kell begépelned:' setup: Beállítás - wrong_code: A beírt kód nem érvényes! A szerver órája és az eszközöd órája szinkronban jár? + wrong_code: A beírt kód nem érvényes. A kiszolgáló órája és az eszközöd órája szinkronban jár? pagination: newer: Újabb next: Következő @@ -1510,7 +1465,7 @@ hu: enabled: Régi bejegyzések automatikus törlése enabled_hint: Automatikusan törli a bejegyzéseidet, ahogy azok elérik a megadott korhatárt, kivéve azokat, melyek illeszkednek valamely alábbi kivételre exceptions: Kivételek - explanation: Mivel a bejegyzések törlése drága művelet, ezt időben elnyújtva tesszük meg, amikor a szerver éppen nem elfoglalt. Ezért lehetséges, hogy a bejegyzéseidet valamivel később töröljük, mint ahogy azok elérik a korhatárukat. + explanation: Mivel a bejegyzések törlése drága művelet, ezért ez időben elnyújtva történik, amikor a kiszolgáló épp nem elfoglalt. Ezért lehetséges, hogy a bejegyzéseid valamivel később lesznek törölve, mint ahogy azok elérik a korhatárukat. ignore_favs: Kedvencek kihagyása ignore_reblogs: Megtolások kihagyása interaction_exceptions: Interakció alapú kivételek @@ -1606,7 +1561,7 @@ hu: disable: Nem használhatod tovább a fiókodat, bár a profil- és egyéb adataid érintetlenül maradnak. Kérhetsz mentést az adataidról, megváltoztathatod a beállításaidat vagy törölheted a fiókodat. mark_statuses_as_sensitive: Néhány bejegyzésedet a %{instance} moderátorai érzékenynek jelölték. Ez azt jelenti, hogy az embereknek először rá kell nyomni a bejegyzés médiatartalmára, mielőtt egy előnézet megjelenne. A jövőben te is megjelölheted bejegyzés írása közben a médiatartalmat érzékenyként. sensitive: Mostantól minden feltöltött médiaállományodat érzékeny tartalomként jelölünk meg és kattintásos figyelmeztetés mögé rejtjük. - silence: A fiókodat most is használhatod, de ezen a kiszolgálón csak olyanok láthatják a bejegyzéseidet, akik már eddig is a követőid voltak, valamint kihagyunk különböző felfedezésre használható funkciókból. Ettől még mások továbbra is manuálisan be tudnak követni. + silence: A fiókodat most is használhatod, de ezen a kiszolgálón csak olyanok láthatják a bejegyzéseidet, akik már eddig is a követőid voltak, valamint kimaradhatsz a különböző felfedezési funkciókból. Viszont mások kézileg továbbra is be tudnak követni. suspend: Többé nem használhatod a fiókodat, a profilod és más adataid többé nem elérhetőek. Még be tudsz jelentkezni, hogy mentést kérj az adataidról addig, amíg kb. 30 nap múlva teljesen le nem töröljük őket. Néhány alapadatot megtartunk, hogy el tudjuk kerülni, hogy megkerüld a felfüggesztést. reason: 'Indok:' statuses: 'Bejegyzések idézve:' diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 7ba00a8478..5094ca898a 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -375,38 +375,14 @@ hy: empty: Սերուերի կանոնները դեռեւս սահմանուած չեն։ title: Սերուերի կանոնները settings: - contact_information: - email: Գործնական էլփոստ - username: Կոնտակտի ծածկանուն - custom_css: - title: Սեփական CSS domain_blocks: all: Բոլորին disabled: Ոչ մէկին - title: Ցուցադրել տիրոյթը արգելափակումները - profile_directory: - desc_html: Թոյլատրել օգտատէրերին բացայայտուել - title: Միացնել հաշուի մատեանը - registrations: - closed_message: - desc_html: Ցուցադրուում է արտաքին էջում, երբ գրանցումները փակ են։ Կարող ես օգտագործել նաեւ HTML թէգեր - title: Փակ գրանցման հաղորդագրութիւն registrations_mode: modes: approved: Գրանցման համար անհրաժեշտ է հաստատում none: Ոչ ոք չի կարող գրանցուել open: Բոլորը կարող են գրանցուել - title: Գրանցումային ռեժիմ - site_description: - title: Կայքի նկարագրութիւն - site_short_description: - title: Կայքի հակիրճ նկարագրութիւն - site_title: Սպասարկչի անուն - thumbnail: - title: Հանգոյցի նկարը - title: Կայքի կարգաւորումներ - trends: - title: Թրենդային պիտակներ site_uploads: delete: Ջնջել վերբեռնուած ֆայլը destroyed_msg: Կայքի վերբեռնումը բարեյաջող ջնջուեց diff --git a/config/locales/id.yml b/config/locales/id.yml index 026081e842..9248eab308 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -573,73 +573,15 @@ id: empty: Belum ada aturan server yang didefinisikan. title: Aturan server settings: - activity_api_enabled: - desc_html: Hitung status yang dipos scr lokal, pengguna aktif, dan registrasi baru dlm keranjang bulanan - title: Terbitkan statistik keseluruhan tentang aktivitas pengguna - bootstrap_timeline_accounts: - desc_html: Pisahkan nama pengguna dengan koma. Hanya akun lokal dan tak terkunci yang akan bekerja. Isi bawaan jika kosong adalah semua admin lokal. - title: Ikuti scr bawaan untuk pengguna baru - contact_information: - email: Masukkan alamat email - username: Masukkan nama pengguna - custom_css: - desc_html: Ubah tampilan dengan CSS yang dimuat di setiap halaman - title: CSS Kustom - default_noindex: - desc_html: Memengaruhi semua pengguna yang tidak mengubah setelan ini sendiri - title: Singkirkan pengguna dari pengindeksan mesin pencari scr bawaan domain_blocks: all: Kepada semua orang disabled: Tidak kepada siapa pun - title: Lihat blokir domain users: Ke pengguna lokal yang sudah login - domain_blocks_rationale: - title: Tampilkan alasan - mascot: - desc_html: Ditampilkan di banyak halaman. Direkomendasikan minimal 293x205px. Jika tidak diatur, kembali ke maskot bawaan - title: Gambar maskot - peers_api_enabled: - desc_html: Nama domain server ini dijumpai di fediverse - title: Terbitkan daftar server yang ditemukan - preview_sensitive_media: - desc_html: Pratinjau tautan pada situsweb lain akan menampilkan gambar kecil meski media ditandai sebagai sensitif - title: Tampilkan media sensitif di pratinjau OpenGraph - profile_directory: - desc_html: Izinkan pengguna untuk ditemukan - title: Aktifkan direktori profil - registrations: - closed_message: - desc_html: Ditampilkan pada halaman depan saat pendaftaran ditutup
    Anda bisa menggunakan tag HTML - title: Pesan penutupan pendaftaran - require_invite_text: - desc_html: Saat pendaftaran harus disetujui manual, buat input teks "Mengapa Anda ingin bergabung?" sebagai hal wajib bukan opsional - title: Pengguna baru harus memasukkan alasan bergabung registrations_mode: modes: approved: Persetujuan diperlukan untuk mendaftar none: Tidak ada yang dapat mendaftar open: Siapa pun dapat mendaftar - title: Mode registrasi - site_description: - desc_html: Ditampilkan sebagai sebuah paragraf di halaman depan dan digunakan sebagai tag meta.
    Anda bisa menggunakan tag HTML, khususnya <a> dan <em>. - title: Deskripsi situs - site_description_extended: - desc_html: Ditampilkan pada halaman informasi tambahan
    Anda bisa menggunakan tag HTML - title: Deskripsi situs tambahan - site_short_description: - desc_html: Ditampilkan pada bilah samping dan tag meta. Jelaskan apa itu Mastodon dan yang membuat server ini spesial dalam satu paragraf. - title: Deskripsi server pendek - site_title: Judul Situs - thumbnail: - desc_html: Dipakai sebagai pratinjau via OpenGraph dan API. Direkomendasikan 1200x630px - title: Server gambar kecil - timeline_preview: - desc_html: Tampilkan tautan ke linimasa publik pada halaman landas dan izinkan API mengakses linimasa publik tanpa autentifikasi - title: Izinkan akses linimasa publik tanpa autentifikasi - title: Pengaturan situs - trends: - desc_html: Tampilkan secara publik tagar tertinjau yang kini sedang tren - title: Tagar sedang tren site_uploads: delete: Hapus berkas yang diunggah destroyed_msg: Situs yang diunggah berhasil dihapus! diff --git a/config/locales/io.yml b/config/locales/io.yml index 4d515ce6b0..5a513f4f70 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -667,79 +667,40 @@ io: empty: Nula servilreguli fixesis til nun. title: Servilreguli settings: - activity_api_enabled: - desc_html: Quanto de lokale publikigita posti, aktiva uzanti e nova registri quale semane faski - title: Publikigez rezumstatistiko pri uzantoaktiveso en API - bootstrap_timeline_accounts: - desc_html: Separez multopla uzantonomi kun komo. Ca konti garantiesos montresar en sequorekomendi - title: Rekomendez ca konti a nova uzanti - contact_information: - email: Enter a public e-mail address - username: Enter a username - custom_css: - desc_html: Modifikez aspekto kun CSS chargasas che singla pagino - title: Kustumizita CSS - default_noindex: - desc_html: Efektigar omna uzanti quo ne chanjis ca opciono per su - title: Despartoprenigez uzanti de trovmotorindexo quale originala stando + about: + manage_rules: Jerez servilreguli + preamble: Donez detaloza informi pri quale la servilo funcionar, jeresar e moyenigesar. + rules_hint: Havas partikulara areo por reguli quo uzanti expektesar sequar. + title: Pri co + appearance: + preamble: Kustumizitez retintervizajo di Mastodon. + title: Aspekto + branding: + preamble: Fabrikmarko di ca servilo diferentigas lu de altra servili en la reto. Ca informi forsan montresas che diversa loki. Do, ca informi debas esar klara. + title: Fabrikmarkeso + content_retention: + preamble: Dominacez quale uzantigita kontenajo retenesar en Mastodon. + title: Kontenajreteneso + discovery: + follow_recommendations: Sequez rekomendaji + preamble: Montrar interesanta kontenajo esas importanta ye voligar nova uzanti quo forsan ne savas irgu. Dominacez quale ca deskovrotraiti funcionar en ca servilo. + profile_directory: Profilcheflisto + public_timelines: Publika tempolinei + title: Deskovro + trends: Tendenci domain_blocks: all: A omnu disabled: A nulu - title: Montrez domenobstrukti users: A enirinta lokala uzanti - domain_blocks_rationale: - title: Montrez motivo - mascot: - desc_html: Montresas che multa chefpagino. Minime 293x205px rekomendesas. Se ne fixesis, ol retrouzas reprezentanto - title: Reprezenterimajo - peers_api_enabled: - desc_html: Domennomo quon ca servilo renkontris en fediverso - title: Publikigez listo di deskovrita servili en API - preview_sensitive_media: - desc_html: Ligilprevidi che altra retsiti montros imajeto mem se medii markizesas quale sentoza - title: Montrez sentoza medii e OpenGraph previdi - profile_directory: - desc_html: Permisez uzanti deskovresar - title: Aktivigez profilcheflisto registrations: - closed_message: - desc_html: Displayed on frontpage when registrations are closed
    You can use HTML tags - title: Mesajo di klozita registro - require_invite_text: - desc_html: Se registri bezonas manuala aprobo, kauzigar "Por quo vu volas juntar?" textoenpoz divenar obligata - title: Bezonez nova uzanti insertar motivo por juntar + preamble: Dominacez qua povas krear konto en ca servilo. + title: Registragi registrations_mode: modes: approved: Aprobo bezonesas por registro none: Nulu povas registrar open: Irgu povas registrar - title: Registromodo - site_description: - desc_html: Displayed as a paragraph on the frontpage and used as a meta tag.
    You can use HTML tags, in particular <a> and <em>. - title: Site description - site_description_extended: - desc_html: Displayed on extended information page
    You can use HTML tags - title: Extended site description - site_short_description: - desc_html: Montresas en flankobaro e metatagi. Deskriptez Mastodon e por quo ca servilo esas specala per 1 paragrafo. - title: Kurta servildeskripto - site_terms: - desc_html: Vu povas adjuntar sua privatesguidilo. Vu povas uzar tagi di HTML - title: Kustumizita privatesguidilo - site_title: Site title - thumbnail: - desc_html: Uzesis por previdi tra OpenGraph e API. 1200x630px rekomendesas - title: Servilimajeto - timeline_preview: - desc_html: Montrez ligilo e publika tempolineo che atingopagino e permisez API acesar publika tempolineo sen yurizo - title: Permisez neyurizita aceso a publika tempolineo - title: Site Settings - trendable_by_default: - desc_html: Partikulara trendoza kontenajo povas ankore videbla nepermisesar - title: Permisez hashtagi divenies tendencoza sen bezonata kontrolo - trends: - desc_html: Publika montrez antee kontrolita kontenajo quo nun esas tendencoza - title: Tendenci + title: Servilopcioni site_uploads: delete: Efacez adchargita failo destroyed_msg: Sitadchargito sucesoze efacesis! diff --git a/config/locales/is.yml b/config/locales/is.yml index aa8f55804c..0785b209a2 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -667,79 +667,15 @@ is: empty: Engar reglur fyrir netþjón hafa ennþá verið skilgreindar. title: Reglur netþjónsins settings: - activity_api_enabled: - desc_html: Fjöldi staðvært birtra færslna, virkra notenda og nýskráninga í vikulegum skömmtum - title: Birta samantektartölfræði um virkni notanda - bootstrap_timeline_accounts: - desc_html: Aðskildu mörg notendanöfn með kommum. Einungis staðværir og ólæstir aðgangar virka. Þegar þetta er autt er sjálgefið miðað við alla staðværa stjórnendur. - title: Sjálfgefnar fylgnistillingar fyrir nýja notendur - contact_information: - email: Fyrirtækistölvupóstur - username: Notandanafn tengiliðar - custom_css: - desc_html: Breyttu útlitinu með CSS-skilgreiningum sem hlaðið er inn á hverri síðu - title: Sérsniðið CSS - default_noindex: - desc_html: Hefur áhrif á alla þá notendur sem ekki hafa breytt þessum stillingum sjálfir - title: Sjálfgefið láta notendur afþakka atriðaskráningu í leitarvélum domain_blocks: all: Til allra disabled: Til engra - title: Birta útilokanir á lénum users: Til innskráðra staðværra notenda - domain_blocks_rationale: - title: Birta röksemdafærslu - mascot: - desc_html: Birt á ýmsum síðum. Mælt með að hún sé a.m.k. 293×205 mynddílar. Þegar þetta er ekki stillt, er notuð smámynd netþjónsins - title: Mynd af lukkudýri - peers_api_enabled: - desc_html: Lénaheiti sem þessi netþjónn hefur rekist á í skýjasambandinu (samtengdum vefþjónum - fediverse) - title: Birta lista yfir uppgötvaða netþjóna - preview_sensitive_media: - desc_html: Forskoðun tengla á önnur vefsvæði mun birta smámynd jafnvel þótt myndefnið sé merkt sem viðkvæmt - title: Birta viðkvæmt myndefni í OpenGraph-forskoðun - profile_directory: - desc_html: Leyfa að hægt sé að finna notendur - title: Virkja notandasniðamöppu - registrations: - closed_message: - desc_html: Birt á forsíðu þegar lokað er fyrir nýskráningar. Þú getur notað HTML-einindi - title: Skilaboð vegna lokunar á nýskráningu - require_invite_text: - desc_html: Þegar nýskráningar krefjast handvirks samþykkis, skal gera "Hvers vegna viltu taka þátt?" boðstexta að skyldu fremur en valkvæðan - title: Krefja nýja notendur um að fylla út boðstexta registrations_mode: modes: approved: Krafist er samþykkt nýskráningar none: Enginn getur nýskráð sig open: Allir geta nýskráð sig - title: Nýskráningarhamur - site_description: - desc_html: Kynningarmálsgrein í API. Lýstu því hvað það er sem geri þennan Mastodon-þjón sérstakan, auk annarra mikilvægra upplýsinga. Þú getur notað HTML-einindi, sér í lagi <a> og <em>. - title: Lýsing á vefþjóni - site_description_extended: - desc_html: Góður staður fyrir siðareglur, almennt regluverk, leiðbeiningar og annað sem gerir netþjóninni þinn sérstakann. Þú getur notað HTML-einindi - title: Sérsniðnar ítarlegar upplýsingar - site_short_description: - desc_html: Birt á hliðarspjaldi og í lýsigögnum. Lýstu því hvað Mastodon gerir og hvað það er sem geri þennan vefþjón sérstakan, í einni málsgrein. - title: Stutt lýsing á netþjóninum - site_terms: - desc_html: Þú getur skrifað þína eigin persónuverndarstefnu. Nota má HTML-einindi - title: Sérsniðin persónuverndarstefna - site_title: Heiti vefþjóns - thumbnail: - desc_html: Notað við forskoðun í gegnum OpenGraph og API-kerfisviðmót. Mælt með 1200×630 mynddílum - title: Smámynd vefþjóns - timeline_preview: - desc_html: Birta tengil í opinbera tímalínu á upphafssíðu og leyfa aðgang API-kerfisviðmóts að opinberri tímalínu án auðkenningar - title: Leyfa óauðkenndan aðgang að opinberri tímalínu - title: Stillingar vefsvæðis - trendable_by_default: - desc_html: Sérstakt vinsælt efni er eftir sem áður hægt að banna sérstaklega - title: Leyfa vinsælt efni án undanfarandi yfirferðar - trends: - desc_html: Birta opinberlega þau áður yfirförnu myllumerki sem eru núna í umræðunni - title: Vinsælt site_uploads: delete: Eyða innsendri skrá destroyed_msg: Það tókst að eyða innsendingu á vefsvæði! diff --git a/config/locales/it.yml b/config/locales/it.yml index a1aa2ee664..8fe430c960 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -667,79 +667,40 @@ it: empty: Non sono ancora state definite regole del server. title: Regole del server settings: - activity_api_enabled: - desc_html: Conteggi degli status pubblicati localmente, degli utenti attivi e delle nuove registrazioni in gruppi settimanali - title: Pubblica statistiche aggregate circa l'attività dell'utente - bootstrap_timeline_accounts: - desc_html: Separa i nomi utente con virgola. Funziona solo con account locali e non bloccati. Quando vuoto, valido per tutti gli amministratori locali. - title: Seguiti predefiniti per i nuovi utenti - contact_information: - email: E-mail di lavoro - username: Nome utente del contatto - custom_css: - desc_html: Modifica l'aspetto con il CSS caricato in ogni pagina - title: CSS personalizzato - default_noindex: - desc_html: Influisce su tutti gli utenti che non hanno cambiato questa impostazione - title: Esclude gli utenti dall'indicizzazione dei motori di ricerca per impostazione predefinita + about: + manage_rules: Gestisci le regole del server + preamble: Fornire informazioni approfondite su come, il server, venga gestito, moderato e finanziato. + rules_hint: C'è un'area dedicata per le regole che i tuoi utenti dovrebbero rispettare. + title: Info + appearance: + preamble: Personalizza l'interfaccia web di Mastodon. + title: Aspetto + branding: + preamble: 'Il marchio del tuo server lo differenzia dagli altri server nella rete. Queste informazioni possono essere visualizzate in una varietà di ambienti, come: l''interfaccia web di Mastodon, le applicazioni native, nelle anteprime dei collegamenti su altri siti Web e all''interno delle app di messaggistica e così via. Per questo motivo, è meglio mantenere queste informazioni chiare, brevi e concise.' + title: Marchio + content_retention: + preamble: Controlla come vengono memorizzati i contenuti generati dall'utente in Mastodon. + title: Conservazione dei contenuti + discovery: + follow_recommendations: Segui le raccomandazioni + preamble: La comparsa di contenuti interessanti è determinante per l'arrivo di nuovi utenti che potrebbero non conoscere nessuno su Mastodon. Controlla in che modo varie funzionalità di scoperta funzionano sul tuo server. + profile_directory: Directory del profilo + public_timelines: Timeline pubbliche + title: Scopri + trends: Tendenze domain_blocks: all: A tutti disabled: A nessuno - title: Mostra blocchi di dominio users: Agli utenti locali connessi - domain_blocks_rationale: - title: Mostra motivazione - mascot: - desc_html: Mostrata su più pagine. Almeno 293×205px consigliati. Se non impostata, sarò usata la mascotte predefinita - title: Immagine della mascotte - peers_api_enabled: - desc_html: Nomi di dominio che questo server ha incontrato nel fediverse - title: Pubblica elenco dei server scoperti - preview_sensitive_media: - desc_html: Le anteprime dei link su altri siti mostreranno un thumbnail anche se il media è segnato come sensibile - title: Mostra media sensibili nella anteprime OpenGraph - profile_directory: - desc_html: Permetti agli utenti di essere trovati - title: Attiva directory dei profili registrations: - closed_message: - desc_html: Mostrato nella pagina iniziale quando le registrazioni sono chiuse. Puoi usare tag HTML - title: Messaggio per registrazioni chiuse - require_invite_text: - desc_html: Quando le iscrizioni richiedono l'approvazione manuale, rendere la richiesta “Perché si desidera iscriversi?” obbligatoria invece che opzionale - title: Richiedi ai nuovi utenti di rispondere alla richiesta di motivazione per l'iscrizione + preamble: Controlla chi può creare un account sul tuo server. + title: Registrazioni registrations_mode: modes: approved: Approvazione richiesta per le iscrizioni none: Nessuno può iscriversi open: Chiunque può iscriversi - title: Modalità di registrazione - site_description: - desc_html: Paragrafo introduttivo nella pagina iniziale. Descrive ciò che rende speciale questo server Mastodon e qualunque altra cosa sia importante dire. Potete usare marcatori HTML, in particolare <a> e <em>. - title: Descrizione del server - site_description_extended: - desc_html: Un posto adatto le regole di comportamento, linee guida e altre cose specifiche del vostro server. Potete usare marcatori HTML - title: Informazioni estese personalizzate - site_short_description: - desc_html: Mostrato nella barra laterale e nei tag meta. Descrive in un paragrafo che cos'è Mastodon e che cosa rende questo server speciale. Se vuoto, sarà usata la descrizione predefinita del server. - title: Breve descrizione del server - site_terms: - desc_html: Puoi scrivere la tua politica sulla privacy. Puoi usare i tag HTML - title: Politica sulla privacy personalizzata - site_title: Nome del server - thumbnail: - desc_html: Usato per anteprime tramite OpenGraph e API. 1200x630px consigliati - title: Thumbnail del server - timeline_preview: - desc_html: Mostra la timeline pubblica sulla pagina iniziale - title: Anteprima timeline - title: Impostazioni sito - trendable_by_default: - desc_html: I contenuti di tendenza specifici possono ancora essere esplicitamente vietati - title: Consenti tendenze senza controllo preliminare - trends: - desc_html: Visualizza pubblicamente gli hashtag precedentemente esaminati che sono attualmente in tendenza - title: Hashtag di tendenza + title: Impostazioni del server site_uploads: delete: Cancella il file caricato destroyed_msg: Caricamento sito eliminato! diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 2bcfcfdf1a..bea0677adb 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -621,6 +621,7 @@ ja: manage_rules_description: ユーザーがサーバールールを変更できるようにします manage_settings: 設定の管理 manage_settings_description: ユーザーがサイト設定を変更できるようにします + manage_taxonomies: 分類の管理 manage_taxonomies_description: トレンドコンテンツの確認とハッシュタグの設定の更新 manage_user_access: アクセス権を管理 manage_user_access_description: 他のユーザーの2段階認証を無効にしたり、メールアドレスを変更したり、パスワードをリセットしたりすることができます。 @@ -642,75 +643,34 @@ ja: empty: サーバーのルールが定義されていません。 title: サーバーのルール settings: - activity_api_enabled: - desc_html: 週ごとのローカルに投稿された投稿数、アクティブなユーザー数、新規登録者数 - title: ユーザーアクティビティに関する統計を公開する - bootstrap_timeline_accounts: - desc_html: 複数のユーザー名を指定する場合コンマで区切ります。おすすめに表示されます。 - title: 新規ユーザーにおすすめするアカウント - contact_information: - email: ビジネスメールアドレス - username: 連絡先ユーザー名 - custom_css: - desc_html: 全ページに適用されるCSSの編集 - title: カスタムCSS - default_noindex: - desc_html: この設定を変更していない全ユーザーに影響します - title: デフォルトで検索エンジンによるインデックスを拒否する + about: + manage_rules: サーバーのルールを管理 + title: About + appearance: + preamble: ウェブインターフェースをカスタマイズします。 + title: 外観 + branding: + title: ブランディング + content_retention: + title: コンテンツの保持 + discovery: + follow_recommendations: おすすめフォロー + profile_directory: ディレクトリ + public_timelines: 公開タイムライン + trends: トレンド domain_blocks: all: 誰にでも許可 disabled: 誰にも許可しない - title: ドメインブロックを表示 users: ログイン済みローカルユーザーのみ許可 - domain_blocks_rationale: - title: コメントを表示 - mascot: - desc_html: 複数のページに表示されます。サイズは293x205px以上推奨です。未設定の場合、標準のマスコットが使用されます - title: マスコットイメージ - peers_api_enabled: - desc_html: 連合内でこのサーバーが遭遇したドメインの名前 - title: 接続しているサーバーのリストを公開する - preview_sensitive_media: - desc_html: 他のウェブサイトにリンクを貼った際、メディアが閲覧注意としてマークされていてもサムネイルが表示されます - title: OpenGraphによるプレビューで閲覧注意のメディアも表示する - profile_directory: - desc_html: ユーザーが見つかりやすくできるようになります - title: ディレクトリを有効にする registrations: - closed_message: - desc_html: 新規登録を停止しているときにフロントページに表示されます。HTMLタグが使えます - title: 新規登録停止時のメッセージ - require_invite_text: - desc_html: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする - title: 新規ユーザー登録時の理由を必須入力にする + preamble: あなたのサーバー上でアカウントを作成できるユーザーを制御します。 + title: 登録 registrations_mode: modes: approved: 登録には承認が必要 none: 誰にも許可しない open: 誰でも登録可 - title: 新規登録 - site_description: - desc_html: フロントページへの表示に使用される紹介文です。このMastodonサーバーを特徴付けることやその他重要なことを記述してください。HTMLタグ、特に<a><em>が使えます。 - title: サーバーの説明 - site_description_extended: - desc_html: あなたのサーバーにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます - title: カスタム詳細説明 - site_short_description: - desc_html: サイドバーとmetaタグに表示されます。Mastodonとは何か、そしてこのサーバーの特別な何かを1段落で記述してください。空欄の場合、サーバーの説明が使用されます。 - title: 短いサーバーの説明 - site_terms: - title: カスタムプライバシーポリシー - site_title: サーバーの名前 - thumbnail: - desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です - title: サーバーのサムネイル - timeline_preview: - desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへのAPIアクセスを許可します - title: 公開タイムラインへの未認証のアクセスを許可する - title: サイト設定 - trends: - desc_html: 現在トレンドになっている承認済みのハッシュタグを公開します - title: トレンドタグを有効にする + title: サーバー設定 site_uploads: delete: ファイルを削除 destroyed_msg: ファイルを削除しました! diff --git a/config/locales/ka.yml b/config/locales/ka.yml index c3ea20326b..5a2fb56a70 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -193,43 +193,6 @@ ka: unassign: გადაყენება unresolved: გადაუწყვეტელი updated_at: განახების დრო - settings: - activity_api_enabled: - desc_html: ლოკალურად გამოქვეყნებული სტატუსების, აქტიური მომხმარებლების და ყოველკვირეული რეგისტრაციების მთვლელი - title: გამოაქვეყნე აგრეგატი სტატისტიკები მომხმარებლის აქტივობაზე - bootstrap_timeline_accounts: - desc_html: გამოჰყავი მომხმარებლები მძიმით. იმუშავებს მხოლოდ ლოკალური და "ბლოკ-მოხსნილ" ანგარიშები. საწყისი როდესაც ცარიელია ყველა ლოკალური ადმინი. - title: საწყისი მიდევნებები ახლა მომხმარებლებზე - contact_information: - email: ბიზნეს ელ-ფოსტა - username: საკონტაქტო მომხმარებლის სახელი - peers_api_enabled: - desc_html: დომენების სახელები რომლებსაც შეხვდა ეს ინსტანცია ფედივერსში - title: გამოაქვეყნე აღმოჩენილი ინსტანციების სია - preview_sensitive_media: - desc_html: ბმულის პრევიუები სხვა ვებ-საიტებზე გამოაჩენენ პიქტოგრამას, მაშინაც კი თუ მედია მონიშნულია მგრძნობიარედ - title: გამოაჩინე მგრძნობიარე მედია ოუფენ-გრეფ პრევიუებში - registrations: - closed_message: - desc_html: გამოჩნდება წინა გვერდზე, როდესაც რეგისტრაციები დახურულია. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები - title: დახურული რეგისტრაციის წერილი - site_description: - desc_html: საშესავლო პარაგრაფი წინა გვერდზე. აღწერეთ თუ რა ხდის ამ მასტოდონის სერვერს განსაკუთრებულს და სხვა მნიშვნელოვანი. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები, კერძოდ <a> და <em>. - title: ინსტანციის აღწერილობა - site_description_extended: - desc_html: კარგი ადგილი მოქცევის კოდექსისთვის, წესები, სახელმძღვანელოები და სხვა რაც გამოარჩევს თქვენს ინსტანციას. შეგიძლიათ გამოიყენოთ ჰტმლ ტეგები - title: პერსონალიზირებული განვრცობილი ინფორმაცია - site_short_description: - desc_html: გამოჩნდება გვერდით ბარში და მეტა ტეგებში. აღწერეთ თუ რა არის მასტოდონი და რა ხდის ამ სერვერს უნიკალურს ერთ პარაგრაფში. თუ ცარიელია, გამოჩნდება ინსტანციის აღწერილობა. - title: აჩვენეთ ინსტანციის აღწერილობა - site_title: ინსტანციის სახელი - thumbnail: - desc_html: გამოიყენება პრევიუებისთვის ოუფენ-გრეფში და აპი-ში. 1200/630პიქს. რეკომენდირებული - title: ინსტანციის პიქტოგრამა - timeline_preview: - desc_html: აჩვენეთ საჯარო თაიმლაინი ლენდინგ გვერდზე - title: თაიმლაინ პრევიუ - title: საიტის პარამეტრები statuses: back_to_account: უკან ანგარიშის გვერდისკენ media: diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 7c14000e61..a4ea1f2119 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -382,23 +382,14 @@ kab: empty: Mazal ur ttwasbadun ara yilugan n uqeddac. title: Ilugan n uqeddac settings: - custom_css: - desc_html: Beddel aγan s CSS ara d-yettwasalayen deg yal asebter - title: CSS udmawan domain_blocks: all: I medden akk disabled: Γef ula yiwen users: Γef yimseqdacen idiganen i yeqqnen - profile_directory: - title: Rmed akaram n imaγnuten registrations_mode: modes: none: Yiwen·t ur yzmir ad izeddi open: Zemren akk ad jerden - site_description: - title: Aglam n uqeddac - site_title: Isem n uqeddac - title: Iγewwaṛen n usmel site_uploads: delete: Kkes afaylu yulin statuses: diff --git a/config/locales/kk.yml b/config/locales/kk.yml index cc17ed911f..1ac423e993 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -275,70 +275,15 @@ kk: unresolved: Шешілмеген updated_at: Жаңартылды settings: - activity_api_enabled: - desc_html: Соңғы аптада жазылған жазбалар, белсенді қолданушылар, жаңа тіркелімдер - title: Пайдаланушы әрекеті туралы жиынтық статистиканы жариялау - bootstrap_timeline_accounts: - desc_html: Бірнеше пайдаланушы атын үтірмен бөліңіз. Тек жергілікті және бұғатталмаған аккаунттар. Барлық жергілікті админдер бос болғанда. - title: Жаңа қолданушыларға жазылғандар - contact_information: - email: Бизнес e-mail - username: Қолданушымен байланыс - custom_css: - desc_html: Әр беттегі өзгерістерді CSS жаңаруымен қарау - title: Жеке CSS - default_noindex: - desc_html: Бұл параметрді өзгертпеген барлық пайдаланушыларға әсер етеді - title: Әдепкі бойынша іздеу жүйелерін индекстеуден бас тарту domain_blocks: all: Бәріне disabled: Ешкімге - title: Домен блоктарын көрсету users: Жергілікті қолданушыларға - domain_blocks_rationale: - title: Дәлелді көрсету - mascot: - desc_html: Displayed on multiple pages. Кем дегенде 293×205px рекоменделеді. When not set, falls back to default mascot - title: Маскот суреті - peers_api_enabled: - desc_html: Домен names this server has encountered in the fediverse - title: Publish list of discovered серверлер - preview_sensitive_media: - desc_html: Link previews on other websites will display a thumbnail even if the media is marked as сезімтал - title: Show sensitive media in OpenGraph превью - profile_directory: - desc_html: Рұқсат users to be discoverable - title: Enable профиль directory - registrations: - closed_message: - desc_html: Displayed on frontpage when registrations are closed. You can use HTML тег - title: Closed registration мессадж registrations_mode: modes: approved: Тіркелу үшін мақұлдау қажет none: Ешкім тіркеле алмайды open: Бәрі тіркеле алады - title: Тіркелулер - site_description: - desc_html: Introductory paragraph on the басты бет. Describe what makes this Mastodon server special and anything else important. You can use HTML tags, in particular <a> and <em>. - title: Сервер туралы - site_description_extended: - desc_html: A good place for your code of conduct, rules, guidelines and other things that set your server apart. You can use HTML тег - title: Custom extended ақпарат - site_short_description: - desc_html: Displayed in sidebar and meta tags. Describe what Mastodon is and what makes this server special in a single paragraph. If empty, defaults to сервер description. - title: Short сервер description - site_title: Сервер аты - thumbnail: - desc_html: Used for previews via OpenGraph and API. 1200x630px рекоменделеді - title: Сервер суреті - timeline_preview: - desc_html: Display public timeline on лендинг пейдж - title: Таймлайн превьюі - title: Сайт баптаулары - trends: - desc_html: Бұрын қарастырылған хэштегтерді қазіргі уақытта трендте көпшілікке көрсету - title: Тренд хештегтер site_uploads: delete: Жүктелген файлды өшір destroyed_msg: Жүктелген файл сәтті өшірілді! diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 3149be4589..814196db06 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -654,79 +654,17 @@ ko: empty: 아직 정의된 서버 규칙이 없습니다. title: 서버 규칙 settings: - activity_api_enabled: - desc_html: 주별 로컬에 게시 된 글, 활성 사용자 및 새로운 가입자 수 - title: 사용자 활동에 대한 통계 발행 - bootstrap_timeline_accounts: - desc_html: 콤마로 여러 사용자명을 구분. 이 계정들은 팔로우 추천에 반드시 나타나게 됩니다 - title: 새로운 사용자들에게 추천할 계정들 - contact_information: - email: 공개할 메일 주소를 입력 - username: 연락 받을 관리자 사용자명 - custom_css: - desc_html: 모든 페이지에 적용할 CSS - title: 커스텀 CSS - default_noindex: - desc_html: 이 설정을 바꾸지 않은 모든 사용자들에게 적용 됩니다 - title: 사용자들이 기본적으로 검색엔진에 인덱싱 되지 않도록 합니다 + about: + manage_rules: 서버 규칙 관리 domain_blocks: all: 모두에게 disabled: 아무에게도 안 함 - title: 도메인 차단 보여주기 users: 로그인 한 사용자에게 - domain_blocks_rationale: - title: 사유 보여주기 - mascot: - desc_html: 여러 페이지에서 보여집니다. 최소 293x205px을 추천합니다. 설정 되지 않은 경우, 기본 마스코트가 사용 됩니다 - title: 마스코트 이미지 - peers_api_enabled: - desc_html: 이 서버가 페디버스에서 만났던 도메인 네임들 - title: 발견 된 서버들의 리스트 발행 - preview_sensitive_media: - desc_html: 민감한 미디어로 설정되었더라도 다른 웹사이트에서 링크 미리보기에 썸네일을 보여줍니다 - title: 민감한 미디어를 오픈그래프 미리보기에 보여주기 - profile_directory: - desc_html: 사용자들이 발견 될 수 있도록 허용 - title: 프로필 책자 활성화 - registrations: - closed_message: - desc_html: 신규 등록을 받지 않을 때 프론트 페이지에 표시됩니다. HTML 태그를 사용할 수 있습니다 - title: 신규 등록 정지 시 메시지 - require_invite_text: - desc_html: 가입이 수동 승인을 필요로 할 때, "왜 가입하려고 하나요?" 항목을 선택사항으로 두는 것보다는 필수로 두는 것이 낫습니다 - title: 새 사용자가 초대 요청 글을 작성해야 하도록 registrations_mode: modes: approved: 가입하려면 승인이 필요함 none: 아무도 가입 할 수 없음 open: 누구나 가입 할 수 있음 - title: 가입 모드 - site_description: - desc_html: API의 소개문에 사용 됩니다.이 마스토돈 서버의 특별한 점 등을 설명하세요. HTML 태그, 주로 <a>, <em> 같은 것을 사용 가능합니다. - title: 서버 설명 - site_description_extended: - desc_html: 규칙, 가이드라인 등을 작성하기 좋은 곳입니다. HTML 태그를 사용할 수 있습니다 - title: 사이트 상세 설명 - site_short_description: - desc_html: 사이드바와 메타 태그에 나타납니다. 마스토돈이 무엇이고 이 서버의 특징은 무엇인지 한 문장으로 설명하세요. - title: 짧은 서버 설명 - site_terms: - desc_html: 자신만의 개인정보 처리방침을 작성할 수 있습니다. HTML 태그를 사용할 수 있습니다 - title: 사용자 지정 개인정보 처리방침 - site_title: 서버 이름 - thumbnail: - desc_html: OpenGraph와 API의 미리보기로 사용 됩니다. 1200x630px을 권장합니다 - title: 서버 썸네일 - timeline_preview: - desc_html: 랜딩 페이지에 공개 타임라인을 표시합니다 - title: 타임라인 프리뷰 - title: 사이트 설정 - trendable_by_default: - desc_html: 특정 트렌드를 허용시키지 않는 것은 여전히 가능합니다 - title: 사전 리뷰 없이 트렌드에 오르는 것을 허용 - trends: - desc_html: 리뷰를 거친 해시태그를 유행하는 해시태그에 공개적으로 보여줍니다 - title: 유행하는 해시태그 site_uploads: delete: 업로드한 파일 삭제 destroyed_msg: 사이트 업로드를 성공적으로 삭제했습니다! diff --git a/config/locales/ku.yml b/config/locales/ku.yml index b2914fef02..d1703d58e2 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -669,79 +669,20 @@ ku: empty: Tu rêbazên rajekar hê nehatine dîyarkirin. title: Rêbazên rajekar settings: - activity_api_enabled: - desc_html: Hejmara şandiyên weşandî yên herêmî, bikarhênerên çalak, û tomarkirin ên nû heftane - title: Tevahî amarên ên di derbarê çalakiya bikarhêneran de biweşîne - bootstrap_timeline_accounts: - desc_html: Navên bikarhênerên pir bi xalîçê veqetîne. Dê van ajimêran di pêşnîyarên jêrîn de werin xuyakirin - title: Van ajimêran ji bikarhênerên nû re pêşniyar bike - contact_information: - email: E-nameya karsazî - username: Bi bikarhêner re têkeve têkiliyê - custom_css: - desc_html: Bi CSS a ku li her rûpelê hatiye barkirin, awayê dîmenê biguherîne - title: CSS a kesanekirî - default_noindex: - desc_html: Hemû bikarhênerên ku ev sazkarî bi xwe neguhertiye bandor dike - title: Pêlrêçkirna bikarhêneran ji motorê lêgerînê dûr bixe + about: + manage_rules: Rêzikên rajekaran bi rê ve bibe + title: Derbar + discovery: + trends: Rojev domain_blocks: all: Bo herkesî disabled: Bo tu kesî - title: Astengkirinên navperê nîşan bide users: Ji bo bikarhênerên herêmî yên xwe tomar kirine - domain_blocks_rationale: - title: Sedemê nîşan bike - mascot: - desc_html: Li ser rûpela pêşîn tê xuyakirin. Bi kêmanî 293×205px tê pêşniyarkirin. Dema ku neyê sazkirin, vedigere ser dîmena wêneya piçûk a maskot ya heyî - title: Wêneya maskot - peers_api_enabled: - desc_html: Navê navperên ku ev rajekar di fendiverse de rastî wan hatiye - title: Rêzoka rajekarên hatiye dîtin di API-yê de biweşîne - preview_sensitive_media: - desc_html: Pêşdîtinên girêdanê yên li ser malperên din tevlî ku medya wekî hestyar hatiye nîşandan wê wekî wêneyekî piçûk nîşan bide - title: Medyayê hestyar nîşan bide di pêşdîtinên OpenGraph de - profile_directory: - desc_html: Mafê bide bikarhêneran ku bêne vedîtin - title: Pelrêçên profilê çalak bike - registrations: - closed_message: - desc_html: Gava ku tomarkirin têne girtin li ser rûpelê pêşîn têne xuyang kirin. Tu dikarî nîşanên HTML-ê bi kar bîne - title: Tomarkirinê girtî ya peyaman - require_invite_text: - desc_html: Gava ku tomarkirin pêdiviya pejirandina destan dike, Têketina nivîsê "Tu çima dixwazî beşdar bibî?" Bibe sereke ji devla vebijêrkî be - title: Ji bo bikarhênerên nû divê ku sedemek tevlêbûnê binivîsinin registrations_mode: modes: approved: Ji bo têketinê erêkirin pêwîste none: Kesek nikare tomar bibe open: Herkes dikare tomar bibe - title: Awayê tomarkirinê - site_description: - desc_html: Paragrafa destpêkê li ser API. Dide nasîn ka çi ev rajekarê Mastodon taybet dike û tiştên din ên girîn. Tu dikarî hashtagên HTML-ê, bi kar bîne di <a> û <em> de. - title: Danasîna rajekar - site_description_extended: - desc_html: Ji bo kodê perwerdetî, rêzik, rêbername û tiştên din ên ku rajekara te ji hev cihê dike cîhekî baş e. Tu dikarî hashtagên HTML-ê bi kar bîne - title: Zanyarên berfirehkirî ya rajekar - site_short_description: - desc_html: Ew di alavdanka kêlekê û tagên meta de tên xuyakirin. Di yek paragrafê de rave bike ka Mastodon çi ye û ya ku ev rajekar taybetî dike. - title: Danasîna rajekarê kurt - site_terms: - desc_html: Tu dikarî politîkaya taybetiyê ya xwe binivîsînî. Tu dikarî tagên HTML bi kar bînî - title: Politîka taybetiyê ya kesane - site_title: Navê rajekar - thumbnail: - desc_html: Ji bo pêşdîtinên bi riya OpenGraph û API-yê têne bikaranîn. 1200x630px tê pêşniyar kirin - title: Wêneya piçûk a rajekar - timeline_preview: - desc_html: Girêdana demnameya gelemperî li ser rûpela daxistinê nîşan bide û mafê bide ku API bêyî rastandinê bigihîje damnameya gelemperî - title: Mafê bide gihîştina ne naskirî bo demnameya gelemperî - title: Sazkariyên malperê - trendable_by_default: - desc_html: Naveroka rojevê nîşankirî dikare were qedexekirin - title: Mafê bide rojevê bêyî ku were nirxandin - trends: - desc_html: Hashtagên ku berê hatibûn nirxandin ên ku niha rojev in bi gelemperî bide xuyakirin - title: Hashtagên rojevê site_uploads: delete: Pela barkirî jê bibe destroyed_msg: Barkirina malperê bi serkeftî hate jêbirin! diff --git a/config/locales/lt.yml b/config/locales/lt.yml index c160f4c977..d0d8bb4b81 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -228,52 +228,6 @@ lt: unassign: Nepriskirti unresolved: Neišspręsti updated_at: Atnaujinti - settings: - activity_api_enabled: - desc_html: Skaičiai lokaliai įkeltų statusų, aktyvių vartotojų ir naujų registracijų, kas savaitiniuose atnaujinimuose - title: Paskelbti agreguotą statistiką apie vartotojo veiklą - bootstrap_timeline_accounts: - desc_html: Atskirti vartotojų vardus naudojant kablelį (,). Tik lokalios ir neužblokuotos paskyros veiks. Pradinis kai tuščia, visi lokalūs administratoriai. - title: Numatyti sekimai naujiems vartotojams - contact_information: - email: Verslo el paštas - username: Kontaktinis slapyvardis - custom_css: - desc_html: Pakeisk išvaizdą su CSS užkraunamu kiekviename puslapyje - title: Asmeninis CSS - mascot: - desc_html: Rodoma keleta puslapių. Bent 293×205px rekomenduoja. Kai nenustatyą, renkamasi numatytą varianta - title: Talismano nuotrauka - peers_api_enabled: - desc_html: Domeno vardai, kuriuos šis serveris sutiko fedi-visatoje - title: Paskelbti sąrašą atrastų serveriu - preview_sensitive_media: - desc_html: Nuorodų peržiūros kituose tinklalapiuose bus rodomos su maža nuotrauka, net jeigu failas parinktas kaip "jautraus turinio" - title: Rodyti jautrią informaciją OpenGraph peržiūrose - profile_directory: - desc_html: Leisti vartotojams būti atrastiems - title: Įjungti profilio direktorija - registrations: - closed_message: - desc_html: Rodoma pagrindiniame puslapyje, kuomet registracijos uždarytos. Jūs galite naudoti HTML - title: Uždarytos registracijos žinutė - site_description: - desc_html: Introdukcinis paragrafas pagrindiniame puslapyje. Apibūdink, kas padaro šį Mastodon serverį išskirtiniu ir visa kita, kas svarbu. Nebijok naudoti HTML žymes, pavyzdžiui < a > bei <em>. - title: Serverio apibūdinimas - site_description_extended: - desc_html: Gera vieta Jūsų elgesio kodeksui, taisyklėms, nuorodms ir kitokiai informacijai, kuri yra išskirtinė Jūsų serveriui. Galite naudoti HTML žymes - title: Išsamesnė išskirtine informacija - site_short_description: - desc_html: Rodoma šoniniame meniu ir meta žymėse. Apibūdink kas yra Mastodon, ir kas daro šį serverį išskirtiniu, vienu paragrafu. Jeigu tuščias, naudojamas numatytasis tekstas. - title: Trumpas serverio apibūdinimas - site_title: Serverio pavadinimas - thumbnail: - desc_html: Naudojama OpenGraph peržiūroms ir API. Rekomenduojama 1200x630px - title: Serverio miniatūra - timeline_preview: - desc_html: Rodyti viešą laiko juostą apsilankymo puslapyje - title: Laiko juostos peržiūra - title: Tinklalapio nustatymai statuses: back_to_account: Atgal į paskyros puslapį media: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index aca42fe58e..72692cd155 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -681,79 +681,40 @@ lv: empty: Servera noteikumi vēl nav definēti. title: Servera noteikumi settings: - activity_api_enabled: - desc_html: Vietēji publicēto ziņu, aktīvo lietotāju un jauno reģistrāciju skaits nedēļas kopās - title: Publicējiet apkopotu statistiku par lietotāju darbībām API - bootstrap_timeline_accounts: - desc_html: Atdaliet vairākus lietotājvārdus ar komatu. Tiks garantēts, ka šie konti tiks parādīti ieteikumos - title: Iesaki šos kontus jaunajiem lietotājiem - contact_information: - email: Lietišķais e-pasts - username: Saziņas lietotājvārds - custom_css: - desc_html: Maini izskatu, izmantojot CSS, kas ielādēta katrā lapā - title: Pielāgota CSS - default_noindex: - desc_html: Ietekmē visus lietotājus, kuri paši nav mainījuši šo iestatījumu - title: Pēc noklusējuma lietotāji būs atteikušies no meklētājprogrammu indeksēšanas + about: + manage_rules: Pārvaldīt servera nosacījumus + preamble: Sniedz padziļinātu informāciju par to, kā serveris tiek darbināts, moderēts un finansēts. + rules_hint: Noteikumiem, kas taviem lietotājiem ir jāievēro, ir īpaša sadaļa. + title: Par + appearance: + preamble: Pielāgo Mastodon tīmekļa saskarni. + title: Izskats + branding: + preamble: Tava servera zīmols to atšķir no citiem tīkla serveriem. Šī informācija var tikt parādīta dažādās vidēs, piemēram, Mastodon tīmekļa saskarnē, vietējās lietojumprogrammās, saišu priekšskatījumos citās vietnēs un ziņojumapmaiņas lietotnēs un tā tālāk. Šī iemesla dēļ vislabāk ir saglabāt šo informāciju skaidru, īsu un kodolīgu. + title: Zīmola veidošana + content_retention: + preamble: Kontrolē, kā Mastodon tiek glabāts lietotāju ģenerēts saturs. + title: Satura saglabāšana + discovery: + follow_recommendations: Sekotšanas rekomendācijas + preamble: Interesanta satura parādīšana palīdz piesaistīt jaunus lietotājus, kuri, iespējams, nepazīst nevienu Mastodon. Kontrolē, kā tavā serverī darbojas dažādi atklāšanas līdzekļi. + profile_directory: Profila direktorija + public_timelines: Publiskās ziņu lentas + title: Atklāt + trends: Tendences domain_blocks: all: Visiem disabled: Nevienam - title: Rādīt domēnu bloķēšanas users: Vietējiem reģistrētiem lietotājiem - domain_blocks_rationale: - title: Rādīt pamatojumus - mascot: - desc_html: Parādīts vairākās lapās. Ieteicams vismaz 293 × 205 pikseļi. Ja tas nav iestatīts, tiek atgriezts noklusējuma talismans - title: Talismana attēls - peers_api_enabled: - desc_html: Domēna vārdi, ar kuriem šis serveris ir saskāries fediversā - title: Publicēt API atklāto serveru sarakstu - preview_sensitive_media: - desc_html: Saites priekšskatījumus citās vietnēs parādīs kā sīktēlu pat tad, ja medijs ir atzīmēts kā sensitīvs - title: Parādīt sensitīvos medijus OpenGraph priekšskatījumos - profile_directory: - desc_html: Atļaut lietotājiem būt atklājamiem - title: Iespējot profila direktoriju registrations: - closed_message: - desc_html: Tiek parādīts sākumlapā, kad reģistrācija ir slēgta. Tu vari izmantot HTML tagus - title: Paziņojums par slēgtu reģistrāciju - require_invite_text: - desc_html: 'Ja reģistrācijai nepieciešama manuāla apstiprināšana, izdari, lai teksta: “Kāpēc vēlaties pievienoties?” ievade ir obligāta, nevis neobligāts' - title: Pieprasīt jauniem lietotājiem ievadīt pievienošanās iemeslu + preamble: Kontrolē, kurš var izveidot kontu tavā serverī. + title: Reģistrācijas registrations_mode: modes: approved: Reģistrācijai nepieciešams apstiprinājums none: Neviens nevar reģistrēties open: Jebkurš var reģistrēties - title: Reģistrācijas režīms - site_description: - desc_html: Ievadpunkts par API. Apraksti, kas padara šo Mastodon serveri īpašu, un jebko citu svarīgu. Vari izmantot HTML tagus, jo īpaši <a> un <em>. - title: Servera apraksts - site_description_extended: - desc_html: Laba vieta tavam rīcības kodeksam, noteikumiem, vadlīnijām un citām lietām, kas atšķir tavu serveri. Tu vari izmantot HTML tagus - title: Pielāgota paplašināta informācija - site_short_description: - desc_html: Tiek parādīts sānjoslā un metatagos. Vienā rindkopā apraksti, kas ir Mastodon un ar ko šis serveris ir īpašs. - title: Īss servera apraksts - site_terms: - desc_html: Tu vari uzrakstīt pats savu privātuma politiku. Vari izmantot HTML tagus - title: Pielāgot privātuma politiku - site_title: Servera nosaukums - thumbnail: - desc_html: Izmanto priekšskatījumiem, izmantojot OpenGraph un API. Ieteicams 1200x630 pikseļi - title: Servera sīkbilde - timeline_preview: - desc_html: Galvenajā lapā parādi saiti uz publisku laika skalu un ļauj API piekļūt publiskai ziņu lentai bez autentifikācijas - title: Atļaut neautentificētu piekļuvi publiskai ziņu lentai - title: Vietnes iestatījumi - trendable_by_default: - desc_html: Konkrētais populārais saturs joprojām var būt nepārprotami aizliegts - title: Atļaut tendences bez iepriekšējas pārskatīšanas - trends: - desc_html: Publiski parādīt iepriekš pārskatītus tēmturus, kas pašlaik ir populāri - title: Populārākie tēmturi + title: Servera Iestatījumi site_uploads: delete: Dzēst augšupielādēto failu destroyed_msg: Vietnes augšupielāde ir veiksmīgi izdzēsta! diff --git a/config/locales/ms.yml b/config/locales/ms.yml index ecd6414937..1fc61b4623 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -443,27 +443,11 @@ ms: empty: Masih belum ada peraturan pelayan yang ditakrifkan. title: Peraturan pelayan settings: - peers_api_enabled: - title: Terbitkan senarai pelayan ditemukan dalam aplikasi - preview_sensitive_media: - desc_html: Pratonton laman sesawang daripada pautan akan terpapar di gambar kecil meski jika media itu ditanda sebagai sensitif - title: Papar media sensitif di pratonton OpenGraph - profile_directory: - desc_html: Benarkan pengguna untuk ditemukan - title: Benarkan direktori profil - registrations: - closed_message: - desc_html: Dipaparkan di muka depan apabil pendaftaran ditutup. Anda boleh menggunakan penanda HTML - title: Mesej pendaftaran telah ditutup - require_invite_text: - desc_html: Apabila pendaftaran memerlukan kelulusan manual, tandakan input teks "Kenapa anda mahu menyertai?" sebagai wajib, bukan pilihan - title: Memerlukan alasan bagi pengguna baru untuk menyertai registrations_mode: modes: approved: Kelulusan diperlukan untuk pendaftaran none: Tiada siapa boleh mendaftar open: Sesiapapun boleh mendaftar - title: Mod pendaftaran errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 37db2a1886..4caee1a47e 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -607,79 +607,15 @@ nl: empty: Voor deze server zijn nog geen regels opgesteld. title: Serverregels settings: - activity_api_enabled: - desc_html: Wekelijks overzicht van de hoeveelheid lokale berichten, actieve gebruikers en nieuwe registraties - title: Statistieken over gebruikersactiviteit via de API publiceren - bootstrap_timeline_accounts: - desc_html: Meerdere gebruikersnamen met komma's scheiden. Deze accounts worden in ieder geval aan nieuwe gebruikers aanbevolen - title: Aanbevolen accounts voor nieuwe gebruikers - contact_information: - email: Vul een openbaar gebruikt e-mailadres in - username: Vul een gebruikersnaam in - custom_css: - desc_html: Het uiterlijk van deze server met CSS aanpassen - title: Aangepaste CSS - default_noindex: - desc_html: Heeft invloed op alle gebruikers die deze instelling niet zelf hebben veranderd - title: Berichten van gebruikers standaard niet door zoekmachines laten indexeren domain_blocks: all: Aan iedereen disabled: Aan niemand - title: Domeinblokkades tonen users: Aan ingelogde lokale gebruikers - domain_blocks_rationale: - title: Motivering tonen - mascot: - desc_html: Wordt op meerdere pagina's weergegeven. Tenminste 293×205px aanbevolen. Wanneer dit niet is ingesteld wordt de standaardmascotte getoond - title: Mascotte-afbeelding - peers_api_enabled: - desc_html: Domeinnamen die deze server in de fediverse is tegengekomen - title: Lijst van bekende servers via de API publiceren - preview_sensitive_media: - desc_html: Linkvoorvertoningen op andere websites hebben een thumbnail, zelfs als een afbeelding of video als gevoelig is gemarkeerd - title: Gevoelige afbeeldingen en video's in OpenGraph-voorvertoningen tonen - profile_directory: - desc_html: Gebruikers toestaan om vindbaar te zijn - title: Gebruikersgids inschakelen - registrations: - closed_message: - desc_html: Wordt op de voorpagina weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld
    En ook hier kan je HTML gebruiken - title: Bericht wanneer registratie is uitgeschakeld - require_invite_text: - desc_html: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd - title: Nieuwe gebruikers moeten een reden invullen waarom ze zich willen registreren registrations_mode: modes: approved: Goedkeuring vereist om te kunnen registreren none: Niemand kan zich registreren open: Iedereen kan zich registreren - title: Registratiemodus - site_description: - desc_html: Introductie-alinea voor de API. Beschrijf wat er speciaal is aan deze server en andere zaken die van belang zijn. Je kunt HTML gebruiken, zoals <a> en <em>. - title: Omschrijving Mastodonserver (API) - site_description_extended: - desc_html: Een goede plek voor je gedragscode, regels, richtlijnen en andere zaken die jouw server uniek maken. Je kunt ook hier HTML gebruiken - title: Uitgebreide omschrijving Mastodonserver - site_short_description: - desc_html: Dit wordt gebruikt op de voorpagina, in de zijbalk op profielpagina's en als metatag in de paginabron. Beschrijf in één alinea wat Mastodon is en wat deze server speciaal maakt. - title: Omschrijving Mastodonserver (website) - site_terms: - desc_html: Je kunt jouw eigen privacybeleid hier kwijt. Je kunt HTML gebruiken - title: Aangepast privacybeleid - site_title: Naam Mastodonserver - thumbnail: - desc_html: Gebruikt als voorvertoning voor OpenGraph en de API. 1200x630px aanbevolen - title: Thumbnail Mastodonserver - timeline_preview: - desc_html: Toon een link naar de openbare tijdlijnpagina op de voorpagina en geef de API zonder in te loggen toegang tot de openbare tijdlijn - title: Toegang tot de openbare tijdlijn zonder in te loggen toestaan - title: Server-instellingen - trendable_by_default: - desc_html: Specifieke trends kunnen nog steeds expliciet worden afgekeurd - title: Trends toestaan zonder voorafgaande beoordeling - trends: - desc_html: Eerder beoordeelde hashtags die op dit moment trending zijn openbaar tonen - title: Trends site_uploads: delete: Geüpload bestand verwijderen destroyed_msg: Verwijderen website-upload geslaagd! diff --git a/config/locales/nn.yml b/config/locales/nn.yml index c0a40c41cb..b989db081e 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -423,72 +423,15 @@ nn: empty: Ingen serverregler har blitt definert ennå. title: Server regler settings: - activity_api_enabled: - desc_html: Antall lokale statusposter, aktive brukere og nye registreringer i ukentlige oppdelinger - title: Publiser samlet statistikk om brukeraktiviteter - bootstrap_timeline_accounts: - desc_html: Separer flere brukernavn med komma. Kun lokale og ulåste kontoer vil kunne brukes. Dersom tomt er standarden alle lokale administratorer. - title: Standard fylgjer for nye brukarar - contact_information: - email: Offentleg e-postadresse - username: Brukarnamn for kontakt - custom_css: - desc_html: Modifiser utseendet med CSS lastet på hver side - title: Eigen CSS - default_noindex: - desc_html: Påverkar alle brukarar som ikkje har justert denne innstillinga sjølve - title: Velg brukere som er ute av søkemotoren indeksering som standard domain_blocks: all: Til alle disabled: Til ingen - title: Vis domeneblokkeringer users: Til lokale brukarar som er logga inn - domain_blocks_rationale: - title: Vis kvifor - mascot: - desc_html: Vist på flere sider. Minst 293×205px er anbefalt. Dersom det ikke er valgt, faller det tilbake til standardmaskoten - title: Maskotbilete - peers_api_enabled: - desc_html: Domenenavn denne instansen har truffet på i fediverset - title: Publiser liste over oppdaga tenarar - preview_sensitive_media: - desc_html: Lenkeforhåndsvisninger på andre nettsteder vil vise et miniatyrbilde selv dersom mediet er merket som sensitivt - title: Vis sensitive medier i OpenGraph-forhåndsvisninger - profile_directory: - desc_html: Gjer at brukarar kan oppdagast - title: Skru på profilmappen - registrations: - closed_message: - desc_html: Vises på forsiden når registreringer er lukket
    Du kan bruke HTML-tagger - title: Melding for lukket registrering - require_invite_text: - desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt - title: Krev nye brukere for å oppgi en grunn for å delta registrations_mode: modes: approved: Godkjenning kreves for påmelding none: Ingen kan melda seg inn open: Kven som helst kan melda seg inn - title: Registreringsmodus - site_description: - desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a> og <em>. - title: Tenarskilding - site_description_extended: - desc_html: Ein god stad å setja reglar for åtferdskode, reglar, rettningsliner og andre ting som skil din tenar frå andre. Du kan nytta HTML-taggar - title: Utvidet nettstedsinformasjon - site_short_description: - desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf. - title: Stutt om tenaren - site_title: Tenarnamn - thumbnail: - desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales - title: Småbilete for tenaren - timeline_preview: - desc_html: Vis offentlig tidslinje på landingssiden - title: Tillat uautentisert tilgang til offentleg tidsline - title: Sideinnstillingar - trends: - title: Populære emneknaggar site_uploads: delete: Slett opplasta fil destroyed_msg: Vellukka sletting av sideopplasting! diff --git a/config/locales/no.yml b/config/locales/no.yml index 550868ba3c..09dcc93c7e 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -415,72 +415,15 @@ empty: Ingen serverregler har blitt definert ennå. title: Server regler settings: - activity_api_enabled: - desc_html: Antall lokale statusposter, aktive brukere og nye registreringer i ukentlige oppdelinger - title: Publiser samlet statistikk om brukeraktiviteter - bootstrap_timeline_accounts: - desc_html: Separer flere brukernavn med komma. Kun lokale og ulåste kontoer vil kunne brukes. Dersom tomt er standarden alle lokale administratorer. - title: Standard følgere for nye brukere - contact_information: - email: Skriv en offentlig e-postadresse - username: Skriv brukernavn - custom_css: - desc_html: Modifiser utseendet med CSS lastet på hver side - title: Egendefinert CSS - default_noindex: - desc_html: Påvirker alle brukerne som ikke har justert denne innstillingen selv - title: Velg brukere som er ute av søkemotoren indeksering som standard domain_blocks: all: Til alle disabled: Til ingen - title: Vis domeneblokkeringer users: Til lokale brukere som er logget inn - domain_blocks_rationale: - title: Vis grunnlaget - mascot: - desc_html: Vist på flere sider. Minst 293×205px er anbefalt. Dersom det ikke er valgt, faller det tilbake til standardmaskoten - title: Maskotbilde - peers_api_enabled: - desc_html: Domenenavn denne instansen har truffet på i fediverset - title: Publiser liste over oppdagede instanser - preview_sensitive_media: - desc_html: Lenkeforhåndsvisninger på andre nettsteder vil vise et miniatyrbilde selv dersom mediet er merket som sensitivt - title: Vis sensitive medier i OpenGraph-forhåndsvisninger - profile_directory: - desc_html: Tillat brukere å bli oppdagelige - title: Skru på profilmappen - registrations: - closed_message: - desc_html: Vises på forsiden når registreringer er lukket
    Du kan bruke HTML-tagger - title: Melding for lukket registrering - require_invite_text: - desc_html: Når registreringer krever manuell godkjenning, må du føye «Hvorfor vil du bli med?» tekstinput obligatoriske i stedet for valgfritt - title: Krev nye brukere for å oppgi en grunn for å delta registrations_mode: modes: approved: Godkjenning kreves for påmelding none: Ingen kan melde seg inn open: Hvem som helst kan melde seg inn - title: Registreringsmodus - site_description: - desc_html: Vises som et avsnitt på forsiden og brukes som en meta-tagg. Du kan bruke HTML-tagger, spesielt <a> og <em>. - title: Nettstedsbeskrivelse - site_description_extended: - desc_html: Vises på side for utvidet informasjon.
    Du kan bruke HTML-tagger - title: Utvidet nettstedsinformasjon - site_short_description: - desc_html: Vist i sidelinjen og i metastempler. Beskriv hva Mastodon er og hva som gjør denne tjeneren spesiell i én enkelt paragraf. - title: Kort tjenerbeskrivelse - site_title: Nettstedstittel - thumbnail: - desc_html: Brukes ved forhandsvisning via OpenGraph og API. 1200x630px anbefales - title: Miniatyrbilde for instans - timeline_preview: - desc_html: Vis offentlig tidslinje på landingssiden - title: Forhandsvis tidslinjen - title: Nettstedsinnstillinger - trends: - title: Trendende emneknagger site_uploads: delete: Slett den opplastede filen destroyed_msg: Vellykket sletting av sideopplasting! diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 1d2fdbe4ed..2c625f46bf 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -367,68 +367,15 @@ oc: rules: title: Règlas del servidor settings: - activity_api_enabled: - desc_html: Nombre d’estatuts publicats, d’utilizaires actius e de novèlas inscripcions en rapòrt setmanièr - title: Publicar las estatisticas totalas de l’activitat dels utilizaires - bootstrap_timeline_accounts: - desc_html: Separatz los noms d’utilizaire amb de virgula. Pas que los comptes locals e pas clavats foncionaràn. Se lo camp es void los admins seràn selecionats. - title: Per defaut los nòuvenguts sègon - contact_information: - email: Picatz una adreça de corrièl - username: Picatz un nom d’utilizaire - custom_css: - desc_html: Modificar l’estil amb una fuèlha CSS cargada sus cada pagina - title: CSS personalizada - default_noindex: - desc_html: Tòca totes los utilizaires qu’an pas cambiat lo paramètre domain_blocks: all: A tot lo monde disabled: A degun - title: Mostrar los blocatges de domeni users: Als utilizaires locals connectats - domain_blocks_rationale: - title: Mostrar lo rasonament - mascot: - desc_html: Mostrat sus mantun pagina. Almens 293×205px recomandat. S’es pas configurat, mostrarem la mascòta per defaut - title: Imatge de la mascòta - peers_api_enabled: - desc_html: Noms de domeni qu’aqueste servidor a trobats pel fediverse - title: Publicar la lista dels servidors coneguts - preview_sensitive_media: - desc_html: Los apercebuts dels ligams sus los autres sites mostraràn una vinheta encara que lo mèdia siá marcat coma sensible - title: Mostrar los mèdias sensibles dins los apercebuts OpenGraph - profile_directory: - desc_html: Permet als utilizaires d’èsser trobats - title: Activar l’annuari de perfils - registrations: - closed_message: - desc_html: Mostrat sus las pagina d’acuèlh quand las inscripcions son tampadas.
    Podètz utilizar de balisas HTML - title: Messatge de barradura de las inscripcions registrations_mode: modes: approved: Validacion necessària per s’inscriure none: Degun pòt pas se marcar open: Tot lo monde se pòt marcar - title: Mòdes d’inscripcion - site_description: - desc_html: Paragraf d’introduccion sus la pagina d’acuèlh. Explicatz çò que fa diferent aqueste servidor Mastodon e tot çò qu’es important de dire. Podètz utilizare de balises HTML, en particular <a> e<em>. - title: Descripcion del servidor - site_description_extended: - desc_html: Un bon lòc per las règles de compòrtament e d’autras causas que fan venir vòstre servidor diferent. Podètz utilizar de balisas HTML - title: Descripcion espandida del site - site_short_description: - desc_html: Mostrat dins la barra laterala e dins las meta balisas. Explica çò qu’es Mastodon e perque aqueste servidor es especial en un solet paragraf. S’es void, serà garnit amb la descripcion del servidor. - title: Descripcion corta del servidor - site_title: Títol del servidor - thumbnail: - desc_html: Servís pels apercebuts via OpenGraph e las API. Talha de 1200x630px recomandada - title: Miniatura del servidor - timeline_preview: - desc_html: Mostrar lo flux public sus la pagina d’acuèlh - title: Apercebut flux public - title: Paramètres del site - trends: - title: Etiquetas tendéncia site_uploads: delete: Suprimir lo fichièr enviat statuses: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index c7c19b0aec..27d3240c8d 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -695,79 +695,40 @@ pl: empty: Jeszcze nie zdefiniowano zasad serwera. title: Regulamin serwera settings: - activity_api_enabled: - desc_html: Liczy publikowane lokalnie wpisy, aktywnych użytkowników i nowe rejestracje w ciągu danego tygodnia - title: Publikuj zbiorowe statystyki o aktywności użytkowników - bootstrap_timeline_accounts: - desc_html: Oddzielaj nazwy użytkowników przecinkami. Działa tylko dla niezablokowanych kont w obrębie instancji. Jeżeli puste, zostaną użyte konta administratorów instancji. - title: Domyślnie obserwowani użytkownicy - contact_information: - email: Służbowy adres e-mail - username: Nazwa użytkownika do kontaktu - custom_css: - desc_html: Modyfikuj wygląd pliku CSS ładowanego na każdej stronie - title: Niestandardowy CSS - default_noindex: - desc_html: Wpływa na wszystkich użytkowników, którzy nie zmienili tego ustawienia - title: Domyślnie żądaj nieindeksowania użytkowników w wyszukiwarkach + about: + manage_rules: Zarządzaj regułami serwera + preamble: Podaj szczegółowe informacje na temat sposobu działania, moderacji i finansowania serwera. + rules_hint: Istnieje dedykowany obszar dla reguł, których twoi użytkownicy mają przestrzegać. + title: O... + appearance: + preamble: Dostosuj interfejs www Mastodon. + title: Wygląd + branding: + preamble: Marka Twojego serwera odróżnia go od innych serwerów w sieci. Informacje te mogą być wyświetlane w różnych środowiskach, takich jak interfejs internetowy Mastodon, aplikacje natywne, w podglądzie linków na innych stronach internetowych i w aplikacjach do wysyłania wiadomości itd. Z tego względu najlepiej zachować jasną, krótką i zwięzłą informację. + title: Marka + content_retention: + preamble: Kontroluj, jak treści generowane przez użytkownika są przechowywane w Mastodon. + title: Retencja treści + discovery: + follow_recommendations: Postępuj zgodnie z zaleceniami + preamble: Prezentowanie interesujących treści ma kluczowe znaczenie dla nowych użytkowników, którzy mogą nie znać nikogo z Mastodona. Kontroluj, jak różne funkcje odkrywania działają na Twoim serwerze. + profile_directory: Katalog profilów + public_timelines: Publiczne osie czasu + title: Odkrywanie + trends: Trendy domain_blocks: all: Każdemu disabled: Nikomu - title: Pokazuj zablokowane domeny users: Zalogowanym lokalnym użytkownikom - domain_blocks_rationale: - title: Pokaż uzasadnienia - mascot: - desc_html: Wyświetlany na wielu stronach. Zalecany jest rozmiar przynajmniej 293px × 205px. Jeżeli nie ustawiono, zostanie użyta domyślna - title: Obraz maskotki - peers_api_enabled: - desc_html: Nazwy domen, z którymi ten serwer wchodził w interakcje - title: Publikuj listę znanych serwerów - preview_sensitive_media: - desc_html: Podgląd odnośników na innych instancjach będzie wyświetlał miniaturę nawet jeśli zawartość multimedialna zostanie oznaczona jako wrażliwa - title: Wyświetlaj zawartość wrażliwą w podglądzie OpenGraph - profile_directory: - desc_html: Pozwalaj na poznawanie użytkowników - title: Włącz katalog profilów registrations: - closed_message: - desc_html: Wyświetlana na stronie głównej, gdy możliwość otwarej rejestracji nie jest dostępna. Możesz korzystać z tagów HTML - title: Wiadomość o nieaktywnej rejestracji - require_invite_text: - desc_html: Kiedy rejestracje wymagają ręcznego zatwierdzenia, ustaw pole "Dlaczego chcesz dołączyć?" jako obowiązkowe, a nie opcjonalne - title: Wymagaj od nowych użytkowników wypełnienia tekstu prośby o zaproszenie + preamble: Kontroluj, kto może utworzyć konto na Twoim serwerze. + title: Rejestracje registrations_mode: modes: approved: Przyjęcie jest wymagane do rejestracji none: Nikt nie może się zarejestrować open: Każdy może się zarejestrować - title: Tryb rejestracji - site_description: - desc_html: Akapit wprowadzający, widoczny na stronie głównej. Opisz, co czyni tę instancję wyjątkową. Możesz korzystać ze znaczników HTML, w szczególności <a> i <em>. - title: Opis serwera - site_description_extended: - desc_html: Dobre miejsce na zasady użytkowania, wprowadzenie i inne rzeczy, które wyróżniają ten serwer. Możesz korzystać ze znaczników HTML - title: Niestandardowy opis strony - site_short_description: - desc_html: Wyświetlany na pasku bocznym i w znacznikach meta. Opisz w jednym akapicie, czym jest Mastodon i czym wyróżnia się ten serwer. Jeżeli pusty, zostanie użyty opis serwera. - title: Krótki opis serwera - site_terms: - desc_html: Możesz stworzyć własną politykę prywatności. Możesz używać tagów HTML - title: Własna polityka prywatności - site_title: Nazwa serwera - thumbnail: - desc_html: 'Używana w podglądzie przez OpenGraph i API. Zalecany rozmiar: 1200x630 pikseli' - title: Miniatura serwera - timeline_preview: - desc_html: Wyświetlaj publiczną oś czasu na stronie widocznej dla niezalogowanych - title: Podgląd osi czasu - title: Ustawienia strony - trendable_by_default: - desc_html: Pewne treści trendu nadal mogą być bezpośrednio zabronione - title: Zezwalaj na trendy bez ich uprzedniego przejrzenia - trends: - desc_html: Wyświetlaj publicznie wcześniej sprawdzone hashtagi, które są obecnie na czasie - title: Popularne hashtagi + title: Ustawienia serwera site_uploads: delete: Usuń przesłany plik destroyed_msg: Pomyślnie usunięto przesłany plik! diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 00d7ce9a53..8ac53680d8 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -640,73 +640,15 @@ pt-BR: empty: Nenhuma regra do servidor foi definida. title: Regras do servidor settings: - activity_api_enabled: - desc_html: Contagem de toots locais, usuários ativos e novos usuários semanalmente - title: Publicar estatísticas agregadas sobre atividade de usuários - bootstrap_timeline_accounts: - desc_html: Separe nomes de usuário através de vírgulas. Funciona apenas com contas locais e destrancadas. O padrão quando vazio são todos os administradores locais. - title: Usuários a serem seguidos por padrão por novas contas - contact_information: - email: E-mail - username: Usuário de contato - custom_css: - desc_html: Alterar o visual com CSS carregado em todas as páginas - title: CSS personalizado - default_noindex: - desc_html: Afeta qualquer usuário que não tenha alterado esta configuração manualmente - title: Optar por excluir usuários da indexação de mecanismos de pesquisa por padrão domain_blocks: all: Para todos disabled: Para ninguém - title: Mostrar domínios bloqueados users: Para usuários locais logados - domain_blocks_rationale: - title: Mostrar motivo - mascot: - desc_html: Mostrado em diversas páginas. Recomendado ao menos 293×205px. Quando não está definido, o mascote padrão é mostrado - title: Imagem do mascote - peers_api_enabled: - desc_html: Nomes de domínio que essa instância encontrou no fediverso - title: Publicar lista de instâncias descobertas - preview_sensitive_media: - desc_html: A prévia do link em outros sites vai incluir uma miniatura mesmo se a mídia estiver marcada como sensível - title: Mostrar mídia sensível em prévias OpenGraph - profile_directory: - desc_html: Permitir que usuários possam ser descobertos - title: Ativar diretório de perfis - registrations: - closed_message: - desc_html: Mostrado na página inicial quando a instância está fechada. Você pode usar tags HTML - title: Mensagem de instância fechada - require_invite_text: - desc_html: Quando o cadastro de novas contas exigir aprovação manual, tornar obrigatório, ao invés de opcional, o texto de solicitação de convite em "Por que você deseja criar uma conta aqui?" - title: Exigir que novos usuários preencham um texto de solicitação de convite registrations_mode: modes: approved: Aprovação necessária para criar conta none: Ninguém pode criar conta open: Qualquer um pode criar conta - title: Modo de novos usuários - site_description: - desc_html: Parágrafo introdutório na página inicial. Descreva o que faz esse servidor especial, e qualquer outra coisa de importante. Você pode usar tags HTML, em especial <a> e <em>. - title: Descrição da instância - site_description_extended: - desc_html: Um ótimo lugar para seu código de conduta, regras, diretrizes e outras coisas para diferenciar a sua instância. Você pode usar tags HTML - title: Informação estendida personalizada - site_short_description: - desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que é o Mastodon e o que torna esta instância especial num único parágrafo. Se deixada em branco, é substituído pela descrição da instância. - title: Descrição curta da instância - site_title: Nome da instância - thumbnail: - desc_html: Usada para prévias via OpenGraph e API. Recomenda-se 1200x630px - title: Miniatura da instância - timeline_preview: - desc_html: Mostra a linha do tempo pública na página inicial e permite acesso da API à mesma sem autenticação - title: Permitir acesso não autenticado à linha pública - title: Configurações do site - trends: - desc_html: Mostrar publicamente hashtags previamente revisadas que estão em alta - title: Hashtags em alta site_uploads: delete: Excluir arquivo enviado destroyed_msg: Upload do site excluído com sucesso! diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 4e0d2f9ccc..6e2ac523bd 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -667,79 +667,35 @@ pt-PT: empty: Nenhuma regra de instância foi ainda definida. title: Regras da instância settings: - activity_api_enabled: - desc_html: Contagem semanais de publicações locais, utilizadores activos e novos registos - title: Publicar estatísticas agregadas sobre atividade dos utilizadores - bootstrap_timeline_accounts: - desc_html: Separa os nomes de utilizadores por vírgulas. Funciona apenas com contas locais e desbloqueadas. O padrão quando vazio são todos os administradores locais. - title: Seguidores predefinidos para novas contas - contact_information: - email: Inserir um endereço de e-mail para tornar público - username: Insira um nome de utilizador - custom_css: - desc_html: Modificar a aparência com CSS carregado em cada página - title: CSS personalizado - default_noindex: - desc_html: Afeta todos os utilizadores que não alteraram esta configuração - title: Desativar, por omissão, a indexação de utilizadores por parte dos motores de pesquisa + about: + manage_rules: Gerir regras do servidor + preamble: Forneça informações aprofundadas sobre como o servidor é operado, moderado, financiado. + rules_hint: Existe uma área dedicada às regras a que os seus utilizadores devem aderir. + title: Sobre + appearance: + preamble: Personalize a interface web do Mastodon. + title: Aspeto + content_retention: + title: Retenção de conteúdo + discovery: + follow_recommendations: Recomendações para seguir + profile_directory: Diretório de perfis + public_timelines: Cronologias públicas + title: Descobrir + trends: Tendências domain_blocks: all: Para toda a gente disabled: Para ninguém - title: Mostrar domínios bloqueados users: Para utilizadores locais que se encontrem autenticados - domain_blocks_rationale: - title: Mostrar motivo - mascot: - desc_html: Apresentada em múltiplas páginas. Pelo menos 293x205px recomendados. Quando não é definida, é apresentada a mascote predefinida - title: Imagem da mascote - peers_api_enabled: - desc_html: Nomes de domínio que esta instância encontrou no fediverso - title: Publicar lista de instâncias descobertas - preview_sensitive_media: - desc_html: A pre-visualização de links noutros sites irá apresentar uma miniatura, mesmo que a media seja marcada como sensível - title: Mostrar media sensível em pre-visualizações OpenGraph - profile_directory: - desc_html: Permite aos utilizadores serem descobertos - title: Ativar directório do perfil registrations: - closed_message: - desc_html: Mostrar na página inicial quando registos estão encerrados
    Podes usar tags HTML - title: Mensagem de registos encerrados - require_invite_text: - desc_html: Quando os registos exigirem aprovação manual, faça o texto "Porque se quer juntar a nós?" da solicitação de convite obrigatório, em vez de opcional - title: Exigir que novos utilizadores preencham um texto de solicitação de convite + preamble: Controle quem pode criar uma conta no seu servidor. + title: Inscrições registrations_mode: modes: approved: Registo sujeito a aprovação none: Ninguém se pode registar open: Qualquer pessoa se pode registar - title: Modo de registo - site_description: - desc_html: Mostrar como parágrafo na página inicial e usado como meta tag.Podes usar tags HTML, em particular <a> e <em>. - title: Descrição do site - site_description_extended: - desc_html: Mostrar na página de mais informações
    Podes usar tags HTML - title: Página de mais informações - site_short_description: - desc_html: Mostrada na barra lateral e em etiquetas de metadados. Descreve o que o Mastodon é e o que torna esta instância especial num único parágrafo. Se deixada em branco, remete para a descrição da instância. - title: Breve descrição da instância - site_terms: - desc_html: Pode escrever a sua própria política de privacidade. Pode utilizar código HTML - title: Política de privacidade personalizada - site_title: Título do site - thumbnail: - desc_html: Usada para visualizações via OpenGraph e API. Recomenda-se 1200x630px - title: Miniatura da instância - timeline_preview: - desc_html: Exibir a linha temporal pública na página inicial - title: Visualização da linha temporal - title: Configurações do site - trendable_by_default: - desc_html: Conteúdo específico em tendência pode mesmo assim ser explicitamente rejeitado - title: Permitir tendências sem revisão prévia - trends: - desc_html: Exibir publicamente hashtags atualmente em destaque que já tenham sido revistas anteriormente - title: Hashtags em destaque + title: Definições do Servidor site_uploads: delete: Eliminar arquivo carregado destroyed_msg: Upload do site eliminado com sucesso! diff --git a/config/locales/ru.yml b/config/locales/ru.yml index fc84808f9e..bf7bb9db44 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -648,76 +648,15 @@ ru: empty: Правила сервера еще не определены. title: Правила сервера settings: - activity_api_enabled: - desc_html: Подсчёт количества локальных постов, активных пользователей и новых регистраций на еженедельной основе - title: Публикация агрегированной статистики активности пользователей - bootstrap_timeline_accounts: - desc_html: Разделяйте имена пользователей запятыми. Сработает только для локальных незакрытых учётных записей. По умолчанию включены все локальные администраторы. - title: Подписки по умолчанию для новых пользователей - contact_information: - email: Введите публичный e-mail - username: Введите имя пользователя - custom_css: - desc_html: Измените внешний вид с CSS, загружаемым на каждой странице - title: Особый CSS - default_noindex: - desc_html: Влияет на всех пользователей, которые не изменили эти настройки сами - title: Исключить пользователей из индексации поисковиками по умолчанию domain_blocks: all: Всем disabled: Никому - title: Доменные блокировки users: Залогиненным локальным пользователям - domain_blocks_rationale: - title: Показать обоснование - mascot: - desc_html: Отображается на различных страницах. Рекомендуется размер не менее 293×205px. Если ничего не выбрано, используется персонаж по умолчанию - title: Персонаж сервера - peers_api_enabled: - desc_html: Домены, которые были замечены этим узлом среди всей федерации - title: Публикация списка обнаруженных узлов - preview_sensitive_media: - desc_html: Предпросмотр для ссылок будет показывать миниатюры даже для содержимого, помеченного как «деликатного характера» - title: Показывать медиафайлы «деликатного характера» в превью OpenGraph - profile_directory: - desc_html: Позволять находить пользователей - title: Включить каталог профилей - registrations: - closed_message: - desc_html: Отображается на титульной странице, когда закрыта регистрация
    Можно использовать HTML-теги - title: Сообщение о закрытой регистрации - require_invite_text: - desc_html: Когда регистрация требует ручного подтверждения, сделать ответ на вопрос "Почему вы хотите присоединиться?" обязательным, а не опциональным - title: Обязать новых пользователей заполнять текст запроса на приглашение registrations_mode: modes: approved: Для регистрации требуется подтверждение none: Никто не может регистрироваться open: Все могут регистрироваться - title: Режим регистраций - site_description: - desc_html: Отображается в качестве параграфа на титульной странице и используется в качестве мета-тега.
    Можно использовать HTML-теги, в особенности <a> и <em>. - title: Описание сайта - site_description_extended: - desc_html: Отображается на странице дополнительной информации
    Можно использовать HTML-теги - title: Расширенное описание узла - site_short_description: - desc_html: Отображается в боковой панели и в тегах. Опишите, что такое Mastodon и что делает именно этот узел особенным. Если пусто, используется описание узла по умолчанию. - title: Краткое описание узла - site_terms: - desc_html: Вы можете написать собственную политику конфиденциальности. Вы можете использовать теги HTML - title: Собственная политика конфиденциальности - site_title: Название сайта - thumbnail: - desc_html: Используется для предпросмотра с помощью OpenGraph и API. Рекомендуется разрешение 1200x630px - title: Картинка узла - timeline_preview: - desc_html: Показывать публичную ленту на приветственной странице - title: Предпросмотр ленты - title: Настройки сайта - trends: - desc_html: Публично отобразить проверенные хэштеги, актуальные на данный момент - title: Популярные хэштеги site_uploads: delete: Удалить загруженный файл destroyed_msg: Файл успешно удалён. diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 664cdb8572..bf24b2686f 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -431,73 +431,15 @@ sc: empty: Peruna règula de serbidore definida ancora. title: Règulas de su serbidore settings: - activity_api_enabled: - desc_html: Nùmeru de tuts publicados in locale, utentes ativos e registros noos in perìodos chidajolos - title: Pùblica istatìsticas agregadas subra s'atividade de s'utente - bootstrap_timeline_accounts: - desc_html: Imprea vìrgulas intre is nòmines de utente. Isceti is contos locales e isblocados ant a funtzionare. Su valore predefinidu cando est bòidu est totu is admins locales - title: Cussìgia custos contos a is persones noas - contact_information: - email: Indiritzu eletrònicu de impresa - username: Nòmine de utente de su cuntatu - custom_css: - desc_html: Modìfica s'aspetu cun CSS carrigadu in cada pàgina - title: CSS personalizadu - default_noindex: - desc_html: Ìmplicat a totu is utentes chi no apant modificadu custa cunfiguratzione - title: Esclude in manera predefinida is utentes dae s'inditzamentu de is motores de chirca domain_blocks: all: Pro totus disabled: Pro nemos - title: Ammustra blocos de domìniu users: Pro utentes locales in lìnia - domain_blocks_rationale: - title: Ammustra sa resone - mascot: - desc_html: Ammustrada in vàrias pàginas. Cussigiadu a su mancu 293x205px. Si no est cunfiguradu, torra a su personàgiu predefinidu - title: Immàgine de su personàgiu - peers_api_enabled: - desc_html: Is nòmines de domìniu chi custu serbidore at agatadu in su fediversu - title: Pùblica sa lista de serbidores iscobertos in s'API - preview_sensitive_media: - desc_html: Is previsualizatziones de ligòngios de àteros sitos web ant a ammustrare una miniadura fintzas cando is elementos multimediales siant marcados comente a sensìbiles - title: Ammustra elementos multimediales sensìbiles in is previsualizatziones de OpenGraph - profile_directory: - desc_html: Permite a is persones de èssere iscobertas - title: Ativa diretòriu de profilos - registrations: - closed_message: - desc_html: Ammustradu in sa prima pàgina cando is registratziones sunt serradas. Podes impreare etichetas HTML - title: Messàgiu de registru serradu - require_invite_text: - desc_html: Cando is registratziones rechedent s'aprovatzione manuale, faghe chi a incarcare su butone "Pro ite ti boles iscrìere?" siat obligatòriu e no a praghere - title: Rechede a is persones noas chi iscriant una resone prima de aderire registrations_mode: modes: approved: Aprovatzione rechesta pro si registrare none: Nemos si podet registrare open: Chie si siat si podet registrare - title: Modu de registratzione - site_description: - desc_html: Paràgrafu de introdutzione a s'API. Descrie pro ite custu serbidore de Mastodon siat ispetziale e cale si siat àtera cosa de importu. Podes impreare etichetas HTML, mescamente <a> e <em>. - title: Descritzione de su serbidore - site_description_extended: - desc_html: Unu logu adatu pro publicare su còdighe de cumportamentu, règulas, diretivas e àteras caraterìsticas ispetzìficas de su serbidore tuo. Podes impreare etichetas HTML - title: Descritzione estèndida de su logu - site_short_description: - desc_html: Ammustradu in sa barra laterale e in is meta-etichetas. Descrie ite est Mastodon e pro ite custu serbidore est ispetziale in unu paràgrafu. - title: Descritzione curtza de su serbidore - site_title: Nòmine de su serbidore - thumbnail: - desc_html: Impreadu pro otènnere pre-visualizatziones pro mèdiu de OpenGraph e API. Cussigiadu 1200x630px - title: Miniadura de su serbidore - timeline_preview: - desc_html: Ammustra su ligàmene a sa lìnia de tempus pùblica in sa pàgina initziale e permite s'atzessu pro mèdiu de s'API a sa lìnia de tempus pùblica sena autenticatzione - title: Permite s'atzessu no autenticadu a sa lìnia de tempus pùblica - title: Cunfiguratzione de su logu - trends: - desc_html: Ammustra in pùblicu is etichetas chi siant istadas revisionadas in passadu e chi oe siant in tendèntzia - title: Etichetas de tendèntzia site_uploads: delete: Cantzella s'archìviu carrigadu destroyed_msg: Càrriga de su situ cantzellada. diff --git a/config/locales/si.yml b/config/locales/si.yml index 54127c2548..2c41e40b88 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -580,73 +580,15 @@ si: empty: තවමත් සේවාදායක රීති නිර්වචනය කර නොමැත. title: සේවාදායකයේ නීති settings: - activity_api_enabled: - desc_html: සතිපතා බාල්දිවල දේශීයව ප්‍රකාශිත පළ කිරීම්, ක්‍රියාකාරී පරිශීලකයින් සහ නව ලියාපදිංචි කිරීම් ගණන - title: API හි පරිශීලක ක්‍රියාකාරකම් පිළිබඳ සමස්ත සංඛ්‍යාලේඛන ප්‍රකාශයට පත් කරන්න - bootstrap_timeline_accounts: - desc_html: බහු පරිශීලක නාම කොමාවෙන් වෙන් කරන්න. මෙම ගිණුම් පහත සඳහන් නිර්දේශවල පෙන්වීමට සහතික වනු ඇත - title: නව පරිශීලකයින්ට මෙම ගිණුම් නිර්දේශ කරන්න - contact_information: - email: ව්‍යාපාරික වි-තැපෑල - username: පරිශීලක නාමය අමතන්න - custom_css: - desc_html: සෑම පිටුවකම පටවා ඇති CSS සමඟ පෙනුම වෙනස් කරන්න - title: අභිරුචි CSS - default_noindex: - desc_html: මෙම සැකසුම තමන් විසින්ම වෙනස් කර නොමැති සියලුම පරිශීලකයින්ට බලපායි - title: පෙරනිමියෙන් සෙවුම් යන්ත්‍ර සුචිගත කිරීමෙන් පරිශීලකයින් ඉවත් කරන්න domain_blocks: all: හැමෝටම disabled: කාටවත් නෑ - title: වසම් වාරණ පෙන්වන්න users: පුරනය වී ඇති දේශීය පරිශීලකයින් වෙත - domain_blocks_rationale: - title: තාර්කිකත්වය පෙන්වන්න - mascot: - desc_html: පිටු කිහිපයක ප්‍රදර්ශනය කෙරේ. අවම වශයෙන් 293×205px නිර්දේශිතයි. සකසා නොමැති විට, පෙරනිමි මැස්කොට් වෙත ආපසු වැටේ - title: මැස්කොට් රූපය - peers_api_enabled: - desc_html: මෙම සේවාදායකය fediverse තුළ හමු වූ වසම් නම් - title: API හි සොයාගත් සේවාදායක ලැයිස්තුවක් ප්‍රකාශයට පත් කරන්න - preview_sensitive_media: - desc_html: මාධ්‍ය සංවේදී ලෙස සලකුණු කළත් වෙනත් වෙබ් අඩවිවල සබැඳි පෙරදසුන් සිඟිති රූපයක් පෙන්වයි - title: OpenGraph පෙරදසුන් තුළ සංවේදී මාධ්‍ය පෙන්වන්න - profile_directory: - desc_html: පරිශීලකයින්ට සොයාගත හැකි වීමට ඉඩ දෙන්න - title: පැතිකඩ නාමාවලිය සබල කරන්න - registrations: - closed_message: - desc_html: ලියාපදිංචිය වසා ඇති විට මුල් පිටුවේ ප්‍රදර්ශනය කෙරේ. ඔබට HTML ටැග් භාවිතා කළ හැකිය - title: සංවෘත ලියාපදිංචි පණිවිඩය - require_invite_text: - desc_html: ලියාපදිංචිය සඳහා අතින් අනුමැතිය අවශ්‍ය වූ විට, "ඔබට සම්බන්ධ වීමට අවශ්‍ය වන්නේ ඇයි?" විකල්ප වෙනුවට පෙළ ආදානය අනිවාර්ය වේ - title: සම්බන්ධ වීමට හේතුවක් ඇතුළත් කිරීමට නව පරිශීලකයින්ට අවශ්‍ය වේ registrations_mode: modes: approved: ලියාපදිංචි වීමට අනුමැතිය අවශ්‍යයි none: කිසිවෙකුට ලියාපදිංචි විය නොහැක open: ඕනෑම කෙනෙකුට ලියාපදිංචි විය හැක - title: ලියාපදිංචි කිරීමේ මාදිලිය - site_description: - desc_html: API හි හඳුන්වාදීමේ ඡේදය. මෙම Mastodon සේවාදායකය විශේෂ වන්නේ කුමක්ද සහ වෙනත් වැදගත් දෙයක් විස්තර කරන්න. ඔබට HTML ටැග් භාවිතා කළ හැකිය, විශේෂයෙන් <a> සහ <em>. - title: සේවාදායකයේ සවිස්තරය - site_description_extended: - desc_html: ඔබේ චර්යාධර්ම සංග්‍රහය, රීති, මාර්ගෝපදේශ සහ ඔබේ සේවාදායකය වෙන් කරන වෙනත් දේවල් සඳහා හොඳ තැනක්. ඔබට HTML ටැග් භාවිතා කළ හැකිය - title: අභිරුචි දීර්ඝ තොරතුරු - site_short_description: - desc_html: පැති තීරුවේ සහ මෙටා ටැග්වල පෙන්වයි. Mastodon යනු කුමක්ද සහ මෙම සේවාදායකය විශේෂ වන්නේ කුමක්ද යන්න තනි ඡේදයකින් විස්තර කරන්න. - title: සේවාදායකයේ කෙටි සවිස්තරය - site_title: සේවාදායකයේ නම - thumbnail: - desc_html: OpenGraph සහ API හරහා පෙරදසුන් සඳහා භාවිතා වේ. 1200x630px නිර්දේශිතයි - title: සේවාදායක සිඟිති රුව - timeline_preview: - desc_html: ගොඩබෑමේ පිටුවේ පොදු කාලරාමුව වෙත සබැඳිය සංදර්ශනය කරන්න සහ සත්‍යාපනයකින් තොරව පොදු කාලරේඛාවට API ප්‍රවේශයට ඉඩ දෙන්න - title: පොදු කාලරේඛාවට අනවසර පිවිසීමට ඉඩ දෙන්න - title: අඩවියේ සැකසුම් - trends: - desc_html: දැනට ප්‍රවණතා ඇති කලින් සමාලෝචනය කළ අන්තර්ගතය ප්‍රසිද්ධියේ සංදර්ශන කරන්න - title: ප්රවණතා site_uploads: delete: උඩුගත කළ ගොනුව මකන්න destroyed_msg: අඩවිය උඩුගත කිරීම සාර්ථකව මකා ඇත! diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 787739d7ac..a21fd78cde 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -75,8 +75,25 @@ ca: warn: Oculta el contingut filtrat rera un avís mencionant el títol del filtre form_admin_settings: backups_retention_period: Mantenir els arxius d'usuari generats durant el número de dies especificats. + bootstrap_timeline_accounts: Aquests comptes es fixaran en la part superior de les recomanacions de seguiment dels nous usuaris. + closed_registrations_message: Mostrat quan el registres estan tancats content_cache_retention_period: Els apunts des d'altres servidors s'esborraran després del número de dies especificat quan es configura un valor positiu. Això pot ser irreversible. + custom_css: Pots aplicar estils personalitzats en la versió web de Mastodon. + mascot: Anul·la l'ilustració en l'interfície web avançada. media_cache_retention_period: Els fitxers multimèdia descarregats s'esborraran després del número de dies especificat quan el valor configurat és positiu, i tornats a descarregats sota demanda. + profile_directory: El directori de perfils llista tots els usuaris que tenen activat ser descoberts. + require_invite_text: Quan el registre requereix aprovació manual, fer que sigui obligatori enlloc d'opcional escriure el text de la solicitud d'invitació "Perquè vols unirte?" + site_contact_email: Com pot la gent comunicar amb tu per a consultes legals o de recolzament. + site_contact_username: Com pot la gent trobar-te a Mastodon. + site_extended_description: Qualsevol informació adicional que pot ser útil per els visitants i els teus usuaris. Pot ser estructurat amb format Markdown. + site_short_description: Una descripció curta per ajudar a identificar de manera única el teu servidor. Qui el fa anar, per a qui és? + site_terms: Usa la teva pròpia política de privacitat o deixa-ho en blanc per a usar la per defecte. Pot ser estructurat amb format Markdown. + site_title: Com pot la gent referir-se al teu servidor a part del seu nom de domini. + theme: El tema que els visitants i els nous usuaris veuen. + thumbnail: Una imatge d'aproximadament 2:1 mostrada junt l'informació del teu servidor. + timeline_preview: Els visitants amb sessió no iniciada seran capaços de navegar per els apunts públics més recents en el teu servidor. + trendable_by_default: Omet la revisió manual del contingut en tendència. Els articles individuals poden encara ser eliminats després del fet. + trends: Les tendències mostres els apunts, les etiquetes i les noves històries que estan guanyant atenció en el teu servidor. form_challenge: current_password: Estàs entrant en una àrea segura imports: @@ -213,8 +230,22 @@ ca: warn: Oculta amb un avís form_admin_settings: backups_retention_period: Període de retenció del arxiu d'usuari + bootstrap_timeline_accounts: Recomana sempre aquests comptes als nous usuaris + closed_registrations_message: Missatge personalitzat quan el registre està tancat content_cache_retention_period: Periode de retenció de la memòria cau de contingut + custom_css: CSS personalitzat + mascot: Mascota personalitzada (llegat) media_cache_retention_period: Període de retenció del cau multimèdia + profile_directory: Habilita el directori de perfils + registrations_mode: Qui es pot registrar + require_invite_text: Requereix un motiu per el registre + show_domain_blocks: Mostra els bloquejos de domini + show_domain_blocks_rationale: Mostra perquè estan bloquejats els dominis + site_contact_email: E-mail de contacte + site_contact_username: Nom d'usuari del contacte + site_extended_description: Descripció ampliada + site_short_description: Descripció del servidor + site_terms: Política de Privacitat interactions: must_be_follower: Bloqueja les notificacions de persones que no em segueixen must_be_following: Bloqueja les notificacions de persones no seguides diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index b5b788bd56..19b524af74 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -75,8 +75,12 @@ cs: warn: Schovat filtrovaný obsah za varováním zmiňujicím název filtru form_admin_settings: backups_retention_period: Zachovat generované uživatelské archivy pro zadaný počet dní. + bootstrap_timeline_accounts: Tyto účty budou připnuty na vrchol nových uživatelů podle doporučení. + closed_registrations_message: Zobrazeno při zavření registrace content_cache_retention_period: Příspěvky z jiných serverů budou odstraněny po zadaném počtu dní, pokud je nastavena kladná hodnota. To může být nevratné. media_cache_retention_period: Stažené mediální soubory budou po zadaném počtu dní odstraněny, pokud je nastavena kladná hodnota, a na požádání znovu staženy. + site_contact_username: Jak vás lidé mohou oslovit na Mastodon. + site_terms: Použijte vlastní zásady ochrany osobních údajů nebo ponechte prázdné pro použití výchozího nastavení. Může být strukturováno pomocí Markdown syntaxe. form_challenge: current_password: Vstupujete do zabezpečeného prostoru imports: @@ -213,8 +217,27 @@ cs: warn: Skrýt s varováním form_admin_settings: backups_retention_period: Doba uchovávání archivu uživatelů + bootstrap_timeline_accounts: Vždy doporučovat tyto účty novým uživatelům content_cache_retention_period: Doba uchování mezipaměti obsahu + custom_css: Vlastní CSS + mascot: Vlastní maskot (zastaralé) media_cache_retention_period: Doba uchovávání mezipaměti médií + profile_directory: Povolit adresář profilů + registrations_mode: Kdo se může přihlásit + require_invite_text: Požadovat důvod pro připojení + show_domain_blocks: Zobrazit blokace domén + show_domain_blocks_rationale: Zobrazit proč byly blokovány domény + site_contact_email: Kontaktní e-mail + site_contact_username: Jméno kontaktu + site_extended_description: Rozšířený popis + site_short_description: Popis serveru + site_terms: Ochrana osobních údajů + site_title: Název serveru + theme: Výchozí motiv + thumbnail: Miniatura serveru + timeline_preview: Povolit neověřený přístup k veřejným časovým osám + trendable_by_default: Povolit trendy bez předchozí revize + trends: Povolit trendy interactions: must_be_follower: Blokovat oznámení od lidí, kteří vás nesledují must_be_following: Blokovat oznámení od lidí, které nesledujete diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 37ecad9c8b..3f65cb527d 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -75,8 +75,24 @@ da: warn: Skjul filtreret indhold bag en advarsel, der nævner filterets titel form_admin_settings: backups_retention_period: Behold genererede brugerarkiver i det angivne antal dage. + bootstrap_timeline_accounts: Disse konti fastgøres øverst på nye brugeres følg-anbefalinger. + closed_registrations_message: Vises, når tilmeldinger er lukket content_cache_retention_period: Indlæg fra andre servere slettes efter det angivne antal dage, når sat til en positiv værdi. Dette kan være irreversibelt. + custom_css: Man kan anvende tilpassede stilarter på Mastodon-webversionen. + mascot: Tilsidesætter illustrationen i den avancerede webgrænseflade. media_cache_retention_period: Downloadede mediefiler slettes efter det angivne antal dage, når sat til en positiv værdi, og gendownloades på forlangende. + profile_directory: Profilmappen oplister alle brugere, som har valgt at kunne opdages. + require_invite_text: Når tilmelding kræver manuel godkendelse, så gør “Hvorfor ønsker du at deltage?” tekstinput obligatorisk i stedet for valgfrit + site_contact_email: Hvordan folk kan opnå kontakt ifm. juridiske eller supportforespørgsler. + site_contact_username: Hvordan folk kan kontakte dig på Mastodon. + site_extended_description: Evt. yderligere oplysninger, som kan være nyttige for både besøgende og brugere. Kan struktureres vha. Markdown-syntaks. + site_short_description: En kort beskrivelse mhp. entydigt at kunne identificere denne server. Hvem kører den, hvem er den for? + site_terms: Brug egen fortrolighedspolitik eller lad stå tomt for standardpolitikken. Kan struktureres med Markdown-syntaks. + site_title: Hvordan folk kan henvise til serveren udover domænenavnet. + theme: Tema, som udloggede besøgende og nye brugere ser. + thumbnail: Et ca. 2:1 billede vist sammen med serveroplysningerne. + timeline_preview: Udloggede besøgende kan gennemse serverens seneste offentlige indlæg. + trends: Tendenser viser, hvilke indlæg, hashtags og nyheder opnår momentum på serveren. form_challenge: current_password: Du bevæger dig ind på et sikkert område imports: @@ -213,8 +229,28 @@ da: warn: Skjul bag en advarsel form_admin_settings: backups_retention_period: Brugerarkivs opbevaringsperiode + bootstrap_timeline_accounts: Anbefal altid disse konti til nye brugere + closed_registrations_message: Tilpasset besked, når tilmelding er utilgængelig content_cache_retention_period: Indholds-cache opbevaringsperiode + custom_css: Tilpasset CSS + mascot: Tilpasset maskot (ældre funktion) media_cache_retention_period: Media-cache opbevaringsperiode + profile_directory: Aktivér profilmappe + registrations_mode: Hvem, der kan tilmelde sig + require_invite_text: Kræv tilmeldingsbegrundelse + show_domain_blocks: Vis domæneblokeringer + show_domain_blocks_rationale: Vis, hvorfor domæner blev blokeret + site_contact_email: Kontakt e-mail + site_contact_username: Kontakt brugernavn + site_extended_description: Udvidet beskrivelse + site_short_description: Serverbeskrivelse + site_terms: Fortrolighedspolitik + site_title: Servernavn + theme: Standardtema + thumbnail: Serverminiaturebillede + timeline_preview: Tillad ikke-godkendt adgang til offentlige tidslinjer + trendable_by_default: Tillad ikke-reviderede tendenser + trends: Aktivér trends interactions: must_be_follower: Blokér notifikationer fra ikke-følgere must_be_following: Blokér notifikationer fra folk, som ikke følges diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 9e1464a4ff..9ef776059e 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -186,6 +186,11 @@ el: actions: hide: Πλήρης απόκρυψη warn: Απόκρυψη με προειδοποίηση + form_admin_settings: + custom_css: Προσαρμοσμένο CSS + registrations_mode: Ποιος μπορεί να εγγραφεί + site_contact_email: E-mail επικοινωνίας + site_contact_username: Όνομα χρήστη επικοινωνίας interactions: must_be_follower: Μπλόκαρε τις ειδοποιήσεις από όσους δεν σε ακολουθούν must_be_following: Μπλόκαρε τις ειδοποιήσεις από όσους δεν ακολουθείς diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index e479970b29..49b09ace4f 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -75,8 +75,25 @@ es-AR: warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro form_admin_settings: backups_retention_period: Conservar los archivos historiales generados por el usuario durante el número de días especificado. + bootstrap_timeline_accounts: Estas cuentas serán fijadas a la parte superior de las recomendaciones de cuentas a seguir para nuevos usuarios. + closed_registrations_message: Mostrado cuando los registros están cerrados content_cache_retention_period: Los mensajes de otros servidores se eliminarán después del número especificado de días cuando se establezca un valor positivo. Esto puede ser irreversible. + custom_css: Podés aplicar estilos personalizados a la versión web de Mastodon. + mascot: Reemplaza la ilustración en la interface web avanzada. media_cache_retention_period: Los archivos de medios descargados se eliminarán después del número especificado de días cuando se establezca un valor positivo, y se volverán a descargar a pedido. + profile_directory: El directorio de perfiles lista a todos los usuarios que han optado a que su cuenta pueda ser descubierta. + require_invite_text: Cuando registros aprobación manual, hacé que la solicitud de invitación "¿Por qué querés unirte?" sea obligatoria, en vez de opcional + site_contact_email: Cómo la gente puede estar en contacto con vos para consultas legales o de ayuda. + site_contact_username: Cómo la gente puede estar en contacto con vos en Mastodon. + site_extended_description: Cualquier información adicional que pueda ser útil para los visitantes y tus usuarios. Se puede estructurar con sintaxis Markdown. + site_short_description: Una breve descripción para ayudar a identificar individualmente a tu servidor. ¿Quién lo administra, a quién va dirigido? + site_terms: Usá tu propia política de privacidad o dejala en blanco para usar la predeterminada. Puede estructurarse con sintaxis Markdown. + site_title: Cómo la gente puede referirse a tu servidor además de su nombre de dominio. + theme: El tema que los visitantes no registrados y los nuevos usuarios ven. + thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor. + timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor. + trendable_by_default: Omití la revisión manual del contenido en tendencia. Los elementos individuales aún podrán eliminarse de las tendencias. + trends: Las tendencias muestran qué mensajes, etiquetas y noticias están ganando tracción en tu servidor. form_challenge: current_password: Estás ingresando en un área segura imports: @@ -213,8 +230,28 @@ es-AR: warn: Ocultar con una advertencia form_admin_settings: backups_retention_period: Período de retención del archivo historial del usuario + bootstrap_timeline_accounts: Siempre recomendar estas cuentas a usuarios nuevos + closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles content_cache_retention_period: Período de retención de la caché de contenido + custom_css: CSS personalizado + mascot: Mascota personalizada (legado) media_cache_retention_period: Período de retención de la caché de medios + profile_directory: Habilitar directorio de perfiles + registrations_mode: Quién puede registrarse + require_invite_text: Requerir un motivo para unirse + show_domain_blocks: Mostrar dominios bloqueados + show_domain_blocks_rationale: Mostrar por qué se bloquearon los dominios + site_contact_email: Dirección de correo electrónico de contacto + site_contact_username: Nombre de usuario de contacto + site_extended_description: Descripción extendida + site_short_description: Descripción del servidor + site_terms: Política de privacidad + site_title: Nombre del servidor + theme: Tema predeterminado + thumbnail: Miniatura del servidor + timeline_preview: Permitir el acceso no autenticado a las líneas temporales públicas + trendable_by_default: Permitir tendencias sin revisión previa + trends: Habilitar tendencias interactions: must_be_follower: Bloquear notificaciones de cuentas que no te siguen must_be_following: Bloquear notificaciones de cuentas que no seguís diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index fef4595d4b..3b97e4df63 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -75,8 +75,25 @@ es: warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro form_admin_settings: backups_retention_period: Mantener los archivos de usuario generados durante el número de días especificado. + bootstrap_timeline_accounts: Estas cuentas aparecerán en la parte superior de las recomendaciones de los nuevos usuarios. + closed_registrations_message: Mostrado cuando los registros están cerrados content_cache_retention_period: Las publicaciones de otros servidores se eliminarán después del número especificado de días cuando se establezca un valor positivo. Esto puede ser irreversible. + custom_css: Puedes aplicar estilos personalizados a la versión web de Mastodon. + mascot: Reemplaza la ilustración en la interfaz web avanzada. media_cache_retention_period: Los archivos multimedia descargados se eliminarán después del número especificado de días cuando se establezca un valor positivo, y se redescargarán bajo demanda. + profile_directory: El directorio de perfiles lista a todos los usuarios que han optado por que su cuenta pueda ser descubierta. + require_invite_text: Cuando los registros requieren aprobación manual, hace obligatoria la entrada de texto "¿Por qué quieres unirte?" en lugar de opcional + site_contact_email: Cómo la gente puede ponerse en contacto contigo para consultas legales o de ayuda. + site_contact_username: Cómo puede contactarte la gente en Mastodon. + site_extended_description: Cualquier información adicional que pueda ser útil para los visitantes y sus usuarios. Se puede estructurar con formato Markdown. + site_short_description: Una breve descripción para ayudar a identificar su servidor de forma única. ¿Quién lo administra, a quién va dirigido? + site_terms: Utiliza tu propia política de privacidad o déjala en blanco para usar la predeterminada Puede estructurarse con formato Markdown. + site_title: Cómo puede referirse la gente a tu servidor además de por el nombre de dominio. + theme: El tema que los visitantes no registrados y los nuevos usuarios ven. + thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor. + timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor. + trendable_by_default: Omitir la revisión manual del contenido en tendencia. Los elementos individuales aún podrán eliminarse de las tendencias. + trends: Las tendencias muestran qué mensajes, etiquetas y noticias están ganando tracción en tu servidor. form_challenge: current_password: Estás entrando en un área segura imports: @@ -213,8 +230,28 @@ es: warn: Ocultar con una advertencia form_admin_settings: backups_retention_period: Período de retención del archivo de usuario + bootstrap_timeline_accounts: Recomendar siempre estas cuentas a nuevos usuarios + closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles content_cache_retention_period: Período de retención de caché de contenido + custom_css: CSS personalizado + mascot: Mascota personalizada (legado) media_cache_retention_period: Período de retención de caché multimedia + profile_directory: Habilitar directorio de perfiles + registrations_mode: Quién puede registrarse + require_invite_text: Requerir una razón para unirse + show_domain_blocks: Mostrar dominios bloqueados + show_domain_blocks_rationale: Mostrar por qué se bloquearon los dominios + site_contact_email: Dirección de correo electrónico de contacto + site_contact_username: Nombre de usuario de contacto + site_extended_description: Descripción extendida + site_short_description: Descripción del servidor + site_terms: Política de Privacidad + site_title: Nombre del servidor + theme: Tema por defecto + thumbnail: Miniatura del servidor + timeline_preview: Permitir el acceso no autenticado a las líneas de tiempo públicas + trendable_by_default: Permitir tendencias sin revisión previa + trends: Habilitar tendencias interactions: must_be_follower: Bloquear notificaciones de personas que no te siguen must_be_following: Bloquear notificaciones de personas que no sigues diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index e2dd896d17..0f943f0a2c 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -37,7 +37,7 @@ hu: current_password: Biztonsági okok miatt kérlek, írd be a jelenlegi fiók jelszavát current_username: A jóváhagyáshoz írd be a jelenlegi fiók felhasználói nevét digest: Csak hosszú távollét esetén küldődik és csak ha személyes üzenetet kaptál távollétedben - discoverable: Engedélyezzük, hogy a fiókod idegenek által megtalálható legyen javaslatokon, trendeken és más funkciókon keresztül + discoverable: Engedélyezés, hogy a fiókod idegenek által megtalálható legyen javaslatokon, trendeken és más funkciókon keresztül email: Kapsz egy megerősítő e-mailt fields: A profilodon legfeljebb 4 bejegyzés szerepelhet táblázatos formában header: PNG, GIF vagy JPG. Maximum %{size}. Átméretezzük %{dimensions} pixelre @@ -62,7 +62,7 @@ hu: username: A felhasználói neved egyedi lesz a %{domain} domainen whole_word: Ha a kulcsszó alfanumerikus, csak akkor minősül majd találatnak, ha teljes szóra illeszkedik domain_allow: - domain: Ez a domain adatot kérhet le a szerverünkről és az ettől érkező adatokat feldolgozzuk és mentjük + domain: Ez a domain adatokat kérhet le erről a kiszolgálóról, és a bejövő adatok fel lesznek dolgozva és tárolva lesznek email_domain_block: domain: Ez lehet az e-mail címben szereplő domain név vagy az MX rekord, melyet ez használ. Ezeket feliratkozáskor ellenőrizzük. with_dns_records: Megpróbáljuk a megadott domain DNS rekordjait lekérni, és az eredményeket hozzáadjuk a tiltólistához @@ -77,10 +77,16 @@ hu: backups_retention_period: Az előállított felhasználói archívumok megtartása a megadott napokig. content_cache_retention_period: A más kiszolgálókról származó bejegyzések megadott számú nap után törölve lesznek, ha pozitív értékre van állítva. Ez lehet, hogy nem fordítható vissza. media_cache_retention_period: A letöltött médiafájlok megadott számú nap után törölve lesznek, ha pozitív értékre van állítva, és igény szerint újból le lesznek töltve. + site_short_description: Rövid leírás, amely segíthet a kiszolgálód egyedi azonosításában. Ki futtatja, kinek készült? + site_title: Hogyan hivatkozhatnak mások a kiszolgálódra a domain nevén kívül. + thumbnail: Egy durván 2:1 arányú kép, amely a kiszolgálóinformációk mellett jelenik meg. + timeline_preview: A kijelentkezett látogatók továbbra is böngészhetik a kiszolgáló legfrissebb nyilvános bejegyzéseit. + trendable_by_default: Kézi felülvizsgálat kihagyása a felkapott tartalmaknál. Az egyes elemek utólag távolíthatók el a trendek közül. + trends: A trendek azt mondják meg, hogy mely bejegyzések, hashtagek és hírbejegyzések felkapottak a kiszolgálódon. form_challenge: current_password: Beléptél egy biztonsági térben imports: - data: Egy másik Mastodon szerverről exportált CSV fájl + data: Egy másik Mastodon kiszolgálóról exportált CSV-fájl invite_request: text: Ez segít nekünk átnézni a jelentkezésedet ip_block: @@ -93,7 +99,7 @@ hu: sign_up_requires_approval: Új regisztrációk csak a jóváhagyásoddal történhetnek majd meg severity: Válaszd ki, mi történjen a kérésekkel erről az IP-ről rule: - text: Írd le, mi a szabály vagy elvárás ezen a szerveren a felhasználók felé. Próbálj röviden, egyszerűen fogalmazni + text: Írd le, mi a szabály vagy elvárás ezen a kiszolgálón a felhasználók felé. Próbálj röviden, egyszerűen fogalmazni. sessions: otp: 'Add meg a telefonodon generált kétlépcsős azonosító kódodat vagy használd az egyik tartalék bejelentkező kódot:' webauthn: Ha ez egy USB kulcs, ellenőrizd, hogy csatlakoztattad és ha szükséges, aktiváltad is. @@ -214,7 +220,22 @@ hu: form_admin_settings: backups_retention_period: Felhasználói archívum megtartási időszaka content_cache_retention_period: Tartalom-gyorsítótár megtartási időszaka + custom_css: Egyéni CSS + mascot: Egyéni kabala (örökölt) media_cache_retention_period: Média-gyorsítótár megtartási időszaka + profile_directory: Profiladatbázis engedélyezése + registrations_mode: Ki regisztrálhat + require_invite_text: Indok megkövetelése a csatlakozáshoz + show_domain_blocks: Domain tiltások megjelenitése + site_extended_description: Bővített leírás + site_short_description: Kiszolgáló leírása + site_terms: Adatvédelmi szabályzat + site_title: Kiszolgáló neve + theme: Alapértelmezett téma + thumbnail: Kiszolgáló bélyegképe + timeline_preview: A nyilvános idővonalak hitelesítés nélküli elérésének engedélyezése + trendable_by_default: Trendek engedélyezése előzetes ellenőrzés nélkül + trends: Trendek engedélyezése interactions: must_be_follower: Nem követőidtől érkező értesítések tiltása must_be_following: Nem követettjeidtől érkező értesítések tiltása diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index b32d8eb1e1..7cde207ac6 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -75,8 +75,25 @@ io: warn: Celez filtrita kontenajo dop avert quo montras titulo di filtrilo form_admin_settings: backups_retention_period: Retenez igita uzantoarkivi por la diiquanto. + bootstrap_timeline_accounts: Ca konti pinglagesos a super sequorekomendi di nova uzanti. + closed_registrations_message: Montresas kande registradi klozesas content_cache_retention_period: Posti de altra servili efacesos pos la diiquanto kande fixesas a positiva nombro. Co darfas desagesar. + custom_css: Vu povas pozar kustumizita staili en retverso di Mastodon. + mascot: Remplas montreso en avanca retintervizajo. media_cache_retention_period: Deschargita mediifaili efacesos pos la diiquanto kande fixesas a positiva nombro, e rideschargesas irgatempe. + profile_directory: La profilcheflisto montras omna uzanti quo voluntale volas esar deskovrebla. + require_invite_text: Kande registradi bezonas manuala aprobo, ol kauzigas "Por quo vu volas juntas?" textoenpozo esar obliganta + site_contact_email: Quale personi povas kontaktar vu por legala o suportquestioni. + site_contact_username: Quale personi povas kontaktar vu en Mastodon. + site_extended_description: Irga plusa informi quo forsan esar utila por vizitanti e uzanti. Povas strukturigesar per sintaxo di Markdown. + site_short_description: Kurta deskripto por helpar unala identifikar ca servilo. Qua funcionigar lu e por qua? + site_terms: Uzez vua sua privatesguidilo o ignorez por uzar la originalo. Povas strukturigesar per sintaxo di Markdown. + site_title: Quale personi vokas ca servilo se ne uzas domennomo. + theme: Temo quo videsas da ekirita vizitanti e nova uzanti. + thumbnail: Cirkum 2:1 imajo montresar kun informo di ca servilo. + timeline_preview: Ekirita vizitanti videsos maxim recenta publika posti quo esas displonebla en la servilo. + trendable_by_default: Ignorez manuala kontrolar di tendencoza kontenajo. Singla kozi povas ankore efacesar de tendenci pose. + trends: Tendenci montras quala posti, hashtagi e niuzrakonti famozeskas en ca servilo. form_challenge: current_password: Vu eniras sekura areo imports: @@ -213,8 +230,28 @@ io: warn: Celez kun averto form_admin_settings: backups_retention_period: Uzantoarkivretendurtempo + bootstrap_timeline_accounts: Sempre rekomendez ca konti a nova uzanti + closed_registrations_message: Kustumizita mesajo kande registradi ne esas disponebla content_cache_retention_period: Kontenajmemorajretendurtempo + custom_css: Kustumizita CSS + mascot: Kustumizita reprezentimajo (oldo) media_cache_retention_period: Mediimemorajretendurtempo + profile_directory: Aktivigez profilcheflisto + registrations_mode: Qua povas registragar + require_invite_text: Mustez pozar motivo por juntar + show_domain_blocks: Montrez domenobstrukti + show_domain_blocks_rationale: Montrez por quo domeni obstruktesir + site_contact_email: Kontaktoretposto + site_contact_username: Kontaktouzantonomo + site_extended_description: Longa deskripto + site_short_description: Servildeskripto + site_terms: Privatesguidilo + site_title: Servilnomo + theme: Originala temo + thumbnail: Servilimajeto + timeline_preview: Permisez neyurizita aceso a publika tempolineo + trendable_by_default: Permisez tendenci sen bezonar kontrolo + trends: Aktivigez tendenci interactions: must_be_follower: Celar la savigi da homi, qui ne sequas tu must_be_following: Celar la savigi da homi, quin tu ne sequas diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 8cb8d7b85d..408eeedd29 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -75,8 +75,25 @@ it: warn: Nascondi il contenuto filtrato e mostra invece un avviso, citando il titolo del filtro form_admin_settings: backups_retention_period: Conserva gli archivi utente generati per il numero di giorni specificato. + bootstrap_timeline_accounts: Questi account verranno aggiunti in cima ai consigli da seguire dei nuovi utenti. + closed_registrations_message: Visualizzato alla chiusura delle iscrizioni content_cache_retention_period: I post da altri server verranno eliminati dopo il numero di giorni specificato se impostato su un valore positivo. Questo potrebbe essere irreversibile. + custom_css: È possibile applicare stili personalizzati sulla versione web di Mastodon. + mascot: Sostituisce l'illustrazione nell'interfaccia web avanzata. media_cache_retention_period: I file multimediali scaricati verranno eliminati dopo il numero di giorni specificato se impostati su un valore positivo e scaricati nuovamente su richiesta. + profile_directory: La directory del profilo elenca tutti gli utenti che hanno acconsentito ad essere individuabili. + require_invite_text: 'Quando le iscrizioni richiedono l''approvazione manuale, rendi la domanda: "Perché vuoi unirti?" obbligatoria anziché facoltativa' + site_contact_email: In che modo le persone possono contattarti per richieste legali o di supporto. + site_contact_username: In che modo le persone possono raggiungerti su Mastodon. + site_extended_description: Qualsiasi informazione aggiuntiva che possa essere utile ai visitatori e ai tuoi utenti. Può essere strutturata con la sintassi Markdown. + site_short_description: Una breve descrizione per aiutare a identificare in modo univoco il tuo server. Chi lo gestisce, a chi è rivolto? + site_terms: Usa la tua politica sulla privacy o lascia vuoto per usare l'impostazione predefinita. Può essere strutturata con la sintassi Markdown. + site_title: In che modo le persone possono fare riferimento al tuo server oltre al suo nome di dominio. + theme: Tema visualizzato dai visitatori e dai nuovi utenti disconnessi. + thumbnail: Un'immagine approssimativamente 2:1 visualizzata insieme alle informazioni del tuo server. + timeline_preview: I visitatori disconnessi potranno sfogliare i post pubblici più recenti disponibili sul server. + trendable_by_default: Salta la revisione manuale dei contenuti di tendenza. I singoli elementi possono ancora essere rimossi dalle tendenze dopo il fatto. + trends: Le tendenze mostrano quali post, hashtag e notizie stanno guadagnando popolarità sul tuo server. form_challenge: current_password: Stai entrando in un'area sicura imports: @@ -213,8 +230,28 @@ it: warn: Nascondi con avviso form_admin_settings: backups_retention_period: Periodo di conservazione dell'archivio utente + bootstrap_timeline_accounts: Consiglia sempre questi account ai nuovi utenti + closed_registrations_message: Messaggio personalizzato quando le iscrizioni non sono disponibili content_cache_retention_period: Periodo di conservazione della cache dei contenuti + custom_css: Personalizza CSS + mascot: Personalizza mascotte (legacy) media_cache_retention_period: Periodo di conservazione della cache multimediale + profile_directory: Abilita directory del profilo + registrations_mode: Chi può iscriversi + require_invite_text: Richiedi un motivo per unirsi + show_domain_blocks: Mostra i blocchi di dominio + show_domain_blocks_rationale: Mostra perché i domini sono stati bloccati + site_contact_email: Contatto email + site_contact_username: Nome utente di contatto + site_extended_description: Descrizione estesa + site_short_description: Descrizione del server + site_terms: Politica sulla privacy + site_title: Nome del server + theme: Tema predefinito + thumbnail: Miniatura del server + timeline_preview: Consenti l'accesso non autenticato alle timeline pubbliche + trendable_by_default: Consenti le tendenze senza revisione preventiva + trends: Abilita le tendenze interactions: must_be_follower: Blocca notifiche da chi non ti segue must_be_following: Blocca notifiche dalle persone che non segui diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 65cb504edd..a62e8eb40f 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -217,6 +217,8 @@ ku: backups_retention_period: Serdema tomarkirina arşîva bikarhêner content_cache_retention_period: Serdema tomarkirina bîrdanka naverokê media_cache_retention_period: Serdema tomarkirina bîrdanka medyayê + site_terms: Politîka taybetiyê + trendable_by_default: Mafê bide rojevê bêyî ku were nirxandin interactions: must_be_follower: Danezanên ji kesên ku ne şopînerên min tên asteng bike must_be_following: Agahdariyan asteng bike ji kesên ku tu wan naşopînî diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 899392b101..4529d2c5da 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -75,8 +75,25 @@ lv: warn: Paslēp filtrēto saturu aiz brīdinājuma, kurā minēts filtra nosaukums form_admin_settings: backups_retention_period: Saglabā ģenerētos lietotāju arhīvus norādīto dienu skaitā. + bootstrap_timeline_accounts: Šie konti tiks piesprausti jauno lietotāju ieteikumu augšdaļā. + closed_registrations_message: Tiek rādīts, kad reģistrēšanās ir slēgta content_cache_retention_period: Ziņas no citiem serveriem tiks dzēstas pēc norādītā dienu skaita, ja ir iestatīta pozitīva vērtība. Tas var būt neatgriezeniski. + custom_css: Vari lietot pielāgotus stilus Mastodon tīmekļa versijā. + mascot: Ignorē ilustrāciju uzlabotajā tīmekļa saskarnē. media_cache_retention_period: Lejupielādētie multivides faili tiks dzēsti pēc norādītā dienu skaita, kad tie būs iestatīti uz pozitīvu vērtību, un pēc pieprasījuma tiks lejupielādēti atkārtoti. + profile_directory: Profilu direktorijā ir uzskaitīti visi lietotāji, kuri ir izvēlējušies būt atklājami. + require_invite_text: 'Ja pierakstīšanai nepieciešama manuāla apstiprināšana, izdari tā, lai teksta: “Kāpēc vēlaties pievienoties?” ievade ir obligāta, nevis opcionāla' + site_contact_email: Kā cilvēki var sazināties ar tevi par juridiskiem vai atbalsta jautājumiem. + site_contact_username: Tagad cilvēki var tevi sasniegt Mastodon. + site_extended_description: Jebkura papildu informācija, kas var būt noderīga apmeklētājiem un lietotājiem. Var strukturēt ar Markdown sintaksi. + site_short_description: Īss apraksts, kas palīdzēs unikāli identificēt tavu serveri. Kurš to darbina, kam tas paredzēts? + site_terms: Izmanto pats savu konfidencialitātes politiku vai atstāj tukšu, lai izmantotu noklusējuma iestatījumu. Var strukturēt ar Markdown sintaksi. + site_title: Kā cilvēki var atsaukties uz tavu serveri, izņemot tā domēna nosaukumu. + theme: Tēma, kuru redz apmeklētāji, kuri ir atteikušies, un jaunie lietotāji. + thumbnail: Aptuveni 2:1 attēls, kas tiek parādīts kopā ar tava servera informāciju. + timeline_preview: Atteikušies apmeklētāji varēs pārlūkot jaunākās serverī pieejamās publiskās ziņas. + trendable_by_default: Izlaist aktuālā satura manuālu pārskatīšanu. Atsevišķas preces joprojām var noņemt no tendencēm pēc fakta. + trends: Tendences parāda, kuras ziņas, atsauces un ziņu stāsti gūst panākumus tavā serverī. form_challenge: current_password: Tu ieej drošā zonā imports: @@ -213,8 +230,28 @@ lv: warn: Paslēpt ar brīdinājumu form_admin_settings: backups_retention_period: Lietotāja arhīva glabāšanas periods + bootstrap_timeline_accounts: Vienmēr iesaki šos kontus jaunajiem lietotājiem + closed_registrations_message: Pielāgots ziņojums, ja reģistrēšanās nav pieejama content_cache_retention_period: Satura arhīva glabāšanas periods + custom_css: Pielāgots CSS + mascot: Pielāgots talismans (mantots) media_cache_retention_period: Multivides kešatmiņas saglabāšanas periods + profile_directory: Iespējot profila direktoriju + registrations_mode: Kurš drīkst pieteikties + require_invite_text: Pieprasīt pievienošanās iemeslu + show_domain_blocks: Rādīt domēnu bloķēšanas + show_domain_blocks_rationale: Rādīt, kāpēc domēni tika bloķēti + site_contact_email: E-pasts saziņai + site_contact_username: Lietotājvārds saziņai + site_extended_description: Paplašināts apraksts + site_short_description: Servera apraksts + site_terms: Privātuma Politika + site_title: Servera nosaukums + theme: Noklusētā tēma + thumbnail: Servera sīkbilde + timeline_preview: Atļaut neautentificētu piekļuvi publiskajām ziņu lentām + trendable_by_default: Atļaut tendences bez iepriekšējas pārskatīšanas + trends: Iespējot tendences interactions: must_be_follower: Bloķēt paziņojumus no ne-sekotājiem must_be_following: Bloķēt paziņojumus no cilvēkiem, kuriem tu neseko diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index aae28cb202..4d44bbe640 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -75,8 +75,25 @@ pl: warn: Ukryj filtrowaną zawartość za ostrzeżeniem wskazującym tytuł filtra form_admin_settings: backups_retention_period: Zachowaj wygenerowane archiwa użytkownika przez określoną liczbę dni. + bootstrap_timeline_accounts: Te konta zostaną przypięte na górze rekomendacji śledzenia nowych użytkowników. + closed_registrations_message: Wyświetlane po zamknięciu rejestracji content_cache_retention_period: Posty z innych serwerów zostaną usunięte po określonej liczbie dni, kiedy liczba jest ustawiona na wartość dodatnią. Może to być nieodwracalne. + custom_css: Możesz zastosować niestandardowe style w internetowej wersji Mastodon. + mascot: Nadpisuje ilustrację w zaawansowanym interfejsie internetowym. media_cache_retention_period: Pobrane pliki multimedialne zostaną usunięte po określonej liczbie dni po ustawieniu na wartość dodatnią i ponownie pobrane na żądanie. + profile_directory: Katalog profili zawiera listę wszystkich użytkowników, którzy zgodzili się na bycie znalezionymi. + require_invite_text: Kiedy rejestracje wymagają ręcznego zatwierdzenia, ustaw pole "Dlaczego chcesz dołączyć?" jako obowiązkowe, a nie opcjonalne + site_contact_email: Jak ludzie mogą się z Tobą skontaktować w celu uzyskania odpowiedzi na zapytania prawne lub wsparcie. + site_contact_username: Jak ludzie mogą do Ciebie dotrzeć na Mastodon. + site_extended_description: Wszelkie dodatkowe informacje, które mogą być przydatne dla odwiedzających i użytkowników. Można je formatować używając składni Markdown. + site_short_description: Krótki opis, który pomoże w unikalnym zidentyfikowaniu Twojego serwera. Kto go obsługuje, do kogo jest skierowany? + site_terms: Użyj własnej polityki prywatności lub zostaw puste, aby użyć domyślnej. Może być sformatowana za pomocą składni Markdown. + site_title: Jak ludzie mogą odwoływać się do Twojego serwera inaczej niże przez nazwę jego domeny. + theme: Motyw, który widzą wylogowani i nowi użytkownicy. + thumbnail: Obraz o proporcjach mniej więcej 2:1 wyświetlany obok informacji o serwerze. + timeline_preview: Wylogowani użytkownicy będą mogli przeglądać najnowsze publiczne wpisy dostępne na serwerze. + trendable_by_default: Pomiń ręczny przegląd treści trendów. Pojedyncze elementy nadal mogą być usuwane z trendów po fakcie. + trends: Tendencje pokazują, które posty, hasztagi i newsy zyskują popularność na Twoim serwerze. form_challenge: current_password: Wchodzisz w strefę bezpieczną imports: @@ -213,8 +230,28 @@ pl: warn: Ukryj z ostrzeżeniem form_admin_settings: backups_retention_period: Okres przechowywania archiwum użytkownika + bootstrap_timeline_accounts: Zawsze rekomenduj te konta nowym użytkownikom + closed_registrations_message: Niestandardowa wiadomość, gdy rejestracje nie są dostępne content_cache_retention_period: Okres przechowywania pamięci podręcznej + custom_css: Niestandardowy CSS + mascot: Własna ikona media_cache_retention_period: Okres przechowywania pamięci podręcznej + profile_directory: Włącz katalog profilów + registrations_mode: Kto może się zarejestrować + require_invite_text: Wymagaj powodu, aby dołączyć + show_domain_blocks: Pokazuj zablokowane domeny + show_domain_blocks_rationale: Pokaż dlaczego domeny zostały zablokowane + site_contact_email: E-mail kontaktowy + site_contact_username: Nazwa użytkownika do kontaktu + site_extended_description: Rozszerzony opis + site_short_description: Opis serwera + site_terms: Polityka prywatności + site_title: Nazwa serwera + theme: Domyślny motyw + thumbnail: Miniaturka serwera + timeline_preview: Zezwalaj na nieuwierzytelniony dostęp do publicznych osi czasu + trendable_by_default: Zezwalaj na trendy bez wcześniejszego przeglądu + trends: Włącz trendy interactions: must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index bf10ee0959..62d9bf582d 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -213,8 +213,28 @@ pt-PT: warn: Ocultar com um aviso form_admin_settings: backups_retention_period: Período de retenção de arquivos de utilizador + bootstrap_timeline_accounts: Sempre recomendar essas contas para novos utilizadores + closed_registrations_message: Mensagem personalizada quando as inscrições não estão disponíveis content_cache_retention_period: Período de retenção de conteúdo em cache + custom_css: CSS Personalizado + mascot: Mascote personalizada (legado) media_cache_retention_period: Período de retenção de ficheiros de media em cache + profile_directory: Habilitar diretório de perfis + registrations_mode: Quem pode inscrever-se + require_invite_text: Requerer uma razão para entrar + show_domain_blocks: Mostrar domínios bloqueados + show_domain_blocks_rationale: Mostrar porque os domínios foram bloqueados + site_contact_email: E-mail de contacto + site_contact_username: Nome de utilizador do contacto + site_extended_description: Descrição estendida + site_short_description: Descrição do servidor + site_terms: Política de Privacidade + site_title: Nome do servidor + theme: Tema predefinido + thumbnail: Miniatura do servidor + timeline_preview: Permitir acesso não autenticado às cronologias públicas + trendable_by_default: Permitir tendências sem revisão prévia + trends: Habilitar tendências interactions: must_be_follower: Bloquear notificações de não-seguidores must_be_following: Bloquear notificações de pessoas que não segues diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 1826801b8e..c0ecab1ae6 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -75,8 +75,17 @@ sl: warn: Skrij filtrirano vsebino za opozorilom, ki pomenja naslov filtra form_admin_settings: backups_retention_period: Hani tvorjene arhive uporabnikov navedeno število dni. + closed_registrations_message: Prikazano, ko so registracije zaprte content_cache_retention_period: Objave z drugih strežnikov bodo izbrisane po navedenem številu dni, če je vrednost pozitivna. Ta dejanja lahko nepovratna. + custom_css: Spletni različici Mastodona lahko uveljavite sloge po meri. + mascot: Preglasi ilustracijo v naprednem spletnem vmesniku. media_cache_retention_period: Prenesene predstavnostne datoteke bodo izbrisane po navedenem številu dni, če je vrednost pozitivna, in ponovno prenesene na zahtevo. + profile_directory: Imenik profilov izpiše vse uporabnike, ki so dovolili, da so v njem navedeni. + site_contact_username: Kako vas lahko kontaktirajo na Mastodonu. + site_title: Kako naj imenujejo vaš strežnik poleg njegovega domenskega imena. + theme: Tema, ki jo vidijo odjavljeni obiskovalci in novi uporabniki. + timeline_preview: Odjavljeni obiskovalci bodo lahko brskali po najnovejših javnih objavah, ki so na voljo na strežniku. + trends: Trendi prikažejo, katere objave, ključniki in novice privlačijo zanimanje na vašem strežniku. form_challenge: current_password: Vstopate v varovano območje imports: @@ -213,8 +222,28 @@ sl: warn: Skrij z opozorilom form_admin_settings: backups_retention_period: Obdobje hrambe arhivov uporabnikov + bootstrap_timeline_accounts: Vedno priporočaj te račune novim uporabnikom + closed_registrations_message: Sporočilo po meri, ko registracije niso na voljo content_cache_retention_period: Obdobje hrambe predpomnilnika vsebine + custom_css: CSS po meri + mascot: Maskota po meri (opuščeno) media_cache_retention_period: Obdobje hrambe predpomnilnika predstavnosti + profile_directory: Omogoči imenik profilov + registrations_mode: Kdo se lahko registrira + require_invite_text: Zahtevaj razlog za pridružitev + show_domain_blocks: Pokaži blokade domen + show_domain_blocks_rationale: Pokaži, zakaj so bile domene blokirane + site_contact_email: E-naslov za stik + site_contact_username: Uporabniško ime stika + site_extended_description: Razširjeni opis + site_short_description: Opis strežnika + site_terms: Pravilnik o zasebnosti + site_title: Ime strežnika + theme: Privzeta tema + thumbnail: Sličica strežnika + timeline_preview: Omogoči neoverjen dostop do javnih časovnic + trendable_by_default: Dovoli trende brez predhodnega pregleda + trends: Omogoči trende interactions: must_be_follower: Blokiraj obvestila nesledilcev must_be_following: Blokiraj obvestila oseb, ki jim ne sledite diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index e674641155..8134be462e 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -210,7 +210,23 @@ th: form_admin_settings: backups_retention_period: ระยะเวลาการเก็บรักษาการเก็บถาวรผู้ใช้ content_cache_retention_period: ระยะเวลาการเก็บรักษาแคชเนื้อหา + custom_css: CSS ที่กำหนดเอง + mascot: มาสคอตที่กำหนดเอง (ดั้งเดิม) media_cache_retention_period: ระยะเวลาการเก็บรักษาแคชสื่อ + profile_directory: เปิดใช้งานไดเรกทอรีโปรไฟล์ + registrations_mode: ผู้ที่สามารถลงทะเบียน + require_invite_text: ต้องมีเหตุผลที่จะเข้าร่วม + show_domain_blocks: แสดงการปิดกั้นโดเมน + site_contact_email: อีเมลสำหรับติดต่อ + site_contact_username: ชื่อผู้ใช้สำหรับติดต่อ + site_extended_description: คำอธิบายแบบขยาย + site_short_description: คำอธิบายเซิร์ฟเวอร์ + site_terms: นโยบายความเป็นส่วนตัว + site_title: ชื่อเซิร์ฟเวอร์ + theme: ชุดรูปแบบเริ่มต้น + thumbnail: ภาพขนาดย่อเซิร์ฟเวอร์ + trendable_by_default: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า + trends: เปิดใช้งานแนวโน้ม interactions: must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 3576d8eefe..c401a821d4 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -75,8 +75,25 @@ uk: warn: Сховати відфільтрований вміст за попередженням, у якому вказано заголовок фільтра form_admin_settings: backups_retention_period: Зберігати створені архіви користувача вказану кількість днів. + bootstrap_timeline_accounts: Ці облікові записи будуть закріплені в топі пропозицій для нових користувачів. + closed_registrations_message: Показується, коли реєстрація закрита content_cache_retention_period: Матеріали з інших серверів будуть видалені після вказаної кількості днів, коли встановлено позитивне значення. Ця дія може бути незворотна. + custom_css: Ви можете застосувати користувацькі стилі у вебверсії Mastodon. + mascot: Змінює ілюстрацію в розширеному вебінтерфейсі. media_cache_retention_period: Завантажені медіафайли будуть видалені після вказаної кількості днів після встановлення додатного значення та повторного завантаження за запитом. + profile_directory: У каталозі профілів перераховані всі користувачі, які погодились бути видимими. + require_invite_text: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим + site_contact_email: Як люди можуть зв'язатися з вами для отримання правової допомоги або підтримки. + site_contact_username: Як люди можуть зв'язатися з вами у Mastodon. + site_extended_description: Будь-яка додаткова інформація, яка може бути корисною для відвідувачів і ваших користувачів. Може бути структурована за допомогою синтаксису Markdown. + site_short_description: Короткий опис, щоб допомогти однозначно ідентифікувати ваш сервер. Хто ним керує, для кого він потрібен? + site_terms: Використовуйте власну політику приватності або залиште поле порожнім, щоб використовувати усталене значення. Може бути структуровано за допомогою синтаксису Markdown. + site_title: Як люди можуть посилатися на ваш сервер, окрім його доменного імені. + theme: Тема, яку бачать відвідувачі, що вийшли з системи, та нові користувачі. + thumbnail: Зображення приблизно 2:1, що показується поряд з відомостями про ваш сервер. + timeline_preview: Зареєстровані відвідувачі зможуть переглядати останні публічні дописи, доступні на сервері. + trendable_by_default: Пропустити ручний огляд популярних матеріалів. Індивідуальні елементи все ще можна вилучити з популярних постфактум. + trends: Популярні показують, які дописи, хештеґи та новини набувають популярності на вашому сервері. form_challenge: current_password: Ви входите до безпечної зони imports: @@ -213,8 +230,28 @@ uk: warn: Сховати за попередженням form_admin_settings: backups_retention_period: Період утримання архіву користувача + bootstrap_timeline_accounts: Завжди рекомендувати новим користувачам ці облікові записи + closed_registrations_message: Показуване повідомлення, якщо реєстрація недоступна content_cache_retention_period: Час зберігання кешу контенту + custom_css: Користувацький CSS + mascot: Користувацький символ (застарілий) media_cache_retention_period: Період збереження кешу медіа + profile_directory: Увімкнути каталог профілів + registrations_mode: Хто може зареєструватися + require_invite_text: Для того, щоб приєднатися потрібна причина + show_domain_blocks: Показати заблоковані домени + show_domain_blocks_rationale: Показати чому домени були заблоковані + site_contact_email: Контактна адреса електронної пошти + site_contact_username: Ім'я контакта + site_extended_description: Розширений опис + site_short_description: Опис сервера + site_terms: Політика приватності + site_title: Назва сервера + theme: Стандартна тема + thumbnail: Мініатюра сервера + timeline_preview: Дозволити неавтентифікований доступ до публічних стрічок + trendable_by_default: Дозволити популярне без попереднього огляду + trends: Увімкнути популярні interactions: must_be_follower: Блокувати сповіщення від непідписаних людей must_be_following: Блокувати сповіщення від людей, на яких ви не підписані diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 5b3b4fcce3..004e5dfdef 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -75,8 +75,25 @@ zh-TW: warn: 隱藏過濾內容於過濾器標題之警告後 form_admin_settings: backups_retention_period: 將已產生的使用者封存資料保存特定天數。 + bootstrap_timeline_accounts: 這些帳號將被釘選於新帳號跟隨推薦之上。 + closed_registrations_message: 於註冊關閉時顯示 content_cache_retention_period: 當設定成正值時,從其他伺服器而來的嘟文會於指定天數後被刪除。這項操作可能是不可逆的。 + custom_css: 您於 Mastodon 網頁版本中能套用客製化風格。 + mascot: 覆寫進階網頁介面中的圖例。 media_cache_retention_period: 當設定成正值時,已下載的多媒體檔案會於指定天數後被刪除,並且視需要重新下載。 + profile_directory: 個人資料目錄將會列出那些有選擇被發現的使用者。 + require_invite_text: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。 + site_contact_email: 其他人如何聯繫您關於法律或支援之諮詢。 + site_contact_username: 其他人如何於 Mastodon 上聯繫您。 + site_extended_description: 任何其他可能對訪客或使用者有用的額外資訊。可由 Markdown 語法撰寫。 + site_short_description: 一段有助於辨別您伺服器的簡短說明。例如:誰運行該伺服器、該伺服器是提供給哪些人群? + site_terms: 使用您自己的隱私權政策,或者保留空白以使用預設值。可由 Markdown 語法撰寫。 + site_title: 除了網域外,其他人該如何指稱您的伺服器。 + theme: 未登入之訪客或新使用者所見之佈景主題。 + thumbnail: 大約 2:1 圖片會顯示於您伺服器資訊之旁。 + timeline_preview: 未登入之訪客能夠瀏覽此伺服器上最新的公開嘟文。 + trendable_by_default: 跳過手動審核熱門內容。仍能在登上熱門趨勢後移除個別內容。 + trends: 熱門趨勢將顯示於您伺服器上正在吸引大量注意力的嘟文、主題標籤、或者新聞。 form_challenge: current_password: 您正要進入安全區域 imports: @@ -213,8 +230,28 @@ zh-TW: warn: 隱藏於警告之後 form_admin_settings: backups_retention_period: 使用者封存資料保留期間 + bootstrap_timeline_accounts: 永遠推薦這些帳號給新使用者 + closed_registrations_message: 當註冊關閉時的客製化訊息 content_cache_retention_period: 內容快取資料保留期間 + custom_css: 自訂 CSS + mascot: 自訂吉祥物 (legacy) media_cache_retention_period: 多媒體快取資料保留期間 + profile_directory: 啟用個人資料目錄 + registrations_mode: 誰能註冊 + require_invite_text: 要求「加入原因」 + show_domain_blocks: 顯示封鎖的網域 + show_domain_blocks_rationale: 顯示網域被封鎖之原因 + site_contact_email: 聯絡 e-mail + site_contact_username: 聯絡人帳號 + site_extended_description: 進階描述 + site_short_description: 伺服器描述 + site_terms: 隱私權政策 + site_title: 伺服器名稱 + theme: 預設佈景主題 + thumbnail: 伺服器縮圖 + timeline_preview: 允許未登入使用者瀏覽公開時間軸 + trendable_by_default: 允許熱門趨勢直接顯示,不需經過審核 + trends: 啟用熱門趨勢 interactions: must_be_follower: 封鎖非跟隨者的通知 must_be_following: 封鎖您未跟隨之使用者的通知 diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 9b7fc25d6d..e1b2ae99a6 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -435,70 +435,15 @@ sk: empty: Žiadne pravidlá servera ešte neboli určené. title: Serverové pravidlá settings: - activity_api_enabled: - desc_html: Sčítanie miestne uverejnených príspevkov, aktívnych užívateľov, a nových registrácii, v týždenných intervaloch - title: Vydať hromadné štatistiky o užívateľskej aktivite - bootstrap_timeline_accounts: - desc_html: Ak je prezývok viacero, každú oddeľ čiarkou. Tieto účty budú zobrazené v odporúčaniach na sledovanie - title: Štandardní následovníci nových užívateľov - contact_information: - email: Pracovný email - username: Kontaktné užívateľské meno - custom_css: - desc_html: Uprav vzhľad pomocou CSS, ktoré je načítané na každej stránke - title: Vlastné CSS - default_noindex: - desc_html: Ovplyvňuje všetkých užívateľov, ktorí si toto nasavenie nezmenili sami - title: Vyraď užívateľov z indexovania vyhľadávačmi, ako východzie nastavenie domain_blocks: all: Všetkým disabled: Nikomu - title: Ukáž blokované domény users: Prihláseným, miestnym užívateľom - domain_blocks_rationale: - title: Ukáž zdôvodnenie - mascot: - desc_html: Zobrazované na viacerých stránkach. Odporúčaná veľkosť aspoň 293×205px. Pokiaľ nieje nahraté, bude zobrazený základný maskot. - title: Obrázok maskota - peers_api_enabled: - desc_html: Domény, na ktoré tento server už v rámci fediversa natrafil - title: Zverejni zoznam objavených serverov - preview_sensitive_media: - desc_html: Náhľad odkazov z iných serverov, bude zobrazený aj vtedy, keď sú médiá označené ako chúlostivé - title: Ukazuj aj chúlostivé médiá v náhľadoch OpenGraph - profile_directory: - desc_html: Povoľ užívateľom, aby mohli byť nájdení - title: Zapni profilový katalóg - registrations: - closed_message: - desc_html: Toto sa zobrazí na hlavnej stránke v prípade, že sú registrácie uzavreté. Možno tu použiť aj HTML kód - title: Správa o uzavretých registráciách registrations_mode: modes: approved: Pre registráciu je nutné povolenie none: Nikto sa nemôže registrovať open: Ktokoľvek sa môže zaregistrovať - title: Režím registrácií - site_description: - desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Opíš, čo robí tento Mastodon server špecifickým, a ďalej hocičo iné, čo považuješ za dôležité. Môžeš použiť HTML kód, hlavne <a> a <em>. - title: Popis servera - site_description_extended: - desc_html: Toto je vhodné miesto pre tvoje pravidlá o prevádzke, pokyny, podmienky a iné veci, ktorými je tvoj server špecifický. Je možné tu používať HTML tagy - title: Vlastné doplňujúce informácie - site_short_description: - desc_html: Zobrazené na bočnom paneli a pri meta tagoch. Popíš čo je Mastodon, a čo robí tento server iným, v jednom paragrafe. Pokiaľ toto necháš prázdne, bude tu zobrazený základný popis servera. - title: Krátky popis serveru - site_title: Názov servera - thumbnail: - desc_html: Používané pre náhľady cez OpenGraph a API. Doporučuje sa rozlišenie 1200x630px - title: Miniatúra servera - timeline_preview: - desc_html: Zobraziť verejnú nástenku na hlavnej stránke - title: Náhľad nástenky - title: Nastavenia stránky - trends: - desc_html: Verejne zobraz už schválené haštagy, ktoré práve trendujú - title: Populárne haštagy site_uploads: delete: Vymaž nahratý súbor destroyed_msg: Nahratie bolo zo stránky úspešne vymazané! diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 7b160ae512..12a263d924 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -695,79 +695,39 @@ sl: empty: Zaenkrat še ni opredeljenih pravil. title: Pravila strežnika settings: - activity_api_enabled: - desc_html: Številke lokalno objavljenih objav, aktivnih uporabnikov in novih registracij na tedenskih seznamih - title: Objavi združeno statistiko o dejavnosti uporabnikov - bootstrap_timeline_accounts: - desc_html: Več uporabniških imen ločite z vejico. Deluje samo na lokalnih in odklenjenih računih. Privzeto, ko je prazno, je pri vseh lokalnih skrbnikih. - title: Privzeta sledenja za nove uporabnike - contact_information: - email: Poslovna e-pošta - username: Uporabniško ime stika - custom_css: - desc_html: Spremeni videz z naloženim CSS na vsaki strani - title: CSS po meri - default_noindex: - desc_html: Vpliva na vse uporabnike, ki niso sami spremenili te nastavitve - title: Privzeto izvzemi uporabnike iz indeksiranja iskalnika + about: + manage_rules: Upravljaj pravila strežnika + preamble: Podrobneje opišite, kako upravljate, moderirate in financirate strežnik. + rules_hint: Na voljo je poseben prostor za pravila, ki jih naj spoštujejo vaši uporabniki. + title: O programu + appearance: + preamble: Prilagodite spletni vmesnik Mastodona. + title: Videz + branding: + title: Blagovne znamke + content_retention: + preamble: Nazdor nad hrambo vsebine uporabnikov v Mastodonu. + title: Hramba vsebin + discovery: + follow_recommendations: Sledi priporočilom + preamble: Izpostavljanje zanimivih vsebin je ključno za pridobivanje novih uporabnikov, ki morda ne poznajo nikogar na Mastodonu. Nadzirajte, kako različne funkcionalnosti razkritja delujejo na vašem strežniku. + profile_directory: Imenik profilov + public_timelines: Javne časovnice + title: Razkrivanje + trends: Trendi domain_blocks: all: Vsem disabled: Nikomur - title: Domenske bloke pokaži users: Prijavljenim krajevnim uporabnikom - domain_blocks_rationale: - title: Pokaži razlago - mascot: - desc_html: Prikazano na več straneh. Priporočena je najmanj 293 × 205 px. Ko ni nastavljen, se vrne na privzeto maskoto - title: Slika maskote - peers_api_enabled: - desc_html: Domene, na katere je ta strežnik naletel na fediverse-u - title: Objavi seznam odkritih strežnikov - preview_sensitive_media: - desc_html: Predogledi povezav na drugih spletiščih bodo prikazali sličico, tudi če je medij označen kot občutljiv - title: Prikaži občutljive medije v predogledih OpenGraph - profile_directory: - desc_html: Dovoli uporabnikom, da jih lahko odkrijejo - title: Omogoči imenik profilov registrations: - closed_message: - desc_html: Prikazano na prvi strani, ko so registracije zaprte. Lahko uporabite oznake HTML - title: Sporočilo o zaprti registraciji - require_invite_text: - desc_html: Če registracije zahtevajo ročno potrditev, nastavite vnos besedila pod »Zakaj se želite pridružiti?« za obveznega - title: Zahteva, da novi uprorabniki navedejo razlog, zakaj se želijo registrirati + preamble: Nadzirajte, kdo lahko ustvari račun na vašem strežniku. + title: Registracije registrations_mode: modes: approved: Potrebna je odobritev za prijavo none: Nihče se ne more prijaviti open: Vsakdo se lahko prijavi - title: Način registracije - site_description: - desc_html: Uvodni odstavek na API-ju. Opišite, zakaj je ta Mastodon strežnik poseben in karkoli pomembnega. Lahko uporabite HTML oznake, zlasti <a> in <em>. - title: Opis strežnika - site_description_extended: - desc_html: Dober kraj za vaš kodeks ravnanja, pravila, smernice in druge stvari, ki ločujejo vaš strežnik. Lahko uporabite oznake HTML - title: Razširjene informacije po meri - site_short_description: - desc_html: Prikazano v stranski vrstici in metaoznakah. V enem odstavku opišite, kaj je Mastodon in kaj naredi ta strežnik poseben. - title: Kratek opis strežnika - site_terms: - desc_html: Napišete lahko svoj pravilnik o zasebnosti. Uporabite lahko značke HTML. - title: Pravilnik o zasebnosti po meri - site_title: Ime strežnika - thumbnail: - desc_html: Uporablja se za predogled prek OpenGrapha in API-ja. Priporočamo 1200x630px - title: Sličica strežnika - timeline_preview: - desc_html: Prikaži javno časovnico na ciljni strani - title: Predogled časovnice - title: Nastavitve strani - trendable_by_default: - desc_html: Določeno vsebino v trendu je še vedno možno izrecno prepovedati - title: Dovoli trende brez predhodnega pregleda - trends: - desc_html: Javno prikaži poprej pregledano vsebino, ki je trenutno v trendu - title: Trendi + title: Nastavitve strežnika site_uploads: delete: Izbriši naloženo datoteko destroyed_msg: Prenos na strežnik uspešno izbrisan! diff --git a/config/locales/sq.yml b/config/locales/sq.yml index eea76f2592..8010f49303 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -664,79 +664,15 @@ sq: empty: S’janë përcaktuar ende rregulla shërbyesi. title: Rregulla shërbyesi settings: - activity_api_enabled: - desc_html: Numër postimesh të postuara lokalisht, përdorues aktivë, dhe regjistrime të reja në kosha javorë - title: Botoni statistika përmbledhëse mbi veprimtarinë e përdoruesve te API - bootstrap_timeline_accounts: - desc_html: Emrat e përdoruesve ndajini prej njëri-tjetrit me presje. Për këto llogari do të garantohet shfaqja te rekomandime ndjekjeje - title: Rekomandoji këto llogari për përdorues të rinj - contact_information: - email: Email biznesi - username: Emër përdoruesi kontakti - custom_css: - desc_html: Ndryshojeni pamjen me CSS të ngarkuar në çdo faqe - title: CSS Vetjake - default_noindex: - desc_html: Prek krejt përdoruesi që s’e kanë ndryshuar vetë këtë rregullim - title: Lejo, si parazgjedhje, lënien e përdoruesve jashtë indeksimi nga motorë kërkimesh domain_blocks: all: Për këdo disabled: Për askënd - title: Shfaq bllokime përkatësish users: Për përdorues vendorë që kanë bërë hyrjen - domain_blocks_rationale: - title: Shfaq arsye - mascot: - desc_html: E shfaqur në faqe të shumta. Këshillohet të paktën 293x205. Kur nuk caktohet gjë, përdoret simboli parazgjedhje - title: Figurë simboli - peers_api_enabled: - desc_html: Emra përkatësish që ka hasur në fedivers ky shërbyes - title: Boto listë shërbyesish të gjetur - preview_sensitive_media: - desc_html: Në sajte të tjera, paraparjet e lidhjeve do të shfaqin një miniaturë, edhe pse medias i është vënë shenjë si rezervat - title: Shfaq në paraparje OpenGraph media me shenjën rezervat - profile_directory: - desc_html: Lejoju përdoruesve të jenë të zbulueshëm - title: Aktivizo drejtori profilesh - registrations: - closed_message: - desc_html: E shfaqur në faqen ballore, kur regjistrimet janë të mbyllura. Mund të përdorni etiketa HTML - title: Mesazh mbylljeje regjistrimesh - require_invite_text: - desc_html: Kur regjistrimet lypin miratim dorazi, tekstin e kërkesës për ftesë “Pse doni të merrni pjesë?” bëje të detyrueshëm, në vend se opsional - title: Kërkoju përdoruesve të rinj të plotësojnë doemos një tekst kërkese për ftesë registrations_mode: modes: approved: Për regjistrim, lypset miratimi none: S’mund të regjistrohet ndokush open: Mund të regjistrohet gjithkush - title: Mënyrë regjistrimi - site_description: - desc_html: Paragraf hyrës te faqja ballore. Përshkruani ç’e bën special këtë shërbyes Mastodon dhe çfarëdo gjëje tjetër të rëndësishme. Mund të përdorni etiketa HTML, veçanërisht <a> dhe <em>. - title: Përshkrim shërbyesi - site_description_extended: - desc_html: Një vend i mirë për kodin e sjelljes në shërbyesin tuaj, rregulla, udhëzime dhe gjëra të tjera që e bëjnë të veçantë këtë shërbyes. Mund të përdorni etiketa HTML - title: Informacion i zgjeruar vetjak - site_short_description: - desc_html: E shfaqur në anështyllë dhe etiketa meta. Përshkruani në një paragraf të vetëm ç’është Mastodon-i dhe ç’e bën special këtë shërbyes. Në u lëntë i zbrazët, për shërbyesin do të përdoret përshkrimi parazgjedhje. - title: Përshkrim i shkurtër shërbyesi - site_terms: - desc_html: Mund të shkruani rregullat tuaja të privatësisë. Mundeni të përdorni etiketa HTML - title: Rregulla vetjake privatësie - site_title: Emër shërbyesi - thumbnail: - desc_html: I përdorur për paraparje përmes OpenGraph-it dhe API-t. Këshillohet 1200x630px - title: Miniaturë shërbyesi - timeline_preview: - desc_html: Shfaqni lidhje te rrjedhë kohore publike në faqen hyrëse dhe lejoni te rrjedhë kohore publike hyrje API pa mirëfilltësim - title: Lejo në rrjedhë kohore publike hyrje pa mirëfilltësim - title: Rregullime sajti - trendable_by_default: - desc_html: Lënda specifike në modë prapë mund të ndalohet shprehimisht - title: Lejoni prirje pa shqyrtim paraprak - trends: - desc_html: Shfaqni publikisht hashtag-ë të shqyrtuar më parë që janë popullorë tani - title: Hashtag-ë popullorë tani site_uploads: delete: Fshi kartelën e ngarkuar destroyed_msg: Ngarkimi në sajt u fshi me sukses! diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 7506c4d4d9..0d4b6581df 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -145,31 +145,6 @@ sr-Latn: resolved: Rešeni title: Prijave unresolved: Nerešeni - settings: - bootstrap_timeline_accounts: - desc_html: Odvojite više korisničkih imena zarezom. Radi samo za lokalne i otključane naloge. Ako je prazno, onda se odnosi na sve lokalne administratore. - title: Nalozi za automatsko zapraćivanje za nove korisnike - contact_information: - email: Poslovna e-pošta - username: Kontakt korisničko ime - registrations: - closed_message: - desc_html: Prikazuje se na glavnoj strani kada je instanca zatvorena za registracije. Možete koristiti HTML tagove - title: Poruka o zatvorenoj registraciji - site_description: - desc_html: Uvodni pasus na naslovnoj strani i u meta HTML tagovima. Možete koristiti HTML tagove, konkretno <a> i <em>. - title: Opis instance - site_description_extended: - desc_html: Dobro mesto za vaš kod ponašanja, pravila, smernice i druge stvari po kojima se Vaša instanca razlikuje. Možete koristiti HTML tagove - title: Proizvoljne dodatne informacije - site_title: Ime instance - thumbnail: - desc_html: Koristi se za preglede kroz OpenGraph i API. Preporučuje se 1200x630px - title: Sličica instance - timeline_preview: - desc_html: Prikaži javnu lajnu na početnoj strani - title: Pregled lajne - title: Postavke sajta statuses: back_to_account: Nazad na stranu naloga media: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 89f8bc6317..36bd3ebf47 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -233,52 +233,6 @@ sr: unassign: Уклони доделу unresolved: Нерешене updated_at: Ажурирана - settings: - activity_api_enabled: - desc_html: Бројеви локално објављених статуса, активних корисника и нових регистрација по недељама - title: Објављуј агрегиране статистике о корисничким активностима - bootstrap_timeline_accounts: - desc_html: Одвојите више корисничких имена зарезом. Ради само за локалне и откључане налоге. Ако је празно, онда се односи на све локалне администраторе. - title: Налози за аутоматско запраћивање за нове кориснике - contact_information: - email: Пословна е-пошта - username: Контакт корисничко име - custom_css: - desc_html: Промени изглед на свакој страни када се CSS учита - title: Произвољни CSS - mascot: - desc_html: Приказано на више страна. Препоручено је бар 293×205px. Када није постављена, користи се подразумевана маскота - title: Слика маскоте - peers_api_enabled: - desc_html: Имена домена које је ова инстанца срела у федиверсу - title: Објављуј списак откривених инстанци - preview_sensitive_media: - desc_html: Преглед веза на другим веб страницама ће приказати иконицу чак и ако је медиј означен као осетљиво - title: Покажи осетљив медиј у ОпенГраф прегледу - profile_directory: - desc_html: Дозволи корисницима да буду откривени - title: Омогући директоријум налога - registrations: - closed_message: - desc_html: Приказује се на главној страни када је инстанца затворена за регистрације. Можете користити HTML тагове - title: Порука о затвореној регистрацији - site_description: - desc_html: Уводни пасус на насловној страни и у meta HTML таговима. Можете користити HTML тагове, конкретно <a> и <em>. - title: Опис инстанце - site_description_extended: - desc_html: Добро место за ваш код понашања, правила, смернице и друге ствари по којима се Ваша инстанца разликује. Можете користити HTML тагове - title: Произвољне додатне информације - site_short_description: - desc_html: Приказано у изборнику са стране и у мета ознакама. Опиши шта је Мастодон и шта чини овај сервер посебним у једном пасусу. Ако остане празно, вратиће се првобитни опис инстанце. - title: Кратак опис инстанце - site_title: Име инстанце - thumbnail: - desc_html: Користи се за прегледе кроз OpenGraph и API. Препоручује се 1200x630px - title: Сличица инстанце - timeline_preview: - desc_html: Прикажи јавну лајну на почетној страни - title: Преглед лајне - title: Поставке сајта statuses: back_to_account: Назад на страну налога media: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 8066252118..485fab59ce 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -449,69 +449,15 @@ sv: edit: Ändra regel title: Serverns regler settings: - activity_api_enabled: - desc_html: Räkning av lokalt postade statusar, aktiva användare och nyregistreringar per vecka - title: Publicera uppsamlad statistik om användaraktivitet - bootstrap_timeline_accounts: - desc_html: Separera flera användarnamn med kommatecken. Endast lokala och olåsta konton kommer att fungera. Standard när det är tomt och alla är lokala administratörer. - title: Standard att följa för nya användare - contact_information: - email: Företag E-post - username: Användarnamn för kontakt - custom_css: - desc_html: Ändra utseendet genom CSS laddat på varje sida - title: Anpassad CSS - default_noindex: - desc_html: Påverkar alla användare som inte har ändrat denna inställning själva - title: Undantag användare från sökmotorindexering som standard domain_blocks: all: Till alla disabled: För ingen - title: Visa domän-blockeringar users: För inloggade lokala användare - domain_blocks_rationale: - title: Visa motiv - mascot: - title: Maskot bild - peers_api_enabled: - desc_html: Domännamn denna instans har påträffat i fediverse - title: Publicera lista över upptäckta instanser - preview_sensitive_media: - title: Visa känsligt media i OpenGraph-förhandsvisningar - profile_directory: - desc_html: Tillåt användare att upptäckas - title: Aktivera profil-mapp - registrations: - closed_message: - desc_html: Visas på framsidan när registreringen är stängd. Du kan använda HTML-taggar - title: Stängt registreringsmeddelande - require_invite_text: - desc_html: När nyregistrering kräver manuellt godkännande, gör det obligatoriskt att fylla i text i fältet "Varför vill du gå med?" - title: Kräv att nya användare fyller i en inbjudningsförfrågan registrations_mode: modes: approved: Godkännande krävs för registrering none: Ingen kan registrera open: Alla kan registrera - title: Registreringsläge - site_description: - desc_html: Inledande stycke på framsidan och i metataggar. Du kan använda HTML-taggar, i synnerhet <a> och <em>. - title: Instansbeskrivning - site_description_extended: - desc_html: Ett bra ställe för din uppförandekod, regler, riktlinjer och andra saker som stämmer med din instans. Du kan använda HTML-taggar - title: Egentillverkad utökad information - site_short_description: - title: Kort beskrivning av servern - site_title: Namn på instans - thumbnail: - desc_html: Används för förhandsgranskningar via OpenGraph och API. 1200x630px rekommenderas - title: Instans tumnagelbild - timeline_preview: - desc_html: Visa offentlig tidslinje på landingsidan - title: Förhandsgranska tidslinje - title: Sidans inställningar - trends: - title: Trendande hashtaggar site_uploads: delete: Radera uppladdad fil statuses: diff --git a/config/locales/th.yml b/config/locales/th.yml index 123d2c3425..c4a83a048a 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -641,77 +641,34 @@ th: empty: ยังไม่ได้กำหนดกฎของเซิร์ฟเวอร์ title: กฎของเซิร์ฟเวอร์ settings: - activity_api_enabled: - desc_html: จำนวนโพสต์ที่เผยแพร่ในเซิร์ฟเวอร์, ผู้ใช้ที่ใช้งานอยู่ และการลงทะเบียนใหม่ในบักเก็ตรายสัปดาห์ - title: เผยแพร่สถิติรวมเกี่ยวกับกิจกรรมผู้ใช้ใน API - bootstrap_timeline_accounts: - desc_html: แยกหลายชื่อผู้ใช้ด้วยจุลภาค จะรับประกันว่าจะแสดงบัญชีเหล่านี้ในคำแนะนำการติดตาม - title: แนะนำบัญชีเหล่านี้ให้กับผู้ใช้ใหม่ - contact_information: - email: อีเมลธุรกิจ - username: ชื่อผู้ใช้ในการติดต่อ - custom_css: - desc_html: ปรับเปลี่ยนรูปลักษณ์ด้วย CSS ที่โหลดในทุกหน้า - title: CSS ที่กำหนดเอง - default_noindex: - desc_html: มีผลต่อผู้ใช้ทั้งหมดที่ไม่ได้เปลี่ยนการตั้งค่านี้ด้วยตนเอง - title: เลือกให้ผู้ใช้ไม่รับการทำดัชนีโดยเครื่องมือค้นหาเป็นค่าเริ่มต้น + about: + manage_rules: จัดการกฎของเซิร์ฟเวอร์ + title: เกี่ยวกับ + appearance: + preamble: ปรับแต่งส่วนติดต่อเว็บของ Mastodon + title: ลักษณะที่ปรากฏ + branding: + title: ตราสินค้า + content_retention: + title: การเก็บรักษาเนื้อหา + discovery: + follow_recommendations: คำแนะนำการติดตาม + profile_directory: ไดเรกทอรีโปรไฟล์ + public_timelines: เส้นเวลาสาธารณะ + title: การค้นพบ + trends: แนวโน้ม domain_blocks: all: ให้กับทุกคน disabled: ให้กับไม่มีใคร - title: แสดงการปิดกั้นโดเมน users: ให้กับผู้ใช้ในเซิร์ฟเวอร์ที่เข้าสู่ระบบ - domain_blocks_rationale: - title: แสดงคำชี้แจงเหตุผล - mascot: - desc_html: แสดงในหลายหน้า อย่างน้อย 293×205px ที่แนะนำ เมื่อไม่ได้ตั้ง กลับไปใช้มาสคอตเริ่มต้น - title: ภาพมาสคอต - peers_api_enabled: - desc_html: ชื่อโดเมนที่เซิร์ฟเวอร์นี้ได้พบในจักรวาลสหพันธ์ - title: เผยแพร่รายการเซิร์ฟเวอร์ที่ค้นพบใน API - preview_sensitive_media: - desc_html: การแสดงตัวอย่างลิงก์ในเว็บไซต์อื่น ๆ จะแสดงภาพขนาดย่อแม้ว่าจะมีการทำเครื่องหมายสื่อว่าละเอียดอ่อน - title: แสดงสื่อที่ละเอียดอ่อนในการแสดงตัวอย่าง OpenGraph - profile_directory: - desc_html: อนุญาตให้ผู้ใช้สามารถค้นพบได้ - title: เปิดใช้งานไดเรกทอรีโปรไฟล์ registrations: - closed_message: - desc_html: แสดงในหน้าแรกเมื่อปิดการลงทะเบียน คุณสามารถใช้แท็ก HTML - title: ข้อความการปิดการลงทะเบียน - require_invite_text: - title: ต้องให้ผู้ใช้ใหม่ป้อนเหตุผลที่จะเข้าร่วม + title: การลงทะเบียน registrations_mode: modes: approved: ต้องการการอนุมัติสำหรับการลงทะเบียน none: ไม่มีใครสามารถลงทะเบียน open: ใครก็ตามสามารถลงทะเบียน - title: โหมดการลงทะเบียน - site_description: - desc_html: ย่อหน้าเกริ่นนำใน API อธิบายถึงสิ่งที่ทำให้เซิร์ฟเวอร์ Mastodon นี้พิเศษและสิ่งอื่นใดที่สำคัญ คุณสามารถใช้แท็ก HTML โดยเฉพาะอย่างยิ่ง <a> และ <em> - title: คำอธิบายเซิร์ฟเวอร์ - site_description_extended: - desc_html: สถานที่ที่ดีสำหรับแนวทางปฏิบัติ, กฎ, หลักเกณฑ์ และสิ่งอื่น ๆ ของคุณที่ทำให้เซิร์ฟเวอร์ของคุณแตกต่าง คุณสามารถใช้แท็ก HTML - title: ข้อมูลแบบขยายที่กำหนดเอง - site_short_description: - desc_html: แสดงในแถบข้างและแท็กเมตา อธิบายว่า Mastodon คืออะไรและสิ่งที่ทำให้เซิร์ฟเวอร์นี้พิเศษในย่อหน้าเดียว - title: คำอธิบายเซิร์ฟเวอร์แบบสั้น - site_terms: - desc_html: คุณสามารถเขียนนโยบายความเป็นส่วนตัวของคุณเอง คุณสามารถใช้แท็ก HTML - title: นโยบายความเป็นส่วนตัวที่กำหนดเอง - site_title: ชื่อเซิร์ฟเวอร์ - thumbnail: - desc_html: ใช้สำหรับการแสดงตัวอย่างผ่าน OpenGraph และ API 1200x630px ที่แนะนำ - title: ภาพขนาดย่อเซิร์ฟเวอร์ - timeline_preview: - desc_html: แสดงลิงก์ไปยังเส้นเวลาสาธารณะในหน้าเริ่มต้นและอนุญาตการเข้าถึง API ไปยังเส้นเวลาสาธารณะโดยไม่มีการรับรองความถูกต้อง - title: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง - title: การตั้งค่าไซต์ - trendable_by_default: - title: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า - trends: - desc_html: แสดงเนื้อหาที่ตรวจทานแล้วก่อนหน้านี้ที่กำลังนิยมในปัจจุบันเป็นสาธารณะ - title: แนวโน้ม + title: การตั้งค่าเซิร์ฟเวอร์ site_uploads: delete: ลบไฟล์ที่อัปโหลด destroyed_msg: ลบการอัปโหลดไซต์สำเร็จ! @@ -864,7 +821,7 @@ th: advanced_web_interface: ส่วนติดต่อเว็บขั้นสูง animations_and_accessibility: ภาพเคลื่อนไหวและการช่วยการเข้าถึง confirmation_dialogs: กล่องโต้ตอบการยืนยัน - discovery: ค้นพบ + discovery: การค้นพบ localization: body: Mastodon ได้รับการแปลโดยอาสาสมัคร guide_link: https://crowdin.com/project/mastodon/th diff --git a/config/locales/tr.yml b/config/locales/tr.yml index f18ccd234f..5035c6ae6f 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -667,79 +667,15 @@ tr: empty: Henüz bir sunucu kuralı tanımlanmadı. title: Sunucu kuralları settings: - activity_api_enabled: - desc_html: Yerel olarak yayınlanan durumların, aktif kullanıcıların, ve haftalık kovalardaki yeni kayıtların sayısı - title: Kullanıcı etkinliği hakkında toplu istatistikler yayınlayın - bootstrap_timeline_accounts: - desc_html: Birden fazla kullanıcı adını virgülle ayırın. Yalnızca yerel ve kilitlenmemiş hesaplar geçerlidir. Boş olduğunda varsayılan tüm yerel yöneticilerdir. - title: Yeni kullanıcılar için varsayılan takipler - contact_information: - email: Herkese açık e-posta adresiniz - username: Bir kullanıcı adı giriniz - custom_css: - desc_html: Görünümü her sayfada yüklenecek CSS ile değiştirin - title: Özel CSS - default_noindex: - desc_html: Bu ayarı kendileri değiştirmeyen tüm kullanıcıları etkiler - title: Varsayılan olarak kullanıcıları arama motoru indekslemesinin dışında tut domain_blocks: all: Herkes için disabled: Hiç kimseye - title: Engellenen alan adlarını göster users: Oturum açan yerel kullanıcılara - domain_blocks_rationale: - title: Gerekçeyi göster - mascot: - desc_html: Birden fazla sayfada görüntülenir. En az 293x205px önerilir. Ayarlanmadığında, varsayılan maskot kullanılır - title: Maskot görseli - peers_api_enabled: - desc_html: Bu sunucunun fediverse'te karşılaştığı alan adları - title: Keşfedilen sunucuların listesini yayınla - preview_sensitive_media: - desc_html: Medya duyarlı olarak işaretlenmiş olsa bile, diğer web sitelerindeki bağlantı ön izlemeleri küçük resim gösterecektir - title: OpenGraph ön izlemelerinde hassas medyayı göster - profile_directory: - desc_html: Kullanıcıların keşfedilebilir olmasına izin ver - title: Profil dizinini etkinleştir - registrations: - closed_message: - desc_html: Kayıt alımları kapatıldığında ana sayfada görüntülenecek mesajdır.
    HTML etiketleri kullanabilirsiniz - title: Kayıt alımları kapatılma mesajı - require_invite_text: - desc_html: Kayıtlar elle doğrulama gerektiriyorsa, "Neden katılmak istiyorsunuz?" metin girdisini isteğe bağlı yerine zorunlu yapın - title: Yeni kullanıcıların katılmak için bir gerekçe sunmasını gerektir registrations_mode: modes: approved: Kayıt için onay gerekli none: Hiç kimse kayıt olamaz open: Herkes kaydolabilir - title: Kayıt modu - site_description: - desc_html: Ana sayfada paragraf olarak görüntülenecek bilgidir.
    Özellikle <a> ve <em> olmak suretiyle HTML etiketlerini kullanabilirsiniz. - title: Site açıklaması - site_description_extended: - desc_html: Harici bilgi sayfasında gösterilir.
    HTML etiketleri girebilirsiniz - title: Sunucu hakkında detaylı bilgi - site_short_description: - desc_html: Kenar çubuğunda ve meta etiketlerinde görüntülenir. Mastodon'un ne olduğunu ve bu sunucuyu özel kılan şeyleri tek bir paragrafta açıklayın. - title: Kısa sunucu açıklaması - site_terms: - desc_html: Kendi gizlilik politikanızı yazabilirsiniz. HTML etiketlerini kullanabilirsiniz - title: Özel gizlilik politikası - site_title: Site başlığı - thumbnail: - desc_html: OpenGraph ve API ile ön izlemeler için kullanılır. 1200x630px tavsiye edilir - title: Sunucu küçük resmi - timeline_preview: - desc_html: Açılış sayfasında genel zaman çizelgesini görüntüle - title: Zaman çizelgesi önizlemesi - title: Site Ayarları - trendable_by_default: - desc_html: Belirli öne çıkan içeriğe yine de açıkça izin verilmeyebilir - title: Ön inceleme yapmadan öne çıkmalara izin ver - trends: - desc_html: Şu anda trend olan ve daha önce incelenen etiketleri herkese açık olarak göster - title: Gündem etiketleri site_uploads: delete: Yüklenen dosyayı sil destroyed_msg: Site yüklemesi başarıyla silindi! diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 93c4724b48..0b7679eb10 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -695,79 +695,40 @@ uk: empty: Жодних правил сервера ще не визначено. title: Правила сервера settings: - activity_api_enabled: - desc_html: Кількість локальних постів, активних та нових користувачів у тижневих розрізах - title: Публікація агрегованої статистики про активність користувачів - bootstrap_timeline_accounts: - desc_html: Розділяйте імена користувачів комами. Працюватимуть тільки локальні і розблоковані облікові записи. Якщо порожньо, то типово це всі локальні адміністратори. - title: Типові підписки для нових користувачів - contact_information: - email: Введіть публічний email - username: Введіть ім'я користувача - custom_css: - desc_html: Відобразити вигляд, коли CSS завантажено для кожної сторінки - title: Користувацький CSS - default_noindex: - desc_html: Впливає на усіх користувачів, які не змінили це настроювання самостійно - title: Виключити користувачів з індексації пошуковими системами за замовчуванням + about: + manage_rules: Керувати правилами сервера + preamble: Надати детальну інформацію про те, як працює сервер, модерується та фінансується. + rules_hint: Виділена ділянка для правил, яких повинні дотримуватись ваші користувачі. + title: Про застосунок + appearance: + preamble: Налаштування вебінтерфейсу Mastodon. + title: Вигляд + branding: + preamble: Брендинг вашого сервера відрізняє його від інших серверів в мережі. Ця інформація може показуватися в різних середовищах, таких як вебінтерфейс Mastodon, застосунки, у попередньому перегляді посилань на інші вебсайти та в застосунках обміну повідомленнями. Тому краще, щоб ця інформація була чіткою, короткою та лаконічною. + title: Брендинг + content_retention: + preamble: Контролюйте, як зберігаються користувацькі матеріали в Mastodon. + title: Зберігання вмісту + discovery: + follow_recommendations: Поради щодо підписок + preamble: Показ цікавих матеріалів відіграє важливу роль у залученні нових користувачів, які, можливо, не знають нікого з Mastodon. Контролюйте роботу різних функцій виявлення на вашому сервері. + profile_directory: Каталог профілів + public_timelines: Публічна стрічка + title: Виявлення + trends: Популярні domain_blocks: all: Всi disabled: Нікого - title: Показати, які домени заблоковані users: Для авторизованих локальних користувачів - domain_blocks_rationale: - title: Обґрунтування - mascot: - desc_html: Зображується на декількох сторінках. Щонайменше 293×205 пікселів рекомендовано. Якщо не вказано, буде використано персонаж за замовчуванням - title: Талісман - peers_api_enabled: - desc_html: Доменні ім'я, які сервер знайшов у федесвіті - title: Опублікувати список знайдених серверів в API - preview_sensitive_media: - desc_html: Передпоказ посилання на інших сайтах буде відображати мініатюру навіть якщо медіа відмічене як дражливе - title: Показувати дражливе медіа у передпоказах OpenGraph - profile_directory: - desc_html: Дозволити користувачам бути видимими - title: Увімкнути каталог профілів registrations: - closed_message: - desc_html: Відображається на титульній сторінці, коли реєстрація закрита
    Можна використовувати HTML-теги - title: Повідомлення про закриту реєстрацію - require_invite_text: - desc_html: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим - title: Вимагати повідомлення причини приєднання від нових користувачів + preamble: Контролюйте, хто може створити обліковий запис на вашому сервері. + title: Реєстрації registrations_mode: modes: approved: Для входу потрібне схвалення none: Ніхто не може увійти open: Будь-хто може увійти - title: Режим реєстрації - site_description: - desc_html: Відображається у якості параграфа на титульній сторінці та використовується у якості мета-тега.
    Можна використовувати HTML-теги, особливо <a> і <em>. - title: Опис сервера - site_description_extended: - desc_html: Відображається на сторінці додаткової информації
    Можна використовувати HTML-теги - title: Розширений опис сайту - site_short_description: - desc_html: Відображається в бічній панелі та мета-тегах. Опишіть, що таке Mastodon і що робить цей сервер особливим, в одному абзаці. - title: Короткий опис сервера - site_terms: - desc_html: Ви можете писати власну політику конфіденційності самостійно. Ви можете використовувати HTML-теги - title: Особлива політика конфіденційності - site_title: Назва сайту - thumbnail: - desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів - title: Мініатюра сервера - timeline_preview: - desc_html: Показувати публічну стрічку на головній сторінці - title: Передпоказ фіду - title: Налаштування сайту - trendable_by_default: - desc_html: Конкретні популярні матеріали все одно можуть бути явно відхилені - title: Дозволити популярне без попереднього огляду - trends: - desc_html: Відображати розглянуті хештеґи, які популярні зараз - title: Популярні хештеги + title: Налаштування сервера site_uploads: delete: Видалити завантажений файл destroyed_msg: Завантаження сайту успішно видалено! diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 3252840ca9..50e5e5f354 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -653,79 +653,15 @@ vi: empty: Chưa có quy tắc máy chủ. title: Quy tắc máy chủ settings: - activity_api_enabled: - desc_html: Thu thập số lượng tút được đăng, người dùng hoạt động và người dùng đăng ký mới hàng tuần - title: Công khai số liệu thống kê về hoạt động người dùng trong API - bootstrap_timeline_accounts: - desc_html: Tách tên người dùng bằng dấu phẩy. Những người dùng này sẽ xuất hiện trong mục gợi ý theo dõi - title: Gợi ý theo dõi cho người dùng mới - contact_information: - email: Email liên hệ - username: Tên tài khoản liên hệ - custom_css: - desc_html: Sửa đổi giao diện với CSS trên mỗi trang - title: Tùy chỉnh CSS - default_noindex: - desc_html: Ảnh hưởng đến tất cả người dùng không tự thay đổi cài đặt này - title: Mặc định người dùng không xuất hiện trong công cụ tìm kiếm domain_blocks: all: Tới mọi người disabled: Không ai - title: Hiển thị khối miền users: Để đăng nhập người dùng cục bộ - domain_blocks_rationale: - title: Hiển thị lý do - mascot: - desc_html: Hiển thị trên nhiều trang. Kích cỡ tối thiểu 293 × 205px. Mặc định dùng linh vật Mastodon - title: Logo máy chủ - peers_api_enabled: - desc_html: Tên miền mà máy chủ này đã kết giao trong mạng liên hợp - title: Công khai danh sách những máy chủ đã khám phá trong API - preview_sensitive_media: - desc_html: Liên kết xem trước trên các trang web khác sẽ hiển thị hình thu nhỏ ngay cả khi phương tiện được đánh dấu là nhạy cảm - title: Hiển thị phương tiện nhạy cảm trong bản xem trước OpenGraph - profile_directory: - desc_html: Cho phép tìm kiếm người dùng - title: Cho phép hiện danh sách thành viên - registrations: - closed_message: - desc_html: Hiển thị trên trang chủ khi đăng ký được đóng lại. Bạn có thể viết bằng thẻ HTML - title: Thông điệp báo máy chủ đã ngừng đăng ký - require_invite_text: - desc_html: Khi chọn phê duyệt người dùng thủ công, hiện “Tại sao bạn muốn đăng ký?” thay cho tùy chọn nhập - title: Người đăng ký mới phải nhập mã mời tham gia registrations_mode: modes: approved: Yêu cầu phê duyệt để đăng ký none: Không ai có thể đăng ký open: Bất cứ ai cũng có thể đăng ký - title: Chế độ đăng ký - site_description: - desc_html: Nội dung giới thiệu về máy chủ. Mô tả những gì làm cho máy chủ Mastodon này đặc biệt và bất cứ điều gì quan trọng khác. Bạn có thể dùng các thẻ HTML, đặc biệt là <a><em>. - title: Mô tả máy chủ - site_description_extended: - desc_html: Bạn có thể tạo thêm các mục như quy định chung, hướng dẫn và những thứ khác liên quan tới máy chủ của bạn. Dùng thẻ HTML - title: Thông tin bổ sung - site_short_description: - desc_html: Hiển thị trong thanh bên và thẻ meta. Mô tả Mastodon là gì và điều gì làm cho máy chủ này trở nên đặc biệt trong một đoạn văn duy nhất. - title: Mô tả máy chủ ngắn - site_terms: - desc_html: Bạn có thể tự soạn chính sách bảo mật của riêng bạn. Sử dụng HTML - title: Sửa chính sách bảo mật - site_title: Tên máy chủ - thumbnail: - desc_html: Bản xem trước thông qua OpenGraph và API. Khuyến nghị 1200x630px - title: Hình thu nhỏ của máy chủ - timeline_preview: - desc_html: Hiển thị dòng thời gian công khai trên trang đích và cho phép API truy cập vào dòng thời gian công khai mà không cần cho phép - title: Cho phép truy cập vào dòng thời gian công cộng không cần cho phép - title: Cài đặt trang web - trendable_by_default: - desc_html: Nội dung xu hướng cụ thể vẫn có thể bị cấm một cách rõ ràng - title: Cho phép xu hướng mà không cần xem xét trước - trends: - desc_html: Hiển thị công khai các hashtag được xem xét trước đây hiện đang là xu hướng - title: Hashtag xu hướng site_uploads: delete: Xóa tập tin đã tải lên destroyed_msg: Đã xóa tập tin tải lên thành công! diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index 2da3b538c6..d29daf18c4 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -61,9 +61,6 @@ zgh: notes: delete: ⴽⴽⵙ status: ⴰⴷⴷⴰⴷ - settings: - site_title: ⵉⵙⵎ ⵏ ⵓⵎⴰⴽⴽⴰⵢ - title: ⵜⵉⵙⵖⴰⵍ ⵏ ⵡⴰⵙⵉⵜ statuses: media: title: ⵉⵙⵏⵖⵎⵉⵙⵏ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index fd6925a9fe..14c69415e2 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -651,79 +651,15 @@ zh-CN: empty: 尚未定义服务器规则。 title: 实例规则 settings: - activity_api_enabled: - desc_html: 本站一周内的嘟文数、活跃用户数以及新用户数 - title: 公开用户活跃度的统计数据 - bootstrap_timeline_accounts: - desc_html: 用半角逗号分隔多个用户名。这些账户一定会在推荐关注中展示。 - title: 新用户推荐关注 - contact_information: - email: 用于联系的公开电子邮件地址 - username: 用于联系的公开用户名 - custom_css: - desc_html: 通过 CSS 代码调整所有页面的显示效果 - title: 自定义 CSS - default_noindex: - desc_html: 影响所有尚未更改此设置的用户 - title: 默认不让用户被搜索引擎索引 domain_blocks: all: 对所有人 disabled: 不对任何人 - title: 查看域名屏蔽 users: 对本地已登录用户 - domain_blocks_rationale: - title: 显示理由 - mascot: - desc_html: 用于在首页展示。推荐分辨率 293×205px 以上。未指定的情况下将使用默认吉祥物。 - title: 吉祥物图像 - peers_api_enabled: - desc_html: 截至目前本服务器在联邦宇宙中已发现的域名 - title: 公开已知实例的列表 - preview_sensitive_media: - desc_html: 无论媒体文件是否标记为敏感内容,站外链接预览始终呈现为缩略图。 - title: 在 OpenGraph 预览中显示敏感媒体内容 - profile_directory: - desc_html: 允许用户被发现 - title: 启用用户目录 - registrations: - closed_message: - desc_html: 本站关闭注册期间的提示信息。可以使用 HTML 标签 - title: 关闭注册时的提示信息 - require_invite_text: - desc_html: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项 - title: 要求新用户填写申请注册的原因 registrations_mode: modes: approved: 注册时需要批准 none: 关闭注册 open: 开放注册 - title: 注册模式 - site_description: - desc_html: 首页上的介绍文字。 描述一下本 Mastodon 实例的特殊之处以及其他重要信息。可以使用 HTML 标签,包括 <a><em> 。 - title: 本站简介 - site_description_extended: - desc_html: 可以填写行为守则、规定、指南或其他本站特有的内容。可以使用 HTML 标签 - title: 本站详细介绍 - site_short_description: - desc_html: 会在在侧栏和元数据标签中显示。可以用一小段话描述 Mastodon 是什么,以及本服务器的特点。 - title: 服务器一句话介绍 - site_terms: - desc_html: 您可以写自己的隐私政策。您可以使用 HTML 标签 - title: 自定义隐私政策 - site_title: 本站名称 - thumbnail: - desc_html: 用于在 OpenGraph 和 API 中显示预览图。推荐分辨率 1200×630px - title: 本站缩略图 - timeline_preview: - desc_html: 在主页显示公共时间轴 - title: 时间轴预览 - title: 网站设置 - trendable_by_default: - desc_html: 特定的热门内容仍可以被明确地禁止 - title: 允许在未审查的情况下将话题置为热门 - trends: - desc_html: 公开显示先前已通过审核的当前热门话题 - title: 热门标签 site_uploads: delete: 删除已上传的文件 destroyed_msg: 站点上传的文件已经成功删除! diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 3724c4f4ca..acc6de3ade 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -453,73 +453,15 @@ zh-HK: empty: 尚未定義伺服器規則 title: 伺服器守則 settings: - activity_api_enabled: - desc_html: 本站的文章數量、活躍使用者數量、及每週新註冊使用者數量 - title: 公佈使用者活躍度的統計數據 - bootstrap_timeline_accounts: - desc_html: 以半形逗號分隔多個使用者名稱。只能加入來自本站且未開啟保護的帳號。如果留空,則默認關注本站所有管理員。 - title: 新使用者預設關注的對像 - contact_information: - email: 輸入一個公開的電郵地址 - username: 輸入使用者名稱 - custom_css: - desc_html: 透過 CSS 自訂每一頁的外觀 - title: 自訂 CSS - default_noindex: - desc_html: 影響所有未自行設定的帳號 - title: 預設帳號不在搜尋引擎索引之內 domain_blocks: all: 給任何人 disabled: 給沒有人 - title: 顯示封鎖的網域 users: 所有已登入的帳號 - domain_blocks_rationale: - title: 顯示原因予 - mascot: - desc_html: 在不同頁面顯示。推薦最小 293×205px。如果留空,就會默認為伺服器縮圖。 - title: 縮圖 - peers_api_enabled: - desc_html: 現時本服務站在網絡中已發現的域名 - title: 公開已知服務站的列表 - preview_sensitive_media: - desc_html: 在其他頁面預覽的連結將會在敏感媒體的情況下顯示縮圖 - title: 在 OpenGraph 預覽中顯示敏感媒體 - profile_directory: - desc_html: 允許使用者被搜尋 - title: 啟用個人資料目錄 - registrations: - closed_message: - desc_html: 當本站暫停接受註冊時,會顯示這個訊息。
    可使用 HTML - title: 暫停註冊訊息 - require_invite_text: - desc_html: 如果已設定為手動審核注冊,請把「加入的原因」設定為必填項目。 - title: 要求新用戶填寫注冊申請 registrations_mode: modes: approved: 註冊需要核准 none: 沒有人可註冊 open: 任何人皆能註冊 - title: 註冊模式 - site_description: - desc_html: 在首頁顯示,及在 meta 標籤使用作網站介紹。
    你可以在此使用 <a><em> 等 HTML 標籤。 - title: 本站介紹 - site_description_extended: - desc_html: 本站詳細資訊頁的內文
    你可以在此使用 HTML - title: 本站詳細資訊 - site_short_description: - desc_html: "顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫𩓙而出。" - title: 伺服器短描述 - site_title: 本站名稱 - thumbnail: - desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px - title: 本站縮圖 - timeline_preview: - desc_html: 在主頁顯示本站時間軸 - title: 時間軸預覽 - title: 網站設定 - trends: - desc_html: 公開地顯示已審核的標籤為今期流行 - title: 趨勢主題標籤 site_uploads: delete: 刪除上傳的檔案 destroyed_msg: 成功刪除站台的上傳項目! diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index a469b9369b..88fea4b769 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -655,79 +655,40 @@ zh-TW: empty: 未曾定義任何伺服器規則 title: 伺服器規則 settings: - activity_api_enabled: - desc_html: 本站使用者發佈的嘟文數量,以及本站的活躍使用者與一週內新使用者數量 - title: 公開使用者活躍度的統計數據 - bootstrap_timeline_accounts: - desc_html: 以半形逗號分隔多個使用者名稱。只能加入來自本站且未開啟保護的帳號。如果留空,則預設跟隨本站所有管理員。 - title: 新使用者預設跟隨 - contact_information: - email: 用於聯絡的公開電子信箱地址 - username: 請輸入使用者名稱 - custom_css: - desc_html: 透過於每個頁面都載入的 CSS 調整外觀 - title: 自訂 CSS - default_noindex: - desc_html: 影響所有沒有變更此設定的使用者 - title: 預設將使用者退出搜尋引擎索引 + about: + manage_rules: 管理伺服器規則 + preamble: 提供關於此伺服器如何運作、管理、及金援之供詳細資訊。 + rules_hint: 這是關於您的使用者應遵循規則之專有區域。 + title: 關於 + appearance: + preamble: 客製化 Mastodon 網頁介面。 + title: 外觀設定 + branding: + preamble: 您的伺服器品牌使之從聯邦宇宙網路中其他伺服器間凸顯自己。此資訊可能於各種不同的環境中顯示,例如 Mastodon 網頁介面、原生應用程式、其他網頁上的連結預覽或是其他通訊應用程式等等。因此,請盡可能保持此資訊簡潔明朗。 + title: 品牌化 + content_retention: + preamble: 控制使用者產生內容如何儲存於 Mastodon 上。 + title: 內容保留期間 + discovery: + follow_recommendations: 跟隨建議 + preamble: 呈現有趣的內容有助於 Mastodon 上一人不識的新手上路。控制各種不同的分類在您伺服器上如何被探索到。 + profile_directory: 個人檔案目錄 + public_timelines: 公開時間軸 + title: 探索 + trends: 熱門趨勢 domain_blocks: all: 給任何人 disabled: 給沒有人 - title: 顯示封鎖的網域 users: 套用至所有登入的本機使用者 - domain_blocks_rationale: - title: 顯示解釋原因 - mascot: - desc_html: 在許多頁面都會顯示。推薦最小 293x205px。如果留空,將採用預設的吉祥物 - title: 吉祥物圖片 - peers_api_enabled: - desc_html: 本伺服器在聯邦中發現的站點 - title: 發布已知伺服器的列表 - preview_sensitive_media: - desc_html: 連結來自其他網站的預覽將顯示於縮圖,即使這些媒體被標記為敏感 - title: 在 OpenGraph 預覽中顯示敏感媒體 - profile_directory: - desc_html: 允許能探索使用者 - title: 啟用個人資料目錄 registrations: - closed_message: - desc_html: 關閉註冊時顯示在首頁的內容,可使用 HTML 標籤 - title: 關閉註冊訊息 - require_invite_text: - desc_html: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。 - title: 要求新使用者填申請書以索取邀請 + preamble: 控制誰能於您伺服器上建立帳號。 + title: 註冊 registrations_mode: modes: approved: 註冊需要核准 none: 沒有人可註冊 open: 任何人皆能註冊 - title: 註冊模式 - site_description: - desc_html: 首頁上的介紹文字,描述此 Mastodon 伺服器的特別之處和其他重要資訊。可使用 HTML 標籤,包括 <a><em>。 - title: 伺服器描述 - site_description_extended: - desc_html: 可放置行為準則、規定以及其他此伺服器特有的內容。可使用 HTML 標籤 - title: 本站詳細資訊 - site_short_description: - desc_html: 顯示在側邊欄和網頁標籤 (meta tags)。以一段話描述 Mastodon 是甚麼,以及這個伺服器的特色。 - title: 伺服器短描述 - site_terms: - desc_html: 您可以撰寫自己的隱私權政策。您可以使用 HTML 標籤。 - title: 客製的隱私權政策 - site_title: 伺服器名稱 - thumbnail: - desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px - title: 伺服器縮圖 - timeline_preview: - desc_html: 在主頁顯示本站時間軸 - title: 時間軸預覽 - title: 網站設定 - trendable_by_default: - desc_html: 特定的熱門內容仍可以被明確地禁止 - title: 允許熱門話題直接顯示,不需經過審核 - trends: - desc_html: 公開目前炎上的已審核標籤 - title: 趨勢主題標籤 + title: 伺服器設定 site_uploads: delete: 刪除上傳的檔案 destroyed_msg: 成功刪除站台的上傳項目! From 5452af2188ba65c9f934280b65a2040c8cc9e718 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 23:37:58 +0200 Subject: [PATCH 088/500] Fix redirecting to `/publish` when compose form is visible in web UI (#19427) --- .../mastodon/features/compose/index.js | 30 +++++++------------ .../features/ui/components/compose_panel.js | 18 +++++++++-- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index 763c715de8..f744fc6115 100644 --- a/app/javascript/mastodon/features/compose/index.js +++ b/app/javascript/mastodon/features/compose/index.js @@ -4,14 +4,13 @@ import NavigationContainer from './containers/navigation_container'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; -import { mountCompose, unmountCompose } from '../../actions/compose'; +import { changeComposing, mountCompose, unmountCompose } from '../../actions/compose'; import { Link } from 'react-router-dom'; import { injectIntl, defineMessages } from 'react-intl'; import SearchContainer from './containers/search_container'; import Motion from '../ui/util/optional_motion'; import spring from 'react-motion/lib/spring'; import SearchResultsContainer from './containers/search_results_container'; -import { changeComposing } from '../../actions/compose'; import { openModal } from 'mastodon/actions/modal'; import elephantUIPlane from '../../../images/elephant_ui_plane.svg'; import { mascot } from '../../initial_state'; @@ -35,7 +34,7 @@ const messages = defineMessages({ const mapStateToProps = (state, ownProps) => ({ columns: state.getIn(['settings', 'columns']), - showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : ownProps.isSearchPage, + showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : false, }); export default @connect(mapStateToProps) @@ -47,24 +46,17 @@ class Compose extends React.PureComponent { columns: ImmutablePropTypes.list.isRequired, multiColumn: PropTypes.bool, showSearch: PropTypes.bool, - isSearchPage: PropTypes.bool, intl: PropTypes.object.isRequired, }; componentDidMount () { - const { isSearchPage } = this.props; - - if (!isSearchPage) { - this.props.dispatch(mountCompose()); - } + const { dispatch } = this.props; + dispatch(mountCompose()); } componentWillUnmount () { - const { isSearchPage } = this.props; - - if (!isSearchPage) { - this.props.dispatch(unmountCompose()); - } + const { dispatch } = this.props; + dispatch(unmountCompose()); } handleLogoutClick = e => { @@ -92,7 +84,7 @@ class Compose extends React.PureComponent { } render () { - const { multiColumn, showSearch, isSearchPage, intl } = this.props; + const { multiColumn, showSearch, intl } = this.props; if (multiColumn) { const { columns } = this.props; @@ -117,10 +109,10 @@ class Compose extends React.PureComponent { - {(multiColumn || isSearchPage) && } + {multiColumn && }
    - {!isSearchPage &&
    +
    @@ -128,9 +120,9 @@ class Compose extends React.PureComponent {
    -
    } +
    - + {({ x }) => (
    diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.js b/app/javascript/mastodon/features/ui/components/compose_panel.js index 1d481eab52..92d16b5b34 100644 --- a/app/javascript/mastodon/features/ui/components/compose_panel.js +++ b/app/javascript/mastodon/features/ui/components/compose_panel.js @@ -6,7 +6,7 @@ import ComposeFormContainer from 'mastodon/features/compose/containers/compose_f import NavigationContainer from 'mastodon/features/compose/containers/navigation_container'; import LinkFooter from './link_footer'; import ServerBanner from 'mastodon/components/server_banner'; -import { changeComposing } from 'mastodon/actions/compose'; +import { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose'; export default @connect() class ComposePanel extends React.PureComponent { @@ -20,11 +20,23 @@ class ComposePanel extends React.PureComponent { }; onFocus = () => { - this.props.dispatch(changeComposing(true)); + const { dispatch } = this.props; + dispatch(changeComposing(true)); } onBlur = () => { - this.props.dispatch(changeComposing(false)); + const { dispatch } = this.props; + dispatch(changeComposing(false)); + } + + componentDidMount () { + const { dispatch } = this.props; + dispatch(mountCompose()); + } + + componentWillUnmount () { + const { dispatch } = this.props; + dispatch(unmountCompose()); } render() { From 73de39e6323460792ef8982555e5cfdaefb5a29b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 23:38:08 +0200 Subject: [PATCH 089/500] Fix media, following and followers tabs in web UI (#19426) --- app/javascript/mastodon/features/account/navigation.js | 3 ++- app/javascript/mastodon/features/account_gallery/index.js | 3 ++- app/javascript/mastodon/features/followers/index.js | 3 ++- app/javascript/mastodon/features/following/index.js | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/account/navigation.js b/app/javascript/mastodon/features/account/navigation.js index 1226741395..eb9ff9a954 100644 --- a/app/javascript/mastodon/features/account/navigation.js +++ b/app/javascript/mastodon/features/account/navigation.js @@ -2,9 +2,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import FeaturedTags from 'mastodon/features/account/containers/featured_tags_container'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const mapStateToProps = (state, { match: { params: { acct } } }) => { - const accountId = state.getIn(['accounts_map', acct]); + const accountId = state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/mastodon/features/account_gallery/index.js b/app/javascript/mastodon/features/account_gallery/index.js index cc0bfa9baa..dc7556a9a5 100644 --- a/app/javascript/mastodon/features/account_gallery/index.js +++ b/app/javascript/mastodon/features/account_gallery/index.js @@ -16,9 +16,10 @@ import LoadMore from 'mastodon/components/load_more'; import MissingIndicator from 'mastodon/components/missing_indicator'; import { openModal } from 'mastodon/actions/modal'; import { FormattedMessage } from 'react-intl'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/mastodon/features/followers/index.js b/app/javascript/mastodon/features/followers/index.js index 5b7f402f8d..277eb702fb 100644 --- a/app/javascript/mastodon/features/followers/index.js +++ b/app/javascript/mastodon/features/followers/index.js @@ -21,9 +21,10 @@ import MissingIndicator from 'mastodon/components/missing_indicator'; import TimelineHint from 'mastodon/components/timeline_hint'; import LimitedAccountHint from '../account_timeline/components/limited_account_hint'; import { getAccountHidden } from 'mastodon/selectors'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/mastodon/features/following/index.js b/app/javascript/mastodon/features/following/index.js index 143082d760..e23d9b35cd 100644 --- a/app/javascript/mastodon/features/following/index.js +++ b/app/javascript/mastodon/features/following/index.js @@ -21,9 +21,10 @@ import MissingIndicator from 'mastodon/components/missing_indicator'; import TimelineHint from 'mastodon/components/timeline_hint'; import LimitedAccountHint from '../account_timeline/components/limited_account_hint'; import { getAccountHidden } from 'mastodon/selectors'; +import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { From 3ad0a2ae3dcd36e4a9e0be5f72273f9c30df7548 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 23:38:20 +0200 Subject: [PATCH 090/500] Fix language dropdown causing zoom on mobile devices in web UI (#19428) --- app/javascript/styles/mastodon/components.scss | 4 ---- app/javascript/styles/mastodon/emoji_picker.scss | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index cca29161a8..f6b34b5f37 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4810,10 +4810,6 @@ a.status-card.compact:hover { &:focus { background: lighten($ui-base-color, 4%); } - - @media screen and (max-width: 600px) { - font-size: 16px; - } } .search__icon { diff --git a/app/javascript/styles/mastodon/emoji_picker.scss b/app/javascript/styles/mastodon/emoji_picker.scss index 24061d2ca8..e4ec96d89f 100644 --- a/app/javascript/styles/mastodon/emoji_picker.scss +++ b/app/javascript/styles/mastodon/emoji_picker.scss @@ -111,7 +111,7 @@ position: relative; input { - font-size: 14px; + font-size: 16px; font-weight: 400; padding: 7px 9px; padding-right: 25px; From dd76bbf8b7aef3aed6bb27a5c093211eebcdb24b Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 24 Oct 2022 17:37:46 +0200 Subject: [PATCH 091/500] Fix WebUI notification settings for new user and new report notifications (#19436) Due to an error in operator priority, those settings would only show up if the user role included the all-encompassing `administrator` permission and would display `0` otherwise. --- .../features/notifications/components/column_settings.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index b1618c1b41..d75fa8a02f 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -170,7 +170,7 @@ export default class ColumnSettings extends React.PureComponent {
    - {(this.context.identity.permissions & PERMISSION_MANAGE_USERS === PERMISSION_MANAGE_USERS) && ( + {((this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) && (
    @@ -183,7 +183,7 @@ export default class ColumnSettings extends React.PureComponent {
    )} - {(this.context.identity.permissions & PERMISSION_MANAGE_REPORTS === PERMISSION_MANAGE_REPORTS) && ( + {((this.context.identity.permissions & PERMISSION_MANAGE_REPORTS) === PERMISSION_MANAGE_REPORTS) && (
    From 8046cf34d68209b39845e07a9d2db40926cc5512 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 24 Oct 2022 18:30:58 +0200 Subject: [PATCH 092/500] =?UTF-8?q?Change=20=E2=80=9CTranslate=E2=80=9D=20?= =?UTF-8?q?button=20to=20only=20show=20up=20when=20a=20translation=20backe?= =?UTF-8?q?nd=20is=20configured=20(#19434)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Change “Translate” button to only show up when a translation backend is configured Fixes #19346 * Add `translation` attribute to /api/v2/instance to expose whether the translation feature is enabled Fixes #19328 --- app/javascript/mastodon/components/status_content.js | 4 ++-- app/javascript/mastodon/initial_state.js | 2 ++ app/lib/translation_service.rb | 4 ++++ app/serializers/initial_state_serializer.rb | 1 + app/serializers/rest/instance_serializer.rb | 4 ++++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 6ad3e018a7..0ed79e6588 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -6,7 +6,7 @@ import Permalink from './permalink'; import classnames from 'classnames'; import PollContainer from 'mastodon/containers/poll_container'; import Icon from 'mastodon/components/icon'; -import { autoPlayGif, languages as preloadedLanguages } from 'mastodon/initial_state'; +import { autoPlayGif, languages as preloadedLanguages, translationEnabled } from 'mastodon/initial_state'; const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) @@ -181,7 +181,7 @@ class StatusContent extends React.PureComponent { const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); - const renderTranslate = this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && status.get('language') !== null && intl.locale !== status.get('language'); + const renderTranslate = translationEnabled && this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && status.get('language') !== null && intl.locale !== status.get('language'); const language = preloadedLanguages.find(lang => lang[0] === status.get('language')); const languageName = language ? language[2] : status.get('language'); diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index f9843f7f8b..bb05dafdf7 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -77,6 +77,7 @@ * @property {boolean} use_blurhash * @property {boolean=} use_pending_items * @property {string} version + * @property {boolean} translation_enabled */ /** @@ -125,6 +126,7 @@ export const unfollowModal = getMeta('unfollow_modal'); export const useBlurhash = getMeta('use_blurhash'); export const usePendingItems = getMeta('use_pending_items'); export const version = getMeta('version'); +export const translationEnabled = getMeta('translation_enabled'); export const languages = initialState?.languages; export default initialState; diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb index 526e26ae59..285f309393 100644 --- a/app/lib/translation_service.rb +++ b/app/lib/translation_service.rb @@ -17,6 +17,10 @@ class TranslationService end end + def self.configured? + ENV['DEEPL_API_KEY'].present? || ENV['LIBRE_TRANSLATE_ENDPOINT'].present? + end + def translate(_text, _source_language, _target_language) raise NotImplementedError end diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index ba446854c9..02e45a92e3 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -31,6 +31,7 @@ class InitialStateSerializer < ActiveModel::Serializer timeline_preview: Setting.timeline_preview, activity_api_enabled: Setting.activity_api_enabled, single_user_mode: Rails.configuration.x.single_user_mode, + translation_enabled: TranslationService.configured?, } if object.current_account diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 7d00b20ba0..606e7d8311 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -72,6 +72,10 @@ class REST::InstanceSerializer < ActiveModel::Serializer min_expiration: PollValidator::MIN_EXPIRATION, max_expiration: PollValidator::MAX_EXPIRATION, }, + + translation: { + enabled: TranslationService.configured?, + }, } end From 30453fab80d55fc10766f0e067c31d96753ccfda Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 24 Oct 2022 18:37:57 +0200 Subject: [PATCH 093/500] Add mention of the translation provider when translating a post (#19433) --- app/javascript/mastodon/components/status_content.js | 2 +- app/lib/translation_service/deepl.rb | 2 +- app/lib/translation_service/libre_translate.rb | 2 +- app/lib/translation_service/translation.rb | 2 +- app/serializers/rest/translation_serializer.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 0ed79e6588..56e8432b69 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -208,7 +208,7 @@ class StatusContent extends React.PureComponent { const translateButton = ( ); diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb index b75b604a81..537fd24c08 100644 --- a/app/lib/translation_service/deepl.rb +++ b/app/lib/translation_service/deepl.rb @@ -46,7 +46,7 @@ class TranslationService::DeepL < TranslationService raise UnexpectedResponseError unless json.is_a?(Hash) - Translation.new(text: json.dig('translations', 0, 'text'), detected_source_language: json.dig('translations', 0, 'detected_source_language')&.downcase) + Translation.new(text: json.dig('translations', 0, 'text'), detected_source_language: json.dig('translations', 0, 'detected_source_language')&.downcase, provider: 'DeepL.com') rescue Oj::ParseError raise UnexpectedResponseError end diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb index 8cf26f8684..43576e3062 100644 --- a/app/lib/translation_service/libre_translate.rb +++ b/app/lib/translation_service/libre_translate.rb @@ -37,7 +37,7 @@ class TranslationService::LibreTranslate < TranslationService raise UnexpectedResponseError unless json.is_a?(Hash) - Translation.new(text: json['translatedText'], detected_source_language: source_language) + Translation.new(text: json['translatedText'], detected_source_language: source_language, provider: 'LibreTranslate') rescue Oj::ParseError raise UnexpectedResponseError end diff --git a/app/lib/translation_service/translation.rb b/app/lib/translation_service/translation.rb index a55b825749..19318c7e9e 100644 --- a/app/lib/translation_service/translation.rb +++ b/app/lib/translation_service/translation.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class TranslationService::Translation < ActiveModelSerializers::Model - attributes :text, :detected_source_language + attributes :text, :detected_source_language, :provider end diff --git a/app/serializers/rest/translation_serializer.rb b/app/serializers/rest/translation_serializer.rb index a06f23f327..05ededc95c 100644 --- a/app/serializers/rest/translation_serializer.rb +++ b/app/serializers/rest/translation_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::TranslationSerializer < ActiveModel::Serializer - attributes :content, :detected_source_language + attributes :content, :detected_source_language, :provider def content object.text From 9757c917da1753a706c4cd9e191e77059620b022 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 18:47:04 +0200 Subject: [PATCH 094/500] Fix `nofollow` rel being removed in web UI (#19455) --- app/javascript/mastodon/components/status_content.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 56e8432b69..ff539268c2 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -61,9 +61,6 @@ class StatusContent extends React.PureComponent { link.setAttribute('title', link.href); link.classList.add('unhandled-link'); } - - link.setAttribute('target', '_blank'); - link.setAttribute('rel', 'noopener noreferrer'); } if (this.props.status.get('collapsed', null) === null) { From fcca781aae609067bc9e43ad4a466ef6d2074bbb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 18:47:21 +0200 Subject: [PATCH 095/500] Change design of translations in web UI (#19453) --- .../mastodon/components/status_content.js | 89 +++++++++++++------ .../styles/mastodon/components.scss | 12 ++- 2 files changed, 67 insertions(+), 34 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index ff539268c2..5e66c6fb31 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -10,6 +10,43 @@ import { autoPlayGif, languages as preloadedLanguages, translationEnabled } from const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) +class TranslateButton extends React.PureComponent { + + static propTypes = { + translation: ImmutablePropTypes.map, + onClick: PropTypes.func, + }; + + render () { + const { translation, onClick } = this.props; + + if (translation) { + const language = preloadedLanguages.find(lang => lang[0] === translation.get('detected_source_language')); + const languageName = language ? language[2] : translation.get('detected_source_language'); + const provider = translation.get('provider'); + + return ( +
    +
    + +
    + + +
    + ); + } + + return ( + + ); + } + +} + export default @injectIntl class StatusContent extends React.PureComponent { @@ -179,8 +216,6 @@ class StatusContent extends React.PureComponent { const renderReadMore = this.props.onClick && status.get('collapsed'); const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']); const renderTranslate = translationEnabled && this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && status.get('language') !== null && intl.locale !== status.get('language'); - const language = preloadedLanguages.find(lang => lang[0] === status.get('language')); - const languageName = language ? language[2] : status.get('language'); const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') }; const spoilerContent = { __html: status.get('spoilerHtml') }; @@ -191,22 +226,24 @@ class StatusContent extends React.PureComponent { 'status__content--collapsed': renderReadMore, }); - const showThreadButton = ( + const showThreadButton = renderViewThread && ( ); - const readMoreButton = ( + const readMoreButton = renderReadMore && ( ); - const translateButton = ( - + const translateButton = renderTranslate && ( + + ); + + const poll = !!status.get('poll') && ( + ); if (status.get('spoiler_text').length > 0) { @@ -236,35 +273,33 @@ class StatusContent extends React.PureComponent {
    - {!hidden && !!status.get('poll') && } - {!hidden && renderTranslate && translateButton} - {renderViewThread && showThreadButton} + {!hidden && poll} + {!hidden && translateButton} + {showThreadButton}
    ); } else if (this.props.onClick) { - const output = [ -
    -
    - - {!!status.get('poll') && } - {renderTranslate && translateButton} - {renderViewThread && showThreadButton} -
    , - ]; + return ( + <> +
    +
    - if (renderReadMore) { - output.push(readMoreButton); - } + {poll} + {translateButton} + {showThreadButton} +
    - return output; + {readMoreButton} + + ); } else { return (
    - {!!status.get('poll') && } - {renderTranslate && translateButton} - {renderViewThread && showThreadButton} + {poll} + {translateButton} + {showThreadButton}
    ); } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f6b34b5f37..15351d8503 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -24,7 +24,7 @@ display: block; font-size: 15px; line-height: 20px; - color: $ui-highlight-color; + color: $highlight-text-color; border: 0; background: transparent; padding: 0; @@ -969,15 +969,13 @@ } } -.status__content__edited-label { - display: block; - cursor: default; +.translate-button { + margin-top: 16px; font-size: 15px; line-height: 20px; - padding: 0; - padding-top: 8px; + display: flex; + justify-content: space-between; color: $dark-text-color; - font-weight: 500; } .status__content__spoiler-link { From 0ca29eaa3f762219cacce46059acfa71393533ad Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 19:02:21 +0200 Subject: [PATCH 096/500] Change layout of posts in web UI (#19423) --- app/javascript/mastodon/components/account.js | 2 +- app/javascript/mastodon/components/status.js | 14 +- .../mastodon/components/status_action_bar.js | 16 +- .../mastodon/components/status_content.js | 11 - .../account/components/featured_tags.js | 2 +- .../features/account/components/header.js | 31 +- .../features/compose/components/action_bar.js | 2 +- .../compose/components/navigation_bar.js | 2 +- .../features/status/components/action_bar.js | 3 +- .../status/components/detailed_status.js | 2 +- .../features/ui/components/actions_modal.js | 28 -- .../features/ui/components/boost_modal.js | 11 +- .../styles/mastodon/components.scss | 424 ++++++------------ 13 files changed, 193 insertions(+), 355 deletions(-) diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 36429e647d..92d14da8b0 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -136,7 +136,7 @@ class Account extends ImmutablePureComponent {
    -
    +
    {mute_expires_at}
    diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 381088be73..3106a3ecdb 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -386,6 +386,15 @@ class Status extends ImmutablePureComponent { account = status.get('account'); status = status.get('reblog'); + } else if (showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id'])) { + const display_name_html = { __html: status.getIn(['account', 'display_name_html']) }; + + prepend = ( +
    +
    + }} /> +
    + ); } if (pictureInPicture.get('inUse')) { @@ -481,7 +490,7 @@ class Status extends ImmutablePureComponent { } if (account === undefined || account === null) { - statusAvatar = ; + statusAvatar = ; } else { statusAvatar = ; } @@ -501,8 +510,6 @@ class Status extends ImmutablePureComponent { {prepend}
    -
    -
    @@ -522,7 +529,6 @@ class Status extends ImmutablePureComponent { status={status} onClick={this.handleClick} expanded={!status.get('hidden')} - showThread={showThread} onExpandedToggle={this.handleExpandedToggle} onTranslate={this.handleTranslate} collapsable diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 9e8cadce28..17150524e0 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -246,8 +246,9 @@ class StatusActionBar extends ImmutablePureComponent { render () { const { status, relationship, intl, withDismiss, withCounters, scrollKey } = this.props; + const { signedIn } = this.context.identity; - const anonymousAccess = !me; + const anonymousAccess = !signedIn; const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); const pinnableStatus = ['public', 'unlisted', 'private'].includes(status.get('visibility')); const mutingConversation = status.get('muted'); @@ -350,24 +351,25 @@ class StatusActionBar extends ImmutablePureComponent { } const shareButton = ('share' in navigator) && publicStatus && ( - + ); const filterButton = this.props.onFilter && ( - + ); return (
    - - - + + + + {shareButton} {filterButton} -
    +
    ); } else if (this.props.onClick) { @@ -286,7 +277,6 @@ class StatusContent extends React.PureComponent { {poll} {translateButton} - {showThreadButton}
    {readMoreButton} @@ -299,7 +289,6 @@ class StatusContent extends React.PureComponent { {poll} {translateButton} - {showThreadButton}
    ); } diff --git a/app/javascript/mastodon/features/account/components/featured_tags.js b/app/javascript/mastodon/features/account/components/featured_tags.js index 51be9a6092..8194c063a2 100644 --- a/app/javascript/mastodon/features/account/components/featured_tags.js +++ b/app/javascript/mastodon/features/account/components/featured_tags.js @@ -41,7 +41,7 @@ class FeaturedTags extends ImmutablePureComponent { name={featuredTag.get('name')} href={featuredTag.get('url')} to={`/@${account.get('acct')}/tagged/${featuredTag.get('name')}`} - uses={featuredTag.get('statuses_count')} + uses={featuredTag.get('statuses_count') * 1} withGraph={false} description={((featuredTag.get('statuses_count') * 1) > 0) ? intl.formatMessage(messages.lastStatusAt, { date: intl.formatDate(featuredTag.get('last_status_at'), { month: 'short', day: '2-digit' }) }) : intl.formatMessage(messages.empty)} /> diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 954cb0ee79..e39f0158ea 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -326,25 +326,26 @@ class Header extends ImmutablePureComponent { {!(suspended || hidden) && (
    - {fields.size > 0 && ( -
    - {fields.map((pair, i) => ( -
    -
    - -
    - {pair.get('verified_at') && } -
    -
    - ))} -
    - )} - {(account.get('id') !== me && signedIn) && } {account.get('note').length > 0 && account.get('note') !== '

    ' &&
    } -
    +
    +
    +
    +
    {intl.formatDate(account.get('created_at'), { year: 'numeric', month: 'short', day: '2-digit' })}
    +
    + + {fields.map((pair, i) => ( +
    +
    + +
    + {pair.get('verified_at') && } +
    +
    + ))} +
    diff --git a/app/javascript/mastodon/features/compose/components/action_bar.js b/app/javascript/mastodon/features/compose/components/action_bar.js index 4ff0b7b94b..ceed928bf5 100644 --- a/app/javascript/mastodon/features/compose/components/action_bar.js +++ b/app/javascript/mastodon/features/compose/components/action_bar.js @@ -56,7 +56,7 @@ class ActionBar extends React.PureComponent { return (
    - +
    ); diff --git a/app/javascript/mastodon/features/compose/components/navigation_bar.js b/app/javascript/mastodon/features/compose/components/navigation_bar.js index e6ba7d8b73..372765ca4d 100644 --- a/app/javascript/mastodon/features/compose/components/navigation_bar.js +++ b/app/javascript/mastodon/features/compose/components/navigation_bar.js @@ -21,7 +21,7 @@ export default class NavigationBar extends ImmutablePureComponent {
    {this.props.account.get('acct')} - +
    diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 2e240c4147..a0a6a78943 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -287,9 +287,10 @@ class ActionBar extends React.PureComponent {
    - {shareButton}
    + {shareButton} +
    diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index 320a847f7a..1a2aab8192 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -262,7 +262,7 @@ class DetailedStatus extends ImmutablePureComponent {
    -
    +
    diff --git a/app/javascript/mastodon/features/ui/components/actions_modal.js b/app/javascript/mastodon/features/ui/components/actions_modal.js index 875b2b75d7..67be69d436 100644 --- a/app/javascript/mastodon/features/ui/components/actions_modal.js +++ b/app/javascript/mastodon/features/ui/components/actions_modal.js @@ -2,10 +2,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import StatusContent from '../../../components/status_content'; -import Avatar from '../../../components/avatar'; -import RelativeTimestamp from '../../../components/relative_timestamp'; -import DisplayName from '../../../components/display_name'; import IconButton from '../../../components/icon_button'; import classNames from 'classnames'; @@ -38,32 +34,8 @@ export default class ActionsModal extends ImmutablePureComponent { } render () { - const status = this.props.status && ( -
    - - - -
    - ); - return (
    - {status} -
      {this.props.actions.map(this.renderAction)}
    diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.js b/app/javascript/mastodon/features/ui/components/boost_modal.js index ab87ee4276..d7a6d711ea 100644 --- a/app/javascript/mastodon/features/ui/components/boost_modal.js +++ b/app/javascript/mastodon/features/ui/components/boost_modal.js @@ -97,12 +97,11 @@ class BoostModal extends ImmutablePureComponent {
    -
    -
    - - - -
    +
    + + + +
    diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 15351d8503..633b9ed703 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -367,7 +367,7 @@ } .compose-form { - padding: 10px; + padding: 15px; &__sensitive-button { padding: 10px; @@ -714,7 +714,7 @@ .compose-form__publish-button-wrapper { overflow: hidden; - padding-top: 10px; + padding-top: 15px; } } } @@ -808,7 +808,7 @@ .reply-indicator__content { position: relative; font-size: 15px; - line-height: 20px; + line-height: 22px; word-wrap: break-word; font-weight: 400; overflow: hidden; @@ -955,12 +955,12 @@ .status__content__read-more-button { display: block; font-size: 15px; - line-height: 20px; + line-height: 22px; color: $highlight-text-color; border: 0; background: transparent; padding: 0; - padding-top: 8px; + padding-top: 16px; text-decoration: none; &:hover, @@ -972,7 +972,7 @@ .translate-button { margin-top: 16px; font-size: 15px; - line-height: 20px; + line-height: 22px; display: flex; justify-content: space-between; color: $dark-text-color; @@ -1022,11 +1022,6 @@ } } -.status__prepend-icon-wrapper { - left: -26px; - position: absolute; -} - .focusable { &:focus { outline: 0; @@ -1040,19 +1035,11 @@ } .status { - padding: 8px 10px; - padding-left: 68px; - position: relative; + padding: 16px; min-height: 54px; border-bottom: 1px solid lighten($ui-base-color, 8%); cursor: auto; - @supports (-ms-overflow-style: -ms-autohiding-scrollbar) { - // Add margin to avoid Edge auto-hiding scrollbar appearing over content. - // On Edge 16 this is 16px and Edge <=15 it's 12px, so aim for 16px. - padding-right: 26px; // 10px + 16px - } - @keyframes fade { 0% { opacity: 0; } 100% { opacity: 1; } @@ -1061,9 +1048,11 @@ opacity: 1; animation: fade 150ms linear; + .media-gallery, .video-player, - .audio-player { - margin-top: 8px; + .audio-player, + .attachment-list { + margin-top: 16px; } &.light { @@ -1091,7 +1080,7 @@ color: $highlight-text-color; } - a.status__content__spoiler-link { + &__spoiler-link { color: $primary-text-color; background: $ui-primary-color; @@ -1104,7 +1093,16 @@ } } -.status__relative-time, +.status__relative-time { + display: block; + font-size: 15px; + line-height: 22px; + height: 40px; + order: 2; + flex: 0 0 auto; + color: $dark-text-color; +} + .notification__relative_time { color: $dark-text-color; float: right; @@ -1121,13 +1119,36 @@ } .status__info .status__display-name { - display: block; max-width: 100%; - padding-right: 25px; + display: flex; + font-size: 15px; + line-height: 22px; + align-items: center; + gap: 10px; + overflow: hidden; + + .display-name { + bdi { + overflow: hidden; + text-overflow: ellipsis; + } + + &__account { + white-space: nowrap; + display: block; + overflow: hidden; + text-overflow: ellipsis; + } + } } .status__info { font-size: 15px; + margin-bottom: 10px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; } .status-check-box__status { @@ -1166,12 +1187,14 @@ } .status__prepend { - margin-left: 68px; + padding: 16px; + padding-bottom: 0; + display: flex; + gap: 10px; + font-size: 15px; + line-height: 22px; + font-weight: 500; color: $dark-text-color; - padding: 8px 0; - padding-bottom: 2px; - font-size: 14px; - position: relative; .status__display-name strong { color: $dark-text-color; @@ -1185,22 +1208,11 @@ } .status__action-bar { - align-items: center; display: flex; - margin-top: 8px; -} - -.status__action-bar-button { - margin-right: 18px; - - &.icon-button--with-counter { - margin-right: 14px; - } -} - -.status__action-bar-dropdown { - height: 23.15px; - width: 23.15px; + justify-content: space-between; + align-items: center; + gap: 18px; + margin-top: 16px; } .detailed-status__action-bar-dropdown { @@ -1213,7 +1225,7 @@ .detailed-status { background: lighten($ui-base-color, 4%); - padding: 14px 10px; + padding: 16px; &--flex { display: flex; @@ -1243,14 +1255,15 @@ } } + .media-gallery, .video-player, .audio-player { - margin-top: 8px; + margin-top: 16px; } } .detailed-status__meta { - margin-top: 15px; + margin-top: 16px; color: $dark-text-color; font-size: 14px; line-height: 18px; @@ -1312,7 +1325,7 @@ } .account { - padding: 10px; + padding: 16px; border-bottom: 1px solid lighten($ui-base-color, 8%); &.compact { @@ -1326,7 +1339,9 @@ .account__display-name { flex: 1 1 auto; - display: block; + display: flex; + align-items: center; + gap: 10px; color: $darker-text-color; overflow: hidden; text-decoration: none; @@ -1359,12 +1374,7 @@ .account__wrapper { display: flex; -} - -.account__avatar-wrapper { - float: left; - margin-left: 12px; - margin-right: 12px; + gap: 10px; } .account__avatar { @@ -1372,9 +1382,6 @@ display: block; position: relative; - width: 36px; - height: 36px; - background-size: 36px 36px; &-inline { display: inline-block; @@ -1414,7 +1421,7 @@ a .account__avatar { } .account__avatar-overlay { - @include avatar-size(48px); + @include avatar-size(46px); position: relative; @@ -1615,10 +1622,13 @@ a.account__display-name { } .detailed-status__display-name { - color: $secondary-text-color; - display: block; - line-height: 24px; - margin-bottom: 15px; + color: $darker-text-color; + display: flex; + align-items: center; + gap: 10px; + font-size: 15px; + line-height: 22px; + margin-bottom: 16px; overflow: hidden; strong, @@ -1629,31 +1639,13 @@ a.account__display-name { } strong { - font-size: 16px; color: $primary-text-color; } } -.detailed-status__display-avatar { - float: left; - margin-right: 10px; -} - .status__avatar { - height: 48px; - left: 10px; - position: absolute; - top: 10px; - width: 48px; -} - -.status__expand { - width: 68px; - position: absolute; - left: 0; - top: 0; - height: 100%; - cursor: pointer; + width: 46px; + height: 46px; } .muted { @@ -1684,40 +1676,52 @@ a.account__display-name { } .notification__report { - padding: 8px 10px; - padding-left: 68px; - position: relative; + padding: 16px; border-bottom: 1px solid lighten($ui-base-color, 8%); - min-height: 54px; + display: flex; + gap: 10px; + + &__avatar { + flex: 0 0 auto; + } &__details { + flex: 1 1 auto; display: flex; justify-content: space-between; align-items: center; color: $darker-text-color; + gap: 10px; font-size: 15px; line-height: 22px; + white-space: nowrap; + overflow: hidden; + + & > div { + overflow: hidden; + text-overflow: ellipsis; + } strong { font-weight: 500; } } - &__avatar { - position: absolute; - left: 10px; - top: 10px; + &__actions { + flex: 0 0 auto; } } .notification__message { - margin: 0 10px 0 68px; - padding: 8px 0 0; + padding: 16px; + padding-bottom: 0; cursor: default; color: $darker-text-color; font-size: 15px; line-height: 22px; - position: relative; + font-weight: 500; + display: flex; + gap: 10px; .fa { color: $highlight-text-color; @@ -1731,9 +1735,6 @@ a.account__display-name { } .notification__favourite-icon-wrapper { - left: -26px; - position: absolute; - .star-icon { color: $gold-star; } @@ -1767,15 +1768,10 @@ a.account__display-name { text-decoration: none; &:hover { - color: $primary-text-color; text-decoration: underline; } } -.notification__relative_time { - float: right; -} - .display-name { display: block; max-width: 100%; @@ -1788,10 +1784,6 @@ a.account__display-name { font-weight: 500; } -.display-name__account { - font-size: 14px; -} - .status__relative-time, .detailed-status__datetime { &:hover { @@ -1860,11 +1852,12 @@ a.account__display-name { } .navigation-bar { - padding: 10px; + padding: 15px; display: flex; align-items: center; flex-shrink: 0; cursor: default; + gap: 10px; color: $darker-text-color; strong { @@ -1899,9 +1892,7 @@ a.account__display-name { .navigation-bar__profile { flex: 1 1 auto; - margin-left: 8px; line-height: 20px; - margin-top: -1px; overflow: hidden; } @@ -2466,101 +2457,6 @@ $ui-header-height: 55px; padding: 10px 0; padding-top: 0; } - - .detailed-status { - padding: 15px; - - .media-gallery, - .video-player, - .audio-player { - margin-top: 15px; - } - } - - .account__header__bar { - padding: 5px 10px; - } - - .navigation-bar, - .compose-form { - padding: 15px; - } - - .compose-form .compose-form__publish .compose-form__publish-button-wrapper { - padding-top: 15px; - } - - .notification__report { - padding: 15px 15px 15px (48px + 15px * 2); - min-height: 48px + 2px; - - &__avatar { - left: 15px; - top: 17px; - } - } - - .status { - padding: 15px 15px 15px (48px + 15px * 2); - min-height: 48px + 2px; - - &__avatar { - left: 15px; - top: 17px; - } - - &__content { - padding-top: 5px; - } - - &__prepend { - margin-left: 48px + 15px * 2; - padding-top: 15px; - } - - &__prepend-icon-wrapper { - left: -32px; - } - - .media-gallery, - &__action-bar, - .video-player, - .audio-player { - margin-top: 10px; - } - } - - .account { - padding: 15px 10px; - - &__header__bio { - margin: 0 -10px; - } - } - - .notification { - &__message { - margin-left: 48px + 15px * 2; - padding-top: 15px; - } - - &__favourite-icon-wrapper { - left: -32px; - } - - .status { - padding-top: 8px; - } - - .account { - padding-top: 8px; - } - - .account__avatar-wrapper { - margin-left: 17px; - margin-right: 15px; - } - } } @media screen and (min-width: $no-gap-breakpoint) { @@ -2805,10 +2701,7 @@ $ui-header-height: 55px; } .navigation-bar { - padding-top: 20px; - padding-bottom: 20px; flex: 0 1 48px; - min-height: 20px; } .compose-form { @@ -5303,24 +5196,6 @@ a.status-card.compact:hover { width: 480px; position: relative; flex-direction: column; - - .status__display-name { - display: block; - max-width: 100%; - padding-right: 25px; - } - - .status__avatar { - height: 28px; - left: 10px; - position: absolute; - top: 10px; - width: 48px; - } - - .status__content__spoiler-link { - color: lighten($secondary-text-color, 8%); - } } .actions-modal { @@ -5352,9 +5227,9 @@ a.status-card.compact:hover { .block-modal__action-bar { display: flex; justify-content: space-between; + align-items: center; background: $ui-secondary-color; - padding: 10px; - line-height: 36px; + padding: 15px; & > div { flex: 1 1 auto; @@ -5368,15 +5243,6 @@ a.status-card.compact:hover { } } -.boost-modal__status-header { - font-size: 15px; -} - -.boost-modal__status-time { - float: right; - font-size: 14px; -} - .mute-modal, .block-modal { line-height: 24px; @@ -5988,7 +5854,7 @@ a.status-card.compact:hover { font-size: 14px; border: 1px solid lighten($ui-base-color, 8%); border-radius: 4px; - margin-top: 14px; + margin-top: 16px; overflow: hidden; &__icon { @@ -6034,7 +5900,6 @@ a.status-card.compact:hover { &.compact { border: 0; - margin-top: 4px; .attachment-list__list { padding: 0; @@ -7177,6 +7042,7 @@ noscript { .account__header { overflow: hidden; + background: lighten($ui-base-color, 4%); &.inactive { opacity: 0.5; @@ -7210,8 +7076,7 @@ noscript { &__bar { position: relative; - background: lighten($ui-base-color, 4%); - padding: 5px; + padding: 0 20px; border-bottom: 1px solid lighten($ui-base-color, 12%); .avatar { @@ -7230,8 +7095,8 @@ noscript { &__tabs { display: flex; align-items: flex-start; - padding: 7px 10px; margin-top: -55px; + padding-top: 10px; &__buttons { display: flex; @@ -7249,7 +7114,8 @@ noscript { } &__name { - padding: 5px 10px; + margin-top: 16px; + margin-bottom: 16px; .account-role { vertical-align: top; @@ -7261,17 +7127,17 @@ noscript { } h1 { - font-size: 16px; - line-height: 24px; + font-size: 17px; + line-height: 22px; color: $primary-text-color; - font-weight: 500; + font-weight: 700; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; small { display: block; - font-size: 14px; + font-size: 15px; color: $darker-text-color; font-weight: 400; overflow: hidden; @@ -7286,34 +7152,41 @@ noscript { } &__bio { - overflow: hidden; - margin: 0 -5px; - .account__header__content { - padding: 20px 15px; - padding-bottom: 5px; color: $primary-text-color; + } - .columns-area--mobile & { - padding-left: 20px; - padding-right: 20px; + .account__header__fields { + margin: 0; + margin-top: 16px; + border-radius: 4px; + background: darken($ui-base-color, 4%); + border: 0; + + dl { + display: block; + padding: 11px 16px; + border-bottom-color: lighten($ui-base-color, 4%); } - } - .account__header__joined { - font-size: 14px; - padding: 5px 15px; - color: $darker-text-color; + dd, + dt { + font-size: 13px; + line-height: 18px; + padding: 0; + text-align: initial; + } - .columns-area--mobile & { - padding-left: 20px; - padding-right: 20px; + dt { + width: auto; + background: transparent; + text-transform: uppercase; + color: $dark-text-color; } - } - .account__header__fields { - margin: 0; - border-top: 1px solid lighten($ui-base-color, 12%); + dd { + color: $darker-text-color; + } a { color: lighten($ui-highlight-color, 8%); @@ -7330,12 +7203,14 @@ noscript { } &__extra { - margin-top: 4px; + margin-top: 16px; &__links { font-size: 14px; color: $darker-text-color; - padding: 10px 0; + margin: 0 -10px; + padding-top: 16px; + padding-bottom: 10px; a { display: inline-block; @@ -7353,17 +7228,10 @@ noscript { } &__account-note { - padding: 15px; - padding-bottom: 10px; color: $primary-text-color; font-size: 14px; font-weight: 400; - border-bottom: 1px solid lighten($ui-base-color, 12%); - - .columns-area--mobile & { - padding-left: 20px; - padding-right: 20px; - } + margin-bottom: 10px; label { display: block; From 267978d4fe0eaee92f64d505df2a4a07d22f582c Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 25 Oct 2022 19:03:16 +0200 Subject: [PATCH 097/500] Remove navigation links to /explore when trends are disabled (#19415) * Remove navigation links to /explore when trends are disabled * Do not display trends interface when trends are disabled --- app/javascript/mastodon/features/explore/index.js | 3 ++- .../mastodon/features/getting_started/index.js | 10 +++++++++- .../features/ui/components/navigation_panel.js | 10 ++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.js index 1c7049e97d..552def142d 100644 --- a/app/javascript/mastodon/features/explore/index.js +++ b/app/javascript/mastodon/features/explore/index.js @@ -12,6 +12,7 @@ import Suggestions from './suggestions'; import Search from 'mastodon/features/compose/containers/search_container'; import SearchResults from './results'; import { Helmet } from 'react-helmet'; +import { showTrends } from 'mastodon/initial_state'; const messages = defineMessages({ title: { id: 'explore.title', defaultMessage: 'Explore' }, @@ -20,7 +21,7 @@ const messages = defineMessages({ const mapStateToProps = state => ({ layout: state.getIn(['meta', 'layout']), - isSearching: state.getIn(['search', 'submitted']), + isSearching: state.getIn(['search', 'submitted']) || !showTrends, }); export default @connect(mapStateToProps) diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index f002ffc774..fc91070d1a 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -95,7 +95,15 @@ class GettingStarted extends ImmutablePureComponent { navItems.push( , - , + ); + + if (showTrends) { + navItems.push( + , + ); + } + + navItems.push( , , ); diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 10678f7d8c..4e9e39e2f5 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; import Logo from 'mastodon/components/logo'; -import { timelinePreview } from 'mastodon/initial_state'; +import { timelinePreview, showTrends } from 'mastodon/initial_state'; import ColumnLink from './column_link'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; @@ -24,6 +24,7 @@ const messages = defineMessages({ preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, followsAndFollowers: { id: 'navigation_bar.follows_and_followers', defaultMessage: 'Follows and followers' }, about: { id: 'navigation_bar.about', defaultMessage: 'About' }, + search: { id: 'navigation_bar.search', defaultMessage: 'Search' }, }); export default @injectIntl @@ -57,7 +58,12 @@ class NavigationPanel extends React.Component { )} - + {showTrends ? ( + + ) : ( + + )} + {(signedIn || timelinePreview) && ( <> From 6f01111863bfb15b3574c95c8d60d59ae1d79772 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 21:43:33 +0200 Subject: [PATCH 098/500] Fix wrong size of avatars in admin UI (#19457) --- app/helpers/home_helper.rb | 2 +- app/javascript/styles/mastodon/widgets.scss | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/helpers/home_helper.rb b/app/helpers/home_helper.rb index 4da68500a1..f41104709e 100644 --- a/app/helpers/home_helper.rb +++ b/app/helpers/home_helper.rb @@ -23,7 +23,7 @@ module HomeHelper else link_to(path || ActivityPub::TagManager.instance.url_for(account), class: 'account__display-name') do content_tag(:div, class: 'account__avatar-wrapper') do - image_tag(full_asset_url(current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url), class: 'account__avatar') + image_tag(full_asset_url(current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url), class: 'account__avatar', width: 46, height: 46) end + content_tag(:span, class: 'display-name') do content_tag(:bdi) do diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss index 260a97c6d2..0e39dc87b4 100644 --- a/app/javascript/styles/mastodon/widgets.scss +++ b/app/javascript/styles/mastodon/widgets.scss @@ -359,8 +359,9 @@ vertical-align: initial !important; } - &__interrelationships { + tbody td.accounts-table__interrelationships { width: 21px; + padding-right: 16px; } .fa { From 487d81fb92350974e20ee220553a10b5229f0880 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 21:43:44 +0200 Subject: [PATCH 099/500] Fix IP blocks not having a unique index (#19456) --- app/controllers/admin/ip_blocks_controller.rb | 2 +- app/models/ip_block.rb | 1 + .../20221025171544_add_index_ip_blocks_on_ip.rb | 17 +++++++++++++++++ db/schema.rb | 3 ++- 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb diff --git a/app/controllers/admin/ip_blocks_controller.rb b/app/controllers/admin/ip_blocks_controller.rb index a87520f4ed..1bd7ec8059 100644 --- a/app/controllers/admin/ip_blocks_controller.rb +++ b/app/controllers/admin/ip_blocks_controller.rb @@ -5,7 +5,7 @@ module Admin def index authorize :ip_block, :index? - @ip_blocks = IpBlock.page(params[:page]) + @ip_blocks = IpBlock.order(ip: :asc).page(params[:page]) @form = Form::IpBlockBatch.new end diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index 8666f4248e..31343f0e11 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -25,6 +25,7 @@ class IpBlock < ApplicationRecord } validates :ip, :severity, presence: true + validates :ip, uniqueness: true after_commit :reset_cache diff --git a/db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb b/db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb new file mode 100644 index 0000000000..0221369b7e --- /dev/null +++ b/db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb @@ -0,0 +1,17 @@ +class AddIndexIpBlocksOnIp < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def up + duplicates = IpBlock.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM ip_blocks GROUP BY ip HAVING count(*) > 1').to_ary + + duplicates.each do |row| + IpBlock.where(id: row['ids'].split(',')[0...-1]).destroy_all + end + + add_index :ip_blocks, :ip, unique: true, algorithm: :concurrently + end + + def down + remove_index :ip_blocks, :ip, unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index ed00d9e742..d7e40b133d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_10_21_055441) do +ActiveRecord::Schema.define(version: 2022_10_25_171544) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -521,6 +521,7 @@ ActiveRecord::Schema.define(version: 2022_10_21_055441) do t.inet "ip", default: "0.0.0.0", null: false t.integer "severity", default: 0, null: false t.text "comment", default: "", null: false + t.index ["ip"], name: "index_ip_blocks_on_ip", unique: true end create_table "list_accounts", force: :cascade do |t| From 8f073818568b78b4adb858feb928b0da237d066a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 09:10:18 +0200 Subject: [PATCH 100/500] Revert "Remove preference to aggregate reblogs in home/list feeds (#18112)" (#19463) This reverts commit af396fa35f589e1f759c7a3a0dad7932f1862309. --- app/lib/feed_manager.rb | 18 +++++++++--------- .../settings/preferences/other/show.html.haml | 3 +++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index f2d204a644..657e56ca6d 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -58,7 +58,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_home(account, status, update: false) - return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: true) + return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) trim(:home, account.id) PushUpdateWorker.perform_async(account.id, status.id, "timeline:#{account.id}", { 'update' => update }) if push_update_required?("timeline:#{account.id}") @@ -71,7 +71,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_home(account, status, update: false) - return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: true) + return false unless remove_from_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) redis.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -83,7 +83,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_list(list, status, update: false) - return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: true) + return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) trim(:list, list.id) PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}", { 'update' => update }) if push_update_required?("timeline:list:#{list.id}") @@ -96,7 +96,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def unpush_from_list(list, status, update: false) - return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: true) + return false unless remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) redis.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s)) unless update true @@ -108,7 +108,7 @@ class FeedManager # @return [void] def merge_into_home(from_account, into_account) timeline_key = key(:home, into_account.id) - aggregate = true + aggregate = into_account.user&.aggregates_reblogs? query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -134,7 +134,7 @@ class FeedManager # @return [void] def merge_into_list(from_account, list) timeline_key = key(:list, list.id) - aggregate = true + aggregate = list.account.user&.aggregates_reblogs? query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 @@ -163,7 +163,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:home, into_account.id, status, aggregate_reblogs: true) + remove_from_feed(:home, into_account.id, status, aggregate_reblogs: into_account.user&.aggregates_reblogs?) end end @@ -176,7 +176,7 @@ class FeedManager timeline_status_ids = redis.zrange(timeline_key, 0, -1) from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| - remove_from_feed(:list, list.id, status, aggregate_reblogs: true) + remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) end end @@ -235,7 +235,7 @@ class FeedManager # @return [void] def populate_home(account) limit = FeedManager::MAX_ITEMS / 2 - aggregate = true + aggregate = account.user&.aggregates_reblogs? timeline_key = key(:home, account.id) account.statuses.limit(limit).each do |status| diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index 379678703e..44f4af2eba 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -10,6 +10,9 @@ .fields-group = f.input :setting_noindex, as: :boolean, wrapper: :with_label + .fields-group + = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true + %h4= t 'preferences.posting_defaults' .fields-row From 1ae508bf2faae016b88d15e273b0dc01de4fd7af Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 12:10:02 +0200 Subject: [PATCH 101/500] Change unauthenticated search to not support pagination in REST API (#19326) - Only exact search matches for queries with < 5 characters - Do not support queries with `offset` (pagination) - Return HTTP 401 on truthy `resolve` instead of overriding to false --- app/controllers/api/v2/search_controller.rb | 13 +++- app/services/account_search_service.rb | 5 ++ .../api/v2/search_controller_spec.rb | 62 ++++++++++++++++--- 3 files changed, 71 insertions(+), 9 deletions(-) diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index e384ecbaf1..4d20aeb10f 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -6,6 +6,7 @@ class Api::V2::SearchController < Api::BaseController RESULTS_LIMIT = 20 before_action -> { authorize_if_got_token! :read, :'read:search' } + before_action :validate_search_params! def index @search = Search.new(search_results) @@ -18,12 +19,22 @@ class Api::V2::SearchController < Api::BaseController private + def validate_search_params! + params.require(:q) + + return if user_signed_in? + + return render json: { error: 'Search queries pagination is not supported without authentication' }, status: 401 if params[:offset].present? + + render json: { error: 'Search queries that resolve remote resources are not supported without authentication' }, status: 401 if truthy_param?(:resolve) + end + def search_results SearchService.new.call( params[:q], current_account, limit_param(RESULTS_LIMIT), - search_params.merge(resolve: user_signed_in? ? truthy_param?(:resolve) : false, exclude_unreviewed: truthy_param?(:exclude_unreviewed)) + search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed)) ) end diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 4dcae20ebf..35b2e05f57 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -3,6 +3,9 @@ class AccountSearchService < BaseService attr_reader :query, :limit, :offset, :options, :account + # Min. number of characters to look for non-exact matches + MIN_QUERY_LENGTH = 5 + def call(query, account = nil, options = {}) @acct_hint = query&.start_with?('@') @query = query&.strip&.gsub(/\A@/, '') @@ -135,6 +138,8 @@ class AccountSearchService < BaseService end def limit_for_non_exact_results + return 0 if @account.nil? && query.size < MIN_QUERY_LENGTH + if exact_match? limit - 1 else diff --git a/spec/controllers/api/v2/search_controller_spec.rb b/spec/controllers/api/v2/search_controller_spec.rb index fa20e1e51f..d417ea58ca 100644 --- a/spec/controllers/api/v2/search_controller_spec.rb +++ b/spec/controllers/api/v2/search_controller_spec.rb @@ -5,18 +5,64 @@ require 'rails_helper' RSpec.describe Api::V2::SearchController, type: :controller do render_views - let(:user) { Fabricate(:user) } - let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:search') } + context 'with token' do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:search') } - before do - allow(controller).to receive(:doorkeeper_token) { token } + before do + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'GET #index' do + before do + get :index, params: { q: 'test' } + end + + it 'returns http success' do + expect(response).to have_http_status(200) + end + end end - describe 'GET #index' do - it 'returns http success' do - get :index, params: { q: 'test' } + context 'without token' do + describe 'GET #index' do + let(:search_params) {} + + before do + get :index, params: search_params + end + + context 'with a `q` shorter than 5 characters' do + let(:search_params) { { q: 'test' } } + + it 'returns http success' do + expect(response).to have_http_status(200) + end + end + + context 'with a `q` equal to or longer than 5 characters' do + let(:search_params) { { q: 'test1' } } + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + context 'with truthy `resolve`' do + let(:search_params) { { q: 'test1', resolve: '1' } } + + it 'returns http unauthorized' do + expect(response).to have_http_status(401) + end + end + + context 'with `offset`' do + let(:search_params) { { q: 'test1', offset: 1 } } - expect(response).to have_http_status(200) + it 'returns http unauthorized' do + expect(response).to have_http_status(401) + end + end + end end end end From bf0ab3e0fac54515c13beef4ec09b0455f1bce67 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 12:10:48 +0200 Subject: [PATCH 102/500] Fix vacuum scheduler missing lock, locks never expiring (#19458) Remove vacuuming of orphaned preview cards --- app/lib/vacuum/media_attachments_vacuum.rb | 2 +- app/lib/vacuum/preview_cards_vacuum.rb | 9 --------- app/workers/scheduler/vacuum_scheduler.rb | 2 +- config/initializers/sidekiq.rb | 1 + spec/lib/vacuum/preview_cards_vacuum_spec.rb | 4 ---- 5 files changed, 3 insertions(+), 15 deletions(-) diff --git a/app/lib/vacuum/media_attachments_vacuum.rb b/app/lib/vacuum/media_attachments_vacuum.rb index 7fb347ce4d..7c0a85a9d9 100644 --- a/app/lib/vacuum/media_attachments_vacuum.rb +++ b/app/lib/vacuum/media_attachments_vacuum.rb @@ -8,8 +8,8 @@ class Vacuum::MediaAttachmentsVacuum end def perform - vacuum_cached_files! if retention_period? vacuum_orphaned_records! + vacuum_cached_files! if retention_period? end private diff --git a/app/lib/vacuum/preview_cards_vacuum.rb b/app/lib/vacuum/preview_cards_vacuum.rb index 84ef100ed9..14fdeda1ca 100644 --- a/app/lib/vacuum/preview_cards_vacuum.rb +++ b/app/lib/vacuum/preview_cards_vacuum.rb @@ -9,7 +9,6 @@ class Vacuum::PreviewCardsVacuum def perform vacuum_cached_images! if retention_period? - vacuum_orphaned_records! end private @@ -21,18 +20,10 @@ class Vacuum::PreviewCardsVacuum end end - def vacuum_orphaned_records! - orphaned_preview_cards.in_batches.destroy_all - end - def preview_cards_past_retention_period PreviewCard.cached.where(PreviewCard.arel_table[:updated_at].lt(@retention_period.ago)) end - def orphaned_preview_cards - PreviewCard.where('NOT EXISTS (SELECT 1 FROM preview_cards_statuses WHERE preview_cards_statuses.preview_card_id = preview_cards.id)').where(PreviewCard.arel_table[:created_at].lt(TTL.ago)) - end - def retention_period? @retention_period.present? end diff --git a/app/workers/scheduler/vacuum_scheduler.rb b/app/workers/scheduler/vacuum_scheduler.rb index ce88ff204d..9544f808bf 100644 --- a/app/workers/scheduler/vacuum_scheduler.rb +++ b/app/workers/scheduler/vacuum_scheduler.rb @@ -3,7 +3,7 @@ class Scheduler::VacuumScheduler include Sidekiq::Worker - sidekiq_options retry: 0 + sidekiq_options retry: 0, lock: :until_executed def perform vacuum_operations.each do |operation| diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index c1327053df..9d2abf0745 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -35,4 +35,5 @@ SidekiqUniqueJobs.configure do |config| config.reaper_count = 1000 config.reaper_interval = 600 config.reaper_timeout = 150 + config.lock_ttl = 50.days.to_i end diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb index 4a4a599fa4..275f9ba92f 100644 --- a/spec/lib/vacuum/preview_cards_vacuum_spec.rb +++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb @@ -28,9 +28,5 @@ RSpec.describe Vacuum::PreviewCardsVacuum do it 'does not delete attached preview cards' do expect(new_preview_card.reload).to be_persisted end - - it 'deletes preview cards not attached to any status' do - expect { orphaned_preview_card.reload }.to raise_error ActiveRecord::RecordNotFound - end end end From 7d25f72b9fb5f2940b998579da00a11f8a65fb40 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 13:00:43 +0200 Subject: [PATCH 103/500] Fix negatives values in search index causing queries to fail (#19464) --- app/services/account_search_service.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 35b2e05f57..de1dc7b8ed 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -105,7 +105,7 @@ class AccountSearchService < BaseService { script_score: { script: { - source: "(doc['followers_count'].value + 0.0) / (doc['followers_count'].value + doc['following_count'].value + 1)", + source: "(Math.max(doc['followers_count'].value, 0) + 0.0) / (Math.max(doc['followers_count'].value, 0) + Math.max(doc['following_count'].value, 0) + 1)", }, }, } @@ -113,10 +113,10 @@ class AccountSearchService < BaseService def followers_score_function { - field_value_factor: { - field: 'followers_count', - modifier: 'log2p', - missing: 0, + script_score: { + script: { + source: "log2p(Math.max(doc['followers_count'].value, 0))", + }, }, } end From 54189e9fc49b496da7a4aac6276131d28bac79dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:11:05 +0900 Subject: [PATCH 104/500] Bump bufferutil from 4.0.6 to 4.0.7 (#19442) Bumps [bufferutil](https://github.com/websockets/bufferutil) from 4.0.6 to 4.0.7. - [Release notes](https://github.com/websockets/bufferutil/releases) - [Commits](https://github.com/websockets/bufferutil/compare/v4.0.6...v4.0.7) --- updated-dependencies: - dependency-name: bufferutil dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fc84309e16..f1ada9d5f2 100644 --- a/package.json +++ b/package.json @@ -169,7 +169,7 @@ "kind-of": "^6.0.3" }, "optionalDependencies": { - "bufferutil": "^4.0.6", + "bufferutil": "^4.0.7", "utf-8-validate": "^5.0.9" } } diff --git a/yarn.lock b/yarn.lock index 7ec3b28469..5ea8315e6b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3095,10 +3095,10 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -bufferutil@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" - integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== +bufferutil@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== dependencies: node-gyp-build "^4.3.0" From 0f02e97c011b7a94994ebcf0447f7c97e3c1f989 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:11:55 +0900 Subject: [PATCH 105/500] Bump @babel/core from 7.19.3 to 7.19.6 (#19448) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.19.3 to 7.19.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.6/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 89 ++++++++++++++++++++++++++++------------------------ 2 files changed, 49 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index f1ada9d5f2..befb31217b 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ }, "private": true, "dependencies": { - "@babel/core": "^7.19.3", + "@babel/core": "^7.19.6", "@babel/plugin-proposal-decorators": "^7.19.3", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.19.1", diff --git a/yarn.lock b/yarn.lock index 5ea8315e6b..a3a5d9702b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,21 +42,21 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.4.tgz#95c86de137bf0317f3a570e1b6e996b427299747" integrity sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw== -"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.3", "@babel/core@^7.7.2": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" - integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== +"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.6", "@babel/core@^7.7.2": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.6.tgz#7122ae4f5c5a37c0946c066149abd8e75f81540f" + integrity sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" + "@babel/generator" "^7.19.6" "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helpers" "^7.19.4" + "@babel/parser" "^7.19.6" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.3" - "@babel/types" "^7.19.3" + "@babel/traverse" "^7.19.6" + "@babel/types" "^7.19.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -72,12 +72,12 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.19.3", "@babel/generator@^7.7.2": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.3.tgz#d7f4d1300485b4547cb6f94b27d10d237b42bf59" - integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ== +"@babel/generator@^7.19.6", "@babel/generator@^7.7.2": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.6.tgz#9e481a3fe9ca6261c972645ae3904ec0f9b34a1d" + integrity sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA== dependencies: - "@babel/types" "^7.19.3" + "@babel/types" "^7.19.4" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -217,19 +217,19 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" - integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0", "@babel/helper-module-transforms@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz#6c52cc3ac63b70952d33ee987cbee1c9368b533f" + integrity sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-simple-access" "^7.19.4" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.19.6" + "@babel/types" "^7.19.4" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -281,6 +281,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-simple-access@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" + integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== + dependencies: + "@babel/types" "^7.19.4" + "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" @@ -340,14 +347,14 @@ "@babel/traverse" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/helpers@^7.19.0": - version "7.19.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.0.tgz#f30534657faf246ae96551d88dd31e9d1fa1fc18" - integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== +"@babel/helpers@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.4.tgz#42154945f87b8148df7203a25c31ba9a73be46c5" + integrity sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw== dependencies: "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.19.4" + "@babel/types" "^7.19.4" "@babel/highlight@^7.10.4": version "7.12.13" @@ -367,10 +374,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.3.tgz#8dd36d17c53ff347f9e55c328710321b49479a9a" - integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.6.tgz#b923430cb94f58a7eae8facbffa9efd19130e7f8" + integrity sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -1116,23 +1123,23 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3", "@babel/traverse@^7.7.2": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.3.tgz#3a3c5348d4988ba60884e8494b0592b2f15a04b4" - integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ== +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.6", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.4", "@babel/traverse@^7.19.6", "@babel/traverse@^7.7.2": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.6.tgz#7b4c865611df6d99cb131eec2e8ac71656a490dc" + integrity sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" + "@babel/generator" "^7.19.6" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.3" - "@babel/types" "^7.19.3" + "@babel/parser" "^7.19.6" + "@babel/types" "^7.19.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.4.tgz#0dd5c91c573a202d600490a35b33246fed8a41c7" integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== From 89fbdcdf30015a99df7e42c4a4ed9395789b4d60 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:12:38 +0900 Subject: [PATCH 106/500] Bump @babel/plugin-transform-runtime from 7.19.1 to 7.19.6 (#19446) Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.19.1 to 7.19.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.6/packages/babel-plugin-transform-runtime) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index befb31217b..8cf85905c5 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@babel/core": "^7.19.6", "@babel/plugin-proposal-decorators": "^7.19.3", "@babel/plugin-transform-react-inline-elements": "^7.18.6", - "@babel/plugin-transform-runtime": "^7.19.1", + "@babel/plugin-transform-runtime": "^7.19.6", "@babel/preset-env": "^7.19.4", "@babel/preset-react": "^7.18.6", "@babel/runtime": "^7.19.4", diff --git a/yarn.lock b/yarn.lock index a3a5d9702b..186f4bb10f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -925,10 +925,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz#a3df2d7312eea624c7889a2dcd37fd1dfd25b2c6" - integrity sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA== +"@babel/plugin-transform-runtime@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" + integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== dependencies: "@babel/helper-module-imports" "^7.18.6" "@babel/helper-plugin-utils" "^7.19.0" From 1a05258cd1b2fef3327f8c407c083434f5dd3c56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:13:05 +0900 Subject: [PATCH 107/500] Bump eslint-plugin-promise from 6.1.0 to 6.1.1 (#19443) Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 6.1.0 to 6.1.1. - [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases) - [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v6.1.0...v6.1.1) --- updated-dependencies: - dependency-name: eslint-plugin-promise dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8cf85905c5..c0961e195e 100644 --- a/package.json +++ b/package.json @@ -151,7 +151,7 @@ "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", - "eslint-plugin-promise": "~6.1.0", + "eslint-plugin-promise": "~6.1.1", "eslint-plugin-react": "~7.31.10", "jest": "^29.1.2", "jest-environment-jsdom": "^29.1.2", diff --git a/yarn.lock b/yarn.lock index 186f4bb10f..96d56b5257 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4678,10 +4678,10 @@ eslint-plugin-jsx-a11y@~6.6.1: minimatch "^3.1.2" semver "^6.3.0" -eslint-plugin-promise@~6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.0.tgz#99e54d07272df5a6440209cb36d0d692be0610dd" - integrity sha512-NYCfDZF/KHt27p06nFAttgWuFyIDSUMnNaJBIY1FY9GpBFhdT2vMG64HlFguSgcJeyM5by6Yr5csSOuJm60eXQ== +eslint-plugin-promise@~6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== eslint-plugin-react@~7.31.10: version "7.31.10" From 2015e6b331c5026b88cc744c834c781f08df18d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:13:37 +0900 Subject: [PATCH 108/500] Bump react-select from 5.5.1 to 5.5.4 (#19451) Bumps [react-select](https://github.com/JedWatson/react-select) from 5.5.1 to 5.5.4. - [Release notes](https://github.com/JedWatson/react-select/releases) - [Changelog](https://github.com/JedWatson/react-select/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/JedWatson/react-select/compare/react-select@5.5.1...react-select@5.5.4) --- updated-dependencies: - dependency-name: react-select dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index c0961e195e..c5db01d35c 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "react-redux-loading-bar": "^5.0.4", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", - "react-select": "^5.5.1", + "react-select": "^5.5.4", "react-sparklines": "^1.7.0", "react-swipeable-views": "^0.14.0", "react-textarea-autosize": "^8.3.4", diff --git a/yarn.lock b/yarn.lock index 96d56b5257..edc0e3ee59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7447,10 +7447,10 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -memoize-one@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" - integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== memory-fs@^0.4.1: version "0.4.1" @@ -9403,17 +9403,17 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" -react-select@^5.5.1: - version "5.5.1" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.5.1.tgz#60cc6767e77396cdf1d6f49a10555b80d27e749a" - integrity sha512-zOXIKvNqrnBn030Goi7pRHfLJHnvjPweA4uDyj9me8YPqgkaJp+vX3eNGHOzTlI442rbfPUMGrEZQnymJn/XUg== +react-select@^5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.5.4.tgz#da05b8b66d33f6fc1f92fdccd0fa50d7f4418554" + integrity sha512-lyr19joBUm/CNJgjZMBSnFvJ/MeHCmBYvQ050qYAP3EPa7Oenlnx9guhU+SW0goYgxLQyqwRvkFllQpFAp8tmQ== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" "@emotion/react" "^11.8.1" "@floating-ui/dom" "^1.0.1" "@types/react-transition-group" "^4.4.0" - memoize-one "^5.0.0" + memoize-one "^6.0.0" prop-types "^15.6.0" react-transition-group "^4.3.0" use-isomorphic-layout-effect "^1.1.2" From 945f44fb6e48eb31cb71e3cd2d253ea8d0e5de9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:14:33 +0900 Subject: [PATCH 109/500] Bump npmlog from 7.0.0 to 7.0.1 (#19447) Bumps [npmlog](https://github.com/npm/npmlog) from 7.0.0 to 7.0.1. - [Release notes](https://github.com/npm/npmlog/releases) - [Changelog](https://github.com/npm/npmlog/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/npmlog/compare/v7.0.0...v7.0.1) --- updated-dependencies: - dependency-name: npmlog dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c5db01d35c..85f489196f 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "marky": "^1.2.5", "mini-css-extract-plugin": "^1.6.2", "mkdirp": "^1.0.4", - "npmlog": "^7.0.0", + "npmlog": "^7.0.1", "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", "object.values": "^1.1.5", diff --git a/yarn.lock b/yarn.lock index edc0e3ee59..fc9a69a93c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7935,10 +7935,10 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-7.0.0.tgz#09731bbb33019813704d6635b55f35a1b1784b34" - integrity sha512-p+OVCIQx1Rehplt2DNgBERrKtE5Ej0/rqdcNz5PbohpKHDPprGAl142qQuozmzWUM9uNjvstEO+A92CwytJPcQ== +npmlog@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-7.0.1.tgz#7372151a01ccb095c47d8bf1d0771a4ff1f53ac8" + integrity sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg== dependencies: are-we-there-yet "^4.0.0" console-control-strings "^1.1.0" From 940e80a81b8d3c08526cde67cacf5653b2ffb4da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:15:38 +0900 Subject: [PATCH 110/500] Bump ws from 8.9.0 to 8.10.0 (#19450) Bumps [ws](https://github.com/websockets/ws) from 8.9.0 to 8.10.0. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.9.0...8.10.0) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 85f489196f..a28a73dbe0 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "workbox-strategies": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", "workbox-window": "^6.5.4", - "ws": "^8.9.0" + "ws": "^8.10.0" }, "devDependencies": { "@babel/eslint-parser": "^7.19.1", diff --git a/yarn.lock b/yarn.lock index fc9a69a93c..246e55afed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12078,10 +12078,10 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^8.9.0: - version "8.9.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.9.0.tgz#2a994bb67144be1b53fe2d23c53c028adeb7f45e" - integrity sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg== +ws@^8.10.0, ws@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.10.0.tgz#00a28c09dfb76eae4eb45c3b565f771d6951aa51" + integrity sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw== xml-name-validator@^4.0.0: version "4.0.0" From 3de6c9c02dbc8ef535aeca825b16e698ba939b18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:16:26 +0900 Subject: [PATCH 111/500] Bump babel-jest from 29.1.2 to 29.2.1 (#19444) Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 29.1.2 to 29.2.1. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.2.1/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 104 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 82 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index a28a73dbe0..5fe00c5527 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "@babel/eslint-parser": "^7.19.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", - "babel-jest": "^29.1.2", + "babel-jest": "^29.2.1", "eslint": "^7.32.0", "eslint-plugin-import": "~2.26.0", "eslint-plugin-jsx-a11y": "~6.6.1", diff --git a/yarn.lock b/yarn.lock index 246e55afed..98f83b3230 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1485,22 +1485,22 @@ jest-haste-map "^29.1.2" slash "^3.0.0" -"@jest/transform@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.1.2.tgz#20f814696e04f090421f6d505c14bbfe0157062a" - integrity sha512-2uaUuVHTitmkx1tHF+eBjb4p7UuzBG7SXIaA/hNIkaMP6K+gXYGxP38ZcrofzqN0HeZ7A90oqsOa97WU7WZkSw== +"@jest/transform@^29.1.2", "@jest/transform@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.1.tgz#f3d8154edd19cdbcaf1d6646bd8f4ff7812318a2" + integrity sha512-xup+iEuaIRSQabQaeqxaQyN0vg1Dctrp9oTObQsNf3sZEowTIa5cANYuoyi8Tqhg4GCqEVLTf18KW7ii0UeFVA== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@jridgewell/trace-mapping" "^0.3.15" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" - jest-regex-util "^29.0.0" - jest-util "^29.1.2" + jest-haste-map "^29.2.1" + jest-regex-util "^29.2.0" + jest-util "^29.2.1" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1539,6 +1539,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" + integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw== + dependencies: + "@jest/schemas" "^29.0.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" @@ -2655,15 +2667,15 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.1.2.tgz#540d3241925c55240fb0c742e3ffc5f33a501978" - integrity sha512-IuG+F3HTHryJb7gacC7SQ59A9kO56BctUsT67uJHp1mMCHUOMXpDwOHWGifWqdWVknN2WNkCVQELPjXx0aLJ9Q== +babel-jest@^29.1.2, babel-jest@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.1.tgz#213c47e28072de11bdb98c9d29b89f2ab99664f1" + integrity sha512-gQJwArok0mqoREiCYhXKWOgUhElJj9DpnssW6GL8dG7ARYqHEhrM9fmPHTjdqEGRVXZAd6+imo3/Vwa8TjLcsw== dependencies: - "@jest/transform" "^29.1.2" + "@jest/transform" "^29.2.1" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.0.2" + babel-preset-jest "^29.2.0" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -2696,10 +2708,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^29.0.2: - version "29.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.2.tgz#ae61483a829a021b146c016c6ad39b8bcc37c2c8" - integrity sha512-eBr2ynAEFjcebVvu8Ktx580BD1QKCrBG1XwEUTXJe285p9HA/4hOhfWCFRQhTKSyBV0VzjhG7H91Eifz9s29hg== +babel-plugin-jest-hoist@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" + integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -2805,12 +2817,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^29.0.2: - version "29.0.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.0.2.tgz#e14a7124e22b161551818d89e5bdcfb3b2b0eac7" - integrity sha512-BeVXp7rH5TK96ofyEnHjznjLMQ2nAeDJ+QzxKnHAAMs0RgrQsCywjAN8m4mOm5Di0pxU//3AoEeJJrerMH5UeA== +babel-preset-jest@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc" + integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA== dependencies: - babel-plugin-jest-hoist "^29.0.2" + babel-plugin-jest-hoist "^29.2.0" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -6749,6 +6761,25 @@ jest-haste-map@^29.1.2: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.2.1.tgz#f803fec57f8075e6c55fb5cd551f99a72471c699" + integrity sha512-wF460rAFmYc6ARcCFNw4MbGYQjYkvjovb9GBT+W10Um8q5nHq98jD6fHZMDMO3tA56S8XnmNkM8GcA8diSZfnA== + dependencies: + "@jest/types" "^29.2.1" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.2.0" + jest-util "^29.2.1" + jest-worker "^29.2.1" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-leak-detector@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.1.2.tgz#4c846db14c58219430ccbc4f01a1ec52ebee4fc2" @@ -6801,6 +6832,11 @@ jest-regex-util@^29.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.0.0.tgz#b442987f688289df8eb6c16fa8df488b4cd007de" integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug== +jest-regex-util@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" + integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== + jest-resolve-dependencies@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.1.2.tgz#a6919e58a0c7465582cb8ec2d745b4e64ae8647f" @@ -6921,6 +6957,18 @@ jest-util@^29.1.2: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747" + integrity sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g== + dependencies: + "@jest/types" "^29.2.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.1.2.tgz#83a728b8f6354da2e52346878c8bc7383516ca51" @@ -6975,6 +7023,16 @@ jest-worker@^29.1.2: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.2.1.tgz#8ba68255438252e1674f990f0180c54dfa26a3b1" + integrity sha512-ROHTZ+oj7sBrgtv46zZ84uWky71AoYi0vEV9CdEtc1FQunsoAGe5HbQmW76nI5QWdvECVPrSi1MCVUmizSavMg== + dependencies: + "@types/node" "*" + jest-util "^29.2.1" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^29.1.2: version "29.1.2" resolved "https://registry.yarnpkg.com/jest/-/jest-29.1.2.tgz#f821a1695ffd6cd0efc3b59d2dfcc70a98582499" From dee69be60ef72f714ca3cbbd47e83f1015332f06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:16:50 +0900 Subject: [PATCH 112/500] Bump jest-environment-jsdom from 29.1.2 to 29.2.1 (#19393) Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.1.2 to 29.2.1. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.2.1/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 102 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 64 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 5fe00c5527..c8b9aa152b 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "eslint-plugin-promise": "~6.1.1", "eslint-plugin-react": "~7.31.10", "jest": "^29.1.2", - "jest-environment-jsdom": "^29.1.2", + "jest-environment-jsdom": "^29.2.1", "postcss-scss": "^4.0.5", "prettier": "^2.7.1", "raf": "^3.4.1", diff --git a/yarn.lock b/yarn.lock index 98f83b3230..772d8a6c80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1371,15 +1371,15 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.1.2.tgz#bb51a43fce9f960ba9a48f0b5b556f30618ebc0a" - integrity sha512-rG7xZ2UeOfvOVzoLIJ0ZmvPl4tBEQ2n73CZJSlzUjPw4or1oSWC0s0Rk0ZX+pIBJ04aVr6hLWFn1DFtrnf8MhQ== +"@jest/environment@^29.1.2", "@jest/environment@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.1.tgz#acb1994fbd5ad02819a1a34a923c531e6923b665" + integrity sha512-EutqA7T/X6zFjw6mAWRHND+ZkTPklmIEWCNbmwX6uCmOrFrWaLbDZjA+gePHJx6fFMMRvNfjXcvzXEtz54KPlg== dependencies: - "@jest/fake-timers" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/fake-timers" "^29.2.1" + "@jest/types" "^29.2.1" "@types/node" "*" - jest-mock "^29.1.2" + jest-mock "^29.2.1" "@jest/expect-utils@^29.1.2": version "29.1.2" @@ -1396,17 +1396,17 @@ expect "^29.1.2" jest-snapshot "^29.1.2" -"@jest/fake-timers@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.1.2.tgz#f157cdf23b4da48ce46cb00fea28ed1b57fc271a" - integrity sha512-GppaEqS+QQYegedxVMpCe2xCXxxeYwQ7RsNx55zc8f+1q1qevkZGKequfTASI7ejmg9WwI+SJCrHe9X11bLL9Q== +"@jest/fake-timers@^29.1.2", "@jest/fake-timers@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.1.tgz#786d60e8cb60ca70c9f913cb49fcc77610c072bb" + integrity sha512-KWil+8fef7Uj/P/PTZlPKk1Pw117wAmr71VWFV8ZDtRtkwmTG8oY4IRf0Ss44J2y5CYRy8d/zLOhxyoGRENjvA== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^29.1.2" - jest-mock "^29.1.2" - jest-util "^29.1.2" + jest-message-util "^29.2.1" + jest-mock "^29.2.1" + jest-util "^29.2.1" "@jest/globals@^29.1.2": version "29.1.2" @@ -1527,10 +1527,10 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.1.2.tgz#7442d32b16bcd7592d9614173078b8c334ec730a" - integrity sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg== +"@jest/types@^29.1.2", "@jest/types@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" + integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw== dependencies: "@jest/schemas" "^29.0.0" "@types/istanbul-lib-coverage" "^2.0.0" @@ -6706,18 +6706,18 @@ jest-each@^29.1.2: jest-util "^29.1.2" pretty-format "^29.1.2" -jest-environment-jsdom@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.1.2.tgz#59c5d7c53c999e1518cc2f1cd4ee19ab4b68eb68" - integrity sha512-D+XNIKia5+uDjSMwL/G1l6N9MCb7LymKI8FpcLo7kkISjc/Sa9w+dXXEa7u1Wijo3f8sVLqfxdGqYtRhmca+Xw== +jest-environment-jsdom@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.2.1.tgz#5bfbbc52a74b333c7e69ff3a4f540af850a7a718" + integrity sha512-MipBdmrjgzEdQMkK7b7wBShOfv1VqO6FVwa9S43bZwKYLC4dlWnPiCgNpZX3ypNEpJO8EMpMhg4HrUkWUZXGiw== dependencies: - "@jest/environment" "^29.1.2" - "@jest/fake-timers" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.2.1" + "@jest/fake-timers" "^29.2.1" + "@jest/types" "^29.2.1" "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^29.1.2" - jest-util "^29.1.2" + jest-mock "^29.2.1" + jest-util "^29.2.1" jsdom "^20.0.0" jest-environment-node@^29.1.2: @@ -6813,14 +6813,29 @@ jest-message-util@^29.1.2: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.1.2.tgz#de47807edbb9d4abf8423f1d8d308d670105678c" - integrity sha512-PFDAdjjWbjPUtQPkQufvniXIS3N9Tv7tbibePEjIIprzjgo0qQlyUiVMrT4vL8FaSJo1QXifQUOuPH3HQC/aMA== +jest-message-util@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.2.1.tgz#3a51357fbbe0cc34236f17a90d772746cf8d9193" + integrity sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw== dependencies: - "@jest/types" "^29.1.2" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.2.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.2.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.1.2, jest-mock@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.1.tgz#a0d361cffcb28184fa9c5443adbf591fa5759775" + integrity sha512-NDphaY/GqyQpTfnTZiTqqpMaw4Z0I7XnB7yBgrT6IwYrLGxpOhrejYr4ANY4YvO2sEGdd8Tx/6D0+WLQy7/qDA== + dependencies: + "@jest/types" "^29.2.1" "@types/node" "*" - jest-util "^29.1.2" + jest-util "^29.2.1" jest-pnp-resolver@^1.2.2: version "1.2.2" @@ -6945,12 +6960,12 @@ jest-snapshot@^29.1.2: pretty-format "^29.1.2" semver "^7.3.5" -jest-util@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.1.2.tgz#ac5798e93cb6a6703084e194cfa0898d66126df1" - integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== +jest-util@^29.1.2, jest-util@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747" + integrity sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" @@ -9074,6 +9089,15 @@ pretty-format@^29.1.2: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.2.1.tgz#86e7748fe8bbc96a6a4e04fa99172630907a9611" + integrity sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA== + dependencies: + "@jest/schemas" "^29.0.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" From f8ca3bb2a1dd648f41e8fea5b5eb87b53bc8d521 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 13:42:29 +0200 Subject: [PATCH 113/500] Add ability to view previous edits of a status in admin UI (#19462) * Add ability to view previous edits of a status in admin UI * Change moderator access to posts to be controlled by a separate policy --- app/controllers/admin/statuses_controller.rb | 16 ++++- .../admin/trends/statuses_controller.rb | 4 +- .../mastodon/components/status_action_bar.js | 2 +- .../features/status/components/action_bar.js | 2 +- app/javascript/styles/mastodon/admin.scss | 64 +++++++++++++++++++ app/models/admin/status_filter.rb | 5 +- app/models/status_edit.rb | 13 +++- app/policies/admin/status_policy.rb | 29 +++++++++ app/policies/status_policy.rb | 12 +--- .../reports/_media_attachments.html.haml | 8 +++ app/views/admin/reports/_status.html.haml | 11 +--- .../admin/status_edits/_status_edit.html.haml | 20 ++++++ app/views/admin/statuses/show.html.haml | 64 +++++++++++++++++++ config/locales/en.yml | 13 ++++ config/routes.rb | 2 +- spec/policies/status_policy_spec.rb | 22 ------- 16 files changed, 232 insertions(+), 55 deletions(-) create mode 100644 app/policies/admin/status_policy.rb create mode 100644 app/views/admin/reports/_media_attachments.html.haml create mode 100644 app/views/admin/status_edits/_status_edit.html.haml create mode 100644 app/views/admin/statuses/show.html.haml diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb index 084921cebb..b80cd20f56 100644 --- a/app/controllers/admin/statuses_controller.rb +++ b/app/controllers/admin/statuses_controller.rb @@ -3,18 +3,23 @@ module Admin class StatusesController < BaseController before_action :set_account - before_action :set_statuses + before_action :set_statuses, except: :show + before_action :set_status, only: :show PER_PAGE = 20 def index - authorize :status, :index? + authorize [:admin, :status], :index? @status_batch_action = Admin::StatusBatchAction.new end + def show + authorize [:admin, @status], :show? + end + def batch - authorize :status, :index? + authorize [:admin, :status], :index? @status_batch_action = Admin::StatusBatchAction.new(admin_status_batch_action_params.merge(current_account: current_account, report_id: params[:report_id], type: action_from_button)) @status_batch_action.save! @@ -32,6 +37,7 @@ module Admin def after_create_redirect_path report_id = @status_batch_action&.report_id || params[:report_id] + if report_id.present? admin_report_path(report_id) else @@ -43,6 +49,10 @@ module Admin @account = Account.find(params[:account_id]) end + def set_status + @status = @account.statuses.find(params[:id]) + end + def set_statuses @statuses = Admin::StatusFilter.new(@account, filter_params).results.preload(:application, :preloadable_poll, :media_attachments, active_mentions: :account, reblog: [:account, :application, :preloadable_poll, :media_attachments, active_mentions: :account]).page(params[:page]).per(PER_PAGE) end diff --git a/app/controllers/admin/trends/statuses_controller.rb b/app/controllers/admin/trends/statuses_controller.rb index 004f42b0c3..3d8b53ea8a 100644 --- a/app/controllers/admin/trends/statuses_controller.rb +++ b/app/controllers/admin/trends/statuses_controller.rb @@ -2,7 +2,7 @@ class Admin::Trends::StatusesController < Admin::BaseController def index - authorize :status, :review? + authorize [:admin, :status], :review? @locales = StatusTrend.pluck('distinct language') @statuses = filtered_statuses.page(params[:page]) @@ -10,7 +10,7 @@ class Admin::Trends::StatusesController < Admin::BaseController end def batch - authorize :status, :review? + authorize [:admin, :status], :review? @form = Trends::StatusBatch.new(trends_status_batch_params.merge(current_account: current_account, action: action_from_button)) @form.save diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 17150524e0..fe8ece0f98 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -323,7 +323,7 @@ class StatusActionBar extends ImmutablePureComponent { if ((this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { menu.push(null); menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); - menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses?id=${status.get('id')}` }); + menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); } } diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index a0a6a78943..4bd419ca44 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -254,7 +254,7 @@ class ActionBar extends React.PureComponent { if ((permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) { menu.push(null); menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` }); - menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses?id=${status.get('id')}` }); + menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); } } diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index affe1c79c2..f867783992 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1752,3 +1752,67 @@ a.sparkline { } } } + +.history { + counter-reset: step 0; + font-size: 15px; + line-height: 22px; + + li { + counter-increment: step 1; + padding-left: 2.5rem; + padding-bottom: 8px; + position: relative; + margin-bottom: 8px; + + &::before { + position: absolute; + content: counter(step); + font-size: 0.625rem; + font-weight: 500; + left: 0; + display: flex; + justify-content: center; + align-items: center; + width: calc(1.375rem + 1px); + height: calc(1.375rem + 1px); + background: $ui-base-color; + border: 1px solid $highlight-text-color; + color: $highlight-text-color; + border-radius: 8px; + } + + &::after { + position: absolute; + content: ""; + width: 1px; + background: $highlight-text-color; + bottom: 0; + top: calc(1.875rem + 1px); + left: 0.6875rem; + } + + &:last-child { + margin-bottom: 0; + + &::after { + display: none; + } + } + } + + &__entry { + h5 { + font-weight: 500; + color: $primary-text-color; + line-height: 25px; + margin-bottom: 16px; + } + + .status { + border: 1px solid lighten($ui-base-color, 4%); + background: $ui-base-color; + border-radius: 4px; + } + } +} diff --git a/app/models/admin/status_filter.rb b/app/models/admin/status_filter.rb index 4fba612a65..d7a16f760d 100644 --- a/app/models/admin/status_filter.rb +++ b/app/models/admin/status_filter.rb @@ -3,7 +3,6 @@ class Admin::StatusFilter KEYS = %i( media - id report_id ).freeze @@ -28,12 +27,10 @@ class Admin::StatusFilter private - def scope_for(key, value) + def scope_for(key, _value) case key.to_s when 'media' Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id).reorder('statuses.id desc') - when 'id' - Status.where(id: value) else raise "Unknown filter: #{key}" end diff --git a/app/models/status_edit.rb b/app/models/status_edit.rb index e9c8fbe986..e334702260 100644 --- a/app/models/status_edit.rb +++ b/app/models/status_edit.rb @@ -30,7 +30,7 @@ class StatusEdit < ApplicationRecord :preview_remote_url, :text_url, :meta, :blurhash, :not_processed?, :needs_redownload?, :local?, :file, :thumbnail, :thumbnail_remote_url, - :shortcode, to: :media_attachment + :shortcode, :video?, :audio?, to: :media_attachment end rate_limit by: :account, family: :statuses @@ -40,7 +40,8 @@ class StatusEdit < ApplicationRecord default_scope { order(id: :asc) } - delegate :local?, to: :status + delegate :local?, :application, :edited?, :edited_at, + :discarded?, :visibility, to: :status def emojis return @emojis if defined?(@emojis) @@ -59,4 +60,12 @@ class StatusEdit < ApplicationRecord end end end + + def proper + self + end + + def reblog? + false + end end diff --git a/app/policies/admin/status_policy.rb b/app/policies/admin/status_policy.rb new file mode 100644 index 0000000000..ffaa30f13d --- /dev/null +++ b/app/policies/admin/status_policy.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class Admin::StatusPolicy < ApplicationPolicy + def initialize(current_account, record, preloaded_relations = {}) + super(current_account, record) + + @preloaded_relations = preloaded_relations + end + + def index? + role.can?(:manage_reports, :manage_users) + end + + def show? + role.can?(:manage_reports, :manage_users) && (record.public_visibility? || record.unlisted_visibility? || record.reported?) + end + + def destroy? + role.can?(:manage_reports) + end + + def update? + role.can?(:manage_reports) + end + + def review? + role.can?(:manage_taxonomies) + end +end diff --git a/app/policies/status_policy.rb b/app/policies/status_policy.rb index 2f48b5d706..f3d0ffdbae 100644 --- a/app/policies/status_policy.rb +++ b/app/policies/status_policy.rb @@ -7,10 +7,6 @@ class StatusPolicy < ApplicationPolicy @preloaded_relations = preloaded_relations end - def index? - role.can?(:manage_reports, :manage_users) - end - def show? return false if author.suspended? @@ -32,17 +28,13 @@ class StatusPolicy < ApplicationPolicy end def destroy? - role.can?(:manage_reports) || owned? + owned? end alias unreblog? destroy? def update? - role.can?(:manage_reports) || owned? - end - - def review? - role.can?(:manage_taxonomies) + owned? end private diff --git a/app/views/admin/reports/_media_attachments.html.haml b/app/views/admin/reports/_media_attachments.html.haml new file mode 100644 index 0000000000..d0b7d52c32 --- /dev/null +++ b/app/views/admin/reports/_media_attachments.html.haml @@ -0,0 +1,8 @@ +- if status.ordered_media_attachments.first.video? + - video = status.ordered_media_attachments.first + = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: status.sensitive?, visible: false, width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json +- elsif status.ordered_media_attachments.first.audio? + - audio = status.ordered_media_attachments.first + = react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, duration: audio.file.meta.dig(:original, :duration) +- else + = react_component :media_gallery, height: 343, sensitive: status.sensitive?, visible: false, media: status.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml index 392fc8f812..b2982a42bf 100644 --- a/app/views/admin/reports/_status.html.haml +++ b/app/views/admin/reports/_status.html.haml @@ -12,14 +12,7 @@ = prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis) - unless status.proper.ordered_media_attachments.empty? - - if status.proper.ordered_media_attachments.first.video? - - video = status.proper.ordered_media_attachments.first - = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: status.proper.sensitive?, visible: false, width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json - - elsif status.proper.ordered_media_attachments.first.audio? - - audio = status.proper.ordered_media_attachments.first - = react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, duration: audio.file.meta.dig(:original, :duration) - - else - = react_component :media_gallery, height: 343, sensitive: status.proper.sensitive?, visible: false, media: status.proper.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } + = render partial: 'admin/reports/media_attachments', locals: { status: status.proper } .detailed-status__meta - if status.application @@ -29,7 +22,7 @@ %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) - if status.edited? · - = t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')) + = link_to t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')), admin_account_status_path(status.account_id, status), class: 'detailed-status__datetime' - if status.discarded? · %span.negative-hint= t('admin.statuses.deleted') diff --git a/app/views/admin/status_edits/_status_edit.html.haml b/app/views/admin/status_edits/_status_edit.html.haml new file mode 100644 index 0000000000..19a0e063da --- /dev/null +++ b/app/views/admin/status_edits/_status_edit.html.haml @@ -0,0 +1,20 @@ +.status + .status__content>< + - if status_edit.spoiler_text.blank? + = prerender_custom_emojis(status_content_format(status_edit), status_edit.emojis) + - else + %details< + %summary>< + %strong> Content warning: #{prerender_custom_emojis(h(status_edit.spoiler_text), status_edit.emojis)} + = prerender_custom_emojis(status_content_format(status_edit), status_edit.emojis) + + - unless status_edit.ordered_media_attachments.empty? + = render partial: 'admin/reports/media_attachments', locals: { status: status_edit } + + .detailed-status__meta + %time.formatted{ datetime: status_edit.created_at.iso8601, title: l(status_edit.created_at) }= l(status_edit.created_at) + + - if status_edit.sensitive? + · + = fa_icon('eye-slash fw') + = t('stream_entries.sensitive_content') diff --git a/app/views/admin/statuses/show.html.haml b/app/views/admin/statuses/show.html.haml new file mode 100644 index 0000000000..62b49de8c8 --- /dev/null +++ b/app/views/admin/statuses/show.html.haml @@ -0,0 +1,64 @@ +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + +- content_for :page_title do + = t('statuses.title', name: display_name(@account), quote: truncate(@status.spoiler_text.presence || @status.text, length: 50, omission: '…', escape: false)) + +- content_for :heading_actions do + = link_to t('admin.statuses.open'), ActivityPub::TagManager.instance.url_for(@status), class: 'button', target: '_blank' + +%h3= t('admin.statuses.metadata') + +.table-wrapper + %table.table.horizontal-table + %tbody + %tr + %th= t('admin.statuses.account') + %td= admin_account_link_to @status.account + - if @status.reply? + %tr + %th= t('admin.statuses.in_reply_to') + %td= admin_account_link_to @status.in_reply_to_account, path: admin_account_status_path(@status.thread.account_id, @status.in_reply_to_id) + %tr + %th= t('admin.statuses.application') + %td= @status.application&.name + %tr + %th= t('admin.statuses.language') + %td= standard_locale_name(@status.language) + %tr + %th= t('admin.statuses.visibility') + %td= t("statuses.visibilities.#{@status.visibility}") + - if @status.trend + %tr + %th= t('admin.statuses.trending') + %td + - if @status.trend.allowed? + %abbr{ title: t('admin.trends.tags.current_score', score: @status.trend.score) }= t('admin.trends.tags.trending_rank', rank: @status.trend.rank) + - elsif @status.trend.requires_review? + = t('admin.trends.pending_review') + - else + = t('admin.trends.not_allowed_to_trend') + %tr + %th= t('admin.statuses.reblogs') + %td= friendly_number_to_human @status.reblogs_count + %tr + %th= t('admin.statuses.favourites') + %td= friendly_number_to_human @status.favourites_count + +%hr.spacer/ + +%h3= t('admin.statuses.history') + +%ol.history + - @status.edits.includes(:account, status: [:account]).each.with_index do |status_edit, i| + %li + .history__entry + %h5 + - if i.zero? + = t('admin.statuses.original_status') + - else + = t('admin.statuses.status_changed') + · + %time.formatted{ datetime: status_edit.created_at.iso8601, title: l(status_edit.created_at) }= l(status_edit.created_at) + + = render status_edit diff --git a/config/locales/en.yml b/config/locales/en.yml index 70850d478d..fd845c3c2c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -705,16 +705,29 @@ en: delete: Delete uploaded file destroyed_msg: Site upload successfully deleted! statuses: + account: Author + application: Application back_to_account: Back to account page back_to_report: Back to report page batch: remove_from_report: Remove from report report: Report deleted: Deleted + favourites: Favourites + history: Version history + in_reply_to: Replying to + language: Language media: title: Media + metadata: Metadata no_status_selected: No posts were changed as none were selected + open: Open post + original_status: Original post + reblogs: Reblogs + status_changed: Post changed title: Account posts + trending: Trending + visibility: Visibility with_media: With media strikes: actions: diff --git a/config/routes.rb b/config/routes.rb index b44479e77c..12726a6774 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -325,7 +325,7 @@ Rails.application.routes.draw do resource :reset, only: [:create] resource :action, only: [:new, :create], controller: 'account_actions' - resources :statuses, only: [:index] do + resources :statuses, only: [:index, :show] do collection do post :batch end diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb index 205ecd7202..b88521708a 100644 --- a/spec/policies/status_policy_spec.rb +++ b/spec/policies/status_policy_spec.rb @@ -96,10 +96,6 @@ RSpec.describe StatusPolicy, type: :model do expect(subject).to permit(status.account, status) end - it 'grants access when account is admin' do - expect(subject).to permit(admin.account, status) - end - it 'denies access when account is not deleter' do expect(subject).to_not permit(bob, status) end @@ -125,27 +121,9 @@ RSpec.describe StatusPolicy, type: :model do end end - permissions :index? do - it 'grants access if staff' do - expect(subject).to permit(admin.account) - end - - it 'denies access unless staff' do - expect(subject).to_not permit(alice) - end - end - permissions :update? do - it 'grants access if staff' do - expect(subject).to permit(admin.account, status) - end - it 'grants access if owner' do expect(subject).to permit(status.account, status) end - - it 'denies access unless staff' do - expect(subject).to_not permit(bob, status) - end end end From 1ce17cf316c3d4021f60998981e542a20a7038bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:52:01 +0900 Subject: [PATCH 114/500] Bump jest from 29.1.2 to 29.2.2 (#19467) Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.1.2 to 29.2.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.2.2/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 712 +++++++++++++++++++++++++-------------------------- 2 files changed, 344 insertions(+), 370 deletions(-) diff --git a/package.json b/package.json index c8b9aa152b..94b8dd7ed9 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "eslint-plugin-jsx-a11y": "~6.6.1", "eslint-plugin-promise": "~6.1.1", "eslint-plugin-react": "~7.31.10", - "jest": "^29.1.2", + "jest": "^29.2.2", "jest-environment-jsdom": "^29.2.1", "postcss-scss": "^4.0.5", "prettier": "^2.7.1", diff --git a/yarn.lock b/yarn.lock index 772d8a6c80..0a14b966a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1325,53 +1325,53 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.1.2.tgz#0ae975a70004696f8320490fcaa1a4152f7b62e4" - integrity sha512-ujEBCcYs82BTmRxqfHMQggSlkUZP63AE5YEaTPj7eFyJOzukkTorstOUC7L6nE3w5SYadGVAnTsQ/ZjTGL0qYQ== +"@jest/console@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.2.1.tgz#5f2c62dcdd5ce66e94b6d6729e021758bceea090" + integrity sha512-MF8Adcw+WPLZGBiNxn76DOuczG3BhODTcMlDCA4+cFi41OkaY/lyI0XUUhi73F88Y+7IHoGmD80pN5CtxQUdSw== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.1.2" - jest-util "^29.1.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" slash "^3.0.0" -"@jest/core@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.1.2.tgz#e5ce7a71e7da45156a96fb5eeed11d18b67bd112" - integrity sha512-sCO2Va1gikvQU2ynDN8V4+6wB7iVrD2CvT0zaRst4rglf56yLly0NQ9nuRRAWFeimRf+tCdFsb1Vk1N9LrrMPA== +"@jest/core@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.2.2.tgz#207aa8973d9de8769f9518732bc5f781efc3ffa7" + integrity sha512-susVl8o2KYLcZhhkvSB+b7xX575CX3TmSvxfeDjpRko7KmT89rHkXj6XkDkNpSeFMBzIENw5qIchO9HC9Sem+A== dependencies: - "@jest/console" "^29.1.2" - "@jest/reporters" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.2.1" + "@jest/reporters" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^29.0.0" - jest-config "^29.1.2" - jest-haste-map "^29.1.2" - jest-message-util "^29.1.2" - jest-regex-util "^29.0.0" - jest-resolve "^29.1.2" - jest-resolve-dependencies "^29.1.2" - jest-runner "^29.1.2" - jest-runtime "^29.1.2" - jest-snapshot "^29.1.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" - jest-watcher "^29.1.2" + jest-changed-files "^29.2.0" + jest-config "^29.2.2" + jest-haste-map "^29.2.1" + jest-message-util "^29.2.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.2.2" + jest-resolve-dependencies "^29.2.2" + jest-runner "^29.2.2" + jest-runtime "^29.2.2" + jest-snapshot "^29.2.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" + jest-watcher "^29.2.2" micromatch "^4.0.4" - pretty-format "^29.1.2" + pretty-format "^29.2.1" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.1.2", "@jest/environment@^29.2.1": +"@jest/environment@^29.2.1": version "29.2.1" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.1.tgz#acb1994fbd5ad02819a1a34a923c531e6923b665" integrity sha512-EutqA7T/X6zFjw6mAWRHND+ZkTPklmIEWCNbmwX6uCmOrFrWaLbDZjA+gePHJx6fFMMRvNfjXcvzXEtz54KPlg== @@ -1381,22 +1381,32 @@ "@types/node" "*" jest-mock "^29.2.1" -"@jest/expect-utils@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.1.2.tgz#66dbb514d38f7d21456bc774419c9ae5cca3f88d" - integrity sha512-4a48bhKfGj/KAH39u0ppzNTABXQ8QPccWAFUFobWBaEMSMp+sB31Z2fK/l47c4a/Mu1po2ffmfAIPxXbVTXdtg== +"@jest/environment@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.2.tgz#481e729048d42e87d04842c38aa4d09c507f53b0" + integrity sha512-OWn+Vhu0I1yxuGBJEFFekMYc8aGBGrY4rt47SOh/IFaI+D7ZHCk7pKRiSoZ2/Ml7b0Ony3ydmEHRx/tEOC7H1A== + dependencies: + "@jest/fake-timers" "^29.2.2" + "@jest/types" "^29.2.1" + "@types/node" "*" + jest-mock "^29.2.2" + +"@jest/expect-utils@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.2.2.tgz#460a5b5a3caf84d4feb2668677393dd66ff98665" + integrity sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg== dependencies: - jest-get-type "^29.0.0" + jest-get-type "^29.2.0" -"@jest/expect@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.1.2.tgz#334a86395f621f1ab63ad95b06a588b9114d7b7a" - integrity sha512-FXw/UmaZsyfRyvZw3M6POgSNqwmuOXJuzdNiMWW9LCYo0GRoRDhg+R5iq5higmRTHQY7hx32+j7WHwinRmoILQ== +"@jest/expect@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.2.2.tgz#81edbd33afbde7795ca07ff6b4753d15205032e4" + integrity sha512-zwblIZnrIVt8z/SiEeJ7Q9wKKuB+/GS4yZe9zw7gMqfGf4C5hBLGrVyxu1SzDbVSqyMSlprKl3WL1r80cBNkgg== dependencies: - expect "^29.1.2" - jest-snapshot "^29.1.2" + expect "^29.2.2" + jest-snapshot "^29.2.2" -"@jest/fake-timers@^29.1.2", "@jest/fake-timers@^29.2.1": +"@jest/fake-timers@^29.2.1": version "29.2.1" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.1.tgz#786d60e8cb60ca70c9f913cb49fcc77610c072bb" integrity sha512-KWil+8fef7Uj/P/PTZlPKk1Pw117wAmr71VWFV8ZDtRtkwmTG8oY4IRf0Ss44J2y5CYRy8d/zLOhxyoGRENjvA== @@ -1408,26 +1418,38 @@ jest-mock "^29.2.1" jest-util "^29.2.1" -"@jest/globals@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.1.2.tgz#826ede84bc280ae7f789cb72d325c48cd048b9d3" - integrity sha512-uMgfERpJYoQmykAd0ffyMq8wignN4SvLUG6orJQRe9WAlTRc9cdpCaE/29qurXixYJVZWUqIBXhSk8v5xN1V9g== +"@jest/fake-timers@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.2.tgz#d8332e6e3cfa99cde4bc87d04a17d6b699deb340" + integrity sha512-nqaW3y2aSyZDl7zQ7t1XogsxeavNpH6kkdq+EpXncIDvAkjvFD7hmhcIs1nWloengEWUoWqkqSA6MSbf9w6DgA== dependencies: - "@jest/environment" "^29.1.2" - "@jest/expect" "^29.1.2" - "@jest/types" "^29.1.2" - jest-mock "^29.1.2" + "@jest/types" "^29.2.1" + "@sinonjs/fake-timers" "^9.1.2" + "@types/node" "*" + jest-message-util "^29.2.1" + jest-mock "^29.2.2" + jest-util "^29.2.1" + +"@jest/globals@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.2.2.tgz#205ff1e795aa774301c2c0ba0be182558471b845" + integrity sha512-/nt+5YMh65kYcfBhj38B3Hm0Trk4IsuMXNDGKE/swp36yydBWfz3OXkLqkSvoAtPW8IJMSJDFCbTM2oj5SNprw== + dependencies: + "@jest/environment" "^29.2.2" + "@jest/expect" "^29.2.2" + "@jest/types" "^29.2.1" + jest-mock "^29.2.2" -"@jest/reporters@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.1.2.tgz#5520898ed0a4ecf69d8b671e1dc8465d0acdfa6e" - integrity sha512-X4fiwwyxy9mnfpxL0g9DD0KcTmEIqP0jUdnc2cfa9riHy+I6Gwwp5vOZiwyg0vZxfSDxrOlK9S4+340W4d+DAA== +"@jest/reporters@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.2.2.tgz#69b395f79c3a97ce969ce05ccf1a482e5d6de290" + integrity sha512-AzjL2rl2zJC0njIzcooBvjA4sJjvdoq98sDuuNs4aNugtLPSQ+91nysGKRF0uY1to5k0MdGMdOBggUsPqvBcpA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.2.1" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" @@ -1440,13 +1462,12 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.1.2" - jest-util "^29.1.2" - jest-worker "^29.1.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" + jest-worker "^29.2.1" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" - terminal-link "^2.0.0" v8-to-istanbul "^9.0.1" "@jest/schemas@^29.0.0": @@ -1456,36 +1477,36 @@ dependencies: "@sinclair/typebox" "^0.24.1" -"@jest/source-map@^29.0.0": - version "29.0.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.0.0.tgz#f8d1518298089f8ae624e442bbb6eb870ee7783c" - integrity sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ== +"@jest/source-map@^29.2.0": + version "29.2.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" + integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== dependencies: "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.1.2.tgz#6a8d006eb2b31ce0287d1fc10d12b8ff8504f3c8" - integrity sha512-jjYYjjumCJjH9hHCoMhA8PCl1OxNeGgAoZ7yuGYILRJX9NjgzTN0pCT5qAoYR4jfOP8htIByvAlz9vfNSSBoVg== +"@jest/test-result@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.2.1.tgz#f42dbf7b9ae465d0a93eee6131473b8bb3bd2edb" + integrity sha512-lS4+H+VkhbX6z64tZP7PAUwPqhwj3kbuEHcaLuaBuB+riyaX7oa1txe0tXgrFj5hRWvZKvqO7LZDlNWeJ7VTPA== dependencies: - "@jest/console" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.2.1" + "@jest/types" "^29.2.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.1.2": - version "29.1.2" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.1.2.tgz#10bfd89c08bfdba382eb05cc79c1d23a01238a93" - integrity sha512-fU6dsUqqm8sA+cd85BmeF7Gu9DsXVWFdGn9taxM6xN1cKdcP/ivSgXh5QucFRFz1oZxKv3/9DYYbq0ULly3P/Q== +"@jest/test-sequencer@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.2.2.tgz#4ac7487b237e517a1f55e7866fb5553f6e0168b9" + integrity sha512-Cuc1znc1pl4v9REgmmLf0jBd3Y65UXJpioGYtMr/JNpQEIGEzkmHhy6W6DLbSsXeUA13TDzymPv0ZGZ9jH3eIw== dependencies: - "@jest/test-result" "^29.1.2" + "@jest/test-result" "^29.2.1" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" + jest-haste-map "^29.2.1" slash "^3.0.0" -"@jest/transform@^29.1.2", "@jest/transform@^29.2.1": +"@jest/transform@^29.2.1": version "29.2.1" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.1.tgz#f3d8154edd19cdbcaf1d6646bd8f4ff7812318a2" integrity sha512-xup+iEuaIRSQabQaeqxaQyN0vg1Dctrp9oTObQsNf3sZEowTIa5cANYuoyi8Tqhg4GCqEVLTf18KW7ii0UeFVA== @@ -1506,6 +1527,27 @@ slash "^3.0.0" write-file-atomic "^4.0.1" +"@jest/transform@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.2.tgz#dfc03fc092b31ffea0c55917728e75bfcf8b5de6" + integrity sha512-aPe6rrletyuEIt2axxgdtxljmzH8O/nrov4byy6pDw9S8inIrTV+2PnjyP/oFHMSynzGxJ2s6OHowBNMXp/Jzg== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.2.1" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.2.1" + jest-regex-util "^29.2.0" + jest-util "^29.2.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.1" + "@jest/types@^25.5.0": version "25.5.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" @@ -1527,18 +1569,6 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^29.1.2", "@jest/types@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" - integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw== - dependencies: - "@jest/schemas" "^29.0.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^29.2.1": version "29.2.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" @@ -2667,7 +2697,7 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^29.1.2, babel-jest@^29.2.1: +babel-jest@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.1.tgz#213c47e28072de11bdb98c9d29b89f2ab99664f1" integrity sha512-gQJwArok0mqoREiCYhXKWOgUhElJj9DpnssW6GL8dG7ARYqHEhrM9fmPHTjdqEGRVXZAd6+imo3/Vwa8TjLcsw== @@ -2680,6 +2710,19 @@ babel-jest@^29.1.2, babel-jest@^29.2.1: graceful-fs "^4.2.9" slash "^3.0.0" +babel-jest@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.2.tgz#2c15abd8c2081293c9c3f4f80a4ed1d51542fee5" + integrity sha512-kkq2QSDIuvpgfoac3WZ1OOcHsQQDU5xYk2Ql7tLdJ8BVAYbefEXal+NfS45Y5LVZA7cxC8KYcQMObpCt1J025w== + dependencies: + "@jest/transform" "^29.2.2" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.2.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + babel-loader@^8.2.5: version "8.2.5" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" @@ -4231,10 +4274,10 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.0.0.tgz#bae49972ef3933556bcb0800b72e8579d19d9e4f" - integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA== +diff-sequences@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.2.0.tgz#4c55b5b40706c7b5d2c5c75999a50c56d214e8f6" + integrity sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw== diffie-hellman@^5.0.0: version "5.0.3" @@ -4406,10 +4449,10 @@ elliptic@^6.5.3: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== "emoji-mart@npm:emoji-mart-lazyload": version "3.0.1-j" @@ -4940,16 +4983,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.1.2.tgz#82f8f28d7d408c7c68da3a386a490ee683e1eced" - integrity sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw== +expect@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.2.2.tgz#ba2dd0d7e818727710324a6e7f13dd0e6d086106" + integrity sha512-hE09QerxZ5wXiOhqkXy5d2G9ar+EqOyifnCXCpMNu+vZ6DG9TJ6CO2c2kPDSLqERTTWrO7OZj8EkYHQqSd78Yw== dependencies: - "@jest/expect-utils" "^29.1.2" - jest-get-type "^29.0.0" - jest-matcher-utils "^29.1.2" - jest-message-util "^29.1.2" - jest-util "^29.1.2" + "@jest/expect-utils" "^29.2.2" + jest-get-type "^29.2.0" + jest-matcher-utils "^29.2.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" express@^4.17.1, express@^4.18.2: version "4.18.2" @@ -6589,82 +6632,82 @@ jake@^10.8.5: filelist "^1.0.1" minimatch "^3.0.4" -jest-changed-files@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.0.0.tgz#aa238eae42d9372a413dd9a8dadc91ca1806dce0" - integrity sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ== +jest-changed-files@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" + integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA== dependencies: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.1.2.tgz#4551068e432f169a53167fe1aef420cf51c8a735" - integrity sha512-ajQOdxY6mT9GtnfJRZBRYS7toNIJayiiyjDyoZcnvPRUPwJ58JX0ci0PKAKUo2C1RyzlHw0jabjLGKksO42JGA== +jest-circus@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.2.2.tgz#1dc4d35fd49bf5e64d3cc505fb2db396237a6dfa" + integrity sha512-upSdWxx+Mh4DV7oueuZndJ1NVdgtTsqM4YgywHEx05UMH5nxxA2Qu9T9T9XVuR021XxqSoaKvSmmpAbjwwwxMw== dependencies: - "@jest/environment" "^29.1.2" - "@jest/expect" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.2.2" + "@jest/expect" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^29.1.2" - jest-matcher-utils "^29.1.2" - jest-message-util "^29.1.2" - jest-runtime "^29.1.2" - jest-snapshot "^29.1.2" - jest-util "^29.1.2" + jest-each "^29.2.1" + jest-matcher-utils "^29.2.2" + jest-message-util "^29.2.1" + jest-runtime "^29.2.2" + jest-snapshot "^29.2.2" + jest-util "^29.2.1" p-limit "^3.1.0" - pretty-format "^29.1.2" + pretty-format "^29.2.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.1.2.tgz#423b9c5d3ea20a50b1354b8bf3f2a20e72110e89" - integrity sha512-vsvBfQ7oS2o4MJdAH+4u9z76Vw5Q8WBQF5MchDbkylNknZdrPTX1Ix7YRJyTlOWqRaS7ue/cEAn+E4V1MWyMzw== +jest-cli@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.2.2.tgz#feaf0aa57d327e80d4f2f18d5f8cd2e77cac5371" + integrity sha512-R45ygnnb2CQOfd8rTPFR+/fls0d+1zXS6JPYTBBrnLPrhr58SSuPTiA5Tplv8/PXpz4zXR/AYNxmwIj6J6nrvg== dependencies: - "@jest/core" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/core" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/types" "^29.2.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.1.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" + jest-config "^29.2.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.1.2.tgz#7d004345ca4c09f5d8f802355f54494e90842f4d" - integrity sha512-EC3Zi86HJUOz+2YWQcJYQXlf0zuBhJoeyxLM6vb6qJsVmpP7KcCP1JnyF0iaqTaXdBP8Rlwsvs7hnKWQWWLwwA== +jest-config@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.2.2.tgz#bf98623a46454d644630c1f0de8bba3f495c2d59" + integrity sha512-Q0JX54a5g1lP63keRfKR8EuC7n7wwny2HoTRDb8cx78IwQOiaYUVZAdjViY3WcTxpR02rPUpvNVmZ1fkIlZPcw== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.1.2" - "@jest/types" "^29.1.2" - babel-jest "^29.1.2" + "@jest/test-sequencer" "^29.2.2" + "@jest/types" "^29.2.1" + babel-jest "^29.2.2" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.1.2" - jest-environment-node "^29.1.2" - jest-get-type "^29.0.0" - jest-regex-util "^29.0.0" - jest-resolve "^29.1.2" - jest-runner "^29.1.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" + jest-circus "^29.2.2" + jest-environment-node "^29.2.2" + jest-get-type "^29.2.0" + jest-regex-util "^29.2.0" + jest-resolve "^29.2.2" + jest-runner "^29.2.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.1.2" + pretty-format "^29.2.1" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -6678,33 +6721,33 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.1.2.tgz#bb7aaf5353227d6f4f96c5e7e8713ce576a607dc" - integrity sha512-4GQts0aUopVvecIT4IwD/7xsBaMhKTYoM4/njE/aVw9wpw+pIUVp8Vab/KnSzSilr84GnLBkaP3JLDnQYCKqVQ== +jest-diff@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.2.1.tgz#027e42f5a18b693fb2e88f81b0ccab533c08faee" + integrity sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA== dependencies: chalk "^4.0.0" - diff-sequences "^29.0.0" - jest-get-type "^29.0.0" - pretty-format "^29.1.2" + diff-sequences "^29.2.0" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" -jest-docblock@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.0.0.tgz#3151bcc45ed7f5a8af4884dcc049aee699b4ceae" - integrity sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw== +jest-docblock@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" + integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== dependencies: detect-newline "^3.0.0" -jest-each@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.1.2.tgz#d4c8532c07a846e79f194f7007ce7cb1987d1cd0" - integrity sha512-AmTQp9b2etNeEwMyr4jc0Ql/LIX/dhbgP21gHAizya2X6rUspHn2gysMXaj6iwWuOJ2sYRgP8c1P4cXswgvS1A== +jest-each@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.2.1.tgz#6b0a88ee85c2ba27b571a6010c2e0c674f5c9b29" + integrity sha512-sGP86H/CpWHMyK3qGIGFCgP6mt+o5tu9qG4+tobl0LNdgny0aitLXs9/EBacLy3Bwqy+v4uXClqJgASJWcruYw== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" chalk "^4.0.0" - jest-get-type "^29.0.0" - jest-util "^29.1.2" - pretty-format "^29.1.2" + jest-get-type "^29.2.0" + jest-util "^29.2.1" + pretty-format "^29.2.1" jest-environment-jsdom@^29.2.1: version "29.2.1" @@ -6720,46 +6763,27 @@ jest-environment-jsdom@^29.2.1: jest-util "^29.2.1" jsdom "^20.0.0" -jest-environment-node@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.1.2.tgz#005e05cc6ea4b9b5ba55906ab1ce53c82f6907a7" - integrity sha512-C59yVbdpY8682u6k/lh8SUMDJPbOyCHOTgLVVi1USWFxtNV+J8fyIwzkg+RJIVI30EKhKiAGNxYaFr3z6eyNhQ== +jest-environment-node@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.2.2.tgz#a64b272773870c3a947cd338c25fd34938390bc2" + integrity sha512-B7qDxQjkIakQf+YyrqV5dICNs7tlCO55WJ4OMSXsqz1lpI/0PmeuXdx2F7eU8rnPbRkUR/fItSSUh0jvE2y/tw== dependencies: - "@jest/environment" "^29.1.2" - "@jest/fake-timers" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" - jest-mock "^29.1.2" - jest-util "^29.1.2" + jest-mock "^29.2.2" + jest-util "^29.2.1" jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-get-type@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80" - integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== - -jest-haste-map@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.1.2.tgz#93f3634aa921b6b654e7c94137b24e02e7ca6ac9" - integrity sha512-xSjbY8/BF11Jh3hGSPfYTa/qBFrm3TPM7WU8pU93m2gqzORVLkHFWvuZmFsTEBPRKndfewXhMOuzJNHyJIZGsw== - dependencies: - "@jest/types" "^29.1.2" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.0.0" - jest-util "^29.1.2" - jest-worker "^29.1.2" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" +jest-get-type@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" + integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== jest-haste-map@^29.2.1: version "29.2.1" @@ -6780,38 +6804,23 @@ jest-haste-map@^29.2.1: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.1.2.tgz#4c846db14c58219430ccbc4f01a1ec52ebee4fc2" - integrity sha512-TG5gAZJpgmZtjb6oWxBLf2N6CfQ73iwCe6cofu/Uqv9iiAm6g502CAnGtxQaTfpHECBdVEMRBhomSXeLnoKjiQ== - dependencies: - jest-get-type "^29.0.0" - pretty-format "^29.1.2" - -jest-matcher-utils@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.1.2.tgz#e68c4bcc0266e70aa1a5c13fb7b8cd4695e318a1" - integrity sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw== +jest-leak-detector@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.2.1.tgz#ec551686b7d512ec875616c2c3534298b1ffe2fc" + integrity sha512-1YvSqYoiurxKOJtySc+CGVmw/e1v4yNY27BjWTVzp0aTduQeA7pdieLiW05wTYG/twlKOp2xS/pWuikQEmklug== dependencies: - chalk "^4.0.0" - jest-diff "^29.1.2" - jest-get-type "^29.0.0" - pretty-format "^29.1.2" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" -jest-message-util@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.1.2.tgz#c21a33c25f9dc1ebfcd0f921d89438847a09a501" - integrity sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ== +jest-matcher-utils@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz#9202f8e8d3a54733266784ce7763e9a08688269c" + integrity sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw== dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.1.2" - "@types/stack-utils" "^2.0.0" chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.1.2" - slash "^3.0.0" - stack-utils "^2.0.3" + jest-diff "^29.2.1" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" jest-message-util@^29.2.1: version "29.2.1" @@ -6828,7 +6837,7 @@ jest-message-util@^29.2.1: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.1.2, jest-mock@^29.2.1: +jest-mock@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.1.tgz#a0d361cffcb28184fa9c5443adbf591fa5759775" integrity sha512-NDphaY/GqyQpTfnTZiTqqpMaw4Z0I7XnB7yBgrT6IwYrLGxpOhrejYr4ANY4YvO2sEGdd8Tx/6D0+WLQy7/qDA== @@ -6837,103 +6846,107 @@ jest-mock@^29.1.2, jest-mock@^29.2.1: "@types/node" "*" jest-util "^29.2.1" +jest-mock@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.2.tgz#9045618b3f9d27074bbcf2d55bdca6a5e2e8bca7" + integrity sha512-1leySQxNAnivvbcx0sCB37itu8f4OX2S/+gxLAV4Z62shT4r4dTG9tACDywUAEZoLSr36aYUTsVp3WKwWt4PMQ== + dependencies: + "@jest/types" "^29.2.1" + "@types/node" "*" + jest-util "^29.2.1" + jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^29.0.0: - version "29.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.0.0.tgz#b442987f688289df8eb6c16fa8df488b4cd007de" - integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug== - jest-regex-util@^29.2.0: version "29.2.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== -jest-resolve-dependencies@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.1.2.tgz#a6919e58a0c7465582cb8ec2d745b4e64ae8647f" - integrity sha512-44yYi+yHqNmH3OoWZvPgmeeiwKxhKV/0CfrzaKLSkZG9gT973PX8i+m8j6pDrTYhhHoiKfF3YUFg/6AeuHw4HQ== +jest-resolve-dependencies@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.2.tgz#1f444766f37a25f1490b5137408b6ff746a05d64" + integrity sha512-wWOmgbkbIC2NmFsq8Lb+3EkHuW5oZfctffTGvwsA4JcJ1IRk8b2tg+hz44f0lngvRTeHvp3Kyix9ACgudHH9aQ== dependencies: - jest-regex-util "^29.0.0" - jest-snapshot "^29.1.2" + jest-regex-util "^29.2.0" + jest-snapshot "^29.2.2" -jest-resolve@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.1.2.tgz#9dd8c2fc83e59ee7d676b14bd45a5f89e877741d" - integrity sha512-7fcOr+k7UYSVRJYhSmJHIid3AnDBcLQX3VmT9OSbPWsWz1MfT7bcoerMhADKGvKCoMpOHUQaDHtQoNp/P9JMGg== +jest-resolve@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.2.2.tgz#ad6436053b0638b41e12bbddde2b66e1397b35b5" + integrity sha512-3gaLpiC3kr14rJR3w7vWh0CBX2QAhfpfiQTwrFPvVrcHe5VUBtIXaR004aWE/X9B2CFrITOQAp5gxLONGrk6GA== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" + jest-haste-map "^29.2.1" jest-pnp-resolver "^1.2.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.1.2.tgz#f18b2b86101341e047de8c2f51a5fdc4e97d053a" - integrity sha512-yy3LEWw8KuBCmg7sCGDIqKwJlULBuNIQa2eFSVgVASWdXbMYZ9H/X0tnXt70XFoGf92W2sOQDOIFAA6f2BG04Q== +jest-runner@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.2.2.tgz#6b5302ed15eba8bf05e6b14d40f1e8d469564da3" + integrity sha512-1CpUxXDrbsfy9Hr9/1zCUUhT813kGGK//58HeIw/t8fa/DmkecEwZSWlb1N/xDKXg3uCFHQp1GCvlSClfImMxg== dependencies: - "@jest/console" "^29.1.2" - "@jest/environment" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.2.1" + "@jest/environment" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.10.2" + emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^29.0.0" - jest-environment-node "^29.1.2" - jest-haste-map "^29.1.2" - jest-leak-detector "^29.1.2" - jest-message-util "^29.1.2" - jest-resolve "^29.1.2" - jest-runtime "^29.1.2" - jest-util "^29.1.2" - jest-watcher "^29.1.2" - jest-worker "^29.1.2" + jest-docblock "^29.2.0" + jest-environment-node "^29.2.2" + jest-haste-map "^29.2.1" + jest-leak-detector "^29.2.1" + jest-message-util "^29.2.1" + jest-resolve "^29.2.2" + jest-runtime "^29.2.2" + jest-util "^29.2.1" + jest-watcher "^29.2.2" + jest-worker "^29.2.1" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.1.2.tgz#dbcd57103d61115479108d5864bdcd661d9c6783" - integrity sha512-jr8VJLIf+cYc+8hbrpt412n5jX3tiXmpPSYTGnwcvNemY+EOuLNiYnHJ3Kp25rkaAcTWOEI4ZdOIQcwYcXIAZw== - dependencies: - "@jest/environment" "^29.1.2" - "@jest/fake-timers" "^29.1.2" - "@jest/globals" "^29.1.2" - "@jest/source-map" "^29.0.0" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" +jest-runtime@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.2.2.tgz#4068ee82423769a481460efd21d45a8efaa5c179" + integrity sha512-TpR1V6zRdLynckKDIQaY41od4o0xWL+KOPUCZvJK2bu5P1UXhjobt5nJ2ICNeIxgyj9NGkO0aWgDqYPVhDNKjA== + dependencies: + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" + "@jest/globals" "^29.2.2" + "@jest/source-map" "^29.2.0" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" - jest-message-util "^29.1.2" - jest-mock "^29.1.2" - jest-regex-util "^29.0.0" - jest-resolve "^29.1.2" - jest-snapshot "^29.1.2" - jest-util "^29.1.2" + jest-haste-map "^29.2.1" + jest-message-util "^29.2.1" + jest-mock "^29.2.2" + jest-regex-util "^29.2.0" + jest-resolve "^29.2.2" + jest-snapshot "^29.2.2" + jest-util "^29.2.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.1.2.tgz#7dd277e88c45f2d2ff5888de1612e63c7ceb575b" - integrity sha512-rYFomGpVMdBlfwTYxkUp3sjD6usptvZcONFYNqVlaz4EpHPnDvlWjvmOQ9OCSNKqYZqLM2aS3wq01tWujLg7gg== +jest-snapshot@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.2.2.tgz#1016ce60297b77382386bad561107174604690c2" + integrity sha512-GfKJrpZ5SMqhli3NJ+mOspDqtZfJBryGA8RIBxF+G+WbDoC7HCqKaeAss4Z/Sab6bAW11ffasx8/vGsj83jyjA== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -6941,37 +6954,25 @@ jest-snapshot@^29.1.2: "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/expect-utils" "^29.2.2" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.1.2" + expect "^29.2.2" graceful-fs "^4.2.9" - jest-diff "^29.1.2" - jest-get-type "^29.0.0" - jest-haste-map "^29.1.2" - jest-matcher-utils "^29.1.2" - jest-message-util "^29.1.2" - jest-util "^29.1.2" + jest-diff "^29.2.1" + jest-get-type "^29.2.0" + jest-haste-map "^29.2.1" + jest-matcher-utils "^29.2.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" natural-compare "^1.4.0" - pretty-format "^29.1.2" + pretty-format "^29.2.1" semver "^7.3.5" -jest-util@^29.1.2, jest-util@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747" - integrity sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g== - dependencies: - "@jest/types" "^29.2.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-util@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747" @@ -6984,30 +6985,30 @@ jest-util@^29.2.1: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.1.2.tgz#83a728b8f6354da2e52346878c8bc7383516ca51" - integrity sha512-k71pOslNlV8fVyI+mEySy2pq9KdXdgZtm7NHrBX8LghJayc3wWZH0Yr0mtYNGaCU4F1OLPXRkwZR0dBm/ClshA== +jest-validate@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.2.2.tgz#e43ce1931292dfc052562a11bc681af3805eadce" + integrity sha512-eJXATaKaSnOuxNfs8CLHgdABFgUrd0TtWS8QckiJ4L/QVDF4KVbZFBBOwCBZHOS0Rc5fOxqngXeGXE3nGQkpQA== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.2.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^29.0.0" + jest-get-type "^29.2.0" leven "^3.1.0" - pretty-format "^29.1.2" + pretty-format "^29.2.1" -jest-watcher@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.1.2.tgz#de21439b7d889e2fcf62cc2a4779ef1a3f1f3c62" - integrity sha512-6JUIUKVdAvcxC6bM8/dMgqY2N4lbT+jZVsxh0hCJRbwkIEnbr/aPjMQ28fNDI5lB51Klh00MWZZeVf27KBUj5w== +jest-watcher@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.2.2.tgz#7093d4ea8177e0a0da87681a9e7b09a258b9daf7" + integrity sha512-j2otfqh7mOvMgN2WlJ0n7gIx9XCMWntheYGlBK7+5g3b1Su13/UAK7pdKGyd4kDlrLwtH2QPvRv5oNIxWvsJ1w== dependencies: - "@jest/test-result" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/test-result" "^29.2.1" + "@jest/types" "^29.2.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^29.1.2" + emittery "^0.13.1" + jest-util "^29.2.1" string-length "^4.0.1" jest-worker@^26.2.1: @@ -7028,16 +7029,6 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.1.2.tgz#a68302af61bce82b42a9a57285ca7499d29b2afc" - integrity sha512-AdTZJxKjTSPHbXT/AIOjQVmoFx0LHFcVabWu0sxI7PAy7rFf8c0upyvgBKgguVXdM4vY74JdwkyD4hSmpTW8jA== - dependencies: - "@types/node" "*" - jest-util "^29.1.2" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.2.1.tgz#8ba68255438252e1674f990f0180c54dfa26a3b1" @@ -7048,15 +7039,15 @@ jest-worker@^29.2.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.1.2.tgz#f821a1695ffd6cd0efc3b59d2dfcc70a98582499" - integrity sha512-5wEIPpCezgORnqf+rCaYD1SK+mNN7NsstWzIsuvsnrhR/hSxXWd82oI7DkrbJ+XTD28/eG8SmxdGvukrGGK6Tw== +jest@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.2.2.tgz#24da83cbbce514718acd698926b7679109630476" + integrity sha512-r+0zCN9kUqoON6IjDdjbrsWobXM/09Nd45kIPRD8kloaRh1z5ZCMdVsgLXGxmlL7UpAJsvCYOQNO+NjvG/gqiQ== dependencies: - "@jest/core" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/core" "^29.2.2" + "@jest/types" "^29.2.1" import-local "^3.0.2" - jest-cli "^29.1.2" + jest-cli "^29.2.2" js-base64@^2.1.9: version "2.6.4" @@ -9080,15 +9071,6 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.1.2.tgz#b1f6b75be7d699be1a051f5da36e8ae9e76a8e6a" - integrity sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg== - dependencies: - "@jest/schemas" "^29.0.0" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-format@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.2.1.tgz#86e7748fe8bbc96a6a4e04fa99172630907a9611" @@ -10906,7 +10888,7 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.3.0: +supports-hyperlinks@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== @@ -10996,14 +10978,6 @@ tempy@^0.6.0: type-fest "^0.16.0" unique-string "^2.0.0" -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - terser-webpack-plugin@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" From ca6e92fdb83ca00fe0c5c632ab81f9eaf47cafd2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 14:01:02 +0200 Subject: [PATCH 115/500] Fix warning about constants in routes (#19466) --- config/routes.rb | 52 ++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 12726a6774..fd0cbab2b9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,32 +3,32 @@ require 'sidekiq_unique_jobs/web' require 'sidekiq-scheduler/web' -# Paths of routes on the web app that to not require to be indexed or -# have alternative format representations requiring separate controllers -WEB_APP_PATHS = %w( - /getting-started - /keyboard-shortcuts - /home - /public - /public/local - /conversations - /lists/(*any) - /notifications - /favourites - /bookmarks - /pinned - /start - /directory - /explore/(*any) - /search - /publish - /follow_requests - /blocks - /domain_blocks - /mutes -).freeze - Rails.application.routes.draw do + # Paths of routes on the web app that to not require to be indexed or + # have alternative format representations requiring separate controllers + web_app_paths = %w( + /getting-started + /keyboard-shortcuts + /home + /public + /public/local + /conversations + /lists/(*any) + /notifications + /favourites + /bookmarks + /pinned + /start + /directory + /explore/(*any) + /search + /publish + /follow_requests + /blocks + /domain_blocks + /mutes + ).freeze + root 'home#index' mount LetterOpenerWeb::Engine, at: 'letter_opener' if Rails.env.development? @@ -677,7 +677,7 @@ Rails.application.routes.draw do end end - WEB_APP_PATHS.each do |path| + web_app_paths.each do |path| get path, to: 'home#index' end From 1f986d2e525e349620d5b983b489f0b3089621ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 21:07:47 +0900 Subject: [PATCH 116/500] Bump @babel/plugin-proposal-decorators from 7.19.3 to 7.19.6 (#19445) Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.19.3 to 7.19.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.19.6/packages/babel-plugin-proposal-decorators) --- updated-dependencies: - dependency-name: "@babel/plugin-proposal-decorators" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 94b8dd7ed9..4ae5541944 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "private": true, "dependencies": { "@babel/core": "^7.19.6", - "@babel/plugin-proposal-decorators": "^7.19.3", + "@babel/plugin-proposal-decorators": "^7.19.6", "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.19.6", "@babel/preset-env": "^7.19.4", diff --git a/yarn.lock b/yarn.lock index 0a14b966a5..0ffe398948 100644 --- a/yarn.lock +++ b/yarn.lock @@ -422,10 +422,10 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.19.3": - version "7.19.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.3.tgz#c1977e4902a18cdf9051bf7bf08d97db2fd8b110" - integrity sha512-MbgXtNXqo7RTKYIXVchVJGPvaVufQH3pxvQyfbGvNw1DObIhph+PesYXJTcd8J4DdWibvf6Z2eanOyItX8WnJg== +"@babel/plugin-proposal-decorators@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.19.6.tgz#0f1af5c21957e9a438cc1d08d2a6a6858af127b7" + integrity sha512-PKWforYpkVkogpOW0RaPuh7eQ7AoFgBJP+d87tQCRY2LVbvyGtfRM7RtrhCBsNgZb+2EY28SeWB6p2xe1Z5oAw== dependencies: "@babel/helper-create-class-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" From d96fac8b934fb638e3b047ca7aed63974855bdc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 21:08:16 +0900 Subject: [PATCH 117/500] Bump utf-8-validate from 5.0.9 to 5.0.10 (#19449) Bumps [utf-8-validate](https://github.com/websockets/utf-8-validate) from 5.0.9 to 5.0.10. - [Release notes](https://github.com/websockets/utf-8-validate/releases) - [Commits](https://github.com/websockets/utf-8-validate/compare/v5.0.9...v5.0.10) --- updated-dependencies: - dependency-name: utf-8-validate dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4ae5541944..9ba8199649 100644 --- a/package.json +++ b/package.json @@ -170,6 +170,6 @@ }, "optionalDependencies": { "bufferutil": "^4.0.7", - "utf-8-validate": "^5.0.9" + "utf-8-validate": "^5.0.10" } } diff --git a/yarn.lock b/yarn.lock index 0ffe398948..7005028afb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11487,10 +11487,10 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -utf-8-validate@^5.0.9: - version "5.0.9" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" - integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== +utf-8-validate@^5.0.10: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== dependencies: node-gyp-build "^4.3.0" From 8ebff0efcb91e8b2a0805ebd4583a274ad5f1a69 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 15:23:00 +0200 Subject: [PATCH 118/500] Change post editing to be enabled in web UI (#19103) --- app/javascript/mastodon/components/status_action_bar.js | 2 +- .../mastodon/features/status/components/action_bar.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index fe8ece0f98..2e0c5e081c 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -280,7 +280,7 @@ class StatusActionBar extends ImmutablePureComponent { } if (writtenByMe) { - // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); + menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 4bd419ca44..1f8181f84b 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -218,9 +218,8 @@ class ActionBar extends React.PureComponent { menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick }); menu.push(null); - // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); + menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); - menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); menu.push(null); From 31e23269f9c35667faa655f0b86bd6eed702ccd1 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Wed, 26 Oct 2022 23:56:37 +0900 Subject: [PATCH 119/500] Fix `/web` prefix (#19468) --- config/routes.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index fd0cbab2b9..f24d539bae 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -681,9 +681,9 @@ Rails.application.routes.draw do get path, to: 'home#index' end - get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web - get '/about', to: 'about#show' - get '/about/more', to: redirect('/about') + get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web, defaults: { any: '' } + get '/about', to: 'about#show' + get '/about/more', to: redirect('/about') get '/privacy-policy', to: 'privacy#show', as: :privacy_policy get '/terms', to: redirect('/privacy-policy') From eebbc5439a4bfa41d6318b0bc5db0f496018fea0 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 27 Oct 2022 01:21:36 +0900 Subject: [PATCH 120/500] Disable media cache on service worker (#19471) --- app/javascript/mastodon/service_worker/entry.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/service_worker/entry.js b/app/javascript/mastodon/service_worker/entry.js index 4ec16d8e22..9026012feb 100644 --- a/app/javascript/mastodon/service_worker/entry.js +++ b/app/javascript/mastodon/service_worker/entry.js @@ -43,7 +43,7 @@ registerRoute( ); registerRoute( - ({ request }) => ['audio', 'image', 'track', 'video'].includes(request.destination), + ({ request }) => request.destination === 'image', new CacheFirst({ cacheName: `m${CACHE_NAME_PREFIX}media`, plugins: [ From aafbc82d88d54ad9c70c6fca0186fb48b423f338 Mon Sep 17 00:00:00 2001 From: prplecake Date: Wed, 26 Oct 2022 12:23:16 -0500 Subject: [PATCH 121/500] Add "unsafe-eval" to script-src CSP (#18817) --- config/initializers/content_security_policy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb index c113b0f8b9..be4ef50fcc 100644 --- a/config/initializers/content_security_policy.rb +++ b/config/initializers/content_security_policy.rb @@ -36,7 +36,7 @@ Rails.application.config.content_security_policy do |p| p.worker_src :self, :blob, assets_host else p.connect_src :self, :data, :blob, assets_host, media_host, Rails.configuration.x.streaming_api_base_url - p.script_src :self, assets_host + p.script_src :self, assets_host, :unsafe_eval p.child_src :self, :blob, assets_host p.worker_src :self, :blob, assets_host end From 2277913f3f01d3bdb9a1661f019221b1cb185fbb Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 26 Oct 2022 19:35:55 +0200 Subject: [PATCH 122/500] Add closed registrations modal (#19437) --- .../closed_registrations_modal/index.js | 75 +++++++++++++++++++ .../features/interaction_modal/index.js | 33 +++++++- .../features/ui/components/modal_root.js | 2 + .../features/ui/components/sign_in_banner.js | 43 +++++++++-- .../features/ui/util/async-components.js | 4 + app/serializers/rest/instance_serializer.rb | 9 ++- 6 files changed, 155 insertions(+), 11 deletions(-) create mode 100644 app/javascript/mastodon/features/closed_registrations_modal/index.js diff --git a/app/javascript/mastodon/features/closed_registrations_modal/index.js b/app/javascript/mastodon/features/closed_registrations_modal/index.js new file mode 100644 index 0000000000..062045b837 --- /dev/null +++ b/app/javascript/mastodon/features/closed_registrations_modal/index.js @@ -0,0 +1,75 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import { FormattedMessage } from 'react-intl'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { domain } from 'mastodon/initial_state'; +import { fetchServer } from 'mastodon/actions/server'; + +const mapStateToProps = state => ({ + closed_registrations_message: state.getIn(['server', 'server', 'registrations', 'closed_registrations_message']), +}); + +export default @connect(mapStateToProps) +class ClosedRegistrationsModal extends ImmutablePureComponent { + + componentDidMount () { + const { dispatch } = this.props; + dispatch(fetchServer()); + } + + render () { + let closedRegistrationsMessage; + + if (this.props.closed_registrations_message) { + closedRegistrationsMessage = ( +

    + ); + } else { + closedRegistrationsMessage = ( +

    + {domain} }} + /> +

    + ); + } + + return ( +
    + ); + } + +}; diff --git a/app/javascript/mastodon/features/interaction_modal/index.js b/app/javascript/mastodon/features/interaction_modal/index.js index 6a7aa9c1c7..9f77479033 100644 --- a/app/javascript/mastodon/features/interaction_modal/index.js +++ b/app/javascript/mastodon/features/interaction_modal/index.js @@ -5,11 +5,19 @@ import { registrationsOpen } from 'mastodon/initial_state'; import { connect } from 'react-redux'; import Icon from 'mastodon/components/icon'; import classNames from 'classnames'; +import { openModal, closeModal } from 'mastodon/actions/modal'; const mapStateToProps = (state, { accountId }) => ({ displayNameHtml: state.getIn(['accounts', accountId, 'display_name_html']), }); +const mapDispatchToProps = (dispatch) => ({ + onSignupClick() { + dispatch(closeModal()); + dispatch(openModal('CLOSED_REGISTRATIONS')); + }, +}); + class Copypaste extends React.PureComponent { static propTypes = { @@ -66,15 +74,20 @@ class Copypaste extends React.PureComponent { } -export default @connect(mapStateToProps) +export default @connect(mapStateToProps, mapDispatchToProps) class InteractionModal extends React.PureComponent { static propTypes = { displayNameHtml: PropTypes.string, url: PropTypes.string, type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow']), + onSignupClick: PropTypes.func.isRequired, }; + handleSignupClick = () => { + this.props.onSignupClick(); + } + render () { const { url, type, displayNameHtml } = this.props; @@ -105,6 +118,22 @@ class InteractionModal extends React.PureComponent { break; } + let signupButton; + + if (registrationsOpen) { + signupButton = ( + + + + ); + } else { + signupButton = ( + + ); + } + return (
    @@ -116,7 +145,7 @@ class InteractionModal extends React.PureComponent {

    - + {signupButton}
    diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 2224a82077..484ebbd8b6 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -23,6 +23,7 @@ import { FilterModal, InteractionModal, SubscribedLanguagesModal, + ClosedRegistrationsModal, } from 'mastodon/features/ui/util/async-components'; import { Helmet } from 'react-helmet'; @@ -44,6 +45,7 @@ const MODAL_COMPONENTS = { 'FILTER': FilterModal, 'SUBSCRIBED_LANGUAGES': SubscribedLanguagesModal, 'INTERACTION': InteractionModal, + 'CLOSED_REGISTRATIONS': ClosedRegistrationsModal, }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/mastodon/features/ui/components/sign_in_banner.js b/app/javascript/mastodon/features/ui/components/sign_in_banner.js index 5ff4ee2a86..8bd32edf90 100644 --- a/app/javascript/mastodon/features/ui/components/sign_in_banner.js +++ b/app/javascript/mastodon/features/ui/components/sign_in_banner.js @@ -1,13 +1,40 @@ -import React from 'react'; +import React, { useCallback } from 'react'; import { FormattedMessage } from 'react-intl'; +import { useDispatch } from 'react-redux'; import { registrationsOpen } from 'mastodon/initial_state'; +import { openModal } from 'mastodon/actions/modal'; -const SignInBanner = () => ( -
    -

    - - -
    -); +const SignInBanner = () => { + const dispatch = useDispatch(); + + const openClosedRegistrationsModal = useCallback( + () => dispatch(openModal('CLOSED_REGISTRATIONS')), + [dispatch], + ); + + let signupButton; + + if (registrationsOpen) { + signupButton = ( + + + + ); + } else { + signupButton = ( + + ); + } + + return ( +
    +

    + + {signupButton} +
    + ); +}; export default SignInBanner; diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index 7686a69ea5..6046578de4 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -174,6 +174,10 @@ export function SubscribedLanguagesModal () { return import(/*webpackChunkName: "modals/subscribed_languages_modal" */'../../subscribed_languages_modal'); } +export function ClosedRegistrationsModal () { + return import(/*webpackChunkName: "modals/closed_registrations_modal" */'../../closed_registrations_modal'); +} + export function About () { return import(/*webpackChunkName: "features/about" */'../../about'); } diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 606e7d8311..2a4da8c3b3 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -81,8 +81,15 @@ class REST::InstanceSerializer < ActiveModel::Serializer def registrations { - enabled: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode, + enabled: registrations_enabled?, approval_required: Setting.registrations_mode == 'approved', + closed_registrations_message: registrations_enabled? ? nil : Setting.closed_registrations_message, } end + + private + + def registrations_enabled? + Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode + end end From 1546538de9f9ab3781d7cee3e07880646124df11 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 20:40:56 +0200 Subject: [PATCH 123/500] Fix improperly checking for blocked domain on followed hashtags (#19472) Fix #19469 --- app/lib/feed_manager.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 657e56ca6d..510667558e 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -253,7 +253,7 @@ class FeedManager next if last_status_score < oldest_home_score end - statuses = target_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, reblog: :account).limit(limit) + statuses = target_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, :media_attachments, :account, reblog: :account).limit(limit) crutches = build_crutches(account.id, statuses) statuses.each do |status| @@ -426,7 +426,7 @@ class FeedManager # @param [Hash] crutches # @return [Boolean] def filter_from_tags?(status, receiver_id, crutches) - receiver_id != status.account_id && (((crutches[:active_mentions][status.id] || []) + [status.account_id]).any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || crutches[:blocked_by][status.account_id] || crutches[:domain_blocking][status.account.domain]) + receiver_id == status.account_id || ((crutches[:active_mentions][status.id] || []) + [status.account_id]).any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || crutches[:blocked_by][status.account_id] || crutches[:domain_blocking][status.account.domain] end # Adds a status to an account's feed, returning true if a status was @@ -547,7 +547,7 @@ class FeedManager crutches[:hiding_reblogs] = Follow.where(account_id: receiver_id, target_account_id: statuses.map { |s| s.account_id if s.reblog? }.compact, show_reblogs: false).pluck(:target_account_id).index_with(true) crutches[:blocking] = Block.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true) crutches[:muting] = Mute.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).index_with(true) - crutches[:domain_blocking] = AccountDomainBlock.where(account_id: receiver_id, domain: statuses.map { |s| s.reblog&.account&.domain }.compact).pluck(:domain).index_with(true) + crutches[:domain_blocking] = AccountDomainBlock.where(account_id: receiver_id, domain: statuses.flat_map { |s| [s.account.domain, s.reblog&.account&.domain] }.compact).pluck(:domain).index_with(true) crutches[:blocked_by] = Block.where(target_account_id: receiver_id, account_id: statuses.map { |s| s.reblog&.account_id }.compact).pluck(:account_id).index_with(true) crutches From 52ebfb7792c29eba1472ec358c2420ba443ba24d Mon Sep 17 00:00:00 2001 From: zunda Date: Wed, 26 Oct 2022 20:14:07 +0000 Subject: [PATCH 124/500] Store integer settings as integer (#19478) --- app/models/form/admin_settings.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 957a32b7c9..431d33bcd9 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -33,6 +33,12 @@ class Form::AdminSettings backups_retention_period ).freeze + INTEGER_KEYS = %i( + media_cache_retention_period + content_cache_retention_period + backups_retention_period + ).freeze + BOOLEAN_KEYS = %i( timeline_preview activity_api_enabled @@ -104,6 +110,8 @@ class Form::AdminSettings def typecast_value(key, value) if BOOLEAN_KEYS.include?(key) value == '1' + elsif INTEGER_KEYS.include?(key) + value.blank? ? value : Integer(value) else value end From f6bcf86caf6a88b020c435bfab4c1ba8d70dd6db Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 02:10:38 +0200 Subject: [PATCH 125/500] Fix wrong math function used in search query (#19481) --- app/services/account_search_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index de1dc7b8ed..9f2330a947 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -115,7 +115,7 @@ class AccountSearchService < BaseService { script_score: { script: { - source: "log2p(Math.max(doc['followers_count'].value, 0))", + source: "Math.log10(Math.max(doc['followers_count'].value, 0) + 2)", }, }, } From d2eb726962187226c85ef7f2ee1886cb0767bbd1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 02:10:54 +0200 Subject: [PATCH 126/500] Fix notifications about deleted reports not being also deleted (#19475) * Fix notifications about deleted reports not being also deleted * Fix notification with empty report crashing web UI Fix #18909 --- .../features/notifications/components/notification.js | 4 ++++ app/models/report.rb | 1 + 2 files changed, 5 insertions(+) diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js index 0af71418c4..5974e378e4 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.js +++ b/app/javascript/mastodon/features/notifications/components/notification.js @@ -372,6 +372,10 @@ class Notification extends ImmutablePureComponent { renderAdminReport (notification, account, link) { const { intl, unread, report } = this.props; + if (!report) { + return null; + } + const targetAccount = report.get('target_account'); const targetDisplayNameHtml = { __html: targetAccount.get('display_name_html') }; const targetLink = ; diff --git a/app/models/report.rb b/app/models/report.rb index 42c869dd44..525d22ad5d 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -33,6 +33,7 @@ class Report < ApplicationRecord belongs_to :assigned_account, class_name: 'Account', optional: true has_many :notes, class_name: 'ReportNote', foreign_key: :report_id, inverse_of: :report, dependent: :destroy + has_many :notifications, as: :activity, dependent: :destroy scope :unresolved, -> { where(action_taken_at: nil) } scope :resolved, -> { where.not(action_taken_at: nil) } From 3e18e05330ac8c1101845db650d7cd62b0fa8260 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 14:30:52 +0200 Subject: [PATCH 127/500] Fix uncaught error when invalid date is supplied to API (#19480) Fix #19213 --- app/controllers/api/base_controller.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index 7ce6599c52..c46fde65b2 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -24,6 +24,10 @@ class Api::BaseController < ApplicationController render json: { error: 'Duplicate record' }, status: 422 end + rescue_from Date::Error do + render json: { error: 'Invalid date supplied' }, status: 422 + end + rescue_from ActiveRecord::RecordNotFound do render json: { error: 'Record not found' }, status: 404 end From d7595adbf4bc1677aee555baca46902f4dee1ae4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 14:31:10 +0200 Subject: [PATCH 128/500] Add `--remove-role` option to `tootctl accounts modify` (#19477) Fix #19152 --- lib/mastodon/accounts_cli.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 558f4d3c41..c8a8448edc 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -126,6 +126,7 @@ module Mastodon end option :role + option :remove_role, type: :boolean option :email option :confirm, type: :boolean option :enable, type: :boolean @@ -137,7 +138,8 @@ module Mastodon long_desc <<-LONG_DESC Modify a user account. - With the --role option, update the user's role. + With the --role option, update the user's role. To remove the user's + role, i.e. demote to normal user, use --remove-role. With the --email option, update the user's e-mail address. With the --confirm option, mark the user's e-mail as confirmed. @@ -171,6 +173,8 @@ module Mastodon end user.role_id = role.id + elsif options[:remove_role] + user.role_id = nil end password = SecureRandom.hex if options[:reset_password] From c7bab3318e8cde0e088f8af7ec765cf6d29fe49d Mon Sep 17 00:00:00 2001 From: Shlee Date: Thu, 27 Oct 2022 14:58:49 +0000 Subject: [PATCH 129/500] Remove duplicate HSTS headers from nginx.conf (#19018) * Update nginx.conf * Update nginx.conf * Update nginx.conf --- dist/nginx.conf | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/dist/nginx.conf b/dist/nginx.conf index 7e03343680..f28d7c6a82 100644 --- a/dist/nginx.conf +++ b/dist/nginx.conf @@ -52,21 +52,19 @@ server { gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml image/x-icon; - add_header Strict-Transport-Security "max-age=31536000" always; - location / { try_files $uri @proxy; } location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) { add_header Cache-Control "public, max-age=31536000, immutable"; - add_header Strict-Transport-Security "max-age=31536000" always; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; try_files $uri @proxy; } location /sw.js { add_header Cache-Control "public, max-age=0"; - add_header Strict-Transport-Security "max-age=31536000" always; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; try_files $uri @proxy; } @@ -90,7 +88,6 @@ server { proxy_cache_valid 410 24h; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; add_header X-Cached $upstream_cache_status; - add_header Strict-Transport-Security "max-age=31536000" always; tcp_nodelay on; } From 371d96940342b616723df36d54e6c2d1ab3ca827 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 19:17:15 +0200 Subject: [PATCH 130/500] Fix missing delete and redraft link in web UI (#19485) --- app/javascript/mastodon/features/status/components/action_bar.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 1f8181f84b..fc82aa9c2e 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -220,6 +220,7 @@ class ActionBar extends React.PureComponent { menu.push(null); menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); + menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); menu.push(null); From 09f04d710d2b3acbd604ca1678c59c4bd5edfa78 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 19:17:48 +0200 Subject: [PATCH 131/500] Change `closed_registrations_message` to `message` and add Markdown (#19486) --- app/serializers/rest/instance_serializer.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 2a4da8c3b3..5ae1099d04 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -83,7 +83,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer { enabled: registrations_enabled?, approval_required: Setting.registrations_mode == 'approved', - closed_registrations_message: registrations_enabled? ? nil : Setting.closed_registrations_message, + message: registrations_enabled? ? nil : registrations_message, } end @@ -92,4 +92,16 @@ class REST::InstanceSerializer < ActiveModel::Serializer def registrations_enabled? Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode end + + def registrations_message + if Setting.closed_registrations_message.present? + markdown.render(Setting.closed_registrations_message) + else + nil + end + end + + def markdown + @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, no_images: true) + end end From 5f733ad83aebbf52361c97059ac95b13d9a7f897 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 19:30:08 +0200 Subject: [PATCH 132/500] Remove unused method `searchable?` on accounts (#19489) It called the wrong methods, but nothing uses it --- app/models/account.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index df7fa8d502..3da289fc0b 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -191,10 +191,6 @@ class Account < ApplicationRecord "acct:#{local_username_and_domain}" end - def searchable? - !(suspended? || moved?) && (!local? || (approved? && confirmed?)) - end - def possibly_stale? last_webfingered_at.nil? || last_webfingered_at <= 1.day.ago end From 8ae0936ddd92eadb519c0440aae3961fcd820106 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 00:26:02 +0200 Subject: [PATCH 133/500] Bump version to 4.0.0rc1 (#19473) --- CHANGELOG.md | 128 +++++++++++++++++++++++++++++++++++++++- lib/mastodon/version.rb | 8 +-- 2 files changed, 131 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed4cdd881a..c161d95dea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,132 @@ Changelog All notable changes to this project will be documented in this file. +## [Unreleased] + +Some of the features in this release have been funded through the [NGI0 Discovery](https://nlnet.nl/discovery) Fund, a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 825322. + +### Added + +- Add ability to filter followed accounts' posts by language ([Gargron](https://github.com/mastodon/mastodon/pull/19095), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19268)) +- **Add ability to follow hashtags** ([Gargron](https://github.com/mastodon/mastodon/pull/18809), [Gargron](https://github.com/mastodon/mastodon/pull/18862), [Gargron](https://github.com/mastodon/mastodon/pull/19472), [noellabo](https://github.com/mastodon/mastodon/pull/18924)) +- Add ability to filter individual posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18945)) +- **Add ability to translate posts** ([Gargron](https://github.com/mastodon/mastodon/pull/19218), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19433), [Gargron](https://github.com/mastodon/mastodon/pull/19453), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19434), [Gargron](https://github.com/mastodon/mastodon/pull/19388), [ykzts](https://github.com/mastodon/mastodon/pull/19244), [Gargron](https://github.com/mastodon/mastodon/pull/19245)) +- Add featured tags to web UI ([noellabo](https://github.com/mastodon/mastodon/pull/19408), [noellabo](https://github.com/mastodon/mastodon/pull/19380), [noellabo](https://github.com/mastodon/mastodon/pull/19358), [noellabo](https://github.com/mastodon/mastodon/pull/19409), [Gargron](https://github.com/mastodon/mastodon/pull/19382), [ykzts](https://github.com/mastodon/mastodon/pull/19418), [noellabo](https://github.com/mastodon/mastodon/pull/19403), [noellabo](https://github.com/mastodon/mastodon/pull/19404), [Gargron](https://github.com/mastodon/mastodon/pull/19398)) +- **Add support for language preferences for trending statuses and links** ([Gargron](https://github.com/mastodon/mastodon/pull/18288), [Gargron](https://github.com/mastodon/mastodon/pull/19349), [ykzts](https://github.com/mastodon/mastodon/pull/19335)) + - Previously, you could only see trends in your current language + - For less popular languages, that meant empty trends + - Now, trends in your preferred languages' are shown on top, with others beneath +- Add server rules to sign-up flow ([Gargron](https://github.com/mastodon/mastodon/pull/19296)) +- Add privacy icons to report modal in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19190)) +- Add `noopener` to links to remote profiles in web UI ([shleeable](https://github.com/mastodon/mastodon/pull/19014)) +- Add warning for sensitive audio posts in web UI ([rgroothuijsen](https://github.com/mastodon/mastodon/pull/17885)) +- Add language attribute to posts in web UI ([tribela](https://github.com/mastodon/mastodon/pull/18544)) +- Add meta tag for official iOS app ([Gargron](https://github.com/mastodon/mastodon/pull/16599)) +- Add support for uploading WebP files ([Saiv46](https://github.com/mastodon/mastodon/pull/18506)) +- Add support for uploading `audio/vnd.wave` files ([tribela](https://github.com/mastodon/mastodon/pull/18737)) +- Add more debug information when processing remote accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/15605), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19209)) +- **Add retention policy for cached content and media** ([Gargron](https://github.com/mastodon/mastodon/pull/19232), [zunda](https://github.com/mastodon/mastodon/pull/19478), [Gargron](https://github.com/mastodon/mastodon/pull/19458), [Gargron](https://github.com/mastodon/mastodon/pull/19248)) + - Set for how long remote posts or media should be cached on your server + - Hands-off alternative to `tootctl` commands +- **Add customizable user roles** ([Gargron](https://github.com/mastodon/mastodon/pull/18641), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18812), [Gargron](https://github.com/mastodon/mastodon/pull/19040), [tribela](https://github.com/mastodon/mastodon/pull/18825), [tribela](https://github.com/mastodon/mastodon/pull/18826), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18776), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18777), [unextro](https://github.com/mastodon/mastodon/pull/18786), [tribela](https://github.com/mastodon/mastodon/pull/18824), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19436)) + - Previously, there were 3 hard-coded roles, user, moderator, and admin + - Create your own roles and decide which permissions they should have +- Add notifications for new reports ([Gargron](https://github.com/mastodon/mastodon/pull/18697), [Gargron](https://github.com/mastodon/mastodon/pull/19475)) +- Add ability to select all accounts matching search for batch actions in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19053), [Gargron](https://github.com/mastodon/mastodon/pull/19054)) +- Add ability to view previous edits of a status in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19462)) +- Add ability to block sign-ups from IP ([Gargron](https://github.com/mastodon/mastodon/pull/19037)) +- **Add webhooks to admin UI** ([Gargron](https://github.com/mastodon/mastodon/pull/18510)) +- Add admin API for managing domain allows ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18668)) +- Add admin API for managing domain blocks ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18247)) +- Add admin API for managing e-mail domain blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19066)) +- Add admin API for managing canonical e-mail blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19067)) +- Add admin API for managing IP blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19065)) +- Add `services` and `metadata` to the NodeInfo endpoint ([MFTabriz](https://github.com/mastodon/mastodon/pull/18563)) +- Add `--remove-role` option to `tootctl accounts modify` ([Gargron](https://github.com/mastodon/mastodon/pull/19477)) +- Add `--days` option to `tootctl media refresh` ([tribela](https://github.com/mastodon/mastodon/pull/18425)) +- Add `EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION` environment variable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18642)) +- Add `IP_RETENTION_PERIOD` and `SESSION_RETENTION_PERIOD` environment variables ([kescherCode](https://github.com/mastodon/mastodon/pull/18757)) +- Add `http_hidden_proxy` environment variable ([tribela](https://github.com/mastodon/mastodon/pull/18427)) + +### Changed + +- **Change brand color and logotypes** ([Gargron](https://github.com/mastodon/mastodon/pull/18592), [Gargron](https://github.com/mastodon/mastodon/pull/18639), [Gargron](https://github.com/mastodon/mastodon/pull/18691), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18634), [Gargron](https://github.com/mastodon/mastodon/pull/19254), [mayaeh](https://github.com/mastodon/mastodon/pull/18710)) +- **Change post editing to be enabled in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/19103)) +- **Change web UI to work for logged-out users** ([Gargron](https://github.com/mastodon/mastodon/pull/18961), [Gargron](https://github.com/mastodon/mastodon/pull/19250), [Gargron](https://github.com/mastodon/mastodon/pull/19294), [Gargron](https://github.com/mastodon/mastodon/pull/19306), [Gargron](https://github.com/mastodon/mastodon/pull/19315), [ykzts](https://github.com/mastodon/mastodon/pull/19322), [Gargron](https://github.com/mastodon/mastodon/pull/19412), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19437), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19415), [Gargron](https://github.com/mastodon/mastodon/pull/19348), [Gargron](https://github.com/mastodon/mastodon/pull/19295), [Gargron](https://github.com/mastodon/mastodon/pull/19422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19414), [Gargron](https://github.com/mastodon/mastodon/pull/19319), [Gargron](https://github.com/mastodon/mastodon/pull/19345), [Gargron](https://github.com/mastodon/mastodon/pull/19310), [Gargron](https://github.com/mastodon/mastodon/pull/19301), [Gargron](https://github.com/mastodon/mastodon/pull/19423), [ykzts](https://github.com/mastodon/mastodon/pull/19471), [ykzts](https://github.com/mastodon/mastodon/pull/19333), [ykzts](https://github.com/mastodon/mastodon/pull/19337), [ykzts](https://github.com/mastodon/mastodon/pull/19272), [ykzts](https://github.com/mastodon/mastodon/pull/19468), [Gargron](https://github.com/mastodon/mastodon/pull/19466), [Gargron](https://github.com/mastodon/mastodon/pull/19457), [Gargron](https://github.com/mastodon/mastodon/pull/19426), [Gargron](https://github.com/mastodon/mastodon/pull/19427), [Gargron](https://github.com/mastodon/mastodon/pull/19421), [Gargron](https://github.com/mastodon/mastodon/pull/19417), [Gargron](https://github.com/mastodon/mastodon/pull/19413), [Gargron](https://github.com/mastodon/mastodon/pull/19397), [Gargron](https://github.com/mastodon/mastodon/pull/19387), [Gargron](https://github.com/mastodon/mastodon/pull/19396), [Gargron](https://github.com/mastodon/mastodon/pull/19385), [ykzts](https://github.com/mastodon/mastodon/pull/19334), [ykzts](https://github.com/mastodon/mastodon/pull/19329), [Gargron](https://github.com/mastodon/mastodon/pull/19324), [Gargron](https://github.com/mastodon/mastodon/pull/19318), [Gargron](https://github.com/mastodon/mastodon/pull/19316), [Gargron](https://github.com/mastodon/mastodon/pull/19263), [trwnh](https://github.com/mastodon/mastodon/pull/19305), [ykzts](https://github.com/mastodon/mastodon/pull/19273)) + - The web app can now be accessed without being logged in + - No more `/web` prefix on web app paths + - Profiles, posts, and other public pages now use the same interface for logged in and logged out users + - The web app displays a server information banner + - Pop-up windows for remote interaction have been replaced with a modal window + - No need to type in your username for remote interaction, copy-paste-to-search method explained + - Various hints throughout the app explain what the different timelines are + - New about page design + - New privacy policy page design shows when the policy was last updated + - All sections of the web app now have appropriate window titles + - The layout of the interface has been streamlined between different screen sizes + - Posts now use more horizontal space +- Change label of publish button to be "Publish" again in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18583)) +- Change language to be carried over on reply in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18557)) +- Change "Unfollow" to "Cancel follow request" when request still pending in web UI ([prplecake](https://github.com/mastodon/mastodon/pull/19363)) +- **Change post filtering system** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18058), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19050), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18894), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19051), [noellabo](https://github.com/mastodon/mastodon/pull/18923), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18956), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18744)) + - Filtered keywords and phrases can now be grouped into named categories + - Filtered posts show which exact filter was hit + - Individual posts can be added to a filter + - You can peek inside filtered posts anyway +- Change path of privacy policy page from `/terms` to `/privacy-policy` ([Gargron](https://github.com/mastodon/mastodon/pull/19249)) +- Change how hashtags are normalized ([Gargron](https://github.com/mastodon/mastodon/pull/18795), [Gargron](https://github.com/mastodon/mastodon/pull/18863), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18854)) +- Change public timelines to be filtered by current locale by default ([Gargron](https://github.com/mastodon/mastodon/pull/19291)) +- Change settings area to be separated into categories in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19407)) +- Change "No accounts selected" errors to use the appropriate noun in admin UI ([prplecake](https://github.com/mastodon/mastodon/pull/19356)) +- Change e-mail domain blocks to match subdomains of blocked domains ([Gargron](https://github.com/mastodon/mastodon/pull/18979)) +- Change custom emoji file size limit from 50 KB to 256 KB ([Gargron](https://github.com/mastodon/mastodon/pull/18788)) +- Change "Allow trends without prior review" setting to also work for trending posts ([Gargron](https://github.com/mastodon/mastodon/pull/17977)) +- Change search API to be accessible without being logged in ([Gargron](https://github.com/mastodon/mastodon/pull/18963), [Gargron](https://github.com/mastodon/mastodon/pull/19326)) +- Change following and followers API to be accessible without being logged in ([Gargron](https://github.com/mastodon/mastodon/pull/18964)) +- Change Helm configuration ([deepy](https://github.com/mastodon/mastodon/pull/18997), [jgsmith](https://github.com/mastodon/mastodon/pull/18415), [deepy](https://github.com/mastodon/mastodon/pull/18941)) + +### Removed + +- Remove setting that disables account deletes ([Gargron](https://github.com/mastodon/mastodon/pull/17683)) +- Remove digest e-mails ([Gargron](https://github.com/mastodon/mastodon/pull/17985)) +- Remove unnecessary sections from welcome e-mail ([Gargron](https://github.com/mastodon/mastodon/pull/19299)) +- Remove item titles from RSS feeds ([Gargron](https://github.com/mastodon/mastodon/pull/18640)) +- Remove volume number from hashtags in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19253)) +- Remove Nanobox configuration ([tonyjiang](https://github.com/mastodon/mastodon/pull/17881)) + +### Fixed + +- Fix OCR not working due to Content Security Policy in web UI ([prplecake](https://github.com/mastodon/mastodon/pull/18817)) +- Fix `nofollow` rel being removed in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19455)) +- Fix language dropdown causing zoom on mobile devices in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19428)) +- Fix button to dismiss suggestions not showing up in search results in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19325)) +- Fix language dropdown sometimes not appearing in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19246)) +- Fix quickly switching notification filters resulting in empty or incorrect list in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19052), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18960)) +- Fix media modal link button in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18877)) +- Fix error upon successful account migration ([Gargron](https://github.com/mastodon/mastodon/pull/19386)) +- Fix negatives values in search index causing queries to fail ([Gargron](https://github.com/mastodon/mastodon/pull/19464), [Gargron](https://github.com/mastodon/mastodon/pull/19481)) +- Fix error when searching for invalid URL ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18580)) +- Fix IP blocks not having a unique index ([Gargron](https://github.com/mastodon/mastodon/pull/19456)) +- Fix remote account in contact account setting not being used ([Gargron](https://github.com/mastodon/mastodon/pull/19351)) +- Fix swallowing mentions of unconfirmed/unapproved users ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19191)) +- Fix incorrect and slow cache invalidation when blocking domain and removing media attachments ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19062)) +- Fix HTTPs redirect behaviour when running as I2P service ([gi-yt](https://github.com/mastodon/mastodon/pull/18929)) +- Fix deleted pinned posts potentially counting towards the pinned posts limit ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19005)) +- Fix compatibility with OpenSSL 3.0 ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18449)) +- Fix error when a remote report includes a private post the server has no access to ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18760)) +- Fix suspicious sign-in mails never being sent ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18599)) +- Fix fallback locale when somehow user's locale is an empty string ([tribela](https://github.com/mastodon/mastodon/pull/18543)) +- Fix avatar/header not being deleted locally when deleted on remote account ([tribela](https://github.com/mastodon/mastodon/pull/18973)) +- Fix missing `,` in Blurhash validation ([noellabo](https://github.com/mastodon/mastodon/pull/18660)) +- Fix order by most recent not working for relationships page in admin UI ([tribela](https://github.com/mastodon/mastodon/pull/18996)) +- Fix uncaught error when invalid date is supplied to API ([Gargron](https://github.com/mastodon/mastodon/pull/19480)) +- Fix REST API sometimes returning HTML on error ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19135)) +- Fix ambiguous column names in `tootctl media refresh` ([tribela](https://github.com/mastodon/mastodon/pull/19206)) +- Fix ambiguous column names in `tootctl search deploy` ([mashirozx](https://github.com/mastodon/mastodon/pull/18993)) +- Fix `CDN_HOST` not being used in some asset URLs ([tribela](https://github.com/mastodon/mastodon/pull/18662)) +- Fix `CAS_DISPLAY_NAME`, `SAML_DISPLAY_NAME` and `OIDC_DISPLAY_NAME` being ignored ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18568)) +- Fix various typos in comments throughout the codebase ([luzpaz](https://github.com/mastodon/mastodon/pull/18604)) + ## [3.5.3] - 2022-05-26 ### Added @@ -75,7 +201,7 @@ All notable changes to this project will be documented in this file. - Remove IP matching from e-mail domain blocks ([Gargron](https://github.com/mastodon/mastodon/pull/18190)) - The IPs of the blocked e-mail domain or its MX records are no longer checked - Previously it was too easy to block e-mail providers by mistake - + ## Fixed - Fix compatibility with Friendica's pinned posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18254), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18260)) diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 8ed955aa0d..1794900982 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -5,19 +5,19 @@ module Mastodon module_function def major - 3 + 4 end def minor - 5 + 0 end def patch - 3 + 0 end def flags - '' + 'rc1' end def suffix From 07cc201accd4a04c8c11cda21eecded4e7875d55 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 00:48:30 +0200 Subject: [PATCH 134/500] Fix using wrong policy on status-related actions in admin UI (#19490) --- app/models/admin/status_batch_action.rb | 4 ++-- app/models/trends/status_batch.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb index 7bf6fa6daf..0ec4fef82a 100644 --- a/app/models/admin/status_batch_action.rb +++ b/app/models/admin/status_batch_action.rb @@ -40,7 +40,7 @@ class Admin::StatusBatchAction end def handle_delete! - statuses.each { |status| authorize(status, :destroy?) } + statuses.each { |status| authorize([:admin, status], :destroy?) } ApplicationRecord.transaction do statuses.each do |status| @@ -75,7 +75,7 @@ class Admin::StatusBatchAction statuses.includes(:media_attachments, :preview_cards).find_each do |status| next unless status.with_media? || status.with_preview_card? - authorize(status, :update?) + authorize([:admin, status], :update?) if target_account.local? UpdateStatusService.new.call(status, representative_account.id, sensitive: true) diff --git a/app/models/trends/status_batch.rb b/app/models/trends/status_batch.rb index 78d93bed44..f9b97b2244 100644 --- a/app/models/trends/status_batch.rb +++ b/app/models/trends/status_batch.rb @@ -30,7 +30,7 @@ class Trends::StatusBatch end def approve! - statuses.each { |status| authorize(status, :review?) } + statuses.each { |status| authorize([:admin, status], :review?) } statuses.update_all(trendable: true) end @@ -45,7 +45,7 @@ class Trends::StatusBatch end def reject! - statuses.each { |status| authorize(status, :review?) } + statuses.each { |status| authorize([:admin, status], :review?) } statuses.update_all(trendable: false) end From 8dfe5179ee7186e549dbe1186a151ffa848fe8ab Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 00:48:45 +0200 Subject: [PATCH 135/500] Fix avatars not using image tags in web UI (#19488) Fix #19483 --- .../__snapshots__/avatar-test.js.snap | 22 ++++---- .../__snapshots__/avatar_overlay-test.js.snap | 50 +++++++++++++++---- app/javascript/mastodon/components/avatar.js | 26 +++------- .../mastodon/components/avatar_composite.js | 7 +-- .../mastodon/components/avatar_overlay.js | 36 +++++++++---- .../styles/mastodon/components.scss | 39 +++++---------- 6 files changed, 102 insertions(+), 78 deletions(-) diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap index f5c10aa377..7fbdedeb23 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.js.snap @@ -2,36 +2,38 @@ exports[` Autoplay renders a animated avatar 1`] = `
    +> + alice +
    `; exports[` Still renders a still avatar 1`] = `
    +> + alice +
    `; diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap index 58f27a3212..f8385357a3 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar_overlay-test.js.snap @@ -3,22 +3,52 @@ exports[`
    +
    + > + alice +
    +
    +
    + > + eve@blackhat.lair +
    +
    `; diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.js index dd3932ae6c..207b266913 100644 --- a/app/javascript/mastodon/components/avatar.js +++ b/app/javascript/mastodon/components/avatar.js @@ -42,30 +42,20 @@ export default class Avatar extends React.PureComponent { ...this.props.style, width: `${size}px`, height: `${size}px`, - backgroundSize: `${size}px ${size}px`, }; - if (account) { - const src = account.get('avatar'); - const staticSrc = account.get('avatar_static'); + let src; - if (hovering || animate) { - style.backgroundImage = `url(${src})`; - } else { - style.backgroundImage = `url(${staticSrc})`; - } + if (hovering || animate) { + src = account?.get('avatar'); + } else { + src = account?.get('avatar_static'); } - return ( -
    +
    + {account?.get('acct')} +
    ); } diff --git a/app/javascript/mastodon/components/avatar_composite.js b/app/javascript/mastodon/components/avatar_composite.js index 5d5b897492..220bf5b4f8 100644 --- a/app/javascript/mastodon/components/avatar_composite.js +++ b/app/javascript/mastodon/components/avatar_composite.js @@ -2,6 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { autoPlayGif } from '../initial_state'; +import Avatar from './avatar'; export default class AvatarComposite extends React.PureComponent { @@ -74,12 +75,12 @@ export default class AvatarComposite extends React.PureComponent { bottom: bottom, width: `${width}%`, height: `${height}%`, - backgroundSize: 'cover', - backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`, }; return ( -
    +
    + +
    ); } diff --git a/app/javascript/mastodon/components/avatar_overlay.js b/app/javascript/mastodon/components/avatar_overlay.js index 3ec1d77304..8d5d44ea56 100644 --- a/app/javascript/mastodon/components/avatar_overlay.js +++ b/app/javascript/mastodon/components/avatar_overlay.js @@ -2,6 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { autoPlayGif } from '../initial_state'; +import Avatar from './avatar'; export default class AvatarOverlay extends React.PureComponent { @@ -9,27 +10,40 @@ export default class AvatarOverlay extends React.PureComponent { account: ImmutablePropTypes.map.isRequired, friend: ImmutablePropTypes.map.isRequired, animate: PropTypes.bool, + size: PropTypes.number, + baseSize: PropTypes.number, + overlaySize: PropTypes.number, }; static defaultProps = { animate: autoPlayGif, + size: 46, + baseSize: 36, + overlaySize: 24, }; - render() { - const { account, friend, animate } = this.props; + state = { + hovering: false, + }; + + handleMouseEnter = () => { + if (this.props.animate) return; + this.setState({ hovering: true }); + } - const baseStyle = { - backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`, - }; + handleMouseLeave = () => { + if (this.props.animate) return; + this.setState({ hovering: false }); + } - const overlayStyle = { - backgroundImage: `url(${friend.get(animate ? 'avatar' : 'avatar_static')})`, - }; + render() { + const { account, friend, animate, size, baseSize, overlaySize } = this.props; + const { hovering } = this.state; return ( -
    -
    -
    +
    +
    +
    ); } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 633b9ed703..69301fb052 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1382,6 +1382,14 @@ display: block; position: relative; + overflow: hidden; + + img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; + } &-inline { display: inline-block; @@ -1390,8 +1398,6 @@ } &-composite { - @include avatar-radius; - border-radius: 50%; overflow: hidden; position: relative; @@ -1402,6 +1408,11 @@ box-sizing: border-box; } + .account__avatar { + width: 100% !important; + height: 100% !important; + } + &__label { display: block; position: absolute; @@ -1421,37 +1432,13 @@ a .account__avatar { } .account__avatar-overlay { - @include avatar-size(46px); - position: relative; - &-base { - @include avatar-radius; - @include avatar-size(36px); - - img { - @include avatar-radius; - - width: 100%; - height: 100%; - } - } - &-overlay { - @include avatar-radius; - @include avatar-size(24px); - position: absolute; bottom: 0; right: 0; z-index: 1; - - img { - @include avatar-radius; - - width: 100%; - height: 100%; - } } } From 19765216a1449c38ae11a8fdcb72266321011519 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 08:47:10 +0200 Subject: [PATCH 136/500] Fix status prepend design (#1874) * Fix status prepend design * Adjust status prepend styling a bit --- .../flavours/glitch/components/status.js | 16 ++++++++-------- .../glitch/styles/components/status.scss | 6 ++---- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js index 6cdc4b9719..4e427e5a0c 100644 --- a/app/javascript/flavours/glitch/components/status.js +++ b/app/javascript/flavours/glitch/components/status.js @@ -749,16 +749,16 @@ class Status extends ImmutablePureComponent { data-featured={featured ? 'true' : null} aria-label={textForScreenReader(intl, status, rebloggedByText, !status.get('hidden'))} > + {prepend && account && ( + + )}
    - {prepend && account ? ( - - ) : null} {!muted || !isCollapsed ? ( Date: Fri, 28 Oct 2022 10:30:14 +0200 Subject: [PATCH 137/500] Revert notification design (#1875) --- .../flavours/glitch/components/status.js | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js index 4e427e5a0c..366a98d82b 100644 --- a/app/javascript/flavours/glitch/components/status.js +++ b/app/javascript/flavours/glitch/components/status.js @@ -499,7 +499,6 @@ class Status extends ImmutablePureComponent { settings, collapsed, muted, - prepend, intersectionObserverWrapper, onOpenVideo, onOpenMedia, @@ -713,20 +712,31 @@ class Status extends ImmutablePureComponent { 'data-status-by': `@${status.getIn(['account', 'acct'])}`, }; - if (prepend && account) { + let prepend; + + if (this.props.prepend && account) { const notifKind = { favourite: 'favourited', reblog: 'boosted', reblogged_by: 'boosted', status: 'posted', - }[prepend]; + }[this.props.prepend]; selectorAttribs[`data-${notifKind}-by`] = `@${account.get('acct')}`; + + prepend = ( + + ); } let rebloggedByText; - if (prepend === 'reblog') { + if (this.props.prepend === 'reblog') { rebloggedByText = intl.formatMessage({ id: 'status.reblogged_by', defaultMessage: '{name} boosted' }, { name: account.get('acct') }); } @@ -749,16 +759,10 @@ class Status extends ImmutablePureComponent { data-featured={featured ? 'true' : null} aria-label={textForScreenReader(intl, status, rebloggedByText, !status.get('hidden'))} > - {prepend && account && ( - - )} + {!muted && prepend}
    + {muted && prepend} {!muted || !isCollapsed ? ( Date: Fri, 28 Oct 2022 12:46:41 +0200 Subject: [PATCH 138/500] fix(component): adjust style of counter button to fix overflow issue (#19494) --- app/javascript/styles/mastodon/components.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 69301fb052..73f00e4c5b 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -279,11 +279,12 @@ display: inline-flex; align-items: center; width: auto !important; + padding: 0 4px 0 2px; } &__counter { display: inline-block; - width: 14px; + width: auto; margin-left: 4px; font-size: 12px; font-weight: 500; From d9d722d74b2cb9bf30fa4cc98af6ddbeca003ebc Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 12:56:32 +0200 Subject: [PATCH 139/500] Change admin announcement edition interface to use datetime-local (#18321) * Change admin announcement edition interface to use datetime-local * Dynamically set announcement stop date as required if start date is set, set minimum date for stop date * Change `all_day` to not be bound to presence of time-range * Add pattern and placeholder as minimal fallback for browsers not supporting datetime-local * Display datetime-local inputs as local time Co-authored-by: Eugen Rochko --- app/javascript/packs/admin.js | 54 ++++++++++++++++++++ app/javascript/styles/mastodon/forms.scss | 5 +- app/models/announcement.rb | 5 -- app/views/admin/announcements/edit.html.haml | 7 ++- app/views/admin/announcements/new.html.haml | 9 ++-- 5 files changed, 69 insertions(+), 11 deletions(-) diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js index b733d6b186..de86e0e117 100644 --- a/app/javascript/packs/admin.js +++ b/app/javascript/packs/admin.js @@ -2,6 +2,24 @@ import './public-path'; import { delegate } from '@rails/ujs'; import ready from '../mastodon/ready'; +const setAnnouncementEndsAttributes = (target) => { + const valid = target?.value && target?.validity?.valid; + const element = document.querySelector('input[type="datetime-local"]#announcement_ends_at'); + if (valid) { + element.classList.remove('optional'); + element.required = true; + element.min = target.value; + } else { + element.classList.add('optional'); + element.removeAttribute('required'); + element.removeAttribute('min'); + } +}; + +delegate(document, 'input[type="datetime-local"]#announcement_starts_at', 'change', ({ target }) => { + setAnnouncementEndsAttributes(target); +}); + const batchCheckboxClassName = '.batch-checkbox input[type="checkbox"]'; const showSelectAll = () => { @@ -141,6 +159,20 @@ const onChangeRegistrationMode = (target) => { }); }; +const convertUTCDateTimeToLocal = (value) => { + const date = new Date(value + 'Z'); + const twoChars = (x) => (x.toString().padStart(2, '0')); + return `${date.getFullYear()}-${twoChars(date.getMonth()+1)}-${twoChars(date.getDate())}T${twoChars(date.getHours())}:${twoChars(date.getMinutes())}`; +}; + +const convertLocalDatetimeToUTC = (value) => { + const re = /^([0-9]{4,})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})/; + const match = re.exec(value); + const date = new Date(match[1], match[2] - 1, match[3], match[4], match[5]); + const fullISO8601 = date.toISOString(); + return fullISO8601.slice(0, fullISO8601.indexOf('T') + 6); +}; + delegate(document, '#form_admin_settings_registrations_mode', 'change', ({ target }) => onChangeRegistrationMode(target)); ready(() => { @@ -163,6 +195,28 @@ ready(() => { } }); + [].forEach.call(document.querySelectorAll('input[type="datetime-local"]'), element => { + if (element.value) { + element.value = convertUTCDateTimeToLocal(element.value); + } + if (element.placeholder) { + element.placeholder = convertUTCDateTimeToLocal(element.placeholder); + } + }); + + delegate(document, 'form', 'submit', ({ target }) => { + [].forEach.call(target.querySelectorAll('input[type="datetime-local"]'), element => { + if (element.value && element.validity.valid) { + element.value = convertLocalDatetimeToUTC(element.value); + } + }); + }); + + const announcementStartsAt = document.querySelector('input[type="datetime-local"]#announcement_starts_at'); + if (announcementStartsAt) { + setAnnouncementEndsAttributes(announcementStartsAt); + } + const React = require('react'); const ReactDOM = require('react-dom'); diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 25c9c9fe55..a3ddc76362 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -405,6 +405,7 @@ code { input[type="email"], input[type="password"], input[type="url"], + input[type="datetime-local"], textarea { box-sizing: border-box; font-size: 16px; @@ -445,7 +446,8 @@ code { input[type="text"], input[type="number"], input[type="email"], - input[type="password"] { + input[type="password"], + input[type="datetime-local"] { &:focus:invalid:not(:placeholder-shown), &:required:invalid:not(:placeholder-shown) { border-color: lighten($error-red, 12%); @@ -461,6 +463,7 @@ code { input[type="number"], input[type="email"], input[type="password"], + input[type="datetime-local"], textarea, select { border-color: lighten($error-red, 12%); diff --git a/app/models/announcement.rb b/app/models/announcement.rb index bedced9ded..4b2cb4c6d0 100644 --- a/app/models/announcement.rb +++ b/app/models/announcement.rb @@ -31,7 +31,6 @@ class Announcement < ApplicationRecord validates :starts_at, presence: true, if: -> { ends_at.present? } validates :ends_at, presence: true, if: -> { starts_at.present? } - before_validation :set_all_day before_validation :set_published, on: :create def to_log_human_identifier @@ -89,10 +88,6 @@ class Announcement < ApplicationRecord private - def set_all_day - self.all_day = false if starts_at.blank? || ends_at.blank? - end - def set_published return unless scheduled_at.blank? || scheduled_at.past? diff --git a/app/views/admin/announcements/edit.html.haml b/app/views/admin/announcements/edit.html.haml index 5f56db5e7f..e20a839b95 100644 --- a/app/views/admin/announcements/edit.html.haml +++ b/app/views/admin/announcements/edit.html.haml @@ -1,12 +1,15 @@ - content_for :page_title do = t('.title') +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + = simple_form_for @announcement, url: admin_announcement_path(@announcement) do |f| = render 'shared/error_messages', object: @announcement .fields-group - = f.input :starts_at, include_blank: true, wrapper: :with_block_label - = f.input :ends_at, include_blank: true, wrapper: :with_block_label + = f.input :starts_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } + = f.input :ends_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } .fields-group = f.input :all_day, as: :boolean, wrapper: :with_label diff --git a/app/views/admin/announcements/new.html.haml b/app/views/admin/announcements/new.html.haml index a5298c5f66..d5881b7aa1 100644 --- a/app/views/admin/announcements/new.html.haml +++ b/app/views/admin/announcements/new.html.haml @@ -1,12 +1,15 @@ - content_for :page_title do = t('.title') +- content_for :header_tags do + = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' + = simple_form_for @announcement, url: admin_announcements_path do |f| = render 'shared/error_messages', object: @announcement .fields-group - = f.input :starts_at, include_blank: true, wrapper: :with_block_label - = f.input :ends_at, include_blank: true, wrapper: :with_block_label + = f.input :starts_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } + = f.input :ends_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } .fields-group = f.input :all_day, as: :boolean, wrapper: :with_label @@ -15,7 +18,7 @@ = f.input :text, wrapper: :with_block_label .fields-group - = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label + = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') } .actions = f.button :button, t('.create'), type: :submit From 923f06a07c851b25b989412f341f87f8b8fff42f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 12:56:51 +0200 Subject: [PATCH 140/500] Fix number of uses being shown again on trending hashtags in web UI (#19484) --- app/javascript/mastodon/components/hashtag.js | 1 - app/javascript/styles/mastodon/components.scss | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/javascript/mastodon/components/hashtag.js b/app/javascript/mastodon/components/hashtag.js index 8dd27290a9..75220211ec 100644 --- a/app/javascript/mastodon/components/hashtag.js +++ b/app/javascript/mastodon/components/hashtag.js @@ -56,7 +56,6 @@ export const ImmutableHashtag = ({ hashtag }) => ( href={hashtag.get('url')} to={`/tags/${hashtag.get('name')}`} people={hashtag.getIn(['history', 0, 'accounts']) * 1 + hashtag.getIn(['history', 1, 'accounts']) * 1} - uses={hashtag.getIn(['history', 0, 'uses']) * 1 + hashtag.getIn(['history', 1, 'uses']) * 1} history={hashtag.get('history').reverse().map((day) => day.get('uses')).toArray()} /> ); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 73f00e4c5b..ded5634d65 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7278,6 +7278,7 @@ noscript { align-items: center; padding: 15px; border-bottom: 1px solid lighten($ui-base-color, 8%); + gap: 15px; &:last-child { border-bottom: 0; @@ -7319,8 +7320,6 @@ noscript { font-size: 24px; font-weight: 500; text-align: right; - padding-right: 15px; - margin-left: 5px; color: $secondary-text-color; text-decoration: none; } From 9bf6a8af82391fa8b32112deb4a36a0cfc68143e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kangwook=20Lee=20=28=EC=9D=B4=EA=B0=95=EC=9A=B1=29?= Date: Fri, 28 Oct 2022 23:21:58 +0900 Subject: [PATCH 141/500] Fix PostgreSQL password reference (#19502) --- chart/templates/deployment-sidekiq.yaml | 2 +- chart/templates/deployment-streaming.yaml | 2 +- chart/templates/deployment-web.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index f1809bd858..44d3b82035 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -76,7 +76,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index 12203a530b..6b7c3cdd9a 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -44,7 +44,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index ab722c77b1..c5d177e513 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -62,7 +62,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: From 223e152312c9661532d846b7580d95819a0af5a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kangwook=20Lee=20=28=EC=9D=B4=EA=B0=95=EC=9A=B1=29?= Date: Fri, 28 Oct 2022 23:29:00 +0900 Subject: [PATCH 142/500] Add option to enable single user mode (#19503) --- chart/templates/configmap-env.yaml | 3 +++ chart/values.yaml | 2 ++ 2 files changed, 5 insertions(+) diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml index f988477d91..12da91cf97 100644 --- a/chart/templates/configmap-env.yaml +++ b/chart/templates/configmap-env.yaml @@ -24,6 +24,9 @@ data: {{- if .Values.mastodon.web_domain }} WEB_DOMAIN: {{ .Values.mastodon.web_domain }} {{- end }} + {{- if .Values.mastodon.singleUserMode }} + SINGLE_USER_MODE: "true" + {{- end }} # https://devcenter.heroku.com/articles/tuning-glibc-memory-behavior MALLOC_ARENA_MAX: "2" NODE_ENV: "production" diff --git a/chart/values.yaml b/chart/values.yaml index 48554412f9..9125d1a16b 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -30,6 +30,8 @@ mastodon: # Use of WEB_DOMAIN requires careful consideration: https://docs.joinmastodon.org/admin/config/#federation # You must redirect the path LOCAL_DOMAIN/.well-known/ to WEB_DOMAIN/.well-known/ as described # web_domain: mastodon.example.com + # If set to true, the frontpage of your Mastodon server will always redirect to the first profile in the database and registrations will be disabled. + singleUserMode: false persistence: assets: # ReadWriteOnce is more widely supported than ReadWriteMany, but limits From dae954ef111b8e0ab17812d156f6c955b77d9859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kangwook=20Lee=20=28=EC=9D=B4=EA=B0=95=EC=9A=B1=29?= Date: Fri, 28 Oct 2022 23:40:47 +0900 Subject: [PATCH 143/500] Fix PostgreSQL password reference for jobs (#19504) --- chart/templates/cronjob-media-remove.yaml | 2 +- chart/templates/job-assets-precompile.yaml | 2 +- chart/templates/job-chewy-upgrade.yaml | 2 +- chart/templates/job-create-admin.yaml | 2 +- chart/templates/job-db-migrate.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 160aee2042..4ca45804a2 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -59,7 +59,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index faa51a20d9..c20b4a370c 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index ae6fb38e12..cf7b59b58a 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -61,7 +61,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index 659c00671f..bb9094cdab 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -66,7 +66,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 8e4f70dfb1..0b386c0870 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: password + key: postgresql-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: From 84da970d6b14fe16c8fffdfc4d4a7daa1eed470c Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 17:10:00 +0200 Subject: [PATCH 144/500] Fix assets compilation Not too sure why the loader behaves differently than it previously did, though. --- app/javascript/styles/mastodon/components.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 69301fb052..b13d39a4f6 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1804,7 +1804,7 @@ a.account__display-name { .image-loader__preview-canvas { max-width: $media-modal-media-max-width; max-height: $media-modal-media-max-height; - background: url('../images/void.png') repeat; + background: url('~images/void.png') repeat; object-fit: contain; } @@ -6950,7 +6950,7 @@ noscript { width: 100px; height: 100px; transform: translate(-50%, -50%); - background: url('../images/reticle.png') no-repeat 0 0; + background: url('~images/reticle.png') no-repeat 0 0; border-radius: 50%; box-shadow: 0 0 0 9999em rgba($base-shadow-color, 0.35); } From 14ddb85c3bd5b9e57c1f3e6fe6eaf59200f0a34c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 4 Oct 2022 20:13:46 +0200 Subject: [PATCH 145/500] [Glitch] Remove code for rendering public and hashtag timelines outside the web UI Port 02ba9cfa35c7b2285950955619ae3431391e9625 to glitch-soc Signed-off-by: Claire --- .../standalone/hashtag_timeline/index.js | 90 ---------------- .../standalone/public_timeline/index.js | 100 ------------------ app/javascript/flavours/glitch/packs/about.js | 23 ---- app/javascript/flavours/glitch/theme.yml | 1 - 4 files changed, 214 deletions(-) delete mode 100644 app/javascript/flavours/glitch/features/standalone/hashtag_timeline/index.js delete mode 100644 app/javascript/flavours/glitch/features/standalone/public_timeline/index.js delete mode 100644 app/javascript/flavours/glitch/packs/about.js diff --git a/app/javascript/flavours/glitch/features/standalone/hashtag_timeline/index.js b/app/javascript/flavours/glitch/features/standalone/hashtag_timeline/index.js deleted file mode 100644 index 629f5c2eaf..0000000000 --- a/app/javascript/flavours/glitch/features/standalone/hashtag_timeline/index.js +++ /dev/null @@ -1,90 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { expandHashtagTimeline } from 'flavours/glitch/actions/timelines'; -import Masonry from 'react-masonry-infinite'; -import { List as ImmutableList } from 'immutable'; -import DetailedStatusContainer from 'flavours/glitch/features/status/containers/detailed_status_container'; -import { debounce } from 'lodash'; -import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; - -const mapStateToProps = (state, { hashtag }) => ({ - statusIds: state.getIn(['timelines', `hashtag:${hashtag}`, 'items'], ImmutableList()), - isLoading: state.getIn(['timelines', `hashtag:${hashtag}`, 'isLoading'], false), - hasMore: state.getIn(['timelines', `hashtag:${hashtag}`, 'hasMore'], false), -}); - -export default @connect(mapStateToProps) -class HashtagTimeline extends React.PureComponent { - - static propTypes = { - dispatch: PropTypes.func.isRequired, - statusIds: ImmutablePropTypes.list.isRequired, - isLoading: PropTypes.bool.isRequired, - hasMore: PropTypes.bool.isRequired, - hashtag: PropTypes.string.isRequired, - local: PropTypes.bool.isRequired, - }; - - static defaultProps = { - local: false, - }; - - componentDidMount () { - const { dispatch, hashtag, local } = this.props; - - dispatch(expandHashtagTimeline(hashtag, { local })); - } - - handleLoadMore = () => { - const { dispatch, hashtag, local, statusIds } = this.props; - const maxId = statusIds.last(); - - if (maxId) { - dispatch(expandHashtagTimeline(hashtag, { maxId, local })); - } - } - - setRef = c => { - this.masonry = c; - } - - handleHeightChange = debounce(() => { - if (!this.masonry) { - return; - } - - this.masonry.forcePack(); - }, 50) - - render () { - const { statusIds, hasMore, isLoading } = this.props; - - const sizes = [ - { columns: 1, gutter: 0 }, - { mq: '415px', columns: 1, gutter: 10 }, - { mq: '640px', columns: 2, gutter: 10 }, - { mq: '960px', columns: 3, gutter: 10 }, - { mq: '1255px', columns: 3, gutter: 10 }, - ]; - - const loader = (isLoading && statusIds.isEmpty()) ? : undefined; - - return ( - - {statusIds.map(statusId => ( -
    - -
    - )).toArray()} -
    - ); - } - -} diff --git a/app/javascript/flavours/glitch/features/standalone/public_timeline/index.js b/app/javascript/flavours/glitch/features/standalone/public_timeline/index.js deleted file mode 100644 index 5f8a369ffe..0000000000 --- a/app/javascript/flavours/glitch/features/standalone/public_timeline/index.js +++ /dev/null @@ -1,100 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { expandPublicTimeline, expandCommunityTimeline } from 'flavours/glitch/actions/timelines'; -import Masonry from 'react-masonry-infinite'; -import { List as ImmutableList, Map as ImmutableMap } from 'immutable'; -import DetailedStatusContainer from 'flavours/glitch/features/status/containers/detailed_status_container'; -import { debounce } from 'lodash'; -import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; - -const mapStateToProps = (state, { local }) => { - const timeline = state.getIn(['timelines', local ? 'community' : 'public'], ImmutableMap()); - - return { - statusIds: timeline.get('items', ImmutableList()), - isLoading: timeline.get('isLoading', false), - hasMore: timeline.get('hasMore', false), - }; -}; - -export default @connect(mapStateToProps) -class PublicTimeline extends React.PureComponent { - - static propTypes = { - dispatch: PropTypes.func.isRequired, - statusIds: ImmutablePropTypes.list.isRequired, - isLoading: PropTypes.bool.isRequired, - hasMore: PropTypes.bool.isRequired, - local: PropTypes.bool, - }; - - componentDidMount () { - this._connect(); - } - - componentDidUpdate (prevProps) { - if (prevProps.local !== this.props.local) { - this._disconnect(); - this._connect(); - } - } - - _connect () { - const { dispatch, local } = this.props; - - dispatch(local ? expandCommunityTimeline() : expandPublicTimeline()); - } - - handleLoadMore = () => { - const { dispatch, statusIds, local } = this.props; - const maxId = statusIds.last(); - - if (maxId) { - dispatch(local ? expandCommunityTimeline({ maxId }) : expandPublicTimeline({ maxId })); - } - } - - setRef = c => { - this.masonry = c; - } - - handleHeightChange = debounce(() => { - if (!this.masonry) { - return; - } - - this.masonry.forcePack(); - }, 50) - - render () { - const { statusIds, hasMore, isLoading } = this.props; - - const sizes = [ - { columns: 1, gutter: 0 }, - { mq: '415px', columns: 1, gutter: 10 }, - { mq: '640px', columns: 2, gutter: 10 }, - { mq: '960px', columns: 3, gutter: 10 }, - { mq: '1255px', columns: 3, gutter: 10 }, - ]; - - const loader = (isLoading && statusIds.isEmpty()) ? : undefined; - - return ( - - {statusIds.map(statusId => ( -
    - -
    - )).toArray()} -
    - ); - } - -} diff --git a/app/javascript/flavours/glitch/packs/about.js b/app/javascript/flavours/glitch/packs/about.js deleted file mode 100644 index ef17fdea40..0000000000 --- a/app/javascript/flavours/glitch/packs/about.js +++ /dev/null @@ -1,23 +0,0 @@ -import 'packs/public-path'; -import loadPolyfills from 'flavours/glitch/load_polyfills'; - -function loaded() { - const TimelineContainer = require('flavours/glitch/containers/timeline_container').default; - const React = require('react'); - const ReactDOM = require('react-dom'); - const mountNode = document.getElementById('mastodon-timeline'); - - if (mountNode !== null) { - const props = JSON.parse(mountNode.getAttribute('data-props')); - ReactDOM.render(, mountNode); - } -} - -function main() { - const ready = require('flavours/glitch/ready').default; - ready(loaded); -} - -loadPolyfills().then(main).catch(error => { - console.error(error); -}); diff --git a/app/javascript/flavours/glitch/theme.yml b/app/javascript/flavours/glitch/theme.yml index f3c7fac7e9..e85dd74e16 100644 --- a/app/javascript/flavours/glitch/theme.yml +++ b/app/javascript/flavours/glitch/theme.yml @@ -1,6 +1,5 @@ # (REQUIRED) The location of the pack files. pack: - about: packs/about.js admin: - packs/admin.js - packs/public.js From 206e9593ac2c808fe85177ab156027c226da8cb6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 4 Oct 2022 20:13:23 +0200 Subject: [PATCH 146/500] [Glitch] Fix logged-out web UI on smaller screens Port e2b561e3a521ff893943c0e9e32952e35934ca54 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/about/index.js | 34 ++++ .../flavours/glitch/features/compose/index.js | 50 +++-- .../glitch/features/getting_started/index.js | 65 ++++--- .../features/keyboard_shortcuts/index.js | 13 +- .../features/ui/components/columns_area.js | 85 +-------- .../features/ui/components/compose_panel.js | 2 +- .../glitch/features/ui/components/header.js | 53 ++++++ .../features/ui/components/link_footer.js | 44 ++--- .../ui/components/navigation_panel.js | 9 +- .../glitch/features/ui/components/tabs_bar.js | 86 --------- .../flavours/glitch/features/ui/index.js | 6 + .../features/ui/util/async-components.js | 4 + .../glitch/styles/components/columns.scss | 39 +++- .../glitch/styles/components/explore.scss | 13 +- .../glitch/styles/components/search.scss | 2 +- .../styles/components/single_column.scss | 172 +++++++++++------- .../flavours/glitch/styles/variables.scss | 2 +- 17 files changed, 347 insertions(+), 332 deletions(-) create mode 100644 app/javascript/flavours/glitch/features/about/index.js create mode 100644 app/javascript/flavours/glitch/features/ui/components/header.js delete mode 100644 app/javascript/flavours/glitch/features/ui/components/tabs_bar.js diff --git a/app/javascript/flavours/glitch/features/about/index.js b/app/javascript/flavours/glitch/features/about/index.js new file mode 100644 index 0000000000..9f7c90d917 --- /dev/null +++ b/app/javascript/flavours/glitch/features/about/index.js @@ -0,0 +1,34 @@ +import React from 'react'; +import { defineMessages, injectIntl } from 'react-intl'; +import PropTypes from 'prop-types'; +import Column from 'flavours/glitch/components/column'; +import LinkFooter from 'flavours/glitch/features/ui/components/link_footer'; +import { Helmet } from 'react-helmet'; +import { title } from 'flavours/glitch/initial_state'; + +const messages = defineMessages({ + title: { id: 'column.about', defaultMessage: 'About' }, +}); + +export default @injectIntl +class About extends React.PureComponent { + + static propTypes = { + intl: PropTypes.object.isRequired, + }; + + render () { + const { intl } = this.props; + + return ( + + + + + {intl.formatMessage(messages.title)} - {title} + + + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/compose/index.js b/app/javascript/flavours/glitch/features/compose/index.js index 567bb3711a..150e78c485 100644 --- a/app/javascript/flavours/glitch/features/compose/index.js +++ b/app/javascript/flavours/glitch/features/compose/index.js @@ -14,6 +14,7 @@ import SearchResultsContainer from './containers/search_results_container'; import { me, mascot } from 'flavours/glitch/initial_state'; import { cycleElefriendCompose } from 'flavours/glitch/actions/compose'; import HeaderContainer from './containers/header_container'; +import Column from 'flavours/glitch/components/column'; const messages = defineMessages({ compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new post' }, @@ -79,32 +80,41 @@ class Compose extends React.PureComponent { } = this.props; const computedClass = classNames('drawer', `mbstobon-${elefriend}`); - return ( -
    - {multiColumn && } - - {(multiColumn || isSearchPage) && } + if (multiColumn) { + return ( +
    + -
    - {!isSearchPage &&
    - + {(multiColumn || isSearchPage) && } - +
    + {!isSearchPage &&
    + -
    - {mascot ? :
    -
    } + - - {({ x }) => ( -
    - +
    + {mascot ? :
    - )} - +
    } + + + {({ x }) => ( +
    + +
    + )} +
    +
    -
    + ); + } + + return ( + + + + ); } diff --git a/app/javascript/flavours/glitch/features/getting_started/index.js b/app/javascript/flavours/glitch/features/getting_started/index.js index f52b769a33..4d34278770 100644 --- a/app/javascript/flavours/glitch/features/getting_started/index.js +++ b/app/javascript/flavours/glitch/features/getting_started/index.js @@ -84,11 +84,12 @@ const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2); static contextTypes = { router: PropTypes.object.isRequired, + identity: PropTypes.object, }; static propTypes = { intl: PropTypes.object.isRequired, - myAccount: ImmutablePropTypes.map.isRequired, + myAccount: ImmutablePropTypes.map, columns: ImmutablePropTypes.list, multiColumn: PropTypes.bool, fetchFollowRequests: PropTypes.func.isRequired, @@ -104,10 +105,10 @@ const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2); } componentDidMount () { - const { fetchFollowRequests, multiColumn } = this.props; + const { fetchFollowRequests } = this.props; + const { signedIn } = this.context.identity; - if (!multiColumn && window.innerWidth >= NAVIGATION_PANEL_BREAKPOINT) { - this.context.router.history.replace('/home'); + if (!signedIn) { return; } @@ -121,7 +122,7 @@ const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2); let listItems = []; if (multiColumn) { - if (!columns.find(item => item.get('id') === 'HOME')) { + if (signedIn && !columns.find(item => item.get('id') === 'HOME')) { navItems.push(); } @@ -142,41 +143,47 @@ const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2); navItems.push(); } - if (!multiColumn || !columns.find(item => item.get('id') === 'DIRECT')) { - navItems.push(); - } + if (signedIn) { + if (!multiColumn || !columns.find(item => item.get('id') === 'DIRECT')) { + navItems.push(); + } - if (!multiColumn || !columns.find(item => item.get('id') === 'BOOKMARKS')) { - navItems.push(); - } + if (!multiColumn || !columns.find(item => item.get('id') === 'BOOKMARKS')) { + navItems.push(); + } - if (myAccount.get('locked') || unreadFollowRequests > 0) { - navItems.push(); - } + if (myAccount.get('locked') || unreadFollowRequests > 0) { + navItems.push(); + } - navItems.push(); + navItems.push(); - listItems = listItems.concat([ -
    - - {lists.filter(list => !columns.find(item => item.get('id') === 'LIST' && item.getIn(['params', 'id']) === list.get('id'))).map(list => - - )} -
    , - ]); + listItems = listItems.concat([ +
    + + {lists.filter(list => !columns.find(item => item.get('id') === 'LIST' && item.getIn(['params', 'id']) === list.get('id'))).map(list => + + )} +
    , + ]); + } return (
    - {!multiColumn && } + {!multiColumn && signedIn && } {multiColumn && } {navItems} - - {listItems} - - { preferencesLink !== undefined && } - + {signedIn && ( + + + {listItems} + + { preferencesLink !== undefined && } + + + )}
    diff --git a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js index 481f767633..06df2ed995 100644 --- a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js +++ b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js @@ -1,10 +1,10 @@ import React from 'react'; -import Column from 'flavours/glitch/features/ui/components/column'; -import ColumnBackButtonSlim from 'flavours/glitch/components/column_back_button_slim'; +import Column from 'flavours/glitch/components/column'; import { connect } from 'react-redux'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import ColumnHeader from 'flavours/glitch/components/column_header'; const messages = defineMessages({ heading: { id: 'keyboard_shortcuts.heading', defaultMessage: 'Keyboard Shortcuts' }, @@ -28,8 +28,13 @@ class KeyboardShortcuts extends ImmutablePureComponent { const { intl, collapseEnabled, multiColumn } = this.props; return ( - - + + +
    diff --git a/app/javascript/flavours/glitch/features/ui/components/columns_area.js b/app/javascript/flavours/glitch/features/ui/components/columns_area.js index 718b4a27f6..8037c195dc 100644 --- a/app/javascript/flavours/glitch/features/ui/components/columns_area.js +++ b/app/javascript/flavours/glitch/features/ui/components/columns_area.js @@ -3,13 +3,7 @@ import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; - -import ReactSwipeableViews from 'react-swipeable-views'; -import TabsBar, { links, getIndex, getLink } from './tabs_bar'; import { Link } from 'react-router-dom'; - -import { disableSwiping } from 'flavours/glitch/initial_state'; - import BundleContainer from '../containers/bundle_container'; import ColumnLoading from './column_loading'; import DrawerLoading from './drawer_loading'; @@ -72,20 +66,13 @@ class ColumnsArea extends ImmutablePureComponent { openSettings: PropTypes.func, }; - // Corresponds to (max-width: 600px + (285px * 1) + (10px * 1)) in SCSS - mediaQuery = 'matchMedia' in window && window.matchMedia('(max-width: 895px)'); + // Corresponds to (max-width: $no-gap-breakpoint + 285px - 1px) in SCSS + mediaQuery = 'matchMedia' in window && window.matchMedia('(max-width: 1174px)'); state = { - shouldAnimate: false, renderComposePanel: !(this.mediaQuery && this.mediaQuery.matches), } - componentWillReceiveProps() { - if (typeof this.pendingIndex !== 'number' && this.lastIndex !== getIndex(this.context.router.history.location.pathname)) { - this.setState({ shouldAnimate: false }); - } - } - componentDidMount() { if (!this.props.singleColumn) { this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false); @@ -100,10 +87,7 @@ class ColumnsArea extends ImmutablePureComponent { this.setState({ renderComposePanel: !this.mediaQuery.matches }); } - this.lastIndex = getIndex(this.context.router.history.location.pathname); this.isRtlLayout = document.getElementsByTagName('body')[0].classList.contains('rtl'); - - this.setState({ shouldAnimate: true }); } componentWillUpdate(nextProps) { @@ -116,13 +100,6 @@ class ColumnsArea extends ImmutablePureComponent { if (this.props.singleColumn !== prevProps.singleColumn && !this.props.singleColumn) { this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false); } - - const newIndex = getIndex(this.context.router.history.location.pathname); - - if (this.lastIndex !== newIndex) { - this.lastIndex = newIndex; - this.setState({ shouldAnimate: true }); - } } componentWillUnmount () { @@ -150,31 +127,6 @@ class ColumnsArea extends ImmutablePureComponent { this.setState({ renderComposePanel: !e.matches }); } - handleSwipe = (index) => { - this.pendingIndex = index; - - const nextLinkTranslationId = links[index].props['data-preview-title-id']; - const currentLinkSelector = '.tabs-bar__link.active'; - const nextLinkSelector = `.tabs-bar__link[data-preview-title-id="${nextLinkTranslationId}"]`; - - // HACK: Remove the active class from the current link and set it to the next one - // React-router does this for us, but too late, feeling laggy. - document.querySelector(currentLinkSelector).classList.remove('active'); - document.querySelector(nextLinkSelector).classList.add('active'); - - if (!this.state.shouldAnimate && typeof this.pendingIndex === 'number') { - this.context.router.history.push(getLink(this.pendingIndex)); - this.pendingIndex = null; - } - } - - handleAnimationEnd = () => { - if (typeof this.pendingIndex === 'number') { - this.context.router.history.push(getLink(this.pendingIndex)); - this.pendingIndex = null; - } - } - handleWheel = () => { if (typeof this._interruptScrollAnimation !== 'function') { return; @@ -187,22 +139,6 @@ class ColumnsArea extends ImmutablePureComponent { this.node = node; } - renderView = (link, index) => { - const columnIndex = getIndex(this.context.router.history.location.pathname); - const title = this.props.intl.formatMessage({ id: link.props['data-preview-title-id'] }); - const icon = link.props['data-preview-icon']; - - const view = (index === columnIndex) ? - React.cloneElement(this.props.children) : - ; - - return ( -
    - {view} -
    - ); - } - renderLoading = columnId => () => { return columnId === 'COMPOSE' ? : ; } @@ -213,22 +149,12 @@ class ColumnsArea extends ImmutablePureComponent { render () { const { columns, children, singleColumn, intl, navbarUnder, openSettings } = this.props; - const { shouldAnimate, renderComposePanel } = this.state; + const { renderComposePanel } = this.state; const { signedIn } = this.context.identity; - const columnIndex = getIndex(this.context.router.history.location.pathname); - if (singleColumn) { const floatingActionButton = (!signedIn || shouldHideFAB(this.context.router.history.location.pathname)) ? null : ; - const content = columnIndex !== -1 ? ( - - {links.map(this.renderView)} - - ) : ( -
    {children}
    - ); - return (
    @@ -238,9 +164,8 @@ class ColumnsArea extends ImmutablePureComponent {
    - {!navbarUnder && } - {content} - {navbarUnder && } +
    +
    {children}
    diff --git a/app/javascript/flavours/glitch/features/ui/components/compose_panel.js b/app/javascript/flavours/glitch/features/ui/components/compose_panel.js index 6e1c51d74b..894a00747c 100644 --- a/app/javascript/flavours/glitch/features/ui/components/compose_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/compose_panel.js @@ -34,7 +34,7 @@ class ComposePanel extends React.PureComponent { )} - +
    ); } diff --git a/app/javascript/flavours/glitch/features/ui/components/header.js b/app/javascript/flavours/glitch/features/ui/components/header.js new file mode 100644 index 0000000000..041bdff051 --- /dev/null +++ b/app/javascript/flavours/glitch/features/ui/components/header.js @@ -0,0 +1,53 @@ +import React from 'react'; +import Logo from 'flavours/glitch/components/logo'; +import { Link } from 'react-router-dom'; +import { FormattedMessage } from 'react-intl'; +import { registrationsOpen, me } from 'flavours/glitch/initial_state'; +import Avatar from 'flavours/glitch/components/avatar'; +import Permalink from 'flavours/glitch/components/permalink'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; + +const Account = connect(state => ({ + account: state.getIn(['accounts', me]), +}))(({ account }) => ( + + {account.get('acct')} + + +)); + +export default class Header extends React.PureComponent { + + static contextTypes = { + identity: PropTypes.object, + }; + + render () { + const { signedIn } = this.context.identity; + + let content; + + if (signedIn) { + content = ; + } else { + content = ( + + + + + ); + } + + return ( +
    + + +
    + {content} +
    +
    + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.js b/app/javascript/flavours/glitch/features/ui/components/link_footer.js index 39576f17b4..cd32c8a3db 100644 --- a/app/javascript/flavours/glitch/features/ui/components/link_footer.js +++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.js @@ -3,8 +3,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import { limitedFederationMode, version, repository, source_url, profile_directory as profileDirectory } from 'flavours/glitch/initial_state'; -import { signOutLink, securityLink, privacyPolicyLink } from 'flavours/glitch/utils/backend_links'; +import { version, repository, source_url, profile_directory as profileDirectory } from 'flavours/glitch/initial_state'; import { logOut } from 'flavours/glitch/utils/log_out'; import { openModal } from 'flavours/glitch/actions/modal'; import { PERMISSION_INVITE_USERS } from 'flavours/glitch/permissions'; @@ -34,7 +33,6 @@ class LinkFooter extends React.PureComponent { }; static propTypes = { - withHotkeys: PropTypes.bool, onLogout: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, }; @@ -49,44 +47,26 @@ class LinkFooter extends React.PureComponent { } render () { - const { withHotkeys } = this.props; const { signedIn, permissions } = this.context.identity; - const items = []; - if ((this.context.identity.permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) { - items.push(); - } - - if (signedIn && withHotkeys) { - items.push(); - } - - if (signedIn && securityLink) { - items.push(); - } - - if (!limitedFederationMode) { - items.push(); - } + items.push(); + items.push(); + items.push(); + items.push(); + items.push(); + items.push(); if (profileDirectory) { - items.push(); - } - - items.push(); - - if (privacyPolicyLink) { - items.push(); + items.push(); } if (signedIn) { - items.push(); - } + if ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) { + items.push(); + } - items.push(); - - if (signedIn) { + items.push(); items.push(); } diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index 57fbfb285a..cb884ec751 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -42,10 +42,10 @@ export default class NavigationPanel extends React.Component { {!signedIn && ( - +

    - +
    )} {signedIn && ( @@ -64,6 +64,11 @@ export default class NavigationPanel extends React.Component {
    )} +
    +
    + +
    + {showTrends && (
    diff --git a/app/javascript/flavours/glitch/features/ui/components/tabs_bar.js b/app/javascript/flavours/glitch/features/ui/components/tabs_bar.js deleted file mode 100644 index 9c82fc91d3..0000000000 --- a/app/javascript/flavours/glitch/features/ui/components/tabs_bar.js +++ /dev/null @@ -1,86 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { NavLink, withRouter } from 'react-router-dom'; -import { FormattedMessage, injectIntl } from 'react-intl'; -import { debounce } from 'lodash'; -import { isUserTouching } from 'flavours/glitch/is_mobile'; -import Icon from 'flavours/glitch/components/icon'; -import NotificationsCounterIcon from './notifications_counter_icon'; - -export const links = [ - , - , - , - , - , - , -]; - -export function getIndex (path) { - return links.findIndex(link => link.props.to === path); -} - -export function getLink (index) { - return links[index].props.to; -} - -export default @injectIntl -@withRouter -class TabsBar extends React.PureComponent { - - static propTypes = { - intl: PropTypes.object.isRequired, - history: PropTypes.object.isRequired, - } - - setRef = ref => { - this.node = ref; - } - - handleClick = (e) => { - // Only apply optimization for touch devices, which we assume are slower - // We thus avoid the 250ms delay for non-touch devices and the lag for touch devices - if (isUserTouching()) { - e.preventDefault(); - e.persist(); - - requestAnimationFrame(() => { - const tabs = Array(...this.node.querySelectorAll('.tabs-bar__link')); - const currentTab = tabs.find(tab => tab.classList.contains('active')); - const nextTab = tabs.find(tab => tab.contains(e.target)); - const { props: { to } } = links[Array(...this.node.childNodes).indexOf(nextTab)]; - - - if (currentTab !== nextTab) { - if (currentTab) { - currentTab.classList.remove('active'); - } - - const listener = debounce(() => { - nextTab.removeEventListener('transitionend', listener); - this.props.history.push(to); - }, 50); - - nextTab.addEventListener('transitionend', listener); - nextTab.classList.add('active'); - } - }); - } - - } - - render () { - const { intl: { formatMessage } } = this.props; - - return ( -
    - - -
    -
    - ); - } - -} diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index c8cc905e7b..8ea7a0b028 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -52,12 +52,14 @@ import { Directory, Explore, FollowRecommendations, + About, } from './util/async-components'; import { HotKeys } from 'react-hotkeys'; import { me, title } from 'flavours/glitch/initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'flavours/glitch/actions/onboarding'; import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import { Helmet } from 'react-helmet'; +import Header from './components/header'; // Dummy import, to make sure that ends up in the application bundle. // Without this it ends up in ~8 very commonly used bundles. @@ -183,6 +185,7 @@ class SwitchingColumnsArea extends React.PureComponent { + @@ -652,6 +655,9 @@ class UI extends React.Component { )}} />
    )} + +
    + {children} diff --git a/app/javascript/flavours/glitch/features/ui/util/async-components.js b/app/javascript/flavours/glitch/features/ui/util/async-components.js index eef3a941d2..7ef06ceb7d 100644 --- a/app/javascript/flavours/glitch/features/ui/util/async-components.js +++ b/app/javascript/flavours/glitch/features/ui/util/async-components.js @@ -181,3 +181,7 @@ export function FilterModal () { export function Explore () { return import(/* webpackChunkName: "flavours/glitch/async/explore" */'flavours/glitch/features/explore'); } + +export function About () { + return import(/*webpackChunkName: "features/glitch/async/about" */'flavours/glitch/features/about'); +} diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index 762e5dbb9e..b63f2c86f2 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -42,27 +42,62 @@ &__main { box-sizing: border-box; width: 100%; - max-width: 600px; flex: 0 0 auto; display: flex; flex-direction: column; @media screen and (min-width: $no-gap-breakpoint) { padding: 0 10px; + max-width: 600px; } } } } +$ui-header-height: 55px; + +.ui__header { + display: none; + box-sizing: border-box; + height: $ui-header-height; + position: sticky; + top: 0; + z-index: 2; + justify-content: space-between; + align-items: center; + + &__logo { + display: inline-flex; + padding: 15px; + + .logo { + height: $ui-header-height - 30px; + width: auto; + } + } + + &__links { + display: flex; + align-items: center; + gap: 10px; + padding: 0 10px; + + .button { + flex: 0 0 auto; + } + } +} + .tabs-bar__wrapper { background: darken($ui-base-color, 8%); position: sticky; - top: 0; + top: $ui-header-height; z-index: 2; padding-top: 0; @media screen and (min-width: $no-gap-breakpoint) { padding-top: 10px; + top: 0; } .tabs-bar { diff --git a/app/javascript/flavours/glitch/styles/components/explore.scss b/app/javascript/flavours/glitch/styles/components/explore.scss index 05df34effb..bad77fc1ce 100644 --- a/app/javascript/flavours/glitch/styles/components/explore.scss +++ b/app/javascript/flavours/glitch/styles/components/explore.scss @@ -3,10 +3,9 @@ } .explore__search-header { - background: $ui-base-color; - display: flex; - align-items: flex-start; + background: darken($ui-base-color, 4%); justify-content: center; + align-items: center; padding: 15px; .search { @@ -15,14 +14,8 @@ } .search__input { - border-radius: 4px; - color: $inverted-text-color; - background: $simple-background-color; + border: 1px solid lighten($ui-base-color, 8%); padding: 10px; - - &::placeholder { - color: $dark-text-color; - } } .search .fa { diff --git a/app/javascript/flavours/glitch/styles/components/search.scss b/app/javascript/flavours/glitch/styles/components/search.scss index 17a34db62e..c0653a7b18 100644 --- a/app/javascript/flavours/glitch/styles/components/search.scss +++ b/app/javascript/flavours/glitch/styles/components/search.scss @@ -191,7 +191,7 @@ path:first-child { fill: rgba($highlight-text-color, 0.25) !important; - fill-opacity: 1 !important; + fill-opacity: 100% !important; } path:last-child { diff --git a/app/javascript/flavours/glitch/styles/components/single_column.scss b/app/javascript/flavours/glitch/styles/components/single_column.scss index bbb8b456c0..63bebc514e 100644 --- a/app/javascript/flavours/glitch/styles/components/single_column.scss +++ b/app/javascript/flavours/glitch/styles/components/single_column.scss @@ -154,72 +154,70 @@ padding-top: 0; } - @media screen and (min-width: 630px) { - .detailed-status { - padding: 15px; + .detailed-status { + padding: 15px; - .media-gallery, - .video-player, - .audio-player { - margin-top: 15px; - } + .media-gallery, + .video-player, + .audio-player { + margin-top: 15px; } + } - .account__header__bar { - padding: 5px 10px; - } + .account__header__bar { + padding: 5px 10px; + } - .navigation-bar, - .compose-form { - padding: 15px; - } + .navigation-bar, + .compose-form { + padding: 15px; + } - .compose-form .compose-form__publish .compose-form__publish-button-wrapper { - padding-top: 15px; - } + .compose-form .compose-form__publish .compose-form__publish-button-wrapper { + padding-top: 15px; + } - .notification__report { - padding: 15px 15px 15px (48px + 15px * 2); - min-height: 48px + 2px; + .notification__report { + padding: 15px 15px 15px (48px + 15px * 2); + min-height: 48px + 2px; - &__avatar { - left: 15px; - top: 17px; - } + &__avatar { + left: 15px; + top: 17px; } + } - .status { - padding: 15px; - min-height: 48px + 2px; + .status { + padding: 15px; + min-height: 48px + 2px; - .media-gallery, - &__action-bar, - .video-player, - .audio-player { - margin-top: 10px; - } + .media-gallery, + &__action-bar, + .video-player, + .audio-player { + margin-top: 10px; } + } - .account { - padding: 15px 10px; + .account { + padding: 15px 10px; - &__header__bio { - margin: 0 -10px; - } + &__header__bio { + margin: 0 -10px; } + } - .notification { - &__message { - padding-top: 15px; - } + .notification { + &__message { + padding-top: 15px; + } - .status { - padding-top: 8px; - } + .status { + padding-top: 8px; + } - .account { - padding-top: 8px; - } + .account { + padding-top: 8px; } } } @@ -261,37 +259,83 @@ .search { margin-bottom: 10px; } -} -@media screen and (max-width: 600px + (285px * 1) + (10px * 1)) { - .columns-area__panels__pane--compositional { + .floating-action-button, + .tabs-bar__link.optional { + display: none; + } + + .search-page .search { display: none; } + .navigation-panel__legal { + display: none; + } +} + +@media screen and (max-width: $no-gap-breakpoint - 1px) { .with-fab .scrollable .item-list:last-child { padding-bottom: 5.25rem; } -} -@media screen and (min-width: 600px + (285px * 1) + (10px * 1)) { - .floating-action-button, - .tabs-bar__link.optional { - display: none; + .columns-area__panels__main { + width: calc(100% - 55px); } - .search-page .search { - display: none; + .columns-area__panels { + min-height: calc(100vh - $ui-header-height); } -} -@media screen and (max-width: 600px + (285px * 2) + (10px * 2)) { .columns-area__panels__pane--navigational { - display: none; + min-width: 55px; + + .columns-area__panels__pane__inner { + width: 55px; + } + + .navigation-panel { + margin: 0; + background: $ui-base-color; + border-left: 1px solid lighten($ui-base-color, 8%); + height: 100vh; + } + + .column-link span, + .navigation-panel__sign-in-banner, + .navigation-panel__logo, + .getting-started__trends { + display: none; + } + + .column-link__icon { + font-size: 18px; + } + } + + .ui__header { + display: flex; + background: $ui-base-color; + border-bottom: 1px solid lighten($ui-base-color, 8%); + } + + .column-header, + .column-back-button, + .scrollable { + border-radius: 0 !important; } } -@media screen and (min-width: 600px + (285px * 2) + (10px * 2)) { - .tabs-bar { +.explore__search-header { + display: none; +} + +@media screen and (max-width: $no-gap-breakpoint + 285px - 1px) { + .columns-area__panels__pane--compositional { display: none; } + + .explore__search-header { + display: flex; + } } diff --git a/app/javascript/flavours/glitch/styles/variables.scss b/app/javascript/flavours/glitch/styles/variables.scss index 65758e6e09..4b4f5ffbed 100644 --- a/app/javascript/flavours/glitch/styles/variables.scss +++ b/app/javascript/flavours/glitch/styles/variables.scss @@ -51,7 +51,7 @@ $media-modal-media-max-width: 100%; // put margins on top and bottom of image to avoid the screen covered by image. $media-modal-media-max-height: 80%; -$no-gap-breakpoint: 415px; +$no-gap-breakpoint: 890px; $font-sans-serif: 'mastodon-font-sans-serif' !default; $font-display: 'mastodon-font-display' !default; From b68b96a0ccf3cb032f2ff37b9efff88a16a813f8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Oct 2022 18:57:33 +0200 Subject: [PATCH 147/500] [Glitch] Add server rules to sign-up flow Port 679274465b3a2aaf87a13553f08104d6d3f1d275 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/containers.scss | 6 +-- .../flavours/glitch/styles/forms.scss | 49 ++++++++++++++++--- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/containers.scss b/app/javascript/flavours/glitch/styles/containers.scss index b8d0fdad2a..f0caeb4c52 100644 --- a/app/javascript/flavours/glitch/styles/containers.scss +++ b/app/javascript/flavours/glitch/styles/containers.scss @@ -9,11 +9,7 @@ } .logo-container { - margin: 100px auto 50px; - - @media screen and (max-width: 500px) { - margin: 40px auto 0; - } + margin: 50px auto; h1 { display: flex; diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index 8ae2b5bd84..6ab1189daa 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -6,9 +6,10 @@ code { } .form-container { - max-width: 400px; + max-width: 450px; padding: 20px; - margin: 0 auto; + padding-bottom: 50px; + margin: 50px auto; } .indicator-icon { @@ -123,13 +124,34 @@ code { } .title { - color: #d9e1e8; - font-size: 20px; - line-height: 28px; - font-weight: 400; + font-size: 28px; + line-height: 33px; + font-weight: 700; + margin-bottom: 15px; + } + + .lead { + font-size: 17px; + line-height: 22px; + color: $secondary-text-color; margin-bottom: 30px; } + .rules-list { + list-style: decimal; + font-size: 17px; + line-height: 22px; + font-weight: 500; + background: transparent; + border: 0; + padding: 0.5em 1em !important; + margin-bottom: 30px; + + li { + border-color: lighten($ui-base-color, 8%); + } + } + .hint { color: $darker-text-color; @@ -451,6 +473,11 @@ code { } } + .stacked-actions { + margin-top: 30px; + margin-bottom: 15px; + } + button, .button, .block-button { @@ -502,6 +529,16 @@ code { } } + .button.button-tertiary { + padding: 9px; + + &:hover, + &:focus, + &:active { + padding: 10px; + } + } + select { appearance: none; box-sizing: border-box; From 07df273f3725bc673b9bc2206796908f58c2500a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 8 Oct 2022 06:01:11 +0200 Subject: [PATCH 148/500] [Glitch] Change privacy policy to be rendered in web UI, add REST API Port a2ba01132603174c43c5788a95f9ee127b684c0a to glitch-soc Signed-off-by: Claire --- .../glitch/features/privacy_policy/index.js | 60 +++++++++++++ .../features/ui/components/link_footer.js | 2 +- .../flavours/glitch/features/ui/index.js | 2 + .../features/ui/util/async-components.js | 4 + .../glitch/styles/components/columns.scss | 3 +- .../glitch/styles/components/index.scss | 1 + .../styles/components/privacy_policy.scss | 84 +++++++++++++++++++ 7 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 app/javascript/flavours/glitch/features/privacy_policy/index.js create mode 100644 app/javascript/flavours/glitch/styles/components/privacy_policy.scss diff --git a/app/javascript/flavours/glitch/features/privacy_policy/index.js b/app/javascript/flavours/glitch/features/privacy_policy/index.js new file mode 100644 index 0000000000..8160102946 --- /dev/null +++ b/app/javascript/flavours/glitch/features/privacy_policy/index.js @@ -0,0 +1,60 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { title } from 'flavours/glitch/initial_state'; +import { Helmet } from 'react-helmet'; +import { FormattedMessage, FormattedDate, injectIntl, defineMessages } from 'react-intl'; +import Column from 'flavours/glitch/components/column'; +import api from 'flavours/glitch/api'; +import Skeleton from 'flavours/glitch/components/skeleton'; + +const messages = defineMessages({ + title: { id: 'privacy_policy.title', defaultMessage: 'Privacy Policy' }, +}); + +export default @injectIntl +class PrivacyPolicy extends React.PureComponent { + + static propTypes = { + intl: PropTypes.object, + }; + + state = { + content: null, + lastUpdated: null, + isLoading: true, + }; + + componentDidMount () { + api().get('/api/v1/instance/privacy_policy').then(({ data }) => { + this.setState({ content: data.content, lastUpdated: data.updated_at, isLoading: false }); + }).catch(() => { + this.setState({ isLoading: false }); + }); + } + + render () { + const { intl } = this.props; + const { isLoading, content, lastUpdated } = this.state; + + return ( + +
    +
    +

    +

    : }} />

    +
    + +
    +
    + + + {intl.formatMessage(messages.title)} - {title} + + + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.js b/app/javascript/flavours/glitch/features/ui/components/link_footer.js index cd32c8a3db..8c55a73372 100644 --- a/app/javascript/flavours/glitch/features/ui/components/link_footer.js +++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.js @@ -54,7 +54,7 @@ class LinkFooter extends React.PureComponent { items.push(); items.push(); items.push(); - items.push(); + items.push(); items.push(); if (profileDirectory) { diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index 8ea7a0b028..ea99e50973 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -53,6 +53,7 @@ import { Explore, FollowRecommendations, About, + PrivacyPolicy, } from './util/async-components'; import { HotKeys } from 'react-hotkeys'; import { me, title } from 'flavours/glitch/initial_state'; @@ -186,6 +187,7 @@ class SwitchingColumnsArea extends React.PureComponent { + diff --git a/app/javascript/flavours/glitch/features/ui/util/async-components.js b/app/javascript/flavours/glitch/features/ui/util/async-components.js index 7ef06ceb7d..5bf8d7fd64 100644 --- a/app/javascript/flavours/glitch/features/ui/util/async-components.js +++ b/app/javascript/flavours/glitch/features/ui/util/async-components.js @@ -185,3 +185,7 @@ export function Explore () { export function About () { return import(/*webpackChunkName: "features/glitch/async/about" */'flavours/glitch/features/about'); } + +export function PrivacyPolicy () { + return import(/*webpackChunkName: "features/glitch/async/privacy_policy" */'flavours/glitch/features/privacy_policy'); +} diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index b63f2c86f2..1827e8c01b 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -357,7 +357,8 @@ $ui-header-height: 55px; > .scrollable { background: $ui-base-color; - border-radius: 0 0 4px 4px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; } } diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index 1c3540b338..a04482a794 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -1778,3 +1778,4 @@ noscript { @import 'announcements'; @import 'explore'; @import 'signed_out'; +@import 'privacy_policy'; diff --git a/app/javascript/flavours/glitch/styles/components/privacy_policy.scss b/app/javascript/flavours/glitch/styles/components/privacy_policy.scss new file mode 100644 index 0000000000..f69bf1a076 --- /dev/null +++ b/app/javascript/flavours/glitch/styles/components/privacy_policy.scss @@ -0,0 +1,84 @@ +.privacy-policy { + background: $ui-base-color; + padding: 20px; + + @media screen and (min-width: $no-gap-breakpoint) { + border-radius: 4px; + } + + &__body { + margin-top: 20px; + color: $secondary-text-color; + font-size: 15px; + line-height: 22px; + + h1, + p, + ul, + ol { + margin-bottom: 20px; + } + + ul { + list-style: disc; + } + + ol { + list-style: decimal; + } + + ul, + ol { + padding-left: 1em; + } + + li { + margin-bottom: 10px; + + &::marker { + color: $darker-text-color; + } + + &:last-child { + margin-bottom: 0; + } + } + + h1 { + color: $primary-text-color; + font-size: 19px; + line-height: 24px; + font-weight: 700; + margin-top: 30px; + + &:first-child { + margin-top: 0; + } + } + + strong { + font-weight: 700; + color: $primary-text-color; + } + + em { + font-style: italic; + } + + a { + color: $highlight-text-color; + text-decoration: underline; + + &:focus, + &:hover, + &:active { + text-decoration: none; + } + } + + hr { + border: 1px solid lighten($ui-base-color, 4%); + margin: 30px 0; + } + } +} From 8491a3532dba7176fbeb7b9283ca3abd07858b3a Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sun, 9 Oct 2022 10:49:51 +0900 Subject: [PATCH 149/500] [Glitch] Remove timeline preview link from nav panel when not signed-in Port e82467ca41f4940add32061ca70214e236cc435f to glitch-soc Signed-off-by: Claire --- .../glitch/components/server_banner.js | 10 ++-- .../ui/components/navigation_panel.js | 23 ++++---- .../flavours/glitch/initial_state.js | 59 ++++++++++++++++++- 3 files changed, 75 insertions(+), 17 deletions(-) diff --git a/app/javascript/flavours/glitch/components/server_banner.js b/app/javascript/flavours/glitch/components/server_banner.js index 16360ec564..2bb0381da1 100644 --- a/app/javascript/flavours/glitch/components/server_banner.js +++ b/app/javascript/flavours/glitch/components/server_banner.js @@ -1,12 +1,12 @@ -import React from 'react'; import PropTypes from 'prop-types'; -import { domain } from 'flavours/glitch/initial_state'; -import { fetchServer } from 'flavours/glitch/actions/server'; +import React from 'react'; +import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { connect } from 'react-redux'; -import Account from 'flavours/glitch/containers/account_container'; +import { fetchServer } from 'flavours/glitch/actions/server'; import ShortNumber from 'flavours/glitch/components/short_number'; import Skeleton from 'flavours/glitch/components/skeleton'; -import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; +import Account from 'flavours/glitch/containers/account_container'; +import { domain } from 'flavours/glitch/initial_state'; const messages = defineMessages({ aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' }, diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index cb884ec751..754c651c2e 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -1,15 +1,15 @@ -import React from 'react'; import PropTypes from 'prop-types'; -import { NavLink, Link } from 'react-router-dom'; +import React from 'react'; import { FormattedMessage } from 'react-intl'; +import { Link, NavLink } from 'react-router-dom'; import Icon from 'flavours/glitch/components/icon'; -import { showTrends } from 'flavours/glitch/initial_state'; -import { preferencesLink, relationshipsLink } from 'flavours/glitch/utils/backend_links'; -import NotificationsCounterIcon from './notifications_counter_icon'; +import TrendsContainer from 'flavours/glitch/features/getting_started/containers/trends_container'; +import { showTrends, timelinePreview } from 'flavours/glitch/initial_state'; import FollowRequestsNavLink from './follow_requests_nav_link'; import ListPanel from './list_panel'; -import TrendsContainer from 'flavours/glitch/features/getting_started/containers/trends_container'; +import NotificationsCounterIcon from './notifications_counter_icon'; import SignInBanner from './sign_in_banner'; +import { preferencesLink, relationshipsLink } from 'flavours/glitch/utils/backend_links'; export default class NavigationPanel extends React.Component { @@ -36,10 +36,13 @@ export default class NavigationPanel extends React.Component { )} - { showTrends && } - - - + + {signedIn || timelinePreview && ( + <> + + + + )} {!signedIn && (
    diff --git a/app/javascript/flavours/glitch/initial_state.js b/app/javascript/flavours/glitch/initial_state.js index 0f2484ba33..b597ab2c52 100644 --- a/app/javascript/flavours/glitch/initial_state.js +++ b/app/javascript/flavours/glitch/initial_state.js @@ -1,4 +1,52 @@ +// @ts-check + +/** + * @typedef {[code: string, name: string, localName: string]} InitialStateLanguage + */ + +/** + * @typedef InitialStateMeta + * @property {string} access_token + * @property {boolean=} advanced_layout + * @property {boolean} auto_play_gif + * @property {boolean} activity_api_enabled + * @property {string} admin + * @property {boolean=} boost_modal + * @property {boolean} crop_images + * @property {boolean=} delete_modal + * @property {boolean=} disable_swiping + * @property {boolean} display_media + * @property {string} domain + * @property {boolean=} expand_spoilers + * @property {boolean} limited_federation_mode + * @property {string} locale + * @property {string | null} mascot + * @property {string=} me + * @property {boolean} profile_directory + * @property {boolean} registrations_open + * @property {boolean} reduce_motion + * @property {string} repository + * @property {boolean} search_enabled + * @property {string} source_url + * @property {string} streaming_api_base_url + * @property {boolean} timeline_preview + * @property {string} title + * @property {boolean} trends + * @property {boolean} unfollow_modal + * @property {boolean} use_blurhash + * @property {boolean=} use_pending_items + * @property {string} version + * @property {object} local_settings + */ + +/** + * @typedef InitialState + * @property {InitialStateLanguage[]} languages + * @property {InitialStateMeta} meta + */ + const element = document.getElementById('initial-state'); +/** @type {InitialState | undefined} */ const initialState = element && JSON.parse(element.textContent); // Glitch-soc-specific “local settings” @@ -8,7 +56,12 @@ try { initialState.local_settings = {}; } -const getMeta = (prop) => initialState && initialState.meta && initialState.meta[prop]; +/** + * @template {keyof InitialStateMeta} K + * @param {K} prop + * @returns {InitialStateMeta[K] | undefined} + */ +const getMeta = (prop) => initialState?.meta && initialState.meta[prop]; export const domain = getMeta('domain'); export const reduceMotion = getMeta('reduce_motion'); @@ -34,7 +87,9 @@ export const usePendingItems = getMeta('use_pending_items'); export const showTrends = getMeta('trends'); export const title = getMeta('title'); export const disableSwiping = getMeta('disable_swiping'); -export const languages = initialState && initialState.languages; +export const timelinePreview = getMeta('timeline_preview'); +export const activityApiEnabled = getMeta('activity_api_enabled'); +export const languages = initialState?.languages; // Glitch-soc-specific settings export const favouriteModal = getMeta('favourite_modal'); From e5720cd54027951d450977ba1a836b60b095cbb0 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Sun, 9 Oct 2022 10:55:09 +0900 Subject: [PATCH 150/500] [Glitch] Add title to pages with missing title in Web UI Port a5112b51fdf3ec2b31690e064ea330a090e71957 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/containers/mastodon.js | 23 +++++++++------- .../features/account/components/header.js | 4 +-- .../features/bookmarked_statuses/index.js | 19 +++++++++----- .../glitch/features/direct_timeline/index.js | 19 +++++++++----- .../features/favourited_statuses/index.js | 19 +++++++++----- .../glitch/features/favourites/index.js | 16 ++++++------ .../glitch/features/getting_started/index.js | 5 ++++ .../glitch/features/list_timeline/index.js | 26 ++++++++++++------- .../flavours/glitch/features/lists/index.js | 21 +++++++++------ .../flavours/glitch/features/status/index.js | 4 +-- .../flavours/glitch/features/ui/index.js | 6 +---- 11 files changed, 97 insertions(+), 65 deletions(-) diff --git a/app/javascript/flavours/glitch/containers/mastodon.js b/app/javascript/flavours/glitch/containers/mastodon.js index bc03112936..eb88c26558 100644 --- a/app/javascript/flavours/glitch/containers/mastodon.js +++ b/app/javascript/flavours/glitch/containers/mastodon.js @@ -1,22 +1,25 @@ -import React from 'react'; -import { Provider } from 'react-redux'; import PropTypes from 'prop-types'; -import configureStore from 'flavours/glitch/store/configureStore'; +import React from 'react'; +import { Helmet } from 'react-helmet'; +import { IntlProvider, addLocaleData } from 'react-intl'; +import { Provider as ReduxProvider } from 'react-redux'; import { BrowserRouter, Route } from 'react-router-dom'; import { ScrollContext } from 'react-router-scroll-4'; +import configureStore from 'flavours/glitch/store/configureStore'; import UI from 'flavours/glitch/features/ui'; import { fetchCustomEmojis } from 'flavours/glitch/actions/custom_emojis'; import { hydrateStore } from 'flavours/glitch/actions/store'; -import { connectUserStream } from 'flavours/glitch/actions/streaming'; import { checkDeprecatedLocalSettings } from 'flavours/glitch/actions/local_settings'; -import { IntlProvider, addLocaleData } from 'react-intl'; -import { getLocale } from 'locales'; -import initialState from 'flavours/glitch/initial_state'; +import { connectUserStream } from 'flavours/glitch/actions/streaming'; import ErrorBoundary from 'flavours/glitch/components/error_boundary'; +import initialState, { title as siteTitle } from 'flavours/glitch/initial_state'; +import { getLocale } from 'locales'; const { localeData, messages } = getLocale(); addLocaleData(localeData); +const title = process.env.NODE_ENV === 'production' ? siteTitle : `${siteTitle} (Dev)`; + export const store = configureStore(); const hydrateAction = hydrateStore(initialState); store.dispatch(hydrateAction); @@ -78,15 +81,17 @@ export default class Mastodon extends React.PureComponent { return ( - + + + - + ); } diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js index 0f0e40268f..9c7e62fc27 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.js +++ b/app/javascript/flavours/glitch/features/account/components/header.js @@ -3,7 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { autoPlayGif, me, title, domain } from 'flavours/glitch/initial_state'; +import { autoPlayGif, me, domain } from 'flavours/glitch/initial_state'; import { preferencesLink, profileLink, accountAdminLink } from 'flavours/glitch/utils/backend_links'; import classNames from 'classnames'; import Icon from 'flavours/glitch/components/icon'; @@ -352,7 +352,7 @@ class Header extends ImmutablePureComponent {
    - {titleFromAccount(account)} - {title} + {titleFromAccount(account)}
    ); diff --git a/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js b/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js index ada8fb0681..91dd0e892d 100644 --- a/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js +++ b/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js @@ -1,15 +1,16 @@ -import React from 'react'; -import { connect } from 'react-redux'; +import { debounce } from 'lodash'; import PropTypes from 'prop-types'; +import React from 'react'; +import { Helmet } from 'react-helmet'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { debounce } from 'lodash'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { connect } from 'react-redux'; import { fetchBookmarkedStatuses, expandBookmarkedStatuses } from 'flavours/glitch/actions/bookmarks'; -import Column from 'flavours/glitch/features/ui/components/column'; -import ColumnHeader from 'flavours/glitch/components/column_header'; import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; +import ColumnHeader from 'flavours/glitch/components/column_header'; import StatusList from 'flavours/glitch/components/status_list'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; +import Column from 'flavours/glitch/features/ui/components/column'; const messages = defineMessages({ heading: { id: 'column.bookmarks', defaultMessage: 'Bookmarks' }, @@ -95,6 +96,10 @@ class Bookmarks extends ImmutablePureComponent { emptyMessage={emptyMessage} bindToDocument={!multiColumn} /> + + + {intl.formatMessage(messages.heading)} +
    ); } diff --git a/app/javascript/flavours/glitch/features/direct_timeline/index.js b/app/javascript/flavours/glitch/features/direct_timeline/index.js index 75ca19d170..cb209ed76f 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/index.js +++ b/app/javascript/flavours/glitch/features/direct_timeline/index.js @@ -1,15 +1,16 @@ +import PropTypes from 'prop-types'; import React from 'react'; +import { Helmet } from 'react-helmet'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; -import StatusListContainer from 'flavours/glitch/features/ui/containers/status_list_container'; +import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; +import { mountConversations, unmountConversations, expandConversations } from 'flavours/glitch/actions/conversations'; +import { connectDirectStream } from 'flavours/glitch/actions/streaming'; +import { expandDirectTimeline } from 'flavours/glitch/actions/timelines'; import Column from 'flavours/glitch/components/column'; import ColumnHeader from 'flavours/glitch/components/column_header'; -import { expandDirectTimeline } from 'flavours/glitch/actions/timelines'; -import { mountConversations, unmountConversations, expandConversations } from 'flavours/glitch/actions/conversations'; -import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import StatusListContainer from 'flavours/glitch/features/ui/containers/status_list_container'; import ColumnSettingsContainer from './containers/column_settings_container'; -import { connectDirectStream } from 'flavours/glitch/actions/streaming'; import ConversationsListContainer from './containers/conversations_list_container'; const messages = defineMessages({ @@ -143,6 +144,10 @@ class DirectTimeline extends React.PureComponent { {contents} + + + {intl.formatMessage(messages.title)} + ); } diff --git a/app/javascript/flavours/glitch/features/favourited_statuses/index.js b/app/javascript/flavours/glitch/features/favourited_statuses/index.js index 4df3aaa645..ae94f05cad 100644 --- a/app/javascript/flavours/glitch/features/favourited_statuses/index.js +++ b/app/javascript/flavours/glitch/features/favourited_statuses/index.js @@ -1,15 +1,16 @@ -import React from 'react'; -import { connect } from 'react-redux'; +import { debounce } from 'lodash'; import PropTypes from 'prop-types'; +import React from 'react'; +import { Helmet } from 'react-helmet'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { debounce } from 'lodash'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { connect } from 'react-redux'; +import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; import { fetchFavouritedStatuses, expandFavouritedStatuses } from 'flavours/glitch/actions/favourites'; -import Column from 'flavours/glitch/features/ui/components/column'; import ColumnHeader from 'flavours/glitch/components/column_header'; -import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; import StatusList from 'flavours/glitch/components/status_list'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; +import Column from 'flavours/glitch/features/ui/components/column'; const messages = defineMessages({ heading: { id: 'column.favourites', defaultMessage: 'Favourites' }, @@ -95,6 +96,10 @@ class Favourites extends ImmutablePureComponent { emptyMessage={emptyMessage} bindToDocument={!multiColumn} /> + + + {intl.formatMessage(messages.heading)} + ); } diff --git a/app/javascript/flavours/glitch/features/favourites/index.js b/app/javascript/flavours/glitch/features/favourites/index.js index a51562e710..faaf62dee0 100644 --- a/app/javascript/flavours/glitch/features/favourites/index.js +++ b/app/javascript/flavours/glitch/features/favourites/index.js @@ -1,16 +1,16 @@ -import React from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import React from 'react'; +import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { connect } from 'react-redux'; +import ColumnHeader from 'flavours/glitch/components/column_header'; +import Icon from 'flavours/glitch/components/icon'; import { fetchFavourites } from 'flavours/glitch/actions/interactions'; +import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; +import ScrollableList from 'flavours/glitch/components/scrollable_list'; import AccountContainer from 'flavours/glitch/containers/account_container'; import Column from 'flavours/glitch/features/ui/components/column'; -import Icon from 'flavours/glitch/components/icon'; -import ColumnHeader from 'flavours/glitch/components/column_header'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import ScrollableList from '../../components/scrollable_list'; const messages = defineMessages({ heading: { id: 'column.favourited_by', defaultMessage: 'Favourited by' }, diff --git a/app/javascript/flavours/glitch/features/getting_started/index.js b/app/javascript/flavours/glitch/features/getting_started/index.js index 4d34278770..39e00e4af3 100644 --- a/app/javascript/flavours/glitch/features/getting_started/index.js +++ b/app/javascript/flavours/glitch/features/getting_started/index.js @@ -17,6 +17,7 @@ import { preferencesLink } from 'flavours/glitch/utils/backend_links'; import NavigationBar from '../compose/components/navigation_bar'; import LinkFooter from 'flavours/glitch/features/ui/components/link_footer'; import TrendsContainer from './containers/trends_container'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'getting_started.heading', defaultMessage: 'Getting started' }, @@ -190,6 +191,10 @@ const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2);
    {multiColumn && showTrends && } + + + {intl.formatMessage(messages.menu)} + ); } diff --git a/app/javascript/flavours/glitch/features/list_timeline/index.js b/app/javascript/flavours/glitch/features/list_timeline/index.js index 08347446b4..9cc5bc1c46 100644 --- a/app/javascript/flavours/glitch/features/list_timeline/index.js +++ b/app/javascript/flavours/glitch/features/list_timeline/index.js @@ -1,20 +1,22 @@ -import React from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import React from 'react'; +import { Helmet } from 'react-helmet'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import StatusListContainer from 'flavours/glitch/features/ui/containers/status_list_container'; -import Column from 'flavours/glitch/components/column'; -import ColumnHeader from 'flavours/glitch/components/column_header'; -import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; -import { connectListStream } from 'flavours/glitch/actions/streaming'; -import { expandListTimeline } from 'flavours/glitch/actions/timelines'; +import { connect } from 'react-redux'; +import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns'; import { fetchList, deleteList, updateList } from 'flavours/glitch/actions/lists'; import { openModal } from 'flavours/glitch/actions/modal'; -import MissingIndicator from 'flavours/glitch/components/missing_indicator'; -import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; +import { connectListStream } from 'flavours/glitch/actions/streaming'; +import { expandListTimeline } from 'flavours/glitch/actions/timelines'; +import Column from 'flavours/glitch/components/column'; +import ColumnBackButton from 'flavours/glitch/components/column_back_button'; +import ColumnHeader from 'flavours/glitch/components/column_header'; import Icon from 'flavours/glitch/components/icon'; +import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; +import MissingIndicator from 'flavours/glitch/components/missing_indicator'; import RadioButton from 'flavours/glitch/components/radio_button'; +import StatusListContainer from 'flavours/glitch/features/ui/containers/status_list_container'; const messages = defineMessages({ deleteMessage: { id: 'confirmations.delete_list.message', defaultMessage: 'Are you sure you want to permanently delete this list?' }, @@ -210,6 +212,10 @@ class ListTimeline extends React.PureComponent { emptyMessage={} bindToDocument={!multiColumn} /> + + + {title} + ); } diff --git a/app/javascript/flavours/glitch/features/lists/index.js b/app/javascript/flavours/glitch/features/lists/index.js index b92389d822..32217cf418 100644 --- a/app/javascript/flavours/glitch/features/lists/index.js +++ b/app/javascript/flavours/glitch/features/lists/index.js @@ -1,18 +1,19 @@ -import React from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; +import React from 'react'; +import { Helmet } from 'react-helmet'; import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { connect } from 'react-redux'; +import { createSelector } from 'reselect'; +import { fetchLists } from 'flavours/glitch/actions/lists'; +import ColumnBackButtonSlim from 'flavours/glitch/components/column_back_button_slim'; import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; +import ScrollableList from 'flavours/glitch/components/scrollable_list'; import Column from 'flavours/glitch/features/ui/components/column'; -import ColumnBackButtonSlim from 'flavours/glitch/components/column_back_button_slim'; -import { fetchLists } from 'flavours/glitch/actions/lists'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; -import ImmutablePureComponent from 'react-immutable-pure-component'; import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; import ColumnSubheading from 'flavours/glitch/features/ui/components/column_subheading'; import NewListForm from './components/new_list_form'; -import { createSelector } from 'reselect'; -import ScrollableList from 'flavours/glitch/components/scrollable_list'; const messages = defineMessages({ heading: { id: 'column.lists', defaultMessage: 'Lists' }, @@ -76,6 +77,10 @@ class Lists extends ImmutablePureComponent { , )} + + + {intl.formatMessage(messages.heading)} + ); } diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js index c967ef34d2..f84928d2e8 100644 --- a/app/javascript/flavours/glitch/features/status/index.js +++ b/app/javascript/flavours/glitch/features/status/index.js @@ -47,7 +47,7 @@ import { openModal } from 'flavours/glitch/actions/modal'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { HotKeys } from 'react-hotkeys'; -import { boostModal, favouriteModal, deleteModal, title } from 'flavours/glitch/initial_state'; +import { boostModal, favouriteModal, deleteModal } from 'flavours/glitch/initial_state'; import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; import { autoUnfoldCW } from 'flavours/glitch/utils/content_warning'; import { textForScreenReader, defaultMediaVisibility } from 'flavours/glitch/components/status'; @@ -684,7 +684,7 @@ class Status extends ImmutablePureComponent { - {titleFromStatus(status)} - {title} + {titleFromStatus(status)} ); diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index ea99e50973..d5abefb190 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -56,7 +56,7 @@ import { PrivacyPolicy, } from './util/async-components'; import { HotKeys } from 'react-hotkeys'; -import { me, title } from 'flavours/glitch/initial_state'; +import { me } from 'flavours/glitch/initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'flavours/glitch/actions/onboarding'; import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import { Helmet } from 'react-helmet'; @@ -669,10 +669,6 @@ class UI extends React.Component { - - - {title} -
    ); From dea951cce881a4d7379013d7cb5b8d012b5aa59d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 9 Oct 2022 06:08:37 +0200 Subject: [PATCH 151/500] [Glitch] Add dismissable hints to various timelines in web UI Port f41ec9af05d3e2145e62f705225dbabb7e04e242 to glitch-soc Co-authored-by: Yamagishi Kazutoshi Signed-off-by: Claire --- .../glitch/components/dismissable_banner.js | 51 +++++++++++++++++++ .../flavours/glitch/features/about/index.js | 3 +- .../features/community_timeline/index.js | 9 +++- .../glitch/features/directory/index.js | 3 +- .../flavours/glitch/features/explore/index.js | 3 +- .../flavours/glitch/features/explore/links.js | 11 ++++ .../glitch/features/explore/results.js | 3 +- .../glitch/features/explore/statuses.js | 29 +++++++---- .../flavours/glitch/features/explore/tags.js | 11 ++++ .../glitch/features/hashtag_timeline/index.js | 3 +- .../glitch/features/home_timeline/index.js | 5 +- .../glitch/features/notifications/index.js | 3 +- .../glitch/features/privacy_policy/index.js | 3 +- .../glitch/features/public_timeline/index.js | 8 ++- app/javascript/flavours/glitch/settings.js | 1 + .../glitch/styles/components/columns.scss | 25 +++++++++ 16 files changed, 139 insertions(+), 32 deletions(-) create mode 100644 app/javascript/flavours/glitch/components/dismissable_banner.js diff --git a/app/javascript/flavours/glitch/components/dismissable_banner.js b/app/javascript/flavours/glitch/components/dismissable_banner.js new file mode 100644 index 0000000000..ff52a619d2 --- /dev/null +++ b/app/javascript/flavours/glitch/components/dismissable_banner.js @@ -0,0 +1,51 @@ +import React from 'react'; +import IconButton from './icon_button'; +import PropTypes from 'prop-types'; +import { injectIntl, defineMessages } from 'react-intl'; +import { bannerSettings } from 'flavours/glitch/settings'; + +const messages = defineMessages({ + dismiss: { id: 'dismissable_banner.dismiss', defaultMessage: 'Dismiss' }, +}); + +export default @injectIntl +class DismissableBanner extends React.PureComponent { + + static propTypes = { + id: PropTypes.string.isRequired, + children: PropTypes.node, + intl: PropTypes.object.isRequired, + }; + + state = { + visible: !bannerSettings.get(this.props.id), + }; + + handleDismiss = () => { + const { id } = this.props; + this.setState({ visible: false }, () => bannerSettings.set(id, true)); + } + + render () { + const { visible } = this.state; + + if (!visible) { + return null; + } + + const { children, intl } = this.props; + + return ( +
    +
    + {children} +
    + +
    + +
    +
    + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/about/index.js b/app/javascript/flavours/glitch/features/about/index.js index 9f7c90d917..4500480f5a 100644 --- a/app/javascript/flavours/glitch/features/about/index.js +++ b/app/javascript/flavours/glitch/features/about/index.js @@ -4,7 +4,6 @@ import PropTypes from 'prop-types'; import Column from 'flavours/glitch/components/column'; import LinkFooter from 'flavours/glitch/features/ui/components/link_footer'; import { Helmet } from 'react-helmet'; -import { title } from 'flavours/glitch/initial_state'; const messages = defineMessages({ title: { id: 'column.about', defaultMessage: 'About' }, @@ -25,7 +24,7 @@ class About extends React.PureComponent { - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/flavours/glitch/features/community_timeline/index.js b/app/javascript/flavours/glitch/features/community_timeline/index.js index 5ee46ca3bb..77809574d2 100644 --- a/app/javascript/flavours/glitch/features/community_timeline/index.js +++ b/app/javascript/flavours/glitch/features/community_timeline/index.js @@ -10,7 +10,8 @@ import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/col import ColumnSettingsContainer from './containers/column_settings_container'; import { connectCommunityStream } from 'flavours/glitch/actions/streaming'; import { Helmet } from 'react-helmet'; -import { title } from 'flavours/glitch/initial_state'; +import { domain } from 'flavours/glitch/initial_state'; +import DismissableBanner from 'flavours/glitch/components/dismissable_banner'; const messages = defineMessages({ title: { id: 'column.community', defaultMessage: 'Local timeline' }, @@ -138,6 +139,10 @@ class CommunityTimeline extends React.PureComponent { + + + + - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/flavours/glitch/features/directory/index.js b/app/javascript/flavours/glitch/features/directory/index.js index dce8fa4e76..672a114308 100644 --- a/app/javascript/flavours/glitch/features/directory/index.js +++ b/app/javascript/flavours/glitch/features/directory/index.js @@ -13,7 +13,6 @@ import RadioButton from 'flavours/glitch/components/radio_button'; import LoadMore from 'flavours/glitch/components/load_more'; import ScrollContainer from 'flavours/glitch/containers/scroll_container'; import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; -import { title } from 'flavours/glitch/initial_state'; import { Helmet } from 'react-helmet'; const messages = defineMessages({ @@ -169,7 +168,7 @@ class Directory extends React.PureComponent { {multiColumn && !pinned ? {scrollableArea} : scrollableArea} - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/flavours/glitch/features/explore/index.js b/app/javascript/flavours/glitch/features/explore/index.js index f377937328..934e309f8e 100644 --- a/app/javascript/flavours/glitch/features/explore/index.js +++ b/app/javascript/flavours/glitch/features/explore/index.js @@ -13,7 +13,6 @@ import Search from 'flavours/glitch/features/compose/containers/search_container import SearchResults from './results'; import { showTrends } from 'flavours/glitch/initial_state'; import { Helmet } from 'react-helmet'; -import { title } from 'flavours/glitch/initial_state'; const messages = defineMessages({ title: { id: 'explore.title', defaultMessage: 'Explore' }, @@ -85,7 +84,7 @@ class Explore extends React.PureComponent { - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} )} diff --git a/app/javascript/flavours/glitch/features/explore/links.js b/app/javascript/flavours/glitch/features/explore/links.js index 6adc2f6fba..092f86b29b 100644 --- a/app/javascript/flavours/glitch/features/explore/links.js +++ b/app/javascript/flavours/glitch/features/explore/links.js @@ -6,6 +6,7 @@ import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchTrendingLinks } from 'flavours/glitch/actions/trends'; import { FormattedMessage } from 'react-intl'; +import DismissableBanner from 'flavours/glitch/components/dismissable_banner'; const mapStateToProps = state => ({ links: state.getIn(['trends', 'links', 'items']), @@ -29,9 +30,17 @@ class Links extends React.PureComponent { render () { const { isLoading, links } = this.props; + const banner = ( + + + + ); + if (!isLoading && links.isEmpty()) { return (
    + {banner} +
    @@ -41,6 +50,8 @@ class Links extends React.PureComponent { return (
    + {banner} + {isLoading ? () : links.map(link => ( - {intl.formatMessage(messages.title, { q })} - {title} + {intl.formatMessage(messages.title, { q })} ); diff --git a/app/javascript/flavours/glitch/features/explore/statuses.js b/app/javascript/flavours/glitch/features/explore/statuses.js index fe08ce4667..0a5c9de233 100644 --- a/app/javascript/flavours/glitch/features/explore/statuses.js +++ b/app/javascript/flavours/glitch/features/explore/statuses.js @@ -6,6 +6,7 @@ import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { fetchTrendingStatuses, expandTrendingStatuses } from 'flavours/glitch/actions/trends'; import { debounce } from 'lodash'; +import DismissableBanner from 'flavours/glitch/components/dismissable_banner'; const mapStateToProps = state => ({ statusIds: state.getIn(['status_lists', 'trending', 'items']), @@ -40,17 +41,23 @@ class Statuses extends React.PureComponent { const emptyMessage = ; return ( - + <> + + + + + + ); } diff --git a/app/javascript/flavours/glitch/features/explore/tags.js b/app/javascript/flavours/glitch/features/explore/tags.js index 465fad0df9..938036b642 100644 --- a/app/javascript/flavours/glitch/features/explore/tags.js +++ b/app/javascript/flavours/glitch/features/explore/tags.js @@ -6,6 +6,7 @@ import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; import { connect } from 'react-redux'; import { fetchTrendingHashtags } from 'flavours/glitch/actions/trends'; import { FormattedMessage } from 'react-intl'; +import DismissableBanner from 'flavours/glitch/components/dismissable_banner'; const mapStateToProps = state => ({ hashtags: state.getIn(['trends', 'tags', 'items']), @@ -29,9 +30,17 @@ class Tags extends React.PureComponent { render () { const { isLoading, hashtags } = this.props; + const banner = ( + + + + ); + if (!isLoading && hashtags.isEmpty()) { return (
    + {banner} +
    @@ -41,6 +50,8 @@ class Tags extends React.PureComponent { return (
    + {banner} + {isLoading ? () : hashtags.map(hashtag => ( ))} diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js index 5e098514aa..80b4c82be2 100644 --- a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js +++ b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js @@ -14,7 +14,6 @@ import { isEqual } from 'lodash'; import { fetchHashtag, followHashtag, unfollowHashtag } from 'flavours/glitch/actions/tags'; import Icon from 'flavours/glitch/components/icon'; import classNames from 'classnames'; -import { title } from 'flavours/glitch/initial_state'; import { Helmet } from 'react-helmet'; const messages = defineMessages({ @@ -228,7 +227,7 @@ class HashtagTimeline extends React.PureComponent { /> - {`#${id}`} - {title} + #{id} ); diff --git a/app/javascript/flavours/glitch/features/home_timeline/index.js b/app/javascript/flavours/glitch/features/home_timeline/index.js index 86aaa0258e..aa319b5762 100644 --- a/app/javascript/flavours/glitch/features/home_timeline/index.js +++ b/app/javascript/flavours/glitch/features/home_timeline/index.js @@ -15,13 +15,12 @@ import classNames from 'classnames'; import IconWithBadge from 'flavours/glitch/components/icon_with_badge'; import NotSignedInIndicator from 'flavours/glitch/components/not_signed_in_indicator'; import { Helmet } from 'react-helmet'; -import { title } from 'flavours/glitch/initial_state'; const messages = defineMessages({ title: { id: 'column.home', defaultMessage: 'Home' }, show_announcements: { id: 'home.show_announcements', defaultMessage: 'Show announcements' }, hide_announcements: { id: 'home.hide_announcements', defaultMessage: 'Hide announcements' }, -}); +}); const mapStateToProps = state => ({ hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0, @@ -170,7 +169,7 @@ class HomeTimeline extends React.PureComponent { ) : } - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/flavours/glitch/features/notifications/index.js b/app/javascript/flavours/glitch/features/notifications/index.js index 26eeba1685..0b26a3d9e1 100644 --- a/app/javascript/flavours/glitch/features/notifications/index.js +++ b/app/javascript/flavours/glitch/features/notifications/index.js @@ -30,7 +30,6 @@ import compareId from 'flavours/glitch/compare_id'; import NotificationsPermissionBanner from './components/notifications_permission_banner'; import NotSignedInIndicator from 'flavours/glitch/components/not_signed_in_indicator'; import { Helmet } from 'react-helmet'; -import { title } from 'flavours/glitch/initial_state'; import NotificationPurgeButtonsContainer from 'flavours/glitch/containers/notification_purge_buttons_container'; @@ -373,7 +372,7 @@ class Notifications extends React.PureComponent { {scrollContainer} - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/flavours/glitch/features/privacy_policy/index.js b/app/javascript/flavours/glitch/features/privacy_policy/index.js index 8160102946..c1f7c4f1e0 100644 --- a/app/javascript/flavours/glitch/features/privacy_policy/index.js +++ b/app/javascript/flavours/glitch/features/privacy_policy/index.js @@ -1,6 +1,5 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { title } from 'flavours/glitch/initial_state'; import { Helmet } from 'react-helmet'; import { FormattedMessage, FormattedDate, injectIntl, defineMessages } from 'react-intl'; import Column from 'flavours/glitch/components/column'; @@ -51,7 +50,7 @@ class PrivacyPolicy extends React.PureComponent {
    - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/flavours/glitch/features/public_timeline/index.js b/app/javascript/flavours/glitch/features/public_timeline/index.js index aa70acf158..49015c2fbf 100644 --- a/app/javascript/flavours/glitch/features/public_timeline/index.js +++ b/app/javascript/flavours/glitch/features/public_timeline/index.js @@ -10,7 +10,7 @@ import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/col import ColumnSettingsContainer from './containers/column_settings_container'; import { connectPublicStream } from 'flavours/glitch/actions/streaming'; import { Helmet } from 'react-helmet'; -import { title } from 'flavours/glitch/initial_state'; +import DismissableBanner from 'flavours/glitch/components/dismissable_banner'; const messages = defineMessages({ title: { id: 'column.public', defaultMessage: 'Federated timeline' }, @@ -143,6 +143,10 @@ class PublicTimeline extends React.PureComponent { + + + + - {intl.formatMessage(messages.title)} - {title} + {intl.formatMessage(messages.title)} ); diff --git a/app/javascript/flavours/glitch/settings.js b/app/javascript/flavours/glitch/settings.js index 7643a508ea..46cfadfa36 100644 --- a/app/javascript/flavours/glitch/settings.js +++ b/app/javascript/flavours/glitch/settings.js @@ -45,3 +45,4 @@ export default class Settings { export const pushNotificationsSetting = new Settings('mastodon_push_notification_data'); export const tagHistory = new Settings('mastodon_tag_history'); +export const bannerSettings = new Settings('mastodon_banner_settings'); diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index 1827e8c01b..6f878f7914 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -936,3 +936,28 @@ $ui-header-height: 55px; color: $darker-text-color; } } + +.dismissable-banner { + background: $ui-base-color; + border-bottom: 1px solid lighten($ui-base-color, 8%); + display: flex; + align-items: center; + gap: 30px; + + &__message { + flex: 1 1 auto; + padding: 20px 15px; + cursor: default; + font-size: 14px; + line-height: 18px; + color: $primary-text-color; + } + + &__action { + padding: 15px; + flex: 0 0 auto; + display: flex; + align-items: center; + justify-content: center; + } +} From c36f28ba77d784cff6f5dba109e1286b13204221 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 9 Oct 2022 15:55:32 +0200 Subject: [PATCH 152/500] [Glitch] Fix intermediary responsive layout, accessibility on navigation in web UI Port 07653246223251052f5150e1e74139bf8ff41ec4 to glitch-soc Co-authored-by: Yamagishi Kazutoshi Signed-off-by: Claire --- .../flavours/glitch/components/avatar.js | 2 + .../flavours/glitch/components/logo.js | 3 +- .../features/ui/components/column_link.js | 24 ++++---- ...link.js => follow_requests_column_link.js} | 24 ++++++-- .../glitch/features/ui/components/header.js | 3 +- .../ui/components/navigation_panel.js | 56 ++++++++++++------- .../glitch/styles/components/columns.scss | 3 + .../styles/components/single_column.scss | 31 ++++++++-- .../flavours/glitch/styles/variables.scss | 2 +- 9 files changed, 104 insertions(+), 44 deletions(-) rename app/javascript/flavours/glitch/features/ui/components/{follow_requests_nav_link.js => follow_requests_column_link.js} (52%) diff --git a/app/javascript/flavours/glitch/components/avatar.js b/app/javascript/flavours/glitch/components/avatar.js index ce91d401d1..1da4a861cb 100644 --- a/app/javascript/flavours/glitch/components/avatar.js +++ b/app/javascript/flavours/glitch/components/avatar.js @@ -70,6 +70,8 @@ export default class Avatar extends React.PureComponent { onMouseLeave={this.handleMouseLeave} style={style} data-avatar-of={account && `@${account.get('acct')}`} + role='img' + aria-label={account.get('acct')} /> ); } diff --git a/app/javascript/flavours/glitch/components/logo.js b/app/javascript/flavours/glitch/components/logo.js index 3570b3644b..ee5c22496c 100644 --- a/app/javascript/flavours/glitch/components/logo.js +++ b/app/javascript/flavours/glitch/components/logo.js @@ -1,7 +1,8 @@ import React from 'react'; const Logo = () => ( - + + Mastodon ); diff --git a/app/javascript/flavours/glitch/features/ui/components/column_link.js b/app/javascript/flavours/glitch/features/ui/components/column_link.js index d04b869b69..1c475d087f 100644 --- a/app/javascript/flavours/glitch/features/ui/components/column_link.js +++ b/app/javascript/flavours/glitch/features/ui/components/column_link.js @@ -1,26 +1,29 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Link } from 'react-router-dom'; +import { NavLink } from 'react-router-dom'; import Icon from 'flavours/glitch/components/icon'; +import classNames from 'classnames'; -const ColumnLink = ({ icon, text, to, onClick, href, method, badge }) => { +const ColumnLink = ({ icon, text, to, onClick, href, method, badge, transparent, ...other }) => { + const className = classNames('column-link', { 'column-link--transparent': transparent }); const badgeElement = typeof badge !== 'undefined' ? {badge} : null; + const iconElement = typeof icon === 'string' ? : icon; if (href) { return ( - - + + {iconElement} {text} {badgeElement} ); } else if (to) { return ( - - + + {iconElement} {text} {badgeElement} - + ); } else { const handleOnClick = (e) => { @@ -29,8 +32,8 @@ const ColumnLink = ({ icon, text, to, onClick, href, method, badge }) => { return onClick(e); } return ( - - + + {iconElement} {text} {badgeElement} @@ -39,13 +42,14 @@ const ColumnLink = ({ icon, text, to, onClick, href, method, badge }) => { }; ColumnLink.propTypes = { - icon: PropTypes.string.isRequired, + icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired, text: PropTypes.string.isRequired, to: PropTypes.string, onClick: PropTypes.func, href: PropTypes.string, method: PropTypes.string, badge: PropTypes.node, + transparent: PropTypes.bool, }; export default ColumnLink; diff --git a/app/javascript/flavours/glitch/features/ui/components/follow_requests_nav_link.js b/app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.js similarity index 52% rename from app/javascript/flavours/glitch/features/ui/components/follow_requests_nav_link.js rename to app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.js index c30427896f..301392a52a 100644 --- a/app/javascript/flavours/glitch/features/ui/components/follow_requests_nav_link.js +++ b/app/javascript/flavours/glitch/features/ui/components/follow_requests_column_link.js @@ -2,22 +2,27 @@ import React from 'react'; import PropTypes from 'prop-types'; import { fetchFollowRequests } from 'flavours/glitch/actions/accounts'; import { connect } from 'react-redux'; -import { NavLink, withRouter } from 'react-router-dom'; +import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; import IconWithBadge from 'flavours/glitch/components/icon_with_badge'; import { List as ImmutableList } from 'immutable'; -import { FormattedMessage } from 'react-intl'; +import { injectIntl, defineMessages } from 'react-intl'; + +const messages = defineMessages({ + text: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, +}); const mapStateToProps = state => ({ count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size, }); -export default @withRouter +export default @injectIntl @connect(mapStateToProps) -class FollowRequestsNavLink extends React.Component { +class FollowRequestsColumnLink extends React.Component { static propTypes = { dispatch: PropTypes.func.isRequired, count: PropTypes.number.isRequired, + intl: PropTypes.object.isRequired, }; componentDidMount () { @@ -27,13 +32,20 @@ class FollowRequestsNavLink extends React.Component { } render () { - const { count } = this.props; + const { count, intl } = this.props; if (count === 0) { return null; } - return ; + return ( + } + text={intl.formatMessage(messages.text)} + /> + ); } } diff --git a/app/javascript/flavours/glitch/features/ui/components/header.js b/app/javascript/flavours/glitch/features/ui/components/header.js index 041bdff051..5fdef0af49 100644 --- a/app/javascript/flavours/glitch/features/ui/components/header.js +++ b/app/javascript/flavours/glitch/features/ui/components/header.js @@ -11,8 +11,7 @@ import { connect } from 'react-redux'; const Account = connect(state => ({ account: state.getIn(['accounts', me]), }))(({ account }) => ( - - {account.get('acct')} + )); diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index 754c651c2e..0955b3cf82 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -1,17 +1,34 @@ -import PropTypes from 'prop-types'; import React from 'react'; -import { FormattedMessage } from 'react-intl'; -import { Link, NavLink } from 'react-router-dom'; -import Icon from 'flavours/glitch/components/icon'; +import PropTypes from 'prop-types'; +import { defineMessages, injectIntl } from 'react-intl'; +import { Link } from 'react-router-dom'; import TrendsContainer from 'flavours/glitch/features/getting_started/containers/trends_container'; import { showTrends, timelinePreview } from 'flavours/glitch/initial_state'; -import FollowRequestsNavLink from './follow_requests_nav_link'; +import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; import SignInBanner from './sign_in_banner'; import { preferencesLink, relationshipsLink } from 'flavours/glitch/utils/backend_links'; +import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; + +const messages = defineMessages({ + home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, + notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' }, + explore: { id: 'explore.title', defaultMessage: 'Explore' }, + local: { id: 'tabs_bar.local_timeline', defaultMessage: 'Local' }, + federated: { id: 'tabs_bar.federated_timeline', defaultMessage: 'Federated' }, + direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' }, + favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, + bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' }, + lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' }, + preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, + followsAndFollowers: { id: 'navigation_bar.follows_and_followers', defaultMessage: 'Follows and followers' }, + about: { id: 'navigation_bar.about', defaultMessage: 'About' }, + app_settings: { id: 'navigation_bar.app_settings', defaultMessage: 'App settings' }, +}); -export default class NavigationPanel extends React.Component { +export default @injectIntl +class NavigationPanel extends React.Component { static contextTypes = { router: PropTypes.object.isRequired, @@ -23,24 +40,24 @@ export default class NavigationPanel extends React.Component { }; render() { + const { intl, onOpenSettings } = this.props; const { signedIn } = this.context.identity; - const { onOpenSettings } = this.props; return (
    {signedIn && ( - - - + + } text={intl.formatMessage(messages.notifications)} /> + )} - + {signedIn || timelinePreview && ( <> - - + + )} @@ -53,17 +70,18 @@ export default class NavigationPanel extends React.Component { {signedIn && ( - - - + + + +
    - {!!preferencesLink && } - - {!!relationshipsLink && } + {!!preferencesLink && } + + {!!relationshipsLink && }
    )} diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index 6f878f7914..3233506cca 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -214,6 +214,9 @@ $ui-header-height: 55px; font-size: 16px; padding: 15px; text-decoration: none; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; &:hover, &:focus, diff --git a/app/javascript/flavours/glitch/styles/components/single_column.scss b/app/javascript/flavours/glitch/styles/components/single_column.scss index 63bebc514e..4a987a131e 100644 --- a/app/javascript/flavours/glitch/styles/components/single_column.scss +++ b/app/javascript/flavours/glitch/styles/components/single_column.scss @@ -275,12 +275,14 @@ } @media screen and (max-width: $no-gap-breakpoint - 1px) { + $sidebar-width: 285px; + .with-fab .scrollable .item-list:last-child { padding-bottom: 5.25rem; } .columns-area__panels__main { - width: calc(100% - 55px); + width: calc(100% - $sidebar-width); } .columns-area__panels { @@ -288,10 +290,10 @@ } .columns-area__panels__pane--navigational { - min-width: 55px; + min-width: $sidebar-width; .columns-area__panels__pane__inner { - width: 55px; + width: $sidebar-width; } .navigation-panel { @@ -301,7 +303,6 @@ height: 100vh; } - .column-link span, .navigation-panel__sign-in-banner, .navigation-panel__logo, .getting-started__trends { @@ -326,11 +327,31 @@ } } +@media screen and (max-width: $no-gap-breakpoint - 285px - 1px) { + $sidebar-width: 55px; + + .columns-area__panels__main { + width: calc(100% - $sidebar-width); + } + + .columns-area__panels__pane--navigational { + min-width: $sidebar-width; + + .columns-area__panels__pane__inner { + width: $sidebar-width; + } + + .column-link span { + display: none; + } + } +} + .explore__search-header { display: none; } -@media screen and (max-width: $no-gap-breakpoint + 285px - 1px) { +@media screen and (max-width: $no-gap-breakpoint - 1px) { .columns-area__panels__pane--compositional { display: none; } diff --git a/app/javascript/flavours/glitch/styles/variables.scss b/app/javascript/flavours/glitch/styles/variables.scss index 4b4f5ffbed..b865b5a2d1 100644 --- a/app/javascript/flavours/glitch/styles/variables.scss +++ b/app/javascript/flavours/glitch/styles/variables.scss @@ -51,7 +51,7 @@ $media-modal-media-max-width: 100%; // put margins on top and bottom of image to avoid the screen covered by image. $media-modal-media-max-height: 80%; -$no-gap-breakpoint: 890px; +$no-gap-breakpoint: 1175px; $font-sans-serif: 'mastodon-font-sans-serif' !default; $font-display: 'mastodon-font-display' !default; From 492ceeceb0dcf31b2a521633690973e56f3a3cad Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Mon, 10 Oct 2022 02:26:14 +0900 Subject: [PATCH 153/500] [Glitch] Fix fedi/local timeline nav link always hide Port d3f1a010e561e3de9a1d99ec104f5b286aaffbda to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/ui/components/navigation_panel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index 0955b3cf82..2817374abd 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -54,7 +54,7 @@ class NavigationPanel extends React.Component { )} - {signedIn || timelinePreview && ( + {(signedIn || timelinePreview) && ( <> From 1e7f819c8509e475288414c7e629de04a7189a48 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Mon, 10 Oct 2022 13:51:16 +0900 Subject: [PATCH 154/500] [Glitch] Fix `ColumnLink` labels not disappearing in mobile UI Port 3eef8a7a81512f283300d2371d5b743611cb0d27 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/ui/components/column_link.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/column_link.js b/app/javascript/flavours/glitch/features/ui/components/column_link.js index 1c475d087f..4f04fdba22 100644 --- a/app/javascript/flavours/glitch/features/ui/components/column_link.js +++ b/app/javascript/flavours/glitch/features/ui/components/column_link.js @@ -13,7 +13,7 @@ const ColumnLink = ({ icon, text, to, onClick, href, method, badge, transparent, return ( {iconElement} - {text} + {text} {badgeElement} ); @@ -21,7 +21,7 @@ const ColumnLink = ({ icon, text, to, onClick, href, method, badge, transparent, return ( {iconElement} - {text} + {text} {badgeElement} ); From 1850166de92058161d9e0607bb1528b738aca0c7 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Tue, 11 Oct 2022 04:41:25 +0900 Subject: [PATCH 155/500] [Glitch] Hide list panel from nav bar in mobile layout Port d7873433256746c9b453aeca31520d68c6de4975 to glitch-soc Signed-off-by: Claire --- .../glitch/features/ui/components/list_panel.js | 12 ++++++------ .../features/ui/components/navigation_panel.js | 2 +- app/javascript/flavours/glitch/is_mobile.js | 14 +++++++++++++- app/javascript/flavours/glitch/styles/about.scss | 4 ++-- .../flavours/glitch/styles/components/columns.scss | 2 +- .../glitch/styles/components/single_column.scss | 4 ++++ 6 files changed, 27 insertions(+), 11 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/list_panel.js b/app/javascript/flavours/glitch/features/ui/components/list_panel.js index e612342833..dff8300656 100644 --- a/app/javascript/flavours/glitch/features/ui/components/list_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/list_panel.js @@ -1,12 +1,12 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { createSelector } from 'reselect'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { fetchLists } from 'flavours/glitch/actions/lists'; import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import { NavLink, withRouter } from 'react-router-dom'; -import Icon from 'flavours/glitch/components/icon'; +import { withRouter } from 'react-router-dom'; +import { fetchLists } from 'flavours/glitch/actions/lists'; +import ColumnLink from './column_link'; const getOrderedLists = createSelector([state => state.get('lists')], lists => { if (!lists) { @@ -42,11 +42,11 @@ class ListPanel extends ImmutablePureComponent { } return ( -
    +

    {lists.map(list => ( - {list.get('title')} + ))}
    ); diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index 2817374abd..f36258990e 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -4,12 +4,12 @@ import { defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; import TrendsContainer from 'flavours/glitch/features/getting_started/containers/trends_container'; import { showTrends, timelinePreview } from 'flavours/glitch/initial_state'; +import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; import SignInBanner from './sign_in_banner'; import { preferencesLink, relationshipsLink } from 'flavours/glitch/utils/backend_links'; -import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; const messages = defineMessages({ home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, diff --git a/app/javascript/flavours/glitch/is_mobile.js b/app/javascript/flavours/glitch/is_mobile.js index 0d56630983..31944d89b3 100644 --- a/app/javascript/flavours/glitch/is_mobile.js +++ b/app/javascript/flavours/glitch/is_mobile.js @@ -1,10 +1,20 @@ +// @ts-check + import { supportsPassiveEvents } from 'detect-passive-events'; import { forceSingleColumn } from 'flavours/glitch/initial_state'; const LAYOUT_BREAKPOINT = 630; +/** + * @param {number} width + * @returns {boolean} + */ export const isMobile = width => width <= LAYOUT_BREAKPOINT; +/** + * @param {string} layout_local_setting + * @returns {string} + */ export const layoutFromWindow = (layout_local_setting) => { switch (layout_local_setting) { case 'multiple': @@ -28,11 +38,13 @@ export const layoutFromWindow = (layout_local_setting) => { const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; +const listenerOptions = supportsPassiveEvents ? { passive: true } : false; + let userTouching = false; -let listenerOptions = supportsPassiveEvents ? { passive: true } : false; const touchListener = () => { userTouching = true; + window.removeEventListener('touchstart', touchListener, listenerOptions); }; diff --git a/app/javascript/flavours/glitch/styles/about.scss b/app/javascript/flavours/glitch/styles/about.scss index 1843129a02..28761796ba 100644 --- a/app/javascript/flavours/glitch/styles/about.scss +++ b/app/javascript/flavours/glitch/styles/about.scss @@ -163,8 +163,8 @@ $small-breakpoint: 960px; th, td { padding: 8px; - align-self: start; - align-items: start; + align-self: flex-start; + align-items: flex-start; word-break: break-all; &.nowrap { diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index 3233506cca..9d8372e75b 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -907,7 +907,7 @@ $ui-header-height: 55px; .column-actions { display: flex; - align-items: start; + align-items: flex-start; justify-content: center; padding: 40px; padding-top: 40px; diff --git a/app/javascript/flavours/glitch/styles/components/single_column.scss b/app/javascript/flavours/glitch/styles/components/single_column.scss index 4a987a131e..3befca5672 100644 --- a/app/javascript/flavours/glitch/styles/components/single_column.scss +++ b/app/javascript/flavours/glitch/styles/components/single_column.scss @@ -344,6 +344,10 @@ .column-link span { display: none; } + + .list-panel { + display: none; + } } } From 5d4d4a69f65ea8612d6e992282c061ba9a01a8be Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 13 Oct 2022 04:07:30 +0900 Subject: [PATCH 156/500] [Glitch] Redirect non-logged-in user to owner statuses on single user mode Port 7afc6a630c76fb071bd189af3ac1366efc82f819 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/ui/index.js | 4 +- .../flavours/glitch/initial_state.js | 81 ++++++++++++++----- 2 files changed, 66 insertions(+), 19 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index d5abefb190..eb5c3e87bd 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -56,7 +56,7 @@ import { PrivacyPolicy, } from './util/async-components'; import { HotKeys } from 'react-hotkeys'; -import { me } from 'flavours/glitch/initial_state'; +import initialState, { me, owner, singleUserMode } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'flavours/glitch/actions/onboarding'; import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import { Helmet } from 'react-helmet'; @@ -175,6 +175,8 @@ class SwitchingColumnsArea extends React.PureComponent { } else { redirect = ; } + } else if (singleUserMode && owner && initialState?.accounts[owner]) { + redirect = ; } else { redirect = ; } diff --git a/app/javascript/flavours/glitch/initial_state.js b/app/javascript/flavours/glitch/initial_state.js index b597ab2c52..ce6bf920c8 100644 --- a/app/javascript/flavours/glitch/initial_state.js +++ b/app/javascript/flavours/glitch/initial_state.js @@ -1,5 +1,44 @@ // @ts-check +/** + * @typedef Emoji + * @property {string} shortcode + * @property {string} static_url + * @property {string} url + */ + +/** + * @typedef AccountField + * @property {string} name + * @property {string} value + * @property {string} verified_at + */ + +/** + * @typedef Account + * @property {string} acct + * @property {string} avatar + * @property {string} avatar_static + * @property {boolean} bot + * @property {string} created_at + * @property {boolean=} discoverable + * @property {string} display_name + * @property {Emoji[]} emojis + * @property {AccountField[]} fields + * @property {number} followers_count + * @property {number} following_count + * @property {boolean} group + * @property {string} header + * @property {string} header_static + * @property {string} id + * @property {string=} last_status_at + * @property {boolean} locked + * @property {string} note + * @property {number} statuses_count + * @property {string} url + * @property {string} username + */ + /** * @typedef {[code: string, name: string, localName: string]} InitialStateLanguage */ @@ -22,11 +61,13 @@ * @property {string} locale * @property {string | null} mascot * @property {string=} me + * @property {string=} owner * @property {boolean} profile_directory * @property {boolean} registrations_open * @property {boolean} reduce_motion * @property {string} repository * @property {boolean} search_enabled + * @property {boolean} single_user_mode * @property {string} source_url * @property {string} streaming_api_base_url * @property {boolean} timeline_preview @@ -41,13 +82,14 @@ /** * @typedef InitialState + * @property {Record} accounts * @property {InitialStateLanguage[]} languages * @property {InitialStateMeta} meta */ const element = document.getElementById('initial-state'); /** @type {InitialState | undefined} */ -const initialState = element && JSON.parse(element.textContent); +const initialState = element?.textContent && JSON.parse(element.textContent); // Glitch-soc-specific “local settings” try { @@ -63,35 +105,38 @@ try { */ const getMeta = (prop) => initialState?.meta && initialState.meta[prop]; -export const domain = getMeta('domain'); -export const reduceMotion = getMeta('reduce_motion'); +export const activityApiEnabled = getMeta('activity_api_enabled'); export const autoPlayGif = getMeta('auto_play_gif'); -export const displayMedia = getMeta('display_media'); -export const expandSpoilers = getMeta('expand_spoilers'); -export const unfollowModal = getMeta('unfollow_modal'); export const boostModal = getMeta('boost_modal'); +export const cropImages = getMeta('crop_images'); export const deleteModal = getMeta('delete_modal'); -export const me = getMeta('me'); -export const searchEnabled = getMeta('search_enabled'); -export const maxChars = (initialState && initialState.max_toot_chars) || 500; +export const disableSwiping = getMeta('disable_swiping'); +export const displayMedia = getMeta('display_media'); +export const domain = getMeta('domain'); +export const expandSpoilers = getMeta('expand_spoilers'); +export const forceSingleColumn = !getMeta('advanced_layout'); export const limitedFederationMode = getMeta('limited_federation_mode'); +export const mascot = getMeta('mascot'); +export const me = getMeta('me'); +export const owner = getMeta('owner'); +export const profile_directory = getMeta('profile_directory'); +export const reduceMotion = getMeta('reduce_motion'); export const registrationsOpen = getMeta('registrations_open'); export const repository = getMeta('repository'); +export const searchEnabled = getMeta('search_enabled'); +export const showTrends = getMeta('trends'); +export const singleUserMode = getMeta('single_user_mode'); export const source_url = getMeta('source_url'); -export const version = getMeta('version'); -export const mascot = getMeta('mascot'); -export const profile_directory = getMeta('profile_directory'); -export const forceSingleColumn = !getMeta('advanced_layout'); +export const timelinePreview = getMeta('timeline_preview'); +export const title = getMeta('title'); +export const unfollowModal = getMeta('unfollow_modal'); export const useBlurhash = getMeta('use_blurhash'); export const usePendingItems = getMeta('use_pending_items'); -export const showTrends = getMeta('trends'); -export const title = getMeta('title'); -export const disableSwiping = getMeta('disable_swiping'); -export const timelinePreview = getMeta('timeline_preview'); -export const activityApiEnabled = getMeta('activity_api_enabled'); +export const version = getMeta('version'); export const languages = initialState?.languages; // Glitch-soc-specific settings +export const maxChars = (initialState && initialState.max_toot_chars) || 500; export const favouriteModal = getMeta('favourite_modal'); export const pollLimits = (initialState && initialState.poll_limits); export const defaultContentType = getMeta('default_content_type'); From 67b4ecdd2124cb2cf05731b26a77129bb8151236 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 13 Oct 2022 14:42:37 +0200 Subject: [PATCH 157/500] [Glitch] Change about page to be mounted in the web UI Port 1bd00036c284bcafb419eaf80347ba49d1b491d9 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/server.js | 61 ++ .../flavours/glitch/components/image.js | 33 + .../glitch/components/server_banner.js | 8 +- .../flavours/glitch/components/skeleton.js | 4 +- .../flavours/glitch/features/about/index.js | 195 +++- .../glitch/features/privacy_policy/index.js | 2 +- .../flavours/glitch/features/report/rules.js | 2 +- .../features/ui/components/link_footer.js | 2 +- .../flavours/glitch/reducers/server.js | 46 +- .../flavours/glitch/styles/about.scss | 904 +----------------- .../glitch/styles/compact_header.scss | 34 - .../glitch/styles/components/about.scss | 238 +++++ .../glitch/styles/components/index.scss | 3 +- .../styles/components/privacy_policy.scss | 235 +++-- .../flavours/glitch/styles/containers.scss | 1 - .../flavours/glitch/styles/contrast/diff.scss | 4 - .../flavours/glitch/styles/dashboard.scss | 1 - .../flavours/glitch/styles/forms.scss | 63 +- .../flavours/glitch/styles/index.scss | 2 - .../glitch/styles/mastodon-light/diff.scss | 3 - .../flavours/glitch/styles/widgets.scss | 229 +---- 21 files changed, 782 insertions(+), 1288 deletions(-) create mode 100644 app/javascript/flavours/glitch/components/image.js delete mode 100644 app/javascript/flavours/glitch/styles/compact_header.scss create mode 100644 app/javascript/flavours/glitch/styles/components/about.scss diff --git a/app/javascript/flavours/glitch/actions/server.js b/app/javascript/flavours/glitch/actions/server.js index af8fef780f..31d4aea100 100644 --- a/app/javascript/flavours/glitch/actions/server.js +++ b/app/javascript/flavours/glitch/actions/server.js @@ -5,6 +5,14 @@ export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST'; export const SERVER_FETCH_SUCCESS = 'Server_FETCH_SUCCESS'; export const SERVER_FETCH_FAIL = 'Server_FETCH_FAIL'; +export const EXTENDED_DESCRIPTION_REQUEST = 'EXTENDED_DESCRIPTION_REQUEST'; +export const EXTENDED_DESCRIPTION_SUCCESS = 'EXTENDED_DESCRIPTION_SUCCESS'; +export const EXTENDED_DESCRIPTION_FAIL = 'EXTENDED_DESCRIPTION_FAIL'; + +export const SERVER_DOMAIN_BLOCKS_FETCH_REQUEST = 'SERVER_DOMAIN_BLOCKS_FETCH_REQUEST'; +export const SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS = 'SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS'; +export const SERVER_DOMAIN_BLOCKS_FETCH_FAIL = 'SERVER_DOMAIN_BLOCKS_FETCH_FAIL'; + export const fetchServer = () => (dispatch, getState) => { dispatch(fetchServerRequest()); @@ -28,3 +36,56 @@ const fetchServerFail = error => ({ type: SERVER_FETCH_FAIL, error, }); + +export const fetchExtendedDescription = () => (dispatch, getState) => { + dispatch(fetchExtendedDescriptionRequest()); + + api(getState) + .get('/api/v1/instance/extended_description') + .then(({ data }) => dispatch(fetchExtendedDescriptionSuccess(data))) + .catch(err => dispatch(fetchExtendedDescriptionFail(err))); +}; + +const fetchExtendedDescriptionRequest = () => ({ + type: EXTENDED_DESCRIPTION_REQUEST, +}); + +const fetchExtendedDescriptionSuccess = description => ({ + type: EXTENDED_DESCRIPTION_SUCCESS, + description, +}); + +const fetchExtendedDescriptionFail = error => ({ + type: EXTENDED_DESCRIPTION_FAIL, + error, +}); + +export const fetchDomainBlocks = () => (dispatch, getState) => { + dispatch(fetchDomainBlocksRequest()); + + api(getState) + .get('/api/v1/instance/domain_blocks') + .then(({ data }) => dispatch(fetchDomainBlocksSuccess(true, data))) + .catch(err => { + if (err.response.status === 404) { + dispatch(fetchDomainBlocksSuccess(false, [])); + } else { + dispatch(fetchDomainBlocksFail(err)); + } + }); +}; + +const fetchDomainBlocksRequest = () => ({ + type: SERVER_DOMAIN_BLOCKS_FETCH_REQUEST, +}); + +const fetchDomainBlocksSuccess = (isAvailable, blocks) => ({ + type: SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS, + isAvailable, + blocks, +}); + +const fetchDomainBlocksFail = error => ({ + type: SERVER_DOMAIN_BLOCKS_FETCH_FAIL, + error, +}); diff --git a/app/javascript/flavours/glitch/components/image.js b/app/javascript/flavours/glitch/components/image.js new file mode 100644 index 0000000000..6e81ddf082 --- /dev/null +++ b/app/javascript/flavours/glitch/components/image.js @@ -0,0 +1,33 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import Blurhash from './blurhash'; +import classNames from 'classnames'; + +export default class Image extends React.PureComponent { + + static propTypes = { + src: PropTypes.string, + srcSet: PropTypes.string, + blurhash: PropTypes.string, + className: PropTypes.string, + }; + + state = { + loaded: false, + }; + + handleLoad = () => this.setState({ loaded: true }); + + render () { + const { src, srcSet, blurhash, className } = this.props; + const { loaded } = this.state; + + return ( +
    + {blurhash && } + +
    + ); + } + +} diff --git a/app/javascript/flavours/glitch/components/server_banner.js b/app/javascript/flavours/glitch/components/server_banner.js index 2bb0381da1..9cb0ef13c0 100644 --- a/app/javascript/flavours/glitch/components/server_banner.js +++ b/app/javascript/flavours/glitch/components/server_banner.js @@ -7,13 +7,15 @@ import ShortNumber from 'flavours/glitch/components/short_number'; import Skeleton from 'flavours/glitch/components/skeleton'; import Account from 'flavours/glitch/containers/account_container'; import { domain } from 'flavours/glitch/initial_state'; +import Image from 'flavours/glitch/components/image'; +import { Link } from 'react-router-dom'; const messages = defineMessages({ aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' }, }); const mapStateToProps = state => ({ - server: state.get('server'), + server: state.getIn(['server', 'server']), }); export default @connect(mapStateToProps) @@ -41,7 +43,7 @@ class ServerBanner extends React.PureComponent { {domain}, mastodon: Mastodon }} />
    - {server.get('title')} +
    {isLoading ? ( @@ -83,7 +85,7 @@ class ServerBanner extends React.PureComponent {
    - +
    ); } diff --git a/app/javascript/flavours/glitch/components/skeleton.js b/app/javascript/flavours/glitch/components/skeleton.js index 09093e99c7..6a17ffb261 100644 --- a/app/javascript/flavours/glitch/components/skeleton.js +++ b/app/javascript/flavours/glitch/components/skeleton.js @@ -4,8 +4,8 @@ import PropTypes from 'prop-types'; const Skeleton = ({ width, height }) => ; Skeleton.propTypes = { - width: PropTypes.number, - height: PropTypes.number, + width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), + height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), }; export default Skeleton; diff --git a/app/javascript/flavours/glitch/features/about/index.js b/app/javascript/flavours/glitch/features/about/index.js index 4500480f5a..8d7f9c1082 100644 --- a/app/javascript/flavours/glitch/features/about/index.js +++ b/app/javascript/flavours/glitch/features/about/index.js @@ -1,27 +1,214 @@ import React from 'react'; -import { defineMessages, injectIntl } from 'react-intl'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import Column from 'flavours/glitch/components/column'; import LinkFooter from 'flavours/glitch/features/ui/components/link_footer'; import { Helmet } from 'react-helmet'; +import { fetchServer, fetchExtendedDescription, fetchDomainBlocks } from 'flavours/glitch/actions/server'; +import Account from 'flavours/glitch/containers/account_container'; +import Skeleton from 'flavours/glitch/components/skeleton'; +import Icon from 'flavours/glitch/components/icon'; +import classNames from 'classnames'; +import Image from 'flavours/glitch/components/image'; const messages = defineMessages({ title: { id: 'column.about', defaultMessage: 'About' }, + rules: { id: 'about.rules', defaultMessage: 'Server rules' }, + blocks: { id: 'about.blocks', defaultMessage: 'Moderated servers' }, + silenced: { id: 'about.domain_blocks.silenced.title', defaultMessage: 'Limited' }, + silencedExplanation: { id: 'about.domain_blocks.silenced.explanation', defaultMessage: 'You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.' }, + suspended: { id: 'about.domain_blocks.suspended.title', defaultMessage: 'Suspended' }, + suspendedExplanation: { id: 'about.domain_blocks.suspended.explanation', defaultMessage: 'No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.' }, }); -export default @injectIntl +const severityMessages = { + silence: { + title: messages.silenced, + explanation: messages.silencedExplanation, + }, + + suspend: { + title: messages.suspended, + explanation: messages.suspendedExplanation, + }, +}; + +const mapStateToProps = state => ({ + server: state.getIn(['server', 'server']), + extendedDescription: state.getIn(['server', 'extendedDescription']), + domainBlocks: state.getIn(['server', 'domainBlocks']), +}); + +class Section extends React.PureComponent { + + static propTypes = { + title: PropTypes.string, + children: PropTypes.node, + open: PropTypes.bool, + onOpen: PropTypes.func, + }; + + state = { + collapsed: !this.props.open, + }; + + handleClick = () => { + const { onOpen } = this.props; + const { collapsed } = this.state; + + this.setState({ collapsed: !collapsed }, () => onOpen && onOpen()); + } + + render () { + const { title, children } = this.props; + const { collapsed } = this.state; + + return ( +
    +
    + {title} +
    + + {!collapsed && ( +
    {children}
    + )} +
    + ); + } + +} + +export default @connect(mapStateToProps) +@injectIntl class About extends React.PureComponent { static propTypes = { + server: ImmutablePropTypes.map, + extendedDescription: ImmutablePropTypes.map, + domainBlocks: ImmutablePropTypes.contains({ + isLoading: PropTypes.bool, + isAvailable: PropTypes.bool, + items: ImmutablePropTypes.list, + }), + dispatch: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, }; + componentDidMount () { + const { dispatch } = this.props; + dispatch(fetchServer()); + dispatch(fetchExtendedDescription()); + } + + handleDomainBlocksOpen = () => { + const { dispatch } = this.props; + dispatch(fetchDomainBlocks()); + } + render () { - const { intl } = this.props; + const { intl, server, extendedDescription, domainBlocks } = this.props; + const isLoading = server.get('isLoading'); return ( - +
    +
    + `${value} ${key.replace('@', '')}`).join(', ')} className='about__header__hero' /> +

    {isLoading ? : server.get('domain')}

    +

    Mastodon }} />

    +
    + +
    +
    +

    + + +
    + +
    + +
    +

    + + {isLoading ? : {server.getIn(['contact', 'email'])}} +
    +
    + +
    + {extendedDescription.get('isLoading') ? ( + <> + +
    + +
    + +
    + + + ) : (extendedDescription.get('content')?.length > 0 ? ( +
    + ) : ( +

    + ))} +
    + +
    + {!isLoading && (server.get('rules').isEmpty() ? ( +

    + ) : ( +
      + {server.get('rules').map(rule => ( +
    1. + {rule.get('text')} +
    2. + ))} +
    + ))} +
    + +
    + {domainBlocks.get('isLoading') ? ( + <> + +
    + + + ) : (domainBlocks.get('isAvailable') ? ( + <> +

    + +
    + + + + + + + + + + {domainBlocks.get('items').map(block => ( + + + + + + ))} + +
    {block.get('domain')}{intl.formatMessage(severityMessages[block.get('severity')].title)}{block.get('comment')}
    + + ) : ( +

    + ))} + + + +
    {intl.formatMessage(messages.title)} diff --git a/app/javascript/flavours/glitch/features/privacy_policy/index.js b/app/javascript/flavours/glitch/features/privacy_policy/index.js index c1f7c4f1e0..47ee800383 100644 --- a/app/javascript/flavours/glitch/features/privacy_policy/index.js +++ b/app/javascript/flavours/glitch/features/privacy_policy/index.js @@ -44,7 +44,7 @@ class PrivacyPolicy extends React.PureComponent {
    diff --git a/app/javascript/flavours/glitch/features/report/rules.js b/app/javascript/flavours/glitch/features/report/rules.js index 599c04dbd4..efcdf1fcf4 100644 --- a/app/javascript/flavours/glitch/features/report/rules.js +++ b/app/javascript/flavours/glitch/features/report/rules.js @@ -7,7 +7,7 @@ import Button from 'flavours/glitch/components/button'; import Option from './components/option'; const mapStateToProps = state => ({ - rules: state.getIn(['server', 'rules']), + rules: state.getIn(['server', 'server', 'rules']), }); export default @connect(mapStateToProps) diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.js b/app/javascript/flavours/glitch/features/ui/components/link_footer.js index 8c55a73372..2e061f7607 100644 --- a/app/javascript/flavours/glitch/features/ui/components/link_footer.js +++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.js @@ -51,7 +51,7 @@ class LinkFooter extends React.PureComponent { const items = []; items.push(); - items.push(); + items.push(); items.push(); items.push(); items.push(); diff --git a/app/javascript/flavours/glitch/reducers/server.js b/app/javascript/flavours/glitch/reducers/server.js index 9775741483..cc5798fb34 100644 --- a/app/javascript/flavours/glitch/reducers/server.js +++ b/app/javascript/flavours/glitch/reducers/server.js @@ -1,18 +1,52 @@ -import { SERVER_FETCH_REQUEST, SERVER_FETCH_SUCCESS, SERVER_FETCH_FAIL } from 'flavours/glitch/actions/server'; -import { Map as ImmutableMap, fromJS } from 'immutable'; +import { + SERVER_FETCH_REQUEST, + SERVER_FETCH_SUCCESS, + SERVER_FETCH_FAIL, + EXTENDED_DESCRIPTION_REQUEST, + EXTENDED_DESCRIPTION_SUCCESS, + EXTENDED_DESCRIPTION_FAIL, + SERVER_DOMAIN_BLOCKS_FETCH_REQUEST, + SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS, + SERVER_DOMAIN_BLOCKS_FETCH_FAIL, +} from 'flavours/glitch/actions/server'; +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; const initialState = ImmutableMap({ - isLoading: true, + server: ImmutableMap({ + isLoading: true, + }), + + extendedDescription: ImmutableMap({ + isLoading: true, + }), + + domainBlocks: ImmutableMap({ + isLoading: true, + isAvailable: true, + items: ImmutableList(), + }), }); export default function server(state = initialState, action) { switch (action.type) { case SERVER_FETCH_REQUEST: - return state.set('isLoading', true); + return state.setIn(['server', 'isLoading'], true); case SERVER_FETCH_SUCCESS: - return fromJS(action.server).set('isLoading', false); + return state.set('server', fromJS(action.server)).setIn(['server', 'isLoading'], false); case SERVER_FETCH_FAIL: - return state.set('isLoading', false); + return state.setIn(['server', 'isLoading'], false); + case EXTENDED_DESCRIPTION_REQUEST: + return state.setIn(['extendedDescription', 'isLoading'], true); + case EXTENDED_DESCRIPTION_SUCCESS: + return state.set('extendedDescription', fromJS(action.description)).setIn(['extendedDescription', 'isLoading'], false); + case EXTENDED_DESCRIPTION_FAIL: + return state.setIn(['extendedDescription', 'isLoading'], false); + case SERVER_DOMAIN_BLOCKS_FETCH_REQUEST: + return state.setIn(['domainBlocks', 'isLoading'], true); + case SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS: + return state.setIn(['domainBlocks', 'items'], fromJS(action.blocks)).setIn(['domainBlocks', 'isLoading'], false).setIn(['domainBlocks', 'isAvailable'], action.isAvailable); + case SERVER_DOMAIN_BLOCKS_FETCH_FAIL: + return state.setIn(['domainBlocks', 'isLoading'], false); default: return state; } diff --git a/app/javascript/flavours/glitch/styles/about.scss b/app/javascript/flavours/glitch/styles/about.scss index 28761796ba..0183c43d5e 100644 --- a/app/javascript/flavours/glitch/styles/about.scss +++ b/app/javascript/flavours/glitch/styles/about.scss @@ -1,7 +1,5 @@ $maximum-width: 1235px; $fluid-breakpoint: $maximum-width + 20px; -$column-breakpoint: 700px; -$small-breakpoint: 960px; .container { box-sizing: border-box; @@ -15,894 +13,44 @@ $small-breakpoint: 960px; } } -.rich-formatting { - font-family: $font-sans-serif, sans-serif; - font-size: 14px; - font-weight: 400; - line-height: 1.7; - word-wrap: break-word; - color: $darker-text-color; - - a { - color: $highlight-text-color; - text-decoration: underline; - - &:hover, - &:focus, - &:active { - text-decoration: none; - } - } - - p, - li { - color: $darker-text-color; - } - - p { - margin-top: 0; - margin-bottom: .85em; - - &:last-child { - margin-bottom: 0; - } - } - - strong { - font-weight: 700; - color: $secondary-text-color; - } - - em { - font-style: italic; - color: $secondary-text-color; - } - - code { - font-size: 0.85em; - background: darken($ui-base-color, 8%); - border-radius: 4px; - padding: 0.2em 0.3em; - } - - h1, - h2, - h3, - h4, - h5, - h6 { - font-family: $font-display, sans-serif; - margin-top: 1.275em; - margin-bottom: .85em; - font-weight: 500; - color: $secondary-text-color; - } - - h1 { - font-size: 2em; - } - - h2 { - font-size: 1.75em; - } - - h3 { - font-size: 1.5em; - } - - h4 { - font-size: 1.25em; - } - - h5, - h6 { - font-size: 1em; - } - - ul { - list-style: disc; - } - - ol { - list-style: decimal; - } - - ul, - ol { - margin: 0; - padding: 0; - padding-left: 2em; - margin-bottom: 0.85em; - - &[type='a'] { - list-style-type: lower-alpha; - } - - &[type='i'] { - list-style-type: lower-roman; - } - } - - hr { - width: 100%; - height: 0; - border: 0; - border-bottom: 1px solid lighten($ui-base-color, 4%); - margin: 1.7em 0; - - &.spacer { - height: 1px; - border: 0; - } - } - - table { - width: 100%; - border-collapse: collapse; - break-inside: auto; - margin-top: 24px; - margin-bottom: 32px; - - thead tr, - tbody tr { - border-bottom: 1px solid lighten($ui-base-color, 4%); - font-size: 1em; - line-height: 1.625; - font-weight: 400; - text-align: left; - color: $darker-text-color; - } - - thead tr { - border-bottom-width: 2px; - line-height: 1.5; - font-weight: 500; - color: $dark-text-color; - } - - th, - td { - padding: 8px; - align-self: flex-start; - align-items: flex-start; - word-break: break-all; - - &.nowrap { - width: 25%; - position: relative; - - &::before { - content: ' '; - visibility: hidden; - } - - span { - position: absolute; - left: 8px; - right: 8px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - } - } - } - - & > :first-child { - margin-top: 0; - } +.brand { + position: relative; + text-decoration: none; } -.information-board { - background: darken($ui-base-color, 4%); - padding: 20px 0; - - .container-alt { - position: relative; - padding-right: 280px + 15px; - } - - &__sections { - display: flex; - justify-content: space-between; - flex-wrap: wrap; - } - - &__section { - flex: 1 0 0; - font-family: $font-sans-serif, sans-serif; - font-size: 16px; - line-height: 28px; - color: $primary-text-color; - text-align: right; - padding: 10px 15px; - - span, - strong { - display: block; - } - - span { - &:last-child { - color: $secondary-text-color; - } - } - - strong { - font-family: $font-display, sans-serif; - font-weight: 500; - font-size: 32px; - line-height: 48px; - } - - @media screen and (max-width: $column-breakpoint) { - text-align: center; - } - } - - .panel { - position: absolute; - width: 280px; - box-sizing: border-box; - background: darken($ui-base-color, 8%); - padding: 20px; - padding-top: 10px; - border-radius: 4px 4px 0 0; - right: 0; - bottom: -40px; - - .panel-header { - font-family: $font-display, sans-serif; - font-size: 14px; - line-height: 24px; - font-weight: 500; - color: $darker-text-color; - padding-bottom: 5px; - margin-bottom: 15px; - border-bottom: 1px solid lighten($ui-base-color, 4%); - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - - a, - span { - font-weight: 400; - color: darken($darker-text-color, 10%); - } - - a { - text-decoration: none; - } - } - } - - .owner { - text-align: center; - - .avatar { - width: 80px; - height: 80px; - @include avatar-size(80px); - margin: 0 auto; - margin-bottom: 15px; - - img { - display: block; - width: 80px; - height: 80px; - border-radius: 48px; - @include avatar-radius(); - } - } - - .name { - font-size: 14px; - - a { - display: block; - color: $primary-text-color; - text-decoration: none; - - &:hover { - .display_name { - text-decoration: underline; - } - } - } - - .username { - display: block; - color: $darker-text-color; - } - } - } -} +.rules-list { + font-size: 15px; + line-height: 22px; + color: $primary-text-color; + counter-reset: list-counter; -.landing-page { - p, li { - font-family: $font-sans-serif, sans-serif; - font-size: 16px; - font-weight: 400; - line-height: 30px; - margin-bottom: 12px; - color: $darker-text-color; - - a { - color: $highlight-text-color; - text-decoration: underline; - } - } - - em { - display: inline; - margin: 0; - padding: 0; - font-weight: 700; - background: transparent; - font-family: inherit; - font-size: inherit; - line-height: inherit; - color: lighten($darker-text-color, 10%); - } - - h1 { - font-family: $font-display, sans-serif; - font-size: 26px; - line-height: 30px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - - small { - font-family: $font-sans-serif, sans-serif; - display: block; - font-size: 18px; - font-weight: 400; - color: lighten($darker-text-color, 10%); - } - } - - h2 { - font-family: $font-display, sans-serif; - font-size: 22px; - line-height: 26px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - h3 { - font-family: $font-display, sans-serif; - font-size: 18px; - line-height: 24px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - h4 { - font-family: $font-display, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - h5 { - font-family: $font-display, sans-serif; - font-size: 14px; - line-height: 24px; - font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - h6 { - font-family: $font-display, sans-serif; - font-size: 12px; - line-height: 24px; + position: relative; + border-bottom: 1px solid lighten($ui-base-color, 8%); + padding: 1em 1.75em; + padding-left: 3em; font-weight: 500; - margin-bottom: 20px; - color: $secondary-text-color; - } - - ul, - ol { - margin-left: 20px; - - &[type='a'] { - list-style-type: lower-alpha; - } - - &[type='i'] { - list-style-type: lower-roman; - } - } - - ul { - list-style: disc; - } - - ol { - list-style: decimal; - } - - li > ol, - li > ul { - margin-top: 6px; - } - - hr { - width: 100%; - height: 0; - border: 0; - border-bottom: 1px solid rgba($ui-base-lighter-color, .6); - margin: 20px 0; - - &.spacer { - height: 1px; - border: 0; - } - } - - &__information, - &__forms { - padding: 20px; - } - - &__call-to-action { - background: $ui-base-color; - border-radius: 4px; - padding: 25px 40px; - overflow: hidden; - box-sizing: border-box; - - .row { - width: 100%; - display: flex; - flex-direction: row-reverse; - flex-wrap: nowrap; - justify-content: space-between; - align-items: center; - } - - .row__information-board { - display: flex; - justify-content: flex-end; - align-items: flex-end; - - .information-board__section { - flex: 1 0 auto; - padding: 0 10px; - } - - @media screen and (max-width: $no-gap-breakpoint) { - width: 100%; - justify-content: space-between; - } - } - - .row__mascot { - flex: 1; - margin: 10px -50px 0 0; - - @media screen and (max-width: $no-gap-breakpoint) { - display: none; - } - } - } - - &__logo { - margin-right: 20px; - - img { - height: 50px; - width: auto; - mix-blend-mode: lighten; - } - } - - &__information { - padding: 45px 40px; - margin-bottom: 10px; - - &:last-child { - margin-bottom: 0; - } - - strong { + counter-increment: list-counter; + + &::before { + content: counter(list-counter); + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + background: $highlight-text-color; + color: $ui-base-color; + border-radius: 50%; + width: 4ch; + height: 4ch; font-weight: 500; - color: lighten($darker-text-color, 10%); - } - - .account { - border-bottom: 0; - padding: 0; - - &__display-name { - align-items: center; - display: flex; - margin-right: 5px; - } - - div.account__display-name { - &:hover { - .display-name strong { - text-decoration: none; - } - } - - .account__avatar { - cursor: default; - } - } - - &__avatar-wrapper { - margin-left: 0; - flex: 0 0 auto; - } - - .display-name { - font-size: 15px; - - &__account { - font-size: 14px; - } - } - } - - @media screen and (max-width: $small-breakpoint) { - .contact { - margin-top: 30px; - } - } - - @media screen and (max-width: $column-breakpoint) { - padding: 25px 20px; - } - } - - &__information, - &__forms, - #mastodon-timeline { - box-sizing: border-box; - background: $ui-base-color; - border-radius: 4px; - box-shadow: 0 0 6px rgba($black, 0.1); - } - - &__mascot { - height: 104px; - position: relative; - left: -40px; - bottom: 25px; - - img { - height: 190px; - width: auto; - } - } - - &__short-description { - .row { display: flex; - flex-wrap: wrap; + justify-content: center; align-items: center; - margin-bottom: 40px; - } - - @media screen and (max-width: $column-breakpoint) { - .row { - margin-bottom: 20px; - } - } - - p a { - color: $secondary-text-color; - } - - h1 { - font-weight: 500; - color: $primary-text-color; - margin-bottom: 0; - - small { - color: $darker-text-color; - - span { - color: $secondary-text-color; - } - } - } - - p:last-child { - margin-bottom: 0; - } - } - - &__hero { - margin-bottom: 10px; - - img { - display: block; - margin: 0; - max-width: 100%; - height: auto; - border-radius: 4px; - } - } - - @media screen and (max-width: 840px) { - .information-board { - .container-alt { - padding-right: 20px; - } - - .panel { - position: static; - margin-top: 20px; - width: 100%; - border-radius: 4px; - - .panel-header { - text-align: center; - } - } - } - } - - @media screen and (max-width: 675px) { - .header-wrapper { - padding-top: 0; - - &.compact { - padding-bottom: 0; - } - - &.compact .hero .heading { - text-align: initial; - } } - .header .container-alt, - .features .container-alt { - display: block; - } - } - - .cta { - margin: 20px; - } -} - -.landing { - margin-bottom: 100px; - - @media screen and (max-width: 738px) { - margin-bottom: 0; - } - - &__brand { - display: flex; - justify-content: center; - align-items: center; - padding: 50px; - - .logo { - fill: $primary-text-color; - height: 52px; - } - - @media screen and (max-width: $no-gap-breakpoint) { - padding: 0; - margin-bottom: 30px; - } - } - - .directory { - margin-top: 30px; - background: transparent; - box-shadow: none; - border-radius: 0; - } - - .hero-widget { - margin-top: 30px; - margin-bottom: 0; - - h4 { - padding: 10px; - text-transform: uppercase; - font-weight: 700; - font-size: 13px; - color: $darker-text-color; - } - - &__text { - border-radius: 0; - padding-bottom: 0; - } - - &__footer { - background: $ui-base-color; - padding: 10px; - border-radius: 0 0 4px 4px; - display: flex; - - &__column { - flex: 1 1 50%; - overflow-x: hidden; - } - } - - .account { - padding: 10px 0; - border-bottom: 0; - - .account__display-name { - display: flex; - align-items: center; - } - } - - &__counters__wrapper { - display: flex; - } - - &__counter { - padding: 10px; - width: 50%; - - strong { - font-family: $font-display, sans-serif; - font-size: 15px; - font-weight: 700; - display: block; - } - - span { - font-size: 14px; - color: $darker-text-color; - } - } - } - - .simple_form .user_agreement .label_input > label { - font-weight: 400; - color: $darker-text-color; - } - - .simple_form p.lead { - color: $darker-text-color; - font-size: 15px; - line-height: 20px; - font-weight: 400; - margin-bottom: 25px; - } - - &__grid { - max-width: 960px; - margin: 0 auto; - display: grid; - grid-template-columns: minmax(0, 50%) minmax(0, 50%); - grid-gap: 30px; - - @media screen and (max-width: 738px) { - grid-template-columns: minmax(0, 100%); - grid-gap: 10px; - - &__column-login { - grid-row: 1; - display: flex; - flex-direction: column; - - .box-widget { - order: 2; - flex: 0 0 auto; - } - - .hero-widget { - margin-top: 0; - margin-bottom: 10px; - order: 1; - flex: 0 0 auto; - } - } - - &__column-registration { - grid-row: 2; - } - - .directory { - margin-top: 10px; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - grid-gap: 0; - - .hero-widget { - display: block; - margin-bottom: 0; - box-shadow: none; - - &__img, - &__img img, - &__footer { - border-radius: 0; - } - } - - .hero-widget, - .box-widget, - .directory__tag { - border-bottom: 1px solid lighten($ui-base-color, 8%); - } - - .directory { - margin-top: 0; - - &__tag { - margin-bottom: 0; - - & > a, - & > div { - border-radius: 0; - box-shadow: none; - } - - &:last-child { - border-bottom: 0; - } - } - } - } - } -} - -.brand { - position: relative; - text-decoration: none; -} - -.brand__tagline { - display: block; - position: absolute; - bottom: -10px; - left: 50px; - width: 300px; - color: $ui-primary-color; - text-decoration: none; - font-size: 14px; - - @media screen and (max-width: $no-gap-breakpoint) { - position: static; - width: auto; - margin-top: 20px; - color: $dark-text-color; - } -} - -.rules-list { - background: darken($ui-base-color, 2%); - border: 1px solid darken($ui-base-color, 8%); - border-radius: 4px; - padding: 0.5em 2.5em !important; - margin-top: 1.85em !important; - - li { - border-bottom: 1px solid lighten($ui-base-color, 4%); - color: $dark-text-color; - padding: 1em; - &:last-child { border-bottom: 0; } } - - &__text { - color: $primary-text-color; - } } diff --git a/app/javascript/flavours/glitch/styles/compact_header.scss b/app/javascript/flavours/glitch/styles/compact_header.scss deleted file mode 100644 index 4980ab5f1a..0000000000 --- a/app/javascript/flavours/glitch/styles/compact_header.scss +++ /dev/null @@ -1,34 +0,0 @@ -.compact-header { - h1 { - font-size: 24px; - line-height: 28px; - color: $darker-text-color; - font-weight: 500; - margin-bottom: 20px; - padding: 0 10px; - word-wrap: break-word; - - @media screen and (max-width: 740px) { - text-align: center; - padding: 20px 10px 0; - } - - a { - color: inherit; - text-decoration: none; - } - - small { - font-weight: 400; - color: $secondary-text-color; - } - - img { - display: inline-block; - margin-bottom: -5px; - margin-right: 15px; - width: 36px; - height: 36px; - } - } -} diff --git a/app/javascript/flavours/glitch/styles/components/about.scss b/app/javascript/flavours/glitch/styles/components/about.scss new file mode 100644 index 0000000000..ca9ba3ebf8 --- /dev/null +++ b/app/javascript/flavours/glitch/styles/components/about.scss @@ -0,0 +1,238 @@ +.image { + position: relative; + overflow: hidden; + + &__preview { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + } + + &.loaded &__preview { + display: none; + } + + img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; + border: 0; + background: transparent; + opacity: 0; + } + + &.loaded img { + opacity: 1; + } +} + +.about { + padding: 20px; + + @media screen and (min-width: $no-gap-breakpoint) { + border-radius: 4px; + } + + &__header { + margin-bottom: 30px; + + &__hero { + width: 100%; + height: auto; + aspect-ratio: 1.9; + background: lighten($ui-base-color, 4%); + border-radius: 8px; + margin-bottom: 30px; + } + + h1, + p { + text-align: center; + } + + h1 { + font-size: 24px; + line-height: 1.5; + font-weight: 700; + margin-bottom: 10px; + } + + p { + font-size: 16px; + line-height: 24px; + font-weight: 400; + color: $darker-text-color; + } + } + + &__meta { + background: lighten($ui-base-color, 4%); + border-radius: 4px; + display: flex; + margin-bottom: 30px; + font-size: 15px; + + &__column { + box-sizing: border-box; + width: 50%; + padding: 20px; + } + + &__divider { + width: 0; + border: 0; + border-style: solid; + border-color: lighten($ui-base-color, 8%); + border-left-width: 1px; + min-height: calc(100% - 60px); + flex: 0 0 auto; + } + + h4 { + font-size: 15px; + text-transform: uppercase; + color: $darker-text-color; + font-weight: 500; + margin-bottom: 20px; + } + + @media screen and (max-width: 600px) { + display: block; + + h4 { + text-align: center; + } + + &__column { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + } + + &__divider { + min-height: 0; + width: 100%; + border-left-width: 0; + border-top-width: 1px; + } + } + + .layout-multiple-columns & { + display: block; + + h4 { + text-align: center; + } + + &__column { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + } + + &__divider { + min-height: 0; + width: 100%; + border-left-width: 0; + border-top-width: 1px; + } + } + } + + &__mail { + color: $primary-text-color; + text-decoration: none; + font-weight: 500; + + &:hover, + &:focus, + &:active { + text-decoration: underline; + } + } + + .getting-started__footer { + padding: 0; + margin-top: 60px; + text-align: center; + font-size: 15px; + line-height: 22px; + + @media screen and (min-width: $no-gap-breakpoint) { + display: none; + } + } + + .account { + padding: 0; + border: 0; + } + + .account__avatar-wrapper { + margin-left: 0; + } + + .account__relationship { + display: none; + } + + &__section { + margin-bottom: 10px; + + &__title { + font-size: 17px; + font-weight: 600; + line-height: 22px; + padding: 20px; + border-radius: 4px; + background: lighten($ui-base-color, 4%); + color: $highlight-text-color; + cursor: pointer; + } + + &.active &__title { + border-radius: 4px 4px 0 0; + } + + &__body { + border: 1px solid lighten($ui-base-color, 4%); + border-top: 0; + padding: 20px; + font-size: 15px; + line-height: 22px; + } + } + + &__domain-blocks { + margin-top: 30px; + width: 100%; + border-collapse: collapse; + break-inside: auto; + + th { + text-align: left; + font-weight: 500; + color: $darker-text-color; + } + + thead tr, + tbody tr { + border-bottom: 1px solid lighten($ui-base-color, 8%); + } + + tbody tr:last-child { + border-bottom: 0; + } + + th, + td { + padding: 8px; + } + } +} diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index a04482a794..81d90f4420 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -1034,6 +1034,7 @@ padding: 10px; padding-top: 20px; z-index: 1; + font-size: 13px; ul { margin-bottom: 10px; @@ -1045,7 +1046,6 @@ p { color: $dark-text-color; - font-size: 13px; margin-bottom: 20px; a { @@ -1779,3 +1779,4 @@ noscript { @import 'explore'; @import 'signed_out'; @import 'privacy_policy'; +@import 'about'; diff --git a/app/javascript/flavours/glitch/styles/components/privacy_policy.scss b/app/javascript/flavours/glitch/styles/components/privacy_policy.scss index f69bf1a076..96cf067422 100644 --- a/app/javascript/flavours/glitch/styles/components/privacy_policy.scss +++ b/app/javascript/flavours/glitch/styles/components/privacy_policy.scss @@ -8,77 +8,200 @@ &__body { margin-top: 20px; - color: $secondary-text-color; - font-size: 15px; - line-height: 22px; - - h1, - p, - ul, - ol { - margin-bottom: 20px; - } + } +} - ul { - list-style: disc; - } +.prose { + color: $secondary-text-color; + font-size: 15px; + line-height: 22px; - ol { - list-style: decimal; - } + p, + ul, + ol { + margin-top: 1.25em; + margin-bottom: 1.25em; + } - ul, - ol { - padding-left: 1em; - } + img { + margin-top: 2em; + margin-bottom: 2em; + } - li { - margin-bottom: 10px; + video { + margin-top: 2em; + margin-bottom: 2em; + } - &::marker { - color: $darker-text-color; - } + figure { + margin-top: 2em; + margin-bottom: 2em; - &:last-child { - margin-bottom: 0; - } + figcaption { + font-size: 0.875em; + line-height: 1.4285714; + margin-top: 0.8571429em; } + } - h1 { - color: $primary-text-color; - font-size: 19px; - line-height: 24px; - font-weight: 700; - margin-top: 30px; + figure > * { + margin-top: 0; + margin-bottom: 0; + } - &:first-child { - margin-top: 0; - } - } + h1 { + font-size: 1.5em; + margin-top: 0; + margin-bottom: 1em; + line-height: 1.33; + } - strong { - font-weight: 700; - color: $primary-text-color; - } + h2 { + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6; + } - em { - font-style: italic; - } + h3, + h4, + h5, + h6 { + margin-top: 1.5em; + margin-bottom: 0.5em; + line-height: 1.5; + } + + ol { + counter-reset: list-counter; + } - a { - color: $highlight-text-color; - text-decoration: underline; + li { + margin-top: 0.5em; + margin-bottom: 0.5em; + } + + ol > li { + counter-increment: list-counter; - &:focus, - &:hover, - &:active { - text-decoration: none; - } + &::before { + content: counter(list-counter) "."; + position: absolute; + left: 0; } + } + + ul > li::before { + content: ""; + position: absolute; + background-color: $darker-text-color; + border-radius: 50%; + width: 0.375em; + height: 0.375em; + top: 0.5em; + left: 0.25em; + } + + ul > li, + ol > li { + position: relative; + padding-left: 1.75em; + } + + & > ul > li p { + margin-top: 0.75em; + margin-bottom: 0.75em; + } + + & > ul > li > *:first-child { + margin-top: 1.25em; + } - hr { - border: 1px solid lighten($ui-base-color, 4%); - margin: 30px 0; + & > ul > li > *:last-child { + margin-bottom: 1.25em; + } + + & > ol > li > *:first-child { + margin-top: 1.25em; + } + + & > ol > li > *:last-child { + margin-bottom: 1.25em; + } + + ul ul, + ul ol, + ol ul, + ol ol { + margin-top: 0.75em; + margin-bottom: 0.75em; + } + + h1, + h2, + h3, + h4, + h5, + h6, + strong, + b { + color: $primary-text-color; + font-weight: 700; + } + + em, + i { + font-style: italic; + } + + a { + color: $highlight-text-color; + text-decoration: underline; + + &:focus, + &:hover, + &:active { + text-decoration: none; } } + + code { + font-size: 0.875em; + background: darken($ui-base-color, 8%); + border-radius: 4px; + padding: 0.2em 0.3em; + } + + hr { + border: 0; + border-top: 1px solid lighten($ui-base-color, 4%); + margin-top: 3em; + margin-bottom: 3em; + } + + hr + * { + margin-top: 0; + } + + h2 + * { + margin-top: 0; + } + + h3 + * { + margin-top: 0; + } + + h4 + *, + h5 + *, + h6 + * { + margin-top: 0; + } + + & > :first-child { + margin-top: 0; + } + + & > :last-child { + margin-bottom: 0; + } } diff --git a/app/javascript/flavours/glitch/styles/containers.scss b/app/javascript/flavours/glitch/styles/containers.scss index f0caeb4c52..3f81653704 100644 --- a/app/javascript/flavours/glitch/styles/containers.scss +++ b/app/javascript/flavours/glitch/styles/containers.scss @@ -30,7 +30,6 @@ outline: 0; padding: 12px 16px; line-height: 32px; - font-family: $font-display, sans-serif; font-weight: 500; font-size: 14px; } diff --git a/app/javascript/flavours/glitch/styles/contrast/diff.scss b/app/javascript/flavours/glitch/styles/contrast/diff.scss index 9bd31cd7ea..a9a2039600 100644 --- a/app/javascript/flavours/glitch/styles/contrast/diff.scss +++ b/app/javascript/flavours/glitch/styles/contrast/diff.scss @@ -1,9 +1,5 @@ // components.scss -.rich-formatting a, -.rich-formatting p a, -.rich-formatting li a, -.landing-page__short-description p a, .status__content a, .reply-indicator__content a { color: lighten($ui-highlight-color, 12%); diff --git a/app/javascript/flavours/glitch/styles/dashboard.scss b/app/javascript/flavours/glitch/styles/dashboard.scss index 9b06b44d6d..bb103e9ce0 100644 --- a/app/javascript/flavours/glitch/styles/dashboard.scss +++ b/app/javascript/flavours/glitch/styles/dashboard.scss @@ -39,7 +39,6 @@ font-size: 24px; line-height: 21px; color: $primary-text-color; - font-family: $font-display, sans-serif; margin-bottom: 20px; line-height: 30px; } diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index 6ab1189daa..57075a75fb 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -138,18 +138,9 @@ code { } .rules-list { - list-style: decimal; font-size: 17px; line-height: 22px; - font-weight: 500; - background: transparent; - border: 0; - padding: 0.5em 1em !important; margin-bottom: 30px; - - li { - border-color: lighten($ui-base-color, 8%); - } } .hint { @@ -593,41 +584,6 @@ code { } } } - - &__overlay-area { - position: relative; - - &__blurred form { - filter: blur(2px); - } - - &__overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - background: rgba($ui-base-color, 0.65); - border-radius: 4px; - margin-left: -4px; - margin-top: -4px; - padding: 4px; - - &__content { - text-align: center; - - &.rich-formatting { - &, - p { - color: $primary-text-color; - } - } - } - } - } } .block-icon { @@ -898,24 +854,7 @@ code { } } -.table-form { - p { - margin-bottom: 15px; - - strong { - font-weight: 500; - - @each $lang in $cjk-langs { - &:lang(#{$lang}) { - font-weight: 700; - } - } - } - } -} - -.simple_form, -.table-form { +.simple_form { .warning { box-sizing: border-box; background: rgba($error-value-color, 0.5); diff --git a/app/javascript/flavours/glitch/styles/index.scss b/app/javascript/flavours/glitch/styles/index.scss index f808773f30..5c2532758b 100644 --- a/app/javascript/flavours/glitch/styles/index.scss +++ b/app/javascript/flavours/glitch/styles/index.scss @@ -2,7 +2,6 @@ @import 'variables'; @import 'styles/fonts/roboto'; @import 'styles/fonts/roboto-mono'; -@import 'styles/fonts/montserrat'; @import 'reset'; @import 'basics'; @@ -11,7 +10,6 @@ @import 'lists'; @import 'modal'; @import 'footer'; -@import 'compact_header'; @import 'widgets'; @import 'forms'; @import 'accounts'; diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss index d16f23aed3..64b86ffc14 100644 --- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss +++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss @@ -390,9 +390,6 @@ } .hero-widget, -.box-widget, -.contact-widget, -.landing-page__information.contact-widget, .moved-account-widget, .memoriam-widget, .activity-stream, diff --git a/app/javascript/flavours/glitch/styles/widgets.scss b/app/javascript/flavours/glitch/styles/widgets.scss index a88f3b2c79..fd091ee894 100644 --- a/app/javascript/flavours/glitch/styles/widgets.scss +++ b/app/javascript/flavours/glitch/styles/widgets.scss @@ -108,13 +108,6 @@ } } -.box-widget { - padding: 20px; - border-radius: 4px; - background: $ui-base-color; - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); -} - .placeholder-widget { padding: 16px; border-radius: 4px; @@ -124,47 +117,6 @@ margin-bottom: 10px; } -.contact-widget { - min-height: 100%; - font-size: 15px; - color: $darker-text-color; - line-height: 20px; - word-wrap: break-word; - font-weight: 400; - padding: 0; - - h4 { - padding: 10px; - text-transform: uppercase; - font-weight: 700; - font-size: 13px; - color: $darker-text-color; - } - - .account { - border-bottom: 0; - padding: 10px 0; - padding-top: 5px; - } - - & > a { - display: inline-block; - padding: 10px; - padding-top: 0; - color: $darker-text-color; - text-decoration: none; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - - &:hover, - &:focus, - &:active { - text-decoration: underline; - } - } -} - .moved-account-widget { padding: 15px; padding-bottom: 20px; @@ -245,37 +197,6 @@ margin-bottom: 10px; } -.page-header { - background: lighten($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - border-radius: 4px; - padding: 60px 15px; - text-align: center; - margin: 10px 0; - - h1 { - color: $primary-text-color; - font-size: 36px; - line-height: 1.1; - font-weight: 700; - margin-bottom: 10px; - } - - p { - font-size: 15px; - color: $darker-text-color; - } - - @media screen and (max-width: $no-gap-breakpoint) { - margin-top: 0; - background: lighten($ui-base-color, 4%); - - h1 { - font-size: 24px; - } - } -} - .directory { background: $ui-base-color; border-radius: 4px; @@ -357,34 +278,6 @@ } } -.avatar-stack { - display: flex; - justify-content: flex-end; - - .account__avatar { - flex: 0 0 auto; - width: 36px; - height: 36px; - border-radius: 50%; - position: relative; - margin-left: -10px; - background: darken($ui-base-color, 8%); - border: 2px solid $ui-base-color; - - &:nth-child(1) { - z-index: 1; - } - - &:nth-child(2) { - z-index: 2; - } - - &:nth-child(3) { - z-index: 3; - } - } -} - .accounts-table { width: 100%; @@ -486,11 +379,7 @@ .moved-account-widget, .memoriam-widget, -.box-widget, -.contact-widget, -.landing-page__information.contact-widget, -.directory, -.page-header { +.directory { @media screen and (max-width: $no-gap-breakpoint) { margin-bottom: 0; box-shadow: none; @@ -498,88 +387,6 @@ } } -$maximum-width: 1235px; -$fluid-breakpoint: $maximum-width + 20px; - -.statuses-grid { - min-height: 600px; - - @media screen and (max-width: 640px) { - width: 100% !important; // Masonry layout is unnecessary at this width - } - - &__item { - width: math.div(960px - 20px, 3); - - @media screen and (max-width: $fluid-breakpoint) { - width: math.div(940px - 20px, 3); - } - - @media screen and (max-width: 640px) { - width: 100%; - } - - @media screen and (max-width: $no-gap-breakpoint) { - width: 100vw; - } - } - - .detailed-status { - border-radius: 4px; - - @media screen and (max-width: $no-gap-breakpoint) { - border-top: 1px solid lighten($ui-base-color, 16%); - } - - &.compact { - .detailed-status__meta { - margin-top: 15px; - } - - .status__content { - font-size: 15px; - line-height: 20px; - - .emojione { - width: 20px; - height: 20px; - margin: -3px 0 0; - } - - .status__content__spoiler-link { - line-height: 20px; - margin: 0; - } - } - - .media-gallery, - .status-card, - .video-player { - margin-top: 15px; - } - } - } -} - -.notice-widget { - margin-bottom: 10px; - color: $darker-text-color; - - p { - margin-bottom: 10px; - - &:last-child { - margin-bottom: 0; - } - } - - a { - font-size: 14px; - line-height: 20px; - } -} - -.notice-widget, .placeholder-widget { a { text-decoration: none; @@ -593,37 +400,3 @@ $fluid-breakpoint: $maximum-width + 20px; } } } - -.table-of-contents { - background: darken($ui-base-color, 4%); - min-height: 100%; - font-size: 14px; - border-radius: 4px; - - li a { - display: block; - font-weight: 500; - padding: 15px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - text-decoration: none; - color: $primary-text-color; - border-bottom: 1px solid lighten($ui-base-color, 4%); - - &:hover, - &:focus, - &:active { - text-decoration: underline; - } - } - - li:last-child a { - border-bottom: 0; - } - - li ul { - padding-left: 20px; - border-bottom: 1px solid lighten($ui-base-color, 4%); - } -} From e301cfb4637ff0ef75de066d929d52c39ddfb7ea Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 14 Oct 2022 10:16:37 +0900 Subject: [PATCH 158/500] [Glitch] Replace `CancelToken` to `AbortSignal` Port 219c38b9217d6dbb1621c27f64e9bf86bf92ec19 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/compose.js | 44 +++++++-------- app/javascript/flavours/glitch/api.js | 53 +++++++++++++------ .../flavours/glitch/extra_polyfills.js | 1 + .../flavours/glitch/load_polyfills.js | 1 + 4 files changed, 63 insertions(+), 36 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index 02aa4f144c..56a3b7b5ff 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -1,19 +1,21 @@ -import api from '../api'; -import { CancelToken, isCancel } from 'axios'; +import { isCancel } from 'axios'; import { throttle } from 'lodash'; +import { defineMessages } from 'react-intl'; +import api from 'flavours/glitch/api'; import { search as emojiSearch } from 'flavours/glitch/features/emoji/emoji_mart_search_light'; -import { useEmoji } from './emojis'; -import { tagHistory } from '../settings'; +import { tagHistory } from 'flavours/glitch/settings'; import { recoverHashtags } from 'flavours/glitch/utils/hashtag'; import resizeImage from 'flavours/glitch/utils/resize_image'; +import { showAlert, showAlertForError } from './alerts'; +import { useEmoji } from './emojis'; import { importFetchedAccounts } from './importer'; -import { updateTimeline } from './timelines'; -import { showAlertForError } from './alerts'; -import { showAlert } from './alerts'; import { openModal } from './modal'; -import { defineMessages } from 'react-intl'; +import { updateTimeline } from './timelines'; -let cancelFetchComposeSuggestionsAccounts, cancelFetchComposeSuggestionsTags; +/** @type {AbortController | undefined} */ +let fetchComposeSuggestionsAccountsController; +/** @type {AbortController | undefined} */ +let fetchComposeSuggestionsTagsController; export const COMPOSE_CHANGE = 'COMPOSE_CHANGE'; export const COMPOSE_CYCLE_ELEFRIEND = 'COMPOSE_CYCLE_ELEFRIEND'; @@ -472,8 +474,8 @@ export function undoUploadCompose(media_id) { }; export function clearComposeSuggestions() { - if (cancelFetchComposeSuggestionsAccounts) { - cancelFetchComposeSuggestionsAccounts(); + if (fetchComposeSuggestionsAccountsController) { + fetchComposeSuggestionsAccountsController.abort(); } return { type: COMPOSE_SUGGESTIONS_CLEAR, @@ -481,14 +483,14 @@ export function clearComposeSuggestions() { }; const fetchComposeSuggestionsAccounts = throttle((dispatch, getState, token) => { - if (cancelFetchComposeSuggestionsAccounts) { - cancelFetchComposeSuggestionsAccounts(); + if (fetchComposeSuggestionsAccountsController) { + fetchComposeSuggestionsAccountsController.abort(); } + fetchComposeSuggestionsAccountsController = new AbortController(); + api(getState).get('/api/v1/accounts/search', { - cancelToken: new CancelToken(cancel => { - cancelFetchComposeSuggestionsAccounts = cancel; - }), + signal: fetchComposeSuggestionsAccountsController.signal, params: { q: token.slice(1), @@ -511,16 +513,16 @@ const fetchComposeSuggestionsEmojis = (dispatch, getState, token) => { }; const fetchComposeSuggestionsTags = throttle((dispatch, getState, token) => { - if (cancelFetchComposeSuggestionsTags) { - cancelFetchComposeSuggestionsTags(); + if (fetchComposeSuggestionsTagsController) { + fetchComposeSuggestionsTagsController.abort(); } dispatch(updateSuggestionTags(token)); + fetchComposeSuggestionsTagsController = new AbortController(); + api(getState).get('/api/v2/search', { - cancelToken: new CancelToken(cancel => { - cancelFetchComposeSuggestionsTags = cancel; - }), + signal: fetchComposeSuggestionsTagsController.signal, params: { type: 'hashtags', diff --git a/app/javascript/flavours/glitch/api.js b/app/javascript/flavours/glitch/api.js index 645ef65006..6bbddbef66 100644 --- a/app/javascript/flavours/glitch/api.js +++ b/app/javascript/flavours/glitch/api.js @@ -1,20 +1,31 @@ +// @ts-check + import axios from 'axios'; import LinkHeader from 'http-link-header'; import ready from './ready'; +/** + * @param {import('axios').AxiosResponse} response + * @returns {LinkHeader} + */ export const getLinks = response => { const value = response.headers.link; if (!value) { - return { refs: [] }; + return new LinkHeader(); } return LinkHeader.parse(value); }; +/** @type {import('axios').RawAxiosRequestHeaders} */ const csrfHeader = {}; +/** + * @returns {void} + */ const setCSRFHeader = () => { + /** @type {HTMLMetaElement | null} */ const csrfToken = document.querySelector('meta[name=csrf-token]'); if (csrfToken) { @@ -24,6 +35,10 @@ const setCSRFHeader = () => { ready(setCSRFHeader); +/** + * @param {() => import('immutable').Map} getState + * @returns {import('axios').RawAxiosRequestHeaders} + */ const authorizationHeaderFromState = getState => { const accessToken = getState && getState().getIn(['meta', 'access_token'], ''); @@ -36,17 +51,25 @@ const authorizationHeaderFromState = getState => { }; }; -export default getState => axios.create({ - headers: { - ...csrfHeader, - ...authorizationHeaderFromState(getState), - }, - - transformResponse: [function (data) { - try { - return JSON.parse(data); - } catch(Exception) { - return data; - } - }], -}); +/** + * @param {() => import('immutable').Map} getState + * @returns {import('axios').AxiosInstance} + */ +export default function api(getState) { + return axios.create({ + headers: { + ...csrfHeader, + ...authorizationHeaderFromState(getState), + }, + + transformResponse: [ + function (data) { + try { + return JSON.parse(data); + } catch { + return data; + } + }, + ], + }); +} diff --git a/app/javascript/flavours/glitch/extra_polyfills.js b/app/javascript/flavours/glitch/extra_polyfills.js index 3acc55abd6..0d45c23b04 100644 --- a/app/javascript/flavours/glitch/extra_polyfills.js +++ b/app/javascript/flavours/glitch/extra_polyfills.js @@ -1,3 +1,4 @@ +import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'; import 'intersection-observer'; import 'requestidlecallback'; import objectFitImages from 'object-fit-images'; diff --git a/app/javascript/flavours/glitch/load_polyfills.js b/app/javascript/flavours/glitch/load_polyfills.js index 73eedc9dcc..cc5bcd18f1 100644 --- a/app/javascript/flavours/glitch/load_polyfills.js +++ b/app/javascript/flavours/glitch/load_polyfills.js @@ -26,6 +26,7 @@ function loadPolyfills() { // Edge does not have requestIdleCallback and object-fit CSS property. // This avoids shipping them all the polyfills. const needsExtraPolyfills = !( + window.AbortController && window.IntersectionObserver && window.IntersectionObserverEntry && 'isIntersecting' in IntersectionObserverEntry.prototype && From 39ec0e8398def877572c8a489ae32473f449a8b3 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 14 Oct 2022 23:14:22 +0900 Subject: [PATCH 159/500] [Glitch] Fix missing `isCancel` Port e02bdc14fdf9b811a241dbaec8605cc70cb2961c to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/actions/compose.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index 56a3b7b5ff..e68ba9c676 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -1,4 +1,4 @@ -import { isCancel } from 'axios'; +import axios from 'axios'; import { throttle } from 'lodash'; import { defineMessages } from 'react-intl'; import api from 'flavours/glitch/api'; @@ -501,9 +501,11 @@ const fetchComposeSuggestionsAccounts = throttle((dispatch, getState, token) => dispatch(importFetchedAccounts(response.data)); dispatch(readyComposeSuggestionsAccounts(token, response.data)); }).catch(error => { - if (!isCancel(error)) { + if (!axios.isCancel(error)) { dispatch(showAlertForError(error)); } + }).finally(() => { + fetchComposeSuggestionsAccountsController = undefined; }); }, 200, { leading: true, trailing: true }); @@ -533,9 +535,11 @@ const fetchComposeSuggestionsTags = throttle((dispatch, getState, token) => { }).then(({ data }) => { dispatch(readyComposeSuggestionsTags(token, data.hashtags)); }).catch(error => { - if (!isCancel(error)) { + if (!axios.isCancel(error)) { dispatch(showAlertForError(error)); } + }).finally(() => { + fetchComposeSuggestionsTagsController = undefined; }); }, 200, { leading: true, trailing: true }); From 2aa70c112a5381ad6c81597dbe2cb04e29532aa8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 18 Oct 2022 18:57:01 +0200 Subject: [PATCH 160/500] [Glitch] Fix error while server rules are loading in report modal in web UI Port 4c7b5fb6c1787438ef130d9aecd5d0a4d54d08a9 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/features/report/category.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/report/category.js b/app/javascript/flavours/glitch/features/report/category.js index 43fb7a17ca..88a6c19696 100644 --- a/app/javascript/flavours/glitch/features/report/category.js +++ b/app/javascript/flavours/glitch/features/report/category.js @@ -5,6 +5,7 @@ import { connect } from 'react-redux'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import Button from 'flavours/glitch/components/button'; import Option from './components/option'; +import { List as ImmutableList } from 'immutable'; const messages = defineMessages({ dislike: { id: 'report.reasons.dislike', defaultMessage: 'I don\'t like it' }, @@ -20,7 +21,7 @@ const messages = defineMessages({ }); const mapStateToProps = state => ({ - rules: state.getIn(['server', 'rules']), + rules: state.getIn(['server', 'rules'], ImmutableList()), }); export default @connect(mapStateToProps) From 6013eeea4c3492ac219bc8221396aa687775bf44 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 18 Oct 2022 19:33:11 +0200 Subject: [PATCH 161/500] [Glitch] Fix missing rules in report modal in web UI Port 9c7f4ab8e8d19d29a5b9367ebaec8fc8af70ab7f to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/features/report/category.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/report/category.js b/app/javascript/flavours/glitch/features/report/category.js index 88a6c19696..55c43577bb 100644 --- a/app/javascript/flavours/glitch/features/report/category.js +++ b/app/javascript/flavours/glitch/features/report/category.js @@ -21,7 +21,7 @@ const messages = defineMessages({ }); const mapStateToProps = state => ({ - rules: state.getIn(['server', 'rules'], ImmutableList()), + rules: state.getIn(['server', 'server', 'rules'], ImmutableList()), }); export default @connect(mapStateToProps) From 9363e5c24e48952ddb9a57a5b7d8cc8fe862fbd5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 20 Oct 2022 14:35:29 +0200 Subject: [PATCH 162/500] [Glitch] Change public accounts pages to mount the web UI Port 839f893168ab221b08fa439012189e6c29a2721a to glitch-soc Signed-off-by: Claire --- .../glitch/components/error_boundary.js | 5 + .../glitch/components/missing_indicator.js | 5 + .../flavours/glitch/containers/mastodon.js | 2 +- .../flavours/glitch/features/about/index.js | 6 +- .../features/account/components/header.js | 5 +- .../glitch/features/account_timeline/index.js | 12 +- .../features/bookmarked_statuses/index.js | 1 + .../features/community_timeline/index.js | 1 + .../flavours/glitch/features/compose/index.js | 5 + .../glitch/features/direct_timeline/index.js | 1 + .../glitch/features/directory/index.js | 1 + .../glitch/features/domain_blocks/index.js | 6 + .../flavours/glitch/features/explore/index.js | 1 + .../features/favourited_statuses/index.js | 1 + .../glitch/features/favourites/index.js | 5 + .../features/follow_recommendations/index.js | 5 + .../glitch/features/follow_requests/index.js | 5 + .../glitch/features/getting_started/index.js | 1 + .../glitch/features/hashtag_timeline/index.js | 1 + .../glitch/features/home_timeline/index.js | 3 +- .../features/keyboard_shortcuts/index.js | 5 + .../glitch/features/list_timeline/index.js | 1 + .../flavours/glitch/features/lists/index.js | 1 + .../flavours/glitch/features/mutes/index.js | 5 + .../glitch/features/notifications/index.js | 1 + .../glitch/features/pinned_statuses/index.js | 4 + .../glitch/features/privacy_policy/index.js | 6 +- .../glitch/features/public_timeline/index.js | 1 + .../flavours/glitch/features/reblogs/index.js | 5 + .../flavours/glitch/features/status/index.js | 16 +- .../ui/components/bundle_column_error.js | 24 +- .../features/ui/components/column_loading.js | 6 +- .../features/ui/components/columns_area.js | 4 +- .../features/ui/components/modal_root.js | 21 +- .../flavours/glitch/features/ui/index.js | 4 +- .../features/ui/util/async-components.js | 8 + .../features/ui/util/react_router_helpers.js | 4 +- app/javascript/flavours/glitch/main.js | 8 - .../flavours/glitch/packs/public.js | 7 - .../flavours/glitch/reducers/statuses.js | 6 + .../flavours/glitch/selectors/index.js | 2 +- .../flavours/glitch/styles/containers.scss | 786 ------------------ .../flavours/glitch/styles/footer.scss | 152 ---- .../flavours/glitch/styles/index.scss | 1 - .../glitch/styles/mastodon-light/diff.scss | 31 - .../flavours/glitch/styles/rtl.scss | 74 -- .../flavours/glitch/styles/statuses.scss | 9 +- 47 files changed, 162 insertions(+), 1102 deletions(-) delete mode 100644 app/javascript/flavours/glitch/styles/footer.scss diff --git a/app/javascript/flavours/glitch/components/error_boundary.js b/app/javascript/flavours/glitch/components/error_boundary.js index fd3659de7a..e0ca3e2b05 100644 --- a/app/javascript/flavours/glitch/components/error_boundary.js +++ b/app/javascript/flavours/glitch/components/error_boundary.js @@ -4,6 +4,7 @@ import { FormattedMessage } from 'react-intl'; import { source_url } from 'flavours/glitch/initial_state'; import { preferencesLink } from 'flavours/glitch/utils/backend_links'; import StackTrace from 'stacktrace-js'; +import { Helmet } from 'react-helmet'; export default class ErrorBoundary extends React.PureComponent { @@ -122,6 +123,10 @@ export default class ErrorBoundary extends React.PureComponent { )}
    + + + +
    ); } diff --git a/app/javascript/flavours/glitch/components/missing_indicator.js b/app/javascript/flavours/glitch/components/missing_indicator.js index ee5bf7c1ee..08e39c2367 100644 --- a/app/javascript/flavours/glitch/components/missing_indicator.js +++ b/app/javascript/flavours/glitch/components/missing_indicator.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import illustration from 'flavours/glitch/images/elephant_ui_disappointed.svg'; import classNames from 'classnames'; +import { Helmet } from 'react-helmet'; const MissingIndicator = ({ fullPage }) => (
    @@ -14,6 +15,10 @@ const MissingIndicator = ({ fullPage }) => (
    + + + +
    ); diff --git a/app/javascript/flavours/glitch/containers/mastodon.js b/app/javascript/flavours/glitch/containers/mastodon.js index eb88c26558..cf870102b6 100644 --- a/app/javascript/flavours/glitch/containers/mastodon.js +++ b/app/javascript/flavours/glitch/containers/mastodon.js @@ -83,7 +83,7 @@ export default class Mastodon extends React.PureComponent { - + diff --git a/app/javascript/flavours/glitch/features/about/index.js b/app/javascript/flavours/glitch/features/about/index.js index 8d7f9c1082..3d26c59bcb 100644 --- a/app/javascript/flavours/glitch/features/about/index.js +++ b/app/javascript/flavours/glitch/features/about/index.js @@ -94,6 +94,7 @@ class About extends React.PureComponent { }), dispatch: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, + multiColumn: PropTypes.bool, }; componentDidMount () { @@ -108,11 +109,11 @@ class About extends React.PureComponent { } render () { - const { intl, server, extendedDescription, domainBlocks } = this.props; + const { multiColumn, intl, server, extendedDescription, domainBlocks } = this.props; const isLoading = server.get('isLoading'); return ( - +
    `${value} ${key.replace('@', '')}`).join(', ')} className='about__header__hero' /> @@ -212,6 +213,7 @@ class About extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js index 9c7e62fc27..9aca721724 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.js +++ b/app/javascript/flavours/glitch/features/account/components/header.js @@ -273,7 +273,9 @@ class Header extends ImmutablePureComponent { const content = { __html: account.get('note_emojified') }; const displayNameHtml = { __html: account.get('display_name_html') }; const fields = account.get('fields'); - const acct = account.get('acct').indexOf('@') === -1 && domain ? `${account.get('acct')}@${domain}` : account.get('acct'); + const isLocal = account.get('acct').indexOf('@') === -1; + const acct = isLocal && domain ? `${account.get('acct')}@${domain}` : account.get('acct'); + const isIndexable = !account.get('noindex'); let badge; @@ -353,6 +355,7 @@ class Header extends ImmutablePureComponent { {titleFromAccount(account)} +
    ); diff --git a/app/javascript/flavours/glitch/features/account_timeline/index.js b/app/javascript/flavours/glitch/features/account_timeline/index.js index 68d558e662..222d40ca1e 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/index.js +++ b/app/javascript/flavours/glitch/features/account_timeline/index.js @@ -136,19 +136,17 @@ class AccountTimeline extends ImmutablePureComponent { render () { const { accountId, statusIds, featuredStatusIds, isLoading, hasMore, suspended, isAccount, hidden, multiColumn, remote, remoteUrl } = this.props; - if (!isAccount) { + if (isLoading && statusIds.isEmpty()) { return ( - - + ); - } - - if (!statusIds && isLoading) { + } else if (!isLoading && !isAccount) { return ( - + + ); } diff --git a/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js b/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js index 91dd0e892d..8978ac5fc1 100644 --- a/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js +++ b/app/javascript/flavours/glitch/features/bookmarked_statuses/index.js @@ -99,6 +99,7 @@ class Bookmarks extends ImmutablePureComponent { {intl.formatMessage(messages.heading)} + ); diff --git a/app/javascript/flavours/glitch/features/community_timeline/index.js b/app/javascript/flavours/glitch/features/community_timeline/index.js index 77809574d2..67bf548755 100644 --- a/app/javascript/flavours/glitch/features/community_timeline/index.js +++ b/app/javascript/flavours/glitch/features/community_timeline/index.js @@ -155,6 +155,7 @@ class CommunityTimeline extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/flavours/glitch/features/compose/index.js b/app/javascript/flavours/glitch/features/compose/index.js index 150e78c485..63cff836c4 100644 --- a/app/javascript/flavours/glitch/features/compose/index.js +++ b/app/javascript/flavours/glitch/features/compose/index.js @@ -15,6 +15,7 @@ import { me, mascot } from 'flavours/glitch/initial_state'; import { cycleElefriendCompose } from 'flavours/glitch/actions/compose'; import HeaderContainer from './containers/header_container'; import Column from 'flavours/glitch/components/column'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new post' }, @@ -114,6 +115,10 @@ class Compose extends React.PureComponent { + + + + ); } diff --git a/app/javascript/flavours/glitch/features/direct_timeline/index.js b/app/javascript/flavours/glitch/features/direct_timeline/index.js index cb209ed76f..d55c63c2b9 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/index.js +++ b/app/javascript/flavours/glitch/features/direct_timeline/index.js @@ -147,6 +147,7 @@ class DirectTimeline extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/flavours/glitch/features/directory/index.js b/app/javascript/flavours/glitch/features/directory/index.js index 672a114308..94bcd578cf 100644 --- a/app/javascript/flavours/glitch/features/directory/index.js +++ b/app/javascript/flavours/glitch/features/directory/index.js @@ -169,6 +169,7 @@ class Directory extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/flavours/glitch/features/domain_blocks/index.js b/app/javascript/flavours/glitch/features/domain_blocks/index.js index acce87d5a6..cb0b55c637 100644 --- a/app/javascript/flavours/glitch/features/domain_blocks/index.js +++ b/app/javascript/flavours/glitch/features/domain_blocks/index.js @@ -11,6 +11,7 @@ import { fetchDomainBlocks, expandDomainBlocks } from '../../actions/domain_bloc import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import ScrollableList from 'flavours/glitch/components/scrollable_list'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.domain_blocks', defaultMessage: 'Blocked domains' }, @@ -59,6 +60,7 @@ class Blocks extends ImmutablePureComponent { return ( + , )} + + + + ); } diff --git a/app/javascript/flavours/glitch/features/explore/index.js b/app/javascript/flavours/glitch/features/explore/index.js index 934e309f8e..24fa26eecb 100644 --- a/app/javascript/flavours/glitch/features/explore/index.js +++ b/app/javascript/flavours/glitch/features/explore/index.js @@ -85,6 +85,7 @@ class Explore extends React.PureComponent { {intl.formatMessage(messages.title)} + )} diff --git a/app/javascript/flavours/glitch/features/favourited_statuses/index.js b/app/javascript/flavours/glitch/features/favourited_statuses/index.js index ae94f05cad..a03e1a4eb0 100644 --- a/app/javascript/flavours/glitch/features/favourited_statuses/index.js +++ b/app/javascript/flavours/glitch/features/favourited_statuses/index.js @@ -99,6 +99,7 @@ class Favourites extends ImmutablePureComponent { {intl.formatMessage(messages.heading)} + ); diff --git a/app/javascript/flavours/glitch/features/favourites/index.js b/app/javascript/flavours/glitch/features/favourites/index.js index faaf62dee0..47c3279c4d 100644 --- a/app/javascript/flavours/glitch/features/favourites/index.js +++ b/app/javascript/flavours/glitch/features/favourites/index.js @@ -11,6 +11,7 @@ import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; import ScrollableList from 'flavours/glitch/components/scrollable_list'; import AccountContainer from 'flavours/glitch/containers/account_container'; import Column from 'flavours/glitch/features/ui/components/column'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.favourited_by', defaultMessage: 'Favourited by' }, @@ -91,6 +92,10 @@ class Favourites extends ImmutablePureComponent { , )} + + + + ); } diff --git a/app/javascript/flavours/glitch/features/follow_recommendations/index.js b/app/javascript/flavours/glitch/features/follow_recommendations/index.js index f934aeb350..d9d962b7c9 100644 --- a/app/javascript/flavours/glitch/features/follow_recommendations/index.js +++ b/app/javascript/flavours/glitch/features/follow_recommendations/index.js @@ -12,6 +12,7 @@ import Column from 'flavours/glitch/features/ui/components/column'; import Account from './components/account'; import imageGreeting from 'mastodon/../images/elephant_ui_greeting.svg'; import Button from 'flavours/glitch/components/button'; +import { Helmet } from 'react-helmet'; const mapStateToProps = state => ({ suggestions: state.getIn(['suggestions', 'items']), @@ -104,6 +105,10 @@ class FollowRecommendations extends ImmutablePureComponent { )}
    + + + +
    ); } diff --git a/app/javascript/flavours/glitch/features/follow_requests/index.js b/app/javascript/flavours/glitch/features/follow_requests/index.js index 47ca1e1bf7..7b35e3ec90 100644 --- a/app/javascript/flavours/glitch/features/follow_requests/index.js +++ b/app/javascript/flavours/glitch/features/follow_requests/index.js @@ -12,6 +12,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import ScrollableList from 'flavours/glitch/components/scrollable_list'; import { me } from 'flavours/glitch/initial_state'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.follow_requests', defaultMessage: 'Follow requests' }, @@ -88,6 +89,10 @@ class FollowRequests extends ImmutablePureComponent { , )} + + + +
    ); } diff --git a/app/javascript/flavours/glitch/features/getting_started/index.js b/app/javascript/flavours/glitch/features/getting_started/index.js index 39e00e4af3..b00383877e 100644 --- a/app/javascript/flavours/glitch/features/getting_started/index.js +++ b/app/javascript/flavours/glitch/features/getting_started/index.js @@ -194,6 +194,7 @@ const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2); {intl.formatMessage(messages.menu)} + ); diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js index 80b4c82be2..f1827789fe 100644 --- a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js +++ b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js @@ -228,6 +228,7 @@ class HashtagTimeline extends React.PureComponent { #{id} + ); diff --git a/app/javascript/flavours/glitch/features/home_timeline/index.js b/app/javascript/flavours/glitch/features/home_timeline/index.js index aa319b5762..23d0440a91 100644 --- a/app/javascript/flavours/glitch/features/home_timeline/index.js +++ b/app/javascript/flavours/glitch/features/home_timeline/index.js @@ -20,7 +20,7 @@ const messages = defineMessages({ title: { id: 'column.home', defaultMessage: 'Home' }, show_announcements: { id: 'home.show_announcements', defaultMessage: 'Show announcements' }, hide_announcements: { id: 'home.hide_announcements', defaultMessage: 'Hide announcements' }, -}); +}); const mapStateToProps = state => ({ hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0, @@ -170,6 +170,7 @@ class HomeTimeline extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js index 06df2ed995..2bc0116d4d 100644 --- a/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js +++ b/app/javascript/flavours/glitch/features/keyboard_shortcuts/index.js @@ -5,6 +5,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import ImmutablePureComponent from 'react-immutable-pure-component'; import ColumnHeader from 'flavours/glitch/components/column_header'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'keyboard_shortcuts.heading', defaultMessage: 'Keyboard Shortcuts' }, @@ -137,6 +138,10 @@ class KeyboardShortcuts extends ImmutablePureComponent {
    + + + + ); } diff --git a/app/javascript/flavours/glitch/features/list_timeline/index.js b/app/javascript/flavours/glitch/features/list_timeline/index.js index 9cc5bc1c46..a94c05c565 100644 --- a/app/javascript/flavours/glitch/features/list_timeline/index.js +++ b/app/javascript/flavours/glitch/features/list_timeline/index.js @@ -215,6 +215,7 @@ class ListTimeline extends React.PureComponent { {title} + ); diff --git a/app/javascript/flavours/glitch/features/lists/index.js b/app/javascript/flavours/glitch/features/lists/index.js index 32217cf418..8773be5e6d 100644 --- a/app/javascript/flavours/glitch/features/lists/index.js +++ b/app/javascript/flavours/glitch/features/lists/index.js @@ -80,6 +80,7 @@ class Lists extends ImmutablePureComponent { {intl.formatMessage(messages.heading)} + ); diff --git a/app/javascript/flavours/glitch/features/mutes/index.js b/app/javascript/flavours/glitch/features/mutes/index.js index 764cbef1a2..8da106e47c 100644 --- a/app/javascript/flavours/glitch/features/mutes/index.js +++ b/app/javascript/flavours/glitch/features/mutes/index.js @@ -11,6 +11,7 @@ import AccountContainer from 'flavours/glitch/containers/account_container'; import { fetchMutes, expandMutes } from 'flavours/glitch/actions/mutes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import ScrollableList from 'flavours/glitch/components/scrollable_list'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.mutes', defaultMessage: 'Muted users' }, @@ -72,6 +73,10 @@ class Mutes extends ImmutablePureComponent { , )} + + + + ); } diff --git a/app/javascript/flavours/glitch/features/notifications/index.js b/app/javascript/flavours/glitch/features/notifications/index.js index 0b26a3d9e1..67b155ced2 100644 --- a/app/javascript/flavours/glitch/features/notifications/index.js +++ b/app/javascript/flavours/glitch/features/notifications/index.js @@ -373,6 +373,7 @@ class Notifications extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/flavours/glitch/features/pinned_statuses/index.js b/app/javascript/flavours/glitch/features/pinned_statuses/index.js index 518d0294bb..eeeab46ab6 100644 --- a/app/javascript/flavours/glitch/features/pinned_statuses/index.js +++ b/app/javascript/flavours/glitch/features/pinned_statuses/index.js @@ -8,6 +8,7 @@ import ColumnBackButtonSlim from 'flavours/glitch/components/column_back_button_ import StatusList from 'flavours/glitch/components/status_list'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.pins', defaultMessage: 'Pinned post' }, @@ -54,6 +55,9 @@ class PinnedStatuses extends ImmutablePureComponent { hasMore={hasMore} bindToDocument={!multiColumn} /> + + + ); } diff --git a/app/javascript/flavours/glitch/features/privacy_policy/index.js b/app/javascript/flavours/glitch/features/privacy_policy/index.js index 47ee800383..4618d9e32e 100644 --- a/app/javascript/flavours/glitch/features/privacy_policy/index.js +++ b/app/javascript/flavours/glitch/features/privacy_policy/index.js @@ -15,6 +15,7 @@ class PrivacyPolicy extends React.PureComponent { static propTypes = { intl: PropTypes.object, + multiColumn: PropTypes.bool, }; state = { @@ -32,11 +33,11 @@ class PrivacyPolicy extends React.PureComponent { } render () { - const { intl } = this.props; + const { intl, multiColumn } = this.props; const { isLoading, content, lastUpdated } = this.state; return ( - +

    @@ -51,6 +52,7 @@ class PrivacyPolicy extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/flavours/glitch/features/public_timeline/index.js b/app/javascript/flavours/glitch/features/public_timeline/index.js index 49015c2fbf..a61a47de1b 100644 --- a/app/javascript/flavours/glitch/features/public_timeline/index.js +++ b/app/javascript/flavours/glitch/features/public_timeline/index.js @@ -159,6 +159,7 @@ class PublicTimeline extends React.PureComponent { {intl.formatMessage(messages.title)} + ); diff --git a/app/javascript/flavours/glitch/features/reblogs/index.js b/app/javascript/flavours/glitch/features/reblogs/index.js index ed646c6ed5..b097ff9d7f 100644 --- a/app/javascript/flavours/glitch/features/reblogs/index.js +++ b/app/javascript/flavours/glitch/features/reblogs/index.js @@ -11,6 +11,7 @@ import ColumnHeader from 'flavours/glitch/components/column_header'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import ScrollableList from 'flavours/glitch/components/scrollable_list'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ heading: { id: 'column.reblogged_by', defaultMessage: 'Boosted by' }, @@ -92,6 +93,10 @@ class Reblogs extends ImmutablePureComponent { , )} + + + + ); } diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js index f84928d2e8..2560faf050 100644 --- a/app/javascript/flavours/glitch/features/status/index.js +++ b/app/javascript/flavours/glitch/features/status/index.js @@ -135,6 +135,7 @@ const makeMapStateToProps = () => { } return { + isLoading: state.getIn(['statuses', props.params.statusId, 'isLoading']), status, ancestorsIds, descendantsIds, @@ -178,6 +179,7 @@ class Status extends ImmutablePureComponent { params: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, status: ImmutablePropTypes.map, + isLoading: PropTypes.bool, settings: ImmutablePropTypes.map.isRequired, ancestorsIds: ImmutablePropTypes.list, descendantsIds: ImmutablePropTypes.list, @@ -589,9 +591,17 @@ class Status extends ImmutablePureComponent { render () { let ancestors, descendants; - const { status, settings, ancestorsIds, descendantsIds, intl, domain, multiColumn, usingPiP } = this.props; + const { isLoading, status, settings, ancestorsIds, descendantsIds, intl, domain, multiColumn, usingPiP } = this.props; const { fullscreen } = this.state; + if (isLoading) { + return ( + + + + ); + } + if (status === null) { return ( @@ -611,6 +621,9 @@ class Status extends ImmutablePureComponent { descendants =
    {this.renderChildren(descendantsIds)}
    ; } + const isLocal = status.getIn(['account', 'acct'], '').indexOf('@') === -1; + const isIndexable = !status.getIn(['account', 'noindex']); + const handlers = { moveUp: this.handleHotkeyMoveUp, moveDown: this.handleHotkeyMoveDown, @@ -685,6 +698,7 @@ class Status extends ImmutablePureComponent { {titleFromStatus(status)} +
    ); diff --git a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.js b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.js index 3e979a2506..382481905a 100644 --- a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.js +++ b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.js @@ -2,10 +2,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; -import Column from './column'; -import ColumnHeader from './column_header'; -import ColumnBackButtonSlim from 'flavours/glitch/components/column_back_button_slim'; +import Column from 'flavours/glitch/components/column'; +import ColumnHeader from 'flavours/glitch/components/column_header'; import IconButton from 'flavours/glitch/components/icon_button'; +import { Helmet } from 'react-helmet'; const messages = defineMessages({ title: { id: 'bundle_column_error.title', defaultMessage: 'Network error' }, @@ -18,6 +18,7 @@ class BundleColumnError extends React.Component { static propTypes = { onRetry: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, + multiColumn: PropTypes.bool, } handleRetry = () => { @@ -25,16 +26,25 @@ class BundleColumnError extends React.Component { } render () { - const { intl: { formatMessage } } = this.props; + const { multiColumn, intl: { formatMessage } } = this.props; return ( - - - + + +
    {formatMessage(messages.body)}
    + + + +
    ); } diff --git a/app/javascript/flavours/glitch/features/ui/components/column_loading.js b/app/javascript/flavours/glitch/features/ui/components/column_loading.js index 22c00c915d..b07385397c 100644 --- a/app/javascript/flavours/glitch/features/ui/components/column_loading.js +++ b/app/javascript/flavours/glitch/features/ui/components/column_loading.js @@ -10,6 +10,7 @@ export default class ColumnLoading extends ImmutablePureComponent { static propTypes = { title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]), icon: PropTypes.string, + multiColumn: PropTypes.bool, }; static defaultProps = { @@ -18,10 +19,11 @@ export default class ColumnLoading extends ImmutablePureComponent { }; render() { - let { title, icon } = this.props; + let { title, icon, multiColumn } = this.props; + return ( - +
    ); diff --git a/app/javascript/flavours/glitch/features/ui/components/columns_area.js b/app/javascript/flavours/glitch/features/ui/components/columns_area.js index 8037c195dc..76e9a36902 100644 --- a/app/javascript/flavours/glitch/features/ui/components/columns_area.js +++ b/app/javascript/flavours/glitch/features/ui/components/columns_area.js @@ -140,11 +140,11 @@ class ColumnsArea extends ImmutablePureComponent { } renderLoading = columnId => () => { - return columnId === 'COMPOSE' ? : ; + return columnId === 'COMPOSE' ? : ; } renderError = (props) => { - return ; + return ; } render () { diff --git a/app/javascript/flavours/glitch/features/ui/components/modal_root.js b/app/javascript/flavours/glitch/features/ui/components/modal_root.js index cedfabe03d..8767840d6f 100644 --- a/app/javascript/flavours/glitch/features/ui/components/modal_root.js +++ b/app/javascript/flavours/glitch/features/ui/components/modal_root.js @@ -13,10 +13,8 @@ import FavouriteModal from './favourite_modal'; import AudioModal from './audio_modal'; import DoodleModal from './doodle_modal'; import ConfirmationModal from './confirmation_modal'; -import SubscribedLanguagesModal from 'flavours/glitch/features/subscribed_languages_modal'; import FocalPointModal from './focal_point_modal'; import DeprecatedSettingsModal from './deprecated_settings_modal'; -import InteractionModal from 'flavours/glitch/features/interaction_modal'; import { OnboardingModal, MuteModal, @@ -29,7 +27,10 @@ import { PinnedAccountsEditor, CompareHistoryModal, FilterModal, + InteractionModal, + SubscribedLanguagesModal, } from 'flavours/glitch/features/ui/util/async-components'; +import { Helmet } from 'react-helmet'; const MODAL_COMPONENTS = { 'MEDIA': () => Promise.resolve({ default: MediaModal }), @@ -53,8 +54,8 @@ const MODAL_COMPONENTS = { 'PINNED_ACCOUNTS_EDITOR': PinnedAccountsEditor, 'COMPARE_HISTORY': CompareHistoryModal, 'FILTER': FilterModal, - 'SUBSCRIBED_LANGUAGES': () => Promise.resolve({ default: SubscribedLanguagesModal }), - 'INTERACTION': () => Promise.resolve({ default: InteractionModal }), + 'SUBSCRIBED_LANGUAGES': SubscribedLanguagesModal, + 'INTERACTION': InteractionModal, }; export default class ModalRoot extends React.PureComponent { @@ -119,9 +120,15 @@ export default class ModalRoot extends React.PureComponent { return ( {visible && ( - - {(SpecificComponent) => } - + <> + + {(SpecificComponent) => } + + + + + + )} ); diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index eb5c3e87bd..0b6ce2ba50 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -210,8 +210,8 @@ class SwitchingColumnsArea extends React.PureComponent { - - + + diff --git a/app/javascript/flavours/glitch/features/ui/util/async-components.js b/app/javascript/flavours/glitch/features/ui/util/async-components.js index 5bf8d7fd64..e1a0723e1c 100644 --- a/app/javascript/flavours/glitch/features/ui/util/async-components.js +++ b/app/javascript/flavours/glitch/features/ui/util/async-components.js @@ -182,6 +182,14 @@ export function Explore () { return import(/* webpackChunkName: "flavours/glitch/async/explore" */'flavours/glitch/features/explore'); } +export function InteractionModal () { + return import(/*webpackChunkName: "flavours/glitch/async/modals/interaction_modal" */'flavours/glitch/features/interaction_modal'); +} + +export function SubscribedLanguagesModal () { + return import(/*webpackChunkName: "flavours/glitch/async/modals/subscribed_languages_modal" */'flavours/glitch/features/subscribed_languages_modal'); +} + export function About () { return import(/*webpackChunkName: "features/glitch/async/about" */'flavours/glitch/features/about'); } diff --git a/app/javascript/flavours/glitch/features/ui/util/react_router_helpers.js b/app/javascript/flavours/glitch/features/ui/util/react_router_helpers.js index e36c512f34..60a81a581c 100644 --- a/app/javascript/flavours/glitch/features/ui/util/react_router_helpers.js +++ b/app/javascript/flavours/glitch/features/ui/util/react_router_helpers.js @@ -53,7 +53,9 @@ export class WrappedRoute extends React.Component { } renderLoading = () => { - return ; + const { multiColumn } = this.props; + + return ; } renderError = (props) => { diff --git a/app/javascript/flavours/glitch/main.js b/app/javascript/flavours/glitch/main.js index ecb19ef540..f1e10df342 100644 --- a/app/javascript/flavours/glitch/main.js +++ b/app/javascript/flavours/glitch/main.js @@ -12,14 +12,6 @@ const perf = require('flavours/glitch/performance'); function main() { perf.start('main()'); - if (window.history && history.replaceState) { - const { pathname, search, hash } = window.location; - const path = pathname + search + hash; - if (!(/^\/web($|\/)/).test(path)) { - history.replaceState(null, document.title, `/web${path}`); - } - } - return ready(async () => { const mountNode = document.getElementById('mastodon'); const props = JSON.parse(mountNode.getAttribute('data-props')); diff --git a/app/javascript/flavours/glitch/packs/public.js b/app/javascript/flavours/glitch/packs/public.js index ae1899638a..629ea32b78 100644 --- a/app/javascript/flavours/glitch/packs/public.js +++ b/app/javascript/flavours/glitch/packs/public.js @@ -12,7 +12,6 @@ function main() { const { messages } = getLocale(); const React = require('react'); const ReactDOM = require('react-dom'); - const Rellax = require('rellax'); const { createBrowserHistory } = require('history'); const scrollToDetailedStatus = () => { @@ -90,12 +89,6 @@ function main() { scrollToDetailedStatus(); } - const parallaxComponents = document.querySelectorAll('.parallax'); - - if (parallaxComponents.length > 0 ) { - new Rellax('.parallax', { speed: -1 }); - } - delegate(document, '#registration_user_password_confirmation,#registration_user_password', 'input', () => { const password = document.getElementById('registration_user_password'); const confirmation = document.getElementById('registration_user_password_confirmation'); diff --git a/app/javascript/flavours/glitch/reducers/statuses.js b/app/javascript/flavours/glitch/reducers/statuses.js index 333e4b45c5..b47155c5f6 100644 --- a/app/javascript/flavours/glitch/reducers/statuses.js +++ b/app/javascript/flavours/glitch/reducers/statuses.js @@ -13,6 +13,8 @@ import { STATUS_REVEAL, STATUS_HIDE, STATUS_COLLAPSE, + STATUS_FETCH_REQUEST, + STATUS_FETCH_FAIL, } from 'flavours/glitch/actions/statuses'; import { TIMELINE_DELETE, @@ -37,6 +39,10 @@ const initialState = ImmutableMap(); export default function statuses(state = initialState, action) { switch(action.type) { + case STATUS_FETCH_REQUEST: + return state.setIn([action.id, 'isLoading'], true); + case STATUS_FETCH_FAIL: + return state.delete(action.id); case STATUS_IMPORT: return importStatus(state, action.status); case STATUSES_IMPORT: diff --git a/app/javascript/flavours/glitch/selectors/index.js b/app/javascript/flavours/glitch/selectors/index.js index 8e6e40d246..df46b58a8e 100644 --- a/app/javascript/flavours/glitch/selectors/index.js +++ b/app/javascript/flavours/glitch/selectors/index.js @@ -42,7 +42,7 @@ export const makeGetStatus = () => { ], (statusBase, statusReblog, accountBase, accountReblog, filters) => { - if (!statusBase) { + if (!statusBase || statusBase.get('isLoading')) { return null; } diff --git a/app/javascript/flavours/glitch/styles/containers.scss b/app/javascript/flavours/glitch/styles/containers.scss index 3f81653704..75472646e9 100644 --- a/app/javascript/flavours/glitch/styles/containers.scss +++ b/app/javascript/flavours/glitch/styles/containers.scss @@ -106,789 +106,3 @@ margin-left: 10px; } } - -.grid-3 { - display: grid; - grid-gap: 10px; - grid-template-columns: 3fr 1fr; - grid-auto-columns: 25%; - grid-auto-rows: max-content; - - .column-0 { - grid-column: 1/3; - grid-row: 1; - } - - .column-1 { - grid-column: 1; - grid-row: 2; - } - - .column-2 { - grid-column: 2; - grid-row: 2; - } - - .column-3 { - grid-column: 1/3; - grid-row: 3; - } - - @media screen and (max-width: $no-gap-breakpoint) { - grid-gap: 0; - grid-template-columns: minmax(0, 100%); - - .column-0 { - grid-column: 1; - } - - .column-1 { - grid-column: 1; - grid-row: 3; - } - - .column-2 { - grid-column: 1; - grid-row: 2; - } - - .column-3 { - grid-column: 1; - grid-row: 4; - } - } -} - -.grid-4 { - display: grid; - grid-gap: 10px; - grid-template-columns: repeat(4, minmax(0, 1fr)); - grid-auto-columns: 25%; - grid-auto-rows: max-content; - - .column-0 { - grid-column: 1 / 5; - grid-row: 1; - } - - .column-1 { - grid-column: 1 / 4; - grid-row: 2; - } - - .column-2 { - grid-column: 4; - grid-row: 2; - } - - .column-3 { - grid-column: 2 / 5; - grid-row: 3; - } - - .column-4 { - grid-column: 1; - grid-row: 3; - } - - .landing-page__call-to-action { - min-height: 100%; - } - - .flash-message { - margin-bottom: 10px; - } - - @media screen and (max-width: 738px) { - grid-template-columns: minmax(0, 50%) minmax(0, 50%); - - .landing-page__call-to-action { - padding: 20px; - display: flex; - align-items: center; - justify-content: center; - } - - .row__information-board { - width: 100%; - justify-content: center; - align-items: center; - } - - .row__mascot { - display: none; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - grid-gap: 0; - grid-template-columns: minmax(0, 100%); - - .column-0 { - grid-column: 1; - } - - .column-1 { - grid-column: 1; - grid-row: 3; - } - - .column-2 { - grid-column: 1; - grid-row: 2; - } - - .column-3 { - grid-column: 1; - grid-row: 5; - } - - .column-4 { - grid-column: 1; - grid-row: 4; - } - } -} - -.public-layout { - @media screen and (max-width: $no-gap-breakpoint) { - padding-top: 48px; - } - - .container { - max-width: 960px; - - @media screen and (max-width: $no-gap-breakpoint) { - padding: 0; - } - } - - .header { - background: lighten($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - border-radius: 4px; - height: 48px; - margin: 10px 0; - display: flex; - align-items: stretch; - justify-content: center; - flex-wrap: nowrap; - overflow: hidden; - - @media screen and (max-width: $no-gap-breakpoint) { - position: fixed; - width: 100%; - top: 0; - left: 0; - margin: 0; - border-radius: 0; - box-shadow: none; - z-index: 110; - } - - & > div { - flex: 1 1 33.3%; - min-height: 1px; - } - - .nav-left { - display: flex; - align-items: stretch; - justify-content: flex-start; - flex-wrap: nowrap; - } - - .nav-center { - display: flex; - align-items: stretch; - justify-content: center; - flex-wrap: nowrap; - } - - .nav-right { - display: flex; - align-items: stretch; - justify-content: flex-end; - flex-wrap: nowrap; - } - - .brand { - display: block; - padding: 15px; - - .logo { - display: block; - height: 18px; - width: auto; - position: relative; - bottom: -2px; - fill: $primary-text-color; - - @media screen and (max-width: $no-gap-breakpoint) { - height: 20px; - } - } - - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 12%); - } - } - - .nav-link { - display: flex; - align-items: center; - padding: 0 1rem; - font-size: 12px; - font-weight: 500; - text-decoration: none; - color: $darker-text-color; - white-space: nowrap; - text-align: center; - - &:hover, - &:focus, - &:active { - text-decoration: underline; - color: $primary-text-color; - } - - @media screen and (max-width: 550px) { - &.optional { - display: none; - } - } - } - - .nav-button { - background: lighten($ui-base-color, 16%); - margin: 8px; - margin-left: 0; - border-radius: 4px; - - &:hover, - &:focus, - &:active { - text-decoration: none; - background: lighten($ui-base-color, 20%); - } - } - } - - $no-columns-breakpoint: 600px; - - .grid { - display: grid; - grid-gap: 10px; - grid-template-columns: minmax(300px, 3fr) minmax(298px, 1fr); - grid-auto-columns: 25%; - grid-auto-rows: max-content; - - .column-0 { - grid-row: 1; - grid-column: 1; - } - - .column-1 { - grid-row: 1; - grid-column: 2; - } - - @media screen and (max-width: $no-columns-breakpoint) { - grid-template-columns: 100%; - grid-gap: 0; - - .column-1 { - display: none; - } - } - } - - .page-header { - @media screen and (max-width: $no-gap-breakpoint) { - border-bottom: 0; - } - } - - .public-account-header { - overflow: hidden; - margin-bottom: 10px; - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - - &.inactive { - opacity: 0.5; - - .public-account-header__image, - .avatar { - filter: grayscale(100%); - } - - .logo-button { - background-color: $secondary-text-color; - } - } - - .logo-button { - padding: 3px 15px; - } - - &__image { - border-radius: 4px 4px 0 0; - overflow: hidden; - height: 300px; - position: relative; - background: darken($ui-base-color, 12%); - - &::after { - content: ""; - display: block; - position: absolute; - width: 100%; - height: 100%; - box-shadow: inset 0 -1px 1px 1px rgba($base-shadow-color, 0.15); - top: 0; - left: 0; - } - - img { - object-fit: cover; - display: block; - width: 100%; - height: 100%; - margin: 0; - border-radius: 4px 4px 0 0; - } - - @media screen and (max-width: 600px) { - height: 200px; - } - } - - &--no-bar { - margin-bottom: 0; - - .public-account-header__image, - .public-account-header__image img { - border-radius: 4px; - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - margin-bottom: 0; - box-shadow: none; - - &__image::after { - display: none; - } - - &__image, - &__image img { - border-radius: 0; - } - } - - &__bar { - position: relative; - margin-top: -80px; - display: flex; - justify-content: flex-start; - - &::before { - content: ""; - display: block; - background: lighten($ui-base-color, 4%); - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 60px; - border-radius: 0 0 4px 4px; - z-index: -1; - } - - .avatar { - display: block; - width: 120px; - height: 120px; - @include avatar-size(120px); - padding-left: 20px - 4px; - flex: 0 0 auto; - - img { - display: block; - width: 100%; - height: 100%; - margin: 0; - border-radius: 50%; - border: 4px solid lighten($ui-base-color, 4%); - background: darken($ui-base-color, 8%); - @include avatar-radius(); - } - } - - @media screen and (max-width: 600px) { - margin-top: 0; - background: lighten($ui-base-color, 4%); - border-radius: 0 0 4px 4px; - padding: 5px; - - &::before { - display: none; - } - - .avatar { - width: 48px; - height: 48px; - @include avatar-size(48px); - padding: 7px 0; - padding-left: 10px; - - img { - border: 0; - border-radius: 4px; - @include avatar-radius(); - } - - @media screen and (max-width: 360px) { - display: none; - } - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - - @media screen and (max-width: $no-columns-breakpoint) { - flex-wrap: wrap; - } - } - - &__tabs { - flex: 1 1 auto; - margin-left: 20px; - - &__name { - padding-top: 20px; - padding-bottom: 8px; - - h1 { - font-size: 20px; - line-height: 18px * 1.5; - color: $primary-text-color; - font-weight: 500; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - text-shadow: 1px 1px 1px $base-shadow-color; - - small { - display: block; - font-size: 14px; - color: $primary-text-color; - font-weight: 400; - overflow: hidden; - text-overflow: ellipsis; - } - } - } - - @media screen and (max-width: 600px) { - margin-left: 15px; - display: flex; - justify-content: space-between; - align-items: center; - - &__name { - padding-top: 0; - padding-bottom: 0; - - h1 { - font-size: 16px; - line-height: 24px; - text-shadow: none; - - small { - color: $darker-text-color; - } - } - } - } - - &__tabs { - display: flex; - justify-content: flex-start; - align-items: stretch; - height: 58px; - - .details-counters { - display: flex; - flex-direction: row; - min-width: 300px; - } - - @media screen and (max-width: $no-columns-breakpoint) { - .details-counters { - display: none; - } - } - - .counter { - min-width: 33.3%; - box-sizing: border-box; - flex: 0 0 auto; - color: $darker-text-color; - padding: 10px; - border-right: 1px solid lighten($ui-base-color, 4%); - cursor: default; - text-align: center; - position: relative; - - a { - display: block; - } - - &:last-child { - border-right: 0; - } - - &::after { - display: block; - content: ""; - position: absolute; - bottom: 0; - left: 0; - width: 100%; - border-bottom: 4px solid $ui-primary-color; - opacity: 0.5; - transition: all 400ms ease; - } - - &.active { - &::after { - border-bottom: 4px solid $highlight-text-color; - opacity: 1; - } - - &.inactive::after { - border-bottom-color: $secondary-text-color; - } - } - - &:hover { - &::after { - opacity: 1; - transition-duration: 100ms; - } - } - - a { - text-decoration: none; - color: inherit; - } - - .counter-label { - font-size: 12px; - display: block; - } - - .counter-number { - font-weight: 500; - font-size: 18px; - margin-bottom: 5px; - color: $primary-text-color; - font-family: $font-display, sans-serif; - } - } - - .spacer { - flex: 1 1 auto; - height: 1px; - } - - &__buttons { - padding: 7px 8px; - } - } - } - - &__extra { - display: none; - margin-top: 4px; - - .public-account-bio { - border-radius: 0; - box-shadow: none; - background: transparent; - margin: 0 -5px; - - .account__header__fields { - border-top: 1px solid lighten($ui-base-color, 12%); - } - - .roles { - display: none; - } - } - - &__links { - margin-top: -15px; - font-size: 14px; - color: $darker-text-color; - - a { - display: inline-block; - color: $darker-text-color; - text-decoration: none; - padding: 15px; - font-weight: 500; - - strong { - font-weight: 700; - color: $primary-text-color; - } - } - } - - @media screen and (max-width: $no-columns-breakpoint) { - display: block; - flex: 100%; - } - } - } - - .account__section-headline { - border-radius: 4px 4px 0 0; - - @media screen and (max-width: $no-gap-breakpoint) { - border-radius: 0; - } - } - - .detailed-status__meta { - margin-top: 25px; - } - - .public-account-bio { - background: lighten($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - border-radius: 4px; - overflow: hidden; - margin-bottom: 10px; - - @media screen and (max-width: $no-gap-breakpoint) { - box-shadow: none; - margin-bottom: 0; - border-radius: 0; - } - - .account__header__fields { - margin: 0; - border-top: 0; - - a { - color: $highlight-text-color; - } - - dl:first-child .verified { - border-radius: 0 4px 0 0; - } - - .verified a { - color: $valid-value-color; - } - } - - .account__header__content { - padding: 20px; - padding-bottom: 0; - color: $primary-text-color; - } - - &__extra, - .roles { - padding: 20px; - font-size: 14px; - color: $darker-text-color; - } - - .roles { - padding-bottom: 0; - } - } - - .directory__list { - display: grid; - grid-gap: 10px; - grid-template-columns: minmax(0, 50%) minmax(0, 50%); - - .account-card { - display: flex; - flex-direction: column; - } - - @media screen and (max-width: $no-gap-breakpoint) { - display: block; - - .account-card { - margin-bottom: 10px; - display: block; - } - } - } - - .card-grid { - display: flex; - flex-wrap: wrap; - min-width: 100%; - margin: 0 -5px; - - & > div { - box-sizing: border-box; - flex: 1 0 auto; - width: 300px; - padding: 0 5px; - margin-bottom: 10px; - max-width: 33.333%; - - @media screen and (max-width: 900px) { - max-width: 50%; - } - - @media screen and (max-width: 600px) { - max-width: 100%; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - margin: 0; - border-top: 1px solid lighten($ui-base-color, 8%); - - & > div { - width: 100%; - padding: 0; - margin-bottom: 0; - border-bottom: 1px solid lighten($ui-base-color, 8%); - - &:last-child { - border-bottom: 0; - } - - .card__bar { - background: $ui-base-color; - - &:hover, - &:active, - &:focus { - background: lighten($ui-base-color, 4%); - } - } - } - } - } -} diff --git a/app/javascript/flavours/glitch/styles/footer.scss b/app/javascript/flavours/glitch/styles/footer.scss deleted file mode 100644 index 0c3e420332..0000000000 --- a/app/javascript/flavours/glitch/styles/footer.scss +++ /dev/null @@ -1,152 +0,0 @@ -.public-layout { - .footer { - text-align: left; - padding-top: 20px; - padding-bottom: 60px; - font-size: 12px; - color: lighten($ui-base-color, 34%); - - @media screen and (max-width: $no-gap-breakpoint) { - padding-left: 20px; - padding-right: 20px; - } - - .grid { - display: grid; - grid-gap: 10px; - grid-template-columns: 1fr 1fr 2fr 1fr 1fr; - - .column-0 { - grid-column: 1; - grid-row: 1; - min-width: 0; - } - - .column-1 { - grid-column: 2; - grid-row: 1; - min-width: 0; - } - - .column-2 { - grid-column: 3; - grid-row: 1; - min-width: 0; - text-align: center; - - h4 a { - color: lighten($ui-base-color, 34%); - } - } - - .column-3 { - grid-column: 4; - grid-row: 1; - min-width: 0; - } - - .column-4 { - grid-column: 5; - grid-row: 1; - min-width: 0; - } - - @media screen and (max-width: 690px) { - grid-template-columns: 1fr 2fr 1fr; - - .column-0, - .column-1 { - grid-column: 1; - } - - .column-1 { - grid-row: 2; - } - - .column-2 { - grid-column: 2; - } - - .column-3, - .column-4 { - grid-column: 3; - } - - .column-4 { - grid-row: 2; - } - } - - @media screen and (max-width: 600px) { - .column-1 { - display: block; - } - } - - @media screen and (max-width: $no-gap-breakpoint) { - .column-0, - .column-1, - .column-3, - .column-4 { - display: none; - } - - .column-2 h4 { - display: none; - } - } - } - - .legal-xs { - display: none; - text-align: center; - padding-top: 20px; - - @media screen and (max-width: $no-gap-breakpoint) { - display: block; - } - } - - h4 { - text-transform: uppercase; - font-weight: 700; - margin-bottom: 8px; - color: $darker-text-color; - - a { - color: inherit; - text-decoration: none; - } - } - - ul a, - .legal-xs a { - text-decoration: none; - color: lighten($ui-base-color, 34%); - - &:hover, - &:active, - &:focus { - text-decoration: underline; - } - } - - .brand { - .logo { - display: block; - height: 36px; - width: auto; - margin: 0 auto; - color: lighten($ui-base-color, 34%); - } - - &:hover, - &:focus, - &:active { - .logo { - color: lighten($ui-base-color, 38%); - } - } - } - } -} diff --git a/app/javascript/flavours/glitch/styles/index.scss b/app/javascript/flavours/glitch/styles/index.scss index 5c2532758b..fbb02c7884 100644 --- a/app/javascript/flavours/glitch/styles/index.scss +++ b/app/javascript/flavours/glitch/styles/index.scss @@ -9,7 +9,6 @@ @import 'containers'; @import 'lists'; @import 'modal'; -@import 'footer'; @import 'widgets'; @import 'forms'; @import 'accounts'; diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss index 64b86ffc14..d4ac558476 100644 --- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss +++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss @@ -354,37 +354,6 @@ } } -.public-layout { - .header, - .public-account-header, - .public-account-bio { - box-shadow: none; - } - - .header { - background: lighten($ui-base-color, 12%); - } - - .public-account-header { - &__image { - background: lighten($ui-base-color, 12%); - - &::after { - box-shadow: none; - } - } - - &__tabs { - &__name { - h1, - h1 small { - color: $white; - } - } - } - } -} - .account__section-headline a.active::after { border-color: transparent transparent $white; } diff --git a/app/javascript/flavours/glitch/styles/rtl.scss b/app/javascript/flavours/glitch/styles/rtl.scss index d0153c9f9e..31d1de376d 100644 --- a/app/javascript/flavours/glitch/styles/rtl.scss +++ b/app/javascript/flavours/glitch/styles/rtl.scss @@ -30,16 +30,6 @@ body.rtl { right: -26px; } - .landing-page__logo { - margin-right: 0; - margin-left: 20px; - } - - .landing-page .features-list .features-list__row .visual { - margin-left: 0; - margin-right: 15px; - } - .column-link__icon, .column-header__icon { margin-right: 0; @@ -327,44 +317,6 @@ body.rtl { margin-left: 45px; } - .landing-page .header-wrapper .mascot { - right: 60px; - left: auto; - } - - .landing-page__call-to-action .row__information-board { - direction: rtl; - } - - .landing-page .header .hero .floats .float-1 { - left: -120px; - right: auto; - } - - .landing-page .header .hero .floats .float-2 { - left: 210px; - right: auto; - } - - .landing-page .header .hero .floats .float-3 { - left: 110px; - right: auto; - } - - .landing-page .header .links .brand img { - left: 0; - } - - .landing-page .fa-external-link { - padding-right: 5px; - padding-left: 0 !important; - } - - .landing-page .features #mastodon-timeline { - margin-right: 0; - margin-left: 30px; - } - @media screen and (min-width: 631px) { .column, .drawer { @@ -392,32 +344,6 @@ body.rtl { padding-right: 0; } - .public-layout { - .header { - .nav-button { - margin-left: 8px; - margin-right: 0; - } - } - - .public-account-header__tabs { - margin-left: 0; - margin-right: 20px; - } - } - - .landing-page__information { - .account__display-name { - margin-right: 0; - margin-left: 5px; - } - - .account__avatar-wrapper { - margin-left: 12px; - margin-right: 0; - } - } - .card__bar .display-name { margin-left: 0; margin-right: 15px; diff --git a/app/javascript/flavours/glitch/styles/statuses.scss b/app/javascript/flavours/glitch/styles/statuses.scss index c302fc0d0d..947a5d3aed 100644 --- a/app/javascript/flavours/glitch/styles/statuses.scss +++ b/app/javascript/flavours/glitch/styles/statuses.scss @@ -133,8 +133,7 @@ a.button.logo-button { justify-content: center; } -.embed, -.public-layout { +.embed { .status__content[data-spoiler=folded] { .e-content { display: none; @@ -204,8 +203,7 @@ a.button.logo-button { } // Styling from upstream's WebUI, as public pages use the same layout -.embed, -.public-layout { +.embed { .status { .status__info { font-size: 15px; @@ -244,8 +242,7 @@ a.button.logo-button { } .rtl { - .embed, - .public-layout { + .embed { .status { padding-left: 10px; padding-right: 68px; From 89e9ec8ae2ea64a5df1385726354618c84c2e857 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 17:14:02 +0200 Subject: [PATCH 163/500] fixup! [Glitch] Fix intermediary responsive layout, accessibility on navigation in web UI --- .../flavours/glitch/features/ui/components/navigation_panel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index f36258990e..1f3e4f1fd9 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -87,7 +87,7 @@ class NavigationPanel extends React.Component {

    - +
    {showTrends && ( From 885389d279cd8648b77a6420f9b3e963cac46725 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 17:18:45 +0200 Subject: [PATCH 164/500] fixup! [Glitch] Change public accounts pages to mount the web UI --- app/javascript/flavours/glitch/features/status/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js index 2560faf050..f59e8c7f68 100644 --- a/app/javascript/flavours/glitch/features/status/index.js +++ b/app/javascript/flavours/glitch/features/status/index.js @@ -7,6 +7,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import { createSelector } from 'reselect'; import { fetchStatus } from 'flavours/glitch/actions/statuses'; import MissingIndicator from 'flavours/glitch/components/missing_indicator'; +import LoadingIndicator from 'flavours/glitch/components/loading_indicator'; import DetailedStatus from './components/detailed_status'; import ActionBar from './components/action_bar'; import Column from 'flavours/glitch/features/ui/components/column'; From 7cfb31928308cb6904d3b0e808365e98466890eb Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 17:22:43 +0200 Subject: [PATCH 165/500] fixup! [Glitch] Fix logged-out web UI on smaller screens --- app/javascript/flavours/glitch/features/getting_started/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/flavours/glitch/features/getting_started/index.js b/app/javascript/flavours/glitch/features/getting_started/index.js index b00383877e..f9d79013b5 100644 --- a/app/javascript/flavours/glitch/features/getting_started/index.js +++ b/app/javascript/flavours/glitch/features/getting_started/index.js @@ -118,6 +118,7 @@ const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2); render () { const { intl, myAccount, columns, multiColumn, unreadFollowRequests, unreadNotifications, lists, openSettings } = this.props; + const { signedIn } = this.context.identity; const navItems = []; let listItems = []; From b9195f8fb71ae7f4c48c896baff273c9518b6492 Mon Sep 17 00:00:00 2001 From: prplecake Date: Tue, 18 Oct 2022 17:12:55 -0500 Subject: [PATCH 166/500] [Glitch] Don't use "unfollow language" when cancelling follow requests Port 1b83040bd45770ff831ff697418aaa2468a1516a to glitch-soc Signed-off-by: Claire --- .../glitch/features/account/components/header.js | 2 +- .../account_timeline/containers/header_container.js | 11 ++++++++++- .../features/directory/components/account_card.js | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js index 9aca721724..cf1494f057 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.js +++ b/app/javascript/flavours/glitch/features/account/components/header.js @@ -19,7 +19,7 @@ import { Helmet } from 'react-helmet'; const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, follow: { id: 'account.follow', defaultMessage: 'Follow' }, - cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Cancel follow request' }, + cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Withdraw follow request' }, requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, diff --git a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js index c1577e1700..e6d8bb3bc8 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js +++ b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js @@ -24,6 +24,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { unfollowModal } from 'flavours/glitch/initial_state'; const messages = defineMessages({ + cancelFollowRequestConfirm: { id: 'confirmations.cancel_follow_request.confirm', defaultMessage: 'Withdraw request' }, unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Hide entire domain' }, }); @@ -43,7 +44,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch, { intl }) => ({ onFollow (account) { - if (account.getIn(['relationship', 'following']) || account.getIn(['relationship', 'requested'])) { + if (account.getIn(['relationship', 'following'])) { if (unfollowModal) { dispatch(openModal('CONFIRM', { message: @{account.get('acct')} }} />, @@ -53,6 +54,14 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ } else { dispatch(unfollowAccount(account.get('id'))); } + } else if (account.getIn(['relationship', 'requested'])) { + if (unfollowModal) { + dispatch(openModal('CONFIRM', { + message: @{account.get('acct')} }} />, + confirm: intl.formatMessage(messages.cancelFollowRequestConfirm), + onConfirm: () => dispatch(unfollowAccount(account.get('id'))), + })); + } } else { dispatch(followAccount(account.get('id'))); } diff --git a/app/javascript/flavours/glitch/features/directory/components/account_card.js b/app/javascript/flavours/glitch/features/directory/components/account_card.js index b6785a5f95..8c344c7931 100644 --- a/app/javascript/flavours/glitch/features/directory/components/account_card.js +++ b/app/javascript/flavours/glitch/features/directory/components/account_card.js @@ -24,7 +24,7 @@ import classNames from 'classnames'; const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, follow: { id: 'account.follow', defaultMessage: 'Follow' }, - cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Cancel follow request' }, + cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Withdraw follow request' }, requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' }, unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' }, From 5f4f37f4325b3777d500dcfdcce80f6afb1a67f0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 20 Oct 2022 14:47:42 +0200 Subject: [PATCH 167/500] [Glitch] Fix error on profile in web UI Port 74738b49933eeadb6e837711ef1a1d0718829b6c to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/account_timeline/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/flavours/glitch/features/account_timeline/index.js b/app/javascript/flavours/glitch/features/account_timeline/index.js index 222d40ca1e..9f2a66881f 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/index.js +++ b/app/javascript/flavours/glitch/features/account_timeline/index.js @@ -26,6 +26,7 @@ const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) = if (!accountId) { return { isLoading: true, + statusIds: emptyList, }; } From f9f0949bd322bde741f81707ff871715c35d90e0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Oct 2022 10:06:03 +0200 Subject: [PATCH 168/500] [Glitch] Fix case-sensitive look-up for profiles in web UI Port 5e908c5a95a64a4d48e35516723955ac61a15c4d to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/account_timeline/index.js | 3 ++- app/javascript/flavours/glitch/reducers/accounts_map.js | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/features/account_timeline/index.js b/app/javascript/flavours/glitch/features/account_timeline/index.js index 9f2a66881f..6d4ebd3410 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/index.js +++ b/app/javascript/flavours/glitch/features/account_timeline/index.js @@ -17,11 +17,12 @@ import MissingIndicator from 'flavours/glitch/components/missing_indicator'; import TimelineHint from 'flavours/glitch/components/timeline_hint'; import LimitedAccountHint from './components/limited_account_hint'; import { getAccountHidden } from 'flavours/glitch/selectors'; +import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map'; const emptyList = ImmutableList(); const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/flavours/glitch/reducers/accounts_map.js b/app/javascript/flavours/glitch/reducers/accounts_map.js index e0d42e9cd4..53e08c8fbe 100644 --- a/app/javascript/flavours/glitch/reducers/accounts_map.js +++ b/app/javascript/flavours/glitch/reducers/accounts_map.js @@ -1,14 +1,16 @@ import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from '../actions/importer'; import { Map as ImmutableMap } from 'immutable'; +export const normalizeForLookup = str => str.toLowerCase(); + const initialState = ImmutableMap(); export default function accountsMap(state = initialState, action) { switch(action.type) { case ACCOUNT_IMPORT: - return state.set(action.account.acct, action.account.id); + return state.set(normalizeForLookup(action.account.acct), action.account.id); case ACCOUNTS_IMPORT: - return state.withMutations(map => action.accounts.forEach(account => map.set(account.acct, account.id))); + return state.withMutations(map => action.accounts.forEach(account => map.set(normalizeForLookup(account.acct), account.id))); default: return state; } From bda5040085e2e80a2f58917e1f12e5a95473ce9c Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 22 Oct 2022 18:09:51 +0200 Subject: [PATCH 169/500] [Glitch] Change landing page to be /about instead of /explore when trends are disabled Port 062b3c9090c6935d4bf754e7aeb37793a2aa7b68 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/features/ui/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index 0b6ce2ba50..5c567be42d 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -56,7 +56,7 @@ import { PrivacyPolicy, } from './util/async-components'; import { HotKeys } from 'react-hotkeys'; -import initialState, { me, owner, singleUserMode } from '../../initial_state'; +import initialState, { me, owner, singleUserMode, showTrends } from '../../initial_state'; import { closeOnboarding, INTRODUCTION_VERSION } from 'flavours/glitch/actions/onboarding'; import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; import { Helmet } from 'react-helmet'; @@ -177,8 +177,10 @@ class SwitchingColumnsArea extends React.PureComponent { } } else if (singleUserMode && owner && initialState?.accounts[owner]) { redirect = ; - } else { + } else if (showTrends) { redirect = ; + } else { + redirect = ; } return ( From 7d3acb1f2c984cb402aa507b51abf7c824227fc8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 18:30:20 +0200 Subject: [PATCH 170/500] [Glitch] Fix error when rendering limited account in web UI Port 73a48318a19a207c63f6d03ecea8ce35b7e2364a to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/avatar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/components/avatar.js b/app/javascript/flavours/glitch/components/avatar.js index 1da4a861cb..38fd99af59 100644 --- a/app/javascript/flavours/glitch/components/avatar.js +++ b/app/javascript/flavours/glitch/components/avatar.js @@ -71,7 +71,7 @@ export default class Avatar extends React.PureComponent { style={style} data-avatar-of={account && `@${account.get('acct')}`} role='img' - aria-label={account.get('acct')} + aria-label={account?.get('acct')} /> ); } From 92385da9c3d3c88108db530dd468c1933d40540f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 23:15:14 +0200 Subject: [PATCH 171/500] [Glitch] Fix reply not opening compose page on certain screen sizes in web UI Port 56efa8d22f041ca87efdfb2e95e80d213e72dde9 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/actions/compose.js | 4 +--- app/javascript/flavours/glitch/styles/components/columns.scss | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index e68ba9c676..728bcf79b2 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -85,10 +85,8 @@ const messages = defineMessages({ uploadErrorPoll: { id: 'upload_error.poll', defaultMessage: 'File upload not allowed with polls.' }, }); -const COMPOSE_PANEL_BREAKPOINT = 600 + (285 * 1) + (10 * 1); - export const ensureComposeIsVisible = (getState, routerHistory) => { - if (!getState().getIn(['compose', 'mounted']) && window.innerWidth < COMPOSE_PANEL_BREAKPOINT) { + if (!getState().getIn(['compose', 'mounted'])) { routerHistory.push('/publish'); } }; diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index 9d8372e75b..75891ad2e1 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -215,7 +215,6 @@ $ui-header-height: 55px; padding: 15px; text-decoration: none; overflow: hidden; - text-overflow: ellipsis; white-space: nowrap; &:hover, From 1315c149c0c6159cf7b7091b31accedb714a648f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 23:18:32 +0200 Subject: [PATCH 172/500] [Glitch] Add error boundary around routes in web UI Port a43a8237681187f6e56524aa3effcfc998a877de to glitch-soc Co-authored-by: Yamagishi Kazutoshi Signed-off-by: Claire --- .../ui/components/bundle_column_error.js | 160 +++++++++++++++--- .../flavours/glitch/features/ui/index.js | 6 +- .../features/ui/util/react_router_helpers.js | 34 +++- .../glitch/styles/components/columns.scss | 41 ++++- .../glitch/styles/components/index.scss | 9 + .../styles/components/single_column.scss | 3 +- 6 files changed, 220 insertions(+), 33 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.js b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.js index 382481905a..7cbe1413d7 100644 --- a/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.js +++ b/app/javascript/flavours/glitch/features/ui/components/bundle_column_error.js @@ -1,45 +1,155 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { defineMessages, injectIntl } from 'react-intl'; - +import { injectIntl, FormattedMessage } from 'react-intl'; import Column from 'flavours/glitch/components/column'; -import ColumnHeader from 'flavours/glitch/components/column_header'; -import IconButton from 'flavours/glitch/components/icon_button'; +import Button from 'flavours/glitch/components/button'; import { Helmet } from 'react-helmet'; +import { Link } from 'react-router-dom'; +import classNames from 'classnames'; +import { autoPlayGif } from 'flavours/glitch/initial_state'; + +class GIF extends React.PureComponent { + + static propTypes = { + src: PropTypes.string.isRequired, + staticSrc: PropTypes.string.isRequired, + className: PropTypes.string, + animate: PropTypes.bool, + }; + + static defaultProps = { + animate: autoPlayGif, + }; + + state = { + hovering: false, + }; + + handleMouseEnter = () => { + const { animate } = this.props; + + if (!animate) { + this.setState({ hovering: true }); + } + } + + handleMouseLeave = () => { + const { animate } = this.props; + + if (!animate) { + this.setState({ hovering: false }); + } + } + + render () { + const { src, staticSrc, className, animate } = this.props; + const { hovering } = this.state; + + return ( + + ); + } + +} + +class CopyButton extends React.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 ( + + ); + } -const messages = defineMessages({ - title: { id: 'bundle_column_error.title', defaultMessage: 'Network error' }, - body: { id: 'bundle_column_error.body', defaultMessage: 'Something went wrong while loading this component.' }, - retry: { id: 'bundle_column_error.retry', defaultMessage: 'Try again' }, -}); +} -class BundleColumnError extends React.Component { +export default @injectIntl +class BundleColumnError extends React.PureComponent { static propTypes = { - onRetry: PropTypes.func.isRequired, + errorType: PropTypes.oneOf(['routing', 'network', 'error']), + onRetry: PropTypes.func, intl: PropTypes.object.isRequired, multiColumn: PropTypes.bool, - } + stacktrace: PropTypes.string, + }; + + static defaultProps = { + errorType: 'routing', + }; handleRetry = () => { - this.props.onRetry(); + const { onRetry } = this.props; + + if (onRetry) { + onRetry(); + } } render () { - const { multiColumn, intl: { formatMessage } } = this.props; + const { errorType, multiColumn, stacktrace } = this.props; - return ( - - + let title, body; + switch(errorType) { + case 'routing': + title = ; + body = ; + break; + case 'network': + title = ; + body = ; + break; + case 'error': + title = ; + body = ; + break; + } + + return ( +
    - - {formatMessage(messages.body)} + + +
    +

    {title}

    +

    {body}

    + +
    + {errorType === 'network' && } + {errorType === 'error' && } + +
    +
    @@ -50,5 +160,3 @@ class BundleColumnError extends React.Component { } } - -export default injectIntl(BundleColumnError); diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index 5c567be42d..9ca9461429 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types'; import LoadingBarContainer from './containers/loading_bar_container'; import ModalContainer from './containers/modal_container'; import { connect } from 'react-redux'; -import { Redirect, withRouter } from 'react-router-dom'; +import { Redirect, Route, withRouter } from 'react-router-dom'; import { layoutFromWindow } from 'flavours/glitch/is_mobile'; import { debounce } from 'lodash'; import { uploadCompose, resetCompose, changeComposeSpoilerness } from 'flavours/glitch/actions/compose'; @@ -15,6 +15,7 @@ import { clearHeight } from 'flavours/glitch/actions/height_cache'; import { changeLayout } from 'flavours/glitch/actions/app'; import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'flavours/glitch/actions/markers'; import { WrappedSwitch, WrappedRoute } from './util/react_router_helpers'; +import BundleColumnError from './components/bundle_column_error'; import UploadArea from './components/upload_area'; import PermaLink from 'flavours/glitch/components/permalink'; import ColumnsAreaContainer from './containers/columns_area_container'; @@ -39,7 +40,6 @@ import { HashtagTimeline, Notifications, FollowRequests, - GenericNotFound, FavouritedStatuses, BookmarkedStatuses, ListTimeline, @@ -233,7 +233,7 @@ class SwitchingColumnsArea extends React.PureComponent { - + ); diff --git a/app/javascript/flavours/glitch/features/ui/util/react_router_helpers.js b/app/javascript/flavours/glitch/features/ui/util/react_router_helpers.js index 60a81a581c..8946c8252a 100644 --- a/app/javascript/flavours/glitch/features/ui/util/react_router_helpers.js +++ b/app/javascript/flavours/glitch/features/ui/util/react_router_helpers.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Switch, Route } from 'react-router-dom'; - +import StackTrace from 'stacktrace-js'; import ColumnLoading from 'flavours/glitch/features/ui/components/column_loading'; import BundleColumnError from 'flavours/glitch/features/ui/components/bundle_column_error'; import BundleContainer from 'flavours/glitch/features/ui/containers/bundle_container'; @@ -42,8 +42,38 @@ export class WrappedRoute extends React.Component { componentParams: {}, }; + static getDerivedStateFromError () { + return { + hasError: true, + }; + }; + + state = { + hasError: false, + stacktrace: '', + }; + + componentDidCatch (error) { + StackTrace.fromError(error).then(stackframes => { + this.setState({ stacktrace: error.toString() + '\n' + stackframes.map(frame => frame.toString()).join('\n') }); + }).catch(err => { + console.error(err); + }); + } + renderComponent = ({ match }) => { const { component, content, multiColumn, componentParams } = this.props; + const { hasError, stacktrace } = this.state; + + if (hasError) { + return ( + + ); + } return ( @@ -59,7 +89,7 @@ export class WrappedRoute extends React.Component { } renderError = (props) => { - return ; + return ; } render () { diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index 75891ad2e1..5de8547e9e 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -627,7 +627,6 @@ $ui-header-height: 55px; } .empty-column-indicator, -.error-column, .follow_requests-unlocked_explanation { color: $dark-text-color; background: $ui-base-color; @@ -664,7 +663,47 @@ $ui-header-height: 55px; } .error-column { + padding: 20px; + background: $ui-base-color; + border-radius: 4px; + display: flex; + flex: 1 1 auto; + align-items: center; + justify-content: center; flex-direction: column; + cursor: default; + + &__image { + max-width: 350px; + margin-top: -50px; + } + + &__message { + text-align: center; + color: $darker-text-color; + font-size: 15px; + line-height: 22px; + + h1 { + font-size: 28px; + line-height: 33px; + font-weight: 700; + margin-bottom: 15px; + color: $primary-text-color; + } + + p { + max-width: 48ch; + } + + &__actions { + margin-top: 30px; + display: flex; + gap: 10px; + align-items: center; + justify-content: center; + } + } } // more fixes for the navbar-under mode diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index 81d90f4420..8877626b8f 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -189,6 +189,15 @@ color: $highlight-text-color; } + &.copyable { + transition: background 300ms linear; + } + + &.copied { + background: $valid-value-color; + transition: none; + } + &::-moz-focus-inner { border: 0; } diff --git a/app/javascript/flavours/glitch/styles/components/single_column.scss b/app/javascript/flavours/glitch/styles/components/single_column.scss index 3befca5672..1725a5480c 100644 --- a/app/javascript/flavours/glitch/styles/components/single_column.scss +++ b/app/javascript/flavours/glitch/styles/components/single_column.scss @@ -322,7 +322,8 @@ .column-header, .column-back-button, - .scrollable { + .scrollable, + .error-column { border-radius: 0 !important; } } From bfa47eb7d6b407327f1de33b237a8005480bd2ec Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 23:38:20 +0200 Subject: [PATCH 173/500] [Glitch] Fix language dropdown causing zoom on mobile devices in web UI Port 3ad0a2ae3dcd36e4a9e0be5f72273f9c30df7548 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/components/emoji_picker.scss | 2 +- app/javascript/flavours/glitch/styles/components/search.scss | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/components/emoji_picker.scss b/app/javascript/flavours/glitch/styles/components/emoji_picker.scss index 0089445e1f..bad6949c28 100644 --- a/app/javascript/flavours/glitch/styles/components/emoji_picker.scss +++ b/app/javascript/flavours/glitch/styles/components/emoji_picker.scss @@ -111,7 +111,7 @@ position: relative; input { - font-size: 14px; + font-size: 16px; font-weight: 400; padding: 7px 9px; padding-right: 25px; diff --git a/app/javascript/flavours/glitch/styles/components/search.scss b/app/javascript/flavours/glitch/styles/components/search.scss index c0653a7b18..bb861a88e6 100644 --- a/app/javascript/flavours/glitch/styles/components/search.scss +++ b/app/javascript/flavours/glitch/styles/components/search.scss @@ -28,10 +28,6 @@ &:focus { background: lighten($ui-base-color, 4%); } - - @media screen and (max-width: 600px) { - font-size: 16px; - } } .search__icon { From d9f182e5f3e14eb5cabac6e2925cebe8b9338dd5 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 24 Oct 2022 17:37:46 +0200 Subject: [PATCH 174/500] [Glitch] Fix WebUI notification settings for new user and new report notifications Port dd76bbf8b7aef3aed6bb27a5c093211eebcdb24b to glitch-soc Signed-off-by: Claire --- .../features/notifications/components/column_settings.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/flavours/glitch/features/notifications/components/column_settings.js b/app/javascript/flavours/glitch/features/notifications/components/column_settings.js index 42ab9de35b..ee05c7fd6b 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/column_settings.js +++ b/app/javascript/flavours/glitch/features/notifications/components/column_settings.js @@ -171,7 +171,7 @@ export default class ColumnSettings extends React.PureComponent {
    - {(this.context.identity.permissions & PERMISSION_MANAGE_USERS === PERMISSION_MANAGE_USERS) && ( + {((this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) && (
    @@ -184,7 +184,7 @@ export default class ColumnSettings extends React.PureComponent {
    )} - {(this.context.identity.permissions & PERMISSION_MANAGE_REPORTS === PERMISSION_MANAGE_REPORTS) && ( + {((this.context.identity.permissions & PERMISSION_MANAGE_REPORTS) === PERMISSION_MANAGE_REPORTS) && (
    From 2d731dbde6504763229b0bdc0e38fe7eed8c4d35 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 13:42:29 +0200 Subject: [PATCH 175/500] [Glitch] Add ability to view previous edits of a status in admin UI Port f8ca3bb2a1dd648f41e8fea5b5eb87b53bc8d521 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/admin.scss | 64 +++++++++++++++++++ .../flavours/glitch/utils/backend_links.js | 2 +- 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index 77890c467c..cb5a2d7ce4 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -1721,3 +1721,67 @@ a.sparkline { } } } + +.history { + counter-reset: step 0; + font-size: 15px; + line-height: 22px; + + li { + counter-increment: step 1; + padding-left: 2.5rem; + padding-bottom: 8px; + position: relative; + margin-bottom: 8px; + + &::before { + position: absolute; + content: counter(step); + font-size: 0.625rem; + font-weight: 500; + left: 0; + display: flex; + justify-content: center; + align-items: center; + width: calc(1.375rem + 1px); + height: calc(1.375rem + 1px); + background: $ui-base-color; + border: 1px solid $highlight-text-color; + color: $highlight-text-color; + border-radius: 8px; + } + + &::after { + position: absolute; + content: ""; + width: 1px; + background: $highlight-text-color; + bottom: 0; + top: calc(1.875rem + 1px); + left: 0.6875rem; + } + + &:last-child { + margin-bottom: 0; + + &::after { + display: none; + } + } + } + + &__entry { + h5 { + font-weight: 500; + color: $primary-text-color; + line-height: 25px; + margin-bottom: 16px; + } + + .status { + border: 1px solid lighten($ui-base-color, 4%); + background: $ui-base-color; + border-radius: 4px; + } + } +} diff --git a/app/javascript/flavours/glitch/utils/backend_links.js b/app/javascript/flavours/glitch/utils/backend_links.js index d0ae634196..2028a1e608 100644 --- a/app/javascript/flavours/glitch/utils/backend_links.js +++ b/app/javascript/flavours/glitch/utils/backend_links.js @@ -3,7 +3,7 @@ export const profileLink = '/settings/profile'; export const signOutLink = '/auth/sign_out'; export const privacyPolicyLink = '/privacy-policy'; export const accountAdminLink = (id) => `/admin/accounts/${id}`; -export const statusAdminLink = (account_id, status_id) => `/admin/accounts/${account_id}/statuses?id=${status_id}`; +export const statusAdminLink = (account_id, status_id) => `/admin/accounts/${account_id}/statuses/${status_id}`; export const filterEditLink = (id) => `/filters/${id}/edit`; export const relationshipsLink = '/relationships'; export const securityLink = '/auth/edit'; From b36c58b99e33f134d12e2489a35475e561f612b7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Oct 2022 15:23:00 +0200 Subject: [PATCH 176/500] [Glitch] Change post editing to be enabled in web UI Port 8ebff0efcb91e8b2a0805ebd4583a274ad5f1a69 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/status_action_bar.js | 2 +- .../flavours/glitch/features/status/components/action_bar.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/components/status_action_bar.js b/app/javascript/flavours/glitch/components/status_action_bar.js index deb9cfc150..b260b5bca4 100644 --- a/app/javascript/flavours/glitch/components/status_action_bar.js +++ b/app/javascript/flavours/glitch/components/status_action_bar.js @@ -242,7 +242,7 @@ class StatusActionBar extends ImmutablePureComponent { } if (writtenByMe) { - // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); + menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.js b/app/javascript/flavours/glitch/features/status/components/action_bar.js index 9868621fe5..afcf4cc693 100644 --- a/app/javascript/flavours/glitch/features/status/components/action_bar.js +++ b/app/javascript/flavours/glitch/features/status/components/action_bar.js @@ -175,9 +175,8 @@ class ActionBar extends React.PureComponent { menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick }); menu.push(null); - // menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); + menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); - menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick }); From 5dfb7ba35cce50c38be9aa2b935919f6462bb619 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 19:17:15 +0200 Subject: [PATCH 177/500] [Glitch] Fix missing delete and redraft link in web UI Port 371d96940342b616723df36d54e6c2d1ab3ca827 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/status/components/action_bar.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.js b/app/javascript/flavours/glitch/features/status/components/action_bar.js index afcf4cc693..0e21ca5cce 100644 --- a/app/javascript/flavours/glitch/features/status/components/action_bar.js +++ b/app/javascript/flavours/glitch/features/status/components/action_bar.js @@ -177,6 +177,7 @@ class ActionBar extends React.PureComponent { menu.push(null); menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick }); menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick }); + menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick }); } else { menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick }); menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick }); From ce27c6502bc439acda8ad89a4c5386698dbf82c0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Oct 2022 02:10:54 +0200 Subject: [PATCH 178/500] [Glitch] Fix notifications about deleted reports not being also deleted Port d2eb726962187226c85ef7f2ee1886cb0767bbd1 to glitch-soc Signed-off-by: Claire --- .../glitch/features/notifications/components/admin_report.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/flavours/glitch/features/notifications/components/admin_report.js b/app/javascript/flavours/glitch/features/notifications/components/admin_report.js index 80beeb9da9..4662bd9534 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/admin_report.js +++ b/app/javascript/flavours/glitch/features/notifications/components/admin_report.js @@ -69,6 +69,10 @@ export default class AdminReport extends ImmutablePureComponent { render () { const { intl, account, notification, unread, report } = this.props; + if (!report) { + return null; + } + // Links to the display name. const displayName = account.get('display_name_html') || account.get('username'); const link = ( From 05c1dd9114c605a535a405d5a232e17a07007c45 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 26 Oct 2022 19:35:55 +0200 Subject: [PATCH 179/500] [Glitch] Add closed registrations modal Port 2277913f3f01d3bdb9a1661f019221b1cb185fbb to glitch-soc Signed-off-by: Claire --- .../closed_registrations_modal/index.js | 75 +++++++++++++++++++ .../features/interaction_modal/index.js | 33 +++++++- .../features/ui/components/modal_root.js | 2 + .../features/ui/components/sign_in_banner.js | 43 +++++++++-- .../features/ui/util/async-components.js | 4 + 5 files changed, 147 insertions(+), 10 deletions(-) create mode 100644 app/javascript/flavours/glitch/features/closed_registrations_modal/index.js diff --git a/app/javascript/flavours/glitch/features/closed_registrations_modal/index.js b/app/javascript/flavours/glitch/features/closed_registrations_modal/index.js new file mode 100644 index 0000000000..25dc4e20f8 --- /dev/null +++ b/app/javascript/flavours/glitch/features/closed_registrations_modal/index.js @@ -0,0 +1,75 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import { FormattedMessage } from 'react-intl'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { domain } from 'flavours/glitch/initial_state'; +import { fetchServer } from 'flavours/glitch/actions/server'; + +const mapStateToProps = state => ({ + closed_registrations_message: state.getIn(['server', 'server', 'registrations', 'closed_registrations_message']), +}); + +export default @connect(mapStateToProps) +class ClosedRegistrationsModal extends ImmutablePureComponent { + + componentDidMount () { + const { dispatch } = this.props; + dispatch(fetchServer()); + } + + render () { + let closedRegistrationsMessage; + + if (this.props.closed_registrations_message) { + closedRegistrationsMessage = ( +

    + ); + } else { + closedRegistrationsMessage = ( +

    + {domain} }} + /> +

    + ); + } + + return ( +
    +
    +

    +

    + +

    +
    + +
    +
    +

    + {closedRegistrationsMessage} +
    + +
    +

    +

    + +

    + +
    +
    +
    + ); + } + +}; diff --git a/app/javascript/flavours/glitch/features/interaction_modal/index.js b/app/javascript/flavours/glitch/features/interaction_modal/index.js index 5623f8a068..4cd8e51de8 100644 --- a/app/javascript/flavours/glitch/features/interaction_modal/index.js +++ b/app/javascript/flavours/glitch/features/interaction_modal/index.js @@ -5,11 +5,19 @@ import { registrationsOpen } from 'flavours/glitch/initial_state'; import { connect } from 'react-redux'; import Icon from 'flavours/glitch/components/icon'; import classNames from 'classnames'; +import { openModal, closeModal } from 'flavours/glitch/actions/modal'; const mapStateToProps = (state, { accountId }) => ({ displayNameHtml: state.getIn(['accounts', accountId, 'display_name_html']), }); +const mapDispatchToProps = (dispatch) => ({ + onSignupClick() { + dispatch(closeModal()); + dispatch(openModal('CLOSED_REGISTRATIONS')); + }, +}); + class Copypaste extends React.PureComponent { static propTypes = { @@ -66,15 +74,20 @@ class Copypaste extends React.PureComponent { } -export default @connect(mapStateToProps) +export default @connect(mapStateToProps, mapDispatchToProps) class InteractionModal extends React.PureComponent { static propTypes = { displayNameHtml: PropTypes.string, url: PropTypes.string, type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow']), + onSignupClick: PropTypes.func.isRequired, }; + handleSignupClick = () => { + this.props.onSignupClick(); + } + render () { const { url, type, displayNameHtml } = this.props; @@ -105,6 +118,22 @@ class InteractionModal extends React.PureComponent { break; } + let signupButton; + + if (registrationsOpen) { + signupButton = ( + + + + ); + } else { + signupButton = ( + + ); + } + return (
    @@ -116,7 +145,7 @@ class InteractionModal extends React.PureComponent {

    - + {signupButton}
    diff --git a/app/javascript/flavours/glitch/features/ui/components/modal_root.js b/app/javascript/flavours/glitch/features/ui/components/modal_root.js index 8767840d6f..93834f60e7 100644 --- a/app/javascript/flavours/glitch/features/ui/components/modal_root.js +++ b/app/javascript/flavours/glitch/features/ui/components/modal_root.js @@ -29,6 +29,7 @@ import { FilterModal, InteractionModal, SubscribedLanguagesModal, + ClosedRegistrationsModal, } from 'flavours/glitch/features/ui/util/async-components'; import { Helmet } from 'react-helmet'; @@ -56,6 +57,7 @@ const MODAL_COMPONENTS = { 'FILTER': FilterModal, 'SUBSCRIBED_LANGUAGES': SubscribedLanguagesModal, 'INTERACTION': InteractionModal, + 'CLOSED_REGISTRATIONS': ClosedRegistrationsModal, }; export default class ModalRoot extends React.PureComponent { diff --git a/app/javascript/flavours/glitch/features/ui/components/sign_in_banner.js b/app/javascript/flavours/glitch/features/ui/components/sign_in_banner.js index a935d7422e..e8023803f8 100644 --- a/app/javascript/flavours/glitch/features/ui/components/sign_in_banner.js +++ b/app/javascript/flavours/glitch/features/ui/components/sign_in_banner.js @@ -1,13 +1,40 @@ -import React from 'react'; +import React, { useCallback } from 'react'; import { FormattedMessage } from 'react-intl'; +import { useDispatch } from 'react-redux'; import { registrationsOpen } from 'flavours/glitch/initial_state'; +import { openModal } from 'flavours/glitch/actions/modal'; -const SignInBanner = () => ( -
    -

    - - -
    -); +const SignInBanner = () => { + const dispatch = useDispatch(); + + const openClosedRegistrationsModal = useCallback( + () => dispatch(openModal('CLOSED_REGISTRATIONS')), + [dispatch], + ); + + let signupButton; + + if (registrationsOpen) { + signupButton = ( + + + + ); + } else { + signupButton = ( + + ); + } + + return ( +
    +

    + + {signupButton} +
    + ); +}; export default SignInBanner; diff --git a/app/javascript/flavours/glitch/features/ui/util/async-components.js b/app/javascript/flavours/glitch/features/ui/util/async-components.js index e1a0723e1c..025b22e618 100644 --- a/app/javascript/flavours/glitch/features/ui/util/async-components.js +++ b/app/javascript/flavours/glitch/features/ui/util/async-components.js @@ -190,6 +190,10 @@ export function SubscribedLanguagesModal () { return import(/*webpackChunkName: "flavours/glitch/async/modals/subscribed_languages_modal" */'flavours/glitch/features/subscribed_languages_modal'); } +export function ClosedRegistrationsModal () { + return import(/*webpackChunkName: "flavours/glitch/async/modals/closed_registrations_modal" */'flavours/glitch/features/closed_registrations_modal'); +} + export function About () { return import(/*webpackChunkName: "features/glitch/async/about" */'flavours/glitch/features/about'); } From e9ccee38a7b067802e4ebafeb10401f5ef82d318 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 15:58:24 +0200 Subject: [PATCH 180/500] [Glitch] Change floating action button to be a button in header in web UI Port 1fd6460b02d2e73c94e7c6b1fa8fdc4d2ae36241 to glitch-soc Signed-off-by: Claire --- .../features/ui/components/columns_area.js | 25 +++------------- .../glitch/features/ui/components/header.js | 21 ++++++++++---- .../ui/components/navigation_panel.js | 1 - .../flavours/glitch/features/ui/index.js | 2 +- .../glitch/styles/components/accounts.scss | 9 +----- .../glitch/styles/components/columns.scss | 1 + .../styles/components/single_column.scss | 29 ------------------- 7 files changed, 23 insertions(+), 65 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/columns_area.js b/app/javascript/flavours/glitch/features/ui/components/columns_area.js index 76e9a36902..bf3e79c24a 100644 --- a/app/javascript/flavours/glitch/features/ui/components/columns_area.js +++ b/app/javascript/flavours/glitch/features/ui/components/columns_area.js @@ -1,9 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { Link } from 'react-router-dom'; import BundleContainer from '../containers/bundle_container'; import ColumnLoading from './column_loading'; import DrawerLoading from './drawer_loading'; @@ -21,7 +19,6 @@ import { ListTimeline, Directory, } from '../../ui/util/async-components'; -import Icon from 'flavours/glitch/components/icon'; import ComposePanel from './compose_panel'; import NavigationPanel from './navigation_panel'; @@ -43,22 +40,13 @@ const componentMap = { 'DIRECTORY': Directory, }; -const shouldHideFAB = path => path.match(/^\/statuses\/|^\/@[^/]+\/\d+|^\/publish|^\/explore|^\/getting-started|^\/start/); - -const messages = defineMessages({ - publish: { id: 'compose_form.publish', defaultMessage: 'Toot' }, -}); - -export default @(component => injectIntl(component, { withRef: true })) -class ColumnsArea extends ImmutablePureComponent { +export default class ColumnsArea extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object.isRequired, - identity: PropTypes.object.isRequired, }; static propTypes = { - intl: PropTypes.object.isRequired, columns: ImmutablePropTypes.list.isRequired, singleColumn: PropTypes.bool, children: PropTypes.node, @@ -144,17 +132,14 @@ class ColumnsArea extends ImmutablePureComponent { } renderError = (props) => { - return ; + return ; } render () { - const { columns, children, singleColumn, intl, navbarUnder, openSettings } = this.props; + const { columns, children, singleColumn, navbarUnder, openSettings } = this.props; const { renderComposePanel } = this.state; - const { signedIn } = this.context.identity; if (singleColumn) { - const floatingActionButton = (!signedIn || shouldHideFAB(this.context.router.history.location.pathname)) ? null : ; - return (
    @@ -163,7 +148,7 @@ class ColumnsArea extends ImmutablePureComponent {
    -
    +
    {children}
    @@ -173,8 +158,6 @@ class ColumnsArea extends ImmutablePureComponent {
    - - {floatingActionButton}
    ); } diff --git a/app/javascript/flavours/glitch/features/ui/components/header.js b/app/javascript/flavours/glitch/features/ui/components/header.js index 5fdef0af49..6c2fb40ba8 100644 --- a/app/javascript/flavours/glitch/features/ui/components/header.js +++ b/app/javascript/flavours/glitch/features/ui/components/header.js @@ -1,6 +1,6 @@ import React from 'react'; import Logo from 'flavours/glitch/components/logo'; -import { Link } from 'react-router-dom'; +import { Link, withRouter } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; import { registrationsOpen, me } from 'flavours/glitch/initial_state'; import Avatar from 'flavours/glitch/components/avatar'; @@ -16,25 +16,36 @@ const Account = connect(state => ({ )); -export default class Header extends React.PureComponent { +export default @withRouter +class Header extends React.PureComponent { static contextTypes = { identity: PropTypes.object, }; + static propTypes = { + location: PropTypes.object, + }; + render () { const { signedIn } = this.context.identity; + const { location } = this.props; let content; if (signedIn) { - content = ; + content = ( + <> + {location.pathname !== '/publish' && } + + + ); } else { content = ( - + <> - + ); } diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index 1f3e4f1fd9..d7d3b82571 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -81,7 +81,6 @@ class NavigationPanel extends React.Component { {!!preferencesLink && } - {!!relationshipsLink && } )} diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index 9ca9461429..164c475ccb 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -159,7 +159,7 @@ class SwitchingColumnsArea extends React.PureComponent { setRef = c => { if (c) { - this.node = c.getWrappedInstance(); + this.node = c; } } diff --git a/app/javascript/flavours/glitch/styles/components/accounts.scss b/app/javascript/flavours/glitch/styles/components/accounts.scss index 4e912b18b6..00519adf18 100644 --- a/app/javascript/flavours/glitch/styles/components/accounts.scss +++ b/app/javascript/flavours/glitch/styles/components/accounts.scss @@ -541,6 +541,7 @@ &__buttons { display: flex; align-items: center; + gap: 8px; padding-top: 55px; overflow: hidden; @@ -550,14 +551,6 @@ box-sizing: content-box; padding: 2px; } - - & > .icon-button { - margin-right: 8px; - } - - .button { - margin: 0 8px; - } } &__name { diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss index 5de8547e9e..c61815e078 100644 --- a/app/javascript/flavours/glitch/styles/components/columns.scss +++ b/app/javascript/flavours/glitch/styles/components/columns.scss @@ -674,6 +674,7 @@ $ui-header-height: 55px; cursor: default; &__image { + width: 70%; max-width: 350px; margin-top: -50px; } diff --git a/app/javascript/flavours/glitch/styles/components/single_column.scss b/app/javascript/flavours/glitch/styles/components/single_column.scss index 1725a5480c..1f1d7d68db 100644 --- a/app/javascript/flavours/glitch/styles/components/single_column.scss +++ b/app/javascript/flavours/glitch/styles/components/single_column.scss @@ -222,30 +222,6 @@ } } -.floating-action-button { - position: fixed; - display: flex; - justify-content: center; - align-items: center; - width: 3.9375rem; - height: 3.9375rem; - bottom: 1.3125rem; - right: 1.3125rem; - background: darken($ui-highlight-color, 2%); - color: $white; - border-radius: 50%; - font-size: 21px; - line-height: 21px; - text-decoration: none; - box-shadow: 2px 3px 9px rgba($base-shadow-color, 0.4); - - &:hover, - &:focus, - &:active { - background: $ui-highlight-color; - } -} - @media screen and (min-width: $no-gap-breakpoint) { .tabs-bar { width: 100%; @@ -260,7 +236,6 @@ margin-bottom: 10px; } - .floating-action-button, .tabs-bar__link.optional { display: none; } @@ -277,10 +252,6 @@ @media screen and (max-width: $no-gap-breakpoint - 1px) { $sidebar-width: 285px; - .with-fab .scrollable .item-list:last-child { - padding-bottom: 5.25rem; - } - .columns-area__panels__main { width: calc(100% - $sidebar-width); } From a2942fd0b89a0adaf86231d0d580f695738f700c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Oct 2022 18:47:04 +0200 Subject: [PATCH 181/500] [Glitch] Fix `nofollow` rel being removed in web UI Port 9757c917da1753a706c4cd9e191e77059620b022 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/status_content.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/components/status_content.js b/app/javascript/flavours/glitch/components/status_content.js index fe0d4c0439..61788f3500 100644 --- a/app/javascript/flavours/glitch/components/status_content.js +++ b/app/javascript/flavours/glitch/components/status_content.js @@ -124,6 +124,9 @@ export default class StatusContent extends React.PureComponent { link.setAttribute('title', link.href); link.classList.add('unhandled-link'); + link.setAttribute('target', '_blank'); + link.setAttribute('rel', 'noopener nofollow noreferrer'); + try { if (tagLinks && isLinkMisleading(link)) { // Add a tag besides the link to display its origin @@ -149,9 +152,6 @@ export default class StatusContent extends React.PureComponent { if (tagLinks && e instanceof TypeError) link.removeAttribute('href'); } } - - link.setAttribute('target', '_blank'); - link.setAttribute('rel', 'noopener noreferrer'); } } From 8be350cc82cbe2d7befad8be2768e614be52ade4 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Sun, 16 Oct 2022 15:43:59 +0900 Subject: [PATCH 182/500] [Glitch] Add featured tags selector for WebUI Port 4c7b5fb6c1787438ef130d9aecd5d0a4d54d08a9 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/featured_tags.js | 34 +++++++++ .../flavours/glitch/actions/timelines.js | 4 +- .../account/components/featured_tags.js | 71 +++++++++++++++++++ .../account_timeline/components/header.js | 3 +- .../glitch/features/account_timeline/index.js | 27 ++++--- .../flavours/glitch/features/ui/index.js | 1 + .../flavours/glitch/reducers/user_lists.js | 26 ++++++- 7 files changed, 153 insertions(+), 13 deletions(-) create mode 100644 app/javascript/flavours/glitch/actions/featured_tags.js create mode 100644 app/javascript/flavours/glitch/features/account/components/featured_tags.js diff --git a/app/javascript/flavours/glitch/actions/featured_tags.js b/app/javascript/flavours/glitch/actions/featured_tags.js new file mode 100644 index 0000000000..18bb615394 --- /dev/null +++ b/app/javascript/flavours/glitch/actions/featured_tags.js @@ -0,0 +1,34 @@ +import api from '../api'; + +export const FEATURED_TAGS_FETCH_REQUEST = 'FEATURED_TAGS_FETCH_REQUEST'; +export const FEATURED_TAGS_FETCH_SUCCESS = 'FEATURED_TAGS_FETCH_SUCCESS'; +export const FEATURED_TAGS_FETCH_FAIL = 'FEATURED_TAGS_FETCH_FAIL'; + +export const fetchFeaturedTags = (id) => (dispatch, getState) => { + if (getState().getIn(['user_lists', 'featured_tags', id, 'items'])) { + return; + } + + dispatch(fetchFeaturedTagsRequest(id)); + + api(getState).get(`/api/v1/accounts/${id}/featured_tags`) + .then(({ data }) => dispatch(fetchFeaturedTagsSuccess(id, data))) + .catch(err => dispatch(fetchFeaturedTagsFail(id, err))); +}; + +export const fetchFeaturedTagsRequest = (id) => ({ + type: FEATURED_TAGS_FETCH_REQUEST, + id, +}); + +export const fetchFeaturedTagsSuccess = (id, tags) => ({ + type: FEATURED_TAGS_FETCH_SUCCESS, + id, + tags, +}); + +export const fetchFeaturedTagsFail = (id, error) => ({ + type: FEATURED_TAGS_FETCH_FAIL, + id, + error, +}); diff --git a/app/javascript/flavours/glitch/actions/timelines.js b/app/javascript/flavours/glitch/actions/timelines.js index ef1e4dbbb9..a1c4dd43ad 100644 --- a/app/javascript/flavours/glitch/actions/timelines.js +++ b/app/javascript/flavours/glitch/actions/timelines.js @@ -156,8 +156,8 @@ export const expandHomeTimeline = ({ maxId } = {}, done = noOp) => ex export const expandPublicTimeline = ({ maxId, onlyMedia, onlyRemote, allowLocalOnly } = {}, done = noOp) => expandTimeline(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, allow_local_only: !!allowLocalOnly, max_id: maxId, only_media: !!onlyMedia }, done); export const expandCommunityTimeline = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }, done); export const expandDirectTimeline = ({ maxId } = {}, done = noOp) => expandTimeline('direct', '/api/v1/timelines/direct', { max_id: maxId }, done); -export const expandAccountTimeline = (accountId, { maxId, withReplies } = {}) => expandTimeline(`account:${accountId}${withReplies ? ':with_replies' : ''}`, `/api/v1/accounts/${accountId}/statuses`, { exclude_replies: !withReplies, max_id: maxId }); -export const expandAccountFeaturedTimeline = accountId => expandTimeline(`account:${accountId}:pinned`, `/api/v1/accounts/${accountId}/statuses`, { pinned: true }); +export const expandAccountTimeline = (accountId, { maxId, withReplies, tagged } = {}) => expandTimeline(`account:${accountId}${withReplies ? ':with_replies' : ''}${tagged ? `:${tagged}` : ''}`, `/api/v1/accounts/${accountId}/statuses`, { exclude_replies: !withReplies, tagged, max_id: maxId }); +export const expandAccountFeaturedTimeline = (accountId, { tagged } = {}) => expandTimeline(`account:${accountId}:pinned`, `/api/v1/accounts/${accountId}/statuses`, { pinned: true, tagged }); export const expandAccountMediaTimeline = (accountId, { maxId } = {}) => expandTimeline(`account:${accountId}:media`, `/api/v1/accounts/${accountId}/statuses`, { max_id: maxId, only_media: true, limit: 40 }); export const expandListTimeline = (id, { maxId } = {}, done = noOp) => expandTimeline(`list:${id}`, `/api/v1/timelines/list/${id}`, { max_id: maxId }, done); export const expandHashtagTimeline = (hashtag, { maxId, tags, local } = {}, done = noOp) => { diff --git a/app/javascript/flavours/glitch/features/account/components/featured_tags.js b/app/javascript/flavours/glitch/features/account/components/featured_tags.js new file mode 100644 index 0000000000..a273d8fc6e --- /dev/null +++ b/app/javascript/flavours/glitch/features/account/components/featured_tags.js @@ -0,0 +1,71 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { defineMessages, injectIntl } from 'react-intl'; +import classNames from 'classnames'; +import Permalink from 'flavours/glitch/components/permalink'; +import ShortNumber from 'flavours/glitch/components/short_number'; +import { List as ImmutableList } from 'immutable'; + +const messages = defineMessages({ + hashtag_all: { id: 'account.hashtag_all', defaultMessage: 'All' }, + hashtag_all_description: { id: 'account.hashtag_all_description', defaultMessage: 'All posts (deselect hashtags)' }, + hashtag_select_description: { id: 'account.hashtag_select_description', defaultMessage: 'Select hashtag #{name}' }, + statuses_counter: { id: 'account.statuses_counter', defaultMessage: '{count, plural, one {{counter} Post} other {{counter} Posts}}' }, +}); + +const mapStateToProps = (state, { account }) => ({ + featuredTags: state.getIn(['user_lists', 'featured_tags', account.get('id'), 'items'], ImmutableList()), +}); + +export default @connect(mapStateToProps) +@injectIntl +class FeaturedTags extends ImmutablePureComponent { + + static contextTypes = { + router: PropTypes.object, + }; + + static propTypes = { + account: ImmutablePropTypes.map, + featuredTags: ImmutablePropTypes.list, + tagged: PropTypes.string, + intl: PropTypes.object.isRequired, + }; + + render () { + const { account, featuredTags, tagged, intl } = this.props; + + if (!account || featuredTags.isEmpty()) { + return null; + } + + const suspended = account.get('suspended'); + + return ( +
    +
    +
    + {intl.formatMessage(messages.hashtag_all)} + {!suspended && featuredTags.map(featuredTag => { + const name = featuredTag.get('name'); + const url = featuredTag.get('url'); + const to = `/@${account.get('acct')}/tagged/${name}`; + const desc = intl.formatMessage(messages.hashtag_select_description, { name }); + const count = featuredTag.get('statuses_count'); + + return ( + + #{name} ({}) + + ); + })} +
    +
    +
    + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/header.js b/app/javascript/flavours/glitch/features/account_timeline/components/header.js index eb332e296a..3a40083102 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/header.js +++ b/app/javascript/flavours/glitch/features/account_timeline/components/header.js @@ -28,6 +28,7 @@ export default class Header extends ImmutablePureComponent { hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, + tagged: PropTypes.string, }; static contextTypes = { @@ -103,7 +104,7 @@ export default class Header extends ImmutablePureComponent { } render () { - const { account, hidden, hideTabs } = this.props; + const { account, hidden, hideTabs, tagged } = this.props; if (account === null) { return null; diff --git a/app/javascript/flavours/glitch/features/account_timeline/index.js b/app/javascript/flavours/glitch/features/account_timeline/index.js index 6d4ebd3410..b735af0ac5 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/index.js +++ b/app/javascript/flavours/glitch/features/account_timeline/index.js @@ -18,10 +18,11 @@ import TimelineHint from 'flavours/glitch/components/timeline_hint'; import LimitedAccountHint from './components/limited_account_hint'; import { getAccountHidden } from 'flavours/glitch/selectors'; import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map'; +import { fetchFeaturedTags } from '../../actions/featured_tags'; const emptyList = ImmutableList(); -const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) => { +const mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = false }) => { const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { @@ -31,7 +32,7 @@ const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) = }; } - const path = withReplies ? `${accountId}:with_replies` : accountId; + const path = withReplies ? `${accountId}:with_replies` : `${accountId}${tagged ? `:${tagged}` : ''}`; return { accountId, @@ -39,7 +40,7 @@ const mapStateToProps = (state, { params: { acct, id }, withReplies = false }) = remoteUrl: state.getIn(['accounts', accountId, 'url']), isAccount: !!state.getIn(['accounts', accountId]), statusIds: state.getIn(['timelines', `account:${path}`, 'items'], ImmutableList()), - featuredStatusIds: withReplies ? ImmutableList() : state.getIn(['timelines', `account:${accountId}:pinned`, 'items'], ImmutableList()), + featuredStatusIds: withReplies ? ImmutableList() : state.getIn(['timelines', `account:${accountId}:pinned${tagged ? `:${tagged}` : ''}`, 'items'], ImmutableList()), isLoading: state.getIn(['timelines', `account:${path}`, 'isLoading']), hasMore: state.getIn(['timelines', `account:${path}`, 'hasMore']), suspended: state.getIn(['accounts', accountId, 'suspended'], false), @@ -62,6 +63,7 @@ class AccountTimeline extends ImmutablePureComponent { params: PropTypes.shape({ acct: PropTypes.string, id: PropTypes.string, + tagged: PropTypes.string, }).isRequired, accountId: PropTypes.string, dispatch: PropTypes.func.isRequired, @@ -79,14 +81,16 @@ class AccountTimeline extends ImmutablePureComponent { }; _load () { - const { accountId, withReplies, dispatch } = this.props; + const { accountId, withReplies, params: { tagged }, dispatch } = this.props; dispatch(fetchAccount(accountId)); if (!withReplies) { - dispatch(expandAccountFeaturedTimeline(accountId)); + dispatch(expandAccountFeaturedTimeline(accountId, { tagged })); } - dispatch(expandAccountTimeline(accountId, { withReplies })); + + dispatch(fetchFeaturedTags(accountId)); + dispatch(expandAccountTimeline(accountId, { withReplies, tagged })); } componentDidMount () { @@ -100,12 +104,17 @@ class AccountTimeline extends ImmutablePureComponent { } componentDidUpdate (prevProps) { - const { params: { acct }, accountId, dispatch } = this.props; + const { params: { acct, tagged }, accountId, withReplies, dispatch } = this.props; if (prevProps.accountId !== accountId && accountId) { this._load(); } else if (prevProps.params.acct !== acct) { dispatch(lookupAccount(acct)); + } else if (prevProps.params.tagged !== tagged) { + if (!withReplies) { + dispatch(expandAccountFeaturedTimeline(accountId, { tagged })); + } + dispatch(expandAccountTimeline(accountId, { withReplies, tagged })); } } @@ -128,7 +137,7 @@ class AccountTimeline extends ImmutablePureComponent { } handleLoadMore = maxId => { - this.props.dispatch(expandAccountTimeline(this.props.accountId, { maxId, withReplies: this.props.withReplies })); + this.props.dispatch(expandAccountTimeline(this.props.accountId, { maxId, withReplies: this.props.withReplies, tagged: this.props.params.tagged })); } setRef = c => { @@ -174,7 +183,7 @@ class AccountTimeline extends ImmutablePureComponent { } + prepend={} alwaysPrepend append={remoteMessage} scrollKey='account_timeline' diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index 164c475ccb..3d385eee2b 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -211,6 +211,7 @@ class SwitchingColumnsArea extends React.PureComponent { + diff --git a/app/javascript/flavours/glitch/reducers/user_lists.js b/app/javascript/flavours/glitch/reducers/user_lists.js index bfddbd2466..0a75e85c1a 100644 --- a/app/javascript/flavours/glitch/reducers/user_lists.js +++ b/app/javascript/flavours/glitch/reducers/user_lists.js @@ -51,7 +51,12 @@ import { DIRECTORY_EXPAND_SUCCESS, DIRECTORY_EXPAND_FAIL, } from 'flavours/glitch/actions/directory'; -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; +import { + FEATURED_TAGS_FETCH_REQUEST, + FEATURED_TAGS_FETCH_SUCCESS, + FEATURED_TAGS_FETCH_FAIL, +} from 'flavours/glitch/actions/featured_tags'; +import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable'; const initialListState = ImmutableMap({ next: null, @@ -67,6 +72,7 @@ const initialState = ImmutableMap({ follow_requests: initialListState, blocks: initialListState, mutes: initialListState, + featured_tags: initialListState, }); const normalizeList = (state, path, accounts, next) => { @@ -89,6 +95,18 @@ const normalizeFollowRequest = (state, notification) => { }); }; +const normalizeFeaturedTag = (featuredTags, accountId) => { + const normalizeFeaturedTag = { ...featuredTags, accountId: accountId }; + return fromJS(normalizeFeaturedTag); +}; + +const normalizeFeaturedTags = (state, path, featuredTags, accountId) => { + return state.setIn(path, ImmutableMap({ + items: ImmutableList(featuredTags.map(featuredTag => normalizeFeaturedTag(featuredTag, accountId)).sort((a, b) => b.get('statuses_count') - a.get('statuses_count'))), + isLoading: false, + })); +}; + export default function userLists(state = initialState, action) { switch(action.type) { case FOLLOWERS_FETCH_SUCCESS: @@ -160,6 +178,12 @@ export default function userLists(state = initialState, action) { case DIRECTORY_FETCH_FAIL: case DIRECTORY_EXPAND_FAIL: return state.setIn(['directory', 'isLoading'], false); + case FEATURED_TAGS_FETCH_SUCCESS: + return normalizeFeaturedTags(state, ['featured_tags', action.id], action.tags, action.id); + case FEATURED_TAGS_FETCH_REQUEST: + return state.setIn(['featured_tags', action.id, 'isLoading'], true); + case FEATURED_TAGS_FETCH_FAIL: + return state.setIn(['featured_tags', action.id, 'isLoading'], false); default: return state; } From 2cea6e55646bf47feb96c43d5461fc36f7a828f4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 30 Sep 2022 01:14:37 +0200 Subject: [PATCH 183/500] [Glitch] Remove volume number from hashtags in web UI Port c55219efa811b3c6347774bec1b174d325e5f300 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/components/hashtag.js | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/app/javascript/flavours/glitch/components/hashtag.js b/app/javascript/flavours/glitch/components/hashtag.js index 2bb7f02f76..e54cba5c40 100644 --- a/app/javascript/flavours/glitch/components/hashtag.js +++ b/app/javascript/flavours/glitch/components/hashtag.js @@ -1,7 +1,7 @@ // @ts-check import React from 'react'; import { Sparklines, SparklinesCurve } from 'react-sparklines'; -import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; +import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import Permalink from './permalink'; @@ -9,10 +9,6 @@ import ShortNumber from 'flavours/glitch/components/short_number'; import Skeleton from 'flavours/glitch/components/skeleton'; import classNames from 'classnames'; -const messages = defineMessages({ - totalVolume: { id: 'hashtag.total_volume', defaultMessage: 'Total volume in the last {days, plural, one {day} other {{days} days}}' }, -}); - class SilentErrorBoundary extends React.Component { static propTypes = { @@ -69,7 +65,7 @@ ImmutableHashtag.propTypes = { hashtag: ImmutablePropTypes.map.isRequired, }; -const Hashtag = injectIntl(({ name, href, to, people, uses, history, className, intl }) => ( +const Hashtag = ({ name, href, to, people, history, className }) => (
    @@ -79,11 +75,6 @@ const Hashtag = injectIntl(({ name, href, to, people, uses, history, className, {typeof people !== 'undefined' ? : }
    - - {typeof uses !== 'undefined' ? : } - * - -
    0)}> @@ -92,7 +83,7 @@ const Hashtag = injectIntl(({ name, href, to, people, uses, history, className,
    -)); +); Hashtag.propTypes = { name: PropTypes.string, From 7bb1b917b27760609b08c8c690c87a69ea321ce3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 19 Oct 2022 11:30:59 +0200 Subject: [PATCH 184/500] [Glitch] Change featured hashtags to be displayed in navigation panel Port aefa9253d61def572396c18a8d2ac3cc706ffa2e to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/components/hashtag.js | 36 ++++++++--- .../glitch/components/navigation_portal.js | 30 ++++++++++ .../account/components/featured_tags.js | 60 +++++++------------ .../containers/featured_tags_container.js | 15 +++++ .../glitch/features/account/navigation.js | 51 ++++++++++++++++ .../account_timeline/components/header.js | 3 +- .../ui/components/navigation_panel.js | 12 +--- .../glitch/styles/components/search.scss | 6 -- 8 files changed, 148 insertions(+), 65 deletions(-) create mode 100644 app/javascript/flavours/glitch/components/navigation_portal.js create mode 100644 app/javascript/flavours/glitch/features/account/containers/featured_tags_container.js create mode 100644 app/javascript/flavours/glitch/features/account/navigation.js diff --git a/app/javascript/flavours/glitch/components/hashtag.js b/app/javascript/flavours/glitch/components/hashtag.js index e54cba5c40..0855914390 100644 --- a/app/javascript/flavours/glitch/components/hashtag.js +++ b/app/javascript/flavours/glitch/components/hashtag.js @@ -65,23 +65,35 @@ ImmutableHashtag.propTypes = { hashtag: ImmutablePropTypes.map.isRequired, }; -const Hashtag = ({ name, href, to, people, history, className }) => ( +const Hashtag = ({ name, href, to, people, uses, history, className, description, withGraph }) => (
    {name ? #{name} : } - {typeof people !== 'undefined' ? : } + {description ? ( + {description} + ) : ( + typeof people !== 'undefined' ? : + )}
    -
    - - 0)}> - - - -
    + {typeof uses !== 'undefined' && ( +
    + +
    + )} + + {withGraph && ( +
    + + 0)}> + + + +
    + )}
    ); @@ -90,9 +102,15 @@ Hashtag.propTypes = { href: PropTypes.string, to: PropTypes.string, people: PropTypes.number, + description: PropTypes.node, uses: PropTypes.number, history: PropTypes.arrayOf(PropTypes.number), className: PropTypes.string, + withGraph: PropTypes.bool, +}; + +Hashtag.defaultProps = { + withGraph: true, }; export default Hashtag; diff --git a/app/javascript/flavours/glitch/components/navigation_portal.js b/app/javascript/flavours/glitch/components/navigation_portal.js new file mode 100644 index 0000000000..16a8ca3f50 --- /dev/null +++ b/app/javascript/flavours/glitch/components/navigation_portal.js @@ -0,0 +1,30 @@ +import React from 'react'; +import { Switch, Route, withRouter } from 'react-router-dom'; +import { showTrends } from 'flavours/glitch/initial_state'; +import Trends from 'flavours/glitch/features/getting_started/containers/trends_container'; +import AccountNavigation from 'flavours/glitch/features/account/navigation'; + +const DefaultNavigation = () => ( + <> + {showTrends && ( + <> +
    + + + )} + +); + +export default @withRouter +class NavigationPortal extends React.PureComponent { + + render () { + return ( + + + + + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/account/components/featured_tags.js b/app/javascript/flavours/glitch/features/account/components/featured_tags.js index a273d8fc6e..7466180c94 100644 --- a/app/javascript/flavours/glitch/features/account/components/featured_tags.js +++ b/app/javascript/flavours/glitch/features/account/components/featured_tags.js @@ -1,27 +1,16 @@ import React from 'react'; -import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { defineMessages, injectIntl } from 'react-intl'; -import classNames from 'classnames'; -import Permalink from 'flavours/glitch/components/permalink'; -import ShortNumber from 'flavours/glitch/components/short_number'; -import { List as ImmutableList } from 'immutable'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import Hashtag from 'flavours/glitch/components/hashtag'; const messages = defineMessages({ - hashtag_all: { id: 'account.hashtag_all', defaultMessage: 'All' }, - hashtag_all_description: { id: 'account.hashtag_all_description', defaultMessage: 'All posts (deselect hashtags)' }, - hashtag_select_description: { id: 'account.hashtag_select_description', defaultMessage: 'Select hashtag #{name}' }, - statuses_counter: { id: 'account.statuses_counter', defaultMessage: '{count, plural, one {{counter} Post} other {{counter} Posts}}' }, + lastStatusAt: { id: 'account.featured_tags.last_status_at', defaultMessage: 'Last post on {date}' }, + empty: { id: 'account.featured_tags.last_status_never', defaultMessage: 'No posts' }, }); -const mapStateToProps = (state, { account }) => ({ - featuredTags: state.getIn(['user_lists', 'featured_tags', account.get('id'), 'items'], ImmutableList()), -}); - -export default @connect(mapStateToProps) -@injectIntl +export default @injectIntl class FeaturedTags extends ImmutablePureComponent { static contextTypes = { @@ -36,34 +25,27 @@ class FeaturedTags extends ImmutablePureComponent { }; render () { - const { account, featuredTags, tagged, intl } = this.props; + const { account, featuredTags, intl } = this.props; - if (!account || featuredTags.isEmpty()) { + if (!account || account.get('suspended') || featuredTags.isEmpty()) { return null; } - const suspended = account.get('suspended'); - return ( -
    -
    -
    - {intl.formatMessage(messages.hashtag_all)} - {!suspended && featuredTags.map(featuredTag => { - const name = featuredTag.get('name'); - const url = featuredTag.get('url'); - const to = `/@${account.get('acct')}/tagged/${name}`; - const desc = intl.formatMessage(messages.hashtag_select_description, { name }); - const count = featuredTag.get('statuses_count'); - - return ( - - #{name} ({}) - - ); - })} -
    -
    +
    +

    }} />

    + + {featuredTags.map(featuredTag => ( + 0) ? intl.formatMessage(messages.lastStatusAt, { date: intl.formatDate(featuredTag.get('last_status_at'), { month: 'short', day: '2-digit' }) }) : intl.formatMessage(messages.empty)} + /> + ))}
    ); } diff --git a/app/javascript/flavours/glitch/features/account/containers/featured_tags_container.js b/app/javascript/flavours/glitch/features/account/containers/featured_tags_container.js new file mode 100644 index 0000000000..6f0b069419 --- /dev/null +++ b/app/javascript/flavours/glitch/features/account/containers/featured_tags_container.js @@ -0,0 +1,15 @@ +import { connect } from 'react-redux'; +import FeaturedTags from '../components/featured_tags'; +import { makeGetAccount } from 'flavours/glitch/selectors'; +import { List as ImmutableList } from 'immutable'; + +const mapStateToProps = () => { + const getAccount = makeGetAccount(); + + return (state, { accountId }) => ({ + account: getAccount(state, accountId), + featuredTags: state.getIn(['user_lists', 'featured_tags', accountId, 'items'], ImmutableList()), + }); +}; + +export default connect(mapStateToProps)(FeaturedTags); diff --git a/app/javascript/flavours/glitch/features/account/navigation.js b/app/javascript/flavours/glitch/features/account/navigation.js new file mode 100644 index 0000000000..ebd37ec149 --- /dev/null +++ b/app/javascript/flavours/glitch/features/account/navigation.js @@ -0,0 +1,51 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import FeaturedTags from 'flavours/glitch/features/account/containers/featured_tags_container'; + +const mapStateToProps = (state, { match: { params: { acct } } }) => { + const accountId = state.getIn(['accounts_map', acct]); + + if (!accountId) { + return { + isLoading: true, + }; + } + + return { + accountId, + isLoading: false, + }; +}; + +export default @connect(mapStateToProps) +class AccountNavigation extends React.PureComponent { + + static propTypes = { + match: PropTypes.shape({ + params: PropTypes.shape({ + acct: PropTypes.string, + tagged: PropTypes.string, + }).isRequired, + }).isRequired, + + accountId: PropTypes.string, + isLoading: PropTypes.bool, + }; + + render () { + const { accountId, isLoading, match: { params: { tagged } } } = this.props; + + if (isLoading) { + return null; + } + + return ( + <> +
    + + + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/header.js b/app/javascript/flavours/glitch/features/account_timeline/components/header.js index 3a40083102..eb332e296a 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/header.js +++ b/app/javascript/flavours/glitch/features/account_timeline/components/header.js @@ -28,7 +28,6 @@ export default class Header extends ImmutablePureComponent { hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, - tagged: PropTypes.string, }; static contextTypes = { @@ -104,7 +103,7 @@ export default class Header extends ImmutablePureComponent { } render () { - const { account, hidden, hideTabs, tagged } = this.props; + const { account, hidden, hideTabs } = this.props; if (account === null) { return null; diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index d7d3b82571..7c8da46bd1 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -2,14 +2,14 @@ import React from 'react'; import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import TrendsContainer from 'flavours/glitch/features/getting_started/containers/trends_container'; -import { showTrends, timelinePreview } from 'flavours/glitch/initial_state'; +import { timelinePreview } from 'flavours/glitch/initial_state'; import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; import SignInBanner from './sign_in_banner'; import { preferencesLink, relationshipsLink } from 'flavours/glitch/utils/backend_links'; +import NavigationPortal from 'flavours/glitch/components/navigation_portal'; const messages = defineMessages({ home: { id: 'tabs_bar.home', defaultMessage: 'Home' }, @@ -89,13 +89,7 @@ class NavigationPanel extends React.Component {
    - {showTrends && ( - -
    - - - )} - +
    ); } diff --git a/app/javascript/flavours/glitch/styles/components/search.scss b/app/javascript/flavours/glitch/styles/components/search.scss index bb861a88e6..ee6b1c0a79 100644 --- a/app/javascript/flavours/glitch/styles/components/search.scss +++ b/app/javascript/flavours/glitch/styles/components/search.scss @@ -173,12 +173,6 @@ margin-left: 5px; color: $secondary-text-color; text-decoration: none; - - &__asterisk { - color: $darker-text-color; - font-size: 18px; - vertical-align: super; - } } &__sparkline { From c9d3c7d63a3218e3e113435213b7f9e63feb68a1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Oct 2022 10:05:50 +0200 Subject: [PATCH 185/500] [Glitch] Fix too many featured tags causing navigation panel scroll in web UI Port 23d367f544485eaeed888c707012a8282bbb5806 to glitch-soc Signed-off-by: Claire --- .../glitch/features/account/components/featured_tags.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/account/components/featured_tags.js b/app/javascript/flavours/glitch/features/account/components/featured_tags.js index 7466180c94..d646b08b29 100644 --- a/app/javascript/flavours/glitch/features/account/components/featured_tags.js +++ b/app/javascript/flavours/glitch/features/account/components/featured_tags.js @@ -35,7 +35,7 @@ class FeaturedTags extends ImmutablePureComponent {

    }} />

    - {featuredTags.map(featuredTag => ( + {featuredTags.take(3).map(featuredTag => ( Date: Sun, 23 Oct 2022 23:38:08 +0200 Subject: [PATCH 186/500] [Glitch] Fix media, following and followers tabs in web UI Port 73de39e6323460792ef8982555e5cfdaefb5a29b to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/features/account/navigation.js | 3 ++- .../flavours/glitch/features/account_gallery/index.js | 3 ++- app/javascript/flavours/glitch/features/followers/index.js | 3 ++- app/javascript/flavours/glitch/features/following/index.js | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/javascript/flavours/glitch/features/account/navigation.js b/app/javascript/flavours/glitch/features/account/navigation.js index ebd37ec149..edae38ce5f 100644 --- a/app/javascript/flavours/glitch/features/account/navigation.js +++ b/app/javascript/flavours/glitch/features/account/navigation.js @@ -2,9 +2,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import FeaturedTags from 'flavours/glitch/features/account/containers/featured_tags_container'; +import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map'; const mapStateToProps = (state, { match: { params: { acct } } }) => { - const accountId = state.getIn(['accounts_map', acct]); + const accountId = state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/flavours/glitch/features/account_gallery/index.js b/app/javascript/flavours/glitch/features/account_gallery/index.js index 8df1bf4ca5..638224bc02 100644 --- a/app/javascript/flavours/glitch/features/account_gallery/index.js +++ b/app/javascript/flavours/glitch/features/account_gallery/index.js @@ -15,9 +15,10 @@ import ScrollContainer from 'flavours/glitch/containers/scroll_container'; import LoadMore from 'flavours/glitch/components/load_more'; import MissingIndicator from 'flavours/glitch/components/missing_indicator'; import { openModal } from 'flavours/glitch/actions/modal'; +import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/flavours/glitch/features/followers/index.js b/app/javascript/flavours/glitch/features/followers/index.js index 27a63b3fdd..7122c19050 100644 --- a/app/javascript/flavours/glitch/features/followers/index.js +++ b/app/javascript/flavours/glitch/features/followers/index.js @@ -21,9 +21,10 @@ import ScrollableList from 'flavours/glitch/components/scrollable_list'; import TimelineHint from 'flavours/glitch/components/timeline_hint'; import LimitedAccountHint from '../account_timeline/components/limited_account_hint'; import { getAccountHidden } from 'flavours/glitch/selectors'; +import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { diff --git a/app/javascript/flavours/glitch/features/following/index.js b/app/javascript/flavours/glitch/features/following/index.js index aa187bf957..4ad6701050 100644 --- a/app/javascript/flavours/glitch/features/following/index.js +++ b/app/javascript/flavours/glitch/features/following/index.js @@ -21,9 +21,10 @@ import ScrollableList from 'flavours/glitch/components/scrollable_list'; import TimelineHint from 'flavours/glitch/components/timeline_hint'; import LimitedAccountHint from '../account_timeline/components/limited_account_hint'; import { getAccountHidden } from 'flavours/glitch/selectors'; +import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', acct]); + const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); if (!accountId) { return { From 80b53623e1bb5a3e0c220d4f2f30d62ddf3e37b1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 22 Oct 2022 11:44:41 +0200 Subject: [PATCH 187/500] [Glitch] Change settings area to be separated into categories in admin UI Port 7c152acb2cc545a87610de349a94e14f45fbed5d to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/admin.scss | 82 +++++++++++++++---- .../glitch/styles/components/index.scss | 5 ++ .../flavours/glitch/styles/forms.scss | 16 +++- 3 files changed, 85 insertions(+), 18 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index cb5a2d7ce4..0f0a785ea3 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -188,24 +188,71 @@ $content-width: 840px; padding-top: 30px; } - &-heading { - display: flex; - + &__heading { padding-bottom: 36px; border-bottom: 1px solid lighten($ui-base-color, 8%); - margin: -15px -15px 40px 0; + margin-bottom: 40px; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; + &__row { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + margin: -15px -15px 0 0; + + & > * { + margin-top: 15px; + margin-right: 15px; + } + } - & > * { - margin-top: 15px; - margin-right: 15px; + &__tabs { + margin-top: 30px; + margin-bottom: -31px; + + & > div { + display: flex; + gap: 10px; + } + + a { + font-size: 14px; + display: inline-flex; + align-items: center; + padding: 7px 15px; + border-radius: 4px; + color: $darker-text-color; + text-decoration: none; + position: relative; + font-weight: 500; + gap: 5px; + white-space: nowrap; + + &.selected { + font-weight: 700; + color: $primary-text-color; + + &::after { + content: ""; + display: block; + width: 100%; + border-bottom: 1px solid $ui-highlight-color; + position: absolute; + bottom: -5px; + left: 0; + } + } + + &:hover, + &:focus, + &:active { + background: lighten($ui-base-color, 4%); + } + } } - &-actions { + &__actions { display: inline-flex; & > :not(:first-child) { @@ -231,11 +278,7 @@ $content-width: 840px; color: $secondary-text-color; font-size: 24px; line-height: 36px; - font-weight: 400; - - @media screen and (max-width: $no-columns-breakpoint) { - font-weight: 700; - } + font-weight: 700; } h3 { @@ -440,6 +483,11 @@ body, } } + & > div { + display: flex; + gap: 5px; + } + strong { font-weight: 500; text-transform: uppercase; @@ -1162,7 +1210,7 @@ a.name-tag, path:first-child { fill: rgba($highlight-text-color, 0.25) !important; - fill-opacity: 1 !important; + fill-opacity: 100% !important; } path:last-child { diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index 8877626b8f..d25ca579b7 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -20,6 +20,11 @@ background: transparent; padding: 0; cursor: pointer; + text-decoration: none; + + &--destructive { + color: $error-value-color; + } &:hover, &:active { diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index 57075a75fb..84a87eb86a 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -244,7 +244,7 @@ code { & > label { font-family: inherit; - font-size: 16px; + font-size: 14px; color: $primary-text-color; display: block; font-weight: 500; @@ -281,6 +281,20 @@ code { .input:last-child { margin-bottom: 0; } + + &__thumbnail { + display: block; + margin: 0; + margin-bottom: 10px; + max-width: 100%; + height: auto; + border-radius: 4px; + background: url("images/void.png"); + + &:last-child { + margin-bottom: 0; + } + } } .fields-row { From 89fdfb8fe6e03a578c824868502178dbec61c7f9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 23 Oct 2022 23:37:58 +0200 Subject: [PATCH 188/500] [Glitch] Fix redirecting to `/publish` when compose form is visible in web UI Port 5452af2188ba65c9f934280b65a2040c8cc9e718 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/compose/index.js | 24 ++++++------------- .../features/ui/components/compose_panel.js | 18 +++++++++++++- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/app/javascript/flavours/glitch/features/compose/index.js b/app/javascript/flavours/glitch/features/compose/index.js index 63cff836c4..8ca3786728 100644 --- a/app/javascript/flavours/glitch/features/compose/index.js +++ b/app/javascript/flavours/glitch/features/compose/index.js @@ -23,7 +23,7 @@ const messages = defineMessages({ const mapStateToProps = (state, ownProps) => ({ elefriend: state.getIn(['compose', 'elefriend']), - showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : ownProps.isSearchPage, + showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : false, }); const mapDispatchToProps = (dispatch, { intl }) => ({ @@ -46,7 +46,6 @@ class Compose extends React.PureComponent { static propTypes = { multiColumn: PropTypes.bool, showSearch: PropTypes.bool, - isSearchPage: PropTypes.bool, elefriend: PropTypes.number, onClickElefriend: PropTypes.func, onMount: PropTypes.func, @@ -55,19 +54,11 @@ class Compose extends React.PureComponent { }; componentDidMount () { - const { isSearchPage } = this.props; - - if (!isSearchPage) { - this.props.onMount(); - } + this.props.onMount(); } componentWillUnmount () { - const { isSearchPage } = this.props; - - if (!isSearchPage) { - this.props.onUnmount(); - } + this.props.onUnmount(); } render () { @@ -76,7 +67,6 @@ class Compose extends React.PureComponent { intl, multiColumn, onClickElefriend, - isSearchPage, showSearch, } = this.props; const computedClass = classNames('drawer', `mbstobon-${elefriend}`); @@ -86,10 +76,10 @@ class Compose extends React.PureComponent {
    - {(multiColumn || isSearchPage) && } + {multiColumn && }
    - {!isSearchPage &&
    +
    @@ -97,9 +87,9 @@ class Compose extends React.PureComponent {
    {mascot ? :
    -
    } +
    - + {({ x }) => (
    diff --git a/app/javascript/flavours/glitch/features/ui/components/compose_panel.js b/app/javascript/flavours/glitch/features/ui/components/compose_panel.js index 894a00747c..dde252a61e 100644 --- a/app/javascript/flavours/glitch/features/ui/components/compose_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/compose_panel.js @@ -1,18 +1,34 @@ import React from 'react'; +import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import SearchContainer from 'flavours/glitch/features/compose/containers/search_container'; import ComposeFormContainer from 'flavours/glitch/features/compose/containers/compose_form_container'; import NavigationContainer from 'flavours/glitch/features/compose/containers/navigation_container'; import LinkFooter from './link_footer'; import ServerBanner from 'flavours/glitch/components/server_banner'; +import { mountCompose, unmountCompose } from 'flavours/glitch/actions/compose'; -export default +export default @connect() class ComposePanel extends React.PureComponent { static contextTypes = { identity: PropTypes.object.isRequired, }; + static propTypes = { + dispatch: PropTypes.func.isRequired, + }; + + componentDidMount () { + const { dispatch } = this.props; + dispatch(mountCompose()); + } + + componentWillUnmount () { + const { dispatch } = this.props; + dispatch(unmountCompose()); + } + render() { const { signedIn } = this.context.identity; From f405ad69b37f4ca9fe3df7503272352a22808972 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 25 Oct 2022 19:03:16 +0200 Subject: [PATCH 189/500] [Glitch] Remove navigation links to /explore when trends are disabled Port 267978d4fe0eaee92f64d505df2a4a07d22f582c to glithc-soc Signed-off-by: Claire --- .../glitch/features/ui/components/navigation_panel.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index 7c8da46bd1..c3f14ac72d 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import { timelinePreview } from 'flavours/glitch/initial_state'; +import { timelinePreview, showTrends } from 'flavours/glitch/initial_state'; import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; @@ -24,6 +24,7 @@ const messages = defineMessages({ preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, followsAndFollowers: { id: 'navigation_bar.follows_and_followers', defaultMessage: 'Follows and followers' }, about: { id: 'navigation_bar.about', defaultMessage: 'About' }, + search: { id: 'navigation_bar.search', defaultMessage: 'Search' }, app_settings: { id: 'navigation_bar.app_settings', defaultMessage: 'App settings' }, }); @@ -53,7 +54,12 @@ class NavigationPanel extends React.Component { )} - + {showTrends ? ( + + ) : ( + + )} + {(signedIn || timelinePreview) && ( <> From 592147b9021c5ee5aebed4e3355bafd82c393533 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 19:30:51 +0200 Subject: [PATCH 190/500] Remove local settings items that make no sense anymore --- .../features/local_settings/page/index.js | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/app/javascript/flavours/glitch/features/local_settings/page/index.js b/app/javascript/flavours/glitch/features/local_settings/page/index.js index e154fe1c81..d01eec811e 100644 --- a/app/javascript/flavours/glitch/features/local_settings/page/index.js +++ b/app/javascript/flavours/glitch/features/local_settings/page/index.js @@ -181,36 +181,6 @@ class LocalSettingsPage extends React.PureComponent { - - - - - - - - - - ) - }} - /> - -
    ), From 5fa340931e2bd39a4bcccc9a97ad58e13a2d56ab Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 19:34:22 +0200 Subject: [PATCH 191/500] Fix closed registrations message not appearing in web UI (#19508) Regression from #19486 --- .../mastodon/features/closed_registrations_modal/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/closed_registrations_modal/index.js b/app/javascript/mastodon/features/closed_registrations_modal/index.js index 062045b837..275bd50aad 100644 --- a/app/javascript/mastodon/features/closed_registrations_modal/index.js +++ b/app/javascript/mastodon/features/closed_registrations_modal/index.js @@ -6,7 +6,7 @@ import { domain } from 'mastodon/initial_state'; import { fetchServer } from 'mastodon/actions/server'; const mapStateToProps = state => ({ - closed_registrations_message: state.getIn(['server', 'server', 'registrations', 'closed_registrations_message']), + message: state.getIn(['server', 'server', 'registrations', 'message']), }); export default @connect(mapStateToProps) @@ -20,11 +20,11 @@ class ClosedRegistrationsModal extends ImmutablePureComponent { render () { let closedRegistrationsMessage; - if (this.props.closed_registrations_message) { + if (this.props.message) { closedRegistrationsMessage = (

    ); } else { From 047a2f1f1bb72a0cd638def175d29c12b4737a4a Mon Sep 17 00:00:00 2001 From: Robert Laurenz <8169746+laurenzcodes@users.noreply.github.com> Date: Fri, 28 Oct 2022 12:46:41 +0200 Subject: [PATCH 192/500] [Glitch] fix(component): adjust style of counter button to fix overflow issue Port 10922294ffd2c83e155f020896318d16f3764e8d to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/components/index.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index d25ca579b7..28f93018da 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -257,11 +257,12 @@ display: inline-flex; align-items: center; width: auto !important; + padding: 0 4px 0 2px; } &__counter { display: inline-block; - width: 14px; + width: auto; margin-left: 4px; font-size: 12px; font-weight: 500; From 2cb3dd93649670019871183f5d4d6bb77e33f5ba Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 12:56:32 +0200 Subject: [PATCH 193/500] [Glitch] Change admin announcement edition interface to use datetime-local Port d9d722d74b2cb9bf30fa4cc98af6ddbeca003ebc to glitch-soc Co-authored-by: Eugen Rochko Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/forms.scss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index 84a87eb86a..ef0ca1fcde 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -395,6 +395,7 @@ code { input[type=email], input[type=password], input[type=url], + input[type=datetime-local], textarea { box-sizing: border-box; font-size: 16px; @@ -435,7 +436,8 @@ code { input[type=text], input[type=number], input[type=email], - input[type=password] { + input[type=password], + input[type=datetime-local] { &:focus:invalid:not(:placeholder-shown), &:required:invalid:not(:placeholder-shown) { border-color: lighten($error-red, 12%); @@ -451,6 +453,7 @@ code { input[type=number], input[type=email], input[type=password], + input[type=datetime-local], textarea, select { border-color: lighten($error-red, 12%); From 9f6c175550cf419334ca65bd71b7a456c13cb5a4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 12:56:51 +0200 Subject: [PATCH 194/500] [Glitch] Fix number of uses being shown again on trending hashtags in web UI Port 923f06a07c851b25b989412f341f87f8b8fff42f to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/hashtag.js | 1 - app/javascript/flavours/glitch/styles/components/search.scss | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/components/hashtag.js b/app/javascript/flavours/glitch/components/hashtag.js index 0855914390..422b9a8fa1 100644 --- a/app/javascript/flavours/glitch/components/hashtag.js +++ b/app/javascript/flavours/glitch/components/hashtag.js @@ -56,7 +56,6 @@ export const ImmutableHashtag = ({ hashtag }) => ( href={hashtag.get('url')} to={`/tags/${hashtag.get('name')}`} people={hashtag.getIn(['history', 0, 'accounts']) * 1 + hashtag.getIn(['history', 1, 'accounts']) * 1} - uses={hashtag.getIn(['history', 0, 'uses']) * 1 + hashtag.getIn(['history', 1, 'uses']) * 1} history={hashtag.get('history').reverse().map((day) => day.get('uses')).toArray()} /> ); diff --git a/app/javascript/flavours/glitch/styles/components/search.scss b/app/javascript/flavours/glitch/styles/components/search.scss index ee6b1c0a79..70af0f651b 100644 --- a/app/javascript/flavours/glitch/styles/components/search.scss +++ b/app/javascript/flavours/glitch/styles/components/search.scss @@ -128,6 +128,7 @@ align-items: center; padding: 15px; border-bottom: 1px solid lighten($ui-base-color, 8%); + gap: 15px; &:last-child { border-bottom: 0; @@ -169,8 +170,6 @@ font-size: 24px; font-weight: 500; text-align: right; - padding-right: 15px; - margin-left: 5px; color: $secondary-text-color; text-decoration: none; } From 8814a1b949c18c8908ab29e89799511e13ca7871 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 19:34:22 +0200 Subject: [PATCH 195/500] [Glitch] Fix closed registrations message not appearing in web UI Port 5fa340931e2bd39a4bcccc9a97ad58e13a2d56ab to glitch-soc Signed-off-by: Claire --- .../glitch/features/closed_registrations_modal/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/features/closed_registrations_modal/index.js b/app/javascript/flavours/glitch/features/closed_registrations_modal/index.js index 25dc4e20f8..cb91636cb8 100644 --- a/app/javascript/flavours/glitch/features/closed_registrations_modal/index.js +++ b/app/javascript/flavours/glitch/features/closed_registrations_modal/index.js @@ -6,7 +6,7 @@ import { domain } from 'flavours/glitch/initial_state'; import { fetchServer } from 'flavours/glitch/actions/server'; const mapStateToProps = state => ({ - closed_registrations_message: state.getIn(['server', 'server', 'registrations', 'closed_registrations_message']), + message: state.getIn(['server', 'server', 'registrations', 'message']), }); export default @connect(mapStateToProps) @@ -20,11 +20,11 @@ class ClosedRegistrationsModal extends ImmutablePureComponent { render () { let closedRegistrationsMessage; - if (this.props.closed_registrations_message) { + if (this.props.message) { closedRegistrationsMessage = (

    ); } else { From bbdf61c9e46dda1c38388f804ebb3f437d705816 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 20:12:04 +0200 Subject: [PATCH 196/500] Revert Home controller test to upstream --- spec/controllers/home_controller_spec.rb | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb index 914ca6307a..d845ae01d7 100644 --- a/spec/controllers/home_controller_spec.rb +++ b/spec/controllers/home_controller_spec.rb @@ -7,16 +7,9 @@ RSpec.describe HomeController, type: :controller do subject { get :index } context 'when not signed in' do - context 'when requested path is tag timeline' do - it 'returns http success' do - @request.path = '/web/timelines/tag/name' - is_expected.to have_http_status(:success) - end - end - - it 'redirects to about page' do + it 'returns http success' do @request.path = '/' - is_expected.to redirect_to(about_path) + is_expected.to have_http_status(:success) end end From 26ff48ee48a5c03a2a4b0bd03fd322529e6bd960 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 28 Oct 2022 20:14:25 +0200 Subject: [PATCH 197/500] Fix domain block export not exporting blocks with only media rejection --- app/controllers/admin/export_domain_blocks_controller.rb | 2 +- app/models/domain_block.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/export_domain_blocks_controller.rb b/app/controllers/admin/export_domain_blocks_controller.rb index db8863551c..545bd94edd 100644 --- a/app/controllers/admin/export_domain_blocks_controller.rb +++ b/app/controllers/admin/export_domain_blocks_controller.rb @@ -62,7 +62,7 @@ module Admin def export_data CSV.generate(headers: export_headers, write_headers: true) do |content| - DomainBlock.with_user_facing_limitations.each do |instance| + DomainBlock.with_limitations.each do |instance| content << [instance.domain, instance.severity, instance.reject_media, instance.reject_reports, instance.public_comment, instance.obfuscate] end end diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index ad1dc2a38e..8e298ac9d7 100644 --- a/app/models/domain_block.rb +++ b/app/models/domain_block.rb @@ -29,6 +29,7 @@ class DomainBlock < ApplicationRecord scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) } scope :with_user_facing_limitations, -> { where(severity: [:silence, :suspend]) } + scope :with_limitations, -> { where(severity: [:silence, :suspend]).or(where(reject_media: true)) } scope :by_severity, -> { order(Arel.sql('(CASE severity WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 0 END), domain')) } def to_log_human_identifier From 317ec06dc791bfbd9eb86177b3027ca92d683b8b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 28 Oct 2022 23:30:44 +0200 Subject: [PATCH 198/500] Fix error when uploading malformed CSV import (#19509) --- app/validators/import_validator.rb | 2 ++ config/locales/activerecord.en.yml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/app/validators/import_validator.rb b/app/validators/import_validator.rb index 9f19aee2ae..cbad56df63 100644 --- a/app/validators/import_validator.rb +++ b/app/validators/import_validator.rb @@ -26,6 +26,8 @@ class ImportValidator < ActiveModel::Validator when 'following' validate_following_import(import, row_count) end + rescue CSV::MalformedCSVError + import.errors.add(:data, :malformed) end private diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index 2dfa3b955e..8aee15659f 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -29,6 +29,10 @@ en: attributes: website: invalid: is not a valid URL + import: + attributes: + data: + malformed: is malformed status: attributes: reblog: From dc5c86add78e03c7c53cf89d084c5e40f533cbc4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 01:31:45 +0200 Subject: [PATCH 199/500] Fix account migration form ever using outdated account data (#18429) --- app/models/form/redirect.rb | 2 +- app/services/resolve_account_service.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/form/redirect.rb b/app/models/form/redirect.rb index 19ee9faedd..795fdd057b 100644 --- a/app/models/form/redirect.rb +++ b/app/models/form/redirect.rb @@ -31,7 +31,7 @@ class Form::Redirect private def set_target_account - @target_account = ResolveAccountService.new.call(acct) + @target_account = ResolveAccountService.new.call(acct, skip_cache: true) rescue Webfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error # Validation will take care of it end diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb index e3b370968f..d8b81a7b9d 100644 --- a/app/services/resolve_account_service.rb +++ b/app/services/resolve_account_service.rb @@ -12,6 +12,7 @@ class ResolveAccountService < BaseService # @param [Hash] options # @option options [Boolean] :redirected Do not follow further Webfinger redirects # @option options [Boolean] :skip_webfinger Do not attempt any webfinger query or refreshing account data + # @option options [Boolean] :skip_cache Get the latest data from origin even if cache is not due to update yet # @option options [Boolean] :suppress_errors When failing, return nil instead of raising an error # @return [Account] def call(uri, options = {}) @@ -120,7 +121,7 @@ class ResolveAccountService < BaseService return false if @options[:check_delivery_availability] && !DeliveryFailureTracker.available?(@domain) return false if @options[:skip_webfinger] - @account.nil? || @account.possibly_stale? + @options[:skip_cache] || @account.nil? || @account.possibly_stale? end def activitypub_ready? From e6d415bb1f76a9ead4bb759c71e8c4efaeea7801 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 07:35:49 +0200 Subject: [PATCH 200/500] New Crowdin updates (#19425) * New translations en.yml (Occitan) * New translations doorkeeper.en.yml (Armenian) * New translations doorkeeper.en.yml (Danish) * New translations doorkeeper.en.yml (German) * New translations doorkeeper.en.yml (Greek) * New translations doorkeeper.en.yml (Frisian) * New translations doorkeeper.en.yml (Basque) * New translations doorkeeper.en.yml (Finnish) * New translations doorkeeper.en.yml (Hebrew) * New translations doorkeeper.en.yml (Hungarian) * New translations doorkeeper.en.yml (Italian) * New translations doorkeeper.en.yml (Catalan) * New translations doorkeeper.en.yml (Japanese) * New translations doorkeeper.en.yml (Georgian) * New translations doorkeeper.en.yml (Korean) * New translations doorkeeper.en.yml (Dutch) * New translations doorkeeper.en.yml (Norwegian) * New translations doorkeeper.en.yml (Polish) * New translations doorkeeper.en.yml (Portuguese) * New translations doorkeeper.en.yml (Czech) * New translations doorkeeper.en.yml (Bulgarian) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations en.yml (Sardinian) * New translations en.yml (Sanskrit) * New translations en.yml (Kabyle) * New translations doorkeeper.en.yml (Arabic) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations doorkeeper.en.yml (Romanian) * New translations doorkeeper.en.yml (French) * New translations doorkeeper.en.yml (Spanish) * New translations doorkeeper.en.yml (Afrikaans) * New translations doorkeeper.en.yml (Russian) * New translations doorkeeper.en.yml (Slovak) * New translations doorkeeper.en.yml (Breton) * New translations doorkeeper.en.yml (Welsh) * New translations doorkeeper.en.yml (Esperanto) * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong) * New translations doorkeeper.en.yml (Tatar) * New translations doorkeeper.en.yml (Malayalam) * New translations doorkeeper.en.yml (Sinhala) * New translations doorkeeper.en.yml (Latvian) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Asturian) * New translations doorkeeper.en.yml (Occitan) * New translations doorkeeper.en.yml (Serbian (Latin)) * New translations doorkeeper.en.yml (Kurmanji (Kurdish)) * New translations doorkeeper.en.yml (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Corsican) * New translations doorkeeper.en.yml (Sardinian) * New translations doorkeeper.en.yml (Hindi) * New translations doorkeeper.en.yml (Estonian) * New translations doorkeeper.en.yml (Slovenian) * New translations doorkeeper.en.yml (Icelandic) * New translations doorkeeper.en.yml (Albanian) * New translations doorkeeper.en.yml (Serbian (Cyrillic)) * New translations doorkeeper.en.yml (Swedish) * New translations doorkeeper.en.yml (Turkish) * New translations doorkeeper.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Chinese Simplified) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations doorkeeper.en.yml (Vietnamese) * New translations doorkeeper.en.yml (Galician) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Kazakh) * New translations doorkeeper.en.yml (Indonesian) * New translations doorkeeper.en.yml (Persian) * New translations doorkeeper.en.yml (Tamil) * New translations doorkeeper.en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Spanish, Mexico) * New translations doorkeeper.en.yml (Marathi) * New translations doorkeeper.en.yml (Thai) * New translations doorkeeper.en.yml (Croatian) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Kabyle) * New translations doorkeeper.en.yml (Ido) * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) * New translations en.yml (Czech) * New translations en.json (Czech) * New translations simple_form.en.yml (Czech) * New translations en.yml (Danish) * New translations en.yml (Hungarian) * New translations en.yml (Polish) * New translations en.json (Icelandic) * New translations en.yml (Icelandic) * New translations simple_form.en.yml (Icelandic) * New translations activerecord.en.yml (Icelandic) * New translations devise.en.yml (Icelandic) * New translations en.yml (Polish) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations en.json (Icelandic) * New translations en.yml (Icelandic) * New translations en.json (Latvian) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Icelandic) * New translations en.json (Finnish) * New translations en.yml (Finnish) * New translations en.yml (Vietnamese) * New translations en.yml (Finnish) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Finnish) * New translations en.yml (Turkish) * New translations en.json (Finnish) * New translations en.yml (Finnish) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Turkish) * New translations en.json (Dutch) * New translations en.yml (Catalan) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations en.yml (Greek) * New translations en.yml (Italian) * New translations en.yml (Dutch) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Dutch) * New translations en.yml (Slovenian) * New translations en.yml (Ukrainian) * New translations en.yml (Galician) * New translations en.yml (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.yml (Galician) * New translations simple_form.en.yml (Chinese Simplified) * New translations en.yml (Chinese Simplified) * New translations simple_form.en.yml (Chinese Simplified) * New translations en.json (French) * New translations en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations simple_form.en.yml (Spanish) * New translations en.json (French) * New translations en.yml (French) * New translations simple_form.en.yml (French) * New translations en.json (Dutch) * New translations en.yml (Dutch) * New translations en.yml (Portuguese) * New translations simple_form.en.yml (Portuguese) * New translations en.yml (Dutch) * New translations en.json (Dutch) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.json (Breton) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations en.yml (German) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations en.yml (German) * New translations activerecord.en.yml (Turkish) * New translations activerecord.en.yml (Polish) * New translations activerecord.en.yml (Portuguese) * New translations activerecord.en.yml (Russian) * New translations activerecord.en.yml (Slovak) * New translations activerecord.en.yml (Slovenian) * New translations activerecord.en.yml (Albanian) * New translations activerecord.en.yml (Serbian (Cyrillic)) * New translations activerecord.en.yml (Swedish) * New translations activerecord.en.yml (Ukrainian) * New translations activerecord.en.yml (Dutch) * New translations activerecord.en.yml (Chinese Simplified) * New translations activerecord.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Vietnamese) * New translations activerecord.en.yml (Galician) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Indonesian) * New translations activerecord.en.yml (Persian) * New translations activerecord.en.yml (Tamil) * New translations activerecord.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Norwegian) * New translations activerecord.en.yml (Greek) * New translations activerecord.en.yml (Romanian) * New translations activerecord.en.yml (French) * New translations activerecord.en.yml (Spanish) * New translations activerecord.en.yml (Afrikaans) * New translations activerecord.en.yml (Arabic) * New translations activerecord.en.yml (Bulgarian) * New translations activerecord.en.yml (Catalan) * New translations activerecord.en.yml (Czech) * New translations activerecord.en.yml (Danish) * New translations activerecord.en.yml (German) * New translations activerecord.en.yml (Frisian) * New translations activerecord.en.yml (Basque) * New translations activerecord.en.yml (Finnish) * New translations activerecord.en.yml (Hebrew) * New translations activerecord.en.yml (Hungarian) * New translations activerecord.en.yml (Armenian) * New translations activerecord.en.yml (Italian) * New translations activerecord.en.yml (Japanese) * New translations activerecord.en.yml (Georgian) * New translations activerecord.en.yml (Korean) * New translations activerecord.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Bengali) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Asturian) * New translations activerecord.en.yml (Occitan) * New translations activerecord.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Corsican) * New translations activerecord.en.yml (Breton) * New translations activerecord.en.yml (Sardinian) * New translations activerecord.en.yml (Kabyle) * New translations activerecord.en.yml (Ido) * New translations activerecord.en.yml (Sinhala) * New translations activerecord.en.yml (Malayalam) * New translations activerecord.en.yml (Marathi) * New translations activerecord.en.yml (Hindi) * New translations activerecord.en.yml (Thai) * New translations activerecord.en.yml (Croatian) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Kazakh) * New translations activerecord.en.yml (Estonian) * New translations activerecord.en.yml (Latvian) * New translations activerecord.en.yml (Tatar) * New translations activerecord.en.yml (Welsh) * New translations activerecord.en.yml (Esperanto) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Catalan) * New translations activerecord.en.yml (Italian) * New translations activerecord.en.yml (Dutch) * New translations activerecord.en.yml (Swedish) * New translations activerecord.en.yml (Ukrainian) * New translations activerecord.en.yml (Latvian) * New translations activerecord.en.yml (Icelandic) * New translations activerecord.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Vietnamese) * New translations activerecord.en.yml (Spanish, Argentina) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations simple_form.en.yml (Korean) * New translations activerecord.en.yml (Korean) * New translations activerecord.en.yml (Portuguese) * New translations en.yml (Korean) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations activerecord.en.yml (Galician) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 12 +- app/javascript/mastodon/locales/ar.json | 72 ++++--- app/javascript/mastodon/locales/ast.json | 12 +- app/javascript/mastodon/locales/bg.json | 12 +- app/javascript/mastodon/locales/bn.json | 12 +- app/javascript/mastodon/locales/br.json | 172 ++++++++-------- app/javascript/mastodon/locales/ca.json | 24 ++- app/javascript/mastodon/locales/ckb.json | 12 +- app/javascript/mastodon/locales/co.json | 12 +- app/javascript/mastodon/locales/cs.json | 30 +-- app/javascript/mastodon/locales/cy.json | 12 +- app/javascript/mastodon/locales/da.json | 26 ++- app/javascript/mastodon/locales/de.json | 28 ++- .../mastodon/locales/defaultMessages.json | 77 +++++-- app/javascript/mastodon/locales/el.json | 24 ++- app/javascript/mastodon/locales/en-GB.json | 12 +- app/javascript/mastodon/locales/en.json | 12 +- app/javascript/mastodon/locales/eo.json | 12 +- app/javascript/mastodon/locales/es-AR.json | 26 ++- app/javascript/mastodon/locales/es-MX.json | 18 +- app/javascript/mastodon/locales/es.json | 12 +- app/javascript/mastodon/locales/et.json | 12 +- app/javascript/mastodon/locales/eu.json | 12 +- app/javascript/mastodon/locales/fa.json | 12 +- app/javascript/mastodon/locales/fi.json | 158 +++++++------- app/javascript/mastodon/locales/fr.json | 44 ++-- app/javascript/mastodon/locales/fy.json | 12 +- app/javascript/mastodon/locales/ga.json | 12 +- app/javascript/mastodon/locales/gd.json | 192 +++++++++--------- app/javascript/mastodon/locales/gl.json | 34 ++-- app/javascript/mastodon/locales/he.json | 12 +- app/javascript/mastodon/locales/hi.json | 12 +- app/javascript/mastodon/locales/hr.json | 12 +- app/javascript/mastodon/locales/hu.json | 26 ++- app/javascript/mastodon/locales/hy.json | 12 +- app/javascript/mastodon/locales/id.json | 12 +- app/javascript/mastodon/locales/io.json | 28 ++- app/javascript/mastodon/locales/is.json | 34 ++-- app/javascript/mastodon/locales/it.json | 24 ++- app/javascript/mastodon/locales/ja.json | 12 +- app/javascript/mastodon/locales/ka.json | 12 +- app/javascript/mastodon/locales/kab.json | 12 +- app/javascript/mastodon/locales/kk.json | 12 +- app/javascript/mastodon/locales/kn.json | 12 +- app/javascript/mastodon/locales/ko.json | 40 ++-- app/javascript/mastodon/locales/ku.json | 26 ++- app/javascript/mastodon/locales/kw.json | 12 +- app/javascript/mastodon/locales/lt.json | 12 +- app/javascript/mastodon/locales/lv.json | 28 ++- app/javascript/mastodon/locales/mk.json | 12 +- app/javascript/mastodon/locales/ml.json | 12 +- app/javascript/mastodon/locales/mr.json | 12 +- app/javascript/mastodon/locales/ms.json | 12 +- app/javascript/mastodon/locales/nl.json | 50 +++-- app/javascript/mastodon/locales/nn.json | 12 +- app/javascript/mastodon/locales/no.json | 12 +- app/javascript/mastodon/locales/oc.json | 12 +- app/javascript/mastodon/locales/pa.json | 12 +- app/javascript/mastodon/locales/pl.json | 26 ++- app/javascript/mastodon/locales/pt-BR.json | 12 +- app/javascript/mastodon/locales/pt-PT.json | 26 ++- app/javascript/mastodon/locales/ro.json | 12 +- app/javascript/mastodon/locales/ru.json | 24 ++- app/javascript/mastodon/locales/sa.json | 12 +- app/javascript/mastodon/locales/sc.json | 12 +- app/javascript/mastodon/locales/si.json | 12 +- app/javascript/mastodon/locales/sk.json | 12 +- app/javascript/mastodon/locales/sl.json | 26 ++- app/javascript/mastodon/locales/sq.json | 12 +- app/javascript/mastodon/locales/sr-Latn.json | 12 +- app/javascript/mastodon/locales/sr.json | 12 +- app/javascript/mastodon/locales/sv.json | 12 +- app/javascript/mastodon/locales/szl.json | 12 +- app/javascript/mastodon/locales/ta.json | 12 +- app/javascript/mastodon/locales/tai.json | 12 +- app/javascript/mastodon/locales/te.json | 12 +- app/javascript/mastodon/locales/th.json | 20 +- app/javascript/mastodon/locales/tr.json | 32 +-- app/javascript/mastodon/locales/tt.json | 12 +- app/javascript/mastodon/locales/ug.json | 12 +- app/javascript/mastodon/locales/uk.json | 26 ++- app/javascript/mastodon/locales/ur.json | 12 +- app/javascript/mastodon/locales/vi.json | 26 ++- app/javascript/mastodon/locales/zgh.json | 12 +- app/javascript/mastodon/locales/zh-CN.json | 108 +++++----- app/javascript/mastodon/locales/zh-HK.json | 12 +- app/javascript/mastodon/locales/zh-TW.json | 26 ++- config/locales/activerecord.ca.yml | 4 + config/locales/activerecord.es-AR.yml | 4 + config/locales/activerecord.gl.yml | 4 + config/locales/activerecord.is.yml | 4 + config/locales/activerecord.it.yml | 4 + config/locales/activerecord.ko.yml | 4 + config/locales/activerecord.lv.yml | 4 + config/locales/activerecord.nl.yml | 4 + config/locales/activerecord.pt-PT.yml | 4 + config/locales/activerecord.sv.yml | 4 + config/locales/activerecord.uk.yml | 4 + config/locales/activerecord.vi.yml | 8 +- config/locales/activerecord.zh-TW.yml | 4 + config/locales/ar.yml | 57 ++++++ config/locales/ca.yml | 13 ++ config/locales/cs.yml | 13 ++ config/locales/da.yml | 15 +- config/locales/de.yml | 19 +- config/locales/el.yml | 12 ++ config/locales/es-AR.yml | 13 ++ config/locales/es-MX.yml | 25 +++ config/locales/fi.yml | 73 +++++++ config/locales/fr.yml | 17 ++ config/locales/gd.yml | 107 ++++++++++ config/locales/gl.yml | 40 +++- config/locales/hu.yml | 14 ++ config/locales/is.yml | 38 ++++ config/locales/it.yml | 13 ++ config/locales/ko.yml | 40 +++- config/locales/ku.yml | 8 + config/locales/lv.yml | 13 ++ config/locales/nl.yml | 118 +++++++++-- config/locales/pl.yml | 13 ++ config/locales/pt-PT.yml | 18 ++ config/locales/ru.yml | 9 + config/locales/simple_form.ar.yml | 10 + config/locales/simple_form.cs.yml | 4 + config/locales/simple_form.da.yml | 2 +- config/locales/simple_form.de.yml | 9 + config/locales/simple_form.es.yml | 2 +- config/locales/simple_form.fi.yml | 46 +++++ config/locales/simple_form.fr.yml | 12 ++ config/locales/simple_form.gd.yml | 48 +++++ config/locales/simple_form.gl.yml | 37 ++++ config/locales/simple_form.hu.yml | 2 + config/locales/simple_form.is.yml | 37 ++++ config/locales/simple_form.ko.yml | 26 +++ config/locales/simple_form.ku.yml | 9 + config/locales/simple_form.nl.yml | 34 +++- config/locales/simple_form.pt-PT.yml | 17 ++ config/locales/simple_form.sl.yml | 8 + config/locales/simple_form.sv.yml | 2 + config/locales/simple_form.th.yml | 2 +- config/locales/simple_form.tr.yml | 37 ++++ config/locales/simple_form.vi.yml | 39 +++- config/locales/simple_form.zh-CN.yml | 45 ++++ config/locales/sl.yml | 13 ++ config/locales/sv.yml | 3 + config/locales/th.yml | 12 ++ config/locales/tr.yml | 38 ++++ config/locales/uk.yml | 13 ++ config/locales/vi.yml | 38 ++++ config/locales/zh-CN.yml | 47 +++++ config/locales/zh-TW.yml | 13 ++ 151 files changed, 2690 insertions(+), 840 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 96cd5bfe99..364fa55051 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -39,7 +39,7 @@ "account.follows.empty": "Die gebruiker volg nie tans iemand nie.", "account.follows_you": "Volg jou", "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", - "account.joined": "{date} aangesluit", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}", "account.locked_info": "Die rekening se privaatheidstatus is gesluit. Die eienaar hersien handmatig wie hom/haar kan volg.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Iets het verkeerd gegaan terwyl hierdie komponent besig was om te laai.", "bundle_modal_error.retry": "Probeer weer", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Boekmerke", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index f85d15a56c..d8113d4394 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -1,8 +1,8 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "خوادم تحت الإشراف", + "about.contact": "اتصل بـ:", + "about.domain_blocks.comment": "السبب", + "about.domain_blocks.domain": "النطاق", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", @@ -11,7 +11,7 @@ "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "قواعد الخادم", "account.account_note_header": "مُلاحظة", "account.add_or_remove_from_list": "الإضافة أو الإزالة من القائمة", "account.badges.bot": "روبوت", @@ -39,7 +39,7 @@ "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", "account.follows_you": "يُتابِعُك", "account.hide_reblogs": "إخفاء مشاركات @{name}", - "account.joined": "انضم في {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}", "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.", @@ -81,9 +81,9 @@ "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "أوه لا!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "خطأ في الشبكة", "bundle_column_error.retry": "إعادة المُحاولة", "bundle_column_error.return": "Go back home", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", @@ -91,7 +91,12 @@ "bundle_modal_error.close": "إغلاق", "bundle_modal_error.message": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", "bundle_modal_error.retry": "إعادة المُحاولة", - "column.about": "About", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "عن", "column.blocks": "المُستَخدِمون المَحظورون", "column.bookmarks": "الفواصل المرجعية", "column.community": "الخيط الزمني المحلي", @@ -169,8 +174,8 @@ "conversation.mark_as_read": "اعتبرها كمقروءة", "conversation.open": "اعرض المحادثة", "conversation.with": "بـ {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "تم نسخه", + "copypaste.copy": "انسخ", "directory.federated": "مِن الفديفرس المعروف", "directory.local": "مِن {domain} فقط", "directory.new_arrivals": "الوافدون الجُدد", @@ -242,7 +247,7 @@ "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.prompt_new": "فئة جديدة: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", @@ -254,14 +259,14 @@ "follow_request.reject": "رفض", "follow_requests.unlocked_explanation": "على الرغم من أن حسابك غير مقفل، فإن موظفين الـ{domain} ظنوا أنك قد ترغب في مراجعة طلبات المتابعة من هذه الحسابات يدوياً.", "generic.saved": "تم الحفظ", - "getting_started.directory": "Directory", + "getting_started.directory": "الدليل", "getting_started.documentation": "الدليل", "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "استعدّ للبدء", "getting_started.invite": "دعوة أشخاص", - "getting_started.privacy_policy": "Privacy Policy", + "getting_started.privacy_policy": "سياسة الخصوصية", "getting_started.security": "الأمان", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "عن ماستدون", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "أو {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -271,8 +276,8 @@ "hashtag.column_settings.tag_mode.any": "أي كان مِن هذه", "hashtag.column_settings.tag_mode.none": "لا شيء مِن هذه", "hashtag.column_settings.tag_toggle": "إدراج الوسوم الإضافية لهذا العمود", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "اتبع وسم الهاشج", + "hashtag.unfollow": "ألغِ متابعة الوسم", "home.column_settings.basic": "الأساسية", "home.column_settings.show_reblogs": "اعرض الترقيات", "home.column_settings.show_replies": "اعرض الردود", @@ -283,11 +288,11 @@ "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_this_server": "على هذا الخادم", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "اتبع {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}", @@ -355,8 +360,8 @@ "mute_modal.duration": "المدة", "mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟", "mute_modal.indefinite": "إلى أجل غير مسمى", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "عن", + "navigation_bar.apps": "احصل على التطبيق", "navigation_bar.blocks": "الحسابات المحجوبة", "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط المحلي", @@ -370,7 +375,7 @@ "navigation_bar.filters": "الكلمات المكتومة", "navigation_bar.follow_requests": "طلبات المتابعة", "navigation_bar.follows_and_followers": "المتابِعين والمتابَعون", - "navigation_bar.info": "About", + "navigation_bar.info": "عن", "navigation_bar.keyboard_shortcuts": "اختصارات لوحة المفاتيح", "navigation_bar.lists": "القوائم", "navigation_bar.logout": "خروج", @@ -379,6 +384,7 @@ "navigation_bar.pins": "المنشورات المُثَبَّتَة", "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", + "navigation_bar.search": "Search", "navigation_bar.security": "الأمان", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -449,7 +455,7 @@ "privacy.unlisted.long": "مرئي للجميع، ولكن مِن دون ميزات الاكتشاف", "privacy.unlisted.short": "غير مدرج", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.title": "سياسة الخصوصية", "refresh": "أنعِش", "regeneration_indicator.label": "جارٍ التحميل…", "regeneration_indicator.sublabel": "جارٍ تجهيز تغذية صفحتك الرئيسية!", @@ -523,13 +529,13 @@ "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.active_users": "مستخدم نشط", + "server_banner.administered_by": "يُديره:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "server_banner.learn_more": "تعلم المزيد", + "server_banner.server_stats": "إحصائيات الخادم:", + "sign_in_banner.create_account": "أنشئ حسابًا", + "sign_in_banner.sign_in": "لِج", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "افتح الواجهة الإدارية لـ @{name}", "status.admin_status": "افتح هذا المنشور على واجهة الإشراف", @@ -567,6 +573,7 @@ "status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", "status.redraft": "إزالة و إعادة الصياغة", "status.remove_bookmark": "احذفه مِن الفواصل المرجعية", + "status.replied_to": "Replied to {name}", "status.reply": "ردّ", "status.replyAll": "رُد على الخيط", "status.report": "ابلِغ عن @{name}", @@ -577,10 +584,9 @@ "status.show_less_all": "طي الكل", "status.show_more": "أظهر المزيد", "status.show_more_all": "توسيع الكل", - "status.show_original": "Show original", - "status.show_thread": "الكشف عن المحادثة", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.show_original": "إظهار الأصل", + "status.translate": "ترجم", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "غير متوفر", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الصفحة التعريفية", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 94eaac85ed..60d2008b5d 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -39,7 +39,7 @@ "account.follows.empty": "Esti usuariu entá nun sigue a naide.", "account.follows_you": "Síguete", "account.hide_reblogs": "Anubrir les comparticiones de @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Asocedió daqué malo mentanto se cargaba esti componente.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Usuarios bloquiaos", "column.bookmarks": "Marcadores", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Barritos fixaos", "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia temporal federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguranza", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Naide nun compartió esti barritu entá. Cuando daquién lo faiga, va amosase equí.", "status.redraft": "Desaniciar y reeditar", "status.remove_bookmark": "Desaniciar de Marcadores", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Amosar más", "status.show_more_all": "Amosar más en too", "status.show_original": "Show original", - "status.show_thread": "Amosar el filu", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Non disponible", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Desfixar del perfil", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 8f1b4c770d..aa67edfd21 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -39,7 +39,7 @@ "account.follows.empty": "Този потребител все още не следва никого.", "account.follows_you": "Твой последовател", "account.hide_reblogs": "Скриване на споделяния от @{name}", - "account.joined": "Присъединил се на {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}", "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Затваряне", "bundle_modal_error.message": "Нещо се обърка при зареждането на този компонент.", "bundle_modal_error.retry": "Опитайте отново", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Закачени публикации", "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Публичен канал", + "navigation_bar.search": "Search", "navigation_bar.security": "Сигурност", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} докладва {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Все още никой не е споделил тази публикация. Когато някой го направи, ще се покаже тук.", "status.redraft": "Изтриване и преработване", "status.remove_bookmark": "Премахване на отметка", + "status.replied_to": "Replied to {name}", "status.reply": "Отговор", "status.replyAll": "Отговор на тема", "status.report": "Докладване на @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Покажи повече", "status.show_more_all": "Покажи повече за всички", "status.show_original": "Show original", - "status.show_thread": "Показване на тема", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Не е налично", "status.unmute_conversation": "Раззаглушаване на разговор", "status.unpin": "Разкачане от профил", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index f0852da210..c793cac6f9 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -39,7 +39,7 @@ "account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.", "account.follows_you": "তোমাকে অনুসরণ করে", "account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিখে", "account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "বন্ধ করুন", "bundle_modal_error.message": "এই অংশটি দেখাতে যেয়ে কোনো সমস্যা হয়েছে।.", "bundle_modal_error.retry": "আবার চেষ্টা করুন", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "যাদের ব্লক করা হয়েছে", "column.bookmarks": "বুকমার্ক", @@ -379,6 +384,7 @@ "navigation_bar.pins": "পিন দেওয়া টুট", "navigation_bar.preferences": "পছন্দসমূহ", "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা", + "navigation_bar.search": "Search", "navigation_bar.security": "নিরাপত্তা", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "এখনো কেও এটাতে সমর্থন দেয়নি। যখন কেও দেয়, সেটা তখন এখানে দেখা যাবে।", "status.redraft": "মুছে আবার নতুন করে লিখতে", "status.remove_bookmark": "বুকমার্ক সরান", + "status.replied_to": "Replied to {name}", "status.reply": "মতামত জানাতে", "status.replyAll": "লেখাযুক্ত সবার কাছে মতামত জানাতে", "status.report": "@{name} কে রিপোর্ট করতে", @@ -578,9 +585,8 @@ "status.show_more": "আরো দেখাতে", "status.show_more_all": "সবগুলোতে আরো দেখতে", "status.show_original": "Show original", - "status.show_thread": "আলোচনা দেখতে", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "পাওয়া যাচ্ছে না", "status.unmute_conversation": "আলোচনার প্রজ্ঞাপন চালু করতে", "status.unpin": "নিজের পাতা থেকে পিন করে রাখাটির পিন খুলতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 9ed8c12363..237f443296 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -1,70 +1,70 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "Servijerioù habaskaet", + "about.contact": "Darempred :", + "about.domain_blocks.comment": "Abeg", + "about.domain_blocks.domain": "Domani", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.severity": "Strizhder", + "about.domain_blocks.silenced.explanation": "Ne vo ket gwelet profiloù eus ar servijer-mañ ganeoc'h peurliesañ, nemet ma vefec'h o klask war o lec'h pe choazfec'h o heuliañ.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Reolennoù ar servijer", "account.account_note_header": "Notenn", "account.add_or_remove_from_list": "Ouzhpenn pe dilemel eus al listennadoù", "account.badges.bot": "Robot", "account.badges.group": "Strollad", - "account.block": "Berzañ @{name}", - "account.block_domain": "Berzañ pep tra eus {domain}", + "account.block": "Stankañ @{name}", + "account.block_domain": "Stankañ an domani {domain}", "account.blocked": "Stanket", - "account.browse_more_on_origin_server": "Furchal muioc'h war ar profil kentañ", + "account.browse_more_on_origin_server": "Furchal pelloc'h war ar profil orin", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Kas ur gemennadenn prevez da @{name}", - "account.disable_notifications": "Paouez d'am c'hemenn pa vez toudet gant @{name}", - "account.domain_blocked": "Domani berzet", - "account.edit_profile": "Aozañ ar profil", - "account.enable_notifications": "Ma c'hemenn pa vez toudet gant @{name}", + "account.direct": "Kas ur c'hemennad eeun da @{name}", + "account.disable_notifications": "Paouez d'am c'hemenn pa vez embannet traoù gant @{name}", + "account.domain_blocked": "Domani stanket", + "account.edit_profile": "Kemmañ ar profil", + "account.enable_notifications": "Ma c'hemenn pa vez embannet traoù gant @{name}", "account.endorse": "Lakaat war-wel war ar profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Kemennad diwezhañ : {date}", + "account.featured_tags.last_status_never": "Kemennad ebet", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Heuliañ", "account.followers": "Heulier·ezed·ien", - "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.", - "account.followers_counter": "{count, plural, other{{counter} Heulier}}", - "account.following": "O heuliañ", - "account.following_counter": "{count, plural, other {{counter} Heuliañ}}", + "account.followers.empty": "Den na heul an implijer·ez-mañ c'hoazh.", + "account.followers_counter": "{count, plural, other{{counter} Heulier·ez}}", + "account.following": "Koumanantoù", + "account.following_counter": "{count, plural, one{{counter} C'houmanant} two{{counter} Goumanant} other {{counter} a Goumanant}}", "account.follows.empty": "An implijer·ez-mañ na heul den ebet.", - "account.follows_you": "Ho heul", - "account.hide_reblogs": "Kuzh toudoù rannet gant @{name}", - "account.joined": "Amañ abaoe {date}", + "account.follows_you": "Ho heuilh", + "account.hide_reblogs": "Kuzh skignadennoù gant @{name}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}", - "account.locked_info": "Prennet eo ar gont-mañ. Dibab a ra ar perc'henn ar re a c'hall heuliañ anezhi pe anezhañ.", + "account.locked_info": "Prennet eo ar gont-mañ. Gant ar perc'henn e vez dibabet piv a c'hall heuliañ anezhi pe anezhañ.", "account.media": "Media", "account.mention": "Menegiñ @{name}", "account.moved_to": "Dilojet en·he deus {name} da :", "account.mute": "Kuzhat @{name}", - "account.mute_notifications": "Kuzh kemennoù eus @{name}", + "account.mute_notifications": "Kuzh kemennoù a-berzh @{name}", "account.muted": "Kuzhet", - "account.posts": "a doudoù", - "account.posts_with_replies": "Toudoù ha respontoù", + "account.posts": "Kemennadoù", + "account.posts_with_replies": "Kemennadoù ha respontoù", "account.report": "Disklêriañ @{name}", "account.requested": "O c'hortoz an asant. Klikit evit nullañ ar goulenn heuliañ", "account.share": "Skignañ profil @{name}", "account.show_reblogs": "Diskouez skignadennoù @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toud} other {{counter} Toud}}", + "account.statuses_counter": "{count, plural, one {{counter} C'hemennad} two {{counter} Gemennad} other {{counter} a Gemennad}}", "account.unblock": "Diverzañ @{name}", "account.unblock_domain": "Diverzañ an domani {domain}", "account.unblock_short": "Distankañ", "account.unendorse": "Paouez da lakaat war-wel war ar profil", "account.unfollow": "Diheuliañ", "account.unmute": "Diguzhat @{name}", - "account.unmute_notifications": "Diguzhat kemennoù a @{name}", - "account.unmute_short": "Unmute", - "account_note.placeholder": "Klikit evit ouzhpenniñ un notenn", + "account.unmute_notifications": "Diguzhat kemennoù a-berzh @{name}", + "account.unmute_short": "Diguzhat", + "account_note.placeholder": "Klikit evit ouzhpennañ un notenn", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Keidenn", @@ -73,7 +73,7 @@ "alert.rate_limited.message": "Klaskit en-dro a-benn {retry_time, time, medium}.", "alert.rate_limited.title": "Feur bevennet", "alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.", - "alert.unexpected.title": "Hopala!", + "alert.unexpected.title": "Hopala !", "announcement.announcement": "Kemenn", "attachments_list.unprocessed": "(ket meret)", "audio.hide": "Hide audio", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Serriñ", "bundle_modal_error.message": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", "bundle_modal_error.retry": "Klask en-dro", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Implijer·ezed·ien berzet", "column.bookmarks": "Sinedoù", @@ -104,7 +109,7 @@ "column.lists": "Listennoù", "column.mutes": "Implijer·ion·ezed kuzhet", "column.notifications": "Kemennoù", - "column.pins": "Toudoù spilhennet", + "column.pins": "Kemennadoù spilhennet", "column.public": "Red-amzer kevreet", "column_back_button.label": "Distro", "column_header.hide_settings": "Kuzhat an arventennoù", @@ -120,11 +125,11 @@ "compose.language.change": "Cheñch yezh", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", - "compose_form.hashtag_warning": "Ne vo ket lakaet an toud-mañ er rolloù gerioù-klik dre mard eo anlistennet. N'eus nemet an toudoù foran a c'hall bezañ klasket dre c'her-klik.", - "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal heuliañ ac'hanoc'h evit gwelout ho toudoù prevez.", + "compose_form.encryption_warning": "Kemennadoù war Mastodon na vezont ket sifret penn-da-benn. Na rannit ket titouroù kizidik dre Mastodon.", + "compose_form.hashtag_warning": "Ne vo ket listennet ar c'hemennad-mañ dindan gerioù-klik ebet dre m'eo anlistennet. N'eus nemet ar c'hemennadoù foran a c'hall bezañ klasket dre c'her-klik.", + "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal ho heuliañ evit gwelet ho kemennadoù prevez.", "compose_form.lock_disclaimer.lock": "prennet", - "compose_form.placeholder": "Petra eh oc'h é soñjal a-barzh ?", + "compose_form.placeholder": "Petra emaoc'h o soñjal e-barzh ?", "compose_form.poll.add_option": "Ouzhpenniñ un dibab", "compose_form.poll.duration": "Pad ar sontadeg", "compose_form.poll.option_placeholder": "Dibab {number}", @@ -147,7 +152,7 @@ "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Dilemel", - "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel an toud-mañ ?", + "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ ?", "confirmations.delete_list.confirm": "Dilemel", "confirmations.delete_list.message": "Ha sur eo hoc'h eus c'hoant da zilemel ar roll-mañ da vat ?", "confirmations.discard_edit_media.confirm": "Nac'hañ", @@ -157,10 +162,10 @@ "confirmations.logout.confirm": "Digevreañ", "confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreañ ?", "confirmations.mute.confirm": "Kuzhat", - "confirmations.mute.explanation": "Kuzhat a raio an toudoù skrivet gantañ·i hag ar re a veneg anezhañ·i, met aotren a raio anezhañ·i da welet ho todoù ha a heuliañ ac'hanoc'h.", + "confirmations.mute.explanation": "Kement-se a guzho ar c'hemennadoù skrivet gantañ·i hag ar re a veneg anezhañ·i, met ne viro ket outañ·i a welet ho kemennadoù nag a heuliañ ac'hanoc'h.", "confirmations.mute.message": "Ha sur oc'h e fell deoc'h kuzhaat {name} ?", "confirmations.redraft.confirm": "Diverkañ ha skrivañ en-dro", - "confirmations.redraft.message": "Ha sur oc'h e fell deoc'h dilemel ar statud-mañ hag adlakaat anezhañ er bouilhoñs? Kollet e vo ar merkoù muiañ-karet hag ar skignadennoù hag emzivat e vo ar respontoù d'an toud orin.", + "confirmations.redraft.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ hag e adskrivañ ? Kollet e vo ar merkoù « muiañ-karet » hag ar skignadennoù, hag emzivat e vo ar respontoù d'ar c'hemennad orin.", "confirmations.reply.confirm": "Respont", "confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?", "confirmations.unfollow.confirm": "Diheuliañ", @@ -171,18 +176,18 @@ "conversation.with": "Gant {names}", "copypaste.copied": "Copied", "copypaste.copy": "Copy", - "directory.federated": "Eus ar c'hevrebed anavezet", + "directory.federated": "Eus ar fedibed anavezet", "directory.local": "Eus {domain} hepken", "directory.new_arrivals": "Degouezhet a-nevez", "directory.recently_active": "Oberiant nevez zo", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.community_timeline": "Setu kemennadoù foran nevesañ an dud a zo herberc’hiet o c'hontoù gant {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "Enkorfit ar statud war ho lec'hienn en ur eilañ ar c'hod dindan.", - "embed.preview": "Setu penaos e vo diskouezet:", + "embed.instructions": "Enframmit ar c'hemennad-mañ en ho lec'hienn en ur eilañ ar c'hod amañ-dindan.", + "embed.preview": "Setu penaos e teuio war wel :", "emoji_button.activity": "Obererezh", "emoji_button.clear": "Diverkañ", "emoji_button.custom": "Kempennet", @@ -199,22 +204,22 @@ "emoji_button.symbols": "Arouezioù", "emoji_button.travel": "Lec'hioù ha Beajoù", "empty_column.account_suspended": "Kont ehanet", - "empty_column.account_timeline": "Toud ebet amañ!", + "empty_column.account_timeline": "Kemennad ebet amañ !", "empty_column.account_unavailable": "Profil dihegerz", "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", - "empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan ganeoc'h e teuio war wel amañ.", + "empty_column.bookmarked_statuses": "N'ho peus kemennad ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !", "empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", - "empty_column.favourited_statuses": "N'ho peus toud muiañ-karet ebet c'hoazh. Pa vo lakaet unan ganeoc'h e vo diskouezet amañ.", - "empty_column.favourites": "Den ebet n'eus lakaet an toud-mañ en e reoù muiañ-karet. Pa vo graet gant unan bennak e vo diskouezet amañ.", + "empty_column.favourited_statuses": "N'ho peus kemennad muiañ-karet ebet c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", + "empty_column.favourites": "Den ebet n'eus lakaet ar c'hemennad-mañ en e reoù muiañ-karet c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.", "empty_column.follow_recommendations": "Seblant a ra ne vez ket genelet damvenegoù evidoc'h. Gallout a rit implijout un enklask evit klask tud hag a vefe anavezet ganeoc'h pe ergerzhout gerioù-klik diouzh ar c'hiz.", "empty_column.follow_requests": "N'ho peus goulenn heuliañ ebet c'hoazh. Pa resevot reoù e vo diskouezet amañ.", "empty_column.hashtag": "N'eus netra er ger-klik-mañ c'hoazh.", "empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniñ {public} pe implijit ar c'hlask evit kregiñ ganti ha kejañ gant implijer·ien·ezed all.", "empty_column.home.suggestions": "Gwellout damvenegoù", - "empty_column.list": "Goullo eo ar roll-mañ evit ar poent. Pa vo toudet gant e izili e vo diskouezet amañ.", + "empty_column.list": "Goullo eo ar roll-mañ evit c'hoazh. Pa vo embannet kemennadoù nevez gant e izili e teuint war wel amañ.", "empty_column.lists": "N'ho peus roll ebet c'hoazh. Pa vo krouet unan ganeoc'h e vo diskouezet amañ.", "empty_column.mutes": "N'ho peus kuzhet implijer ebet c'hoazh.", "empty_column.notifications": "N'ho peus kemenn ebet c'hoazh. Grit gant implijer·ezed·ien all evit loc'hañ ar gomz.", @@ -229,7 +234,7 @@ "explore.suggested_follows": "Evidoc'h", "explore.title": "Ergerzhit", "explore.trending_links": "Keleier", - "explore.trending_statuses": "Posts", + "explore.trending_statuses": "Kemennadoù", "explore.trending_tags": "Gerioù-klik", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", @@ -238,18 +243,18 @@ "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filter settings", "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.short_explanation": "Ar c'hemennad-mañ zo bet ouzhpennet d'ar rummad sil-mañ : {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", "filter_modal.select_filter.prompt_new": "New category: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.title": "Silañ ar c'hemennad-mañ", + "filter_modal.title.status": "Silañ ur c'hemennad", "follow_recommendations.done": "Graet", - "follow_recommendations.heading": "Heuliit tud e plijfe deoc'h lenn toudoù! Setu un tamm alioù.", - "follow_recommendations.lead": "Toudoù eus tud heuliet ganeoc'h a zeuio war wel en un urzh amzeroniezhel war ho red degemer. N'ho peus ket aon ober fazioù, gallout a rit paouez heuliañ tud ken aes n'eus forzh pegoulz!", + "follow_recommendations.heading": "Heuilhit tud a blijfe deoc'h lenn o c'hemennadoù ! Setu un nebeud erbedadennoù.", + "follow_recommendations.lead": "Kemennadoù gant tud a vez heuliet ganeoc'h a zeuio war wel en urzh kronologel war ho red degemer. Arabat kaout aon ober fazioù, diheuliañ tud a c'hellit ober aes ha forzh pegoulz !", "follow_request.authorize": "Aotren", "follow_request.reject": "Nac'hañ", "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", @@ -278,31 +283,31 @@ "home.column_settings.show_replies": "Diskouez ar respontoù", "home.hide_announcements": "Kuzhat ar c'hemennoù", "home.show_announcements": "Diskouez ar c'hemennoù", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.favourite": "Gant ur gont Mastodon e c'hellit ouzhpennañ ar c'hemennad-mañ d'ho re vuiañ-karet evit lakaat an den en deus eñ skrivet da c'houzout e plij deoc'h hag e enrollañ evit diwezhatoc'h.", + "interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliañ {name} evit resev h·e gemennadoù war ho red degemer.", + "interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignañ ar c'hemennad-mañ evit rannañ anezhañ gant ho heulierien·ezed.", + "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'ar c'hemennad-mañ.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.favourite": "Ouzhpennañ kemennad {name} d'ar re vuiañ-karet", "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reblog": "Skignañ kemennad {name}", + "interaction_modal.title.reply": "Respont da gemennad {name}", "intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}", "intervals.full.hours": "{number, plural, one {# eurvezh} other{# eurvezh}}", "intervals.full.minutes": "{number, plural, one {# munut} other{# a vunutoù}}", "keyboard_shortcuts.back": "Distreiñ", "keyboard_shortcuts.blocked": "Digeriñ roll an implijer.ezed.rien stanket", - "keyboard_shortcuts.boost": "da skignañ", + "keyboard_shortcuts.boost": "Skignañ ar c'hemennad", "keyboard_shortcuts.column": "Fokus ar bann", "keyboard_shortcuts.compose": "Fokus an takad testenn", "keyboard_shortcuts.description": "Deskrivadur", "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "Diskennañ er roll", - "keyboard_shortcuts.enter": "evit digeriñ un toud", - "keyboard_shortcuts.favourite": "Lakaat an toud evel muiañ-karet", + "keyboard_shortcuts.enter": "Digeriñ ar c'hemennad", + "keyboard_shortcuts.favourite": "Ouzhpennañ ar c'hemennad d'ar re vuiañ-karet", "keyboard_shortcuts.favourites": "Digeriñ roll an toudoù muiañ-karet", "keyboard_shortcuts.federated": "Digeriñ ar red-amzer kevreet", "keyboard_shortcuts.heading": "Berradennoù klavier", @@ -315,16 +320,16 @@ "keyboard_shortcuts.my_profile": "Digeriñ ho profil", "keyboard_shortcuts.notifications": "Digeriñ bann kemennoù", "keyboard_shortcuts.open_media": "Digeriñ ar media", - "keyboard_shortcuts.pinned": "Digeriñ roll an toudoù spilhennet", + "keyboard_shortcuts.pinned": "Digeriñ roll ar c'hemennadoù spilhennet", "keyboard_shortcuts.profile": "Digeriñ profil an aozer.ez", - "keyboard_shortcuts.reply": "da respont", + "keyboard_shortcuts.reply": "Respont d'ar c'hemennad", "keyboard_shortcuts.requests": "Digeriñ roll goulennoù heuliañ", "keyboard_shortcuts.search": "Fokus barenn klask", "keyboard_shortcuts.spoilers": "da guzhat/ziguzhat tachenn CW", "keyboard_shortcuts.start": "Digeriñ bann \"Kregiñ\"", "keyboard_shortcuts.toggle_hidden": "da guzhat/ziguzhat an desten a-dreñv CW", "keyboard_shortcuts.toggle_sensitivity": "da guzhat/ziguzhat ur media", - "keyboard_shortcuts.toot": "da gregiñ gant un toud nevez-flamm", + "keyboard_shortcuts.toot": "Kregiñ gant ur c'hemennad nevez", "keyboard_shortcuts.unfocus": "Difokus an dachenn testenn/klask", "keyboard_shortcuts.up": "Pignat er roll", "lightbox.close": "Serriñ", @@ -360,7 +365,7 @@ "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", - "navigation_bar.compose": "Skrivañ un toud nevez", + "navigation_bar.compose": "Skrivañ ur c'hemennad nevez", "navigation_bar.direct": "Kemennadoù prevez", "navigation_bar.discover": "Dizoleiñ", "navigation_bar.domain_blocks": "Domanioù kuzhet", @@ -376,22 +381,23 @@ "navigation_bar.logout": "Digennaskañ", "navigation_bar.mutes": "Implijer·ion·ezed kuzhet", "navigation_bar.personal": "Personel", - "navigation_bar.pins": "Toudoù spilhennet", + "navigation_bar.pins": "Kemennadoù spilhennet", "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", + "navigation_bar.search": "Search", "navigation_bar.security": "Diogelroez", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "Disklêriet eo bet {target} gant {name}", "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", - "notification.favourite": "{name} en/he deus lakaet ho toud en e/he muiañ-karet", + "notification.favourite": "{name} en·he deus ouzhpennet ho kemennad d'h·e re vuiañ-karet", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", "notification.follow_request": "{name} en/he deus goulennet da heuliañ ac'hanoc'h", "notification.mention": "{name} en/he deus meneget ac'hanoc'h", "notification.own_poll": "Echu eo ho sontadeg", "notification.poll": "Ur sontadeg ho deus mouezhet warnañ a zo echuet", - "notification.reblog": "{name} skignet ho toud", - "notification.status": "{name} en/he deus toudet", - "notification.update": "{name} edited a post", + "notification.reblog": "{name} en·he deus skignet ho kemennad", + "notification.status": "{name} en·he deus embannet", + "notification.update": "{name} en·he deus kemmet ur c'hemennad", "notifications.clear": "Skarzhañ ar c'hemennoù", "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?", "notifications.column_settings.admin.report": "New reports:", @@ -409,7 +415,7 @@ "notifications.column_settings.reblog": "Skignadennoù:", "notifications.column_settings.show": "Diskouez er bann", "notifications.column_settings.sound": "Seniñ", - "notifications.column_settings.status": "Toudoù nevez:", + "notifications.column_settings.status": "Kemennadoù nevez :", "notifications.column_settings.unread_notifications.category": "Kemennoù n'int ket lennet", "notifications.column_settings.unread_notifications.highlight": "Usskediñ kemennoù nevez", "notifications.column_settings.update": "Edits:", @@ -439,7 +445,7 @@ "poll.votes": "{votes, plural,one {#votadenn} other {# votadenn}}", "poll_button.add_poll": "Ouzhpennañ ur sontadeg", "poll_button.remove_poll": "Dilemel ar sontadeg", - "privacy.change": "Kemmañ gwelidigezh ar statud", + "privacy.change": "Cheñch prevezded ar c'hemennad", "privacy.direct.long": "Embann evit an implijer·ezed·ien meneget hepken", "privacy.direct.short": "Direct", "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken", @@ -466,20 +472,20 @@ "relative_time.today": "hiziv", "reply_indicator.cancel": "Nullañ", "report.block": "Stankañ", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Ne welo ket ho kemennadoù ha ne c'hello ket ho heuliañ ken. Gouzout a raio eo bet stanket ganeoc'h.", "report.categories.other": "Other", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", + "report.category.title": "Lârit deomp petra c'hoarvez gant {type}", "report.category.title_account": "profil", - "report.category.title_status": "post", + "report.category.title_status": "ar c'hemennad-mañ", "report.close": "Graet", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Treuzkas da: {target}", "report.forward_hint": "War ur servijer all emañ ar c'hont-se. Kas dezhañ un adskrid disanv eus an danevell ivez?", "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Gwelet ho kemennadoù ha ho heuliañ a c'hello ha ne ouezo ket eo bet kuzhet ganeoc'h.", "report.next": "Next", "report.placeholder": "Askelennoù ouzhpenn", "report.reasons.dislike": "I don't like it", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Den ebet n'eus skignet an toud-mañ c'hoazh. Pa vo graet gant unan bennak e vo diskouezet amañ.", "status.redraft": "Diverkañ ha skrivañ en-dro", "status.remove_bookmark": "Dilemel ar sined", + "status.replied_to": "Replied to {name}", "status.reply": "Respont", "status.replyAll": "Respont d'ar gaozeadenn", "status.report": "Disklêriañ @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Diskouez muioc'h", "status.show_more_all": "Diskouez miuoc'h evit an holl", "status.show_original": "Show original", - "status.show_thread": "Diskouez ar gaozeadenn", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Dihegerz", "status.unmute_conversation": "Diguzhat ar gaozeadenn", "status.unpin": "Dispilhennañ eus ar profil", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index c6575e85a4..c21e2c84d2 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -39,7 +39,7 @@ "account.follows.empty": "Aquest usuari encara no segueix ningú.", "account.follows_you": "Et segueix", "account.hide_reblogs": "Amaga els impulsos de @{name}", - "account.joined": "Membre des de {date}", + "account.joined_short": "Joined", "account.languages": "Canviar les llengües subscrits", "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", @@ -79,18 +79,23 @@ "audio.hide": "Amaga l'àudio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.copy_stacktrace": "Copiar l'informe d'error", + "bundle_column_error.error.body": "No s'ha pogut renderitzar la pàgina sol·licitada. Podría ser degut a un error en el nostre codi o un problema de compatibilitat del navegador.", "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.body": "Hi ha hagut un error al intentar carregar aquesta pàgina. Això podria ser degut a un problem temporal amb la teva connexió a internet o amb aquest servidor.", + "bundle_column_error.network.title": "Error de xarxa", "bundle_column_error.retry": "Tornar-ho a provar", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Torna a Inici", + "bundle_column_error.routing.body": "No es pot trobar la pàgina sol·licitada. Estàs segur que la URL de la barra d'adreces és correcte?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", "bundle_modal_error.retry": "Tornar-ho a provar", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Quant a", "column.blocks": "Usuaris bloquejats", "column.bookmarks": "Marcadors", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Publicacions fixades", "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguretat", "not_signed_in_indicator.not_signed_in": "Necessites registrar-te per a accedir aquest recurs.", "notification.admin.report": "{name} ha reportat {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Encara ningú no ha impulsat aquesta publicació. Quan algú ho faci, apareixeran aquí.", "status.redraft": "Esborra-la i reescriure-la", "status.remove_bookmark": "Suprimeix el marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Respon", "status.replyAll": "Respon al fil", "status.report": "Denuncia @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar-ne més", "status.show_more_all": "Mostrar-ne més per a tot", "status.show_original": "Mostra l'original", - "status.show_thread": "Mostra el fil", "status.translate": "Tradueix", - "status.translated_from": "Traduït del: {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index d4fe8637ba..06664597ed 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -39,7 +39,7 @@ "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.", "account.follows_you": "شوێنکەوتووەکانت", "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}", - "account.joined": "بەشداری {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە", "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "داخستن", "bundle_modal_error.message": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.", "bundle_modal_error.retry": "دووبارە تاقی بکەوە", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "بەکارهێنەرە بلۆککراوەکان", "column.bookmarks": "نیشانەکان", @@ -379,6 +384,7 @@ "navigation_bar.pins": "توتی چەسپاو", "navigation_bar.preferences": "پەسەندەکان", "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک", + "navigation_bar.search": "Search", "navigation_bar.security": "ئاسایش", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "کەس ئەم توتەی دووبارە نەتوتاندوە ،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.", "status.redraft": "سڕینەوەی و دووبارە ڕەشنووس", "status.remove_bookmark": "لابردنی نیشانه", + "status.replied_to": "Replied to {name}", "status.reply": "وەڵام", "status.replyAll": "بە نووسراوە وەڵام بدەوە", "status.report": "گوزارشت @{name}", @@ -578,9 +585,8 @@ "status.show_more": "زیاتر نیشان بدە", "status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی", "status.show_original": "Show original", - "status.show_thread": "نیشاندانی گفتوگۆ", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "بەردەست نیە", "status.unmute_conversation": "گفتوگۆی بێدەنگ", "status.unpin": "لە سەرەوە لایبە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 1794cfd959..4be8006655 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -39,7 +39,7 @@ "account.follows.empty": "St'utilizatore ùn seguita nisunu.", "account.follows_you": "Vi seguita", "account.hide_reblogs": "Piattà spartere da @{name}", - "account.joined": "Quì dapoi {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "A prupietà di stu ligame hè stata verificata u {date}", "account.locked_info": "U statutu di vita privata di u contu hè chjosu. U pruprietariu esamina manualmente e dumande d'abbunamentu.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Chjudà", "bundle_modal_error.message": "C'hè statu un prublemu caricandu st'elementu.", "bundle_modal_error.retry": "Pruvà torna", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Utilizatori bluccati", "column.bookmarks": "Segnalibri", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Statuti puntarulati", "navigation_bar.preferences": "Preferenze", "navigation_bar.public_timeline": "Linea pubblica glubale", + "navigation_bar.search": "Search", "navigation_bar.security": "Sicurità", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Per avà nisunu hà spartutu u statutu. Quandu qualch'unu u sparterà, u so contu sarà mustratu quì.", "status.redraft": "Sguassà è riscrive", "status.remove_bookmark": "Toglie segnalibru", + "status.replied_to": "Replied to {name}", "status.reply": "Risponde", "status.replyAll": "Risponde à tutti", "status.report": "Palisà @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Slibrà", "status.show_more_all": "Slibrà tuttu", "status.show_original": "Show original", - "status.show_thread": "Vede u filu", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Micca dispunibule", "status.unmute_conversation": "Ùn piattà più a cunversazione", "status.unpin": "Spuntarulà da u prufile", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index c0dabc26bc..5ccbf73dc3 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -20,14 +20,14 @@ "account.block_domain": "Blokovat doménu {domain}", "account.blocked": "Blokován", "account.browse_more_on_origin_server": "Více na původním profilu", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Vybrat žádost o následování", "account.direct": "Poslat @{name} přímou zprávu", "account.disable_notifications": "Zrušit upozorňování na příspěvky @{name}", "account.domain_blocked": "Doména blokována", "account.edit_profile": "Upravit profil", "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", - "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_at": "Poslední příspěvek na {date}", "account.featured_tags.last_status_never": "Žádné příspěvky", "account.featured_tags.title": "Hlavní hashtagy {name}", "account.follow": "Sledovat", @@ -39,7 +39,7 @@ "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od @{name}", - "account.joined": "Založen {date}", + "account.joined_short": "Joined", "account.languages": "Změnit odebírané jazyky", "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}", "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", @@ -79,18 +79,23 @@ "audio.hide": "Skrýt zvuk", "autosuggest_hashtag.per_week": "{count} za týden", "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopírovat zprávu o chybě", + "bundle_column_error.error.body": "Požadovanou stránku nelze vykreslit. Může to být způsobeno chybou v našem kódu nebo problémem s kompatibilitou prohlížeče.", + "bundle_column_error.error.title": "Ale ne!", + "bundle_column_error.network.body": "Při pokusu o načtení této stránky došlo k chybě. To může být způsobeno dočasným problémem s připojením k Internetu nebo k tomuto serveru.", + "bundle_column_error.network.title": "Chyba sítě", "bundle_column_error.retry": "Zkuste to znovu", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Zpět na domovskou stránku", + "bundle_column_error.routing.body": "Požadovaná stránka nebyla nalezena. Opravdu je adresa správná?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zavřít", "bundle_modal_error.message": "Při načítání této komponenty se něco pokazilo.", "bundle_modal_error.retry": "Zkusit znovu", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "O aplikaci", "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Připnuté příspěvky", "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", + "navigation_bar.search": "Search", "navigation_bar.security": "Zabezpečení", "not_signed_in_indicator.not_signed_in": "Pro přístup k tomuto zdroji se musíte přihlásit.", "notification.admin.report": "Uživatel {name} nahlásil {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Tento příspěvek ještě nikdo neboostnul. Pokud to někdo udělá, zobrazí se zde.", "status.redraft": "Smazat a přepsat", "status.remove_bookmark": "Odstranit ze záložek", + "status.replied_to": "Replied to {name}", "status.reply": "Odpovědět", "status.replyAll": "Odpovědět na vlákno", "status.report": "Nahlásit @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Zobrazit více", "status.show_more_all": "Zobrazit více pro všechny", "status.show_original": "Zobrazit původní", - "status.show_thread": "Zobrazit vlákno", "status.translate": "Přeložit", - "status.translated_from": "Přeloženo z {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index b6ef7cb041..7b5387fa16 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -39,7 +39,7 @@ "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", "account.follows_you": "Yn eich dilyn chi", "account.hide_reblogs": "Cuddio bwstiau o @{name}", - "account.joined": "Ymunodd {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}", "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Cau", "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", "bundle_modal_error.retry": "Ceiswich eto", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Tudalnodau", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Postiadau wedi eu pinio", "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", + "navigation_bar.search": "Search", "navigation_bar.security": "Diogelwch", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", "status.redraft": "Dileu & ailddrafftio", "status.remove_bookmark": "Tynnu'r tudalnod", + "status.replied_to": "Replied to {name}", "status.reply": "Ateb", "status.replyAll": "Ateb i edefyn", "status.report": "Adrodd @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Dangos mwy", "status.show_more_all": "Dangos mwy i bawb", "status.show_original": "Show original", - "status.show_thread": "Dangos edefyn", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Dim ar gael", "status.unmute_conversation": "Dad-dawelu sgwrs", "status.unpin": "Dadbinio o'r proffil", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 25bc52289e..b62d992973 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -39,7 +39,7 @@ "account.follows.empty": "Denne bruger følger ikke nogen endnu.", "account.follows_you": "Følger dig", "account.hide_reblogs": "Skjul boosts fra @{name}", - "account.joined": "Tilmeldt {date}", + "account.joined_short": "Joined", "account.languages": "Skift abonnementssprog", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", @@ -79,18 +79,23 @@ "audio.hide": "Skjul lyd", "autosuggest_hashtag.per_week": "{count} pr. uge", "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopiér fejlrapport", + "bundle_column_error.error.body": "Den anmodede side kunne ikke gengives. Dette kan skyldes flere typer fejl.", + "bundle_column_error.error.title": "Åh nej!", + "bundle_column_error.network.body": "En fejl opstod under forsøget på at indlæse denne side. Dette kan skyldes flere typer af fejl.", + "bundle_column_error.network.title": "Netværksfejl", "bundle_column_error.retry": "Forsøg igen", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Retur til hjem", + "bundle_column_error.routing.body": "Den anmodede side kunne ikke findes. Sikker på, at URL'en er korrekt?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", "bundle_modal_error.retry": "Forsøg igen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Om", "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Fastgjorte indlæg", "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", + "navigation_bar.search": "Search", "navigation_bar.security": "Sikkerhed", "not_signed_in_indicator.not_signed_in": "Man skal logge ind for at tilgå denne ressource.", "notification.admin.report": "{name} anmeldte {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ingen har endnu boostet dette indlæg. Når nogen gør, vil det fremgå hér.", "status.redraft": "Slet og omformulér", "status.remove_bookmark": "Fjern bogmærke", + "status.replied_to": "Replied to {name}", "status.reply": "Besvar", "status.replyAll": "Besvar alle", "status.report": "Anmeld @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Vis mere", "status.show_more_all": "Vis mere for alle", "status.show_original": "Vis original", - "status.show_thread": "Vis tråd", "status.translate": "Oversæt", - "status.translated_from": "Oversat fra {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 78d43a4483..c0f385b666 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -27,9 +27,9 @@ "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", "account.endorse": "Auf Profil hervorheben", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Letzter Beitrag am {date}", + "account.featured_tags.last_status_never": "Keine Beiträge", + "account.featured_tags.title": "{name}'s vorgestellte Hashtags", "account.follow": "Folgen", "account.followers": "Follower", "account.followers.empty": "Diesem Profil folgt noch niemand.", @@ -39,7 +39,7 @@ "account.follows.empty": "Diesem Profil folgt niemand", "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", - "account.joined": "Beigetreten am {date}", + "account.joined_short": "Joined", "account.languages": "Abonnierte Sprachen ändern", "account.link_verified_on": "Diesem Profil folgt niemand", "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", @@ -79,18 +79,23 @@ "audio.hide": "Audio stummschalten", "autosuggest_hashtag.per_week": "{count} pro Woche", "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", - "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.copy_stacktrace": "Fehlerbericht kopieren", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Oh nein!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Netzwerkfehler", "bundle_column_error.retry": "Erneut versuchen", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Zurück zur Startseite", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Schließen", "bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.", "bundle_modal_error.retry": "Erneut versuchen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Über", "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", @@ -144,7 +149,7 @@ "confirmations.block.block_and_report": "Blockieren und melden", "confirmations.block.confirm": "Blockieren", "confirmations.block.message": "Bist du dir sicher, dass du {name} blockieren möchtest?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.confirm": "Anfrage zurückziehen", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Löschen", "confirmations.delete.message": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Angeheftete Beiträge", "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", + "navigation_bar.search": "Search", "navigation_bar.security": "Sicherheit", "not_signed_in_indicator.not_signed_in": "Sie müssen sich anmelden, um diese Funktion zu nutzen.", "notification.admin.report": "{target} wurde von {name} gemeldet", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Diesen Beitrag hat noch niemand geteilt. Sobald es jemand tut, wird diese Person hier angezeigt.", "status.redraft": "Löschen und neu erstellen", "status.remove_bookmark": "Lesezeichen entfernen", + "status.replied_to": "Replied to {name}", "status.reply": "Antworten", "status.replyAll": "Allen antworten", "status.report": "@{name} melden", @@ -578,9 +585,8 @@ "status.show_more": "Mehr anzeigen", "status.show_more_all": "Alle Inhaltswarnungen aufklappen", "status.show_original": "Original anzeigen", - "status.show_thread": "Zeige Konversation", "status.translate": "Übersetzen", - "status.translated_from": "Aus {lang} übersetzt", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung von Konversation aufheben", "status.unpin": "Vom Profil lösen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 9e5462f7fe..9cca24d191 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -689,16 +689,8 @@ { "descriptors": [ { - "defaultMessage": "Show thread", - "id": "status.show_thread" - }, - { - "defaultMessage": "Read more", - "id": "status.read_more" - }, - { - "defaultMessage": "Translated from {lang}", - "id": "status.translated_from" + "defaultMessage": "Translated from {lang} using {provider}", + "id": "status.translated_from_with" }, { "defaultMessage": "Show original", @@ -708,6 +700,10 @@ "defaultMessage": "Translate", "id": "status.translate" }, + { + "defaultMessage": "Read more", + "id": "status.read_more" + }, { "defaultMessage": "Show more", "id": "status.show_more" @@ -756,6 +752,10 @@ { "defaultMessage": "{name} boosted", "id": "status.reblogged_by" + }, + { + "defaultMessage": "Replied to {name}", + "id": "status.replied_to" } ], "path": "app/javascript/mastodon/components/status.json" @@ -1204,8 +1204,8 @@ "id": "account.badges.group" }, { - "defaultMessage": "Joined {date}", - "id": "account.joined" + "defaultMessage": "Joined", + "id": "account.joined_short" } ], "path": "app/javascript/mastodon/features/account/components/header.json" @@ -1273,6 +1273,39 @@ ], "path": "app/javascript/mastodon/features/bookmarked_statuses/index.json" }, + { + "descriptors": [ + { + "defaultMessage": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "id": "closed_registrations_modal.description" + }, + { + "defaultMessage": "Signing up on Mastodon", + "id": "closed_registrations_modal.title" + }, + { + "defaultMessage": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "id": "closed_registrations_modal.preamble" + }, + { + "defaultMessage": "On this server", + "id": "interaction_modal.on_this_server" + }, + { + "defaultMessage": "On a different server", + "id": "interaction_modal.on_another_server" + }, + { + "defaultMessage": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "id": "closed_registrations.other_server_instructions" + }, + { + "defaultMessage": "Find another server", + "id": "closed_registrations_modal.find_another_server" + } + ], + "path": "app/javascript/mastodon/features/closed_registrations_modal/index.json" + }, { "descriptors": [ { @@ -2525,6 +2558,10 @@ "defaultMessage": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "id": "interaction_modal.description.follow" }, + { + "defaultMessage": "Create account", + "id": "sign_in_banner.create_account" + }, { "defaultMessage": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "id": "interaction_modal.preamble" @@ -2537,10 +2574,6 @@ "defaultMessage": "Sign in", "id": "sign_in_banner.sign_in" }, - { - "defaultMessage": "Create account", - "id": "sign_in_banner.create_account" - }, { "defaultMessage": "On a different server", "id": "interaction_modal.on_another_server" @@ -4084,6 +4117,10 @@ { "defaultMessage": "About", "id": "navigation_bar.about" + }, + { + "defaultMessage": "Search", + "id": "navigation_bar.search" } ], "path": "app/javascript/mastodon/features/ui/components/navigation_panel.json" @@ -4103,6 +4140,10 @@ }, { "descriptors": [ + { + "defaultMessage": "Create account", + "id": "sign_in_banner.create_account" + }, { "defaultMessage": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "id": "sign_in_banner.text" @@ -4110,10 +4151,6 @@ { "defaultMessage": "Sign in", "id": "sign_in_banner.sign_in" - }, - { - "defaultMessage": "Create account", - "id": "sign_in_banner.create_account" } ], "path": "app/javascript/mastodon/features/ui/components/sign_in_banner.json" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 476250b379..6bf6cabaa5 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -39,7 +39,7 @@ "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.", "account.follows_you": "Σε ακολουθεί", "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}", - "account.joined": "Μέλος από τις {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε την {date}", "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού είναι κλειδωμένη. Ο ιδιοκτήτης επιβεβαιώνει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.", @@ -79,18 +79,23 @@ "audio.hide": "Απόκρυψη αρχείου ήχου", "autosuggest_hashtag.per_week": "{count} ανα εβδομάδα", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Αντιγραφή αναφοράς σφάλματος", + "bundle_column_error.error.body": "Δεν ήταν δυνατή η απόδοση της σελίδας που ζητήσατε. Μπορεί να οφείλεται σε σφάλμα στον κώδικά μας ή σε πρόβλημα συμβατότητας του προγράμματος περιήγησης.", + "bundle_column_error.error.title": "Ωχ όχι!", + "bundle_column_error.network.body": "Παρουσιάστηκε σφάλμα κατά την προσπάθεια φόρτωσης αυτής της σελίδας. Αυτό θα μπορούσε να οφείλεται σε ένα προσωρινό πρόβλημα με τη σύνδεσή σας στο διαδίκτυο ή σε αυτόν τον διακομιστή.", + "bundle_column_error.network.title": "Σφάλμα δικτύου", "bundle_column_error.retry": "Δοκίμασε ξανά", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Μετάβαση πίσω στην αρχική σελίδα", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Κλείσιμο", "bundle_modal_error.message": "Κάτι πήγε στραβά κατά τη φόρτωση του στοιχείου.", "bundle_modal_error.retry": "Δοκίμασε ξανά", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Σχετικά με", "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Καρφιτσωμένα τουτ", "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", + "navigation_bar.search": "Search", "navigation_bar.security": "Ασφάλεια", "not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείτε για να αποκτήσετε πρόσβαση σε αυτόν τον πόρο.", "notification.admin.report": "{name} ανέφερε {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Κανείς δεν προώθησε αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.", "status.redraft": "Σβήσε & ξαναγράψε", "status.remove_bookmark": "Αφαίρεση σελιδοδείκτη", + "status.replied_to": "Replied to {name}", "status.reply": "Απάντησε", "status.replyAll": "Απάντησε στην συζήτηση", "status.report": "Κατάγγειλε @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Δείξε περισσότερα", "status.show_more_all": "Δείξε περισσότερα για όλα", "status.show_original": "Εμφάνιση αρχικού", - "status.show_thread": "Εμφάνιση νήματος", "status.translate": "Μετάφραση", - "status.translated_from": "Μεταφράστηκε από {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Μη διαθέσιμα", "status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index b6f1e0d58c..c4bfc40b1d 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 10fe869c6a..29b63ff0bd 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index a6a80bc020..cf66a5af36 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -39,7 +39,7 @@ "account.follows.empty": "La uzanto ankoraŭ ne sekvas iun ajn.", "account.follows_you": "Sekvas vin", "account.hide_reblogs": "Kaŝi la plusendojn de @{name}", - "account.joined": "Kuniĝis {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Fermi", "bundle_modal_error.message": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", "bundle_modal_error.retry": "Provu refoje", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Alpinglitaj mesaĝoj", "navigation_bar.preferences": "Preferoj", "navigation_bar.public_timeline": "Fratara templinio", + "navigation_bar.search": "Search", "navigation_bar.security": "Sekureco", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} raportis {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ankoraŭ neniu plusendis la mesaĝon. Kiam iu faras tion, ili aperos ĉi tie.", "status.redraft": "Forigi kaj reskribi", "status.remove_bookmark": "Forigi legosignon", + "status.replied_to": "Replied to {name}", "status.reply": "Respondi", "status.replyAll": "Respondi al la fadeno", "status.report": "Raporti @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Montri pli", "status.show_more_all": "Montri pli ĉiun", "status.show_original": "Show original", - "status.show_thread": "Montri la mesaĝaron", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nedisponebla", "status.unmute_conversation": "Malsilentigi la konversacion", "status.unpin": "Depingli de profilo", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index c2ac354928..f157022b8d 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -39,7 +39,7 @@ "account.follows.empty": "Todavía este usuario no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar adhesiones de @{name}", - "account.joined": "En este servidor desde {date}", + "account.joined_short": "Joined", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "La propiedad de este enlace fue verificada el {date}", "account.locked_info": "Esta cuenta es privada. El propietario manualmente revisa quién puede seguirle.", @@ -79,18 +79,23 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar informe de error", + "bundle_column_error.error.body": "La página solicitada no pudo ser cargada. Podría deberse a un error de programación en nuestro código o a un problema de compatibilidad con el navegador web.", + "bundle_column_error.error.title": "¡Epa!", + "bundle_column_error.network.body": "Se produjo un error al intentar cargar esta página. Esto puede deberse a un problema temporal con tu conexión a internet o a este servidor.", + "bundle_column_error.network.title": "Error de red", "bundle_column_error.retry": "Intentá de nuevo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Volver al inicio", + "bundle_column_error.routing.body": "No se pudo encontrar la página solicitada. ¿Estás seguro que la dirección web es correcta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Intentá de nuevo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Información", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Mensajes fijados", "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} denunció a {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Todavía nadie adhirió a este mensaje. Cuando alguien lo haga, se mostrará acá.", "status.redraft": "Eliminar mensaje original y editarlo", "status.remove_bookmark": "Quitar marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Denunciar a @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", - "status.show_thread": "Mostrar hilo", "status.translate": "Traducir", - "status.translated_from": "Traducido desde el {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index a667c68031..6f69cbabc2 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -27,9 +27,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en mi perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Última publicación el {date}", + "account.featured_tags.last_status_never": "Sin publicaciones", + "account.featured_tags.title": "Etiquetas destacadas de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", @@ -39,7 +39,7 @@ "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", - "account.joined": "Se unió el {date}", + "account.joined_short": "Joined", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Toots fijados", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Reportar", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", - "status.show_thread": "Mostrar hilo", "status.translate": "Traducir", - "status.translated_from": "Traducido del {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 8a8462facb..ec299cf1e3 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -39,7 +39,7 @@ "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", - "account.joined": "Se unió el {date}", + "account.joined_short": "Joined", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Publicaciones fijadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Línea de tiempo federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Reportar", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar más", "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", - "status.show_thread": "Mostrar hilo", "status.translate": "Traducir", - "status.translated_from": "Traducido del {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index a660a9f958..b483b61a8a 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -39,7 +39,7 @@ "account.follows.empty": "See kasutaja ei jälgi veel kedagi.", "account.follows_you": "Jälgib Teid", "account.hide_reblogs": "Peida upitused kasutajalt @{name}", - "account.joined": "Liitus {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Selle lingi autorsust kontrolliti {date}", "account.locked_info": "Selle konto privaatsussätteks on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Sulge", "bundle_modal_error.message": "Selle komponendi laadimisel läks midagi viltu.", "bundle_modal_error.retry": "Proovi uuesti", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokeeritud kasutajad", "column.bookmarks": "Järjehoidjad", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Kinnitatud tuutid", "navigation_bar.preferences": "Eelistused", "navigation_bar.public_timeline": "Föderatiivne ajajoon", + "navigation_bar.search": "Search", "navigation_bar.security": "Turvalisus", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Keegi pole seda tuuti veel upitanud. Kui keegi upitab, näed seda siin.", "status.redraft": "Kustuta & alga uuesti", "status.remove_bookmark": "Eemalda järjehoidja", + "status.replied_to": "Replied to {name}", "status.reply": "Vasta", "status.replyAll": "Vasta lõimele", "status.report": "Raporteeri @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Näita veel", "status.show_more_all": "Näita enam kõigile", "status.show_original": "Show original", - "status.show_thread": "Kuva lõim", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Pole saadaval", "status.unmute_conversation": "Ära vaigista vestlust", "status.unpin": "Kinnita profiililt lahti", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index f8ddbd6894..08263367c0 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -39,7 +39,7 @@ "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.", "account.follows_you": "Jarraitzen dizu", "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak", - "account.joined": "{date}(e)an elkartua", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}", "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Itxi", "bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.", "bundle_modal_error.retry": "Saiatu berriro", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Finkatutako bidalketak", "navigation_bar.preferences": "Hobespenak", "navigation_bar.public_timeline": "Federatutako denbora-lerroa", + "navigation_bar.search": "Search", "navigation_bar.security": "Segurtasuna", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Inork ez dio bultzada eman bidalketa honi oraindik. Inork egiten badu, hemen agertuko da.", "status.redraft": "Ezabatu eta berridatzi", "status.remove_bookmark": "Kendu laster-marka", + "status.replied_to": "Replied to {name}", "status.reply": "Erantzun", "status.replyAll": "Erantzun harian", "status.report": "Salatu @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Erakutsi gehiago", "status.show_more_all": "Erakutsi denetarik gehiago", "status.show_original": "Show original", - "status.show_thread": "Erakutsi haria", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ez eskuragarri", "status.unmute_conversation": "Desmututu elkarrizketa", "status.unpin": "Desfinkatu profiletik", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index f4a4d5efa1..9788de6907 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -39,7 +39,7 @@ "account.follows.empty": "این کاربر هنوز پی‌گیر کسی نیست.", "account.follows_you": "پی می‌گیردتان", "account.hide_reblogs": "نهفتن تقویت‌های ‎@{name}", - "account.joined": "پیوسته از {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد", "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "بستن", "bundle_modal_error.message": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", "bundle_modal_error.retry": "تلاش دوباره", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانک‌ها", @@ -379,6 +384,7 @@ "navigation_bar.pins": "فرسته‌های سنجاق شده", "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "خط زمانی همگانی", + "navigation_bar.search": "Search", "navigation_bar.security": "امنیت", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "هنوز هیچ کسی این فرسته را تقویت نکرده است. وقتی کسی چنین کاری کند، این‌جا نمایش داده خواهد شد.", "status.redraft": "حذف و بازنویسی", "status.remove_bookmark": "برداشتن نشانک", + "status.replied_to": "Replied to {name}", "status.reply": "پاسخ", "status.replyAll": "پاسخ به رشته", "status.report": "گزارش ‎@{name}", @@ -578,9 +585,8 @@ "status.show_more": "نمایش بیشتر", "status.show_more_all": "نمایش بیشتر همه", "status.show_original": "Show original", - "status.show_thread": "نمایش رشته", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "ناموجود", "status.unmute_conversation": "رفع خموشی گفت‌وگو", "status.unpin": "برداشتن سنجاق از نمایه", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index c0ff844cca..bd7b7f8ac8 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderoidut palvelimet", + "about.contact": "Yhteystiedot:", + "about.domain_blocks.comment": "Syy", + "about.domain_blocks.domain": "Verkkotunnus", + "about.domain_blocks.preamble": "Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle.", + "about.domain_blocks.severity": "Vakavuus", + "about.domain_blocks.silenced.explanation": "Et yleensä näe profiileja ja sisältöä tältä palvelimelta, ellet nimenomaisesti etsi tai valitse sitä seuraamalla.", + "about.domain_blocks.silenced.title": "Rajoitettu", + "about.domain_blocks.suspended.explanation": "Tämän palvelimen tietoja ei käsitellä, tallenneta tai vaihdeta, mikä tekee käyttäjän kanssa vuorovaikutuksen tai yhteydenpidon mahdottomaksi tällä palvelimella.", + "about.domain_blocks.suspended.title": "Keskeytetty", + "about.not_available": "Näitä tietoja ei ole julkaistu tällä palvelimella.", + "about.powered_by": "Hajautettu sosiaalinen media, tarjoaa {mastodon}", + "about.rules": "Palvelimen säännöt", "account.account_note_header": "Muistiinpano", "account.add_or_remove_from_list": "Lisää tai poista listoilta", "account.badges.bot": "Botti", @@ -20,16 +20,16 @@ "account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}", "account.blocked": "Estetty", "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Peruuta seurantapyyntö", "account.direct": "Pikaviesti käyttäjälle @{name}", "account.disable_notifications": "Lopeta @{name}:n julkaisuista ilmoittaminen", "account.domain_blocked": "Verkko-osoite piilotettu", "account.edit_profile": "Muokkaa profiilia", "account.enable_notifications": "Ilmoita @{name}:n julkaisuista", "account.endorse": "Suosittele profiilissasi", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Viimeisin viesti {date}", + "account.featured_tags.last_status_never": "Ei viestejä", + "account.featured_tags.title": "{name} esillä olevat hashtagit", "account.follow": "Seuraa", "account.followers": "Seuraajat", "account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.", @@ -39,8 +39,8 @@ "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", "account.follows_you": "Seuraa sinua", "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}", - "account.joined": "Liittynyt {date}", - "account.languages": "Change subscribed languages", + "account.joined_short": "Joined", + "account.languages": "Vaihda tilattuja kieliä", "account.link_verified_on": "Tämän linkin omistaja tarkistettiin {date}", "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.", "account.media": "Media", @@ -79,19 +79,24 @@ "audio.hide": "Piilota ääni", "autosuggest_hashtag.per_week": "{count} viikossa", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopioi virheraportti", + "bundle_column_error.error.body": "Pyydettyä sivua ei voitu hahmontaa. Se voi johtua virheestä koodissamme tai selaimen yhteensopivuudessa.", + "bundle_column_error.error.title": "Voi ei!", + "bundle_column_error.network.body": "Sivun lataamisessa tapahtui virhe. Tämä voi johtua tilapäisestä Internet-yhteyden tai tämän palvelimen ongelmasta.", + "bundle_column_error.network.title": "Verkkovirhe", "bundle_column_error.retry": "Yritä uudestaan", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Palaa takaisin kotiin", + "bundle_column_error.routing.body": "Pyydettyä sivua ei löytynyt. Oletko varma, että osoitepalkin URL-osoite on oikein?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sulje", "bundle_modal_error.message": "Jokin meni vikaan komponenttia ladattaessa.", "bundle_modal_error.retry": "Yritä uudelleen", - "column.about": "About", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "Tietoja", "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", @@ -144,8 +149,8 @@ "confirmations.block.block_and_report": "Estä ja raportoi", "confirmations.block.confirm": "Estä", "confirmations.block.message": "Haluatko varmasti estää käyttäjän {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Peruuta pyyntö", + "confirmations.cancel_follow_request.message": "Haluatko varmasti peruuttaa pyyntösi seurata käyttäjää {name}?", "confirmations.delete.confirm": "Poista", "confirmations.delete.message": "Haluatko varmasti poistaa tämän julkaisun?", "confirmations.delete_list.confirm": "Poista", @@ -169,18 +174,18 @@ "conversation.mark_as_read": "Merkitse luetuksi", "conversation.open": "Näytä keskustelu", "conversation.with": "{names} kanssa", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopioitu", + "copypaste.copy": "Kopioi", "directory.federated": "Koko tunnettu fediverse", "directory.local": "Vain palvelimelta {domain}", "directory.new_arrivals": "Äskettäin saapuneet", "directory.recently_active": "Hiljattain aktiiviset", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Nämä ovat uusimmat julkiset viestit ihmisiltä, joiden tilejä isännöi {domain}.", + "dismissable_banner.dismiss": "Hylkää", + "dismissable_banner.explore_links": "Näistä uutisista puhuvat ihmiset juuri nyt tällä ja muilla hajautetun verkon palvelimilla.", + "dismissable_banner.explore_statuses": "Nämä viestit juuri nyt tältä ja muilta hajautetun verkon palvelimilta ovat saamassa vetoa tältä palvelimelta.", + "dismissable_banner.explore_tags": "Nämä hashtagit juuri nyt ovat saamassa vetovoimaa tällä ja muilla hajautetun verkon palvelimilla olevien ihmisten keskuudessa.", + "dismissable_banner.public_timeline": "Nämä ovat viimeisimpiä julkisia viestejä ihmisiltä, jotka ovat tällä ja muilla hajautetun verkon palvelimilla, joista tämä palvelin tietää.", "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.", "embed.preview": "Se tulee näyttämään tältä:", "emoji_button.activity": "Aktiviteetit", @@ -254,14 +259,14 @@ "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikka tiliäsi ei ole lukittu, {domain}:n ylläpitäjien mielestä saatat haluta tarkistaa nämä seurauspyynnöt manuaalisesti.", "generic.saved": "Tallennettu", - "getting_started.directory": "Directory", + "getting_started.directory": "Hakemisto", "getting_started.documentation": "Käyttöohjeet", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "Mastodon on ilmainen, avoimen lähdekoodin ohjelmisto. Voit tarkastella lähdekoodia, osallistua tai raportoida ongelmista osoitteessa {repository}.", "getting_started.heading": "Näin pääset alkuun", "getting_started.invite": "Kutsu ihmisiä", - "getting_started.privacy_policy": "Privacy Policy", + "getting_started.privacy_policy": "Tietosuojakäytäntö", "getting_started.security": "Tiliasetukset", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Tietoja Mastodonista", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "tai {additional}", "hashtag.column_header.tag_mode.none": "ilman {additional}", @@ -278,18 +283,18 @@ "home.column_settings.show_replies": "Näytä vastaukset", "home.hide_announcements": "Piilota ilmoitukset", "home.show_announcements": "Näytä ilmoitukset", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Kun sinulla on tili Mastodonissa, voit lisätä tämän viestin suosikkeihin ja tallentaa sen myöhempää käyttöä varten.", + "interaction_modal.description.follow": "Kun sinulla on tili Mastodonissa, voit seurata {name} saadaksesi hänen viestejä sinun kotisyötteeseen.", + "interaction_modal.description.reblog": "Kun sinulla on tili Mastodonissa, voit tehostaa viestiä ja jakaa sen omien seuraajiesi kanssa.", + "interaction_modal.description.reply": "Kun sinulla on tili Mastodonissa, voit vastata tähän viestiin.", + "interaction_modal.on_another_server": "Toisella palvelimella", + "interaction_modal.on_this_server": "Tällä palvelimella", + "interaction_modal.other_server_instructions": "Yksinkertaisesti kopioi ja liitä tämä URL-osoite suosikki sovelluksen tai web-käyttöliittymän hakupalkkiin, jossa olet kirjautunut sisään.", + "interaction_modal.preamble": "Koska Mastodon on hajautettu, voit käyttää toisen Mastodon-palvelimen tai yhteensopivan alustan ylläpitämää tiliäsi, jos sinulla ei ole tiliä tällä palvelimella.", + "interaction_modal.title.favourite": "Suosikin {name} viesti", + "interaction_modal.title.follow": "Seuraa {name}", + "interaction_modal.title.reblog": "Tehosta {name} viestiä", + "interaction_modal.title.reply": "Vastaa {name} viestiin", "intervals.full.days": "{number, plural, one {# päivä} other {# päivää}}", "intervals.full.hours": "{number, plural, one {# tunti} other {# tuntia}}", "intervals.full.minutes": "{number, plural, one {# minuutti} other {# minuuttia}}", @@ -355,8 +360,8 @@ "mute_modal.duration": "Kesto", "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?", "mute_modal.indefinite": "Ikuisesti", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Tietoja", + "navigation_bar.apps": "Hanki sovellus", "navigation_bar.blocks": "Estetyt käyttäjät", "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", @@ -370,7 +375,7 @@ "navigation_bar.filters": "Mykistetyt sanat", "navigation_bar.follow_requests": "Seuraamispyynnöt", "navigation_bar.follows_and_followers": "Seurattavat ja seuraajat", - "navigation_bar.info": "About", + "navigation_bar.info": "Tietoja", "navigation_bar.keyboard_shortcuts": "Pikanäppäimet", "navigation_bar.lists": "Listat", "navigation_bar.logout": "Kirjaudu ulos", @@ -379,8 +384,9 @@ "navigation_bar.pins": "Kiinnitetyt viestit", "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", + "navigation_bar.search": "Search", "navigation_bar.security": "Turvallisuus", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Sinun täytyy kirjautua sisään päästäksesi käsiksi tähän resurssiin.", "notification.admin.report": "{name} ilmoitti {target}", "notification.admin.sign_up": "{name} rekisteröitynyt", "notification.favourite": "{name} tykkäsi viestistäsi", @@ -448,8 +454,8 @@ "privacy.public.short": "Julkinen", "privacy.unlisted.long": "Näkyvissä kaikille, mutta jättäen pois hakemisen mahdollisuus", "privacy.unlisted.short": "Listaamaton julkinen", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Viimeksi päivitetty {date}", + "privacy_policy.title": "Tietosuojakäytäntö", "refresh": "Päivitä", "regeneration_indicator.label": "Ladataan…", "regeneration_indicator.sublabel": "Kotinäkymääsi valmistellaan!", @@ -520,17 +526,17 @@ "search_results.nothing_found": "Näille hakusanoille ei löytynyt mitään", "search_results.statuses": "Viestit", "search_results.statuses_fts_disabled": "Viestien haku sisällön perusteella ei ole käytössä tällä Mastodon-palvelimella.", - "search_results.title": "Search for {q}", + "search_results.title": "Etsi {q}", "search_results.total": "{count, number} {count, plural, one {tulos} other {tulokset}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Palvelinta käyttäneet ihmiset viimeisen 30 päivän aikana (kuukauden aktiiviset käyttäjät)", + "server_banner.active_users": "aktiiviset käyttäjät", + "server_banner.administered_by": "Ylläpitäjä:", + "server_banner.introduction": "{domain} on osa hajautettua sosiaalista verkostoa, jonka tarjoaa {mastodon}.", + "server_banner.learn_more": "Lue lisää", + "server_banner.server_stats": "Palvelimen tilastot:", + "sign_in_banner.create_account": "Luo tili", + "sign_in_banner.sign_in": "Kirjaudu sisään", + "sign_in_banner.text": "Kirjaudu sisään seurataksesi profiileja tai hashtageja, lisätäksesi suosikkeihin, jakaaksesi viestejä ja vastataksesi niihin tai ollaksesi vuorovaikutuksessa tililläsi toisella palvelimella.", "status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}", "status.admin_status": "Avaa julkaisu moderointinäkymässä", "status.block": "Estä @{name}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Kukaan ei ole vielä buustannut tätä viestiä. Kun joku tekee niin, näkyy kyseinen henkilö tässä.", "status.redraft": "Poista ja palauta muokattavaksi", "status.remove_bookmark": "Poista kirjanmerkki", + "status.replied_to": "Replied to {name}", "status.reply": "Vastaa", "status.replyAll": "Vastaa ketjuun", "status.report": "Raportoi @{name}", @@ -577,16 +584,15 @@ "status.show_less_all": "Näytä vähemmän kaikista", "status.show_more": "Näytä lisää", "status.show_more_all": "Näytä lisää kaikista", - "status.show_original": "Show original", - "status.show_thread": "Näytä ketju", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.show_original": "Näytä alkuperäinen", + "status.translate": "Käännä", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ei saatavilla", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Vain valituilla kielillä julkaistut viestit näkyvät etusivullasi ja aikajanalla muutoksen jälkeen. Valitse ei mitään, jos haluat vastaanottaa viestejä kaikilla kielillä.", + "subscribed_languages.save": "Tallenna muutokset", + "subscribed_languages.target": "Vaihda tilatut kielet {target}", "suggestions.dismiss": "Hylkää ehdotus", "suggestions.header": "Saatat olla kiinnostunut myös…", "tabs_bar.federated_timeline": "Yleinen", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index aee14a62bd..d6de0df73a 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "Serveurs modérés", + "about.contact": "Contact :", + "about.domain_blocks.comment": "Motif :", + "about.domain_blocks.domain": "Domaine", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.title": "Suspendu", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.powered_by": "Réseau social décentralisé propulsé par {mastodon}", + "about.rules": "Règles du serveur", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Ajouter ou retirer des listes", "account.badges.bot": "Bot", @@ -20,16 +20,16 @@ "account.block_domain": "Bloquer le domaine {domain}", "account.blocked": "Bloqué·e", "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Retirer la demande d’abonnement", "account.direct": "Envoyer un message direct à @{name}", "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie quelque chose", "account.endorse": "Recommander sur votre profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Dernier message le {date}", + "account.featured_tags.last_status_never": "Aucun message", + "account.featured_tags.title": "Les hashtags en vedette de {name}", "account.follow": "Suivre", "account.followers": "Abonné·e·s", "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.", @@ -39,7 +39,7 @@ "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.", "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", - "account.joined": "Ici depuis {date}", + "account.joined_short": "Joined", "account.languages": "Changer les langues abonnées", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", @@ -81,16 +81,21 @@ "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Oh non !", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Erreur réseau", "bundle_column_error.retry": "Réessayer", "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.body": "La page demandée est introuvable. Êtes-vous sûr que l’URL dans la barre d’adresse est correcte ?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermer", "bundle_modal_error.message": "Une erreur s’est produite lors du chargement de ce composant.", "bundle_modal_error.retry": "Réessayer", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "À propos", "column.blocks": "Comptes bloqués", "column.bookmarks": "Marque-pages", @@ -280,8 +285,8 @@ "home.show_announcements": "Afficher les annonces", "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez booster ce message pour le partager avec vos propres abonné·e·s.", + "interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.", "interaction_modal.on_another_server": "Sur un autre serveur", "interaction_modal.on_this_server": "Sur ce serveur", "interaction_modal.other_server_instructions": "Copiez et collez simplement cette URL dans la barre de recherche de votre application préférée ou dans l’interface web où vous êtes connecté.", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Messages épinglés", "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", + "navigation_bar.search": "Search", "navigation_bar.security": "Sécurité", "not_signed_in_indicator.not_signed_in": "Vous devez vous connecter pour accéder à cette ressource.", "notification.admin.report": "{name} a signalé {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Personne n’a encore partagé ce message. Lorsque quelqu’un le fera, il apparaîtra ici.", "status.redraft": "Supprimer et réécrire", "status.remove_bookmark": "Retirer des marque-pages", + "status.replied_to": "Replied to {name}", "status.reply": "Répondre", "status.replyAll": "Répondre au fil", "status.report": "Signaler @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Déplier", "status.show_more_all": "Tout déplier", "status.show_original": "Afficher l’original", - "status.show_thread": "Montrer le fil", "status.translate": "Traduire", - "status.translated_from": "Traduit depuis {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Indisponible", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index ab1f1c23d1..84fe8f1c90 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Folget dy", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Registrearre op {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Slute", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Opnij probearje", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokkearre brûkers", "column.bookmarks": "Blêdwizers", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Fêstsette berjochten", "navigation_bar.preferences": "Foarkarren", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Fuortsmite en opnij opstelle", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reagearre", "status.replyAll": "Op elkenien reagearre", "status.report": "Jou @{name} oan", @@ -578,9 +585,8 @@ "status.show_more": "Mear sjen litte", "status.show_more_all": "Foar alles mear sjen litte", "status.show_original": "Show original", - "status.show_thread": "Petear sjen litte", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Net beskikber", "status.unmute_conversation": "Petear net mear negearre", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 004f1ce673..9cc62ddd0a 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.", "account.follows_you": "Do do leanúint", "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", - "account.joined": "Ina bhall ó {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Dún", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Bain triail as arís", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Cuntais choiscthe", "column.bookmarks": "Leabharmharcanna", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Níor threisigh éinne an phostáil seo fós. Nuair a threisigh duine éigin, beidh siad le feiceáil anseo.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Díphionnáil de do phróifíl", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 90efdf86b6..32030374f6 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Frithealaichean fo mhaorsainneachd", + "about.contact": "Fios thugainn:", + "about.domain_blocks.comment": "Adhbhar", + "about.domain_blocks.domain": "Àrainn", + "about.domain_blocks.preamble": "San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus eadar-ghìomh a ghabhail leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo.", + "about.domain_blocks.severity": "Donad", + "about.domain_blocks.silenced.explanation": "Chan fharsaingeachd, chan fhaic thu pròifilean agus susbaint an fhrithealaiche seo ach ma nì thu lorg no ma leanas tu air.", + "about.domain_blocks.silenced.title": "Cuingichte", + "about.domain_blocks.suspended.explanation": "Cha dèid dàta sam bith on fhrithealaiche seo a phròiseasadh, a stòradh no iomlaid agus chan urrainn do na cleachdaichean on fhrithealaiche sin conaltradh no eadar-ghnìomh a ghabhail an-seo.", + "about.domain_blocks.suspended.title": "’Na dhàil", + "about.not_available": "Cha deach am fiosrachadh seo a sholar air an fhrithealaiche seo.", + "about.powered_by": "Lìonra sòisealta sgaoilte le cumhachd {mastodon}", + "about.rules": "Riaghailtean an fhrithealaiche", "account.account_note_header": "Nòta", "account.add_or_remove_from_list": "Cuir ris no thoir air falbh o na liostaichean", "account.badges.bot": "Bot", @@ -20,16 +20,16 @@ "account.block_domain": "Bac an àrainn {domain}", "account.blocked": "’Ga bhacadh", "account.browse_more_on_origin_server": "Rùraich barrachd dheth air a’ phròifil thùsail", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Cuir d’ iarrtas leantainn dhan dàrna taobh", "account.direct": "Cuir teachdaireachd dhìreach gu @{name}", "account.disable_notifications": "Na cuir brath thugam tuilleadh nuair a chuireas @{name} post ris", "account.domain_blocked": "Chaidh an àrainn a bhacadh", "account.edit_profile": "Deasaich a’ phròifil", "account.enable_notifications": "Cuir brath thugam nuair a chuireas @{name} post ris", "account.endorse": "Brosnaich air a’ phròifil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Am post mu dheireadh {date}", + "account.featured_tags.last_status_never": "Gun phost", + "account.featured_tags.title": "Na tagaichean hais brosnaichte aig {name}", "account.follow": "Lean air", "account.followers": "Luchd-leantainn", "account.followers.empty": "Chan eil neach sam bith a’ leantainn air a’ chleachdaiche seo fhathast.", @@ -39,8 +39,8 @@ "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn air neach sam bith fhathast.", "account.follows_you": "’Gad leantainn", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", - "account.joined": "Air ballrachd fhaighinn {date}", - "account.languages": "Change subscribed languages", + "account.joined_short": "Joined", + "account.languages": "Atharraich fo-sgrìobhadh nan cànan", "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}", "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.", "account.media": "Meadhanan", @@ -79,19 +79,24 @@ "audio.hide": "Falaich an fhuaim", "autosuggest_hashtag.per_week": "{count} san t-seachdain", "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Dèan lethbhreac de aithris na mearachd", + "bundle_column_error.error.body": "Cha b’ urrainn dhuinn an duilleag a dh’iarr thu a reandaradh. Dh’fhaoidte gu bheil buga sa chòd againn no duilgheadas co-chòrdalachd leis a’ bhrabhsair.", + "bundle_column_error.error.title": "Ìoc!", + "bundle_column_error.network.body": "Thachair mearachd nuair a dh’fheuch sinn ris an duilleag seo a luchdadh. Dh’fhaoidte gu bheil duilgheadas sealach leis a’ cheangal agad ris an eadar-lìon no leis an fhrithealaiche seo.", + "bundle_column_error.network.title": "Mearachd lìonraidh", "bundle_column_error.retry": "Feuch ris a-rithist", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Dhachaigh", + "bundle_column_error.routing.body": "Cha do lorg sinn an duilleag a dh’iarr thu. A bheil thu cinnteach gu bheil an t-URL ann am bàr an t-seòlaidh mar bu chòir?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Dùin", "bundle_modal_error.message": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", "bundle_modal_error.retry": "Feuch ris a-rithist", - "column.about": "About", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "Mu dhèidhinn", "column.blocks": "Cleachdaichean bacte", "column.bookmarks": "Comharran-lìn", "column.community": "Loidhne-ama ionadail", @@ -144,8 +149,8 @@ "confirmations.block.block_and_report": "Bac ⁊ dèan gearan", "confirmations.block.confirm": "Bac", "confirmations.block.message": "A bheil thu cinnteach gu bheil thu airson {name} a bhacadh?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Cuir d’ iarrtas dhan dàrna taobh", + "confirmations.cancel_follow_request.message": "A bheil thu cinnteach gu bheil thu airson d’ iarrtas leantainn air {name} a chur dhan dàrna taobh?", "confirmations.delete.confirm": "Sguab às", "confirmations.delete.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", "confirmations.delete_list.confirm": "Sguab às", @@ -169,18 +174,18 @@ "conversation.mark_as_read": "Cuir comharra gun deach a leughadh", "conversation.open": "Seall an còmhradh", "conversation.with": "Còmhla ri {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Chaidh lethbhreac dheth a dhèanamh", + "copypaste.copy": "Dèan lethbhreac", "directory.federated": "On cho-shaoghal aithnichte", "directory.local": "O {domain} a-mhàin", "directory.new_arrivals": "Feadhainn ùra", "directory.recently_active": "Gnìomhach o chionn goirid", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Seo na postaichean poblach as ùire o dhaoine aig a bheil cunntas air {domain}.", + "dismissable_banner.dismiss": "Leig seachad", + "dismissable_banner.explore_links": "Seo na naidheachdan air a bhithear a’ bruidhinn an-dràsta fhèin air an fhrithealaiche seo is frithealaichean eile dhen lìonra sgaoilte.", + "dismissable_banner.explore_statuses": "Tha fèill air na postaichean seo on fhrithealaiche seo is frithealaichean eile dhen lìonra sgaoilte a’ fàs air an fhrithealaich seo an-dràsta fhèin.", + "dismissable_banner.explore_tags": "Tha fèill air na tagaichean hais seo a’ fàs an-dràsta fhèin air an fhrithealaich seo is frithealaichean eile dhen lìonra sgaoilte.", + "dismissable_banner.public_timeline": "Seo na postaichean poblach as ùire o dhaoine air an fhrithealaich seo is frithealaichean eile dhen lìonra sgaoilte air a bheil am frithealaiche seo eòlach.", "embed.instructions": "Leabaich am post seo san làrach-lìn agad is tu a’ dèanamh lethbhreac dhen chòd gu h-ìosal.", "embed.preview": "Seo an coltas a bhios air:", "emoji_button.activity": "Gnìomhachd", @@ -231,22 +236,22 @@ "explore.trending_links": "Naidheachdan", "explore.trending_statuses": "Postaichean", "explore.trending_tags": "Tagaichean hais", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Chan eil an roinn-seòrsa criathraidh iom seo chaidh dhan cho-theacs san do dh’inntrig thu am post seo. Ma tha thu airson am post a chriathradh sa cho-theacs seo cuideachd, feumaidh tu a’ chriathrag a dheasachadh.", + "filter_modal.added.context_mismatch_title": "Co-theacsa neo-iomchaidh!", + "filter_modal.added.expired_explanation": "Dh’fhalbh an ùine air an roinn-seòrsa criathraidh seo agus feumaidh tu an ceann-là crìochnachaidh atharrachadh mus cuir thu an sàs i.", + "filter_modal.added.expired_title": "Dh’fhalbh an ùine air a’ chriathrag!", + "filter_modal.added.review_and_configure": "Airson an roinn-seòrsa criathraidh seo a sgrùdadh ’s a rèiteachadh, tadhail air {settings_link}.", + "filter_modal.added.review_and_configure_title": "Roghainnean na criathraige", + "filter_modal.added.settings_link": "duilleag nan roghainnean", + "filter_modal.added.short_explanation": "Chaidh am post seo a chur ris an roinn-seòrsa criathraidh seo: {title}.", + "filter_modal.added.title": "Chaidh a’ chriathrag a chur ris!", + "filter_modal.select_filter.context_mismatch": "chan eil e iomchaidh dhan cho-theacs seo", + "filter_modal.select_filter.expired": "dh’fhalbh an ùine air", + "filter_modal.select_filter.prompt_new": "Roinn-seòrsa ùr: {name}", + "filter_modal.select_filter.search": "Lorg no cruthaich", + "filter_modal.select_filter.subtitle": "Cleachd roinn-seòrsa a tha ann no cruthaich tè ùr", + "filter_modal.select_filter.title": "Criathraich am post seo", + "filter_modal.title.status": "Criathraich post", "follow_recommendations.done": "Deiseil", "follow_recommendations.heading": "Lean air daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air inbhir na dachaighe agad. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!", @@ -254,14 +259,14 @@ "follow_request.reject": "Diùlt", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", "generic.saved": "Chaidh a shàbhaladh", - "getting_started.directory": "Directory", + "getting_started.directory": "Eòlaire", "getting_started.documentation": "Docamaideadh", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", + "getting_started.free_software_notice": "’S e bathar-bog saor le bun-tùs fosgailte a th’ ann am Mastodon. Chì thu am bun-tùs agus ’s urrainn dhut cuideachadh leis no aithris a dhèanamh air duilgheadasan air {repository}.", "getting_started.heading": "Toiseach", "getting_started.invite": "Thoir cuireadh do dhaoine", - "getting_started.privacy_policy": "Privacy Policy", + "getting_started.privacy_policy": "Poileasaidh prìobhaideachd", "getting_started.security": "Roghainnean a’ chunntais", - "getting_started.what_is_mastodon": "About Mastodon", + "getting_started.what_is_mastodon": "Mu Mhastodon", "hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.any": "no {additional}", "hashtag.column_header.tag_mode.none": "às aonais {additional}", @@ -278,18 +283,18 @@ "home.column_settings.show_replies": "Seall na freagairtean", "home.hide_announcements": "Falaich na brathan-fios", "home.show_announcements": "Seall na brathan-fios", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a chur ris na h-annsachdan airson innse dhan ùghdar gu bheil e a’ còrdadh dhut ’s a shàbhaladh do uaireigin eile.", + "interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut leantainn air {name} ach am faigh thu na postaichean aca air inbhir na dachaigh agad.", + "interaction_modal.description.reblog": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a bhrosnachadh gus a cho-roinneadh leis an luchd-leantainn agad fhèin.", + "interaction_modal.description.reply": "Le cunntas air Mastodon, ’s urrainn dhut freagairt a chur dhan phost seo.", + "interaction_modal.on_another_server": "Air frithealaiche eile", + "interaction_modal.on_this_server": "Air an frithealaiche seo", + "interaction_modal.other_server_instructions": "Dèan lethbhreac dhen URL seo is cuir ann am bàr nan lorg e san aplacaid as fheàrr leat no san eadar-aghaidh-lìn far a bheil thu air do chlàradh a-steach.", + "interaction_modal.preamble": "Air sgàth ’s gu bheil Mastodon sgaoilte, ’s urrainn dhut cunntas a chleachdadh a tha ’ga òstadh le frithealaiche Mastodon no le ùrlar co-chòrdail eile mur eil cunntas agad air an fhear seo.", + "interaction_modal.title.favourite": "Cuir am post aig {name} ris na h-annsachdan", + "interaction_modal.title.follow": "Lean air {name}", + "interaction_modal.title.reblog": "Brosnaich am post aig {name}", + "interaction_modal.title.reply": "Freagair dhan phost aig {name}", "intervals.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}", "intervals.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}}", "intervals.full.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}}", @@ -355,8 +360,8 @@ "mute_modal.duration": "Faide", "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?", "mute_modal.indefinite": "Gun chrìoch", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Mu dhèidhinn", + "navigation_bar.apps": "Faigh an aplacaid", "navigation_bar.blocks": "Cleachdaichean bacte", "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", @@ -370,7 +375,7 @@ "navigation_bar.filters": "Faclan mùchte", "navigation_bar.follow_requests": "Iarrtasan leantainn", "navigation_bar.follows_and_followers": "Dàimhean leantainn", - "navigation_bar.info": "About", + "navigation_bar.info": "Mu dhèidhinn", "navigation_bar.keyboard_shortcuts": "Grad-iuchraichean", "navigation_bar.lists": "Liostaichean", "navigation_bar.logout": "Clàraich a-mach", @@ -379,8 +384,9 @@ "navigation_bar.pins": "Postaichean prìnichte", "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", + "navigation_bar.search": "Search", "navigation_bar.security": "Tèarainteachd", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Feumaidh tu clàradh a-steach mus fhaigh thu cothrom air a’ ghoireas seo.", "notification.admin.report": "Rinn {name} mu {target}", "notification.admin.sign_up": "Chlàraich {name}", "notification.favourite": "Is annsa le {name} am post agad", @@ -448,8 +454,8 @@ "privacy.public.short": "Poblach", "privacy.unlisted.long": "Chì a h-uile duine e ach cha nochd e ann an gleusan rùrachaidh", "privacy.unlisted.short": "Falaichte o liostaichean", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "An t-ùrachadh mu dheireadh {date}", + "privacy_policy.title": "Poileasaidh prìobhaideachd", "refresh": "Ath-nuadhaich", "regeneration_indicator.label": "’Ga luchdadh…", "regeneration_indicator.sublabel": "Tha inbhir na dachaigh agad ’ga ullachadh!", @@ -520,17 +526,17 @@ "search_results.nothing_found": "Cha do lorg sinn dad dha na h-abairtean-luirg seo", "search_results.statuses": "Postaichean", "search_results.statuses_fts_disabled": "Chan eil lorg phostaichean a-rèir an susbaint an comas air an fhrithealaiche Mastodon seo.", - "search_results.title": "Search for {q}", + "search_results.title": "Lorg {q}", "search_results.total": "{count, number} {count, plural, one {toradh} two {thoradh} few {toraidhean} other {toradh}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Daoine a chleachd am frithealaiche seo rè an 30 latha mu dheireadh (Cleachdaichean gnìomhach gach mìos)", + "server_banner.active_users": "cleachdaichean gnìomhach", + "server_banner.administered_by": "Rianachd le:", + "server_banner.introduction": "Tha {domain} am measg an lìonraidh shòisealta sgaoilte le cumhachd {mastodon}.", + "server_banner.learn_more": "Barrachd fiosrachaidh", + "server_banner.server_stats": "Stadastaireachd an fhrithealaiche:", + "sign_in_banner.create_account": "Cruthaich cunntas", + "sign_in_banner.sign_in": "Clàraich a-steach", + "sign_in_banner.text": "Clàraich a-steach a leantainn air pròifilean no tagaichean hais, a’ cur postaichean ris na h-annsachdan ’s ’gan co-roinneadh is freagairt dhaibh no gabh gnìomh le cunntas o fhrithealaiche eile.", "status.admin_account": "Fosgail eadar-aghaidh na maorsainneachd dha @{name}", "status.admin_status": "Fosgail am post seo ann an eadar-aghaidh na maorsainneachd", "status.block": "Bac @{name}", @@ -546,7 +552,7 @@ "status.edited_x_times": "Chaidh a dheasachadh {count, plural, one {{counter} turas} two {{counter} thuras} few {{counter} tursan} other {{counter} turas}}", "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", - "status.filter": "Filter this post", + "status.filter": "Criathraich am post seo", "status.filtered": "Criathraichte", "status.hide": "Falaich am post", "status.history.created": "Chruthaich {name} {date} e", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Chan deach am post seo a bhrosnachadh le duine sam bith fhathast. Nuair a bhrosnaicheas cuideigin e, nochdaidh iad an-seo.", "status.redraft": "Sguab às ⁊ dèan dreachd ùr", "status.remove_bookmark": "Thoir an comharra-lìn air falbh", + "status.replied_to": "Replied to {name}", "status.reply": "Freagair", "status.replyAll": "Freagair dhan t-snàithlean", "status.report": "Dèan gearan mu @{name}", @@ -577,16 +584,15 @@ "status.show_less_all": "Seall nas lugha dhen a h-uile", "status.show_more": "Seall barrachd dheth", "status.show_more_all": "Seall barrachd dhen a h-uile", - "status.show_original": "Show original", - "status.show_thread": "Seall an snàithlean", - "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.show_original": "Seall an tionndadh tùsail", + "status.translate": "Eadar-theangaich", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Chan eil seo ri fhaighinn", "status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unpin": "Dì-phrìnich on phròifil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Cha nochd ach na postaichean sna cànanan a thagh thu air loidhnichean-ama na dachaigh ’s nan liostaichean às dèidh an atharrachaidh seo. Na tagh gin ma tha thu airson na postaichean uile fhaighinn ge b’ e dè an cànan.", + "subscribed_languages.save": "Sàbhail na h-atharraichean", + "subscribed_languages.target": "Atharraich fo-sgrìobhadh nan cànan airson {target}", "suggestions.dismiss": "Leig seachad am moladh", "suggestions.header": "Dh’fhaoidte gu bheil ùidh agad ann an…", "tabs_bar.federated_timeline": "Co-naisgte", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 649ed031eb..5a97a82d1a 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -39,7 +39,7 @@ "account.follows.empty": "Esta usuaria aínda non segue a ninguén.", "account.follows_you": "Séguete", "account.hide_reblogs": "Agochar repeticións de @{name}", - "account.joined": "Uníuse {date}", + "account.joined_short": "Joined", "account.languages": "Modificar os idiomas subscritos", "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}", "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", @@ -79,18 +79,23 @@ "audio.hide": "Agochar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Preme {combo} para ignorar isto na seguinte vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar informe do erro", + "bundle_column_error.error.body": "Non se puido mostrar a páxina solicitada. Podería deberse a un problema no código, ou incompatiblidade co navegador.", + "bundle_column_error.error.title": "Vaites!", + "bundle_column_error.network.body": "Algo fallou ao intentar cargar esta páxina. Podería ser un problema temporal da conexión a internet ao intentar comunicarte este servidor.", + "bundle_column_error.network.title": "Fallo na rede", "bundle_column_error.retry": "Téntao de novo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Volver ao Inicio", + "bundle_column_error.routing.body": "Non atopamos a páxina solicitada. Tes a certeza de que o URL na barra de enderezos é correcto?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Pechar", "bundle_modal_error.message": "Ocorreu un erro ó cargar este compoñente.", "bundle_modal_error.retry": "Téntao de novo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", @@ -221,7 +226,7 @@ "empty_column.public": "Nada por aquí! Escribe algo de xeito público, ou segue de xeito manual usuarias doutros servidores para ir enchéndoo", "error.unexpected_crash.explanation": "Debido a un erro no noso código ou a unha compatilidade co teu navegador, esta páxina non pode ser amosada correctamente.", "error.unexpected_crash.explanation_addons": "Non se puido mostrar correctamente a páxina. Habitualmente este erro está causado por algún engadido do navegador ou ferramentas de tradución automática.", - "error.unexpected_crash.next_steps": "Tenta actualizar a páxina. Se esto non axuda podes tamén empregar Mastodon noutro navegador ou aplicación nativa.", + "error.unexpected_crash.next_steps": "Tenta actualizar a páxina. Se isto non axuda podes tamén empregar Mastodon noutro navegador ou aplicación nativa.", "error.unexpected_crash.next_steps_addons": "Intenta desactivalas e actualiza a páxina. Se isto non funciona, podes seguir usando Mastodon nun navegador diferente ou aplicación nativa.", "errors.unexpected_crash.copy_stacktrace": "Copiar trazas (stacktrace) ó portapapeis", "errors.unexpected_crash.report_issue": "Informar sobre un problema", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Publicacións fixadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronoloxía federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguranza", "not_signed_in_indicator.not_signed_in": "Debes acceder para ver este recurso.", "notification.admin.report": "{name} denunciou a {target}", @@ -497,8 +503,8 @@ "report.submit": "Enviar", "report.target": "Denunciar a {target}", "report.thanks.take_action": "Aquí tes unhas opcións para controlar o que ves en Mastodon:", - "report.thanks.take_action_actionable": "Mentras revisamos esto, podes tomar accións contra @{name}:", - "report.thanks.title": "Non queres ver esto?", + "report.thanks.take_action_actionable": "Mentras revisamos isto, podes tomar accións contra @{name}:", + "report.thanks.title": "Non queres ver isto?", "report.thanks.title_actionable": "Grazas pola denuncia, investigarémola.", "report.unfollow": "Non seguir a @{name}", "report.unfollow_explanation": "Estás a seguir esta conta. Deixar de ver as súas publicacións na túa cronoloxía, non seguila.", @@ -517,7 +523,7 @@ "search_results.accounts": "Persoas", "search_results.all": "Todo", "search_results.hashtags": "Cancelos", - "search_results.nothing_found": "Non atopamos nada con estos termos de busca", + "search_results.nothing_found": "Non atopamos nada con estes termos de busca", "search_results.statuses": "Publicacións", "search_results.statuses_fts_disabled": "Procurar publicacións polo seu contido non está activado neste servidor do Mastodon.", "search_results.title": "Resultados para {q}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Aínda ninguén promoveu esta publicación. Cando alguén o faga, amosarase aquí.", "status.redraft": "Eliminar e reescribir", "status.remove_bookmark": "Eliminar marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder ao tema", "status.report": "Denunciar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Amosar máis", "status.show_more_all": "Amosar máis para todos", "status.show_original": "Mostrar o orixinal", - "status.show_thread": "Amosar fío", "status.translate": "Traducir", - "status.translated_from": "Traducido do {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 1d360abc47..59a3462ab2 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -39,7 +39,7 @@ "account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.", "account.follows_you": "במעקב אחריך", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", - "account.joined": "הצטרפו ב{date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}", "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "לסגור", "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.", "bundle_modal_error.retry": "לנסות שוב", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "משתמשים חסומים", "column.bookmarks": "סימניות", @@ -379,6 +384,7 @@ "navigation_bar.pins": "פוסטים נעוצים", "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "פיד כללי (כל השרתים)", + "navigation_bar.search": "Search", "navigation_bar.security": "אבטחה", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} דיווח.ה על {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "עוד לא הידהדו את הפוסט הזה. כאשר זה יקרה, ההדהודים יופיעו כאן.", "status.redraft": "מחיקה ועריכה מחדש", "status.remove_bookmark": "הסרת סימניה", + "status.replied_to": "Replied to {name}", "status.reply": "תגובה", "status.replyAll": "תגובה לפתיל", "status.report": "דיווח על @{name}", @@ -578,9 +585,8 @@ "status.show_more": "הראה יותר", "status.show_more_all": "להציג יותר מהכל", "status.show_original": "Show original", - "status.show_thread": "הצג כחלק מפתיל", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "לא זמין", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 4592d65ff4..591cff025f 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -39,7 +39,7 @@ "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।", "account.follows_you": "आपको फॉलो करता है", "account.hide_reblogs": "@{name} के बूस्ट छुपाएं", - "account.joined": "शामिल हुये {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था", "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "बंद", "bundle_modal_error.message": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", "bundle_modal_error.retry": "दुबारा कोशिश करें", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "ब्लॉक्ड यूज़र्स", "column.bookmarks": "पुस्तकचिह्न:", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "जवाब", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "और दिखाएँ", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "अनुपलब्ध", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 8bcad04086..252d082863 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -39,7 +39,7 @@ "account.follows.empty": "Korisnik/ca još ne prati nikoga.", "account.follows_you": "Prati te", "account.hide_reblogs": "Sakrij boostove od @{name}", - "account.joined": "Pridružio se {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}", "account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto je pošlo po zlu tijekom učitavanja ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovno", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokirani korisnici", "column.bookmarks": "Knjižne oznake", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Prikvačeni tootovi", "navigation_bar.preferences": "Postavke", "navigation_bar.public_timeline": "Federalna vremenska crta", + "navigation_bar.search": "Search", "navigation_bar.security": "Sigurnost", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nitko još nije boostao ovaj toot. Kada netko to učini, ovdje će biti prikazani.", "status.redraft": "Izbriši i ponovno uredi", "status.remove_bookmark": "Ukloni knjižnu oznaku", + "status.replied_to": "Replied to {name}", "status.reply": "Odgovori", "status.replyAll": "Odgovori na niz", "status.report": "Prijavi @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Pokaži više", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Prikaži nit", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nije dostupno", "status.unmute_conversation": "Poništi utišavanje razgovora", "status.unpin": "Otkvači s profila", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index dcf2044ed3..a3f391bb69 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ez a felhasználó még senkit sem követ.", "account.follows_you": "Követ téged", "account.hide_reblogs": "@{name} megtolásainak elrejtése", - "account.joined": "Csatlakozott {date}", + "account.joined_short": "Joined", "account.languages": "Feliratkozott nyelvek módosítása", "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}", "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", @@ -79,18 +79,23 @@ "audio.hide": "Hang elrejtése", "autosuggest_hashtag.per_week": "{count} hetente", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Hibajelentés másolása", + "bundle_column_error.error.body": "A kért lap nem jeleníthető meg. Ez lehet, hogy kódhiba, vagy böngészőkompatibitási hiba.", + "bundle_column_error.error.title": "Jaj ne!", + "bundle_column_error.network.body": "Hiba történt az oldal betöltése során. Ezt az internetkapcsolat ideiglenes problémája vagy kiszolgálóhiba is okozhatja.", + "bundle_column_error.network.title": "Hálózati hiba", "bundle_column_error.retry": "Próbáld újra", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Vissza a kezdőlapra", + "bundle_column_error.routing.body": "A kért oldal nem található. Biztos, hogy a címsávban lévő webcím helyes?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bezárás", "bundle_modal_error.message": "Hiba történt a komponens betöltésekor.", "bundle_modal_error.retry": "Próbáld újra", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Névjegy", "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Kitűzött bejegyzések", "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", + "navigation_bar.search": "Search", "navigation_bar.security": "Biztonság", "not_signed_in_indicator.not_signed_in": "Az erőforrás eléréséhez be kell jelentkezned.", "notification.admin.report": "{name} jelentette: {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Senki sem tolta még meg ezt a bejegyzést. Ha valaki megteszi, itt fog megjelenni.", "status.redraft": "Törlés és újraírás", "status.remove_bookmark": "Könyvjelző eltávolítása", + "status.replied_to": "Replied to {name}", "status.reply": "Válasz", "status.replyAll": "Válasz a beszélgetésre", "status.report": "@{name} bejelentése", @@ -578,9 +585,8 @@ "status.show_more": "Többet", "status.show_more_all": "Többet mindenhol", "status.show_original": "Eredeti mutatása", - "status.show_thread": "Szál mutatása", "status.translate": "Fordítás", - "status.translated_from": "{lang} nyelvből fordítva", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 5eae2c3687..cd68f74d2e 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -39,7 +39,7 @@ "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։", "account.follows_you": "Հետեւում է քեզ", "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները", - "account.joined": "Միացել է {date}-ից", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Սոյն յղման տիրապետումը ստուգուած է՝ {date}֊ին", "account.locked_info": "Սոյն հաշուի գաղտնիութեան մակարդակը նշուած է որպէս՝ փակ։ Հաշուի տէրն ընտրում է, թէ ով կարող է հետեւել իրեն։", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Փակել", "bundle_modal_error.message": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։", "bundle_modal_error.retry": "Կրկին փորձել", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Արգելափակուած օգտատէրեր", "column.bookmarks": "Էջանիշեր", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Ամրացուած գրառումներ", "navigation_bar.preferences": "Նախապատուութիւններ", "navigation_bar.public_timeline": "Դաշնային հոսք", + "navigation_bar.search": "Search", "navigation_bar.security": "Անվտանգութիւն", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Այս գրառումը ոչ մէկ դեռ չի տարածել։ Տարածողները կերեւան այստեղ, երբ տարածեն։", "status.redraft": "Ջնջել եւ վերակազմել", "status.remove_bookmark": "Հեռացնել էջանիշերից", + "status.replied_to": "Replied to {name}", "status.reply": "Պատասխանել", "status.replyAll": "Պատասխանել շղթային", "status.report": "Բողոքել @{name}֊ից", @@ -578,9 +585,8 @@ "status.show_more": "Աւելին", "status.show_more_all": "Ցուցադրել բոլոր նախազգուշացնումները", "status.show_original": "Show original", - "status.show_thread": "Բացել շղթան", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Անհասանելի", "status.unmute_conversation": "Ապալռեցնել խօսակցութիւնը", "status.unpin": "Հանել անձնական էջից", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index fd5aa3ed4f..fb86fda371 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -39,7 +39,7 @@ "account.follows.empty": "Pengguna ini belum mengikuti siapapun.", "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", - "account.joined": "Bergabung {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Kepemilikan tautan ini telah dicek pada {date}", "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Kesalahan terjadi saat memuat komponen ini.", "bundle_modal_error.retry": "Coba lagi", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Toot tersemat", "navigation_bar.preferences": "Pengaturan", "navigation_bar.public_timeline": "Linimasa gabungan", + "navigation_bar.search": "Search", "navigation_bar.security": "Keamanan", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} melaporkan {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Belum ada yang mem-boost toot ini. Ketika seseorang melakukannya, maka akan muncul di sini.", "status.redraft": "Hapus & redraf", "status.remove_bookmark": "Hapus markah", + "status.replied_to": "Replied to {name}", "status.reply": "Balas", "status.replyAll": "Balas ke semua", "status.report": "Laporkan @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Tampilkan semua", "status.show_more_all": "Tampilkan lebih banyak", "status.show_original": "Show original", - "status.show_thread": "Tampilkan utas", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Tak tersedia", "status.unmute_conversation": "Bunyikan percakapan", "status.unpin": "Hapus sematan dari profil", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index e2d0ac35a9..0d6e6365b7 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ca uzanto ne sequa irgu til nun.", "account.follows_you": "Sequas tu", "account.hide_reblogs": "Celez busti de @{name}", - "account.joined": "Juntas ye {date}", + "account.joined_short": "Joined", "account.languages": "Chanjez abonita lingui", "account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}", "account.locked_info": "La privatesostaco di ca konto fixesas quale lokata. Proprietato manue kontrolas personi qui povas sequar.", @@ -79,18 +79,23 @@ "audio.hide": "Celez audio", "autosuggest_hashtag.per_week": "{count} dum singla semano", "boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopierorraporto", + "bundle_column_error.error.body": "La demandita pagino ne povas strukturigesar. Forsan ol esas eroro en kodexo hike o vidilkoncilieblesproblemo.", + "bundle_column_error.error.title": "Ach!", + "bundle_column_error.network.body": "Havas eroro kande probar montrar ca pagino. Forsan ol esas tempala problemo kun vua retkonekteso o ca servilo.", + "bundle_column_error.network.title": "Reteroro", "bundle_column_error.retry": "Probez itere", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", - "bundle_column_error.routing.title": "404", + "bundle_column_error.return": "Irez a hemo", + "bundle_column_error.routing.body": "Demandita pagino ne povas trovesar. Ka vu certe ke URL en situobuxo esar korekta?", + "bundle_column_error.routing.title": "Eroro di 404", "bundle_modal_error.close": "Klozez", "bundle_modal_error.message": "Nulo ne functionis dum chargar ca kompozaj.", "bundle_modal_error.retry": "Probez itere", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Pri co", "column.blocks": "Blokusita uzeri", "column.bookmarks": "Libromarki", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferi", "navigation_bar.public_timeline": "Federata tempolineo", + "navigation_bar.search": "Search", "navigation_bar.security": "Sekureso", "not_signed_in_indicator.not_signed_in": "Vu mustas enirar por acesar ca moyeno.", "notification.admin.report": "{name} raportizis {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Efacez e riskisigez", "status.remove_bookmark": "Efacez libromarko", + "status.replied_to": "Replied to {name}", "status.reply": "Respondar", "status.replyAll": "Respondar a filo", "status.report": "Denuncar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Montrar plue", "status.show_more_all": "Montrez pluse por omno", "status.show_original": "Montrez originalo", - "status.show_thread": "Montrez postaro", "status.translate": "Tradukez", - "status.translated_from": "Tradukesis de {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nedisplonebla", "status.unmute_conversation": "Desilencigez konverso", "status.unpin": "Depinglagez de profilo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index e5fead8e1a..e37c18b000 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -27,9 +27,9 @@ "account.edit_profile": "Breyta notandasniði", "account.enable_notifications": "Láta mig vita þegar @{name} sendir inn", "account.endorse": "Birta á notandasniði", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Síðasta færsla þann {date}", + "account.featured_tags.last_status_never": "Engar færslur", + "account.featured_tags.title": "Myllumerki hjá {name} með aukið vægi", "account.follow": "Fylgjast með", "account.followers": "Fylgjendur", "account.followers.empty": "Ennþá fylgist enginn með þessum notanda.", @@ -39,7 +39,7 @@ "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.", "account.follows_you": "Fylgir þér", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", - "account.joined": "Gerðist þátttakandi {date}", + "account.joined_short": "Joined", "account.languages": "Breyta tungumálum í áskrift", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", @@ -79,18 +79,23 @@ "audio.hide": "Fela hljóð", "autosuggest_hashtag.per_week": "{count} á viku", "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", - "bundle_column_error.retry": "Reyndu aftur", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.copy_stacktrace": "Afrita villuskýrslu", + "bundle_column_error.error.body": "Umbeðna síðau var ekki hægt að myndgera. Það gæti verið vegna villu í kóðanum okkar eða vandamáls með samhæfni vafra.", + "bundle_column_error.error.title": "Ó-nei!", + "bundle_column_error.network.body": "Villa kom upp við að hlaða inn þessari síðu. Þetta gæti stafað af tímabundnum vandamálum með internettenginguna þína eða þennan netþjón.", + "bundle_column_error.network.title": "Villa í netkerfi", + "bundle_column_error.retry": "Reyna aftur", + "bundle_column_error.return": "Fara til baka á upphafssíðu", + "bundle_column_error.routing.body": "Umbeðin síða fannst ekki. Ertu viss um að slóðin í vistfangastikunni sé rétt?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Loka", "bundle_modal_error.message": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", "bundle_modal_error.retry": "Reyndu aftur", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Um hugbúnaðinn", "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Festar færslur", "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", + "navigation_bar.search": "Search", "navigation_bar.security": "Öryggi", "not_signed_in_indicator.not_signed_in": "Þú þarft að skrá þig inn til að nota þetta tilfang.", "notification.admin.report": "{name} kærði {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Enginn hefur ennþá endurbirt þessa færslu. Þegar einhver gerir það, mun það birtast hér.", "status.redraft": "Eyða og endurvinna drög", "status.remove_bookmark": "Fjarlægja bókamerki", + "status.replied_to": "Replied to {name}", "status.reply": "Svara", "status.replyAll": "Svara þræði", "status.report": "Kæra @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Sýna meira", "status.show_more_all": "Sýna meira fyrir allt", "status.show_original": "Sýna upprunalega", - "status.show_thread": "Birta þráð", "status.translate": "Þýða", - "status.translated_from": "Þýtt úr {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 8651746e73..52ac4693d4 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -39,7 +39,7 @@ "account.follows.empty": "Questo utente non segue nessuno ancora.", "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", - "account.joined": "Su questa istanza dal {date}", + "account.joined_short": "Joined", "account.languages": "Cambia le lingue di cui ricevere i post", "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", @@ -79,18 +79,23 @@ "audio.hide": "Nascondi audio", "autosuggest_hashtag.per_week": "{count} per settimana", "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.copy_stacktrace": "Copia rapporto di errore", + "bundle_column_error.error.body": "La pagina richiesta non può essere visualizzata. Potrebbe essere a causa di un bug nel nostro codice o di un problema di compatibilità del browser.", "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.body": "C'è stato un errore durante il caricamento di questa pagina. Potrebbe essere dovuto a un problema temporaneo con la tua connessione internet o a questo server.", + "bundle_column_error.network.title": "Errore di rete", "bundle_column_error.retry": "Riprova", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Torna alla pagina home", + "bundle_column_error.routing.body": "La pagina richiesta non è stata trovata. Sei sicuro che l'URL nella barra degli indirizzi è corretta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Chiudi", "bundle_modal_error.message": "Qualcosa è andato storto durante il caricamento di questo componente.", "bundle_modal_error.retry": "Riprova", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Informazioni su", "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Post fissati in cima", "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", + "navigation_bar.search": "Search", "navigation_bar.security": "Sicurezza", "not_signed_in_indicator.not_signed_in": "Devi effetturare il login per accedere a questa funzione.", "notification.admin.report": "{name} ha segnalato {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nessuno ha ancora condiviso questo post. Quando qualcuno lo farà, comparirà qui.", "status.redraft": "Cancella e riscrivi", "status.remove_bookmark": "Elimina segnalibro", + "status.replied_to": "Replied to {name}", "status.reply": "Rispondi", "status.replyAll": "Rispondi alla conversazione", "status.report": "Segnala @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostra di più", "status.show_more_all": "Mostra di più per tutti", "status.show_original": "Mostra originale", - "status.show_thread": "Mostra conversazione", "status.translate": "Traduci", - "status.translated_from": "Tradotto da {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index e85d743d37..8af35c7acd 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -39,7 +39,7 @@ "account.follows.empty": "まだ誰もフォローしていません。", "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", - "account.joined": "{date} に登録", + "account.joined_short": "Joined", "account.languages": "購読言語の変更", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "閉じる", "bundle_modal_error.message": "コンポーネントの読み込み中に問題が発生しました。", "bundle_modal_error.retry": "再試行", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", @@ -379,6 +384,7 @@ "navigation_bar.pins": "固定した投稿", "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", + "navigation_bar.search": "Search", "navigation_bar.security": "セキュリティ", "not_signed_in_indicator.not_signed_in": "この機能を使うにはログインする必要があります。", "notification.admin.report": "{name}さんが{target}さんを通報しました", @@ -567,6 +573,7 @@ "status.reblogs.empty": "まだ誰もブーストしていません。ブーストされるとここに表示されます。", "status.redraft": "削除して下書きに戻す", "status.remove_bookmark": "ブックマークを削除", + "status.replied_to": "Replied to {name}", "status.reply": "返信", "status.replyAll": "全員に返信", "status.report": "@{name}さんを通報", @@ -578,9 +585,8 @@ "status.show_more": "もっと見る", "status.show_more_all": "全て見る", "status.show_original": "原文を表示", - "status.show_thread": "スレッドを表示", "status.translate": "翻訳", - "status.translated_from": "{lang}からの翻訳", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index a45a27b02e..be6709e0bb 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "მოგყვებათ", "account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "დახურვა", "bundle_modal_error.message": "ამ კომპონენტის ჩატვირთვისას რაღაც აირია.", "bundle_modal_error.retry": "სცადეთ კიდევ ერთხელ", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "დაბლოკილი მომხმარებლები", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "აპინული ტუტები", "navigation_bar.preferences": "პრეფერენსიები", "navigation_bar.public_timeline": "ფედერალური თაიმლაინი", + "navigation_bar.search": "Search", "navigation_bar.security": "უსაფრთხოება", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "გაუქმდეს და გადანაწილდეს", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "პასუხი", "status.replyAll": "უპასუხე თემას", "status.report": "დაარეპორტე @{name}", @@ -578,9 +585,8 @@ "status.show_more": "აჩვენე მეტი", "status.show_more_all": "აჩვენე მეტი ყველაზე", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "საუბარზე გაჩუმების მოშორება", "status.unpin": "პროფილიდან პინის მოშორება", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 781095c9f3..d693216af7 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.", "account.follows_you": "Yeṭṭafaṛ-ik", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", - "account.joined": "Yerna-d {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}", "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.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Mdel", "bundle_modal_error.message": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.", "bundle_modal_error.retry": "Ɛreḍ tikelt-nniḍen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Γef", "column.blocks": "Imiḍanen yettusḥebsen", "column.bookmarks": "Ticraḍ", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Tijewwiqin yettwasentḍen", "navigation_bar.preferences": "Imenyafen", "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut", + "navigation_bar.search": "Search", "navigation_bar.security": "Taɣellist", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.", "status.redraft": "Kkes tɛiwdeḍ tira", "status.remove_bookmark": "Kkes tacreḍt", + "status.replied_to": "Replied to {name}", "status.reply": "Err", "status.replyAll": "Err i lxiḍ", "status.report": "Cetki ɣef @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Ssken-d ugar", "status.show_more_all": "Ẓerr ugar lebda", "status.show_original": "Show original", - "status.show_thread": "Ssken-d lxiḍ", "status.translate": "Suqel", - "status.translated_from": "Yettwasuqel seg {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ulac-it", "status.unmute_conversation": "Kkes asgugem n udiwenni", "status.unpin": "Kkes asenteḍ seg umaɣnu", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 790b6adb2e..157ca66daf 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ешкімге жазылмапты.", "account.follows_you": "Сізге жазылыпты", "account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Сілтеме меншігі расталған күн {date}", "account.locked_info": "Бұл қолданушы өзі туралы мәліметтерді жасырған. Тек жазылғандар ғана көре алады.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Жабу", "bundle_modal_error.message": "Бұл компонентті жүктеген кезде бір қате пайда болды.", "bundle_modal_error.retry": "Қайтадан көріңіз", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Бұғатталғандар", "column.bookmarks": "Бетбелгілер", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Жабыстырылғандар", "navigation_bar.preferences": "Басымдықтар", "navigation_bar.public_timeline": "Жаһандық желі", + "navigation_bar.search": "Search", "navigation_bar.security": "Қауіпсіздік", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Бұл жазбаны әлі ешкім бөліспеді. Біреу бөліскен кезде осында көрінеді.", "status.redraft": "Өшіру & қайта қарастыру", "status.remove_bookmark": "Бетбелгілерден алып тастау", + "status.replied_to": "Replied to {name}", "status.reply": "Жауап", "status.replyAll": "Тақырыпқа жауап", "status.report": "Шағым @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Толығырақ", "status.show_more_all": "Бәрін толығымен", "status.show_original": "Show original", - "status.show_thread": "Желіні көрсет", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Қолжетімді емес", "status.unmute_conversation": "Пікірталасты үнсіз қылмау", "status.unpin": "Профильден алып тастау", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index b3697b1b6f..3e2baf8874 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index d8d4b687fe..af818e304c 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -1,15 +1,15 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "제한된 서버들", "about.contact": "연락처:", "about.domain_blocks.comment": "사유", "about.domain_blocks.domain": "도메인", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.preamble": "마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.", "about.domain_blocks.severity": "심각도", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.explanation": "명시적으로 찾아보거나 팔로우를 하기 전까지는, 이 서버에 있는 프로필이나 게시물 등을 일반적으로 볼 수 없습니다.", "about.domain_blocks.silenced.title": "제한됨", "about.domain_blocks.suspended.explanation": "이 서버의 어떤 데이터도 처리되거나, 저장 되거나 공유되지 않고, 이 서버의 어떤 유저와도 상호작용 하거나 대화할 수 없습니다.", "about.domain_blocks.suspended.title": "정지됨", - "about.not_available": "This information has not been made available on this server.", + "about.not_available": "이 정보는 이 서버에서 사용할 수 없습니다.", "about.powered_by": "{mastodon}에 의해 구동되는 분산화된 소셜 미디어", "about.rules": "서버 규칙", "account.account_note_header": "노트", @@ -27,9 +27,9 @@ "account.edit_profile": "프로필 편집", "account.enable_notifications": "@{name} 의 게시물 알림 켜기", "account.endorse": "프로필에 추천하기", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "{date}에 마지막으로 게시", + "account.featured_tags.last_status_never": "게시물 없음", + "account.featured_tags.title": "{name} 님의 추천 해시태그", "account.follow": "팔로우", "account.followers": "팔로워", "account.followers.empty": "아직 아무도 이 사용자를 팔로우하고 있지 않습니다.", @@ -39,7 +39,7 @@ "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.", "account.follows_you": "날 팔로우합니다", "account.hide_reblogs": "@{name}의 부스트를 숨기기", - "account.joined": "{date}에 가입함", + "account.joined_short": "Joined", "account.languages": "구독한 언어 변경", "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨", "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.", @@ -79,18 +79,23 @@ "audio.hide": "소리 숨기기", "autosuggest_hashtag.per_week": "주간 {count}회", "boost_modal.combo": "다음엔 {combo}를 눌러서 이 과정을 건너뛸 수 있습니다", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "에러 리포트 복사하기", + "bundle_column_error.error.body": "요청한 페이지를 렌더링 할 수 없습니다. 저희의 코드에 버그가 있거나, 브라우저 호환성 문제일 수 있습니다.", + "bundle_column_error.error.title": "으악, 안돼!", + "bundle_column_error.network.body": "이 페이지를 불러오는 중 오류가 발생했습니다. 일시적으로 서버와의 연결이 불안정한 문제일 수도 있습니다.", + "bundle_column_error.network.title": "네트워크 오류", "bundle_column_error.retry": "다시 시도", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "홈으로 돌아가기", + "bundle_column_error.routing.body": "요청하신 페이지를 찾을 수 없습니다. 주소창에 적힌 URL이 확실히 맞나요?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "닫기", "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "정보", "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", @@ -379,6 +384,7 @@ "navigation_bar.pins": "고정된 게시물", "navigation_bar.preferences": "사용자 설정", "navigation_bar.public_timeline": "연합 타임라인", + "navigation_bar.search": "Search", "navigation_bar.security": "보안", "not_signed_in_indicator.not_signed_in": "이 정보에 접근하려면 로그인을 해야 합니다.", "notification.admin.report": "{name} 님이 {target}를 신고했습니다", @@ -567,6 +573,7 @@ "status.reblogs.empty": "아직 아무도 이 게시물을 부스트하지 않았습니다. 부스트 한 사람들이 여기에 표시 됩니다.", "status.redraft": "지우고 다시 쓰기", "status.remove_bookmark": "보관한 게시물 삭제", + "status.replied_to": "Replied to {name}", "status.reply": "답장", "status.replyAll": "글타래에 답장", "status.report": "신고", @@ -578,9 +585,8 @@ "status.show_more": "더 보기", "status.show_more_all": "모두 펼치기", "status.show_original": "원본 보기", - "status.show_thread": "글타래 보기", "status.translate": "번역", - "status.translated_from": "{lang}에서 번역됨", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index b2ce6ba114..246b46407a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", - "account.joined": "Di {date} de tevlî bû", + "account.joined_short": "Joined", "account.languages": "Zimanên beşdarbûyî biguherîne", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", "account.locked_info": "Rewşa vê ajimêrê wek kilîtkirî hatiye sazkirin. Xwediyê ajimêrê, bi destan dinirxîne şopandinê dinirxîne.", @@ -79,18 +79,23 @@ "audio.hide": "Dengê veşêre", "autosuggest_hashtag.per_week": "Her hefte {count}", "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Rapora çewtiyê jê bigire", + "bundle_column_error.error.body": "Rûpela xwestî nehate pêşkêşkirin. Dibe ku ew ji ber şaşetiyeke koda me, an jî pirsgirêkeke lihevhatina gerokê be.", + "bundle_column_error.error.title": "Ax, na!", + "bundle_column_error.network.body": "Di dema hewldana barkirina vê rûpelê de çewtiyek derket. Ev dibe ku ji ber pirsgirêkeke demkî ya girêdana înternetê te be an jî ev rajekar be.", + "bundle_column_error.network.title": "Çewtiya torê", "bundle_column_error.retry": "Dîsa biceribîne", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Vegere rûpela sereke", + "bundle_column_error.routing.body": "Rûpela xwestî nehate dîtin. Tu bawerî ku girêdana di kodika lêgerînê de rast e?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bigire", "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", "bundle_modal_error.retry": "Dîsa bicerbîne", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Derbar", "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Şandiya derzîkirî", "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameya giştî", + "navigation_bar.search": "Search", "navigation_bar.security": "Ewlehî", "not_signed_in_indicator.not_signed_in": "Divê tu têketinê bikî da ku tu bigihîjî vê çavkaniyê.", "notification.admin.report": "{name} hate ragihandin {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Kesekî hin ev şandî bilind nekiriye. Gava kesek bilind bike, ew ên li vir werin xuyakirin.", "status.redraft": "Jê bibe & ji nû ve reşnivîs bike", "status.remove_bookmark": "Şûnpêlê jê rake", + "status.replied_to": "Replied to {name}", "status.reply": "Bersivê bide", "status.replyAll": "Mijarê bibersivîne", "status.report": "@{name} ragihîne", @@ -578,9 +585,8 @@ "status.show_more": "Bêtir nîşan bide", "status.show_more_all": "Bêtir nîşan bide bo hemûyan", "status.show_original": "A resen nîşan bide", - "status.show_thread": "Mijarê nîşan bide", "status.translate": "Wergerîne", - "status.translated_from": "Ji {lang} hate wergerandin", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 8e0b431048..8ace3826a0 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ny wra'n devnydhyer ma holya nagonan hwath.", "account.follows_you": "Y'th hol", "account.hide_reblogs": "Kudha kenerthow a @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Perghenogeth an kolm ma a veu checkys dhe {date}", "account.locked_info": "Studh privetter an akont ma yw alhwedhys. An perghen a wra dasweles dre leuv piw a yll aga holya.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Degea", "bundle_modal_error.message": "Neppyth eth yn kamm ow karga'n elven ma.", "bundle_modal_error.retry": "Assayewgh arta", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Devnydhyoryon lettys", "column.bookmarks": "Folennosow", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Postow fastys", "navigation_bar.preferences": "Erviransow", "navigation_bar.public_timeline": "Amserlin geffrysys", + "navigation_bar.search": "Search", "navigation_bar.security": "Diogeledh", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ny wrug nagonan kenertha'n post ma hwath. Pan wra, hynn a wra omdhiskwedhes omma.", "status.redraft": "Dilea ha daskynskrifa", "status.remove_bookmark": "Dilea folennos", + "status.replied_to": "Replied to {name}", "status.reply": "Gorthebi", "status.replyAll": "Gorthebi orth neusen", "status.report": "Reportya @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Diskwedhes moy", "status.show_more_all": "Diskwedhes moy rag puptra", "status.show_original": "Show original", - "status.show_thread": "Diskwedhes neusen", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ankavadow", "status.unmute_conversation": "Antawhe kesklapp", "status.unpin": "Anfastya a brofil", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 813eaf197b..be61374e98 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 08fe1ae5eb..cd1c486cca 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -39,7 +39,7 @@ "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows_you": "Seko tev", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", - "account.joined": "Pievienojās {date}", + "account.joined_short": "Joined", "account.languages": "Mainīt abonētās valodas", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", @@ -48,7 +48,7 @@ "account.moved_to": "{name} ir pārcelts uz:", "account.mute": "Apklusināt @{name}", "account.mute_notifications": "Nerādīt paziņojumus no @{name}", - "account.muted": "Apklusināts", + "account.muted": "Noklusināts", "account.posts": "Ziņas", "account.posts_with_replies": "Ziņas un atbildes", "account.report": "Ziņot par lietotāju @{name}", @@ -79,18 +79,23 @@ "audio.hide": "Slēpt audio", "autosuggest_hashtag.per_week": "{count} nedēļā", "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopēt kļūdu ziņojumu", + "bundle_column_error.error.body": "Pieprasīto lapu nevarēja atveidot. Tas varētu būt saistīts ar kļūdu mūsu kodā vai pārlūkprogrammas saderības problēma.", + "bundle_column_error.error.title": "Ak, nē!", + "bundle_column_error.network.body": "Mēģinot ielādēt šo lapu, radās kļūda. Tas varētu būt saistīts ar īslaicīgu interneta savienojuma vai šī servera problēmu.", + "bundle_column_error.network.title": "Tīkla kļūda", "bundle_column_error.retry": "Mēģini vēlreiz", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Atgriezties", + "bundle_column_error.routing.body": "Pieprasīto lapu nevarēja atrast. Vai esi pārliecināts, ka URL adreses joslā ir pareizs?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Aizvērt", "bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.", "bundle_modal_error.retry": "Mēģini vēlreiz", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Par", "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Piespraustās ziņas", "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā ziņu lenta", + "navigation_bar.search": "Search", "navigation_bar.security": "Drošība", "not_signed_in_indicator.not_signed_in": "Lai piekļūtu šim resursam, tev ir jāpierakstās.", "notification.admin.report": "{name} ziņoja par {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Neviens šo ziņojumu vel nav paaugstinājis. Kad būs, tie parādīsies šeit.", "status.redraft": "Dzēst un pārrakstīt", "status.remove_bookmark": "Noņemt grāmatzīmi", + "status.replied_to": "Replied to {name}", "status.reply": "Atbildēt", "status.replyAll": "Atbildēt uz tematu", "status.report": "Ziņot par @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Rādīt vairāk", "status.show_more_all": "Rādīt vairāk visiem", "status.show_original": "Rādīt oriģinālu", - "status.show_thread": "Rādīt tematu", "status.translate": "Tulkot", - "status.translated_from": "Tulkot no {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index b3135c9c9e..2cbe5a50e2 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -39,7 +39,7 @@ "account.follows.empty": "Корисникот не следи никој сеуште.", "account.follows_you": "Те следи тебе", "account.hide_reblogs": "Сокриј буст од @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Сопстевноста на овај линк беше проверен на {date}", "account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Настана грешка при прикажувањето на оваа веб-страница.", "bundle_modal_error.retry": "Обидете се повторно", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Блокирани корисници", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Федеративен времеплов", + "navigation_bar.search": "Search", "navigation_bar.security": "Безбедност", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index a8c7ef61e7..b7f92c715d 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -39,7 +39,7 @@ "account.follows.empty": "ഈ ഉപയോക്താവ് ആരേയും ഇതുവരെ പിന്തുടരുന്നില്ല.", "account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു", "account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക", - "account.joined": "{date} ൽ ചേർന്നു", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "ഈ ലിങ്കിന്റെ ഉടമസ്തത {date} ഇൽ ഉറപ്പാക്കിയതാണ്", "account.locked_info": "ഈ അംഗത്വത്തിന്റെ സ്വകാര്യതാ നിലപാട് അനുസരിച്ച് പിന്തുടരുന്നവരെ തിരഞ്ഞെടുക്കാനുള്ള വിവേചനാധികാരം ഉടമസ്ഥനിൽ നിഷിപ്തമായിരിക്കുന്നു.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "അടയ്ക്കുക", "bundle_modal_error.message": "ഈ വെബ്പേജ് പ്രദർശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.", "bundle_modal_error.retry": "വീണ്ടും ശ്രമിക്കുക", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "column.bookmarks": "ബുക്ക്മാർക്കുകൾ", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "ക്രമീകരണങ്ങൾ", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "സുരക്ഷ", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "ഇല്ലാതാക്കുക & വീണ്ടും ഡ്രാഫ്റ്റ് ചെയ്യുക", "status.remove_bookmark": "ബുക്ക്മാർക്ക് നീക്കംചെയ്യുക", + "status.replied_to": "Replied to {name}", "status.reply": "മറുപടി", "status.replyAll": "Reply to thread", "status.report": "@{name}--നെ റിപ്പോർട്ട് ചെയ്യുക", @@ -578,9 +585,8 @@ "status.show_more": "കൂടുതകൽ കാണിക്കുക", "status.show_more_all": "എല്ലാവർക്കുമായി കൂടുതൽ കാണിക്കുക", "status.show_original": "Show original", - "status.show_thread": "ത്രെഡ് കാണിക്കുക", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "ലഭ്യമല്ല", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index b2d32cc4e6..ea2345ecfd 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -39,7 +39,7 @@ "account.follows.empty": "हा वापरकर्ता अजूनपर्यंत कोणाचा अनुयायी नाही.", "account.follows_you": "तुमचा अनुयायी आहे", "account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "बंद करा", "bundle_modal_error.message": "हा घटक लोड करतांना काहीतरी चुकले आहे.", "bundle_modal_error.retry": "पुन्हा प्रयत्न करा", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "ब्लॉक केलेले खातेधारक", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 341bca041a..de0c504802 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -39,7 +39,7 @@ "account.follows.empty": "Pengguna ini belum mengikuti sesiapa.", "account.follows_you": "Mengikuti anda", "account.hide_reblogs": "Sembunyikan galakan daripada @{name}", - "account.joined": "Sertai pada {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Pemilikan pautan ini telah disemak pada {date}", "account.locked_info": "Status privasi akaun ini dikunci. Pemiliknya menyaring sendiri siapa yang boleh mengikutinya.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Ada yang tidak kena semasa memuatkan komponen ini.", "bundle_modal_error.retry": "Cuba lagi", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Pengguna yang disekat", "column.bookmarks": "Tanda buku", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Hantaran disemat", "navigation_bar.preferences": "Keutamaan", "navigation_bar.public_timeline": "Garis masa bersekutu", + "navigation_bar.search": "Search", "navigation_bar.security": "Keselamatan", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Tiada sesiapa yang menggalak hantaran ini. Apabila ada yang menggalak, ia akan muncul di sini.", "status.redraft": "Padam & rangka semula", "status.remove_bookmark": "Buang tanda buku", + "status.replied_to": "Replied to {name}", "status.reply": "Balas", "status.replyAll": "Balas ke bebenang", "status.report": "Laporkan @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Tunjukkan lebih", "status.show_more_all": "Tunjukkan lebih untuk semua", "status.show_original": "Show original", - "status.show_thread": "Tunjuk bebenang", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Tidak tersedia", "status.unmute_conversation": "Nyahbisukan perbualan", "status.unpin": "Nyahsemat daripada profil", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 51a66f3560..253d5ec02e 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -20,16 +20,16 @@ "account.block_domain": "Alles van {domain} verbergen", "account.blocked": "Geblokkeerd", "account.browse_more_on_origin_server": "Meer op het originele profiel bekijken", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Volgverzoek annuleren", "account.direct": "@{name} een direct bericht sturen", "account.disable_notifications": "Geef geen melding meer wanneer @{name} een bericht plaatst", "account.domain_blocked": "Domein geblokkeerd", "account.edit_profile": "Profiel bewerken", "account.enable_notifications": "Geef een melding wanneer @{name} een bericht plaatst", "account.endorse": "Op profiel weergeven", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Laatste bericht op {date}", + "account.featured_tags.last_status_never": "Geen berichten", + "account.featured_tags.title": "Uitgelichte hashtags van {name}", "account.follow": "Volgen", "account.followers": "Volgers", "account.followers.empty": "Niemand volgt nog deze gebruiker.", @@ -39,7 +39,7 @@ "account.follows.empty": "Deze gebruiker volgt nog niemand.", "account.follows_you": "Volgt jou", "account.hide_reblogs": "Boosts van @{name} verbergen", - "account.joined": "Geregistreerd op {date}", + "account.joined_short": "Joined", "account.languages": "Getoonde talen wijzigen", "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie diegene kan volgen.", @@ -79,18 +79,23 @@ "audio.hide": "Audio verbergen", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Foutrapportage kopiëren", + "bundle_column_error.error.body": "De opgevraagde pagina kon niet worden aangemaakt. Dit kan het gevolg zijn van onze broncode of van een verouderde webbrowser.", + "bundle_column_error.error.title": "Oh nee!", + "bundle_column_error.network.body": "Er is een fout opgetreden tijdens het laden van deze pagina. Dit kan veroorzaakt zijn door een tijdelijk probleem met je internetverbinding of met deze server.", + "bundle_column_error.network.title": "Netwerkfout", "bundle_column_error.retry": "Opnieuw proberen", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Terug naar start", + "bundle_column_error.routing.body": "De opgevraagde pagina kon niet worden gevonden. Weet je zeker dat de URL in de adresbalk de juiste is?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Over", "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", @@ -144,8 +149,8 @@ "confirmations.block.block_and_report": "Blokkeren en rapporteren", "confirmations.block.confirm": "Blokkeren", "confirmations.block.message": "Weet je het zeker dat je {name} wilt blokkeren?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Verzoek annuleren", + "confirmations.cancel_follow_request.message": "Weet je zeker dat je jouw verzoek om {name} te volgen wilt annuleren?", "confirmations.delete.confirm": "Verwijderen", "confirmations.delete.message": "Weet je het zeker dat je dit bericht wilt verwijderen?", "confirmations.delete_list.confirm": "Verwijderen", @@ -231,11 +236,11 @@ "explore.trending_links": "Nieuws", "explore.trending_statuses": "Berichten", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_explanation": "Deze filtercategorie is niet van toepassing op de context waarin je dit bericht hebt benaderd. Als je wilt dat het bericht ook in deze context wordt gefilterd, moet je het filter bewerken.", "filter_modal.added.context_mismatch_title": "Context komt niet overeen!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_explanation": "Deze filtercategorie is verlopen. Je moet de vervaldatum wijzigen om de categorie toe te kunnen passen.", "filter_modal.added.expired_title": "Filter verlopen!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure": "Ga naar {settings_link} om deze filtercategorie opnieuw te bekijken en verder te configureren.", "filter_modal.added.review_and_configure_title": "Filterinstellingen", "filter_modal.added.settings_link": "instellingspagina", "filter_modal.added.short_explanation": "Dit bericht is toegevoegd aan de volgende filtercategorie: {title}.", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Vastgemaakte berichten", "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", + "navigation_bar.search": "Search", "navigation_bar.security": "Beveiliging", "not_signed_in_indicator.not_signed_in": "Je moet inloggen om toegang tot deze informatie te krijgen.", "notification.admin.report": "{name} heeft {target} geapporteerd", @@ -528,11 +534,11 @@ "server_banner.introduction": "{domain} is onderdeel van het gedecentraliseerde sociale netwerk {mastodon}.", "server_banner.learn_more": "Meer leren", "server_banner.server_stats": "Serverstats:", - "sign_in_banner.create_account": "Account registreren", + "sign_in_banner.create_account": "Registreren", "sign_in_banner.sign_in": "Inloggen", "sign_in_banner.text": "Inloggen om accounts of hashtags te volgen, op berichten te reageren, berichten te delen, of om interactie te hebben met jouw account op een andere server.", "status.admin_account": "Moderatie-omgeving van @{name} openen", - "status.admin_status": "Dit bericht in de moderatie-omgeving openen", + "status.admin_status": "Dit bericht in de moderatie-omgeving tonen", "status.block": "@{name} blokkeren", "status.bookmark": "Bladwijzer toevoegen", "status.cancel_reblog_private": "Niet langer boosten", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Niemand heeft dit bericht nog geboost. Wanneer iemand dit doet, valt dat hier te zien.", "status.redraft": "Verwijderen en herschrijven", "status.remove_bookmark": "Bladwijzer verwijderen", + "status.replied_to": "Replied to {name}", "status.reply": "Reageren", "status.replyAll": "Reageer op iedereen", "status.report": "@{name} rapporteren", @@ -578,9 +585,8 @@ "status.show_more": "Meer tonen", "status.show_more_all": "Alles meer tonen", "status.show_original": "Origineel bekijken", - "status.show_thread": "Gesprek tonen", "status.translate": "Vertalen", - "status.translated_from": "Vertaald uit het {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", "status.unpin": "Van profielpagina losmaken", @@ -626,7 +632,7 @@ "upload_modal.description_placeholder": "Pa's wijze lynx bezag vroom het fikse aquaduct", "upload_modal.detect_text": "Tekst in een afbeelding detecteren", "upload_modal.edit_media": "Media bewerken", - "upload_modal.hint": "Klik of sleep de cirkel in de voorvertoning naar een centraal punt dat op elke thumbnail zichtbaar moet blijven.", + "upload_modal.hint": "Klik of sleep de cirkel in de voorvertoning naar een centraal focuspunt dat op elke thumbnail zichtbaar moet blijven.", "upload_modal.preparing_ocr": "OCR voorbereiden…", "upload_modal.preview_label": "Voorvertoning ({ratio})", "upload_progress.label": "Uploaden...", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index f62b1a832b..6d08e430a1 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -39,7 +39,7 @@ "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.follows_you": "Fylgjer deg", "account.hide_reblogs": "Gøym fremhevingar frå @{name}", - "account.joined": "Vart med {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}", "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Lat att", "bundle_modal_error.message": "Noko gjekk gale under lastinga av denne komponenten.", "bundle_modal_error.retry": "Prøv igjen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Festa tut", "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", + "navigation_bar.search": "Search", "navigation_bar.security": "Tryggleik", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} rapporterte {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ingen har framheva dette tutet enno. Om nokon gjer, så dukkar det opp her.", "status.redraft": "Slett & skriv på nytt", "status.remove_bookmark": "Fjern bokmerke", + "status.replied_to": "Replied to {name}", "status.reply": "Svar", "status.replyAll": "Svar til tråd", "status.report": "Rapporter @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Vis meir", "status.show_more_all": "Vis meir for alle", "status.show_original": "Show original", - "status.show_thread": "Vis tråd", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ikkje tilgjengeleg", "status.unmute_conversation": "Opphev målbinding av samtalen", "status.unpin": "Løys frå profil", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index a3614fc33f..f408fad68c 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -39,7 +39,7 @@ "account.follows.empty": "Denne brukeren følger ikke noen enda.", "account.follows_you": "Følger deg", "account.hide_reblogs": "Skjul fremhevinger fra @{name}", - "account.joined": "Ble med den {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Eierskap av denne lenken ble sjekket {date}", "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Lukk", "bundle_modal_error.message": "Noe gikk galt da denne komponenten lastet.", "bundle_modal_error.retry": "Prøv igjen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Festa tuter", "navigation_bar.preferences": "Innstillinger", "navigation_bar.public_timeline": "Felles tidslinje", + "navigation_bar.search": "Search", "navigation_bar.security": "Sikkerhet", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ingen har fremhevet denne tuten enda. Når noen gjør det, vil de dukke opp her.", "status.redraft": "Slett og drøft på nytt", "status.remove_bookmark": "Fjern bokmerke", + "status.replied_to": "Replied to {name}", "status.reply": "Svar", "status.replyAll": "Svar til samtale", "status.report": "Rapporter @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Vis mer", "status.show_more_all": "Vis mer for alle", "status.show_original": "Show original", - "status.show_thread": "Vis tråden", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ikke tilgjengelig", "status.unmute_conversation": "Ikke demp samtale", "status.unpin": "Angre festing på profilen", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 176ca5dcc3..754f38f219 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -39,7 +39,7 @@ "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.", "account.follows_you": "Vos sèc", "account.hide_reblogs": "Rescondre los partatges de @{name}", - "account.joined": "Arribèt en {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "La proprietat d’aqueste ligam foguèt verificada lo {date}", "account.locked_info": "L’estatut de privacitat del compte es configurat sus clavat. Lo proprietari causís qual pòt sègre son compte.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Tampar", "bundle_modal_error.message": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.", "bundle_modal_error.retry": "Tornar ensajar", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Personas blocadas", "column.bookmarks": "Marcadors", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Tuts penjats", "navigation_bar.preferences": "Preferéncias", "navigation_bar.public_timeline": "Flux public global", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguretat", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Degun a pas encara partejat aqueste tut. Quand qualqu’un o farà, apareisserà aquí.", "status.redraft": "Escafar e tornar formular", "status.remove_bookmark": "Suprimir lo marcador", + "status.replied_to": "Replied to {name}", "status.reply": "Respondre", "status.replyAll": "Respondre a la conversacion", "status.report": "Senhalar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Desplegar", "status.show_more_all": "Los desplegar totes", "status.show_original": "Show original", - "status.show_thread": "Mostrar lo fil", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Pas disponible", "status.unmute_conversation": "Tornar mostrar la conversacion", "status.unpin": "Tirar del perfil", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index e008749667..cc0fa70690 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index a0642273a8..f8a9c856d1 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.", "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", - "account.joined": "Dołączył(a) {date}", + "account.joined_short": "Joined", "account.languages": "Zmień subskrybowane języki", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", @@ -79,18 +79,23 @@ "audio.hide": "Ukryj dźwięk", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Skopiuj raport o błędzie", + "bundle_column_error.error.body": "Nie można zrenderować żądanej strony. Może to być spowodowane błędem w naszym kodzie lub problemami z kompatybilnością przeglądarki.", + "bundle_column_error.error.title": "O nie!", + "bundle_column_error.network.body": "Wystąpił błąd podczas próby załadowania tej strony. Może to być spowodowane tymczasowym problemem z połączeniem z internetem lub serwerem.", + "bundle_column_error.network.title": "Błąd sieci", "bundle_column_error.retry": "Spróbuj ponownie", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Wróć do strony głównej", + "bundle_column_error.routing.body": "Żądana strona nie została znaleziona. Czy na pewno adres URL w pasku adresu jest poprawny?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zamknij", "bundle_modal_error.message": "Coś poszło nie tak podczas ładowania tego składnika.", "bundle_modal_error.retry": "Spróbuj ponownie", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "O...", "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Przypięte wpisy", "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", + "navigation_bar.search": "Search", "navigation_bar.security": "Bezpieczeństwo", "not_signed_in_indicator.not_signed_in": "Musisz się zalogować, aby otrzymać dostęp do tego zasobu.", "notification.admin.report": "{name} zgłosił {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nikt nie podbił jeszcze tego wpisu. Gdy ktoś to zrobi, pojawi się tutaj.", "status.redraft": "Usuń i przeredaguj", "status.remove_bookmark": "Usuń zakładkę", + "status.replied_to": "Replied to {name}", "status.reply": "Odpowiedz", "status.replyAll": "Odpowiedz na wątek", "status.report": "Zgłoś @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Rozwiń", "status.show_more_all": "Rozwiń wszystkie", "status.show_original": "Pokaż oryginał", - "status.show_thread": "Pokaż wątek", "status.translate": "Przetłumacz", - "status.translated_from": "Przetłumaczone z {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 713a2da2d1..a4d7701ff6 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -39,7 +39,7 @@ "account.follows.empty": "Nada aqui.", "account.follows_you": "te segue", "account.hide_reblogs": "Ocultar boosts de @{name}", - "account.joined": "Entrou em {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "link verificado em {date}", "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Erro ao carregar este componente.", "bundle_modal_error.retry": "Tente novamente", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Toots fixados", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Linha global", + "navigation_bar.search": "Search", "navigation_bar.security": "Segurança", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} denunciou {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nada aqui. Quando alguém der boost, o usuário aparecerá aqui.", "status.redraft": "Excluir e rascunhar", "status.remove_bookmark": "Remover do Salvos", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder a conversa", "status.report": "Denunciar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais em tudo", "status.show_original": "Show original", - "status.show_thread": "Mostrar conversa", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Dessilenciar conversa", "status.unpin": "Desafixar", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index a3beb8d26d..ef8f4f0864 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -39,7 +39,7 @@ "account.follows.empty": "Este utilizador ainda não segue ninguém.", "account.follows_you": "Segue-te", "account.hide_reblogs": "Esconder partilhas de @{name}", - "account.joined": "Ingressou em {date}", + "account.joined_short": "Joined", "account.languages": "Alterar idiomas subscritos", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", @@ -79,18 +79,23 @@ "audio.hide": "Ocultar áudio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pode clicar {combo} para não voltar a ver", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar relatório de erros", + "bundle_column_error.error.body": "A página solicitada não pôde ser renderizada. Isto pode ser devido a uma falha no nosso código ou a um problema de compatibilidade com o navegador.", + "bundle_column_error.error.title": "Oh, não!", + "bundle_column_error.network.body": "Houve um erro ao tentar carregar esta página. Isto pode ocorrer devido a um problema temporário com a sua conexão à internet ou a este servidor.", + "bundle_column_error.network.title": "Erro de rede", "bundle_column_error.retry": "Tente de novo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Voltar à página inicial", + "bundle_column_error.routing.body": "A página solicitada não foi encontrada. Tem a certeza que o URL na barra de endereços está correto?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.", "bundle_modal_error.retry": "Tente de novo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Sobre", "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Toots afixados", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Segurança", "not_signed_in_indicator.not_signed_in": "Necessita de iniciar sessão para utilizar esta funcionalidade.", "notification.admin.report": "{name} denunciou {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ainda ninguém fez boost a este toot. Quando alguém o fizer, ele irá aparecer aqui.", "status.redraft": "Apagar & reescrever", "status.remove_bookmark": "Remover dos itens salvos", + "status.replied_to": "Replied to {name}", "status.reply": "Responder", "status.replyAll": "Responder à conversa", "status.report": "Denunciar @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais para todas", "status.show_original": "Mostrar original", - "status.show_thread": "Mostrar conversa", "status.translate": "Traduzir", - "status.translated_from": "Traduzido de {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 04af086618..06f28fb498 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -39,7 +39,7 @@ "account.follows.empty": "Momentan acest utilizator nu are niciun abonament.", "account.follows_you": "Este abonat la tine", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", - "account.joined": "S-a înscris în {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Proprietatea acestui link a fost verificată pe {date}", "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Închide", "bundle_modal_error.message": "A apărut o eroare la încărcarea acestui element.", "bundle_modal_error.retry": "Încearcă din nou", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Utilizatori blocați", "column.bookmarks": "Marcaje", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Postări fixate", "navigation_bar.preferences": "Preferințe", "navigation_bar.public_timeline": "Cronologie globală", + "navigation_bar.search": "Search", "navigation_bar.security": "Securitate", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nimeni nu a impulsionat această postare până acum. Când cineva o va face, va apărea aici.", "status.redraft": "Șterge și adaugă la ciorne", "status.remove_bookmark": "Îndepărtează marcajul", + "status.replied_to": "Replied to {name}", "status.reply": "Răspunde", "status.replyAll": "Răspunde la discuție", "status.report": "Raportează pe @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Arată mai mult", "status.show_more_all": "Arată mai mult pentru toți", "status.show_original": "Show original", - "status.show_thread": "Arată discuția", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Indisponibil", "status.unmute_conversation": "Repornește conversația", "status.unpin": "Eliberează din profil", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 92612af247..2ed3d7b457 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -39,7 +39,7 @@ "account.follows.empty": "Этот пользователь пока ни на кого не подписался.", "account.follows_you": "Подписан(а) на вас", "account.hide_reblogs": "Скрыть продвижения от @{name}", - "account.joined": "Зарегистрирован(а) с {date}", + "account.joined_short": "Joined", "account.languages": "Изменить языки подписки", "account.link_verified_on": "Владение этой ссылкой было проверено {date}", "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.", @@ -79,18 +79,23 @@ "audio.hide": "Скрыть аудио", "autosuggest_hashtag.per_week": "{count} / неделю", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.copy_stacktrace": "Скопировать отчет об ошибке", + "bundle_column_error.error.body": "Запрошенная страница не может быть отображена. Это может быть вызвано ошибкой в нашем коде или проблемой совместимости браузера.", + "bundle_column_error.error.title": "О нет!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Ошибка сети", "bundle_column_error.retry": "Попробовать снова", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Вернуться на главную", + "bundle_column_error.routing.body": "Запрошенная страница не найдена. Вы уверены, что URL в адресной строке правильный?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Закрыть", "bundle_modal_error.message": "Что-то пошло не так при загрузке этого компонента.", "bundle_modal_error.retry": "Попробовать снова", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Заблокированные пользователи", "column.bookmarks": "Закладки", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Закреплённые посты", "navigation_bar.preferences": "Настройки", "navigation_bar.public_timeline": "Глобальная лента", + "navigation_bar.search": "Search", "navigation_bar.security": "Безопасность", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} сообщил о {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Никто ещё не продвинул этот пост. Как только кто-то это сделает, они появятся здесь.", "status.redraft": "Удалить и исправить", "status.remove_bookmark": "Убрать из закладок", + "status.replied_to": "Replied to {name}", "status.reply": "Ответить", "status.replyAll": "Ответить всем", "status.report": "Пожаловаться", @@ -578,9 +585,8 @@ "status.show_more": "Развернуть", "status.show_more_all": "Развернуть все спойлеры в ветке", "status.show_original": "Показать оригинал", - "status.show_thread": "Показать обсуждение", "status.translate": "Перевод", - "status.translated_from": "Переведено с {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Невозможно отобразить файл", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index d18bc78b3c..691011e7ef 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -39,7 +39,7 @@ "account.follows.empty": "न कोऽप्यनुसृतो वर्तते", "account.follows_you": "त्वामनुसरति", "account.hide_reblogs": "@{name} मित्रस्य प्रकाशनानि छिद्यन्ताम्", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "अन्तर्जालस्थानस्यास्य स्वामित्वं परीक्षितमासीत् {date} दिने", "account.locked_info": "एतस्या लेखायाः गुह्यता \"निषिद्ध\"इति वर्तते । स्वामी स्वयञ्चिनोति कोऽनुसर्ता भवितुमर्हतीति ।", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "पिधीयताम्", "bundle_modal_error.message": "आरोपणे कश्चन दोषो जातः", "bundle_modal_error.retry": "पुनः यतताम्", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "निषिद्धभोक्तारः", "column.bookmarks": "पुटचिह्नानि", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 54a23cffab..393d7144cc 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -39,7 +39,7 @@ "account.follows.empty": "Custa persone non sighit ancora a nemos.", "account.follows_you": "Ti sighit", "account.hide_reblogs": "Cua is cumpartziduras de @{name}", - "account.joined": "At aderidu su {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Sa propiedade de custu ligòngiu est istada controllada su {date}", "account.locked_info": "S'istadu de riservadesa de custu contu est istadu cunfiguradu comente blocadu. Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Serra", "bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.", "bundle_modal_error.retry": "Torra·bi a proare", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Persones blocadas", "column.bookmarks": "Sinnalibros", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Publicatziones apicadas", "navigation_bar.preferences": "Preferèntzias", "navigation_bar.public_timeline": "Lìnia de tempus federada", + "navigation_bar.search": "Search", "navigation_bar.security": "Seguresa", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nemos at ancora cumpartzidu custa publicatzione. Cando calicunu dd'at a fàghere, at a èssere ammustrada inoghe.", "status.redraft": "Cantzella e torra a iscrìere", "status.remove_bookmark": "Boga su sinnalibru", + "status.replied_to": "Replied to {name}", "status.reply": "Risponde", "status.replyAll": "Risponde a su tema", "status.report": "Sinnala @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Ammustra·nde prus", "status.show_more_all": "Ammustra·nde prus pro totus", "status.show_original": "Show original", - "status.show_thread": "Ammustra su tema", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "No est a disponimentu", "status.unmute_conversation": "Torra a ativare s'arresonada", "status.unpin": "Boga dae pitzu de su profilu", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 0ab05ed58a..56ee9c17a4 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -39,7 +39,7 @@ "account.follows.empty": "තවමත් කිසිවෙක් අනුගමනය නොකරයි.", "account.follows_you": "ඔබව අනුගමනය කරයි", "account.hide_reblogs": "@{name}සිට බූස්ට් සඟවන්න", - "account.joined": "{date} එක් වී ඇත", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "මෙම සබැඳියේ අයිතිය {date} දී පරීක්‍ෂා කෙරිණි", "account.locked_info": "මෙම ගිණුමේ රහස්‍යතා තත්ත්වය අගුලු දමා ඇත. හිමිකරු ඔවුන් අනුගමනය කළ හැක්කේ කාටදැයි හස්තීයව සමාලෝචනය කරයි.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "වසන්න", "bundle_modal_error.message": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.", "bundle_modal_error.retry": "නැවත උත්සාහ කරන්න", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "පිලිබඳව", "column.blocks": "අවහිර කළ අය", "column.bookmarks": "පොත් යොමු", @@ -379,6 +384,7 @@ "navigation_bar.pins": "ඇමිණූ ලිපි", "navigation_bar.preferences": "අභිප්‍රේත", "navigation_bar.public_timeline": "ෆෙඩරේටඩ් කාලරේඛාව", + "navigation_bar.search": "Search", "navigation_bar.security": "ආරක්ෂාව", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} වාර්තා {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "තාම කවුරුත් මේ toot එක boost කරලා නැහැ. යමෙකු එසේ කළ විට, ඔවුන් මෙහි පෙන්වනු ඇත.", "status.redraft": "මකන්න සහ නැවත කෙටුම්පත", "status.remove_bookmark": "පොත්යොමුව ඉවතලන්න", + "status.replied_to": "Replied to {name}", "status.reply": "පිළිතුරු", "status.replyAll": "ත්‍රෙඩ් එකට පිළිතුරු දෙන්න", "status.report": "@{name} වාර්තාව", @@ -578,9 +585,8 @@ "status.show_more": "තවත් පෙන්වන්න", "status.show_more_all": "සියල්ල වැඩියෙන් පෙන්වන්න", "status.show_original": "Show original", - "status.show_thread": "නූල් පෙන්වන්න", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "නොතිබේ", "status.unmute_conversation": "සංවාදය නොනිහඬ", "status.unpin": "පැතිකඩෙන් ගළවන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 21bf1b6995..1a96929543 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -39,7 +39,7 @@ "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.", "account.follows_you": "Nasleduje ťa", "account.hide_reblogs": "Skry vyzdvihnutia od @{name}", - "account.joined": "Pridal/a sa v {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}", "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Zatvor", "bundle_modal_error.message": "Nastala chyba pri načítaní tohto komponentu.", "bundle_modal_error.retry": "Skúsiť znova", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokovaní užívatelia", "column.bookmarks": "Záložky", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pripnuté príspevky", "navigation_bar.preferences": "Nastavenia", "navigation_bar.public_timeline": "Federovaná časová os", + "navigation_bar.search": "Search", "navigation_bar.security": "Zabezbečenie", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} nahlásil/a {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nikto ešte nevyzdvihol tento príspevok. Keď tak niekto urobí, bude to zobrazené práve tu.", "status.redraft": "Vymaž a prepíš", "status.remove_bookmark": "Odstráň záložku", + "status.replied_to": "Replied to {name}", "status.reply": "Odpovedať", "status.replyAll": "Odpovedz na diskusiu", "status.report": "Nahlás @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Ukáž viac", "status.show_more_all": "Všetkým ukáž viac", "status.show_original": "Show original", - "status.show_thread": "Ukáž diskusné vlákno", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nedostupný/é", "status.unmute_conversation": "Prestaň si nevšímať konverzáciu", "status.unpin": "Odopni z profilu", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 571042e2e6..2b8ed76260 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij izpostavitve od @{name}", - "account.joined": "Pridružen/a {date}", + "account.joined_short": "Joined", "account.languages": "Spremeni naročene jezike", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", @@ -79,18 +79,23 @@ "audio.hide": "Skrij zvok", "autosuggest_hashtag.per_week": "{count} na teden", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopiraj poročilo o napaki", + "bundle_column_error.error.body": "Zahtevane strani ni mogoče upodobiti. Vzrok težave je morda hrošč v naši kodi ali pa nezdružljivost z brskalnikom.", + "bundle_column_error.error.title": "Oh, ne!", + "bundle_column_error.network.body": "Pri poskusu nalaganja te strani je prišlo do napake. Vzrok je lahko začasna težava z vašo internetno povezavo ali s tem strežnikom.", + "bundle_column_error.network.title": "Napaka omrežja", "bundle_column_error.retry": "Poskusi ponovno", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Nazaj domov", + "bundle_column_error.routing.body": "Zahtevane strani ni mogoče najti. Ali ste prepričani, da je naslov URL v naslovni vrstici pravilen?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zapri", "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", "bundle_modal_error.retry": "Poskusi ponovno", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "O programu", "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pripete objave", "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", + "navigation_bar.search": "Search", "navigation_bar.security": "Varnost", "not_signed_in_indicator.not_signed_in": "Za dostop do tega vira se morate prijaviti.", "notification.admin.report": "{name} je prijavil/a {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Nihče še ni izpostavil te objave. Ko se bo to zgodilo, se bodo pojavile tukaj.", "status.redraft": "Izbriši in preoblikuj", "status.remove_bookmark": "Odstrani zaznamek", + "status.replied_to": "Replied to {name}", "status.reply": "Odgovori", "status.replyAll": "Odgovori na objavo", "status.report": "Prijavi @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Prikaži več", "status.show_more_all": "Prikaži več za vse", "status.show_original": "Pokaži izvirnik", - "status.show_thread": "Prikaži objavo", "status.translate": "Prevedi", - "status.translated_from": "Prevedeno iz jezika: {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index f30d920f8f..3239d7cf44 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -39,7 +39,7 @@ "account.follows.empty": "Ky përdorues ende s’ndjek kënd.", "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", - "account.joined": "U bë pjesë më {date}", + "account.joined_short": "Joined", "account.languages": "Ndryshoni gjuhë pajtimesh", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Mbylle", "bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_modal_error.retry": "Riprovoni", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Mbi", "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Mesazhe të fiksuar", "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", + "navigation_bar.search": "Search", "navigation_bar.security": "Siguri", "not_signed_in_indicator.not_signed_in": "Që të përdorni këtë burim, lypset të bëni hyrjen.", "notification.admin.report": "{name} raportoi {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Këtë mesazh s’e ka përforcuar njeri deri tani. Kur ta bëjë dikush, kjo do të duket këtu.", "status.redraft": "Fshijeni & rihartojeni", "status.remove_bookmark": "Hiqe faqerojtësin", + "status.replied_to": "Replied to {name}", "status.reply": "Përgjigjuni", "status.replyAll": "Përgjigjuni rrjedhës", "status.report": "Raportojeni @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Shfaq më tepër", "status.show_more_all": "Shfaq më tepër për të tërë", "status.show_original": "Shfaq origjinalin", - "status.show_thread": "Shfaq rrjedhën", "status.translate": "Përktheje", - "status.translated_from": "Përkthyer nga {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 92f1bee4c4..843fbcb114 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Prati Vas", "account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Zatvori", "bundle_modal_error.message": "Nešto nije bilo u redu pri učitavanju ove komponente.", "bundle_modal_error.retry": "Pokušajte ponovo", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blokirani korisnici", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Prikačeni tutovi", "navigation_bar.preferences": "Podešavanja", "navigation_bar.public_timeline": "Federisana lajna", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Odgovori", "status.replyAll": "Odgovori na diskusiju", "status.report": "Prijavi korisnika @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Prikaži više", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Uključi prepisku", "status.unpin": "Otkači sa profila", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 9faac37bba..4c775626a2 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -39,7 +39,7 @@ "account.follows.empty": "Корисник тренутно не прати никога.", "account.follows_you": "Прати Вас", "account.hide_reblogs": "Сакриј подршке које даје корисника @{name}", - "account.joined": "Придружио/ла се {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Власништво над овом везом је проверено {date}", "account.locked_info": "Статус приватности овог налога је подешен на закључано. Власник ручно прегледа ко га може пратити.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Затвори", "bundle_modal_error.message": "Нешто није било у реду при учитавању ове компоненте.", "bundle_modal_error.retry": "Покушајте поново", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Блокирани корисници", "column.bookmarks": "Обележивачи", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Прикачене трубе", "navigation_bar.preferences": "Подешавања", "navigation_bar.public_timeline": "Здружена временска линија", + "navigation_bar.search": "Search", "navigation_bar.security": "Безбедност", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Још увек нико није подржао ову трубу. Када буде подржана, појавиће се овде.", "status.redraft": "Избриши и преправи", "status.remove_bookmark": "Уклони обележивач", + "status.replied_to": "Replied to {name}", "status.reply": "Одговори", "status.replyAll": "Одговори на дискусију", "status.report": "Пријави корисника @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Прикажи више", "status.show_more_all": "Прикажи више за све", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Није доступно", "status.unmute_conversation": "Укључи преписку", "status.unpin": "Откачи са налога", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 32a405b9a0..48c2a48ad7 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -39,7 +39,7 @@ "account.follows.empty": "Denna användare följer inte någon än.", "account.follows_you": "Följer dig", "account.hide_reblogs": "Dölj knuffar från @{name}", - "account.joined": "Gick med {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Stäng", "bundle_modal_error.message": "Något gick fel när denna komponent laddades.", "bundle_modal_error.retry": "Försök igen", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blockerade användare", "column.bookmarks": "Bokmärken", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Nålade inlägg (toots)", "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Federerad tidslinje", + "navigation_bar.search": "Search", "navigation_bar.security": "Säkerhet", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ingen har favoriserat den här tutningen än. När någon gör det kommer den att synas här.", "status.redraft": "Radera & gör om", "status.remove_bookmark": "Ta bort bokmärke", + "status.replied_to": "Replied to {name}", "status.reply": "Svara", "status.replyAll": "Svara på tråden", "status.report": "Rapportera @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Visa mer", "status.show_more_all": "Visa mer för alla", "status.show_original": "Show original", - "status.show_thread": "Visa tråd", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Ej tillgängligt", "status.unmute_conversation": "Öppna konversation", "status.unpin": "Ångra fäst i profil", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index e008749667..cc0fa70690 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 7f88275e40..8155200bb8 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -39,7 +39,7 @@ "account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.", "account.follows_you": "உங்களைப் பின்தொடர்கிறார்", "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}", - "account.joined": "சேர்ந்த நாள் {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}", "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "மூடுக", "bundle_modal_error.message": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", "bundle_modal_error.retry": "மீண்டும் முயற்சி செய்", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "தடுக்கப்பட்ட பயனர்கள்", "column.bookmarks": "அடையாளக்குறிகள்", @@ -379,6 +384,7 @@ "navigation_bar.pins": "பொருத்தப்பட்டன toots", "navigation_bar.preferences": "விருப்பங்கள்", "navigation_bar.public_timeline": "கூட்டாட்சி காலக்கெடு", + "navigation_bar.search": "Search", "navigation_bar.security": "பத்திரம்", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "இதுவரை யாரும் இந்த மோதலை அதிகரிக்கவில்லை. யாராவது செய்தால், அவர்கள் இங்கே காண்பார்கள்.", "status.redraft": "நீக்கு மற்றும் மீண்டும் வரைவு", "status.remove_bookmark": "அடையாளம் நீக்கு", + "status.replied_to": "Replied to {name}", "status.reply": "பதில்", "status.replyAll": "நூலுக்கு பதிலளிக்கவும்", "status.report": "@{name} மீது புகாரளி", @@ -578,9 +585,8 @@ "status.show_more": "மேலும் காட்ட", "status.show_more_all": "அனைவருக்கும் மேலும் காட்டு", "status.show_original": "Show original", - "status.show_thread": "நூல் காட்டு", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "கிடைக்கவில்லை", "status.unmute_conversation": "ஊமையாக உரையாடல் இல்லை", "status.unpin": "சுயவிவரத்திலிருந்து நீக்கவும்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index c70f45cdb6..99d998ef64 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 75fd5644cb..1815d4e3e0 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -39,7 +39,7 @@ "account.follows.empty": "ఈ వినియోగదారి ఇంకా ఎవరినీ అనుసరించడంలేదు.", "account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు", "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "ఈ లంకె యొక్క యాజమాన్యం {date}న పరీక్షించబడింది", "account.locked_info": "ఈ ఖాతా యొక్క గోప్యత స్థితి లాక్ చేయబడి వుంది. ఈ ఖాతాను ఎవరు అనుసరించవచ్చో యజమానే నిర్ణయం తీసుకుంటారు.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "మూసివేయు", "bundle_modal_error.message": "ఈ భాగం లోడ్ అవుతున్నప్పుడు ఏదో తప్పు జరిగింది.", "bundle_modal_error.retry": "మళ్ళీ ప్రయత్నించండి", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "అతికించిన టూట్లు", "navigation_bar.preferences": "ప్రాధాన్యతలు", "navigation_bar.public_timeline": "సమాఖ్య కాలక్రమం", + "navigation_bar.search": "Search", "navigation_bar.security": "భద్రత", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "ఈ టూట్ను ఇంకా ఎవరూ బూస్ట్ చేయలేదు. ఎవరైనా చేసినప్పుడు, అవి ఇక్కడ కనబడతాయి.", "status.redraft": "తొలగించు & తిరగరాయు", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "ప్రత్యుత్తరం", "status.replyAll": "సంభాషణకు ప్రత్యుత్తరం ఇవ్వండి", "status.report": "@{name}పై ఫిర్యాదుచేయు", @@ -578,9 +585,8 @@ "status.show_more": "ఇంకా చూపించు", "status.show_more_all": "అన్నిటికీ ఇంకా చూపించు", "status.show_original": "Show original", - "status.show_thread": "గొలుసును చూపించు", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి", "status.unpin": "ప్రొఫైల్ నుండి పీకివేయు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index d16f2c1eac..66f58d6ed5 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -39,7 +39,7 @@ "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร", "account.follows_you": "ติดตามคุณ", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", - "account.joined": "เข้าร่วมเมื่อ {date}", + "account.joined_short": "Joined", "account.languages": "เปลี่ยนภาษาที่บอกรับ", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", @@ -79,18 +79,23 @@ "audio.hide": "ซ่อนเสียง", "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", - "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.copy_stacktrace": "คัดลอกรายงานข้อผิดพลาด", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", "bundle_column_error.error.title": "Oh, no!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "ข้อผิดพลาดเครือข่าย", "bundle_column_error.retry": "ลองอีกครั้ง", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "กลับไปที่หน้าแรก", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "ปิด", "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", "bundle_modal_error.retry": "ลองอีกครั้ง", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "เกี่ยวกับ", "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", @@ -379,6 +384,7 @@ "navigation_bar.pins": "โพสต์ที่ปักหมุด", "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", + "navigation_bar.search": "Search", "navigation_bar.security": "ความปลอดภัย", "not_signed_in_indicator.not_signed_in": "คุณจำเป็นต้องลงชื่อเข้าเพื่อเข้าถึงทรัพยากรนี้", "notification.admin.report": "{name} ได้รายงาน {target}", @@ -530,7 +536,7 @@ "server_banner.server_stats": "สถิติเซิร์ฟเวอร์:", "sign_in_banner.create_account": "สร้างบัญชี", "sign_in_banner.sign_in": "ลงชื่อเข้า", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "sign_in_banner.text": "ลงชื่อเข้าเพื่อติดตามโปรไฟล์หรือแฮชแท็ก ชื่นชอบ แบ่งปัน และตอบกลับโพสต์ หรือโต้ตอบจากบัญชีของคุณในเซิร์ฟเวอร์อื่น", "status.admin_account": "เปิดส่วนติดต่อการควบคุมสำหรับ @{name}", "status.admin_status": "เปิดโพสต์นี้ในส่วนติดต่อการควบคุม", "status.block": "ปิดกั้น @{name}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "ยังไม่มีใครดันโพสต์นี้ เมื่อใครสักคนดัน เขาจะปรากฏที่นี่", "status.redraft": "ลบแล้วร่างใหม่", "status.remove_bookmark": "เอาที่คั่นหน้าออก", + "status.replied_to": "Replied to {name}", "status.reply": "ตอบกลับ", "status.replyAll": "ตอบกลับกระทู้", "status.report": "รายงาน @{name}", @@ -578,9 +585,8 @@ "status.show_more": "แสดงเพิ่มเติม", "status.show_more_all": "แสดงเพิ่มเติมทั้งหมด", "status.show_original": "แสดงดั้งเดิม", - "status.show_thread": "แสดงกระทู้", "status.translate": "แปล", - "status.translated_from": "แปลจาก {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "ไม่พร้อมใช้งาน", "status.unmute_conversation": "เลิกซ่อนการสนทนา", "status.unpin": "ถอนหมุดจากโปรไฟล์", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 6806aa1991..4c1e7c0667 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -27,9 +27,9 @@ "account.edit_profile": "Profili düzenle", "account.enable_notifications": "@{name}'in gönderilerini bana bildir", "account.endorse": "Profilimde öne çıkar", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Son gönderinin tarihi {date}", + "account.featured_tags.last_status_never": "Gönderi yok", + "account.featured_tags.title": "{name} kişisinin öne çıkan etiketleri", "account.follow": "Takip et", "account.followers": "Takipçi", "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.", @@ -39,7 +39,7 @@ "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi takip etmiyor.", "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", - "account.joined": "{date} tarihinde katıldı", + "account.joined_short": "Joined", "account.languages": "Abone olunan dilleri değiştir", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", @@ -79,18 +79,23 @@ "audio.hide": "Sesi gizle", "autosuggest_hashtag.per_week": "Haftada {count}", "boost_modal.combo": "Bir daha ki sefere {combo} tuşuna basabilirsin", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Hata raporunu kopyala", + "bundle_column_error.error.body": "İstenen sayfa gösterilemiyor. Bu durum kodumuzdaki bir hatadan veya tarayıcı uyum sorunundan kaynaklanıyor olabilir.", + "bundle_column_error.error.title": "Ah, hayır!", + "bundle_column_error.network.body": "Sayfayı yüklemeye çalışırken bir hata oluştu. Bu durum internet bağlantınızdaki veya bu sunucudaki geçici bir sorundan kaynaklanıyor olabilir.", + "bundle_column_error.network.title": "Ağ hatası", "bundle_column_error.retry": "Tekrar deneyin", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Anasayfaya geri dön", + "bundle_column_error.routing.body": "İstenen sayfa bulunamadı. Adres çubuğundaki URL'nin doğru olduğundan emin misiniz?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Kapat", "bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.", "bundle_modal_error.retry": "Tekrar deneyin", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Hakkında", "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İmleri", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Sabitlenmiş gönderiler", "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", + "navigation_bar.search": "Search", "navigation_bar.security": "Güvenlik", "not_signed_in_indicator.not_signed_in": "Bu kaynağa erişmek için oturum açmanız gerekir.", "notification.admin.report": "{name}, {target} kişisini bildirdi", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Henüz kimse bu gönderiyi teşvik etmedi. Biri yaptığında burada görünecek.", "status.redraft": "Sil ve yeniden taslak yap", "status.remove_bookmark": "Yer imini kaldır", + "status.replied_to": "Replied to {name}", "status.reply": "Yanıtla", "status.replyAll": "Konuyu yanıtla", "status.report": "@{name} adlı kişiyi bildir", @@ -578,9 +585,8 @@ "status.show_more": "Daha fazlasını göster", "status.show_more_all": "Hepsi için daha fazla göster", "status.show_original": "Orijinali göster", - "status.show_thread": "Konuyu göster", "status.translate": "Çevir", - "status.translated_from": "{lang} dilinden çevrildi", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index cd87bd7a6f..eba18f8fc0 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -39,7 +39,7 @@ "account.follows.empty": "Беркемгә дә язылмаган әле.", "account.follows_you": "Сезгә язылган", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "{date} көнендә теркәлде", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Бу - ябык аккаунт. Аны язылучылар гына күрә ала.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Ябу", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Кыстыргычлар", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Caylaw", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Хәвефсезлек", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Күбрәк күрсәтү", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index e008749667..cc0fa70690 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index dd5a396d87..995d2afccd 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -39,7 +39,7 @@ "account.follows.empty": "Цей користувач ще ні на кого не підписався.", "account.follows_you": "Підписані на вас", "account.hide_reblogs": "Сховати поширення від @{name}", - "account.joined": "Долучилися {date}", + "account.joined_short": "Joined", "account.languages": "Змінити підписані мови", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", @@ -79,18 +79,23 @@ "audio.hide": "Сховати аудіо", "autosuggest_hashtag.per_week": "{count} в тиждень", "boost_modal.combo": "Ви можете натиснути {combo}, щоб пропустити це наступного разу", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Копіювати звіт про помилку", + "bundle_column_error.error.body": "Неможливо показати запитану сторінку. Це може бути спричинено помилкою у нашому коді, або через проблему сумісності з браузером.", + "bundle_column_error.error.title": "О, ні!", + "bundle_column_error.network.body": "Під час завантаження цієї сторінки сталася помилка. Це могло статися через тимчасову проблему з вашим інтернетом чи цим сервером.", + "bundle_column_error.network.title": "Помилка мережі", "bundle_column_error.retry": "Спробуйте ще раз", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "На головну", + "bundle_column_error.routing.body": "Запитувана сторінка не знайдена. Ви впевнені, що URL-адреса у панелі адрес правильна?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Закрити", "bundle_modal_error.message": "Щось пішло не так під час завантаження цього компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Про застосунок", "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Закріплені дописи", "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", + "navigation_bar.search": "Search", "navigation_bar.security": "Безпека", "not_signed_in_indicator.not_signed_in": "Для доступу до цього ресурсу вам потрібно увійти.", "notification.admin.report": "Скарга від {name} на {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Ніхто ще не передмухнув цього дмуху. Коли якісь користувачі це зроблять, вони будуть відображені тут.", "status.redraft": "Видалити та перестворити", "status.remove_bookmark": "Видалити закладку", + "status.replied_to": "Replied to {name}", "status.reply": "Відповісти", "status.replyAll": "Відповісти на ланцюжок", "status.report": "Поскаржитися на @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Розгорнути", "status.show_more_all": "Показувати більше для всіх", "status.show_original": "Показати оригінал", - "status.show_thread": "Показати ланцюжок", "status.translate": "Перекласти", - "status.translated_from": "Перекладено з {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index f68c829bbf..03b648fe98 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -39,7 +39,7 @@ "account.follows.empty": "\"یہ صارف ہنوز کسی کی پیروی نہیں کرتا ہے\".", "account.follows_you": "آپ کا پیروکار ہے", "account.hide_reblogs": "@{name} سے فروغ چھپائیں", - "account.joined": "{date} شامل ہوئے", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "اس لنک کی ملکیت کی توثیق {date} پر کی گئی تھی", "account.locked_info": "اس اکاونٹ کا اخفائی ضابطہ مقفل ہے۔ صارف کی پیروی کون کر سکتا ہے اس کا جائزہ وہ خود لیتا ہے.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "بند کریں", "bundle_modal_error.message": "اس عنصر کو برآمد کرتے وقت کچھ خرابی پیش آئی ہے.", "bundle_modal_error.retry": "دوبارہ کوشش کریں", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "مسدود صارفین", "column.bookmarks": "بُک مارکس", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "وفاقی ٹائم لائن", + "navigation_bar.search": "Search", "navigation_bar.security": "سیکورٹی", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 1ef82dffd5..b05bed7745 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -39,7 +39,7 @@ "account.follows.empty": "Người này chưa theo dõi ai.", "account.follows_you": "Đang theo dõi bạn", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", - "account.joined": "Đã tham gia {date}", + "account.joined_short": "Joined", "account.languages": "Đổi ngôn ngữ mong muốn", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.", @@ -79,18 +79,23 @@ "audio.hide": "Ẩn âm thanh", "autosuggest_hashtag.per_week": "{count} mỗi tuần", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Sao chép báo lỗi", + "bundle_column_error.error.body": "Không thể hiện trang này. Đây có thể là một lỗi trong mã lập trình của chúng tôi, hoặc là vấn đề tương thích của trình duyệt.", + "bundle_column_error.error.title": "Ôi không!", + "bundle_column_error.network.body": "Đã xảy ra lỗi khi tải trang này. Đây có thể là vấn đề tạm thời rớt mạng của bạn hoặc máy chủ này.", + "bundle_column_error.network.title": "Lỗi mạng", "bundle_column_error.retry": "Thử lại", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Quay lại trang chủ", + "bundle_column_error.routing.body": "Không thể tìm thấy trang cần tìm. Bạn có chắc URL trong thanh địa chỉ là chính xác?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Đóng", "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_modal_error.retry": "Thử lại", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Giới thiệu", "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Tút ghim", "navigation_bar.preferences": "Cài đặt", "navigation_bar.public_timeline": "Thế giới", + "navigation_bar.search": "Search", "navigation_bar.security": "Bảo mật", "not_signed_in_indicator.not_signed_in": "Bạn cần đăng nhập để truy cập mục này.", "notification.admin.report": "{name} đã báo cáo {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "Tút này chưa có ai đăng lại. Nếu có, nó sẽ hiển thị ở đây.", "status.redraft": "Xóa và viết lại", "status.remove_bookmark": "Bỏ lưu", + "status.replied_to": "Replied to {name}", "status.reply": "Trả lời", "status.replyAll": "Trả lời người đăng tút", "status.report": "Báo cáo @{name}", @@ -578,9 +585,8 @@ "status.show_more": "Xem thêm", "status.show_more_all": "Hiển thị tất cả", "status.show_original": "Bản gốc", - "status.show_thread": "Trích nguyên văn", "status.translate": "Dịch", - "status.translated_from": "Dịch từ {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 41fe0786aa..681667a2fc 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -39,7 +39,7 @@ "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "ⴹⴼⵕⵏ ⴽⵯⵏ", "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined": "Joined {date}", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "ⵔⴳⵍ", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "ⴰⵍⵙ ⴰⵔⵎ", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "ⵉⵏⵙⵙⵎⵔⵙⵏ ⵜⵜⵓⴳⴷⵍⵏⵉⵏ", "column.bookmarks": "Bookmarks", @@ -379,6 +384,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", "status.reply": "ⵔⴰⵔ", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -578,9 +585,8 @@ "status.show_more": "ⵙⵎⴰⵍ ⵓⴳⴳⴰⵔ", "status.show_more_all": "ⵙⵎⴰⵍ ⵓⴳⴳⴰⵔ ⵉ ⵎⴰⵕⵕⴰ", "status.show_original": "Show original", - "status.show_thread": "Show thread", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 9a2c4a03d6..bbc1249074 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,17 +1,17 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "被限制的服务器", + "about.contact": "联系方式:", + "about.domain_blocks.comment": "原因", + "about.domain_blocks.domain": "域名", + "about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。", + "about.domain_blocks.severity": "级别", + "about.domain_blocks.silenced.explanation": "除非明确地搜索并关注对方,否则你不会看到来自此服务器的用户信息与内容。", + "about.domain_blocks.silenced.title": "已隐藏", + "about.domain_blocks.suspended.explanation": "此服务器的数据将不会被处理、存储或者交换,本站也将无法和来自此服务器的用户互动或者交流。", + "about.domain_blocks.suspended.title": "已封禁", + "about.not_available": "此信息在当前服务器尚不可用。", + "about.powered_by": "由 {mastodon} 驱动的分布式社交媒体", + "about.rules": "站点规则", "account.account_note_header": "备注", "account.add_or_remove_from_list": "从列表中添加或移除", "account.badges.bot": "机器人", @@ -20,16 +20,16 @@ "account.block_domain": "屏蔽 {domain} 实例", "account.blocked": "已屏蔽", "account.browse_more_on_origin_server": "在原始个人资料页面上浏览详情", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "撤回关注请求", "account.direct": "发送私信给 @{name}", "account.disable_notifications": "当 @{name} 发嘟时不要通知我", "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发嘟时通知我", "account.endorse": "在个人资料中推荐此用户", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "最近发言于 {date}", + "account.featured_tags.last_status_never": "暂无嘟文", + "account.featured_tags.title": "{name} 的精选标签", "account.follow": "关注", "account.followers": "关注者", "account.followers.empty": "目前无人关注此用户。", @@ -39,7 +39,7 @@ "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", - "account.joined": "加入于 {date}", + "account.joined_short": "Joined", "account.languages": "更改订阅语言", "account.link_verified_on": "此链接的所有权已在 {date} 检查", "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", @@ -79,18 +79,23 @@ "audio.hide": "隐藏音频", "autosuggest_hashtag.per_week": "每星期 {count} 条", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "复制错误报告", + "bundle_column_error.error.body": "请求的页面无法渲染。这可能是由于代码错误或浏览器兼容性等问题造成。", + "bundle_column_error.error.title": "糟糕!", + "bundle_column_error.network.body": "尝试加载此页面时出错。这可能是由于你到此服务器的网络连接存在问题。", + "bundle_column_error.network.title": "网络错误", "bundle_column_error.retry": "重试", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "返回首页", + "bundle_column_error.routing.body": "找不到请求的页面。你确定地址栏中的 URL 正确吗?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "关于", "column.blocks": "已屏蔽的用户", "column.bookmarks": "书签", @@ -144,8 +149,8 @@ "confirmations.block.block_and_report": "屏蔽与举报", "confirmations.block.confirm": "屏蔽", "confirmations.block.message": "你确定要屏蔽 {name} 吗?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "撤回请求", + "confirmations.cancel_follow_request.message": "确定要撤回对 {name} 的关注请求吗?", "confirmations.delete.confirm": "删除", "confirmations.delete.message": "你确定要删除这条嘟文吗?", "confirmations.delete_list.confirm": "删除", @@ -169,18 +174,18 @@ "conversation.mark_as_read": "标记为已读", "conversation.open": "查看对话", "conversation.with": "与 {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "已复制", + "copypaste.copy": "复制", "directory.federated": "来自已知联邦宇宙", "directory.local": "仅来自 {domain}", "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "这些是来自 {domain} 用户的最新公共嘟文。", + "dismissable_banner.dismiss": "忽略", + "dismissable_banner.explore_links": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。", + "dismissable_banner.explore_statuses": "来自本站和分布式网络上其他站点的这些嘟文正在本站引起关注。", + "dismissable_banner.explore_tags": "这些标签正在本站和分布式网络上其他站点的用户中引起关注。", + "dismissable_banner.public_timeline": "这些是来自本站和分布式网络上其他已知站点用户的最新公共嘟文。", "embed.instructions": "复制下列代码以在你的网站中嵌入此嘟文。", "embed.preview": "它会像这样显示出来:", "emoji_button.activity": "活动", @@ -278,18 +283,18 @@ "home.column_settings.show_replies": "显示回复", "home.hide_announcements": "隐藏公告", "home.show_announcements": "显示公告", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "拥有一个 Mastodon 账号,你可以对此嘟文点赞及收藏,并让其作者收到你的赞赏。", + "interaction_modal.description.follow": "拥有一个 Mastodon 账号,你可以关注 {name} 并在自己的首页上接收对方的新嘟文。", + "interaction_modal.description.reblog": "拥有一个 Mastodon 账号,你可以向自己的关注者们转发此嘟文。", + "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你可以回复此嘟文。", + "interaction_modal.on_another_server": "在另一服务器", + "interaction_modal.on_this_server": "在此服务器", + "interaction_modal.other_server_instructions": "只需复制此 URL 并将其粘贴在搜索栏中,使用你喜欢的应用或网页界面均可。", + "interaction_modal.preamble": "由于 Mastodon 是去中心化的,如果你在本站没有账号,也可以使用在另一 Mastodon 服务器或其他兼容平台上的已有账号。", + "interaction_modal.title.favourite": "喜欢 {name} 的嘟文", + "interaction_modal.title.follow": "关注 {name}", + "interaction_modal.title.reblog": "转发 {name} 的嘟文", + "interaction_modal.title.reply": "回复 {name} 的嘟文", "intervals.full.days": "{number} 天", "intervals.full.hours": "{number} 小时", "intervals.full.minutes": "{number} 分钟", @@ -379,6 +384,7 @@ "navigation_bar.pins": "置顶嘟文", "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", + "navigation_bar.search": "Search", "navigation_bar.security": "安全", "not_signed_in_indicator.not_signed_in": "您需要登录才能访问此资源。", "notification.admin.report": "{name} 已报告 {target}", @@ -448,8 +454,8 @@ "privacy.public.short": "公开", "privacy.unlisted.long": "对所有人可见,但不加入探索功能", "privacy.unlisted.short": "不公开", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "最近更新于 {date}", + "privacy_policy.title": "隐私政策", "refresh": "刷新", "regeneration_indicator.label": "加载中……", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", @@ -567,6 +573,7 @@ "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "移除书签", + "status.replied_to": "Replied to {name}", "status.reply": "回复", "status.replyAll": "回复所有人", "status.report": "举报 @{name}", @@ -578,9 +585,8 @@ "status.show_more": "显示更多", "status.show_more_all": "显示全部内容", "status.show_original": "显示原文", - "status.show_thread": "显示全部对话", "status.translate": "翻译", - "status.translated_from": "翻译自 {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index abc6d98d86..7fd51bfa78 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -39,7 +39,7 @@ "account.follows.empty": "這位使用者尚未關注任何人。", "account.follows_you": "關注你", "account.hide_reblogs": "隱藏 @{name} 的轉推", - "account.joined": "於 {date} 加入", + "account.joined_short": "Joined", "account.languages": "Change subscribed languages", "account.link_verified_on": "此連結的所有權已在 {date} 檢查過", "account.locked_info": "這位使用者將私隱設定為「不公開」,會手動審批誰能關注他/她。", @@ -91,6 +91,11 @@ "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "加載本組件出錯。", "bundle_modal_error.retry": "重試", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "封鎖名單", "column.bookmarks": "書籤", @@ -379,6 +384,7 @@ "navigation_bar.pins": "置頂文章", "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "跨站時間軸", + "navigation_bar.search": "Search", "navigation_bar.security": "安全", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "還未有人轉推。有的話會顯示在這裡。", "status.redraft": "刪除並編輯", "status.remove_bookmark": "移除書籤", + "status.replied_to": "Replied to {name}", "status.reply": "回應", "status.replyAll": "回應所有人", "status.report": "舉報 @{name}", @@ -578,9 +585,8 @@ "status.show_more": "展開", "status.show_more_all": "全部展開", "status.show_original": "Show original", - "status.show_thread": "顯示討論串", "status.translate": "Translate", - "status.translated_from": "Translated from {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "對話解除靜音", "status.unpin": "解除置頂", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 7d76a8cd0d..d75a57e320 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -39,7 +39,7 @@ "account.follows.empty": "這位使用者尚未跟隨任何人。", "account.follows_you": "跟隨了您", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", - "account.joined": "加入於 {date}", + "account.joined_short": "Joined", "account.languages": "變更訂閱的語言", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", @@ -79,18 +79,23 @@ "audio.hide": "隱藏音訊", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "下次您可以按 {combo} 跳過", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "複製錯誤報告", + "bundle_column_error.error.body": "無法繪製請求的頁面。這可能是因為我們程式碼中的臭蟲或是瀏覽器的相容問題。", + "bundle_column_error.error.title": "糟糕!", + "bundle_column_error.network.body": "嘗試載入此頁面時發生錯誤。這可能是因為您的網際網路連線或此伺服器有暫時性的問題。", + "bundle_column_error.network.title": "網路錯誤", "bundle_column_error.retry": "重試", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "返回首頁", + "bundle_column_error.routing.body": "找不到請求的頁面。您確定網址列中的 URL 是正確的嗎?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "載入此元件時發生錯誤。", "bundle_modal_error.retry": "重試", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "關於", "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", @@ -379,6 +384,7 @@ "navigation_bar.pins": "釘選的嘟文", "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", + "navigation_bar.search": "Search", "navigation_bar.security": "安全性", "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。", "notification.admin.report": "{name} 檢舉了 {target}", @@ -567,6 +573,7 @@ "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", "status.redraft": "刪除並重新編輯", "status.remove_bookmark": "移除書籤", + "status.replied_to": "Replied to {name}", "status.reply": "回覆", "status.replyAll": "回覆討論串", "status.report": "檢舉 @{name}", @@ -578,9 +585,8 @@ "status.show_more": "顯示更多", "status.show_more_all": "顯示更多這類嘟文", "status.show_original": "顯示原文", - "status.show_thread": "顯示討論串", "status.translate": "翻譯", - "status.translated_from": "翻譯自 {lang}", + "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", "status.unpin": "從個人檔案頁面解除釘選", diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml index ddf3fed4ef..5f109c2c1a 100644 --- a/config/locales/activerecord.ca.yml +++ b/config/locales/activerecord.ca.yml @@ -29,6 +29,10 @@ ca: attributes: website: invalid: no és una URL vàlida + import: + attributes: + data: + malformed: està mal format status: attributes: reblog: diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml index d1eda34062..e00b806962 100644 --- a/config/locales/activerecord.es-AR.yml +++ b/config/locales/activerecord.es-AR.yml @@ -29,6 +29,10 @@ es-AR: attributes: website: invalid: no es una dirección web válida + import: + attributes: + data: + malformed: está malformado status: attributes: reblog: diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml index a80e3ece52..9393008949 100644 --- a/config/locales/activerecord.gl.yml +++ b/config/locales/activerecord.gl.yml @@ -29,6 +29,10 @@ gl: attributes: website: invalid: non é un URL válido + import: + attributes: + data: + malformed: ten formato incorrecto status: attributes: reblog: diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml index 1fe5403226..fa3406fe33 100644 --- a/config/locales/activerecord.is.yml +++ b/config/locales/activerecord.is.yml @@ -29,6 +29,10 @@ is: attributes: website: invalid: er ekki gild vefslóð + import: + attributes: + data: + malformed: er rangt formað status: attributes: reblog: diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml index 388c354aef..ef2319520f 100644 --- a/config/locales/activerecord.it.yml +++ b/config/locales/activerecord.it.yml @@ -29,6 +29,10 @@ it: attributes: website: invalid: non è un URL valido + import: + attributes: + data: + malformed: è malformato status: attributes: reblog: diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml index 8ce4c07013..9697215b59 100644 --- a/config/locales/activerecord.ko.yml +++ b/config/locales/activerecord.ko.yml @@ -29,6 +29,10 @@ ko: attributes: website: invalid: 올바른 URL이 아닙니다 + import: + attributes: + data: + malformed: 데이터가 올바르지 않습니다 status: attributes: reblog: diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml index ba31a8b3c4..649cdeedd0 100644 --- a/config/locales/activerecord.lv.yml +++ b/config/locales/activerecord.lv.yml @@ -29,6 +29,10 @@ lv: attributes: website: invalid: nav derīgs URL + import: + attributes: + data: + malformed: ir nepareizi veidots status: attributes: reblog: diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml index 7bfe0f7101..0e1f824b79 100644 --- a/config/locales/activerecord.nl.yml +++ b/config/locales/activerecord.nl.yml @@ -29,6 +29,10 @@ nl: attributes: website: invalid: is een ongeldige URL + import: + attributes: + data: + malformed: heeft de verkeerde opmaak status: attributes: reblog: diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml index b730eaf678..388e21fe17 100644 --- a/config/locales/activerecord.pt-PT.yml +++ b/config/locales/activerecord.pt-PT.yml @@ -29,6 +29,10 @@ pt-PT: attributes: website: invalid: não é um URL válido + import: + attributes: + data: + malformed: está malformado status: attributes: reblog: diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml index 7c217efca8..89a7574635 100644 --- a/config/locales/activerecord.sv.yml +++ b/config/locales/activerecord.sv.yml @@ -21,6 +21,10 @@ sv: username: invalid: endast bokstäver, siffror och understrykning reserved: är reserverat + import: + attributes: + data: + malformed: är felformad status: attributes: reblog: diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 159f6d40a1..0f4973d897 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -29,6 +29,10 @@ uk: attributes: website: invalid: не є дійсною URL-адресою + import: + attributes: + data: + malformed: неправильний status: attributes: reblog: diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml index 9062dc5321..ca3402f476 100644 --- a/config/locales/activerecord.vi.yml +++ b/config/locales/activerecord.vi.yml @@ -6,8 +6,8 @@ vi: expires_at: Hạn chót options: Lựa chọn user: - agreement: Đồng ý quy tắc - email: Địa chỉ email + agreement: Thỏa thuận dịch vụ + email: Địa chỉ e-mail locale: Quốc gia password: Mật khẩu user/account: @@ -29,6 +29,10 @@ vi: attributes: website: invalid: không phải là một URL hợp lệ + import: + attributes: + data: + malformed: bị hỏng status: attributes: reblog: diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index 2ebb4460c1..2548bdb234 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -29,6 +29,10 @@ zh-TW: attributes: website: invalid: 不是有效的 URL + import: + attributes: + data: + malformed: 資料不正確 status: attributes: reblog: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index a4a0aec5cf..07f4ad470b 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -5,6 +5,7 @@ ar: contact_missing: لم يتم تعيينه contact_unavailable: غير متوفر hosted_on: ماستدون مُستضاف على %{domain} + title: عن accounts: follow: اتبع followers: @@ -50,6 +51,8 @@ ar: new_email: عنوان البريد الإلكتروني الجديد submit: تعديل عنوان البريد الإلكتروني title: تعديل عنوان البريد الإلكتروني الخاص بـ %{username} + change_role: + label: تغيير الدور confirm: تأكيد confirmed: مؤكَّد confirming: التأكد @@ -123,6 +126,7 @@ ar: reset: إعادة التعيين reset_password: إعادة ضبط كلمة السر resubscribe: إعادة الاشتراك + role: الدور search: البحث search_same_email_domain: مستخدمون آخرون لديهم نفس نطاق البريد الإلكتروني search_same_ip: مستخدِمون آخرون بنفس الـ IP @@ -529,6 +533,28 @@ ar: unresolved: غير معالجة updated_at: محدث view_profile: اعرض الصفحة التعريفية + roles: + add_new: إضافة دور + categories: + administration: الإدارة + invites: الدعوات + moderation: الإشراف + special: مميز + delete: حذف + everyone: الصلاحيات الافتراضية + privileges: + administrator: مدير + manage_announcements: ادارة الاعلانات + manage_appeals: إدارة الاستئنافات + manage_federation: إدارة الفديرالية + manage_invites: إدارة الدعوات + manage_reports: إدارة التقارير + manage_roles: إدارة الأدوار + manage_rules: إدارة القواعد + manage_settings: إدارة الإعدادات + manage_user_access: إدارة وصول المستخدم + manage_users: إدارة المستخدمين + title: الأدوار rules: add_new: إضافة قاعدة delete: حذف @@ -537,27 +563,49 @@ ar: empty: لم يتم تحديد قواعد الخادم بعد. title: قوانين الخادم settings: + about: + manage_rules: إدارة قواعد الخادم + title: عن + appearance: + title: المظهر + branding: + title: العلامة + content_retention: + title: الاحتفاظ بالمحتوى + discovery: + profile_directory: دليل الصفحات التعريفية + public_timelines: الخيوط الزمنية العامة + title: الاستكشاف + trends: المتداوَلة domain_blocks: all: للجميع disabled: لا أحد users: للمستخدمين المتصلين محليا + registrations: + title: التسجيلات registrations_mode: modes: approved: طلب الموافقة لازم عند إنشاء حساب none: لا أحد يمكنه إنشاء حساب open: يمكن للجميع إنشاء حساب + title: إعدادات الخادم site_uploads: delete: احذف الملف الذي تم تحميله destroyed_msg: تم حذف التحميل مِن الموقع بنجاح! statuses: + account: المؤلف + application: التطبيق back_to_account: العودة إلى صفحة الحساب back_to_report: العودة إلى صفحة التقرير batch: remove_from_report: إزالة من التقرير report: إبلاغ deleted: محذوف + favourites: المفضلة + language: اللغة media: title: الوسائط + metadata: البيانات الوصفية no_status_selected: لم يطرأ أي تغيير على أي منشور بما أنه لم يتم اختيار أي واحد title: منشورات الحساب with_media: تحتوي على وسائط @@ -625,6 +673,8 @@ ar: edit_preset: تعديل نموذج التحذير empty: لم تحدد أي إعدادات تحذير مسبقة بعد. title: إدارة نماذج التحذير + webhooks: + delete: حذف admin_mailer: new_appeal: actions: @@ -683,6 +733,7 @@ ar: warning: كن حذرا مع هذه البيانات. لا تقم أبدا بمشاركتها مع الآخَرين! your_token: رمز نفاذك auth: + apply_for_account: انضم إلى قائمة الانتظار change_password: الكلمة السرية delete_account: حذف الحساب delete_account_html: إن كنت ترغب في حذف حسابك يُمكنك المواصلة هنا. سوف يُطلَبُ منك التأكيد قبل الحذف. @@ -709,6 +760,8 @@ ar: registration_closed: لا يقبل %{instance} استقبال أعضاء جدد resend_confirmation: إعادة إرسال تعليمات التأكيد reset_password: إعادة تعيين كلمة المرور + rules: + title: بعض القواعد الأساسية. security: الأمان set_new_password: إدخال كلمة مرور جديدة setup: @@ -852,6 +905,8 @@ ar: public: الخيوط الزمنية العامة thread: المحادثات edit: + add_keyword: إضافة كلمة مفتاحية + keywords: الكلمات المفتاحية title: تعديل عامل التصفية errors: invalid_context: لم تقم بتحديد أي مجال أو أنّ المجال غير صالح @@ -1055,6 +1110,8 @@ ar: other: إعدادات أخرى posting_defaults: التفضيلات الافتراضية للنشر public_timelines: الخيوط الزمنية العامة + privacy_policy: + title: سياسة الخصوصية reactions: errors: limit_reached: تم بلوغ الحد الأقصى لردود الفعل المختلفة diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 5b09132933..873d5a67ce 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -705,16 +705,29 @@ ca: delete: Esborra el fitxer pujat destroyed_msg: La càrrega al lloc s'ha suprimit correctament! statuses: + account: Autor + application: Aplicació back_to_account: Torna a la pàgina del compte back_to_report: Torna a la pàgina del informe batch: remove_from_report: Treu del informe report: Informe deleted: Eliminada + favourites: Favorits + history: Històric de versions + in_reply_to: Responent a + language: Llengua media: title: Contingut multimèdia + metadata: Metadada no_status_selected: No s’han canviat els estatus perquè cap no ha estat seleccionat + open: Obrir apunt + original_status: Apunt original + reblogs: Impulsos + status_changed: Apunt canviat title: Estats del compte + trending: Tendència + visibility: Visibilitat with_media: Amb contingut multimèdia strikes: actions: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 64224e8d51..c2ba1e0af7 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -245,6 +245,7 @@ cs: create_unavailable_domain_html: "%{name} zastavil doručování na doménu %{target}" demote_user_html: Uživatel %{name} degradoval uživatele %{target} destroy_announcement_html: Uživatel %{name} odstranil oznámení %{target} + destroy_custom_emoji_html: "%{name} odstranil emoji %{target}" destroy_domain_allow_html: Uživatel %{name} zakázal federaci s doménou %{target} destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target} destroy_email_domain_block_html: Uživatel %{name} odblokoval e-mailovou doménu %{target} @@ -252,6 +253,7 @@ cs: destroy_ip_block_html: Uživatel %{name} odstranil pravidlo pro IP %{target} destroy_status_html: Uživatel %{name} odstranil příspěvek uživatele %{target} destroy_unavailable_domain_html: "%{name} obnovil doručování na doménu %{target}" + destroy_user_role_html: "%{name} odstranil %{target} roli" disable_2fa_user_html: Uživatel %{name} vypnul dvoufázové ověřování pro uživatele %{target} disable_custom_emoji_html: Uživatel %{name} zakázal emoji %{target} disable_sign_in_token_auth_user_html: Uživatel %{name} zrušil ověřování e-mailovým tokenem pro %{target} @@ -278,7 +280,9 @@ cs: update_announcement_html: Uživatel %{name} aktualizoval oznámení %{target} update_custom_emoji_html: Uživatel %{name} aktualizoval emoji %{target} update_domain_block_html: "%{name} aktualizoval blokaci domény %{target}" + update_ip_block_html: "%{name} změnil pravidlo pro IP %{target}" update_status_html: Uživatel %{name} aktualizoval příspěvek uživatele %{target} + update_user_role_html: "%{name} změnil %{target} roli" empty: Nebyly nalezeny žádné záznamy. filter_by_action: Filtrovat podle akce filter_by_user: Filtrovat podle uživatele @@ -724,16 +728,25 @@ cs: delete: Odstranit nahraný soubor destroyed_msg: Upload stránky byl úspěšně smazán! statuses: + account: Autor back_to_account: Zpět na stránku účtu back_to_report: Zpět na stránku hlášení batch: remove_from_report: Odebrat z hlášení report: Nahlásit deleted: Smazáno + favourites: Oblíbené + history: Historie verzí + language: Jazyk media: title: Média + metadata: Metadata no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány + open: Otevřít příspěvek + original_status: Původní příspěvek + status_changed: Příspěvek změněn title: Příspěvky účtu + visibility: Viditelnost with_media: S médii strikes: actions: diff --git a/config/locales/da.yml b/config/locales/da.yml index 5128e87f32..8c6a9c8fd5 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -684,7 +684,7 @@ da: discovery: follow_recommendations: Følg-anbefalinger preamble: At vise interessant indhold er vital ifm. at få nye brugere om bord, som måske ikke kender nogen på Mastodon. Styr, hvordan forskellige opdagelsesfunktioner fungerer på serveren. - profile_directory: Profilmappe + profile_directory: Profiloversigt public_timelines: Offentlige tidslinjer title: Opdagelse trends: Trends @@ -705,16 +705,29 @@ da: delete: Slet uploadet fil destroyed_msg: Websteds-upload blev slettet! statuses: + account: Forfatter + application: Applikation back_to_account: Retur til kontoside back_to_report: Retur til anmeldelsesside batch: remove_from_report: Fjern fra anmeldelse report: Anmeldelse deleted: Slettet + favourites: Favoritter + history: Versionshistorik + in_reply_to: Svarer på + language: Sprog media: title: Medier + metadata: Metadata no_status_selected: Ingen indlæg ændret (ingen valgt) + open: Åbn indlæg + original_status: Oprindeligt indlæg + reblogs: Genblogninger + status_changed: Indlæg ændret title: Kontoindlæg + trending: Populære + visibility: Synlighed with_media: Med medier strikes: actions: diff --git a/config/locales/de.yml b/config/locales/de.yml index 2727654310..85df6e0087 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -667,15 +667,32 @@ de: empty: Es wurden bis jetzt keine Server-Regeln definiert. title: Server-Regeln settings: + about: + rules_hint: Es gibt einen eigenen Bereich für Regeln, an die sich Ihre Benutzer halten sollen. + title: Über + appearance: + preamble: Passen Sie Mastodons Weboberfläche an. + title: Darstellung + branding: + title: Branding + content_retention: + preamble: Steuern Sie, wie nutzergenerierte Inhalte in Mastodon gespeichert werden. + discovery: + follow_recommendations: Folgeempfehlungen + title: Entdecken + trends: Trends domain_blocks: all: An alle disabled: An niemanden users: Für angemeldete lokale Benutzer + registrations: + title: Registrierungen registrations_mode: modes: approved: Zustimmung benötigt zur Registrierung none: Niemand kann sich registrieren open: Jeder kann sich registrieren + title: Servereinstellungen site_uploads: delete: Hochgeladene Datei löschen destroyed_msg: Upload erfolgreich gelöscht! @@ -902,7 +919,7 @@ de: resend_confirmation: Bestätigungs-Mail erneut versenden reset_password: Passwort zurücksetzen rules: - preamble: Diese werden von den Moderatoren von %{domain} erzwungn. + preamble: Diese werden von den Moderatoren von %{domain} erzwungen. title: Einige Grundregeln. security: Sicherheit set_new_password: Neues Passwort setzen diff --git a/config/locales/el.yml b/config/locales/el.yml index b33a275cfe..f35fa9b774 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -471,15 +471,27 @@ el: delete: Διαγραφή μεταφορτωμένου αρχείου destroyed_msg: Η μεταφόρτωση ιστότοπου διαγράφηκε επιτυχώς! statuses: + account: Συντάκτης + application: Εφαρμογή back_to_account: Επιστροφή στη σελίδα λογαριασμού batch: remove_from_report: Αφαίρεση από την αναφορά report: Αναφορά deleted: Διαγραμμένα + favourites: Αγαπημένα + history: Ιστορικό εκδόσεων + in_reply_to: Απάντηση σε + language: Γλώσσα media: title: Πολυμέσα + metadata: Μεταδεδομένα no_status_selected: Καμία δημοσίευση δεν άλλαξε αφού καμία δεν ήταν επιλεγμένη + open: Άνοιγμα δημοσίευσης + reblogs: Αναδημοσιεύσεις + status_changed: Η ανάρτηση άλλαξε title: Καταστάσεις λογαριασμού + trending: Δημοφιλή + visibility: Ορατότητα with_media: Με πολυμέσα system_checks: database_schema_check: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index f88cd29bff..63a1258e6c 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -705,16 +705,29 @@ es-AR: delete: Eliminar archivo subido destroyed_msg: "¡Subida al sitio eliminada exitosamente!" statuses: + account: Autor + application: Aplicación back_to_account: Volver a la página de la cuenta back_to_report: Volver a la página de la denuncia batch: remove_from_report: Quitar de la denuncia report: Denunciar deleted: Eliminado + favourites: Favoritos + history: Historial de versiones + in_reply_to: Respondiendo a + language: Idioma media: title: Medios + metadata: Metadatos no_status_selected: No se cambió ningún mensaje, ya que ninguno fue seleccionado + open: Abrir mensaje + original_status: Mensaje original + reblogs: Adhesiones + status_changed: Mensaje cambiado title: Mensajes de la cuenta + trending: En tendencia + visibility: Visibilidad with_media: Con medios strikes: actions: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 889c0232d6..382e2c9249 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -667,15 +667,40 @@ es-MX: empty: Aún no se han definido las normas del servidor. title: Normas del servidor settings: + about: + manage_rules: Administrar reglas del servidor + preamble: Proporciona información detallada sobre cómo el servidor es operado, moderado y financiado. + rules_hint: Hay un área dedicada para las reglas a las que se espera que tus usuarios se adhieran. + title: Acerca de + appearance: + preamble: Personalizar la interfaz web de Mastodon. + title: Apariencia + branding: + preamble: La marca de tu servidor lo diferencia de otros servidores de la red. Esta información puede mostrarse a través de una variedad de entornos, como en la interfaz web de Mastodon, en aplicaciones nativas, en previsualizaciones de enlaces en otros sitios web y en aplicaciones de mensajería, etc. Por esta razón, es mejor mantener esta información clara, breve y concisa. + title: Marca + content_retention: + preamble: Controlar cómo el contenido generado por el usuario se almacena en Mastodon. + title: Retención de contenido + discovery: + follow_recommendations: Recomendaciones de cuentas + preamble: Exponer contenido interesante a la superficie es fundamental para incorporar nuevos usuarios que pueden no conocer a nadie Mastodon. Controla cómo funcionan varias opciones de descubrimiento en tu servidor. + profile_directory: Directorio de perfiles + public_timelines: Lineas de tiempo públicas + title: Descubrimiento + trends: Tendencias domain_blocks: all: A todos disabled: A nadie users: Para los usuarios locales que han iniciado sesión + registrations: + preamble: Controla quién puede crear una cuenta en tu servidor. + title: Registros registrations_mode: modes: approved: Se requiere aprobación para registrarse none: Nadie puede registrarse open: Cualquiera puede registrarse + title: Ajustes del Servidor site_uploads: delete: Eliminar archivo subido destroyed_msg: "¡Carga del sitio eliminada con éxito!" diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 22e0147e67..c7ab01ab0e 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -5,6 +5,7 @@ fi: contact_missing: Ei asetettu contact_unavailable: Ei saatavilla hosted_on: Mastodon palvelimella %{domain} + title: Tietoja accounts: follow: Seuraa followers: @@ -173,6 +174,7 @@ fi: confirm_user: Vahvista käyttäjä create_account_warning: Luo varoitus create_announcement: Luo ilmoitus + create_canonical_email_block: Luo sähköpostin esto create_custom_emoji: Luo mukautettu emoji create_domain_allow: Salli palvelin create_domain_block: Estä palvelin @@ -182,6 +184,7 @@ fi: create_user_role: Luo rooli demote_user: Alenna käyttäjä destroy_announcement: Poista ilmoitus + destroy_canonical_email_block: Poista sähköpostin esto destroy_custom_emoji: Poista mukautettu emoji destroy_domain_allow: Salli verkkotunnuksen poisto destroy_domain_block: Poista verkkotunnuksen esto @@ -217,6 +220,7 @@ fi: update_announcement: Päivitä ilmoitus update_custom_emoji: Päivitä muokattu emoji update_domain_block: Päivitä verkkotunnuksen esto + update_ip_block: Päivitä IP-sääntö update_status: Päivitä viesti update_user_role: Päivitä rooli actions: @@ -228,6 +232,7 @@ fi: confirm_user_html: "%{name} vahvisti käyttäjän %{target} sähköpostiosoitteen" create_account_warning_html: "%{name} lähetti varoituksen henkilölle %{target}" create_announcement_html: "%{name} loi uuden ilmoituksen %{target}" + create_canonical_email_block_html: "%{name} esti sähköpostin hashilla %{target}" create_custom_emoji_html: "%{name} lähetti uuden emojin %{target}" create_domain_allow_html: "%{name} salli yhdistäminen verkkotunnuksella %{target}" create_domain_block_html: "%{name} esti verkkotunnuksen %{target}" @@ -237,6 +242,7 @@ fi: create_user_role_html: "%{name} luonut %{target} roolin" demote_user_html: "%{name} alensi käyttäjän %{target}" destroy_announcement_html: "%{name} poisti ilmoituksen %{target}" + destroy_canonical_email_block_html: "%{name} poisti sähköposti eston hashilla %{target}" destroy_custom_emoji_html: "%{name} poisti emojin %{target}" destroy_domain_allow_html: "%{name} esti yhdistämisen verkkotunnuksella %{target}" destroy_domain_block_html: "%{name} poisti verkkotunnuksen %{target} eston" @@ -272,6 +278,7 @@ fi: update_announcement_html: "%{name} päivitti ilmoituksen %{target}" update_custom_emoji_html: "%{name} päivitti emojin %{target}" update_domain_block_html: "%{name} päivitti verkkotunnuksen %{target}" + update_ip_block_html: "%{name} muutti sääntöä IP-osoitteelle %{target}" update_status_html: "%{name} päivitti viestin %{target}" update_user_role_html: "%{name} muutti roolia %{target}" empty: Lokeja ei löytynyt. @@ -317,6 +324,7 @@ fi: listed: Listassa new: title: Lisää uusi mukautettu emoji + no_emoji_selected: Hymiöitä ei muutettu, koska yhtään ei valittu not_permitted: Sinulla ei ole oikeutta suorittaa tätä toimintoa overwrite: Kirjoita yli shortcode: Lyhennekoodi @@ -659,29 +667,67 @@ fi: empty: Palvelimen sääntöjä ei ole vielä määritelty. title: Palvelimen säännöt settings: + about: + manage_rules: Hallinnoi palvelimen sääntöjä + preamble: Anna perusteellista tietoa siitä, miten palvelinta käytetään, valvotaan, rahoitetaan. + rules_hint: On olemassa erityinen alue sääntöjä, joita käyttäjien odotetaan noudattavan. + title: Tietoja + appearance: + preamble: Muokkaa Mastodonin web-käyttöliittymää. + title: Ulkoasu + branding: + preamble: Palvelimesi brändäys erottaa sen muista verkon palvelimista. Nämä tiedot voidaan näyttää useissa eri ympäristöissä, kuten Mastodonin käyttöliittymässä, sovelluksissa, linkkien esikatselu muilla sivustoilla ja viestisovelluksien sisällä ja niin edelleen. Tästä syystä on parasta pitää nämä tiedot selkeinä, lyhyinä ja ytimekkäinä. + title: Brändäys + content_retention: + preamble: Määritä, miten käyttäjän luoma sisältö tallennetaan Mastodoniin. + title: Sisällön säilyttäminen + discovery: + follow_recommendations: Noudata suosituksia + preamble: Mielenkiintoisen sisällön esille tuominen auttaa saamaan uusia käyttäjiä, jotka eivät ehkä tunne ketään Mastodonista. Määrittele, kuinka erilaiset etsintäominaisuudet toimivat palvelimellasi. + profile_directory: Profiilihakemisto + public_timelines: Julkiset aikajanat + title: Löytäminen + trends: Trendit domain_blocks: all: Kaikille disabled: Ei kenellekkään users: Kirjautuneille paikallisille käyttäjille + registrations: + preamble: Määritä, kuka voi luoda tilin palvelimellesi. + title: Rekisteröinnit registrations_mode: modes: approved: Rekisteröinti vaatii hyväksynnän none: Kukaan ei voi rekisteröityä open: Kaikki voivat rekisteröityä + title: Palvelimen asetukset site_uploads: delete: Poista ladattu tiedosto destroyed_msg: Sivuston lataus onnistuneesti poistettu! statuses: + account: Tekijä + application: Sovellus back_to_account: Takaisin tilin sivulle back_to_report: Takaisin raporttisivulle batch: remove_from_report: Poista raportista report: Raportti deleted: Poistettu + favourites: Suosikit + history: Versiohistoria + in_reply_to: Vastaa + language: Kieli media: title: Media + metadata: Metadata no_status_selected: Viestejä ei muutettu, koska yhtään ei ole valittuna + open: Avaa viesti + original_status: Alkuperäinen viesti + reblogs: Edelleen jako + status_changed: Viesti muutettu title: Tilin tilat + trending: Nousussa + visibility: Näkyvyys with_media: Sisältää mediaa strikes: actions: @@ -721,6 +767,9 @@ fi: description_html: Nämä ovat linkkejä, joita jaetaan tällä hetkellä paljon tileillä, joilta palvelimesi näkee viestejä. Se voi auttaa käyttäjiäsi saamaan selville, mitä maailmassa tapahtuu. Linkkejä ei näytetä julkisesti, ennen kuin hyväksyt julkaisijan. Voit myös sallia tai hylätä yksittäiset linkit. disallow: Hylkää linkki disallow_provider: Estä julkaisija + no_link_selected: Yhtään linkkiä ei muutettu, koska yhtään ei valittu + publishers: + no_publisher_selected: Julkaisijoita ei muutettu, koska yhtään ei valittu shared_by_over_week: one: Yksi henkilö jakanut viimeisen viikon aikana other: Jakanut %{count} henkilöä viimeisen viikon aikana @@ -740,6 +789,7 @@ fi: description_html: Nämä ovat viestejä, jotka palvelimesi tietää tällä hetkellä jaetuksi ja suosituksi. Tämä voi auttaa uusia ja palaavia ihmisiä löytämään lisää ihmisiä, joita seurata seurata. Julkaisuja ei näytetä julkisesti ennen kuin hyväksyt tekijän ja kirjoittaja sallii tilinsä ehdottamisen muille. Voit myös sallia tai hylätä yksittäiset viestit. disallow: Estä viesti disallow_account: Estä tekijä + no_status_selected: Suosittuja viestejä ei muutettu, koska yhtään ei valittu not_discoverable: Tekijä ei ole ilmoittanut olevansa löydettävissä shared_by: one: Jaettu tai suosikki kerran @@ -755,6 +805,7 @@ fi: tag_uses_measure: käyttökerrat description_html: Nämä ovat hashtageja, jotka näkyvät tällä hetkellä monissa viesteissä, jotka palvelimesi näkee. Tämä voi auttaa käyttäjiäsi selvittämään, mistä ihmiset puhuvat eniten tällä hetkellä. Mitään hashtageja ei näytetä julkisesti ennen kuin hyväksyt ne. listable: Voidaan ehdottaa + no_tag_selected: Yhtään tagia ei muutettu, koska yhtään ei valittu not_listable: Ei tulla ehdottamaan not_trendable: Ei näy trendien alla not_usable: Ei voida käyttää @@ -860,6 +911,7 @@ fi: warning: Säilytä tietoa hyvin. Älä milloinkaan jaa sitä muille! your_token: Pääsytunnus auth: + apply_for_account: Tule jonotuslistalle change_password: Salasana delete_account: Poista tili delete_account_html: Jos haluat poistaa tilisi, paina tästä. Poisto on vahvistettava. @@ -879,6 +931,7 @@ fi: migrate_account: Muuta toiseen tiliin migrate_account_html: Jos haluat ohjata tämän tilin toiseen tiliin, voit asettaa toisen tilin tästä. or_log_in_with: Tai käytä kirjautumiseen + privacy_policy_agreement_html: Olen lukenut ja hyväksynyt tietosuojakäytännön providers: cas: CAS saml: SAML @@ -886,12 +939,18 @@ fi: registration_closed: "%{instance} ei hyväksy uusia jäseniä" resend_confirmation: Lähetä vahvistusohjeet uudestaan reset_password: Palauta salasana + rules: + preamble: "%{domain} valvojat määrittävät ja valvovat sääntöjä." + title: Joitakin perussääntöjä. security: Tunnukset set_new_password: Aseta uusi salasana setup: email_below_hint_html: Jos alla oleva sähköpostiosoite on virheellinen, voit muuttaa sitä täällä ja tilata uuden vahvistussähköpostiviestin. email_settings_hint_html: Vahvistussähköposti lähetettiin osoitteeseen %{email}. Jos sähköpostiosoite ei ole oikea, voit muuttaa sitä tiliasetuksissa. title: Asetukset + sign_up: + preamble: Kun sinulla on tili tällä Mastodon-palvelimella, voit seurata kaikkia muita verkossa olevia henkilöitä riippumatta siitä, missä heidän tilinsä on. + title: Otetaan sinulle käyttöön %{domain}. status: account_status: Tilin tila confirming: Odotetaan sähköpostivahvistuksen valmistumista. @@ -1073,12 +1132,22 @@ fi: trending_now: Suosittua nyt generic: all: Kaikki + all_items_on_page_selected_html: + one: "%{count} kohde tällä sivulla on valittu." + other: Kaikki %{count} kohdetta tällä sivulla on valittu. + all_matching_items_selected_html: + one: "%{count} tuotetta, joka vastaa hakuasi." + other: Kaikki %{count} kohdetta, jotka vastaavat hakuasi. changes_saved_msg: Muutosten tallennus onnistui! copy: Kopioi delete: Poista + deselect: Poista kaikki valinnat none: Ei mitään order_by: Järjestä save_changes: Tallenna muutokset + select_all_matching_items: + one: Valitse %{count} kohdetta, joka vastaa hakuasi. + other: Valitse kaikki %{count} kohdetta, jotka vastaavat hakuasi. today: tänään validation_errors: one: Kaikki ei ole aivan oikein! Tarkasta alla oleva virhe @@ -1257,6 +1326,8 @@ fi: other: Muut posting_defaults: Julkaisujen oletusasetukset public_timelines: Julkiset aikajanat + privacy_policy: + title: Tietosuojakäytäntö reactions: errors: limit_reached: Erilaisten reaktioiden raja saavutettu @@ -1529,8 +1600,10 @@ fi: suspend: Tilin käyttäminen keskeytetty welcome: edit_profile_action: Aseta profiili + edit_profile_step: Voit muokata profiiliasi lataamalla profiilikuvan, vaihtamalla näyttönimeä ja paljon muuta. Voit halutessasi arvioida uudet seuraajat ennen kuin he saavat seurata sinua. explanation: Näillä vinkeillä pääset alkuun final_action: Ala julkaista + final_step: 'Aloita julkaiseminen! Jopa ilman seuraajia, muut voivat nähdä julkiset viestisi esimerkiksi paikallisella aikajanalla tai hashtageilla. Haluat ehkä esitellä itsesi #introductions hashtag.' full_handle: Koko käyttäjätunnuksesi full_handle_hint: Kerro tämä ystävillesi, niin he voivat lähettää sinulle viestejä tai löytää sinut toisen instanssin kautta. subject: Tervetuloa Mastodoniin diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 2c34543adb..878f87f1db 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -5,6 +5,7 @@ fr: contact_missing: Non défini contact_unavailable: Non disponible hosted_on: Serveur Mastodon hébergé sur %{domain} + title: À propos accounts: follow: Suivre followers: @@ -659,29 +660,45 @@ fr: empty: Aucune règle de serveur n'a été définie pour l'instant. title: Règles du serveur settings: + about: + manage_rules: Gérer les règles du serveur + title: À propos + appearance: + title: Apparence + discovery: + profile_directory: Annuaire des profils + public_timelines: Fils publics + trends: Tendances domain_blocks: all: À tout le monde disabled: À personne users: Aux utilisateur·rice·s connecté·e·s localement + registrations: + title: Inscriptions registrations_mode: modes: approved: Approbation requise pour s’inscrire none: Personne ne peut s’inscrire open: N’importe qui peut s’inscrire + title: Paramètres du serveur site_uploads: delete: Supprimer le fichier téléversé destroyed_msg: Téléversement sur le site supprimé avec succès ! statuses: + account: Auteur·rice + application: Application back_to_account: Retour à la page du compte back_to_report: Retour à la page du rapport batch: remove_from_report: Retirer du rapport report: Signalement deleted: Supprimé + language: Langue media: title: Médias no_status_selected: Aucun message n’a été modifié car aucun n’a été sélectionné title: Messages du compte + visibility: Visibilité with_media: Avec médias strikes: actions: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index fc9a2334e9..82398d53c3 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -5,6 +5,7 @@ gd: contact_missing: Cha deach a shuidheachadh contact_unavailable: Chan eil seo iomchaidh hosted_on: Mastodon ’ga òstadh air %{domain} + title: Mu dhèidhinn accounts: follow: Lean air followers: @@ -175,17 +176,21 @@ gd: approve_user: Aontaich ris a’ chleachdaiche assigned_to_self_report: Iomruin an gearan change_email_user: Atharraich post-d a’ chleachdaiche + change_role_user: Atharraich dreuchd a’ chleachdaiche confirm_user: Dearbh an cleachdaiche create_account_warning: Cruthaich rabhadh create_announcement: Cruthaich brath-fios + create_canonical_email_block: Cruthaich bacadh puist-d create_custom_emoji: Cruthaich Emoji gnàthaichte create_domain_allow: Cruthaich ceadachadh àrainne create_domain_block: Cruthaich bacadh àrainne create_email_domain_block: Cruthaich bacadh àrainne puist-d create_ip_block: Cruthaich riaghailt IP create_unavailable_domain: Cruthaich àrainn nach eil ri fhaighinn + create_user_role: Cruthaich dreuchd demote_user: Ìslich an cleachdaiche destroy_announcement: Sguab às am brath-fios + destroy_canonical_email_block: Sguab às dhan bhacadh puist-d destroy_custom_emoji: Sguab às an t-Emoji gnàthaichte destroy_domain_allow: Sguab às ceadachadh na h-àrainne destroy_domain_block: Sguab às bacadh na h-àrainne @@ -194,6 +199,7 @@ gd: destroy_ip_block: Sguab às an riaghailt IP destroy_status: Sguab às am post destroy_unavailable_domain: Sguab às àrainn nach eil ri fhaighinn + destroy_user_role: Mill an dreuchd disable_2fa_user: Cuir an dearbhadh dà-cheumnach à comas disable_custom_emoji: Cuir an t-Emoji gnàthaichte à comas disable_sign_in_token_auth_user: Cuir à comas dearbhadh le tòcan puist-d dhan chleachdaiche @@ -220,23 +226,30 @@ gd: update_announcement: Ùraich am brath-fios update_custom_emoji: Ùraich an t-Emoji gnàthaichte update_domain_block: Ùraich bacadh na h-àrainne + update_ip_block: Ùraich an riaghailt IP update_status: Ùraich am post + update_user_role: Ùraich an dreuchd actions: approve_appeal_html: Dh’aontaich %{name} ri ath-thagradh air co-dhùnadh na maorsainneachd o %{target} approve_user_html: Dh’aontaich %{name} ri clàradh o %{target} assigned_to_self_report_html: Dh’iomruin %{name} an gearan %{target} dhaibh fhèin change_email_user_html: Dh’atharraich %{name} seòladh puist-d a’ chleachdaiche %{target} + change_role_user_html: Atharraich %{name} an dreuchd aig %{target} confirm_user_html: Dhearbh %{name} seòladh puist-d a’ chleachdaiche %{target} create_account_warning_html: Chuir %{name} rabhadh gu %{target} create_announcement_html: Chruthaich %{name} brath-fios %{target} ùr + create_canonical_email_block_html: Bhac %{name} am post-d air a bheil an hais %{target} create_custom_emoji_html: Luchdaich %{name} suas Emoji %{target} ùr create_domain_allow_html: Cheadaich %{name} co-nasgadh leis an àrainn %{target} create_domain_block_html: Bhac %{name} an àrainn %{target} create_email_domain_block_html: Bhac %{name} an àrainn puist-d %{target} create_ip_block_html: Chruthaich %{name} riaghailt dhan IP %{target} create_unavailable_domain_html: Sguir %{name} ris an lìbhrigeadh dhan àrainn %{target} + create_user_role_html: Chruthaich %{name} an dreuchd %{target} demote_user_html: Dh’ìslich %{name} an cleachdaiche %{target} destroy_announcement_html: Sguab %{name} às am brath-fios %{target} + destroy_canonical_email_block_html: Dhì-bhac %{name} am post-d air a bheil an hais %{target} + destroy_custom_emoji_html: Sguab %{name} às an Emoji %{target} destroy_domain_allow_html: Dì-cheadaich %{name} co-nasgadh leis an àrainn %{target} destroy_domain_block_html: Dì-bhac %{name} an àrainn %{target} destroy_email_domain_block_html: Dì-bhac %{name} an àrainn puist-d %{target} @@ -244,6 +257,7 @@ gd: destroy_ip_block_html: Sguab %{name} às riaghailt dhan IP %{target} destroy_status_html: Thug %{name} post aig %{target} air falbh destroy_unavailable_domain_html: Lean %{name} air adhart leis an lìbhrigeadh dhan àrainn %{target} + destroy_user_role_html: Sguab %{name} às an dreuchd %{target} disable_2fa_user_html: Chuir %{name} riatanas an dearbhaidh dà-cheumnaich à comas dhan chleachdaiche %{target} disable_custom_emoji_html: Chuir %{name} an Emoji %{target} à comas disable_sign_in_token_auth_user_html: Chuir %{name} à comas dearbhadh le tòcan puist-d dha %{target} @@ -270,7 +284,9 @@ gd: update_announcement_html: Dh’ùraich %{name} am brath-fios %{target} update_custom_emoji_html: Dh’ùraich %{name} an Emoji %{target} update_domain_block_html: Dh’ùraich %{name} bacadh na h-àrainne %{target} + update_ip_block_html: Sguab %{name} às riaghailt dhan IP %{target} update_status_html: Dh’ùraich %{name} post le %{target} + update_user_role_html: Dh’atharraich %{name} an dreuchd %{target} empty: Cha deach loga a lorg. filter_by_action: Criathraich a-rèir gnìomha filter_by_user: Criathraich a-rèir cleachdaiche @@ -314,6 +330,7 @@ gd: listed: Liostaichte new: title: Cuir Emoji gnàthaichte ùr ris + no_emoji_selected: Cha deach Emoji sam bith atharrachadh o nach deach gin dhiubh a thaghadh not_permitted: Chan fhaod thu seo a dhèanamh overwrite: Sgrìobh thairis air shortcode: Geàrr-chòd @@ -678,29 +695,67 @@ gd: empty: Cha deach riaghailtean an fhrithealaiche a mhìneachadh fhathast. title: Riaghailtean an fhrithealaiche settings: + about: + manage_rules: Stiùirich riaghailtean an fhrithealaiche + preamble: Solair fiosrachadh domhainn mu sholar, maorsainneachd is maoineachadh an fhrithealaiche seo. + rules_hint: Tha roinn sònraichte ann dha na riaghailtean air am bu chòir an luchd-cleachdaidh agad a leantainn. + title: Mu dhèidhinn + appearance: + preamble: Gnàthaich eadar-aghaidh-lìn Mhastodon. + title: Coltas + branding: + preamble: Tha branndadh an fhrithealaiche agad eadar-dhealaichte o fhrithealaichean eile san lìonra. Faodaidh gun nochd am fiosrachadh seo thar iomadh àrainneachd, can eadar-aghaidh-lìn Mhastodon, aplacaidean tùsail, ro-sheallaidhean air ceanglaichean air làraichean-lìn eile agus am broinn aplacaidean theachdaireachdan is mar sin air adhart. Air an adhbhar seo, mholamaid gun cùm thu am fiosrachadh seo soilleir is goirid. + title: Branndadh + content_retention: + preamble: Stiùirich mar a tha susbaint an luchd-cleachdaidh ’ga stòradh ann am Mastodon. + title: Glèidheadh na susbaint + discovery: + follow_recommendations: Molaidhean leantainn + preamble: Tha tighinn an uachdar susbainte inntinniche fìor-chudromach airson toiseach-tòiseachaidh an luchd-cleachdaidh ùr nach eil eòlach air duine sam bith air Mastodon, ma dh’fhaoidte. Stiùirich mar a dh’obraicheas gleusan an rannsachaidh air an fhrithealaiche agad. + profile_directory: Eòlaire nam pròifil + public_timelines: Loidhnichean-ama poblach + title: Rùrachadh + trends: Treandaichean domain_blocks: all: Dhan a h-uile duine disabled: Na seall idir users: Dhan luchd-chleachdaidh a clàraich a-steach gu h-ionadail + registrations: + preamble: Stiùirich cò dh’fhaodas cunntas a chruthachadh air an fhrithealaiche agad. + title: Clàraidhean registrations_mode: modes: approved: Tha aontachadh riatanach airson clàradh none: Chan fhaod neach sam bith clàradh open: "’S urrainn do neach sam bith clàradh" + title: Roghainnean an fhrithealaiche site_uploads: delete: Sguab às am faidhle a chaidh a luchdadh suas destroyed_msg: Chaidh an luchdadh suas dhan làrach a sguabadh às! statuses: + account: Ùghdar + application: Aplacaid back_to_account: Till gu duilleag a’ chunntais back_to_report: Till gu duilleag a’ ghearain batch: remove_from_report: Thoir air falbh on ghearan report: Gearan deleted: Chaidh a sguabadh às + favourites: Annsachdan + history: Eachdraidh nan tionndadh + in_reply_to: Air freagairt gu + language: Cànan media: title: Meadhanan + metadata: Meata-dàta no_status_selected: Cha deach post sam bith atharrachadh o nach deach gin dhiubh a thaghadh + open: Fosgail am post + original_status: Am post tùsail + reblogs: Brosnachaidhean + status_changed: Post air atharrachadh title: Postaichean a’ chunntais + trending: A’ treandadh + visibility: Faicsinneachd with_media: Le meadhanan riutha strikes: actions: @@ -740,6 +795,9 @@ gd: description_html: Seo na ceanglaichean a tha ’gan co-roinneadh le iomadh cunntas on a chì am frithealaiche agad na postaichean. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ach am faigh iad a-mach dè tha tachairt air an t-saoghal. Cha dèid ceanglaichean a shealltainn gu poblach gus an aontaich thu ris an fhoillsichear. ’S urrainn dhut ceanglaichean àraidh a cheadachadh no a dhiùltadh cuideachd. disallow: Na ceadaich an ceangal disallow_provider: Na ceadaich am foillsichear + no_link_selected: Cha deach ceangal sam bith atharrachadh o nach deach gin dhiubh a thaghadh + publishers: + no_publisher_selected: Cha deach foillsichear sam bith atharrachadh o nach deach gin dhiubh a thaghadh shared_by_over_week: few: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh one: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh @@ -761,6 +819,7 @@ gd: description_html: Seo na postaichean air a bheil am frithealaiche agad eòlach ’s a tha ’gan co-roinneadh is ’nan annsachd gu tric aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ùr no a thill ach an lorg iad daoine airson leantainn orra. Cha dèid postaichean a shealltainn gu poblach gus an gabh thu ris an ùghdar agus gus an aontaich an t-ùghdar gun dèid an cunntas aca a mholadh do dhaoine eile. ’S urrainn dhut postaichean àraidh a cheadachadh no a dhiùltadh cuideachd. disallow: Na ceadaich am post disallow_account: Na ceadaich an t-ùghdar + no_status_selected: Cha deach post a’ treandadh sam bith atharrachadh o nach deach gin dhiubh a thaghadh not_discoverable: Cha do chuir an t-ùghdar roimhe gun gabh a rùrachadh shared_by: few: Chaidh a cho-roinneadh no ’na annsachd %{friendly_count} tursan @@ -778,6 +837,7 @@ gd: tag_uses_measure: cleachdaidhean iomlan description_html: Seo na tagaichean hais a nochdas ann an grunn phostaichean a chì am frithealaiche agad aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh agad ach am faigh iad a-mach cò air a tha daoine a’ bruidhinn nas trice aig an àm seo. Cha dèid tagaichean hais a shealltainn gu poblach gus an aontaich thu riutha. listable: Gabhaidh a mholadh + no_tag_selected: Cha deach taga sam bith atharrachadh o nach deach gin dhiubh a thaghadh not_listable: Cha dèid a mholadh not_trendable: Cha nochd e am measg nan treandaichean not_usable: Cha ghabh a chleachdadh @@ -887,6 +947,7 @@ gd: warning: Bi glè chùramach leis an dàta seo. Na co-roinn le duine sam bith e! your_token: An tòcan inntrigidh agad auth: + apply_for_account: Faigh air an liosta-fheitheimh change_password: Facal-faire delete_account: Sguab às an cunntas delete_account_html: Nam bu mhiann leat an cunntas agad a sguabadh às, nì thu an-seo e. Thèid dearbhadh iarraidh ort. @@ -906,6 +967,7 @@ gd: migrate_account: Imrich gu cunntas eile migrate_account_html: Nam bu mhiann leat an cunntas seo ath-stiùireadh gu fear eile, ’s urrainn dhut a rèiteachadh an-seo. or_log_in_with: No clàraich a-steach le + privacy_policy_agreement_html: Leugh mi is tha mi ag aontachadh ris a’ phoileasaidh prìobhaideachd providers: cas: CAS saml: SAML @@ -913,12 +975,18 @@ gd: registration_closed: Cha ghabh %{instance} ri buill ùra resend_confirmation: Cuir an stiùireadh mun dearbhadh a-rithist reset_password: Ath-shuidhich am facal-faire + rules: + preamble: Tha iad ’gan stèidheachadh is a chur an gnìomh leis na maoir aig %{domain}. + title: Riaghailtean bunasach. security: Tèarainteachd set_new_password: Suidhich facal-faire ùr setup: email_below_hint_html: Mur eil am post-d gu h-ìosal mar bu chòir, ’s urrainn dhut atharrachadh an-seo agus gheibh thu post-d dearbhaidh ùr. email_settings_hint_html: Chaidh am post-d dearbhaidh a chur gu %{email}. Mur eil an seòladh puist-d seo mar bu chòir, ’s urrainn dhut atharrachadh ann an roghainnean a’ chunntais. title: Suidheachadh + sign_up: + preamble: Le cunntas air an fhrithealaiche Mastodon seo, ’s urrainn dhut leantainn air neach sam bith air an lìonra, ge b’ e càit a bheil an cunntas aca-san ’ga òstadh. + title: Suidhicheamaid %{domain} dhut. status: account_status: Staid a’ chunntais confirming: A’ feitheamh air coileanadh an dearbhaidh on phost-d. @@ -1064,6 +1132,8 @@ gd: edit: add_keyword: Cuir facal-luirg ris keywords: Faclan-luirg + statuses: Postaichean fa leth + statuses_hint_html: Bidh a’ chriathrag seo an sàs air taghadh de phostaichean fa leth ge b’ e am freagair iad ris na faclan-luirg gu h-ìosal gus nach freagair. Dèan lèirmheas air na postaichean no thoir iad air falbh on chriathrag seo. title: Deasaich a’ chriathrag errors: deprecated_api_multiple_keywords: Cha ghabh na paramadairean seo atharrachadh on aplacaid seo on a bhios iad an sàs air iomadh facal-luirg na criathraige. Cleachd aplacaid nas ùire no an eadar-aghaidh-lìn. @@ -1079,20 +1149,53 @@ gd: one: "%{count} fhacal-luirg" other: "%{count} facal-luirg" two: "%{count} fhacal-luirg" + statuses: + few: "%{count} postaichean" + one: "%{count} phost" + other: "%{count} post" + two: "%{count} phost" + statuses_long: + few: Chaidh %{count} postaichean fa leth fhalach + one: Chaidh %{count} phost fa leth fhalach + other: Chaidh %{count} post fa leth fhalach + two: Chaidh %{count} phost fa leth fhalach title: Criathragan new: save: Sàbhail a’ chriathrag ùr title: Cuir criathrag ùr ris + statuses: + back_to_filter: Air ais dhan chriathrag + batch: + remove: Thoir air falbh on chriathrag + index: + hint: Bidh a’ chriathrag seo an sàs air postaichean fa leth ge b’ e dè na roghainnean eile. ’S urrainn dhut barrachd phostaichean a chur ris a’ chriathrag seo leis an eadar-aghaidh-lìn. + title: Postaichean criathraichte footer: trending_now: A’ treandadh an-dràsta generic: all: Na h-uile + all_items_on_page_selected_html: + few: Chaidh na %{count} nithean uile a thaghadh air an duilleag seo. + one: Chaidh %{count} nì a thaghadh air an duilleag seo. + other: Chaidh an %{count} nì uile a thaghadh air an duilleag seo. + two: Chaidh an %{count} nì uile a thaghadh air an duilleag seo. + all_matching_items_selected_html: + few: Chaidh %{count} nithean a thaghadh a fhreagras dha na lorg thu. + one: Chaidh %{count} nì a thaghadh a fhreagras dha na lorg thu. + other: Chaidh %{count} nì a thaghadh a fhreagras dha na lorg thu. + two: Chaidh %{count} nì a thaghadh a fhreagras dha na lorg thu. changes_saved_msg: Chaidh na h-atharraichean a shàbhaladh! copy: Dèan lethbhreac delete: Sguab às + deselect: Dì-thagh na h-uile none: Chan eil gin order_by: Seòrsaich a-rèir save_changes: Sàbhail na h-atharraichean + select_all_matching_items: + few: Tagh na %{count} nithean uile a fhreagras dha na lorg thu. + one: Tagh %{count} nì a fhreagras dha na lorg thu. + other: Tagh an %{count} nì uile a fhreagras dha na lorg thu. + two: Tagh an %{count} nì uile a fhreagras dha na lorg thu. today: an-diugh validation_errors: few: Tha rud ann nach eil buileach ceart fhathast! Thoir sùil air na %{count} mhearachdan gu h-ìosal @@ -1275,6 +1378,8 @@ gd: other: Eile posting_defaults: Bun-roghainnean a’ phostaidh public_timelines: Loidhnichean-ama poblach + privacy_policy: + title: Poileasaidh prìobhaideachd reactions: errors: limit_reached: Ràinig thu crìoch nam freagairtean eadar-dhealaichte @@ -1559,8 +1664,10 @@ gd: suspend: Cunntas à rèim welcome: edit_profile_action: Suidhich a’ phròifil agad + edit_profile_step: "’S urrainn dhut a’ phròifil agad a ghnàthachadh is tu a’ luchdadh suas dealbh pròifil, ag atharrachadh d’ ainm-taisbeanaidh is a bharrachd. ’S urrainn dhut lèirmheas a dhèanamh air daoine mus fhaod iad leantainn ort ma thogras tu." explanation: Seo gliocas no dhà gus tòiseachadh final_action: Tòisich air postadh + final_step: 'Tòisich air postadh! Fiù ’s mur eil duine sam bith a’ leantainn ort, chì cuid mhath na postaichean poblach agad, can air an loidhne-ama ionadail no le tagaichean hais. Saoil an innis thu beagan mu d’ dhèidhinn air an taga hais #fàilte?' full_handle: D’ ainm-cleachdaiche slàn full_handle_hint: Seo na bheir thu dha na caraidean agad ach an urrainn dhaibh teachdaireachd a chur thugad no leantainn ort o fhrithealaiche eile. subject: Fàilte gu Mastodon diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 4e6e73a326..da00efe89b 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -667,29 +667,67 @@ gl: empty: Aínda non se definiron as regras do servidor. title: Regras do servidor settings: + about: + manage_rules: Xestionar regras do servidor + preamble: Proporciona información detallada acerca do xeito en que se xestiona, modera e financia o servidor. + rules_hint: Hai un espazo dedicado para as normas que é de agardar que as túas usuarias cumpran. + title: Acerca de + appearance: + preamble: Personalizar a interface web de Mastodon. + title: Aparencia + branding: + preamble: A personalización do teu servidor diferénciao doutros servidores da rede. A información podería mostrarse en diversos entornos, como a interface web de Mastodon, aplicacións nativas, vista previa das ligazóns noutras webs e apps de mensaxería, e similares. Debido a esto é recomendable que a información sexa clara, curta e concisa. + title: Personalización + content_retention: + preamble: Controla como se gardan en Mastodon os contidos creados polas usuarias. + title: Retención do contido + discovery: + follow_recommendations: Recomendacións de seguimento + preamble: Destacar contido interesante é importante para axudar a que as novas usuarias se sintan cómodas se non coñecen a ninguén en Mastodon. Xestiona os diferentes xeitos de promocionar contidos. + profile_directory: Directorio de perfís + public_timelines: Cronoloxías públicas + title: Descubrir + trends: Tendencias domain_blocks: all: Para todos disabled: Para ninguén users: Para usuarias locais conectadas + registrations: + preamble: Xestiona quen pode crear unha conta no teu servidor. + title: Rexistros registrations_mode: modes: approved: Precisa aprobación para rexistrarse none: Rexistro pechado open: Rexistro aberto + title: Axustes do servidor site_uploads: delete: Eliminar o ficheiro subido destroyed_msg: Eliminado correctamente o subido! statuses: + account: Conta + application: Aplicación back_to_account: Volver a páxina da conta back_to_report: Volver a denuncias batch: remove_from_report: Eliminar da denuncia report: Denuncia deleted: Eliminado + favourites: Favoritas + history: Historial de versións + in_reply_to: En resposta a + language: Idioma media: title: Medios + metadata: Metadatos no_status_selected: Non se cambiou ningunha publicación xa que ningunha foi seleccionada + open: Abrir publicación + original_status: Publicación orixinal + reblogs: Promocións + status_changed: Publicación editada title: Publicacións da conta + trending: Tendencia + visibility: Visibilidade with_media: con medios strikes: actions: @@ -1024,7 +1062,7 @@ gl: content: Sentímolo, pero algo do noso lado falloou. title: Esta páxina non é correcta '503': A páxina non se puido servir debido a un fallo temporal no servidor. - noscript_html: Para utilizar a aplicación web de Mastodon debes activar JavaScript. De xeito alternativo, probb cunha das apps nativas para Mastodon na túa plataforma. + noscript_html: Para utilizar a aplicación web de Mastodon debes activar JavaScript. De xeito alternativo, proba cunha das apps nativas para Mastodon na túa plataforma. existing_username_validator: not_found: non se atopou unha usuaria local con ese alcume not_found_multiple: non se atopou a %{usernames} diff --git a/config/locales/hu.yml b/config/locales/hu.yml index e982f00c18..890eb6956e 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -672,6 +672,7 @@ hu: preamble: Adj meg részletes információkat arról, hogy a kiszolgáló hogyan működik, miként moderálják és finanszírozzák. title: Névjegy appearance: + preamble: A Mastodon webes felületének testreszabása. title: Megjelenés branding: preamble: A kiszolgáló márkajelzése különbözteti meg a hálózat többi kiszolgálójától. Ez az információ számos környezetben megjelenhet, például a Mastodon webes felületén, natív alkalmazásokban, más weboldalakon és üzenetküldő alkalmazásokban megjelenő hivatkozások előnézetben stb. Ezért a legjobb, ha ez az információ világos, rövid és tömör. @@ -701,16 +702,29 @@ hu: delete: Feltöltött fájl törlése destroyed_msg: Sikeresen töröltük a site feltöltését! statuses: + account: Szerző + application: Alkalmazás back_to_account: Vissza a fiók oldalára back_to_report: Vissza a bejelentés oldalra batch: remove_from_report: Eltávolítás a bejelentésből report: Bejelentés deleted: Törölve + favourites: Kedvencek + history: Verziótörténet + in_reply_to: 'Válasz címzettje:' + language: Nyelv media: title: Média + metadata: Metaadatok no_status_selected: Nem változtattunk meg egy bejegyzést sem, mert semmi sem volt kiválasztva + open: Bejegyzés megnyitása + original_status: Eredeti bejegyzés + reblogs: Megosztások + status_changed: A bejegyzés megváltozott title: Fiók bejegyzései + trending: Felkapott + visibility: Láthatóság with_media: Médiával strikes: actions: diff --git a/config/locales/is.yml b/config/locales/is.yml index 0785b209a2..cf4f8cbc51 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -667,29 +667,67 @@ is: empty: Engar reglur fyrir netþjón hafa ennþá verið skilgreindar. title: Reglur netþjónsins settings: + about: + manage_rules: Sýsla með reglur netþjónsins + preamble: Gefðu nánari upplýsingar um hvernig þessi netþjónn er rekinn, hvernig umsjón fer fram með efni á honum eða hann fjármagnaður. + rules_hint: Það er sérstakt svæði með þeim reglum sem ætlast er til að notendur þínir fari eftir. + title: Um hugbúnaðinn + appearance: + preamble: Sérsníddu vefviðmót Mastodon. + title: Útlit + branding: + preamble: Útlitsleg einkenni aðgreina netþjóninn þinn frá öðrum netþjónum á netkerfinu. Þessar upplýsingar geta birst á margvíslegum stöðum, eins og til dæmis í vefviðmóti Mastodon, einstökum forritum, í forskoðun tengla á öðrum vefsvæðum og innan samskiptaforrita, svo eitthvað sé talið. Þess vegna er vest að þessar upplýsingar séu skýrar, stuttar og tæmandi. + title: Útlitsleg aðgreining + content_retention: + preamble: Stýrðu hvernig efni frá notendum sé geymt í Mastodon. + title: Geymsla efnis + discovery: + follow_recommendations: Meðmæli um að fylgjast með + preamble: Að láta áhugavert efni koma skýrt fram er sérstaklega mikilvægt til að nálgast nýja notendur sem ekki þekkja neinn sem er á Mastodon. Stýrðu því hvernig hinir ýmsu eiginleikar við uppgötvun efnis virka á netþjóninum þínum. + profile_directory: Notendamappa + public_timelines: Opinberar tímalínur + title: Uppgötvun + trends: Vinsælt domain_blocks: all: Til allra disabled: Til engra users: Til innskráðra staðværra notenda + registrations: + preamble: Stýrðu því hverjir geta útbúið notandaaðgang á netþjóninum þínum. + title: Nýskráningar registrations_mode: modes: approved: Krafist er samþykkt nýskráningar none: Enginn getur nýskráð sig open: Allir geta nýskráð sig + title: Stillingar netþjóns site_uploads: delete: Eyða innsendri skrá destroyed_msg: Það tókst að eyða innsendingu á vefsvæði! statuses: + account: Höfundur + application: Forrit back_to_account: Fara aftur á síðu notandaaðgangsins back_to_report: Til baka á kærusíðu batch: remove_from_report: Fjarlægja úr kæru report: Kæra deleted: Eytt + favourites: Eftirlæti + history: Útgáfuferill + in_reply_to: Svarar til + language: Tungumál media: title: Myndefni + metadata: Lýsigögn no_status_selected: Engum færslum var breytt þar sem engar voru valdar + open: Opna færslu + original_status: Upprunaleg færsla + reblogs: Endurbirtingar + status_changed: Færslu breytt title: Færslur notandaaðgangs + trending: Vinsælt + visibility: Sýnileiki with_media: Með myndefni strikes: actions: diff --git a/config/locales/it.yml b/config/locales/it.yml index 8fe430c960..a81ede69d1 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -705,16 +705,29 @@ it: delete: Cancella il file caricato destroyed_msg: Caricamento sito eliminato! statuses: + account: Autore + application: Applicazione back_to_account: Torna alla pagina dell'account back_to_report: Torna alla pagina del report batch: remove_from_report: Rimuovi dal report report: Rapporto deleted: Cancellato + favourites: Preferiti + history: Cronologia delle versioni + in_reply_to: In risposta a + language: Lingua media: title: Media + metadata: Metadati no_status_selected: Nessun status è stato modificato perché nessuno era stato selezionato + open: Apri il post + original_status: Post originale + reblogs: Condivisioni + status_changed: Post modificato title: Gli status dell'account + trending: Di tendenza + visibility: Visibilità with_media: con media strikes: actions: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 814196db06..3ae3fa6816 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -96,7 +96,7 @@ ko: moderation_notes: 중재 기록 most_recent_activity: 최근 활동 most_recent_ip: 최근 IP - no_account_selected: 아무 계정도 선택 되지 않아 아무 것도 변경 되지 않았습니다 + no_account_selected: 아무 것도 선택 되지 않아 어떤 계정도 변경 되지 않았습니다 no_limits_imposed: 제한 없음 no_role_assigned: 할당된 역할 없음 not_subscribed: 구독하지 않음 @@ -321,6 +321,7 @@ ko: listed: 목록에 실림 new: title: 새 커스텀 에모지 추가 + no_emoji_selected: 아무 것도 선택 되지 않아 어떤 에모지도 바뀌지 않았습니다 not_permitted: 이 작업을 수행할 권한이 없습니다 overwrite: 덮어쓰기 shortcode: 짧은 코드 @@ -656,29 +657,59 @@ ko: settings: about: manage_rules: 서버 규칙 관리 + title: 정보 + appearance: + preamble: 마스토돈의 웹 인터페이스를 변경 + title: 외관 + branding: + title: 브랜딩 + content_retention: + title: 콘텐츠 보존기한 + discovery: + follow_recommendations: 팔로우 추천 + profile_directory: 프로필 책자 + public_timelines: 공개 타임라인 + title: 발견하기 + trends: 유행 domain_blocks: all: 모두에게 disabled: 아무에게도 안 함 users: 로그인 한 사용자에게 + registrations: + title: 가입 registrations_mode: modes: approved: 가입하려면 승인이 필요함 none: 아무도 가입 할 수 없음 open: 누구나 가입 할 수 있음 + title: 서버 설정 site_uploads: delete: 업로드한 파일 삭제 destroyed_msg: 사이트 업로드를 성공적으로 삭제했습니다! statuses: + account: 작성자 + application: 애플리케이션 back_to_account: 계정으로 돌아가기 back_to_report: 신고 페이지로 돌아가기 batch: remove_from_report: 신고에서 제거 report: 신고 deleted: 삭제됨 + favourites: 좋아요 + history: 버전 이력 + in_reply_to: '회신 대상:' + language: 언어 media: title: 미디어 - no_status_selected: 아무 게시물도 선택 되지 않아 아무 것도 바뀌지 않았습니다 + metadata: 메타데이터 + no_status_selected: 아무 것도 선택 되지 않아 어떤 게시물도 바뀌지 않았습니다 + open: 게시물 열기 + original_status: 원본 게시물 + reblogs: 리블로그 + status_changed: 게시물 변경됨 title: 계정 게시물 + trending: 유행중 + visibility: 공개 설정 with_media: 미디어 있음 strikes: actions: @@ -718,6 +749,9 @@ ko: description_html: 현재 서버에서 게시물을 볼 수 있는 계정에서 많이 공유되고 있는 링크들입니다. 사용자가 세상 돌아가는 상황을 파악하는 데 도움이 됩니다. 출처를 승인할 때까지 링크는 공개적으로 게시되지 않습니다. 각각의 링크를 개별적으로 허용하거나 거부할 수도 있습니다. disallow: 링크 거부하기 disallow_provider: 출처 거부하기 + no_link_selected: 아무 것도 선택 되지 않아 어떤 링크도 바뀌지 않았습니다 + publishers: + no_publisher_selected: 아무 것도 선택 되지 않아 어떤 게시자도 바뀌지 않았습니다 shared_by_over_week: other: 지난 주 동안 %{count} 명의 사람들이 공유했습니다 title: 유행하는 링크 @@ -736,6 +770,7 @@ ko: description_html: 당신의 서버가 알기로 현재 많은 수의 공유와 좋아요가 되고 있는 게시물들입니다. 새로운 사용자나 돌아오는 사용자들이 팔로우 할 사람들을 찾는 데 도움이 될 수 있습니다. 작성자를 승인하고, 작성자가 그들의 계정이 다른 계정에게 탐색되도록 설정하지 않는 한 게시물들은 공개적으로 표시되지 않습니다. 또한 각각의 게시물을 별개로 거절할 수도 있습니다. disallow: 게시물 불허 disallow_account: 작성자 불허 + no_status_selected: 아무 것도 선택 되지 않아 어떤 유행중인 게시물도 바뀌지 않았습니다 not_discoverable: 작성자가 발견되기를 원치 않습니다 shared_by: other: "%{friendly_count} 번 공유되고 마음에 들어했습니다" @@ -750,6 +785,7 @@ ko: tag_uses_measure: 총 사용 description_html: 현재 서버에서 볼 수 있는 게시물에서 많이 공유되고 있는 해시태그들입니다. 현재 사람들이 무슨 이야기를 하고 있는지 사용자들이 파악할 수 있도록 도움이 됩니다. 승인하지 않는 한 해시태그는 공개적으로 게시되지 않습니다. listable: 추천될 수 있습니다 + no_tag_selected: 아무 것도 선택 되지 않아 어떤 태그도 바뀌지 않았습니다 not_listable: 추천될 수 없습니다 not_trendable: 유행 목록에 나타나지 않습니다 not_usable: 사용불가 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index d1703d58e2..335271f3f3 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -671,18 +671,26 @@ ku: settings: about: manage_rules: Rêzikên rajekaran bi rê ve bibe + preamble: Zanyariyên kûr peyda bike li ser ka rajekar çawa tê xebitandin, çavdêrîkirin, fînansekirin. + rules_hint: Ji bo rêbazên ku ji bikarhênerên ve tê hêvîkirin ku pê ve girêdayî bin deverek veqetandî heye. title: Derbar + appearance: + preamble: Navrûya tevnê ya Mastodon kesane bike. + title: Xuyang discovery: trends: Rojev domain_blocks: all: Bo herkesî disabled: Bo tu kesî users: Ji bo bikarhênerên herêmî yên xwe tomar kirine + registrations: + title: Tomarkirin registrations_mode: modes: approved: Ji bo têketinê erêkirin pêwîste none: Kesek nikare tomar bibe open: Herkes dikare tomar bibe + title: Sazkariyên rajekarê site_uploads: delete: Pela barkirî jê bibe destroyed_msg: Barkirina malperê bi serkeftî hate jêbirin! diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 72692cd155..47dafbad67 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -719,16 +719,29 @@ lv: delete: Dzēst augšupielādēto failu destroyed_msg: Vietnes augšupielāde ir veiksmīgi izdzēsta! statuses: + account: Autors + application: Lietotne back_to_account: Atpakaļ uz konta lapu back_to_report: Atpakaļ uz paziņojumu lapu batch: remove_from_report: Noņemt no ziņojuma report: Ziņojums deleted: Dzēstie + favourites: Izlase + history: Versiju vēsture + in_reply_to: Atbildot uz + language: Valoda media: title: Multivide + metadata: Metadati no_status_selected: Neviena ziņa netika mainīta, jo neviena netika atlasīta + open: Atvērt ziņu + original_status: Oriģinālā ziņa + reblogs: Reblogi + status_changed: Ziņa mainīta title: Konta ziņas + trending: Tendences + visibility: Redzamība with_media: Ar medijiem strikes: actions: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 4caee1a47e..fcc777af23 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -17,7 +17,7 @@ nl: link_verified_on: Eigendom van deze link is gecontroleerd op %{date} nothing_here: Hier is niets! pin_errors: - following: Je moet dit account wel al volgen, alvorens je het kan aanbevelen + following: Je moet dit account wel al volgen, alvorens je het kunt aanbevelen posts: one: Toot other: Berichten @@ -394,6 +394,9 @@ nl: view: Domeinblokkade bekijken email_domain_blocks: add_new: Nieuwe toevoegen + attempts_over_week: + one: "%{count} registratiepoging tijdens de afgelopen week" + other: "%{count} registratiepogingen tijdens de afgelopen week" created_msg: Blokkeren e-maildomein geslaagd delete: Verwijderen dns: @@ -404,6 +407,8 @@ nl: create: Blokkeren resolve: Domein opzoeken title: Nieuw e-maildomein blokkeren + resolved_dns_records_hint_html: De domeinnaam slaat op de volgende MX-domeinen die uiteindelijk verantwoordelijk zijn voor het accepteren van e-mail. Het blokkeren van een MX-domein blokkeert aanmeldingen van elk e-mailadres dat hetzelfde MX-domein gebruikt, zelfs als de zichtbare domeinnaam anders is. Pas op dat u geen grote e-mailproviders blokkeert. + resolved_through_html: Geblokkeerd via %{domain} title: Geblokkeerde e-maildomeinen follow_recommendations: description_html: "Deze aanbevolen accounts helpen nieuwe gebruikers snel interessante inhoudte vinden. Wanneer een gebruiker niet met andere gebruikers genoeg interactie heeft gehad om gepersonaliseerde aanbevelingen te krijgen, worden in plaats daarvan deze accounts aanbevolen. Deze accounts worden dagelijks opnieuw berekend met behulp van accounts met het hoogste aantal recente interacties en het hoogste aantal lokale volgers in een bepaalde taal." @@ -544,6 +549,7 @@ nl: delete: Verwijderen placeholder: Beschrijf welke acties zijn ondernomen of andere gerelateerde opmerkingen… title: Opmerkingen + remote_user_placeholder: de externe gebruiker van %{instance} reopen: Rapportage heropenen report: 'Rapportage #%{id}' reported_account: Gerapporteerde account @@ -607,29 +613,64 @@ nl: empty: Voor deze server zijn nog geen regels opgesteld. title: Serverregels settings: + about: + manage_rules: Serverregels beheren + title: Over + appearance: + preamble: Mastodons webomgeving aanpassen. + title: Weergave + branding: + preamble: De branding van jouw server laat zien hoe het met andere servers in het netwerk verschilt. Deze informatie wordt op verschillende plekken getoond, zoals in de webomgeving van Mastodon, in mobiele apps, in voorvertoningen op andere websites en berichten-apps, enz. Daarom is het belangrijk om de informatie helder, kort en beknopt te houden. + title: Branding + content_retention: + preamble: Toezicht houden op hoe berichten en media van gebruikers op Mastodon worden bewaard. + title: Bewaartermijn berichten + discovery: + follow_recommendations: Aanbevolen accounts + profile_directory: Gebruikersgids + public_timelines: Openbare tijdlijnen + title: Ontdekken + trends: Trends domain_blocks: all: Aan iedereen disabled: Aan niemand users: Aan ingelogde lokale gebruikers + registrations: + preamble: Toezicht houden op wie een account op deze server kan registreren. + title: Registraties registrations_mode: modes: approved: Goedkeuring vereist om te kunnen registreren none: Niemand kan zich registreren open: Iedereen kan zich registreren + title: Serverinstellingen site_uploads: delete: Geüpload bestand verwijderen destroyed_msg: Verwijderen website-upload geslaagd! statuses: + account: Account + application: Toepassing back_to_account: Terug naar accountpagina back_to_report: Terug naar de rapportage batch: remove_from_report: Uit de rapportage verwijderen report: Rapportage deleted: Verwijderd + favourites: Favorieten + history: Versiegeschiedenis + in_reply_to: Reactie op + language: Taal media: title: Media + metadata: Metagegevens no_status_selected: Er werden geen berichten gewijzigd, omdat er geen enkele werd geselecteerd + open: Bericht tonen + original_status: Oorspronkelijk bericht + reblogs: Boosts + status_changed: Bericht veranderd title: Berichten van account + trending: Trending + visibility: Zichtbaarheid with_media: Met media strikes: actions: @@ -640,6 +681,9 @@ nl: system_checks: database_schema_check: message_html: Niet alle databasemigraties zijn voltooid. Je moet deze uitvoeren om er voor te zorgen dat de applicatie blijft werken zoals het hoort + elasticsearch_version_check: + message_html: 'Incompatibele Elasticsearch-versie: %{value}' + version_comparison: Je gebruikt Elasticsearch %{running_version}, maar %{required_version} is vereist rules_check: action: Serverregels beheren message_html: Je hebt voor deze server geen regels opgesteld. @@ -650,31 +694,35 @@ nl: updated_msg: Instellingen hashtag succesvol bijgewerkt title: Beheer trends: - allow: Toestaan - approved: Toegestaan - disallow: Weigeren + allow: Goedkeuren + approved: Goedgekeurde + disallow: Afkeuren links: - allow: Link toestaan + allow: Link goedkeuren allow_provider: Website goedkeuren description_html: Dit zijn links die momenteel veel worden gedeeld door accounts waar jouw server berichten van ontvangt. Hierdoor kunnen jouw gebruikers zien wat er in de wereld aan de hand is. Er worden geen links weergeven totdat je de website hebt goedgekeurd. Je kunt ook individuele links goed- of afkeuren. - disallow: Link toestaan + disallow: Link afkeuren disallow_provider: Website afkeuren no_link_selected: Er werden geen links gewijzigd, omdat er geen enkele werd geselecteerd publishers: no_publisher_selected: Er werden geen websites gewijzigd, omdat er geen enkele werd geselecteerd + shared_by_over_week: + one: Deze week door één persoon gedeeld + other: Deze week door %{count} mensen gedeeld title: Trending links - only_allowed: Alleen toegestaan + usage_comparison: Vandaag %{today} keer gedeeld, vergeleken met %{yesterday} keer gisteren + only_allowed: Alleen goedgekeurde pending_review: In afwachting van beoordeling preview_card_providers: allowed: Links van deze website kunnen trending worden rejected: Links naar deze nieuwssite kunnen niet trending worden title: Websites - rejected: Afgewezen + rejected: Afgekeurd statuses: - allow: Bericht toestaan - allow_account: Gebruiker toestaan - disallow: Bericht niet toestaan - disallow_account: Gebruiker niet toestaan + allow: Bericht goedkeuren + allow_account: Account goedkeuren + disallow: Bericht afkeuren + disallow_account: Account afkeuren no_status_selected: Er werden geen trending berichten gewijzigd, omdat er geen enkele werd geselecteerd not_discoverable: Gebruiker heeft geen toestemming gegeven om vindbaar te zijn title: Trending berichten @@ -746,6 +794,7 @@ nl: title: Trending berichten new_trending_tags: title: Trending hashtags + subject: Nieuwe trends te beoordelen op %{instance} aliases: add_new: Alias aanmaken created_msg: Succesvol een nieuwe alias aangemaakt. Je kunt nu met de verhuizing vanaf het oude account beginnen. @@ -898,9 +947,11 @@ nl: approve_appeal: Bezwaar goedkeuren associated_report: Bijbehorende rapportage created_at: Datum en tijd + description_html: Dit zijn acties die op jouw account zijn toegepast en waarschuwingen die door medewerkers van %{instance} naar je zijn gestuurd. recipient: Geadresseerd aan reject_appeal: Bezwaar afgewezen status: 'Bericht #%{id}' + status_removed: Bericht is al van de server verwijderd title: "%{action} van %{date}" title_actions: delete_statuses: Verwijdering bericht @@ -964,6 +1015,7 @@ nl: add_keyword: Trefwoord toevoegen keywords: Trefwoorden statuses: Individuele berichten + statuses_hint_html: Dit filter is van toepassing om individuele berichten te selecteren, ongeacht of ze overeenkomen met de onderstaande trefwoorden. Berichten van het filter bekijken of verwijderen. title: Filter bewerken errors: deprecated_api_multiple_keywords: Deze instellingen kunnen niet via deze applicatie worden veranderd, omdat er meer dan één trefwoord wordt gebruikt. Gebruik een meer recente applicatie of de webomgeving. @@ -992,6 +1044,7 @@ nl: batch: remove: Uit het filter verwijderen index: + hint: Dit filter is van toepassing om individuele berichten te selecteren, ongeacht andere critiria. Je kunt in de webomgeving meer berichten aan dit filter toevoegen. title: Gefilterde berichten footer: trending_now: Trends @@ -1067,6 +1120,10 @@ nl: password: wachtwoord sign_in_token: beveiligingscode via e-mail webauthn: beveiligingssleutels + description_html: Wanneer je activiteit ziet die je niet herkent, overweeg dan uw wachtwoord te wijzigen en tweestapsverificatie in te schakelen. + empty: Geen inloggeschiedenis beschikbaar + failed_sign_in_html: Mislukte inlogpoging met %{method} van %{ip} (%{browser}) + successful_sign_in_html: Succesvol ingelogd met %{method} van %{ip} (%{browser}) title: Inloggeschiedenis media_attachments: validations: @@ -1212,8 +1269,14 @@ nl: status: Accountstatus remote_follow: missing_resource: Kon vereiste doorverwijzings-URL voor jouw account niet vinden + reports: + errors: + invalid_rules: verwijst niet naar geldige regels rss: content_warning: 'Inhoudswaarschuwing:' + descriptions: + account: Openbare berichten van @%{acct} + tag: 'Openbare berichten met hashtag #%{hashtag}' scheduled_statuses: over_daily_limit: Je hebt de limiet van %{limit} in te plannen berichten voor vandaag overschreden over_total_limit: Je hebt de limiet van %{limit} in te plannen berichten overschreden @@ -1259,6 +1322,7 @@ nl: revoke: Intrekken revoke_success: Sessie succesvol ingetrokken title: Sessies + view_authentication_history: Inloggeschiedenis van jouw account bekijken settings: account: Account account_settings: Accountinstellingen @@ -1296,6 +1360,7 @@ nl: other: "%{count} video's" boosted_from_html: Geboost van %{acct_link} content_warning: 'Inhoudswaarschuwing: %{warning}' + default_language: Hetzelfde als de taal van de gebruikersomgeving disallowed_hashtags: one: 'bevatte een niet toegestane hashtag: %{tags}' other: 'bevatte niet toegestane hashtags: %{tags}' @@ -1305,6 +1370,7 @@ nl: open_in_web: In de webapp openen over_character_limit: Limiet van %{max} tekens overschreden pin_errors: + direct: Berichten die alleen zichtbaar zijn voor vermelde gebruikers, kunnen niet worden vastgezet limit: Je hebt het maximaal aantal bericht al vastgemaakt ownership: Een bericht van iemand anders kan niet worden vastgemaakt reblog: Een boost kan niet worden vastgezet @@ -1331,12 +1397,20 @@ nl: unlisted: Minder openbaar unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen statuses_cleanup: + enabled: Automatisch oude berichten verwijderen + enabled_hint: Verwijder uw berichten automatisch zodra ze een bepaalde leeftijdsgrens bereiken, tenzij ze overeenkomen met een van de onderstaande uitzonderingen exceptions: Uitzonderingen + explanation: Doordat het verwijderen van berichten de server zwaar belast, gebeurt dit geleidelijk aan op momenten dat de server niet bezig is. Om deze reden kunnen uw berichten een tijdje nadat ze de leeftijdsgrens hebben bereikt worden verwijderd. ignore_favs: Favorieten negeren ignore_reblogs: Boosts negeren + interaction_exceptions: Uitzonderingen op basis van interacties + interaction_exceptions_explanation: Merk op dat er geen garantie is dat berichten worden verwijderd, wanneer eenmaal het aantal favorieten of boosts boven de ingestelde grenswaarde zijn geweest. keep_direct: Directe berichten behouden + keep_direct_hint: Verwijdert geen enkel directe bericht van jou keep_media: Berichten met mediabijlagen behouden + keep_media_hint: Verwijdert geen enkel bericht met mediabijlagen keep_pinned: Vastgemaakte berichten behouden + keep_pinned_hint: Verwijdert geen enkel vastgezet bericht van jou keep_polls: Polls behouden keep_polls_hint: Geen enkele poll van jou wordt verwijderd keep_self_bookmark: Bladwijzers behouden @@ -1353,7 +1427,10 @@ nl: '63113904': 2 jaar '7889238': 3 maanden min_age_label: Te verwijderen na - min_favs: Berichten die minstens zoveel keer als favoriet zijn gemarkeerd behouden + min_favs: Berichten die tenminste zoveel keer als favoriet zijn gemarkeerd behouden + min_favs_hint: Verwijdert geen berichten die tenminste zoveel keer als favoriet zijn gemarkeerd. Laat leeg om berichten ongeacht het aantal favorieten te verwijderen + min_reblogs: Berichten die minstens zoveel keer zijn geboost behouden + min_reblogs_hint: Verwijdert geen berichten die tenminste zoveel keer zijn geboost. Laat leeg om berichten ongeacht het aantal boosts te verwijderen stream_entries: pinned: Vastgemaakt bericht reblogged: boostte @@ -1402,26 +1479,39 @@ nl: subject: Jouw archief staat klaar om te worden gedownload title: Archief ophalen suspicious_sign_in: - change_password: jouw wachtwoord wijzigen + change_password: je wachtwoord te wijzigen + details: 'Hier zijn de details van inlogpoging:' + explanation: We hebben vastgesteld dat iemand vanaf een nieuw IP-adres op jouw account is ingelogd. + further_actions_html: Wanneer jij dit niet was, adviseren wij om onmiddellijk %{action} en om tweestapsverificatie in te schakelen, om zo je account veilig te houden. + subject: Jouw account is vanaf een nieuw IP-adres benaderd title: Een nieuwe registratie warning: appeal: Bezwaar indienen appeal_description: Wanneer je denkt dat dit een fout is, kun je een bezwaar indienen bij de medewerkers van %{instance}. categories: spam: Spam + violation: De inhoud is in strijd met de volgende communityrichtlijnen explanation: + delete_statuses: Er is vastgesteld dat sommige van jouw berichten in strijd zijn met één of meerdere communityrichtlijnen en daarom door de moderatoren van %{instance} zijn verwijderd. + disable: Je kunt niet langer jouw account gebruiken, maar jouw profiel en andere gegevens zijn nog wel intact. Je kunt een backup van je gegevens opvragen, accountinstellingen wijzigen of je account verwijderen. mark_statuses_as_sensitive: Sommige van jouw berichten zijn als gevoelig gemarkeerd door de moderatoren van %{instance}. Dit betekent dat mensen op de media in de berichten moeten klikken/tikken om deze weer te geven. Je kunt media in de toekomst ook zelf als gevoelig markeren. sensitive: Vanaf nu worden al jouw geüploade media als gevoelig gemarkeerd en verborgen achter een waarschuwing. + silence: Je kunt nog steeds jouw account gebruiken, maar alleen mensen die jou al volgen kunnen jouw berichten zien, en je kunt minder goed worden gevonden. Andere kunnen je echter nog wel steeds handmatig volgen. + suspend: Je kunt niet langer jouw account gebruiken, en jouw profiel en andere gegevens zijn niet langer toegankelijk. Je kunt nog steeds inloggen om een backup van jouw gegevens op te vragen, totdat deze na 30 dagen volledig worden verwijderd. We zullen wel enkele basisgegevens behouden om te voorkomen dat je onder je schorsing uit probeert te komen. reason: 'Reden:' statuses: 'Gerapporteerde berichten:' subject: + delete_statuses: Deze berichten van %{acct} zijn verwijderd disable: Jouw account %{acct} is bevroren + mark_statuses_as_sensitive: Deze berichten van %{acct} zijn als gevoelig gemarkeerd none: Waarschuwing voor %{acct} + sensitive: Berichten van %{acct} zullen vanaf nu altijd als gevoelig worden gemarkeerd silence: Jouw account %{acct} is nu beperkt suspend: Jouw account %{acct} is opgeschort title: delete_statuses: Berichten verwijderd disable: Account bevroren + mark_statuses_as_sensitive: Berichten als gevoelig gemarkeerd none: Waarschuwing sensitive: Account is als gevoelig gemarkeerd silence: Account beperkt diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 27d3240c8d..9f6c024c84 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -733,16 +733,29 @@ pl: delete: Usuń przesłany plik destroyed_msg: Pomyślnie usunięto przesłany plik! statuses: + account: Autor + application: Aplikacja back_to_account: Wróć na konto back_to_report: Wróć do strony zgłoszenia batch: remove_from_report: Usuń ze zgłoszenia report: Zgłoszenie deleted: Usunięto + favourites: Ulubione + history: Historia wersji + in_reply_to: W odpowiedzi na + language: Język media: title: Multimedia + metadata: Metadane no_status_selected: Żaden wpis nie został zmieniony, bo żaden nie został wybrany + open: Otwarty post + original_status: Oryginalny post + reblogs: Podbicia + status_changed: Post zmieniony title: Wpisy konta + trending: Popularne + visibility: Widoczność with_media: Z zawartością multimedialną strikes: actions: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 6e2ac523bd..a5c4a6de1e 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -675,10 +675,15 @@ pt-PT: appearance: preamble: Personalize a interface web do Mastodon. title: Aspeto + branding: + preamble: A marca do seu servidor diferencia-a de outros servidores na rede. Essa informação pode ser exibida em vários ambientes, como a interface web do Mastodon, aplicativos nativos, visualizações de links em outros sites e dentro de aplicativos de mensagens, etc. Por esta razão, é melhor manter esta informação clara, curta e concisa. + title: Marca content_retention: + preamble: Controle como o conteúdo gerado pelos utilizadores é armazenado no Mastodon. title: Retenção de conteúdo discovery: follow_recommendations: Recomendações para seguir + preamble: Revelar conteúdos interessantes é fundamental para a entrada de novos utilizadores que podem não conhecer ninguém no Mastodon. Controle como os vários recursos de descoberta funcionam no seu servidor. profile_directory: Diretório de perfis public_timelines: Cronologias públicas title: Descobrir @@ -700,16 +705,29 @@ pt-PT: delete: Eliminar arquivo carregado destroyed_msg: Upload do site eliminado com sucesso! statuses: + account: Autor + application: Aplicação back_to_account: Voltar para página da conta back_to_report: Voltar à página da denúncia batch: remove_from_report: Remover da denúncia report: Denúncia deleted: Eliminado + favourites: Favoritos + history: Histórico de versões + in_reply_to: A responder a + language: Idioma media: title: Media + metadata: Metadados no_status_selected: Nenhum estado foi alterado porque nenhum foi selecionado + open: Abrir publicação + original_status: Publicação original + reblogs: Reblogs + status_changed: Publicação alterada title: Estado das contas + trending: Em destaque + visibility: Visibilidade with_media: Com media strikes: actions: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index bf7bb9db44..086c282267 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -661,16 +661,25 @@ ru: delete: Удалить загруженный файл destroyed_msg: Файл успешно удалён. statuses: + account: Автор + application: Заявка back_to_account: Назад к учётной записи back_to_report: Вернуться к жалобе batch: remove_from_report: Убрать из жалобы report: Пожаловаться deleted: Удалено + favourites: Избранное + history: История версий + in_reply_to: В ответ + language: Язык media: title: Файлы мультимедиа + metadata: Метаданные no_status_selected: Ничего не изменилось, так как ни один пост не был выделен title: Посты пользователя + trending: Популярное + visibility: Видимость with_media: С файлами strikes: actions: diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index ea01e68825..35772a11e7 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -185,6 +185,11 @@ ar: with_dns_records: تضمين سجلات MX و عناوين IP للنطاق featured_tag: name: الوسم + form_admin_settings: + site_terms: سياسة الخصوصية + site_title: اسم الخادم + theme: الحُلَّة الإفتراضية + thumbnail: الصورة المصغرة للخادم interactions: must_be_follower: حظر الإخطارات القادمة من حسابات لا تتبعك must_be_following: حظر الإخطارات القادمة من الحسابات التي لا تتابعها @@ -216,7 +221,12 @@ ar: name: الوسم trendable: السماح لهذه الكلمة المفتاحية بالظهور تحت المتداوَلة usable: اسمح للمنشورات استخدام هذا الوسم + user: + role: الدور + user_role: + color: لون الشارة 'no': لا + not_recommended: غير مستحسن recommended: موصى بها required: mark: "*" diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 19b524af74..a7dce2b677 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -78,9 +78,13 @@ cs: bootstrap_timeline_accounts: Tyto účty budou připnuty na vrchol nových uživatelů podle doporučení. closed_registrations_message: Zobrazeno při zavření registrace content_cache_retention_period: Příspěvky z jiných serverů budou odstraněny po zadaném počtu dní, pokud je nastavena kladná hodnota. To může být nevratné. + custom_css: Můžete použít vlastní styly ve verzi Mastodonu. media_cache_retention_period: Stažené mediální soubory budou po zadaném počtu dní odstraněny, pokud je nastavena kladná hodnota, a na požádání znovu staženy. + profile_directory: Adresář profilu obsahuje seznam všech uživatelů, kteří se přihlásili, aby mohli být nalezeni. site_contact_username: Jak vás lidé mohou oslovit na Mastodon. + site_extended_description: Jakékoli další informace, které mohou být užitečné pro návštěvníky a vaše uživatele. Může být strukturováno pomocí Markdown syntaxe. site_terms: Použijte vlastní zásady ochrany osobních údajů nebo ponechte prázdné pro použití výchozího nastavení. Může být strukturováno pomocí Markdown syntaxe. + thumbnail: Přibližně 2:1 obrázek zobrazený vedle informací o vašem serveru. form_challenge: current_password: Vstupujete do zabezpečeného prostoru imports: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 3f65cb527d..9f2c2e562b 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -235,7 +235,7 @@ da: custom_css: Tilpasset CSS mascot: Tilpasset maskot (ældre funktion) media_cache_retention_period: Media-cache opbevaringsperiode - profile_directory: Aktivér profilmappe + profile_directory: Aktivér profiloversigt registrations_mode: Hvem, der kan tilmelde sig require_invite_text: Kræv tilmeldingsbegrundelse show_domain_blocks: Vis domæneblokeringer diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 757a589dbf..c0638b323f 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -75,6 +75,7 @@ de: warn: Den gefilterten Inhalt hinter einer Warnung ausblenden, die den Filtertitel beinhaltet form_admin_settings: backups_retention_period: Behalte generierte Benutzerarchive für die angegebene Anzahl von Tagen. + closed_registrations_message: Wird angezeigt, wenn Anmeldungen geschlossen sind content_cache_retention_period: Beiträge von anderen Servern werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht. Dies kann eventuell nicht rückgängig gemacht werden. media_cache_retention_period: Heruntergeladene Mediendateien werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht und bei Bedarf erneut heruntergeladen. form_challenge: @@ -213,8 +214,16 @@ de: warn: Mit einer Warnung ausblenden form_admin_settings: backups_retention_period: Aufbewahrungsfrist für Benutzerarchive + closed_registrations_message: Benutzerdefinierte Nachricht, wenn Anmeldungen nicht verfügbar sind content_cache_retention_period: Aufbewahrungsfrist für Inhalte im Cache + custom_css: Benutzerdefiniertes CSS media_cache_retention_period: Aufbewahrungsfrist für den Medien-Cache + registrations_mode: Wer kann sich registrieren + show_domain_blocks: Zeige Domain-Blockaden + site_short_description: Serverbeschreibung + site_terms: Datenschutzerklärung + site_title: Servername + trends: Trends aktivieren interactions: must_be_follower: Benachrichtigungen von Profilen blockieren, die mir nicht folgen must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 3b97e4df63..8df08dc8d4 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -136,7 +136,7 @@ es: account_alias: acct: Maneja la cuenta antigua account_migration: - acct: Maneja la cuenta nueva + acct: Alias de la nueva cuenta account_warning_preset: text: Texto predefinido title: Título diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 53e6a52b3b..2a0765cfff 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -73,6 +73,27 @@ fi: actions: hide: Piilota suodatettu sisältö kokonaan ja käyttäydy ikään kuin sitä ei olisi olemassa warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen otsikko + form_admin_settings: + backups_retention_period: Säilytä luodut arkistot määritetyn määrän päiviä. + bootstrap_timeline_accounts: Nämä tilit kiinnitetään uusien käyttäjien suositusten yläpuolelle. + closed_registrations_message: Näkyy, kun ilmoittautuminen on suljettu + content_cache_retention_period: Viestit muilta palvelimilta poistetaan määritetyn määrän päiviä jälkeen, kun arvo on asetettu positiiviseksi. Tämä voi olla peruuttamatonta. + custom_css: Voit käyttää mukautettuja tyylejä Mastodonin verkkoversiossa. + mascot: Ohittaa kuvituksen edistyneessä käyttöliittymässä. + media_cache_retention_period: Ladatut mediatiedostot poistetaan määritetyn määrän päiviä jälkeen, kun arvo on positiivinen ja ladataan uudelleen pyynnöstä. + profile_directory: Profiilihakemisto lueteloi kaikki käyttäjät, jotka ovat ilmoittaneet olevansa löydettävissä. + require_invite_text: Kun kirjautuminen vaatii manuaalisen hyväksynnän, tee ”Miksi haluat liittyä?” teksti syötetään pakolliseksi eikä vapaaehtoiseksi + site_contact_email: Kuinka ihmiset voivat tavoittaa sinut oikeudellisissa tai tukikysymyksissä. + site_contact_username: Miten ihmiset voivat tavoittaa sinut Mastodonissa. + site_extended_description: Kaikki lisätiedot, jotka voivat olla hyödyllisiä kävijöille ja käyttäjille. Voidaan jäsentää Markdown-syntaksilla. + site_short_description: Lyhyt kuvaus auttaa yksilöimään palvelimesi. Kuka sitä johtaa, kenelle se on tarkoitettu? + site_terms: Käytä omaa tietosuojakäytäntöä tai jätä tyhjäksi, jos haluat käyttää oletusta. Voidaan jäsentää Markdown-syntaksilla. + site_title: Kuinka ihmiset voivat viitata palvelimeen sen verkkotunnuksen lisäksi. + theme: Teema, jonka uloskirjautuneet vierailijat ja uudet käyttäjät näkevät. + thumbnail: Noin 2:1 kuva näytetään palvelimen tietojen rinnalla. + timeline_preview: Uloskirjautuneet vierailijat voivat selata uusimpia julkisia viestejä, jotka ovat saatavilla palvelimella. + trendable_by_default: Ohita suositun sisällön manuaalinen tarkistus. Yksittäisiä kohteita voidaan edelleen poistaa jälkikäteen. + trends: Trendit osoittavat, mitkä viestit, hashtagit ja uutiset ovat saamassa vetoa palvelimellasi. form_challenge: current_password: Olet menossa suojatulle alueelle imports: @@ -207,6 +228,30 @@ fi: actions: hide: Piilota kokonaan warn: Piilota varoituksella + form_admin_settings: + backups_retention_period: Käyttäjän arkiston säilytysaika + bootstrap_timeline_accounts: Suosittele aina näitä tilejä uusille käyttäjille + closed_registrations_message: Mukautettu viesti, kun kirjautumisia ei ole saatavilla + content_cache_retention_period: Sisällön välimuistin säilytysaika + custom_css: Mukautettu CSS + mascot: Mukautettu maskotti (legacy) + media_cache_retention_period: Median välimuistin säilytysaika + profile_directory: Ota profiilihakemisto käyttöön + registrations_mode: Kuka voi rekisteröityä + require_invite_text: Vaadi syy liittyä + show_domain_blocks: Näytä domainestot + show_domain_blocks_rationale: Näytä miksi verkkotunnukset on estetty + site_contact_email: Ota yhteyttä sähköpostilla + site_contact_username: Kontaktin käyttäjänimi + site_extended_description: Laajennettu kuvaus + site_short_description: Palvelimen kuvaus + site_terms: Tietosuojakäytäntö + site_title: Palvelimen nimi + theme: Oletusteema + thumbnail: Palvelimen pikkukuva + timeline_preview: Salli todentamaton pääsy julkiselle aikajanalle + trendable_by_default: Salli trendit ilman ennakkotarkastusta + trends: Trendit käyttöön interactions: must_be_follower: Estä ilmoitukset käyttäjiltä, jotka eivät seuraa sinua must_be_following: Estä ilmoitukset käyttäjiltä, joita et seuraa @@ -253,6 +298,7 @@ fi: events: Tapahtumat käytössä url: Päätepisteen URL 'no': Ei + not_recommended: Ei suositella recommended: Suositeltu required: mark: "*" diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index c0c460f1da..1173d54802 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -209,7 +209,19 @@ fr: warn: Cacher derrière un avertissement form_admin_settings: content_cache_retention_period: Durée de rétention du contenu dans le cache + mascot: Mascotte personnalisée (héritée) media_cache_retention_period: Durée de rétention des médias dans le cache + profile_directory: Activer l’annuaire des profils + registrations_mode: Qui peut s’inscrire + site_extended_description: Description étendue + site_short_description: Description du serveur + site_terms: Politique de confidentialité + site_title: Nom du serveur + theme: Thème par défaut + thumbnail: Miniature du serveur + timeline_preview: Autoriser l’accès non authentifié aux fils publics + trendable_by_default: Autoriser les tendances sans révision préalable + trends: Activer les tendances interactions: must_be_follower: Bloquer les notifications des personnes qui ne vous suivent pas must_be_following: Bloquer les notifications des personnes que vous ne suivez pas diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 7165cb2435..5a23f5f851 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -73,6 +73,27 @@ gd: actions: hide: Falaich an t-susbaint chriathraichte uile gu lèir mar nach robh i ann idir warn: Falaich an t-susbaint chriathraichte air cùlaibh rabhaidh a dh’innseas tiotal na criathraige + form_admin_settings: + backups_retention_period: Cùm na tasg-lannan a chaidh a ghintinn dhan luchd-cleachdaidh rè an àireamh de làithean a shònraich thu. + bootstrap_timeline_accounts: Thèid na cunntasan seo a phrìneachadh air bàrr nam molaidhean leantainn dhan luchd-cleachdaidh ùr. + closed_registrations_message: Thèid seo a shealltainn nuair a bhios an clàradh dùinte + content_cache_retention_period: Thèid na postaichean o fhrithealaichean eile a sguabadh às às dèidh an àireamh de làithean a shònraich thu nuair a bhios luach dearbh air. Dh’fhaoidte nach gabh seo a neo-dhèanamh. + custom_css: "’S urrainn dhut stoidhlean gnàthaichte a chur an sàs air an tionndadh-lìn de Mhastodon." + mascot: Tar-àithnidh seo an sgead-dhealbh san eadar-aghaidh-lìn adhartach. + media_cache_retention_period: Thèid na faidhlichean meadhain air an luchdadh a-nuas a sguabadh às às dèidh an àireamh de làithean a shònraich thu nuair a bhios luach dearbh air agus an ath-luachdadh nuair a thèid an iarraidh an uairsin. + profile_directory: Seallaidh eòlaire nam pròifil liosta dhen luchd-cleachdaidh a dh’aontaich gun gabh an rùrachadh. + require_invite_text: Nuair a bhios aontachadh a làimh riatanach dhan chlàradh, dèan an raon teacsa “Carson a bu mhiann leat ballrachd fhaighinn?” riatanach seach roghainneil + site_contact_email: Mar a ruigear thu le ceistean laghail no taice. + site_contact_username: Mar a ruigear thu air Mastodon. + site_extended_description: Cuir fiosrachadh sam bith eile ris a bhios feumail do dh’aoighean ’s an luchd-cleachdaidh agad. ’S urrainn dhut structar a chur air le co-chàradh Markdown. + site_short_description: Tuairisgeul goirid a chuidicheas le aithneachadh sònraichte an fhrithealaiche agad. Cò leis is cò dha a tha e? + site_terms: Cleachd am poileasaidh prìobhaideachd agad fhèin no fàg bàn e gus am fear bunaiteach a chleachdadh. ’S urrainn dhut structar a chur air le co-chàradh Markdown. + site_title: An t-ainm a tha air an fhrithealaiche agad seach ainm àrainne. + theme: An t-ùrlar a chì na h-aoighean gun chlàradh a-staigh agus an luchd-cleachdaidh ùr. + thumbnail: Dealbh mu 2:1 a thèid a shealltainn ri taobh fiosrachadh an fhrithealaiche agad. + timeline_preview: "’S urrainn dha na h-aoighean gun chlàradh a-staigh na postaichean poblach as ùire a tha ri fhaighinn air an fhrithealaiche a bhrabhsadh." + trendable_by_default: Geàrr leum thar lèirmheas a làimh na susbainte a’ treandadh. Gabhaidh nithean fa leth a thoirt far nan treandaichean fhathast an uairsin. + trends: Seallaidh na treandaichean na postaichean, tagaichean hais is naidheachdan a tha fèill mhòr orra air an fhrithealaiche agad. form_challenge: current_password: Tha thu a’ tighinn a-steach gu raon tèarainte imports: @@ -85,6 +106,7 @@ gd: ip: Cuir a-steach seòladh IPv4 no IPv6. ’S urrainn dhut rainsean gu lèir a bhacadh le co-chàradh CIDR. Thoir an aire nach gluais thu thu fhèin a-mach! severities: no_access: Bac inntrigeadh dha na goireasan uile + sign_up_block: Cha bhi ùr-chlàradh ceadaichte sign_up_requires_approval: Bidh cleachdaichean air an ùr-chlàradh feumach air d’ aonta severity: Tagh na thachras le iarrtasan on IP seo rule: @@ -206,6 +228,30 @@ gd: actions: hide: Falaich uile gu lèir warn: Falaich le rabhadh + form_admin_settings: + backups_retention_period: Ùine glèidhidh aig tasg-lannan an luchd-cleachdaidh + bootstrap_timeline_accounts: Mol na cunntasan seo do chleachdaichean ùra an-còmhnaidh + closed_registrations_message: Teachdaireachd ghnàthaichte nuair nach eil clàradh ri fhaighinn + content_cache_retention_period: Ùine glèidhidh aig tasgadan na susbainte + custom_css: CSS gnàthaichte + mascot: Suaichnean gnàthaichte (dìleabach) + media_cache_retention_period: Ùine glèidhidh aig tasgadan nam meadhanan + profile_directory: Cuir eòlaire nam pròifil an comas + registrations_mode: Cò dh’fhaodas clàradh + require_invite_text: Iarr adhbhar clàraidh + show_domain_blocks: Seall bacaidhean àrainne + show_domain_blocks_rationale: Seall carson a chaidh àrainnean a bacadh + site_contact_email: Post-d a’ chonaltraidh + site_contact_username: Ainm cleachdaiche a’ chonaltraidh + site_extended_description: Tuairisgeul leudaichte + site_short_description: Tuairisgeul an fhrithealaiche + site_terms: Poileasaidh prìobhaideachd + site_title: Ainm an fhrithealaiche + theme: An t-ùrlar bunaiteach + thumbnail: Dealbhag an fhrithealaiche + timeline_preview: Ceadaich inntrigeadh gun ùghdarrachadh air na loidhnichean-ama phoblach + trendable_by_default: Ceadaich treandaichean gu lèirmheas ro làimh + trends: Cuir na treandaichean an comas interactions: must_be_follower: Bac na brathan nach eil o luchd-leantainn must_be_following: Bac na brathan o dhaoine air nach lean thu @@ -219,6 +265,7 @@ gd: ip: IP severities: no_access: Bac inntrigeadh + sign_up_block: Bac clàraidhean ùra sign_up_requires_approval: Cuingich clàraidhean ùra severity: Riaghailt notification_emails: @@ -251,6 +298,7 @@ gd: events: Na tachartas an comas url: URL na puinge-deiridh 'no': Chan eil + not_recommended: Cha mholamaid seo recommended: Molta required: mark: "*" diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 9a7bd4cf4b..d351ff4127 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -75,8 +75,25 @@ gl: warn: Agochar o contido filtrado tras un aviso que conteña o nome do filtro form_admin_settings: backups_retention_period: Gardar os arquivos xerados pola usuaria durante o número de días indicado. + bootstrap_timeline_accounts: Estas contas aparecerán fixas na parte superior das recomendacións para as usuarias. + closed_registrations_message: Móstrase cando non se admiten novas usuarias content_cache_retention_period: As publicacións desde outros servidores serán eliminados despois do número de días indicados ao poñer un valor positivo. É unha acción irreversible. + custom_css: Podes aplicar deseños personalizados na versión web de Mastodon. + mascot: Sobrescribe a ilustración na interface web avanzada. media_cache_retention_period: Os ficheiros multimedia descargados serán eliminados despois do número de días indicado ao establecer un valor positivo, e voltos a descargar baixo petición. + profile_directory: O directorio de perfís inclúe a tódalas usuarias que optaron por ser descubribles. + require_invite_text: Cando os rexistros requiren aprobación manual, facer que o texto "Por que te queres rexistrar?" do convite sexa obrigatorio en lugar de optativo + site_contact_email: De que xeito se pode contactar contigo para temas legais ou obter axuda. + site_contact_username: De que xeito se pode contactar contigo en Mastodon. + site_extended_description: Calquera información adicional que poida ser útil para visitantes e usuarias. Pode utilizarse sintaxe Markdown. + site_short_description: Breve descrición que axuda a identificar de xeito único o teu servidor. Quen o xestiona, a quen vai dirixido? + site_terms: Escribe a túa propia política de privacidade ou usa o valor por defecto. Podes usar sintaxe Markdow. + site_title: De que xeito se pode referir o teu servidor ademáis do seu nome de dominio. + theme: Decorado que verán visitantes e novas usuarias. + thumbnail: Imaxe con proporcións 2:1 mostrada xunto á información sobre o servidor. + timeline_preview: Visitantes e usuarias non conectadas poderán ver as publicacións públicas máis recentes do servidor. + trendable_by_default: Omitir a revisión manual das tendencias. Poderás igualmente eliminar manualmente os elementos que vaian aparecendo. + trends: As tendencias mostran publicacións, cancelos e novas historias que teñen popularidade no teu servidor. form_challenge: current_password: Estás entrando nun área segura imports: @@ -213,8 +230,28 @@ gl: warn: Agochar tras un aviso form_admin_settings: backups_retention_period: Período de retención do arquivo da usuaria + bootstrap_timeline_accounts: Recomendar sempre estas contas ás novas usuarias + closed_registrations_message: Mensaxe personalizada para cando o rexistro está pechado content_cache_retention_period: Período de retención da caché do contido + custom_css: CSS personalizado + mascot: Mascota propia (herdado) media_cache_retention_period: Período de retención da caché multimedia + profile_directory: Activar o directorio de perfís + registrations_mode: Quen se pode rexistrar + require_invite_text: Pedir unha razón para unirse + show_domain_blocks: Amosar dominios bloqueados + show_domain_blocks_rationale: Explicar porque están bloqueados os dominios + site_contact_email: Email de contacto + site_contact_username: Nome do contacto + site_extended_description: Descrición ampla + site_short_description: Descrición do servidor + site_terms: Política de Privacidade + site_title: Nome do servidor + theme: Decorado por omisión + thumbnail: Icona do servidor + timeline_preview: Permitir acceso á cronoloxía pública sen autenticación + trendable_by_default: Permitir tendencias sen aprobación previa + trends: Activar tendencias interactions: must_be_follower: Bloquear as notificacións de non-seguidoras must_be_following: Bloquea as notificacións de persoas que non segues diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 0f943f0a2c..d39f8fe091 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -219,6 +219,7 @@ hu: warn: Elrejtés figyelmeztetéssel form_admin_settings: backups_retention_period: Felhasználói archívum megtartási időszaka + closed_registrations_message: A feliratkozáskor megjelenő egyéni üzenet nem érhető el content_cache_retention_period: Tartalom-gyorsítótár megtartási időszaka custom_css: Egyéni CSS mascot: Egyéni kabala (örökölt) @@ -227,6 +228,7 @@ hu: registrations_mode: Ki regisztrálhat require_invite_text: Indok megkövetelése a csatlakozáshoz show_domain_blocks: Domain tiltások megjelenitése + show_domain_blocks_rationale: A domainok blokkolásának okának megjelenítése site_extended_description: Bővített leírás site_short_description: Kiszolgáló leírása site_terms: Adatvédelmi szabályzat diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 326e261687..50019ecb67 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -75,8 +75,25 @@ is: warn: Fela síað efni á bakvið aðvörun sem tekur fram titil síunnar form_admin_settings: backups_retention_period: Halda safni notandans í tiltekinn fjölda daga. + bootstrap_timeline_accounts: Þessir notendaaðgangar verða festir efst í meðmælum til nýrra notenda um að fylgjast með þeim. + closed_registrations_message: Birtist þegar lokað er á nýskráningar content_cache_retention_period: Færslum af öðrum netþjónum verður eytt eftir tiltekinn fjölda daga þegar þetta er jákvætt gildi. Þetta gæti verið óafturkallanleg aðgerð. + custom_css: Þú getur virkjað sérsniðna stíla í vefútgáfu Mastodon. + mascot: Þetta tekyr yfir myndskreytinguna í ítarlega vefviðmótinu. media_cache_retention_period: Sóttu myndefni verður eytt eftir tiltekinn fjölda daga þegar þetta er jákvætt gildi og síðan sótt aftur eftir þörfum. + profile_directory: Notendamappan telur upp alla þá notendur sem hafa valið að vera uppgötvanlegir. + require_invite_text: Þegar nýskráningar krefjast handvirks samþykkis, þá skal gera textann í “Hvers vegna viltu taka þátt?” að kröfu en ekki valkvæðan + site_contact_email: Hovernig fólk getur haft samband við þig til að fá aðstoð eða vegna lagalegra mála. + site_contact_username: Hovernig fólk getur haft samband við þig á Mastodon. + site_extended_description: Hverjar þær viðbótarupplýsingar sem gætu nýst gestum þínum og notendum. Má sníða með Markdown-málskipan. + site_short_description: Stutt lýsing sem hjálpar til við að auðkenna netþjóninn þinn. Hver er að reka hann, fyrir hverja er hann? + site_terms: Notaðu þína eigin persónuverndarstefnu eða skildu þetta eftir autt til að nota sjálfgefna stefnu. Má sníða með Markdown-málskipan. + site_title: Hvað fólk kallar netþjóninn þinn annað en með heiti lénsins. + theme: Þema sem útskráðir gestir og nýjir notendur sjá. + thumbnail: Mynd um það bil 2:1 sem birtist samhliða upplýsingum um netþjóninn þinn. + timeline_preview: Gestir sem ekki eru skráðir inn munu geta skoðað nýjustu opinberu færslurnar sem tiltækar eru á þjóninum. + trendable_by_default: Sleppa handvirkri yfirferð á vinsælu efni. Áfram verður hægt að fjarlægja stök atriði úr vinsældarlistum. + trends: Vinsældir sýna hvaða færslur, myllumerki og fréttasögur séu í umræðunni á netþjóninum þínum. form_challenge: current_password: Þú ert að fara inn á öryggissvæði imports: @@ -213,8 +230,28 @@ is: warn: Fela með aðvörun form_admin_settings: backups_retention_period: Tímalengd sem safni notandans er haldið eftir + bootstrap_timeline_accounts: Alltaf mæla með þessum notendaaðgöngum fyrir nýja notendur + closed_registrations_message: Sérsniðin skilaboð þegar ekki er hægt að nýskrá content_cache_retention_period: Tímalengd sem haldið er í biðminni + custom_css: Sérsniðið CSS + mascot: Sérsniðið gæludýr (eldra) media_cache_retention_period: Tímalengd sem myndefni haldið + profile_directory: Virkja notendamöppu + registrations_mode: Hverjir geta nýskráð sig + require_invite_text: Krefjast ástæðu fyrir þátttöku + show_domain_blocks: Sýna útilokanir léna + show_domain_blocks_rationale: Sýna af hverju lokað var á lén + site_contact_email: Tölvupóstfang tengiliðar + site_contact_username: Notandanafn tengiliðar + site_extended_description: Ítarleg lýsing + site_short_description: Lýsing á vefþjóni + site_terms: Persónuverndarstefna + site_title: Heiti vefþjóns + theme: Sjálfgefið þema + thumbnail: Smámynd vefþjóns + timeline_preview: Leyfa óauðkenndan aðgang að opinberum tímalínum + trendable_by_default: Leyfa vinsælt efni án undanfarandi yfirferðar + trends: Virkja vinsælt interactions: must_be_follower: Loka á tilkynningar frá þeim sem ekki eru fylgjendur must_be_following: Loka á tilkynningar frá þeim sem þú fylgist ekki með diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 30851b9329..7a3ab07d51 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -75,8 +75,14 @@ ko: warn: 필터에 걸러진 글을 필터 제목과 함께 경고 뒤에 가리기 form_admin_settings: backups_retention_period: 생성된 사용자 아카이브를 며칠동안 저장할 지. + closed_registrations_message: 새 가입을 차단했을 때 표시됩니다 content_cache_retention_period: 양수가 설정되었다면 다른 서버의 게시물은 여기서 설정된 일수가 지나면 삭제될 것입니다. 되돌릴 수 없는 작업일 수 있습니다. + custom_css: 사용자 지정 스타일을 웹 버전의 마스토돈에 지정할 수 있습니다. + mascot: 고급 사용자 인터페이스에 있는 일러스트를 교체합니다. media_cache_retention_period: 양수로 설정된 경우 다운로드된 미디어 파일들은 지정된 일수가 지나면 삭제될 것이고 필요할 때 다시 다운로드 될 것입니다. + site_contact_email: 사람들이 법적이나 도움 요청을 위해 당신에게 연락할 방법. + site_contact_username: 사람들이 마스토돈에서 당신에게 연락할 방법. + theme: 로그인 하지 않은 사용자나 새로운 사용자가 보게 될 테마. form_challenge: current_password: 당신은 보안 구역에 진입하고 있습니다 imports: @@ -213,8 +219,28 @@ ko: warn: 경고와 함께 숨기기 form_admin_settings: backups_retention_period: 사용자 아카이브 유지 기한 + bootstrap_timeline_accounts: 새로운 사용자들에게 추천할 계정들 + closed_registrations_message: 가입이 불가능 할 때의 사용자 지정 메시지 content_cache_retention_period: 컨텐트 캐시 유지 기한 + custom_css: 사용자 정의 CSS + mascot: 사용자 정의 마스코트 (legacy) media_cache_retention_period: 미디어 캐시 유지 기한 + profile_directory: 프로필 책자 활성화 + registrations_mode: 누가 가입할 수 있는지 + require_invite_text: 가입 하는 이유를 필수로 입력하게 하기 + show_domain_blocks: 도메인 차단 보여주기 + show_domain_blocks_rationale: 왜 도메인이 차단되었는지 보여주기 + site_contact_email: 연락처 이메일 + site_contact_username: 연락 받을 관리자 사용자명 + site_extended_description: 확장된 설명 + site_short_description: 서버 설명 + site_terms: 개인정보 정책 + site_title: 서버 이름 + theme: 기본 테마 + thumbnail: 서버 썸네일 + timeline_preview: 로그인 하지 않고 공개 타임라인에 접근하는 것을 허용 + trendable_by_default: 사전 리뷰 없이 트렌드에 오르는 것을 허용 + trends: 유행 활성화 interactions: must_be_follower: 나를 팔로우 하지 않는 사람에게서 온 알림을 차단 must_be_following: 내가 팔로우 하지 않는 사람에게서 온 알림을 차단 diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index a62e8eb40f..7ef4e7ac3d 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -77,7 +77,10 @@ ku: warn: Naveroka parzûnkirî li pişt hişyariyek ku sernavê parzûnê qal dike veşêre form_admin_settings: backups_retention_period: Arşîvên bikarhênerên çêkirî ji bo rojên diyarkirî tomar bike. + bootstrap_timeline_accounts: Ev ajimêr wê di pêşnîyarên şopandina bikarhênerên nû de werin derzîkirin. + closed_registrations_message: Dema ku tomarkirin girtî bin têne xuyakirin content_cache_retention_period: Şandiyên ji rajekarên din wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin. Dibe ku ev bê veger be. + custom_css: Tu dikarî awayên kesane li ser guhertoya malperê ya Mastodon bicîh bikî. media_cache_retention_period: Pelên medyayê yên daxistî wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin, û li gorî daxwazê ​​ji nû ve werin daxistin. form_challenge: current_password: Tu dikevî qadeke ewledar @@ -216,7 +219,13 @@ ku: form_admin_settings: backups_retention_period: Serdema tomarkirina arşîva bikarhêner content_cache_retention_period: Serdema tomarkirina bîrdanka naverokê + custom_css: CSS a kesanekirî + mascot: Mascot a kesanekirî (legacy) media_cache_retention_period: Serdema tomarkirina bîrdanka medyayê + profile_directory: Rêgeha profilê çalak bike + registrations_mode: Kî dikare tomar bibe + require_invite_text: Ji bo tevlêbûnê sedemek pêdivî ye + show_domain_blocks: Astengkirinên navperê nîşan bide site_terms: Politîka taybetiyê trendable_by_default: Mafê bide rojevê bêyî ku were nirxandin interactions: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 115c7894d3..33dd889c4e 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -49,6 +49,7 @@ nl: phrase: Komt overeen ongeacht hoofd-/kleine letters of een inhoudswaarschuwing scopes: Tot welke API's heeft de toepassing toegang. Wanneer je een toestemming van het bovenste niveau kiest, hoef je geen individuele toestemmingen meer te kiezen. setting_aggregate_reblogs: Geen nieuwe boosts tonen voor berichten die recentelijk nog zijn geboost (heeft alleen effect op nieuw ontvangen boosts) + setting_always_send_emails: Normaliter worden er geen e-mailmeldingen verstuurd wanneer je actief Mastodon gebruikt setting_default_sensitive: Gevoelige media wordt standaard verborgen en kan met één klik worden getoond setting_display_media_default: Als gevoelig gemarkeerde media verbergen setting_display_media_hide_all: Media altijd verbergen @@ -73,8 +74,15 @@ nl: warn: Verberg de gefilterde inhoud achter een waarschuwing, met de titel van het filter als waarschuwingstekst form_admin_settings: backups_retention_period: De aangemaakte gebruikersarchieven voor het opgegeven aantal dagen behouden. + bootstrap_timeline_accounts: Deze accounts worden bovenaan de aanbevelingen aan nieuwe gebruikers getoond. Meerdere gebruikersnamen met komma's scheiden. + closed_registrations_message: Weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld content_cache_retention_period: 'Berichten van andere servers worden na het opgegeven aantal dagen verwijderd. Let op: Dit is onomkeerbaar.' media_cache_retention_period: Mediabestanden die van andere servers zijn gedownload worden na het opgegeven aantal dagen verwijderd en worden op verzoek opnieuw gedownload. + require_invite_text: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd + theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien. + timeline_preview: Bezoekers (die niet zijn ingelogd) kunnen de meest recente, op de server aanwezige openbare berichten bekijken. + trendable_by_default: Handmatige beoordeling van trends overslaan. Individuele items kunnen later alsnog worden afgekeurd. + trends: Trends laten zien welke berichten, hashtags en nieuwsberichten op jouw server aan populariteit winnen. form_challenge: current_password: Je betreedt een veilige omgeving imports: @@ -101,9 +109,12 @@ nl: chosen_languages: Alleen berichten in de aangevinkte talen worden op de openbare tijdlijnen getoond role: De rol bepaalt welke rechten een gebruiker heeft user_role: + highlighted: Dit maakt de rol openbaar zichtbaar + name: Openbare naam van de rol, wanneer de rol als badge op profielpagina's wordt getoond permissions_as_keys: Gebruikers met deze rol hebben toegang tot... webhook: events: Selecteer de te verzenden gebeurtenissen + url: Waar gebeurtenissen naartoe worden verzonden labels: account: fields: @@ -206,8 +217,28 @@ nl: warn: Met een waarschuwing verbergen form_admin_settings: backups_retention_period: Bewaartermijn gebruikersarchief + bootstrap_timeline_accounts: Accounts die altijd aan nieuwe gebruikers worden aanbevolen + closed_registrations_message: Aangepast bericht wanneer registratie is uitgeschakeld content_cache_retention_period: Bewaartermijn berichtencache + custom_css: Aangepaste CSS + mascot: Aangepaste mascotte (legacy) media_cache_retention_period: Bewaartermijn mediacache + profile_directory: Gebruikersgids inschakelen + registrations_mode: Wie kan zich registreren + require_invite_text: Goedkeuring vereist om te kunnen registreren + show_domain_blocks: Domeinblokkades tonen + show_domain_blocks_rationale: Redenen voor domeinblokkades tonen + site_contact_email: E-mailadres contactpersoon + site_contact_username: Gebruikersnaam contactpersoon + site_extended_description: Uitgebreide omschrijving + site_short_description: Serveromschrijving + site_terms: Privacybeleid + site_title: Servernaam + theme: Standaardthema + thumbnail: Serverthumbnail + timeline_preview: Toegang tot de openbare tijdlijnen zonder in te loggen toestaan + trendable_by_default: Trends goedkeuren zonder voorafgaande beoordeling + trends: Trends inschakelen interactions: must_be_follower: Meldingen van mensen die jou niet volgen blokkeren must_be_following: Meldingen van mensen die jij niet volgt blokkeren @@ -240,12 +271,13 @@ nl: tag: listable: Toestaan dat deze hashtag in zoekopdrachten en aanbevelingen te zien valt name: Hashtag - trendable: Toestaan dat deze hashtag onder trends te zien valt + trendable: Goedkeuren dat deze hashtag onder trends te zien valt usable: Toestaan dat deze hashtag in berichten gebruikt mag worden user: role: Rol user_role: color: Kleur van badge + highlighted: Rol als badge op profielpagina's tonen name: Naam permissions_as_keys: Rechten position: Prioriteit diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 62d9bf582d..4fa667dddb 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -75,8 +75,25 @@ pt-PT: warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro form_admin_settings: backups_retention_period: Manter os arquivos gerados pelos utilizadores por um número específico de dias. + bootstrap_timeline_accounts: Estas contas serão destacadas no topo das recomendações aos novos utilizadores. + closed_registrations_message: Exibido quando as inscrições estão encerradas content_cache_retention_period: Publicações de outros servidores serão excluídos após o número de dias especificado, quando definido com um valor positivo. Isso pode ser irreversível. + custom_css: Pode aplicar estilos personalizados na versão web do Mastodon. + mascot: Sobrepõe-se à ilustração na interface web avançada. media_cache_retention_period: Os ficheiros de media descarregados serão excluídos após o número de dias especificado, quando definido com um valor positivo, e descarregados novamente quando solicitados. + profile_directory: O diretório de perfis lista todos os utilizadores que optaram por a sua conta ser sugerida a outros. + require_invite_text: Quando as incrições exigirem aprovação manual, faça o texto "Porque se quer juntar a nós?" da solicitação de convite, obrigatório ao invés de opcional + site_contact_email: Como as pessoas podem entrar em contacto consigo para obter informações legais ou de suporte. + site_contact_username: Como as pessoas conseguem chegar até si no Mastodon. + site_extended_description: Qualquer informação adicional que possa ser útil para os visitantes e os seus utilizadores. Pode ser estruturada com a sintaxe Markdown. + site_short_description: Uma breve descrição para ajudar a identificar de forma única o seu servidor. Quem o está a gerir, para quem é? + site_terms: Use a sua própria política de privacidade ou deixe em branco para usar a política padrão. Pode ser estruturada com a sintaxe Markdown. + site_title: Como as pessoas podem referir-se ao seu servidor para além do seu nome de domínio. + theme: Tema que os visitantes e os novos utilizadores visualizam. + thumbnail: Uma imagem de aproximadamente 2:1, exibida ao lado da informação do seu servidor. + timeline_preview: Os visitantes sem sessão iniciada poderão consultar as publicações públicas mais recentes disponíveis no servidor. + trendable_by_default: Ignorar a revisão manual do conteúdo das tendências. Itens individuais ainda poderão ser removidos das tendências após a sua exibição. + trends: As tendências mostram quais as publicações, hashtags e notícias estão a ganhar destaque no seu servidor. form_challenge: current_password: Está a entrar numa área restrita imports: diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index c0ecab1ae6..51a21ff06c 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -75,16 +75,24 @@ sl: warn: Skrij filtrirano vsebino za opozorilom, ki pomenja naslov filtra form_admin_settings: backups_retention_period: Hani tvorjene arhive uporabnikov navedeno število dni. + bootstrap_timeline_accounts: Ti računi bodo pripeti na vrh priporočenih sledenj za nove uporabnike. closed_registrations_message: Prikazano, ko so registracije zaprte content_cache_retention_period: Objave z drugih strežnikov bodo izbrisane po navedenem številu dni, če je vrednost pozitivna. Ta dejanja lahko nepovratna. custom_css: Spletni različici Mastodona lahko uveljavite sloge po meri. mascot: Preglasi ilustracijo v naprednem spletnem vmesniku. media_cache_retention_period: Prenesene predstavnostne datoteke bodo izbrisane po navedenem številu dni, če je vrednost pozitivna, in ponovno prenesene na zahtevo. profile_directory: Imenik profilov izpiše vse uporabnike, ki so dovolili, da so v njem navedeni. + require_invite_text: Če registracije zahtevajo ročno potrditev, nastavite vnos besedila pod »Zakaj se želite pridružiti?« za obveznega. + site_contact_email: Kako vas lahko uporabniki dosežejo glede pravnih ali podpornih vprašanj. site_contact_username: Kako vas lahko kontaktirajo na Mastodonu. + site_extended_description: Dodajte podatke, ki so lahko uporabni za obiskovalce in uporabnike. Vsebino lahko oblikujete s skladnjo Markdown. + site_short_description: Kratek opis v pomoč za identifikacijo vašega strežnika. Kdo ga vzdržuje, komu je namenjen? + site_terms: Uporabite svoj lasten pravilnik o zasebnosti ali pustite prazno za privzetega. Lahko ga strukturirate s skladnjo Markdown. site_title: Kako naj imenujejo vaš strežnik poleg njegovega domenskega imena. theme: Tema, ki jo vidijo odjavljeni obiskovalci in novi uporabniki. + thumbnail: Slika v razmerju stranic približno 2:1, prikazana vzdolž podatkov o vašem strežniku. timeline_preview: Odjavljeni obiskovalci bodo lahko brskali po najnovejših javnih objavah, ki so na voljo na strežniku. + trendable_by_default: Preskočite ročni pregled vsebine v trendu. Posamezne elemente še vedno lahko odstranite iz trenda post festum. trends: Trendi prikažejo, katere objave, ključniki in novice privlačijo zanimanje na vašem strežniku. form_challenge: current_password: Vstopate v varovano območje diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index a90c3bce9b..282c0ce700 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -164,6 +164,8 @@ sv: with_dns_records: Inkludera MX-poster och IP-adresser för domänen featured_tag: name: Hashtag + form_admin_settings: + site_terms: Integritetspolicy interactions: must_be_follower: Blockera aviseringar från icke-följare must_be_following: Blockera aviseringar från personer du inte följer diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 8134be462e..1d5c810cdf 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -153,7 +153,7 @@ th: display_name: ชื่อที่แสดง email: ที่อยู่อีเมล expires_in: หมดอายุหลังจาก - fields: ข้อมูลเมตาโปรไฟล์ + fields: ข้อมูลอภิพันธุ์โปรไฟล์ header: ส่วนหัว honeypot: "%{label} (ไม่ต้องกรอก)" inbox_url: URL กล่องขาเข้าแบบรีเลย์ diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 369db338a3..fa9620476a 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -75,8 +75,25 @@ tr: warn: Filtrelenmiş içeriği, filtrenin başlığından söz eden bir uyarının arkasında gizle form_admin_settings: backups_retention_period: Üretilen kullanıcı arşivlerini belirli gün sayısı kadar sakla. + bootstrap_timeline_accounts: Bu hesaplar, yeni kullanıcıların takip önerilerinin tepesinde sabitlenecektir. + closed_registrations_message: Kayıt olma kapalıyken görüntülenir content_cache_retention_period: Pozitif bir sayı girildiğinde, diğer sunuculardan gelen gönderiler belirli bir gün sonra silinecektir. Silme geri alınamayabilir. + custom_css: Mastodon'un web sürümüne özel biçimler uygulayabilirsiniz. + mascot: Gelişmiş web arayüzündeki illüstrasyonu geçersiz kılar. media_cache_retention_period: Pozitif bir sayı girildiğinde, diğer sunuculardan indirilen medya dosyaları belirli bir gün sonra silinecektir, isteğe bağlı olarak tekrar indirilebilir. + profile_directory: Profil dizini keşfedilebilir olmayı kabul eden tüm kullanıcıları listeler. + require_invite_text: Kayıt olmak elle doğrulama gerektiriyorsa, "Neden katılmak istiyorsunuz?" metin girdisini isteğe bağlı yerine zorunlu yapın + site_contact_email: İnsanlar yasal konular veya destek hakkında bilgi edinmek için size nasıl ulaşabilir. + site_contact_username: İnsanlar size Mastodon'da nasıl ulaşabilir. + site_extended_description: Ziyaretçileriniz ve kullanıcılarınıza yardımı dokunabilecek herhangi bir ek bilgi. Markdown sözdizimiyle biçimlendirilebilir. + site_short_description: Sunucunuzu tekil olarak tanımlamaya yardımcı olacak kısa tanım. Kim işletiyor, kimin için? + site_terms: Kendi gizlilik politikanızı kullanın veya varsayılanı kullanmak için boş bırakın. Markdown sözdizimiyle biçimlendirilebilir. + site_title: İnsanlar sunucunuzu alan adı dışında nasıl isimlendirmeli. + theme: Giriş yapmamış ziyaretçilerin ve yeni kullanıcıların gördüğü tema. + thumbnail: Sunucu bilginizin yanında gösterilen yaklaşık 2:1'lik görüntü. + timeline_preview: Giriş yapmamış ziyaretçiler, sunucuda mevcut olan en son genel gönderileri tarayabilecekler. + trendable_by_default: Öne çıkan içeriğin elle incelenmesini atla. Tekil öğeler sonrada öne çıkanlardan kaldırılabilir. + trends: Öne çıkanlar, sunucunuzda ilgi toplayan gönderileri, etiketleri ve haber yazılarını gösterir. form_challenge: current_password: Güvenli bir bölgeye giriyorsunuz imports: @@ -213,8 +230,28 @@ tr: warn: Uyarıyla gizle form_admin_settings: backups_retention_period: Kullanıcı arşivi saklama süresi + bootstrap_timeline_accounts: Bu hesapları yeni kullanıcılara her zaman öner + closed_registrations_message: Kayıt olma mevcut değilken gösterilen özel ileti content_cache_retention_period: İçerik önbelleği saklama süresi + custom_css: Özel CSS + mascot: Özel maskot (eski) media_cache_retention_period: Medya önbelleği saklama süresi + profile_directory: Profil dizinini etkinleştir + registrations_mode: Kim kaydolabilir + require_invite_text: Katılmak için bir gerekçe iste + show_domain_blocks: Engellenen alan adlarını göster + show_domain_blocks_rationale: Alan adlarının neden engellendiğini göster + site_contact_email: İletişim e-postası + site_contact_username: İletişim kullanıcı adı + site_extended_description: Geniş açıklama + site_short_description: Sunucu açıklaması + site_terms: Gizlilik Politikası + site_title: Sunucu adı + theme: Öntanımlı tema + thumbnail: Sunucu küçük resmi + timeline_preview: Genel zaman çizelgelerine yetkisiz erişime izin ver + trendable_by_default: Ön incelemesiz öne çıkanlara izin ver + trends: Öne çıkanları etkinleştir interactions: must_be_follower: Takipçim olmayan kişilerden gelen bildirimleri engelle must_be_following: Takip etmediğim kişilerden gelen bildirimleri engelle diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 399733c0ec..e7f83892d9 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -75,8 +75,25 @@ vi: warn: Ẩn nội dung đã lọc đằng sau một cảnh báo đề cập đến tiêu đề của bộ lọc form_admin_settings: backups_retention_period: Lưu trữ dữ liệu người dùng đã tạo trong số ngày được chỉ định. + bootstrap_timeline_accounts: Các tài khoản này sẽ được ghim vào đầu các gợi ý theo dõi của người dùng mới. + closed_registrations_message: Được hiển thị khi đóng đăng ký content_cache_retention_period: Tút từ các máy chủ khác sẽ bị xóa sau số ngày được chỉ định. Sau đó có thể không thể phục hồi được. + custom_css: Bạn có thể tùy chỉnh phong cách trên bản web của Mastodon. + mascot: Ghi đè hình minh họa trong giao diện web nâng cao. media_cache_retention_period: Media đã tải xuống sẽ bị xóa sau số ngày được chỉ định và sẽ tải xuống lại theo yêu cầu. + profile_directory: Liệt kê tất cả người dùng đã chọn tham gia để có thể khám phá. + require_invite_text: Khi đăng ký yêu cầu phê duyệt thủ công, hãy đặt câu hỏi "Tại sao bạn muốn tham gia?" nhập văn bản bắt buộc thay vì tùy chọn + site_contact_email: Cách mọi người có thể liên hệ với bạn khi có thắc mắc về pháp lý hoặc hỗ trợ. + site_contact_username: Cách mọi người có thể liên hệ với bạn trên Mastodon. + site_extended_description: Bất kỳ thông tin bổ sung nào cũng có thể hữu ích cho khách truy cập và người dùng của bạn. Có thể được soạn bằng cú pháp Markdown. + site_short_description: Mô tả ngắn gọn để giúp nhận định máy chủ của bạn. Ai đang điều hành nó, nó là cho ai? + site_terms: Sử dụng chính sách bảo mật của riêng bạn hoặc để trống để sử dụng mặc định. Có thể soạn bằng cú pháp Markdown. + site_title: Cách mọi người có thể tham chiếu đến máy chủ của bạn ngoài tên miền của nó. + theme: Chủ đề mà khách truy cập đăng xuất và người dùng mới nhìn thấy. + thumbnail: 'Một hình ảnh tỉ lệ 2: 1 được hiển thị cùng với thông tin máy chủ của bạn.' + timeline_preview: Khách truy cập đã đăng xuất sẽ có thể xem các tút công khai gần đây nhất trên máy chủ. + trendable_by_default: Bỏ qua việc duyệt thủ công nội dung thịnh hành. Các mục riêng lẻ vẫn có thể bị xóa khỏi xu hướng sau này. + trends: Xu hướng hiển thị tút, hashtag và tin tức nào đang thu hút thảo luận trên máy chủ của bạn. form_challenge: current_password: Biểu mẫu này an toàn imports: @@ -163,7 +180,7 @@ vi: inbox_url: Hộp thư relay irreversible: Xóa bỏ vĩnh viễn locale: Ngôn ngữ - locked: Đây là tài khoản riêng tư + locked: Yêu cầu theo dõi max_uses: Số lần dùng tối đa new_password: Mật khẩu mới note: Tiểu sử @@ -213,8 +230,28 @@ vi: warn: Ẩn kèm theo cảnh báo form_admin_settings: backups_retention_period: Thời hạn lưu trữ nội dung người dùng sao lưu + bootstrap_timeline_accounts: Luôn đề xuất những tài khoản này đến người dùng mới + closed_registrations_message: Thông báo tùy chỉnh khi tắt đăng ký content_cache_retention_period: Thời hạn lưu trữ cache nội dung + custom_css: Tùy chỉnh CSS + mascot: Tùy chỉnh linh vật (kế thừa) media_cache_retention_period: Thời hạn lưu trữ cache media + profile_directory: Cho phép hiện danh sách thành viên + registrations_mode: Ai có thể đăng ký + require_invite_text: Yêu cầu lí do đăng ký + show_domain_blocks: Xem máy chủ chặn + show_domain_blocks_rationale: Hiện lý do máy chủ bị chặn + site_contact_email: Email liên lạc + site_contact_username: Tên người dùng liên lạc + site_extended_description: Mô tả mở rộng + site_short_description: Mô tả máy chủ + site_terms: Chính sách bảo mật + site_title: Tên máy chủ + theme: Chủ đề mặc định + thumbnail: Hình thu nhỏ của máy chủ + timeline_preview: Cho phép truy cập vào dòng thời gian công khai + trendable_by_default: Cho phép xu hướng mà không cần xem xét trước + trends: Bật xu hướng interactions: must_be_follower: Chặn thông báo từ những người không theo dõi bạn must_be_following: Chặn thông báo từ những người bạn không theo dõi diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index e8bddf3321..ad36ddf6e1 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -73,6 +73,27 @@ zh-CN: actions: hide: 彻底屏蔽过滤内容,犹如它不曾存在过一般 warn: 在警告中提及过滤器标题后,隐藏过滤内容 + form_admin_settings: + backups_retention_period: 将在指定天数内保留生成的用户存档。 + bootstrap_timeline_accounts: 这些账号将在新用户关注推荐中置顶。 + closed_registrations_message: 在关闭注册时显示 + content_cache_retention_period: 设为正数值时,来自其他服务器的嘟文将在指定天数后被删除。删除有可能会是不可逆的。 + custom_css: 你可以为网页版 Mastodon 应用自定义样式。 + mascot: 覆盖高级网页界面中的绘图形象。 + media_cache_retention_period: 设为正数值时,来自其他服务器的媒体文件将在指定天数后被删除,并在需要时再次下载。 + profile_directory: 个人资料目录会列出所有选择可被发现的用户。 + require_invite_text: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项 + site_contact_email: 他人需要询恰法务或支持信息时的联络方式 + site_contact_username: 他人在 Mastodon 上联系你的方式 + site_extended_description: 任何可能对访客和用户有用的额外信息。可以使用 Markdown 语法。 + site_short_description: 有助于区分你的服务器独特性的简短描述。谁在管理?供谁使用? + site_terms: 使用你自己的隐私政策或留空以使用默认版。可以使用 Markdown 语法。 + site_title: 除了域名,人们还可以如何指代你的服务器。 + theme: 给未登录访客和新用户使用的主题。 + thumbnail: 与服务器信息一并展示的约 2:1 比例的图像。 + timeline_preview: 未登录访客将能够浏览服务器上最新的公共嘟文。 + trendable_by_default: 跳过对热门内容的手工审核。个别项目仍可在之后从趋势中删除。 + trends: 趋势中会显示正在你服务器上受到关注的嘟文、标签和新闻故事。 form_challenge: current_password: 你正在进入安全区域 imports: @@ -207,6 +228,30 @@ zh-CN: actions: hide: 完全隐藏 warn: 隐藏时显示警告信息 + form_admin_settings: + backups_retention_period: 用户存档保留期 + bootstrap_timeline_accounts: 推荐新用户关注以下账号 + closed_registrations_message: 在关闭注册时显示的自定义消息 + content_cache_retention_period: 内容缓存保留期 + custom_css: 自定义 CSS + mascot: 自定义吉祥物(旧) + media_cache_retention_period: 媒体缓存保留期 + profile_directory: 启用用户目录 + registrations_mode: 谁可以注册 + require_invite_text: 注册前需要提供理由 + show_domain_blocks: 显示域名屏蔽列表 + show_domain_blocks_rationale: 显示域名屏蔽原因 + site_contact_email: 联系邮箱 + site_contact_username: 用于联系的公开用户名 + site_extended_description: 完整说明 + site_short_description: 本站简介 + site_terms: 隐私政策 + site_title: 本站名称 + theme: 默认主题 + thumbnail: 本站缩略图 + timeline_preview: 时间轴预览 + trendable_by_default: 允许在未审核的情况下将话题置为热门 + trends: 启用趋势 interactions: must_be_follower: 屏蔽来自未关注我的用户的通知 must_be_following: 屏蔽来自我未关注的用户的通知 diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 12a263d924..d009a7dda9 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -704,6 +704,7 @@ sl: preamble: Prilagodite spletni vmesnik Mastodona. title: Videz branding: + preamble: Blagovna znamka vašega strežnika ga loči od drugih strežnikov v omrežju. Podatki se lahko prikžejo prek številnih okolij, kot so spletni vmesnik Mastodona, domorodni programi, predogledi povezav na drugih spletiščih, aplikacije za sporočanje itn. Zatorej je najbolje, da te podatke ohranite jasne, kratke in pomenljive. title: Blagovne znamke content_retention: preamble: Nazdor nad hrambo vsebine uporabnikov v Mastodonu. @@ -732,16 +733,28 @@ sl: delete: Izbriši naloženo datoteko destroyed_msg: Prenos na strežnik uspešno izbrisan! statuses: + account: Avtor + application: Program back_to_account: Nazaj na stran računa back_to_report: Nazaj na stran prijave batch: remove_from_report: Odstrani iz prijave report: Poročaj deleted: Izbrisano + favourites: Priljubljeni + history: Zgodovina različic + in_reply_to: Odgovarja + language: Jezik media: title: Mediji + metadata: Metapodatki no_status_selected: Nobena objava ni bila spremenjena, ker ni bila nobena izbrana + open: Odpri objavo + original_status: Izvorna objava + status_changed: Objava spremenjena title: Objave računa + trending: V trendu + visibility: Vidnost with_media: Z mediji strikes: actions: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 485fab59ce..df7d27efdc 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -5,6 +5,7 @@ sv: contact_missing: Inte inställd contact_unavailable: Ej tillämplig hosted_on: Mastodon-värd på %{domain} + title: Om accounts: follow: Följa followers: @@ -449,6 +450,8 @@ sv: edit: Ändra regel title: Serverns regler settings: + about: + title: Om domain_blocks: all: Till alla disabled: För ingen diff --git a/config/locales/th.yml b/config/locales/th.yml index c4a83a048a..f809ba73f4 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -673,16 +673,28 @@ th: delete: ลบไฟล์ที่อัปโหลด destroyed_msg: ลบการอัปโหลดไซต์สำเร็จ! statuses: + account: ผู้สร้าง + application: แอปพลิเคชัน back_to_account: กลับไปที่หน้าบัญชี back_to_report: กลับไปที่หน้ารายงาน batch: remove_from_report: เอาออกจากรายงาน report: รายงาน deleted: ลบแล้ว + favourites: รายการโปรด + history: ประวัติรุ่น + in_reply_to: กำลังตอบกลับ + language: ภาษา media: title: สื่อ + metadata: ข้อมูลอภิพันธุ์ no_status_selected: ไม่มีการเปลี่ยนแปลงโพสต์เนื่องจากไม่มีการเลือก + open: เปิดโพสต์ + original_status: โพสต์ดั้งเดิม + reblogs: การดัน title: โพสต์ของบัญชี + trending: กำลังนิยม + visibility: การมองเห็น with_media: มีสื่อ strikes: actions: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 5035c6ae6f..73e07694c9 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -667,29 +667,67 @@ tr: empty: Henüz bir sunucu kuralı tanımlanmadı. title: Sunucu kuralları settings: + about: + manage_rules: Sunucu kurallarını yönet + preamble: Sunucunun nasıl işletildiği, yönetildiği ve fonlandığı hakkında ayrıntılı bilgi verin. + rules_hint: Kullanıcılarınızın uyması beklenen kurallar için özel bir alan var. + title: Hakkında + appearance: + preamble: Mastodon'un web arayüzünü düzenleyin. + title: Görünüm + branding: + preamble: Sunucunuzun markalaşması ağdaki diğer sunuculardan farklıdır. Bu bilgiler Mastodon'un web arayüzü, doğal uygulamalar, diğer sitelerdeki ve ileti uygulamalarındaki bağlantı önizlemeleri, vb. gibi çeşitli ortamlarda görüntülenebilir. Bu nedenle bu bilgiyi açık, kısa ve özlü tutmak en iyisidir. + title: Marka + content_retention: + preamble: Kullanıcıların ürettiği içeriğin Mastodon'da nasıl saklanacağını denetleyin. + title: İçerik saklama + discovery: + follow_recommendations: Takip önerileri + preamble: İlginç içeriği gezinmek, Mastodon'da kimseyi tanımayan yeni kullanıcıları alıştırmak için oldukça etkilidir. Sunucunuzdaki çeşitli keşif özelliklerinin nasıl çalıştığını denetleyin. + profile_directory: Profil dizini + public_timelines: Genel zaman çizelgeleri + title: Keşfet + trends: Öne çıkanlar domain_blocks: all: Herkes için disabled: Hiç kimseye users: Oturum açan yerel kullanıcılara + registrations: + preamble: Sunucunuzda kimin hesap oluşturabileceğini denetleyin. + title: Kayıtlar registrations_mode: modes: approved: Kayıt için onay gerekli none: Hiç kimse kayıt olamaz open: Herkes kaydolabilir + title: Sunucu Ayarları site_uploads: delete: Yüklenen dosyayı sil destroyed_msg: Site yüklemesi başarıyla silindi! statuses: + account: Yazar + application: Uygulama back_to_account: Hesap sayfasına geri dön back_to_report: Bildirim sayfasına geri dön batch: remove_from_report: Bildirimden kaldır report: Bildirim deleted: Silindi + favourites: Favoriler + history: Sürüm geçmişi + in_reply_to: Yanıtlanan + language: Dil media: title: Medya + metadata: Üstveri no_status_selected: Hiçbiri seçilmediğinden hiçbir durum değiştirilmedi + open: Gönderiyi aç + original_status: Özgün gönderi + reblogs: Yeniden Paylaşımlar + status_changed: Gönderi değişti title: Hesap durumları + trending: Öne çıkanlar + visibility: Görünürlük with_media: Medya ile strikes: actions: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 0b7679eb10..5c695507d2 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -733,16 +733,29 @@ uk: delete: Видалити завантажений файл destroyed_msg: Завантаження сайту успішно видалено! statuses: + account: Автор + application: Застосунок back_to_account: Назад до сторінки облікового запису back_to_report: Повернутися до сторінки скарги batch: remove_from_report: Вилучити зі скарги report: Скарга deleted: Видалено + favourites: Вподобане + history: Історія версій + in_reply_to: У відповідь + language: Мова media: title: Медіа + metadata: Метадані no_status_selected: Жодного статуса не було змінено, оскільки жодного не було вибрано + open: Відкрити допис + original_status: Оригінальний допис + reblogs: Репост + status_changed: Допис змінено title: Статуси облікових записів + trending: Популярне + visibility: Видимість with_media: З медіа strikes: actions: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 50e5e5f354..73228159df 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -653,29 +653,67 @@ vi: empty: Chưa có quy tắc máy chủ. title: Quy tắc máy chủ settings: + about: + manage_rules: Sửa quy tắc máy chủ + preamble: Cung cấp thông tin chuyên sâu về cách máy chủ được vận hành, kiểm duyệt, tài trợ. + rules_hint: Có một khu vực dành riêng cho các quy tắc mà người dùng của bạn phải tuân thủ. + title: Giới thiệu + appearance: + preamble: Tùy chỉnh giao diện web của Mastodon. + title: Giao diện + branding: + preamble: Thương hiệu máy chủ của bạn phân biệt nó với các máy chủ khác trong mạng. Thông tin này có thể được hiển thị trên nhiều môi trường khác nhau, chẳng hạn như giao diện web của Mastodon, các ứng dụng gốc, trong bản xem trước liên kết trên các trang web khác và trong các ứng dụng nhắn tin, v.v. Vì lý do này, cách tốt nhất là giữ cho thông tin này rõ ràng, ngắn gọn và súc tích. + title: Thương hiệu + content_retention: + preamble: Kiểm soát cách lưu trữ nội dung do người dùng tạo trong Mastodon. + title: Lưu giữ nội dung + discovery: + follow_recommendations: Gợi ý theo dõi + preamble: Hiển thị nội dung thú vị là công cụ để thu hút người dùng mới, những người có thể không quen bất kỳ ai trong Mastodon. Kiểm soát cách các tính năng khám phá hoạt động trên máy chủ của bạn. + profile_directory: Cộng đồng + public_timelines: Bảng tin + title: Khám phá + trends: Xu hướng domain_blocks: all: Tới mọi người disabled: Không ai users: Để đăng nhập người dùng cục bộ + registrations: + preamble: Kiểm soát những ai có thể tạo tài khoản trên máy chủ của bạn. + title: Đăng ký registrations_mode: modes: approved: Yêu cầu phê duyệt để đăng ký none: Không ai có thể đăng ký open: Bất cứ ai cũng có thể đăng ký + title: Cài đặt máy chủ site_uploads: delete: Xóa tập tin đã tải lên destroyed_msg: Đã xóa tập tin tải lên thành công! statuses: + account: Tác giả + application: Ứng dụng back_to_account: Quay lại trang tài khoản back_to_report: Quay lại trang báo cáo batch: remove_from_report: Xóa khỏi báo cáo report: Báo cáo deleted: Đã xóa + favourites: Lượt thích + history: Lịch sử phiên bản + in_reply_to: Trả lời đến + language: Ngôn ngữ media: title: Media + metadata: Metadata no_status_selected: Bạn chưa chọn bất kỳ tút nào + open: Mở tút + original_status: Tút gốc + reblogs: Lượt đăng lại + status_changed: Tút đã thay đổi title: Toàn bộ tút + trending: Xu hướng + visibility: Hiển thị with_media: Có media strikes: actions: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 14c69415e2..92ae4cbe74 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -5,6 +5,7 @@ zh-CN: contact_missing: 未设定 contact_unavailable: 未公开 hosted_on: 运行在 %{domain} 上的 Mastodon 站点 + title: 关于本站 accounts: follow: 关注 followers: @@ -320,6 +321,7 @@ zh-CN: listed: 已显示 new: title: 添加新的自定义表情 + no_emoji_selected: 因为没有选中任何表情,所以没有更改 not_permitted: 你没有权限进行此操作 overwrite: 覆盖 shortcode: 短代码 @@ -651,29 +653,67 @@ zh-CN: empty: 尚未定义服务器规则。 title: 实例规则 settings: + about: + manage_rules: 管理服务器规则 + preamble: 提供此服务器如何运营、资金状况等的深入信息。 + rules_hint: 有一个专门区域用于显示用户需要遵守的规则。 + title: 关于本站 + appearance: + preamble: 自定义 Mastodon 的网页界面。 + title: 外观 + branding: + preamble: 你的服务器与网络中其他服务器的招牌区别。此信息将可能在多种环境下显示,包括 Mastodon 网页界面、原生应用和其他网站的链接预览等。因此应尽量简明扼要。 + title: 招牌 + content_retention: + preamble: 控制用户生成的内容在 Mastodon 中如何存储。 + title: 内容保留 + discovery: + follow_recommendations: 关注推荐 + preamble: 露出有趣的内容有助于新加入 Mastodon 的用户融入。可在这里控制多种发现功能如何在你的服务器上工作。 + profile_directory: 个人资料目录 + public_timelines: 公共时间轴 + title: 发现 + trends: 流行趋势 domain_blocks: all: 对所有人 disabled: 不对任何人 users: 对本地已登录用户 + registrations: + preamble: 控制谁可以在你的服务器上创建账号。 + title: 注册 registrations_mode: modes: approved: 注册时需要批准 none: 关闭注册 open: 开放注册 + title: 服务器设置 site_uploads: delete: 删除已上传的文件 destroyed_msg: 站点上传的文件已经成功删除! statuses: + account: 作者 + application: 应用 back_to_account: 返回帐户信息页 back_to_report: 返回举报页 batch: remove_from_report: 从报告中移除 report: 举报 deleted: 已删除 + favourites: 收藏 + history: 版本历史记录 + in_reply_to: 回复给 + language: 语言 media: title: 媒体文件 + metadata: 元数据 no_status_selected: 因为没有嘟文被选中,所以没有更改 + open: 展开嘟文 + original_status: 原始嘟文 + reblogs: 转发 + status_changed: 嘟文已编辑 title: 帐户嘟文 + trending: 当前热门 + visibility: 可见性 with_media: 含有媒体文件 strikes: actions: @@ -713,6 +753,9 @@ zh-CN: description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝个别链接。 disallow: 不允许链接 disallow_provider: 不允许发布者 + no_link_selected: 因为没有选中任何链接,所以没有更改 + publishers: + no_publisher_selected: 因为没有选中任何发布者,所以没有更改 shared_by_over_week: other: 过去一周内被 %{count} 个人分享过 title: 热门链接 @@ -731,6 +774,7 @@ zh-CN: description_html: 这些是当前此服务器可见的被大量分享和喜欢的嘟文。这些嘟文可以帮助新老用户找到更多可关注的账号。批准发布者且发布者允许将其账号推荐给其他用户前,不会公开显示任何嘟文。你也可以批准或拒绝个别嘟文。 disallow: 禁止嘟文 disallow_account: 禁止发布者 + no_status_selected: 因为没有选中任何热门嘟文,所以没有更改 not_discoverable: 发布者选择不被发现 shared_by: other: 被分享和喜欢%{friendly_count}次 @@ -745,6 +789,7 @@ zh-CN: tag_uses_measure: 总使用 description_html: 这些是当前此服务器可见嘟文中大量出现的标签。它可以帮助用户发现其他人正关注的话题。在获得批准前不会公开显示任何标签。 listable: 可被推荐 + no_tag_selected: 因为没有选中任何标签,所以没有更改 not_listable: 不会被推荐 not_trendable: 不会出现在热门列表中 not_usable: 不可使用 @@ -1255,6 +1300,8 @@ zh-CN: other: 其他 posting_defaults: 发布默认值 public_timelines: 公共时间轴 + privacy_policy: + title: 隐私政策 reactions: errors: limit_reached: 互动种类的限制 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 88fea4b769..7ce2f777c6 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -693,16 +693,29 @@ zh-TW: delete: 刪除上傳的檔案 destroyed_msg: 成功刪除站台的上傳項目! statuses: + account: 作者 + application: 應用程式 back_to_account: 返回帳號訊息頁 back_to_report: 回到檢舉報告頁面 batch: remove_from_report: 從檢舉報告中移除 report: 檢舉報告 deleted: 已刪除 + favourites: 最愛 + history: 版本紀錄 + in_reply_to: 正在回覆 + language: 語言 media: title: 媒體檔案 + metadata: 詮釋資料 no_status_selected: 因未選擇嘟文而未變更。 + open: 公開嘟文 + original_status: 原始嘟文 + reblogs: 轉嘟 + status_changed: 嘟文已編輯 title: 帳號嘟文 + trending: 熱門 + visibility: 可見性 with_media: 含有媒體檔案 strikes: actions: From 55af04b253435ae771b69c8b7cfe3fc7e3b18033 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 13:32:49 +0200 Subject: [PATCH 201/500] Fix logged out search and changed logged-in search placeholder (#19514) --- app/javascript/mastodon/actions/search.js | 5 +++-- .../mastodon/features/compose/components/search.js | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/actions/search.js b/app/javascript/mastodon/actions/search.js index 37560a74cb..e333c0ea7c 100644 --- a/app/javascript/mastodon/actions/search.js +++ b/app/javascript/mastodon/actions/search.js @@ -29,7 +29,8 @@ export function clearSearch() { export function submitSearch() { return (dispatch, getState) => { - const value = getState().getIn(['search', 'value']); + const value = getState().getIn(['search', 'value']); + const signedIn = !!getState().getIn(['meta', 'me']); if (value.length === 0) { dispatch(fetchSearchSuccess({ accounts: [], statuses: [], hashtags: [] }, '')); @@ -41,7 +42,7 @@ export function submitSearch() { api(getState).get('/api/v2/search', { params: { q: value, - resolve: true, + resolve: signedIn, limit: 5, }, }).then(response => { diff --git a/app/javascript/mastodon/features/compose/components/search.js b/app/javascript/mastodon/features/compose/components/search.js index 3e36a922be..ebb23d92ff 100644 --- a/app/javascript/mastodon/features/compose/components/search.js +++ b/app/javascript/mastodon/features/compose/components/search.js @@ -9,6 +9,7 @@ import Icon from 'mastodon/components/icon'; const messages = defineMessages({ placeholder: { id: 'search.placeholder', defaultMessage: 'Search' }, + placeholderSignedIn: { id: 'search.search_or_paste', defaultMessage: 'Search or paste URL' }, }); class SearchPopout extends React.PureComponent { @@ -49,6 +50,7 @@ class Search extends React.PureComponent { static contextTypes = { router: PropTypes.object.isRequired, + identity: PropTypes.object.isRequired, }; static propTypes = { @@ -116,6 +118,7 @@ class Search extends React.PureComponent { render () { const { intl, value, submitted } = this.props; const { expanded } = this.state; + const { signedIn } = this.context.identity; const hasValue = value.length > 0 || submitted; return ( @@ -126,7 +129,7 @@ class Search extends React.PureComponent { ref={this.setRef} className='search__input' type='text' - placeholder={intl.formatMessage(messages.placeholder)} + placeholder={intl.formatMessage(signedIn ? messages.placeholderSignedIn : messages.placeholder)} value={value} onChange={this.handleChange} onKeyUp={this.handleKeyUp} From 7926cb1bc7f502c10dc3a6ef3ca97ffc5a0b3a6a Mon Sep 17 00:00:00 2001 From: Matthias Bethke Date: Sat, 29 Oct 2022 17:04:56 +0530 Subject: [PATCH 202/500] fix name of Lao language (#19520) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It said ພາສາ or pha-sa, which means just "language" in Lao. "ພາສາລາວ", pha-sa lao, is the full name but the short "ລາວ" is commonly used. --- app/helpers/languages_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index 4077e19bdf..e5bae2c6b0 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -97,7 +97,7 @@ module LanguagesHelper lg: ['Ganda', 'Luganda'].freeze, li: ['Limburgish', 'Limburgs'].freeze, ln: ['Lingala', 'Lingála'].freeze, - lo: ['Lao', 'ພາສາ'].freeze, + lo: ['Lao', 'ລາວ'].freeze, lt: ['Lithuanian', 'lietuvių kalba'].freeze, lu: ['Luba-Katanga', 'Tshiluba'].freeze, lv: ['Latvian', 'latviešu valoda'].freeze, From f910f0dc92c1fb71d5c48cc18f2e6147162115c3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 14:04:24 +0200 Subject: [PATCH 203/500] Fix wrong host being used for custom.css when asset host configured (#19521) --- app/views/layouts/application.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 52cdce7c6c..fb5ba5cb0f 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -35,7 +35,7 @@ %meta{ name: 'style-nonce', content: request.content_security_policy_nonce } = stylesheet_link_tag '/inert.css', skip_pipeline: true, media: 'all', id: 'inert-style' - = stylesheet_link_tag custom_css_path, host: default_url_options[:host], media: 'all' + = stylesheet_link_tag custom_css_path, skip_pipeline: true, host: root_url, media: 'all' = yield :header_tags From a449ee8654166609866d0b804dc11ae14205d235 Mon Sep 17 00:00:00 2001 From: Yurii Izorkin Date: Sat, 29 Oct 2022 16:06:23 +0300 Subject: [PATCH 204/500] nginx: optimize locations (#19438) * nginx: optimize locations * nginx: don't use regex in locations * nginx: optimize Cache-Control headaers * nginx: use 404 error_page for missing static files * nginx: sort locations * nginx: add missing HSTS header --- dist/nginx.conf | 84 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 65 insertions(+), 19 deletions(-) diff --git a/dist/nginx.conf b/dist/nginx.conf index f28d7c6a82..716c277dd0 100644 --- a/dist/nginx.conf +++ b/dist/nginx.conf @@ -56,58 +56,104 @@ server { try_files $uri @proxy; } - location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) { - add_header Cache-Control "public, max-age=31536000, immutable"; + # If Docker is used for deployment and Rails serves static files, + # then needed must replace line `try_files $uri =404;` with `try_files $uri @proxy;`. + location = sw.js { + add_header Cache-Control "public, max-age=604800, must-revalidate"; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; - try_files $uri @proxy; + try_files $uri =404; } - location /sw.js { - add_header Cache-Control "public, max-age=0"; + location ~ ^/assets/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; - try_files $uri @proxy; + try_files $uri =404; } - location @proxy { + location ~ ^/avatars/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/emoji/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/headers/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/packs/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/shortcuts/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/sounds/ { + add_header Cache-Control "public, max-age=2419200, must-revalidate"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ~ ^/system/ { + add_header Cache-Control "public, max-age=2419200, immutable"; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; + try_files $uri =404; + } + + location ^~ /api/v1/streaming/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Proxy ""; - proxy_pass_header Server; - proxy_pass http://backend; - proxy_buffering on; + proxy_pass http://streaming; + proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; - proxy_cache CACHE; - proxy_cache_valid 200 7d; - proxy_cache_valid 410 24h; - proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; - add_header X-Cached $upstream_cache_status; + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; tcp_nodelay on; } - location /api/v1/streaming { + location @proxy { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Proxy ""; + proxy_pass_header Server; - proxy_pass http://streaming; - proxy_buffering off; + proxy_pass http://backend; + proxy_buffering on; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; + proxy_cache CACHE; + proxy_cache_valid 200 7d; + proxy_cache_valid 410 24h; + proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; + add_header X-Cached $upstream_cache_status; + tcp_nodelay on; } - error_page 500 501 502 503 504 /500.html; + error_page 404 500 501 502 503 504 /500.html; } From 30ef11022487364256656efee3cee92db2c839b2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 20:05:53 +0200 Subject: [PATCH 205/500] Fix upload progress not communicating processing phase in web UI (#19530) --- app/javascript/mastodon/actions/compose.js | 21 +++++++++++++------ .../compose/components/upload_form.js | 3 +-- .../compose/components/upload_progress.js | 16 ++++++++++---- .../containers/upload_progress_container.js | 1 + app/javascript/mastodon/reducers/compose.js | 6 +++++- 5 files changed, 34 insertions(+), 13 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 42d4ad8dff..e29b88a50f 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -25,11 +25,13 @@ export const COMPOSE_REPLY_CANCEL = 'COMPOSE_REPLY_CANCEL'; export const COMPOSE_DIRECT = 'COMPOSE_DIRECT'; export const COMPOSE_MENTION = 'COMPOSE_MENTION'; export const COMPOSE_RESET = 'COMPOSE_RESET'; -export const COMPOSE_UPLOAD_REQUEST = 'COMPOSE_UPLOAD_REQUEST'; -export const COMPOSE_UPLOAD_SUCCESS = 'COMPOSE_UPLOAD_SUCCESS'; -export const COMPOSE_UPLOAD_FAIL = 'COMPOSE_UPLOAD_FAIL'; -export const COMPOSE_UPLOAD_PROGRESS = 'COMPOSE_UPLOAD_PROGRESS'; -export const COMPOSE_UPLOAD_UNDO = 'COMPOSE_UPLOAD_UNDO'; + +export const COMPOSE_UPLOAD_REQUEST = 'COMPOSE_UPLOAD_REQUEST'; +export const COMPOSE_UPLOAD_SUCCESS = 'COMPOSE_UPLOAD_SUCCESS'; +export const COMPOSE_UPLOAD_FAIL = 'COMPOSE_UPLOAD_FAIL'; +export const COMPOSE_UPLOAD_PROGRESS = 'COMPOSE_UPLOAD_PROGRESS'; +export const COMPOSE_UPLOAD_PROCESSING = 'COMPOSE_UPLOAD_PROCESSING'; +export const COMPOSE_UPLOAD_UNDO = 'COMPOSE_UPLOAD_UNDO'; export const THUMBNAIL_UPLOAD_REQUEST = 'THUMBNAIL_UPLOAD_REQUEST'; export const THUMBNAIL_UPLOAD_SUCCESS = 'THUMBNAIL_UPLOAD_SUCCESS'; @@ -268,13 +270,16 @@ export function uploadCompose(files) { if (status === 200) { dispatch(uploadComposeSuccess(data, f)); } else if (status === 202) { + dispatch(uploadComposeProcessing()); + let tryCount = 1; + const poll = () => { api(getState).get(`/api/v1/media/${data.id}`).then(response => { if (response.status === 200) { dispatch(uploadComposeSuccess(response.data, f)); } else if (response.status === 206) { - let retryAfter = (Math.log2(tryCount) || 1) * 1000; + const retryAfter = (Math.log2(tryCount) || 1) * 1000; tryCount += 1; setTimeout(() => poll(), retryAfter); } @@ -289,6 +294,10 @@ export function uploadCompose(files) { }; }; +export const uploadComposeProcessing = () => ({ + type: COMPOSE_UPLOAD_PROCESSING, +}); + export const uploadThumbnail = (id, file) => (dispatch, getState) => { dispatch(uploadThumbnailRequest()); diff --git a/app/javascript/mastodon/features/compose/components/upload_form.js b/app/javascript/mastodon/features/compose/components/upload_form.js index c6eac554e6..9ff2aa0fa6 100644 --- a/app/javascript/mastodon/features/compose/components/upload_form.js +++ b/app/javascript/mastodon/features/compose/components/upload_form.js @@ -4,7 +4,6 @@ import UploadProgressContainer from '../containers/upload_progress_container'; import ImmutablePureComponent from 'react-immutable-pure-component'; import UploadContainer from '../containers/upload_container'; import SensitiveButtonContainer from '../containers/sensitive_button_container'; -import { FormattedMessage } from 'react-intl'; export default class UploadForm extends ImmutablePureComponent { @@ -17,7 +16,7 @@ export default class UploadForm extends ImmutablePureComponent { return (

    - } /> +
    {mediaIds.map(id => ( diff --git a/app/javascript/mastodon/features/compose/components/upload_progress.js b/app/javascript/mastodon/features/compose/components/upload_progress.js index b0bfe0c9a1..cabf520fd9 100644 --- a/app/javascript/mastodon/features/compose/components/upload_progress.js +++ b/app/javascript/mastodon/features/compose/components/upload_progress.js @@ -3,27 +3,35 @@ import PropTypes from 'prop-types'; import Motion from '../../ui/util/optional_motion'; import spring from 'react-motion/lib/spring'; import Icon from 'mastodon/components/icon'; +import { FormattedMessage } from 'react-intl'; export default class UploadProgress extends React.PureComponent { static propTypes = { active: PropTypes.bool, progress: PropTypes.number, - icon: PropTypes.string.isRequired, - message: PropTypes.node.isRequired, + isProcessing: PropTypes.bool, }; render () { - const { active, progress, icon, message } = this.props; + const { active, progress, isProcessing } = this.props; if (!active) { return null; } + let message; + + if (isProcessing) { + message = ; + } else { + message = ; + } + return (
    - +
    diff --git a/app/javascript/mastodon/features/compose/containers/upload_progress_container.js b/app/javascript/mastodon/features/compose/containers/upload_progress_container.js index 0cfee96daa..b18c76a43f 100644 --- a/app/javascript/mastodon/features/compose/containers/upload_progress_container.js +++ b/app/javascript/mastodon/features/compose/containers/upload_progress_container.js @@ -4,6 +4,7 @@ import UploadProgress from '../components/upload_progress'; const mapStateToProps = state => ({ active: state.getIn(['compose', 'is_uploading']), progress: state.getIn(['compose', 'progress']), + isProcessing: state.getIn(['compose', 'is_processing']), }); export default connect(mapStateToProps)(UploadProgress); diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index 7aac87b5c4..e4601e4715 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -14,6 +14,7 @@ import { COMPOSE_UPLOAD_FAIL, COMPOSE_UPLOAD_UNDO, COMPOSE_UPLOAD_PROGRESS, + COMPOSE_UPLOAD_PROCESSING, THUMBNAIL_UPLOAD_REQUEST, THUMBNAIL_UPLOAD_SUCCESS, THUMBNAIL_UPLOAD_FAIL, @@ -136,6 +137,7 @@ function appendMedia(state, media, file) { } map.update('media_attachments', list => list.push(media)); map.set('is_uploading', false); + map.set('is_processing', false); map.set('resetFileKey', Math.floor((Math.random() * 0x10000))); map.set('idempotencyKey', uuid()); map.update('pending_media_attachments', n => n - 1); @@ -354,10 +356,12 @@ export default function compose(state = initialState, action) { return state.set('is_changing_upload', false); case COMPOSE_UPLOAD_REQUEST: return state.set('is_uploading', true).update('pending_media_attachments', n => n + 1); + case COMPOSE_UPLOAD_PROCESSING: + return state.set('is_processing', true); case COMPOSE_UPLOAD_SUCCESS: return appendMedia(state, fromJS(action.media), action.file); case COMPOSE_UPLOAD_FAIL: - return state.set('is_uploading', false).update('pending_media_attachments', n => n - 1); + return state.set('is_uploading', false).set('is_processing', false).update('pending_media_attachments', n => n - 1); case COMPOSE_UPLOAD_UNDO: return removeMedia(state, action.media_id); case COMPOSE_UPLOAD_PROGRESS: From 6094a916b185ae0634e016004deb4cec11afbaca Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Sun, 30 Oct 2022 00:30:16 +0100 Subject: [PATCH 206/500] Fix helm chart use of Postgres Password (#19537) Fixes #19536 --- chart/templates/cronjob-media-remove.yaml | 2 +- chart/templates/deployment-sidekiq.yaml | 2 +- chart/templates/deployment-streaming.yaml | 2 +- chart/templates/deployment-web.yaml | 2 +- chart/templates/job-assets-precompile.yaml | 2 +- chart/templates/job-chewy-upgrade.yaml | 2 +- chart/templates/job-create-admin.yaml | 2 +- chart/templates/job-db-migrate.yaml | 2 +- chart/templates/secrets.yaml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 4ca45804a2..1dced69ec7 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -59,7 +59,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index 44d3b82035..56ba257b59 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -76,7 +76,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index 6b7c3cdd9a..564f53f433 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -44,7 +44,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index c5d177e513..0878aa9b87 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -62,7 +62,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index c20b4a370c..37009822e6 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index cf7b59b58a..a4bac63abc 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -61,7 +61,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index bb9094cdab..c1c0bdaed5 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -66,7 +66,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 0b386c0870..848ed36441 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgresql-password + key: postgres-password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/secrets.yaml b/chart/templates/secrets.yaml index 135d5b61a4..2a91c34934 100644 --- a/chart/templates/secrets.yaml +++ b/chart/templates/secrets.yaml @@ -37,7 +37,7 @@ data: {{- end }} {{- if not .Values.postgresql.enabled }} {{- if not .Values.postgresql.auth.existingSecret }} - postgresql-password: "{{ .Values.postgresql.auth.password | b64enc }}" + postgres-password: "{{ .Values.postgresql.auth.password | b64enc }}" {{- end }} {{- end }} {{- end -}} From ad83e64795361dc9d5990a9dae4f91a3642109a0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:43:15 +0200 Subject: [PATCH 207/500] Fix sidebar and tabs on settings on small screens in admin UI (#19533) --- app/javascript/packs/public.js | 25 ++++++- app/javascript/styles/mastodon/admin.scss | 89 +++++++++++++---------- app/views/layouts/admin.html.haml | 3 +- config/locales/en.yml | 2 + 4 files changed, 77 insertions(+), 42 deletions(-) diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index 5ff45fa552..786fc8ede2 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -247,8 +247,31 @@ function main() { input.readonly = oldReadOnly; }); + const toggleSidebar = () => { + const sidebar = document.querySelector('.sidebar ul'); + const toggleButton = document.querySelector('.sidebar__toggle__icon'); + + if (sidebar.classList.contains('visible')) { + document.body.style.overflow = null; + toggleButton.setAttribute('aria-expanded', false); + } else { + document.body.style.overflow = 'hidden'; + toggleButton.setAttribute('aria-expanded', true); + } + + toggleButton.classList.toggle('active'); + sidebar.classList.toggle('visible'); + }; + delegate(document, '.sidebar__toggle__icon', 'click', () => { - document.querySelector('.sidebar ul').classList.toggle('visible'); + toggleSidebar(); + }); + + delegate(document, '.sidebar__toggle__icon', 'keydown', e => { + if (e.key === ' ' || e.key === 'Enter') { + e.preventDefault(); + toggleSidebar(); + } }); // Empty the honeypot fields in JS in case something like an extension diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index f867783992..7a50a89bb6 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -31,23 +31,17 @@ $content-width: 840px; &__toggle { display: none; - background: lighten($ui-base-color, 8%); - height: 48px; + background: darken($ui-base-color, 4%); + border-bottom: 1px solid lighten($ui-base-color, 4%); + align-items: center; &__logo { flex: 1 1 auto; a { - display: inline-block; + display: block; padding: 15px; } - - svg { - fill: $primary-text-color; - height: 20px; - position: relative; - bottom: -2px; - } } &__icon { @@ -55,15 +49,27 @@ $content-width: 840px; color: $darker-text-color; text-decoration: none; flex: 0 0 auto; - font-size: 20px; - padding: 15px; - } + font-size: 18px; + padding: 10px; + margin: 5px 10px; + border-radius: 4px; - a { - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 12%); + &:focus { + background: $ui-base-color; + } + + .fa-times { + display: none; + } + + &.active { + .fa-times { + display: block; + } + + .fa-bars { + display: none; + } } } } @@ -79,7 +85,7 @@ $content-width: 840px; display: inherit; margin: inherit; width: inherit; - height: 20px; + height: 25px; } @media screen and (max-width: $no-columns-breakpoint) { @@ -189,9 +195,7 @@ $content-width: 840px; } &__heading { - padding-bottom: 36px; - border-bottom: 1px solid lighten($ui-base-color, 8%); - margin-bottom: 40px; + margin-bottom: 45px; &__row { display: flex; @@ -208,46 +212,43 @@ $content-width: 840px; &__tabs { margin-top: 30px; - margin-bottom: -31px; + width: 100%; & > div { display: flex; - gap: 10px; + flex-wrap: wrap; + gap: 5px; } a { font-size: 14px; display: inline-flex; align-items: center; - padding: 7px 15px; + padding: 7px 10px; border-radius: 4px; color: $darker-text-color; text-decoration: none; - position: relative; font-weight: 500; gap: 5px; white-space: nowrap; + &:hover, + &:focus, + &:active { + background: lighten($ui-base-color, 4%); + } + &.selected { font-weight: 700; color: $primary-text-color; + background: $ui-highlight-color; - &::after { - content: ""; - display: block; - width: 100%; - border-bottom: 1px solid $ui-highlight-color; - position: absolute; - bottom: -5px; - left: 0; + &:hover, + &:focus, + &:active { + background: lighten($ui-highlight-color, 4%); } } - - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 4%); - } } } @@ -382,6 +383,14 @@ $content-width: 840px; &.visible { display: block; + position: fixed; + z-index: 10; + width: 100%; + height: calc(100vh - 56px); + left: 0; + bottom: 0; + overflow-y: auto; + background: $ui-base-color; } } diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 59021ad887..e7a163c92a 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -15,8 +15,9 @@ = link_to root_path do = logo_as_symbol(:wordmark) - = link_to '#', class: 'sidebar__toggle__icon' do + = link_to '#', class: 'sidebar__toggle__icon', 'aria-label': t('navigation.toggle_menu'), 'aria-expanded': 'false' do = fa_icon 'bars' + = fa_icon 'times' = render_navigation diff --git a/config/locales/en.yml b/config/locales/en.yml index fd845c3c2c..547b19f074 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1249,6 +1249,8 @@ en: carry_blocks_over_text: This user moved from %{acct}, which you had blocked. carry_mutes_over_text: This user moved from %{acct}, which you had muted. copy_account_note_text: 'This user moved from %{acct}, here were your previous notes about them:' + navigation: + toggle_menu: Toggle menu notification_mailer: admin: report: From 3b024c563c92ecb1221309274ba18c8cc65c2ab8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:43:20 +0200 Subject: [PATCH 208/500] Fix not being able to input featured tag with `#` (#19535) --- app/models/featured_tag.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index 3f5cddce6f..d4ed743025 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -19,6 +19,8 @@ class FeaturedTag < ApplicationRecord validate :validate_tag_name, on: :create validate :validate_featured_tags_limit, on: :create + before_validation :strip_name + before_create :set_tag before_create :reset_data @@ -48,6 +50,12 @@ class FeaturedTag < ApplicationRecord private + def strip_name + return unless defined?(@name) + + @name = @name&.strip&.gsub(/\A#/, '') + end + def set_tag self.tag = Tag.find_or_create_by_names(@name)&.first end From 5724da07806ef423fc67db46dd2b28c92b34a9b2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:43:27 +0200 Subject: [PATCH 209/500] Fix language not being saved when editing status (#19543) Fix #19542 --- app/controllers/api/v1/statuses_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 1cc5aa32ee..2e239d48b9 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -65,6 +65,7 @@ class Api::V1::StatusesController < Api::BaseController text: status_params[:status], media_ids: status_params[:media_ids], sensitive: status_params[:sensitive], + language: status_params[:language], spoiler_text: status_params[:spoiler_text], poll: status_params[:poll] ) From 276b85bc91138ec3364b6dcddd45d16da6569a19 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:43:57 +0200 Subject: [PATCH 210/500] Fix admin APIs returning deleted object instead of empty object upon delete (#19479) Fix #19153 --- app/controllers/api/v1/admin/accounts_controller.rb | 5 ++--- .../api/v1/admin/canonical_email_blocks_controller.rb | 6 +----- app/controllers/api/v1/admin/domain_allows_controller.rb | 2 +- app/controllers/api/v1/admin/domain_blocks_controller.rb | 3 +-- .../api/v1/admin/email_domain_blocks_controller.rb | 4 +--- app/controllers/api/v1/admin/ip_blocks_controller.rb | 8 +------- 6 files changed, 7 insertions(+), 21 deletions(-) diff --git a/app/controllers/api/v1/admin/accounts_controller.rb b/app/controllers/api/v1/admin/accounts_controller.rb index 0dee02e94f..ae7f7d0762 100644 --- a/app/controllers/api/v1/admin/accounts_controller.rb +++ b/app/controllers/api/v1/admin/accounts_controller.rb @@ -60,14 +60,13 @@ class Api::V1::Admin::AccountsController < Api::BaseController def reject authorize @account.user, :reject? DeleteAccountService.new.call(@account, reserve_email: false, reserve_username: false) - render json: @account, serializer: REST::Admin::AccountSerializer + render_empty end def destroy authorize @account, :destroy? - json = render_to_body json: @account, serializer: REST::Admin::AccountSerializer Admin::AccountDeletionWorker.perform_async(@account.id) - render json: json + render_empty end def unsensitive diff --git a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb index bf8a6a1311..9ef1b3be71 100644 --- a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb +++ b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb @@ -35,20 +35,16 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController def create authorize :canonical_email_block, :create? - @canonical_email_block = CanonicalEmailBlock.create!(resource_params) log_action :create, @canonical_email_block - render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer end def destroy authorize @canonical_email_block, :destroy? - @canonical_email_block.destroy! log_action :destroy, @canonical_email_block - - render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer + render_empty end private diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb index 59aa807d6f..0658199f0f 100644 --- a/app/controllers/api/v1/admin/domain_allows_controller.rb +++ b/app/controllers/api/v1/admin/domain_allows_controller.rb @@ -43,7 +43,7 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController authorize @domain_allow, :destroy? UnallowDomainService.new.call(@domain_allow) log_action :destroy, @domain_allow - render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer + render_empty end private diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb index de8fd9d089..df5b1b3fcb 100644 --- a/app/controllers/api/v1/admin/domain_blocks_controller.rb +++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb @@ -40,7 +40,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController def update authorize @domain_block, :update? - @domain_block.update(domain_block_params) severity_changed = @domain_block.severity_changed? @domain_block.save! @@ -53,7 +52,7 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController authorize @domain_block, :destroy? UnblockDomainService.new.call(@domain_block) log_action :destroy, @domain_block - render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer + render_empty end private diff --git a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb index ac16f70b05..e53d0b1573 100644 --- a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb +++ b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb @@ -39,11 +39,9 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController def destroy authorize @email_domain_block, :destroy? - @email_domain_block.destroy! log_action :destroy, @email_domain_block - - render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer + render_empty end private diff --git a/app/controllers/api/v1/admin/ip_blocks_controller.rb b/app/controllers/api/v1/admin/ip_blocks_controller.rb index f13d632671..201ab6b1ff 100644 --- a/app/controllers/api/v1/admin/ip_blocks_controller.rb +++ b/app/controllers/api/v1/admin/ip_blocks_controller.rb @@ -20,10 +20,8 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController def create authorize :ip_block, :create? - @ip_block = IpBlock.create!(resource_params) log_action :create, @ip_block - render json: @ip_block, serializer: REST::Admin::IpBlockSerializer end @@ -39,20 +37,16 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController def update authorize @ip_block, :update? - @ip_block.update(resource_params) log_action :update, @ip_block - render json: @ip_block, serializer: REST::Admin::IpBlockSerializer end def destroy authorize @ip_block, :destroy? - @ip_block.destroy! log_action :destroy, @ip_block - - render json: @ip_block, serializer: REST::Admin::IpBlockSerializer + render_empty end private From 40c7f3e830538951862dc73074d1045a82395ab0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:44:32 +0200 Subject: [PATCH 211/500] Fix account action type validation (#19476) * Fix account action type validation Fix #19143 * Fix #19145 * Fix code style issues --- app/models/admin/account_action.rb | 9 ++-- .../admin/account_actions_controller_spec.rb | 44 ++++++++++++------- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb index aed3bc0c7d..bce0d6e179 100644 --- a/app/models/admin/account_action.rb +++ b/app/models/admin/account_action.rb @@ -25,6 +25,8 @@ class Admin::AccountAction alias send_email_notification? send_email_notification alias include_statuses? include_statuses + validates :type, :target_account, :current_account, presence: true + def initialize(attributes = {}) @send_email_notification = true @include_statuses = true @@ -41,13 +43,15 @@ class Admin::AccountAction end def save! + raise ActiveRecord::RecordInvalid, self unless valid? + ApplicationRecord.transaction do process_action! process_strike! + process_reports! end process_email! - process_reports! process_queue! end @@ -106,9 +110,8 @@ class Admin::AccountAction # Otherwise, we will mark all unresolved reports about # the account as resolved. - reports.each { |report| authorize(report, :update?) } - reports.each do |report| + authorize(report, :update?) log_action(:resolve, report) report.resolve!(current_account) end diff --git a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb index 199395f55c..462c2cfa99 100644 --- a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb +++ b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb @@ -30,28 +30,40 @@ RSpec.describe Api::V1::Admin::AccountActionsController, type: :controller do end describe 'POST #create' do - before do - post :create, params: { account_id: account.id, type: 'disable' } - end + context do + before do + post :create, params: { account_id: account.id, type: 'disable' } + end - it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', '' - it 'returns http success' do - expect(response).to have_http_status(200) - end + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'performs action against account' do + expect(account.reload.user_disabled?).to be true + end + + it 'logs action' do + log_item = Admin::ActionLog.last - it 'performs action against account' do - expect(account.reload.user_disabled?).to be true + expect(log_item).to_not be_nil + expect(log_item.action).to eq :disable + expect(log_item.account_id).to eq user.account_id + expect(log_item.target_id).to eq account.user.id + end end - it 'logs action' do - log_item = Admin::ActionLog.last + context 'with no type' do + before do + post :create, params: { account_id: account.id } + end - expect(log_item).to_not be_nil - expect(log_item.action).to eq :disable - expect(log_item.account_id).to eq user.account_id - expect(log_item.target_id).to eq account.user.id + it 'returns http unprocessable entity' do + expect(response).to have_http_status(422) + end end end end From ac9fb0d654440ce1179bab4071941450aa994d2c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 13:23:05 +0100 Subject: [PATCH 212/500] Add reputation and followers score boost to SQL-only account search (#19251) --- app/models/account.rb | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index 3da289fc0b..da0ee23361 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -445,7 +445,12 @@ class Account < ApplicationRecord class << self DISALLOWED_TSQUERY_CHARACTERS = /['?\\:‘’]/.freeze - TEXTSEARCH = "(setweight(to_tsvector('simple', accounts.display_name), 'A') || setweight(to_tsvector('simple', accounts.username), 'B') || setweight(to_tsvector('simple', coalesce(accounts.domain, '')), 'C'))" + TEXTSEARCH = "(setweight(to_tsvector('simple', accounts.display_name), 'A') || setweight(to_tsvector('simple', accounts.username), 'A') || setweight(to_tsvector('simple', coalesce(accounts.domain, '')), 'C'))" + + REPUTATION_SCORE_FUNCTION = '(greatest(0, coalesce(s.followers_count, 0)) / (greatest(0, coalesce(s.following_count, 0)) + 1.0))' + FOLLOWERS_SCORE_FUNCTION = 'log(greatest(0, coalesce(s.followers_count, 0)) + 2)' + TIME_DISTANCE_FUNCTION = '(case when s.last_status_at is null then 0 else exp(-1.0 * ((greatest(0, abs(extract(DAY FROM age(s.last_status_at))) - 30.0)^2) / (2.0 * ((-1.0 * 30^2) / (2.0 * ln(0.3)))))) end)' + BOOST = "((#{REPUTATION_SCORE_FUNCTION} + #{FOLLOWERS_SCORE_FUNCTION} + #{TIME_DISTANCE_FUNCTION}) / 3.0)" def readonly_attributes super - %w(statuses_count following_count followers_count) @@ -462,9 +467,10 @@ class Account < ApplicationRecord sql = <<-SQL.squish SELECT accounts.*, - ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank + #{BOOST} * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank FROM accounts LEFT JOIN users ON accounts.id = users.account_id + LEFT JOIN account_stats AS s ON accounts.id = s.account_id WHERE to_tsquery('simple', :tsquery) @@ #{TEXTSEARCH} AND accounts.suspended_at IS NULL AND accounts.moved_to_account_id IS NULL @@ -526,14 +532,15 @@ class Account < ApplicationRecord ) SELECT accounts.*, - (count(f.id) + 1) * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank + (count(f.id) + 1) * #{BOOST} * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank FROM accounts LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = :id) + LEFT JOIN account_stats AS s ON accounts.id = s.account_id WHERE accounts.id IN (SELECT * FROM first_degree) AND to_tsquery('simple', :tsquery) @@ #{TEXTSEARCH} AND accounts.suspended_at IS NULL AND accounts.moved_to_account_id IS NULL - GROUP BY accounts.id + GROUP BY accounts.id, s.id ORDER BY rank DESC LIMIT :limit OFFSET :offset SQL @@ -541,15 +548,16 @@ class Account < ApplicationRecord <<-SQL.squish SELECT accounts.*, - (count(f.id) + 1) * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank + (count(f.id) + 1) * #{BOOST} * ts_rank_cd(#{TEXTSEARCH}, to_tsquery('simple', :tsquery), 32) AS rank FROM accounts LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = :id) OR (accounts.id = f.target_account_id AND f.account_id = :id) LEFT JOIN users ON accounts.id = users.account_id + LEFT JOIN account_stats AS s ON accounts.id = s.account_id WHERE to_tsquery('simple', :tsquery) @@ #{TEXTSEARCH} AND accounts.suspended_at IS NULL AND accounts.moved_to_account_id IS NULL AND (accounts.domain IS NOT NULL OR (users.approved = TRUE AND users.confirmed_at IS NOT NULL)) - GROUP BY accounts.id + GROUP BY accounts.id, s.id ORDER BY rank DESC LIMIT :limit OFFSET :offset SQL From eb307ec1bdb0acd1f90ebf338b9664a9c5b49f80 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 13:32:49 +0200 Subject: [PATCH 213/500] [Glitch] Fix logged out search and changed logged-in search placeholder Port 55af04b253435ae771b69c8b7cfe3fc7e3b18033 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/actions/search.js | 5 +++-- .../flavours/glitch/features/compose/components/search.js | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/search.js b/app/javascript/flavours/glitch/actions/search.js index 7767826933..f21c0058ba 100644 --- a/app/javascript/flavours/glitch/actions/search.js +++ b/app/javascript/flavours/glitch/actions/search.js @@ -29,7 +29,8 @@ export function clearSearch() { export function submitSearch() { return (dispatch, getState) => { - const value = getState().getIn(['search', 'value']); + const value = getState().getIn(['search', 'value']); + const signedIn = !!getState().getIn(['meta', 'me']); if (value.length === 0) { dispatch(fetchSearchSuccess({ accounts: [], statuses: [], hashtags: [] }, '')); @@ -41,7 +42,7 @@ export function submitSearch() { api(getState).get('/api/v2/search', { params: { q: value, - resolve: true, + resolve: signedIn, limit: 10, }, }).then(response => { diff --git a/app/javascript/flavours/glitch/features/compose/components/search.js b/app/javascript/flavours/glitch/features/compose/components/search.js index a59418e46c..326fe5b707 100644 --- a/app/javascript/flavours/glitch/features/compose/components/search.js +++ b/app/javascript/flavours/glitch/features/compose/components/search.js @@ -21,6 +21,7 @@ import Motion from '../../ui/util/optional_motion'; const messages = defineMessages({ placeholder: { id: 'search.placeholder', defaultMessage: 'Search' }, + placeholderSignedIn: { id: 'search.search_or_paste', defaultMessage: 'Search or paste URL' }, }); class SearchPopout extends React.PureComponent { @@ -62,6 +63,7 @@ class Search extends React.PureComponent { static contextTypes = { router: PropTypes.object.isRequired, + identity: PropTypes.object.isRequired, }; static propTypes = { @@ -137,6 +139,7 @@ class Search extends React.PureComponent { render () { const { intl, value, submitted } = this.props; const { expanded } = this.state; + const { signedIn } = this.context.identity; const hasValue = value.length > 0 || submitted; return ( @@ -147,7 +150,7 @@ class Search extends React.PureComponent { ref={this.setRef} className='search__input' type='text' - placeholder={intl.formatMessage(messages.placeholder)} + placeholder={intl.formatMessage(signedIn ? messages.placeholderSignedIn : messages.placeholder)} value={value || ''} onChange={this.handleChange} onKeyUp={this.handleKeyUp} From ebfe393e9cf398ad496cd48c050cbfb7acecd6ad Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 29 Oct 2022 20:05:53 +0200 Subject: [PATCH 214/500] [Glitch] Fix upload progress not communicating processing phase in web UI Port 30ef11022487364256656efee3cee92db2c839b2 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/compose.js | 21 +++++++++++++------ .../compose/components/upload_form.js | 3 +-- .../compose/components/upload_progress.js | 16 ++++++++++---- .../containers/upload_progress_container.js | 1 + .../flavours/glitch/reducers/compose.js | 6 +++++- 5 files changed, 34 insertions(+), 13 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index 728bcf79b2..15476fc590 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -27,11 +27,13 @@ export const COMPOSE_REPLY_CANCEL = 'COMPOSE_REPLY_CANCEL'; export const COMPOSE_DIRECT = 'COMPOSE_DIRECT'; export const COMPOSE_MENTION = 'COMPOSE_MENTION'; export const COMPOSE_RESET = 'COMPOSE_RESET'; -export const COMPOSE_UPLOAD_REQUEST = 'COMPOSE_UPLOAD_REQUEST'; -export const COMPOSE_UPLOAD_SUCCESS = 'COMPOSE_UPLOAD_SUCCESS'; -export const COMPOSE_UPLOAD_FAIL = 'COMPOSE_UPLOAD_FAIL'; -export const COMPOSE_UPLOAD_PROGRESS = 'COMPOSE_UPLOAD_PROGRESS'; -export const COMPOSE_UPLOAD_UNDO = 'COMPOSE_UPLOAD_UNDO'; + +export const COMPOSE_UPLOAD_REQUEST = 'COMPOSE_UPLOAD_REQUEST'; +export const COMPOSE_UPLOAD_SUCCESS = 'COMPOSE_UPLOAD_SUCCESS'; +export const COMPOSE_UPLOAD_FAIL = 'COMPOSE_UPLOAD_FAIL'; +export const COMPOSE_UPLOAD_PROGRESS = 'COMPOSE_UPLOAD_PROGRESS'; +export const COMPOSE_UPLOAD_PROCESSING = 'COMPOSE_UPLOAD_PROCESSING'; +export const COMPOSE_UPLOAD_UNDO = 'COMPOSE_UPLOAD_UNDO'; export const THUMBNAIL_UPLOAD_REQUEST = 'THUMBNAIL_UPLOAD_REQUEST'; export const THUMBNAIL_UPLOAD_SUCCESS = 'THUMBNAIL_UPLOAD_SUCCESS'; @@ -307,13 +309,16 @@ export function uploadCompose(files) { if (status === 200) { dispatch(uploadComposeSuccess(data, f)); } else if (status === 202) { + dispatch(uploadComposeProcessing()); + let tryCount = 1; + const poll = () => { api(getState).get(`/api/v1/media/${data.id}`).then(response => { if (response.status === 200) { dispatch(uploadComposeSuccess(response.data, f)); } else if (response.status === 206) { - let retryAfter = (Math.log2(tryCount) || 1) * 1000; + const retryAfter = (Math.log2(tryCount) || 1) * 1000; tryCount += 1; setTimeout(() => poll(), retryAfter); } @@ -328,6 +333,10 @@ export function uploadCompose(files) { }; }; +export const uploadComposeProcessing = () => ({ + type: COMPOSE_UPLOAD_PROCESSING, +}); + export const uploadThumbnail = (id, file) => (dispatch, getState) => { dispatch(uploadThumbnailRequest()); diff --git a/app/javascript/flavours/glitch/features/compose/components/upload_form.js b/app/javascript/flavours/glitch/features/compose/components/upload_form.js index 43039c674b..35880ddccc 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload_form.js +++ b/app/javascript/flavours/glitch/features/compose/components/upload_form.js @@ -4,7 +4,6 @@ import UploadProgressContainer from '../containers/upload_progress_container'; import ImmutablePureComponent from 'react-immutable-pure-component'; import UploadContainer from '../containers/upload_container'; import SensitiveButtonContainer from '../containers/sensitive_button_container'; -import { FormattedMessage } from 'react-intl'; export default class UploadForm extends ImmutablePureComponent { static propTypes = { @@ -16,7 +15,7 @@ export default class UploadForm extends ImmutablePureComponent { return (
    - } /> + {mediaIds.size > 0 && (
    diff --git a/app/javascript/flavours/glitch/features/compose/components/upload_progress.js b/app/javascript/flavours/glitch/features/compose/components/upload_progress.js index 8896bbffd6..c7c33c418e 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload_progress.js +++ b/app/javascript/flavours/glitch/features/compose/components/upload_progress.js @@ -3,26 +3,34 @@ import PropTypes from 'prop-types'; import Motion from '../../ui/util/optional_motion'; import spring from 'react-motion/lib/spring'; import Icon from 'flavours/glitch/components/icon'; +import { FormattedMessage } from 'react-intl'; export default class UploadProgress extends React.PureComponent { static propTypes = { active: PropTypes.bool, progress: PropTypes.number, - icon: PropTypes.string.isRequired, - message: PropTypes.node.isRequired, + isProcessing: PropTypes.bool, }; render () { - const { active, progress, icon, message } = this.props; + const { active, progress, isProcessing } = this.props; if (!active) { return null; } + let message; + + if (isProcessing) { + message = ; + } else { + message = ; + } + return (
    - +
    {message} diff --git a/app/javascript/flavours/glitch/features/compose/containers/upload_progress_container.js b/app/javascript/flavours/glitch/features/compose/containers/upload_progress_container.js index 0cfee96daa..b18c76a43f 100644 --- a/app/javascript/flavours/glitch/features/compose/containers/upload_progress_container.js +++ b/app/javascript/flavours/glitch/features/compose/containers/upload_progress_container.js @@ -4,6 +4,7 @@ import UploadProgress from '../components/upload_progress'; const mapStateToProps = state => ({ active: state.getIn(['compose', 'is_uploading']), progress: state.getIn(['compose', 'progress']), + isProcessing: state.getIn(['compose', 'is_processing']), }); export default connect(mapStateToProps)(UploadProgress); diff --git a/app/javascript/flavours/glitch/reducers/compose.js b/app/javascript/flavours/glitch/reducers/compose.js index 035e9f5643..b739456da5 100644 --- a/app/javascript/flavours/glitch/reducers/compose.js +++ b/app/javascript/flavours/glitch/reducers/compose.js @@ -15,6 +15,7 @@ import { COMPOSE_UPLOAD_FAIL, COMPOSE_UPLOAD_UNDO, COMPOSE_UPLOAD_PROGRESS, + COMPOSE_UPLOAD_PROCESSING, THUMBNAIL_UPLOAD_REQUEST, THUMBNAIL_UPLOAD_SUCCESS, THUMBNAIL_UPLOAD_FAIL, @@ -223,6 +224,7 @@ function appendMedia(state, media, file) { } map.update('media_attachments', list => list.push(media)); map.set('is_uploading', false); + map.set('is_processing', false); map.set('resetFileKey', Math.floor((Math.random() * 0x10000))); map.set('idempotencyKey', uuid()); map.update('pending_media_attachments', n => n - 1); @@ -465,10 +467,12 @@ export default function compose(state = initialState, action) { return state.set('is_changing_upload', false); case COMPOSE_UPLOAD_REQUEST: return state.set('is_uploading', true).update('pending_media_attachments', n => n + 1); + case COMPOSE_UPLOAD_PROCESSING: + return state.set('is_processing', true); case COMPOSE_UPLOAD_SUCCESS: return appendMedia(state, fromJS(action.media), action.file); case COMPOSE_UPLOAD_FAIL: - return state.set('is_uploading', false).update('pending_media_attachments', n => n - 1); + return state.set('is_uploading', false).set('is_processing', false).update('pending_media_attachments', n => n - 1); case COMPOSE_UPLOAD_UNDO: return removeMedia(state, action.media_id); case COMPOSE_UPLOAD_PROGRESS: From 8048874a3a62abab052d769b7fcae1c2c947e398 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 02:43:15 +0200 Subject: [PATCH 215/500] [Glitch] Fix sidebar and tabs on settings on small screens in admin UI Port ad83e64795361dc9d5990a9dae4f91a3642109a0 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/admin.scss | 90 ++++++++++--------- 1 file changed, 49 insertions(+), 41 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index 0f0a785ea3..c2426944be 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -31,23 +31,17 @@ $content-width: 840px; &__toggle { display: none; - background: lighten($ui-base-color, 8%); - height: 48px; + background: darken($ui-base-color, 4%); + border-bottom: 1px solid lighten($ui-base-color, 4%); + align-items: center; &__logo { flex: 1 1 auto; a { - display: inline-block; + display: block; padding: 15px; } - - svg { - fill: $primary-text-color; - height: 20px; - position: relative; - bottom: -2px; - } } &__icon { @@ -55,15 +49,27 @@ $content-width: 840px; color: $darker-text-color; text-decoration: none; flex: 0 0 auto; - font-size: 20px; - padding: 15px; - } + font-size: 18px; + padding: 10px; + margin: 5px 10px; + border-radius: 4px; - a { - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 12%); + &:focus { + background: $ui-base-color; + } + + .fa-times { + display: none; + } + + &.active { + .fa-times { + display: block; + } + + .fa-bars { + display: none; + } } } } @@ -79,7 +85,7 @@ $content-width: 840px; display: inherit; margin: inherit; width: inherit; - height: 20px; + height: 25px; } @media screen and (max-width: $no-columns-breakpoint) { @@ -189,10 +195,7 @@ $content-width: 840px; } &__heading { - padding-bottom: 36px; - border-bottom: 1px solid lighten($ui-base-color, 8%); - - margin-bottom: 40px; + margin-bottom: 45px; &__row { display: flex; @@ -209,46 +212,43 @@ $content-width: 840px; &__tabs { margin-top: 30px; - margin-bottom: -31px; + width: 100%; & > div { display: flex; - gap: 10px; + flex-wrap: wrap; + gap: 5px; } a { font-size: 14px; display: inline-flex; align-items: center; - padding: 7px 15px; + padding: 7px 10px; border-radius: 4px; color: $darker-text-color; text-decoration: none; - position: relative; font-weight: 500; gap: 5px; white-space: nowrap; + &:hover, + &:focus, + &:active { + background: lighten($ui-base-color, 4%); + } + &.selected { font-weight: 700; color: $primary-text-color; + background: $ui-highlight-color; - &::after { - content: ""; - display: block; - width: 100%; - border-bottom: 1px solid $ui-highlight-color; - position: absolute; - bottom: -5px; - left: 0; + &:hover, + &:focus, + &:active { + background: lighten($ui-highlight-color, 4%); } } - - &:hover, - &:focus, - &:active { - background: lighten($ui-base-color, 4%); - } } } @@ -383,6 +383,14 @@ $content-width: 840px; &.visible { display: block; + position: fixed; + z-index: 10; + width: 100%; + height: calc(100vh - 56px); + left: 0; + bottom: 0; + overflow-y: auto; + background: $ui-base-color; } } From a529d6d93e777003019f1ab0d7ff913134625cf6 Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 30 Oct 2022 19:04:39 +0100 Subject: [PATCH 216/500] Fix invites (#19560) Fixes #19507 Fix regression from #19296 --- app/controllers/auth/registrations_controller.rb | 1 + app/views/auth/registrations/rules.html.haml | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 84a802447b..14e0d9a363 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -148,6 +148,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController return if @rules.empty? || (session[:accept_token].present? && params[:accept] == session[:accept_token]) @accept_token = session[:accept_token] = SecureRandom.hex + @invite_code = invite_code set_locale { render :rules } end diff --git a/app/views/auth/registrations/rules.html.haml b/app/views/auth/registrations/rules.html.haml index a41581b324..8e7a90cbeb 100644 --- a/app/views/auth/registrations/rules.html.haml +++ b/app/views/auth/registrations/rules.html.haml @@ -14,7 +14,8 @@ .rules-list__text= rule.text .stacked-actions - = link_to t('auth.rules.accept'), new_user_registration_path(accept: @accept_token), class: 'button' + - accept_path = @invite_code.present? ? public_invite_url(invite_code: @invite_code, accept: @accept_token) : new_user_registration_path(accept: @accept_token) + = link_to t('auth.rules.accept'), accept_path, class: 'button' = link_to t('auth.rules.back'), root_path, class: 'button button-tertiary' .form-footer= render 'auth/shared/links' From 26478f461cafc42d39bc0baf235989e1df7ee0bb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 30 Oct 2022 21:29:23 +0100 Subject: [PATCH 217/500] Remove language filtering from hashtag timelines (#19563) --- app/controllers/api/v1/timelines/tag_controller.rb | 1 - app/models/tag_feed.rb | 1 - 2 files changed, 2 deletions(-) diff --git a/app/controllers/api/v1/timelines/tag_controller.rb b/app/controllers/api/v1/timelines/tag_controller.rb index 9f3a5b3f12..64a1db58df 100644 --- a/app/controllers/api/v1/timelines/tag_controller.rb +++ b/app/controllers/api/v1/timelines/tag_controller.rb @@ -36,7 +36,6 @@ class Api::V1::Timelines::TagController < Api::BaseController TagFeed.new( @tag, current_account, - locale: content_locale, any: params[:any], all: params[:all], none: params[:none], diff --git a/app/models/tag_feed.rb b/app/models/tag_feed.rb index 58216bddcb..8502b79afa 100644 --- a/app/models/tag_feed.rb +++ b/app/models/tag_feed.rb @@ -33,7 +33,6 @@ class TagFeed < PublicFeed scope.merge!(remote_only_scope) if remote_only? scope.merge!(account_filters_scope) if account? scope.merge!(media_only_scope) if media_only? - scope.merge!(language_scope) scope.cache_ids.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id) end From 2d9a85db6efe0c9ccfda1420551ce3d6025bc27e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 31 Oct 2022 13:06:17 +0100 Subject: [PATCH 218/500] Change design of link footer (#19562) --- app/javascript/mastodon/components/account.js | 9 ++- .../mastodon/components/server_banner.js | 2 +- .../mastodon/features/about/index.js | 6 +- .../features/ui/components/link_footer.js | 64 ++++++++-------- .../styles/mastodon/components.scss | 75 +++++++++---------- 5 files changed, 84 insertions(+), 72 deletions(-) diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 92d14da8b0..51d2b8ba2c 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -27,6 +27,7 @@ export default @injectIntl class Account extends ImmutablePureComponent { static propTypes = { + size: PropTypes.number, account: ImmutablePropTypes.map, onFollow: PropTypes.func.isRequired, onBlock: PropTypes.func.isRequired, @@ -40,6 +41,10 @@ class Account extends ImmutablePureComponent { onActionClick: PropTypes.func, }; + static defaultProps = { + size: 46, + }; + handleFollow = () => { this.props.onFollow(this.props.account); } @@ -65,7 +70,7 @@ class Account extends ImmutablePureComponent { } render () { - const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction } = this.props; + const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction, size } = this.props; if (!account) { return ( @@ -136,7 +141,7 @@ class Account extends ImmutablePureComponent {
    -
    +
    {mute_expires_at}
    diff --git a/app/javascript/mastodon/components/server_banner.js b/app/javascript/mastodon/components/server_banner.js index c2336e43d3..617fdecdfe 100644 --- a/app/javascript/mastodon/components/server_banner.js +++ b/app/javascript/mastodon/components/server_banner.js @@ -61,7 +61,7 @@ class ServerBanner extends React.PureComponent {

    - +
    diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.js index 75fed9b95b..8328362725 100644 --- a/app/javascript/mastodon/features/about/index.js +++ b/app/javascript/mastodon/features/about/index.js @@ -125,7 +125,7 @@ class About extends React.PureComponent {

    - +

    @@ -209,6 +209,10 @@ class About extends React.PureComponent { + +
    +

    +
    diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index cc3d835727..c29aac4185 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -3,7 +3,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import { version, repository, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; +import { domain, version, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; import { logOut } from 'mastodon/utils/log_out'; import { openModal } from 'mastodon/actions/modal'; import { PERMISSION_INVITE_USERS } from 'mastodon/permissions'; @@ -48,40 +48,44 @@ class LinkFooter extends React.PureComponent { render () { const { signedIn, permissions } = this.context.identity; - const items = []; - items.push(); - items.push(); - items.push(); - items.push(); - items.push(); - items.push(); - - if (profileDirectory) { - items.push(); - } - - if (signedIn) { - if ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) { - items.push(); - } - - items.push(); - items.push(); - } + const canInvite = signedIn && ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS); + const canProfileDirectory = profileDirectory; return ( -
    -
      -
    • {items.reduce((prev, curr) => [prev, ' · ', curr])}
    • -
    +
    +

    + {domain}: + {' '} + + {canInvite && ( + <> + {' · '} + + + )} + {canProfileDirectory && ( + <> + {' · '} + + + )} + {' · '} + +

    - {repository} (v{version}) }} - /> + Mastodon: + {' '} + + {' · '} + + {' · '} + + {' · '} + + {' · '} + v{version}

    ); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index ded5634d65..f60ad6050d 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -3120,43 +3120,6 @@ $ui-header-height: 55px; color: $dark-text-color; overflow: auto; - &__footer { - flex: 0 0 auto; - padding: 10px; - padding-top: 20px; - z-index: 1; - font-size: 13px; - - ul { - margin-bottom: 10px; - } - - ul li { - display: inline; - } - - p { - color: $dark-text-color; - margin-bottom: 20px; - - a { - color: $dark-text-color; - text-decoration: underline; - } - } - - a { - text-decoration: none; - color: $darker-text-color; - - &:hover, - &:focus, - &:active { - text-decoration: underline; - } - } - } - &__trends { flex: 0 1 auto; opacity: 1; @@ -8382,6 +8345,34 @@ noscript { } } +.link-footer { + flex: 0 0 auto; + padding: 10px; + padding-top: 20px; + z-index: 1; + font-size: 13px; + + p { + color: $dark-text-color; + margin-bottom: 20px; + + strong { + font-weight: 500; + } + + a { + color: $dark-text-color; + text-decoration: underline; + + &:hover, + &:focus, + &:active { + text-decoration: none; + } + } + } +} + .about { padding: 20px; @@ -8389,6 +8380,14 @@ noscript { border-radius: 4px; } + &__footer { + color: $dark-text-color; + text-align: center; + font-size: 15px; + line-height: 22px; + margin-top: 20px; + } + &__header { margin-bottom: 30px; @@ -8509,7 +8508,7 @@ noscript { } } - .getting-started__footer { + .link-footer { padding: 0; margin-top: 60px; text-align: center; From bb1ef11c30b19db56b61b0918b176e1459e1f776 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 31 Oct 2022 16:31:44 +0100 Subject: [PATCH 219/500] Change featured hashtag deletion to be done synchronously (#19590) --- app/controllers/settings/featured_tags_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index b3db04a426..c384402650 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -23,7 +23,7 @@ class Settings::FeaturedTagsController < Settings::BaseController end def destroy - RemoveFeaturedTagWorker.perform_async(current_account.id, @featured_tag.id) + RemoveFeaturedTagService.new.call(current_account, @featured_tag) redirect_to settings_featured_tags_path end From 41885c871560bdd3a5f1886e5269c24e2686a5ec Mon Sep 17 00:00:00 2001 From: Jeremy Kescher Date: Tue, 1 Nov 2022 08:38:05 +0000 Subject: [PATCH 220/500] Remove/update old "tootsuite" references, except those needed for Docker (#1860) --- .env.production.sample | 4 ++-- CONTRIBUTING.md | 2 +- .../glitch/components/intersection_observer_article.js | 2 +- .../flavours/glitch/features/ui/components/link_footer.js | 4 ++-- .../glitch/features/ui/components/onboarding_modal.js | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.env.production.sample b/.env.production.sample index ad058b2b79..08247c19fe 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -17,7 +17,7 @@ LOCAL_DOMAIN=example.com # Use this only if you need to run mastodon on a different domain than the one used for federation. -# You can read more about this option on https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Serving_a_different_domain.md +# You can read more about this option on https://docs.joinmastodon.org/admin/config/#web-domain # DO *NOT* USE THIS UNLESS YOU KNOW *EXACTLY* WHAT YOU ARE DOING. # WEB_DOMAIN=mastodon.example.com @@ -247,7 +247,7 @@ SMTP_FROM_ADDRESS=notifications@example.com # --------------- # Various ways to customize Mastodon's behavior # --------------- - + # Maximum allowed character count MAX_TOOT_CHARS=500 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a5b5513ff1..415a3459aa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,7 +27,7 @@ See the guidelines below. - - - -You should also try to follow the guidelines set out in the original `CONTRIBUTING.md` from `tootsuite/mastodon`, reproduced below. +You should also try to follow the guidelines set out in the original `CONTRIBUTING.md` from `mastodon/mastodon`, reproduced below.
    diff --git a/app/javascript/flavours/glitch/components/intersection_observer_article.js b/app/javascript/flavours/glitch/components/intersection_observer_article.js index 90667d9f5a..b28e44e4c6 100644 --- a/app/javascript/flavours/glitch/components/intersection_observer_article.js +++ b/app/javascript/flavours/glitch/components/intersection_observer_article.js @@ -94,7 +94,7 @@ export default class IntersectionObserverArticle extends React.Component { // When the browser gets a chance, test if we're still not intersecting, // and if so, set our isHidden to true to trigger an unrender. The point of // this is to save DOM nodes and avoid using up too much memory. - // See: https://github.com/tootsuite/mastodon/issues/2900 + // See: https://github.com/mastodon/mastodon/issues/2900 this.setState((prevState) => ({ isHidden: !prevState.isIntersecting })); } diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.js b/app/javascript/flavours/glitch/features/ui/components/link_footer.js index 2e061f7607..3f74c908ac 100644 --- a/app/javascript/flavours/glitch/features/ui/components/link_footer.js +++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.js @@ -42,7 +42,7 @@ class LinkFooter extends React.PureComponent { e.stopPropagation(); this.props.onLogout(); - + return false; } @@ -84,7 +84,7 @@ class LinkFooter extends React.PureComponent { defaultMessage='Glitchsoc is open source software, a friendly fork of {Mastodon}. You can contribute or report issues on GitHub at {github}.' values={{ github: {repository} (v{version}), - Mastodon: Mastodon }} + Mastodon: Mastodon }} />

    diff --git a/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.js b/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.js index 97932ada18..611fae1ced 100644 --- a/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.js +++ b/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.js @@ -148,7 +148,7 @@ const PageSix = ({ admin, domain }) => { values={{ domain, fork: fork, - Mastodon: Mastodon, + Mastodon: Mastodon, github: GitHub, }} /> From c199556f64bcc961a77e45d2f0a9db9288311219 Mon Sep 17 00:00:00 2001 From: prplecake Date: Tue, 1 Nov 2022 03:38:55 -0500 Subject: [PATCH 221/500] Fix 'App settings' link in basic web UI (#1880) --- .../flavours/glitch/features/ui/components/navigation_panel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index c3f14ac72d..affb5ec478 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -86,7 +86,7 @@ class NavigationPanel extends React.Component {
    {!!preferencesLink && } - + )} From fc340c915477821ede0b9d65a5762cf41e4a3bec Mon Sep 17 00:00:00 2001 From: prplecake Date: Tue, 1 Nov 2022 03:41:58 -0500 Subject: [PATCH 222/500] Change ul, ol margin-left to 2em (#1879) --- app/javascript/flavours/glitch/styles/components/status.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss index c11e58423f..bd46017ab3 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -134,7 +134,7 @@ } ul, ol { - margin-left: 1em; + margin-left: 2em; p { margin: 0; From fea142fb9a0a6f7a4b92e608d638a26598f0a4e1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Nov 2022 10:42:04 +0100 Subject: [PATCH 223/500] New Crowdin updates (#19517) * New translations en.json (Persian) * New translations en.json (Spanish, Argentina) * New translations simple_form.en.yml (Arabic) * New translations activerecord.en.yml (Slovenian) * New translations activerecord.en.yml (Turkish) * New translations en.json (Persian) * New translations en.yml (Persian) * New translations activerecord.en.yml (Spanish) * New translations en.json (Czech) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.json (Catalan) * New translations en.json (Greek) * New translations en.json (Basque) * New translations en.yml (Basque) * New translations en.json (Polish) * New translations en.json (Chinese Traditional) * New translations en.json (Latvian) * New translations simple_form.en.yml (Basque) * New translations activerecord.en.yml (Greek) * New translations activerecord.en.yml (Basque) * New translations activerecord.en.yml (Polish) * New translations en.yml (German) * New translations en.json (Vietnamese) * New translations en.json (Kurmanji (Kurdish)) * New translations simple_form.en.yml (German) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Romanian) * New translations en.json (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations activerecord.en.yml (Afrikaans) * New translations en.json (German) * New translations en.json (Romanian) * New translations en.json (Afrikaans) * New translations en.json (German) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations activerecord.en.yml (Japanese) * New translations en.yml (German) * New translations en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (German) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations en.json (Polish) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Italian) * New translations en.json (Portuguese) * New translations simple_form.en.yml (German) * New translations en.json (Bulgarian) * New translations en.json (Chinese Traditional) * New translations en.json (Danish) * New translations en.json (Finnish) * New translations en.json (Dutch) * New translations en.json (Danish) * New translations simple_form.en.yml (Danish) * New translations activerecord.en.yml (Danish) * New translations en.json (Dutch) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.json (Ukrainian) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations devise.en.yml (Chinese Traditional) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations en.yml (Spanish, Argentina) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.json (Chinese Traditional) * New translations en.yml (Chinese Traditional) * New translations simple_form.en.yml (Chinese Traditional) * New translations doorkeeper.en.yml (Chinese Traditional) * New translations devise.en.yml (Chinese Traditional) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.json (Chinese Simplified) * New translations en.json (French) * New translations en.yml (French) * New translations simple_form.en.yml (French) * New translations en.yml (German) * New translations en.json (French) * New translations en.json (Afrikaans) * New translations en.yml (Afrikaans) * New translations en.json (Kabyle) * New translations en.yml (Kabyle) * New translations simple_form.en.yml (Kabyle) * New translations en.yml (Czech) * New translations en.json (German) * New translations en.json (French) * New translations en.yml (Catalan) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations en.yml (German) * New translations en.json (Bulgarian) * New translations en.json (German) * New translations en.yml (Italian) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Greek) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.yml (Portuguese) * New translations en.yml (Vietnamese) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Polish) * New translations en.yml (Latvian) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Turkish) * New translations en.yml (Ukrainian) * New translations simple_form.en.yml (German) * New translations en.json (German) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Asturian) * New translations simple_form.en.yml (German) * New translations doorkeeper.en.yml (German) * New translations en.json (German) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Basque) * New translations en.json (Chinese Simplified) * New translations en.json (Basque) * New translations en.yml (Basque) * New translations en.json (Slovenian) * New translations simple_form.en.yml (Basque) * New translations en.yml (Spanish) * New translations en.json (Spanish) * New translations en.yml (Basque) * New translations activerecord.en.yml (Spanish) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Ukrainian) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Ukrainian) * New translations activerecord.en.yml (Ukrainian) * New translations en.json (German) * New translations en.yml (Ukrainian) * New translations en.json (Slovenian) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Ukrainian) * New translations en.json (German) * New translations en.json (Esperanto) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations doorkeeper.en.yml (Dutch) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations simple_form.en.yml (Japanese) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Japanese) * New translations en.json (Slovenian) * New translations en.yml (Slovenian) * New translations en.yml (German) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations simple_form.en.yml (German) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Indonesian) * New translations en.yml (Russian) * New translations en.yml (Indonesian) * New translations simple_form.en.yml (Indonesian) * New translations en.json (Burmese) * New translations en.yml (Burmese) * New translations simple_form.en.yml (Burmese) * New translations activerecord.en.yml (Burmese) * New translations devise.en.yml (Burmese) * New translations doorkeeper.en.yml (Burmese) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Indonesian) * New translations simple_form.en.yml (Indonesian) * New translations activerecord.en.yml (Indonesian) * New translations en.json (Burmese) * New translations en.json (German) * New translations en.json (Indonesian) * New translations en.json (Swedish) * New translations en.json (Icelandic) * New translations en.yml (Indonesian) * New translations simple_form.en.yml (Indonesian) * New translations en.json (Hungarian) * New translations en.json (German) * New translations en.json (Icelandic) * New translations en.yml (Icelandic) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations en.json (German) * New translations en.yml (Arabic) * New translations en.json (Hindi) * New translations en.json (Scottish Gaelic) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Danish) * New translations en.json (German) * New translations en.json (Scottish Gaelic) * New translations en.json (German) * New translations en.json (Persian) * New translations en.yml (Persian) * New translations en.json (Persian) * New translations activerecord.en.yml (Persian) * New translations en.json (Igbo) * New translations en.yml (Igbo) * New translations simple_form.en.yml (Igbo) * New translations activerecord.en.yml (Igbo) * New translations devise.en.yml (Igbo) * New translations doorkeeper.en.yml (Igbo) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.json (Spanish, Argentina) * New translations simple_form.en.yml (Korean) * New translations en.json (Spanish, Argentina) * New translations en.json (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.json (Igbo) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.yml (Japanese) * New translations simple_form.en.yml (Japanese) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 60 +- app/javascript/mastodon/locales/ar.json | 58 +- app/javascript/mastodon/locales/ast.json | 84 +-- app/javascript/mastodon/locales/bg.json | 30 +- app/javascript/mastodon/locales/bn.json | 20 +- app/javascript/mastodon/locales/br.json | 20 +- app/javascript/mastodon/locales/ca.json | 38 +- app/javascript/mastodon/locales/ckb.json | 20 +- app/javascript/mastodon/locales/co.json | 20 +- app/javascript/mastodon/locales/cs.json | 38 +- app/javascript/mastodon/locales/cy.json | 20 +- app/javascript/mastodon/locales/da.json | 38 +- app/javascript/mastodon/locales/de.json | 294 ++++---- .../mastodon/locales/defaultMessages.json | 56 +- app/javascript/mastodon/locales/el.json | 24 +- app/javascript/mastodon/locales/en-GB.json | 20 +- app/javascript/mastodon/locales/en.json | 20 +- app/javascript/mastodon/locales/eo.json | 24 +- app/javascript/mastodon/locales/es-AR.json | 42 +- app/javascript/mastodon/locales/es-MX.json | 20 +- app/javascript/mastodon/locales/es.json | 52 +- app/javascript/mastodon/locales/et.json | 20 +- app/javascript/mastodon/locales/eu.json | 262 +++---- app/javascript/mastodon/locales/fa.json | 210 +++--- app/javascript/mastodon/locales/fi.json | 22 +- app/javascript/mastodon/locales/fr.json | 38 +- app/javascript/mastodon/locales/fy.json | 20 +- app/javascript/mastodon/locales/ga.json | 20 +- app/javascript/mastodon/locales/gd.json | 40 +- app/javascript/mastodon/locales/gl.json | 38 +- app/javascript/mastodon/locales/he.json | 20 +- app/javascript/mastodon/locales/hi.json | 38 +- app/javascript/mastodon/locales/hr.json | 20 +- app/javascript/mastodon/locales/hu.json | 24 +- app/javascript/mastodon/locales/hy.json | 20 +- app/javascript/mastodon/locales/id.json | 370 +++++----- app/javascript/mastodon/locales/ig.json | 649 ++++++++++++++++++ app/javascript/mastodon/locales/io.json | 20 +- app/javascript/mastodon/locales/is.json | 40 +- app/javascript/mastodon/locales/it.json | 38 +- app/javascript/mastodon/locales/ja.json | 68 +- app/javascript/mastodon/locales/ka.json | 20 +- app/javascript/mastodon/locales/kab.json | 38 +- app/javascript/mastodon/locales/kk.json | 20 +- app/javascript/mastodon/locales/kn.json | 20 +- app/javascript/mastodon/locales/ko.json | 38 +- app/javascript/mastodon/locales/ku.json | 38 +- app/javascript/mastodon/locales/kw.json | 20 +- app/javascript/mastodon/locales/lt.json | 20 +- app/javascript/mastodon/locales/lv.json | 38 +- app/javascript/mastodon/locales/mk.json | 20 +- app/javascript/mastodon/locales/ml.json | 20 +- app/javascript/mastodon/locales/mr.json | 20 +- app/javascript/mastodon/locales/ms.json | 20 +- app/javascript/mastodon/locales/my.json | 649 ++++++++++++++++++ app/javascript/mastodon/locales/nl.json | 40 +- app/javascript/mastodon/locales/nn.json | 20 +- app/javascript/mastodon/locales/no.json | 20 +- app/javascript/mastodon/locales/oc.json | 20 +- app/javascript/mastodon/locales/pa.json | 20 +- app/javascript/mastodon/locales/pl.json | 40 +- app/javascript/mastodon/locales/pt-BR.json | 20 +- app/javascript/mastodon/locales/pt-PT.json | 38 +- app/javascript/mastodon/locales/ro.json | 60 +- app/javascript/mastodon/locales/ru.json | 20 +- app/javascript/mastodon/locales/sa.json | 20 +- app/javascript/mastodon/locales/sc.json | 20 +- app/javascript/mastodon/locales/si.json | 20 +- app/javascript/mastodon/locales/sk.json | 20 +- app/javascript/mastodon/locales/sl.json | 38 +- app/javascript/mastodon/locales/sq.json | 20 +- app/javascript/mastodon/locales/sr-Latn.json | 20 +- app/javascript/mastodon/locales/sr.json | 20 +- app/javascript/mastodon/locales/sv.json | 66 +- app/javascript/mastodon/locales/szl.json | 20 +- app/javascript/mastodon/locales/ta.json | 20 +- app/javascript/mastodon/locales/tai.json | 20 +- app/javascript/mastodon/locales/te.json | 20 +- app/javascript/mastodon/locales/th.json | 20 +- app/javascript/mastodon/locales/tr.json | 38 +- app/javascript/mastodon/locales/tt.json | 20 +- app/javascript/mastodon/locales/ug.json | 20 +- app/javascript/mastodon/locales/uk.json | 132 ++-- app/javascript/mastodon/locales/ur.json | 20 +- app/javascript/mastodon/locales/vi.json | 38 +- .../mastodon/locales/whitelist_ig.json | 2 + .../mastodon/locales/whitelist_my.json | 2 + app/javascript/mastodon/locales/zgh.json | 20 +- app/javascript/mastodon/locales/zh-CN.json | 26 +- app/javascript/mastodon/locales/zh-HK.json | 20 +- app/javascript/mastodon/locales/zh-TW.json | 92 +-- config/locales/activerecord.af.yml | 9 + config/locales/activerecord.da.yml | 5 + config/locales/activerecord.de.yml | 8 +- config/locales/activerecord.el.yml | 4 + config/locales/activerecord.es.yml | 4 + config/locales/activerecord.eu.yml | 23 + config/locales/activerecord.fa.yml | 23 + config/locales/activerecord.gd.yml | 4 + config/locales/activerecord.id.yml | 15 + config/locales/activerecord.ig.yml | 1 + config/locales/activerecord.ja.yml | 4 + config/locales/activerecord.ku.yml | 4 + config/locales/activerecord.my.yml | 1 + config/locales/activerecord.pl.yml | 4 + config/locales/activerecord.pt-BR.yml | 5 + config/locales/activerecord.sl.yml | 4 + config/locales/activerecord.tr.yml | 4 + config/locales/activerecord.uk.yml | 4 +- config/locales/af.yml | 2 + config/locales/ar.yml | 23 + config/locales/ca.yml | 2 + config/locales/cs.yml | 2 + config/locales/de.yml | 245 ++++--- config/locales/devise.ig.yml | 1 + config/locales/devise.my.yml | 1 + config/locales/devise.zh-TW.yml | 36 +- config/locales/doorkeeper.de.yml | 4 +- config/locales/doorkeeper.ig.yml | 1 + config/locales/doorkeeper.my.yml | 1 + config/locales/doorkeeper.nl.yml | 1 + config/locales/doorkeeper.uk.yml | 4 +- config/locales/doorkeeper.zh-TW.yml | 26 +- config/locales/el.yml | 2 + config/locales/es-AR.yml | 2 + config/locales/es.yml | 2 + config/locales/eu.yml | 168 ++++- config/locales/fa.yml | 63 ++ config/locales/fr.yml | 6 + config/locales/gd.yml | 2 + config/locales/gl.yml | 2 + config/locales/hu.yml | 2 + config/locales/id.yml | 206 +++++- config/locales/ig.yml | 12 + config/locales/is.yml | 2 + config/locales/it.yml | 2 + config/locales/ja.yml | 62 +- config/locales/kab.yml | 2 + config/locales/ko.yml | 6 + config/locales/ku.yml | 18 + config/locales/lv.yml | 2 + config/locales/my.yml | 12 + config/locales/nl.yml | 8 + config/locales/pl.yml | 2 + config/locales/pt-BR.yml | 57 ++ config/locales/pt-PT.yml | 2 + config/locales/ru.yml | 2 + config/locales/simple_form.ar.yml | 16 + config/locales/simple_form.da.yml | 1 + config/locales/simple_form.de.yml | 108 +-- config/locales/simple_form.eu.yml | 85 ++- config/locales/simple_form.fr.yml | 1 + config/locales/simple_form.id.yml | 90 ++- config/locales/simple_form.ig.yml | 1 + config/locales/simple_form.ja.yml | 39 ++ config/locales/simple_form.kab.yml | 2 + config/locales/simple_form.ko.yml | 6 + config/locales/simple_form.ku.yml | 8 + config/locales/simple_form.my.yml | 1 + config/locales/simple_form.nl.yml | 6 + config/locales/simple_form.pt-BR.yml | 10 + config/locales/simple_form.uk.yml | 6 +- config/locales/simple_form.zh-TW.yml | 54 +- config/locales/sl.yml | 3 + config/locales/tr.yml | 2 + config/locales/uk.yml | 44 +- config/locales/vi.yml | 2 + config/locales/zh-TW.yml | 158 ++--- 168 files changed, 4573 insertions(+), 2217 deletions(-) create mode 100644 app/javascript/mastodon/locales/ig.json create mode 100644 app/javascript/mastodon/locales/my.json create mode 100644 app/javascript/mastodon/locales/whitelist_ig.json create mode 100644 app/javascript/mastodon/locales/whitelist_my.json create mode 100644 config/locales/activerecord.ig.yml create mode 100644 config/locales/activerecord.my.yml create mode 100644 config/locales/devise.ig.yml create mode 100644 config/locales/devise.my.yml create mode 100644 config/locales/doorkeeper.ig.yml create mode 100644 config/locales/doorkeeper.my.yml create mode 100644 config/locales/ig.yml create mode 100644 config/locales/my.yml create mode 100644 config/locales/simple_form.ig.yml create mode 100644 config/locales/simple_form.my.yml diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 364fa55051..39a010ea2c 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -1,17 +1,18 @@ { "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.contact": "Kontak:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Rede", + "about.domain_blocks.domain": "Domein", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Ernstigheid", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", + "about.domain_blocks.suspended.title": "Opgeskort", + "about.not_available": "Hierdie informasie is nie beskikbaar gemaak op hierdie bediener nie.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Bediener reëls", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Voeg by of verwyder van lyste", "account.badges.bot": "Bot", @@ -20,26 +21,26 @@ "account.block_domain": "Blokeer alles van {domain}", "account.blocked": "Geblok", "account.browse_more_on_origin_server": "Snuffel rond op oorspronklike profiel", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Onttrek volg aanvraag", "account.direct": "Stuur direkte boodskap aan @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Domain blocked", + "account.domain_blocked": "Domein geblok", "account.edit_profile": "Redigeer profiel", "account.enable_notifications": "Stel my in kennis wanneer @{name} plasings maak", "account.endorse": "Beklemtoon op profiel", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Laaste plasing op {date}", + "account.featured_tags.last_status_never": "Geen plasings", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Volg", "account.followers": "Volgelinge", "account.followers.empty": "Niemand volg tans hierdie gebruiker nie.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following": "Following", + "account.following": "Volg", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Die gebruiker volg nie tans iemand nie.", "account.follows_you": "Volg jou", "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Aangesluit", "account.languages": "Change subscribed languages", "account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}", "account.locked_info": "Die rekening se privaatheidstatus is gesluit. Die eienaar hersien handmatig wie hom/haar kan volg.", @@ -73,19 +74,19 @@ "alert.rate_limited.message": "Probeer asb. weer na {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", - "alert.unexpected.title": "Oops!", + "alert.unexpected.title": "Oeps!", "announcement.announcement": "Aankondiging", "attachments_list.unprocessed": "(unprocessed)", "audio.hide": "Hide audio", "autosuggest_hashtag.per_week": "{count} per week", - "boost_modal.combo": "You can press {combo} to skip this next time", + "boost_modal.combo": "Jy kan {combo} druk om hierdie volgende keer oor te slaan", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Ag nee!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Netwerk fout", "bundle_column_error.retry": "Probeer weer", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Gaan terug huistoe", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", @@ -96,8 +97,8 @@ "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", - "column.blocks": "Blocked users", + "column.about": "Aangaande", + "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Boekmerke", "column.community": "Plaaslike tydlyn", "column.direct": "Direkte boodskappe", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index d8113d4394..858f610148 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -1,6 +1,7 @@ { "about.blocks": "خوادم تحت الإشراف", "about.contact": "اتصل بـ:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "السبب", "about.domain_blocks.domain": "النطاق", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -10,7 +11,7 @@ "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.powered_by": "شبكة اجتماعية لامركزية مدعومة من {mastodon}", "about.rules": "قواعد الخادم", "account.account_note_header": "مُلاحظة", "account.add_or_remove_from_list": "الإضافة أو الإزالة من القائمة", @@ -27,9 +28,9 @@ "account.edit_profile": "تعديل الملف الشخصي", "account.enable_notifications": "أشعرني عندما ينشر @{name}", "account.endorse": "أوصِ به على صفحتك الشخصية", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "آخر مشاركة في {date}", + "account.featured_tags.last_status_never": "لا توجد رسائل", + "account.featured_tags.title": "وسوم {name} المميَّزة", "account.follow": "متابعة", "account.followers": "مُتابِعون", "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.", @@ -39,8 +40,8 @@ "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", "account.follows_you": "يُتابِعُك", "account.hide_reblogs": "إخفاء مشاركات @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "انضم في", + "account.languages": "تغيير اللغات المشترَك فيها", "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}", "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.", "account.media": "وسائط", @@ -85,16 +86,16 @@ "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", "bundle_column_error.network.title": "خطأ في الشبكة", "bundle_column_error.retry": "إعادة المُحاولة", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "العودة إلى الرئيسية", + "bundle_column_error.routing.body": "تعذر العثور على الصفحة المطلوبة. هل أنت متأكد من أنّ عنوان URL في شريط العناوين صحيح؟", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "إغلاق", "bundle_modal_error.message": "لقد حدث خطأ ما أثناء تحميل هذا العنصر.", "bundle_modal_error.retry": "إعادة المُحاولة", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations.other_server_instructions": "بما أن ماستدون لامركزي، يمكنك إنشاء حساب على خادم آخر للاستمرار في التفاعل مع هذا الخادم.", + "closed_registrations_modal.description": "لا يمكن إنشاء حساب على {domain} حاليا، ولكن على فكرة لست بحاجة إلى حساب على {domain} بذاته لاستخدام ماستدون.", + "closed_registrations_modal.find_another_server": "ابحث على خادم آخر", + "closed_registrations_modal.preamble": "ماستدون لامركزي، لذلك بغض النظر عن مكان إنشاء حسابك، سيكون بإمكانك المتابعة والتفاعل مع أي شخص على هذا الخادم. يمكنك حتى أن تستضيفه ذاتياً!", "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "عن", "column.blocks": "المُستَخدِمون المَحظورون", @@ -258,15 +259,15 @@ "follow_request.authorize": "ترخيص", "follow_request.reject": "رفض", "follow_requests.unlocked_explanation": "على الرغم من أن حسابك غير مقفل، فإن موظفين الـ{domain} ظنوا أنك قد ترغب في مراجعة طلبات المتابعة من هذه الحسابات يدوياً.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "تم الحفظ", - "getting_started.directory": "الدليل", - "getting_started.documentation": "الدليل", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "استعدّ للبدء", - "getting_started.invite": "دعوة أشخاص", - "getting_started.privacy_policy": "سياسة الخصوصية", - "getting_started.security": "الأمان", - "getting_started.what_is_mastodon": "عن ماستدون", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "أو {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -287,9 +288,9 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_another_server": "على خادم مختلف", "interaction_modal.on_this_server": "على هذا الخادم", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "ببساطة قم بنسخ ولصق هذا الرابط في شريط البحث في تطبيقك المفضل أو على واجهة الويب أين ولجت بحسابك.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "اتبع {name}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟", "mute_modal.indefinite": "إلى أجل غير مسمى", "navigation_bar.about": "عن", - "navigation_bar.apps": "احصل على التطبيق", "navigation_bar.blocks": "الحسابات المحجوبة", "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط المحلي", @@ -375,8 +375,6 @@ "navigation_bar.filters": "الكلمات المكتومة", "navigation_bar.follow_requests": "طلبات المتابعة", "navigation_bar.follows_and_followers": "المتابِعين والمتابَعون", - "navigation_bar.info": "عن", - "navigation_bar.keyboard_shortcuts": "اختصارات لوحة المفاتيح", "navigation_bar.lists": "القوائم", "navigation_bar.logout": "خروج", "navigation_bar.mutes": "الحسابات المكتومة", @@ -384,7 +382,7 @@ "navigation_bar.pins": "المنشورات المُثَبَّتَة", "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", - "navigation_bar.search": "Search", + "navigation_bar.search": "البحث", "navigation_bar.security": "الأمان", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "ابحث", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "نمط البحث المتقدم", "search_popout.tips.full_text": "النص البسيط يقوم بعرض المنشورات التي كتبتها أو قمت بإرسالها أو ترقيتها أو تمت الإشارة إليك فيها من طرف آخرين ، بالإضافة إلى مطابقة أسماء المستخدمين وأسماء العرض وعلامات التصنيف.", "search_popout.tips.hashtag": "وسم", @@ -528,10 +527,10 @@ "search_results.statuses_fts_disabled": "البحث عن المنشورات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.about_active_users": "الأشخاص الذين يستخدمون هذا الخادم خلال الأيام الثلاثين الأخيرة (المستخدمون النشطون شهريًا)", "server_banner.active_users": "مستخدم نشط", "server_banner.administered_by": "يُديره:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.introduction": "{domain} هو جزء من الشبكة الاجتماعية اللامركزية المدعومة من {mastodon}.", "server_banner.learn_more": "تعلم المزيد", "server_banner.server_stats": "إحصائيات الخادم:", "sign_in_banner.create_account": "أنشئ حسابًا", @@ -573,7 +572,7 @@ "status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", "status.redraft": "إزالة و إعادة الصياغة", "status.remove_bookmark": "احذفه مِن الفواصل المرجعية", - "status.replied_to": "Replied to {name}", + "status.replied_to": "رَدًا على {name}", "status.reply": "ردّ", "status.replyAll": "رُد على الخيط", "status.report": "ابلِغ عن @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "توسيع الكل", "status.show_original": "إظهار الأصل", "status.translate": "ترجم", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "مترجم من {lang} باستخدام {provider}", "status.uncached_media_warning": "غير متوفر", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الصفحة التعريفية", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "جار إعداد OCR (تعرف ضوئي على الرموز)…", "upload_modal.preview_label": "معاينة ({ratio})", "upload_progress.label": "يرفع...", + "upload_progress.processing": "Processing…", "video.close": "إغلاق الفيديو", "video.download": "تنزيل الملف", "video.exit_fullscreen": "الخروج من وضع الشاشة المليئة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 60d2008b5d..603f852386 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -1,10 +1,11 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Motivu", + "about.domain_blocks.domain": "Dominiu", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Gravedá", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -13,17 +14,17 @@ "about.powered_by": "Decentralized social media powered by {mastodon}", "about.rules": "Server rules", "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Amestar o desaniciar de les llistes", + "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Robó", "account.badges.group": "Grupu", "account.block": "Bloquiar a @{name}", - "account.block_domain": "Anubrir tolo de {domain}", - "account.blocked": "Bloquiada", + "account.block_domain": "Block domain {domain}", + "account.blocked": "Blocked", "account.browse_more_on_origin_server": "Browse more on the original profile", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Unviar un mensaxe direutu a @{name}", + "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Dominiu anubríu", + "account.domain_blocked": "Domain blocked", "account.edit_profile": "Editar el perfil", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Destacar nel perfil", @@ -49,7 +50,7 @@ "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", - "account.posts": "Barritos", + "account.posts": "Artículos", "account.posts_with_replies": "Artículos y rempuestes", "account.report": "Report @{name}", "account.requested": "Esperando pola aprobación. Calca pa encaboxar la solicitú de siguimientu", @@ -72,7 +73,7 @@ "admin.dashboard.retention.cohort_size": "Usuarios nuevos", "alert.rate_limited.message": "Volvi tentalo dempués de la hora: {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", - "alert.unexpected.message": "Asocedió un fallu inesperáu.", + "alert.unexpected.message": "Prodúxose un error inesperáu.", "alert.unexpected.title": "¡Meca!", "announcement.announcement": "Anunciu", "attachments_list.unprocessed": "(ensin procesar)", @@ -91,7 +92,7 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Asocedió daqué malo mentanto se cargaba esti componente.", "bundle_modal_error.retry": "Try again", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations.other_server_instructions": "Darréu que Mastodon ye descentralizáu, pues crear una cuenta n'otru sirvidor y siguir interactuando con esti.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", @@ -209,7 +210,7 @@ "empty_column.blocks": "Entá nun bloquiesti a nengún usuariu.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaecen equí.", + "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.", "empty_column.domain_blocks": "Entá nun hai dominios anubríos.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", @@ -225,7 +226,7 @@ "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", "empty_column.public": "¡Equí nun hai nada! Escribi daqué público o sigui a usuarios d'otros sirvidores pa rellenar esto", "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun se pudo amosar correutamente.", - "error.unexpected_crash.explanation_addons": "Esta páxina nun se pudo amosar correutamente. Ye probable que dalgún complementu del restolador o dalguna ferramienta de traducción automática produxere esti fallu.", + "error.unexpected_crash.explanation_addons": "Esta páxina nun se pudo amosar correutamente. Ye probable que dalgún complementu del restolador o dalguna ferramienta de traducción automática produxere esti error.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Refugar", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon ye software llibre y de códigu abiertu. Pues ver el códigu fonte, collaborar ya informar de fallos en {repository}.", "getting_started.heading": "Entamu", - "getting_started.invite": "Convidar a persones", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Axustes de la cuenta", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "ensin {additional}", @@ -347,7 +348,7 @@ "lists.new.create": "Add list", "lists.new.title_placeholder": "Títulu nuevu de la llista", "lists.replies_policy.followed": "Any followed user", - "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.list": "Miembros de la llista", "lists.replies_policy.none": "No one", "lists.replies_policy.title": "Show replies to:", "lists.search": "Buscar ente la xente que sigues", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "¿Anubrir los avisos d'esti usuariu?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Usuarios bloquiaos", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Llinia temporal llocal", @@ -375,13 +375,11 @@ "navigation_bar.filters": "Pallabres silenciaes", "navigation_bar.follow_requests": "Solicitúes de siguimientu", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Atayos", "navigation_bar.lists": "Llistes", - "navigation_bar.logout": "Zarrar sesión", + "navigation_bar.logout": "Zarrar la sesión", "navigation_bar.mutes": "Usuarios silenciaos", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Barritos fixaos", + "navigation_bar.pins": "Artículos fixaos", "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia temporal federada", "navigation_bar.search": "Search", @@ -446,9 +444,9 @@ "poll_button.add_poll": "Amestar una encuesta", "poll_button.remove_poll": "Quitar la encuesta", "privacy.change": "Adjust status privacy", - "privacy.direct.long": "Post to mentioned users only", + "privacy.direct.long": "Visible for mentioned users only", "privacy.direct.short": "Direct", - "privacy.private.long": "Post to followers only", + "privacy.private.long": "Visible for followers only", "privacy.private.short": "Followers-only", "privacy.public.long": "Visible for all", "privacy.public.short": "Public", @@ -471,25 +469,25 @@ "relative_time.seconds": "{number} s", "relative_time.today": "güei", "reply_indicator.cancel": "Encaboxar", - "report.block": "Block", + "report.block": "Bloquiar", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", - "report.forward": "Forward to {target}", - "report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar ellí tamién una copia anónima del informe?", + "report.categories.violation": "El conteníu incumple una o más regles del sirvidor", + "report.category.subtitle": "Escueyi la meyor opción", + "report.category.title": "Dinos qué pasa con esti {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "artículu", + "report.close": "Fecho", + "report.comment.title": "¿Hai daqué más qu'habríemos saber?", + "report.forward": "Reunviar a {target}", + "report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar a esi sirvidor una copia anónima del informe?", "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Siguiente", "report.placeholder": "Comentarios adicionales", "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.dislike_description": "Nun ye daqué que quiera ver", "report.reasons.other": "Ye daqué más", "report.reasons.other_description": "La incidencia nun s'axusta a les demás categoríes", "report.reasons.spam": "Ye spam", @@ -502,7 +500,7 @@ "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Unviar", "report.target": "Report {target}", - "report.thanks.take_action": "Equí tan les opciones pa controlar qué ver en Mastodon:", + "report.thanks.take_action": "Equí tienes les opciones pa controlar qué ves en Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Don't want to see this?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Buscar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formatu de gueta avanzada", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "etiqueta", @@ -611,9 +610,9 @@ "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "En tendencia", "ui.beforeunload": "El borrador va perdese si coles de Mastodon.", - "units.short.billion": "{count} B", + "units.short.billion": "{count} MM", "units.short.million": "{count} M", - "units.short.thousand": "{count} K", + "units.short.thousand": "{count} mil", "upload_area.title": "Arrastra y suelta pa xubir", "upload_button.label": "Add images, a video or an audio file", "upload_error.limit": "File upload limit exceeded.", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Previsualización ({ratio})", "upload_progress.label": "Xubiendo…", + "upload_progress.processing": "Processing…", "video.close": "Zarrar el videu", "video.download": "Download file", "video.exit_fullscreen": "Colar de la pantalla completa", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index aa67edfd21..d1f32ed7f4 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -1,8 +1,9 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.blocks": "Модерирани сървъри", + "about.contact": "За контакти:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Причина", + "about.domain_blocks.domain": "Домейн", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", @@ -91,7 +92,7 @@ "bundle_modal_error.close": "Затваряне", "bundle_modal_error.message": "Нещо се обърка при зареждането на този компонент.", "bundle_modal_error.retry": "Опитайте отново", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations.other_server_instructions": "Поради това че Mastodon е децентрализиран, можеш да създадеш акаунт на друг сървър, от който можеш да комуникираш с този.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", @@ -258,15 +259,15 @@ "follow_request.authorize": "Упълномощаване", "follow_request.reject": "Отхвърляне", "follow_requests.unlocked_explanation": "Въпреки че акаунтът ви не е заключен, служителите на {domain} помислиха, че може да искате да преглеждате ръчно заявките за последване на тези профили.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Запазено", - "getting_started.directory": "Directory", - "getting_started.documentation": "Документация", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Първи стъпки", - "getting_started.invite": "Поканване на хора", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Скриване на известия от този потребител?", "mute_modal.indefinite": "Неопределено", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Блокирани потребители", "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Заглушени думи", "navigation_bar.follow_requests": "Заявки за последване", "navigation_bar.follows_and_followers": "Последвания и последователи", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", "navigation_bar.lists": "Списъци", "navigation_bar.logout": "Излизане", "navigation_bar.mutes": "Заглушени потребители", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Търсене", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Формат за разширено търсене", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "хаштаг", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Подготване на ОРС…", "upload_modal.preview_label": "Визуализация ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Затваряне на видео", "video.download": "Изтегляне на файл", "video.exit_fullscreen": "Изход от цял екран", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index c793cac6f9..092cd2dfc1 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "অনুমতি দিন", "follow_request.reject": "প্রত্যাখ্যান করুন", "follow_requests.unlocked_explanation": "আপনার অ্যাকাউন্টটি লক না থাকলেও, {domain} কর্মীরা ভেবেছিলেন যে আপনি এই অ্যাকাউন্টগুলি থেকে ম্যানুয়ালি অনুসরণের অনুরোধগুলি পর্যালোচনা করতে চাইতে পারেন।", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "সংরক্ষণ হয়েছে", - "getting_started.directory": "Directory", - "getting_started.documentation": "নথিপত্র", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "শুরু করা", - "getting_started.invite": "অন্যদের আমন্ত্রণ করুন", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "নিরাপত্তা", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "এবং {additional}", "hashtag.column_header.tag_mode.any": "অথবা {additional}", "hashtag.column_header.tag_mode.none": "বাদ দিয়ে {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "এই ব্যবহারকারীর প্রজ্ঞাপন বন্ধ করবেন ?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "বন্ধ করা ব্যবহারকারী", "navigation_bar.bookmarks": "বুকমার্ক", "navigation_bar.community_timeline": "স্থানীয় সময়রেখা", @@ -375,8 +375,6 @@ "navigation_bar.filters": "বন্ধ করা শব্দ", "navigation_bar.follow_requests": "অনুসরণের অনুরোধগুলি", "navigation_bar.follows_and_followers": "অনুসরণ এবং অনুসরণকারী", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "হটকীগুলি", "navigation_bar.lists": "তালিকাগুলো", "navigation_bar.logout": "বাইরে যান", "navigation_bar.mutes": "যাদের কার্যক্রম দেখা বন্ধ আছে", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "অনুসন্ধান", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "বিস্তারিতভাবে খোঁজার পদ্ধতি", "search_popout.tips.full_text": "সাধারণ লেখা দিয়ে খুঁজলে বের হবে সেরকম আপনার লেখা, পছন্দের লেখা, সমর্থন করা লেখা, আপনাকে উল্লেখকরা কোনো লেখা, যা খুঁজছেন সেরকম কোনো ব্যবহারকারীর নাম বা কোনো হ্যাশট্যাগগুলো।", "search_popout.tips.hashtag": "হ্যাশট্যাগ", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "পূর্বরূপ({ratio})", "upload_progress.label": "যুক্ত করতে পাঠানো হচ্ছে...", + "upload_progress.processing": "Processing…", "video.close": "ভিডিওটি বন্ধ করতে", "video.download": "ফাইলটি ডাউনলোড করুন", "video.exit_fullscreen": "পূর্ণ পর্দা থেকে বাইরে বের হতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 237f443296..f64f3df349 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -1,6 +1,7 @@ { "about.blocks": "Servijerioù habaskaet", "about.contact": "Darempred :", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Abeg", "about.domain_blocks.domain": "Domani", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Aotren", "follow_request.reject": "Nac'hañ", "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Enrollet", - "getting_started.directory": "Directory", - "getting_started.documentation": "Teuliadur", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Loc'hañ", - "getting_started.invite": "Pediñ tud", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Arventennoù ar gont", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ha {additional}", "hashtag.column_header.tag_mode.any": "pe {additional}", "hashtag.column_header.tag_mode.none": "hep {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?", "mute_modal.indefinite": "Amstrizh", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Gerioù kuzhet", "navigation_bar.follow_requests": "Pedadoù heuliañ", "navigation_bar.follows_and_followers": "Heuliadennoù ha heulier·ezed·ien", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Berradurioù", "navigation_bar.lists": "Listennoù", "navigation_bar.logout": "Digennaskañ", "navigation_bar.mutes": "Implijer·ion·ezed kuzhet", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Klask", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Framm klask araokaet", "search_popout.tips.full_text": "Testenn simpl a adkas toudoù skrivet ganeoc'h, merket ganeoc'h evel miuañ-karet, toudoù skignet, pe e-lec'h oc'h bet meneget, met ivez anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot.", "search_popout.tips.hashtag": "ger-klik", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Oc'h aozañ OCR…", "upload_modal.preview_label": "Rakwel ({ratio})", "upload_progress.label": "O pellgargañ...", + "upload_progress.processing": "Processing…", "video.close": "Serriñ ar video", "video.download": "Pellgargañ ar restr", "video.exit_fullscreen": "Kuitaat ar mod skramm leun", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index c21e2c84d2..ca8a29797c 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidors moderats", "about.contact": "Contacte:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motiu", "about.domain_blocks.domain": "Domini", "about.domain_blocks.preamble": "En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular.", @@ -39,7 +40,7 @@ "account.follows.empty": "Aquest usuari encara no segueix ningú.", "account.follows_you": "Et segueix", "account.hide_reblogs": "Amaga els impulsos de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "S'ha unit", "account.languages": "Canviar les llengües subscrits", "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}", "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", "bundle_modal_error.retry": "Tornar-ho a provar", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Donat que Mastodon és descentralitzat, pots crear un compte en un altre servidor i encara interactuar amb aquest.", + "closed_registrations_modal.description": "Crear un compte a {domain} no és possible ara mateix però, si us plau, tingues en compte que no necessites específicament un compte a {domain} per a usar Mastodon.", + "closed_registrations_modal.find_another_server": "Troba un altre servidor", + "closed_registrations_modal.preamble": "Mastodon és descentralitzat per tant no importa on tinguis el teu compte, seràs capaç de seguir i interactuar amb tothom des d'aquest servidor. Fins i tot pots tenir el compte en el teu propi servidor!", + "closed_registrations_modal.title": "Registrant-se a Mastodon", "column.about": "Quant a", "column.blocks": "Usuaris bloquejats", "column.bookmarks": "Marcadors", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoritza", "follow_request.reject": "Rebutja", "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes manualment.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Desat", - "getting_started.directory": "Directori", - "getting_started.documentation": "Documentació", - "getting_started.free_software_notice": "Mastodon és lliure, programari de codi obert. Pots veure el codi font, contribuir-hi o reportar-hi incidències a {repository}.", "getting_started.heading": "Primers passos", - "getting_started.invite": "Convidar gent", - "getting_started.privacy_policy": "Política de Privacitat", - "getting_started.security": "Configuració del compte", - "getting_started.what_is_mastodon": "Quant a Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sense {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?", "mute_modal.indefinite": "Indefinit", "navigation_bar.about": "Quant a", - "navigation_bar.apps": "Aconsegueix l'app", "navigation_bar.blocks": "Usuaris bloquejats", "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Línia de temps local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Paraules silenciades", "navigation_bar.follow_requests": "Sol·licituds de seguiment", "navigation_bar.follows_and_followers": "Seguits i seguidors", - "navigation_bar.info": "Quant a", - "navigation_bar.keyboard_shortcuts": "Dreceres de teclat", "navigation_bar.lists": "Llistes", "navigation_bar.logout": "Tancar sessió", "navigation_bar.mutes": "Usuaris silenciats", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Publicacions fixades", "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Cerca", "navigation_bar.security": "Seguretat", "not_signed_in_indicator.not_signed_in": "Necessites registrar-te per a accedir aquest recurs.", "notification.admin.report": "{name} ha reportat {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violació de norma", "report_notification.open": "Informe obert", "search.placeholder": "Cerca", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format de cerca avançada", "search_popout.tips.full_text": "El text simple recupera publicacions que has escrit, marcat com a preferides, que has impulsat o on t'han esmentat, així com els usuaris, els noms d'usuaris i les etiquetes.", "search_popout.tips.hashtag": "etiqueta", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Encara ningú no ha impulsat aquesta publicació. Quan algú ho faci, apareixeran aquí.", "status.redraft": "Esborra-la i reescriure-la", "status.remove_bookmark": "Suprimeix el marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Ha respòs a {name}", "status.reply": "Respon", "status.replyAll": "Respon al fil", "status.report": "Denuncia @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostrar-ne més per a tot", "status.show_original": "Mostra l'original", "status.translate": "Tradueix", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traduït des de {lang} usant {provider}", "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparant OCR…", "upload_modal.preview_label": "Previsualitza ({ratio})", "upload_progress.label": "Pujant...", + "upload_progress.processing": "Processing…", "video.close": "Tanca el vídeo", "video.download": "Descarrega l’arxiu", "video.exit_fullscreen": "Surt de la pantalla completa", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 06664597ed..931e8758ac 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "ده‌سه‌ڵاتپێدراو", "follow_request.reject": "ڕەتکردنەوە", "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "پاشکەوتکرا", - "getting_started.directory": "Directory", - "getting_started.documentation": "بەڵگەنامە", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "دەست پێکردن", - "getting_started.invite": "بانگهێشتکردنی خەڵک", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "ڕێکخستنەکانی هەژمارە", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بەبێ {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ", "mute_modal.indefinite": "نادیار", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "بەکارهێنەرە بلۆککراوەکان", "navigation_bar.bookmarks": "نیشانکراوەکان", "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی", @@ -375,8 +375,6 @@ "navigation_bar.filters": "وشە کپەکان", "navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە", "navigation_bar.follows_and_followers": "شوێنکەوتوو و شوێنکەوتوان", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "هۆتکەی", "navigation_bar.lists": "لیستەکان", "navigation_bar.logout": "دەرچوون", "navigation_bar.mutes": "کپکردنی بەکارهێنەران", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "گەڕان", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "شێوەی گەڕانی پێشکەوتوو", "search_popout.tips.full_text": "گەڕانێکی دەقی سادە دەتوانێت توتەکانی ئێوە کە، نووسیوتانە،پەسەنتان کردووە، دووبارەتانکردووە، یان ئەو توتانە کە باسی ئێوەی تێدا کراوە پەیدا دەکا. هەروەها ناوی بەکارهێنەران، ناوی پیشاندراو و هەشتەگەکانیش لە خۆ دەگرێت.", "search_popout.tips.hashtag": "هەشتاگ", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "نووسینەکە دەستنیشان دەکرێت…", "upload_modal.preview_label": "پێشبینین ({ratio})", "upload_progress.label": "بار دەکرێت...", + "upload_progress.processing": "Processing…", "video.close": "داخستنی ڤیدیۆ", "video.download": "داگرتنی فایل", "video.exit_fullscreen": "دەرچوون لە پڕ شاشە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 4be8006655..322b533c1e 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Auturizà", "follow_request.reject": "Righjittà", "follow_requests.unlocked_explanation": "U vostru contu ùn hè micca privatu, ma a squadra d'amministrazione di {domain} pensa chì e dumande d'abbunamentu di questi conti anu bisognu d'esse verificate manualmente.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvatu", - "getting_started.directory": "Directory", - "getting_started.documentation": "Ducumentazione", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Per principià", - "getting_started.invite": "Invità ghjente", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Sicurità", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "è {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Piattà nutificazione da st'utilizatore?", "mute_modal.indefinite": "Indifinita", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Utilizatori bluccati", "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Linea pubblica lucale", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Parolle silenzate", "navigation_bar.follow_requests": "Dumande d'abbunamentu", "navigation_bar.follows_and_followers": "Abbunati è abbunamenti", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Accorte cù a tastera", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Scunnettassi", "navigation_bar.mutes": "Utilizatori piattati", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Circà", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Ricerca avanzata", "search_popout.tips.full_text": "I testi simplici rimandanu i statuti ch'avete scritti, aghjunti à i vostri favuriti, spartuti o induve quelli site mintuvatu·a, è ancu i cugnomi, nomi pubblichi è hashtag chì currispondenu.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Priparazione di l'OCR…", "upload_modal.preview_label": "Vista ({ratio})", "upload_progress.label": "Caricamentu...", + "upload_progress.processing": "Processing…", "video.close": "Chjudà a video", "video.download": "Scaricà fugliale", "video.exit_fullscreen": "Caccià u pienu screnu", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 5ccbf73dc3..ed0b7b0b15 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderované servery", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Důvod", "about.domain_blocks.domain": "Doména", "about.domain_blocks.preamble": "Mastodon vám obecně umožňuje prohlížet obsah a komunikovat s uživateli z jakéhokoliv jiného serveru ve fediveru. Toto jsou výjimky, které byly uděleny na tomto konkrétním serveru.", @@ -39,7 +40,7 @@ "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows_you": "Sleduje vás", "account.hide_reblogs": "Skrýt boosty od @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Připojen/a", "account.languages": "Změnit odebírané jazyky", "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}", "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Zavřít", "bundle_modal_error.message": "Při načítání této komponenty se něco pokazilo.", "bundle_modal_error.retry": "Zkusit znovu", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Protože je Mastodon decentralizovaný, můžete si vytvořit účet na jiném serveru a stále s tímto serverem komunikovat.", + "closed_registrations_modal.description": "V současné době není možné vytvořit účet na {domain} ale mějte prosím na paměti, že k používání Mastodonu nepotřebujete účet konkrétně na {domain}.", + "closed_registrations_modal.find_another_server": "Najít jiný server", + "closed_registrations_modal.preamble": "Mastodon je decentralizovaný, takže bez ohledu na to, kde vytvoříte svůj účet, budete moci sledovat a komunikovat s kýmkoli na tomto serveru. Můžete ho dokonce hostit!", + "closed_registrations_modal.title": "Registrace na Mastodonu", "column.about": "O aplikaci", "column.blocks": "Blokovaní uživatelé", "column.bookmarks": "Záložky", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizovat", "follow_request.reject": "Odmítnout", "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Uloženo", - "getting_started.directory": "Adresář", - "getting_started.documentation": "Dokumentace", - "getting_started.free_software_notice": "Mastodon je svobodný software s otevřeným zdrojovým kódem. Zdrojový kód si můžete prohlédnout, přispět do něj nebo nahlásit problémy na {repository}.", "getting_started.heading": "Začínáme", - "getting_started.invite": "Pozvat lidi", - "getting_started.privacy_policy": "Zásady ochrany osobních údajů", - "getting_started.security": "Nastavení účtu", - "getting_started.what_is_mastodon": "O Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "nebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skrýt oznámení od tohoto uživatele?", "mute_modal.indefinite": "Neomezeně", "navigation_bar.about": "O aplikaci", - "navigation_bar.apps": "Stáhnout aplikaci", "navigation_bar.blocks": "Blokovaní uživatelé", "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Místní časová osa", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Skrytá slova", "navigation_bar.follow_requests": "Žádosti o sledování", "navigation_bar.follows_and_followers": "Sledovaní a sledující", - "navigation_bar.info": "O aplikaci", - "navigation_bar.keyboard_shortcuts": "Klávesové zkratky", "navigation_bar.lists": "Seznamy", "navigation_bar.logout": "Odhlásit", "navigation_bar.mutes": "Skrytí uživatelé", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Připnuté příspěvky", "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", - "navigation_bar.search": "Search", + "navigation_bar.search": "Hledat", "navigation_bar.security": "Zabezpečení", "not_signed_in_indicator.not_signed_in": "Pro přístup k tomuto zdroji se musíte přihlásit.", "notification.admin.report": "Uživatel {name} nahlásil {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Porušení pravidla", "report_notification.open": "Otevřít hlášení", "search.placeholder": "Hledat", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Pokročilé hledání", "search_popout.tips.full_text": "Jednoduchý text vrací příspěvky, které jste napsali, oblíbili si, boostnuli, nebo vás v nich někdo zmínil, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Tento příspěvek ještě nikdo neboostnul. Pokud to někdo udělá, zobrazí se zde.", "status.redraft": "Smazat a přepsat", "status.remove_bookmark": "Odstranit ze záložek", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Odpověděl uživateli {name}", "status.reply": "Odpovědět", "status.replyAll": "Odpovědět na vlákno", "status.report": "Nahlásit @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Zobrazit více pro všechny", "status.show_original": "Zobrazit původní", "status.translate": "Přeložit", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Přeloženo z {lang} pomocí {provider}", "status.uncached_media_warning": "Nedostupné", "status.unmute_conversation": "Odkrýt konverzaci", "status.unpin": "Odepnout z profilu", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Příprava OCR…", "upload_modal.preview_label": "Náhled ({ratio})", "upload_progress.label": "Nahrávání…", + "upload_progress.processing": "Processing…", "video.close": "Zavřít video", "video.download": "Stáhnout soubor", "video.exit_fullscreen": "Ukončit režim celé obrazovky", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 7b5387fa16..4860ecbbec 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Caniatau", "follow_request.reject": "Gwrthod", "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Wedi'i Gadw", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dogfennaeth", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Dechrau", - "getting_started.invite": "Gwahodd pobl", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Diogelwch", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "neu {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Cuddio hysbysiadau rhag y defnyddiwr hwn?", "mute_modal.indefinite": "Amhenodol", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", "navigation_bar.bookmarks": "Tudalnodau", "navigation_bar.community_timeline": "Ffrwd leol", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Geiriau a dawelwyd", "navigation_bar.follow_requests": "Ceisiadau dilyn", "navigation_bar.follows_and_followers": "Dilynion a ddilynwyr", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Bysellau brys", "navigation_bar.lists": "Rhestrau", "navigation_bar.logout": "Allgofnodi", "navigation_bar.mutes": "Defnyddwyr a dawelwyd", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Chwilio", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Fformat chwilio uwch", "search_popout.tips.full_text": "Mae testun syml yn dychwelyd postiadau yr ydych wedi ysgrifennu, hoffi, wedi'u hybio, neu wedi'ch crybwyll ynddynt, ynghyd a chyfateb a enwau defnyddwyr, enwau arddangos ac hashnodau.", "search_popout.tips.hashtag": "hashnod", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Paratoi OCR…", "upload_modal.preview_label": "Rhagolwg ({ratio})", "upload_progress.label": "Uwchlwytho...", + "upload_progress.processing": "Processing…", "video.close": "Cau fideo", "video.download": "Lawrlwytho ffeil", "video.exit_fullscreen": "Gadael sgrîn llawn", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index b62d992973..6b832c7224 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,6 +1,7 @@ { "about.blocks": "Modererede servere", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Årsag", "about.domain_blocks.domain": "Domæne", "about.domain_blocks.preamble": "Mastodon tillader generelt, at man ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server.", @@ -39,7 +40,7 @@ "account.follows.empty": "Denne bruger følger ikke nogen endnu.", "account.follows_you": "Følger dig", "account.hide_reblogs": "Skjul boosts fra @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Oprettet", "account.languages": "Skift abonnementssprog", "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}", "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Luk", "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.", "bundle_modal_error.retry": "Forsøg igen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Da Mastodon er decentraliseret, kan du oprette en konto på en anden server og stadig interagere med denne.", + "closed_registrations_modal.description": "Oprettelse af en konto på {domain} er i øjeblikket ikke muligt, men husk på, at du ikke behøver en konto specifikt på {domain} for at bruge Mastodon.", + "closed_registrations_modal.find_another_server": "Find en anden server", + "closed_registrations_modal.preamble": "Mastodon er decentraliseret, så uanset hvor du opretter din konto, vil du være i stand til at følge og interagere med nogen på denne server. Du kan endda selv være vært for den!", + "closed_registrations_modal.title": "Oprettelse på Mastodon", "column.about": "Om", "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", @@ -258,15 +259,15 @@ "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gemt", - "getting_started.directory": "Mappe", - "getting_started.documentation": "Dokumentation", - "getting_started.free_software_notice": "Mastodon er gratis, open-source software. Kildekoden kan ses, bidrages til eller problemer kan indrapporteres på {repository}.", "getting_started.heading": "Startmenu", - "getting_started.invite": "Invitér folk", - "getting_started.privacy_policy": "Fortrolighedspolitik", - "getting_started.security": "Kontoindstillinger", - "getting_started.what_is_mastodon": "Om Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uden {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?", "mute_modal.indefinite": "Tidsubegrænset", "navigation_bar.about": "Om", - "navigation_bar.apps": "Hent appen", "navigation_bar.blocks": "Blokerede brugere", "navigation_bar.bookmarks": "Bogmærker", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Tavsgjorte ord", "navigation_bar.follow_requests": "Følgeanmodninger", "navigation_bar.follows_and_followers": "Følges og følgere", - "navigation_bar.info": "Om", - "navigation_bar.keyboard_shortcuts": "Genvejstaster", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Log af", "navigation_bar.mutes": "Tavsgjorte brugere", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Fastgjorte indlæg", "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", - "navigation_bar.search": "Search", + "navigation_bar.search": "Søg", "navigation_bar.security": "Sikkerhed", "not_signed_in_indicator.not_signed_in": "Man skal logge ind for at tilgå denne ressource.", "notification.admin.report": "{name} anmeldte {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Regelovertrædelse", "report_notification.open": "Åbn anmeldelse", "search.placeholder": "Søg", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avanceret søgeformat", "search_popout.tips.full_text": "Simpel tekst returnerer indlæg, du har skrevet, favoritmarkeret, boostet eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Ingen har endnu boostet dette indlæg. Når nogen gør, vil det fremgå hér.", "status.redraft": "Slet og omformulér", "status.remove_bookmark": "Fjern bogmærke", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Besvarede {name}", "status.reply": "Besvar", "status.replyAll": "Besvar alle", "status.report": "Anmeld @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Vis mere for alle", "status.show_original": "Vis original", "status.translate": "Oversæt", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Oversat fra {lang} ved brug af {provider}", "status.uncached_media_warning": "Utilgængelig", "status.unmute_conversation": "Genaktivér samtale", "status.unpin": "Frigør fra profil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Klargør OCR…", "upload_modal.preview_label": "Forhåndsvisning ({ratio})", "upload_progress.label": "Uploader...", + "upload_progress.processing": "Processing…", "video.close": "Luk video", "video.download": "Download fil", "video.exit_fullscreen": "Forlad fuldskærm", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index c0f385b666..52918f333f 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -1,16 +1,17 @@ { "about.blocks": "Moderierte Server", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Begründung", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon erlaubt es dir generell, mit Inhalten zu interagieren, diese anzuzeigen und mit anderen Nutzern im Fediversum über Server hinweg zu interagieren. Dies sind die Ausnahmen, die auf diesem bestimmten Server gemacht wurden.", + "about.domain_blocks.preamble": "Mastodon erlaubt es dir grundsätzlich, alle Inhalte von allen Nutzer*innen auf allen Servern im Fediversum zu sehen und mit ihnen zu interagieren. Für diese Instanz gibt es aber ein paar Ausnahmen.", "about.domain_blocks.severity": "Schweregrad", - "about.domain_blocks.silenced.explanation": "In der Regel werden Sie keine Profile und Inhalte von diesem Server sehen, es sei denn, Sie suchen explizit danach oder entscheiden sich für diesen Server, indem Sie ihm folgen.", + "about.domain_blocks.silenced.explanation": "Alle Inhalte dieses Servers sind stumm geschaltet und werden zunächst nicht angezeigt. Du kannst die Profile und anderen Inhalte aber dennoch manuell aufrufen – oder Du folgst einer Person dieser Mastodon-Instanz.", "about.domain_blocks.silenced.title": "Limitiert", - "about.domain_blocks.suspended.explanation": "Es werden keine Daten von diesem Server verarbeitet, gespeichert oder ausgetauscht, so dass eine Interaktion oder Kommunikation mit Nutzern dieses Servers nicht möglich ist.", + "about.domain_blocks.suspended.explanation": "Es werden keine Daten von diesem Server verarbeitet, gespeichert oder ausgetauscht, sodass eine Interaktion oder Kommunikation mit Nutzer*innen dieses Servers nicht möglich ist.", "about.domain_blocks.suspended.title": "Gesperrt", "about.not_available": "Diese Informationen sind auf diesem Server nicht verfügbar.", - "about.powered_by": "Dezentrale soziale Medien betrieben von {mastodon}", + "about.powered_by": "Ein dezentralisiertes soziales Netzwerk, angetrieben von {mastodon}", "about.rules": "Serverregeln", "account.account_note_header": "Notiz", "account.add_or_remove_from_list": "Hinzufügen oder Entfernen von Listen", @@ -20,31 +21,31 @@ "account.block_domain": "Alles von {domain} verstecken", "account.blocked": "Blockiert", "account.browse_more_on_origin_server": "Mehr auf dem Originalprofil durchsuchen", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Folgeanfrage abbrechen", "account.direct": "Direktnachricht an @{name}", "account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet", "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", - "account.endorse": "Auf Profil hervorheben", + "account.endorse": "Account in meinem Profil empfehlen", "account.featured_tags.last_status_at": "Letzter Beitrag am {date}", "account.featured_tags.last_status_never": "Keine Beiträge", - "account.featured_tags.title": "{name}'s vorgestellte Hashtags", + "account.featured_tags.title": "Von {name} vorgestellte Hashtags", "account.follow": "Folgen", "account.followers": "Follower", "account.followers.empty": "Diesem Profil folgt noch niemand.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}", - "account.following": "Folgt", + "account.following": "Folge ich", "account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}", - "account.follows.empty": "Diesem Profil folgt niemand", + "account.follows.empty": "Dieses Profil folgt noch niemandem.", "account.follows_you": "Folgt dir", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", - "account.joined_short": "Joined", + "account.joined_short": "Beigetreten", "account.languages": "Abonnierte Sprachen ändern", - "account.link_verified_on": "Diesem Profil folgt niemand", + "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt", "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", - "account.mention": "@{name} erwähnen", + "account.mention": "@{name} im Beitrag erwähnen", "account.moved_to": "{name} ist umgezogen nach:", "account.mute": "@{name} stummschalten", "account.mute_notifications": "Benachrichtigungen von @{name} stummschalten", @@ -52,65 +53,65 @@ "account.posts": "Beiträge", "account.posts_with_replies": "Beiträge und Antworten", "account.report": "@{name} melden", - "account.requested": "Warte auf Erlaubnis. Klicke zum Abbrechen", + "account.requested": "Warte auf Genehmigung. Klicke hier, um die Anfrage zum Folgen abzubrechen", "account.share": "Profil von @{name} teilen", - "account.show_reblogs": "Von @{name} geteilte Beiträge anzeigen", + "account.show_reblogs": "Geteilte Beiträge von @{name} wieder anzeigen", "account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}", - "account.unblock": "Blockierung von @{name} aufheben", - "account.unblock_domain": "{domain} wieder anzeigen", + "account.unblock": "@{name} entblocken", + "account.unblock_domain": "Entblocken von {domain}", "account.unblock_short": "Blockierung aufheben", - "account.unendorse": "Nicht mehr im Profil anzeigen", + "account.unendorse": "Account nicht länger in meinem Profil empfehlen", "account.unfollow": "Entfolgen", "account.unmute": "Stummschaltung von @{name} aufheben", - "account.unmute_notifications": "Benachrichtigungen von @{name} einschalten", + "account.unmute_notifications": "Stummschaltung der Benachrichtigungen von @{name} aufheben", "account.unmute_short": "Stummschaltung aufheben", "account_note.placeholder": "Notiz durch Klicken hinzufügen", "admin.dashboard.daily_retention": "Benutzerverbleibrate nach Tag nach Anmeldung", "admin.dashboard.monthly_retention": "Benutzerverbleibrate nach Monat nach Anmeldung", "admin.dashboard.retention.average": "Durchschnitt", - "admin.dashboard.retention.cohort": "Monat der Anmeldung", + "admin.dashboard.retention.cohort": "Monat der Registrierung", "admin.dashboard.retention.cohort_size": "Neue Benutzer", "alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium} erneut.", "alert.rate_limited.title": "Anfragelimit überschritten", "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.", - "alert.unexpected.title": "Hoppla!", + "alert.unexpected.title": "Ups!", "announcement.announcement": "Ankündigung", "attachments_list.unprocessed": "(ausstehend)", "audio.hide": "Audio stummschalten", "autosuggest_hashtag.per_week": "{count} pro Woche", - "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen", + "boost_modal.combo": "Mit {combo} wird dieses Fenster beim nächsten Mal nicht mehr angezeigt", "bundle_column_error.copy_stacktrace": "Fehlerbericht kopieren", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.body": "Die angeforderte Seite konnte nicht dargestellt werden. Dies könnte auf einen Fehler in unserem Code oder auf ein Browser-Kompatibilitätsproblem zurückzuführen sein.", "bundle_column_error.error.title": "Oh nein!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.body": "Beim Versuch, diese Seite zu laden, ist ein Fehler aufgetreten. Dies könnte auf ein vorübergehendes Problem mit Ihrer Internetverbindung oder diesem Server zurückzuführen sein.", "bundle_column_error.network.title": "Netzwerkfehler", "bundle_column_error.retry": "Erneut versuchen", "bundle_column_error.return": "Zurück zur Startseite", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.body": "Die angeforderte Seite konnte nicht gefunden werden. Sind Sie sicher, dass die URL in der Adressleiste korrekt ist?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Schließen", "bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.", "bundle_modal_error.retry": "Erneut versuchen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Da Mastodon dezentralisiert ist, können Sie ein Konto auf einem anderen Server erstellen und trotzdem mit diesem Server interagieren.", + "closed_registrations_modal.description": "Das Anlegen eines Kontos auf {domain} ist derzeit nicht möglich, aber bedenken Sie bitte, dass Sie kein spezielles Konto auf {domain} benötigen, um Mastodon nutzen zu können.", + "closed_registrations_modal.find_another_server": "Einen anderen Server auswählen", + "closed_registrations_modal.preamble": "Mastodon ist dezentralisiert, d.h. unabhängig davon, wo Sie Ihr Konto erstellen, können Sie jedem auf diesem Server folgen und mit ihm interagieren. Sie können ihn sogar selbst hosten!", + "closed_registrations_modal.title": "Bei Mastodon registrieren", "column.about": "Über", "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", - "column.community": "Lokale Zeitleiste", + "column.community": "Lokale Timeline", "column.direct": "Direktnachrichten", "column.directory": "Profile durchsuchen", "column.domain_blocks": "Blockierte Domains", "column.favourites": "Favoriten", - "column.follow_requests": "Folgeanfragen", + "column.follow_requests": "Follower-Anfragen", "column.home": "Startseite", "column.lists": "Listen", "column.mutes": "Stummgeschaltete Profile", "column.notifications": "Mitteilungen", "column.pins": "Angeheftete Beiträge", - "column.public": "Föderierte Zeitleiste", + "column.public": "Föderierte Chronik", "column_back_button.label": "Zurück", "column_header.hide_settings": "Einstellungen verbergen", "column_header.moveLeft_settings": "Spalte nach links verschieben", @@ -119,46 +120,46 @@ "column_header.show_settings": "Einstellungen anzeigen", "column_header.unpin": "Lösen", "column_subheading.settings": "Einstellungen", - "community.column_settings.local_only": "Nur lokal", - "community.column_settings.media_only": "Nur Medien", - "community.column_settings.remote_only": "Nur entfernt", - "compose.language.change": "Sprache ändern", - "compose.language.search": "Sprachen durchsuchen...", + "community.column_settings.local_only": "Nur lokale Instanz", + "community.column_settings.media_only": "Nur Beiträge mit angehängten Medien", + "community.column_settings.remote_only": "Nur andere Mastodon-Instanzen anzeigen", + "compose.language.change": "Sprache festlegen", + "compose.language.search": "Sprachen suchen …", "compose_form.direct_message_warning_learn_more": "Mehr erfahren", "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Informationen über Mastodon.", - "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.", - "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", - "compose_form.lock_disclaimer.lock": "gesperrt", + "compose_form.hashtag_warning": "Dieser Beitrag ist über Hashtags nicht zu finden, weil er nicht gelistet ist. Nur öffentliche Beiträge tauchen in den Hashtag-Chroniken auf.", + "compose_form.lock_disclaimer": "Dein Account ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", + "compose_form.lock_disclaimer.lock": "geschützt", "compose_form.placeholder": "Was gibt's Neues?", - "compose_form.poll.add_option": "Eine Wahl hinzufügen", + "compose_form.poll.add_option": "Auswahlfeld hinzufügen", "compose_form.poll.duration": "Umfragedauer", - "compose_form.poll.option_placeholder": "Wahl {number}", - "compose_form.poll.remove_option": "Wahl entfernen", - "compose_form.poll.switch_to_multiple": "Umfrage ändern, um mehrere Optionen zu erlauben", - "compose_form.poll.switch_to_single": "Umfrage ändern, sodass nur eine einzige Auswahl erlaubt ist", + "compose_form.poll.option_placeholder": "{number}. Auswahl", + "compose_form.poll.remove_option": "Auswahlfeld entfernen", + "compose_form.poll.switch_to_multiple": "Mehrfachauswahl erlauben", + "compose_form.poll.switch_to_single": "Nur Einzelauswahl erlauben", "compose_form.publish": "Veröffentlichen", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Änderungen speichern", - "compose_form.sensitive.hide": "Medien als NSFW markieren", - "compose_form.sensitive.marked": "Medien sind als NSFW markiert", - "compose_form.sensitive.unmarked": "Medien sind nicht als NSFW markiert", - "compose_form.spoiler.marked": "Text ist hinter einer Warnung versteckt", - "compose_form.spoiler.unmarked": "Text ist nicht versteckt", + "compose_form.sensitive.hide": "{count, plural, one {Mit einer Inhaltswarnung versehen} other {Mit einer Inhaltswarnung versehen}}", + "compose_form.sensitive.marked": "{count, plural, one {Medien-Datei ist mit einer Inhaltswarnung versehen} other {Medien-Dateien sind mit einer Inhaltswarnung versehen}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Medien-Datei ist nicht mit einer Inhaltswarnung versehen} other {Medien-Dateien sind nicht mit einer Inhaltswarnung versehen}}", + "compose_form.spoiler.marked": "Inhaltswarnung bzw. Triggerwarnung entfernen", + "compose_form.spoiler.unmarked": "Inhaltswarnung bzw. Triggerwarnung hinzufügen", "compose_form.spoiler_placeholder": "Inhaltswarnung", "confirmation_modal.cancel": "Abbrechen", "confirmations.block.block_and_report": "Blockieren und melden", "confirmations.block.confirm": "Blockieren", "confirmations.block.message": "Bist du dir sicher, dass du {name} blockieren möchtest?", - "confirmations.cancel_follow_request.confirm": "Anfrage zurückziehen", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Anfrage zum Folgen zurückziehen", + "confirmations.cancel_follow_request.message": "Möchtest du deine Anfrage, {name} zu folgen, wirklich zurückziehen?", "confirmations.delete.confirm": "Löschen", "confirmations.delete.message": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", "confirmations.delete_list.confirm": "Löschen", "confirmations.delete_list.message": "Bist du dir sicher, dass du diese Liste permanent löschen möchtest?", "confirmations.discard_edit_media.confirm": "Verwerfen", "confirmations.discard_edit_media.message": "Du hast ungespeicherte Änderungen an der Medienbeschreibung oder der Medienvorschau. Trotzdem verwerfen?", - "confirmations.domain_block.confirm": "Die ganze Domain blockieren", - "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Deine Folgenden von dieser Domain werden entfernt.", + "confirmations.domain_block.confirm": "Domain blockieren", + "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Auch deine Follower von dieser Domain werden entfernt.", "confirmations.logout.confirm": "Abmelden", "confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?", "confirmations.mute.confirm": "Stummschalten", @@ -174,11 +175,11 @@ "conversation.mark_as_read": "Als gelesen markieren", "conversation.open": "Unterhaltung anzeigen", "conversation.with": "Mit {names}", - "copypaste.copied": "Kopiert", - "copypaste.copy": "Kopieren", + "copypaste.copied": "In die Zwischenablage kopiert", + "copypaste.copy": "In die Zwischenablage kopieren", "directory.federated": "Aus dem Fediverse", - "directory.local": "Nur von {domain}", - "directory.new_arrivals": "Neue Benutzer", + "directory.local": "Nur von der Domain {domain}", + "directory.new_arrivals": "Neue Profile", "directory.recently_active": "Kürzlich aktiv", "dismissable_banner.community_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen, deren Konten von {domain} gehostet werden.", "dismissable_banner.dismiss": "Ablehnen", @@ -186,43 +187,43 @@ "dismissable_banner.explore_statuses": "Diese Beiträge von diesem und anderen Servern im dezentralen Netzwerk gewinnen gerade an Reichweite auf diesem Server.", "dismissable_banner.explore_tags": "Diese Hashtags gewinnen gerade unter den Leuten auf diesem und anderen Servern des dezentralen Netzwerkes an Reichweite.", "dismissable_banner.public_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen auf diesem und anderen Servern des dezentralen Netzwerks, die dieser Server kennt.", - "embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, indem du den folgenden Code einfügst.", - "embed.preview": "So wird es aussehen:", + "embed.instructions": "Du kannst diesen Beitrag außerhalb des Fediverse (z. B. auf deiner Website) einbetten, indem du diesen iFrame-Code einfügst.", + "embed.preview": "Vorschau:", "emoji_button.activity": "Aktivitäten", "emoji_button.clear": "Leeren", - "emoji_button.custom": "Eigene", + "emoji_button.custom": "Spezielle Emojis dieses Servers", "emoji_button.flags": "Flaggen", - "emoji_button.food": "Essen und Trinken", + "emoji_button.food": "Essen & Trinken", "emoji_button.label": "Emoji einfügen", "emoji_button.nature": "Natur", - "emoji_button.not_found": "Keine Emojis!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Keine passenden Emojis gefunden", "emoji_button.objects": "Gegenstände", "emoji_button.people": "Personen", - "emoji_button.recent": "Häufig benutzt", - "emoji_button.search": "Suchen…", + "emoji_button.recent": "Häufig benutzte Emojis", + "emoji_button.search": "Nach Emojis suchen …", "emoji_button.search_results": "Suchergebnisse", "emoji_button.symbols": "Symbole", - "emoji_button.travel": "Reisen und Orte", - "empty_column.account_suspended": "Konto gesperrt", - "empty_column.account_timeline": "Keine Beiträge!", - "empty_column.account_unavailable": "Konto nicht verfügbar", - "empty_column.blocks": "Du hast keine Profile blockiert.", + "emoji_button.travel": "Reisen & Orte", + "empty_column.account_suspended": "Account dauerhaft gesperrt", + "empty_column.account_timeline": "Keine Beiträge vorhanden!", + "empty_column.account_unavailable": "Profil nicht verfügbar", + "empty_column.blocks": "Du hast bisher keine Profile blockiert.", "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Lesezeichen gespeichert. Wenn du einen Beitrag als Lesezeichen speicherst wird er hier erscheinen.", - "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!", + "empty_column.community": "Die lokale Chronik ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!", "empty_column.direct": "Du hast noch keine Direktnachrichten. Sobald du eine sendest oder empfängst, wird sie hier zu sehen sein.", - "empty_column.domain_blocks": "Es sind noch keine Domains versteckt.", + "empty_column.domain_blocks": "Du hast noch keine Domains blockiert.", "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder vorbei!", - "empty_column.favourited_statuses": "Du hast noch keine favorisierten Tröts. Wenn du einen favorisierst, wird er hier erscheinen.", + "empty_column.favourited_statuses": "Du hast noch keine Beiträge favorisiert. Wenn du einen favorisierst, wird er hier erscheinen.", "empty_column.favourites": "Noch niemand hat diesen Beitrag favorisiert. Sobald es jemand tut, wird das hier angezeigt.", "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen, nach Leuten zu suchen, die du vielleicht kennst, oder du kannst angesagte Hashtags erkunden.", - "empty_column.follow_requests": "Du hast noch keine Folge-Anfragen. Sobald du eine erhältst, wird sie hier angezeigt.", + "empty_column.follow_requests": "Du hast noch keine Follower-Anfragen erhalten. Sobald du eine erhältst, wird sie hier angezeigt.", "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", - "empty_column.home": "Deine Startseite ist leer! Folge mehr Leuten, um sie zu füllen. {suggestions}", + "empty_column.home": "Die Timeline Deiner Startseite ist leer! Folge mehr Leuten, um sie zu füllen. {suggestions}", "empty_column.home.suggestions": "Ein paar Vorschläge ansehen", "empty_column.list": "Diese Liste ist derzeit leer. Wenn Konten auf dieser Liste neue Beiträge veröffentlichen werden sie hier erscheinen.", "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt werden.", "empty_column.mutes": "Du hast keine Profile stummgeschaltet.", - "empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.", + "empty_column.notifications": "Du hast noch keine Mitteilungen. Sobald Du mit anderen Personen interagierst, wirst Du hier darüber benachrichtigt.", "empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Servern, um die Zeitleiste aufzufüllen", "error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browser-Inkompatibilität konnte diese Seite nicht korrekt angezeigt werden.", "error.unexpected_crash.explanation_addons": "Diese Seite konnte nicht korrekt angezeigt werden. Dieser Fehler wird wahrscheinlich durch ein Browser-Add-on oder automatische Übersetzungswerkzeuge verursacht.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Erlauben", "follow_request.reject": "Ablehnen", "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Moderator_innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gespeichert", - "getting_started.directory": "Verzeichnis", - "getting_started.documentation": "Dokumentation", - "getting_started.free_software_notice": "Mastodon ist kostenlos, Open-Source-Software. Sie können den Quellcode einsehen, beisteuern oder Fehler melden unter {repository}.", "getting_started.heading": "Erste Schritte", - "getting_started.invite": "Leute einladen", - "getting_started.privacy_policy": "Datenschutzerklärung", - "getting_started.security": "Konto & Sicherheit", - "getting_started.what_is_mastodon": "Über Mastodon", "hashtag.column_header.tag_mode.all": "und {additional}", "hashtag.column_header.tag_mode.any": "oder {additional}", "hashtag.column_header.tag_mode.none": "ohne {additional}", @@ -281,11 +282,11 @@ "home.column_settings.basic": "Einfach", "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen", "home.column_settings.show_replies": "Antworten anzeigen", - "home.hide_announcements": "Verstecke Ankündigungen", - "home.show_announcements": "Zeige Ankündigungen", + "home.hide_announcements": "Ankündigungen verbergen", + "home.show_announcements": "Ankündigungen anzeigen", "interaction_modal.description.favourite": "Mit einem Account auf Mastodon können Sie diesen Beitrag favorisieren, um dem Autor mitzuteilen, dass Sie den Beitrag schätzen und ihn für einen späteren Zeitpunkt speichern.", "interaction_modal.description.follow": "Mit einem Konto auf Mastodon kannst du {name} folgen, um seine Beiträge in deinem Home Feed zu erhalten.", - "interaction_modal.description.reblog": "Mit einem Account auf Mastodon, kannst du diesen Beitrag boosten um ihn mit deinen eigenen Followern teilen.", + "interaction_modal.description.reblog": "Mit einem Mastodon-Account kannst du die Reichweite dieses Beitrags erhöhen, in dem du ihn mit deinen eigenen Followern teilst.", "interaction_modal.description.reply": "Mit einem Account auf Mastodon können Sie auf diesen Beitrag antworten.", "interaction_modal.on_another_server": "Auf einem anderen Server", "interaction_modal.on_this_server": "Auf diesem Server", @@ -293,7 +294,7 @@ "interaction_modal.preamble": "Da Mastodon dezentralisiert ist, kannst du dein bestehendes Konto auf einem anderen Mastodon-Server oder einer kompatiblen Plattform nutzen, wenn du kein Konto auf dieser Plattform hast.", "interaction_modal.title.favourite": "Lieblingsbeitrag von {name}", "interaction_modal.title.follow": "Folge {name}", - "interaction_modal.title.reblog": "Erhöhe {name}'s Beitrag", + "interaction_modal.title.reblog": "Beitrag von {name} teilen", "interaction_modal.title.reply": "Antworte auf den Post von {name}", "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}", "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}", @@ -304,32 +305,32 @@ "keyboard_shortcuts.column": "einen Beitrag in einer der Spalten fokussieren", "keyboard_shortcuts.compose": "fokussiere das Eingabefeld", "keyboard_shortcuts.description": "Beschreibung", - "keyboard_shortcuts.direct": "um Direktnachrichtenspalte zu öffnen", + "keyboard_shortcuts.direct": "um die Spalte mit den Direktnachrichten zu öffnen", "keyboard_shortcuts.down": "sich in der Liste hinunter bewegen", "keyboard_shortcuts.enter": "Beitrag öffnen", - "keyboard_shortcuts.favourite": "um zu favorisieren", + "keyboard_shortcuts.favourite": "favorisieren", "keyboard_shortcuts.favourites": "Favoriten-Liste öffnen", - "keyboard_shortcuts.federated": "Föderierte Zeitleiste öffnen", + "keyboard_shortcuts.federated": "Föderierte Chronik öffnen", "keyboard_shortcuts.heading": "Tastenkombinationen", "keyboard_shortcuts.home": "Startseite öffnen", "keyboard_shortcuts.hotkey": "Tastenkürzel", "keyboard_shortcuts.legend": "diese Übersicht anzeigen", - "keyboard_shortcuts.local": "Lokale Zeitleiste öffnen", - "keyboard_shortcuts.mention": "um Autor_in zu erwähnen", + "keyboard_shortcuts.local": "Lokale Chronik öffnen", + "keyboard_shortcuts.mention": "Profil erwähnen", "keyboard_shortcuts.muted": "Liste stummgeschalteter Profile öffnen", "keyboard_shortcuts.my_profile": "Dein Profil öffnen", "keyboard_shortcuts.notifications": "Benachrichtigungsspalte öffnen", - "keyboard_shortcuts.open_media": "um Medien zu öffnen", + "keyboard_shortcuts.open_media": "Medien-Datei öffnen", "keyboard_shortcuts.pinned": "Liste angehefteter Beiträge öffnen", "keyboard_shortcuts.profile": "Profil des Autors öffnen", "keyboard_shortcuts.reply": "antworten", - "keyboard_shortcuts.requests": "Liste der Folge-Anfragen öffnen", + "keyboard_shortcuts.requests": "Liste der Follower-Anfragen öffnen", "keyboard_shortcuts.search": "Suche fokussieren", - "keyboard_shortcuts.spoilers": "um CW-Feld anzuzeigen/auszublenden", + "keyboard_shortcuts.spoilers": "Feld für Inhaltswarnung bzw. Triggerwarnung anzeigen/ausblenden", "keyboard_shortcuts.start": "\"Erste Schritte\"-Spalte öffnen", - "keyboard_shortcuts.toggle_hidden": "Text hinter einer Inhaltswarnung verstecken/anzeigen", + "keyboard_shortcuts.toggle_hidden": "Beitragstext hinter der Inhaltswarnung bzw. Triggerwarnung verstecken/anzeigen", "keyboard_shortcuts.toggle_sensitivity": "Medien hinter einer Inhaltswarnung verstecken/anzeigen", - "keyboard_shortcuts.toot": "einen neuen Beitrag beginnen", + "keyboard_shortcuts.toot": "Neuen Beitrag erstellen", "keyboard_shortcuts.unfocus": "Textfeld/die Suche nicht mehr fokussieren", "keyboard_shortcuts.up": "sich in der Liste hinauf bewegen", "lightbox.close": "Schließen", @@ -338,7 +339,7 @@ "lightbox.next": "Weiter", "lightbox.previous": "Zurück", "limited_account_hint.action": "Profil trotzdem anzeigen", - "limited_account_hint.title": "Dieses Profil wurde von den Moderatoren deines Servers versteckt.", + "limited_account_hint.title": "Dieses Profil wurde durch die Moderator*innen deiner Mastodon-Instanz ausgeblendet.", "lists.account.add": "Zur Liste hinzufügen", "lists.account.remove": "Von der Liste entfernen", "lists.delete": "Liste löschen", @@ -361,40 +362,37 @@ "mute_modal.hide_notifications": "Benachrichtigungen von diesem Account verbergen?", "mute_modal.indefinite": "Unbestimmt", "navigation_bar.about": "Über", - "navigation_bar.apps": "App downloaden", "navigation_bar.blocks": "Blockierte Profile", "navigation_bar.bookmarks": "Lesezeichen", - "navigation_bar.community_timeline": "Lokale Zeitleiste", + "navigation_bar.community_timeline": "Lokale Chronik", "navigation_bar.compose": "Neuen Beitrag verfassen", "navigation_bar.direct": "Direktnachrichten", "navigation_bar.discover": "Entdecken", - "navigation_bar.domain_blocks": "Versteckte Domains", + "navigation_bar.domain_blocks": "Blockierte Domains", "navigation_bar.edit_profile": "Profil bearbeiten", "navigation_bar.explore": "Entdecken", "navigation_bar.favourites": "Favoriten", - "navigation_bar.filters": "Stummgeschaltene Wörter", - "navigation_bar.follow_requests": "Folgeanfragen", - "navigation_bar.follows_and_followers": "Folgende und Gefolgte", - "navigation_bar.info": "Über", - "navigation_bar.keyboard_shortcuts": "Tastenkombinationen", + "navigation_bar.filters": "Stummgeschaltete Wörter", + "navigation_bar.follow_requests": "Follower-Anfragen", + "navigation_bar.follows_and_followers": "Folge ich und Follower", "navigation_bar.lists": "Listen", "navigation_bar.logout": "Abmelden", "navigation_bar.mutes": "Stummgeschaltete Profile", "navigation_bar.personal": "Persönlich", "navigation_bar.pins": "Angeheftete Beiträge", "navigation_bar.preferences": "Einstellungen", - "navigation_bar.public_timeline": "Föderierte Zeitleiste", - "navigation_bar.search": "Search", + "navigation_bar.public_timeline": "Föderierte Chronik", + "navigation_bar.search": "Suche", "navigation_bar.security": "Sicherheit", "not_signed_in_indicator.not_signed_in": "Sie müssen sich anmelden, um diese Funktion zu nutzen.", "notification.admin.report": "{target} wurde von {name} gemeldet", "notification.admin.sign_up": "{name} hat sich registriert", "notification.favourite": "{name} hat deinen Beitrag favorisiert", - "notification.follow": "{name} folgt dir", + "notification.follow": "{name} folgt dir jetzt", "notification.follow_request": "{name} möchte dir folgen", "notification.mention": "{name} hat dich erwähnt", "notification.own_poll": "Deine Umfrage ist beendet", - "notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist vorbei", + "notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet", "notification.reblog": "{name} hat deinen Beitrag geteilt", "notification.status": "{name} hat gerade etwas gepostet", "notification.update": "{name} bearbeitete einen Beitrag", @@ -407,8 +405,8 @@ "notifications.column_settings.filter_bar.advanced": "Zeige alle Kategorien an", "notifications.column_settings.filter_bar.category": "Schnellfilterleiste", "notifications.column_settings.filter_bar.show_bar": "Filterleiste anzeigen", - "notifications.column_settings.follow": "Neue Folgende:", - "notifications.column_settings.follow_request": "Neue Folgeanfragen:", + "notifications.column_settings.follow": "Neue Follower:", + "notifications.column_settings.follow_request": "Neue Follower-Anfragen:", "notifications.column_settings.mention": "Erwähnungen:", "notifications.column_settings.poll": "Ergebnisse von Umfragen:", "notifications.column_settings.push": "Push-Benachrichtigungen", @@ -428,7 +426,7 @@ "notifications.filter.statuses": "Updates von Personen, denen du folgst", "notifications.grant_permission": "Berechtigung erteilen.", "notifications.group": "{count} Benachrichtigungen", - "notifications.mark_as_read": "Alle Benachrichtigungen als gelesen markieren", + "notifications.mark_as_read": "Alles als gelesen markieren", "notifications.permission_denied": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Berechtigung verweigert wurde.", "notifications.permission_denied_alert": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Browser-Berechtigung zuvor verweigert wurde", "notifications.permission_required": "Desktop-Benachrichtigungen sind nicht verfügbar, da die erforderliche Berechtigung nicht erteilt wurde.", @@ -436,19 +434,19 @@ "notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.", "notifications_permission_banner.title": "Verpasse nie etwas", "picture_in_picture.restore": "Zurücksetzen", - "poll.closed": "Geschlossen", + "poll.closed": "Beendet", "poll.refresh": "Aktualisieren", "poll.total_people": "{count, plural, one {# Person} other {# Personen}}", "poll.total_votes": "{count, plural, one {# Stimme} other {# Stimmen}}", "poll.vote": "Abstimmen", - "poll.voted": "Du hast dafür gestimmt", + "poll.voted": "Du hast für diese Auswahl gestimmt", "poll.votes": "{votes, plural, one {# Stimme} other {# Stimmen}}", "poll_button.add_poll": "Eine Umfrage erstellen", "poll_button.remove_poll": "Umfrage entfernen", "privacy.change": "Sichtbarkeit des Beitrags anpassen", - "privacy.direct.long": "Wird an erwähnte Profile gesendet", - "privacy.direct.short": "Nur erwähnte Personen", - "privacy.private.long": "Nur für Folgende sichtbar", + "privacy.direct.long": "Nur für im Beitrag erwähnte Mastodon-Profile sichtbar", + "privacy.direct.short": "Nur erwähnte Profile", + "privacy.private.long": "Nur für deine Follower sichtbar", "privacy.private.short": "Nur Follower", "privacy.public.long": "Für alle sichtbar", "privacy.public.short": "Öffentlich", @@ -514,22 +512,23 @@ "report_notification.categories.violation": "Regelbruch", "report_notification.open": "Meldung öffnen", "search.placeholder": "Suche", - "search_popout.search_format": "Fortgeschrittenes Suchformat", + "search.search_or_paste": "Search or paste URL", + "search_popout.search_format": "Erweiterte Suche", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast, zurück; außerdem auch Beiträge, in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", "search_popout.tips.hashtag": "Hashtag", - "search_popout.tips.status": "Tröt", + "search_popout.tips.status": "Beitrag", "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück", - "search_popout.tips.user": "Nutzer", - "search_results.accounts": "Personen", + "search_popout.tips.user": "Profil", + "search_results.accounts": "Profile", "search_results.all": "Alle", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Nichts für diese Suchbegriffe gefunden", "search_results.statuses": "Beiträge", "search_results.statuses_fts_disabled": "Die Suche für Beiträge nach ihrem Inhalt ist auf diesem Mastodon-Server deaktiviert.", - "search_results.title": "Suchen nach {q}", + "search_results.title": "Suchergebnisse für {q}", "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}", - "server_banner.about_active_users": "Personen, die diesen Server in den letzten 30 Tagen genutzt haben (monatlich aktive Benutzer)", - "server_banner.active_users": "aktive Benutzer", + "server_banner.about_active_users": "Personen, die diesen Server in den vergangenen 30 Tagen genutzt haben (monatlich aktive Benutzer*innen)", + "server_banner.active_users": "aktive Profile", "server_banner.administered_by": "Verwaltet von:", "server_banner.introduction": "{domain} ist Teil des dezentralen sozialen Netzwerks, das von {mastodon} betrieben wird.", "server_banner.learn_more": "Mehr erfahren", @@ -539,22 +538,22 @@ "sign_in_banner.text": "Melden Sie sich an, um Profilen oder Hashtags zu folgen, Favoriten, Teilen und Antworten auf Beiträge oder interagieren Sie von Ihrem Konto auf einem anderen Server.", "status.admin_account": "Öffne Moderationsoberfläche für @{name}", "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche", - "status.block": "Blockiere @{name}", - "status.bookmark": "Lesezeichen", - "status.cancel_reblog_private": "Nicht mehr teilen", + "status.block": "@{name} blockieren", + "status.bookmark": "Lesezeichen setzen", + "status.cancel_reblog_private": "Teilen des Beitrags rückgängig machen", "status.cannot_reblog": "Dieser Beitrag kann nicht geteilt werden", - "status.copy": "Kopiere Link zum Beitrag", - "status.delete": "Löschen", - "status.detailed_status": "Detaillierte Ansicht der Konversation", - "status.direct": "Direktnachricht @{name}", + "status.copy": "Kopiere Link des Beitrags", + "status.delete": "Beitrag löschen", + "status.detailed_status": "Detaillierte Ansicht der Unterhaltung", + "status.direct": "Direktnachricht an @{name}", "status.edit": "Bearbeiten", "status.edited": "Bearbeitet {date}", "status.edited_x_times": "{count, plural, one {{count} mal} other {{count} mal}} bearbeitet", - "status.embed": "Einbetten", + "status.embed": "Beitrag per iFrame einbetten", "status.favourite": "Favorisieren", "status.filter": "Diesen Beitrag filtern", "status.filtered": "Gefiltert", - "status.hide": "Tröt verbergen", + "status.hide": "Beitrag verbergen", "status.history.created": "{name} erstellte {date}", "status.history.edited": "{name} bearbeitete {date}", "status.load_more": "Weitere laden", @@ -562,7 +561,7 @@ "status.mention": "@{name} erwähnen", "status.more": "Mehr", "status.mute": "@{name} stummschalten", - "status.mute_conversation": "Konversation stummschalten", + "status.mute_conversation": "Unterhaltung stummschalten", "status.open": "Diesen Beitrag öffnen", "status.pin": "Im Profil anheften", "status.pinned": "Angehefteter Beitrag", @@ -570,14 +569,14 @@ "status.reblog": "Teilen", "status.reblog_private": "Mit der ursprünglichen Zielgruppe teilen", "status.reblogged_by": "{name} teilte", - "status.reblogs.empty": "Diesen Beitrag hat noch niemand geteilt. Sobald es jemand tut, wird diese Person hier angezeigt.", + "status.reblogs.empty": "Diesen Beitrag hat bisher noch niemand geteilt. Sobald es jemand tut, wird dieser Account hier angezeigt.", "status.redraft": "Löschen und neu erstellen", "status.remove_bookmark": "Lesezeichen entfernen", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Antwortete {name}", "status.reply": "Antworten", "status.replyAll": "Allen antworten", "status.report": "@{name} melden", - "status.sensitive_warning": "NSFW", + "status.sensitive_warning": "Inhaltswarnung (NSFW)", "status.share": "Teilen", "status.show_filter_reason": "Trotzdem anzeigen", "status.show_less": "Weniger anzeigen", @@ -586,18 +585,18 @@ "status.show_more_all": "Alle Inhaltswarnungen aufklappen", "status.show_original": "Original anzeigen", "status.translate": "Übersetzen", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Ins {lang}e mithilfe von {provider} übersetzt", "status.uncached_media_warning": "Nicht verfügbar", - "status.unmute_conversation": "Stummschaltung von Konversation aufheben", + "status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben", "status.unpin": "Vom Profil lösen", - "subscribed_languages.lead": "Nur Beiträge in ausgewählten Sprachen werden nach der Änderung auf deiner Startseite und den Listen angezeigt. Wähle keine aus, um Beiträge in allen Sprachen zu erhalten.", + "subscribed_languages.lead": "Nach der Änderung werden nur noch Beiträge in den ausgewählten Sprachen in den Timelines deiner Startseite und deiner Listen angezeigt. Wähle keine Sprache aus, um alle Beiträge zu sehen.", "subscribed_languages.save": "Änderungen speichern", "subscribed_languages.target": "Abonnierte Sprachen für {target} ändern", "suggestions.dismiss": "Empfehlung ausblenden", "suggestions.header": "Du bist vielleicht interessiert an…", - "tabs_bar.federated_timeline": "Föderation", + "tabs_bar.federated_timeline": "Vereinigte Timeline", "tabs_bar.home": "Startseite", - "tabs_bar.local_timeline": "Lokal", + "tabs_bar.local_timeline": "Lokale Timeline", "tabs_bar.notifications": "Mitteilungen", "time_remaining.days": "{number, plural, one {# Tag} other {# Tage}} verbleibend", "time_remaining.hours": "{number, plural, one {# Stunde} other {# Stunden}} verbleibend", @@ -606,7 +605,7 @@ "time_remaining.seconds": "{number, plural, one {# Sekunde} other {# Sekunden}} verbleibend", "timeline_hint.remote_resource_not_displayed": "{resource} von anderen Servern werden nicht angezeigt.", "timeline_hint.resources.followers": "Follower", - "timeline_hint.resources.follows": "Folgt", + "timeline_hint.resources.follows": "Folge ich", "timeline_hint.resources.statuses": "Ältere Beiträge", "trends.counter_by_accounts": "{count, plural, one {{count} Person} other {{count} Personen}} {days, plural, one {am vergangenen Tag} other {in den vergangenen {days} Tagen}}", "trends.trending_now": "In den Trends", @@ -619,12 +618,12 @@ "upload_error.limit": "Dateiupload-Limit erreicht.", "upload_error.poll": "Dateiuploads sind in Kombination mit Umfragen nicht erlaubt.", "upload_form.audio_description": "Beschreibe die Audiodatei für Menschen mit Hörschädigungen", - "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben", + "upload_form.description": "Bildbeschreibung für blinde und sehbehinderte Menschen", "upload_form.description_missing": "Keine Beschreibung hinzugefügt", "upload_form.edit": "Bearbeiten", "upload_form.thumbnail": "Miniaturansicht ändern", "upload_form.undo": "Löschen", - "upload_form.video_description": "Beschreibe das Video für Menschen mit einer Hör- oder Sehbehinderung", + "upload_form.video_description": "Beschreibung des Videos für taube und hörbehinderte Menschen", "upload_modal.analyzing_picture": "Analysiere Bild…", "upload_modal.apply": "Übernehmen", "upload_modal.applying": "Anwenden…", @@ -632,10 +631,11 @@ "upload_modal.description_placeholder": "Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich", "upload_modal.detect_text": "Text aus Bild erkennen", "upload_modal.edit_media": "Medien bearbeiten", - "upload_modal.hint": "Klicke oder ziehe den Kreis auf die Vorschau, um den Brennpunkt auszuwählen, der immer auf allen Vorschaubilder angezeigt wird.", + "upload_modal.hint": "Ziehe den Kreis auf die Stelle Deines Bildes, die bei Vorschaugrafiken in der Mitte stehen soll.", "upload_modal.preparing_ocr": "Vorbereitung von OCR…", "upload_modal.preview_label": "Vorschau ({ratio})", "upload_progress.label": "Wird hochgeladen …", + "upload_progress.processing": "Processing…", "video.close": "Video schließen", "video.download": "Datei herunterladen", "video.exit_fullscreen": "Vollbild verlassen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 9cca24d191..0e190a1e4d 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -897,6 +897,10 @@ { "defaultMessage": "Reason", "id": "about.domain_blocks.comment" + }, + { + "defaultMessage": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "id": "about.disclaimer" } ], "path": "app/javascript/mastodon/features/about/index.json" @@ -1640,6 +1644,10 @@ "defaultMessage": "Search", "id": "search.placeholder" }, + { + "defaultMessage": "Search or paste URL", + "id": "search.search_or_paste" + }, { "defaultMessage": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "id": "search_popout.tips.full_text" @@ -1678,12 +1686,16 @@ }, { "descriptors": [ + { + "defaultMessage": "Processing…", + "id": "upload_progress.processing" + }, { "defaultMessage": "Uploading…", "id": "upload_progress.label" } ], - "path": "app/javascript/mastodon/features/compose/components/upload_form.json" + "path": "app/javascript/mastodon/features/compose/components/upload_progress.json" }, { "descriptors": [ @@ -3959,49 +3971,33 @@ "defaultMessage": "Log out", "id": "confirmations.logout.confirm" }, - { - "defaultMessage": "Get the app", - "id": "navigation_bar.apps" - }, { "defaultMessage": "About", - "id": "navigation_bar.info" - }, - { - "defaultMessage": "About Mastodon", - "id": "getting_started.what_is_mastodon" + "id": "footer.about" }, { - "defaultMessage": "Documentation", - "id": "getting_started.documentation" - }, - { - "defaultMessage": "Privacy Policy", - "id": "getting_started.privacy_policy" + "defaultMessage": "Invite people", + "id": "footer.invite" }, { - "defaultMessage": "Hotkeys", - "id": "navigation_bar.keyboard_shortcuts" + "defaultMessage": "Profiles directory", + "id": "footer.directory" }, { - "defaultMessage": "Directory", - "id": "getting_started.directory" + "defaultMessage": "Privacy policy", + "id": "footer.privacy_policy" }, { - "defaultMessage": "Invite people", - "id": "getting_started.invite" - }, - { - "defaultMessage": "Security", - "id": "getting_started.security" + "defaultMessage": "Get the app", + "id": "footer.get_app" }, { - "defaultMessage": "Logout", - "id": "navigation_bar.logout" + "defaultMessage": "Keyboard shortcuts", + "id": "footer.keyboard_shortcuts" }, { - "defaultMessage": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", - "id": "getting_started.free_software_notice" + "defaultMessage": "View source code", + "id": "footer.source_code" } ], "path": "app/javascript/mastodon/features/ui/components/link_footer.json" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 6bf6cabaa5..88957939cc 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Επικοινωνία:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Τομέας (Domain)", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -95,7 +96,7 @@ "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.title": "Εγγραφή στο Mastodon", "column.about": "Σχετικά με", "column.blocks": "Αποκλεισμένοι χρήστες", "column.bookmarks": "Σελιδοδείκτες", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ενέκρινε", "follow_request.reject": "Απέρριψε", "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Αποθηκεύτηκε", - "getting_started.directory": "Κατάλογος", - "getting_started.documentation": "Τεκμηρίωση", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Αφετηρία", - "getting_started.invite": "Προσκάλεσε κόσμο", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Ασφάλεια", - "getting_started.what_is_mastodon": "Σχετικά με το Mastodon", "hashtag.column_header.tag_mode.all": "και {additional}", "hashtag.column_header.tag_mode.any": "ή {additional}", "hashtag.column_header.tag_mode.none": "χωρίς {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;", "mute_modal.indefinite": "Αόριστη", "navigation_bar.about": "Σχετικά με", - "navigation_bar.apps": "Αποκτήστε την Εφαρμογή", "navigation_bar.blocks": "Αποκλεισμένοι χρήστες", "navigation_bar.bookmarks": "Σελιδοδείκτες", "navigation_bar.community_timeline": "Τοπική ροή", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Αποσιωπημένες λέξεις", "navigation_bar.follow_requests": "Αιτήματα ακολούθησης", "navigation_bar.follows_and_followers": "Ακολουθείς και σε ακολουθούν", - "navigation_bar.info": "Σχετικά με", - "navigation_bar.keyboard_shortcuts": "Συντομεύσεις", "navigation_bar.lists": "Λίστες", "navigation_bar.logout": "Αποσύνδεση", "navigation_bar.mutes": "Αποσιωπημένοι χρήστες", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Καρφιτσωμένα τουτ", "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", - "navigation_bar.search": "Search", + "navigation_bar.search": "Αναζήτηση", "navigation_bar.security": "Ασφάλεια", "not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείτε για να αποκτήσετε πρόσβαση σε αυτόν τον πόρο.", "notification.admin.report": "{name} ανέφερε {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Παραβίαση κανόνα", "report_notification.open": "Open report", "search.placeholder": "Αναζήτηση", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Προχωρημένη αναζήτηση", "search_popout.tips.full_text": "Απλό κείμενο που επιστρέφει καταστάσεις που έχεις γράψει, έχεις σημειώσει ως αγαπημένες, έχεις προωθήσει ή έχεις αναφερθεί σε αυτές, καθώς και όσα ονόματα χρηστών και ετικέτες ταιριάζουν.", "search_popout.tips.hashtag": "ετικέτα", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Προετοιμασία αναγνώρισης κειμένου…", "upload_modal.preview_label": "Προεπισκόπηση ({ratio})", "upload_progress.label": "Ανεβαίνει...", + "upload_progress.processing": "Processing…", "video.close": "Κλείσε το βίντεο", "video.download": "Λήψη αρχείου", "video.exit_fullscreen": "Έξοδος από πλήρη οθόνη", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index c4bfc40b1d..6f4078306d 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 29b63ff0bd..7d5c192057 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Account settings", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns posts you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading...", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index cf66a5af36..3e258a6c8e 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -22,10 +23,10 @@ "account.browse_more_on_origin_server": "Foliumi pli ĉe la originala profilo", "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Rekte mesaĝi @{name}", - "account.disable_notifications": "Ne plu sciigi min kiam @{name} mesaĝas", + "account.disable_notifications": "Ne plu sciigi min, kiam @{name} mesaĝas", "account.domain_blocked": "Domajno blokita", "account.edit_profile": "Redakti la profilon", - "account.enable_notifications": "Sciigi min kiam @{name} mesaĝas", + "account.enable_notifications": "Sciigi min, kiam @{name} mesaĝas", "account.endorse": "Rekomendi ĉe via profilo", "account.featured_tags.last_status_at": "Last post on {date}", "account.featured_tags.last_status_never": "No posts", @@ -258,15 +259,15 @@ "follow_request.authorize": "Rajtigi", "follow_request.reject": "Rifuzi", "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensas, ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Konservita", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentado", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Por komenci", - "getting_started.invite": "Inviti homojn", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Sekureco", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "kaj {additional}", "hashtag.column_header.tag_mode.any": "aŭ {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?", "mute_modal.indefinite": "Nedifinita", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokitaj uzantoj", "navigation_bar.bookmarks": "Legosignoj", "navigation_bar.community_timeline": "Loka templinio", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Silentigitaj vortoj", "navigation_bar.follow_requests": "Demandoj de sekvado", "navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Rapidklavoj", "navigation_bar.lists": "Listoj", "navigation_bar.logout": "Adiaŭi", "navigation_bar.mutes": "Silentigitaj uzantoj", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Malobservo de la regulo", "report_notification.open": "Malfermi la raporton", "search.placeholder": "Serĉi", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Detala serĉo", "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.", "search_popout.tips.hashtag": "kradvorto", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparante OSR…", "upload_modal.preview_label": "Antaŭvido ({ratio})", "upload_progress.label": "Alŝutado…", + "upload_progress.processing": "Processing…", "video.close": "Fermi la videon", "video.download": "Elŝuti dosieron", "video.exit_fullscreen": "Eksigi plenekrana", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index f157022b8d..a554d391de 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -34,12 +35,12 @@ "account.followers": "Seguidores", "account.followers.empty": "Todavía nadie sigue a este usuario.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}", - "account.following": "Seguimientos", + "account.following": "Siguiendo", "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Todavía este usuario no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar adhesiones de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "En este servidor desde", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "La propiedad de este enlace fue verificada el {date}", "account.locked_info": "Esta cuenta es privada. El propietario manualmente revisa quién puede seguirle.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Intentá de nuevo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ya que Mastodon es descentralizado, podés crearte una cuenta en otro servidor y todavía interactuar con éste.", + "closed_registrations_modal.description": "Actualmente no es posible la creación de una cuenta en {domain}. pero tené en cuenta que no necesitás una cuenta específica en {domain} para usar Mastodon.", + "closed_registrations_modal.find_another_server": "Buscar otro servidor", + "closed_registrations_modal.preamble": "Mastodon es descentralizado, por lo que no importa dónde creés tu cuenta, podrás seguir e interactuar con cualquier persona en este servidor. ¡Incluso podés montar tu propio servidor!", + "closed_registrations_modal.title": "Registrarse en Mastodon", "column.about": "Información", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Guardado", - "getting_started.directory": "Directorio", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon es software libre y de código abierto. Podés ver el código fuente, contribuir o informar sobre problemas en {repository}.", - "getting_started.heading": "Introducción", - "getting_started.invite": "Invitar gente", - "getting_started.privacy_policy": "Política de privacidad", - "getting_started.security": "Configuración de la cuenta", - "getting_started.what_is_mastodon": "Acerca de Mastodon", + "getting_started.heading": "Inicio de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "¿Querés ocultar las notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Información", - "navigation_bar.apps": "Obtené la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea temporal local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes de seguimiento", "navigation_bar.follows_and_followers": "Cuentas seguidas y seguidores", - "navigation_bar.info": "Información", - "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", "navigation_bar.mutes": "Usuarios silenciados", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Mensajes fijados", "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} denunció a {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violación de regla", "report_notification.open": "Abrir denuncia", "search.placeholder": "Buscar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto simple devuelven los mensajes que escribiste, los marcados como favoritos, los adheridos o en los que te mencionaron, así como nombres de usuarios, nombres mostrados y etiquetas.", "search_popout.tips.hashtag": "etiqueta", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Todavía nadie adhirió a este mensaje. Cuando alguien lo haga, se mostrará acá.", "status.redraft": "Eliminar mensaje original y editarlo", "status.remove_bookmark": "Quitar marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondió a {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Denunciar a @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", "status.translate": "Traducir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traducido desde el {lang} vía {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Previsualización ({ratio})", "upload_progress.label": "Subiendo...", + "upload_progress.processing": "Processing…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de la pantalla completa", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 6f69cbabc2..44a2131ae9 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Guardado", - "getting_started.directory": "Directorio", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon es un software libre y de código abierto. Puedes ver el código fuente, contribuir o reportar problemas en {repository}.", "getting_started.heading": "Primeros pasos", - "getting_started.invite": "Invitar usuarios", - "getting_started.privacy_policy": "Política de Privacidad", - "getting_started.security": "Seguridad", - "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Acerca de", - "navigation_bar.apps": "Obtener la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Historia local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", "navigation_bar.follows_and_followers": "Siguiendo y seguidores", - "navigation_bar.info": "Acerca de", - "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", "navigation_bar.mutes": "Usuarios silenciados", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Infracción de regla", "report_notification.open": "Abrir informe", "search.placeholder": "Buscar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Búsquedas de texto recuperan posts que has escrito, marcado como favoritos, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", "search_popout.tips.hashtag": "etiqueta", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Subiendo…", + "upload_progress.processing": "Processing…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de pantalla completa", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index ec299cf1e3..870f428b94 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -39,7 +40,7 @@ "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Se unió", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", @@ -79,23 +80,23 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar informe de error", + "bundle_column_error.error.body": "La página solicitada no pudo ser renderizada. Podría deberse a un error en nuestro código o a un problema de compatibilidad con el navegador.", + "bundle_column_error.error.title": "¡Oh, no!", + "bundle_column_error.network.body": "Se ha producido un error al intentar cargar esta página. Esto puede deberse a un problema temporal con tu conexión a internet o a este servidor.", + "bundle_column_error.network.title": "Error de red", "bundle_column_error.retry": "Inténtalo de nuevo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Volver al inicio", + "bundle_column_error.routing.body": "No se pudo encontrar la página solicitada. ¿Estás seguro de que la URL en la barra de direcciones es correcta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Como Mastodon es descentralizado, puedes crear una cuenta en otro servidor y seguir interactuando con este.", + "closed_registrations_modal.description": "La creación de una cuenta en {domain} no es posible actualmente, pero ten en cuenta que no necesitas una cuenta específicamente en {domain} para usar Mastodon.", + "closed_registrations_modal.find_another_server": "Buscar otro servidor", + "closed_registrations_modal.preamble": "Mastodon es descentralizado, por lo que no importa dónde crees tu cuenta, podrás seguir e interactuar con cualquier persona en este servidor. ¡Incluso puedes alojarlo tú mismo!", + "closed_registrations_modal.title": "Registrarse en Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Guardado", - "getting_started.directory": "Directorio", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon es un software libre y de código abierto. Puedes ver el código fuente, contribuir o reportar problemas en {repository}.", "getting_started.heading": "Primeros pasos", - "getting_started.invite": "Invitar usuarios", - "getting_started.privacy_policy": "Política de Privacidad", - "getting_started.security": "Seguridad", - "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Acerca de", - "navigation_bar.apps": "Obtener la aplicación", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Línea de tiempo local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Solicitudes para seguirte", "navigation_bar.follows_and_followers": "Siguiendo y seguidores", - "navigation_bar.info": "Acerca de", - "navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Cerrar sesión", "navigation_bar.mutes": "Usuarios silenciados", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Publicaciones fijadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Línea de tiempo federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Infracción de regla", "report_notification.open": "Abrir informe", "search.placeholder": "Buscar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto recuperan publicaciones que has escrito, marcado como favoritas, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", "search_popout.tips.hashtag": "etiqueta", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondió a {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Reportar", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", "status.translate": "Traducir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traducido de {lang} usando {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Subiendo…", + "upload_progress.processing": "Processing…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de pantalla completa", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index b483b61a8a..4584704ac9 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoriseeri", "follow_request.reject": "Hülga", "follow_requests.unlocked_explanation": "Kuigi Teie konto pole lukustatud, soovitab {domain} personal siiski manuaalselt üle vaadata jälgimistaotlused nendelt kontodelt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentatsioon", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Alustamine", - "getting_started.invite": "Kutsu inimesi", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Turvalisus", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "või {additional}", "hashtag.column_header.tag_mode.none": "ilma {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Kas peita teated sellelt kasutajalt?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokeeritud kasutajad", "navigation_bar.bookmarks": "Järjehoidjad", "navigation_bar.community_timeline": "Kohalik ajajoon", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Vaigistatud sõnad", "navigation_bar.follow_requests": "Jälgimistaotlused", "navigation_bar.follows_and_followers": "Jälgitud ja jälgijad", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Kiirklahvid", "navigation_bar.lists": "Nimistud", "navigation_bar.logout": "Logi välja", "navigation_bar.mutes": "Vaigistatud kasutajad", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Otsi", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Täiustatud otsiformaat", "search_popout.tips.full_text": "Lihtne tekst toob esile staatused mida olete kirjutanud, lisanud lemmikuks, upitanud või olete seal mainitud, ning lisaks veel kattuvad kasutajanimed, kuvanimed ja sildid.", "search_popout.tips.hashtag": "silt", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Eelvaade ({ratio})", "upload_progress.label": "Laeb üles....", + "upload_progress.processing": "Processing…", "video.close": "Sulge video", "video.download": "Faili allalaadimine", "video.exit_fullscreen": "Välju täisekraanist", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 08263367c0..d27817992d 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Moderatutako zerbitzariak", + "about.contact": "Kontaktua:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Arrazoia", + "about.domain_blocks.domain": "Domeinua", + "about.domain_blocks.preamble": "Mastodonek orokorrean aukera ematen dizu fedibertsoko beste zerbitzarietako erabiltzaileen edukia ikusi eta haiekin komunikatzeko. Zerbitzari zehatz honi ezarritako salbuespenak hauek dira.", + "about.domain_blocks.severity": "Larritasuna", + "about.domain_blocks.silenced.explanation": "Orokorrean ez duzu zerbitzari honetako profil eta edukirik ikusiko. Profilak jarraitzen badituzu edo edukia esplizituki bilatzen baduzu bai.", + "about.domain_blocks.silenced.title": "Mugatua", + "about.domain_blocks.suspended.explanation": "Ez da zerbitzari honetako daturik prozesatuko, gordeko, edo partekatuko, zerbitzari honetako erabiltzaileekin komunikatzea ezinezkoa eginez.", + "about.domain_blocks.suspended.title": "Kanporatua", + "about.not_available": "Zerbitzari honek ez du informazio hau eskuragarri jarri.", + "about.powered_by": "{mastodon} erabiltzen duen sare sozial deszentralizatua", + "about.rules": "Zerbitzariaren arauak", "account.account_note_header": "Oharra", "account.add_or_remove_from_list": "Gehitu edo kendu zerrendetatik", "account.badges.bot": "Bot-a", @@ -20,16 +21,16 @@ "account.block_domain": "Ezkutatu {domain} domeinuko guztia", "account.blocked": "Blokeatuta", "account.browse_more_on_origin_server": "Arakatu gehiago jatorrizko profilean", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Baztertu jarraitzeko eskaera", "account.direct": "Mezu zuzena @{name}(r)i", "account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzailearen bidalketetan", "account.domain_blocked": "Ezkutatutako domeinua", "account.edit_profile": "Aldatu profila", "account.enable_notifications": "Jakinarazi @{name} erabiltzaileak bidalketak egitean", "account.endorse": "Nabarmendu profilean", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Azken bidalketa {date} datan", + "account.featured_tags.last_status_never": "Bidalketarik ez", + "account.featured_tags.title": "{name} erabiltzailearen nabarmendutako traolak", "account.follow": "Jarraitu", "account.followers": "Jarraitzaileak", "account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.", @@ -39,8 +40,8 @@ "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.", "account.follows_you": "Jarraitzen dizu", "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Elkartuta", + "account.languages": "Aldatu harpidetutako hizkuntzak", "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}", "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", "account.media": "Multimedia", @@ -76,31 +77,31 @@ "alert.unexpected.title": "Ene!", "announcement.announcement": "Iragarpena", "attachments_list.unprocessed": "(prozesatu gabe)", - "audio.hide": "Hide audio", + "audio.hide": "Ezkutatu audioa", "autosuggest_hashtag.per_week": "{count} asteko", "boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopiatu errore-txostena", + "bundle_column_error.error.body": "Eskatutako orria ezin izan da bistaratu. Kodeko errore bategatik izan daiteke edo nabigatzailearen bateragarritasun arazo bategatik.", + "bundle_column_error.error.title": "O ez!", + "bundle_column_error.network.body": "Errore bat gertatu da orri hau kargatzen saiatzean. Arrazoia Interneteko konexioaren edo zerbitzari honen aldi baterako arazoa izan daiteke.", + "bundle_column_error.network.title": "Sareko errorea", "bundle_column_error.retry": "Saiatu berriro", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Itzuli hasierako orrira", + "bundle_column_error.routing.body": "Eskatutako orria ezin izan da aurkitu. Ziur zaude helbide-barrako URLa zuzena dela?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Itxi", "bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.", "bundle_modal_error.retry": "Saiatu berriro", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Mastodon deszentralizatua denez, beste kontu bat sortu dezakezu beste zerbitzari batean eta honekin komunikatu.", + "closed_registrations_modal.description": "Une honetan ezin da konturik sortu {domain} zerbitzarian, baina kontuan izan Mastodon erabiltzeko ez duzula zertan konturik izan zehazki {domain} zerbitzarian.", + "closed_registrations_modal.find_another_server": "Aurkitu beste zerbitzari bat", + "closed_registrations_modal.preamble": "Mastodon deszentralizatua da, ondorioz kontua edonon sortuta ere zerbitzari honetako jendea jarraitu eta haiekin komunikatzeko aukera izango duzu. Zure zerbitzaria ere sortu dezakezu!", + "closed_registrations_modal.title": "Mastodonen kontua sortzea", + "column.about": "Honi buruz", "column.blocks": "Blokeatutako erabiltzaileak", "column.bookmarks": "Laster-markak", "column.community": "Denbora-lerro lokala", - "column.direct": "Direct messages", + "column.direct": "Mezu zuzenak", "column.directory": "Arakatu profilak", "column.domain_blocks": "Ezkutatutako domeinuak", "column.favourites": "Gogokoak", @@ -122,10 +123,10 @@ "community.column_settings.local_only": "Lokala soilik", "community.column_settings.media_only": "Multimedia besterik ez", "community.column_settings.remote_only": "Urrunekoa soilik", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Aldatu hizkuntza", + "compose.language.search": "Bilatu hizkuntzak...", "compose_form.direct_message_warning_learn_more": "Ikasi gehiago", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Mastodoneko bidalketak ez daude muturretik muturrera enkriptatuta. Ez partekatu informazio sentikorrik Mastodonen.", "compose_form.hashtag_warning": "Bidalketa hau ez da traoletan agertuko zerrendatu gabekoa baita. Traoletan bidalketa publikoak besterik ez dira agertzen.", "compose_form.lock_disclaimer": "Zure kontua ez dago {locked}. Edonork jarraitu zaitzake zure jarraitzaileentzako soilik diren bidalketak ikusteko.", "compose_form.lock_disclaimer.lock": "giltzapetuta", @@ -136,7 +137,7 @@ "compose_form.poll.remove_option": "Kendu aukera hau", "compose_form.poll.switch_to_multiple": "Aldatu inkesta hainbat aukera onartzeko", "compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko", - "compose_form.publish": "Publish", + "compose_form.publish": "Argitaratu", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Gorde aldaketak", "compose_form.sensitive.hide": "Markatu multimedia hunkigarri gisa", @@ -149,8 +150,8 @@ "confirmations.block.block_and_report": "Blokeatu eta salatu", "confirmations.block.confirm": "Blokeatu", "confirmations.block.message": "Ziur {name} blokeatu nahi duzula?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Baztertu eskaera", + "confirmations.cancel_follow_request.message": "Ziur zaude {name} jarraitzeko eskaera bertan behera utzi nahi duzula?", "confirmations.delete.confirm": "Ezabatu", "confirmations.delete.message": "Ziur bidalketa hau ezabatu nahi duzula?", "confirmations.delete_list.confirm": "Ezabatu", @@ -174,22 +175,22 @@ "conversation.mark_as_read": "Markatu irakurrita bezala", "conversation.open": "Ikusi elkarrizketa", "conversation.with": "Hauekin: {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiatuta", + "copypaste.copy": "Kopiatu", "directory.federated": "Fedibertso ezagunekoak", "directory.local": "{domain} domeinukoak soilik", "directory.new_arrivals": "Iritsi berriak", "directory.recently_active": "Duela gutxi aktibo", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Hauek dira {domain} zerbitzarian ostatatutako kontuen bidalketa publiko berrienak.", + "dismissable_banner.dismiss": "Baztertu", + "dismissable_banner.explore_links": "Albiste hauei buruz hitz egiten ari da jendea orain zerbitzari honetan eta sare deszentralizatuko besteetan.", + "dismissable_banner.explore_statuses": "Zerbitzari honetako eta sare deszentralizatuko besteetako bidalketa hauek daude bogan zerbitzari honetan orain.", + "dismissable_banner.explore_tags": "Traola hauek daude bogan orain zerbitzari honetan eta sare deszentralizatuko besteetan.", + "dismissable_banner.public_timeline": "Hauek dira zerbitzari honetako eta zerbitzari honek ezagutzen dituen sare deszentralizatuko beste zerbitzarietako jendearen bidalketa publiko berrienak.", "embed.instructions": "Txertatu bidalketa hau zure webgunean beheko kodea kopiatuz.", "embed.preview": "Hau da izango duen itxura:", "emoji_button.activity": "Jarduera", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Garbitu", "emoji_button.custom": "Pertsonalizatua", "emoji_button.flags": "Banderak", "emoji_button.food": "Janari eta edaria", @@ -209,7 +210,7 @@ "empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.", "empty_column.bookmarked_statuses": "Oraindik ez dituzu bidalketa laster-markatutarik. Bat laster-markatzerakoan, hemen agertuko da.", "empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.", "empty_column.domain_blocks": "Ez dago ezkutatutako domeinurik oraindik.", "empty_column.explore_statuses": "Ez dago joerarik une honetan. Begiratu beranduago!", "empty_column.favourited_statuses": "Ez duzu gogokorik oraindik. Gogokoren bat duzunean hemen agertuko da.", @@ -236,37 +237,37 @@ "explore.trending_links": "Berriak", "explore.trending_statuses": "Bidalketak", "explore.trending_tags": "Traolak", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Iragazki-kategoria hau ez zaio aplikatzen bidalketa honetara sartzeko erabili duzun testuinguruari. Bidalketa testuinguru horretan ere iragaztea nahi baduzu, iragazkia editatu beharko duzu.", + "filter_modal.added.context_mismatch_title": "Testuingurua ez dator bat!", + "filter_modal.added.expired_explanation": "Iragazki kategoria hau iraungi da, eragina izan dezan bere iraungitze-data aldatu beharko duzu.", + "filter_modal.added.expired_title": "Iraungitako iragazkia!", + "filter_modal.added.review_and_configure": "Iragazki kategoria hau berrikusi eta gehiago konfiguratzeko: {settings_link}.", + "filter_modal.added.review_and_configure_title": "Iragazkiaren ezarpenak", + "filter_modal.added.settings_link": "ezarpenen orria", + "filter_modal.added.short_explanation": "Bidalketa hau ondorengo iragazki kategoriara gehitu da: {title}.", + "filter_modal.added.title": "Iragazkia gehituta!", + "filter_modal.select_filter.context_mismatch": "ez du eraginik testuinguru honetan", + "filter_modal.select_filter.expired": "iraungitua", + "filter_modal.select_filter.prompt_new": "Kategoria berria: {name}", + "filter_modal.select_filter.search": "Bilatu edo sortu", + "filter_modal.select_filter.subtitle": "Hautatu lehendik dagoen kategoria bat edo sortu berria", + "filter_modal.select_filter.title": "Iragazi bidalketa hau", + "filter_modal.title.status": "Iragazi bidalketa bat", "follow_recommendations.done": "Egina", "follow_recommendations.heading": "Jarraitu jendea beren bidalketak ikusteko! Hemen dituzu iradokizun batzuk.", "follow_recommendations.lead": "Jarraitzen duzun jendearen bidalketak ordena kronologikoan agertuko dira zure hasierako jarioan. Ez izan akatsak egiteko beldurrik, jendea jarraitzeari uztea erraza da!", "follow_request.authorize": "Baimendu", "follow_request.reject": "Ukatu", "follow_requests.unlocked_explanation": "Zure kontua blokeatuta ez badago ere, {domain} domeinuko arduradunek uste dute kontu hauetako jarraipen eskariak agian eskuz begiratu nahiko dituzula.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gordea", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentazioa", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Menua", - "getting_started.invite": "Gonbidatu jendea", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Segurtasuna", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "eta {osagarria}", "hashtag.column_header.tag_mode.any": "edo {osagarria}", "hashtag.column_header.tag_mode.none": "gabe {osagarria}", @@ -276,25 +277,25 @@ "hashtag.column_settings.tag_mode.any": "Hautako edozein", "hashtag.column_settings.tag_mode.none": "Hauetako bat ere ez", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Jarraitu traola", + "hashtag.unfollow": "Utzi traola jarraitzeari", "home.column_settings.basic": "Oinarrizkoa", "home.column_settings.show_reblogs": "Erakutsi bultzadak", "home.column_settings.show_replies": "Erakutsi erantzunak", "home.hide_announcements": "Ezkutatu iragarpenak", "home.show_announcements": "Erakutsi iragarpenak", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Mastodon kontu batekin bidalketa hau gogoko egin dezakezu, egileari eskertzeko eta gerorako gordetzeko.", + "interaction_modal.description.follow": "Mastodon kontu batekin {name} jarraitu dezakezu bere bidalketak zure hasierako denbora lerroan jasotzeko.", + "interaction_modal.description.reblog": "Mastodon kontu batekin bidalketa hau bultzatu dezakezu, zure jarraitzaileekin partekatzeko.", + "interaction_modal.description.reply": "Mastodon kontu batekin bidalketa honi erantzun diezaiokezu.", + "interaction_modal.on_another_server": "Beste zerbitzari batean", + "interaction_modal.on_this_server": "Zerbitzari honetan", + "interaction_modal.other_server_instructions": "Kopiatu eta itsatsi URL hau zure aplikazio gogokoenaren bilaketa-barran edo saioa hasita daukazun web interfazean.", + "interaction_modal.preamble": "Mastodon deszentralizatua denez, zerbitzari honetan konturik ez badaukazu, beste Mastodon zerbitzari batean edo bateragarria den plataforma batean ostatatutako kontua erabil dezakezu.", + "interaction_modal.title.favourite": "Egin gogoko {name}(r)en bidalketa", + "interaction_modal.title.follow": "Jarraitu {name}", + "interaction_modal.title.reblog": "Bultzatu {name}(r)en bidalketa", + "interaction_modal.title.reply": "Erantzun {name}(r)en bidalketari", "intervals.full.days": "{number, plural, one {egun #} other {# egun}}", "intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}", "intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}", @@ -304,7 +305,7 @@ "keyboard_shortcuts.column": "mezu bat zutabe batean fokatzea", "keyboard_shortcuts.compose": "testua konposatzeko arean fokatzea", "keyboard_shortcuts.description": "Deskripzioa", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "mezu zuzenen zutabea irekitzeko", "keyboard_shortcuts.down": "zerrendan behera mugitzea", "keyboard_shortcuts.enter": "Ireki bidalketa", "keyboard_shortcuts.favourite": "Egin gogoko bidalketa", @@ -337,8 +338,8 @@ "lightbox.expand": "Zabaldu irudia ikusteko kaxa", "lightbox.next": "Hurrengoa", "lightbox.previous": "Aurrekoa", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Erakutsi profila hala ere", + "limited_account_hint.title": "Profil hau ezkutatu egin dute zure zerbitzariko moderatzaileek.", "lists.account.add": "Gehitu zerrendara", "lists.account.remove": "Kendu zerrendatik", "lists.delete": "Ezabatu zerrenda", @@ -360,13 +361,12 @@ "mute_modal.duration": "Iraupena", "mute_modal.hide_notifications": "Ezkutatu erabiltzaile honen jakinarazpenak?", "mute_modal.indefinite": "Zehaztu gabe", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Honi buruz", "navigation_bar.blocks": "Blokeatutako erabiltzaileak", "navigation_bar.bookmarks": "Laster-markak", "navigation_bar.community_timeline": "Denbora-lerro lokala", "navigation_bar.compose": "Idatzi bidalketa berria", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Mezu zuzenak", "navigation_bar.discover": "Aurkitu", "navigation_bar.domain_blocks": "Ezkutatutako domeinuak", "navigation_bar.edit_profile": "Aldatu profila", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Mutututako hitzak", "navigation_bar.follow_requests": "Jarraitzeko eskariak", "navigation_bar.follows_and_followers": "Jarraitutakoak eta jarraitzaileak", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Laster-teklak", "navigation_bar.lists": "Zerrendak", "navigation_bar.logout": "Amaitu saioa", "navigation_bar.mutes": "Mutututako erabiltzaileak", @@ -384,10 +382,10 @@ "navigation_bar.pins": "Finkatutako bidalketak", "navigation_bar.preferences": "Hobespenak", "navigation_bar.public_timeline": "Federatutako denbora-lerroa", - "navigation_bar.search": "Search", + "navigation_bar.search": "Bilatu", "navigation_bar.security": "Segurtasuna", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "Baliabide honetara sarbidea izateko saioa hasi behar duzu.", + "notification.admin.report": "{name} erabiltzaileak {target} salatu du", "notification.admin.sign_up": "{name} erabiltzailea erregistratu da", "notification.favourite": "{name}(e)k zure bidalketa gogoko du", "notification.follow": "{name}(e)k jarraitzen zaitu", @@ -400,7 +398,7 @@ "notification.update": "{name} erabiltzaileak bidalketa bat editatu du", "notifications.clear": "Garbitu jakinarazpenak", "notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Txosten berriak:", "notifications.column_settings.admin.sign_up": "Izen-emate berriak:", "notifications.column_settings.alert": "Mahaigaineko jakinarazpenak", "notifications.column_settings.favourite": "Gogokoak:", @@ -447,15 +445,15 @@ "poll_button.remove_poll": "Kendu inkesta", "privacy.change": "Aldatu bidalketaren pribatutasuna", "privacy.direct.long": "Bidali aipatutako erabiltzaileei besterik ez", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Aipatutako jendea soilik", "privacy.private.long": "Bidali jarraitzaileei besterik ez", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Jarraitzaileak soilik", + "privacy.public.long": "Guztientzat ikusgai", "privacy.public.short": "Publikoa", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Guztientzat ikusgai, baina ez aurkitzeko ezaugarrietan", "privacy.unlisted.short": "Zerrendatu gabea", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Azkenengo eguneraketa {date}", + "privacy_policy.title": "Pribatutasun politika", "refresh": "Berritu", "regeneration_indicator.label": "Kargatzen…", "regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!", @@ -508,12 +506,13 @@ "report.thanks.title_actionable": "Mila esker salaketagatik, berrikusiko dugu.", "report.unfollow": "@{name} jarraitzeari utzi", "report.unfollow_explanation": "Kontu hau jarraitzen ari zara. Zure denbora-lerro nagusian bere bidalketak ez ikusteko, jarraitzeari utzi.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", + "report_notification.attached_statuses": "{count, plural, one {Bidalketa {count}} other {{count} bidalketa}} erantsita", + "report_notification.categories.other": "Bestelakoak", "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.categories.violation": "Arau haustea", + "report_notification.open": "Ireki salaketa", "search.placeholder": "Bilatu", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Bilaketa aurreratuaren formatua", "search_popout.tips.full_text": "Testu hutsarekin zuk idatzitako bidalketak, gogokoak, bultzadak edo aipamenak aurkitu ditzakezu, bat datozen erabiltzaile-izenak, pantaila-izenak, eta traolak.", "search_popout.tips.hashtag": "traola", @@ -526,17 +525,17 @@ "search_results.nothing_found": "Ez da emaitzarik aurkitu bilaketa-termino horientzat", "search_results.statuses": "Bidalketak", "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du bidalketen edukiaren bilaketa gaitu.", - "search_results.title": "Search for {q}", + "search_results.title": "Bilatu {q}", "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitza}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Azken 30 egunetan zerbitzari hau erabili duen jendea (hilabeteko erabiltzaile aktiboak)", + "server_banner.active_users": "erabiltzaile aktibo", + "server_banner.administered_by": "Administratzailea(k):", + "server_banner.introduction": "{domain} zerbitzaria {mastodon} erabiltzen duen sare sozial deszentralizatuko parte da.", + "server_banner.learn_more": "Ikasi gehiago", + "server_banner.server_stats": "Zerbitzariaren estatistikak:", + "sign_in_banner.create_account": "Sortu kontua", + "sign_in_banner.sign_in": "Hasi saioa", + "sign_in_banner.text": "Hasi saioa beste zerbitzari bateko zure kontuarekin profilak edo traolak jarraitu, bidalketei erantzun, gogoko egin edo partekatzeko.", "status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea", "status.admin_status": "Ireki bidalketa hau moderazio interfazean", "status.block": "Blokeatu @{name}", @@ -552,9 +551,9 @@ "status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua", "status.embed": "Txertatu", "status.favourite": "Gogokoa", - "status.filter": "Filter this post", + "status.filter": "Iragazi bidalketa hau", "status.filtered": "Iragazita", - "status.hide": "Hide toot", + "status.hide": "Ezkutatu bidalketa hau", "status.history.created": "{name} erabiltzaileak sortua {date}", "status.history.edited": "{name} erabiltzaileak editatua {date}", "status.load_more": "Kargatu gehiago", @@ -573,26 +572,26 @@ "status.reblogs.empty": "Inork ez dio bultzada eman bidalketa honi oraindik. Inork egiten badu, hemen agertuko da.", "status.redraft": "Ezabatu eta berridatzi", "status.remove_bookmark": "Kendu laster-marka", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name} erabiltzaileari erantzuna", "status.reply": "Erantzun", "status.replyAll": "Erantzun harian", "status.report": "Salatu @{name}", "status.sensitive_warning": "Kontuz: Eduki hunkigarria", "status.share": "Partekatu", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Erakutsi hala ere", "status.show_less": "Erakutsi gutxiago", "status.show_less_all": "Erakutsi denetarik gutxiago", "status.show_more": "Erakutsi gehiago", "status.show_more_all": "Erakutsi denetarik gehiago", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Erakutsi jatorrizkoa", + "status.translate": "Itzuli", + "status.translated_from_with": "Itzuli {lang}(e)tik {provider} erabiliz", "status.uncached_media_warning": "Ez eskuragarri", "status.unmute_conversation": "Desmututu elkarrizketa", "status.unpin": "Desfinkatu profiletik", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Hautatutako hizkuntzetako bidalketak soilik agertuko dira zure denbora-lerroetan aldaketaren ondoren. Ez baduzu bat ere aukeratzen hizkuntza guztietako bidalketak jasoko dituzu.", + "subscribed_languages.save": "Gorde aldaketak", + "subscribed_languages.target": "Aldatu {target}(e)n harpidetutako hizkuntzak", "suggestions.dismiss": "Errefusatu proposamena", "suggestions.header": "Hau interesatu dakizuke…", "tabs_bar.federated_timeline": "Federatua", @@ -608,7 +607,7 @@ "timeline_hint.resources.followers": "Jarraitzaileak", "timeline_hint.resources.follows": "Jarraitzen", "timeline_hint.resources.statuses": "Bidalketa zaharragoak", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {Pertsona {counter}} other {{counter} pertsona}} azken {days, plural, one {egunean} other {{days} egunetan}}", "trends.trending_now": "Joera orain", "ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.", "units.short.billion": "{count}B", @@ -620,7 +619,7 @@ "upload_error.poll": "Ez da inkestetan fitxategiak igotzea onartzen.", "upload_form.audio_description": "Deskribatu entzumen galera duten pertsonentzat", "upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat", - "upload_form.description_missing": "No description added", + "upload_form.description_missing": "Ez da deskribapenik gehitu", "upload_form.edit": "Editatu", "upload_form.thumbnail": "Aldatu koadro txikia", "upload_form.undo": "Ezabatu", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR prestatzen…", "upload_modal.preview_label": "Aurreikusi ({ratio})", "upload_progress.label": "Igotzen...", + "upload_progress.processing": "Processing…", "video.close": "Itxi bideoa", "video.download": "Deskargatu fitxategia", "video.exit_fullscreen": "Irten pantaila osotik", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 9788de6907..b9c67fa061 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.blocks": "کارسازهای نظارت شده", + "about.contact": "تماس:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "دلیل", + "about.domain_blocks.domain": "دامنه", + "about.domain_blocks.preamble": "ماستودون عموماً می‌گذارد محتوا را از از هر کارساز دیگری در دنیای شبکه‌های اجتماعی غیرمتمرکز دیده و با آنان برهم‌کنش داشته باشید. این‌ها استثناهایی هستند که روی این کارساز خاص وضع شده‌اند.", + "about.domain_blocks.severity": "شدت", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.silenced.title": "محدود", + "about.domain_blocks.suspended.explanation": "هیچ داده‌ای از این کارساز پردازش، ذخیره یا مبادله نخواهد شد، که هرگونه برهم‌کنش یا ارتباط با کاربران این کارساز را غیرممکن خواهد کرد.", + "about.domain_blocks.suspended.title": "معلق", + "about.not_available": "این اطّلاعات روی این کارساز موجود نشده.", + "about.powered_by": "رسانهٔ اجتماعی نامتمرکز قدرت گرفته از {mastodon}", + "about.rules": "قوانین کارساز", "account.account_note_header": "یادداشت", "account.add_or_remove_from_list": "افزودن یا برداشتن از سیاهه‌ها", "account.badges.bot": "روبات", @@ -20,16 +21,16 @@ "account.block_domain": "مسدود کردن دامنهٔ {domain}", "account.blocked": "مسدود", "account.browse_more_on_origin_server": "مرور بیش‌تر روی نمایهٔ اصلی", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "رد کردن درخواست پی‌گیری", "account.direct": "پیام مستقیم به ‎@{name}", "account.disable_notifications": "آگاه کردن من هنگام فرسته‌های ‎@{name} را متوقّف کن", "account.domain_blocked": "دامنه مسدود شد", "account.edit_profile": "ویرایش نمایه", "account.enable_notifications": "هنگام فرسته‌های ‎@{name} مرا آگاه کن", "account.endorse": "معرّفی در نمایه", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "آخرین فرسته در {date}", + "account.featured_tags.last_status_never": "بدون فرسته", + "account.featured_tags.title": "برچسب‌های برگزیدهٔ {name}", "account.follow": "پی‌گیری", "account.followers": "پی‌گیرندگان", "account.followers.empty": "هنوز کسی این کاربر را پی‌گیری نمی‌کند.", @@ -39,8 +40,8 @@ "account.follows.empty": "این کاربر هنوز پی‌گیر کسی نیست.", "account.follows_you": "پی می‌گیردتان", "account.hide_reblogs": "نهفتن تقویت‌های ‎@{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "پیوسته", + "account.languages": "تغییر زبان‌های مشترک شده", "account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد", "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.", "account.media": "رسانه", @@ -76,27 +77,27 @@ "alert.unexpected.title": "ای وای!", "announcement.announcement": "اعلامیه", "attachments_list.unprocessed": "(پردازش نشده)", - "audio.hide": "Hide audio", + "audio.hide": "نهفتن صدا", "autosuggest_hashtag.per_week": "{count} در هفته", "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", - "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.copy_stacktrace": "رونوشت از گزارش خطا", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "وای، نه!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "خطای شبکه", "bundle_column_error.retry": "تلاش دوباره", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "بازگشت به خانه", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", - "bundle_column_error.routing.title": "404", + "bundle_column_error.routing.title": "۴۰۴", "bundle_modal_error.close": "بستن", "bundle_modal_error.message": "هنگام بار کردن این مولفه، اشتباهی رخ داد.", "bundle_modal_error.retry": "تلاش دوباره", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "از آن‌جا که ماستودون نامتمرکز است، می‌توانید حسابی روی کارسازی دیگر ساخته و همچنان با این‌یکی در تعامل باشید.", + "closed_registrations_modal.description": "هم‌اکنون امکان ساخت حساب روی {domain} وجود ندارد؛ ولی لطفاً به خاطر داشته باشید که برای استفاده از ماستودون، نیازی به داشتن حساب روی {domain} نیست.", + "closed_registrations_modal.find_another_server": "یافتن کارسازی دیگر", + "closed_registrations_modal.preamble": "ماستودون نامتمرکز است، پس بدون توجّه یه جایی که حسابتان را ساخته‌اید، خواهید توانست هرکسی روی این کارساز را پی‌گرفته و با او تعامل کنید. حتا می‌توانید خودمیزبانیش کنید!", + "closed_registrations_modal.title": "ثبت‌نام روی ماستودون", + "column.about": "درباره", "column.blocks": "کاربران مسدود شده", "column.bookmarks": "نشانک‌ها", "column.community": "خط زمانی محلّی", @@ -122,10 +123,10 @@ "community.column_settings.local_only": "فقط محلّی", "community.column_settings.media_only": "فقط رسانه", "community.column_settings.remote_only": "تنها دوردست", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "تغییر زبان", + "compose.language.search": "جست‌وجوی زبان‌ها…", "compose_form.direct_message_warning_learn_more": "بیشتر بدانید", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "فرسته‌های ماستودون رمزگذاری سرتاسری نشده‌اند. هیچ اطّلاعات حساسی را روی ماستودون هم‌رسانی نکنید.", "compose_form.hashtag_warning": "از آن‌جا که این فرسته فهرست نشده است، در نتایج جست‌وجوی هشتگ‌ها پیدا نخواهد شد. تنها فرسته‌های عمومی را می‌توان با جست‌وجوی هشتگ یافت.", "compose_form.lock_disclaimer": "حسابتان {locked} نیست. هر کسی می‌تواند پی‌گیرتان شده و فرسته‌های ویژهٔ پی‌گیرانتان را ببیند.", "compose_form.lock_disclaimer.lock": "قفل‌شده", @@ -136,7 +137,7 @@ "compose_form.poll.remove_option": "برداشتن این گزینه", "compose_form.poll.switch_to_multiple": "تبدیل به نظرسنجی چندگزینه‌ای", "compose_form.poll.switch_to_single": "تبدیل به نظرسنجی تک‌گزینه‌ای", - "compose_form.publish": "Publish", + "compose_form.publish": "انتشار", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "ذخیرهٔ تغییرات", "compose_form.sensitive.hide": "{count, plural, one {علامت‌گذاری رسانه به عنوان حساس} other {علامت‌گذاری رسانه‌ها به عنوان حساس}}", @@ -149,7 +150,7 @@ "confirmations.block.block_and_report": "مسدود کردن و گزارش", "confirmations.block.confirm": "مسدود کردن", "confirmations.block.message": "مطمئنید که می‌خواهید {name} را مسدود کنید؟", - "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.confirm": "رد کردن درخواست", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "حذف", "confirmations.delete.message": "آیا مطمئنید که می‌خواهید این فرسته را حذف کنید؟", @@ -174,14 +175,14 @@ "conversation.mark_as_read": "علامت‌گذاری به عنوان خوانده شده", "conversation.open": "دیدن گفتگو", "conversation.with": "با {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "رونوشت شد", + "copypaste.copy": "رونوشت", "directory.federated": "از کارسازهای شناخته‌شده", "directory.local": "تنها از {domain}", "directory.new_arrivals": "تازه‌واردان", "directory.recently_active": "کاربران فعال اخیر", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "دور انداختن", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -189,7 +190,7 @@ "embed.instructions": "برای جاسازی این فرسته در سایت خودتان، کد زیر را رونوشت کنید.", "embed.preview": "این گونه دیده خواهد شد:", "emoji_button.activity": "فعالیت", - "emoji_button.clear": "Clear", + "emoji_button.clear": "پاک سازی", "emoji_button.custom": "سفارشی", "emoji_button.flags": "پرچم‌ها", "emoji_button.food": "غذا و نوشیدنی", @@ -237,36 +238,36 @@ "explore.trending_statuses": "فرسته‌ها", "explore.trending_tags": "هشتگ‌ها", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.context_mismatch_title": "بافتار نامطابق!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "پالایهٔ منقضی!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "تنظیمات پالایه", + "filter_modal.added.settings_link": "صفحهٔ تنظیمات", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.title": "پالایه افزوده شد!", + "filter_modal.select_filter.context_mismatch": "به این بافتار اعمال نمی‌شود", + "filter_modal.select_filter.expired": "منقضی‌شده", + "filter_modal.select_filter.prompt_new": "دستهٔ جدید: {name}", + "filter_modal.select_filter.search": "جست‌وجو یا ایجاد", + "filter_modal.select_filter.subtitle": "استفاده از یک دستهً موجود یا ایجاد دسته‌ای جدید", + "filter_modal.select_filter.title": "پالایش این فرسته", + "filter_modal.title.status": "پالایش یک فرسته", "follow_recommendations.done": "انجام شد", "follow_recommendations.heading": "افرادی را که می‌خواهید فرسته‌هایشان را ببینید پی‌گیری کنید! این‌ها تعدادی پیشنهاد هستند.", "follow_recommendations.lead": "فرسته‌های افرادی که دنبال می‌کنید به ترتیب زمانی در خوراک خانه‌تان نشان داده خواهد شد. از اشتباه کردن نترسید. می‌توانید به همین سادگی در هر زمانی از دنبال کردن افراد دست بکشید!", "follow_request.authorize": "اجازه دهید", "follow_request.reject": "رد کنید", "follow_requests.unlocked_explanation": "با این که حسابتان قفل نیست، کارکنان {domain} فکر کردند که ممکن است بخواهید درخواست‌ها از این حساب‌ها را به صورت دستی بازبینی کنید.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "ذخیره شده", - "getting_started.directory": "Directory", - "getting_started.documentation": "مستندات", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "آغاز کنید", - "getting_started.invite": "دعوت از دیگران", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "تنظیمات حساب", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -276,8 +277,8 @@ "hashtag.column_settings.tag_mode.any": "هرکدام از این‌ها", "hashtag.column_settings.tag_mode.none": "هیچ‌کدام از این‌ها", "hashtag.column_settings.tag_toggle": "افزودن برچسب‌هایی بیشتر به این ستون", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "پی‌گیری برچسب", + "hashtag.unfollow": "ناپی‌گیری برچسب", "home.column_settings.basic": "پایه‌ای", "home.column_settings.show_reblogs": "نمایش تقویت‌ها", "home.column_settings.show_replies": "نمایش پاسخ‌ها", @@ -287,14 +288,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "روی کارسازی دیگر", + "interaction_modal.on_this_server": "روی این کارساز", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.preamble": "از آن‌جا که ماستودون نامتمرکز است، می‌توانید در صورت نداشتن حساب روی این کارساز، از حساب موجود خودتان که روی کارساز ماستودون یا بن‌سازهٔ سازگار دیگری میزبانی می‌شود استفاده کنید.", + "interaction_modal.title.favourite": "فرسته‌های برگزیدهٔ {name}", + "interaction_modal.title.follow": "پیگیری {name}", + "interaction_modal.title.reblog": "تقویت فرستهٔ {name}", + "interaction_modal.title.reply": "پاسخ به فرستهٔ {name}", "intervals.full.days": "{number, plural, one {# روز} other {# روز}}", "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}", "intervals.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}}", @@ -337,8 +338,8 @@ "lightbox.expand": "گسترش جعبهٔ نمایش تصویر", "lightbox.next": "بعدی", "lightbox.previous": "قبلی", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "به هر روی نمایه نشان داده شود", + "limited_account_hint.title": "این نمایه از سوی ناظم‌های کارسازتان پنهان شده.", "lists.account.add": "افزودن به سیاهه", "lists.account.remove": "برداشتن از سیاهه", "lists.delete": "حذف سیاهه", @@ -360,8 +361,7 @@ "mute_modal.duration": "مدت زمان", "mute_modal.hide_notifications": "نهفتن آگاهی‌ها از این کاربر؟", "mute_modal.indefinite": "نامعلوم", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "درباره", "navigation_bar.blocks": "کاربران مسدود شده", "navigation_bar.bookmarks": "نشانک‌ها", "navigation_bar.community_timeline": "خط زمانی محلّی", @@ -375,8 +375,6 @@ "navigation_bar.filters": "واژه‌های خموش", "navigation_bar.follow_requests": "درخواست‌های پی‌گیری", "navigation_bar.follows_and_followers": "پی‌گرفتگان و پی‌گیرندگان", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "میان‌برها", "navigation_bar.lists": "سیاهه‌ها", "navigation_bar.logout": "خروج", "navigation_bar.mutes": "کاربران خموشانده", @@ -384,10 +382,10 @@ "navigation_bar.pins": "فرسته‌های سنجاق شده", "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "خط زمانی همگانی", - "navigation_bar.search": "Search", + "navigation_bar.search": "جست‌وجو", "navigation_bar.security": "امنیت", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "برای دسترسی به این منبع باید وارد شوید.", + "notification.admin.report": "{name}، {target} را گزارش داد", "notification.admin.sign_up": "{name} ثبت نام کرد", "notification.favourite": "‫{name}‬ فرسته‌تان را پسندید", "notification.follow": "‫{name}‬ پی‌گیرتان شد", @@ -400,7 +398,7 @@ "notification.update": "{name} فرسته‌ای را ویرایش کرد", "notifications.clear": "پاک‌سازی آگاهی‌ها", "notifications.clear_confirmation": "مطمئنید می‌خواهید همهٔ آگاهی‌هایتان را برای همیشه پاک کنید؟", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "گزارش‌های جدید:", "notifications.column_settings.admin.sign_up": "ثبت نام‌های جدید:", "notifications.column_settings.alert": "آگاهی‌های میزکار", "notifications.column_settings.favourite": "پسندیده‌ها:", @@ -454,11 +452,11 @@ "privacy.public.short": "عمومی", "privacy.unlisted.long": "نمایان برای همه، ولی خارج از قابلیت‌های کشف", "privacy.unlisted.short": "فهرست نشده", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "آخرین به‌روز رسانی در {date}", + "privacy_policy.title": "سیاست محرمانگی", "refresh": "نوسازی", "regeneration_indicator.label": "در حال بار شدن…", - "regeneration_indicator.sublabel": "خوراک خانگیان دارد آماده می‌شود!", + "regeneration_indicator.sublabel": "خوراک خانگیتان دارد آماده می‌شود!", "relative_time.days": "{number} روز", "relative_time.full.days": "{number, plural, one {# روز} other {# روز}} پیش", "relative_time.full.hours": "{number, plural, one {# ساعت} other {# ساعت}} پیش", @@ -508,12 +506,13 @@ "report.thanks.title_actionable": "ممنون بابت گزارش، ما آن را بررسی خواهیم کرد.", "report.unfollow": "ناپی‌گیری ‎@{name}", "report.unfollow_explanation": "شما این حساب را پی‌گرفته‌اید، برای اینکه دیگر فرسته‌هایش را در خوراک خانه‌تان نبینید؛ آن را پی‌نگیرید.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.attached_statuses": "{count, plural, one {{count} فرسته} other {{count} فرسته}} پیوست شده", + "report_notification.categories.other": "دیگر", + "report_notification.categories.spam": "هرزنامه", + "report_notification.categories.violation": "تخطّی از قانون", + "report_notification.open": "گشودن گزارش", "search.placeholder": "جست‌وجو", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "راهنمای جست‌وجوی پیشرفته", "search_popout.tips.full_text": "جست‌وجوی متنی ساده فرسته‌هایی که نوشته، پسندیده، تقویت‌کرده یا در آن‌ها نام‌برده شده‌اید را به علاوهٔ نام‌های کاربری، نام‌های نمایشی و برچسب‌ها برمی‌گرداند.", "search_popout.tips.hashtag": "برچسب", @@ -526,17 +525,17 @@ "search_results.nothing_found": "چیزی برای این عبارت جست‌وجو یافت نشد", "search_results.statuses": "فرسته‌ها", "search_results.statuses_fts_disabled": "جست‌وجوی محتوای فرسته‌ها در این کارساز ماستودون به کار انداخته نشده است.", - "search_results.title": "Search for {q}", + "search_results.title": "جست‌وجو برای {q}", "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "افرادی که در ۳۰ روز گذشته از این کارساز استفاده کرده‌اند (کاربران فعّال ماهانه)", + "server_banner.active_users": "کاربران فعّال", + "server_banner.administered_by": "به مدیریت:", + "server_banner.introduction": "{domain} بخشی از شبکهٔ اجتماعی نامتمرکزیست که از {mastodon} نیرو گرفته.", + "server_banner.learn_more": "بیش‌تر بیاموزید", + "server_banner.server_stats": "آمار کارساز:", + "sign_in_banner.create_account": "ایجاد حساب", + "sign_in_banner.sign_in": "ورود", + "sign_in_banner.text": "برای پی‌گیری نمایه‌ها یا برچسب‌ها، هم‌رسانی و پاسخ به فرسته‌ها یا تعامل از حسابتان روی کارسازی دیگر، وارد شوید.", "status.admin_account": "گشودن واسط مدیریت برای ‎@{name}", "status.admin_status": "گشودن این فرسته در واسط مدیریت", "status.block": "مسدود کردن ‎@{name}", @@ -552,9 +551,9 @@ "status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد", "status.embed": "جاسازی", "status.favourite": "پسندیدن", - "status.filter": "Filter this post", + "status.filter": "پالایش این فرسته", "status.filtered": "پالوده", - "status.hide": "Hide toot", + "status.hide": "نهفتن بوق", "status.history.created": "توسط {name} در {date} ایجاد شد", "status.history.edited": "توسط {name} در {date} ویرایش شد", "status.load_more": "بار کردن بیش‌تر", @@ -573,26 +572,26 @@ "status.reblogs.empty": "هنوز هیچ کسی این فرسته را تقویت نکرده است. وقتی کسی چنین کاری کند، این‌جا نمایش داده خواهد شد.", "status.redraft": "حذف و بازنویسی", "status.remove_bookmark": "برداشتن نشانک", - "status.replied_to": "Replied to {name}", + "status.replied_to": "به {name} پاسخ داد", "status.reply": "پاسخ", "status.replyAll": "پاسخ به رشته", "status.report": "گزارش ‎@{name}", "status.sensitive_warning": "محتوای حساس", "status.share": "هم‌رسانی", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "به هر روی نشان داده شود", "status.show_less": "نمایش کمتر", "status.show_less_all": "نمایش کمتر همه", "status.show_more": "نمایش بیشتر", "status.show_more_all": "نمایش بیشتر همه", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "نمایش اصلی", + "status.translate": "ترجمه", + "status.translated_from_with": "ترجمه از {lang} با {provider}", "status.uncached_media_warning": "ناموجود", "status.unmute_conversation": "رفع خموشی گفت‌وگو", "status.unpin": "برداشتن سنجاق از نمایه", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.save": "ذخیرهٔ تغییرات", + "subscribed_languages.target": "تغییر زبان‌های مشترک شده برای {target}", "suggestions.dismiss": "نادیده گرفتن پیشنهاد", "suggestions.header": "شاید این هم برایتان جالب باشد…", "tabs_bar.federated_timeline": "همگانی", @@ -608,7 +607,7 @@ "timeline_hint.resources.followers": "پیگیرندگان", "timeline_hint.resources.follows": "پی‌گرفتگان", "timeline_hint.resources.statuses": "فرسته‌های قدیمی‌تر", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} نفر} other {{counter} نفر}} در {days, plural, one {روز} other {{days} روز}} گذشته", "trends.trending_now": "پرطرفدار", "ui.beforeunload": "اگر از ماستودون خارج شوید پیش‌نویس شما از دست خواهد رفت.", "units.short.billion": "{count}میلیارد", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "در حال آماده سازی OCR…", "upload_modal.preview_label": "پیش‌نمایش ({ratio})", "upload_progress.label": "در حال بارگذاری…", + "upload_progress.processing": "Processing…", "video.close": "بستن ویدیو", "video.download": "بارگیری پرونده", "video.exit_fullscreen": "خروج از حالت تمام‌صفحه", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index bd7b7f8ac8..99d6cd40b4 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderoidut palvelimet", "about.contact": "Yhteystiedot:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Syy", "about.domain_blocks.domain": "Verkkotunnus", "about.domain_blocks.preamble": "Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle.", @@ -93,7 +94,7 @@ "bundle_modal_error.retry": "Yritä uudelleen", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "Etsi toinen palvelin", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "Tietoja", @@ -258,15 +259,15 @@ "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikka tiliäsi ei ole lukittu, {domain}:n ylläpitäjien mielestä saatat haluta tarkistaa nämä seurauspyynnöt manuaalisesti.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Tallennettu", - "getting_started.directory": "Hakemisto", - "getting_started.documentation": "Käyttöohjeet", - "getting_started.free_software_notice": "Mastodon on ilmainen, avoimen lähdekoodin ohjelmisto. Voit tarkastella lähdekoodia, osallistua tai raportoida ongelmista osoitteessa {repository}.", "getting_started.heading": "Näin pääset alkuun", - "getting_started.invite": "Kutsu ihmisiä", - "getting_started.privacy_policy": "Tietosuojakäytäntö", - "getting_started.security": "Tiliasetukset", - "getting_started.what_is_mastodon": "Tietoja Mastodonista", "hashtag.column_header.tag_mode.all": "ja {additional}", "hashtag.column_header.tag_mode.any": "tai {additional}", "hashtag.column_header.tag_mode.none": "ilman {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?", "mute_modal.indefinite": "Ikuisesti", "navigation_bar.about": "Tietoja", - "navigation_bar.apps": "Hanki sovellus", "navigation_bar.blocks": "Estetyt käyttäjät", "navigation_bar.bookmarks": "Kirjanmerkit", "navigation_bar.community_timeline": "Paikallinen aikajana", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Mykistetyt sanat", "navigation_bar.follow_requests": "Seuraamispyynnöt", "navigation_bar.follows_and_followers": "Seurattavat ja seuraajat", - "navigation_bar.info": "Tietoja", - "navigation_bar.keyboard_shortcuts": "Pikanäppäimet", "navigation_bar.lists": "Listat", "navigation_bar.logout": "Kirjaudu ulos", "navigation_bar.mutes": "Mykistetyt käyttäjät", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Sääntöjen rikkominen", "report_notification.open": "Avaa raportti", "search.placeholder": "Hae", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", "search_popout.tips.hashtag": "aihetunnisteet", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Valmistellaan OCR…", "upload_modal.preview_label": "Esikatselu ({ratio})", "upload_progress.label": "Ladataan...", + "upload_progress.processing": "Processing…", "video.close": "Sulje video", "video.download": "Lataa tiedosto", "video.exit_fullscreen": "Poistu koko näytön tilasta", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index d6de0df73a..894f3599e7 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -1,10 +1,11 @@ { "about.blocks": "Serveurs modérés", "about.contact": "Contact :", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motif :", "about.domain_blocks.domain": "Domaine", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.preamble": "Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateurs de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier.", + "about.domain_blocks.severity": "Sévérité", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -39,7 +40,7 @@ "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.", "account.follows_you": "Vous suit", "account.hide_reblogs": "Masquer les partages de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Ici depuis", "account.languages": "Changer les langues abonnées", "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}", "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", @@ -93,9 +94,9 @@ "bundle_modal_error.retry": "Réessayer", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "Trouver un autre serveur", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.title": "S’inscrire sur Mastodon", "column.about": "À propos", "column.blocks": "Comptes bloqués", "column.bookmarks": "Marque-pages", @@ -149,7 +150,7 @@ "confirmations.block.block_and_report": "Bloquer et signaler", "confirmations.block.confirm": "Bloquer", "confirmations.block.message": "Voulez-vous vraiment bloquer {name} ?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.confirm": "Retirer la demande", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Supprimer", "confirmations.delete.message": "Voulez-vous vraiment supprimer ce message ?", @@ -258,15 +259,15 @@ "follow_request.authorize": "Accepter", "follow_request.reject": "Rejeter", "follow_requests.unlocked_explanation": "Même si votre compte n’est pas privé, l’équipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Sauvegardé", - "getting_started.directory": "Annuaire", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon est un logiciel libre et ouvert. Vous pouvez consulter le code source, contribuer ou soumettre des rapports de bogues sur {repository}.", "getting_started.heading": "Pour commencer", - "getting_started.invite": "Inviter des gens", - "getting_started.privacy_policy": "Politique de confidentialité", - "getting_started.security": "Sécurité", - "getting_started.what_is_mastodon": "À propos de Mastodon", "hashtag.column_header.tag_mode.all": "et {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sans {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Masquer les notifications de cette personne ?", "mute_modal.indefinite": "Indéfinie", "navigation_bar.about": "À propos", - "navigation_bar.apps": "Télécharger l’application", "navigation_bar.blocks": "Comptes bloqués", "navigation_bar.bookmarks": "Marque-pages", "navigation_bar.community_timeline": "Fil public local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Mots masqués", "navigation_bar.follow_requests": "Demandes d’abonnement", "navigation_bar.follows_and_followers": "Abonnements et abonné⋅e·s", - "navigation_bar.info": "À propos", - "navigation_bar.keyboard_shortcuts": "Raccourcis clavier", "navigation_bar.lists": "Listes", "navigation_bar.logout": "Déconnexion", "navigation_bar.mutes": "Comptes masqués", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Messages épinglés", "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", - "navigation_bar.search": "Search", + "navigation_bar.search": "Rechercher", "navigation_bar.security": "Sécurité", "not_signed_in_indicator.not_signed_in": "Vous devez vous connecter pour accéder à cette ressource.", "notification.admin.report": "{name} a signalé {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Infraction aux règles du serveur", "report_notification.open": "Ouvrir le signalement", "search.placeholder": "Rechercher", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Recherche avancée", "search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Personne n’a encore partagé ce message. Lorsque quelqu’un le fera, il apparaîtra ici.", "status.redraft": "Supprimer et réécrire", "status.remove_bookmark": "Retirer des marque-pages", - "status.replied_to": "Replied to {name}", + "status.replied_to": "En réponse à {name}", "status.reply": "Répondre", "status.replyAll": "Répondre au fil", "status.report": "Signaler @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Tout déplier", "status.show_original": "Afficher l’original", "status.translate": "Traduire", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traduit de {lang} en utilisant {provider}", "status.uncached_media_warning": "Indisponible", "status.unmute_conversation": "Ne plus masquer la conversation", "status.unpin": "Retirer du profil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Préparation de l’OCR…", "upload_modal.preview_label": "Aperçu ({ratio})", "upload_progress.label": "Envoi en cours…", + "upload_progress.processing": "Processing…", "video.close": "Fermer la vidéo", "video.download": "Télécharger le fichier", "video.exit_fullscreen": "Quitter le plein écran", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 84fe8f1c90..89db3f3270 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Goedkarre", "follow_request.reject": "Ofkarre", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Bewarre", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumintaasje", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Utein sette", - "getting_started.invite": "Minsken útnûgje", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Account ynstellings", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "sûnder {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Notifikaasjes fan dizze brûker ferstopje?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokkearre brûkers", "navigation_bar.bookmarks": "Blêdwiizers", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Negearre wurden", "navigation_bar.follow_requests": "Folgfersiken", "navigation_bar.follows_and_followers": "Folgers en folgjenden", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Fluchtoetsen", "navigation_bar.lists": "Listen", "navigation_bar.logout": "Utlogge", "navigation_bar.mutes": "Negearre brûkers", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 9cc62ddd0a..d24e1aaec0 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -1,6 +1,7 @@ { "about.blocks": "Freastalaithe faoi stiúir", "about.contact": "Teagmháil:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Fáth", "about.domain_blocks.domain": "Fearann", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ceadaigh", "follow_request.reject": "Diúltaigh", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?", "mute_modal.indefinite": "Gan téarma", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Amlíne áitiúil", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Focail bhalbhaithe", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Eochracha Aicearra", "navigation_bar.lists": "Liostaí", "navigation_bar.logout": "Logáil Amach", "navigation_bar.mutes": "Úsáideoirí balbhaithe", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Cuardaigh", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "haischlib", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 32030374f6..cc0e47630f 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -1,6 +1,7 @@ { "about.blocks": "Frithealaichean fo mhaorsainneachd", "about.contact": "Fios thugainn:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Adhbhar", "about.domain_blocks.domain": "Àrainn", "about.domain_blocks.preamble": "San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus eadar-ghìomh a ghabhail leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo.", @@ -39,7 +40,7 @@ "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn air neach sam bith fhathast.", "account.follows_you": "’Gad leantainn", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Air ballrachd fhaighinn", "account.languages": "Atharraich fo-sgrìobhadh nan cànan", "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}", "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Dùin", "bundle_modal_error.message": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.", "bundle_modal_error.retry": "Feuch ris a-rithist", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Air sgàth ’s gu bheil Mastodon sgaoilte, ’s urrainn dhut cunntas a chruthachadh air frithealaiche eile agus conaltradh ris an fhrithealaiche seo co-dhiù.", + "closed_registrations_modal.description": "Cha ghabh cunntas a chruthachadh air {domain} aig an àm seo ach thoir an aire nach fheum thu cunntas air {domain} gu sònraichte airson Mastodon a chleachdadh.", + "closed_registrations_modal.find_another_server": "Lorg frithealaiche eile", + "closed_registrations_modal.preamble": "Tha Mastodon sgaoilte is mar sin dheth ge b’ e càit an cruthaich thu an cunntas agad, ’s urrainn dhut leantainn air duine sam bith air an fhrithealaiche seo is conaltradh leotha. ’S urrainn dhut fiù ’s frithealaiche agad fhèin òstadh!", + "closed_registrations_modal.title": "Clàradh le Mastodon", "column.about": "Mu dhèidhinn", "column.blocks": "Cleachdaichean bacte", "column.bookmarks": "Comharran-lìn", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ùghdarraich", "follow_request.reject": "Diùlt", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Chaidh a shàbhaladh", - "getting_started.directory": "Eòlaire", - "getting_started.documentation": "Docamaideadh", - "getting_started.free_software_notice": "’S e bathar-bog saor le bun-tùs fosgailte a th’ ann am Mastodon. Chì thu am bun-tùs agus ’s urrainn dhut cuideachadh leis no aithris a dhèanamh air duilgheadasan air {repository}.", "getting_started.heading": "Toiseach", - "getting_started.invite": "Thoir cuireadh do dhaoine", - "getting_started.privacy_policy": "Poileasaidh prìobhaideachd", - "getting_started.security": "Roghainnean a’ chunntais", - "getting_started.what_is_mastodon": "Mu Mhastodon", "hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.any": "no {additional}", "hashtag.column_header.tag_mode.none": "às aonais {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?", "mute_modal.indefinite": "Gun chrìoch", "navigation_bar.about": "Mu dhèidhinn", - "navigation_bar.apps": "Faigh an aplacaid", "navigation_bar.blocks": "Cleachdaichean bacte", "navigation_bar.bookmarks": "Comharran-lìn", "navigation_bar.community_timeline": "Loidhne-ama ionadail", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Faclan mùchte", "navigation_bar.follow_requests": "Iarrtasan leantainn", "navigation_bar.follows_and_followers": "Dàimhean leantainn", - "navigation_bar.info": "Mu dhèidhinn", - "navigation_bar.keyboard_shortcuts": "Grad-iuchraichean", "navigation_bar.lists": "Liostaichean", "navigation_bar.logout": "Clàraich a-mach", "navigation_bar.mutes": "Cleachdaichean mùchte", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Postaichean prìnichte", "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", - "navigation_bar.search": "Search", + "navigation_bar.search": "Lorg", "navigation_bar.security": "Tèarainteachd", "not_signed_in_indicator.not_signed_in": "Feumaidh tu clàradh a-steach mus fhaigh thu cothrom air a’ ghoireas seo.", "notification.admin.report": "Rinn {name} mu {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Briseadh riaghailte", "report_notification.open": "Fosgail an gearan", "search.placeholder": "Lorg", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Fòrmat adhartach an luirg", "search_popout.tips.full_text": "Bheir teacsa sìmplidh dhut na postaichean a sgrìobh thu, a tha nan annsachdan dhut, a bhrosnaich thu no san deach iomradh a thoirt ort cho math ri ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas.", "search_popout.tips.hashtag": "taga hais", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Chan deach am post seo a bhrosnachadh le duine sam bith fhathast. Nuair a bhrosnaicheas cuideigin e, nochdaidh iad an-seo.", "status.redraft": "Sguab às ⁊ dèan dreachd ùr", "status.remove_bookmark": "Thoir an comharra-lìn air falbh", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Air {name} fhreagairt", "status.reply": "Freagair", "status.replyAll": "Freagair dhan t-snàithlean", "status.report": "Dèan gearan mu @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Seall barrachd dhen a h-uile", "status.show_original": "Seall an tionndadh tùsail", "status.translate": "Eadar-theangaich", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Air eaar-theangachadh o {lang} le {provider}", "status.uncached_media_warning": "Chan eil seo ri fhaighinn", "status.unmute_conversation": "Dì-mhùch an còmhradh", "status.unpin": "Dì-phrìnich on phròifil", @@ -608,7 +607,7 @@ "timeline_hint.resources.followers": "Luchd-leantainn", "timeline_hint.resources.follows": "A’ leantainn air", "timeline_hint.resources.statuses": "Postaichean nas sine", - "trends.counter_by_accounts": "{count, plural, one {{counter} neach} two {{counter} neach} few {{counter} daoine} other {{counter} duine}} sna {days, plural, one {{days} latha} two {{days} latha} few {{days} làithean} other {{days} latha}} seo chaidh", + "trends.counter_by_accounts": "{count, plural, one {{counter} neach} two {{counter} neach} few {{counter} daoine} other {{counter} duine}} {days, plural, one {san {days} latha} two {san {days} latha} few {sna {days} làithean} other {sna {days} latha}} seo chaidh", "trends.trending_now": "A’ treandadh an-dràsta", "ui.beforeunload": "Caillidh tu an dreachd agad ma dh’fhàgas tu Mastodon an-dràsta.", "units.short.billion": "{count}B", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Ag ullachadh OCR…", "upload_modal.preview_label": "Ro-shealladh ({ratio})", "upload_progress.label": "’Ga luchdadh suas…", + "upload_progress.processing": "Processing…", "video.close": "Dùin a’ video", "video.download": "Luchdaich am faidhle a-nuas", "video.exit_fullscreen": "Fàg modh na làn-sgrìn", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 5a97a82d1a..009cb2dad3 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular.", @@ -39,7 +40,7 @@ "account.follows.empty": "Esta usuaria aínda non segue a ninguén.", "account.follows_you": "Séguete", "account.hide_reblogs": "Agochar repeticións de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Uniuse", "account.languages": "Modificar os idiomas subscritos", "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}", "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Pechar", "bundle_modal_error.message": "Ocorreu un erro ó cargar este compoñente.", "bundle_modal_error.retry": "Téntao de novo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Cómo Mastodon é descentralizado, podes crear unha conta noutro servidor e interactuar igualmente con este.", + "closed_registrations_modal.description": "Actualmente non é posible crear unha conta en {domain}, pero ten en conta que non precisas unha conta específicamente en {domain} para usar Mastodon.", + "closed_registrations_modal.find_another_server": "Atopa outro servidor", + "closed_registrations_modal.preamble": "Mastodon é descentralizado, así que non importa onde crees a conta, poderás seguir e interactuar con calquera conta deste servidor. Incluso podes ter o teu servidor!", + "closed_registrations_modal.title": "Crear conta en Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gardado", - "getting_started.directory": "Directorio", - "getting_started.documentation": "Documentación", - "getting_started.free_software_notice": "Mastodon é código aberto e libre. Podes revisar o código, contribuir ou informar de fallos en {repository}.", "getting_started.heading": "Primeiros pasos", - "getting_started.invite": "Convidar persoas", - "getting_started.privacy_policy": "Política de Privacidade", - "getting_started.security": "Seguranza", - "getting_started.what_is_mastodon": "Acerca de Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Agochar notificacións desta usuaria?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "Acerca de", - "navigation_bar.apps": "Obtén a app", "navigation_bar.blocks": "Usuarias bloqueadas", "navigation_bar.bookmarks": "Marcadores", "navigation_bar.community_timeline": "Cronoloxía local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palabras silenciadas", "navigation_bar.follow_requests": "Peticións de seguimento", "navigation_bar.follows_and_followers": "Seguindo e seguidoras", - "navigation_bar.info": "Acerca de", - "navigation_bar.keyboard_shortcuts": "Atallos do teclado", "navigation_bar.lists": "Listaxes", "navigation_bar.logout": "Pechar sesión", "navigation_bar.mutes": "Usuarias silenciadas", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Publicacións fixadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronoloxía federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Seguranza", "not_signed_in_indicator.not_signed_in": "Debes acceder para ver este recurso.", "notification.admin.report": "{name} denunciou a {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Faltou ás regras", "report_notification.open": "Abrir a denuncia", "search.placeholder": "Procurar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de procura avanzada", "search_popout.tips.full_text": "Texto simple devolve toots que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.", "search_popout.tips.hashtag": "cancelo", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Aínda ninguén promoveu esta publicación. Cando alguén o faga, amosarase aquí.", "status.redraft": "Eliminar e reescribir", "status.remove_bookmark": "Eliminar marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondeu a {name}", "status.reply": "Responder", "status.replyAll": "Responder ao tema", "status.report": "Denunciar @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Amosar máis para todos", "status.show_original": "Mostrar o orixinal", "status.translate": "Traducir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traducido do {lang} usando {provider}", "status.uncached_media_warning": "Non dispoñíbel", "status.unmute_conversation": "Deixar de silenciar conversa", "status.unpin": "Desafixar do perfil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Estase a subir...", + "upload_progress.processing": "Processing…", "video.close": "Pechar vídeo", "video.download": "Baixar ficheiro", "video.exit_fullscreen": "Saír da pantalla completa", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 59a3462ab2..f886519e85 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "הרשאה", "follow_request.reject": "דחיה", "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "נשמר", - "getting_started.directory": "Directory", - "getting_started.documentation": "תיעוד", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "בואו נתחיל", - "getting_started.invite": "להזמין אנשים", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "הגדרות חשבון", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ו- {additional}", "hashtag.column_header.tag_mode.any": "או {additional}", "hashtag.column_header.tag_mode.none": "ללא {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "להסתיר התראות מחשבון זה?", "mute_modal.indefinite": "ללא תאריך סיום", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "משתמשים חסומים", "navigation_bar.bookmarks": "סימניות", "navigation_bar.community_timeline": "פיד שרת מקומי", @@ -375,8 +375,6 @@ "navigation_bar.filters": "מילים מושתקות", "navigation_bar.follow_requests": "בקשות מעקב", "navigation_bar.follows_and_followers": "נעקבים ועוקבים", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "קיצורי מקלדת", "navigation_bar.lists": "רשימות", "navigation_bar.logout": "התנתקות", "navigation_bar.mutes": "משתמשים בהשתקה", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "הפרת כלל", "report_notification.open": "פתח דו\"ח", "search.placeholder": "חיפוש", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "מבנה חיפוש מתקדם", "search_popout.tips.full_text": "טקסט פשוט מחזיר פוסטים שכתבת, חיבבת, הידהדת או שאוזכרת בהם, כמו גם שמות משתמשים, שמות להצגה ותגיות מתאימים.", "search_popout.tips.hashtag": "האשתג", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "מכין OCR…", "upload_modal.preview_label": "תצוגה ({ratio})", "upload_progress.label": "עולה...", + "upload_progress.processing": "Processing…", "video.close": "סגירת וידאו", "video.download": "הורדת קובץ", "video.exit_fullscreen": "יציאה ממסך מלא", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 591cff025f..a3efc91c62 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -39,7 +40,7 @@ "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।", "account.follows_you": "आपको फॉलो करता है", "account.hide_reblogs": "@{name} के बूस्ट छुपाएं", - "account.joined_short": "Joined", + "account.joined_short": "पुरा हुआ", "account.languages": "Change subscribed languages", "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था", "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "बंद", "bundle_modal_error.message": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया", "bundle_modal_error.retry": "दुबारा कोशिश करें", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "जब से मास्टोडन विकेंद्रीकरण हुआ है, आप दुसरे सर्वर पर एक अकाउंट बना सकते हैं और अब भी इसके साथ उपयोग कर सकते हैं", + "closed_registrations_modal.description": "{domain} पर अकाउंट बनाना अभी संभव नहीं है, किन्तु कृपया ध्यान दें कि आपको मास्टोडन का प्रयोग करने के लिए {domain} पर एक अकाउंट का पूर्ण रूप से नहीं आवश्यकता हैं", + "closed_registrations_modal.find_another_server": "दूसरा सर्वर ढूंढें", + "closed_registrations_modal.preamble": "मास्टोडन विकेन्द्रित है, इसलिए कोई मतलब नहीं आप कहाँ अपना अकाउंट बना रहे हैं, आपको फॉलो करने के लिए सक्षम होना पड़ेगा और इस सर्वर पर किसी के साथ पूछना पड़ेगा I आप इसे खुद भी-चला सकते हैंI ", + "closed_registrations_modal.title": "मास्टोडन पर जुड़ा जा रहा", "column.about": "About", "column.blocks": "ब्लॉक्ड यूज़र्स", "column.bookmarks": "पुस्तकचिह्न:", @@ -258,15 +259,15 @@ "follow_request.authorize": "अधिकार दें", "follow_request.reject": "अस्वीकार करें", "follow_requests.unlocked_explanation": "हालाँकि आपका खाता लॉक नहीं है, फिर भी {domain} डोमेन स्टाफ ने सोचा कि आप इन खातों के मैन्युअल अनुरोधों की समीक्षा करना चाहते हैं।", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "प्रलेखन", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "पहले कदम रखें", - "getting_started.invite": "दोस्तों को आमंत्रित करें", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "अकाउंट सेटिंग्स", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "और {additional}", "hashtag.column_header.tag_mode.any": "या {additional}", "hashtag.column_header.tag_mode.none": "बिना {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "ब्लॉक्ड यूज़र्स", "navigation_bar.bookmarks": "पुस्तकचिह्न:", "navigation_bar.community_timeline": "लोकल टाइम्लाइन", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "अनुसरण करने के अनुरोध", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "सूचियाँ", "navigation_bar.logout": "बाहर जाए", "navigation_bar.mutes": "Muted users", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", - "navigation_bar.search": "Search", + "navigation_bar.search": "ढूंढें", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "खोजें", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name} का उत्तर दें", "status.reply": "जवाब", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Show more for all", "status.show_original": "Show original", "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{provider} का उपयोग करते हुये {lang} से अनुवादित किया गया", "status.uncached_media_warning": "अनुपलब्ध", "status.unmute_conversation": "Unmute conversation", "status.unpin": "Unpin from profile", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "अपलोडिंग...", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "फाइल डाउनलोड करें", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 252d082863..c413ef2b6b 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoriziraj", "follow_request.reject": "Odbij", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Spremljeno", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentacija", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Počnimo", - "getting_started.invite": "Pozovi ljude", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Postavke računa", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "ili {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna vremenska crta", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Utišane riječi", "navigation_bar.follow_requests": "Zahtjevi za praćenje", "navigation_bar.follows_and_followers": "Praćeni i pratitelji", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Tipkovnički prečaci", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Odjavi se", "navigation_bar.mutes": "Utišani korisnici", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Traži", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format naprednog pretraživanja", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Prenošenje...", + "upload_progress.processing": "Processing…", "video.close": "Zatvori video", "video.download": "Preuzmi datoteku", "video.exit_fullscreen": "Izađi iz cijelog zaslona", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index a3f391bb69..f5682122a6 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderált kiszolgálók", "about.contact": "Kapcsolat:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Indoklás", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "A Mastodon általában mindenféle tartalomcserét és interakciót lehetővé tesz bármelyik másik kiszolgálóval a födiverzumban. Ezek azok a kivételek, amelyek a mi kiszolgálónkon érvényben vannak.", @@ -39,7 +40,7 @@ "account.follows.empty": "Ez a felhasználó még senkit sem követ.", "account.follows_you": "Követ téged", "account.hide_reblogs": "@{name} megtolásainak elrejtése", - "account.joined_short": "Joined", + "account.joined_short": "Csatlakozott", "account.languages": "Feliratkozott nyelvek módosítása", "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}", "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Engedélyezés", "follow_request.reject": "Elutasítás", "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Elmentve", - "getting_started.directory": "Névjegyzék", - "getting_started.documentation": "Dokumentáció", - "getting_started.free_software_notice": "A Mastodon ingyenes, nyílt forráskódú szoftver. Megtekintheted a forrását, hozzájárulhatsz a fejlesztéséhez vagy jelenthetsz hibákat itt: {repository}", "getting_started.heading": "Első lépések", - "getting_started.invite": "Mások meghívása", - "getting_started.privacy_policy": "Adatvédelmi szabályzat", - "getting_started.security": "Fiókbeállítások", - "getting_started.what_is_mastodon": "A Mastodonról", "hashtag.column_header.tag_mode.all": "és {additional}", "hashtag.column_header.tag_mode.any": "vagy {additional}", "hashtag.column_header.tag_mode.none": "{additional} nélkül", @@ -354,14 +355,13 @@ "lists.subheading": "Listáid", "load_pending": "{count, plural, one {# új elem} other {# új elem}}", "loading_indicator.label": "Betöltés...", - "media_gallery.toggle_visible": "Láthatóság állítása", + "media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}", "missing_indicator.label": "Nincs találat", "missing_indicator.sublabel": "Ez az erőforrás nem található", "mute_modal.duration": "Időtartam", "mute_modal.hide_notifications": "Rejtsük el a felhasználótól származó értesítéseket?", "mute_modal.indefinite": "Határozatlan", "navigation_bar.about": "Névjegy", - "navigation_bar.apps": "Töltsd le az appot", "navigation_bar.blocks": "Letiltott felhasználók", "navigation_bar.bookmarks": "Könyvjelzők", "navigation_bar.community_timeline": "Helyi idővonal", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Némított szavak", "navigation_bar.follow_requests": "Követési kérelmek", "navigation_bar.follows_and_followers": "Követettek és követők", - "navigation_bar.info": "Névjegy", - "navigation_bar.keyboard_shortcuts": "Gyorsbillentyűk", "navigation_bar.lists": "Listák", "navigation_bar.logout": "Kijelentkezés", "navigation_bar.mutes": "Némított felhasználók", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Szabálysértés", "report_notification.open": "Bejelentés megnyitása", "search.placeholder": "Keresés", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Speciális keresés", "search_popout.tips.full_text": "Egyszerű szöveg, mely általad írt, kedvencnek jelölt vagy megtolt bejegyzéseket, rólad szóló megemlítéseket, felhasználói neveket, megjelenített neveket, hashtageket ad majd vissza.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR előkészítése…", "upload_modal.preview_label": "Előnézet ({ratio})", "upload_progress.label": "Feltöltés...", + "upload_progress.processing": "Processing…", "video.close": "Videó bezárása", "video.download": "Fájl letöltése", "video.exit_fullscreen": "Kilépés teljes képernyőből", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index cd68f74d2e..798153c275 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Վաւերացնել", "follow_request.reject": "Մերժել", "follow_requests.unlocked_explanation": "Այս հարցումը ուղարկուած է հաշուից, որի համար {domain}-ի անձնակազմը միացրել է ձեռքով ստուգում։", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Պահպանուած է", - "getting_started.directory": "Directory", - "getting_started.documentation": "Փաստաթղթեր", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Ինչպէս սկսել", - "getting_started.invite": "Հրաւիրել մարդկանց", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Հաշուի կարգաւորումներ", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "եւ {additional}", "hashtag.column_header.tag_mode.any": "կամ {additional}", "hashtag.column_header.tag_mode.none": "առանց {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Թաքցնե՞լ ծանուցումներն այս օգտատիրոջից։", "mute_modal.indefinite": "Անժամկէտ", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Արգելափակուած օգտատէրեր", "navigation_bar.bookmarks": "Էջանիշեր", "navigation_bar.community_timeline": "Տեղական հոսք", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Լռեցուած բառեր", "navigation_bar.follow_requests": "Հետեւելու հայցեր", "navigation_bar.follows_and_followers": "Հետեւածներ եւ հետեւողներ", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Ստեղնաշարի կարճատներ", "navigation_bar.lists": "Ցանկեր", "navigation_bar.logout": "Դուրս գալ", "navigation_bar.mutes": "Լռեցրած օգտատէրեր", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Փնտրել", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Փնտրելու առաջադէմ ձեւ", "search_popout.tips.full_text": "Պարզ տեքստը վերադարձնում է գրառումներդ, հաւանածներդ, տարածածներդ, որտեղ ես նշուած եղել, ինչպէս նաեւ նման օգտանուններ, անուններ եւ պիտակներ։", "search_popout.tips.hashtag": "պիտակ", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Գրաճանաչման նախապատրաստում…", "upload_modal.preview_label": "Նախադիտում ({ratio})", "upload_progress.label": "Վերբեռնվում է…", + "upload_progress.processing": "Processing…", "video.close": "Փակել տեսագրութիւնը", "video.download": "Ներբեռնել նիշքը", "video.exit_fullscreen": "Անջատել լիաէկրան դիտումը", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index fb86fda371..b75a1a3325 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", + "about.blocks": "Server yang dimoderasi", + "about.contact": "Hubungi:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Alasan", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.preamble": "Mastodon umumnya mengizinkan Anda untuk melihat konten dan berinteraksi dengan pengguna dari server lain di fediverse. Ini adalah pengecualian yang dibuat untuk beberapa server.", + "about.domain_blocks.severity": "Keparahan", + "about.domain_blocks.silenced.explanation": "Anda secara umum tidak melihat profil dan konten dari server ini, kecuali jika Anda mencarinya atau memilihnya dengan mengikuti secara eksplisit.", + "about.domain_blocks.silenced.title": "Terbatas", + "about.domain_blocks.suspended.explanation": "Tidak ada data yang diproses, disimpan, atau ditukarkan dari server ini, membuat interaksi atau komunikasi dengan pengguna dari server ini tidak mungkin dilakukan.", + "about.domain_blocks.suspended.title": "Ditangguhkan", + "about.not_available": "Informasi ini belum tersedia di server ini.", + "about.powered_by": "Media sosial terdesentralisasi diberdayakan oleh {mastodon}", + "about.rules": "Aturan server", "account.account_note_header": "Catatan", "account.add_or_remove_from_list": "Tambah atau Hapus dari daftar", "account.badges.bot": "בוט", @@ -20,27 +21,27 @@ "account.block_domain": "Blokir domain {domain}", "account.blocked": "Terblokir", "account.browse_more_on_origin_server": "Lihat lebih lanjut diprofil asli", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Batalkan permintaan ikut", "account.direct": "Pesan Langsung @{name}", "account.disable_notifications": "Berhenti memberitahu saya ketika @{name} memposting", "account.domain_blocked": "Domain diblokir", "account.edit_profile": "Ubah profil", "account.enable_notifications": "Beritahu saya saat @{name} memposting", "account.endorse": "Tampilkan di profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Kiriman terakhir pada {date}", + "account.featured_tags.last_status_never": "Tidak ada kiriman", + "account.featured_tags.title": "Tagar {name} yang difiturkan", "account.follow": "Ikuti", "account.followers": "Pengikut", "account.followers.empty": "Pengguna ini belum ada pengikut.", "account.followers_counter": "{count, plural, other {{counter} Pengikut}}", "account.following": "Mengikuti", "account.following_counter": "{count, plural, other {{counter} Mengikuti}}", - "account.follows.empty": "Pengguna ini belum mengikuti siapapun.", - "account.follows_you": "Mengikuti anda", + "account.follows.empty": "Pengguna ini belum mengikuti siapa pun.", + "account.follows_you": "Mengikuti Anda", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Bergabung", + "account.languages": "Ubah langganan bahasa", "account.link_verified_on": "Kepemilikan tautan ini telah dicek pada {date}", "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.", "account.media": "Media", @@ -50,12 +51,12 @@ "account.mute_notifications": "Bisukan pemberitahuan dari @{name}", "account.muted": "Dibisukan", "account.posts": "Kiriman", - "account.posts_with_replies": "Postingan dengan balasan", + "account.posts_with_replies": "Kiriman dan balasan", "account.report": "Laporkan @{name}", "account.requested": "Menunggu persetujuan. Klik untuk membatalkan permintaan", "account.share": "Bagikan profil @{name}", "account.show_reblogs": "Tampilkan boost dari @{name}", - "account.statuses_counter": "{count, plural, other {{counter} Toot}}", + "account.statuses_counter": "{count, plural, other {{counter} Kiriman}}", "account.unblock": "Hapus blokir @{name}", "account.unblock_domain": "Buka blokir domain {domain}", "account.unblock_short": "Buka blokir", @@ -79,24 +80,24 @@ "audio.hide": "Indonesia", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Salin laporan kesalahan", + "bundle_column_error.error.body": "Laman yang diminta tidak dapat ditampilkan. Mungkin karena sebuah kutu dalam kode kami, atau masalah kompatibilitas peramban.", + "bundle_column_error.error.title": "Oh, tidak!", + "bundle_column_error.network.body": "Ada kesalahan ketika memuat laman ini. Ini dapat terjadi karena masalah sementara dengan koneksi internet Anda atau server ini.", + "bundle_column_error.network.title": "Kesalahan jaringan", "bundle_column_error.retry": "Coba lagi", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Kembali ke beranda", + "bundle_column_error.routing.body": "Laman yang diminta tidak ditemukan. Apakah Anda yakin bahwa URL dalam bilah alamat benar?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tutup", "bundle_modal_error.message": "Kesalahan terjadi saat memuat komponen ini.", "bundle_modal_error.retry": "Coba lagi", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Karena Mastodon itu terdesentralisasi, Anda dapat membuat sebuah akun di server lain dan masih dapat berinteraksi dengan satu ini.", + "closed_registrations_modal.description": "Membuat sebuah akun di {domain} saat ini tidak memungkinkan, tetapi diingat bahwa Anda tidak harus memiliki sebuah akun secara khusus di {domain} untuk menggunakan Mastodon.", + "closed_registrations_modal.find_another_server": "Cari server lain", + "closed_registrations_modal.preamble": "Mastodon itu terdesentralisasi, jadi di mana pun Anda buat akun, Anda masih akan dapat mengikuti dan berinteraksi dengan siapa pun di server ini. Anda bahkan dapat host Mastodon sendiri!", + "closed_registrations_modal.title": "Mendaftar di Mastodon", + "column.about": "Tentang", "column.blocks": "Pengguna yang diblokir", "column.bookmarks": "Markah", "column.community": "Linimasa Lokal", @@ -126,10 +127,10 @@ "compose.language.search": "Telusuri bahasa...", "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya", "compose_form.encryption_warning": "Kiriman di Mastodon tidak dienkripsi end-to-end. Jangan bagikan informasi sensitif melalui Mastodon.", - "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah diatur sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.", - "compose_form.lock_disclaimer": "Akun anda tidak {locked}. Semua orang dapat mengikuti anda untuk melihat postingan khusus untuk pengikut anda.", + "compose_form.hashtag_warning": "Kiriman ini tidak akan ada dalam daftar tagar mana pun karena telah diatur sebagai tidak terdaftar. Hanya kiriman publik yang bisa dicari dengan tagar.", + "compose_form.lock_disclaimer": "Akun Anda tidak {locked}. Semua orang dapat mengikuti Anda untuk melihat kiriman khusus untuk pengikut Anda.", "compose_form.lock_disclaimer.lock": "terkunci", - "compose_form.placeholder": "Apa yang ada di pikiran anda?", + "compose_form.placeholder": "Apa yang ada di pikiran Anda?", "compose_form.poll.add_option": "Tambahkan pilihan", "compose_form.poll.duration": "Durasi polling", "compose_form.poll.option_placeholder": "Pilihan {number}", @@ -148,45 +149,45 @@ "confirmation_modal.cancel": "Batal", "confirmations.block.block_and_report": "Blokir & Laporkan", "confirmations.block.confirm": "Blokir", - "confirmations.block.message": "Apa anda yakin ingin memblokir {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.block.message": "Apa Anda yakin ingin memblokir {name}?", + "confirmations.cancel_follow_request.confirm": "Batalkan permintaan", + "confirmations.cancel_follow_request.message": "Apakah Anda yakin ingin membatalkan permintaan Anda untuk mengikuti {name}?", "confirmations.delete.confirm": "Hapus", - "confirmations.delete.message": "Apa anda yakin untuk menghapus status ini?", + "confirmations.delete.message": "Apakah Anda yakin untuk menghapus kiriman ini?", "confirmations.delete_list.confirm": "Hapus", - "confirmations.delete_list.message": "Apakah anda yakin untuk menghapus daftar ini secara permanen?", + "confirmations.delete_list.message": "Apakah Anda yakin untuk menghapus daftar ini secara permanen?", "confirmations.discard_edit_media.confirm": "Buang", "confirmations.discard_edit_media.message": "Anda belum menyimpan perubahan deskripsi atau pratinjau media, buang saja?", "confirmations.domain_block.confirm": "Sembunyikan keseluruhan domain", - "confirmations.domain_block.message": "Apakah anda benar benar yakin untuk memblokir keseluruhan {domain}? Dalam kasus tertentu beberapa pemblokiran atau penyembunyian lebih baik.", + "confirmations.domain_block.message": "Apakah Anda benar-benar yakin untuk memblokir keseluruhan {domain}? Dalam kasus tertentu beberapa pemblokiran atau penyembunyian lebih baik.", "confirmations.logout.confirm": "Keluar", - "confirmations.logout.message": "Apakah anda yakin ingin keluar?", + "confirmations.logout.message": "Apakah Anda yakin ingin keluar?", "confirmations.mute.confirm": "Bisukan", "confirmations.mute.explanation": "Ini akan menyembunyikan pos dari mereka dan pos yang menyebut mereka, tapi ini tetap mengizinkan mereka melihat posmu dan mengikutimu.", - "confirmations.mute.message": "Apa anda yakin ingin membisukan {name}?", + "confirmations.mute.message": "Apa Anda yakin ingin membisukan {name}?", "confirmations.redraft.confirm": "Hapus dan susun ulang", - "confirmations.redraft.message": "Apakah anda yakin ingin menghapus dan menyusun ulang? Favorit dan boost akan hilang, dan balasan terhadap kiriman asli akan ditinggalkan.", + "confirmations.redraft.message": "Apakah Anda yakin ingin menghapus dan draf ulang? Favorit dan boost akan hilang, dan balasan terhadap kiriman asli akan ditinggalkan.", "confirmations.reply.confirm": "Balas", "confirmations.reply.message": "Membalas sekarang akan menimpa pesan yang sedang Anda buat. Anda yakin ingin melanjutkan?", "confirmations.unfollow.confirm": "Berhenti mengikuti", - "confirmations.unfollow.message": "Apakah anda ingin berhenti mengikuti {name}?", + "confirmations.unfollow.message": "Apakah Anda ingin berhenti mengikuti {name}?", "conversation.delete": "Hapus percakapan", "conversation.mark_as_read": "Tandai sudah dibaca", "conversation.open": "Lihat percakapan", "conversation.with": "Dengan {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Disalin", + "copypaste.copy": "Salin", "directory.federated": "Dari fediverse yang dikenal", "directory.local": "Dari {domain} saja", "directory.new_arrivals": "Yang baru datang", "directory.recently_active": "Baru-baru ini aktif", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "Sematkan kiriman ini di website anda dengan menyalin kode di bawah ini.", + "dismissable_banner.community_timeline": "Ini adalah kiriman publik terkini dari orang yang akunnya berada di {domain}.", + "dismissable_banner.dismiss": "Abaikan", + "dismissable_banner.explore_links": "Cerita berita ini sekarang sedang dibicarakan oleh orang di server ini dan lainnya dalam jaringan terdesentralisasi.", + "dismissable_banner.explore_statuses": "Kiriman ini dari server ini dan lainnya dalam jaringan terdesentralisasi sekarang sedang tren di server ini.", + "dismissable_banner.explore_tags": "Tagar ini sekarang sedang tren di antara orang di server ini dan lainnya dalam jaringan terdesentralisasi.", + "dismissable_banner.public_timeline": "Ini adalah kiriman publik terkini dari orang di server ini dan lainnya dalam jaringan terdesentralisasi yang server ini tahu.", + "embed.instructions": "Sematkan kiriman ini di situs web Anda dengan menyalin kode di bawah ini.", "embed.preview": "Tampilan akan seperti ini nantinya:", "emoji_button.activity": "Aktivitas", "emoji_button.clear": "Hapus", @@ -206,67 +207,67 @@ "empty_column.account_suspended": "Akun ditangguhkan", "empty_column.account_timeline": "Tidak ada toot di sini!", "empty_column.account_unavailable": "Profil tidak tersedia", - "empty_column.blocks": "Anda belum memblokir siapapun.", - "empty_column.bookmarked_statuses": "Anda belum memiliki toot termarkah. Saat Anda menandainya sebagai markah, ia akan muncul di sini.", + "empty_column.blocks": "Anda belum memblokir siapa pun.", + "empty_column.bookmarked_statuses": "Anda belum memiliki kiriman termarkah. Saat Anda menandainya sebagai markah, mereka akan muncul di sini.", "empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!", "empty_column.direct": "Anda belum memiliki pesan langsung. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", "empty_column.domain_blocks": "Tidak ada topik tersembunyi.", - "empty_column.explore_statuses": "Tidak ada yang sedang tren pada saat ini. Silakan mengecek lagi nanti!", - "empty_column.favourited_statuses": "Anda belum memiliki toot favorit. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.", - "empty_column.favourites": "Belum ada yang memfavoritkan toot ini. Ketika seseorang melakukannya, akan muncul disini.", + "empty_column.explore_statuses": "Tidak ada yang sedang tren pada saat ini. Periksa lagi nanti!", + "empty_column.favourited_statuses": "Anda belum memiliki kiriman favorit. Ketika Anda mengirim atau menerimanya, mereka akan muncul di sini.", + "empty_column.favourites": "Belum ada yang memfavoritkan toot ini. Ketika seseorang melakukannya, mereka akan muncul di sini.", "empty_column.follow_recommendations": "Sepertinya tak ada saran yang dibuat untuk Anda. Anda dapat mencoba menggunakan pencarian untuk menemukan orang yang Anda ketahui atau menjelajahi tagar yang sedang tren.", - "empty_column.follow_requests": "Anda belum memiliki permintaan mengikuti. Ketika Anda menerimanya, maka akan muncul disini.", - "empty_column.hashtag": "Tidak ada apapun dalam hashtag ini.", + "empty_column.follow_requests": "Anda belum memiliki permintaan mengikuti. Ketika Anda menerimanya, maka itu akan muncul di sini.", + "empty_column.hashtag": "Tidak ada apa pun dalam hashtag ini.", "empty_column.home": "Linimasa anda kosong! Kunjungi {public} atau gunakan pencarian untuk memulai dan bertemu pengguna lain.", "empty_column.home.suggestions": "Lihat beberapa saran", - "empty_column.list": "Tidak ada postingan di list ini. Ketika anggota dari list ini memposting status baru, status tersebut akan tampil disini.", - "empty_column.lists": "Anda belum memiliki daftar. Ketika Anda membuatnya, maka akan muncul disini.", - "empty_column.mutes": "Anda belum membisukan siapapun.", - "empty_column.notifications": "Anda tidak memiliki notifikasi apapun. Berinteraksi dengan orang lain untuk memulai percakapan.", - "empty_column.public": "Tidak ada apapun disini! Tulis sesuatu, atau ikuti pengguna lain dari server lain untuk mengisi ini", + "empty_column.list": "Belum ada apa pun di daftar ini. Ketika anggota dari daftar ini mengirim kiriman baru, mereka akan tampil di sini.", + "empty_column.lists": "Anda belum memiliki daftar. Ketika Anda membuatnya, maka akan muncul di sini.", + "empty_column.mutes": "Anda belum membisukan siapa pun.", + "empty_column.notifications": "Anda belum memiliki notifikasi. Ketika orang lain berinteraksi dengan Anda, Anda akan melihatnya di sini.", + "empty_column.public": "Tidak ada apa pun di sini! Tulis sesuatu, atau ikuti pengguna lain dari server lain untuk mengisi ini", "error.unexpected_crash.explanation": "Karena kutu pada kode kami atau isu kompatibilitas peramban, halaman tak dapat ditampilkan dengan benar.", "error.unexpected_crash.explanation_addons": "Halaman ini tidak dapat ditampilkan dengan benar. Kesalahan ini mungkin disebabkan pengaya peramban atau alat terjemahan otomatis.", - "error.unexpected_crash.next_steps": "Coba segarkan halaman. Jika tak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi native.", - "error.unexpected_crash.next_steps_addons": "Coba nonaktifkan mereka lalu segarkan halaman. Jika tak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi murni.", + "error.unexpected_crash.next_steps": "Coba segarkan halaman. Jika itu tidak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi asli.", + "error.unexpected_crash.next_steps_addons": "Coba nonaktifkan mereka lalu segarkan halaman. Jika itu tidak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi asli.", "errors.unexpected_crash.copy_stacktrace": "Salin stacktrace ke papan klip", "errors.unexpected_crash.report_issue": "Laporkan masalah", "explore.search_results": "Hasil pencarian", "explore.suggested_follows": "Untuk Anda", "explore.title": "Jelajahi", "explore.trending_links": "Berita", - "explore.trending_statuses": "Postingan", + "explore.trending_statuses": "Kiriman", "explore.trending_tags": "Tagar", "filter_modal.added.context_mismatch_explanation": "Indonesia Translate", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_title": "Konteks tidak cocok!", + "filter_modal.added.expired_explanation": "Kategori saringan ini telah kedaluwarsa, Anda harus mengubah tanggal kedaluwarsa untuk diterapkan.", + "filter_modal.added.expired_title": "Saringan kedaluwarsa!", + "filter_modal.added.review_and_configure": "Untuk meninjau dan mengatur kategori saringan ini lebih jauh, pergi ke {settings_link}.", + "filter_modal.added.review_and_configure_title": "Pengaturan saringan", + "filter_modal.added.settings_link": "laman pengaturan", + "filter_modal.added.short_explanation": "Kiriman ini telah ditambahkan ke kategori saringan berikut: {title}.", + "filter_modal.added.title": "Saringan ditambahkan!", + "filter_modal.select_filter.context_mismatch": "tidak diterapkan ke konteks ini", + "filter_modal.select_filter.expired": "kedaluwarsa", + "filter_modal.select_filter.prompt_new": "Kategori baru: {name}", + "filter_modal.select_filter.search": "Cari atau buat", + "filter_modal.select_filter.subtitle": "Gunakan kategori yang sudah ada atau buat yang baru", + "filter_modal.select_filter.title": "Saring kiriman ini", + "filter_modal.title.status": "Saring sebuah kiriman", "follow_recommendations.done": "Selesai", "follow_recommendations.heading": "Ikuti orang yang ingin Anda lihat kirimannya! Ini ada beberapa saran.", "follow_recommendations.lead": "Kiriman dari orang yang Anda ikuti akan tampil berdasar waktu di beranda Anda. Jangan takut membuat kesalahan, Anda dapat berhenti mengikuti mereka dengan mudah kapan saja!", "follow_request.authorize": "Izinkan", "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Disimpan", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentasi", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Mulai", - "getting_started.invite": "Undang orang", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Keamanan", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -276,48 +277,48 @@ "hashtag.column_settings.tag_mode.any": "Semua ini", "hashtag.column_settings.tag_mode.none": "Tak satu pun", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Ikuti tagar", + "hashtag.unfollow": "Batalkan pengikutan tagar", "home.column_settings.basic": "Dasar", "home.column_settings.show_reblogs": "Tampilkan boost", "home.column_settings.show_replies": "Tampilkan balasan", "home.hide_announcements": "Sembunyikan pengumuman", "home.show_announcements": "Tampilkan pengumuman", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Dengan sebuah akun di Mastodon, Anda bisa memfavorit kiriman ini untuk memberi tahu penulis bahwa Anda mengapresiasinya dan menyimpannya untuk nanti.", + "interaction_modal.description.follow": "Dengan sebuah akun di Mastodon, Anda bisa mengikuti {name} untuk menerima kirimannya di beranda Anda.", + "interaction_modal.description.reblog": "Dengan sebuah akun di Mastodon, Anda bisa mem-boost kiriman ini untuk membagikannya ke pengikut Anda sendiri.", + "interaction_modal.description.reply": "Dengan sebuah akun di Mastodon, Anda bisa menanggapi kiriman ini.", + "interaction_modal.on_another_server": "Di server lain", + "interaction_modal.on_this_server": "Di server ini", + "interaction_modal.other_server_instructions": "Tinggal salin dan tempelkan URL ini ke bilah pencarian di aplikasi favorit Anda atau antarmuka web di mana Anda masuk.", + "interaction_modal.preamble": "Karena Mastodon itu terdesentralisasi, Anda dapat menggunakan akun Anda yang sudah ada yang berada di server Mastodon lain atau platform yang kompatibel jika Anda tidak memiliki sebuah akun di sini.", + "interaction_modal.title.favourite": "Favoritkan kiriman {name}", + "interaction_modal.title.follow": "Ikuti {name}", + "interaction_modal.title.reblog": "Boost kiriman {name}", + "interaction_modal.title.reply": "Balas ke kiriman {name}", "intervals.full.days": "{number, plural, other {# hari}}", "intervals.full.hours": "{number, plural, other {# jam}}", "intervals.full.minutes": "{number, plural, other {# menit}}", "keyboard_shortcuts.back": "untuk kembali", "keyboard_shortcuts.blocked": "buka daftar pengguna terblokir", "keyboard_shortcuts.boost": "untuk menyebarkan", - "keyboard_shortcuts.column": "untuk fokus kepada sebuah status di sebuah kolom", + "keyboard_shortcuts.column": "Fokus kolom", "keyboard_shortcuts.compose": "untuk fokus ke area penulisan", "keyboard_shortcuts.description": "Deskripsi", "keyboard_shortcuts.direct": "untuk membuka kolom pesan langsung", "keyboard_shortcuts.down": "untuk pindah ke bawah dalam sebuah daftar", - "keyboard_shortcuts.enter": "untuk membuka status", + "keyboard_shortcuts.enter": "Buka kiriman", "keyboard_shortcuts.favourite": "untuk memfavoritkan", "keyboard_shortcuts.favourites": "buka daftar favorit", "keyboard_shortcuts.federated": "buka linimasa gabungan", "keyboard_shortcuts.heading": "Pintasan keyboard", - "keyboard_shortcuts.home": "buka linimasa beranda", + "keyboard_shortcuts.home": "Buka linimasa beranda", "keyboard_shortcuts.hotkey": "Pintasan", "keyboard_shortcuts.legend": "tampilkan legenda ini", "keyboard_shortcuts.local": "buka linimasa lokal", "keyboard_shortcuts.mention": "sebut pencipta", "keyboard_shortcuts.muted": "buka daftar pengguna terbisukan", - "keyboard_shortcuts.my_profile": "buka profil Anda", + "keyboard_shortcuts.my_profile": "Buka profil Anda", "keyboard_shortcuts.notifications": "buka kolom notifikasi", "keyboard_shortcuts.open_media": "membuka media", "keyboard_shortcuts.pinned": "buka daftar toot tersemat", @@ -346,7 +347,7 @@ "lists.edit.submit": "Ubah judul", "lists.new.create": "Tambah daftar", "lists.new.title_placeholder": "Judul daftar baru", - "lists.replies_policy.followed": "Siapapun pengguna yang diikuti", + "lists.replies_policy.followed": "Siapa pun pengguna yang diikuti", "lists.replies_policy.list": "Anggota di daftar tersebut", "lists.replies_policy.none": "Tidak ada satu pun", "lists.replies_policy.title": "Tampilkan balasan ke:", @@ -360,8 +361,7 @@ "mute_modal.duration": "Durasi", "mute_modal.hide_notifications": "Sembunyikan notifikasi dari pengguna ini?", "mute_modal.indefinite": "Tak terbatas", - "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", + "navigation_bar.about": "Tentang", "navigation_bar.blocks": "Pengguna diblokir", "navigation_bar.bookmarks": "Markah", "navigation_bar.community_timeline": "Linimasa lokal", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Kata yang dibisukan", "navigation_bar.follow_requests": "Permintaan mengikuti", "navigation_bar.follows_and_followers": "Ikuti dan pengikut", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Pintasan keyboard", "navigation_bar.lists": "Daftar", "navigation_bar.logout": "Keluar", "navigation_bar.mutes": "Pengguna dibisukan", @@ -384,22 +382,22 @@ "navigation_bar.pins": "Toot tersemat", "navigation_bar.preferences": "Pengaturan", "navigation_bar.public_timeline": "Linimasa gabungan", - "navigation_bar.search": "Search", + "navigation_bar.search": "Cari", "navigation_bar.security": "Keamanan", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Anda harus masuk untuk mengakses sumber daya ini.", "notification.admin.report": "{name} melaporkan {target}", "notification.admin.sign_up": "{name} mendaftar", - "notification.favourite": "{name} menyukai status anda", - "notification.follow": "{name} mengikuti anda", + "notification.favourite": "{name} memfavorit kiriman Anda", + "notification.follow": "{name} mengikuti Anda", "notification.follow_request": "{name} ingin mengikuti Anda", "notification.mention": "{name} menyebut Anda", "notification.own_poll": "Japat Anda telah berakhir", "notification.poll": "Japat yang Anda ikuti telah berakhir", - "notification.reblog": "{name} mem-boost status anda", - "notification.status": "{name} baru saja memposting", + "notification.reblog": "{name} mem-boost kiriman Anda", + "notification.status": "{name} baru saja mengirim", "notification.update": "{name} mengedit kiriman", "notifications.clear": "Hapus notifikasi", - "notifications.clear_confirmation": "Apa anda yakin hendak menghapus semua notifikasi anda?", + "notifications.clear_confirmation": "Apa Anda yakin hendak menghapus semua notifikasi Anda?", "notifications.column_settings.admin.report": "Laporan baru:", "notifications.column_settings.admin.sign_up": "Pendaftaran baru:", "notifications.column_settings.alert": "Notifikasi desktop", @@ -415,7 +413,7 @@ "notifications.column_settings.reblog": "Boost:", "notifications.column_settings.show": "Tampilkan dalam kolom", "notifications.column_settings.sound": "Mainkan suara", - "notifications.column_settings.status": "Toot baru:", + "notifications.column_settings.status": "Kiriman baru:", "notifications.column_settings.unread_notifications.category": "Notifikasi yang belum dibaca", "notifications.column_settings.unread_notifications.highlight": "Sorot notifikasi yang belum dibaca", "notifications.column_settings.update": "Edit:", @@ -434,31 +432,31 @@ "notifications.permission_required": "Notifikasi desktop tidak tersedia karena izin yang dibutuhkan belum disetujui.", "notifications_permission_banner.enable": "Aktifkan notifikasi desktop", "notifications_permission_banner.how_to_control": "Untuk menerima notifikasi saat Mastodon terbuka, aktifkan notifikasi desktop. Anda dapat mengendalikan tipe interaksi mana yang ditampilkan notifikasi desktop melalui tombol {icon} di atas saat sudah aktif.", - "notifications_permission_banner.title": "Jangan lewatkan apapun", + "notifications_permission_banner.title": "Jangan lewatkan apa pun", "picture_in_picture.restore": "Taruh kembali", "poll.closed": "Ditutup", "poll.refresh": "Segarkan", "poll.total_people": "{count, plural, other {# orang}}", "poll.total_votes": "{count, plural, other {# suara}}", - "poll.vote": "Memilih", + "poll.vote": "Pilih", "poll.voted": "Anda memilih jawaban ini", "poll.votes": "{votes, plural, other {# suara}}", "poll_button.add_poll": "Tambah japat", "poll_button.remove_poll": "Hapus japat", - "privacy.change": "Tentukan privasi status", + "privacy.change": "Ubah privasi kiriman", "privacy.direct.long": "Kirim hanya ke pengguna yang disebut", "privacy.direct.short": "Orang yang disebutkan saja", - "privacy.private.long": "Kirim postingan hanya kepada pengikut", + "privacy.private.long": "Kirim kiriman hanya kepada pengikut", "privacy.private.short": "Pengikut saja", "privacy.public.long": "Terlihat oleh semua", "privacy.public.short": "Publik", "privacy.unlisted.long": "Terlihat oleh semua, tapi jangan tampilkan di fitur jelajah", "privacy.unlisted.short": "Tak Terdaftar", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Terakhir diperbarui {date}", + "privacy_policy.title": "Kebijakan Privasi", "refresh": "Segarkan", "regeneration_indicator.label": "Memuat…", - "regeneration_indicator.sublabel": "Linimasa anda sedang disiapkan!", + "regeneration_indicator.sublabel": "Beranda Anda sedang disiapkan!", "relative_time.days": "{number}h", "relative_time.full.days": "{number, plural, other {# hari}} yang lalu", "relative_time.full.hours": "{number, plural, other {# jam}} yang lalu", @@ -472,20 +470,20 @@ "relative_time.today": "hari ini", "reply_indicator.cancel": "Batal", "report.block": "Blokir", - "report.block_explanation": "Anda tidak akan melihat postingan mereka. Mereka tidak akan bisa melihat postingan Anda atau mengikuti Anda. Mereka akan mampu menduga bahwa mereka diblokir.", + "report.block_explanation": "Anda tidak akan melihat kiriman mereka. Mereka tidak akan bisa melihat kiriman Anda atau mengikuti Anda. Mereka akan mampu menduga bahwa mereka diblokir.", "report.categories.other": "Lainnya", "report.categories.spam": "Spam", "report.categories.violation": "Konten melanggar satu atau lebih peraturan server", "report.category.subtitle": "Pilih pasangan terbaik", "report.category.title": "Beritahu kami apa yang terjadi dengan {type} ini", "report.category.title_account": "profil", - "report.category.title_status": "postingan", + "report.category.title_status": "kiriman", "report.close": "Selesai", "report.comment.title": "Adakah hal lain yang perlu kami ketahui?", "report.forward": "Teruskan ke {target}", "report.forward_hint": "Akun dari server lain. Kirim salinan laporan scr anonim ke sana?", "report.mute": "Bisukan", - "report.mute_explanation": "Anda tidak akan melihat postingan mereka. Mereka masih dapat mengikuti Anda dan melihat postingan Anda dan tidak akan mengetahui bahwa mereka dibisukan.", + "report.mute_explanation": "Anda tidak akan melihat kiriman mereka. Mereka masih dapat mengikuti Anda dan melihat kiriman Anda dan tidak akan mengetahui bahwa mereka dibisukan.", "report.next": "Selanjutnya", "report.placeholder": "Komentar tambahan", "report.reasons.dislike": "Saya tidak menyukainya", @@ -499,7 +497,7 @@ "report.rules.subtitle": "Pilih semua yang berlaku", "report.rules.title": "Ketentuan manakah yang dilanggar?", "report.statuses.subtitle": "Pilih semua yang berlaku", - "report.statuses.title": "Adakah postingan yang mendukung pelaporan ini?", + "report.statuses.title": "Adakah kiriman yang mendukung pelaporan ini?", "report.submit": "Kirim", "report.target": "Melaporkan", "report.thanks.take_action": "Berikut adalah pilihan Anda untuk mengatur apa yang Anda lihat di Mastodon:", @@ -507,43 +505,44 @@ "report.thanks.title": "Tidak ingin melihat ini?", "report.thanks.title_actionable": "Terima kasih atas pelaporan Anda, kami akan memeriksa ini lebih lanjut.", "report.unfollow": "Berhenti mengikuti @{name}", - "report.unfollow_explanation": "Anda mengikuti akun ini. Untuk tidak melihat postingan mereka di Beranda Anda, berhenti mengikuti mereka.", - "report_notification.attached_statuses": "{count, plural, other {{count} postingan}} terlampir", + "report.unfollow_explanation": "Anda mengikuti akun ini. Untuk tidak melihat kiriman mereka di beranda Anda, berhenti mengikuti mereka.", + "report_notification.attached_statuses": "{count, plural, other {{count} kiriman}} terlampir", "report_notification.categories.other": "Lainnya", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Pelanggaran peraturan", "report_notification.open": "Buka laporan", "search.placeholder": "Pencarian", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format pencarian mahir", - "search_popout.tips.full_text": "Teks simpel menampilkan status yang Anda tulis, favoritkan, boost-kan, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.", + "search_popout.tips.full_text": "Teks simpel memberikan kiriman yang Anda telah tulis, favorit, boost, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.", "search_popout.tips.hashtag": "tagar", - "search_popout.tips.status": "status", + "search_popout.tips.status": "kiriman", "search_popout.tips.text": "Teks sederhana menampilkan nama yang ditampilkan, nama pengguna, dan tagar yang cocok", "search_popout.tips.user": "pengguna", "search_results.accounts": "Orang", "search_results.all": "Semua", "search_results.hashtags": "Tagar", - "search_results.nothing_found": "Tidak dapat menemukan apapun untuk istilah-istilah pencarian ini", - "search_results.statuses": "Toot", - "search_results.statuses_fts_disabled": "Pencarian toot berdasarkan konten tidak diaktifkan di server Mastadon ini.", - "search_results.title": "Search for {q}", + "search_results.nothing_found": "Tidak dapat menemukan apa pun untuk istilah-istilah pencarian ini", + "search_results.statuses": "Kiriman", + "search_results.statuses_fts_disabled": "Pencarian kiriman berdasarkan konten tidak diaktifkan di server Mastodon ini.", + "search_results.title": "Cari {q}", "search_results.total": "{count, number} {count, plural, one {hasil} other {hasil}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", - "status.admin_account": "Buka antar muka moderasi untuk @{name}", - "status.admin_status": "Buka status ini dalam antar muka moderasi", + "server_banner.about_active_users": "Orang menggunakan server ini selama 30 hari terakhir (Pengguna Aktif Bulanan)", + "server_banner.active_users": "pengguna aktif", + "server_banner.administered_by": "Dikelola oleh:", + "server_banner.introduction": "{domain} adalah bagian dari jaringan sosial terdesentralisasi yang diberdayakan oleh {mastodon}.", + "server_banner.learn_more": "Pelajari lebih lanjut", + "server_banner.server_stats": "Statistik server:", + "sign_in_banner.create_account": "Buat akun", + "sign_in_banner.sign_in": "Masuk", + "sign_in_banner.text": "Masuk untuk mengikuti profil atau tagar, favorit, bagikan, dan balas ke kiriman, atau berinteraksi dari akun Anda di server yang lain.", + "status.admin_account": "Buka antarmuka moderasi untuk @{name}", + "status.admin_status": "Buka kiriman ini dalam antar muka moderasi", "status.block": "Blokir @{name}", "status.bookmark": "Markah", "status.cancel_reblog_private": "Batalkan boost", - "status.cannot_reblog": "Pos ini tak dapat di-boost", - "status.copy": "Salin tautan ke status", + "status.cannot_reblog": "Kiriman ini tak dapat di-boost", + "status.copy": "Salin tautan ke kiriman", "status.delete": "Hapus", "status.detailed_status": "Tampilan detail percakapan", "status.direct": "Pesan langsung @{name}", @@ -552,49 +551,49 @@ "status.edited_x_times": "Diedit {count, plural, other {{count} kali}}", "status.embed": "Tanam", "status.favourite": "Difavoritkan", - "status.filter": "Filter this post", + "status.filter": "Saring kiriman ini", "status.filtered": "Disaring", - "status.hide": "Hide toot", - "status.history.created": "{name} membuat pada {date}", - "status.history.edited": "{name} mengedit pada {date}", + "status.hide": "Sembunyikan toot", + "status.history.created": "{name} membuat {date}", + "status.history.edited": "{name} mengedit {date}", "status.load_more": "Tampilkan semua", "status.media_hidden": "Media disembunyikan", - "status.mention": "Balasan @{name}", + "status.mention": "Sebutkan @{name}", "status.more": "Lebih banyak", "status.mute": "Bisukan @{name}", "status.mute_conversation": "Bisukan percakapan", - "status.open": "Tampilkan status ini", - "status.pin": "Sematkan pada profil", - "status.pinned": "Toot tersemat", + "status.open": "Tampilkan kiriman ini", + "status.pin": "Sematkan di profil", + "status.pinned": "Kiriman tersemat", "status.read_more": "Baca lebih banyak", "status.reblog": "Boost", - "status.reblog_private": "Boost ke audiens asli", - "status.reblogged_by": "di-boost {name}", - "status.reblogs.empty": "Belum ada yang mem-boost toot ini. Ketika seseorang melakukannya, maka akan muncul di sini.", - "status.redraft": "Hapus & redraf", + "status.reblog_private": "Boost dengan visibilitas asli", + "status.reblogged_by": "{name} mem-boost", + "status.reblogs.empty": "Belum ada yang mem-boost toot ini. Ketika seseorang melakukannya, mereka akan muncul di sini.", + "status.redraft": "Hapus & draf ulang", "status.remove_bookmark": "Hapus markah", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Membalas ke {name}", "status.reply": "Balas", - "status.replyAll": "Balas ke semua", + "status.replyAll": "Balas ke utasan", "status.report": "Laporkan @{name}", "status.sensitive_warning": "Konten sensitif", "status.share": "Bagikan", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Tampilkan saja", "status.show_less": "Tampilkan lebih sedikit", - "status.show_less_all": "Tampilkan lebih sedikit", + "status.show_less_all": "Tampilkan lebih sedikit untuk semua", "status.show_more": "Tampilkan semua", - "status.show_more_all": "Tampilkan lebih banyak", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", - "status.uncached_media_warning": "Tak tersedia", + "status.show_more_all": "Tampilkan lebih banyak untuk semua", + "status.show_original": "Tampilkan yang asli", + "status.translate": "Terjemahkan", + "status.translated_from_with": "Diterjemahkan dari {lang} menggunakan {provider}", + "status.uncached_media_warning": "Tidak tersedia", "status.unmute_conversation": "Bunyikan percakapan", "status.unpin": "Hapus sematan dari profil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Hanya kiriman dalam bahasa yang dipilih akan muncul di linimasa beranda dan daftar setelah perubahan. Pilih tidak ada untuk menerima kiriman dalam semua bahasa.", + "subscribed_languages.save": "Simpan perubahan", + "subscribed_languages.target": "Ubah langganan bahasa untuk {target}", "suggestions.dismiss": "Hentikan saran", - "suggestions.header": "Anda mungkin tertarik dg…", + "suggestions.header": "Anda mungkin tertarik dengan…", "tabs_bar.federated_timeline": "Gabungan", "tabs_bar.home": "Beranda", "tabs_bar.local_timeline": "Lokal", @@ -607,10 +606,10 @@ "timeline_hint.remote_resource_not_displayed": "{resource} dari server lain tidak ditampilkan.", "timeline_hint.resources.followers": "Pengikut", "timeline_hint.resources.follows": "Ikuti", - "timeline_hint.resources.statuses": "Toot lama", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "timeline_hint.resources.statuses": "Kiriman lama", + "trends.counter_by_accounts": "{count, plural, other {{counter} orang}} dalam {days, plural, other {{days} hari}} terakhir", "trends.trending_now": "Sedang tren sekarang", - "ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Mastodon.", + "ui.beforeunload": "Draf Anda akan hilang jika Anda keluar dari Mastodon.", "units.short.billion": "{count}M", "units.short.million": "{count}Jt", "units.short.thousand": "{count}Rb", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Menyiapkan OCR…", "upload_modal.preview_label": "Pratinjau ({ratio})", "upload_progress.label": "Mengunggah...", + "upload_progress.processing": "Processing…", "video.close": "Tutup video", "video.download": "Unduh berkas", "video.exit_fullscreen": "Keluar dari layar penuh", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json new file mode 100644 index 0000000000..c2cae13708 --- /dev/null +++ b/app/javascript/mastodon/locales/ig.json @@ -0,0 +1,649 @@ +{ + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", + "account.account_note_header": "Note", + "account.add_or_remove_from_list": "Add or Remove from lists", + "account.badges.bot": "Bot", + "account.badges.group": "Group", + "account.block": "Block @{name}", + "account.block_domain": "Block domain {domain}", + "account.blocked": "Blocked", + "account.browse_more_on_origin_server": "Browse more on the original profile", + "account.cancel_follow_request": "Withdraw follow request", + "account.direct": "Direct message @{name}", + "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.domain_blocked": "Domain blocked", + "account.edit_profile": "Edit profile", + "account.enable_notifications": "Notify me when @{name} posts", + "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", + "account.follow": "Follow", + "account.followers": "Followers", + "account.followers.empty": "No one follows this user yet.", + "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "Following", + "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows_you": "Follows you", + "account.hide_reblogs": "Hide boosts from @{name}", + "account.joined_short": "Joined", + "account.languages": "Change subscribed languages", + "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.media": "Media", + "account.mention": "Mention @{name}", + "account.moved_to": "{name} has moved to:", + "account.mute": "Mute @{name}", + "account.mute_notifications": "Mute notifications from @{name}", + "account.muted": "Muted", + "account.posts": "Posts", + "account.posts_with_replies": "Posts and replies", + "account.report": "Report @{name}", + "account.requested": "Awaiting approval. Click to cancel follow request", + "account.share": "Share @{name}'s profile", + "account.show_reblogs": "Show boosts from @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}", + "account.unblock": "Unblock @{name}", + "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", + "account.unendorse": "Don't feature on profile", + "account.unfollow": "Unfollow", + "account.unmute": "Unmute @{name}", + "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", + "account_note.placeholder": "Click to add a note", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort_size": "New users", + "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "alert.rate_limited.title": "Rate limited", + "alert.unexpected.message": "An unexpected error occurred.", + "alert.unexpected.title": "Oops!", + "announcement.announcement": "Announcement", + "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", + "autosuggest_hashtag.per_week": "{count} per week", + "boost_modal.combo": "You can press {combo} to skip this next time", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", + "bundle_column_error.retry": "Try again", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", + "bundle_modal_error.close": "Close", + "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "About", + "column.blocks": "Blocked users", + "column.bookmarks": "Bookmarks", + "column.community": "Local timeline", + "column.direct": "Direct messages", + "column.directory": "Browse profiles", + "column.domain_blocks": "Blocked domains", + "column.favourites": "Favourites", + "column.follow_requests": "Follow requests", + "column.home": "Home", + "column.lists": "Lists", + "column.mutes": "Muted users", + "column.notifications": "Notifications", + "column.pins": "Pinned post", + "column.public": "Federated timeline", + "column_back_button.label": "Back", + "column_header.hide_settings": "Hide settings", + "column_header.moveLeft_settings": "Move column to the left", + "column_header.moveRight_settings": "Move column to the right", + "column_header.pin": "Pin", + "column_header.show_settings": "Show settings", + "column_header.unpin": "Unpin", + "column_subheading.settings": "Settings", + "community.column_settings.local_only": "Local only", + "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", + "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", + "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.lock_disclaimer.lock": "locked", + "compose_form.placeholder": "What is on your mind?", + "compose_form.poll.add_option": "Add a choice", + "compose_form.poll.duration": "Poll duration", + "compose_form.poll.option_placeholder": "Choice {number}", + "compose_form.poll.remove_option": "Remove this choice", + "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", + "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.publish": "Publish", + "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", + "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", + "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", + "compose_form.spoiler.marked": "Text is hidden behind warning", + "compose_form.spoiler.unmarked": "Text is not hidden", + "compose_form.spoiler_placeholder": "Write your warning here", + "confirmation_modal.cancel": "Kagbuo", + "confirmations.block.block_and_report": "Block & Report", + "confirmations.block.confirm": "Block", + "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.delete.confirm": "Delete", + "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", + "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.domain_block.confirm": "Hide entire domain", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.logout.confirm": "Log out", + "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.mute.confirm": "Mute", + "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.message": "Are you sure you want to mute {name}?", + "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", + "confirmations.reply.confirm": "Reply", + "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.unfollow.confirm": "Unfollow", + "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", + "conversation.delete": "Delete conversation", + "conversation.mark_as_read": "Mark as read", + "conversation.open": "View conversation", + "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", + "directory.federated": "From known fediverse", + "directory.local": "From {domain} only", + "directory.new_arrivals": "New arrivals", + "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "embed.instructions": "Embed this status on your website by copying the code below.", + "embed.preview": "Here is what it will look like:", + "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", + "emoji_button.custom": "Custom", + "emoji_button.flags": "Flags", + "emoji_button.food": "Food & Drink", + "emoji_button.label": "Insert emoji", + "emoji_button.nature": "Nature", + "emoji_button.not_found": "No matching emojis found", + "emoji_button.objects": "Objects", + "emoji_button.people": "People", + "emoji_button.recent": "Frequently used", + "emoji_button.search": "Search...", + "emoji_button.search_results": "Search results", + "emoji_button.symbols": "Symbols", + "emoji_button.travel": "Travel & Places", + "empty_column.account_suspended": "Account suspended", + "empty_column.account_timeline": "No posts found", + "empty_column.account_unavailable": "Profile unavailable", + "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", + "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", + "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.hashtag": "There is nothing in this hashtag yet.", + "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", + "empty_column.home.suggestions": "See some suggestions", + "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", + "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", + "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", + "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "News", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "Hashtags", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", + "follow_recommendations.done": "Done", + "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", + "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_request.authorize": "Authorize", + "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", + "generic.saved": "Saved", + "getting_started.heading": "Getting started", + "hashtag.column_header.tag_mode.all": "and {additional}", + "hashtag.column_header.tag_mode.any": "or {additional}", + "hashtag.column_header.tag_mode.none": "without {additional}", + "hashtag.column_settings.select.no_options_message": "No suggestions found", + "hashtag.column_settings.select.placeholder": "Enter hashtags…", + "hashtag.column_settings.tag_mode.all": "All of these", + "hashtag.column_settings.tag_mode.any": "Any of these", + "hashtag.column_settings.tag_mode.none": "None of these", + "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.unfollow": "Unfollow hashtag", + "home.column_settings.basic": "Basic", + "home.column_settings.show_reblogs": "Show boosts", + "home.column_settings.show_replies": "Show replies", + "home.hide_announcements": "Hide announcements", + "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", + "intervals.full.days": "{number, plural, one {# day} other {# days}}", + "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", + "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "keyboard_shortcuts.back": "to navigate back", + "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.boost": "to boost", + "keyboard_shortcuts.column": "to focus a status in one of the columns", + "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.down": "to move down in the list", + "keyboard_shortcuts.enter": "to open status", + "keyboard_shortcuts.favourite": "to favourite", + "keyboard_shortcuts.favourites": "to open favourites list", + "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.legend": "to display this legend", + "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.mention": "to mention author", + "keyboard_shortcuts.muted": "to open muted users list", + "keyboard_shortcuts.my_profile": "to open your profile", + "keyboard_shortcuts.notifications": "to open notifications column", + "keyboard_shortcuts.open_media": "to open media", + "keyboard_shortcuts.pinned": "to open pinned posts list", + "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.reply": "to reply", + "keyboard_shortcuts.requests": "to open follow requests list", + "keyboard_shortcuts.search": "to focus search", + "keyboard_shortcuts.spoilers": "to show/hide CW field", + "keyboard_shortcuts.start": "to open \"get started\" column", + "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", + "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", + "keyboard_shortcuts.toot": "to start a brand new post", + "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", + "keyboard_shortcuts.up": "to move up in the list", + "lightbox.close": "Close", + "lightbox.compress": "Compress image view box", + "lightbox.expand": "Expand image view box", + "lightbox.next": "Next", + "lightbox.previous": "Previous", + "limited_account_hint.action": "Show profile anyway", + "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "lists.account.add": "Add to list", + "lists.account.remove": "Remove from list", + "lists.delete": "Delete list", + "lists.edit": "Edit list", + "lists.edit.submit": "Change title", + "lists.new.create": "Add list", + "lists.new.title_placeholder": "New list title", + "lists.replies_policy.followed": "Any followed user", + "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.none": "No one", + "lists.replies_policy.title": "Show replies to:", + "lists.search": "Search among people you follow", + "lists.subheading": "Your lists", + "load_pending": "{count, plural, one {# new item} other {# new items}}", + "loading_indicator.label": "Loading...", + "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", + "missing_indicator.label": "Not found", + "missing_indicator.sublabel": "This resource could not be found", + "mute_modal.duration": "Duration", + "mute_modal.hide_notifications": "Hide notifications from this user?", + "mute_modal.indefinite": "Indefinite", + "navigation_bar.about": "About", + "navigation_bar.blocks": "Blocked users", + "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.compose": "Compose new post", + "navigation_bar.direct": "Direct messages", + "navigation_bar.discover": "Discover", + "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.explore": "Explore", + "navigation_bar.favourites": "Favourites", + "navigation_bar.filters": "Muted words", + "navigation_bar.follow_requests": "Follow requests", + "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.lists": "Lists", + "navigation_bar.logout": "Logout", + "navigation_bar.mutes": "Muted users", + "navigation_bar.personal": "Personal", + "navigation_bar.pins": "Pinned posts", + "navigation_bar.preferences": "Preferences", + "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", + "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "notification.admin.report": "{name} reported {target}", + "notification.admin.sign_up": "{name} signed up", + "notification.favourite": "{name} favourited your status", + "notification.follow": "{name} followed you", + "notification.follow_request": "{name} has requested to follow you", + "notification.mention": "{name} mentioned you", + "notification.own_poll": "Your poll has ended", + "notification.poll": "A poll you have voted in has ended", + "notification.reblog": "{name} boosted your status", + "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", + "notifications.clear": "Clear notifications", + "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.alert": "Desktop notifications", + "notifications.column_settings.favourite": "Favourites:", + "notifications.column_settings.filter_bar.advanced": "Display all categories", + "notifications.column_settings.filter_bar.category": "Quick filter bar", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.follow": "New followers:", + "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.mention": "Mentions:", + "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.show": "Show in column", + "notifications.column_settings.sound": "Play sound", + "notifications.column_settings.status": "New posts:", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", + "notifications.filter.all": "All", + "notifications.filter.boosts": "Boosts", + "notifications.filter.favourites": "Favourites", + "notifications.filter.follows": "Follows", + "notifications.filter.mentions": "Mentions", + "notifications.filter.polls": "Poll results", + "notifications.filter.statuses": "Updates from people you follow", + "notifications.grant_permission": "Grant permission.", + "notifications.group": "{count} notifications", + "notifications.mark_as_read": "Mark every notification as read", + "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", + "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", + "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications_permission_banner.enable": "Enable desktop notifications", + "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", + "notifications_permission_banner.title": "Never miss a thing", + "picture_in_picture.restore": "Put it back", + "poll.closed": "Closed", + "poll.refresh": "Refresh", + "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", + "poll.vote": "Vote", + "poll.voted": "You voted for this answer", + "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll_button.add_poll": "Add a poll", + "poll_button.remove_poll": "Remove poll", + "privacy.change": "Adjust status privacy", + "privacy.direct.long": "Visible for mentioned users only", + "privacy.direct.short": "Direct", + "privacy.private.long": "Visible for followers only", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", + "privacy.public.short": "Public", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", + "refresh": "Refresh", + "regeneration_indicator.label": "Loading…", + "regeneration_indicator.sublabel": "Your home feed is being prepared!", + "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.hours": "{number}h", + "relative_time.just_now": "now", + "relative_time.minutes": "{number}m", + "relative_time.seconds": "{number}s", + "relative_time.today": "today", + "reply_indicator.cancel": "Kagbuo", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "profile", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", + "report.forward": "Forward to {target}", + "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", + "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", + "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", + "search_popout.search_format": "Advanced search format", + "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "search_results.accounts": "People", + "search_results.all": "All", + "search_results.hashtags": "Hashtags", + "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.statuses": "Posts", + "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", + "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", + "status.block": "Block @{name}", + "status.bookmark": "Bookmark", + "status.cancel_reblog_private": "Unboost", + "status.cannot_reblog": "This post cannot be boosted", + "status.copy": "Copy link to status", + "status.delete": "Delete", + "status.detailed_status": "Detailed conversation view", + "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.embed": "Embed", + "status.favourite": "Favourite", + "status.filter": "Filter this post", + "status.filtered": "Filtered", + "status.hide": "Hide toot", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", + "status.load_more": "Load more", + "status.media_hidden": "Media hidden", + "status.mention": "Mention @{name}", + "status.more": "More", + "status.mute": "Mute @{name}", + "status.mute_conversation": "Mute conversation", + "status.open": "Expand this status", + "status.pin": "Pin on profile", + "status.pinned": "Pinned post", + "status.read_more": "Read more", + "status.reblog": "Boost", + "status.reblog_private": "Boost with original visibility", + "status.reblogged_by": "{name} boosted", + "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", + "status.redraft": "Delete & re-draft", + "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", + "status.reply": "Reply", + "status.replyAll": "Reply to thread", + "status.report": "Report @{name}", + "status.sensitive_warning": "Sensitive content", + "status.share": "Share", + "status.show_filter_reason": "Show anyway", + "status.show_less": "Show less", + "status.show_less_all": "Show less for all", + "status.show_more": "Show more", + "status.show_more_all": "Show more for all", + "status.show_original": "Show original", + "status.translate": "Translate", + "status.translated_from_with": "Translated from {lang} using {provider}", + "status.uncached_media_warning": "Not available", + "status.unmute_conversation": "Unmute conversation", + "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", + "tabs_bar.federated_timeline": "Federated", + "tabs_bar.home": "Home", + "tabs_bar.local_timeline": "Local", + "tabs_bar.notifications": "Notifications", + "time_remaining.days": "{number, plural, one {# day} other {# days}} left", + "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", + "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", + "time_remaining.moments": "Moments remaining", + "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", + "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", + "timeline_hint.resources.followers": "Followers", + "timeline_hint.resources.follows": "Follows", + "timeline_hint.resources.statuses": "Older posts", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.trending_now": "Trending now", + "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", + "units.short.billion": "{count}B", + "units.short.million": "{count}M", + "units.short.thousand": "{count}K", + "upload_area.title": "Drag & drop to upload", + "upload_button.label": "Add images, a video or an audio file", + "upload_error.limit": "File upload limit exceeded.", + "upload_error.poll": "File upload not allowed with polls.", + "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", + "upload_form.edit": "Edit", + "upload_form.thumbnail": "Change thumbnail", + "upload_form.undo": "Delete", + "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_modal.analyzing_picture": "Analyzing picture…", + "upload_modal.apply": "Apply", + "upload_modal.applying": "Applying…", + "upload_modal.choose_image": "Choose image", + "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.detect_text": "Detect text from picture", + "upload_modal.edit_media": "Edit media", + "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", + "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.preview_label": "Preview ({ratio})", + "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", + "video.close": "Close video", + "video.download": "Download file", + "video.exit_fullscreen": "Exit full screen", + "video.expand": "Expand video", + "video.fullscreen": "Full screen", + "video.hide": "Hide video", + "video.mute": "Mute sound", + "video.pause": "Pause", + "video.play": "Play", + "video.unmute": "Unmute sound" +} diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 0d6e6365b7..a467cc3238 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -1,6 +1,7 @@ { "about.blocks": "Jerata servili", "about.contact": "Kontaktajo:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Domeno", "about.domain_blocks.preamble": "Mastodon generale permisas on vidar kontenajo e interagar kun uzanti de irga altra servilo en fediverso. Existas eceptioni quo facesis che ca partikulara servilo.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Yurizar", "follow_request.reject": "Refuzar", "follow_requests.unlocked_explanation": "Quankam vua konto ne klefklozesis, la {domain} laborero pensas ke vu forsan volas kontralar sequodemandi de ca konti manuale.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Sparesis", - "getting_started.directory": "Cheflisto", - "getting_started.documentation": "Dokumentajo", - "getting_started.free_software_notice": "Mastodon esas libera fontoaperta softwaro. On povas vidar fontokodexo, kontribuar o reportigar problemi en {repository}.", "getting_started.heading": "Debuto", - "getting_started.invite": "Invitez personi", - "getting_started.privacy_policy": "Privatesguidilo", - "getting_started.security": "Kontoopcioni", - "getting_started.what_is_mastodon": "Pri Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Celez avizi de ca uzanto?", "mute_modal.indefinite": "Nedefinitiva", "navigation_bar.about": "Pri co", - "navigation_bar.apps": "Ganez la softwaro", "navigation_bar.blocks": "Blokusita uzeri", "navigation_bar.bookmarks": "Libromarki", "navigation_bar.community_timeline": "Lokala tempolineo", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Silencigita vorti", "navigation_bar.follow_requests": "Demandi di sequado", "navigation_bar.follows_and_followers": "Sequati e sequanti", - "navigation_bar.info": "Pri co", - "navigation_bar.keyboard_shortcuts": "Rapidklavi", "navigation_bar.lists": "Listi", "navigation_bar.logout": "Ekirar", "navigation_bar.mutes": "Celita uzeri", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Regulnesequo", "report_notification.open": "Apertez raporto", "search.placeholder": "Serchez", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avancata trovformato", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtago", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparas OCR…", "upload_modal.preview_label": "Previdez ({ratio})", "upload_progress.label": "Kargante...", + "upload_progress.processing": "Processing…", "video.close": "Klozez video", "video.download": "Deschargez failo", "video.exit_fullscreen": "Ekirez plena skreno", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index e37c18b000..168d5ec81c 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,6 +1,7 @@ { "about.blocks": "Netþjónar með efnisumsjón", "about.contact": "Hafa samband:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Ástæða", "about.domain_blocks.domain": "Lén", "about.domain_blocks.preamble": "Mastodon leyfir þér almennt að skoða og eiga við efni frá notendum frá hvaða vefþjóni sem er í vefþjónasambandinu. Þetta eru þær undantekningar sem hafa verið gerðar á þessum tiltekna vefþjóni.", @@ -39,7 +40,7 @@ "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.", "account.follows_you": "Fylgir þér", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Gerðist þátttakandi", "account.languages": "Breyta tungumálum í áskrift", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Loka", "bundle_modal_error.message": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.", "bundle_modal_error.retry": "Reyndu aftur", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Þar sem Mastodon er víðvær, þá getur þú búið til aðgang á öðrum þjóni, en samt haft samskipti við þennan.", + "closed_registrations_modal.description": "Að búa til aðgang á {domain} er ekki mögulegt eins og er, en vinsamlegast hafðu í huga að þú þarft ekki aðgang sérstaklega á {domain} til að nota Mastodon.", + "closed_registrations_modal.find_another_server": "Finna annan þjón", + "closed_registrations_modal.preamble": "Mastodon er víðvær, svo það skiptir ekki máli hvar þú býrð til aðgang; þú munt get fylgt eftir og haft samskipti við hvern sem er á þessum þjóni. Þú getur jafnvel hýst þinn eigin Mastodon þjón!", + "closed_registrations_modal.title": "Að nýskrá sig á Mastodon", "column.about": "Um hugbúnaðinn", "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", @@ -258,15 +259,15 @@ "follow_request.authorize": "Heimila", "follow_request.reject": "Hafna", "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Vistað", - "getting_started.directory": "Mappa", - "getting_started.documentation": "Hjálparskjöl", - "getting_started.free_software_notice": "Mastodon er frjáls, opinn hugbúnaður. Þú getur skoðað grunnkóðann, lagt þitt af mörkum eða tilkynnt vandamál á {repository}.", "getting_started.heading": "Komast í gang", - "getting_started.invite": "Bjóða fólki", - "getting_started.privacy_policy": "Persónuverndarstefna", - "getting_started.security": "Stillingar notandaaðgangs", - "getting_started.what_is_mastodon": "Um Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eða {additional}", "hashtag.column_header.tag_mode.none": "án {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Fela tilkynningar frá þessum notanda?", "mute_modal.indefinite": "Óendanlegt", "navigation_bar.about": "Um hugbúnaðinn", - "navigation_bar.apps": "Ná í forritið", "navigation_bar.blocks": "Útilokaðir notendur", "navigation_bar.bookmarks": "Bókamerki", "navigation_bar.community_timeline": "Staðvær tímalína", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Þögguð orð", "navigation_bar.follow_requests": "Beiðnir um að fylgjast með", "navigation_bar.follows_and_followers": "Fylgist með og fylgjendur", - "navigation_bar.info": "Um hugbúnaðinn", - "navigation_bar.keyboard_shortcuts": "Flýtilyklar", "navigation_bar.lists": "Listar", "navigation_bar.logout": "Útskráning", "navigation_bar.mutes": "Þaggaðir notendur", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Festar færslur", "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", - "navigation_bar.search": "Search", + "navigation_bar.search": "Leita", "navigation_bar.security": "Öryggi", "not_signed_in_indicator.not_signed_in": "Þú þarft að skrá þig inn til að nota þetta tilfang.", "notification.admin.report": "{name} kærði {target}", @@ -394,7 +392,7 @@ "notification.follow_request": "{name} hefur beðið um að fylgjast með þér", "notification.mention": "{name} minntist á þig", "notification.own_poll": "Könnuninni þinni er lokið", - "notification.poll": "Könnun sem þú tókst þátt í er lokin", + "notification.poll": "Könnun sem þú tókst þátt í er lokið", "notification.reblog": "{name} endurbirti færsluna þína", "notification.status": "{name} sendi inn rétt í þessu", "notification.update": "{name} breytti færslu", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Brot á reglum", "report_notification.open": "Opin kæra", "search.placeholder": "Leita", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Snið ítarlegrar leitar", "search_popout.tips.full_text": "Einfaldur texti skilar færslum sem þú hefur skrifað, sett í eftirlæti, endurbirt eða verið minnst á þig í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.", "search_popout.tips.hashtag": "myllumerki", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Enginn hefur ennþá endurbirt þessa færslu. Þegar einhver gerir það, mun það birtast hér.", "status.redraft": "Eyða og endurvinna drög", "status.remove_bookmark": "Fjarlægja bókamerki", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Svaraði {name}", "status.reply": "Svara", "status.replyAll": "Svara þræði", "status.report": "Kæra @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Sýna meira fyrir allt", "status.show_original": "Sýna upprunalega", "status.translate": "Þýða", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Þýtt úr {lang} með {provider}", "status.uncached_media_warning": "Ekki tiltækt", "status.unmute_conversation": "Hætta að þagga niður í samtali", "status.unpin": "Losa af notandasniði", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Undirbý OCR-ljóslestur…", "upload_modal.preview_label": "Forskoðun ({ratio})", "upload_progress.label": "Er að senda inn...", + "upload_progress.processing": "Processing…", "video.close": "Loka myndskeiði", "video.download": "Sækja skrá", "video.exit_fullscreen": "Hætta í skjáfylli", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 52ac4693d4..afed6839dd 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -1,6 +1,7 @@ { "about.blocks": "Server moderati", "about.contact": "Contatto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon, generalmente, ti consente di visualizzare i contenuti e interagire con gli utenti da qualsiasi altro server nel fediverso. Queste sono le eccezioni che sono state fatte su questo particolare server.", @@ -39,7 +40,7 @@ "account.follows.empty": "Questo utente non segue nessuno ancora.", "account.follows_you": "Ti segue", "account.hide_reblogs": "Nascondi condivisioni da @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Account iscritto", "account.languages": "Cambia le lingue di cui ricevere i post", "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}", "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Chiudi", "bundle_modal_error.message": "Qualcosa è andato storto durante il caricamento di questo componente.", "bundle_modal_error.retry": "Riprova", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Poiché Mastodon è decentralizzato, puoi creare un account su un altro server e continuare a interagire con questo.", + "closed_registrations_modal.description": "Al momento non è possibile creare un account su {domain}, ma tieni presente che non è necessario un account specifico su {domain} per utilizzare Mastodon.", + "closed_registrations_modal.find_another_server": "Trova un altro server", + "closed_registrations_modal.preamble": "Mastodon è decentralizzato, quindi non importa dove crei il tuo account, sarai in grado di seguire e interagire con chiunque su questo server. Puoi persino ospitarlo autonomamente!", + "closed_registrations_modal.title": "Registrazione su Mastodon", "column.about": "Informazioni su", "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizza", "follow_request.reject": "Rifiuta", "follow_requests.unlocked_explanation": "Benché il tuo account non sia privato, lo staff di {domain} ha pensato che potresti voler approvare manualmente le richieste di follow da questi account.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvato", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentazione", - "getting_started.free_software_notice": "Mastodon è un software libero e open source. È possibile visualizzare il codice sorgente, contribuire o segnalare problemi a {repository}.", "getting_started.heading": "Come iniziare", - "getting_started.invite": "Invita qualcuno", - "getting_started.privacy_policy": "Politica sulla Privacy", - "getting_started.security": "Sicurezza", - "getting_started.what_is_mastodon": "Informazioni su Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Nascondere le notifiche da quest'utente?", "mute_modal.indefinite": "Per sempre", "navigation_bar.about": "Informazioni su", - "navigation_bar.apps": "Scarica l'app", "navigation_bar.blocks": "Utenti bloccati", "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Timeline locale", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Parole silenziate", "navigation_bar.follow_requests": "Richieste di seguirti", "navigation_bar.follows_and_followers": "Seguiti e seguaci", - "navigation_bar.info": "Informazioni su", - "navigation_bar.keyboard_shortcuts": "Tasti di scelta rapida", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Esci", "navigation_bar.mutes": "Utenti silenziati", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Post fissati in cima", "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", - "navigation_bar.search": "Search", + "navigation_bar.search": "Cerca", "navigation_bar.security": "Sicurezza", "not_signed_in_indicator.not_signed_in": "Devi effetturare il login per accedere a questa funzione.", "notification.admin.report": "{name} ha segnalato {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violazione delle regole", "report_notification.open": "Apri segnalazione", "search.placeholder": "Cerca", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato di ricerca avanzato", "search_popout.tips.full_text": "Testo semplice per trovare gli status che hai scritto, segnato come apprezzati, condiviso o in cui sei stato citato, e inoltre i nomi utente, nomi visualizzati e hashtag che lo contengono.", "search_popout.tips.hashtag": "etichetta", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Nessuno ha ancora condiviso questo post. Quando qualcuno lo farà, comparirà qui.", "status.redraft": "Cancella e riscrivi", "status.remove_bookmark": "Elimina segnalibro", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Risposta a {name}", "status.reply": "Rispondi", "status.replyAll": "Rispondi alla conversazione", "status.report": "Segnala @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostra di più per tutti", "status.show_original": "Mostra originale", "status.translate": "Traduci", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Tradotto da {lang} utilizzando {provider}", "status.uncached_media_warning": "Non disponibile", "status.unmute_conversation": "Annulla silenzia conversazione", "status.unpin": "Non fissare in cima al profilo", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparazione OCR…", "upload_modal.preview_label": "Anteprima ({ratio})", "upload_progress.label": "Invio in corso...", + "upload_progress.processing": "Processing…", "video.close": "Chiudi video", "video.download": "Scarica file", "video.exit_fullscreen": "Esci da modalità a schermo intero", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 8af35c7acd..5849a1d384 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -1,11 +1,12 @@ { "about.blocks": "制限中のサーバー", "about.contact": "連絡先", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "制限理由", "about.domain_blocks.domain": "ドメイン", "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。", "about.domain_blocks.severity": "重大性", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.explanation": "このサーバーのプロフィールやコンテンツは、明示的に検索したり、フォローでオプトインしない限り、通常は表示されません。", "about.domain_blocks.silenced.title": "制限", "about.domain_blocks.suspended.explanation": "これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません。", "about.domain_blocks.suspended.title": "停止済み", @@ -39,7 +40,7 @@ "account.follows.empty": "まだ誰もフォローしていません。", "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", - "account.joined_short": "Joined", + "account.joined_short": "参加済み", "account.languages": "購読言語の変更", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", @@ -79,23 +80,23 @@ "audio.hide": "音声を閉じる", "autosuggest_hashtag.per_week": "{count} 回 / 週", "boost_modal.combo": "次からは{combo}を押せばスキップできます", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "エラーレポートをコピー", + "bundle_column_error.error.body": "要求されたページをレンダリングできませんでした。コードのバグ、またはブラウザの互換性の問題が原因である可能性があります。", + "bundle_column_error.error.title": "おっと!", + "bundle_column_error.network.body": "このページを読み込もうとしたときにエラーが発生しました。インターネット接続またはこのサーバーの一時的な問題が発生した可能性があります。", + "bundle_column_error.network.title": "ネットワークエラー", "bundle_column_error.retry": "再試行", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "ホームに戻る", + "bundle_column_error.routing.body": "要求されたページは見つかりませんでした。アドレスバーの URL は正しいですか?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "閉じる", "bundle_modal_error.message": "コンポーネントの読み込み中に問題が発生しました。", "bundle_modal_error.retry": "再試行", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "マストドンは分散型なので、他のサーバーにアカウントを作っても、このサーバーとやり取りすることができます。", + "closed_registrations_modal.description": "現在 {domain} でアカウント作成はできませんが、Mastodon は {domain} のアカウントでなくても利用できます。", + "closed_registrations_modal.find_another_server": "別のサーバーを探す", + "closed_registrations_modal.preamble": "Mastodon は分散型なので、どこでアカウントを作成しても、このサーバーのユーザーを誰でもフォローして交流することができます。自分でホスティングすることもできます!", + "closed_registrations_modal.title": "Mastodon でサインアップ", "column.about": "About", "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", @@ -236,16 +237,16 @@ "explore.trending_links": "ニュース", "explore.trending_statuses": "投稿", "explore.trending_tags": "ハッシュタグ", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.context_mismatch_explanation": "あなたがアクセスした投稿には、コンテキストはフィルターカテゴリが適用されてません。\nコンテキストへのフィルターを適用するには、フィルターを編集してください。", + "filter_modal.added.context_mismatch_title": "コンテキストが一致しません!", + "filter_modal.added.expired_explanation": "このフィルターカテゴリは有効期限が切れています。適用するには有効期限を更新してください。", "filter_modal.added.expired_title": "フィルターの有効期限が切れています!", "filter_modal.added.review_and_configure": "このフィルターカテゴリーを確認して設定するには、{settings_link}に移動します。", "filter_modal.added.review_and_configure_title": "フィルター設定", "filter_modal.added.settings_link": "設定", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.short_explanation": "この投稿は以下のフィルターカテゴリに追加されました: {title}。", "filter_modal.added.title": "フィルターを追加しました!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.context_mismatch": "このコンテキストには当てはまりません", "filter_modal.select_filter.expired": "期限切れ", "filter_modal.select_filter.prompt_new": "新しいカテゴリー: {name}", "filter_modal.select_filter.search": "検索または新規作成", @@ -258,15 +259,15 @@ "follow_request.authorize": "許可", "follow_request.reject": "拒否", "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "保存しました", - "getting_started.directory": "ディレクトリ", - "getting_started.documentation": "ドキュメント", - "getting_started.free_software_notice": "Mastodonは自由なオープンソースソフトウェアです。{repository}でソースコードを確認したりコントリビュートしたり不具合の報告ができます。", "getting_started.heading": "スタート", - "getting_started.invite": "招待", - "getting_started.privacy_policy": "プライバシーポリシー", - "getting_started.security": "アカウント設定", - "getting_started.what_is_mastodon": "Mastodonについて", "hashtag.column_header.tag_mode.all": "と{additional}", "hashtag.column_header.tag_mode.any": "か{additional}", "hashtag.column_header.tag_mode.none": "({additional} を除く)", @@ -360,8 +361,7 @@ "mute_modal.duration": "ミュートする期間", "mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?", "mute_modal.indefinite": "無期限", - "navigation_bar.about": "About", - "navigation_bar.apps": "アプリ", + "navigation_bar.about": "概要", "navigation_bar.blocks": "ブロックしたユーザー", "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", @@ -375,8 +375,6 @@ "navigation_bar.filters": "フィルター設定", "navigation_bar.follow_requests": "フォローリクエスト", "navigation_bar.follows_and_followers": "フォロー・フォロワー", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "キーボードショートカット", "navigation_bar.lists": "リスト", "navigation_bar.logout": "ログアウト", "navigation_bar.mutes": "ミュートしたユーザー", @@ -384,7 +382,7 @@ "navigation_bar.pins": "固定した投稿", "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", - "navigation_bar.search": "Search", + "navigation_bar.search": "検索", "navigation_bar.security": "セキュリティ", "not_signed_in_indicator.not_signed_in": "この機能を使うにはログインする必要があります。", "notification.admin.report": "{name}さんが{target}さんを通報しました", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "ルール違反", "report_notification.open": "通報を開く", "search.placeholder": "検索", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "高度な検索フォーマット", "search_popout.tips.full_text": "表示名やユーザー名、ハッシュタグのほか、あなたの投稿やお気に入り、ブーストした投稿、返信に一致する単純なテキスト。", "search_popout.tips.hashtag": "ハッシュタグ", @@ -554,7 +553,7 @@ "status.favourite": "お気に入り", "status.filter": "この投稿をフィルターする", "status.filtered": "フィルターされました", - "status.hide": "トゥートを非表示", + "status.hide": "投稿を非表示", "status.history.created": "{name}さんが{date}に作成", "status.history.edited": "{name}さんが{date}に編集", "status.load_more": "もっと見る", @@ -573,7 +572,7 @@ "status.reblogs.empty": "まだ誰もブーストしていません。ブーストされるとここに表示されます。", "status.redraft": "削除して下書きに戻す", "status.remove_bookmark": "ブックマークを削除", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name}さんへの返信", "status.reply": "返信", "status.replyAll": "全員に返信", "status.report": "@{name}さんを通報", @@ -586,7 +585,7 @@ "status.show_more_all": "全て見る", "status.show_original": "原文を表示", "status.translate": "翻訳", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{provider}を使って{lang}から翻訳", "status.uncached_media_warning": "利用できません", "status.unmute_conversation": "会話のミュートを解除", "status.unpin": "プロフィールへの固定を解除", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCRの準備中…", "upload_modal.preview_label": "プレビュー ({ratio})", "upload_progress.label": "アップロード中...", + "upload_progress.processing": "Processing…", "video.close": "動画を閉じる", "video.download": "ダウンロード", "video.exit_fullscreen": "全画面を終了する", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index be6709e0bb..4e3b8eb352 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "ავტორიზაცია", "follow_request.reject": "უარყოფა", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "დოკუმენტაცია", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "დაწყება", - "getting_started.invite": "ხალხის მოწვევა", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "უსაფრთხოება", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "დავმალოთ შეტყობინებები ამ მომხმარებლისგან?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "დაბლოკილი მომხმარებლები", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "ლოკალური თაიმლაინი", @@ -375,8 +375,6 @@ "navigation_bar.filters": "გაჩუმებული სიტყვები", "navigation_bar.follow_requests": "დადევნების მოთხოვნები", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "ცხელი კლავიშები", "navigation_bar.lists": "სიები", "navigation_bar.logout": "გასვლა", "navigation_bar.mutes": "გაჩუმებული მომხმარებლები", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "ძებნა", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "დეტალური ძებნის ფორმა", "search_popout.tips.full_text": "მარტივი ტექსტი აბრუნებს სტატუსებს რომლებიც შექმენით, აქციეთ ფავორიტად, დაბუსტეთ, ან რაშიც ასახელეთ, ასევე ემთხვევა მომხმარებლის სახელებს, დისპლეი სახელებს, და ჰეშტეგებს.", "search_popout.tips.hashtag": "ჰეშტეგი", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "იტვირთება...", + "upload_progress.processing": "Processing…", "video.close": "ვიდეოს დახურვა", "video.download": "Download file", "video.exit_fullscreen": "სრულ ეკრანზე ჩვენების გათიშვა", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index d693216af7..8815fd0925 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -136,7 +137,7 @@ "compose_form.poll.remove_option": "Sfeḍ afran-agi", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Publish", + "compose_form.publish": "Suffeɣ", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Sekles ibeddilen", "compose_form.sensitive.hide": "Creḍ allal n teywalt d anafri", @@ -230,10 +231,10 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Nɣel stacktrace ɣef wafus", "errors.unexpected_crash.report_issue": "Mmel ugur", - "explore.search_results": "Search results", + "explore.search_results": "Igemmaḍ n unadi", "explore.suggested_follows": "I kečč·kem", "explore.title": "Snirem", - "explore.trending_links": "News", + "explore.trending_links": "Isallen", "explore.trending_statuses": "Tisuffaɣ", "explore.trending_tags": "Ihacṭagen", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ssireg", "follow_request.reject": "Agi", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Yettwasekles", - "getting_started.directory": "Directory", - "getting_started.documentation": "Amnir", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Bdu", - "getting_started.invite": "Snebgi-d imdanen", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Iɣewwaṛen n umiḍan", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "d {additional}", "hashtag.column_header.tag_mode.any": "neɣ {additional}", "hashtag.column_header.tag_mode.none": "war {additional}", @@ -288,11 +289,11 @@ "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_this_server": "Deg uqeddac-ayi", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "Ḍfer {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# n wass} other {# n wussan}}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?", "mute_modal.indefinite": "Ur yettwasbadu ara", "navigation_bar.about": "Γef", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Imseqdacen yettusḥebsen", "navigation_bar.bookmarks": "Ticraḍ", "navigation_bar.community_timeline": "Tasuddemt tadigant", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Awalen i yettwasgugmen", "navigation_bar.follow_requests": "Isuturen n teḍfeṛt", "navigation_bar.follows_and_followers": "Imeḍfaṛen akked wid i teṭṭafaṛeḍ", - "navigation_bar.info": "Γef", - "navigation_bar.keyboard_shortcuts": "Inegzumen n unasiw", "navigation_bar.lists": "Tibdarin", "navigation_bar.logout": "Ffeɣ", "navigation_bar.mutes": "Iseqdacen yettwasusmen", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Tijewwiqin yettwasentḍen", "navigation_bar.preferences": "Imenyafen", "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut", - "navigation_bar.search": "Search", + "navigation_bar.search": "Nadi", "navigation_bar.security": "Taɣellist", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -455,7 +453,7 @@ "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "War tabdert", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.title": "Tasertit tabaḍnit", "refresh": "Smiren", "regeneration_indicator.label": "Yessalay-d…", "regeneration_indicator.sublabel": "Tasuddemt tagejdant ara d-tettwaheggay!", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Nadi", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Anadi yenneflin", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "ahacṭag", @@ -535,7 +534,7 @@ "server_banner.learn_more": "Issin ugar", "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.sign_in": "Qqen", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", @@ -609,7 +608,7 @@ "timeline_hint.resources.follows": "T·Yeṭafaṛ", "timeline_hint.resources.statuses": "Tijewwaqin tiqdimin", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", - "trends.trending_now": "Trending now", + "trends.trending_now": "Ayen mucaɛen tura", "ui.beforeunload": "Arewway-ik·im ad iruḥ ma yella tefeɣ-d deg Maṣṭudun.", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Aheyyi n OCR…", "upload_modal.preview_label": "Taskant ({ratio})", "upload_progress.label": "Asali iteddu...", + "upload_progress.processing": "Processing…", "video.close": "Mdel tabidyutt", "video.download": "Sidered afaylu", "video.exit_fullscreen": "Ffeɣ seg ugdil ačuran", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 157ca66daf..886b515f52 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Авторизация", "follow_request.reject": "Қабылдамау", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Сақталды", - "getting_started.directory": "Directory", - "getting_started.documentation": "Құжаттама", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Желіде", - "getting_started.invite": "Адам шақыру", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Қауіпсіздік", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "және {additional}", "hashtag.column_header.tag_mode.any": "немесе {additional}", "hashtag.column_header.tag_mode.none": "{additional} болмай", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Бұл қолданушы ескертпелерін жасырамыз ба?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Бұғатталғандар", "navigation_bar.bookmarks": "Бетбелгілер", "navigation_bar.community_timeline": "Жергілікті желі", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Үнсіз сөздер", "navigation_bar.follow_requests": "Жазылуға сұранғандар", "navigation_bar.follows_and_followers": "Жазылымдар және оқырмандар", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Ыстық пернелер", "navigation_bar.lists": "Тізімдер", "navigation_bar.logout": "Шығу", "navigation_bar.mutes": "Үнсіз қолданушылар", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Іздеу", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Кеңейтілген іздеу форматы", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, bоosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "хэштег", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Превью ({ratio})", "upload_progress.label": "Жүктеп жатыр...", + "upload_progress.processing": "Processing…", "video.close": "Видеоны жабу", "video.download": "Файлды түсіру", "video.exit_fullscreen": "Толық экраннан шық", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 3e2baf8874..a92c640302 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index af818e304c..bac5bb6859 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -1,6 +1,7 @@ { "about.blocks": "제한된 서버들", "about.contact": "연락처:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "사유", "about.domain_blocks.domain": "도메인", "about.domain_blocks.preamble": "마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.", @@ -39,7 +40,7 @@ "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.", "account.follows_you": "날 팔로우합니다", "account.hide_reblogs": "@{name}의 부스트를 숨기기", - "account.joined_short": "Joined", + "account.joined_short": "가입", "account.languages": "구독한 언어 변경", "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨", "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "닫기", "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "마스토돈은 분산화 되어 있기 때문에, 다른 서버에서 계정을 만들더라도 이 서버와 상호작용 할 수 있습니다.", + "closed_registrations_modal.description": "{domain}은 현재 가입이 막혀있는 상태입니다, 만약 마스토돈을 이용하기 위해 꼭 {domain}을 사용할 필요는 없다는 사실을 인지해 두세요.", + "closed_registrations_modal.find_another_server": "다른 서버 찾기", + "closed_registrations_modal.preamble": "마스토돈은 분산화 되어 있습니다, 그렇기 때문에 어디에서 계정을 생성하든, 이 서버에 있는 누구와도 팔로우와 상호작용을 할 수 있습니다. 심지어는 스스로 서버를 만드는 것도 가능합니다!", + "closed_registrations_modal.title": "마스토돈에서 가입", "column.about": "정보", "column.blocks": "차단한 사용자", "column.bookmarks": "보관함", @@ -258,15 +259,15 @@ "follow_request.authorize": "허가", "follow_request.reject": "거부", "follow_requests.unlocked_explanation": "당신의 계정이 잠기지 않았다고 할 지라도, {domain}의 스탭은 당신이 이 계정들로부터의 팔로우 요청을 수동으로 확인하길 원한다고 생각했습니다.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "저장됨", - "getting_started.directory": "디렉토리", - "getting_started.documentation": "문서", - "getting_started.free_software_notice": "마스토돈은 자유 오픈소스 소프트웨어입니다. {repository}에서 소스코드를 열람할 수 있으며, 기여를 하거나 이슈를 작성할 수도 있습니다.", "getting_started.heading": "시작", - "getting_started.invite": "초대", - "getting_started.privacy_policy": "개인정보 처리방침", - "getting_started.security": "계정 설정", - "getting_started.what_is_mastodon": "마스토돈에 대하여", "hashtag.column_header.tag_mode.all": "그리고 {additional}", "hashtag.column_header.tag_mode.any": "또는 {additional}", "hashtag.column_header.tag_mode.none": "{additional}를 제외하고", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?", "mute_modal.indefinite": "무기한", "navigation_bar.about": "정보", - "navigation_bar.apps": "앱 다운로드하기", "navigation_bar.blocks": "차단한 사용자", "navigation_bar.bookmarks": "보관함", "navigation_bar.community_timeline": "로컬 타임라인", @@ -375,8 +375,6 @@ "navigation_bar.filters": "뮤트한 단어", "navigation_bar.follow_requests": "팔로우 요청", "navigation_bar.follows_and_followers": "팔로우와 팔로워", - "navigation_bar.info": "정보", - "navigation_bar.keyboard_shortcuts": "단축키", "navigation_bar.lists": "리스트", "navigation_bar.logout": "로그아웃", "navigation_bar.mutes": "뮤트한 사용자", @@ -384,7 +382,7 @@ "navigation_bar.pins": "고정된 게시물", "navigation_bar.preferences": "사용자 설정", "navigation_bar.public_timeline": "연합 타임라인", - "navigation_bar.search": "Search", + "navigation_bar.search": "검색", "navigation_bar.security": "보안", "not_signed_in_indicator.not_signed_in": "이 정보에 접근하려면 로그인을 해야 합니다.", "notification.admin.report": "{name} 님이 {target}를 신고했습니다", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "규칙 위반", "report_notification.open": "신고 열기", "search.placeholder": "검색", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "고급 검색 방법", "search_popout.tips.full_text": "단순한 텍스트 검색은 당신이 작성했거나, 관심글로 지정했거나, 부스트했거나, 멘션을 받은 게시글, 그리고 사용자명, 표시되는 이름, 해시태그를 반환합니다.", "search_popout.tips.hashtag": "해시태그", @@ -573,7 +572,7 @@ "status.reblogs.empty": "아직 아무도 이 게시물을 부스트하지 않았습니다. 부스트 한 사람들이 여기에 표시 됩니다.", "status.redraft": "지우고 다시 쓰기", "status.remove_bookmark": "보관한 게시물 삭제", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name} 님에게 답장", "status.reply": "답장", "status.replyAll": "글타래에 답장", "status.report": "신고", @@ -586,7 +585,7 @@ "status.show_more_all": "모두 펼치기", "status.show_original": "원본 보기", "status.translate": "번역", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{lang}에서 {provider}를 사용해 번역됨", "status.uncached_media_warning": "사용할 수 없음", "status.unmute_conversation": "이 대화의 뮤트 해제하기", "status.unpin": "고정 해제", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR 준비 중…", "upload_modal.preview_label": "미리보기 ({ratio})", "upload_progress.label": "업로드 중...", + "upload_progress.processing": "Processing…", "video.close": "동영상 닫기", "video.download": "파일 다운로드", "video.exit_fullscreen": "전체화면 나가기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 246b46407a..700e5a264c 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -1,6 +1,7 @@ { "about.blocks": "Rajekarên çavdêrkirî", "about.contact": "Têkilî:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Sedem", "about.domain_blocks.domain": "Navper", "about.domain_blocks.preamble": "Mastodon bi gelemperî dihêle ku tu naverokê bibînî û bi bikarhênerên ji rajekareke din a li fendiverse re têkilî dayne. Ev awaretyên ku li ser vê rajekara taybetî hatine çêkirin ev in.", @@ -39,7 +40,7 @@ "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", "account.follows_you": "Te dişopîne", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", - "account.joined_short": "Joined", + "account.joined_short": "Tevlî bû", "account.languages": "Zimanên beşdarbûyî biguherîne", "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin", "account.locked_info": "Rewşa vê ajimêrê wek kilîtkirî hatiye sazkirin. Xwediyê ajimêrê, bi destan dinirxîne şopandinê dinirxîne.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Bigire", "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", "bundle_modal_error.retry": "Dîsa bicerbîne", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ji ber ku Mastodon nenavendî ye, tu dika li ser rajekarek din ajimêrekê biafirînî û hîn jî bi vê yekê re tev bigerî.", + "closed_registrations_modal.description": "Afirandina ajimêrekê li ser {domain} niha ne pêkan e, lê ji kerema xwe ji bîr neke ku pêdiviya te bi hebûna ajimêreke taybet li ser {domain} tune ye ku tu Mastodon bi kar bînî.", + "closed_registrations_modal.find_another_server": "Rajekareke din bibîne", + "closed_registrations_modal.preamble": "Mastodon nenavendî ye, ji ber vê yekê tu li ku derê ajimêrê xwe biafirînê, tu yê bikaribî li ser vê rajekarê her kesî bişopînî û têkilî deynî. Her wiha tu dikarî wê bi xwe pêşkêş bikî!", + "closed_registrations_modal.title": "Tomar bibe li ser Mastodon", "column.about": "Derbar", "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", @@ -258,15 +259,15 @@ "follow_request.authorize": "Mafê bide", "follow_request.reject": "Nepejirîne", "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Tomarkirî", - "getting_started.directory": "Rêgeh", - "getting_started.documentation": "Pelbend", - "getting_started.free_software_notice": "Mastodon belaş, nermalava çavkaniya vekirî ye. Tu dikarî koda çavkaniyê bibînî, beşdar bibî an pirsgirêkan ragihînî li ser {repository}.", "getting_started.heading": "Destpêkirin", - "getting_started.invite": "Kesan vexwîne", - "getting_started.privacy_policy": "Politîka taybetiyê", - "getting_started.security": "Sazkariyên ajimêr", - "getting_started.what_is_mastodon": "Derbarê Mastodon", "hashtag.column_header.tag_mode.all": "û {additional}", "hashtag.column_header.tag_mode.any": "an {additional}", "hashtag.column_header.tag_mode.none": "bêyî {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?", "mute_modal.indefinite": "Nediyar", "navigation_bar.about": "Derbar", - "navigation_bar.apps": "Sepanê bi dest bixe", "navigation_bar.blocks": "Bikarhênerên astengkirî", "navigation_bar.bookmarks": "Şûnpel", "navigation_bar.community_timeline": "Demnameya herêmî", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Peyvên bêdengkirî", "navigation_bar.follow_requests": "Daxwazên şopandinê", "navigation_bar.follows_and_followers": "Şopandin û şopîner", - "navigation_bar.info": "Derbar", - "navigation_bar.keyboard_shortcuts": "Kurte bişkok", "navigation_bar.lists": "Rêzok", "navigation_bar.logout": "Derkeve", "navigation_bar.mutes": "Bikarhênerên bêdengkirî", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Şandiya derzîkirî", "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameya giştî", - "navigation_bar.search": "Search", + "navigation_bar.search": "Bigere", "navigation_bar.security": "Ewlehî", "not_signed_in_indicator.not_signed_in": "Divê tu têketinê bikî da ku tu bigihîjî vê çavkaniyê.", "notification.admin.report": "{name} hate ragihandin {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Binpêkirina rêzîkê", "report_notification.open": "Ragihandinê veke", "search.placeholder": "Bigere", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Dirûva lêgerîna pêşketî", "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Kesekî hin ev şandî bilind nekiriye. Gava kesek bilind bike, ew ên li vir werin xuyakirin.", "status.redraft": "Jê bibe & ji nû ve reşnivîs bike", "status.remove_bookmark": "Şûnpêlê jê rake", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Bersiv da {name}", "status.reply": "Bersivê bide", "status.replyAll": "Mijarê bibersivîne", "status.report": "@{name} ragihîne", @@ -586,7 +585,7 @@ "status.show_more_all": "Bêtir nîşan bide bo hemûyan", "status.show_original": "A resen nîşan bide", "status.translate": "Wergerîne", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Ji {lang} hate wergerandin bi riya {provider}", "status.uncached_media_warning": "Tune ye", "status.unmute_conversation": "Axaftinê bêdeng neke", "status.unpin": "Şandiya derzîkirî ji profîlê rake", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR dihê amadekirin…", "upload_modal.preview_label": "Pêşdîtin ({ratio})", "upload_progress.label": "Tê barkirin...", + "upload_progress.processing": "Processing…", "video.close": "Vîdyoyê bigire", "video.download": "Pelê daxe", "video.exit_fullscreen": "Ji dîmendera tijî derkeve", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 8ace3826a0..2faed5acc3 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Ri kummyas", "follow_request.reject": "Denagha", "follow_requests.unlocked_explanation": "Kyn na vo agas akont alhwedhys, an meni {domain} a wrug tybi y fia da genowgh dasweles govynnow holya a'n akontys ma dre leuv.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Gwithys", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dogvenva", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Dhe dhalleth", - "getting_started.invite": "Gelwel tus", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Dewisyow akont", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ha(g) {additional}", "hashtag.column_header.tag_mode.any": "po {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Kudha gwarnyansow a'n devnydhyer ma?", "mute_modal.indefinite": "Andhevri", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Devnydhyoryon lettys", "navigation_bar.bookmarks": "Folennosow", "navigation_bar.community_timeline": "Amserlin leel", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Geryow tawhes", "navigation_bar.follow_requests": "Govynnow holya", "navigation_bar.follows_and_followers": "Holyansow ha holyoryon", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Buanellow", "navigation_bar.lists": "Rolyow", "navigation_bar.logout": "Digelmi", "navigation_bar.mutes": "Devnydhyoryon tawhes", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Hwilas", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Furvas hwilas avonsys", "search_popout.tips.full_text": "Tekst sempel a wra daskor postow a wrussowgh aga skrifa, merkya vel drudh, po bos menegys ynna, keffrys ha henwyn devnydhyoryon ha displetyans, ha bòlnosow a dhesedh.", "search_popout.tips.hashtag": "bòlnos", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Ow pareusi ANG…", "upload_modal.preview_label": "Kynwel ({ratio})", "upload_progress.label": "Owth ughkarga...", + "upload_progress.processing": "Processing…", "video.close": "Degea gwydhyow", "video.download": "Iskarga restren", "video.exit_fullscreen": "Diberth a skrin leun", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index be61374e98..926e074f94 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index cd1c486cca..12da2ea914 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderētie serveri", "about.contact": "Kontakts:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Iemesls", "about.domain_blocks.domain": "Domēns", "about.domain_blocks.preamble": "Mastodon parasti ļauj apskatīt saturu un mijiedarboties ar lietotājiem no jebkura cita federācijas servera. Šie ir izņēmumi, kas veikti šajā konkrētajā serverī.", @@ -39,7 +40,7 @@ "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows_you": "Seko tev", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Pievienojies", "account.languages": "Mainīt abonētās valodas", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Aizvērt", "bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.", "bundle_modal_error.retry": "Mēģini vēlreiz", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Tā kā Mastodon ir decentralizēts, tu vari izveidot kontu citā serverī un joprojām mijiedarboties ar šo.", + "closed_registrations_modal.description": "Pašlaik nav iespējams izveidot kontu domēnā {domain}, taču, lūdzu, ņem vērā, ka, lai izmantotu Mastodon, tev nav nepieciešams konts tieši domēnā {domain}.", + "closed_registrations_modal.find_another_server": "Atrast citu serveri", + "closed_registrations_modal.preamble": "Mastodon ir decentralizēts, tāpēc neatkarīgi no tā, kur tu izveido savu kontu, varēsit sekot līdzi un sazināties ar ikvienu šajā serverī. Tu pat vari vadīt to pats!", + "closed_registrations_modal.title": "Reģistrēšanās Mastodon", "column.about": "Par", "column.blocks": "Bloķētie lietotāji", "column.bookmarks": "Grāmatzīmes", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizēt", "follow_request.reject": "Noraidīt", "follow_requests.unlocked_explanation": "Lai gan tavs konts nav bloķēts, {domain} darbinieki iedomājās, ka, iespējams, vēlēsies pārskatīt pieprasījumus no šiem kontiem.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saglabāts", - "getting_started.directory": "Direktorija", - "getting_started.documentation": "Dokumentācija", - "getting_started.free_software_notice": "Mastodon ir bezmaksas atvērtā pirmkoda programmatūra. Tu vari apskatīt pirmkodu, sniegt savu ieguldījumu vai ziņot par problēmām vietnē {repository}.", "getting_started.heading": "Darba sākšana", - "getting_started.invite": "Uzaicini cilvēkus", - "getting_started.privacy_policy": "Privātuma Politika", - "getting_started.security": "Konta iestatījumi", - "getting_started.what_is_mastodon": "Par Mastodon", "hashtag.column_header.tag_mode.all": "un {additional}", "hashtag.column_header.tag_mode.any": "vai {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Slēpt paziņojumus no šī lietotāja?", "mute_modal.indefinite": "Nenoteikts", "navigation_bar.about": "Par", - "navigation_bar.apps": "Iegūt lietotni", "navigation_bar.blocks": "Bloķētie lietotāji", "navigation_bar.bookmarks": "Grāmatzīmes", "navigation_bar.community_timeline": "Vietējā ziņu lenta", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Klusināti vārdi", "navigation_bar.follow_requests": "Sekošanas pieprasījumi", "navigation_bar.follows_and_followers": "Man seko un sekotāji", - "navigation_bar.info": "Par", - "navigation_bar.keyboard_shortcuts": "Ātrie taustiņi", "navigation_bar.lists": "Saraksti", "navigation_bar.logout": "Iziet", "navigation_bar.mutes": "Apklusinātie lietotāji", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Piespraustās ziņas", "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā ziņu lenta", - "navigation_bar.search": "Search", + "navigation_bar.search": "Meklēt", "navigation_bar.security": "Drošība", "not_signed_in_indicator.not_signed_in": "Lai piekļūtu šim resursam, tev ir jāpierakstās.", "notification.admin.report": "{name} ziņoja par {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Noteikumu pārkāpums", "report_notification.open": "Atvērt ziņojumu", "search.placeholder": "Meklēšana", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Paplašināts meklēšanas formāts", "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, iecienījis, paaugstinājis vai pieminējis, kā arī atbilstošie lietotājvārdi, parādāmie vārdi un tēmturi.", "search_popout.tips.hashtag": "mirkļbirka", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Neviens šo ziņojumu vel nav paaugstinājis. Kad būs, tie parādīsies šeit.", "status.redraft": "Dzēst un pārrakstīt", "status.remove_bookmark": "Noņemt grāmatzīmi", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Atbildēja {name}", "status.reply": "Atbildēt", "status.replyAll": "Atbildēt uz tematu", "status.report": "Ziņot par @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Rādīt vairāk visiem", "status.show_original": "Rādīt oriģinālu", "status.translate": "Tulkot", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Tulkots no {lang} izmantojot {provider}", "status.uncached_media_warning": "Nav pieejams", "status.unmute_conversation": "Atvērt sarunu", "status.unpin": "Noņemt no profila", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Sagatavo OCR…", "upload_modal.preview_label": "Priekšskatīt ({ratio})", "upload_progress.label": "Augšupielādē...", + "upload_progress.processing": "Processing…", "video.close": "Aizvērt video", "video.download": "Lejupielādēt datni", "video.exit_fullscreen": "Iziet no pilnekrāna", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 2cbe5a50e2..ebdcb8225f 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Одобри", "follow_request.reject": "Одбиј", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Документација", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Започни", - "getting_started.invite": "Покани луѓе", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Поставки на сметката", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Замолќени зборови", "navigation_bar.follow_requests": "Следи покани", "navigation_bar.follows_and_followers": "Следења и следбеници", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Кратенки", "navigation_bar.lists": "Листи", "navigation_bar.logout": "Одјави се", "navigation_bar.mutes": "Заќутени корисници", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Барај", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Напреден формат за барање", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "хештег", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index b7f92c715d..bb116e9762 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "ചുമതലപ്പെടുത്തുക", "follow_request.reject": "നിരസിക്കുക", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "സംരക്ഷിച്ചു", - "getting_started.directory": "Directory", - "getting_started.documentation": "രേഖാ സമാഹരണം", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "തുടക്കം കുറിക്കുക", - "getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "അംഗത്വ ക്രമീകരണങ്ങൾ", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ", "hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}", "hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "അനിശ്ചിതകാല", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "ലിസ്റ്റുകൾ", "navigation_bar.logout": "ലോഗൗട്ട്", "navigation_bar.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "തിരയുക", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "ഹാഷ്ടാഗ്", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR തയ്യാറാക്കുന്നു…", "upload_modal.preview_label": "പൂര്‍വ്വദൃശ്യം({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "വീഡിയോ അടയ്ക്കുക", "video.download": "ഫയൽ ഡൌൺലോഡ് ചെയ്യുക", "video.exit_fullscreen": "പൂർണ്ണ സ്ക്രീനിൽ നിന്ന് പുറത്തുകടക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index ea2345ecfd..07d179979c 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index de0c504802..26551104b4 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Benarkan", "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Walaupun akaun anda tidak dikunci, kakitangan {domain} merasakan anda mungkin ingin menyemak permintaan ikutan daripada akaun ini secara manual.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Disimpan", - "getting_started.directory": "Directory", - "getting_started.documentation": "Pendokumenan", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Mari bermula", - "getting_started.invite": "Undang orang", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Tetapan akaun", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "dan {additional}", "hashtag.column_header.tag_mode.any": "atau {additional}", "hashtag.column_header.tag_mode.none": "tanpa {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Sembunyikan pemberitahuan daripada pengguna ini?", "mute_modal.indefinite": "Tidak tentu", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Pengguna yang disekat", "navigation_bar.bookmarks": "Tanda buku", "navigation_bar.community_timeline": "Garis masa tempatan", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Perkataan yang dibisukan", "navigation_bar.follow_requests": "Permintaan ikutan", "navigation_bar.follows_and_followers": "Ikutan dan pengikut", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Kekunci pantas", "navigation_bar.lists": "Senarai", "navigation_bar.logout": "Log keluar", "navigation_bar.mutes": "Pengguna yang dibisukan", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Cari", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format gelintar lanjutan", "search_popout.tips.full_text": "Teks ringkas mengembalikan hantaran yang anda telah tulis, menggemari, menggalak, atau telah disebutkan, dan juga nama pengguna, nama paparan, dan tanda pagar yang dipadankan.", "search_popout.tips.hashtag": "tanda pagar", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Mempersiapkan OCR…", "upload_modal.preview_label": "Pratonton ({ratio})", "upload_progress.label": "Memuat naik...", + "upload_progress.processing": "Processing…", "video.close": "Tutup video", "video.download": "Muat turun fail", "video.exit_fullscreen": "Keluar skrin penuh", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json new file mode 100644 index 0000000000..1747697829 --- /dev/null +++ b/app/javascript/mastodon/locales/my.json @@ -0,0 +1,649 @@ +{ + "about.blocks": "Moderated servers", + "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Reason", + "about.domain_blocks.domain": "Domain", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.severity": "Severity", + "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.title": "Suspended", + "about.not_available": "This information has not been made available on this server.", + "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.rules": "Server rules", + "account.account_note_header": "Note", + "account.add_or_remove_from_list": "Add or Remove from lists", + "account.badges.bot": "Bot", + "account.badges.group": "Group", + "account.block": "Block @{name}", + "account.block_domain": "Block domain {domain}", + "account.blocked": "Blocked", + "account.browse_more_on_origin_server": "Browse more on the original profile", + "account.cancel_follow_request": "Withdraw follow request", + "account.direct": "Direct message @{name}", + "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.domain_blocked": "Domain blocked", + "account.edit_profile": "ကိုယ်ရေးမှတ်တမ်းပြင်ဆင်မည်", + "account.enable_notifications": "Notify me when @{name} posts", + "account.endorse": "Feature on profile", + "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.title": "{name}'s featured hashtags", + "account.follow": "စောင့်ကြည့်မည်", + "account.followers": "Followers", + "account.followers.empty": "No one follows this user yet.", + "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.following": "စောင့်ကြည့်နေသည်", + "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", + "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows_you": "Follows you", + "account.hide_reblogs": "Hide boosts from @{name}", + "account.joined_short": "Joined", + "account.languages": "Change subscribed languages", + "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.media": "မီဒီယာ", + "account.mention": "Mention @{name}", + "account.moved_to": "{name} has moved to:", + "account.mute": "Mute @{name}", + "account.mute_notifications": "Mute notifications from @{name}", + "account.muted": "Muted", + "account.posts": "ပို့စ်များ", + "account.posts_with_replies": "Posts and replies", + "account.report": "Report @{name}", + "account.requested": "Awaiting approval. Click to cancel follow request", + "account.share": "Share @{name}'s profile", + "account.show_reblogs": "Show boosts from @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}", + "account.unblock": "Unblock @{name}", + "account.unblock_domain": "Unblock domain {domain}", + "account.unblock_short": "Unblock", + "account.unendorse": "Don't feature on profile", + "account.unfollow": "Unfollow", + "account.unmute": "Unmute @{name}", + "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_short": "Unmute", + "account_note.placeholder": "Click to add a note", + "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort_size": "New users", + "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "alert.rate_limited.title": "Rate limited", + "alert.unexpected.message": "An unexpected error occurred.", + "alert.unexpected.title": "Oops!", + "announcement.announcement": "Announcement", + "attachments_list.unprocessed": "(unprocessed)", + "audio.hide": "Hide audio", + "autosuggest_hashtag.per_week": "{count} per week", + "boost_modal.combo": "You can press {combo} to skip this next time", + "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.title": "Network error", + "bundle_column_error.retry": "Try again", + "bundle_column_error.return": "Go back home", + "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.title": "404", + "bundle_modal_error.close": "Close", + "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.retry": "Try again", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.title": "Signing up on Mastodon", + "column.about": "အကြောင်း", + "column.blocks": "Blocked users", + "column.bookmarks": "Bookmarks", + "column.community": "Local timeline", + "column.direct": "Direct messages", + "column.directory": "Browse profiles", + "column.domain_blocks": "Blocked domains", + "column.favourites": "Favourites", + "column.follow_requests": "Follow requests", + "column.home": "Home", + "column.lists": "Lists", + "column.mutes": "Muted users", + "column.notifications": "အသိပေးချက်များ", + "column.pins": "Pinned post", + "column.public": "Federated timeline", + "column_back_button.label": "Back", + "column_header.hide_settings": "Hide settings", + "column_header.moveLeft_settings": "Move column to the left", + "column_header.moveRight_settings": "Move column to the right", + "column_header.pin": "Pin", + "column_header.show_settings": "Show settings", + "column_header.unpin": "Unpin", + "column_subheading.settings": "ဆက်တင်များ", + "community.column_settings.local_only": "Local only", + "community.column_settings.media_only": "Media only", + "community.column_settings.remote_only": "Remote only", + "compose.language.change": "Change language", + "compose.language.search": "Search languages...", + "compose_form.direct_message_warning_learn_more": "Learn more", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", + "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.lock_disclaimer.lock": "locked", + "compose_form.placeholder": "What is on your mind?", + "compose_form.poll.add_option": "Add a choice", + "compose_form.poll.duration": "Poll duration", + "compose_form.poll.option_placeholder": "Choice {number}", + "compose_form.poll.remove_option": "Remove this choice", + "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", + "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", + "compose_form.publish": "Publish", + "compose_form.publish_loud": "{publish}!", + "compose_form.save_changes": "Save changes", + "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", + "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", + "compose_form.spoiler.marked": "Text is hidden behind warning", + "compose_form.spoiler.unmarked": "Text is not hidden", + "compose_form.spoiler_placeholder": "Write your warning here", + "confirmation_modal.cancel": "Cancel", + "confirmations.block.block_and_report": "Block & Report", + "confirmations.block.confirm": "Block", + "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.delete.confirm": "Delete", + "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", + "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.domain_block.confirm": "Hide entire domain", + "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.logout.confirm": "Log out", + "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.mute.confirm": "Mute", + "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.message": "Are you sure you want to mute {name}?", + "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", + "confirmations.reply.confirm": "စာပြန်မည်", + "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", + "confirmations.unfollow.confirm": "Unfollow", + "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", + "conversation.delete": "Delete conversation", + "conversation.mark_as_read": "Mark as read", + "conversation.open": "View conversation", + "conversation.with": "With {names}", + "copypaste.copied": "Copied", + "copypaste.copy": "Copy", + "directory.federated": "From known fediverse", + "directory.local": "From {domain} only", + "directory.new_arrivals": "New arrivals", + "directory.recently_active": "Recently active", + "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "embed.instructions": "Embed this status on your website by copying the code below.", + "embed.preview": "Here is what it will look like:", + "emoji_button.activity": "Activity", + "emoji_button.clear": "Clear", + "emoji_button.custom": "Custom", + "emoji_button.flags": "Flags", + "emoji_button.food": "Food & Drink", + "emoji_button.label": "Insert emoji", + "emoji_button.nature": "Nature", + "emoji_button.not_found": "No matching emojis found", + "emoji_button.objects": "Objects", + "emoji_button.people": "People", + "emoji_button.recent": "Frequently used", + "emoji_button.search": "Search...", + "emoji_button.search_results": "Search results", + "emoji_button.symbols": "Symbols", + "emoji_button.travel": "Travel & Places", + "empty_column.account_suspended": "Account suspended", + "empty_column.account_timeline": "No posts found", + "empty_column.account_unavailable": "Profile unavailable", + "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", + "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", + "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.domain_blocks": "There are no blocked domains yet.", + "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.", + "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", + "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.hashtag": "There is nothing in this hashtag yet.", + "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", + "empty_column.home.suggestions": "See some suggestions", + "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.mutes": "You haven't muted any users yet.", + "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", + "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", + "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", + "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "errors.unexpected_crash.report_issue": "Report issue", + "explore.search_results": "Search results", + "explore.suggested_follows": "For you", + "explore.title": "Explore", + "explore.trending_links": "သတင်းများ", + "explore.trending_statuses": "Posts", + "explore.trending_tags": "ဟက်ရှ်တက်များ", + "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.settings_link": "settings page", + "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", + "filter_modal.added.title": "Filter added!", + "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.title": "Filter this post", + "filter_modal.title.status": "Filter a post", + "follow_recommendations.done": "Done", + "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", + "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_request.authorize": "Authorize", + "follow_request.reject": "Reject", + "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", + "generic.saved": "Saved", + "getting_started.heading": "Getting started", + "hashtag.column_header.tag_mode.all": "and {additional}", + "hashtag.column_header.tag_mode.any": "or {additional}", + "hashtag.column_header.tag_mode.none": "without {additional}", + "hashtag.column_settings.select.no_options_message": "No suggestions found", + "hashtag.column_settings.select.placeholder": "Enter hashtags…", + "hashtag.column_settings.tag_mode.all": "All of these", + "hashtag.column_settings.tag_mode.any": "Any of these", + "hashtag.column_settings.tag_mode.none": "None of these", + "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.follow": "Follow hashtag", + "hashtag.unfollow": "Unfollow hashtag", + "home.column_settings.basic": "Basic", + "home.column_settings.show_reblogs": "Show boosts", + "home.column_settings.show_replies": "Show replies", + "home.hide_announcements": "Hide announcements", + "home.show_announcements": "Show announcements", + "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", + "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.on_another_server": "On a different server", + "interaction_modal.on_this_server": "On this server", + "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reply": "Reply to {name}'s post", + "intervals.full.days": "{number, plural, one {# day} other {# days}}", + "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", + "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "keyboard_shortcuts.back": "to navigate back", + "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.boost": "to boost", + "keyboard_shortcuts.column": "to focus a status in one of the columns", + "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.down": "to move down in the list", + "keyboard_shortcuts.enter": "to open status", + "keyboard_shortcuts.favourite": "to favourite", + "keyboard_shortcuts.favourites": "to open favourites list", + "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.home": "to open home timeline", + "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.legend": "to display this legend", + "keyboard_shortcuts.local": "to open local timeline", + "keyboard_shortcuts.mention": "to mention author", + "keyboard_shortcuts.muted": "to open muted users list", + "keyboard_shortcuts.my_profile": "to open your profile", + "keyboard_shortcuts.notifications": "to open notifications column", + "keyboard_shortcuts.open_media": "to open media", + "keyboard_shortcuts.pinned": "to open pinned posts list", + "keyboard_shortcuts.profile": "to open author's profile", + "keyboard_shortcuts.reply": "to reply", + "keyboard_shortcuts.requests": "to open follow requests list", + "keyboard_shortcuts.search": "to focus search", + "keyboard_shortcuts.spoilers": "to show/hide CW field", + "keyboard_shortcuts.start": "to open \"get started\" column", + "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", + "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", + "keyboard_shortcuts.toot": "to start a brand new post", + "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", + "keyboard_shortcuts.up": "to move up in the list", + "lightbox.close": "Close", + "lightbox.compress": "Compress image view box", + "lightbox.expand": "Expand image view box", + "lightbox.next": "Next", + "lightbox.previous": "Previous", + "limited_account_hint.action": "Show profile anyway", + "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "lists.account.add": "Add to list", + "lists.account.remove": "Remove from list", + "lists.delete": "Delete list", + "lists.edit": "Edit list", + "lists.edit.submit": "Change title", + "lists.new.create": "Add list", + "lists.new.title_placeholder": "New list title", + "lists.replies_policy.followed": "Any followed user", + "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.none": "No one", + "lists.replies_policy.title": "Show replies to:", + "lists.search": "Search among people you follow", + "lists.subheading": "Your lists", + "load_pending": "{count, plural, one {# new item} other {# new items}}", + "loading_indicator.label": "Loading...", + "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", + "missing_indicator.label": "Not found", + "missing_indicator.sublabel": "This resource could not be found", + "mute_modal.duration": "Duration", + "mute_modal.hide_notifications": "Hide notifications from this user?", + "mute_modal.indefinite": "Indefinite", + "navigation_bar.about": "အကြောင်း", + "navigation_bar.blocks": "Blocked users", + "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.compose": "Compose new post", + "navigation_bar.direct": "Direct messages", + "navigation_bar.discover": "Discover", + "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.edit_profile": "ကိုယ်ရေးမှတ်တမ်းပြင်ဆင်မည်", + "navigation_bar.explore": "Explore", + "navigation_bar.favourites": "Favourites", + "navigation_bar.filters": "Muted words", + "navigation_bar.follow_requests": "Follow requests", + "navigation_bar.follows_and_followers": "Follows and followers", + "navigation_bar.lists": "Lists", + "navigation_bar.logout": "Logout", + "navigation_bar.mutes": "Muted users", + "navigation_bar.personal": "Personal", + "navigation_bar.pins": "Pinned posts", + "navigation_bar.preferences": "Preferences", + "navigation_bar.public_timeline": "Federated timeline", + "navigation_bar.search": "Search", + "navigation_bar.security": "Security", + "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "notification.admin.report": "{name} reported {target}", + "notification.admin.sign_up": "{name} signed up", + "notification.favourite": "{name} favourited your status", + "notification.follow": "{name} followed you", + "notification.follow_request": "{name} has requested to follow you", + "notification.mention": "{name} mentioned you", + "notification.own_poll": "Your poll has ended", + "notification.poll": "A poll you have voted in has ended", + "notification.reblog": "{name} boosted your status", + "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", + "notifications.clear": "Clear notifications", + "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", + "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.alert": "Desktop notifications", + "notifications.column_settings.favourite": "Favourites:", + "notifications.column_settings.filter_bar.advanced": "Display all categories", + "notifications.column_settings.filter_bar.category": "Quick filter bar", + "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.follow": "New followers:", + "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.mention": "Mentions:", + "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.show": "Show in column", + "notifications.column_settings.sound": "Play sound", + "notifications.column_settings.status": "New posts:", + "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", + "notifications.filter.all": "All", + "notifications.filter.boosts": "Boosts", + "notifications.filter.favourites": "Favourites", + "notifications.filter.follows": "Follows", + "notifications.filter.mentions": "Mentions", + "notifications.filter.polls": "Poll results", + "notifications.filter.statuses": "Updates from people you follow", + "notifications.grant_permission": "Grant permission.", + "notifications.group": "{count} notifications", + "notifications.mark_as_read": "Mark every notification as read", + "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", + "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", + "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications_permission_banner.enable": "Enable desktop notifications", + "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", + "notifications_permission_banner.title": "Never miss a thing", + "picture_in_picture.restore": "Put it back", + "poll.closed": "Closed", + "poll.refresh": "Refresh", + "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", + "poll.vote": "Vote", + "poll.voted": "You voted for this answer", + "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll_button.add_poll": "Add a poll", + "poll_button.remove_poll": "Remove poll", + "privacy.change": "Adjust status privacy", + "privacy.direct.long": "Visible for mentioned users only", + "privacy.direct.short": "Direct", + "privacy.private.long": "Visible for followers only", + "privacy.private.short": "Followers-only", + "privacy.public.long": "Visible for all", + "privacy.public.short": "Public", + "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.short": "Unlisted", + "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.title": "Privacy Policy", + "refresh": "Refresh", + "regeneration_indicator.label": "Loading…", + "regeneration_indicator.sublabel": "Your home feed is being prepared!", + "relative_time.days": "{number}d", + "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", + "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.just_now": "just now", + "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", + "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.hours": "{number}h", + "relative_time.just_now": "now", + "relative_time.minutes": "{number}m", + "relative_time.seconds": "{number}s", + "relative_time.today": "today", + "reply_indicator.cancel": "Cancel", + "report.block": "Block", + "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.categories.other": "Other", + "report.categories.spam": "Spam", + "report.categories.violation": "Content violates one or more server rules", + "report.category.subtitle": "Choose the best match", + "report.category.title": "Tell us what's going on with this {type}", + "report.category.title_account": "ကိုယ်ရေးမှတ်တမ်း", + "report.category.title_status": "post", + "report.close": "Done", + "report.comment.title": "Is there anything else you think we should know?", + "report.forward": "Forward to {target}", + "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", + "report.mute": "Mute", + "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.next": "Next", + "report.placeholder": "Type or paste additional comments", + "report.reasons.dislike": "I don't like it", + "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.other": "It's something else", + "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.spam": "It's spam", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.violation": "It violates server rules", + "report.reasons.violation_description": "You are aware that it breaks specific rules", + "report.rules.subtitle": "Select all that apply", + "report.rules.title": "Which rules are being violated?", + "report.statuses.subtitle": "Select all that apply", + "report.statuses.title": "Are there any posts that back up this report?", + "report.submit": "Submit report", + "report.target": "Report {target}", + "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.title": "Don't want to see this?", + "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.unfollow": "Unfollow @{name}", + "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.categories.other": "Other", + "report_notification.categories.spam": "Spam", + "report_notification.categories.violation": "Rule violation", + "report_notification.open": "Open report", + "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", + "search_popout.search_format": "Advanced search format", + "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.status": "status", + "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.user": "user", + "search_results.accounts": "People", + "search_results.all": "All", + "search_results.hashtags": "ဟက်ရှ်တက်များ", + "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.statuses": "Posts", + "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", + "search_results.title": "Search for {q}", + "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.active_users": "active users", + "server_banner.administered_by": "Administered by:", + "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.learn_more": "Learn more", + "server_banner.server_stats": "Server stats:", + "sign_in_banner.create_account": "Create account", + "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "status.admin_account": "Open moderation interface for @{name}", + "status.admin_status": "Open this status in the moderation interface", + "status.block": "Block @{name}", + "status.bookmark": "Bookmark", + "status.cancel_reblog_private": "Unboost", + "status.cannot_reblog": "This post cannot be boosted", + "status.copy": "Copy link to status", + "status.delete": "Delete", + "status.detailed_status": "Detailed conversation view", + "status.direct": "Direct message @{name}", + "status.edit": "Edit", + "status.edited": "Edited {date}", + "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.embed": "Embed", + "status.favourite": "Favourite", + "status.filter": "Filter this post", + "status.filtered": "Filtered", + "status.hide": "Hide toot", + "status.history.created": "{name} created {date}", + "status.history.edited": "{name} edited {date}", + "status.load_more": "Load more", + "status.media_hidden": "Media hidden", + "status.mention": "Mention @{name}", + "status.more": "More", + "status.mute": "Mute @{name}", + "status.mute_conversation": "Mute conversation", + "status.open": "Expand this status", + "status.pin": "Pin on profile", + "status.pinned": "Pinned post", + "status.read_more": "Read more", + "status.reblog": "Boost", + "status.reblog_private": "Boost with original visibility", + "status.reblogged_by": "{name} boosted", + "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", + "status.redraft": "Delete & re-draft", + "status.remove_bookmark": "Remove bookmark", + "status.replied_to": "Replied to {name}", + "status.reply": "Reply", + "status.replyAll": "Reply to thread", + "status.report": "Report @{name}", + "status.sensitive_warning": "Sensitive content", + "status.share": "Share", + "status.show_filter_reason": "Show anyway", + "status.show_less": "Show less", + "status.show_less_all": "Show less for all", + "status.show_more": "Show more", + "status.show_more_all": "Show more for all", + "status.show_original": "Show original", + "status.translate": "Translate", + "status.translated_from_with": "Translated from {lang} using {provider}", + "status.uncached_media_warning": "Not available", + "status.unmute_conversation": "Unmute conversation", + "status.unpin": "Unpin from profile", + "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.save": "Save changes", + "subscribed_languages.target": "Change subscribed languages for {target}", + "suggestions.dismiss": "Dismiss suggestion", + "suggestions.header": "You might be interested in…", + "tabs_bar.federated_timeline": "Federated", + "tabs_bar.home": "Home", + "tabs_bar.local_timeline": "Local", + "tabs_bar.notifications": "Notifications", + "time_remaining.days": "{number, plural, one {# day} other {# days}} left", + "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", + "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", + "time_remaining.moments": "Moments remaining", + "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", + "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", + "timeline_hint.resources.followers": "Followers", + "timeline_hint.resources.follows": "Follows", + "timeline_hint.resources.statuses": "Older posts", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.trending_now": "Trending now", + "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", + "units.short.billion": "{count}B", + "units.short.million": "{count}M", + "units.short.thousand": "{count}K", + "upload_area.title": "Drag & drop to upload", + "upload_button.label": "Add images, a video or an audio file", + "upload_error.limit": "File upload limit exceeded.", + "upload_error.poll": "File upload not allowed with polls.", + "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.description": "Describe for the visually impaired", + "upload_form.description_missing": "No description added", + "upload_form.edit": "Edit", + "upload_form.thumbnail": "Change thumbnail", + "upload_form.undo": "Delete", + "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_modal.analyzing_picture": "Analyzing picture…", + "upload_modal.apply": "Apply", + "upload_modal.applying": "Applying…", + "upload_modal.choose_image": "Choose image", + "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.detect_text": "Detect text from picture", + "upload_modal.edit_media": "Edit media", + "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", + "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.preview_label": "Preview ({ratio})", + "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", + "video.close": "Close video", + "video.download": "Download file", + "video.exit_fullscreen": "Exit full screen", + "video.expand": "Expand video", + "video.fullscreen": "Full screen", + "video.hide": "Hide video", + "video.mute": "Mute sound", + "video.pause": "Pause", + "video.play": "Play", + "video.unmute": "Unmute sound" +} diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 253d5ec02e..8484fb4dfd 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -1,6 +1,7 @@ { "about.blocks": "Gemodereerde servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reden", "about.domain_blocks.domain": "Domein", "about.domain_blocks.preamble": "In het algemeen kun je met Mastodon berichten ontvangen van, en interactie hebben met gebruikers van elke server in de fediverse. Dit zijn de uitzonderingen die op deze specifieke server gelden.", @@ -39,7 +40,7 @@ "account.follows.empty": "Deze gebruiker volgt nog niemand.", "account.follows_you": "Volgt jou", "account.hide_reblogs": "Boosts van @{name} verbergen", - "account.joined_short": "Joined", + "account.joined_short": "Geregistreerd op", "account.languages": "Getoonde talen wijzigen", "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}", "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie diegene kan volgen.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Omdat Mastodon gedecentraliseerd is, kun je op een andere server een account registreren en vanaf daar nog steeds met dit account communiceren.", + "closed_registrations_modal.description": "Momenteel is het niet mogelijk om op {domain} een account aan te maken. Hou echter in gedachte dat om Mastodon te kunnen gebruiken het niet een vereiste is om op {domain} een account aan te maken.", + "closed_registrations_modal.find_another_server": "Een andere server zoeken", + "closed_registrations_modal.preamble": "Mastodon is gedecentraliseerd. Op welke server je ook een account hebt, je kunt overal vandaan mensen op deze server volgen en er mee interactie hebben. Je kunt zelfs zelf een Mastodon-server hosten!", + "closed_registrations_modal.title": "Registreren op Mastodon", "column.about": "Over", "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", @@ -258,15 +259,15 @@ "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afwijzen", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Opgeslagen", - "getting_started.directory": "Gebruikersgids", - "getting_started.documentation": "Documentatie", - "getting_started.free_software_notice": "Mastodon is vrije, opensourcesoftware. Je kunt de broncode bekijken, bijdragen of bugs rapporteren op {repository}.", "getting_started.heading": "Aan de slag", - "getting_started.invite": "Mensen uitnodigen", - "getting_started.privacy_policy": "Privacybeleid", - "getting_started.security": "Accountinstellingen", - "getting_started.what_is_mastodon": "Over Mastodon", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "zonder {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Verberg meldingen van deze persoon?", "mute_modal.indefinite": "Voor onbepaalde tijd", "navigation_bar.about": "Over", - "navigation_bar.apps": "App downloaden", "navigation_bar.blocks": "Geblokkeerde gebruikers", "navigation_bar.bookmarks": "Bladwijzers", "navigation_bar.community_timeline": "Lokale tijdlijn", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Filters", "navigation_bar.follow_requests": "Volgverzoeken", "navigation_bar.follows_and_followers": "Volgers en gevolgden", - "navigation_bar.info": "Over deze server", - "navigation_bar.keyboard_shortcuts": "Sneltoetsen", "navigation_bar.lists": "Lijsten", "navigation_bar.logout": "Uitloggen", "navigation_bar.mutes": "Genegeerde gebruikers", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Vastgemaakte berichten", "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", - "navigation_bar.search": "Search", + "navigation_bar.search": "Zoeken", "navigation_bar.security": "Beveiliging", "not_signed_in_indicator.not_signed_in": "Je moet inloggen om toegang tot deze informatie te krijgen.", "notification.admin.report": "{name} heeft {target} geapporteerd", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Overtreden regel(s)", "report_notification.open": "Rapportage openen", "search.placeholder": "Zoeken", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Geavanceerd zoeken", "search_popout.tips.full_text": "Gebruik gewone tekst om te zoeken in jouw berichten, gebooste berichten, favorieten en in berichten waarin je bent vermeldt, en tevens naar gebruikersnamen, weergavenamen en hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -536,7 +535,7 @@ "server_banner.server_stats": "Serverstats:", "sign_in_banner.create_account": "Registreren", "sign_in_banner.sign_in": "Inloggen", - "sign_in_banner.text": "Inloggen om accounts of hashtags te volgen, op berichten te reageren, berichten te delen, of om interactie te hebben met jouw account op een andere server.", + "sign_in_banner.text": "Wanneer je een account op deze server hebt, kun je inloggen om mensen of hashtags te volgen, op berichten te reageren of om deze te delen. Wanneer je een account op een andere server hebt, kun je daar inloggen en daar interactie met mensen op deze server hebben.", "status.admin_account": "Moderatie-omgeving van @{name} openen", "status.admin_status": "Dit bericht in de moderatie-omgeving tonen", "status.block": "@{name} blokkeren", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Niemand heeft dit bericht nog geboost. Wanneer iemand dit doet, valt dat hier te zien.", "status.redraft": "Verwijderen en herschrijven", "status.remove_bookmark": "Bladwijzer verwijderen", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Reageerde op {name}", "status.reply": "Reageren", "status.replyAll": "Reageer op iedereen", "status.report": "@{name} rapporteren", @@ -586,7 +585,7 @@ "status.show_more_all": "Alles meer tonen", "status.show_original": "Origineel bekijken", "status.translate": "Vertalen", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Vertaald vanuit het {lang} met behulp van {provider}", "status.uncached_media_warning": "Niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", "status.unpin": "Van profielpagina losmaken", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR voorbereiden…", "upload_modal.preview_label": "Voorvertoning ({ratio})", "upload_progress.label": "Uploaden...", + "upload_progress.processing": "Processing…", "video.close": "Video sluiten", "video.download": "Bestand downloaden", "video.exit_fullscreen": "Volledig scherm sluiten", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 6d08e430a1..1a43085795 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoriser", "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Sjølv om kontoen din ikkje er låst tenkte {domain} tilsette at du ville gå gjennom førespurnadar frå desse kontoane manuelt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Lagra", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentasjon", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kom i gang", - "getting_started.invite": "Byd folk inn", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Kontoinnstillingar", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Gøyme varsel frå denne brukaren?", "mute_modal.indefinite": "På ubestemt tid", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokkerte brukarar", "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Målbundne ord", "navigation_bar.follow_requests": "Fylgjeførespurnader", "navigation_bar.follows_and_followers": "Fylgje og fylgjarar", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Snøggtastar", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Logg ut", "navigation_bar.mutes": "Målbundne brukarar", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Regelbrot", "report_notification.open": "Open report", "search.placeholder": "Søk", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst returnerer statusar du har skrive, likt, framheva eller vorte nemnd i, i tillegg til samsvarande brukarnamn, visningsnamn og emneknaggar.", "search_popout.tips.hashtag": "emneknagg", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Førebur OCR…", "upload_modal.preview_label": "Førehandsvis ({ratio})", "upload_progress.label": "Lastar opp...", + "upload_progress.processing": "Processing…", "video.close": "Lukk video", "video.download": "Last ned fil", "video.exit_fullscreen": "Lukk fullskjerm", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index f408fad68c..13ec6df9a4 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorisér", "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Lagret", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentasjon", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kom i gang", - "getting_started.invite": "Inviter folk", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Kontoinnstillinger", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uten {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?", "mute_modal.indefinite": "På ubestemt tid", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokkerte brukere", "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Stilnede ord", "navigation_bar.follow_requests": "Følgeforespørsler", "navigation_bar.follows_and_followers": "Følginger og følgere", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Tastatursnarveier", "navigation_bar.lists": "Lister", "navigation_bar.logout": "Logg ut", "navigation_bar.mutes": "Dempede brukere", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Søk", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst gir resultater for statuser du har skrevet, likt, fremhevet, eller har blitt nevnt i, i tillegg til samsvarende brukernavn, visningsnavn og emneknagger.", "search_popout.tips.hashtag": "emneknagg", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Forbereder OCR…", "upload_modal.preview_label": "Forhåndsvisning ({ratio})", "upload_progress.label": "Laster opp...", + "upload_progress.processing": "Processing…", "video.close": "Lukk video", "video.download": "Last ned fil", "video.exit_fullscreen": "Lukk fullskjerm", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 754f38f219..0be16f6771 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Acceptar", "follow_request.reject": "Regetar", "follow_requests.unlocked_explanation": "Encara que vòstre compte siasque pas verrolhat, la còla de {domain} pensèt que volriatz benlèu repassar las demandas d’abonament d’aquestes comptes.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Enregistrat", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentacion", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Per començar", - "getting_started.invite": "Convidar de mond", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Seguretat", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sens {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Rescondre las notificacions d’aquesta persona ?", "mute_modal.indefinite": "Cap de data de fin", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Personas blocadas", "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Flux public local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Mots ignorats", "navigation_bar.follow_requests": "Demandas d’abonament", "navigation_bar.follows_and_followers": "Abonament e seguidors", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Acorchis clavièr", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Desconnexion", "navigation_bar.mutes": "Personas rescondudas", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Recercar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format recèrca avançada", "search_popout.tips.full_text": "Un tèxte simple que tòrna los estatuts qu’avètz escriches, mes en favorits, partejats, o ont sètz mencionat, e tanben los noms d’utilizaires, escais-noms e etiquetas que correspondonas.", "search_popout.tips.hashtag": "etiqueta", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparacion de la ROC…", "upload_modal.preview_label": "Apercebut ({ratio})", "upload_progress.label": "Mandadís…", + "upload_progress.processing": "Processing…", "video.close": "Tampar la vidèo", "video.download": "Telecargar lo fichièr", "video.exit_fullscreen": "Sortir plen ecran", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index cc0fa70690..dbc5685989 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index f8a9c856d1..417d79ec6a 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -1,6 +1,7 @@ { "about.blocks": "Serwery moderowane", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Powód", "about.domain_blocks.domain": "Domena", "about.domain_blocks.preamble": "Normalnie Mastodon pozwala ci przeglądać i reagować na treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. To są wyjątki, które zostały stworzone na tym konkretnym serwerze.", @@ -39,7 +40,7 @@ "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.", "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Dołączył(a)", "account.languages": "Zmień subskrybowane języki", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Zamknij", "bundle_modal_error.message": "Coś poszło nie tak podczas ładowania tego składnika.", "bundle_modal_error.retry": "Spróbuj ponownie", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ponieważ Mastodon jest zdecentralizowany, możesz założyć konto na innym serwerze i wciąż mieć możliwość wchodzenia w interakcję z tym serwerem.", + "closed_registrations_modal.description": "Opcja tworzenia kont na {domain} jest aktualnie niedostępna, ale miej na uwadze to, że nie musisz mieć konta konkretnie na {domain} by używać Mastodona.", + "closed_registrations_modal.find_another_server": "Znajdź inny serwer", + "closed_registrations_modal.preamble": "Mastodon jest zdecentralizowany, więc bez względu na to, gdzie się zarejestrujesz, będziesz w stanie obserwować i wchodzić w interakcje z innymi osobami na tym serwerze. Możesz nawet uruchomić własny serwer!", + "closed_registrations_modal.title": "Rejestracja na Mastodonie", "column.about": "O...", "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoryzuj", "follow_request.reject": "Odrzuć", "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość śledzenia.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Zapisano", - "getting_started.directory": "Katalog", - "getting_started.documentation": "Dokumentacja", - "getting_started.free_software_notice": "Mastodon jest darmowym, otwartym oprogramowaniem. Możesz zobaczyć kod źródłowy, wnieść wkład lub zgłosić problemy na {repository}.", "getting_started.heading": "Rozpocznij", - "getting_started.invite": "Zaproś znajomych", - "getting_started.privacy_policy": "Polityka prywatności", - "getting_started.security": "Bezpieczeństwo", - "getting_started.what_is_mastodon": "O Mastodon", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "lub {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -352,7 +353,7 @@ "lists.replies_policy.title": "Pokazuj odpowiedzi dla:", "lists.search": "Szukaj wśród osób które śledzisz", "lists.subheading": "Twoje listy", - "load_pending": "{count, plural, one {# nowy przedmiot} other {nowe przedmioty}}", + "load_pending": "{count, plural, one {# nowa pozycja} other {nowe pozycje}}", "loading_indicator.label": "Ładowanie…", "media_gallery.toggle_visible": "Przełącz widoczność", "missing_indicator.label": "Nie znaleziono", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "mute_modal.indefinite": "Nieokreślony", "navigation_bar.about": "O...", - "navigation_bar.apps": "Pobierz aplikację", "navigation_bar.blocks": "Zablokowani użytkownicy", "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Wyciszone słowa", "navigation_bar.follow_requests": "Prośby o śledzenie", "navigation_bar.follows_and_followers": "Śledzeni i śledzący", - "navigation_bar.info": "O nas", - "navigation_bar.keyboard_shortcuts": "Skróty klawiszowe", "navigation_bar.lists": "Listy", "navigation_bar.logout": "Wyloguj", "navigation_bar.mutes": "Wyciszeni użytkownicy", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Przypięte wpisy", "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", - "navigation_bar.search": "Search", + "navigation_bar.search": "Szukaj", "navigation_bar.security": "Bezpieczeństwo", "not_signed_in_indicator.not_signed_in": "Musisz się zalogować, aby otrzymać dostęp do tego zasobu.", "notification.admin.report": "{name} zgłosił {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Naruszenie zasad", "report_notification.open": "Otwórz raport", "search.placeholder": "Szukaj", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Zaawansowane wyszukiwanie", "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.", "search_popout.tips.hashtag": "hasztag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Nikt nie podbił jeszcze tego wpisu. Gdy ktoś to zrobi, pojawi się tutaj.", "status.redraft": "Usuń i przeredaguj", "status.remove_bookmark": "Usuń zakładkę", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Odpowiedziałeś/aś {name}", "status.reply": "Odpowiedz", "status.replyAll": "Odpowiedz na wątek", "status.report": "Zgłoś @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Rozwiń wszystkie", "status.show_original": "Pokaż oryginał", "status.translate": "Przetłumacz", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Przetłumaczono z {lang} przy użyciu {provider}", "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Przygotowywanie OCR…", "upload_modal.preview_label": "Podgląd ({ratio})", "upload_progress.label": "Wysyłanie…", + "upload_progress.processing": "Processing…", "video.close": "Zamknij film", "video.download": "Pobierz plik", "video.exit_fullscreen": "Opuść tryb pełnoekranowy", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index a4d7701ff6..db4367bcdc 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Aprovar", "follow_request.reject": "Recusar", "follow_requests.unlocked_explanation": "Apesar de seu perfil não ser trancado, {domain} exige que você revise a solicitação para te seguir destes perfis manualmente.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvo", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentação", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primeiros passos", - "getting_started.invite": "Convidar pessoas", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Configurações da conta", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ocultar notificações deste usuário?", "mute_modal.indefinite": "Indefinido", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Usuários bloqueados", "navigation_bar.bookmarks": "Salvos", "navigation_bar.community_timeline": "Linha do tempo local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palavras filtradas", "navigation_bar.follow_requests": "Seguidores pendentes", "navigation_bar.follows_and_followers": "Segue e seguidores", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Sair", "navigation_bar.mutes": "Usuários silenciados", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir relatório", "search.placeholder": "Pesquisar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato de pesquisa avançada", "search_popout.tips.full_text": "Texto simples retorna toots que você escreveu, favoritou, deu boost, ou em que foi mencionado, assim como nomes de usuário e de exibição, e hashtags correspondentes.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Prévia ({ratio})", "upload_progress.label": "Enviando...", + "upload_progress.processing": "Processing…", "video.close": "Fechar vídeo", "video.download": "Baixar", "video.exit_fullscreen": "Sair da tela cheia", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index ef8f4f0864..ea60d7622f 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -1,6 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Domínio", "about.domain_blocks.preamble": "Mastodon geralmente permite que veja e interaja com o conteúdo de utilizadores de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", @@ -39,7 +40,7 @@ "account.follows.empty": "Este utilizador ainda não segue ninguém.", "account.follows_you": "Segue-te", "account.hide_reblogs": "Esconder partilhas de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Juntou-se a", "account.languages": "Alterar idiomas subscritos", "account.link_verified_on": "A posse deste link foi verificada em {date}", "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Algo de errado aconteceu enquanto este componente era carregado.", "bundle_modal_error.retry": "Tente de novo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Visto que o Mastodon é descentralizado, pode criar uma conta noutro servidor e interagir com este na mesma.", + "closed_registrations_modal.description": "Neste momento não é possível criar uma conta em {domain}, mas lembramos que não é preciso ter uma conta especificamente em {domain} para usar o Mastodon.", + "closed_registrations_modal.find_another_server": "Procurar outro servidor", + "closed_registrations_modal.preamble": "O Mastodon é descentralizado, por isso não importa onde a sua conta é criada, continuará a poder acompanhar e interagir com qualquer um neste servidor. Pode até alojar o seu próprio servidor!", + "closed_registrations_modal.title": "Inscrevendo-se no Mastodon", "column.about": "Sobre", "column.blocks": "Utilizadores Bloqueados", "column.bookmarks": "Itens salvos", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rejeitar", "follow_requests.unlocked_explanation": "Apesar de a sua não ser privada, a administração de {domain} pensa que poderá querer rever manualmente os pedidos de seguimento dessas contas.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvo", - "getting_started.directory": "Diretório", - "getting_started.documentation": "Documentação", - "getting_started.free_software_notice": "O Mastodon é um software gratuito, de código aberto. Pode ver o código-fonte, contribuir ou reportar problemas em {repository}.", "getting_started.heading": "Primeiros passos", - "getting_started.invite": "Convidar pessoas", - "getting_started.privacy_policy": "Política de Privacidade", - "getting_started.security": "Segurança", - "getting_started.what_is_mastodon": "Sobre Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.none": "sem {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Esconder notificações deste utilizador?", "mute_modal.indefinite": "Indefinidamente", "navigation_bar.about": "Sobre", - "navigation_bar.apps": "Obtém a aplicação", "navigation_bar.blocks": "Utilizadores bloqueados", "navigation_bar.bookmarks": "Itens salvos", "navigation_bar.community_timeline": "Cronologia local", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Palavras silenciadas", "navigation_bar.follow_requests": "Seguidores pendentes", "navigation_bar.follows_and_followers": "Seguindo e seguidores", - "navigation_bar.info": "Sobre", - "navigation_bar.keyboard_shortcuts": "Atalhos de teclado", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Sair", "navigation_bar.mutes": "Utilizadores silenciados", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Toots afixados", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Pesquisar", "navigation_bar.security": "Segurança", "not_signed_in_indicator.not_signed_in": "Necessita de iniciar sessão para utilizar esta funcionalidade.", "notification.admin.report": "{name} denunciou {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir denúncia", "search.placeholder": "Pesquisar", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formato avançado de pesquisa", "search_popout.tips.full_text": "Texto simples devolve publicações que escreveu, marcou como favorita, partilhou ou em que foi mencionado, tal como nomes de utilizador, alcunhas e hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Ainda ninguém fez boost a este toot. Quando alguém o fizer, ele irá aparecer aqui.", "status.redraft": "Apagar & reescrever", "status.remove_bookmark": "Remover dos itens salvos", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondeu a {name}", "status.reply": "Responder", "status.replyAll": "Responder à conversa", "status.report": "Denunciar @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Mostrar mais para todas", "status.show_original": "Mostrar original", "status.translate": "Traduzir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traduzido do {lang} usando {provider}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Deixar de silenciar esta conversa", "status.unpin": "Não fixar no perfil", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "A preparar OCR…", "upload_modal.preview_label": "Pré-visualizar ({ratio})", "upload_progress.label": "A enviar...", + "upload_progress.processing": "Processing…", "video.close": "Fechar vídeo", "video.download": "Descarregar ficheiro", "video.exit_fullscreen": "Sair de full screen", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 06f28fb498..2ccd7f6c55 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "Servere moderate", "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Motiv", + "about.domain_blocks.domain": "Domeniu", + "about.domain_blocks.preamble": "Mastodon îți permite în general să vezi conținut de la și să interacționezi cu utilizatori de pe oricare server în fediverse. Acestea sunt excepțiile care au fost făcute pe acest server.", + "about.domain_blocks.severity": "Severitate", + "about.domain_blocks.silenced.explanation": "În general, nu vei vedea profiluri și conținut de pe acest server, cu excepția cazului în care îl cauți în mod explicit sau optezi pentru el prin urmărire.", + "about.domain_blocks.silenced.title": "Limitat", + "about.domain_blocks.suspended.explanation": "Nici o informație de la acest server nu va fi procesată, stocată sau schimbată, făcând imposibilă orice interacțiune sau comunicare cu utilizatorii de pe acest server.", + "about.domain_blocks.suspended.title": "Suspendat", + "about.not_available": "Această informație nu a fost pusă la dispoziție pe acest server.", + "about.powered_by": "Media socială descentralizată furnizată de {mastodon}", + "about.rules": "Reguli server", "account.account_note_header": "Notă", "account.add_or_remove_from_list": "Adaugă sau elimină din liste", "account.badges.bot": "Robot", @@ -20,27 +21,27 @@ "account.block_domain": "Blochează domeniul {domain}", "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Vezi mai multe pe profilul original", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Retrage cererea de urmărire", "account.direct": "Trimite-i un mesaj direct lui @{name}", "account.disable_notifications": "Nu îmi mai trimite notificări când postează @{name}", "account.domain_blocked": "Domeniu blocat", "account.edit_profile": "Modifică profilul", "account.enable_notifications": "Trimite-mi o notificare când postează @{name}", "account.endorse": "Promovează pe profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Ultima postare pe {date}", + "account.featured_tags.last_status_never": "Fără postări", + "account.featured_tags.title": "Hashtag-uri recomandate de {name}", "account.follow": "Abonează-te", "account.followers": "Abonați", "account.followers.empty": "Acest utilizator încă nu are abonați.", "account.followers_counter": "{count, plural, one {{counter} Abonat} few {{counter} Abonați} other {{counter} Abonați}}", - "account.following": "Following", + "account.following": "Urmăriți", "account.following_counter": "{count, plural, one {{counter} Abonament} few {{counter} Abonamente} other {{counter} Abonamente}}", "account.follows.empty": "Momentan acest utilizator nu are niciun abonament.", "account.follows_you": "Este abonat la tine", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Înscris", + "account.languages": "Schimbă limbile abonate", "account.link_verified_on": "Proprietatea acestui link a fost verificată pe {date}", "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.", "account.media": "Media", @@ -58,7 +59,7 @@ "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", "account.unblock": "Deblochează pe @{name}", "account.unblock_domain": "Deblochează domeniul {domain}", - "account.unblock_short": "Unblock", + "account.unblock_short": "Deblochează", "account.unendorse": "Nu promova pe profil", "account.unfollow": "Nu mai urmări", "account.unmute": "Nu mai ignora pe @{name}", @@ -258,15 +259,15 @@ "follow_request.authorize": "Acceptă", "follow_request.reject": "Respinge", "follow_requests.unlocked_explanation": "Chiar dacă contul tău nu este blocat, personalul {domain} a considerat că ai putea prefera să consulți manual cererile de abonare de la aceste conturi.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Salvat", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentație", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Primii pași", - "getting_started.invite": "Invită persoane", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Setări cont", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "și {additional}", "hashtag.column_header.tag_mode.any": "sau {additional}", "hashtag.column_header.tag_mode.none": "fără {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ascunde notificările de la acest utilizator?", "mute_modal.indefinite": "Nedeterminat", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Utilizatori blocați", "navigation_bar.bookmarks": "Marcaje", "navigation_bar.community_timeline": "Cronologie locală", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Cuvinte ignorate", "navigation_bar.follow_requests": "Cereri de abonare", "navigation_bar.follows_and_followers": "Abonamente și abonați", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Taste rapide", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Deconectare", "navigation_bar.mutes": "Utilizatori ignorați", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Caută", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formate pentru căutare avansată", "search_popout.tips.full_text": "Textele simple returnează postări pe care le-ai scris, favorizat, impulsionat, sau în care sunt menționate, deasemenea și utilizatorii sau hashtag-urile care se potrivesc.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Se pregătește OCR…", "upload_modal.preview_label": "Previzualizare ({ratio})", "upload_progress.label": "Se încarcă...", + "upload_progress.processing": "Processing…", "video.close": "Închide video", "video.download": "Descarcă fișierul", "video.exit_fullscreen": "Ieși din modul ecran complet", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 2ed3d7b457..985a6bdd21 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -1,6 +1,7 @@ { "about.blocks": "Модерируемые серверы", "about.contact": "Контакты:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домен", "about.domain_blocks.preamble": "Mastodon обычно позволяет просматривать содержимое и взаимодействовать с другими пользователями любых серверов в Федиверсе. Вот исключения, сделанные конкретно для этого сервера.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Авторизовать", "follow_request.reject": "Отказать", "follow_requests.unlocked_explanation": "Этот запрос отправлен с учётной записи, для которой администрация {domain} включила ручную проверку подписок.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Сохранено", - "getting_started.directory": "Каталог", - "getting_started.documentation": "Документация", - "getting_started.free_software_notice": "Mastodon — это бесплатное программное обеспечение с открытым исходным кодом. Вы можете посмотреть исходный код, внести свой вклад или сообщить о проблемах в {repository}.", "getting_started.heading": "Начать", - "getting_started.invite": "Пригласить людей", - "getting_started.privacy_policy": "Политика конфиденциальности", - "getting_started.security": "Настройки учётной записи", - "getting_started.what_is_mastodon": "О Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Скрыть уведомления от этого пользователя?", "mute_modal.indefinite": "Не определена", "navigation_bar.about": "About", - "navigation_bar.apps": "Скачать приложение", "navigation_bar.blocks": "Список блокировки", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальная лента", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Игнорируемые слова", "navigation_bar.follow_requests": "Запросы на подписку", "navigation_bar.follows_and_followers": "Подписки и подписчики", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Сочетания клавиш", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Выйти", "navigation_bar.mutes": "Игнорируемые пользователи", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Нарушение правил", "report_notification.open": "Подать жалобу", "search.placeholder": "Поиск", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Продвинутый формат поиска", "search_popout.tips.full_text": "Поиск по простому тексту отобразит посты, которые вы написали, добавили в избранное, продвинули или в которых были упомянуты, а также подходящие имена пользователей и хэштеги.", "search_popout.tips.hashtag": "хэштег", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Подготовка распознования…", "upload_modal.preview_label": "Предпросмотр ({ratio})", "upload_progress.label": "Загрузка...", + "upload_progress.processing": "Processing…", "video.close": "Закрыть видео", "video.download": "Загрузить файл", "video.exit_fullscreen": "Покинуть полноэкранный режим", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 691011e7ef..b53a0154fc 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 393d7144cc..80879eac07 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autoriza", "follow_request.reject": "Refuda", "follow_requests.unlocked_explanation": "Fintzas si su contu tuo no est blocadu, su personale de {domain} at pensadu chi forsis bolias revisionare a manu is rechestas de custos contos.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Sarvadu", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentatzione", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Comente cumintzare", - "getting_started.invite": "Invita gente", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Cunfiguratziones de su contu", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sena {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?", "mute_modal.indefinite": "Indefinida", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Persones blocadas", "navigation_bar.bookmarks": "Sinnalibros", "navigation_bar.community_timeline": "Lìnia de tempus locale", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Faeddos a sa muda", "navigation_bar.follow_requests": "Rechestas de sighidura", "navigation_bar.follows_and_followers": "Gente chi sighis e sighiduras", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Teclas de atzessu diretu", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Essi", "navigation_bar.mutes": "Persones a sa muda", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Chirca", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Formadu de chirca avantzada", "search_popout.tips.full_text": "Testu sèmplitze pro agatare publicatziones chi as iscritu, marcadu comente a preferidas, cumpartzidu o chi t'ant mentovadu, e fintzas nòmines, nòmines de utente e etichetas.", "search_popout.tips.hashtag": "eticheta", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Ammaniende s'OCR…", "upload_modal.preview_label": "Previsualiza ({ratio})", "upload_progress.label": "Carrighende...", + "upload_progress.processing": "Processing…", "video.close": "Serra su vìdeu", "video.download": "Iscàrriga archìviu", "video.exit_fullscreen": "Essi de ischermu in mannària prena", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 56ee9c17a4..8d0bccd164 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "අවසරලත්", "follow_request.reject": "ප්‍රතික්‍ෂේප", "follow_requests.unlocked_explanation": "ඔබගේ ගිණුම අගුලු දමා නොතිබුණද, {domain} කාර්ය මණ්ඩලය සිතුවේ ඔබට මෙම ගිණුම් වලින් ලැබෙන ඉල්ලීම් හස්තීයව සමාලෝචනය කිරීමට අවශ්‍ය විය හැකි බවයි.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "සුරැකිණි", - "getting_started.directory": "නාමාවලිය", - "getting_started.documentation": "ප්‍රලේඛනය", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "පටන් ගන්න", - "getting_started.invite": "මිනිසුන්ට ආරාධනය", - "getting_started.privacy_policy": "රහස්‍යතා ප්‍රතිපත්තිය", - "getting_started.security": "ගිණුමේ සැකසුම්", - "getting_started.what_is_mastodon": "මාස්ටඩන් ගැන", "hashtag.column_header.tag_mode.all": "සහ {additional}", "hashtag.column_header.tag_mode.any": "හෝ {additional}", "hashtag.column_header.tag_mode.none": "{additional}නොමැතිව", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "මෙම පරිශීලකයාගෙන් දැනුම්දීම් සඟවන්නද?", "mute_modal.indefinite": "අවිනිශ්චිත", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "අවහිර කළ අය", "navigation_bar.bookmarks": "පොත්යොමු", "navigation_bar.community_timeline": "දේශීය කාලරේඛාව", @@ -375,8 +375,6 @@ "navigation_bar.filters": "නිහඬ කළ වචන", "navigation_bar.follow_requests": "අනුගමන ඉල්ලීම්", "navigation_bar.follows_and_followers": "අනුගමනය හා අනුගාමිකයින්", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "උණු යතුරු", "navigation_bar.lists": "ලේඛන", "navigation_bar.logout": "නික්මෙන්න", "navigation_bar.mutes": "නිහඬ කළ අය", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "නීතිය කඩ කිරීම", "report_notification.open": "විවෘත වාර්තාව", "search.placeholder": "සොයන්න", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "උසස් සෙවුම් ආකෘතිය", "search_popout.tips.full_text": "සරල පෙළ ඔබ ලියා ඇති, ප්‍රිය කළ, වැඩි කළ හෝ සඳහන් කර ඇති තත්ත්වයන් මෙන්ම ගැළපෙන පරිශීලක නාම, සංදර්ශක නම් සහ හැෂ් ටැග් ලබා දෙයි.", "search_popout.tips.hashtag": "හෑෂ් ටැගය", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR…සූදානම් කරමින්", "upload_modal.preview_label": "පෙරදසුන ({ratio})", "upload_progress.label": "උඩුගත වෙමින්...", + "upload_progress.processing": "Processing…", "video.close": "දෘශ්‍යකය වසන්න", "video.download": "ගොනුව බාගන්න", "video.exit_fullscreen": "පූර්ණ තිරයෙන් පිටවන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 1a96929543..8193153995 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Povoľ prístup", "follow_request.reject": "Odmietni", "follow_requests.unlocked_explanation": "Síce Váš učet nie je uzamknutý, ale {domain} tím si myslel že môžete chcieť skontrolovať žiadosti o sledovanie z týchto účtov manuálne.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Uložené", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentácia", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Začni tu", - "getting_started.invite": "Pozvi ľudí", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Zabezpečenie", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "alebo {additional}", "hashtag.column_header.tag_mode.none": "bez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skry oznámenia od tohto používateľa?", "mute_modal.indefinite": "Bez obmedzenia", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokovaní užívatelia", "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Miestna časová os", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Filtrované slová", "navigation_bar.follow_requests": "Žiadosti o sledovanie", "navigation_bar.follows_and_followers": "Sledovania a následovatelia", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Klávesové skratky", "navigation_bar.lists": "Zoznamy", "navigation_bar.logout": "Odhlás sa", "navigation_bar.mutes": "Stíšení užívatelia", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Hľadaj", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Pokročilé vyhľadávanie", "search_popout.tips.full_text": "Vráti jednoduchý textový výpis príspevkov ktoré si napísal/a, ktoré si obľúbil/a, povýšil/a, alebo aj tých, v ktorých si bol/a spomenutý/á, a potom všetky zadaniu odpovedajúce prezývky, mená a haštagy.", "search_popout.tips.hashtag": "haštag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Pripravujem OCR…", "upload_modal.preview_label": "Náhľad ({ratio})", "upload_progress.label": "Nahráva sa...", + "upload_progress.processing": "Processing…", "video.close": "Zavri video", "video.download": "Stiahni súbor", "video.exit_fullscreen": "Vypni zobrazenie na celú obrazovku", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 2b8ed76260..783da79326 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderirani strežniki", "about.contact": "Stik:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Razlog", "about.domain_blocks.domain": "Domena", "about.domain_blocks.preamble": "Mastodon vam splošno omogoča ogled vsebin in interakcijo z uporabniki iz vseh drugih strežnikov v fediverzumu. To so izjeme, opravljene na tem strežniku.", @@ -39,7 +40,7 @@ "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Vam sledi", "account.hide_reblogs": "Skrij izpostavitve od @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Pridružil/a", "account.languages": "Spremeni naročene jezike", "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}", "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Zapri", "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", "bundle_modal_error.retry": "Poskusi ponovno", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ker je Mastodon decentraliziran, lahko ustvarite račun na drugem strežniku in ste še vedno v interakciji s tem.", + "closed_registrations_modal.description": "Odpiranje računa na {domain} trenutno ni možno, upoštevajte pa, da ne potrebujete računa prav na {domain}, da bi uporabljali Mastodon.", + "closed_registrations_modal.find_another_server": "Najdi drug strežnik", + "closed_registrations_modal.preamble": "Mastodon je decentraliziran, kar pomeni, da ni pomembno, kje ustvarite svoj račun; od koder koli je omogočeno sledenje in interakcija z vsemi s tega strežnika. Strežnik lahko gostite tudi sami!", + "closed_registrations_modal.title": "Registracija v Mastodon", "column.about": "O programu", "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", @@ -258,15 +259,15 @@ "follow_request.authorize": "Overi", "follow_request.reject": "Zavrni", "follow_requests.unlocked_explanation": "Čeprav vaš račun ni zaklenjen, zaposleni pri {domain} menijo, da bi morda želeli pregledati zahteve za sledenje teh računov ročno.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Shranjeno", - "getting_started.directory": "Adresár", - "getting_started.documentation": "Dokumentacija", - "getting_started.free_software_notice": "Mastodon je brezplačno, odprtokodno programje. V {repository} si lahko ogledate izvorno kodo, prispevate svojo kodo in poročate o težavah.", "getting_started.heading": "Kako začeti", - "getting_started.invite": "Povabite osebe", - "getting_started.privacy_policy": "Pravilnik o zasebnosti", - "getting_started.security": "Varnost", - "getting_started.what_is_mastodon": "O programu Mastodon", "hashtag.column_header.tag_mode.all": "in {additional}", "hashtag.column_header.tag_mode.any": "ali {additional}", "hashtag.column_header.tag_mode.none": "brez {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Skrij obvestila tega uporabnika?", "mute_modal.indefinite": "Nedoločeno", "navigation_bar.about": "O programu", - "navigation_bar.apps": "Prenesite aplikacijo", "navigation_bar.blocks": "Blokirani uporabniki", "navigation_bar.bookmarks": "Zaznamki", "navigation_bar.community_timeline": "Lokalna časovnica", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Utišane besede", "navigation_bar.follow_requests": "Prošnje za sledenje", "navigation_bar.follows_and_followers": "Sledenja in sledilci", - "navigation_bar.info": "O programu", - "navigation_bar.keyboard_shortcuts": "Hitre tipke", "navigation_bar.lists": "Seznami", "navigation_bar.logout": "Odjava", "navigation_bar.mutes": "Utišani uporabniki", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Pripete objave", "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", - "navigation_bar.search": "Search", + "navigation_bar.search": "Iskanje", "navigation_bar.security": "Varnost", "not_signed_in_indicator.not_signed_in": "Za dostop do tega vira se morate prijaviti.", "notification.admin.report": "{name} je prijavil/a {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Kršitev pravila", "report_notification.open": "Odpri prijavo", "search.placeholder": "Iskanje", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Napredna oblika iskanja", "search_popout.tips.full_text": "Enostavno besedilo vrne objave, ki ste jih napisali, vzljubili, izpostavili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.", "search_popout.tips.hashtag": "ključnik", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Nihče še ni izpostavil te objave. Ko se bo to zgodilo, se bodo pojavile tukaj.", "status.redraft": "Izbriši in preoblikuj", "status.remove_bookmark": "Odstrani zaznamek", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Odgovoril/a {name}", "status.reply": "Odgovori", "status.replyAll": "Odgovori na objavo", "status.report": "Prijavi @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Prikaži več za vse", "status.show_original": "Pokaži izvirnik", "status.translate": "Prevedi", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Prevedeno iz {lang} s pomočjo {provider}", "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Priprava optične prepoznave znakov (OCR) ...", "upload_modal.preview_label": "Predogled ({ratio})", "upload_progress.label": "Pošiljanje...", + "upload_progress.processing": "Processing…", "video.close": "Zapri video", "video.download": "Prenesi datoteko", "video.exit_fullscreen": "Izhod iz celozaslonskega načina", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 3239d7cf44..f82b49b7f3 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -1,6 +1,7 @@ { "about.blocks": "Shërbyes të moderuar", "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Arsye", "about.domain_blocks.domain": "Përkatësi", "about.domain_blocks.preamble": "Mastodon-i ju lë përgjithësisht të shihni lëndë prej përdoruesish dhe të ndërveproni me ta nga cilido shërbyes tjetër qofshin në fedivers. Ka përjashtime që janë bërë në këtë shërbyes të dhënë.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Autorizoje", "follow_request.reject": "Hidhe tej", "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "U ruajt", - "getting_started.directory": "Drejtori", - "getting_started.documentation": "Dokumentim", - "getting_started.free_software_notice": "Mastodon-i është software i lirë dhe me burim të hapët. Te {repository} mund t’i shihni kodin burim, të jepni ndihmesë ose të njoftoni çështje.", "getting_started.heading": "Si t’ia fillohet", - "getting_started.invite": "Ftoni njerëz", - "getting_started.privacy_policy": "Rregulla Privatësie", - "getting_started.security": "Rregullime llogarie", - "getting_started.what_is_mastodon": "Mbi Mastodon-in", "hashtag.column_header.tag_mode.all": "dhe {additional}", "hashtag.column_header.tag_mode.any": "ose {additional}", "hashtag.column_header.tag_mode.none": "pa {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?", "mute_modal.indefinite": "E pacaktuar", "navigation_bar.about": "Mbi", - "navigation_bar.apps": "Merreni aplikacionin", "navigation_bar.blocks": "Përdorues të bllokuar", "navigation_bar.bookmarks": "Faqerojtës", "navigation_bar.community_timeline": "Rrjedhë kohore vendore", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Fjalë të heshtuara", "navigation_bar.follow_requests": "Kërkesa për ndjekje", "navigation_bar.follows_and_followers": "Ndjekje dhe ndjekës", - "navigation_bar.info": "Mbi", - "navigation_bar.keyboard_shortcuts": "Taste përkatës", "navigation_bar.lists": "Lista", "navigation_bar.logout": "Dalje", "navigation_bar.mutes": "Përdorues të heshtuar", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Cenim rregullash", "report_notification.open": "Hape raportimin", "search.placeholder": "Kërkoni", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Format kërkimi të mëtejshëm", "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me mesazhe që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtag-ë që kanë përputhje me termin e kërkimit.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Po përgatitet OCR-ja…", "upload_modal.preview_label": "Paraparje ({ratio})", "upload_progress.label": "Po ngarkohet…", + "upload_progress.processing": "Processing…", "video.close": "Mbylle videon", "video.download": "Shkarkoje kartelën", "video.exit_fullscreen": "Dil nga mënyra Sa Krejt Ekrani", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 843fbcb114..8df13a0f15 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Odobri", "follow_request.reject": "Odbij", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Da počnete", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Sakrij obaveštenja od ovog korisnika?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Lokalna lajna", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Zahtevi za praćenje", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Prečice na tastaturi", "navigation_bar.lists": "Liste", "navigation_bar.logout": "Odjava", "navigation_bar.mutes": "Ućutkani korisnici", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Pretraga", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Napredni format pretrage", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hešteg", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Otpremam...", + "upload_progress.processing": "Processing…", "video.close": "Zatvori video", "video.download": "Download file", "video.exit_fullscreen": "Napusti ceo ekran", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 4c775626a2..4b80f15217 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Одобри", "follow_request.reject": "Одбиј", "follow_requests.unlocked_explanation": "Иако ваш налог није закључан, особље {domain} је помислило да бисте можда желели ручно да прегледате захтеве за праћење са ових налога.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Сачувано", - "getting_started.directory": "Directory", - "getting_started.documentation": "Документација", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Да почнете", - "getting_started.invite": "Позовите људе", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Безбедност", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Сакриј обавештења од овог корисника?", "mute_modal.indefinite": "Неодређен", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Блокирани корисници", "navigation_bar.bookmarks": "Маркери", "navigation_bar.community_timeline": "Локална временска линија", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Пригушене речи", "navigation_bar.follow_requests": "Захтеви за праћење", "navigation_bar.follows_and_followers": "Праћења и пратиоци", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Пречице на тастатури", "navigation_bar.lists": "Листе", "navigation_bar.logout": "Одјава", "navigation_bar.mutes": "Ућуткани корисници", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Претрага", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Напредни формат претраге", "search_popout.tips.full_text": "Једноставан текст враћа статусе које сте написали, фаворизовали, подржали или били поменути, као и подударање корисничких имена, приказаних имена, и тараба.", "search_popout.tips.hashtag": "хештег", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Преглед ({ratio})", "upload_progress.label": "Отпремам...", + "upload_progress.processing": "Processing…", "video.close": "Затвори видео", "video.download": "Преузимање датотеке", "video.exit_fullscreen": "Напусти цео екран", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 48c2a48ad7..91a4a07961 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -1,17 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.blocks": "Modererade servrar", + "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.domain_blocks.comment": "Skäl", + "about.domain_blocks.domain": "Domän", + "about.domain_blocks.preamble": "Mastodon låter dig i allmänhet visa innehåll från och interagera med användare från någon annan server i fediverse. Dessa är de undantag som har gjorts på just denna server.", + "about.domain_blocks.severity": "Allvarlighetsgrad", + "about.domain_blocks.silenced.explanation": "Du kommer i allmänhet inte att se profiler och innehåll från denna server, om du inte uttryckligen slå upp eller välja in det genom att följa.", + "about.domain_blocks.silenced.title": "Begränsat", + "about.domain_blocks.suspended.explanation": "Ingen data från denna server kommer bearbetas, lagras eller bytas ut vilket omöjliggör kommunikation med användare från denna serverdator.", "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.not_available": "Denna information har inte gjorts tillgänglig på denna server.", + "about.powered_by": "Decentraliserade sociala medier drivna av {mastodon}", + "about.rules": "Serverregler", "account.account_note_header": "Anteckning", "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor", "account.badges.bot": "Robot", @@ -27,8 +28,8 @@ "account.edit_profile": "Redigera profil", "account.enable_notifications": "Meddela mig när @{name} tutar", "account.endorse": "Visa på profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Senaste inlägg den {date}", + "account.featured_tags.last_status_never": "Inga inlägg", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Följ", "account.followers": "Följare", @@ -40,7 +41,7 @@ "account.follows_you": "Följer dig", "account.hide_reblogs": "Dölj knuffar från @{name}", "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.languages": "Ändra prenumererade språk", "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", "account.media": "Media", @@ -258,15 +259,15 @@ "follow_request.authorize": "Godkänn", "follow_request.reject": "Avvisa", "follow_requests.unlocked_explanation": "Även om ditt konto inte är låst tror {domain} personalen att du kanske vill granska dessa följares förfrågningar manuellt.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Sparad", - "getting_started.directory": "Directory", - "getting_started.documentation": "Dokumentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Kom igång", - "getting_started.invite": "Skicka inbjudningar", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Kontoinställningar", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "och {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -291,7 +292,7 @@ "interaction_modal.on_this_server": "On this server", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.favourite": "Favorisera {name}'s inlägg", "interaction_modal.title.follow": "Follow {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?", "mute_modal.indefinite": "Obestämt", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blockerade användare", "navigation_bar.bookmarks": "Bokmärken", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Tystade ord", "navigation_bar.follow_requests": "Följförfrågningar", "navigation_bar.follows_and_followers": "Följer och följare", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Kortkommandon", "navigation_bar.lists": "Listor", "navigation_bar.logout": "Logga ut", "navigation_bar.mutes": "Tystade användare", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Sök", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Avancerat sökformat", "search_popout.tips.full_text": "Enkel text returnerar statusar där du har skrivit, favoriserat, knuffat eller nämnts samt med matchande användarnamn, visningsnamn och hashtags.", "search_popout.tips.hashtag": "hash-tagg", @@ -531,12 +530,12 @@ "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "active users", "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.introduction": "{domain} är en del av det decentraliserade sociala nätverket som drivs av {mastodon}.", + "server_banner.learn_more": "Lär dig mer", + "server_banner.server_stats": "Serverstatistik:", + "sign_in_banner.create_account": "Skapa konto", + "sign_in_banner.sign_in": "Logga in", + "sign_in_banner.text": "Logga in för att följa profiler eller hashtaggar, favorisera, dela och svara på inlägg eller interagera från ditt konto på en annan server.", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", "status.admin_status": "Öppna denna status i modereringsgränssnittet", "status.block": "Blockera @{name}", @@ -552,7 +551,7 @@ "status.edited_x_times": "Redigerad {count, plural, one {{count} gång} other {{count} gånger}}", "status.embed": "Bädda in", "status.favourite": "Favorit", - "status.filter": "Filter this post", + "status.filter": "Filtrera detta inlägg", "status.filtered": "Filtrerat", "status.hide": "Hide toot", "status.history.created": "{name} skapade {date}", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Förbereder OCR…", "upload_modal.preview_label": "Förhandstitt ({ratio})", "upload_progress.label": "Laddar upp...", + "upload_progress.processing": "Processing…", "video.close": "Stäng video", "video.download": "Ladda ner fil", "video.exit_fullscreen": "Stäng helskärm", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index cc0fa70690..dbc5685989 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 8155200bb8..bbfd1da793 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "அனுமதியளி", "follow_request.reject": "நிராகரி", "follow_requests.unlocked_explanation": "உங்கள் கணக்கு பூட்டப்படவில்லை என்றாலும், இந்தக் கணக்குகளிலிருந்து உங்களைப் பின்தொடர விரும்பும் கோரிக்கைகளை நீங்கள் பரீசீலிப்பது நலம் என்று {domain} ஊழியர் எண்ணுகிறார்.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "சேமிக்கப்பட்டது", - "getting_started.directory": "Directory", - "getting_started.documentation": "ஆவணங்கள்", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "முதன்மைப் பக்கம்", - "getting_started.invite": "நண்பர்களை அழைக்க", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "கணக்கு அமைப்புகள்", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "மற்றும் {additional}", "hashtag.column_header.tag_mode.any": "அல்லது {additional}", "hashtag.column_header.tag_mode.none": "{additional} தவிர்த்து", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "இந்த பயனரின் அறிவிப்புகளை மறைக்கவா?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "தடுக்கப்பட்ட பயனர்கள்", "navigation_bar.bookmarks": "அடையாளக்குறிகள்", "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு", @@ -375,8 +375,6 @@ "navigation_bar.filters": "முடக்கப்பட்ட வார்த்தைகள்", "navigation_bar.follow_requests": "கோரிக்கைகளை பின்பற்றவும்", "navigation_bar.follows_and_followers": "பின்பற்றல்கள் மற்றும் பின்பற்றுபவர்கள்", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "சுருக்குவிசைகள்", "navigation_bar.lists": "குதிரை வீர்ர்கள்", "navigation_bar.logout": "விடு பதிகை", "navigation_bar.mutes": "முடக்கப்பட்ட பயனர்கள்", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "தேடு", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "மேம்பட்ட தேடல் வடிவம்", "search_popout.tips.full_text": "எளிமையான உரை நீங்கள் எழுதப்பட்ட, புகழ், அதிகரித்தது, அல்லது குறிப்பிட்டுள்ள, அதே போல் பயனர் பெயர்கள், காட்சி பெயர்கள், மற்றும் ஹேஸ்டேகைகளை கொண்டுள்ளது என்று நிலைகளை கொடுக்கிறது.", "search_popout.tips.hashtag": "ஹேஸ்டேக்", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "முன்னோட்டம் ({ratio})", "upload_progress.label": "ஏற்றுகிறது ...", + "upload_progress.processing": "Processing…", "video.close": "வீடியோவை மூடு", "video.download": "கோப்பைப் பதிவிறக்கவும்", "video.exit_fullscreen": "முழு திரையில் இருந்து வெளியேறவும்", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 99d998ef64..91a529b9da 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 1815d4e3e0..e038482cdb 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "అనుమతించు", "follow_request.reject": "తిరస్కరించు", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "డాక్యుమెంటేషన్", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "మొదలుపెడదాం", - "getting_started.invite": "వ్యక్తులను ఆహ్వానించండి", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "భద్రత", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "మరియు {additional}", "hashtag.column_header.tag_mode.any": "లేదా {additional}", "hashtag.column_header.tag_mode.none": "{additional} లేకుండా", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "ఈ వినియోగదారు నుండి నోటిఫికేషన్లను దాచాలా?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "స్థానిక కాలక్రమం", @@ -375,8 +375,6 @@ "navigation_bar.filters": "మ్యూట్ చేయబడిన పదాలు", "navigation_bar.follow_requests": "అనుసరించడానికి అభ్యర్ధనలు", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "హాట్ కీలు", "navigation_bar.lists": "జాబితాలు", "navigation_bar.logout": "లాగ్ అవుట్ చేయండి", "navigation_bar.mutes": "మ్యూట్ చేయబడిన వినియోగదారులు", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "శోధన", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "అధునాతన శోధన ఆకృతి", "search_popout.tips.full_text": "సాధారణ వచనం మీరు వ్రాసిన, ఇష్టపడే, పెంచబడిన లేదా పేర్కొనబడిన, అలాగే యూజర్పేర్లు, ప్రదర్శన పేర్లు, మరియు హ్యాష్ట్యాగ్లను నమోదు చేసిన హోదాలను అందిస్తుంది.", "search_popout.tips.hashtag": "హాష్ ట్యాగ్", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "అప్లోడ్ అవుతోంది...", + "upload_progress.processing": "Processing…", "video.close": "వీడియోని మూసివేయి", "video.download": "Download file", "video.exit_fullscreen": "పూర్తి స్క్రీన్ నుండి నిష్క్రమించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 66f58d6ed5..174d74d20a 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -1,6 +1,7 @@ { "about.blocks": "เซิร์ฟเวอร์ที่มีการควบคุม", "about.contact": "ติดต่อ:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "เหตุผล", "about.domain_blocks.domain": "โดเมน", "about.domain_blocks.preamble": "โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ", @@ -258,15 +259,15 @@ "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "บันทึกแล้ว", - "getting_started.directory": "ไดเรกทอรี", - "getting_started.documentation": "เอกสารประกอบ", - "getting_started.free_software_notice": "Mastodon เป็นซอฟต์แวร์เสรีและโอเพนซอร์ส คุณสามารถดูโค้ดต้นฉบับ มีส่วนร่วม หรือรายงานปัญหาได้ที่ {repository}", "getting_started.heading": "เริ่มต้นใช้งาน", - "getting_started.invite": "เชิญผู้คน", - "getting_started.privacy_policy": "นโยบายความเป็นส่วนตัว", - "getting_started.security": "การตั้งค่าบัญชี", - "getting_started.what_is_mastodon": "เกี่ยวกับ Mastodon", "hashtag.column_header.tag_mode.all": "และ {additional}", "hashtag.column_header.tag_mode.any": "หรือ {additional}", "hashtag.column_header.tag_mode.none": "โดยไม่มี {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "ซ่อนการแจ้งเตือนจากผู้ใช้นี้?", "mute_modal.indefinite": "ไม่มีกำหนด", "navigation_bar.about": "เกี่ยวกับ", - "navigation_bar.apps": "รับแอป", "navigation_bar.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "navigation_bar.bookmarks": "ที่คั่นหน้า", "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์", @@ -375,8 +375,6 @@ "navigation_bar.filters": "คำที่ซ่อนอยู่", "navigation_bar.follow_requests": "คำขอติดตาม", "navigation_bar.follows_and_followers": "การติดตามและผู้ติดตาม", - "navigation_bar.info": "เกี่ยวกับ", - "navigation_bar.keyboard_shortcuts": "ปุ่มลัด", "navigation_bar.lists": "รายการ", "navigation_bar.logout": "ออกจากระบบ", "navigation_bar.mutes": "ผู้ใช้ที่ซ่อนอยู่", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "การละเมิดกฎ", "report_notification.open": "รายงานที่เปิด", "search.placeholder": "ค้นหา", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "รูปแบบการค้นหาขั้นสูง", "search_popout.tips.full_text": "ข้อความแบบง่ายส่งคืนโพสต์ที่คุณได้เขียน ชื่นชอบ ดัน หรือได้รับการกล่าวถึง ตลอดจนชื่อผู้ใช้, ชื่อที่แสดง และแฮชแท็กที่ตรงกัน", "search_popout.tips.hashtag": "แฮชแท็ก", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "กำลังเตรียม OCR…", "upload_modal.preview_label": "ตัวอย่าง ({ratio})", "upload_progress.label": "กำลังอัปโหลด...", + "upload_progress.processing": "Processing…", "video.close": "ปิดวิดีโอ", "video.download": "ดาวน์โหลดไฟล์", "video.exit_fullscreen": "ออกจากเต็มหน้าจอ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 4c1e7c0667..934a4f6d0e 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -1,6 +1,7 @@ { "about.blocks": "Denetlenen sunucular", "about.contact": "İletişim:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Gerekçe", "about.domain_blocks.domain": "Alan adı", "about.domain_blocks.preamble": "Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır.", @@ -39,7 +40,7 @@ "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi takip etmiyor.", "account.follows_you": "Seni takip ediyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", - "account.joined_short": "Joined", + "account.joined_short": "Katıldı", "account.languages": "Abone olunan dilleri değiştir", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Kapat", "bundle_modal_error.message": "Bu bileşen yüklenirken bir şeyler ters gitti.", "bundle_modal_error.retry": "Tekrar deneyin", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Mastodon ademi merkeziyetçi olduğu için, başka bir sunucuda hesap oluşturabilir ve bu sunuyla etkileşebilirsiniz.", + "closed_registrations_modal.description": "{domain} adresinde hesap oluşturmak şu an mümkün değil ancak unutmayın ki Mastodon kullanmak için özellikle {domain} adresinde hesap oluşturmanız gerekmez.", + "closed_registrations_modal.find_another_server": "Başka sunucu bul", + "closed_registrations_modal.preamble": "Mastodon ademi merkeziyetçi, bu yüzden hesabınızı nerede oluşturursanız oluşturun, bu sunucudaki herhangi birini takip edebilecek veya onunla etkileşebileceksiniz. Kendiniz bile sunabilirsiniz!", + "closed_registrations_modal.title": "Mastodon'a kayıt olmak", "column.about": "Hakkında", "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İmleri", @@ -258,15 +259,15 @@ "follow_request.authorize": "İzin Ver", "follow_request.reject": "Reddet", "follow_requests.unlocked_explanation": "Hesabınız kilitli olmasa bile, {domain} personeli bu hesaplardan gelen takip isteklerini gözden geçirmek isteyebileceğinizi düşündü.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Kaydedildi", - "getting_started.directory": "Dizin", - "getting_started.documentation": "Belgeler", - "getting_started.free_software_notice": "Mastodon özgür ve açık kaynak bir yazılımdır. {repository} deposunda kaynak kodunu görebilir, katkı verebilir veya sorunları bildirebilirsiniz.", "getting_started.heading": "Başlarken", - "getting_started.invite": "İnsanları davet et", - "getting_started.privacy_policy": "Gizlilik Politikası", - "getting_started.security": "Hesap ayarları", - "getting_started.what_is_mastodon": "Mastodon Hakkında", "hashtag.column_header.tag_mode.all": "ve {additional}", "hashtag.column_header.tag_mode.any": "ya da {additional}", "hashtag.column_header.tag_mode.none": "{additional} olmadan", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?", "mute_modal.indefinite": "Belirsiz", "navigation_bar.about": "Hakkında", - "navigation_bar.apps": "Uygulamayı indir", "navigation_bar.blocks": "Engellenen kullanıcılar", "navigation_bar.bookmarks": "Yer İmleri", "navigation_bar.community_timeline": "Yerel Zaman Tüneli", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Sessize alınmış kelimeler", "navigation_bar.follow_requests": "Takip istekleri", "navigation_bar.follows_and_followers": "Takip edilenler ve takipçiler", - "navigation_bar.info": "Hakkında", - "navigation_bar.keyboard_shortcuts": "Klavye kısayolları", "navigation_bar.lists": "Listeler", "navigation_bar.logout": "Oturumu kapat", "navigation_bar.mutes": "Sessize alınmış kullanıcılar", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Sabitlenmiş gönderiler", "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", - "navigation_bar.search": "Search", + "navigation_bar.search": "Arama", "navigation_bar.security": "Güvenlik", "not_signed_in_indicator.not_signed_in": "Bu kaynağa erişmek için oturum açmanız gerekir.", "notification.admin.report": "{name}, {target} kişisini bildirdi", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Kural ihlali", "report_notification.open": "Bildirim aç", "search.placeholder": "Ara", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Gelişmiş arama biçimi", "search_popout.tips.full_text": "Basit metin yazdığınız, beğendiğiniz, teşvik ettiğiniz veya söz edilen gönderilerin yanı sıra kullanıcı adlarını, görünen adları ve etiketleri eşleşen gönderileri de döndürür.", "search_popout.tips.hashtag": "etiket", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Henüz kimse bu gönderiyi teşvik etmedi. Biri yaptığında burada görünecek.", "status.redraft": "Sil ve yeniden taslak yap", "status.remove_bookmark": "Yer imini kaldır", - "status.replied_to": "Replied to {name}", + "status.replied_to": "{name} kullanıcısına yanıt verildi", "status.reply": "Yanıtla", "status.replyAll": "Konuyu yanıtla", "status.report": "@{name} adlı kişiyi bildir", @@ -586,7 +585,7 @@ "status.show_more_all": "Hepsi için daha fazla göster", "status.show_original": "Orijinali göster", "status.translate": "Çevir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{provider} kullanılarak {lang} dilinden çevrildi", "status.uncached_media_warning": "Mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", "status.unpin": "Profilden sabitlemeyi kaldır", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "OCR hazırlanıyor…", "upload_modal.preview_label": "Ön izleme ({ratio})", "upload_progress.label": "Yükleniyor...", + "upload_progress.processing": "Processing…", "video.close": "Videoyu kapat", "video.download": "Dosyayı indir", "video.exit_fullscreen": "Tam ekrandan çık", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index eba18f8fc0..0144053df5 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Сакланды", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Кыстыргычлар", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Эзләү", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Видеоны ябу", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index cc0fa70690..dbc5685989 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "Security", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "Lists", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 995d2afccd..c2db2045bb 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -1,6 +1,7 @@ { "about.blocks": "Модеровані сервери", "about.contact": "Kонтакти:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домен", "about.domain_blocks.preamble": "Mastodon зазвичай дозволяє вам взаємодіяти з користувачами будь-яких серверів у Федіверсі та переглядати їх вміст. Ось винятки, які було зроблено на цьому конкретному сервері.", @@ -39,8 +40,8 @@ "account.follows.empty": "Цей користувач ще ні на кого не підписався.", "account.follows_you": "Підписані на вас", "account.hide_reblogs": "Сховати поширення від @{name}", - "account.joined_short": "Joined", - "account.languages": "Змінити підписані мови", + "account.joined_short": "Приєднався", + "account.languages": "Змінити обрані мови", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", "account.media": "Медіа", @@ -49,13 +50,13 @@ "account.mute": "Приховати @{name}", "account.mute_notifications": "Не показувати сповіщення від @{name}", "account.muted": "Нехтується", - "account.posts": "Дмухи", - "account.posts_with_replies": "Дмухи й відповіді", + "account.posts": "Дописи", + "account.posts_with_replies": "Дописи й відповіді", "account.report": "Поскаржитися на @{name}", - "account.requested": "Очікує підтвердження. Натисніть щоб відмінити запит", + "account.requested": "Очікує підтвердження. Натисніть, щоб скасувати запит на підписку", "account.share": "Поділитися профілем @{name}", - "account.show_reblogs": "Показати передмухи від @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Пост} few {{counter} Пости} many {{counter} Постів} other {{counter} Пости}}", + "account.show_reblogs": "Показати поширення від @{name}", + "account.statuses_counter": "{count, plural, one {{counter} допис} few {{counter} дописи} many {{counter} дописів} other {{counter} дописи}}", "account.unblock": "Розблокувати @{name}", "account.unblock_domain": "Розблокувати {domain}", "account.unblock_short": "Розблокувати", @@ -64,7 +65,7 @@ "account.unmute": "Не нехтувати @{name}", "account.unmute_notifications": "Показувати сповіщення від @{name}", "account.unmute_short": "Не нехтувати", - "account_note.placeholder": "Коментарі відсутні", + "account_note.placeholder": "Натисніть, щоб додати примітку", "admin.dashboard.daily_retention": "Щоденний показник утримання користувачів після реєстрації", "admin.dashboard.monthly_retention": "Щомісячний показник утримання користувачів після реєстрації", "admin.dashboard.retention.average": "Середнє", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Закрити", "bundle_modal_error.message": "Щось пішло не так під час завантаження цього компоненту.", "bundle_modal_error.retry": "Спробувати ще раз", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Оскільки Mastodon децентралізований, ви можете створити обліковий запис на іншому сервері й досі взаємодіяти з ним.", + "closed_registrations_modal.description": "Створення облікового запису на {domain} наразі неможливе, але майте на увазі, що вам не потрібен обліковий запис саме на {domain}, щоб використовувати Mastodon.", + "closed_registrations_modal.find_another_server": "Знайти інший сервер", + "closed_registrations_modal.preamble": "Mastodon децентралізований, тож незалежно від того, де ви створюєте свій обліковий запис, ви зможете слідкувати та взаємодіяти з будь-ким на цьому сервері. Ви навіть можете розмістити його самостійно!", + "closed_registrations_modal.title": "Реєстрація на Mastodon", "column.about": "Про застосунок", "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", @@ -142,8 +143,8 @@ "compose_form.sensitive.hide": "{count, plural, one {Позначити медіа делікатним} other {Позначити медіа делікатними}}", "compose_form.sensitive.marked": "{count, plural, one {Медіа позначене делікатним} other {Медіа позначені делікатними}}", "compose_form.sensitive.unmarked": "{count, plural, one {Медіа не позначене делікатним} other {Медіа не позначені делікатними}}", - "compose_form.spoiler.marked": "Текст приховано під попередженням", - "compose_form.spoiler.unmarked": "Текст видимий", + "compose_form.spoiler.marked": "Прибрати попередження про вміст", + "compose_form.spoiler.unmarked": "Додати попередження про вміст", "compose_form.spoiler_placeholder": "Напишіть своє попередження тут", "confirmation_modal.cancel": "Відмінити", "confirmations.block.block_and_report": "Заблокувати та поскаржитися", @@ -195,7 +196,7 @@ "emoji_button.food": "Їжа та напої", "emoji_button.label": "Вставити емоджі", "emoji_button.nature": "Природа", - "emoji_button.not_found": "Немає емоджі!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Відповідних емоджі не знайдено", "emoji_button.objects": "Предмети", "emoji_button.people": "Люди", "emoji_button.recent": "Часто використовувані", @@ -257,16 +258,16 @@ "follow_recommendations.lead": "Дописи від людей, за якими ви стежите, з'являться в хронологічному порядку у вашій домашній стрічці. Не бійся помилятися, ви можете відписатися від людей так само легко в будь-який час!", "follow_request.authorize": "Авторизувати", "follow_request.reject": "Відмовити", - "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, працівники {domain} припускають, що, можливо, ви хотіли б переглянути ці запити на підписку.", + "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, персонал {domain} припускає, що, можливо, ви хотіли б переглянути ці запити на підписку.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Збережено", - "getting_started.directory": "Каталог", - "getting_started.documentation": "Документація", - "getting_started.free_software_notice": "Mastodon — це вільне програмне забезпечення з відкритим кодом. Ви можете переглянути код, внести зміни або повідомити про помилки на {repository}.", "getting_started.heading": "Розпочати", - "getting_started.invite": "Запросити людей", - "getting_started.privacy_policy": "Політика конфіденційності", - "getting_started.security": "Налаштування облікового запису", - "getting_started.what_is_mastodon": "Про Mastodon", "hashtag.column_header.tag_mode.all": "та {additional}", "hashtag.column_header.tag_mode.any": "або {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -323,15 +324,15 @@ "keyboard_shortcuts.pinned": "Відкрити список закріплених дописів", "keyboard_shortcuts.profile": "Відкрити профіль автора", "keyboard_shortcuts.reply": "Відповісти", - "keyboard_shortcuts.requests": "відкрити список бажаючих підписатися", - "keyboard_shortcuts.search": "сфокусуватися на пошуку", - "keyboard_shortcuts.spoilers": "показати/приховати поле CW", - "keyboard_shortcuts.start": "відкрити колонку \"Початок\"", - "keyboard_shortcuts.toggle_hidden": "показати/приховати текст під попередженням", - "keyboard_shortcuts.toggle_sensitivity": "показати/приховати медіа", - "keyboard_shortcuts.toot": "почати писати новий дмух", - "keyboard_shortcuts.unfocus": "розфокусуватися з нового допису чи пошуку", - "keyboard_shortcuts.up": "рухатися вверх списком", + "keyboard_shortcuts.requests": "Відкрити список охочих підписатися", + "keyboard_shortcuts.search": "Сфокусуватися на пошуку", + "keyboard_shortcuts.spoilers": "Показати/приховати поле попередження про вміст", + "keyboard_shortcuts.start": "Відкрити колонку \"Розпочати\"", + "keyboard_shortcuts.toggle_hidden": "Показати/приховати текст під попередженням про вміст", + "keyboard_shortcuts.toggle_sensitivity": "Показати/приховати медіа", + "keyboard_shortcuts.toot": "Створити новий допис", + "keyboard_shortcuts.unfocus": "Розфокусуватися з нового допису чи пошуку", + "keyboard_shortcuts.up": "Рухатися вгору списком", "lightbox.close": "Закрити", "lightbox.compress": "Стиснути поле перегляду зображень", "lightbox.expand": "Розгорнути поле перегляду зображень", @@ -340,7 +341,7 @@ "limited_account_hint.action": "Усе одно показати профіль", "limited_account_hint.title": "Цей профіль прихований модераторами вашого сервера.", "lists.account.add": "Додати до списку", - "lists.account.remove": "Видалити зі списку", + "lists.account.remove": "Вилучити зі списку", "lists.delete": "Видалити список", "lists.edit": "Редагувати список", "lists.edit.submit": "Змінити назву", @@ -354,14 +355,13 @@ "lists.subheading": "Ваші списки", "load_pending": "{count, plural, one {# новий елемент} other {# нових елементів}}", "loading_indicator.label": "Завантаження...", - "media_gallery.toggle_visible": "Показати/приховати", + "media_gallery.toggle_visible": "{number, plural, one {Приховати зображення} other {Приховати зображення}}", "missing_indicator.label": "Не знайдено", - "missing_indicator.sublabel": "Ресурс не знайдений", + "missing_indicator.sublabel": "Ресурс не знайдено", "mute_modal.duration": "Тривалість", "mute_modal.hide_notifications": "Сховати сповіщення від користувача?", "mute_modal.indefinite": "Не визначено", - "navigation_bar.about": "Про програму", - "navigation_bar.apps": "Завантажити застосунок", + "navigation_bar.about": "Про застосунок", "navigation_bar.blocks": "Заблоковані користувачі", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальна стрічка", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Приховані слова", "navigation_bar.follow_requests": "Запити на підписку", "navigation_bar.follows_and_followers": "Підписки та підписники", - "navigation_bar.info": "Про застосунок", - "navigation_bar.keyboard_shortcuts": "Гарячі клавіші", "navigation_bar.lists": "Списки", "navigation_bar.logout": "Вийти", "navigation_bar.mutes": "Нехтувані користувачі", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Закріплені дописи", "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", - "navigation_bar.search": "Search", + "navigation_bar.search": "Пошук", "navigation_bar.security": "Безпека", "not_signed_in_indicator.not_signed_in": "Для доступу до цього ресурсу вам потрібно увійти.", "notification.admin.report": "Скарга від {name} на {target}", @@ -394,7 +392,7 @@ "notification.follow_request": "{name} відправили запит на підписку", "notification.mention": "{name} згадали вас", "notification.own_poll": "Ваше опитування завершено", - "notification.poll": "Опитування, у якому ви голосували, закінчилося", + "notification.poll": "Опитування, у якому ви голосували, скінчилося", "notification.reblog": "{name} поширили ваш допис", "notification.status": "{name} щойно дописує", "notification.update": "{name} змінює допис", @@ -412,16 +410,16 @@ "notifications.column_settings.mention": "Згадки:", "notifications.column_settings.poll": "Результати опитування:", "notifications.column_settings.push": "Push-сповіщення", - "notifications.column_settings.reblog": "Передмухи:", - "notifications.column_settings.show": "Показати в колонці", + "notifications.column_settings.reblog": "Поширення:", + "notifications.column_settings.show": "Показати в стовпчику", "notifications.column_settings.sound": "Відтворювати звуки", "notifications.column_settings.status": "Нові дмухи:", "notifications.column_settings.unread_notifications.category": "Непрочитані сповіщення", "notifications.column_settings.unread_notifications.highlight": "Виділити непрочитані сповіщення", "notifications.column_settings.update": "Зміни:", "notifications.filter.all": "Усі", - "notifications.filter.boosts": "Передмухи", - "notifications.filter.favourites": "Улюблені", + "notifications.filter.boosts": "Поширення", + "notifications.filter.favourites": "Вподобані", "notifications.filter.follows": "Підписки", "notifications.filter.mentions": "Згадки", "notifications.filter.polls": "Результати опитування", @@ -438,7 +436,7 @@ "picture_in_picture.restore": "Повернути назад", "poll.closed": "Закрито", "poll.refresh": "Оновити", - "poll.total_people": "{count, plural, one {# особа} other {# осіб}}", + "poll.total_people": "{count, plural, one {особа} few {особи} many {осіб} other {особи}}", "poll.total_votes": "{count, plural, one {# голос} few {# голоси} many {# голосів} other {# голосів}}", "poll.vote": "Проголосувати", "poll.voted": "Ви проголосували за цю відповідь", @@ -514,10 +512,11 @@ "report_notification.categories.violation": "Порушення правил", "report_notification.open": "Відкрити скаргу", "search.placeholder": "Пошук", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Розширений формат пошуку", - "search_popout.tips.full_text": "Пошук за текстом знаходить статуси, які ви написали, вподобали, передмухнули, або в яких вас згадували. Також він знаходить імена користувачів, реальні імена та хештеґи.", + "search_popout.tips.full_text": "Пошук за текстом знаходить дописи, які ви написали, вподобали, поширили, або в яких вас згадували. Також він знаходить імена користувачів, реальні імена та гештеґи.", "search_popout.tips.hashtag": "хештеґ", - "search_popout.tips.status": "статус", + "search_popout.tips.status": "допис", "search_popout.tips.text": "Пошук за текстом знаходить імена користувачів, реальні імена та хештеґи", "search_popout.tips.user": "користувач", "search_results.accounts": "Люди", @@ -538,12 +537,12 @@ "sign_in_banner.sign_in": "Увійти", "sign_in_banner.text": "Увійдіть, щоб слідкувати за профілями або хештеґами, вподобаними, ділитися і відповідати на повідомлення або взаємодіяти з вашого облікового запису на іншому сервері.", "status.admin_account": "Відкрити інтерфейс модерації для @{name}", - "status.admin_status": "Відкрити цей статус в інтерфейсі модерації", + "status.admin_status": "Відкрити цей допис в інтерфейсі модерації", "status.block": "Заблокувати @{name}", "status.bookmark": "Додати в закладки", "status.cancel_reblog_private": "Відмінити передмухання", "status.cannot_reblog": "Цей допис не може бути передмухнутий", - "status.copy": "Копіювати посилання до статусу", + "status.copy": "Копіювати посилання до допису", "status.delete": "Видалити", "status.detailed_status": "Детальний вигляд бесіди", "status.direct": "Пряме повідомлення до @{name}", @@ -565,15 +564,15 @@ "status.mute_conversation": "Ігнорувати діалог", "status.open": "Розгорнути допис", "status.pin": "Закріпити у профілі", - "status.pinned": "Закріплений дмух", + "status.pinned": "Закріплений допис", "status.read_more": "Дізнатися більше", - "status.reblog": "Передмухнути", - "status.reblog_private": "Передмухнути для початкової аудиторії", - "status.reblogged_by": "{name} передмухнув(-ла)", - "status.reblogs.empty": "Ніхто ще не передмухнув цього дмуху. Коли якісь користувачі це зроблять, вони будуть відображені тут.", - "status.redraft": "Видалити та перестворити", + "status.reblog": "Поширити", + "status.reblog_private": "Поширити для початкової аудиторії", + "status.reblogged_by": "{name} поширив", + "status.reblogs.empty": "Ніхто ще не поширив цей допис. Коли хтось це зроблять, вони будуть зображені тут.", + "status.redraft": "Видалити та виправити", "status.remove_bookmark": "Видалити закладку", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Відповідь для {name}", "status.reply": "Відповісти", "status.replyAll": "Відповісти на ланцюжок", "status.report": "Поскаржитися на @{name}", @@ -581,12 +580,12 @@ "status.share": "Поділитися", "status.show_filter_reason": "Усе одно показати", "status.show_less": "Згорнути", - "status.show_less_all": "Показувати менше для всіх", + "status.show_less_all": "Згорнути для всіх", "status.show_more": "Розгорнути", - "status.show_more_all": "Показувати більше для всіх", + "status.show_more_all": "Розгорнути для всіх", "status.show_original": "Показати оригінал", "status.translate": "Перекласти", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Перекладено з {lang} за допомогою {provider}", "status.uncached_media_warning": "Недоступно", "status.unmute_conversation": "Не ігнорувати діалог", "status.unpin": "Відкріпити від профілю", @@ -608,12 +607,12 @@ "timeline_hint.resources.followers": "Підписники", "timeline_hint.resources.follows": "Підписки", "timeline_hint.resources.statuses": "Попередні дописи", - "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особи} other {{counter} осіб}} за останні(й) {days, plural, one {день} few {{days} дні} other {{days} днів}}", - "trends.trending_now": "Актуальні", + "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особи} other {{counter} осіб}} {days, plural, one {за останній день} few {за останні {days} дні} other {за останні {days} днів}}", + "trends.trending_now": "Популярне зараз", "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.", - "units.short.billion": "{count} млрд.", - "units.short.million": "{count} млн.", - "units.short.thousand": "{count} тис.", + "units.short.billion": "{count} млрд", + "units.short.million": "{count} млн", + "units.short.thousand": "{count} тис", "upload_area.title": "Перетягніть сюди, щоб завантажити", "upload_button.label": "Додати зображення, відео або аудіо", "upload_error.limit": "Ліміт завантаження файлів перевищено.", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Підготовка OCR…", "upload_modal.preview_label": "Переглянути ({ratio})", "upload_progress.label": "Завантаження...", + "upload_progress.processing": "Processing…", "video.close": "Закрити відео", "video.download": "Завантажити файл", "video.exit_fullscreen": "Вийти з повноекранного режиму", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 03b648fe98..c4d337cef8 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "اجازت دیں", "follow_request.reject": "انکار کریں", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "اسناد", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "آغاز کریں", - "getting_started.invite": "دوستوں کو دعوت دیں", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "ترتیباتِ اکاؤنٹ", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "اور {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بغیر {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "غیر معینہ", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "مسدود صارفین", "navigation_bar.bookmarks": "بُک مارکس", "navigation_bar.community_timeline": "مقامی ٹائم لائن", @@ -375,8 +375,6 @@ "navigation_bar.filters": "خاموش کردہ الفاظ", "navigation_bar.follow_requests": "پیروی کی درخواستیں", "navigation_bar.follows_and_followers": "پیروی کردہ اور پیروکار", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "ہوٹ کیز", "navigation_bar.lists": "فہرستیں", "navigation_bar.logout": "لاگ آؤٹ", "navigation_bar.mutes": "خاموش کردہ صارفین", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Search", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "Close video", "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index b05bed7745..af307601dc 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -1,6 +1,7 @@ { "about.blocks": "Giới hạn chung", "about.contact": "Liên lạc:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Lý do", "about.domain_blocks.domain": "Máy chủ", "about.domain_blocks.preamble": "Mastodon cho phép bạn tương tác nội dung và giao tiếp với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.", @@ -39,7 +40,7 @@ "account.follows.empty": "Người này chưa theo dõi ai.", "account.follows_you": "Đang theo dõi bạn", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", - "account.joined_short": "Joined", + "account.joined_short": "Đã tham gia", "account.languages": "Đổi ngôn ngữ mong muốn", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "Đóng", "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_modal_error.retry": "Thử lại", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Vì Mastodon liên hợp nên bạn có thể tạo tài khoản trên máy chủ khác và vẫn tương tác với máy chủ này.", + "closed_registrations_modal.description": "{domain} hiện tắt đăng ký, nhưng hãy lưu ý rằng bạn không cần một tài khoản riêng trên {domain} để sử dụng Mastodon.", + "closed_registrations_modal.find_another_server": "Tìm máy chủ khác", + "closed_registrations_modal.preamble": "Mastodon liên hợp, vì vậy bất kể bạn tạo tài khoản ở đâu, bạn sẽ có thể theo dõi và tương tác với bất kỳ ai trên máy chủ này. Bạn thậm chí có thể tự mở máy chủ!", + "closed_registrations_modal.title": "Đăng ký trên Mastodon", "column.about": "Giới thiệu", "column.blocks": "Người đã chặn", "column.bookmarks": "Đã lưu", @@ -258,15 +259,15 @@ "follow_request.authorize": "Cho phép", "follow_request.reject": "Từ chối", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Đã lưu", - "getting_started.directory": "Danh bạ", - "getting_started.documentation": "Tài liệu", - "getting_started.free_software_notice": "Mastodon là phần mềm tự do nguồn mở. Bạn có thể xem, đóng góp mã nguồn hoặc báo lỗi tại {repository}.", "getting_started.heading": "Quản lý", - "getting_started.invite": "Mời bạn bè", - "getting_started.privacy_policy": "Chính sách bảo mật", - "getting_started.security": "Bảo mật", - "getting_started.what_is_mastodon": "Về Mastodon", "hashtag.column_header.tag_mode.all": "và {additional}", "hashtag.column_header.tag_mode.any": "hoặc {additional}", "hashtag.column_header.tag_mode.none": "mà không {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Ẩn thông báo từ người này?", "mute_modal.indefinite": "Vĩnh viễn", "navigation_bar.about": "Giới thiệu", - "navigation_bar.apps": "Tải ứng dụng", "navigation_bar.blocks": "Người đã chặn", "navigation_bar.bookmarks": "Đã lưu", "navigation_bar.community_timeline": "Cộng đồng", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Bộ lọc từ ngữ", "navigation_bar.follow_requests": "Yêu cầu theo dõi", "navigation_bar.follows_and_followers": "Quan hệ", - "navigation_bar.info": "Giới thiệu", - "navigation_bar.keyboard_shortcuts": "Phím tắt", "navigation_bar.lists": "Danh sách", "navigation_bar.logout": "Đăng xuất", "navigation_bar.mutes": "Người đã ẩn", @@ -384,7 +382,7 @@ "navigation_bar.pins": "Tút ghim", "navigation_bar.preferences": "Cài đặt", "navigation_bar.public_timeline": "Thế giới", - "navigation_bar.search": "Search", + "navigation_bar.search": "Tìm kiếm", "navigation_bar.security": "Bảo mật", "not_signed_in_indicator.not_signed_in": "Bạn cần đăng nhập để truy cập mục này.", "notification.admin.report": "{name} đã báo cáo {target}", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Vi phạm quy tắc", "report_notification.open": "Mở báo cáo", "search.placeholder": "Tìm kiếm", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Gợi ý", "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.", "search_popout.tips.hashtag": "hashtag", @@ -573,7 +572,7 @@ "status.reblogs.empty": "Tút này chưa có ai đăng lại. Nếu có, nó sẽ hiển thị ở đây.", "status.redraft": "Xóa và viết lại", "status.remove_bookmark": "Bỏ lưu", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Trả lời đến {name}", "status.reply": "Trả lời", "status.replyAll": "Trả lời người đăng tút", "status.report": "Báo cáo @{name}", @@ -586,7 +585,7 @@ "status.show_more_all": "Hiển thị tất cả", "status.show_original": "Bản gốc", "status.translate": "Dịch", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Dịch từ {lang} bằng {provider}", "status.uncached_media_warning": "Uncached", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên hồ sơ", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Đang nhận dạng ký tự…", "upload_modal.preview_label": "Xem trước ({ratio})", "upload_progress.label": "Đang tải lên...", + "upload_progress.processing": "Processing…", "video.close": "Đóng video", "video.download": "Lưu về máy", "video.exit_fullscreen": "Thoát toàn màn hình", diff --git a/app/javascript/mastodon/locales/whitelist_ig.json b/app/javascript/mastodon/locales/whitelist_ig.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/mastodon/locales/whitelist_ig.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/mastodon/locales/whitelist_my.json b/app/javascript/mastodon/locales/whitelist_my.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/app/javascript/mastodon/locales/whitelist_my.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 681667a2fc..da5da985b2 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "ⴰⴳⵢ", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.directory": "Directory", - "getting_started.documentation": "Documentation", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵓⵎⵉⴹⴰⵏ", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "ⴷ {additional}", "hashtag.column_header.tag_mode.any": "ⵏⵖ {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "Blocked users", "navigation_bar.bookmarks": "Bookmarks", "navigation_bar.community_timeline": "Local timeline", @@ -375,8 +375,6 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "ⵜⵓⵜⵔⴰⵡⵉⵏ ⵏ ⵓⴹⴼⴰⵕ", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.lists": "ⵜⵉⵍⴳⴰⵎⵉⵏ", "navigation_bar.logout": "ⴼⴼⵖ", "navigation_bar.mutes": "Muted users", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "ⵔⵣⵓ", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", "upload_progress.label": "Uploading…", + "upload_progress.processing": "Processing…", "video.close": "ⵔⴳⵍ ⴰⴼⵉⴷⵢⵓ", "video.download": "ⴰⴳⵎ ⴰⴼⴰⵢⵍⵓ", "video.exit_fullscreen": "Exit full screen", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index bbc1249074..c8f9b2126c 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,6 +1,7 @@ { "about.blocks": "被限制的服务器", "about.contact": "联系方式:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "原因", "about.domain_blocks.domain": "域名", "about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。", @@ -91,9 +92,9 @@ "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations.other_server_instructions": "基于Mastodon去中心化的特性, 你可以在其它服务器上创建账户并与该服务器保持联系.", + "closed_registrations_modal.description": "您并不能在 {domain} 上创建账户, 但您无需在 {domain} 上的账户也可以使用Mastodon.", + "closed_registrations_modal.find_another_server": "查找另外的服务器", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "关于", @@ -258,15 +259,15 @@ "follow_request.authorize": "授权", "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "已保存", - "getting_started.directory": "目录", - "getting_started.documentation": "文档", - "getting_started.free_software_notice": "Mastodon 是免费的开源软件。 你可以在 {repository} 查看源代码、贡献或报告问题。", "getting_started.heading": "开始使用", - "getting_started.invite": "邀请用户", - "getting_started.privacy_policy": "隐私政策", - "getting_started.security": "账号设置", - "getting_started.what_is_mastodon": "关于 Mastodon", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而不用 {additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", "navigation_bar.about": "关于", - "navigation_bar.apps": "获取应用程序", "navigation_bar.blocks": "已屏蔽的用户", "navigation_bar.bookmarks": "书签", "navigation_bar.community_timeline": "本站时间轴", @@ -375,8 +375,6 @@ "navigation_bar.filters": "隐藏关键词", "navigation_bar.follow_requests": "关注请求", "navigation_bar.follows_and_followers": "关注管理", - "navigation_bar.info": "关于", - "navigation_bar.keyboard_shortcuts": "快捷键列表", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "已隐藏的用户", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "违反规则", "report_notification.open": "展开报告", "search.placeholder": "搜索", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "高级搜索格式", "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的帖子,以及其他用户公开的用户名、昵称和话题标签。", "search_popout.tips.hashtag": "话题标签", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "正在准备文字识别…", "upload_modal.preview_label": "预览 ({ratio})", "upload_progress.label": "上传中…", + "upload_progress.processing": "Processing…", "video.close": "关闭视频", "video.download": "下载文件", "video.exit_fullscreen": "退出全屏", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 7fd51bfa78..6ea522ab36 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -1,6 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -258,15 +259,15 @@ "follow_request.authorize": "批准", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即使您的帳戶未上鎖,{domain} 的工作人員認為您可能想手動審核來自這些帳戶的關注請求。", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "已儲存", - "getting_started.directory": "Directory", - "getting_started.documentation": "文件", - "getting_started.free_software_notice": "Mastodon is free, open source software. You can view the source code, contribute or report issues at {repository}.", "getting_started.heading": "開始使用", - "getting_started.invite": "邀請使用者", - "getting_started.privacy_policy": "Privacy Policy", - "getting_started.security": "帳戶設定", - "getting_started.what_is_mastodon": "About Mastodon", "hashtag.column_header.tag_mode.all": "以及{additional}", "hashtag.column_header.tag_mode.any": "或是{additional}", "hashtag.column_header.tag_mode.none": "而無需{additional}", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "需要隱藏這使用者的通知嗎?", "mute_modal.indefinite": "沒期限", "navigation_bar.about": "About", - "navigation_bar.apps": "Get the app", "navigation_bar.blocks": "封鎖名單", "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", @@ -375,8 +375,6 @@ "navigation_bar.filters": "靜音詞彙", "navigation_bar.follow_requests": "關注請求", "navigation_bar.follows_and_followers": "關注及關注者", - "navigation_bar.info": "About", - "navigation_bar.keyboard_shortcuts": "鍵盤快速鍵", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "靜音名單", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "搜尋", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "高級搜索格式", "search_popout.tips.full_text": "輸入簡單的文字,搜索由你發放、收藏、轉推和提及你的文章,以及符合的使用者名稱,顯示名稱和標籤。", "search_popout.tips.hashtag": "標籤", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "準備辨識圖片文字…", "upload_modal.preview_label": "預覽 ({ratio})", "upload_progress.label": "上載中……", + "upload_progress.processing": "Processing…", "video.close": "關閉影片", "video.download": "下載檔案", "video.exit_fullscreen": "退出全螢幕", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index d75a57e320..8ef55acd39 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,6 +1,7 @@ { "about.blocks": "受管制的伺服器", "about.contact": "聯絡我們:", + "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "原因", "about.domain_blocks.domain": "網域", "about.domain_blocks.preamble": "Mastodon 一般來說允許您閱讀並和聯邦宇宙上任何伺服器的使用者互動。這些伺服器是這個站台設下的例外。", @@ -39,10 +40,10 @@ "account.follows.empty": "這位使用者尚未跟隨任何人。", "account.follows_you": "跟隨了您", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", - "account.joined_short": "Joined", + "account.joined_short": "已加入", "account.languages": "變更訂閱的語言", "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限", - "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", + "account.locked_info": "此帳號的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", "account.media": "媒體", "account.mention": "提及 @{name}", "account.moved_to": "{name} 已遷移至:", @@ -91,11 +92,11 @@ "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "載入此元件時發生錯誤。", "bundle_modal_error.retry": "重試", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "因為 Mastodon 是去中心化的,所以您也能於其他伺服器上建立帳號,並仍然與這個伺服器互動。", + "closed_registrations_modal.description": "目前無法在 {domain} 建立新帳號,但也請別忘了,您並不一定需要有 {domain} 伺服器的帳號,也能使用 Mastodon 。", + "closed_registrations_modal.find_another_server": "尋找另一個伺服器", + "closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以無論您在哪個伺服器新增帳號,都可以與此伺服器上的任何人追蹤及互動。您甚至能自行架一個自己的伺服器!", + "closed_registrations_modal.title": "註冊 Mastodon", "column.about": "關於", "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", @@ -119,14 +120,14 @@ "column_header.show_settings": "顯示設定", "column_header.unpin": "取消釘選", "column_subheading.settings": "設定", - "community.column_settings.local_only": "只有本站", - "community.column_settings.media_only": "只有媒體", - "community.column_settings.remote_only": "只有遠端", + "community.column_settings.local_only": "只顯示本站", + "community.column_settings.media_only": "只顯示媒體", + "community.column_settings.remote_only": "只顯示遠端", "compose.language.change": "變更語言", "compose.language.search": "搜尋語言...", "compose_form.direct_message_warning_learn_more": "了解更多", - "compose_form.encryption_warning": "Mastodon 上的嘟文並未端到端加密。請不要透過 Mastodon 分享任何敏感資訊。", - "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不會被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤找到。", + "compose_form.encryption_warning": "Mastodon 上的嘟文並未進行端到端加密。請不要透過 Mastodon 分享任何敏感資訊。", + "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤被找到。", "compose_form.lock_disclaimer": "您的帳號尚未 {locked}。任何人皆能跟隨您並看到您設定成只有跟隨者能看的嘟文。", "compose_form.lock_disclaimer.lock": "上鎖", "compose_form.placeholder": "正在想些什麼嗎?", @@ -142,8 +143,8 @@ "compose_form.sensitive.hide": "標記媒體為敏感內容", "compose_form.sensitive.marked": "此媒體被標記為敏感內容", "compose_form.sensitive.unmarked": "此媒體未被標記為敏感內容", - "compose_form.spoiler.marked": "正文已隱藏到警告之後", - "compose_form.spoiler.unmarked": "正文未被隱藏", + "compose_form.spoiler.marked": "移除內容警告", + "compose_form.spoiler.unmarked": "新增內容警告", "compose_form.spoiler_placeholder": "請在此處寫入警告訊息", "confirmation_modal.cancel": "取消", "confirmations.block.block_and_report": "封鎖並檢舉", @@ -185,7 +186,7 @@ "dismissable_banner.explore_links": "這些新聞故事正在被此伺服器以及去中心化網路上的人們熱烈討論著。", "dismissable_banner.explore_statuses": "這些於這裡以及去中心化網路中其他伺服器發出的嘟文正在被此伺服器上的人們熱烈討論著。", "dismissable_banner.explore_tags": "這些主題標籤正在被此伺服器以及去中心化網路上的人們熱烈討論著。", - "dismissable_banner.public_timeline": "這些是來自這裡以及去中心網路中其他已知伺服器之最新公開嘟文。", + "dismissable_banner.public_timeline": "這些是來自這裡以及去中心化網路中其他已知伺服器之最新公開嘟文。", "embed.instructions": "要在您的網站嵌入此嘟文,請複製以下程式碼。", "embed.preview": "它將顯示成這樣:", "emoji_button.activity": "活動", @@ -220,14 +221,14 @@ "empty_column.home": "您的首頁時間軸是空的!前往 {suggestions} 或使用搜尋功能來認識其他人。", "empty_column.home.suggestions": "檢視部份建議", "empty_column.list": "這份列表下什麼也沒有。當此列表的成員嘟出了新的嘟文時,它們就會顯示於此。", - "empty_column.lists": "您還沒有建立任何列表。這裡將會顯示您所建立的列表。", + "empty_column.lists": "您還沒有建立任何列表。當您建立列表時,它將於此顯示。", "empty_column.mutes": "您尚未靜音任何使用者。", "empty_column.notifications": "您尚未收到任何通知,和別人互動開啟對話吧。", "empty_column.public": "這裡什麼都沒有!嘗試寫些公開的嘟文,或著自己跟隨其他伺服器的使用者後就會有嘟文出現了", "error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,無法正常顯示此頁面。", "error.unexpected_crash.explanation_addons": "此頁面無法被正常顯示,這可能是由瀏覽器附加元件或網頁自動翻譯工具造成的。", "error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。", - "error.unexpected_crash.next_steps_addons": "請嘗試關閉他們然後重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。", + "error.unexpected_crash.next_steps_addons": "請嘗試關閉它們然後重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。", "errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿", "errors.unexpected_crash.report_issue": "回報問題", "explore.search_results": "搜尋結果", @@ -258,15 +259,15 @@ "follow_request.authorize": "授權", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳號的跟隨請求。", + "footer.about": "About", + "footer.directory": "Profiles directory", + "footer.get_app": "Get the app", + "footer.invite": "Invite people", + "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.privacy_policy": "Privacy policy", + "footer.source_code": "View source code", "generic.saved": "已儲存", - "getting_started.directory": "目錄", - "getting_started.documentation": "文件", - "getting_started.free_software_notice": "Mastodon 是自由的開源軟體。您可以於 {repository} 檢查其程式碼、貢獻或是回報問題。", "getting_started.heading": "開始使用", - "getting_started.invite": "邀請使用者", - "getting_started.privacy_policy": "隱私權政策", - "getting_started.security": "帳號安全性設定", - "getting_started.what_is_mastodon": "關於 Mastodon", "hashtag.column_header.tag_mode.all": "以及 {additional}", "hashtag.column_header.tag_mode.any": "或是 {additional}", "hashtag.column_header.tag_mode.none": "而無需 {additional}", @@ -278,7 +279,7 @@ "hashtag.column_settings.tag_toggle": "將額外標籤加入到這個欄位", "hashtag.follow": "追蹤主題標籤", "hashtag.unfollow": "取消追蹤主題標籤", - "home.column_settings.basic": "基本", + "home.column_settings.basic": "基本設定", "home.column_settings.show_reblogs": "顯示轉嘟", "home.column_settings.show_replies": "顯示回覆", "home.hide_announcements": "隱藏公告", @@ -301,11 +302,11 @@ "keyboard_shortcuts.back": "返回上一頁", "keyboard_shortcuts.blocked": "開啟「封鎖使用者」名單", "keyboard_shortcuts.boost": "轉嘟", - "keyboard_shortcuts.column": "將焦點放在其中一欄的嘟文", - "keyboard_shortcuts.compose": "將焦點移至撰寫文字區塊", + "keyboard_shortcuts.column": "聚焦至其中一欄的嘟文", + "keyboard_shortcuts.compose": "聚焦至撰寫文字區塊", "keyboard_shortcuts.description": "說明", "keyboard_shortcuts.direct": "開啟私訊欄", - "keyboard_shortcuts.down": "在列表中往下移動", + "keyboard_shortcuts.down": "往下移動", "keyboard_shortcuts.enter": "檢視嘟文", "keyboard_shortcuts.favourite": "加到最愛", "keyboard_shortcuts.favourites": "開啟最愛列表", @@ -313,7 +314,7 @@ "keyboard_shortcuts.heading": "鍵盤快速鍵", "keyboard_shortcuts.home": "開啟首頁時間軸", "keyboard_shortcuts.hotkey": "快速鍵", - "keyboard_shortcuts.legend": "顯示此圖例", + "keyboard_shortcuts.legend": "顯示此說明選單", "keyboard_shortcuts.local": "開啟本站時間軸", "keyboard_shortcuts.mention": "提及作者", "keyboard_shortcuts.muted": "開啟靜音使用者列表", @@ -324,14 +325,14 @@ "keyboard_shortcuts.profile": "開啟作者的個人檔案頁面", "keyboard_shortcuts.reply": "回應嘟文", "keyboard_shortcuts.requests": "開啟跟隨請求列表", - "keyboard_shortcuts.search": "將焦點移至搜尋框", - "keyboard_shortcuts.spoilers": "顯示或隱藏被折疊的正文", + "keyboard_shortcuts.search": "聚焦至搜尋框", + "keyboard_shortcuts.spoilers": "顯示或隱藏內容警告之嘟文", "keyboard_shortcuts.start": "開啟「開始使用」欄位", - "keyboard_shortcuts.toggle_hidden": "顯示或隱藏在內容警告之後的正文", + "keyboard_shortcuts.toggle_hidden": "顯示或隱藏在內容警告之後的嘟文", "keyboard_shortcuts.toggle_sensitivity": "顯示或隱藏媒體", - "keyboard_shortcuts.toot": "開始發出新嘟文", - "keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點", - "keyboard_shortcuts.up": "在列表中往上移動", + "keyboard_shortcuts.toot": "發個新嘟文", + "keyboard_shortcuts.unfocus": "取消輸入文字區塊或搜尋之焦點", + "keyboard_shortcuts.up": "往上移動", "lightbox.close": "關閉", "lightbox.compress": "折疊圖片檢視框", "lightbox.expand": "展開圖片檢視框", @@ -361,7 +362,6 @@ "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", "navigation_bar.about": "關於", - "navigation_bar.apps": "取得應用程式", "navigation_bar.blocks": "封鎖使用者", "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", @@ -375,8 +375,6 @@ "navigation_bar.filters": "靜音詞彙", "navigation_bar.follow_requests": "跟隨請求", "navigation_bar.follows_and_followers": "跟隨中與跟隨者", - "navigation_bar.info": "關於", - "navigation_bar.keyboard_shortcuts": "快速鍵", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "靜音的使用者", @@ -384,7 +382,7 @@ "navigation_bar.pins": "釘選的嘟文", "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", - "navigation_bar.search": "Search", + "navigation_bar.search": "搜尋", "navigation_bar.security": "安全性", "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。", "notification.admin.report": "{name} 檢舉了 {target}", @@ -405,8 +403,8 @@ "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "最愛:", "notifications.column_settings.filter_bar.advanced": "顯示所有分類", - "notifications.column_settings.filter_bar.category": "快速過濾欄", - "notifications.column_settings.filter_bar.show_bar": "顯示過濾器列", + "notifications.column_settings.filter_bar.category": "快速過濾器", + "notifications.column_settings.filter_bar.show_bar": "顯示過濾器", "notifications.column_settings.follow": "新的跟隨者:", "notifications.column_settings.follow_request": "新的跟隨請求:", "notifications.column_settings.mention": "提及:", @@ -514,6 +512,7 @@ "report_notification.categories.violation": "違反規則", "report_notification.open": "開啟檢舉報告", "search.placeholder": "搜尋", + "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "進階搜尋格式", "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳號顯示名稱和主題標籤。", "search_popout.tips.hashtag": "主題標籤", @@ -568,12 +567,12 @@ "status.pinned": "釘選的嘟文", "status.read_more": "閱讀更多", "status.reblog": "轉嘟", - "status.reblog_private": "轉嘟給原有關注者", + "status.reblog_private": "依照原嘟可見性轉嘟", "status.reblogged_by": "{name} 轉嘟了", "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", "status.redraft": "刪除並重新編輯", "status.remove_bookmark": "移除書籤", - "status.replied_to": "Replied to {name}", + "status.replied_to": "回覆給 {name}", "status.reply": "回覆", "status.replyAll": "回覆討論串", "status.report": "檢舉 @{name}", @@ -586,10 +585,10 @@ "status.show_more_all": "顯示更多這類嘟文", "status.show_original": "顯示原文", "status.translate": "翻譯", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "透過 {provider} 翻譯 {lang}", "status.uncached_media_warning": "無法使用", "status.unmute_conversation": "解除此對話的靜音", - "status.unpin": "從個人檔案頁面解除釘選", + "status.unpin": "從個人檔案頁面取消釘選", "subscribed_languages.lead": "僅選定語言的嘟文才會出現在您的首頁上,並在變更後列出時間軸。選取「無」以接收所有語言的嘟文。", "subscribed_languages.save": "儲存變更", "subscribed_languages.target": "變更 {target} 的訂閱語言", @@ -609,7 +608,7 @@ "timeline_hint.resources.follows": "正在跟隨", "timeline_hint.resources.statuses": "更早的嘟文", "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}} 於過去 {days, plural, one {日} other {{days} days}} 之間", - "trends.trending_now": "現正熱門", + "trends.trending_now": "現正熱門趨勢", "ui.beforeunload": "如果離開 Mastodon,您的草稿將會不見。", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -636,6 +635,7 @@ "upload_modal.preparing_ocr": "準備 OCR 中……", "upload_modal.preview_label": "預覽 ({ratio})", "upload_progress.label": "上傳中...", + "upload_progress.processing": "Processing…", "video.close": "關閉影片", "video.download": "下載檔案", "video.exit_fullscreen": "退出全螢幕", diff --git a/config/locales/activerecord.af.yml b/config/locales/activerecord.af.yml index dff778d571..18bf0388d8 100644 --- a/config/locales/activerecord.af.yml +++ b/config/locales/activerecord.af.yml @@ -29,6 +29,10 @@ af: attributes: website: invalid: is nie 'n geldige URL nie + import: + attributes: + data: + malformed: is misvormd status: attributes: reblog: @@ -38,9 +42,14 @@ af: email: blocked: maak gebruik van 'n e-pos verskaffer wat nie toegelaat word nie unreachable: blyk nie te bestaan nie + role_id: + elevated: kan nie hoër as huidige rol wees nie user_role: attributes: permissions_as_keys: + dangerous: bevat permissies wat nie veilig vir die basis rol is nie + elevated: kan nie permissies bevat wat vanaf die huidige rol ontbreek nie own_role: kan nie verander word met jou huidige rol nie position: + elevated: kan nie hoër as die huidige rol wees nie own_role: kan nie verander word met jou huidige rol nie diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index 33d86e2962..b75a3fd59a 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -29,6 +29,10 @@ da: attributes: website: invalid: "'er ikke en gyldig URL" + import: + attributes: + data: + malformed: er forkert udformet status: attributes: reblog: @@ -48,3 +52,4 @@ da: own_role: kan ikke ændres med din aktuelle rolle position: elevated: kan ikke være højere end din aktuelle rolle + own_role: kan ikke ændres med din aktuelle rolle diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml index d3c013dc0f..53a04e7000 100644 --- a/config/locales/activerecord.de.yml +++ b/config/locales/activerecord.de.yml @@ -3,7 +3,7 @@ de: activerecord: attributes: poll: - expires_at: Frist + expires_at: Abstimmungsende options: Wahlmöglichkeiten user: agreement: Service-Vereinbarung @@ -20,7 +20,7 @@ de: attributes: username: invalid: nur Buchstaben, Ziffern und Unterstriche - reserved: ist reserviert + reserved: ist bereits vergeben admin/webhook: attributes: url: @@ -29,6 +29,10 @@ de: attributes: website: invalid: ist keine gültige URL + import: + attributes: + data: + malformed: ist fehlerhaft status: attributes: reblog: diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml index 77d0c2716a..b285e457a1 100644 --- a/config/locales/activerecord.el.yml +++ b/config/locales/activerecord.el.yml @@ -21,6 +21,10 @@ el: username: invalid: μόνο γράμματα, αριθμοί και κάτω παύλες reserved: είναι δεσμευμένο + import: + attributes: + data: + malformed: δεν είναι έγκυρα status: attributes: reblog: diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index 4aec0f074f..450658fa13 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -29,6 +29,10 @@ es: attributes: website: invalid: no es una URL válida + import: + attributes: + data: + malformed: tiene un formato incorrecto status: attributes: reblog: diff --git a/config/locales/activerecord.eu.yml b/config/locales/activerecord.eu.yml index 83b01f91d9..8b83b4ef85 100644 --- a/config/locales/activerecord.eu.yml +++ b/config/locales/activerecord.eu.yml @@ -21,6 +21,18 @@ eu: username: invalid: letrak, zenbakiak eta gidoi baxuak besterik ez reserved: erreserbatuta dago + admin/webhook: + attributes: + url: + invalid: ez da baliozko URL bat + doorkeeper/application: + attributes: + website: + invalid: ez da baliozko URL bat + import: + attributes: + data: + malformed: gaizki eratua dago status: attributes: reblog: @@ -30,3 +42,14 @@ eu: email: blocked: onartu gabeko e-posta hornitzaile bat erabiltzen du unreachable: dirudienez ez da existitzen + role_id: + elevated: ezin du gaur egungo zure rola baino goragokoa izan + user_role: + attributes: + permissions_as_keys: + dangerous: oinarrizko rolarentzat seguruak ez diren baimenak ditu + elevated: ezin du eduki zure uneko rolak ez duen baimenik + own_role: ezin da aldatu zure uneko rolarekin aldatu + position: + elevated: ezin du zure uneko rola baino goragokoa izan + own_role: ezin da aldatu zure uneko rolarekin diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml index 291958d013..7af0975ff2 100644 --- a/config/locales/activerecord.fa.yml +++ b/config/locales/activerecord.fa.yml @@ -21,6 +21,18 @@ fa: username: invalid: تنها حروف، اعداد، و زیرخط reserved: محفوظ است + admin/webhook: + attributes: + url: + invalid: نشانی معتبری نیست + doorkeeper/application: + attributes: + website: + invalid: نشانی معتبری نیست + import: + attributes: + data: + malformed: بدریخت است status: attributes: reblog: @@ -30,3 +42,14 @@ fa: email: blocked: از فراهم‌کنندهٔ رایانامهٔ غیرمجازی استفاده می‌کند unreachable: به نظر نمی‌رسد وجود داشته باشد + role_id: + elevated: نمی‌تواند بالاتر از نقش کنونیتان باشد + user_role: + attributes: + permissions_as_keys: + dangerous: شاما اجازه‌هایی که برای نقش پایه امن نیستند + elevated: نمی‌تواند شامل اجازه‌هایی باشد که نقش کنونیتان ندارد + own_role: نمی‌تواند با نقش کنونیتان تغییر کند + position: + elevated: نمی‌تواند بالاتر از نقش کنونیتان باشد + own_role: نمی‌تواند با نقش کنونیتان تغییر کند diff --git a/config/locales/activerecord.gd.yml b/config/locales/activerecord.gd.yml index b210144eff..5e1657d7b7 100644 --- a/config/locales/activerecord.gd.yml +++ b/config/locales/activerecord.gd.yml @@ -29,6 +29,10 @@ gd: attributes: website: invalid: "– chan eil seo ’na URL dligheach" + import: + attributes: + data: + malformed: "– chan eil cruth dligheach air" status: attributes: reblog: diff --git a/config/locales/activerecord.id.yml b/config/locales/activerecord.id.yml index 88fdb3f756..47d200864a 100644 --- a/config/locales/activerecord.id.yml +++ b/config/locales/activerecord.id.yml @@ -29,6 +29,10 @@ id: attributes: website: invalid: bukan URL valid + import: + attributes: + data: + malformed: dalam bentuk yang salah status: attributes: reblog: @@ -38,3 +42,14 @@ id: email: blocked: menggunakan layanan email yang tidak diizinkan unreachable: sepertinya tidak ada + role_id: + elevated: tidak dapat lebih tinggi dari peran Anda saat ini + user_role: + attributes: + permissions_as_keys: + dangerous: berisi izin yang tidak aman untuk peran dasaran + elevated: tidak dapat berisi izin yang peran Anda tidak miliki + own_role: tidak dapat diubah dengan peran Anda saat ini + position: + elevated: tidak bisa lebih tinggi dari peran Anda saat ini + own_role: tidak dapat diubah dengan peran Anda saat ini diff --git a/config/locales/activerecord.ig.yml b/config/locales/activerecord.ig.yml new file mode 100644 index 0000000000..7c264f0d73 --- /dev/null +++ b/config/locales/activerecord.ig.yml @@ -0,0 +1 @@ +ig: diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index 3f25607b1f..91fa044925 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -29,6 +29,10 @@ ja: attributes: website: invalid: は無効なURLです + import: + attributes: + data: + malformed: は不正です status: attributes: reblog: diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml index 3eec2950cf..09dd5d16d1 100644 --- a/config/locales/activerecord.ku.yml +++ b/config/locales/activerecord.ku.yml @@ -29,6 +29,10 @@ ku: attributes: website: invalid: ev girêdaneke nederbasdar e + import: + attributes: + data: + malformed: xerab bûye status: attributes: reblog: diff --git a/config/locales/activerecord.my.yml b/config/locales/activerecord.my.yml new file mode 100644 index 0000000000..5e1fc6bee9 --- /dev/null +++ b/config/locales/activerecord.my.yml @@ -0,0 +1 @@ +my: diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index 68d0b77847..23d1928868 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -29,6 +29,10 @@ pl: attributes: website: invalid: nie jest poprawnym adresem URL + import: + attributes: + data: + malformed: jest uszkodzona status: attributes: reblog: diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml index 105f5a550c..fa01c9c537 100644 --- a/config/locales/activerecord.pt-BR.yml +++ b/config/locales/activerecord.pt-BR.yml @@ -29,6 +29,10 @@ pt-BR: attributes: website: invalid: não é uma URL válida + import: + attributes: + data: + malformed: está incorreto status: attributes: reblog: @@ -43,6 +47,7 @@ pt-BR: user_role: attributes: permissions_as_keys: + dangerous: inlcuir permissões que não são seguras para a função base elevated: não pode incluir permissões que a sua função atual não possui own_role: não pode ser alterado com sua função atual position: diff --git a/config/locales/activerecord.sl.yml b/config/locales/activerecord.sl.yml index 255f5e1ed9..6da0bb29c6 100644 --- a/config/locales/activerecord.sl.yml +++ b/config/locales/activerecord.sl.yml @@ -29,6 +29,10 @@ sl: attributes: website: invalid: ni veljaven URL + import: + attributes: + data: + malformed: je napačno oblikovan status: attributes: reblog: diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml index f0787dc415..c9695c1a6b 100644 --- a/config/locales/activerecord.tr.yml +++ b/config/locales/activerecord.tr.yml @@ -29,6 +29,10 @@ tr: attributes: website: invalid: geçerli bir URL değil + import: + attributes: + data: + malformed: bozulmuştur status: attributes: reblog: diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 0f4973d897..4fd3da5ae7 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -19,7 +19,7 @@ uk: account: attributes: username: - invalid: тільки літери, цифри та підкреслення + invalid: має містити лише літери, цифри та підкреслення reserved: зарезервовано admin/webhook: attributes: @@ -36,7 +36,7 @@ uk: status: attributes: reblog: - taken: статусу вже існує + taken: цього допису вже існує user: attributes: email: diff --git a/config/locales/af.yml b/config/locales/af.yml index de85a69515..038660b7a3 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -38,6 +38,8 @@ af: '429': Too many requests '500': '503': The page could not be served due to a temporary server failure. + navigation: + toggle_menu: Skakel-kieslys rss: content_warning: 'Inhoud waarskuwing:' descriptions: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 07f4ad470b..fee7f25a26 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -398,13 +398,16 @@ ar: reject_media: رفض الوسائط reject_reports: رفض الشكاوى silence: كتم + suspend: علّق الحساب policy: القواعد reason: السبب العلني title: سياسات المحتوى dashboard: instance_accounts_dimension: الحسابات الأكثر متابعة instance_accounts_measure: حسابات مخزنة + instance_follows_measure: متابِعوهم هنا instance_languages_dimension: اللغات الأكثر استخدامًا + instance_media_attachments_measure: مرفقات الوسائط المخزَّنة delivery: all: الكل clear: مسح أخطاء التسليم @@ -552,8 +555,11 @@ ar: manage_roles: إدارة الأدوار manage_rules: إدارة القواعد manage_settings: إدارة الإعدادات + manage_taxonomies: إدارة التصنيفات + manage_taxonomies_description: السماح للمستخدمين بمراجعة المحتوى المتداول وتحديث إعدادات الوسم manage_user_access: إدارة وصول المستخدم manage_users: إدارة المستخدمين + view_dashboard: عرض لوحة التحكم title: الأدوار rules: add_new: إضافة قاعدة @@ -567,6 +573,7 @@ ar: manage_rules: إدارة قواعد الخادم title: عن appearance: + preamble: تخصيص واجهة الويب لماستدون. title: المظهر branding: title: العلامة @@ -602,12 +609,19 @@ ar: report: إبلاغ deleted: محذوف favourites: المفضلة + in_reply_to: رَدًا على language: اللغة media: title: الوسائط metadata: البيانات الوصفية no_status_selected: لم يطرأ أي تغيير على أي منشور بما أنه لم يتم اختيار أي واحد + open: افتح المنشور + original_status: المنشور الأصلي + reblogs: المعاد تدوينها + status_changed: عُدّل المنشور title: منشورات الحساب + trending: المتداولة + visibility: مدى الظهور with_media: تحتوي على وسائط strikes: actions: @@ -675,6 +689,11 @@ ar: title: إدارة نماذج التحذير webhooks: delete: حذف + disable: تعطيل + disabled: معطَّل + edit: تعديل نقطة النهاية + enable: تشغيل + enabled: نشِط admin_mailer: new_appeal: actions: @@ -768,6 +787,8 @@ ar: email_below_hint_html: إذا كان عنوان البريد الإلكتروني التالي غير صحيح، فيمكنك تغييره هنا واستلام بريد إلكتروني جديد للتأكيد. email_settings_hint_html: لقد تم إرسال رسالة بريد إلكترونية للتأكيد إلى %{email}. إن كان عنوان البريد الإلكتروني غير صحيح ، يمكنك تغييره في إعدادات حسابك. title: الضبط + sign_up: + title: دعنا نجهّز %{domain}. status: account_status: حالة الحساب confirming: في انتظار اكتمال تأكيد البريد الإلكتروني. @@ -916,6 +937,8 @@ ar: title: عوامل التصفية new: title: إضافة عامل تصفية جديد + statuses: + back_to_filter: العودة إلى عامل التصفية footer: trending_now: المتداولة الآن generic: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 873d5a67ce..947329fedf 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1249,6 +1249,8 @@ ca: carry_blocks_over_text: Aquest usuari s’ha mogut des de %{acct}, que havies bloquejat. carry_mutes_over_text: Aquest usuari s’ha mogut des de %{acct}, que havies silenciat. copy_account_note_text: 'Aquest usuari s’ha mogut des de %{acct}, aquí estaven les teves notes prèvies sobre ell:' + navigation: + toggle_menu: Alternar menú notification_mailer: admin: report: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index c2ba1e0af7..f1a666e74e 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1271,6 +1271,8 @@ cs: carry_blocks_over_text: Tento účet se přesunul z %{acct}, který jste blokovali. carry_mutes_over_text: Tento účet se přesunul z %{acct}, který jste skryli. copy_account_note_text: 'Tento účet se přesunul z %{acct}, zde byly Vaše předchozí poznámky o něm:' + navigation: + toggle_menu: Přepnout menu notification_mailer: admin: report: diff --git a/config/locales/de.yml b/config/locales/de.yml index 85df6e0087..b90d8a6065 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1,21 +1,21 @@ --- de: about: - about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral – genau wie E-Mail! - contact_missing: Nicht angegeben + about_mastodon_html: 'Das soziale Netzwerk der Zukunft: Keine Werbung, keine Überwachung, dafür dezentral und mit Anstand! Starte jetzt mit Mastodon!' + contact_missing: Nicht festgelegt contact_unavailable: Nicht verfügbar hosted_on: Mastodon, gehostet auf %{domain} title: Über accounts: follow: Folgen followers: - one: Folgender + one: Follower other: Folgende following: Folgt instance_actor_flash: Dieses Konto ist ein virtueller Akteur, der den Server selbst repräsentiert und nicht ein einzelner Benutzer. Es wird für Föderationszwecke verwendet und sollte nicht gesperrt werden. last_active: zuletzt aktiv - link_verified_on: Besitz des Links wurde überprüft am %{date} - nothing_here: Hier gibt es nichts! + link_verified_on: Das Profil mit dieser E-Mail-Adresse wurde bereits am %{date} bestätigt + nothing_here: Keine Accounts mit dieser Auswahl vorhanden. pin_errors: following: Du musst dieser Person bereits folgen, um sie empfehlen zu können posts: @@ -27,51 +27,51 @@ de: action: Aktion ausführen title: Moderationsaktion auf %{acct} ausführen account_moderation_notes: - create: Notiz erstellen - created_msg: Moderationsnotiz erfolgreich erstellt! + create: Notiz abspeichern + created_msg: Moderationshinweis erfolgreich abgespeichert! destroyed_msg: Moderationsnotiz erfolgreich gelöscht! accounts: add_email_domain_block: E-Mail-Domain auf Blacklist setzen - approve: Akzeptieren + approve: Genehmigen approved_msg: Anmeldeantrag von %{username} erfolgreich genehmigt - are_you_sure: Bist du sicher? + are_you_sure: Bist du dir sicher? avatar: Profilbild by_domain: Domain change_email: - changed_msg: E-Mail erfolgreich geändert! + changed_msg: E-Mail-Adresse erfolgreich geändert! current_email: Aktuelle E-Mail-Adresse label: E-Mail-Adresse ändern new_email: Neue E-Mail-Adresse submit: E-Mail-Adresse ändern title: E-Mail-Adresse für %{username} ändern change_role: - changed_msg: Rolle erfolgreich geändert! - label: Rolle ändern - no_role: Keine Rolle - title: Rolle für %{username} ändern + changed_msg: Benutzerrechte erfolgreich aktualisiert! + label: Benutzerrechte verändern + no_role: Keine Benutzerrechte + title: Benutzerrechte für %{username} bearbeiten confirm: Bestätigen confirmed: Bestätigt - confirming: Bestätigung + confirming: Verifiziert custom: Benutzerdefiniert delete: Daten löschen deleted: Gelöscht - demote: Degradieren + demote: Zurückstufen destroyed_msg: Daten von %{username} wurden zum Löschen in die Warteschlange eingereiht - disable: Ausschalten - disable_sign_in_token_auth: Deaktiviere die Zwei-Faktor-Authentifizierung per E-Mail - disable_two_factor_authentication: 2FA abschalten - disabled: Ausgeschaltet - display_name: Anzeigename + disable: Sperren + disable_sign_in_token_auth: Deaktiviere die Zwei-Faktor-Authentisierung (2FA) per E-Mail + disable_two_factor_authentication: Zwei-Faktor-Authentisierung (2FA) deaktivieren + disabled: Gesperrte + display_name: Angezeigter Name domain: Domain edit: Bearbeiten email: E-Mail email_status: E-Mail-Status enable: Freischalten - enable_sign_in_token_auth: Aktiviere die Zwei-Faktor-Authentifizierung per E-Mail + enable_sign_in_token_auth: Aktiviere die Zwei-Faktor-Authentisierung (2FA) per E-Mail enabled: Freigegeben enabled_msg: Konto von %{username} erfolgreich freigegeben followers: Follower - follows: Folgt + follows: Folge ich header: Titelbild inbox_url: Posteingangs-URL invite_request_text: Begründung für das Beitreten @@ -134,8 +134,8 @@ de: security_measures: only_password: Nur Passwort password_and_2fa: Passwort und 2FA - sensitive: NSFW - sensitized: Als NSFW markieren + sensitive: Inhaltswarnung + sensitized: Mit Inhaltswarnung versehen shared_inbox_url: Geteilte Posteingang-URL show: created_reports: Erstellte Meldungen @@ -153,7 +153,7 @@ de: unblock_email: E-Mail Adresse entsperren unblocked_email_msg: Die E-Mail-Adresse von %{username} wurde erfolgreich entsperrt unconfirmed_email: Unbestätigte E-Mail-Adresse - undo_sensitized: Nicht mehr als NSFW markieren + undo_sensitized: Inhaltswarnung aufheben undo_silenced: Stummschaltung aufheben undo_suspension: Verbannung aufheben unsilenced_msg: Konto von %{username} erfolgreich freigegeben @@ -196,10 +196,10 @@ de: destroy_user_role: Rolle löschen disable_2fa_user: 2FA deaktivieren disable_custom_emoji: Benutzerdefiniertes Emoji deaktivieren - disable_sign_in_token_auth_user: Zwei-Faktor-Authentifizierung per E-Mail für den Nutzer deaktiviert + disable_sign_in_token_auth_user: Zwei-Faktor-Authentisierung (2FA) per E-Mail für diesen Account deaktivieren disable_user: Benutzer deaktivieren enable_custom_emoji: Benutzerdefiniertes Emoji aktivieren - enable_sign_in_token_auth_user: Zwei-Faktor-Authentifizierung per E-Mail für den Nutzer aktiviert + enable_sign_in_token_auth_user: Zwei-Faktor-Authentisierung (2FA) per E-Mail für diesen Account aktivieren enable_user: Benutzer aktivieren memorialize_account: Account deaktivieren promote_user: Benutzer befördern @@ -267,12 +267,12 @@ de: reopen_report_html: "%{name} hat die Meldung %{target} wieder geöffnet" reset_password_user_html: "%{name} hat das Passwort von %{target} zurückgesetzt" resolve_report_html: "%{name} hat die Meldung %{target} bearbeitet" - sensitive_account_html: "%{name} markierte die Medien von %{target} als NSFW" + sensitive_account_html: "%{name} hat die Medien von %{target} mit einer Inhaltswarnung versehen" silence_account_html: "%{name} hat das Konto von %{target} stummgeschaltet" suspend_account_html: "%{name} hat das Konto von %{target} verbannt" unassigned_report_html: "%{name} hat die Zuweisung der Meldung %{target} entfernt" unblock_email_account_html: "%{name} entsperrte die E-Mail-Adresse von %{target}" - unsensitive_account_html: "%{name} markierte Medien von %{target} als nicht NSFW" + unsensitive_account_html: "%{name} hob die Inhaltswarnung für Medien von %{target} auf" unsilence_account_html: "%{name} hat die Stummschaltung von %{target} aufgehoben" unsuspend_account_html: "%{name} hat die Verbannung von %{target} aufgehoben" update_announcement_html: "%{name} aktualisierte Ankündigung %{target}" @@ -339,7 +339,7 @@ de: dashboard: active_users: Aktive Benutzer interactions: Interaktionen - media_storage: Medienspeicher + media_storage: Medien new_users: Neue Benutzer opened_reports: Erstellte Meldungen pending_appeals_html: @@ -548,7 +548,7 @@ de: action_taken_by: Maßnahme ergriffen durch actions: delete_description_html: Der gemeldete Beitrag wird gelöscht und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen. - mark_as_sensitive_description_html: Die Medien in den gemeldeten Beiträgen werden als NSFW markiert und ein Strike wird notiert, um dir dabei zu helfen, härter auf zukünftige Zuwiderhandlungen desselben Kontos zu reagieren. + mark_as_sensitive_description_html: Die Medien in den gemeldeten Beiträgen werden mit einer Inhaltswarnung (NSFW) versehen und der Vorfall wird gesichert, um bei zukünftigen Verstößen desselben Kontos besser reagieren zu können. other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation mit dem gemeldeten Konto. resolve_description_html: Es wird keine Maßnahme gegen das gemeldete Konto ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen. silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die ihm bereits folgen oder es manuell nachschlagen, und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden. @@ -569,7 +569,7 @@ de: forwarded: Weitergeleitet forwarded_to: Weitergeleitet an %{domain} mark_as_resolved: Als gelöst markieren - mark_as_sensitive: Als NSFW markieren + mark_as_sensitive: Mit einer Inhaltswarnung (NSFW) versehen mark_as_unresolved: Als ungelöst markieren no_one_assigned: Niemand notes: @@ -601,8 +601,8 @@ de: roles: add_new: Rolle hinzufügen assigned_users: - one: "%{count} Benutzer" - other: "%{count} Benutzer" + one: "%{count} Account" + other: "%{count} Accounts" categories: administration: Administration devops: DevOps @@ -647,7 +647,7 @@ de: manage_taxonomies: Taxonomien verwalten manage_taxonomies_description: Ermöglicht Benutzern die Überprüfung angesagter Inhalte und das Aktualisieren der Hashtag-Einstellungen manage_user_access: Benutzerzugriff verwalten - manage_user_access_description: Erlaubt es Benutzern, die Zwei-Faktor-Authentifizierung anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen + manage_user_access_description: Erlaubt es Benutzer*innen, die Zwei-Faktor-Authentisierung (2FA) anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen manage_users: Benutzer verwalten manage_users_description: Erlaubt es Benutzern, die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen manage_webhooks: Webhooks verwalten @@ -668,17 +668,24 @@ de: title: Server-Regeln settings: about: + manage_rules: Serverregeln verwalten + preamble: Schildere ausführlich, wie Dein Server betrieben, moderiert und finanziert wird. rules_hint: Es gibt einen eigenen Bereich für Regeln, an die sich Ihre Benutzer halten sollen. title: Über appearance: preamble: Passen Sie Mastodons Weboberfläche an. title: Darstellung branding: + preamble: Das Branding Ihres Servers unterscheidet ihn von anderen Servern im Netzwerk. Diese Informationen können in einer Vielzahl von Umgebungen angezeigt werden, z. B. in der Weboberfläche von Mastodon, in nativen Anwendungen, in Linkvorschauen auf anderen Websites und in Messaging-Apps und so weiter. Aus diesem Grund ist es am besten, diese Informationen klar, kurz und prägnant zu halten. title: Branding content_retention: preamble: Steuern Sie, wie nutzergenerierte Inhalte in Mastodon gespeichert werden. + title: Aufbewahrung von Inhalten discovery: follow_recommendations: Folgeempfehlungen + preamble: Das Auffinden interessanter Inhalte ist wichtig, um neue Nutzer einzubinden, die Mastodon noch nicht kennen. Bestimmen Sie, wie verschiedene Suchfunktionen auf Ihrem Server funktionieren. + profile_directory: Benutzerverzeichnis + public_timelines: Öffentliche Timelines title: Entdecken trends: Trends domain_blocks: @@ -686,6 +693,7 @@ de: disabled: An niemanden users: Für angemeldete lokale Benutzer registrations: + preamble: Lege fest, wer auf Deinem Server ein Konto erstellen darf. title: Registrierungen registrations_mode: modes: @@ -697,24 +705,37 @@ de: delete: Hochgeladene Datei löschen destroyed_msg: Upload erfolgreich gelöscht! statuses: + account: Autor + application: Anwendung back_to_account: Zurück zum Konto back_to_report: Zurück zur Seite mit den Meldungen batch: remove_from_report: Von der Meldung entfernen report: Meldung deleted: Gelöscht + favourites: Favoriten + history: Versionsverlauf + in_reply_to: Antwortet auf + language: Sprache media: title: Medien + metadata: Metadaten no_status_selected: Keine Beiträge wurden geändert, weil keine ausgewählt wurden + open: Beitrag öffnen + original_status: Ursprünglicher Beitrag + reblogs: Geteilte Beiträge + status_changed: Beitrag bearbeitet title: Beiträge des Kontos + trending: Trends + visibility: Sichtbarkeit with_media: Mit Medien strikes: actions: delete_statuses: "%{name} hat die Beiträge von %{target} entfernt" disable: "%{name} hat das Konto von %{target} eingefroren" - mark_statuses_as_sensitive: "%{name} markierte %{target}'s Beiträge als NSFW" + mark_statuses_as_sensitive: "%{name} hat die Beiträge von %{target} mit einer Inhaltswarnung (NSFW) versehen" none: "%{name} hat eine Warnung an %{target} gesendet" - sensitive: "%{name} markierte das Konto von %{target} als NSFW" + sensitive: "%{name} hat das Profil von %{target} mit einer Inhaltswarnung (NSFW) versehen" silence: "%{name} hat das Konto von %{target} eingeschränkt" suspend: "%{name} hat das Konto von %{target} verbannt" appeal_approved: Einspruch angenommen @@ -830,9 +851,9 @@ de: actions: delete_statuses: deren Beiträge zu löschen disable: deren Konto einzufrieren - mark_statuses_as_sensitive: um ihre Beiträge als NSFW zu markieren + mark_statuses_as_sensitive: um die Beiträge des Profils mit einer Inhaltswarnung (NSFW) zu versehen none: eine Warnung - sensitive: deren Konto als NSFW zu markieren + sensitive: um das Profil mit einer Inhaltswarnung (NSFW) zu versehen silence: deren Konto zu beschränken suspend: deren Konto zu sperren body: "%{target} hat etwas gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:" @@ -865,7 +886,7 @@ de: remove: Alle Aliase aufheben appearance: advanced_web_interface: Fortgeschrittene Benutzeroberfläche - advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, erlaubt es dir die fortgeschrittene Benutzeroberfläche, viele unterschiedliche Spalten auf einmal zu sehen, wie z.B. deine Startseite, Benachrichtigungen, das gesamte bekannte Netz, deine Listen und beliebige Hashtags. + advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, kannst du mit der fortgeschrittenen Benutzeroberfläche weitere Spalten hinzufügen und dadurch mehr Informationen auf einmal sehen, z. B. deine Startseite, die Mitteilungen, die vereinigte Timeline sowie beliebig viele deiner Listen und Hashtags. animations_and_accessibility: Animationen und Barrierefreiheit confirmation_dialogs: Bestätigungsfenster discovery: Entdecken @@ -873,8 +894,8 @@ de: body: Mastodon wurde von Freiwilligen übersetzt. guide_link: https://de.crowdin.com/project/mastodon guide_link_text: Jeder kann etwas dazu beitragen. - sensitive_content: NSFW - toot_layout: Beitragslayout + sensitive_content: Inhaltswarnung (NSFW) + toot_layout: Timeline-Layout application_mailer: notification_preferences: Ändere E-Mail-Einstellungen salutation: "%{name}," @@ -1017,9 +1038,9 @@ de: title_actions: delete_statuses: Post-Entfernung disable: Einfrieren des Kontos - mark_statuses_as_sensitive: Das Markieren der Beiträge als NSFW + mark_statuses_as_sensitive: Beiträge mit einer Inhaltswarnung (NSFW) versehen none: Warnung - sensitive: Das Markieren des Kontos als NSFW + sensitive: Profil mit einer Inhaltswarnung (NSFW) versehen silence: Kontobeschränkung suspend: Kontosperre your_appeal_approved: Dein Einspruch wurde angenommen @@ -1049,29 +1070,29 @@ de: archive_takeout: date: Datum download: Dein Archiv herunterladen - hint_html: Du kannst ein Archiv deiner Beiträge und hochgeladenen Medien anfragen. Die exportierten Daten werden in dem ActivityPub-Format gespeichert, welches mit jeder Software lesbar ist, die das Format unterstützt. Du kannst alle 7 Tage ein Archiv anfordern. - in_progress: Stelle dein Archiv zusammen... - request: Dein Archiv anfragen + hint_html: Du kannst ein Archiv deiner Beiträge, Listen, hochgeladenen Medien, usw. anfordern. Die exportierten Daten werden in dem ActivityPub-Format gespeichert und können mit jeder passenden Software gelesen werden. Du kannst alle 7 Tage ein Archiv anfordern. + in_progress: Dein persönliches Archiv wird erstellt... + request: Dein Archiv anfordern size: Größe - blocks: Du hast blockiert + blocks: Blockierte Accounts bookmarks: Lesezeichen csv: CSV - domain_blocks: Domainblockaden + domain_blocks: Blockierte Domains lists: Listen - mutes: Du hast stummgeschaltet + mutes: Stummgeschaltete Accounts storage: Medienspeicher featured_tags: add_new: Neu hinzufügen errors: limit: Du hast bereits die maximale Anzahl an empfohlenen Hashtags erreicht - hint_html: "Was sind empfohlene Hashtags? Sie werden in deinem öffentlichen Profil deutlich angezeigt und ermöglichen es den Menschen, deine öffentlichen Beiträge speziell unter diesen Hashtags zu durchsuchen. Sie sind ein großartiges Werkzeug, um kreative Werke oder langfristige Projekte zu verfolgen." + hint_html: "Was sind empfohlene Hashtags? Sie werden in deinem öffentlichen Profil hervorgehoben und ermöglichen es den Menschen, deine öffentlichen Beiträge speziell unter diesen Hashtags zu durchsuchen. Sie sind ein großartiges Werkzeug, um kreative Werke oder langfristige Projekte zu verfolgen." filters: contexts: account: Profile home: Startseite - notifications: Benachrichtigungen - public: Öffentliche Zeitleisten - thread: Gespräche + notifications: Mitteilungen + public: Öffentliche Timelines + thread: Unterhaltungen edit: add_keyword: Stichwort hinzufügen keywords: Stichwörter @@ -1084,7 +1105,7 @@ de: index: contexts: Filter in %{contexts} delete: Löschen - empty: Du hast keine Filter. + empty: Du hast noch keine Filter gesetzt. expires_in: Läuft ab in %{distance} expires_on: Läuft am %{date} ab keywords: @@ -1149,7 +1170,7 @@ de: domain_blocking: Domain-Blockliste following: Folgeliste muting: Stummschaltungsliste - upload: Hochladen + upload: Liste importieren invites: delete: Deaktivieren expired: Abgelaufen @@ -1161,7 +1182,7 @@ de: '604800': 1 Woche '86400': 1 Tag expires_in_prompt: Nie - generate: Generieren + generate: Einladungslink erstellen invited_by: 'Du wurdest eingeladen von:' max_uses: one: 1 mal verwendet @@ -1170,7 +1191,7 @@ de: prompt: Generiere und teile Links, um Zugang zu diesem Server zu erteilen table: expires_at: Läuft ab - uses: Verwendungen + uses: Verwendet title: Leute einladen lists: errors: @@ -1181,7 +1202,7 @@ de: password: Passwort sign_in_token: E-Mail Sicherheitscode webauthn: Sicherheitsschlüssel - description_html: Wenn du Aktivitäten siehst, die du nicht erkennst, solltest du dein Passwort ändern und die Zwei-Faktor-Authentifizierung aktivieren. + description_html: Wenn du verdächtige Aktivitäten bemerkst, die du nicht verstehst oder zuordnen kannst, solltest du dringend dein Passwort ändern und ungeachtet dessen die Zwei-Faktor-Authentisierung (2FA) aktivieren. empty: Kein Authentifizierungsverlauf verfügbar failed_sign_in_html: Fehler beim Anmeldeversuch mit %{method} von %{ip} (%{browser}) successful_sign_in_html: Erfolgreiche Anmeldung mit %{method} von %{ip} (%{browser}) @@ -1202,14 +1223,14 @@ de: move_to_self: darf nicht das aktuelles Konto sein not_found: kann nicht gefunden werden on_cooldown: Die Abklingzeit läuft gerade - followers_count: Folgende zur Zeit des Verschiebens + followers_count: Anzahl der Follower zum Zeitpunkt der Migration des Accounts incoming_migrations: Ziehe von einem anderen Konto um incoming_migrations_html: Um von einem anderen Konto zu diesem zu wechseln, musst du zuerst einen Kontoalias erstellen. - moved_msg: Dein Konto wird jetzt zu %{acct} weitergeleitet und deine Folgende werden verschoben. + moved_msg: Dein altes Profil wird jetzt zum neuen Account %{acct} weitergeleitet und deine Follower werden übertragen. not_redirecting: Dein Konto wird derzeit nicht auf ein anderes Konto weitergeleitet. on_cooldown: Du hast dein Konto vor kurzem migriert. Diese Funktion wird in %{count} Tagen wieder verfügbar sein. past_migrations: Vorherige Migrationen - proceed_with_move: Folgende verschieben + proceed_with_move: Follower übertragen redirected_msg: Dein Konto wird nun zu %{acct} weitergeleitet. redirecting_to: Dein Konto wird zu %{acct} weitergeleitet. set_redirect: Umleitung einrichten @@ -1218,7 +1239,7 @@ de: before: 'Bevor du fortfährst, lies bitte diese Hinweise sorgfältig durch:' cooldown: Nach dem Migrieren wird es eine Abklingzeit geben, in der du das Konto nicht noch einmal migrieren kannst disabled_account: Dein aktuelles Konto wird nachher nicht vollständig nutzbar sein. Du hast jedoch Zugriff auf den Datenexport sowie die Reaktivierung. - followers: Diese Aktion wird alle Folgende vom aktuellen Konto auf das neue Konto verschieben + followers: Alle Follower werden vom aktuellen zum neuen Konto übertragen only_redirect_html: Alternativ kannst du nur eine Weiterleitung auf dein Profil erstellen. other_data: Keine anderen Daten werden automatisch verschoben redirect: Das Profil deines aktuellen Kontos wird mit einer Weiterleitungsnachricht versehen und von Suchanfragen ausgeschlossen @@ -1226,8 +1247,10 @@ de: title: Moderation move_handler: carry_blocks_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du blockiert hast. - carry_mutes_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du stummgeschaltet hast. + carry_mutes_over_text: Das Profil wurde von %{acct} übertragen – und dieses hattest du stummgeschaltet. copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier sind deine letzten Notizen zu diesem Benutzer:' + navigation: + toggle_menu: Menü umschalten notification_mailer: admin: report: @@ -1255,7 +1278,7 @@ de: poll: subject: Eine Umfrage von %{name} ist beendet reblog: - body: "%{name} hat deinen Beitrag geteilt:" + body: 'Deinen Beitrag hat %{name} geteilt:' subject: "%{name} hat deinen Beitrag geteilt" title: Dein Beitrag wurde geteilt status: @@ -1263,9 +1286,9 @@ de: update: subject: "%{name} bearbeitete einen Beitrag" notifications: - email_events: Ereignisse für E-Mail-Benachrichtigungen - email_events_hint: 'Wähle Ereignisse, für die du Benachrichtigungen erhalten möchtest:' - other_settings: Weitere Benachrichtigungseinstellungen + email_events: Benachrichtigungen per E-Mail + email_events_hint: Eine E-Mail erhalten, ... + other_settings: Weitere Einstellungen number: human: decimal_units: @@ -1278,10 +1301,10 @@ de: trillion: T otp_authentication: code_hint: Gib den von deiner Authentifizierungs-App generierten Code ein, um deine Anmeldung zu bestätigen - description_html: Wenn du Zwei-Faktor-Authentifizierung mit einer Authentifizierungs-App aktivierst, musst du, um dich anzumelden, im Besitz deines Smartphones sein, welches Tokens für dein Konto generiert. + description_html: Wenn du die Zwei-Faktor-Authentisierung (2FA) mit einer Authentifizierungs-App deines Smartphones aktivierst, benötigst du neben dem regulären Passwort zusätzlich auch den zeitbasierten Code der 2FA-App, um dich einloggen zu können. enable: Aktivieren - instructions_html: "Scanne diesen QR-Code in Google Authenticator oder einer ähnlichen TOTP-App auf deinem Handy. Von nun an generiert diese App Tokens, die du beim Anmelden eingeben musst." - manual_instructions: 'Wenn du den QR-Code nicht scannen kannst und ihn manuell eingeben musst, ist hier das Klartext-Geheimnis:' + instructions_html: "Scanne diesen QR-Code mit einer TOTP-App (wie dem Google Authenticator). Die 2FA-App generiert dann zeitbasierte Codes, die du beim Login zusätzlich zum regulären Passwort eingeben musst." + manual_instructions: Wenn du den QR-Code nicht einscannen kannst, sondern die Zahlenfolge manuell eingeben musst, ist hier der geheime Token für deine 2FA-App. setup: Einrichten wrong_code: Der eingegebene Code war ungültig! Sind die Serverzeit und die Gerätezeit korrekt? pagination: @@ -1302,9 +1325,9 @@ de: too_few_options: muss mindestens einen Eintrag haben too_many_options: kann nicht mehr als %{max} Einträge beinhalten preferences: - other: Weiteres + other: Erweitert posting_defaults: Standardeinstellungen für Beiträge - public_timelines: Öffentliche Zeitleisten + public_timelines: Öffentliche Timelines privacy_policy: title: Datenschutzerklärung reactions: @@ -1315,8 +1338,8 @@ de: activity: Kontoaktivität dormant: Inaktiv follow_selected_followers: Ausgewählte Follower folgen - followers: Folgende - following: Folgt + followers: Follower + following: Folge ich invited: Eingeladen last_active: Zuletzt aktiv most_recent: Neuste @@ -1376,10 +1399,10 @@ de: ios: iOS linux: Linux mac: Mac - other: unbekannte Plattform + other: unbekanntes Betriebssystem windows: Windows windows_mobile: Windows Mobile - windows_phone: Windows Handy + windows_phone: Windows Phone revoke: Schließen revoke_success: Sitzung erfolgreich geschlossen title: Sitzungen @@ -1394,18 +1417,18 @@ de: delete: Konto löschen development: Entwicklung edit_profile: Profil bearbeiten - export: Datenexport + export: Export featured_tags: Empfohlene Hashtags - import: Datenimport + import: Import import_and_export: Importieren und Exportieren migrate: Konto-Umzug notifications: Benachrichtigungen preferences: Einstellungen profile: Profil - relationships: Folgende und Gefolgte + relationships: Folge ich und Follower statuses_cleanup: Automatische Löschung strikes: Strikes - two_factor_authentication: Zwei-Faktor-Auth + two_factor_authentication: Zwei-Faktor-Authentisierung (2FA) webauthn_authentication: Sicherheitsschlüssel statuses: attached: @@ -1437,8 +1460,8 @@ de: reblog: Du kannst keine geteilten Beiträge anheften poll: total_people: - one: "%{count} Person" - other: "%{count} Personen" + one: "%{count} Stimme" + other: "%{count} Stimmen" total_votes: one: "%{count} Stimme" other: "%{count} Stimmen" @@ -1451,19 +1474,19 @@ de: title: '%{name}: "%{quote}"' visibilities: direct: Direktnachricht - private: Nur Folgende - private_long: Nur für Folgende sichtbar + private: Nur eigene Follower + private_long: Nur für deine eigenen Follower sichtbar public: Öffentlich public_long: Für alle sichtbar unlisted: Nicht gelistet - unlisted_long: Für alle sichtbar, aber nicht in öffentlichen Zeitleisten aufgelistet + unlisted_long: Für alle sichtbar, aber in öffentlichen Timelines nicht aufgelistet statuses_cleanup: enabled: Automatisch alte Beiträge löschen enabled_hint: Löscht automatisch deine Beiträge, sobald sie einen bestimmten Altersgrenzwert erreicht haben, es sei denn, sie entsprechen einer der folgenden Ausnahmen exceptions: Ausnahmen explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit, bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht. ignore_favs: Favoriten ignorieren - ignore_reblogs: Boosts ignorieren + ignore_reblogs: Geteilte Beiträge ignorieren interaction_exceptions: Ausnahmen basierend auf Interaktionen interaction_exceptions_explanation: Beachte, dass es keine Garantie für das Löschen von Beiträgen gibt, wenn sie nach einem Übertritt des Favoriten- oder Boost-Schwellenwert wieder unter diesen fallen. keep_direct: Direktnachrichten behalten @@ -1488,14 +1511,14 @@ de: '63113904': 2 Jahre '7889238': 3 Monate min_age_label: Altersgrenze - min_favs: Behalte Beiträge, die öfter favorisiert wurden als - min_favs_hint: Löscht keine deiner Beiträge, die mehr als diese Anzahl an Favoriten erhalten haben. Leer lassen, um Beiträge zu löschen, unabhängig von ihrer Anzahl an Favoriten - min_reblogs: Behalte Beiträge, die öfter geteilt wurden als - min_reblogs_hint: Löscht keine deiner Beiträge, die mehr als diese Anzahl geteilt wurden. Lasse leer, um Beiträge zu löschen, unabhängig von ihrer Anzahl an Boosts + min_favs: Behalte Beiträge, die häufiger favorisiert wurden als ... + min_favs_hint: Lösche keine deiner Beiträge, die häufiger als diese Anzahl favorisiert worden sind. Lass das Feld leer, um alle Beiträge unabhängig der Anzahl der Favoriten zu löschen + min_reblogs: Behalte Beiträge, die häufiger geteilt wurden als ... + min_reblogs_hint: Lösche keine deiner Beiträge, die mehr als diese Anzahl geteilt wurden. Lasse das Feld leer, um alle Beiträge unabhängig der Anzahl der geteilten Beiträge zu löschen stream_entries: pinned: Angehefteter Beitrag reblogged: teilte - sensitive_content: NSFW + sensitive_content: Inhaltswarnung (NSFW) strikes: errors: too_late: Es ist zu spät, um gegen diese Verwarnung Einspruch zu erheben @@ -1513,15 +1536,15 @@ de: two_factor_authentication: add: Hinzufügen disable: Deaktivieren - disabled_success: Zwei-Faktor-Authentifizierung erfolgreich deaktiviert + disabled_success: Zwei-Faktor-Authentisierung (2FA) erfolgreich deaktiviert edit: Bearbeiten - enabled: Zwei-Faktor-Authentisierung ist aktiviert - enabled_success: Zwei-Faktor-Authentisierung erfolgreich aktiviert - generate_recovery_codes: Wiederherstellungscodes generieren - lost_recovery_codes: Wiederherstellungscodes erlauben es dir, wieder Zugang zu deinem Konto zu erlangen, falls du dein Telefon verlieren solltest. Wenn du deine Wiederherstellungscodes verloren hast, kannst du sie hier neu generieren. Deine alten Wiederherstellungscodes werden damit ungültig gemacht. - methods: Zwei-Faktor-Methoden + enabled: Zwei-Faktor-Authentisierung (2FA) ist aktiviert + enabled_success: Zwei-Faktor-Authentisierung (2FA) erfolgreich aktiviert + generate_recovery_codes: Wiederherstellungscodes erstellen + lost_recovery_codes: Wiederherstellungscodes erlauben es dir, wieder Zugang zu deinem Konto zu erlangen, falls du keinen Zugriff mehr auf die Zwei-Faktor-Authentisierung (2FA) oder den Sicherheitsschlüssel hast. Solltest Du diese Wiederherstellungscodes verloren haben, kannst du sie hier neu generieren. Deine alten, bereits erstellten Wiederherstellungscodes werden dadurch ungültig. + methods: Methoden der Zwei-Faktor-Authentisierung (2FA) otp: Authentifizierungs-App - recovery_codes: Wiederherstellungs-Codes sichern + recovery_codes: Wiederherstellungscodes sichern recovery_codes_regenerated: Wiederherstellungscodes erfolgreich neu generiert recovery_instructions_html: Wenn du den Zugang zu deinem Telefon verlieren solltest, kannst du einen untenstehenden Wiederherstellungscode benutzen, um wieder auf dein Konto zugreifen zu können. Bewahre die Wiederherstellungscodes gut auf. Du könntest sie beispielsweise ausdrucken und bei deinen restlichen wichtigen Dokumenten aufbewahren. webauthn: Sicherheitsschlüssel @@ -1537,13 +1560,13 @@ de: title: Einspruch abgelehnt backup_ready: explanation: Du hast ein vollständiges Backup von deinem Mastodon-Konto angefragt. Es kann jetzt heruntergeladen werden! - subject: Dein Archiv ist bereit zum Download + subject: Dein persönliches Archiv ist bereit zum Download title: Archiv-Download suspicious_sign_in: change_password: dein Passwort zu ändern details: 'Hier sind die Details des Versuchs:' explanation: Wir haben eine Anmeldung zu deinem Konto von einer neuen IP-Adresse festgestellt. - further_actions_html: Wenn du das nicht warst, empfehlen wir dir, %{action} und die Zwei-Faktor-Authentifizierung zu aktivieren, um dein Konto sicher zu halten. + further_actions_html: Wenn du das nicht warst, empfehlen wir dir schnellstmöglich, %{action} und die Zwei-Faktor-Authentisierung (2FA) für deinen Account zu aktivieren, um dein Konto abzusichern. subject: Es wurde auf dein Konto von einer neuen IP-Adresse zugegriffen title: Eine neue Anmeldung warning: @@ -1551,11 +1574,11 @@ de: appeal_description: Wenn du glaubst, dass es sich um einen Fehler handelt, kannst du einen Einspruch an die Administration von %{instance} senden. categories: spam: Spam - violation: Inhalt verletzt die folgenden Community-Richtlinien + violation: Inhalt verstößt gegen die folgenden Community-Richtlinien explanation: delete_statuses: Einige deiner Beiträge wurden als Verstoß gegen eine oder mehrere Communityrichtlinien erkannt und von den Moderator_innen von %{instance} entfernt. disable: Du kannst dein Konto nicht mehr verwenden, aber dein Profil und andere Daten bleiben unversehrt. Du kannst ein Backup deiner Daten anfordern, die Kontoeinstellungen ändern oder dein Konto löschen. - mark_statuses_as_sensitive: Einige deiner Beiträge wurden von den Moderator_innen von %{instance} als NSFW markiert. Das bedeutet, dass die Nutzer die Medien in den Beiträgen antippen müssen, bevor eine Vorschau angezeigt wird. Du kannst Medien in Zukunft als NSFW markieren, wenn du Beiträge verfasst. + mark_statuses_as_sensitive: Ein oder mehrere Deiner Beiträge wurden von den Moderator*innen der Instanz %{instance} mit einer Inhaltswarnung (NSFW) versehen. Das bedeutet, dass Besucher*innen diese Medien in den Beiträgen zunächst antippen müssen, um die Vorschau anzuzeigen. Beim Verfassen der nächsten Beiträge kannst du auch selbst eine Inhaltswarnung für hochgeladene Medien festlegen. sensitive: Von nun an werden alle deine hochgeladenen Mediendateien als sensibel markiert und hinter einer Warnung versteckt. silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen, und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. suspend: Du kannst dein Konto nicht mehr verwenden, und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst. @@ -1564,17 +1587,17 @@ de: subject: delete_statuses: Deine Beiträge auf %{acct} wurden entfernt disable: Dein Konto %{acct} wurde eingefroren - mark_statuses_as_sensitive: Deine Beiträge auf %{acct} wurden als NSFW markiert + mark_statuses_as_sensitive: Die Beiträge deines Profils %{acct} wurden mit einer Inhaltswarnung (NSFW) versehen none: Warnung für %{acct} - sensitive: Deine Beiträge auf %{acct} werden von nun an als NSFW markiert + sensitive: Die Beiträge deines Profils %{acct} werden künftig mit einer Inhaltswarnung (NSFW) versehen silence: Dein Konto %{acct} wurde limitiert suspend: Dein Konto %{acct} wurde gesperrt title: delete_statuses: Beiträge entfernt disable: Konto eingefroren - mark_statuses_as_sensitive: Als NSFW markierte Beiträge + mark_statuses_as_sensitive: Mit einer Inhaltswarnung (NSFW) versehene Beiträge none: Warnung - sensitive: Als NSFW markiertes Konto + sensitive: Profil mit einer Inhaltswarnung (NSFW) versehen silence: Konto limitiert suspend: Konto gesperrt welcome: @@ -1582,14 +1605,14 @@ de: edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst, deinen Anzeigenamen änderst und viel mehr. Du kannst optional einstellen, ob du Accounts, die dir folgen wollen, akzeptieren musst, bevor sie dies können. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten - final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Du kannst dich unter dem Hashtag #introductions vorstellen, wenn du magst.' + final_step: 'Fang jetzt an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel in der lokalen Timeline oder über die Hashtags. Möglicherweise möchtest du dich allen mit dem Hashtag #introductions vorstellen?' full_handle: Dein vollständiger Benutzername full_handle_hint: Dies ist, was du deinen Freunden sagen kannst, damit sie dich anschreiben oder dir von einem anderen Server folgen können. subject: Willkommen bei Mastodon title: Willkommen an Bord, %{name}! users: follow_limit_reached: Du kannst nicht mehr als %{limit} Leuten folgen - invalid_otp_token: Ungültiger Zwei-Faktor-Authentisierungs-Code + invalid_otp_token: Ungültiger Code der Zwei-Faktor-Authentisierung (2FA) otp_lost_help_html: Wenn Du beides nicht mehr weißt, melde Dich bei uns unter der E-Mailadresse %{email} seamless_external_login: Du bist angemeldet über einen Drittanbieter-Dienst, weswegen Passwort- und E-Maileinstellungen nicht verfügbar sind. signed_in_as: 'Angemeldet als:' @@ -1611,5 +1634,5 @@ de: nickname_hint: Gib den Spitznamen deines neuen Sicherheitsschlüssels ein not_enabled: Du hast WebAuthn noch nicht aktiviert not_supported: Dieser Browser unterstützt keine Sicherheitsschlüssel - otp_required: Um Sicherheitsschlüssel zu verwenden, aktiviere zuerst die Zwei-Faktor-Authentifizierung. + otp_required: Um Sicherheitsschlüssel zu verwenden, aktiviere zunächst die Zwei-Faktor-Authentisierung (2FA). registered_on: Registriert am %{date} diff --git a/config/locales/devise.ig.yml b/config/locales/devise.ig.yml new file mode 100644 index 0000000000..7c264f0d73 --- /dev/null +++ b/config/locales/devise.ig.yml @@ -0,0 +1 @@ +ig: diff --git a/config/locales/devise.my.yml b/config/locales/devise.my.yml new file mode 100644 index 0000000000..5e1fc6bee9 --- /dev/null +++ b/config/locales/devise.my.yml @@ -0,0 +1 @@ +my: diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml index 0d9e6a56ad..baf9958128 100644 --- a/config/locales/devise.zh-TW.yml +++ b/config/locales/devise.zh-TW.yml @@ -21,7 +21,7 @@ zh-TW: action: 驗證電子信箱地址 action_with_app: 確認並返回 %{app} explanation: 您已經在 %{host} 上以此電子信箱地址建立了一支帳號。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。 - explanation_when_pending: 您使用此電子信箱地址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳號,但直到您的帳戶被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。 + explanation_when_pending: 您使用此電子信箱地址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳號,但直到您的帳號被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。 extra_html: 同時也請看看伺服器規則服務條款。 subject: Mastodon:%{instance} 確認說明 title: 驗證電子信箱地址 @@ -47,17 +47,17 @@ zh-TW: subject: Mastodon:重設密碼指引 title: 重設密碼 two_factor_disabled: - explanation: 您帳號的兩步驟驗證已停用。現在只使用電子信箱及密碼登入。 - subject: Mastodon:已停用兩步驟驗證 + explanation: 您帳號的兩階段驗證已停用。現在只使用電子信箱及密碼登入。 + subject: Mastodon:已停用兩階段驗證 title: 已停用 2FA two_factor_enabled: - explanation: 已對您的帳號啟用兩步驟驗證。登入時將需要配對之 TOTP 應用程式所產生的 Token。 - subject: Mastodon:已啟用兩步驟驗證 + explanation: 已對您的帳號啟用兩階段驗證。登入時將需要配對之 TOTP 應用程式所產生之 Token。 + subject: Mastodon:已啟用兩階段驗證 title: 已啟用 2FA two_factor_recovery_codes_changed: - explanation: 上一次的復原碼已經失效,且已產生新的。 - subject: Mastodon:兩步驟驗證復原碼已經重新產生 - title: 2FA 復原碼已變更 + explanation: 之前的備用驗證碼已經失效,且已產生新的。 + subject: Mastodon:兩階段驗證備用驗證碼已經重新產生 + title: 2FA 備用驗證碼已變更 unlock_instructions: subject: Mastodon:解鎖指引 webauthn_credential: @@ -70,16 +70,16 @@ zh-TW: subject: Mastodon:安全密鑰已移除 title: 您的一支安全密鑰已經被移除 webauthn_disabled: - explanation: 您的帳戶並沒有啟用安全密鑰認證方式。只能以 TOTP app 產生地成對 token 登入。 + explanation: 您的帳號並沒有啟用安全密鑰認證方式。只能以 TOTP app 產生地成對 token 登入。 subject: Mastodon:安全密鑰認證方式已關閉 title: 已關閉安全密鑰 webauthn_enabled: - explanation: 您的帳戶已啟用安全密鑰認證。您可以使用安全密鑰登入了。 + explanation: 您的帳號已啟用安全密鑰認證。您可以使用安全密鑰登入了。 subject: Mastodon:已啟用安全密鑰認證 title: 已啟用安全密鑰 omniauth_callbacks: failure: 無法透過 %{kind} 認證是否為您,因為「%{reason}」。 - success: 成功透過 %{kind} 帳戶登入。 + success: 成功透過 %{kind} 帳號登入。 passwords: no_token: 您必須透過密碼重設信件才能存取此頁面。若確實如此,請確定輸入的網址是完整的。 send_instructions: 若電子信箱地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 @@ -87,20 +87,20 @@ zh-TW: updated: 您的密碼已成功變更,現在已經登入。 updated_not_active: 您的密碼已成功變更。 registrations: - destroyed: 再見!您的帳戶已成功取消,期待再相逢。 + destroyed: 再見!您的帳號已成功取消,期待再相逢。 signed_up: 歡迎!您已成功註冊。 - signed_up_but_inactive: 您已註冊成功,但由於您的帳戶尚未啟用,我們暫時無法讓您登入。 - signed_up_but_locked: 您已註冊成功,但由於您的帳戶已被鎖定,我們無法讓您登入。 + signed_up_but_inactive: 您已註冊成功,但由於您的帳號尚未啟用,我們暫時無法讓您登入。 + signed_up_but_locked: 您已註冊成功,但由於您的帳號已被鎖定,我們無法讓您登入。 signed_up_but_pending: 包含確認連結的訊息已寄到您的電子信箱。按下此連結後我們將審核您的申請。核准後將通知您。 - signed_up_but_unconfirmed: 包含確認連結的訊息已寄到您的電子信箱。請前往連結以啟用帳戶。若未收到請檢查垃圾郵件資料夾。 - update_needs_confirmation: 已成功更新您的帳戶,但仍需驗證您的新信箱。請檢查電子信箱並前往確認連結來確認新信箱地址。若未收到請檢查垃圾郵件資料夾。 - updated: 您的帳戶已成功更新。 + signed_up_but_unconfirmed: 包含確認連結的訊息已寄到您的電子信箱。請前往連結以啟用帳號。若未收到請檢查垃圾郵件資料夾。 + update_needs_confirmation: 已成功更新您的帳號,但仍需驗證您的新信箱。請檢查電子信箱並前往確認連結來確認新信箱位址。若未收到請檢查垃圾郵件資料夾。 + updated: 您的帳號已成功更新。 sessions: already_signed_out: 已成功登出。 signed_in: 已成功登入。 signed_out: 已成功登出。 unlocks: - send_instructions: 幾分鐘後您將收到解鎖帳戶的指引信件。若未收到請檢查垃圾郵件資料夾。 + send_instructions: 幾分鐘後您將收到解鎖帳號的指引信件。若未收到請檢查垃圾郵件資料夾。 send_paranoid_instructions: 若此帳號存在,您將在幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。 unlocked: 已解鎖您的帳號,請登入繼續。 errors: diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml index e4668a50fd..ac12cff217 100644 --- a/config/locales/doorkeeper.de.yml +++ b/config/locales/doorkeeper.de.yml @@ -72,7 +72,7 @@ de: revoke: Bist du sicher? index: authorized_at: Autorisiert am %{date} - description_html: Dies sind Anwendungen, die über die Programmierschnittstelle auf dein Konto zugreifen können. Wenn es Anwendungen gibt, die du hier nicht erkennst, oder wenn eine Anwendung sich falsch bzw. verdächtig verhält, kannst du den Zugriff widerrufen. + description_html: Dies sind Anwendungen, die über die Programmierschnittstelle (API) dieser Mastodon-Instanz auf dein Konto zugreifen können. Sollten hier Apps aufgeführt sein, die du nicht erkennst oder die sich verdächtig verhalten, solltest du den Zugriff schnellstmöglich widerrufen. last_used_at: Zuletzt verwendet am %{date} never_used: Nie verwendet scopes: Berechtigungen @@ -130,7 +130,7 @@ de: favourites: Favoriten filters: Filter follow: Beziehungen - follows: Folgt + follows: Folge ich lists: Listen media: Medienanhänge mutes: Stummschaltungen diff --git a/config/locales/doorkeeper.ig.yml b/config/locales/doorkeeper.ig.yml new file mode 100644 index 0000000000..7c264f0d73 --- /dev/null +++ b/config/locales/doorkeeper.ig.yml @@ -0,0 +1 @@ +ig: diff --git a/config/locales/doorkeeper.my.yml b/config/locales/doorkeeper.my.yml new file mode 100644 index 0000000000..5e1fc6bee9 --- /dev/null +++ b/config/locales/doorkeeper.my.yml @@ -0,0 +1 @@ +my: diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml index 76f3b88c36..ac9e97b551 100644 --- a/config/locales/doorkeeper.nl.yml +++ b/config/locales/doorkeeper.nl.yml @@ -72,6 +72,7 @@ nl: revoke: Weet je het zeker? index: authorized_at: Toestemming verleent op %{date} + description_html: Dit zijn toepassingen die toegang hebben tot uw account via de API. Als er toepassingen tussen staan die u niet herkent of een toepassing zich misdraagt, kunt u de toegang van de toepassing intrekken. last_used_at: Voor het laatst gebruikt op %{date} never_used: Nooit gebruikt scopes: Toestemmingen diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml index 79b09cdb20..563d20e323 100644 --- a/config/locales/doorkeeper.uk.yml +++ b/config/locales/doorkeeper.uk.yml @@ -48,7 +48,7 @@ uk: title: Новий додаток show: actions: Дії - application_id: ID додатку + application_id: Ключ застосунку callback_urls: URL зворотніх викликів scopes: Дозволи secret: Таємниця @@ -84,7 +84,7 @@ uk: credential_flow_not_configured: Не вдалося перевірити парольні дані клієнту через неналаштований параметр Doorkeeper.configure.resource_owner_from_credentials. invalid_client: Не вдалося аутентифікувати клієнта (клієнт невідомий, аутентифікацію клієнта не увімкнено, або непідтримуваний метод аутентифікації). invalid_grant: Наданий санкціонований дозвіл недійсний, прострочений, анульований, не відповідає URI перенаправлення, що використовується в запиті авторизації, або був виданий іншому клієнту. - invalid_redirect_uri: Включений URI перенаправлення не є дійсним. + invalid_redirect_uri: Включений uri перенаправлення не є дійсним. invalid_request: missing_param: 'Відсутній обов''язковий параметр: %{value}.' request_not_authorized: Запит повинен бути авторизований. Необхідний параметр запиту авторизації відсутній або хибний. diff --git a/config/locales/doorkeeper.zh-TW.yml b/config/locales/doorkeeper.zh-TW.yml index e8a699d85f..07b617192b 100644 --- a/config/locales/doorkeeper.zh-TW.yml +++ b/config/locales/doorkeeper.zh-TW.yml @@ -31,14 +31,14 @@ zh-TW: form: error: 唉呦!請看看表單以排查錯誤 help: - native_redirect_uri: 請使用 %{native_redirect_uri} 作本機測試 + native_redirect_uri: 請使用 %{native_redirect_uri} 作本站測試 redirect_uri: 每行輸入一個 URI scopes: 請用半形空格分開範圍。空白表示使用預設的範圍。 index: application: 應用程式 callback_url: 回傳網址 delete: 刪除 - empty: 您沒有安裝 App。 + empty: 您沒有安裝應用程式。 name: 名稱 new: 新增應用程式 scopes: 範圍 @@ -48,10 +48,10 @@ zh-TW: title: 新增應用程式 show: actions: 動作 - application_id: 客戶端金鑰 + application_id: 用戶端金鑰 (client key) callback_urls: 回傳網址 scopes: 範圍 - secret: 客戶端密碼 + secret: 用戶端密碼 (client secret) title: 應用程式︰%{name} authorizations: buttons: @@ -67,9 +67,9 @@ zh-TW: title: 複製此授權碼並貼上到應用程式中。 authorized_applications: buttons: - revoke: 撤銷 + revoke: 註銷 confirmations: - revoke: 確定撤銷? + revoke: 您確定嗎? index: authorized_at: 於 %{date} 授權 description_html: 這些應用程式能透過 API 存取您的帳號。若有您不認得之應用程式,或應用程式行為異常,您可以於此註銷其存取權限。 @@ -82,8 +82,8 @@ zh-TW: messages: access_denied: 資源持有者或授權伺服器拒絕請求。 credential_flow_not_configured: 因為 Doorkeeper.configure.resource_owner_from_credentials 未設定,所以資源持有者密碼認證程序失敗。 - invalid_client: 客戶端驗證失敗,可能是因為未知的客戶端程式、未包含客戶端驗證、或使用了不支援的認證方法。 - invalid_grant: 授權申請不正確、逾期、已被取消、與授權請求內的重新導向 URI 不符、或屬於別的客戶端程式。 + invalid_client: 用戶端驗證失敗,可能是因為未知的用戶端程式、未包含用戶端驗證、或使用了不支援的認證方法。 + invalid_grant: 授權申請不正確、逾期、已被註銷、與授權請求內的重新導向 URI 不符、或屬於別的用戶端程式。 invalid_redirect_uri: 包含的重新導向 URI 是不正確的。 invalid_request: missing_param: 缺少必要的參數:%{value}. @@ -98,7 +98,7 @@ zh-TW: resource_owner_authenticator_not_configured: 因為未設定 Doorkeeper.configure.resource_owner_authenticator,所以資源持有者尋找失敗。 server_error: 認證伺服器發生未知錯誤。 temporarily_unavailable: 認證伺服器暫時無法使用。 - unauthorized_client: 客戶端程式沒有權限使用此方法請求。 + unauthorized_client: 用戶端程式沒有權限使用此方法請求。 unsupported_grant_type: 認證伺服器不支援這個授權類型。 unsupported_response_type: 認證伺服器不支援這個回應類型。 flash: @@ -111,7 +111,7 @@ zh-TW: notice: 已更新應用程式。 authorized_applications: destroy: - notice: 已撤銷應用程式。 + notice: 已註銷應用程式。 grouped_scopes: access: read: 唯讀權限 @@ -148,8 +148,8 @@ zh-TW: title: 需要 OAuth 授權 scopes: admin:read: 讀取伺服器的所有資料 - admin:read:accounts: 讀取所有帳號的敏感資訊 - admin:read:reports: 讀取所有回報 / 被回報之帳號的敏感資訊 + admin:read:accounts: 讀取所有帳號的敏感內容 + admin:read:reports: 讀取所有回報 / 被回報之帳號的敏感內容 admin:write: 修改伺服器的所有資料 admin:write:accounts: 對帳號進行仲裁管理動作 admin:write:reports: 對報告進行仲裁管理動作 @@ -177,7 +177,7 @@ zh-TW: write:favourites: 加到最愛 write:filters: 建立過濾條件 write:follows: 跟隨其他人 - write:lists: 建立名單 + write:lists: 建立列表 write:media: 上傳媒體檔案 write:mutes: 靜音使用者及對話 write:notifications: 清除您的通知 diff --git a/config/locales/el.yml b/config/locales/el.yml index f35fa9b774..c5be24815d 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -824,6 +824,8 @@ el: carry_blocks_over_text: Ο/Η χρήστης μετακόμισε από το %{acct}, που είχες αποκλείσει. carry_mutes_over_text: Ο/Η χρήστης μετακόμισε από το %{acct}, που είχες αποσιωπήσει. copy_account_note_text: 'Ο/Η χρήστης μετακόμισε από το %{acct}, ορίστε οι προηγούμενες σημειώσεις σου:' + navigation: + toggle_menu: Εμφάνιση/Απόκρυψη μενού notification_mailer: admin: report: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 63a1258e6c..1dbe88ec2d 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1249,6 +1249,8 @@ es-AR: carry_blocks_over_text: Este usuario se mudó desde %{acct}, que habías bloqueado. carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado. copy_account_note_text: 'Este usuario se mudó desde %{acct}, acá están tus notas previas sobre él/ella:' + navigation: + toggle_menu: Cambiar menú notification_mailer: admin: report: diff --git a/config/locales/es.yml b/config/locales/es.yml index d0a2d970c5..00a0319382 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1236,6 +1236,8 @@ es: carry_blocks_over_text: Este usuario se mudó desde %{acct}, que habías bloqueado. carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado. copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:' + navigation: + toggle_menu: Alternar menú notification_mailer: admin: report: diff --git a/config/locales/eu.yml b/config/locales/eu.yml index d71a10dfa5..bec8e5c50b 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -5,6 +5,7 @@ eu: contact_missing: Ezarri gabe contact_unavailable: E/E hosted_on: Mastodon %{domain} domeinuan ostatatua + title: Honi buruz accounts: follow: Jarraitu followers: @@ -37,11 +38,17 @@ eu: avatar: Abatarra by_domain: Domeinua change_email: + changed_msg: Eposta kontua ongi aldatu da! current_email: Uneko e-mail helbidea label: Aldatu e-mail helbidea new_email: E-mail berria submit: Aldatu e-mail helbidea title: Aldatu %{username}(r)en e-mail helbidea + change_role: + changed_msg: Rola ondo aldatu da! + label: Aldatu rola + no_role: Rolik ez + title: Aldatu %{username} erabiltzailearen rola confirm: Berretsi confirmed: Berretsita confirming: Berresten @@ -85,13 +92,15 @@ eu: active: Aktiboa all: Denak pending: Zain + silenced: Mugatua suspended: Kanporatua title: Moderazioa moderation_notes: Moderazio oharrak most_recent_activity: Azken jarduera most_recent_ip: Azken IP-a - no_account_selected: Ez da konturik aldatu ez delako bata bera hautatu + no_account_selected: Ez da konturik aldatu ez delako bat ere hautatu no_limits_imposed: Ez da mugarik ezarri + no_role_assigned: Ez du rolik esleituta not_subscribed: Harpidetu gabe pending: Berrikusketa egiteke perform_full_suspension: Kanporatu @@ -118,6 +127,7 @@ eu: reset: Berrezarri reset_password: Berrezarri pasahitza resubscribe: Berriro harpidetu + role: Rola search: Bilatu search_same_email_domain: E-mail domeinu bera duten beste erabiltzailean search_same_ip: IP bera duten beste erabiltzaileak @@ -160,17 +170,21 @@ eu: approve_user: Onartu erabiltzailea assigned_to_self_report: Esleitu salaketa change_email_user: Aldatu erabiltzailearen e-maila + change_role_user: Aldatu erabiltzailearen rola confirm_user: Berretsi erabiltzailea create_account_warning: Sortu abisua create_announcement: Sortu iragarpena + create_canonical_email_block: Sortu eposta blokeoa create_custom_emoji: Sortu emoji pertsonalizatua create_domain_allow: Sortu domeinu baimena create_domain_block: Sortu domeinu blokeoa create_email_domain_block: Sortu e-mail domeinu blokeoa create_ip_block: Sortu IP araua create_unavailable_domain: Sortu eskuragarri ez dagoen domeinua + create_user_role: Sortu rola demote_user: Jaitsi erabiltzailearen maila destroy_announcement: Ezabatu iragarpena + destroy_canonical_email_block: Ezabatu eposta blokeoa destroy_custom_emoji: Ezabatu emoji pertsonalizatua destroy_domain_allow: Ezabatu domeinu baimena destroy_domain_block: Ezabatu domeinu blokeoa @@ -179,6 +193,7 @@ eu: destroy_ip_block: Ezabatu IP araua destroy_status: Ezabatu bidalketa destroy_unavailable_domain: Ezabatu eskuragarri ez dagoen domeinua + destroy_user_role: Ezabatu rola disable_2fa_user: Desgaitu 2FA disable_custom_emoji: Desgaitu emoji pertsonalizatua disable_sign_in_token_auth_user: Desgaitu e-posta token autentifikazioa erabiltzailearentzat @@ -205,23 +220,30 @@ eu: update_announcement: Eguneratu iragarpena update_custom_emoji: Eguneratu emoji pertsonalizatua update_domain_block: Eguneratu domeinu-blokeoa + update_ip_block: Eguneratu IP araua update_status: Eguneratu bidalketa + update_user_role: Eguneratu rola actions: approve_appeal_html: "%{name} erabiltzaileak %{target} erabiltzailearen moderazio erabakiaren apelazioa onartu du" approve_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen izen-ematea onartu du" assigned_to_self_report_html: "%{name} erabiltzaileak %{target} salaketa bere buruari esleitu dio" change_email_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen e-posta helbidea aldatu du" + change_role_user_html: "%{name} erabiltzaileak %{target} kontuaren rola aldatu du" confirm_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen e-posta helbidea berretsi du" create_account_warning_html: "%{name} erabiltzaileak abisua bidali dio %{target} erabiltzaileari" create_announcement_html: "%{name} erabiltzaileak %{target} iragarpen berria sortu du" + create_canonical_email_block_html: "%{name} erabiltzaileak %{target} hash-a duen helbide elektronikoa blokeatu du" create_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji berria kargatu du" create_domain_allow_html: "%{name} erabiltzaileak %{target} domeinuarekin federazioa onartu du" create_domain_block_html: "%{name} erabiltzaileak %{target} domeinua blokeatu du" create_email_domain_block_html: "%{name} erabiltzaileak %{target} e-posta helbideen domeinua blokeatu du" create_ip_block_html: "%{name} kontuak %{target} IParen araua sortu du" create_unavailable_domain_html: "%{name}(e)k %{target} domeinurako banaketa gelditu du" + create_user_role_html: "%{name} erabiltzaileak %{target} rola sortu du" demote_user_html: "%{name} erabiltzaileak %{target} erabiltzailea mailaz jaitsi du" destroy_announcement_html: "%{name} erabiltzaileak %{target} iragarpena ezabatu du" + destroy_canonical_email_block_html: "%{name} erabiltzaileak %{target} hash-a duen helbide elektronikoa desblokeatu du" + destroy_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a ezabatu du" destroy_domain_allow_html: "%{name} erabiltzaileak %{target} domeinuarekin federatzea debekatu du" destroy_domain_block_html: "%{name} erabiltzaileak %{target} domeinua desblokeatu du" destroy_email_domain_block_html: "%{name} erabiltzaileak %{target} e-posta helbideen domeinua desblokeatu du" @@ -229,6 +251,7 @@ eu: destroy_ip_block_html: "%{name} erabiltzaileak %{target} IParen araua ezabatu du" destroy_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa kendu du" destroy_unavailable_domain_html: "%{name}(e)k %{target} domeinurako banaketari berrekin dio" + destroy_user_role_html: "%{name} erabiltzaileak %{target} rola ezabatu du" disable_2fa_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen bi faktoreko autentifikazioa desgaitu du" disable_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a desgaitu du" disable_sign_in_token_auth_user_html: "%{name} erabiltzaileak e-posta token autentifikazioa desgaitu du %{target} helburuan" @@ -255,7 +278,9 @@ eu: update_announcement_html: "%{name} erabiltzaileak %{target} iragarpena eguneratu du" update_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a eguneratu du" update_domain_block_html: "%{name} erabiltzaileak %{target} domeinu-blokeoa eguneratu du" + update_ip_block_html: "%{name} erabiltzaileak %{target} IParen araua aldatu du" update_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa eguneratu du" + update_user_role_html: "%{name} erabiltzaileak %{target} rola aldatu du" empty: Ez da egunkaririk aurkitu. filter_by_action: Iragazi ekintzen arabera filter_by_user: Iragazi erabiltzaileen arabera @@ -299,6 +324,7 @@ eu: listed: Zerrendatua new: title: Gehitu emoji pertsonal berria + no_emoji_selected: Ez da emojirik aldatu ez delako bat ere hautatu not_permitted: Ez daukazu ekintza hau burutzeko baimenik overwrite: Gainidatzi shortcode: Laster-kodea @@ -339,6 +365,7 @@ eu: destroyed_msg: Domeinuaren blokeoa desegin da domain: Domeinua edit: Editatu domeinu-blokeoa + existing_domain_block: Aurretik muga zorrotzagoak ezarriak dituzu %{name} domeinuan. existing_domain_block_html: '%{name} domeinuan muga zorrotzagoak ezarri dituzu jada, aurretik desblokeatu beharko duzu.' new: create: Sortu blokeoa @@ -371,8 +398,11 @@ eu: domain: Domeinua new: create: Gehitu domeinua + resolve: Ebatzi domeinua title: Sarrera berria e-mail zerrenda beltzean - no_email_domain_block_selected: Ez da eposta domeinu blokeorik aldatu ez delako bat bera ere hautatu + no_email_domain_block_selected: Ez da eposta domeinu blokeorik aldatu ez delako bat ere hautatu + resolved_dns_records_hint_html: Domeinu-izena ondorengo MX domeinuetara ebazten da, zeinek eposta onartzeko ardura duten. MX domeinu bat blokeatzeak MX domeinu hori erabiltzen duen edozein helbide elektronikotatik izena-ematea blokeatzen du, baita ikusgai dagoen domeinu-izena beste bat bada ere. Kontuz ibili eposta hornitzaile nagusiak blokeatu gabe. + resolved_through_html: "%{domain} domeinuaren bidez ebatzia" title: E-mail zerrenda beltza follow_recommendations: description_html: "Jarraitzeko gomendioek erabiltzaile berriei eduki interesgarria azkar aurkitzen laguntzen diete. Erabiltzaile batek jarraitzeko gomendio pertsonalizatuak jasotzeko adina interakzio izan ez duenean, kontu hauek gomendatzen zaizkio. Egunero birkalkulatzen dira hizkuntza bakoitzerako, azken aldian parte-hartze handiena izan duten eta jarraitzaile lokal gehien dituzten kontuak nahasiz." @@ -419,6 +449,7 @@ eu: delivery: all: Guztiak clear: Garbitu banaketa erroreak + failing: Huts egiten du restart: Berrabiarazi banaketa stop: Gelditu banaketa unavailable: Eskuraezina @@ -466,7 +497,7 @@ eu: '94670856': 3 urte new: title: Sortu IP arau berria - no_ip_block_selected: Ez da IP araurik aldatu, ez delako batere hautatu + no_ip_block_selected: Ez da IP araurik aldatu, ez delako bat ere hautatu title: IP arauak relationships: title: "%{acct}(e)ren erlazioak" @@ -499,6 +530,7 @@ eu: action_taken_by: Neurrien hartzailea actions: delete_description_html: Salatutako bidalketak ezabatuko dira eta abisu bat gordeko da, etorkizunean kontu berarekin elkarrekintzarik baduzu kontuan izan dezazun. + mark_as_sensitive_description_html: Salatutako bidalketetako multimedia edukia hunkigarri bezala eta abisu bat gordeko da, etorkizunean kontu honek arau-hausterik egiten badu kontuan izan dezazun. other_description_html: Ikusi kontuaren portaera kontrolatzeko eta salatutako kontuarekin komunikazioa pertsonalizatzeko aukera gehiago. resolve_description_html: Ez da neurririk hartuko salatutako kontuaren aurka, ez da abisurik gordeko eta salaketa itxiko da. silence_description_html: Profila dagoeneko jarraitzen dutenei edo eskuz bilatzen dutenei bakarrik agertuko zaie, bere irismena asko mugatuz. Beti bota daiteke atzera. @@ -548,6 +580,61 @@ eu: unresolved: Konpondu gabea updated_at: Eguneratua view_profile: Ikusi profila + roles: + add_new: Gehitu rola + categories: + administration: Administrazioa + devops: Devops + invites: Gonbidapenak + moderation: Moderazioa + special: Berezia + delete: Ezabatu + description_html: "Erabiltzaile rolak erabiliz erabiltzaileek Mastodonen ze funtzio eta lekutara sarbidea duten pertsonalizatu dezakezu." + edit: Editatu '%{name}' rola + everyone: Baimen lehenetsiak + everyone_full_description_html: Hau erabiltzaile guztiei eragiten dien oinarrizko rola da, rol bat esleitu gabekoei ere bai. Gainerako rolek honetatik heredatzen dituzte baimenak. + privileges: + administrator: Administratzailea + administrator_description: Baimen hau duten erabiltzaileak baimen guztien gainetik pasako dira + delete_user_data: Ezabatu erabiltzaileen datuak + delete_user_data_description: Baimendu erabiltzaileek beste erabiltzaileen datuak atzerapenik gabe ezabatzea + invite_users: Gonbidatu erabiltzaileak + invite_users_description: Baimendu erabiltzaileek zerbitzarira jende berria gonbidatzea + manage_announcements: Kudeatu iragarpenak + manage_announcements_description: Baimendu erabiltzaileek zerbitzariko iragarpenak kudeatzea + manage_appeals: Kudeatu apelazioak + manage_appeals_description: Baimendu erabiltzaileek moderazio ekintzen aurkako apelazioak berrikustea + manage_blocks: Kudeatu blokeatzeak + manage_blocks_description: Baimendu erabiltzaileek eposta hornitzaile eta IP helbideak blokeatzea + manage_custom_emojis: Kudeatu emoji pertsonalizatuak + manage_custom_emojis_description: Baimendu erabiltzaileek zerbitzariko emoji pertsonalizatuak kudeatzea + manage_federation: Kudeatu federazioa + manage_federation_description: Baimendu erabiltzaileek beste domeinuak blokeatu edo federazioa onartzea, eta banagarritasuna kontrolatzea + manage_invites: Kudeatu gonbidapenak + manage_invites_description: Baimendu erabiltzaileek gonbidapen estekak arakatu eta desaktibatzea + manage_reports: Kudeatu txostenak + manage_reports_description: Baimendu erabiltzaileek txostenak berrikusi eta moderazio ekintzak burutzea + manage_roles: Kudeatu rolak + manage_roles_description: Baimendu erabiltzaileek beren mailaren azpiko rolak kudeatu eta esleitzea + manage_rules: Kudeatu arauak + manage_rules_description: Baimendu erabiltzaileek zerbitzariaren arauak aldatzea + manage_settings: Kudeatu ezarpenak + manage_settings_description: Baimendu erabiltzaileek gunearen ezarpenak aldatzea + manage_taxonomies: Kudeatu taxonomiak + manage_taxonomies_description: Baimendu erabiltzaileek joerak berrikustea eta traolen ezarpenak eguneratzea + manage_user_access: Kudeatu erabiltzaileen sarbidea + manage_user_access_description: Baimendu erabiltzaileek beste erabiltzaileen bi faktoreko autentifikazioa desaktibatzea, eposta helbideak aldatzea eta pasahitzak berrezartzea + manage_users: Kudeatu erabiltzaileak + manage_users_description: Baimendu erabiltzaileek beste erabiltzaileen xehetasunak ikusi eta moderazio ekintzak burutzea + manage_webhooks: Kudeatu webhook-ak + manage_webhooks_description: Baimendu erabiltzaileek webhook-ak konfiguratzea gertaera administratiboentzat + view_audit_log: Ikusi auditoria-egunkaria + view_audit_log_description: Baimendu erabiltzaileek zerbitzariko administrazio-ekintzen historia ikustea + view_dashboard: Ikusi aginte-panela + view_dashboard_description: Baimendu erabiltzaileek aginte-panela eta hainbat estatistika ikustea + view_devops: Devops + view_devops_description: Baimendu erabiltzaileek Sidekiq eta pgHero aginte-paneletara sarbidea izatea + title: Rolak rules: add_new: Gehitu araua delete: Ezabatu @@ -556,29 +643,66 @@ eu: empty: Ez da zerbitzariko araurik definitu oraindik. title: Zerbitzariaren arauak settings: + about: + manage_rules: Kudeatu zerbitzariaren arauak + preamble: Zerbitzaria nola gobernatzen, moderatzen eta finantzatzen den azaltzen duen informazio xehea eman. + rules_hint: Erabiltzaileek jarraitu behar dituzten arauei eskainitako atal bat dago. + title: Honi buruz + appearance: + preamble: Mastodonen web interfazea pertsonalizatu. + title: Itxura + branding: + preamble: 'Zure zerbitzariaren markak sareko beste zerbitzarietatik bereizten du. Informazio hau hainbat ingurunetan bistaratuko da: Mastodonen web interfazean, aplikazio natiboetan, esteken aurrebistak beste webguneetan eta mezularitza aplikazioetan eta abar. Horregatik, informazio hau garbia eta laburra izatea komeni da.' + title: Marka + content_retention: + preamble: Kontrolatu erabiltzaileek sortutako edukia nola biltegiratzen den Mastodonen. + title: Edukia atxikitzea + discovery: + follow_recommendations: Jarraitzeko gomendioak + profile_directory: Profil-direktorioa + public_timelines: Denbora-lerro publikoak + title: Aurkitzea + trends: Joerak domain_blocks: all: Guztiei disabled: Inori ez users: Saioa hasita duten erabiltzaile lokalei + registrations: + preamble: Kontrolatu nork sortu dezakeen kontua zerbitzarian. + title: Izen emateak registrations_mode: modes: approved: Izena emateko onarpena behar da none: Ezin du inork izena eman open: Edonork eman dezake izena + title: Zerbitzariaren ezarpenak site_uploads: delete: Ezabatu igotako fitxategia destroyed_msg: Guneko igoera ongi ezabatu da! statuses: + account: Egilea + application: Aplikazioa back_to_account: Atzera kontuaren orrira back_to_report: Atzera txostenaren orrira batch: remove_from_report: Kendu txostenetik report: Salatu deleted: Ezabatuta + favourites: Gogokoak + history: Bertsio-historia + in_reply_to: Honi erantzuten + language: Hizkuntza media: title: Multimedia - no_status_selected: Ez da bidalketarik aldatu ez delako bidalketarik aukeratu + metadata: Metadatuak + no_status_selected: Ez da bidalketarik aldatu ez delako bat ere hautatu + open: Ireki bidalketa + original_status: Jatorrizko bidalketa + reblogs: Bultzadak + status_changed: Bidalketa aldatuta title: Kontuaren bidalketak + trending: Joera + visibility: Ikusgaitasuna with_media: Multimediarekin strikes: actions: @@ -618,11 +742,15 @@ eu: description_html: Esteka hauek zure zerbitzariak ikusten dituen kontuek asko zabaltzen ari diren estekak dira. Zure erabiltzaileei munduan ze berri den jakiteko lagungarriak izan daitezke. Ez da estekarik bistaratzen argitaratzaileak onartu arte. Esteka bakoitza onartu edo baztertu dezakezu. disallow: Ukatu esteka disallow_provider: Ukatu argitaratzailea + no_link_selected: Ez da estekarik aldatu ez delako bat ere hautatu + publishers: + no_publisher_selected: Ez da argitaratzailerik aldatu ez delako bat ere hautatu shared_by_over_week: one: Pertsona batek partekatua azken astean other: "%{count} pertsonak partekatua azken astean" title: Esteken joerak usage_comparison: "%{today} aldiz partekatua gaur, atzo %{yesterday} aldiz" + only_allowed: Soilik onartutakoak pending_review: Berrikusketaren zain preview_card_providers: allowed: Argitaratzaile honen estekak joera izan daitezke @@ -634,6 +762,7 @@ eu: allow_account: Onartu egilea disallow: Ez onartu bidalketa disallow_account: Ez onartu egilea + no_status_selected: Ez da joerarik aldatu ez delako bat ere hautatu tags: current_score: Uneko emaitza%{score} dashboard: @@ -643,6 +772,7 @@ eu: tag_servers_measure: zerbitzari desberdin tag_uses_measure: erabilera guztira listable: Gomendatu daiteke + no_tag_selected: Ez da etiketarik aldatu ez delako bat ere hautatu not_listable: Ez da gomendatuko not_trendable: Ez da joeretan agertuko not_usable: Ezin da erabili @@ -653,13 +783,39 @@ eu: usable: Erabili daiteke usage_comparison: "%{today} aldiz erabili da gaur, atzo %{yesterday} aldiz" title: Joerak + trending: Joerak warning_presets: add_new: Gehitu berria delete: Ezabatu edit_preset: Editatu abisu aurre-ezarpena empty: Ez duzu abisu aurrezarpenik definitu oraindik. title: Kudeatu abisu aurre-ezarpenak + webhooks: + add_new: Gehitu amaiera-puntua + delete: Ezabatu + disable: Desgaitu + disabled: Desgaituta + edit: Editatu amaiera-puntua + empty: Ez duzu webhook amaiera-punturik konfiguratu oraindik. + enable: Gaitu + enabled: Aktiboa + events: Gertaerak + new: Webhook berria + rotate_secret: Biratu sekretua + secret: Sinatze-sekretua + status: Egoera + title: Webhook-ak + webhook: Webhook admin_mailer: + new_appeal: + actions: + delete_statuses: bidalketak ezabatzea + disable: kontua blokeatzea + mark_statuses_as_sensitive: bidalketak hunkigarri gisa markatzea + none: abisu bat + sensitive: kontua hunkigarri gisa markatzea + silence: kontua mugatzea + suspend: kontua kanporatzea new_pending_account: body: Kontu berriaren xehetasunak azpian daude. Eskaera hau onartu edo ukatu dezakezu. subject: Kontu berria berrikusteko %{instance} instantzian (%{username}) @@ -808,6 +964,8 @@ eu: appeals: submit: Bidali apelazioa recipient: Honi zuzendua + title_actions: + suspend: Kontua kanporatzea domain_validator: invalid_domain: ez da domeinu izen baliogarria errors: @@ -1254,6 +1412,8 @@ eu: subject: Zure artxiboa deskargatzeko prest dago title: Artxiboa jasotzea warning: + explanation: + suspend: Ezin duzu zure kontua erabili, eta zure profila eta beste datuak ez daude eskuragarri jada. Hala ere, saioa hasi dezakezu zure datuen babeskopia eskatzeko, 30 egun inguru barru behin betiko ezabatu aurretik. Zure oinarrizko informazioa gordeko da kanporatzea saihestea eragozteko. subject: disable: Zure %{acct} kontua izoztu da none: "%{acct} konturako abisua" diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 7dc4dae0a8..6c3690aee9 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -5,6 +5,7 @@ fa: contact_missing: تنظیم نشده contact_unavailable: موجود نیست hosted_on: ماستودون، میزبانی‌شده روی %{domain} + title: درباره accounts: follow: پیگیری followers: @@ -37,11 +38,17 @@ fa: avatar: تصویر نمایه by_domain: دامین change_email: + changed_msg: رایانامه با موفقیت تغییر کرد! current_email: رایانامهٔ کنونی label: تغییر رایانامه new_email: رایانامهٔ جدید submit: تغییر رایانامه title: تغییر رایانامه برای %{username} + change_role: + changed_msg: نقش با موفقیت تغییر کرد! + label: تغییر نقش + no_role: بدون نقش + title: تغییر نقش برای %{username} confirm: تأیید confirmed: تأیید شد confirming: تأیید @@ -85,6 +92,7 @@ fa: active: فعّال all: همه pending: منتظر + silenced: محدود suspended: تعلیق شده title: مدیریت moderation_notes: یادداشت‌های مدیریتی @@ -92,6 +100,7 @@ fa: most_recent_ip: آخرین IP no_account_selected: هیچ حسابی تغییر نکرد زیرا حسابی انتخاب نشده بود no_limits_imposed: بدون محدودیت + no_role_assigned: هیچ نقشی اعطا نشده not_subscribed: مشترک نیست pending: در انتظار بررسی perform_full_suspension: تعلیق @@ -115,6 +124,7 @@ fa: reset: بازنشانی reset_password: بازنشانی رمز resubscribe: اشتراک دوباره + role: نقش search: جستجو search_same_email_domain: دیگر کاربران با دامنهٔ رایانامهٔ یکسان search_same_ip: دیگر کاربران با IP یکسان @@ -500,9 +510,11 @@ fa: comment: none: هیچ created_at: گزارش‌شده + delete_and_resolve: حذف فرسته‌ها forwarded: هدایت شده forwarded_to: هدایت شده به %{domain} mark_as_resolved: علامت‌گذاری به عنوان حل‌شده + mark_as_sensitive: علامت به حساس mark_as_unresolved: علامت‌گذاری به عنوان حل‌نشده no_one_assigned: هیچ‌کس notes: @@ -512,12 +524,14 @@ fa: delete: حذف placeholder: کارهایی را که در این باره انجام شده، یا هر به‌روزرسانی دیگری را بنویسید... title: یادداشت‌ها + remote_user_placeholder: کاربر دوردست از %{instance} reopen: دوباره به جریان بیندازید report: 'گزارش #%{id}' reported_account: حساب گزارش‌شده reported_by: گزارش از طرف resolved: حل‌شده resolved_msg: گزارش با موفقیت حل شد! + skip_to_actions: پرش به کنش‌ها status: نوشته statuses: محتوای گزارش شده target_origin: خاستگاه حساب گزارش‌شده @@ -526,6 +540,29 @@ fa: unresolved: حل‌نشده updated_at: به‌روز شد view_profile: دیدن نمایه + roles: + add_new: افزودن نقش + categories: + administration: مدیریت + devops: دواپس + invites: دعوت‌ها + moderation: نظارت + special: ویژه + delete: حذف + edit: ویراش نقش %{name} + everyone: اجازه‌های پیش‌گزیده + privileges: + administrator: مدیر + delete_user_data: حذف داده‌های کاربر + invite_users: دعوت کاربران + manage_announcements: مدیریت اعلامیه‌ها + manage_blocks: مدیریت مسدودی‌ها + manage_custom_emojis: مدیریت ایموجی‌های سفارشی + manage_invites: مدیریت دعوت‌ها + manage_reports: مدیریت گزارش‌ها + manage_roles: مدیریت نقش‌ها + manage_rules: مدیریت قوانین + manage_settings: مدیریت تنظیمات rules: add_new: افزودن قانون delete: حذف @@ -534,31 +571,55 @@ fa: empty: هنوز هیچ قانونی برای کارساز تعریف نشده. title: قوانین کارساز settings: + discovery: + follow_recommendations: پیروی از پیشنهادها + profile_directory: شاخهٔ نمایه + public_timelines: خط زمانی‌های عمومی + title: کشف + trends: پرطرفدارها domain_blocks: all: برای همه disabled: برای هیچ‌کدام users: برای کاربران محلی واردشده + registrations: + title: ثبت‌نام‌ها registrations_mode: modes: approved: ثبت نام نیازمند تأیید مدیران است none: کسی نمی‌تواند ثبت نام کند open: همه می‌توانند ثبت نام کنند + title: تنظیمات کارساز site_uploads: delete: پرونده بارگذاری شده را پاک کنید destroyed_msg: بارگذاری پایگاه با موفقیت حذف شد! statuses: + account: نگارنده + application: برنامه back_to_account: بازگشت به صفحهٔ حساب back_to_report: بازگشت به صفحهٔ گزارش batch: remove_from_report: برداشتن از گزارش report: گزارش deleted: پاک‌شده + favourites: برگزیده‌ها + history: تاریخچهٔ نگارش + in_reply_to: در پاسخ به + language: زبان media: title: رسانه + metadata: فراداده no_status_selected: هیچ فرسته‌ای تغییری نکرد زیرا هیچ‌کدام از آن‌ها انتخاب نشده بودند + open: گشودن فرسته + original_status: فرستهٔ اصلی + reblogs: تقویت‌ها + status_changed: فرسته تغییر کرد title: نوشته‌های حساب + trending: پرطرفدار + visibility: نمایانی with_media: دارای عکس یا ویدیو strikes: + actions: + delete_statuses: "%{name} فرستهٔ %{target} را حذف کرد" appeal_approved: درخواست تجدیدنظر کرد appeal_pending: درخواست تجدیدنظر در انتظار system_checks: @@ -610,6 +671,8 @@ fa: edit_preset: ویرایش هشدار پیش‌فرض empty: هنز هیچ پیش‌تنظیم هشداری را تعریف نکرده‌اید. title: مدیریت هشدارهای پیش‌فرض + webhooks: + new: قلاب وب جدید admin_mailer: new_appeal: actions: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 878f87f1db..4a519c107d 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -666,8 +666,10 @@ fr: appearance: title: Apparence discovery: + follow_recommendations: Suivre les recommandations profile_directory: Annuaire des profils public_timelines: Fils publics + title: Découverte trends: Tendances domain_blocks: all: À tout le monde @@ -693,11 +695,15 @@ fr: remove_from_report: Retirer du rapport report: Signalement deleted: Supprimé + favourites: Favoris language: Langue media: title: Médias no_status_selected: Aucun message n’a été modifié car aucun n’a été sélectionné + open: Ouvrir le message + original_status: Message original title: Messages du compte + trending: Tendances visibility: Visibilité with_media: Avec médias strikes: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 82398d53c3..6790b7645a 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1301,6 +1301,8 @@ gd: carry_blocks_over_text: Chaidh an cleachdaiche seo imrich o %{acct} a b’ àbhaist dhut a bhacadh. carry_mutes_over_text: Chaidh an cleachdaiche seo imrich o %{acct} a b’ àbhaist dhut a mhùchadh. copy_account_note_text: 'Da cleachdaiche air gluasad o %{acct}, seo na nòtaichean a bh’ agad mu dhèidhinn roimhe:' + navigation: + toggle_menu: Toglaich an clàr-taice notification_mailer: admin: report: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index da00efe89b..75fee0002e 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1249,6 +1249,8 @@ gl: carry_blocks_over_text: Esta usuaria chegou desde %{acct}, que ti tes bloqueada. carry_mutes_over_text: Esta usuaria chegou desde %{acct}, que ti tes acalada. copy_account_note_text: 'Esta usuaria chegou desde %{acct}, aquí están as túas notas previas acerca dela:' + navigation: + toggle_menu: Activa o menú notification_mailer: admin: report: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 890eb6956e..008026aa4e 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1246,6 +1246,8 @@ hu: carry_blocks_over_text: Ez a fiók elköltözött innen %{acct}, melyet letiltottatok. carry_mutes_over_text: Ez a fiók elköltözött innen %{acct}, melyet lenémítottatok. copy_account_note_text: 'Ez a fiók elköltözött innen %{acct}, itt vannak a bejegyzéseitek róla:' + navigation: + toggle_menu: Menü be/ki notification_mailer: admin: report: diff --git a/config/locales/id.yml b/config/locales/id.yml index 9248eab308..5daa4addd0 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -1,10 +1,11 @@ --- id: about: - about_mastodon_html: Mastodon adalah sebuah jejaring sosial terbuka, open-sourcedesentralisasi dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai — apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam jejaring sosial dengan mudah. - contact_missing: Belum diset + about_mastodon_html: 'Jaringan sosial masa depan: Tanpa iklan, tanpa pemantauan perusahaan, desain etis, dan terdesentralisasi! Miliki data Anda dengan Mastodon!' + contact_missing: Belum ditetapkan contact_unavailable: Tidak Tersedia hosted_on: Mastodon dihosting di %{domain} + title: Tentang accounts: follow: Ikuti followers: @@ -17,8 +18,8 @@ id: pin_errors: following: Anda harus mengikuti orang yang ingin anda endorse posts: - other: Toot - posts_tab_heading: Toot + other: Kiriman + posts_tab_heading: Kiriman admin: account_actions: action: Lakukan aksi @@ -43,6 +44,9 @@ id: title: Ganti email untuk %{username} change_role: changed_msg: תפקיד שונה בהצלחה ! + label: Ubah peran + no_role: Tidak ada peran + title: Ganti peran untuk %{username} confirm: Konfirmasi confirmed: Dikonfirmasi confirming: Mengkonfirmasi @@ -86,6 +90,7 @@ id: active: Aktif all: Semua pending: Tertunda + silenced: Terbatas suspended: Disuspen title: Moderasi moderation_notes: Catatan moderasi @@ -93,6 +98,7 @@ id: most_recent_ip: IP terbaru no_account_selected: Tak ada akun yang diubah sebab tak ada yang dipilih no_limits_imposed: Tidak ada batasan + no_role_assigned: Tidak ada peran yang diberikan not_subscribed: Tidak berlangganan pending: Tinjauan tertunda perform_full_suspension: Lakukan suspen penuh @@ -118,6 +124,7 @@ id: reset: Atur ulang reset_password: Reset kata sandi resubscribe: Langganan ulang + role: Peran search: Cari search_same_email_domain: Pengguna lain dengan domain email yang sama search_same_ip: Pengguna lain dengan IP yang sama @@ -160,17 +167,21 @@ id: approve_user: Setujui Pengguna assigned_to_self_report: Berikan laporan change_email_user: Ubah Email untuk Pengguna + change_role_user: Ubah Peran Pengguna confirm_user: Konfirmasi Pengguna create_account_warning: Buat Peringatan create_announcement: Buat Pengumuman + create_canonical_email_block: Buat Pemblokiran Surel create_custom_emoji: Buat Emoji Khusus create_domain_allow: Buat Izin Domain create_domain_block: Buat Blokir Domain create_email_domain_block: Buat Email Blokir Domain create_ip_block: Buat aturan IP create_unavailable_domain: Buat Domain yang Tidak Tersedia + create_user_role: Buah Peran demote_user: Turunkan Pengguna destroy_announcement: Hapus Pengumuman + destroy_canonical_email_block: Hapus Pemblokiran Surel destroy_custom_emoji: Hapus Emoji Khusus destroy_domain_allow: Hapus Izin Domain destroy_domain_block: Hapus Blokir Domain @@ -179,6 +190,7 @@ id: destroy_ip_block: Hapus aturan IP destroy_status: Hapus Status destroy_unavailable_domain: Hapus Domain yang Tidak Tersedia + destroy_user_role: Hapus Peran disable_2fa_user: Nonaktifkan 2FA disable_custom_emoji: Nonaktifkan Emoji Khusus disable_sign_in_token_auth_user: Nonaktifkan Otentikasi Token Email untuk Pengguna @@ -205,23 +217,30 @@ id: update_announcement: Perbarui Pengumuman update_custom_emoji: Perbarui Emoji Khusus update_domain_block: Perbarui Blokir Domain + update_ip_block: Perbarui peraturan IP update_status: Perbarui Status + update_user_role: Perbarui Peran actions: approve_appeal_html: "%{name} menyetujui moderasi keputusan banding dari %{target}" approve_user_html: "%{name} menyetujui pendaftaran dari %{target}" assigned_to_self_report_html: "%{name} menugaskan laporan %{target} ke dirinya sendiri" change_email_user_html: "%{name} mengubah alamat email pengguna %{target}" + change_role_user_html: "%{name} mengubah peran %{target}" confirm_user_html: "%{name} mengonfirmasi alamat email pengguna %{target}" create_account_warning_html: "%{name} mengirim peringatan untuk %{target}" create_announcement_html: "%{name} membuat pengumuman baru %{target}" + create_canonical_email_block_html: "%{name} memblokir surel dengan hash %{target}" create_custom_emoji_html: "%{name} mengunggah emoji baru %{target}" create_domain_allow_html: "%{name} mengizinkan penggabungan dengan domain %{target}" create_domain_block_html: "%{name} memblokir domain %{target}" create_email_domain_block_html: "%{name} memblokir domain email %{target}" create_ip_block_html: "%{name} membuat aturan untuk IP %{target}" create_unavailable_domain_html: "%{name} menghentikan pengiriman ke domain %{target}" + create_user_role_html: "%{name} membuat peran %{target}" demote_user_html: "%{name} menurunkan pengguna %{target}" destroy_announcement_html: "%{name} menghapus pengumuman %{target}" + destroy_canonical_email_block_html: "%{name} menghapus pemblokiran surel dengan hash %{target}" + destroy_custom_emoji_html: "%{name} menghapus emoji %{target}" destroy_domain_allow_html: "%{name} membatalkan izin penggabungan dengan domain %{target}" destroy_domain_block_html: "%{name} membuka blokir domain %{target}" destroy_email_domain_block_html: "%{name} membuka blokir domain email %{target}" @@ -229,7 +248,8 @@ id: destroy_ip_block_html: "%{name} menghapus aturan untuk IP %{target}" destroy_status_html: "%{name} menghapus status %{target}" destroy_unavailable_domain_html: "%{name} melanjutkan pengiriman ke domain %{target}" - disable_2fa_user_html: "%{name} mematikan syarat dua faktor utk pengguna %{target}" + destroy_user_role_html: "%{name} menghapus peran %{target}" + disable_2fa_user_html: "%{name} mematikan syarat dua faktor untuk pengguna %{target}" disable_custom_emoji_html: "%{name} mematikan emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} menonaktifkan otentikasi token email untuk %{target}" disable_user_html: "%{name} mematikan login untuk pengguna %{target}" @@ -255,7 +275,9 @@ id: update_announcement_html: "%{name} memperbarui pengumuman %{target}" update_custom_emoji_html: "%{name} memperbarui emoji %{target}" update_domain_block_html: "%{name} memperbarui blokir domain untuk %{target}" + update_ip_block_html: "%{name} mengubah peraturan untuk IP %{target}" update_status_html: "%{name} memperbarui status %{target}" + update_user_role_html: "%{name} mengubah peran %{target}" empty: Log tidak ditemukan. filter_by_action: Filter berdasarkan tindakan filter_by_user: Filter berdasarkan pengguna @@ -299,6 +321,7 @@ id: listed: Terdaftar new: title: Tambah emoji kustom baru + no_emoji_selected: Tidak ada emoji yang diubah karena tidak ada yang dipilih not_permitted: Anda tidak diizinkan untuk melakukan tindakan ini overwrite: Timpa shortcode: Kode pendek @@ -488,11 +511,11 @@ id: relays: add_new: Tambah relai baru delete: Hapus - description_html: "Relai gabungan adalah server perantara yang menukarkan toot publik dalam jumlah besar antara server yang berlangganan dengan yang menerbitkannya. Ini akan membantu server kecil hingga medium menemukan konten dari fediverse, yang tentu saja mengharuskan pengguna lokal untuk mengikuti orang lain dari server remot." + description_html: "Relai gabungan adalah server perantara yang menukarkan kiriman publik dalam jumlah besar antara server yang berlangganan dengan yang menerbitkannya. Ini akan membantu server kecil hingga medium menemukan konten dari fediverse, yang tentu saja mengharuskan pengguna lokal untuk mengikuti orang lain dari server jarak jauh." disable: Matikan disabled: Dimatikan enable: Aktifkan - enable_hint: Saat diaktifkan, server Anda akan melanggan semua toot publik dari relai ini, dan akan mengirim toot publik server ini ke sana. + enable_hint: Saat diaktifkan, server Anda akan melanggan semua kiriman publik dari relai ini, dan akan mengirim toot publik server ini ke sana. enabled: Diaktifkan inbox_url: URL Relai pending: Menunggu persetujuan relai @@ -564,7 +587,64 @@ id: updated_at: Diperbarui view_profile: Lihat profil roles: + add_new: Tambahkan peran + assigned_users: + other: "%{count} pengguna" + categories: + administration: Administrasi + devops: DevOps + invites: Undangan + moderation: Moderasi + special: Khusus + delete: Hapus + description_html: Dengan peran pengguna, Anda dapat mengubah fungsi dan area Mastodon apa pengguna Anda dapat mengakses. edit: ערכי את התפקיד של '%{name}' + everyone: Izin bawaan + everyone_full_description_html: Ini adalah peran dasaran yang memengaruhi semua pengguna, bahkan tanpa yang memiliki sebuah peran yang diberikan. Semua peran lainnya mendapatkan izin dari ini. + permissions_count: + other: "%{count} izin" + privileges: + administrator: Administrator + administrator_description: Pengguna dengan izin ini akan melewati setiap izin + delete_user_data: Hapus Data Pengguna + delete_user_data_description: Memungkinkan pengguna untuk menghapus data pengguna lain tanpa jeda + invite_users: Undang Pengguna + invite_users_description: Memungkinkan pengguna untuk mengundang orang baru ke server + manage_announcements: Kelola Pengumuman + manage_announcements_description: Memungkinkan pengguna untuk mengelola pengumuman di server + manage_appeals: Kelola Permintaan + manage_appeals_description: Memungkinkan pengguna untuk meninjau permintaan terhadap tindakan moderasi + manage_blocks: Kelola Pemblokiran + manage_blocks_description: Memungkinkan pengguna untuk memblokir penyedia surel dan alamat IP + manage_custom_emojis: Kelola Emoji Kustom + manage_custom_emojis_description: Memungkinkan pengguna untuk mengelola emoji kustom di server + manage_federation: Kelola Federasi + manage_federation_description: Memungkinkan pengguna untuk memblokir atau memperbolehkan federasi dengan domain lain, dan mengatur pengiriman + manage_invites: Kelola Undangan + manage_invites_description: Memungkinkan pengguna untuk menjelajah dan menonaktifkan tautan undangan + manage_reports: Kelola Laporan + manage_reports_description: Memungkinkan pengguna untuk meninjau laporan dan melakukan tindakan moderasi terhadap mereka + manage_roles: Kelola Peran + manage_roles_description: Memungkinkan pengguna untuk mengelola dan memberikan peran di bawah mereka + manage_rules: Kelola Aturan + manage_rules_description: Memungkinkan pengguna untuk mengubah aturan server + manage_settings: Kelola Pengaturan + manage_settings_description: Memungkinkan pengguna untuk mengubah pengaturan situs + manage_taxonomies: Kelola Taksonomi + manage_taxonomies_description: Memungkinkan pengguna untuk meninjau konten tren dan memperbarui pengaturan tagar + manage_user_access: Kelola Akses Pengguna + manage_user_access_description: Memungkinkan pengguna untuk menonaktifkan otentikasi dua faktor, mengubah alamat surel, dan mengatur ulang kata sandi pengguna lain + manage_users: Kelola Pengguna + manage_users_description: Memungkinkan pengguna untuk melihat detail pengguna lain dan melakukan tindakan moderasi terhadap mereka + manage_webhooks: Kelola Webhook + manage_webhooks_description: Memungkinkan pengguna untuk menyiapkan webhook untuk peristiwa administratif + view_audit_log: Lihat Catatan Audit + view_audit_log_description: Memungkinkan pengguna untuk melihat riwayat tindakan administratif di server + view_dashboard: Lihat Dasbor + view_dashboard_description: Memungkinkan pengguna untuk mengakses dasbor dan berbagai metrik + view_devops: DevOps + view_devops_description: Memungkinkan pengguna untuk mengakses dasbor Sidekiq dan pgHero + title: Peran rules: add_new: Tambah aturan delete: Hapus @@ -573,29 +653,67 @@ id: empty: Belum ada aturan server yang didefinisikan. title: Aturan server settings: + about: + manage_rules: Kelola aturan server + preamble: Menyediakan informasi lanjut tentang bagaimana server ini beroperasi, dimoderasi, dan didana. + rules_hint: Ada area yang khusus untuk peraturan yang pengguna Anda seharusnya tahu. + title: Tentang + appearance: + preamble: Ubah antarmuka web Mastodon. + title: Tampilan + branding: + preamble: Merek server Anda membedakannya dari server lain dalam jaringan. Informasi ini dapat ditampilkan dalam berbagai lingkungan, seperti antarmuka web Mastodon, aplikasi asli, dalam tampilan tautan di situs web lain dan dalam aplikasi perpesanan, dan lain-lain. Untuk alasan ini, buat informasi ini jelas, pendek, dan tidak bertele-tele. + title: Merek + content_retention: + preamble: Atur bagaimana konten yang dibuat oleh pengguna disimpan di Mastodon. + title: Retensi konten + discovery: + follow_recommendations: Ikuti rekomendasi + preamble: Menampilkan konten menarik penting dalam memandu pengguna baru yang mungkin tidak tahu siapa pun di Mastodon. Atur bagaimana berbagai fitur penemuan bekerja di server Anda. + profile_directory: Direktori profil + public_timelines: Linimasa publik + title: Penemuan + trends: Tren domain_blocks: all: Kepada semua orang disabled: Tidak kepada siapa pun users: Ke pengguna lokal yang sudah login + registrations: + preamble: Atur siapa yang dapat membuat akun di server Anda. + title: Pendaftaran registrations_mode: modes: approved: Persetujuan diperlukan untuk mendaftar none: Tidak ada yang dapat mendaftar open: Siapa pun dapat mendaftar + title: Pengaturan Server site_uploads: delete: Hapus berkas yang diunggah destroyed_msg: Situs yang diunggah berhasil dihapus! statuses: + account: Penulis + application: Aplikasi back_to_account: Kembali ke halaman akun back_to_report: Kembali ke halaman laporan batch: remove_from_report: Hapus dari laporan report: Laporan deleted: Dihapus + favourites: Favorit + history: Riwayat versi + in_reply_to: Membalas ke + language: Bahasa media: title: Media + metadata: Metadata no_status_selected: Tak ada status yang berubah karena tak ada yang dipilih + open: Buka kiriman + original_status: Kiriman asli + reblogs: Reblog + status_changed: Kiriman diubah title: Status akun + trending: Sedang tren + visibility: Visibilitas with_media: Dengan media strikes: actions: @@ -635,6 +753,9 @@ id: description_html: Ini adalah tautan yang saat ini dibagikan oleh banyak akun yang dapat dilihat dari server Anda. Ini dapat membantu pengguna Anda menemukan apa yang sedang terjadi di dunia. Tidak ada tautan yang ditampilkan secara publik kecuali Anda sudah menyetujui pengirimnya. Anda juga dapat mengizinkan atau menolak tautan individu. disallow: Batalkan izin tautan disallow_provider: Batalkan izin penerbit + no_link_selected: Tidak ada tautan yang diubah karena tidak ada yang dipilih + publishers: + no_publisher_selected: Tidak ada penerbit yang diubah karena tidak ada yang dipilih shared_by_over_week: other: Dibagikan oleh %{count} orang selama seminggu terakhir title: Tautan sedang tren @@ -653,6 +774,7 @@ id: description_html: Ini adalah kiriman yang diketahui server Anda yang kini sedang dibagikan dan difavoritkan banyak akun. Ini akan membantu pengguna baru dan lama Anda menemukan lebih banyak orang untuk diikuti. Tidak ada kiriman yang ditampilkan secara publik kecuali jika sudah disetujui pemilik akun, dan pemilik akun mengizinkan akun mereka disarankan untuk orang lain. Anda juga dapat mengizinkan atau menolak kiriman individu. disallow: Jangan beri izin kiriman disallow_account: Jangan beri izin penulis + no_status_selected: Tidak ada kiriman yang sedang tren karena tidak ada yang dipilih not_discoverable: Pemilik akun memilih untuk tidak dapat ditemukan shared_by: other: Dibagikan dan difavoritkan %{friendly_count} kali @@ -667,6 +789,7 @@ id: tag_uses_measure: kegunaan total description_html: Ini adalah tagar yang kini sedang muncul di banyak kiriman yang dapat dilihat server Anda. Ini dapat membantu pengguna Anda menemukan apa yang sedang dibicarakan banyak orang. Tagar tidak akan ditampilkan secara publik kecuali jika Anda mengizinkannya. listable: Dapat disarankan + no_tag_selected: Tidak ada tag yang diubah karena tidak ada yang dipilih not_listable: Tidak akan disarankan not_trendable: Tidak akan muncul di bawah tren not_usable: Tidak dapat digunakan @@ -689,15 +812,19 @@ id: webhooks: add_new: Tambah titik akhir delete: Hapus + description_html: Sebuah webhook memungkinkan Mastodon untuk mengirim notifikasi dalam waktu nyata tentang peristiwa yang dipilih ke aplikasi Anda sendiri, sehingga aplikasi Anda dapat memicu reaksi secara otomatis. disable: Matikan disabled: Nonaktif edit: Edit titik akhir + empty: Anda belum memiliki titik akhir webhook yang diatur. enable: Aktifkan enabled: Aktif enabled_events: other: "%{count} acara aktif" events: Acara new: Webhook baru + rotate_secret: Buat ulang rahasia + secret: Rahasia penandatanganan status: Status title: Webhook webhook: Webhook @@ -740,8 +867,8 @@ id: hint_html: Jika Anda ingin pindah dari akun lain ke sini, Anda dapat membuat alias, yang dilakukan sebelum Anda setuju dengan memindah pengikut dari akun lama ke akun sini. Aksi ini tidak berbahaya dan tidak bisa dikembalikan. Pemindahan akun dimulai dari akun lama. remove: Hapus tautan alias appearance: - advanced_web_interface: Antar muka web tingkat lanjut - advanced_web_interface_hint: 'Jika Anda ingin memanfaatkan seluruh lebar layar Anda, antar muka web tingkat lanjut mengizinkan Anda mengonfigurasi beragam kolom untuk menampilkan informasi sebanyak yang Anda mau: Beranda, notifikasi, linimasa gabungan, daftar, dan tagar.' + advanced_web_interface: Antarmuka web tingkat lanjut + advanced_web_interface_hint: 'Jika Anda ingin memanfaatkan seluruh lebar layar Anda, antarmuka web tingkat lanjut memungkinkan Anda mengonfigurasi beragam kolom untuk menampilkan informasi sebanyak yang Anda inginkan: Beranda, notifikasi, linimasa gabungan, daftar, dan tagar.' animations_and_accessibility: Animasi dan aksesibilitas confirmation_dialogs: Dialog konfirmasi discovery: Jelajah @@ -750,7 +877,7 @@ id: guide_link: https://crowdin.com/project/mastodon guide_link_text: Siapa saja bisa berkontribusi. sensitive_content: Konten sensitif - toot_layout: Tata letak toot + toot_layout: Tata letak kiriman application_mailer: notification_preferences: Ubah pilihan email salutation: "%{name}," @@ -766,6 +893,7 @@ id: warning: Hati-hati dengan data ini. Jangan bagikan kepada siapapun! your_token: Token akses Anda auth: + apply_for_account: Masuk ke daftar tunggu change_password: Kata sandi delete_account: Hapus akun delete_account_html: Jika Anda ingin menghapus akun Anda, Anda dapat memproses ini. Anda akan dikonfirmasi. @@ -785,6 +913,7 @@ id: migrate_account: Pindah ke akun berbeda migrate_account_html: Jika Anda ingin mengalihkan akun ini ke akun lain, Anda dapat mengaturnya di sini. or_log_in_with: Atau masuk dengan + privacy_policy_agreement_html: Saya telah membaca dan menerima kebijakan privasi providers: cas: CAS saml: SAML @@ -792,12 +921,18 @@ id: registration_closed: "%{instance} tidak menerima anggota baru" resend_confirmation: Kirim ulang email konfirmasi reset_password: Reset kata sandi + rules: + preamble: Ini diatur dan ditetapkan oleh moderator %{domain}. + title: Beberapa aturan dasar. security: Identitas set_new_password: Tentukan kata sandi baru setup: email_below_hint_html: Jika alamat email di bawah tidak benar, Anda dapat menggantinya di sini dan menerima email konfirmasi baru. email_settings_hint_html: Email konfirmasi telah dikirim ke %{email}. Jika alamat email tidak benar, Anda dapat mengubahnya di pengaturan akun. title: Atur + sign_up: + preamble: Dengan sebuah akun di server Mastodon ini, Anda akan dapat mengikuti orang lain dalam jaringan, di mana pun akun mereka berada. + title: Mari kita siapkan Anda di %{domain}. status: account_status: Status akun confirming: Menunggu konfirmasi email diselesaikan. @@ -917,7 +1052,7 @@ id: archive_takeout: date: Tanggal download: Unduh arsip Anda - hint_html: Anda dapat meminta arsip toot dan media yang Anda unggah. Data yang terekspor akan berformat ActivityPub, dapat dibaca dengan perangkat lunak yang mendukungnya. Anda dapat meminta arsip akun setiap 7 hari. + hint_html: Anda dapat meminta arsip kiriman dan media yang Anda unggah. Data yang terekspor akan berformat ActivityPub, yang dapat dibaca dengan perangkat lunak yang mendukungnya. Anda dapat meminta arsip akun setiap 7 hari. in_progress: Mengompilasi arsip Anda... request: Meminta arsip Anda size: Ukuran @@ -941,25 +1076,54 @@ id: public: Linimasa publik thread: Percakapan edit: + add_keyword: Tambahkan kata kunci + keywords: Kata kunci + statuses: Kiriman individu + statuses_hint_html: Saringan ini diterapkan beberapa kiriman individu jika mereka cocok atau tidak dengan kata kunci di bawah. Tinjau atau hapus kiriman dari saringan. title: Ubah saringan errors: + deprecated_api_multiple_keywords: Parameter ini tidak dapat diubah dari aplikasi ini karena mereka diterapkan ke lebih dari satu kata kunci saringan. Gunakan aplikasi yang lebih baru atau antarmuka web. invalid_context: Konteks tidak ada atau invalid index: + contexts: Saringan dalam %{contexts} delete: Hapus empty: Anda tidak memiliki filter. + expires_in: Kedaluwarsa dalam %{distance} + expires_on: Kedaluwarsa pada %{date} + keywords: + other: "%{count} kata kunci" + statuses: + other: "%{count} kiriman" + statuses_long: + other: "%{count} kiriman individu disembunyikan" title: Saringan new: + save: Simpan saringan baru title: Tambah saringan baru + statuses: + back_to_filter: Kembali ke saringan + batch: + remove: Hapus dari saringan + index: + hint: Saringan ini diterapkan ke beberapa kiriman individu tanpa memengaruhi oleh kriteria lain. Anda dapat menambahkan lebih banyak kiriman ke saringan ini dari antarmuka web. + title: Kiriman yang disaring footer: trending_now: Sedang tren generic: all: Semua + all_items_on_page_selected_html: + other: "%{count} item di laman ini dipilih." + all_matching_items_selected_html: + other: "%{count} item yang cocok dengan pencarian Anda dipilih." changes_saved_msg: Perubahan berhasil disimpan! copy: Salin delete: Hapus + deselect: Batalkan semua pilihan none: Tidak ada order_by: Urut berdasarkan save_changes: Simpan perubahan + select_all_matching_items: + other: Pilih %{count} item yang cocok dengan pencarian Anda. today: hari ini validation_errors: other: Ada yang belum benar! Silakan tinjau %{count} kesalahan di bawah ini @@ -1059,8 +1223,12 @@ id: carry_blocks_over_text: Pengguna ini pindah dari %{acct}, yang telah Anda blokir sebelumnya. carry_mutes_over_text: Pengguna ini pindah dari %{acct}, yang telah Anda bisukan sebelumnya. copy_account_note_text: 'Pengguna ini pindah dari %{acct}, ini dia pesan Anda sebelumnya tentang mereka:' + navigation: + toggle_menu: Saklar menu notification_mailer: admin: + report: + subject: "%{name} mengirim sebuah laporan" sign_up: subject: "%{name} mendaftar" favourite: @@ -1134,6 +1302,8 @@ id: other: Lainnya posting_defaults: Kiriman bawaan public_timelines: Linimasa publik + privacy_policy: + title: Kebijakan Privasi reactions: errors: limit_reached: Batas reaksi yang berbeda terpenuhi @@ -1166,8 +1336,8 @@ id: account: Kiriman publik dari @%{acct} tag: 'Kiriman publik ditagari #%{hashtag}' scheduled_statuses: - over_daily_limit: Anda telah melampaui batas %{limit} toot terjadwal untuk sehari - over_total_limit: Anda telah melampaui batas %{limit} toot terjadwal + over_daily_limit: Anda telah melampaui batas %{limit} kiriman terjadwal untuk sehari + over_total_limit: Anda telah melampaui batas %{limit} kiriman terjadwal too_soon: Tanggal terjadwal haruslah pada hari yang akan datang sessions: activity: Aktivitas terakhir @@ -1255,15 +1425,15 @@ id: over_character_limit: melebihi %{max} karakter pin_errors: direct: Kiriman yang hanya terlihat oleh pengguna yang disebutkan tidak dapat disematkan - limit: Anda sudah mencapai jumlah maksimum toot yang dapat disematkan - ownership: Toot orang lain tidak bisa disematkan + limit: Anda sudah mencapai jumlah maksimum kiriman yang dapat disematkan + ownership: Kiriman orang lain tidak bisa disematkan reblog: Boost tidak bisa disematkan poll: total_people: other: "%{count} orang" total_votes: other: "%{count} memilih" - vote: Memilih + vote: Pilih show_more: Tampilkan selengkapnya show_newer: Tampilkan lebih baru show_older: Tampilkan lebih lama @@ -1314,7 +1484,7 @@ id: min_reblogs: Simpan kiriman yang di-boost lebih dari min_reblogs_hint: Tidak menghapus kiriman Anda yang di-boost lebih dari sekian kali. Kosongkan bila ingin menghapus kiriman tanpa peduli jumlah boost-nya stream_entries: - pinned: Toot tersemat + pinned: Kiriman tersemat reblogged: di-boost-kan sensitive_content: Konten sensitif strikes: @@ -1400,8 +1570,10 @@ id: suspend: Akun ditangguhkan welcome: edit_profile_action: Siapkan profil + edit_profile_step: Anda dapat mengubah profil Anda dengan mengunggah sebuah foto profil, mengubah nama tampilan Anda dan lain-lain. Anda dapat memilih untuk meninjau pengikut baru sebelum mereka diperbolehkan untuk mengikuti Anda. explanation: Beberapa tips sebelum Anda memulai final_action: Mulai mengirim + final_step: 'Mulai mengirim! Bahkan tanpa pengikut, kiriman publik Anda dapat dilihat oleh orang lain, misalkan di linimasa lokal atau dalam tagar. Anda dapat memperkenalkan diri Anda dalam tagar #introductions.' full_handle: Penanganan penuh Anda full_handle_hint: Ini yang dapat Anda sampaikan kepada teman agar mereka dapat mengirim pesan atau mengikuti Anda dari server lain. subject: Selamat datang di Mastodon diff --git a/config/locales/ig.yml b/config/locales/ig.yml new file mode 100644 index 0000000000..c327065183 --- /dev/null +++ b/config/locales/ig.yml @@ -0,0 +1,12 @@ +--- +ig: + errors: + '400': The request you submitted was invalid or malformed. + '403': You don't have permission to view this page. + '404': The page you are looking for isn't here. + '406': This page is not available in the requested format. + '410': The page you were looking for doesn't exist here anymore. + '422': + '429': Too many requests + '500': + '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/is.yml b/config/locales/is.yml index cf4f8cbc51..72ca95e6f9 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1249,6 +1249,8 @@ is: carry_blocks_over_text: Þessi notandi fluttist frá %{acct}, sem þú hafðir útilokað. carry_mutes_over_text: Þessi notandi fluttist frá %{acct}, sem þú hafðir þaggað niður í. copy_account_note_text: 'Þessi notandi fluttist frá %{acct}, hér eru fyrri minnispunktar þínir um hann:' + navigation: + toggle_menu: Víxla valmynd af/á notification_mailer: admin: report: diff --git a/config/locales/it.yml b/config/locales/it.yml index a81ede69d1..ed71c40262 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1251,6 +1251,8 @@ it: carry_blocks_over_text: Questo utente si è spostato da %{acct} che hai bloccato. carry_mutes_over_text: Questo utente si è spostato da %{acct} che hai silenziato. copy_account_note_text: 'Questo utente si è spostato da %{acct}, ecco le tue note precedenti su di loro:' + navigation: + toggle_menu: Cambia menu notification_mailer: admin: report: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index bea0677adb..5ee19aa6b1 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -5,7 +5,7 @@ ja: contact_missing: 未設定 contact_unavailable: N/A hosted_on: Mastodon hosted on %{domain} - title: About + title: このサーバーについて accounts: follow: フォロー followers: @@ -229,6 +229,7 @@ ja: confirm_user_html: "%{name}さんが%{target}さんのメールアドレスを確認済みにしました" create_account_warning_html: "%{name}さんが%{target}さんに警告メールを送信しました" create_announcement_html: "%{name}さんが新しいお知らせ %{target}を作成しました" + create_canonical_email_block_html: "%{name} さんがハッシュ %{target} を持つメールをブロックしました。" create_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を追加しました" create_domain_allow_html: "%{name}さんが%{target}の連合を許可しました" create_domain_block_html: "%{name}さんがドメイン %{target}をブロックしました" @@ -238,6 +239,7 @@ ja: create_user_role_html: "%{name}さんがロール『%{target}』を作成しました" demote_user_html: "%{name}さんが%{target}さんを降格しました" destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました" + destroy_canonical_email_block_html: "%{name} さんがハッシュ %{target} を持つメールのブロックを解除しました。" destroy_custom_emoji_html: "%{name}さんがカスタム絵文字『%{target}』を削除しました" destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました" destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました" @@ -273,6 +275,7 @@ ja: update_announcement_html: "%{name}さんがお知らせ %{target}を更新しました" update_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を更新しました" update_domain_block_html: "%{name}さんが%{target}のドメインブロックを更新しました" + update_ip_block_html: "%{name} さんがIP %{target} のルールを更新しました" update_status_html: "%{name}さんが%{target}さんの投稿を更新しました" update_user_role_html: "%{name}さんがロール『%{target}』を変更しました" empty: ログが見つかりませんでした @@ -318,6 +321,7 @@ ja: listed: 表示 new: title: 新規カスタム絵文字の追加 + no_emoji_selected: 何も選択されていないため、変更されていません not_permitted: この操作を実行する権限がありません。 overwrite: 上書き shortcode: ショートコード @@ -417,6 +421,8 @@ ja: unsuppress: おすすめフォローを復元 instances: availability: + description_html: + other: ドメインへの配信が %{count} 日失敗した場合、そのドメインからの配信を受信しない限り、それ以上の配信を行いません。 failure_threshold_reached: "%{date}に失敗のしきい値に達しました。" failures_recorded: other: "%{count}日間試行に失敗しました。" @@ -476,6 +482,7 @@ ja: total_followed_by_us: フォロー合計 total_reported: 通報合計 total_storage: 添付されたメディア + totals_time_period_hint_html: 以下に表示される合計には、すべての時間のデータが含まれています。 invites: deactivate_all: すべて無効化 filter: @@ -614,9 +621,11 @@ ja: manage_federation: 連合の管理 manage_federation_description: ユーザーが他のドメインとの連合をブロックまたは許可したり、配信を制御したりできます。 manage_invites: 招待を管理 + manage_invites_description: 招待リンクの閲覧・解除を可能にする。 manage_reports: レポートの管理 manage_reports_description: ユーザーがレポートを確認したり、モデレーションアクションを実行したりできます。 manage_roles: ロールの管理 + manage_roles_description: ユーザーが自分より下の役割を管理し、割り当てることができます。 manage_rules: ルールの管理 manage_rules_description: ユーザーがサーバールールを変更できるようにします manage_settings: 設定の管理 @@ -626,6 +635,7 @@ ja: manage_user_access: アクセス権を管理 manage_user_access_description: 他のユーザーの2段階認証を無効にしたり、メールアドレスを変更したり、パスワードをリセットしたりすることができます。 manage_users: ユーザーの管理 + manage_users_description: 他のユーザーの詳細情報を閲覧し、モデレーションを行うことができます。 manage_webhooks: Webhookの管理 manage_webhooks_description: 管理者イベントのWebhookを設定できます。 view_audit_log: 監査ログの表示 @@ -645,18 +655,24 @@ ja: settings: about: manage_rules: サーバーのルールを管理 + preamble: サーバーの運営、管理、資金調達の方法について、詳細な情報を提供します。 + rules_hint: ユーザーが守るべきルールのための専用エリアがあります。 title: About appearance: preamble: ウェブインターフェースをカスタマイズします。 title: 外観 branding: + preamble: サーバーのブランディングは、ネットワーク上の他のサーバーと区別するためのものです。この情報は、Mastodon の Web インターフェース、ネイティブアプリケーション、他の Web サイトやメッセージングアプリのリンクプレビューなど、様々な所で表示される可能性があります。このため、明確で短く、簡潔に記載することをおすすめします。 title: ブランディング content_retention: + preamble: ユーザーが生成したコンテンツがどのように Mastodon に保存されるかを管理します。 title: コンテンツの保持 discovery: follow_recommendations: おすすめフォロー + preamble: Mastodon を知らないユーザーを取り込むには、興味深いコンテンツを浮上させることが重要です。サーバー上で様々なディスカバリー機能がどのように機能するかを制御します。 profile_directory: ディレクトリ public_timelines: 公開タイムライン + title: 見つける trends: トレンド domain_blocks: all: 誰にでも許可 @@ -675,16 +691,29 @@ ja: delete: ファイルを削除 destroyed_msg: ファイルを削除しました! statuses: + account: 作成者 + application: アプリ back_to_account: アカウントページに戻る back_to_report: 通報ページに戻る batch: remove_from_report: 通報から削除 report: 通報 deleted: 削除済み + favourites: お気に入り + history: 更新履歴 + in_reply_to: 返信先 + language: 言語 media: title: メディア + metadata: メタデータ no_status_selected: 何も選択されていないため、変更されていません + open: 投稿を開く + original_status: オリジナルの投稿 + reblogs: ブースト + status_changed: 投稿を変更しました title: 投稿一覧 + trending: トレンド + visibility: 公開範囲 with_media: メディアあり strikes: actions: @@ -724,6 +753,9 @@ ja: description_html: これらは、多くのユーザーに共有されているリンクです。あなたのユーザーが世の中の動きを知るのに役立ちます。あなたが公開者を承認するまで、リンクは一般に表示されません。また、個別のリンクの許可・拒否も可能です。 disallow: リンクの拒否 disallow_provider: 発行者の拒否 + no_link_selected: 何も選択されていないため、変更されていません + publishers: + no_publisher_selected: 何も選択されていないため、変更されていません shared_by_over_week: other: 週間%{count}人に共有されました title: トレンドリンク @@ -739,8 +771,13 @@ ja: statuses: allow: 掲載を許可 allow_account: 投稿者を許可 + description_html: これらは、このサーバーが知っている、たくさんシェアされ、お気に入り登録されている投稿です。新しいユーザーや久しぶりにアクセスするユーザーがフォローする人を探すのに役立ちます。あなたが投稿者を承認し、投稿者が許可するまで、表示されることはありません。また、個別の投稿を許可または拒否することもできます。 disallow: 掲載を拒否 disallow_account: 投稿者を拒否 + no_status_selected: 何も選択されていないため、変更されていません + not_discoverable: 投稿者は発見可能であることに同意していません + shared_by: + other: "%{friendly_count} 回の共有、お気に入り" title: トレンド投稿 tags: current_score: 現在のスコア %{score} @@ -752,6 +789,7 @@ ja: tag_uses_measure: 合計利用数 description_html: これらは、多くの投稿に使用されているハッシュタグです。あなたのユーザーが、人々が今一番話題にしていることを知るのに役立ちます。あなたが承認するまで、ハッシュタグは一般に表示されません。 listable: おすすめに表示する + no_tag_selected: 何も選択されていないため、変更されていません not_listable: おすすめに表示しない not_trendable: トレンドに表示しない not_usable: 使用を禁止 @@ -777,12 +815,14 @@ ja: disable: 無効化 disabled: 無効 edit: エンドポイントを編集 + empty: まだWebhookエンドポイントが設定されていません。 enable: 有効化 enabled: アクティブ enabled_events: other: "%{count}件の有効なイベント" events: イベント new: 新しいwebhook + rotate_secret: シークレットをローテーションする status: ステータス title: Webhooks webhook: Webhook @@ -869,6 +909,7 @@ ja: migrate_account: 別のアカウントに引っ越す migrate_account_html: 引っ越し先を明記したい場合はこちらで設定できます。 or_log_in_with: または次のサービスでログイン + privacy_policy_agreement_html: プライバシーポリシーを読み、同意します providers: cas: CAS saml: SAML @@ -876,12 +917,18 @@ ja: registration_closed: "%{instance}は現在、新規登録停止中です" resend_confirmation: 確認メールを再送する reset_password: パスワードを再発行 + rules: + preamble: これらは %{domain} モデレータによって設定され、実施されます。 + title: いくつかのルールがあります。 security: セキュリティ set_new_password: 新しいパスワード setup: email_below_hint_html: 下記のメールアドレスが間違っている場合、ここで変更することで新たに確認メールを受信できます。 email_settings_hint_html: 確認用のメールを%{email}に送信しました。メールアドレスが正しくない場合、以下より変更することができます。 title: セットアップ + sign_up: + preamble: この Mastodon サーバーのアカウントがあれば、ネットワーク上の他の人のアカウントがどこでホストされているかに関係なく、その人をフォローすることができます。 + title: さあ %{domain} でセットアップしましょう. status: account_status: アカウントの状態 confirming: メールアドレスの確認が完了するのを待っています。 @@ -1030,6 +1077,7 @@ ja: statuses: 個別の投稿 title: フィルターを編集 errors: + deprecated_api_multiple_keywords: これらのパラメータは複数のフィルタキーワードに適用されるため、このアプリケーションから変更できません。 最新のアプリケーションまたはWebインターフェースを使用してください。 invalid_context: 対象がないか無効です index: contexts: "%{contexts}のフィルター" @@ -1052,6 +1100,7 @@ ja: batch: remove: フィルターから削除する index: + hint: このフィルターは、他の条件に関係なく個々の投稿を選択する場合に適用されます。Webインターフェースからこのフィルターにさらに投稿を追加できます。 title: フィルターされた投稿 footer: trending_now: トレンドタグ @@ -1064,6 +1113,8 @@ ja: none: なし order_by: 並び順 save_changes: 変更を保存 + select_all_matching_items: + other: 検索条件に一致するすべての %{count} 個の項目を選択 today: 今日 validation_errors: other: エラーが発生しました! 以下の%{count}件のエラーを確認してください @@ -1163,6 +1214,8 @@ ja: carry_blocks_over_text: このユーザーは、あなたがブロックしていた%{acct}から引っ越しました。 carry_mutes_over_text: このユーザーは、あなたがミュートしていた%{acct}から引っ越しました。 copy_account_note_text: このユーザーは%{acct}から引っ越しました。これは以前のメモです。 + navigation: + toggle_menu: メニューを表示 notification_mailer: admin: report: @@ -1425,6 +1478,9 @@ ja: pinned: 固定された投稿 reblogged: さんがブースト sensitive_content: 閲覧注意 + strikes: + errors: + too_late: このストライクに抗議するには遅すぎます tags: does_not_match_previous_name: 以前の名前と一致しません themes: @@ -1505,8 +1561,12 @@ ja: suspend: アカウントが停止されました welcome: edit_profile_action: プロフィールを設定 + edit_profile_step: |- + プロフィール画像をアップロードしたり、ディスプレイネームを変更したりして、プロフィールをカスタマイズできます。 + 新しいフォロワーのフォローリクエストを承認される前に、新しいフォロワーの確認をオプトインすることができます。 explanation: 始めるにあたってのアドバイスです final_action: 始めましょう + final_step: 'さあ、始めましょう! たとえフォロワーがまだいなくても、あなたの公開した投稿はローカルタイムラインやハッシュタグなどを通じて誰かの目にとまるはずです。自己紹介をしたいときには #introductions ハッシュタグが便利かもしれません。' full_handle: あなたの正式なユーザーID full_handle_hint: 別のサーバーの友達とフォローやメッセージをやり取りする際には、これを伝えることになります。 subject: Mastodonへようこそ diff --git a/config/locales/kab.yml b/config/locales/kab.yml index a4ea1f2119..2ae6a455a1 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -603,6 +603,8 @@ kab: prev: Win iɛeddan preferences: other: Wiyaḍ + privacy_policy: + title: Tasertit tabaḍnit relationships: activity: Armud n umiḍan followers: Imeḍfaṛen diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 3ae3fa6816..3ad38d6cb5 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -657,6 +657,8 @@ ko: settings: about: manage_rules: 서버 규칙 관리 + preamble: 이 서버가 어떻게 운영되고, 중재되고, 자금을 조달하는지 등에 관한 자세한 정보를 기입하세요. + rules_hint: 사용자들이 준수해야 할 규칙들을 위한 전용 공간입니다. title: 정보 appearance: preamble: 마스토돈의 웹 인터페이스를 변경 @@ -664,6 +666,7 @@ ko: branding: title: 브랜딩 content_retention: + preamble: 마스토돈에 저장된 사용자 콘텐츠를 어떻게 다룰지 제어합니다. title: 콘텐츠 보존기한 discovery: follow_recommendations: 팔로우 추천 @@ -676,6 +679,7 @@ ko: disabled: 아무에게도 안 함 users: 로그인 한 사용자에게 registrations: + preamble: 누가 이 서버에 계정을 만들 수 있는 지 제어합니다. title: 가입 registrations_mode: modes: @@ -1219,6 +1223,8 @@ ko: carry_blocks_over_text: 이 사용자는 당신이 차단한 %{acct}로부터 이주 했습니다. carry_mutes_over_text: 이 사용자는 당신이 뮤트한 %{acct}로부터 이주 했습니다. copy_account_note_text: '이 사용자는 %{acct}로부터 이동하였습니다. 당신의 이전 노트는 이렇습니다:' + navigation: + toggle_menu: 토글 메뉴 notification_mailer: admin: report: diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 335271f3f3..f3094f46e1 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -677,7 +677,10 @@ ku: appearance: preamble: Navrûya tevnê ya Mastodon kesane bike. title: Xuyang + content_retention: + title: Parastina naverokê discovery: + follow_recommendations: Pêşniyarên şopandinê trends: Rojev domain_blocks: all: Bo herkesî @@ -695,16 +698,29 @@ ku: delete: Pela barkirî jê bibe destroyed_msg: Barkirina malperê bi serkeftî hate jêbirin! statuses: + account: Nivîskar + application: Sepan back_to_account: Vegere bo rûpela ajimêr back_to_report: Vegere rûpela ragihandinê batch: remove_from_report: Ji ragihandinê rake report: Ragihîne deleted: Hate jêbirin + favourites: Bijarte + history: Dîroka guhertoyê + in_reply_to: Bersiv bide + language: Ziman media: title: Medya + metadata: Metadata no_status_selected: Tu şandî nehat hilbijartin ji ber vê tu şandî jî nehat guhertin + open: Şandiyê veke + original_status: Şandiyê resen + reblogs: Ji nû ve nivîsandin + status_changed: Şandî hate guhertin title: Şandiyên ajimêr + trending: Rojev + visibility: Xuyabarî with_media: Bi medya yê re strikes: actions: @@ -1226,6 +1242,8 @@ ku: carry_blocks_over_text: Ev bikarhêner ji %{acct}, ku te astengkirî bû, bar kir. carry_mutes_over_text: Ev bikarhêner ji %{acct}, ku te bê deng kirbû, bar kir. copy_account_note_text: 'Ev bikarhêner ji %{acct} livî ye, li vir nîşeyên te yên berê ku te di derbarê wî/ê de nivîsandiye:' + navigation: + toggle_menu: Menuyê biguherîne notification_mailer: admin: report: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 47dafbad67..57647b1426 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1275,6 +1275,8 @@ lv: carry_blocks_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji bloķējis. carry_mutes_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji apklusinājis. copy_account_note_text: 'Šis lietotājs pārcēlās no %{acct}, šeit bija tavas iepriekšējās piezīmes par viņu:' + navigation: + toggle_menu: Pārslēgt izvēlni notification_mailer: admin: report: diff --git a/config/locales/my.yml b/config/locales/my.yml new file mode 100644 index 0000000000..399105ce07 --- /dev/null +++ b/config/locales/my.yml @@ -0,0 +1,12 @@ +--- +my: + errors: + '400': The request you submitted was invalid or malformed. + '403': You don't have permission to view this page. + '404': The page you are looking for isn't here. + '406': This page is not available in the requested format. + '410': The page you were looking for doesn't exist here anymore. + '422': + '429': Too many requests + '500': + '503': The page could not be served due to a temporary server failure. diff --git a/config/locales/nl.yml b/config/locales/nl.yml index fcc777af23..2073767760 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -58,6 +58,7 @@ nl: demote: Degraderen destroyed_msg: De verwijdering van de gegevens van %{username} staat nu in de wachtrij disable: Bevriezen + disable_sign_in_token_auth: E-mail token authenticatie uitschakelen disable_two_factor_authentication: 2FA uitschakelen disabled: Bevroren display_name: Weergavenaam @@ -66,6 +67,7 @@ nl: email: E-mail email_status: E-mailstatus enable: Ontdooien + enable_sign_in_token_auth: E-mail token authenticatie inschakelen enabled: Ingeschakeld enabled_msg: Het ontdooien van het account van %{username} is geslaagd followers: Volgers @@ -420,6 +422,9 @@ nl: unsuppress: Account weer aanbevelen instances: availability: + failures_recorded: + one: Mislukte poging op %{count} dag. + other: Mislukte pogingen op %{count} verschillende dagen. no_failures_recorded: Geen storingen bekend. title: Beschikbaarheid warning: De laatste poging om met deze server te verbinden was onsuccesvol @@ -674,6 +679,7 @@ nl: with_media: Met media strikes: actions: + delete_statuses: "%{name} heeft de toots van %{target} verwijderd" silence: "%{name} beperkte het account %{target}" suspend: "%{name} schortte het account %{target} op" appeal_approved: Bezwaar ingediend @@ -737,8 +743,10 @@ nl: listable: Kan worden aanbevolen no_tag_selected: Er werden geen hashtags gewijzigd, omdat er geen enkele werd geselecteerd not_listable: Wordt niet aanbevolen + not_trendable: Zal niet onder trends verschijnen not_usable: Kan niet worden gebruikt title: Trending hashtags + trendable: Kan onder trends verschijnen trending_rank: 'Trending #%{rank}' usable: Kan worden gebruikt title: Trends diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 9f6c024c84..5a6dd0ecbe 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1301,6 +1301,8 @@ pl: carry_blocks_over_text: Ten użytkownik przeniósł się z konta %{acct}, które zablokowałeś(-aś). carry_mutes_over_text: Ten użytkownik przeniósł się z konta %{acct}, które wyciszyłeś(-aś). copy_account_note_text: 'Ten użytkownik przeniósł się z konta %{acct}, oto Twoje poprzednie notatki o nim:' + navigation: + toggle_menu: Przełącz menu notification_mailer: admin: report: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 8ac53680d8..032187a346 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -5,6 +5,7 @@ pt-BR: contact_missing: Não definido contact_unavailable: Não disponível hosted_on: Instância Mastodon em %{domain} + title: Sobre accounts: follow: Seguir followers: @@ -173,6 +174,7 @@ pt-BR: confirm_user: Confirmar Usuário create_account_warning: Criar Aviso create_announcement: Criar Anúncio + create_canonical_email_block: Criar bloqueio de Endereço eletrônico create_custom_emoji: Criar Emoji Personalizado create_domain_allow: Adicionar domínio permitido create_domain_block: Criar Bloqueio de Domínio @@ -182,6 +184,7 @@ pt-BR: create_user_role: Criar Função demote_user: Rebaixar usuário destroy_announcement: Excluir anúncio + destroy_canonical_email_block: Excluir Bloqueio de Endereço Eletrônico destroy_custom_emoji: Excluir emoji personalizado destroy_domain_allow: Excluir domínio permitido destroy_domain_block: Excluir Bloqueio de Domínio @@ -217,6 +220,7 @@ pt-BR: update_announcement: Editar anúncio update_custom_emoji: Editar Emoji Personalizado update_domain_block: Atualizar bloqueio de domínio + update_ip_block: Atualizar regra de IP update_status: Editar Status update_user_role: Atualizar função actions: @@ -228,6 +232,7 @@ pt-BR: confirm_user_html: "%{name} confirmou o endereço de e-mail do usuário %{target}" create_account_warning_html: "%{name} enviou um aviso para %{target}" create_announcement_html: "%{name} criou o novo anúncio %{target}" + create_canonical_email_block_html: "%{name} bloqueou o endereço com o marcador %{target}" create_custom_emoji_html: "%{name} enviou o novo emoji %{target}" create_domain_allow_html: "%{name} permitiu federação com domínio %{target}" create_domain_block_html: "%{name} bloqueou o domínio %{target}" @@ -237,6 +242,8 @@ pt-BR: create_user_role_html: "%{name} criou a função %{target}" demote_user_html: "%{name} rebaixou o usuário %{target}" destroy_announcement_html: "%{name} excluiu o anúncio %{target}" + destroy_canonical_email_block_html: "%{name} desbloqueou o endereço com o marcador %{target}" + destroy_custom_emoji_html: "%{name} apagou o emoji %{target}" destroy_domain_allow_html: "%{name} bloqueou federação com domínio %{target}" destroy_domain_block_html: "%{name} deixou de bloquear domínio %{target}" destroy_email_domain_block_html: "%{name} adicionou domínio de e-mail %{target} à lista branca" @@ -271,6 +278,7 @@ pt-BR: update_announcement_html: "%{name} atualizou o comunicado %{target}" update_custom_emoji_html: "%{name} atualizou o emoji %{target}" update_domain_block_html: "%{name} atualizou o bloqueio de domínio de %{target}" + update_ip_block_html: "%{name} alterou a regra para IP %{target}" update_status_html: "%{name} atualizou a publicação de %{target}" update_user_role_html: "%{name} alterou a função %{target}" empty: Nenhum registro encontrado. @@ -316,6 +324,7 @@ pt-BR: listed: Listado new: title: Adicionar novo emoji personalizado + no_emoji_selected: Nenhum emoji foi alterado, pois nenhum foi selecionado not_permitted: Você não tem permissão para executar esta ação overwrite: Sobrescrever shortcode: Atalho @@ -538,9 +547,15 @@ pt-BR: action_log: Logs de auditoria action_taken_by: Atitude tomada por actions: + delete_description_html: As publicações denunciadas serão apagadas e um aviso de violação será mantido para te informar sobre o agravamento caso essa mesma conta cometa infrações no futuro. + mark_as_sensitive_description_html: Os conteúdos de mídia em publicações denunciadas serão marcados como sensíveis e um aviso de violação será mantido para te informar sobre o agravamento caso essa mesma conta comenta infrações no futuro. other_description_html: Veja mais opções para controlar o comportamento da conta e personalizar a comunicação com a conta reportada. + resolve_description_html: Nenhuma ação será tomada contra a conta denunciada, nenhuma violação será guardada, e a denúncia será encerrada. silence_description_html: O perfil será visível apenas para aqueles que já o seguem ou que o procuram manualmente, limitando severamente seu alcance. Pode ser sempre revertido. suspend_description_html: O perfil e todo o seu conteúdo ficarão inacessíveis até que seja eventualmente excluído. Interagir com a conta será impossível. Reversível dentro de 30 dias. + actions_description_html: 'Decida que medidas tomar para resolver esta denúncia. Se você receber uma ação punitiva contra a conta denunciada, ela receberá uma notificação por e-mail, exceto quando for selecionada a categoria Spam for selecionada. + + ' add_to_report: Adicionar mais ao relatório are_you_sure: Você tem certeza? assign_to_self: Pegar @@ -568,6 +583,7 @@ pt-BR: title: Notas notes_description_html: Visualize e deixe anotações para outros moderadores e para o seu "eu" do futuro quick_actions_description_html: 'Tome uma ação rápida ou role para baixo para ver o conteúdo relatado:' + remote_user_placeholder: o usuário remoto de %{instance} reopen: Reabrir denúncia report: 'Denúncia #%{id}' reported_account: Conta denunciada @@ -591,6 +607,7 @@ pt-BR: other: "%{count} usuários" categories: administration: Administração + devops: Devops invites: Convites moderation: Moderação special: Especial @@ -602,17 +619,24 @@ pt-BR: privileges: administrator: Administrador administrator_description: Usuários com essa permissão irão ignorar todas as permissões + delete_user_data: Apagar Dados de Usuário + delete_user_data_description: Permitir aos usuários apagar os dados de outros usuários instantaneamente invite_users: Convidar Usuários invite_users_description: Permite que os usuários convidem novas pessoas para o servidor manage_announcements: Gerenciar Avisos manage_announcements_description: Permite aos usuários gerenciar anúncios no servidor + manage_appeals: Gerenciar Apelações + manage_appeals_description: Permite aos usuários revisar as apelações contra ações de moderação + manage_blocks: Gerenciar Bloqueios manage_blocks_description: Permite aos usuários bloquear provedores de e-mail e endereços IP + manage_custom_emojis: Gerenciar Emojis Personalizados manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor manage_federation: Gerenciar Federação manage_federation_description: Permite aos usuários bloquear ou permitir federação com outros domínios e controlar a entregabilidade manage_invites: Gerenciar convites manage_invites_description: Permite que os usuários naveguem e desativem os links de convites manage_reports: Gerenciar relatórios + manage_reports_description: Permite aos usuários avaliar denúncias e realizar ações de moderação contra elas manage_roles: Gerenciar Funções manage_roles_description: Permitir que os usuários gerenciem e atribuam papéis abaixo deles manage_rules: Gerenciar Regras @@ -631,6 +655,8 @@ pt-BR: view_audit_log_description: Permite aos usuários ver um histórico de ações administrativas no servidor view_dashboard: Ver painel view_dashboard_description: Permite que os usuários acessem o painel e várias métricas + view_devops: Devops + view_devops_description: Permite aos usuários acessar os painéis da Sidekiq e pgHero title: Funções rules: add_new: Adicionar regra @@ -640,6 +666,14 @@ pt-BR: empty: Nenhuma regra do servidor foi definida. title: Regras do servidor settings: + about: + title: Sobre + appearance: + title: Aparência + branding: + title: Marca + discovery: + trends: Tendências domain_blocks: all: Para todos disabled: Para ninguém @@ -649,16 +683,23 @@ pt-BR: approved: Aprovação necessária para criar conta none: Ninguém pode criar conta open: Qualquer um pode criar conta + title: Configurações do Servidor site_uploads: delete: Excluir arquivo enviado destroyed_msg: Upload do site excluído com sucesso! statuses: + account: Autor + application: Aplicativo back_to_account: Voltar para página da conta back_to_report: Voltar às denúncias batch: remove_from_report: Remover do relatório report: Denunciar deleted: Excluídos + favourites: Favoritos + history: Histórico de versões + in_reply_to: Em resposta a + language: Idioma media: title: Mídia no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado @@ -736,14 +777,18 @@ pt-BR: enable: Habilitar enabled: Ativo events: Eventos + rotate_secret: Girar segredo status: Status admin_mailer: new_appeal: actions: delete_statuses: para excluir suas publicações + disable: para congelar sua conta + mark_statuses_as_sensitive: para marcar suas publicações como sensíveis none: um aviso sensitive: para marcar sua conta como sensível silence: para limitar sua conta + suspend: para suspender sua conta new_pending_account: body: Os detalhes da nova conta estão abaixo. Você pode aprovar ou vetar. subject: Nova conta para revisão em %{instance} (%{username}) @@ -988,6 +1033,7 @@ pt-BR: changes_saved_msg: Alterações foram salvas com sucesso! copy: Copiar delete: Excluir + deselect: Desmarcar todos none: Nenhum order_by: Ordenar por save_changes: Salvar alterações @@ -1197,6 +1243,9 @@ pt-BR: invalid_rules: não faz referência a regras válidas rss: content_warning: 'Aviso de conteúdo:' + descriptions: + account: Publicações públicas de @%{acct} + tag: 'Publicações públicas marcadas com #%{hashtag}' scheduled_statuses: over_daily_limit: Você excedeu o limite de %{limit} toots agendados para esse dia over_total_limit: Você excedeu o limite de %{limit} toots agendados @@ -1355,6 +1404,9 @@ pt-BR: pinned: Toot fixado reblogged: deu boost sensitive_content: Conteúdo sensível + strikes: + errors: + too_late: É tarde demais para apelar esta violação tags: does_not_match_previous_name: não corresponde ao nome anterior themes: @@ -1412,9 +1464,13 @@ pt-BR: disable: Você não poderá mais usar a sua conta, mas o seu perfil e outros dados permanecem intactos. Você pode solicitar um backup dos seus dados, mudar as configurações ou excluir sua conta. sensitive: A partir de agora, todos os seus arquivos de mídia enviados serão marcados como confidenciais e escondidos por trás de um aviso de clique. reason: 'Motivo:' + statuses: 'Publicações citadas:' subject: + delete_statuses: Suas publicações em %{acct} foram removidas disable: Sua conta %{acct} foi bloqueada + mark_statuses_as_sensitive: Suas publicações em %{acct} foram marcadas como sensíveis none: Aviso para %{acct} + sensitive: Suas publicações em %{acct} serão marcadas como sensíveis a partir de agora silence: Sua conta %{acct} foi silenciada suspend: Sua conta %{acct} foi banida title: @@ -1422,6 +1478,7 @@ pt-BR: disable: Conta bloqueada mark_statuses_as_sensitive: Postagens marcadas como sensíveis none: Aviso + sensitive: Conta marcada como sensível silence: Conta silenciada suspend: Conta banida welcome: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index a5c4a6de1e..d1f29a92b5 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1249,6 +1249,8 @@ pt-PT: carry_blocks_over_text: Este utilizador migrou de %{acct}, que você tinha bloqueado. carry_mutes_over_text: Este utilizador migrou de %{acct}, que você tinha silenciado. copy_account_note_text: 'Este utilizador migrou de %{acct}, aqui estão as suas notas anteriores sobre ele:' + navigation: + toggle_menu: Abrir/fechar menu notification_mailer: admin: report: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 086c282267..6d63959520 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1177,6 +1177,8 @@ ru: carry_blocks_over_text: Этот пользователь переехал с учётной записи %{acct}, которую вы заблокировали. carry_mutes_over_text: Этот пользователь перешёл с учётной записи %{acct}, которую вы игнорируете. copy_account_note_text: 'Этот пользователь переехал с %{acct}, вот ваша предыдущая заметка о нём:' + navigation: + toggle_menu: Переключить меню notification_mailer: admin: report: diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index 35772a11e7..1ed63a99a6 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -67,6 +67,8 @@ ar: with_dns_records: سوف تُبذل محاولة لحل سجلات DNS الخاصة بالنطاق المعني، كما ستُمنع النتائج featured_tag: name: 'رُبَّما تريد·ين استخدام واحد مِن بين هذه:' + form_admin_settings: + site_contact_username: كيف يمكن للناس أن يصلوا إليك في ماستدون. form_challenge: current_password: إنك بصدد الدخول إلى منطقة آمنة imports: @@ -185,11 +187,21 @@ ar: with_dns_records: تضمين سجلات MX و عناوين IP للنطاق featured_tag: name: الوسم + filters: + actions: + hide: إخفاء بالكامل form_admin_settings: + custom_css: سي أس أس CSS مخصص + profile_directory: تفعيل دليل الصفحات التعريفية + registrations_mode: من يمكنه التسجيل + require_invite_text: يتطلب سببا للانضمام + site_extended_description: الوصف الموسع + site_short_description: وصف الخادم site_terms: سياسة الخصوصية site_title: اسم الخادم theme: الحُلَّة الإفتراضية thumbnail: الصورة المصغرة للخادم + trends: تمكين المتداوَلة interactions: must_be_follower: حظر الإخطارات القادمة من حسابات لا تتبعك must_be_following: حظر الإخطارات القادمة من الحسابات التي لا تتابعها @@ -203,6 +215,7 @@ ar: ip: عنوان IP severities: no_access: حظر الوصول + sign_up_block: حظر التسجيلات sign_up_requires_approval: حد التسجيلات severity: قانون notification_emails: @@ -225,6 +238,9 @@ ar: role: الدور user_role: color: لون الشارة + name: التسمية + permissions_as_keys: الصلاحيات + position: الأولوية 'no': لا not_recommended: غير مستحسن recommended: موصى بها diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 9f2c2e562b..0c63e5133c 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -92,6 +92,7 @@ da: theme: Tema, som udloggede besøgende og nye brugere ser. thumbnail: Et ca. 2:1 billede vist sammen med serveroplysningerne. timeline_preview: Udloggede besøgende kan gennemse serverens seneste offentlige indlæg. + trendable_by_default: Spring manuel gennemgang af trendindhold over. Individuelle elementer kan stadig fjernes fra trends efter kendsgerningen. trends: Tendenser viser, hvilke indlæg, hashtags og nyheder opnår momentum på serveren. form_challenge: current_password: Du bevæger dig ind på et sikkert område diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index c0638b323f..20600c878a 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -8,7 +8,7 @@ de: acct: Gib den benutzernamen@domain des Kontos an, zu dem du umziehen möchtest account_warning_preset: text: Du kannst Beitragssyntax benutzen, wie z.B. URLs, Hashtags und Erwähnungen - title: Optional. Für den Empfänger nicht sichtbar + title: Freiwillige Angabe. Die Accounts können dies nicht sehen admin_account_action: include_statuses: Der Benutzer wird sehen, welche Beiträge diese Maßnahme verursacht haben send_email_notification: Benutzer_in wird Bescheid gegeben, was mit dem Konto geschehen ist @@ -17,7 +17,7 @@ de: types: disable: Den Benutzer daran hindern, sein Konto zu verwenden, aber seinen Inhalt nicht löschen oder ausblenden. none: Verwende dies, um eine Warnung an den Benutzer zu senden, ohne eine andere Aktion auszulösen. - sensitive: Erzwinge, dass alle Medienanhänge des Benutzers als NSFW markiert werden. + sensitive: Erzwinge, dass alle Medien-Dateien dieses Profils mit einer Inhaltswarnung (NSFW) versehen werden. silence: Verhindern, dass der Benutzer in der Lage ist, mit der öffentlichen Sichtbarkeit zu posten und seine Beiträge und Benachrichtigungen von Personen zu verstecken, die ihm nicht folgen. suspend: Verhindert jegliche Interaktion von oder zu diesem Konto und löscht dessen Inhalt. Kann innerhalb von 30 Tagen rückgängig gemacht werden. warning_preset_id: Optional. Du kannst immer noch eigenen Text an das Ende der Vorlage hinzufügen @@ -26,41 +26,41 @@ de: ends_at: Optional. Die Ankündigung wird zu diesem Zeitpunkt automatisch zurückgezogen scheduled_at: Leer lassen, um die Ankündigung sofort zu veröffentlichen starts_at: Optional. Falls deine Ankündigung an einen bestimmten Zeitraum gebunden ist - text: Du kannst die Toot-Syntax verwenden. Bitte beachte den Platz, den die Ankündigung auf dem Bildschirm des Benutzers einnehmen wird + text: Du kannst die Beitrags-Syntax verwenden. Bitte beachte den Platz, den die Ankündigung auf dem Bildschirm der Benutzer*innen einnehmen wird appeal: text: Du kannst nur einmal einen Einspruch bei einem Strike einlegen defaults: - autofollow: Leute, die sich über deine Einladung registrieren, werden dir automatisch folgen + autofollow: Accounts, die sich über deine Einladung registrieren, folgen automatisch deinem Profil avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert bot: Dieses Konto führt lediglich automatisierte Aktionen durch und wird möglicherweise nicht überwacht - context: Ein oder mehrere Kontexte, wo der Filter aktiv werden soll + context: In welchem Bereich soll der Filter aktiv sein? current_password: Aus Sicherheitsgründen gib bitte das Passwort des aktuellen Kontos ein current_username: Um das zu bestätigen, gib den Benutzernamen des aktuellen Kontos ein - digest: Wenn du eine lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen zugeschickt, die du in deiner Abwesenheit empfangen hast + digest: Wenn du eine längere Zeit inaktiv bist oder du in deiner Abwesenheit eine Direktnachricht erhalten hast discoverable: Erlaube deinem Konto, durch Empfehlungen, Trends und andere Funktionen von Fremden entdeckt zu werden - email: Du wirst eine Bestätigungs-E-Mail erhalten + email: Du wirst eine E-Mail zur Verifizierung Deiner E-Mail-Adresse erhalten fields: Du kannst bis zu 4 Elemente auf deinem Profil anzeigen lassen, die als Tabelle dargestellt werden header: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert inbox_url: Kopiere die URL von der Startseite des gewünschten Relays - irreversible: Gefilterte Beiträge werden unwiderruflich gelöscht, selbst wenn der Filter später entfernt wird + irreversible: Bereinigte Beiträge verschwinden unwiderruflich für dich, auch dann, wenn dieser Filter zu einem späteren wieder entfernt wird locale: Die Sprache der Oberfläche, E-Mails und Push-Benachrichtigungen - locked: Wer dir folgen möchte, muss um deine Erlaubnis bitten + locked: Wer dir folgen und deine Inhalte sehen möchte, muss dein Follower sein und dafür um deine Erlaubnis bitten password: Verwende mindestens 8 Zeichen phrase: Wird schreibungsunabhängig mit dem Text und Inhaltswarnung eines Beitrags verglichen scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen. setting_aggregate_reblogs: Zeige denselben Beitrag nicht nochmal an, wenn er erneut geteilt wurde (dies betrifft nur neulich erhaltene erneut geteilte Beiträge) - setting_always_send_emails: Normalerweise werden E-Mail-Benachrichtigungen nicht gesendet, wenn du Mastodon aktiv verwendest - setting_default_sensitive: NSFW-Medien werden erst nach einem Klick sichtbar - setting_display_media_default: Verstecke Medien, die als NSFW markiert sind + setting_always_send_emails: Normalerweise werden Benachrichtigungen nicht per E-Mail verschickt, wenn du gerade auf Mastodon aktiv bist + setting_default_sensitive: Medien, die mit einer Inhaltswarnung (NSFW) versehen worden sind, werden – je nach Einstellung – erst nach einem zusätzlichen Klick angezeigt + setting_display_media_default: Verberge alle Medien, die mit einer Inhaltswarnung (NSFW) versehen sind setting_display_media_hide_all: Alle Medien immer verstecken setting_display_media_show_all: Alle Medien immer anzeigen setting_hide_network: Wem du folgst und wer dir folgt, wird in deinem Profil nicht angezeigt - setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge + setting_noindex: Betrifft alle öffentlichen Daten deines Profils, z. B. deine Beiträge, Account-Empfehlungen und „Über mich“ setting_show_application: Die Anwendung die du nutzt wird in der detaillierten Ansicht deiner Beiträge angezeigt setting_use_blurhash: Die Farbverläufe basieren auf den Farben der versteckten Medien, aber verstecken jegliche Details setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen username: Dein Benutzername wird auf %{domain} einzigartig sein - whole_word: Wenn das Schlagwort nur aus Buchstaben und Zahlen besteht, wird es nur angewendet, wenn es dem ganzen Wort entspricht + whole_word: Wenn das Wort oder die Formulierung nur aus Buchstaben oder Zahlen besteht, tritt der Filter nur dann in Kraft, wenn er exakt dieser Zeichenfolge entspricht domain_allow: domain: Diese Domain kann Daten von diesem Server abrufen, und eingehende Daten werden verarbeitet und gespeichert email_domain_block: @@ -75,9 +75,25 @@ de: warn: Den gefilterten Inhalt hinter einer Warnung ausblenden, die den Filtertitel beinhaltet form_admin_settings: backups_retention_period: Behalte generierte Benutzerarchive für die angegebene Anzahl von Tagen. + bootstrap_timeline_accounts: Diese Konten werden bei den Folge-Empfehlungen für neue Nutzerinnen und Nutzer oben angeheftet. closed_registrations_message: Wird angezeigt, wenn Anmeldungen geschlossen sind content_cache_retention_period: Beiträge von anderen Servern werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht. Dies kann eventuell nicht rückgängig gemacht werden. + custom_css: Sie können benutzerdefinierte Stile auf die Web-Version von Mastodon anwenden. + mascot: Überschreibt die Abbildung in der erweiterten Weboberfläche. media_cache_retention_period: Heruntergeladene Mediendateien werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht und bei Bedarf erneut heruntergeladen. + profile_directory: Das Profilverzeichnis listet alle Benutzer auf, die sich für die Auffindbarkeit entschieden haben. + require_invite_text: Wenn Anmeldungen eine manuelle Genehmigung erfordern, machen Sie die Texteingabe „Warum möchten Sie beitreten?” obligatorisch und nicht optional. + site_contact_email: Wie man Sie bei rechtlichen oder unterstützenden Fragen erreichen kann. + site_contact_username: Wie man Sie auf Mastodon erreichen kann. + site_extended_description: Alle zusätzlichen Informationen, die für Besucher und Nutzer nützlich sein könnten. Kann mit der Markdown-Syntax strukturiert werden. + site_short_description: Eine kurze Beschreibung zur eindeutigen Identifizierung Ihres Servers. Wer betreibt ihn, für wen ist er bestimmt? + site_terms: Verwenden Sie Ihre eigene Datenschutzrichtlinie oder lassen Sie sie leer, um die Standardeinstellung zu verwenden. Kann mit Markdown-Syntax strukturiert werden. + site_title: Wie Personen neben dem Domainnamen auf Ihren Server verweisen können. + theme: Design, das abgemeldete und neue Benutzer*innen. + thumbnail: Ein Bild ungefähr im 2:1-Format, das neben den Server-Informationen angezeigt wird. + timeline_preview: Ausgeloggte Besucherinnen und Besucher können die neuesten öffentlichen Beiträge auf dem Server ansehen. + trendable_by_default: Manuelles Überprüfen angesagter Inhalte überspringen. Einzelne Elemente können später noch aus den Trends entfernt werden. + trends: Trends zeigen, welche Beiträge, Hashtags und Nachrichten auf Ihrem Server an Bedeutung gewinnen. form_challenge: current_password: Du betrittst einen sicheren Bereich imports: @@ -101,7 +117,7 @@ de: tag: name: Du kannst zum Beispiel nur die Groß- und Kleinschreibung der Buchstaben ändern, um es lesbarer zu machen user: - chosen_languages: Wenn aktiviert, werden nur Beiträge in den ausgewählten Sprachen auf den öffentlichen Zeitleisten angezeigt + chosen_languages: Wenn Du hier eine oder mehreren Sprachen auswählst, werden ausschließlich solche Beiträge in den öffentlichen Timelines angezeigt role: Die Rolle kontrolliert welche Berechtigungen ein Benutzer hat user_role: color: Die Farbe, die für die Rolle im gesamten UI verwendet wird, als RGB im Hexformat @@ -132,7 +148,7 @@ de: types: disable: Deaktivieren none: Nichts tun - sensitive: NSFW + sensitive: Inhaltswarnung (NSFW) silence: Stummschalten suspend: Deaktivieren und Benutzerdaten unwiderruflich löschen warning_preset_id: Benutze eine Warnungsvorlage @@ -145,13 +161,13 @@ de: appeal: text: Erkläre, warum diese Entscheidung rückgängig gemacht werden soll defaults: - autofollow: Eingeladene Nutzer sollen dir automatisch folgen + autofollow: Eingeladene Nutzer folgen dir automatisch avatar: Profilbild bot: Dieses Profil ist ein Bot - chosen_languages: Sprachen filtern + chosen_languages: Nach Sprachen filtern confirm_new_password: Neues Passwort bestätigen confirm_password: Passwort bestätigen - context: In Kontexten filtern + context: Filter nach Bereichen current_password: Derzeitiges Passwort data: Daten discoverable: Dieses Profil im Profilverzeichnis zeigen @@ -162,37 +178,37 @@ de: header: Titelbild honeypot: "%{label} (nicht ausfüllen)" inbox_url: Inbox-URL des Relais - irreversible: Verwerfen statt verstecken + irreversible: Endgültig, nicht nur temporär ausblenden locale: Sprache der Benutzeroberfläche - locked: Profil sperren + locked: Geschütztes Profil max_uses: Maximale Verwendungen new_password: Neues Passwort note: Über mich otp_attempt: Zwei-Faktor-Authentifizierung password: Passwort - phrase: Schlagwort oder Satz + phrase: Wort oder Formulierung setting_advanced_layout: Fortgeschrittene Benutzeroberfläche benutzen setting_aggregate_reblogs: Gruppiere erneut geteilte Beiträge auf der Startseite - setting_always_send_emails: E-Mail-Benachrichtigungen immer senden + setting_always_send_emails: Benachrichtigungen immer senden setting_auto_play_gif: Animierte GIFs automatisch abspielen setting_boost_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag geteilt wird setting_crop_images: Bilder in nicht ausgeklappten Beiträgen auf 16:9 zuschneiden setting_default_language: Beitragssprache setting_default_privacy: Beitragssichtbarkeit - setting_default_sensitive: Medien immer als NSFW markieren + setting_default_sensitive: Eigene Medien immer mit einer Inhaltswarnung (NSFW) versehen setting_delete_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag gelöscht wird setting_disable_swiping: Deaktiviere Wischgesten setting_display_media: Medien-Anzeige - setting_display_media_default: NSFW-Inhalte verstecken + setting_display_media_default: Standard setting_display_media_hide_all: Alle Medien verstecken setting_display_media_show_all: Alle Medien anzeigen setting_expand_spoilers: Beiträge mit Inhaltswarnungen immer ausklappen - setting_hide_network: Netzwerk ausblenden + setting_hide_network: Deine Follower und „Folge ich“ nicht anzeigen setting_noindex: Suchmaschinen-Indexierung verhindern setting_reduce_motion: Bewegung in Animationen verringern - setting_show_application: Anwendung preisgeben, die benutzt wurde, um Beiträge zu versenden - setting_system_font_ui: Standardschriftart des Systems verwenden - setting_theme: Theme + setting_show_application: Den Namen der App offenlegen, mit der du deine Beiträge veröffentlichst + setting_system_font_ui: Standardschriftart des Browsers verwenden + setting_theme: Design setting_trends: Heutige Trends anzeigen setting_unfollow_modal: Bestätigungsdialog anzeigen, bevor jemandem entfolgt wird setting_use_blurhash: Farbverlauf für versteckte Medien anzeigen @@ -203,7 +219,7 @@ de: type: Art des Imports username: Profilname username_or_email: Profilname oder E-Mail - whole_word: Ganzes Wort + whole_word: Phrasensuche mit exakter Zeichenfolge erzwingen email_domain_block: with_dns_records: MX-Einträge und IP-Adressen der Domain einbeziehen featured_tag: @@ -214,20 +230,32 @@ de: warn: Mit einer Warnung ausblenden form_admin_settings: backups_retention_period: Aufbewahrungsfrist für Benutzerarchive + bootstrap_timeline_accounts: Neuen Nutzern immer diese Konten empfehlen closed_registrations_message: Benutzerdefinierte Nachricht, wenn Anmeldungen nicht verfügbar sind content_cache_retention_period: Aufbewahrungsfrist für Inhalte im Cache custom_css: Benutzerdefiniertes CSS + mascot: Benutzerdefiniertes Maskottchen (Legacy) media_cache_retention_period: Aufbewahrungsfrist für den Medien-Cache + profile_directory: Benutzerliste aktivieren registrations_mode: Wer kann sich registrieren + require_invite_text: Grund für den Beitritt verlangen show_domain_blocks: Zeige Domain-Blockaden + show_domain_blocks_rationale: Anzeigen, warum Domains gesperrt wurden + site_contact_email: E-Mail-Adresse des Kontakts + site_contact_username: Benutzername des Kontakts + site_extended_description: Detaillierte Beschreibung site_short_description: Serverbeschreibung site_terms: Datenschutzerklärung site_title: Servername + theme: Standard-Design + thumbnail: Vorschaubild des Servers + timeline_preview: Nicht-authentifizierten Zugriff auf öffentliche Timelines gestatten + trendable_by_default: Trends ohne vorherige Überprüfung erlauben trends: Trends aktivieren interactions: - must_be_follower: Benachrichtigungen von Profilen blockieren, die mir nicht folgen - must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge - must_be_following_dm: Private Nachrichten von Profilen, denen ich nicht folge, blockieren + must_be_follower: Benachrichtigungen von Profilen verbergen, die mir nicht folgen + must_be_following: Benachrichtigungen von Profilen verbergen, denen ich nicht folge + must_be_following_dm: Direktnachrichten von Profilen, denen Du nicht folgst, nicht gestatten invite: comment: Kommentar invite_request: @@ -242,14 +270,14 @@ de: severity: Regel notification_emails: appeal: Jemand hat Einspruch gegen eine Moderatorentscheidung eingelegt - digest: Kurzfassungen über E-Mail senden - favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert - follow: E-Mail senden, wenn mir jemand folgt - follow_request: E-Mail senden, wenn mir jemand folgen möchte - mention: E-Mail senden, wenn mich jemand erwähnt + digest: Zusammenfassung senden + favourite: wenn jemand meinen Beitrag favorisiert + follow: wenn mir jemand folgt + follow_request: wenn mir jemand folgen möchte + mention: wenn mich jemand erwähnt pending_account: E-Mail senden, wenn ein neues Benutzerkonto zur Überprüfung aussteht - reblog: E-Mail senden, wenn jemand meinen Beitrag teilt - report: E-Mail senden, wenn ein neuer Bericht vorliegt + reblog: wenn jemand meinen Beitrag teilt + report: E-Mail senden, wenn eine neue Meldung vorliegt trending_tag: Neuer Trend muss überprüft werden rule: text: Regel diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index f2894385f4..353f376886 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -7,10 +7,10 @@ eu: account_migration: acct: Zehaztu migrazioaren xede den kontuaren erabiltzaile@domeinua account_warning_preset: - text: Toot sintaxia erabili dezakezu, URLak, traolak eta aipamenak + text: Bidalketaren sintaxia erabili dezakezu, hala nola, URLak, traolak eta aipamenak title: Aukerakoa. Hartzaileak ez du ikusiko admin_account_action: - include_statuses: Erabiltzaileak moderazio ekintza edo abisu bat eragin duten tootak ikusi ahal izango ditu + include_statuses: Erabiltzaileak moderazio ekintza edo abisu bat eragin duten bidalketak ikusi ahal izango ditu send_email_notification: Erabiltzaileak bere kontuarekin gertatutakoaren azalpen bat jasoko du text_html: Aukerakoa. Toot sintaxia erabili dezakezu. Abisu aurre-ezarpenak gehitu ditzakezu denbora aurrezteko type_html: Erabaki zer egin %{acct} kontuarekin @@ -49,6 +49,7 @@ eu: phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar. setting_aggregate_reblogs: Ez erakutsi bultzada berriak berriki bultzada jaso duten tootentzat (berriki jasotako bultzadei eragiten die bakarrik) + setting_always_send_emails: Normalean eposta jakinarazpenak ez dira bidaliko Mastodon aktiboki erabiltzen ari zaren bitartean setting_default_sensitive: Multimedia hunkigarria lehenetsita ezkutatzen da, eta sakatuz ikusi daiteke setting_display_media_default: Ezkutatu hunkigarri gisa markatutako multimedia setting_display_media_hide_all: Ezkutatu multimedia guztia beti @@ -67,6 +68,32 @@ eu: with_dns_records: Emandako domeinuaren DNS erregistroak ebazteko saiakera bat egingo da eta emaitzak ere zerrenda beltzean sartuko dira featured_tag: name: 'Hauetakoren bat erabili zenezake:' + filters: + action: Aukeratu ze ekintza burutu behar den bidalketa bat iragazkiarekin bat datorrenean + actions: + hide: Ezkutatu erabat iragazitako edukia, existituko ez balitz bezala + warn: Ezkutatu iragazitako edukia iragazkiaren izenburua duen abisu batekin + form_admin_settings: + backups_retention_period: Mantendu sortutako erabiltzailearen artxiboa zehazturiko egun kopuruan. + bootstrap_timeline_accounts: Kontu hauek erabiltzaile berrien jarraitzeko gomendioen goiko aldean ainguratuko dira. + closed_registrations_message: Izen-ematea itxia dagoenean bistaratua + content_cache_retention_period: Balio positibo bat ezarriz gero, egun kopuru horretara iristean beste zerbitzarietako bidalketak ezabatuko dira. Hau ezin da desegin. + custom_css: Estilo pertsonalizatuak aplikatu ditzakezu Mastodonen web bertsioan. + mascot: Web interfaze aurreratuko ilustrazioa gainidazten du. + media_cache_retention_period: Balio positibo bat ezarriz gero, egun kopuru horretara iristean beste zerbitzarietatik deskargatutako multimedia fitxategiak ezabatuko dira. Ondoren, eskatu ahala deskargatuko dira berriz. + profile_directory: Profilen direktorioan ikusgai egotea aukeratu duten erabiltzaile guztiak zerrendatzen dira. + require_invite_text: Izen emateak eskuz onartu behar direnean, "Zergatik elkartu nahi duzu?" testu sarrera derrigorrezko bezala ezarri, ez hautazko + site_contact_email: Jendeak kontsulta legalak egin edo laguntza eskatzeko bidea. + site_contact_username: Jendea Mastodonen zurekin harremanetan jartzeko bidea. + site_extended_description: Bisitari eta erabiltzaileentzat erabilgarria izan daitekeen informazio gehigarria. Markdown sintaxiarekin egituratu daiteke. + site_short_description: Zure zerbitzaria identifikatzen laguntzen duen deskribapen laburra. Nork du ardura? Nori zuzendua dago? + site_terms: Erabili zure pribatutasun politika edo hutsik utzi lehenetsia erabiltzeko. Markdown sintaxiarekin egituratu daiteke. + site_title: Jendeak nola deituko dion zure zerbitzariari, domeinu-izenaz gain. + theme: Saioa hasi gabeko erabiltzaileek eta berriek ikusiko duten gaia. + thumbnail: Zerbitzariaren informazioaren ondoan erakusten den 2:1 inguruko irudia. + timeline_preview: Saioa hasi gabeko erabiltzaileek ezingo dituzte arakatu zerbitzariko bidalketa publiko berrienak. + trendable_by_default: Saltatu joeretako edukiaren eskuzko berrikuspena. Ondoren elementuak banan-bana kendu daitezke joeretatik. + trends: Joeretan zure zerbitzarian bogan dauden bidalketa, traola eta albisteak erakusten dira. form_challenge: current_password: Zonalde seguruan sartzen ari zara imports: @@ -79,6 +106,7 @@ eu: ip: Sartu IPv4 edo IPv6 helbide bat. Tarte osoak blokeatu ditzakezu CIDR sintaxia erabiliz. Kontuz zure burua blokeatu gabe! severities: no_access: Blokeatu baliabide guztietarako sarbidea + sign_up_block: Ezingo da izen-emate berririk egin sign_up_requires_approval: Izen emate berriek zure onarpena beharko dute severity: Aukeratu zer gertatuko den IP honetatik datozen eskaerekin rule: @@ -90,6 +118,16 @@ eu: name: Letrak maiuskula/minuskulara aldatu ditzakezu besterik ez, adibidez irakurterrazago egiteko user: chosen_languages: Ezer markatzekotan, hautatutako hizkuntzetan dauden tootak besterik ez dira erakutsiko + role: Rolak erabiltzaileak dituen baimenak kontrolatzen ditu + user_role: + color: Rolarentzat erabiltzaile interfazean erabiliko den kolorea, formatu hamaseitarreko RGB bezala + highlighted: Honek rola publikoki ikusgai jartzen du + name: Rolaren izen publikoa, rola bereizgarri bezala bistaratzeko ezarrita badago + permissions_as_keys: Rol hau duten erabiltzaileek sarbidea izango dute... + position: Maila goreneko rolak erabakitzen du gatazkaren konponbidea kasu batzuetan. Ekintza batzuk maila baxuagoko rolen gain bakarrik gauzatu daitezke + webhook: + events: Hautatu gertaerak bidaltzeko + url: Nora bidaliko diren gertaerak labels: account: fields: @@ -151,6 +189,7 @@ eu: phrase: Hitz edo esaldi gakoa setting_advanced_layout: Gaitu web interfaze aurreratua setting_aggregate_reblogs: Taldekatu bultzadak denbora-lerroetan + setting_always_send_emails: Bidali beti eposta jakinarazpenak setting_auto_play_gif: Erreproduzitu GIF animatuak automatikoki setting_boost_modal: Erakutsi baieztapen elkarrizketa-koadroa bultzada eman aurretik setting_crop_images: Moztu irudiak hedatu gabeko tootetan 16x9 proportzioan @@ -176,6 +215,7 @@ eu: setting_use_pending_items: Modu geldoa severity: Larritasuna sign_in_token_attempt: Segurtasun kodea + title: Izenburua type: Inportazio mota username: Erabiltzaile-izena username_or_email: Erabiltzaile-izena edo e-mail helbidea @@ -184,6 +224,34 @@ eu: with_dns_records: Sartu ere domeinuaren MX erregistroak eta IPak featured_tag: name: Traola + filters: + actions: + hide: Ezkutatu guztiz + warn: Ezkutatu ohar batekin + form_admin_settings: + backups_retention_period: Erabiltzailearen artxiboa gordetzeko epea + bootstrap_timeline_accounts: Gomendatu beti kontu hauek erabiltzaile berriei + closed_registrations_message: Izen-emateak itxita daudenerako mezu pertsonalizatua + content_cache_retention_period: Edukiaren cache-a atxikitzeko epea + custom_css: CSS pertsonalizatua + mascot: Maskota pertsonalizatua (zaharkitua) + media_cache_retention_period: Multimediaren cachea atxikitzeko epea + profile_directory: Gaitu profil-direktorioa + registrations_mode: Nork eman dezake izena + require_invite_text: Eskatu arrazoi bat batzeko + show_domain_blocks: Erakutsi domeinu-blokeoak + show_domain_blocks_rationale: Erakutsi domeinuak zergatik blokeatu ziren + site_contact_email: Harremanetarako eposta + site_contact_username: Harremanetarako erabiltzaile-izena + site_extended_description: Deskribapen hedatua + site_short_description: Zerbitzariaren deskribapena + site_terms: Pribatutasun politika + site_title: Zerbitzariaren izena + theme: Lehenetsitako gaia + thumbnail: Zerbitzariaren koadro txikia + timeline_preview: Onartu autentifikatu gabeko sarbidea denbora lerro publikoetara + trendable_by_default: Onartu joerak aurrez berrikusi gabe + trends: Gaitu joerak interactions: must_be_follower: Blokeatu jarraitzaile ez direnen jakinarazpenak must_be_following: Blokeatu zuk jarraitzen ez dituzu horien jakinarazpenak @@ -197,6 +265,7 @@ eu: ip: IP-a severities: no_access: Blokeatu sarbidea + sign_up_block: Blokeatu izen-emateak sign_up_requires_approval: Mugatu izen emateak severity: Araua notification_emails: @@ -217,7 +286,19 @@ eu: name: Traola trendable: Baimendu traola hau joeretan agertzea usable: Baimendu tootek traola hau erabiltzea + user: + role: Rola + user_role: + color: Bereizgarriaren kolorea + highlighted: Bistaratu rola bereizgarri bezala erabiltzaileen profiletan + name: Izena + permissions_as_keys: Baimenak + position: Lehentasuna + webhook: + events: Gertaerak gaituta + url: Amaiera-puntuaren URLa 'no': Ez + not_recommended: Ez gomendatua recommended: Aholkatua required: mark: "*" diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 1173d54802..7d2fe2c5fa 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -209,6 +209,7 @@ fr: warn: Cacher derrière un avertissement form_admin_settings: content_cache_retention_period: Durée de rétention du contenu dans le cache + custom_css: CSS personnalisé mascot: Mascotte personnalisée (héritée) media_cache_retention_period: Durée de rétention des médias dans le cache profile_directory: Activer l’annuaire des profils diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index 41114ef0dc..1637b7b042 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -47,7 +47,7 @@ id: locked: Anda harus menerima permintaan pengikut secara manual dan setting privasi postingan akan diubah khusus untuk pengikut password: Gunakan minimal 8 karakter phrase: Akan dicocokkan terlepas dari luaran dalam teks atau peringatan konten dari toot - scopes: API mana yang diizinkan untuk diakses aplikasi. Jika Anda memilih cakupan level-atas, Anda tak perlu memilih yang individual. + scopes: API mana yang diizinkan untuk diakses aplikasi. Jika Anda memilih cakupan level-atas, Anda tidak perlu memilih yang individu. setting_aggregate_reblogs: Jangan tampilkan boost baru untuk toot yang baru saja di-boost (hanya memengaruhi boost yang baru diterima) setting_always_send_emails: Secara normal, notifikasi email tidak akan dikirimkan kepada Anda ketika Anda sedang aktif menggunakan Mastodon setting_default_sensitive: Media sensitif disembunyikan secara bawaan dan akan ditampilkan dengan klik @@ -68,6 +68,32 @@ id: with_dns_records: Usaha untuk menyelesaikan data DNS domain yang diberikan akan dilakukan dan hasilnya akan masuk daftar hitam featured_tag: name: 'Anda mungkin ingin pakai salah satu dari ini:' + filters: + action: Pilih tindakan apa yang dilakukan ketika sebuah kiriman cocok dengan saringan + actions: + hide: Sembunyikan konten yang disaring, seperti itu tidak ada + warn: Sembunyikan konten yang disaring di belakang sebuah peringatan menyebutkan judul saringan + form_admin_settings: + backups_retention_period: Simpan arsip pengguna yang dibuat untuk jumlah hari yang ditetapkan. + bootstrap_timeline_accounts: Akun ini akan disematkan di atas rekomendasi ikut pengguna baru. + closed_registrations_message: Ditampilkan ketika pendaftaran ditutup + content_cache_retention_period: Kiriman dari server lain akan dihapus setelah jumlah hari yang ditentukan jika nilai positif ditetapkan. Ini mungkin tidak dapat diurungkan. + custom_css: Anda dapat menerapkan gaya kustom di versi web Mastodon. + mascot: Menimpa ilustrasi di antarmuka web tingkat lanjut. + media_cache_retention_period: File media yang diunduh akan dihapus setelah beberapa hari yang ditentukan ketika ditetapkan ke nilai yang positif, dan diunduh ulang pada permintaan. + profile_directory: Direktori profil mendaftarka semua pengguna yang ingin untuk dapat ditemukan. + require_invite_text: Ketika pendaftaran membutuhkan persetujuan manual, buat masukan teks "Mengapa Anda ingin bergabung?" dibutuhkan daripada opsional + site_contact_email: Bagaimana orang dapat menghubungi Anda untuk kebutuhan hukum atau dukungan. + site_contact_username: Bagaimana orang dapat menghubungi Anda di Mastodon. + site_extended_description: Informasi tambahan yang mungkin berguna bagi pengunjung dan pengguna Anda. Dapat distruktur dengan sintaks Markdown. + site_short_description: Sebuah deskripsi pendek untuk membantu mengenal server Anda secara unik. Siapa yang menjalankannya, untuk siapa itu? + site_terms: Gunakan kebijakan privasi Anda sendiri atau tinggalkan kosong untuk menggunakan bawaan. Dapat distruktur dengan sintaks Markdown. + site_title: Bagaimana orang dapat memberitahu tentang server selain nama domain. + theme: Tema yang dilihat oleh pengunjung yang keluar dan pengguna baru. + thumbnail: Gambar sekitar 2:1 yang ditampilkan di samping informasi server Anda. + timeline_preview: Pengunjung yang keluar akan dapat menjelajahi kiriman publik terkini yang tersedia di server. + trendable_by_default: Lewati tinjauan manual dari konten tren. Item individu masih dapat dihapus dari tren setelah faktanya. + trends: Tren yang menampilkan kiriman, tagar, dan cerita berita apa yang sedang tren di server Anda. form_challenge: current_password: Anda memasuki area aman imports: @@ -80,17 +106,28 @@ id: ip: Masukkan alamat IPv4 atau IPv6. Anda dapat memblokir seluruh rentang dengan sintaks CIDR. Hati-hati, jangan mengunci Anda sendiri! severities: no_access: Blokir akses ke seluruh sumber daya + sign_up_block: Pendaftaran baru tidak akan dimungkinkan sign_up_requires_approval: Pendaftaran baru memerlukan persetujuan Anda severity: Pilih apa yang akan dilakukan dengan permintaan dari IP ini rule: text: Jelaskan aturan atau persyaratan untuk pengguna di server ini. Buatlah pendek dan sederhana sessions: - otp: Masukkan kode dua-faktor dari handphone atau gunakan kode pemulihan anda. + otp: 'Masukkan kode dua faktor dari aplikasi ponsel atau gunakan kode pemulihan Anda:' webauthn: Jika ini kunci USB pastikan dalam keadaan tercolok dan, jika perlu, ketuk. tag: name: Anda hanya dapat mengubahnya ke huruf kecil/besar, misalnya, agar lebih mudah dibaca user: chosen_languages: Ketika dicentang, hanya toot dalam bahasa yang dipilih yang akan ditampilkan di linimasa publik + role: Peran mengatur izin apa yang dimiliki pengguna + user_role: + color: Warna yang digunakan untuk peran di antarmuka pengguna, sebagai RGB dalam format hex + highlighted: Ini membuat peran terlihat secara publik + name: Nama publik peran, jika peran ditampilkan sebagai lencana + permissions_as_keys: Pengguna dengan peran ini mendapatkan akses ke... + position: Peran lebih tinggi dapat menyelesaikan konflik dalam beberapa situasi. Beberapa tindakan hanya dapat dilakukan pada peran dengan prioritas lebih rendah + webhook: + events: Pilih peristiwa untuk dikirim + url: Di mana peristiwa akan dikirim labels: account: fields: @@ -165,7 +202,7 @@ id: setting_display_media_default: Bawaan setting_display_media_hide_all: Sembunyikan semua setting_display_media_show_all: Tunjukkan semua - setting_expand_spoilers: Selalu bentangkan toot yang bertanda peringatan konten + setting_expand_spoilers: Selalu bentangkan kiriman yang bertanda peringatan konten setting_hide_network: Sembunyikan jaringan Anda setting_noindex: Opt-out dari pengindeksan mesin pencari setting_reduce_motion: Kurangi gerakan animasi @@ -191,9 +228,33 @@ id: actions: hide: Sembunyikan seluruhnya warn: Sembunyikan dengan peringatan + form_admin_settings: + backups_retention_period: Rentang retensi arsip pengguna + bootstrap_timeline_accounts: Selalu rekomendasikan akun ini ke pengguna baru + closed_registrations_message: Pesan kustom ketika pendaftaran tidak tersedia + content_cache_retention_period: Rentang retensi tembolok konten + custom_css: CSS kustom + mascot: Maskot kustom (lawas) + media_cache_retention_period: Rentang retensi tembolok media + profile_directory: Aktifkan direktori profil + registrations_mode: Siapa yang dapat mendaftar + require_invite_text: Membutuhkan alasan untuk bergabung + show_domain_blocks: Tampilkan pemblokiran domain + show_domain_blocks_rationale: Tampilkan kenapa domain diblokir + site_contact_email: Surel kontak + site_contact_username: Nama pengguna kontak + site_extended_description: Deskripsi panjang + site_short_description: Deskripsi server + site_terms: Kebijakan Privasi + site_title: Nama server + theme: Tema bawaan + thumbnail: Gambar kecil server + timeline_preview: Perbolehkan akses tidak terotentikasi ke linimasa publik + trendable_by_default: Perbolehkan tren tanpa tinjauan + trends: Aktifkan tren interactions: must_be_follower: Blokir notifikasi dari non-pengikut - must_be_following: Blokir notifikasi dari orang yang tidak anda ikuti + must_be_following: Blokir notifikasi dari orang yang tidak Anda ikuti must_be_following_dm: Blokir pesan langsung dari orang yang tak Anda ikuti invite: comment: Komentar @@ -204,17 +265,18 @@ id: ip: IP severities: no_access: Blok akses + sign_up_block: Blokir pendaftaran sign_up_requires_approval: Batasi pendaftaran severity: Aturan notification_emails: appeal: Seseorang mengajukan banding tehadap keputusan moderator digest: Kirim email berisi rangkuman - favourite: Kirim email saat seseorang menyukai status anda - follow: Kirim email saat seseorang mengikuti anda - follow_request: Kirim email saat seseorang meminta untuk mengikuti anda - mention: Kirim email saat seseorang menyebut anda + favourite: Seseorang memfavorit kiriman Anda + follow: Seseorang mengikuti Anda + follow_request: Seseorang meminta untuk mengikuti Anda + mention: Seseorang menyebutkan Anda pending_account: Kirim email ketika akun baru perlu ditinjau - reblog: Kirim email saat seseorang mem-boost status anda + reblog: Seseorang mem-boost kiriman Anda report: Laporan baru dikirim trending_tag: Tren baru harus ditinjau rule: @@ -224,9 +286,19 @@ id: name: Tagar trendable: Izinkan tagar ini muncul di bawah tren usable: Izinkan toot memakai tagar ini + user: + role: Peran + user_role: + color: Warna lencana + highlighted: Tampilkan peran sebagai lencana di profil pengguna + name: Nama + permissions_as_keys: Izin + position: Prioritas webhook: events: Acara yang diaktifkan + url: URL Titik Akhir 'no': Tidak + not_recommended: Tidak disarankan recommended: Direkomendasikan required: mark: "*" diff --git a/config/locales/simple_form.ig.yml b/config/locales/simple_form.ig.yml new file mode 100644 index 0000000000..7c264f0d73 --- /dev/null +++ b/config/locales/simple_form.ig.yml @@ -0,0 +1 @@ +ig: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 312393a068..b948217fe8 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -68,10 +68,27 @@ ja: with_dns_records: 指定したドメインのDNSレコードを取得し、その結果もメールドメインブロックに登録されます featured_tag: name: 'これらを使うといいかもしれません:' + filters: + action: 投稿がフィルタに一致したときに実行するアクションを選択します + actions: + hide: フィルタリングされたコンテンツを完全に隠し、存在しないかのようにします form_admin_settings: backups_retention_period: 生成されたユーザーのアーカイブを指定した日数の間保持します。 + bootstrap_timeline_accounts: これらのアカウントは、新しいユーザーのフォロー推奨の一番上にピン留めされます。 + closed_registrations_message: サインアップ終了時に表示されます content_cache_retention_period: 正の値に設定されている場合、他のサーバーの投稿は指定された日数の後に削除されます。元に戻せません。 + custom_css: ウェブ版の Mastodon でカスタムスタイルを適用できます。 + mascot: 上級者向けWebインターフェースのイラストを上書きします。 media_cache_retention_period: 正の値に設定されている場合、ダウンロードされたメディアファイルは指定された日数の後に削除され、リクエストに応じて再ダウンロードされます。 + profile_directory: プロファイルディレクトリには、検出可能にオプトイン設定したすべてのユーザーが一覧に表示されます。 + require_invite_text: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする + site_contact_email: 法律またはサポートに関する問い合わせ先 + site_contact_username: マストドンでの連絡方法 + site_extended_description: 訪問者やユーザーに役立つかもしれない任意の追加情報。Mastodon 構文が使用できます。 + site_short_description: 誰が運営しているのか、誰に向けたものなのかなど、サーバーを特定する短い説明。 + site_terms: 独自のプライバシーポリシーを使用するか、空白にしてデフォルトのプライバシーポリシーを使用します。Mastodon 構文が使用できます。 + trendable_by_default: トレンドコンテンツの手動レビューをスキップする。個々のコンテンツは後でトレンドから削除できます。 + trends: トレンドは、サーバー上でどの投稿、ハッシュタグ、ニュース記事が人気を集めているかを示します。 form_challenge: current_password: セキュリティ上重要なエリアにアクセスしています imports: @@ -98,6 +115,7 @@ ja: chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります role: このロールはユーザーが持つ権限を管理します user_role: + color: UI 全体で使用される色(RGB hex 形式) highlighted: これによりロールが公開されます。 name: ロールのバッジを表示する際の表示名 permissions_as_keys: このロールを持つユーザーは次の機能にアクセスできます @@ -202,11 +220,32 @@ ja: name: ハッシュタグ filters: actions: + hide: 完全に隠す warn: 警告付きで隠す form_admin_settings: backups_retention_period: ユーザーアーカイブの保持期間 + bootstrap_timeline_accounts: 新規ユーザーに必ずおすすめするアカウント + closed_registrations_message: サインアップできない場合のカスタムメッセージ content_cache_retention_period: コンテンツキャッシュの保持期間 + custom_css: カスタムCSS + mascot: カスタムマスコット(レガシー) media_cache_retention_period: メディアキャッシュの保持期間 + profile_directory: プロファイル ディレクトリを有効設定にする + registrations_mode: 新規登録が可能な方 + require_invite_text: 参加する理由を提出してください。 + show_domain_blocks: ドメインブロックを表示 + show_domain_blocks_rationale: ドメインがブロックされた理由を表示 + site_contact_email: 連絡先メールアドレス + site_contact_username: 連絡先ユーザー名 + site_extended_description: 詳細説明 + site_short_description: サーバーの説明 + site_terms: プライバシーポリシー + site_title: サーバーの名前 + theme: デフォルトテーマ + thumbnail: サーバーのサムネイル + timeline_preview: 公開タイムラインへの未認証のアクセスを許可する + trendable_by_default: 審査前のハッシュタグのトレンドへの表示を許可する + trends: トレンドを有効にする interactions: must_be_follower: フォロワー以外からの通知をブロック must_be_following: フォローしていないユーザーからの通知をブロック diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index cd73cdb474..3803560596 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -84,6 +84,8 @@ kab: whole_word: Awal akk featured_tag: name: Ahacṭag + form_admin_settings: + site_terms: Tasertit tabaḍnit invite: comment: Awennit invite_request: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 7a3ab07d51..f64f3d5488 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -75,13 +75,19 @@ ko: warn: 필터에 걸러진 글을 필터 제목과 함께 경고 뒤에 가리기 form_admin_settings: backups_retention_period: 생성된 사용자 아카이브를 며칠동안 저장할 지. + bootstrap_timeline_accounts: 이 계정들은 팔로우 추천 목록 상단에 고정됩니다. closed_registrations_message: 새 가입을 차단했을 때 표시됩니다 content_cache_retention_period: 양수가 설정되었다면 다른 서버의 게시물은 여기서 설정된 일수가 지나면 삭제될 것입니다. 되돌릴 수 없는 작업일 수 있습니다. custom_css: 사용자 지정 스타일을 웹 버전의 마스토돈에 지정할 수 있습니다. mascot: 고급 사용자 인터페이스에 있는 일러스트를 교체합니다. media_cache_retention_period: 양수로 설정된 경우 다운로드된 미디어 파일들은 지정된 일수가 지나면 삭제될 것이고 필요할 때 다시 다운로드 될 것입니다. + profile_directory: 프로필 책자는 발견되기를 희망하는 모든 사람들의 목록을 나열합니다. + require_invite_text: 가입이 수동 승인을 필요로 할 때, "왜 가입하려고 하나요?" 항목을 선택사항으로 두는 것보다는 필수로 두는 것이 낫습니다 site_contact_email: 사람들이 법적이나 도움 요청을 위해 당신에게 연락할 방법. site_contact_username: 사람들이 마스토돈에서 당신에게 연락할 방법. + site_extended_description: 방문자와 사용자에게 유용할 수 있는 추가정보들. 마크다운 문법을 사용할 수 있습니다. + site_short_description: 이 서버를 특별하게 구분할 수 있는 짧은 설명. 누가 운영하고, 누구를 위한 것인가요? + site_terms: 자신만의 개인정보 정책을 사용하거나 비워두는 것으로 기본값을 사용할 수 있습니다. 마크다운 문법을 사용할 수 있습니다. theme: 로그인 하지 않은 사용자나 새로운 사용자가 보게 될 테마. form_challenge: current_password: 당신은 보안 구역에 진입하고 있습니다 diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 7ef4e7ac3d..678d919334 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -81,7 +81,9 @@ ku: closed_registrations_message: Dema ku tomarkirin girtî bin têne xuyakirin content_cache_retention_period: Şandiyên ji rajekarên din wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin. Dibe ku ev bê veger be. custom_css: Tu dikarî awayên kesane li ser guhertoya malperê ya Mastodon bicîh bikî. + mascot: Îlustrasyona navrûyê webê yê pêşketî bêbandor dike. media_cache_retention_period: Pelên medyayê yên daxistî wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin, û li gorî daxwazê ​​ji nû ve werin daxistin. + profile_directory: Pelrêça profîlê hemû bikarhênerên keşfbûnê hilbijartine lîste dike. form_challenge: current_password: Tu dikevî qadeke ewledar imports: @@ -226,8 +228,14 @@ ku: registrations_mode: Kî dikare tomar bibe require_invite_text: Ji bo tevlêbûnê sedemek pêdivî ye show_domain_blocks: Astengkirinên navperê nîşan bide + site_short_description: Danasîna rajekar site_terms: Politîka taybetiyê + site_title: Navê rajekar + theme: Rûkara berdest + thumbnail: Wêneya piçûk a rajekar + timeline_preview: Mafê bide gihîştina ne naskirî bo demnameya gelemperî trendable_by_default: Mafê bide rojevê bêyî ku were nirxandin + trends: Rojevê çalak bike interactions: must_be_follower: Danezanên ji kesên ku ne şopînerên min tên asteng bike must_be_following: Agahdariyan asteng bike ji kesên ku tu wan naşopînî diff --git a/config/locales/simple_form.my.yml b/config/locales/simple_form.my.yml new file mode 100644 index 0000000000..5e1fc6bee9 --- /dev/null +++ b/config/locales/simple_form.my.yml @@ -0,0 +1 @@ +my: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 33dd889c4e..5a73d00051 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -77,8 +77,14 @@ nl: bootstrap_timeline_accounts: Deze accounts worden bovenaan de aanbevelingen aan nieuwe gebruikers getoond. Meerdere gebruikersnamen met komma's scheiden. closed_registrations_message: Weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld content_cache_retention_period: 'Berichten van andere servers worden na het opgegeven aantal dagen verwijderd. Let op: Dit is onomkeerbaar.' + custom_css: Je kunt aangepaste stijlen toepassen op de webversie van Mastodon. + mascot: Overschrijft de illustratie in de geavanceerde webinterface. media_cache_retention_period: Mediabestanden die van andere servers zijn gedownload worden na het opgegeven aantal dagen verwijderd en worden op verzoek opnieuw gedownload. + profile_directory: De gebruikersgids bevat een lijst van alle gebruikers die ervoor gekozen hebben om ontdekt te kunnen worden. require_invite_text: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd + site_contact_email: Hoe mensen je kunnen bereiken voor juridische of ondersteunende onderzoeken. + site_contact_username: Hoe mensen je kunnen bereiken op Mastodon. + site_title: Hoe mensen naar uw server kunnen verwijzen naast de domeinnaam. theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien. timeline_preview: Bezoekers (die niet zijn ingelogd) kunnen de meest recente, op de server aanwezige openbare berichten bekijken. trendable_by_default: Handmatige beoordeling van trends overslaan. Individuele items kunnen later alsnog worden afgekeurd. diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 9bbc6b4d75..f2b81b9bdb 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -73,6 +73,12 @@ pt-BR: actions: hide: Esconder completamente o conteúdo filtrado, comportando-se como se ele não existisse warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro + form_admin_settings: + backups_retention_period: Manter os arquivos de usuário gerados pelo número de dias especificados. + bootstrap_timeline_accounts: Estas contas serão fixadas no topo das recomendações de novos usuários para seguir. + closed_registrations_message: Exibido quando as inscrições estiverem fechadas + site_contact_username: Como as pessoas podem chegar até você no Mastodon. + site_extended_description: Quaisquer informações adicionais que possam ser úteis para os visitantes e seus usuários. Podem ser estruturadas com formato Markdown. form_challenge: current_password: Você está entrando em uma área segura imports: @@ -199,6 +205,10 @@ pt-BR: actions: hide: Ocultar completamente warn: Ocultar com um aviso + form_admin_settings: + registrations_mode: Quem pode se inscrever + site_contact_email: E-mail de contato + trends: Habilitar tendências interactions: must_be_follower: Bloquear notificações de não-seguidores must_be_following: Bloquear notificações de não-seguidos diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index c401a821d4..506197b22c 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -58,7 +58,7 @@ uk: setting_noindex: Впливає на ваш публічний профіль та сторінки статусу setting_show_application: Застосунок, за допомогою якого ви дмухнули, буде відображено серед деталей дмуху setting_use_blurhash: Градієнти, що базуються на кольорах прихованих медіа, але роблять нерозрізненними будь-які деталі - setting_use_pending_items: Не додавати нові повідомлення до стрічок миттєво. Показувати їх тільки після додаткового клацання. + setting_use_pending_items: Не додавати нові повідомлення до стрічок миттєво, показувати лише після додаткового клацання username: Ваше ім'я користувача буде унікальним у %{domain} whole_word: Якщо пошукове слово або фраза містить лише літери та цифри, воно має збігатися цілком domain_allow: @@ -112,7 +112,7 @@ uk: rule: text: Опис правила або вимоги для користувачів на цьому сервері. Спробуйте зробити його коротким і простим sessions: - otp: Введите код двухфакторной аутентификации или используйте один из Ваших кодов восстановления. + otp: 'Введіть код двофакторної автентифікації, згенерований вашим мобільним застосунком, або скористайтеся одним з ваших кодів відновлення:' webauthn: Якщо це USB ключ, вставте його і, якщо необхідно, натисніть на нього. tag: name: Тут ви можете лише змінювати регістр літер, щоб підвищити читабельність @@ -209,7 +209,7 @@ uk: setting_show_application: Відображати застосунки, використані для дмухання setting_system_font_ui: Використовувати типовий системний шрифт setting_theme: Тема сайту - setting_trends: Показати сьогоднішні тренди + setting_trends: Показати дописи, популярні сьогодні setting_unfollow_modal: Відображати діалог підтвердження під час відписки від когось setting_use_blurhash: Відображати барвисті градієнти замість прихованих медіа setting_use_pending_items: Повільний режим diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 004e5dfdef..ee12f02527 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -31,18 +31,18 @@ zh-TW: text: 您只能對警示提出一次申訴 defaults: autofollow: 通過邀請網址註冊的使用者將自動跟隨您 - avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會等比例縮減成 %{dimensions} 像素 - bot: 此帳號主要執行自動操作且可能未被監控 + avatar: 支援 PNG、GIF 或 JPG 圖片格式,檔案最大為 %{size},會等比例縮減至 %{dimensions} 像素 + bot: 此帳號主要執行自動化操作且可能未受人為監控 context: 應該套用過濾器的一項或多項內容 current_password: 因安全因素,請輸入目前帳號的密碼 current_username: 請輸入目前帳號的使用者名稱以確認 digest: 僅在您長時間未登入且在未登入期間收到私訊時傳送 discoverable: 允許陌生人透過推薦、熱門趨勢及其他功能發現您的帳號 email: 您將收到一封確認電子郵件 - fields: 您可在個人資料上有至多 4 個以表格形式顯示的項目 - header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會按比例縮小成 %{dimensions} 像素 + fields: 您可在個人檔案上有至多 4 個以表格形式顯示的項目 + header: 支援 PNG、GIF 或 JPG 圖片格式,檔案最大為 %{size},會等比例縮減至 %{dimensions} 像素 inbox_url: 從您想要使用的中繼首頁複製網址 - irreversible: 已過濾的嘟文將會不可逆的消失,即便過濾器移除之後也一樣 + irreversible: 已過濾的嘟文將會不可逆地消失,即便之後移除過濾器也一樣 locale: 使用者介面、電子信件和推送通知的語言 locked: 需要您手動批准跟隨請求 password: 使用至少 8 個字元 @@ -50,14 +50,14 @@ zh-TW: scopes: 允許讓應用程式存取的 API。 若您選擇最高階範圍,則無須選擇個別項目。 setting_aggregate_reblogs: 請勿顯示最近已被轉嘟之嘟文的最新轉嘟(只影響最新收到的嘟文) setting_always_send_emails: 一般情況下若您活躍使用 Mastodon ,我們不會寄送 e-mail 通知 - setting_default_sensitive: 敏感媒體預設隱藏,且按一下即可重新顯示 - setting_display_media_default: 隱藏標為敏感的媒體 + setting_default_sensitive: 敏感內容媒體預設隱藏,且按一下即可重新顯示 + setting_display_media_default: 隱藏標為敏感內容的媒體 setting_display_media_hide_all: 總是隱藏所有媒體 setting_display_media_show_all: 總是顯示標為敏感的媒體 - setting_hide_network: 您跟隨的人與跟隨您的人將不會在您的個人資料頁上顯示 - setting_noindex: 會影響您的公開個人資料與嘟文頁面 + setting_hide_network: 您跟隨的人與跟隨您的人將不會在您的個人檔案頁面上顯示 + setting_noindex: 會影響您的公開個人檔案與嘟文頁面 setting_show_application: 您用來發嘟文的應用程式將會在您嘟文的詳細檢視顯示 - setting_use_blurhash: 漸層圖樣是基於隱藏媒體內容顏色產生,所有細節會變得模糊 + setting_use_blurhash: 彩色漸層圖樣是基於隱藏媒體內容顏色產生,所有細節會變得模糊 setting_use_pending_items: 關閉自動捲動更新,時間軸只會在點擊後更新 username: 您的使用者名稱將在 %{domain} 是獨一無二的 whole_word: 如果關鍵字或詞組僅有字母與數字,則其將只在符合整個單字的時候才會套用 @@ -81,7 +81,7 @@ zh-TW: custom_css: 您於 Mastodon 網頁版本中能套用客製化風格。 mascot: 覆寫進階網頁介面中的圖例。 media_cache_retention_period: 當設定成正值時,已下載的多媒體檔案會於指定天數後被刪除,並且視需要重新下載。 - profile_directory: 個人資料目錄將會列出那些有選擇被發現的使用者。 + profile_directory: 個人檔案目錄將會列出那些有選擇被發現的使用者。 require_invite_text: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。 site_contact_email: 其他人如何聯繫您關於法律或支援之諮詢。 site_contact_username: 其他人如何於 Mastodon 上聯繫您。 @@ -99,7 +99,7 @@ zh-TW: imports: data: 從其他 Mastodon 伺服器匯出的 CSV 檔案 invite_request: - text: 這會協助我們審核您的應用程式 + text: 這會協助我們審核您的申請 ip_block: comment: 可選的,但請記得您為何添加這項規則。 expires_in: IP 位址是經常共用或轉手的有限資源,不建議無限期地封鎖特定 IP 位址。 @@ -112,12 +112,12 @@ zh-TW: rule: text: 說明使用者在此伺服器上需遵守的規則或條款。試著維持各項條款簡短而明瞭。 sessions: - otp: 請輸入產生自您手機 App 的兩步驟驗證碼,或輸入其中一個復原代碼: + otp: 請輸入產生自您手機 App 的兩階段驗證碼,或輸入其中一個備用驗證碼: webauthn: 如果它是 USB 安全金鑰的話,請確認已正確插入,如有需要請觸擊。 tag: name: 您只能變更大小寫,例如,以使其更易讀。 user: - chosen_languages: 當核取時,只有選取語言的嘟文會在公開時間軸中顯示 + chosen_languages: 當選取時,只有選取語言之嘟文會在公開時間軸中顯示 role: 角色控制使用者有哪些權限 user_role: color: 在整個使用者介面中用於角色的顏色,十六進位格式的 RGB @@ -148,7 +148,7 @@ zh-TW: types: disable: 停用 none: 什麼也不做 - sensitive: 有雷小心 + sensitive: 敏感内容 silence: 安靜 suspend: 停權並不可逆的刪除帳號資料 warning_preset_id: 使用警告預設 @@ -174,8 +174,8 @@ zh-TW: display_name: 顯示名稱 email: 電子信箱地址 expires_in: 失效時間 - fields: 個人資料中繼資料 - header: 頁面頂端 + fields: 個人檔案詮釋資料 + header: 封面圖片 honeypot: "%{label} (請勿填寫)" inbox_url: 中繼收件匣的 URL irreversible: 放棄而非隱藏 @@ -183,15 +183,15 @@ zh-TW: locked: 鎖定帳號 max_uses: 最大使用次數 new_password: 新密碼 - note: 簡介 - otp_attempt: 兩步驟驗證碼 + note: 個人簡介 + otp_attempt: 兩階段驗證碼 password: 密碼 phrase: 關鍵字或片語 setting_advanced_layout: 啟用進階網頁介面 setting_aggregate_reblogs: 時間軸中的群組轉嘟 setting_always_send_emails: 總是發送 e-mail 通知 setting_auto_play_gif: 自動播放 GIF 動畫 - setting_boost_modal: 在轉嘟前先詢問我 + setting_boost_modal: 轉嘟前先詢問我 setting_crop_images: 將未展開嘟文中的圖片裁剪至 16x9 setting_default_language: 嘟文語言 setting_default_privacy: 嘟文可見範圍 @@ -208,10 +208,10 @@ zh-TW: setting_reduce_motion: 減少過渡動畫效果 setting_show_application: 顯示用來傳送嘟文的應用程式 setting_system_font_ui: 使用系統預設字型 - setting_theme: 站點主題 - setting_trends: 顯示本日趨勢 + setting_theme: 佈景主題 + setting_trends: 顯示本日熱門趨勢 setting_unfollow_modal: 取消跟隨某人前先詢問我 - setting_use_blurhash: 將隱藏媒體以彩色漸變圖樣表示 + setting_use_blurhash: 將隱藏媒體以彩色漸層圖樣表示 setting_use_pending_items: 限速模式 severity: 優先級 sign_in_token_attempt: 安全代碼 @@ -236,7 +236,7 @@ zh-TW: custom_css: 自訂 CSS mascot: 自訂吉祥物 (legacy) media_cache_retention_period: 多媒體快取資料保留期間 - profile_directory: 啟用個人資料目錄 + profile_directory: 啟用個人檔案目錄 registrations_mode: 誰能註冊 require_invite_text: 要求「加入原因」 show_domain_blocks: 顯示封鎖的網域 @@ -278,19 +278,19 @@ zh-TW: pending_account: 需要審核的新帳號 reblog: 當有使用者轉嘟您的嘟文時,傳送電子信件通知 report: 新回報已遞交 - trending_tag: 新趨勢需要審閱 + trending_tag: 新熱門趨勢需要審核 rule: text: 規則 tag: listable: 允許此主題標籤在搜尋及個人檔案目錄中顯示 name: 主題標籤 - trendable: 允許此主題標籤在趨勢下顯示 + trendable: 允許此主題標籤在熱門趨勢下顯示 usable: 允許嘟文使用此主題標籤 user: role: 角色 user_role: color: 識別顏色 - highlighted: 在使用者個人資料上將角色顯示為徽章 + highlighted: 在使用者個人檔案上將角色顯示為徽章 name: 名稱 permissions_as_keys: 權限 position: 優先權 diff --git a/config/locales/sl.yml b/config/locales/sl.yml index d009a7dda9..01fe282557 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -751,6 +751,7 @@ sl: no_status_selected: Nobena objava ni bila spremenjena, ker ni bila nobena izbrana open: Odpri objavo original_status: Izvorna objava + reblogs: Ponovljeni blogi status_changed: Objava spremenjena title: Objave računa trending: V trendu @@ -1300,6 +1301,8 @@ sl: carry_blocks_over_text: Ta uporabnik se je preselil iz računa %{acct}, ki ste ga blokirali. carry_mutes_over_text: Ta uporabnik se je preselil iz računa %{acct}, ki ste ga utišali. copy_account_note_text: 'Ta uporabnik se je preselil iz %{acct}, tukaj so vaše poprejšnje opombe o njem:' + navigation: + toggle_menu: Preklopi meni notification_mailer: admin: report: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 73e07694c9..2c4285ca74 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1249,6 +1249,8 @@ tr: carry_blocks_over_text: Bu kullanıcı engellediğiniz %{acct} adresinden taşındı. carry_mutes_over_text: Bu kullanıcı sessize aldığınız %{acct} adresinden taşındı. copy_account_note_text: 'Bu kullanıcı %{acct} adresinden taşındı, işte onlarla ilgili önceki notlarınız:' + navigation: + toggle_menu: Menüyü aç/kapa notification_mailer: admin: report: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 5c695507d2..ba380339af 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -13,7 +13,7 @@ uk: many: Підписників one: Підписник other: Підписників - following: Підписаний(-а) + following: Підписані instance_actor_flash: Цей обліковий запис є віртуальним персонажем, який використовується для показу самого сервера, а не будь-якого окремого користувача. Він використовується з метою федералізації і не повинен бути зупинений. last_active: остання активність link_verified_on: Права власності на це посилання були перевірені %{date} @@ -79,7 +79,7 @@ uk: header: Заголовок inbox_url: URL вхідних повідомлень invite_request_text: Причини приєднатися - invited_by: 'Запросив:' + invited_by: Запросив ip: IP joined: Приєднався location: @@ -141,7 +141,7 @@ uk: only_password: Лише пароль password_and_2fa: Пароль та 2FA sensitive: Делікатне - sensitized: позначено делікатним + sensitized: Позначено делікатним shared_inbox_url: URL спільного вхідного кошика show: created_reports: Скарги, створені цим обліковим записом @@ -544,7 +544,7 @@ uk: relays: add_new: Додати новий ретранслятор delete: Видалити - description_html: "Ретлянслятор дмухів (federation relay) — це проміжний сервер, що обмінюється великими обсягами публічних дмухів між серверами, які цього хочуть. Він може допомогти маленьким та середнім серверам отримувати вміст з усього федесвіту (fediverse). Без нього локальним користувачам довелося б вручну підписуватися на людей з віддалених серверів." + description_html: "Ретранслятор дописів (federation relay) — це проміжний сервер, що обмінюється великими обсягами публічних дописів між серверами, які цього хочуть. Він може допомогти маленьким та середнім серверам отримувати вміст з усього федесвіту (fediverse). Без нього локальним користувачам довелося б вручну підписуватися на людей з віддалених серверів." disable: Вимкнути disabled: Вимкнено enable: Увімкнути @@ -751,7 +751,7 @@ uk: no_status_selected: Жодного статуса не було змінено, оскільки жодного не було вибрано open: Відкрити допис original_status: Оригінальний допис - reblogs: Репост + reblogs: Поширення status_changed: Допис змінено title: Статуси облікових записів trending: Популярне @@ -899,8 +899,8 @@ uk: body: Деталі нового облікового запису наведено нижче. Ви можете схвалити або відхилити цю заяву. subject: Новий обліковий запис надіслано на розгляд на %{instance} (%{username}) new_report: - body: "%{reporter} поскаржився(-лася) на %{target}" - body_remote: Хтось з домену %{domain} поскаржився(-лася) на %{target} + body: "%{reporter} поскаржився на %{target}" + body_remote: Хтось з домену %{domain} поскаржився на %{target} subject: Нова скарга до %{instance} (#%{id}) new_trends: body: 'Ці елементи потребують розгляду перед оприлюдненням:' @@ -1233,7 +1233,7 @@ uk: '86400': 1 день expires_in_prompt: Ніколи generate: Згенерувати - invited_by: 'Вас запросив(-ла):' + invited_by: 'Вас запросив:' max_uses: few: "%{count} використання" many: "%{count} використань" @@ -1265,7 +1265,7 @@ uk: not_ready: Не можна прикріпити файли, оброблення яких ще не закінчилося. Спробуйте ще раз через хвилину! too_many: Не можна додати більше 4 файлів migrations: - acct: username@domain нового облікового запису + acct: Перенесено до cancel: Скасувати перенаправлення cancel_explanation: Скасування перенаправлення реактивує ваш поточний обліковий запис, але не поверне підписників, які були переміщені в інший обліковий запис. cancelled_msg: Перенаправлення успішно скасовано. @@ -1301,6 +1301,8 @@ uk: carry_blocks_over_text: Цей користувач переїхав з %{acct}, який ви заблокували. carry_mutes_over_text: Цей користувач переїхав з %{acct}, який ви нехтуєте. copy_account_note_text: 'Цей користувач був переміщений з %{acct}, ось ваші попередні нотатки:' + navigation: + toggle_menu: Відкрити меню notification_mailer: admin: report: @@ -1312,24 +1314,24 @@ uk: subject: Ваш статус сподобався %{name} title: Нове вподобання follow: - body: "%{name} тепер підписаний(-а) на вас!" - subject: "%{name} тепер підписаний(-а) на вас" - title: Новий підписник(-ця) + body: "%{name} тепер підписаний на вас!" + subject: "%{name} тепер підписаний на вас" + title: Новий підписник follow_request: action: Керувати запитами на підписку - body: "%{name} запитав(-ла) Вас про підписку" + body: "%{name} надіслав запит на підписку" subject: "%{name} хоче підписатися на Вас" title: Новий запит на підписку mention: action: Відповісти body: 'Вас згадав(-ла) %{name} в:' - subject: Вас згадав(-ла) %{name} + subject: Вас згадав %{name} title: Нова згадка poll: subject: Опитування від %{name} завершено reblog: body: 'Ваш статус було передмухнуто %{name}:' - subject: "%{name} передмухнув(-ла) ваш статус" + subject: "%{name} поширив ваш статус" title: Нове передмухування status: subject: "%{name} щойно опубліковано" @@ -1389,7 +1391,7 @@ uk: dormant: Неактивні follow_selected_followers: Стежити за вибраними підписниками followers: Підписники - following: Підписник(-ця) + following: Підписник invited: Запрошені last_active: Крайня активність most_recent: За часом створення @@ -1448,7 +1450,7 @@ uk: firefox_os: Firefox OS ios: iOS linux: Linux - mac: Mac + mac: macOS other: невідома платформа windows: Windows windows_mobile: Windows Mobile @@ -1510,7 +1512,7 @@ uk: errors: in_reply_not_found: Статуса, на який ви намагаєтеся відповісти, не існує. open_in_web: Відкрити у вебі - over_character_limit: перевищено ліміт символів (%{max}) + over_character_limit: перевищено ліміт символів %{max} pin_errors: direct: Не можливо прикріпити дописи, які видимі лише згаданим користувачам limit: Ви вже закріпили максимальну кількість постів @@ -1579,7 +1581,7 @@ uk: min_reblogs_hint: Не видаляти ваших дописів, що були передмухнуті більш ніж вказану кількість разів. Залиште порожнім, щоб видаляти дописи, попри кількість їхніх передмухів stream_entries: pinned: Закріплений пост - reblogged: передмухнув(-ла) + reblogged: поширив sensitive_content: Дражливий зміст strikes: errors: @@ -1587,8 +1589,8 @@ uk: tags: does_not_match_previous_name: не збігається з попереднім ім'ям themes: - contrast: Висока контрасність - default: Mastodon + contrast: Mastodon (Висока контрастність) + default: Mastodon (Темна) mastodon-light: Mastodon (світла) time: formats: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 73228159df..d032691bf4 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1223,6 +1223,8 @@ vi: carry_blocks_over_text: Tài khoản này chuyển từ %{acct}, máy chủ mà bạn đã chặn trước đó. carry_mutes_over_text: Tài khoản này chuyển từ %{acct}, máy chủ mà bạn đã ẩn trước đó. copy_account_note_text: 'Tài khoản này chuyển từ %{acct}, đây là lịch sử kiểm duyệt của họ:' + navigation: + toggle_menu: Bật/tắt menu notification_mailer: admin: report: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 7ce2f777c6..88447d1861 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -109,14 +109,14 @@ zh-TW: protocol: 協議 public: 公開 push_subscription_expires: PuSH 訂閱過期 - redownload: 重新整理個人資料 - redownloaded_msg: 成功重新載入%{username} 的個人資料頁面 + redownload: 重新整理個人檔案 + redownloaded_msg: 成功重新載入%{username} 的個人檔案頁面 reject: 拒絕 rejected_msg: 成功拒絕了%{username} 的新帳號申請 - remove_avatar: 取消頭像 + remove_avatar: 取消大頭貼 remove_header: 移除開頭 - removed_avatar_msg: 成功刪除了 %{username} 的頭像 - removed_header_msg: 成功刪除了 %{username} 的頁面頂端 + removed_avatar_msg: 成功刪除了 %{username} 的大頭貼 + removed_header_msg: 成功刪除了 %{username} 的封面圖片 resend_confirmation: already_confirmed: 此使用者已被確認 send: 重新發送驗證信 @@ -279,8 +279,8 @@ zh-TW: update_status_html: "%{name} 更新了 %{target} 的嘟文" update_user_role_html: "%{name} 變更了 %{target} 角色" empty: 找不到 log - filter_by_action: 按動作篩選 - filter_by_user: 按使用者篩選 + filter_by_action: 按動作過濾 + filter_by_user: 按使用者過濾 title: 營運日誌 announcements: destroyed_msg: 成功刪除公告! @@ -376,7 +376,7 @@ zh-TW: create: 新增封鎖 hint: 站點封鎖動作並不會阻止帳號紀錄被新增至資料庫,但會自動回溯性地對那些帳號套用特定管理設定。 severity: - desc_html: "「靜音」令該站點下使用者的嘟文,設定為只對跟隨者顯示,沒有跟隨的人會看不到。「停權」會刪除將該站點下使用者的嘟文、媒體檔案和個人資料。「」則會拒絕接收來自該站點的媒體檔案。" + desc_html: "「靜音」令該站點下使用者的嘟文,設定為只對跟隨者顯示,沒有跟隨的人會看不到。「停權」會刪除將該站點下使用者的嘟文、媒體檔案和個人檔案。「」則會拒絕接收來自該站點的媒體檔案。" noop: 無 silence: 靜音 suspend: 停權 @@ -491,7 +491,7 @@ zh-TW: all: 全部 available: 可用 expired: 已失效 - title: 篩選 + title: 過濾 title: 邀請使用者 ip_blocks: add_new: 建立規則 @@ -538,7 +538,7 @@ zh-TW: action_taken_by: 操作執行者 actions: delete_description_html: 被檢舉的嘟文將被刪除,並且會被以刪除線標記,幫助您升級同一帳號未來的違規行為。 - mark_as_sensitive_description_html: 被檢舉的嘟文中的媒體將會被標記為敏感,並將會記錄一次警告,以協助您升級同一帳號未來的違規行為。 + mark_as_sensitive_description_html: 被檢舉的嘟文中的媒體將會被標記為敏感內容,並將會記錄一次警告,以協助您升級同一帳號未來的違規行為。 other_description_html: 檢視更多控制帳號行為以及自訂檢舉帳號通知之選項。 resolve_description_html: 被檢舉的帳號將不被採取任何行動,不會加以刪除線標記,並且此份報告將被關閉。 silence_description_html: 個人頁面僅會對已跟隨帳號之使用者或手動查詢可見,將大幅度限制觸及範圍。此設定可隨時被還原。 @@ -587,7 +587,7 @@ zh-TW: unassign: 取消指派 unresolved: 未解決 updated_at: 更新 - view_profile: 檢視個人資料頁 + view_profile: 檢視個人檔案頁面 roles: add_new: 新增角色 assigned_users: @@ -635,7 +635,7 @@ zh-TW: manage_taxonomies: 管理分類方式 manage_taxonomies_description: 允許使用者審閱熱門內容與更新主題標籤設定 manage_user_access: 管理使用者存取權 - manage_user_access_description: 允許使用者停用其他人的兩步驟驗證、變更他們的電子郵件地址以及重設他們的密碼 + manage_user_access_description: 允許使用者停用其他人的兩階段驗證、變更電子郵件地址以及重設密碼 manage_users: 管理使用者 manage_users_description: 允許使用者檢視其他使用者的詳細資訊並對回報執行站務動作 manage_webhooks: 管理 Webhooks @@ -679,7 +679,7 @@ zh-TW: domain_blocks: all: 給任何人 disabled: 給沒有人 - users: 套用至所有登入的本機使用者 + users: 套用至所有登入的本站使用者 registrations: preamble: 控制誰能於您伺服器上建立帳號。 title: 註冊 @@ -719,7 +719,7 @@ zh-TW: with_media: 含有媒體檔案 strikes: actions: - delete_statuses: "%{name} 刪除了 %{target} 的貼文" + delete_statuses: "%{name} 刪除了 %{target} 的嘟文" disable: "%{name} 凍結了 %{target} 的帳號" mark_statuses_as_sensitive: "%{name} 將 %{target} 的嘟文標記為敏感內容" none: "%{name} 已對 %{target} 送出警告" @@ -866,12 +866,12 @@ zh-TW: created_msg: 成功建立別名。您可以自舊帳號開始轉移。 deleted_msg: 成功移除別名。您將無法再由舊帳號轉移到目前的帳號。 empty: 您目前沒有任何別名。 - hint_html: 如果想由其他帳號轉移到此帳號,您可以在此處創建別名,稍後系統將容許您把跟隨者由舊帳號轉移至此。此項作業是無害且可復原的帳號的遷移程序需要在舊帳號啟動。 + hint_html: 如果想由其他帳號轉移到此帳號,您可以在此處新增別名,稍後系統將容許您把跟隨者由舊帳號轉移至此。此項作業是無害且可復原的帳號的遷移程序需要在舊帳號啟動。 remove: 取消連結別名 appearance: advanced_web_interface: 進階網頁介面 - advanced_web_interface_hint: 進階網頁界面可讓您配置許多不同的欄位來善用多餘的螢幕空間,依需要同時查看盡可能多的資訊如:首頁、通知、站點聯邦時間軸、任意數量的列表和主題標籤。 - animations_and_accessibility: 動畫與可用性 + advanced_web_interface_hint: 進階網頁界面可讓您設定許多不同的欄位來善用螢幕空間,依需要同時查看許多不同的資訊如:首頁、通知、聯邦時間軸、任意數量的列表和主題標籤。 + animations_and_accessibility: 動畫與無障礙設定 confirmation_dialogs: 確認對話框 discovery: 探索 localization: @@ -879,13 +879,13 @@ zh-TW: guide_link: https://crowdin.com/project/mastodon guide_link_text: 每個人都能貢獻。 sensitive_content: 敏感內容 - toot_layout: 嘟文佈局 + toot_layout: 嘟文排版 application_mailer: notification_preferences: 變更電子信件設定 salutation: "%{name}、" settings: 變更電子信箱設定︰%{link} view: '進入瀏覽:' - view_profile: 檢視個人資料頁 + view_profile: 檢視個人檔案 view_status: 檢視嘟文 applications: created: 已建立應用 @@ -898,7 +898,7 @@ zh-TW: apply_for_account: 登記排隊名單 change_password: 密碼 delete_account: 刪除帳號 - delete_account_html: 如果您欲刪除您的帳號,請點擊這裡繼續。您需要確認您的操作。 + delete_account_html: 如果您欲刪除您的帳號,請點擊這裡繼續。您需要再三確認您的操作。 description: prefix_invited_by_user: "@%{name} 邀請您加入這個 Mastodon 伺服器!" prefix_sign_up: 現在就註冊 Mastodon 帳號吧! @@ -907,13 +907,13 @@ zh-TW: dont_have_your_security_key: 找不到您的安全金鑰? forgot_password: 忘記密碼? invalid_reset_password_token: 密碼重設 token 無效或已過期。請重新設定密碼。 - link_to_otp: 請從您手機輸入雙重驗證 (2FA) 或還原碼 + link_to_otp: 請從您手機輸入兩階段驗證 (2FA) 或備用驗證碼 link_to_webauth: 使用您的安全金鑰 log_in_with: 登入,使用 login: 登入 logout: 登出 migrate_account: 轉移到另一個帳號 - migrate_account_html: 如果您希望引導他人關注另一個帳號,請 到這裡設定。 + migrate_account_html: 如果您希望引導他人跟隨另一個帳號,請 到這裡設定。 or_log_in_with: 或透過其他方式登入 privacy_policy_agreement_html: 我已閱讀且同意 隱私權政策 providers: @@ -940,20 +940,20 @@ zh-TW: confirming: 等待電子郵件確認完成。 functional: 您的帳號可以正常使用了。 pending: 管管們正在處理您的申請,這可能需要一點時間處理。我們將在申請通過後以電子郵件方式通知您。 - redirecting_to: 您的帳戶因目前重新導向至 %{acct} 而被停用。 + redirecting_to: 您的帳號因目前重定向至 %{acct} 而被停用。 view_strikes: 檢視針對您帳號過去的警示 too_fast: 送出表單的速度太快跟不上,請稍後再試。 use_security_key: 使用安全金鑰 authorize_follow: already_following: 您已經跟隨了這個使用者 - already_requested: 您早已向該帳戶寄送追蹤請求 + already_requested: 您早已向該帳號寄送跟隨請求 error: 對不起,搜尋其他站點使用者出現錯誤 follow: 跟隨 follow_request: 跟隨請求已發送給: following: 成功!您正在跟隨: post_follow: close: 您可以直接關閉此頁面。 - return: 顯示個人資料頁 + return: 顯示個人檔案 web: 返回本站 title: 跟隨 %{acct} challenge: @@ -987,8 +987,8 @@ zh-TW: challenge_not_passed: 您所輸入的資料不正確 confirm_password: 輸入您現在的密碼以驗證身份 confirm_username: 請輸入您的使用者名稱以作確認 - proceed: 刪除帳戶 - success_msg: 您的帳戶已經成功刪除 + proceed: 刪除帳號 + success_msg: 您的帳號已經成功刪除 warning: before: 在進行下一步驟之前,請詳細閱讀以下説明: caches: 已被其他節點快取的內容可能會殘留其中 @@ -1022,9 +1022,9 @@ zh-TW: title_actions: delete_statuses: 嘟文移除 disable: 凍結帳號 - mark_statuses_as_sensitive: 將嘟文標記為敏感 + mark_statuses_as_sensitive: 將嘟文標記為敏感內容 none: 警告 - sensitive: 將帳號標記為敏感 + sensitive: 將帳號標記為敏感內容 silence: 帳號限制 suspend: 帳號停權 your_appeal_approved: 您的申訴已被批准 @@ -1069,20 +1069,20 @@ zh-TW: add_new: 追加 errors: limit: 您所推薦的標籤數量已經達到上限 - hint_html: "推薦標籤是什麼? 這些標籤將顯示於您的公開個人檔案頁,訪客可以藉此閱覽您標示了這些標籤的嘟文,拿來展示創意作品或者長期更新的專案很好用唷!" + hint_html: "推薦主題標籤是什麼? 這些主題標籤將顯示於您的公開個人檔案頁,訪客可以藉此閱覽您標示了這些標籤的嘟文,拿來展示創意作品或者長期更新的專案很好用唷!" filters: contexts: - account: 個人資料 + account: 個人檔案 home: 首頁時間軸 notifications: 通知 public: 公開時間軸 - thread: 會話 + thread: 對話 edit: add_keyword: 新增關鍵字 keywords: 關鍵字 statuses: 各別嘟文 - statuses_hint_html: 此過濾器會套用至所選之各別嘟文,無論其是否符合下列關鍵字。審閱或從過濾條件移除貼文。 - title: 編輯篩選條件 + statuses_hint_html: 此過濾器會套用至所選之各別嘟文,無論其是否符合下列關鍵字。審閱或從過濾條件移除嘟文。 + title: 編輯過濾條件 errors: deprecated_api_multiple_keywords: 這些參數無法從此應用程式中更改,因為它們適用於一或多個過濾器關鍵字。請使用較新的應用程式或是網頁介面。 invalid_context: 沒有提供內文或內文無效 @@ -1101,7 +1101,7 @@ zh-TW: title: 過濾器 new: save: 儲存新過濾器 - title: 新增篩選器 + title: 新增過濾器 statuses: back_to_filter: 回到過濾器 batch: @@ -1145,7 +1145,7 @@ zh-TW: blocking: 您封鎖的使用者名單 bookmarks: 我的最愛 domain_blocking: 域名封鎖名單 - following: 您關注的使用者名單 + following: 您跟隨的使用者名單 muting: 您靜音的使用者名單 upload: 上傳 invites: @@ -1174,11 +1174,11 @@ zh-TW: limit: 您所建立的列表數量已經達到上限 login_activities: authentication_methods: - otp: 兩步驟驗證應用程式 + otp: 兩階段驗證應用程式 password: 密碼 sign_in_token: 電子郵件安全碼 webauthn: 安全金鑰 - description_html: 若您看到您不認識的活動,請考慮變更您的密碼或啟用兩步驟驗證。 + description_html: 若您看到您不認識的活動紀錄,請考慮變更您的密碼或啟用兩階段驗證。 empty: 沒有可用的驗證歷史紀錄 failed_sign_in_html: 使用來自 %{ip} (%{browser}) 的 %{method} 登入嘗試失敗 successful_sign_in_html: 使用來自 %{ip} (%{browser}) 的 %{method} 登入成功 @@ -1199,10 +1199,10 @@ zh-TW: move_to_self: 不能是目前帳號 not_found: 找不到 on_cooldown: 您正在處於冷卻(CD)狀態 - followers_count: 轉移時的追隨者 + followers_count: 轉移時的跟隨者 incoming_migrations: 自另一個帳號轉移 incoming_migrations_html: 要從其他帳號移動到此帳號的話,首先您必須建立帳號別名。 - moved_msg: 您的帳號正被重新導向到 %{acct},您的追蹤者也會同步轉移至該帳號。 + moved_msg: 您的帳號正被重新導向到 %{acct},您的跟隨者也會同步轉移至該帳號。 not_redirecting: 您的帳號目前尚未重新導向到任何其他帳號。 on_cooldown: 您最近已轉移過您的帳號。此功能將在 %{count} 天後可再度使用。 past_migrations: 以往的轉移紀錄 @@ -1215,16 +1215,18 @@ zh-TW: before: 在進行下一步驟之前,請詳細閱讀以下説明: cooldown: 在轉移帳號後會有一段等待時間,在等待時間內您將無法再次轉移 disabled_account: 之後您的目前帳號將完全無法使用。但您可以存取資料匯出與重新啟用。 - followers: 此動作將會把目前帳號的所有追蹤者轉移至新帳號 - only_redirect_html: 或者,您也可以僅在您的個人資料中放置重新導向。 + followers: 此動作將會把目前帳號的所有跟隨者轉移至新帳號 + only_redirect_html: 或者,您也可以僅在您的個人檔案中設定重新導向。 other_data: 其他資料並不會自動轉移 - redirect: 您目前的帳號將會在個人資料頁面新增重新導向公告,並會被排除在搜尋結果之外 + redirect: 您目前的帳號將會在個人檔案頁面新增重新導向公告,並會被排除在搜尋結果之外 moderation: title: 站務 move_handler: carry_blocks_over_text: 此使用者轉移自被您封鎖的 %{acct}。 carry_mutes_over_text: 此使用者轉移自被您靜音的 %{acct}。 copy_account_note_text: 此使用者轉移自 %{acct},以下是您之前關於他們的備註: + navigation: + toggle_menu: 切換選單 notification_mailer: admin: report: @@ -1258,7 +1260,7 @@ zh-TW: status: subject: "%{name} 剛剛嘟文" update: - subject: "%{name} 編輯了貼文" + subject: "%{name} 編輯了嘟文" notifications: email_events: 電子郵件通知設定 email_events_hint: 選取您想接收通知的事件: @@ -1275,7 +1277,7 @@ zh-TW: trillion: T otp_authentication: code_hint: 請輸入您驗證應用程式所產生的代碼以確認 - description_html: 若您啟用使用驗證應用程式的兩步驟驗證,您每次登入都需要輸入由您的手機所產生的權杖。 + description_html: 若您啟用使用驗證應用程式的兩階段驗證,您每次登入都需要輸入由您的手機所產生之 Token。 enable: 啟用 instructions_html: "請用您手機上的 Google Authenticator 或類似的 TOTP 應用程式掃描此 QR code。從現在開始,該應用程式將會產生您每次登入都必須輸入的權杖。" manual_instructions: 如果您無法掃描 QR code,則必須手動輸入此明文密碼: @@ -1318,10 +1320,10 @@ zh-TW: last_active: 最後上線 most_recent: 最近 moved: 已轉移 - mutual: 共同 + mutual: 跟隨彼此 primary: 主要 relationship: 關係 - remove_selected_domains: 從所選網域中移除所有追隨者 + remove_selected_domains: 從所選網域中移除所有跟隨者 remove_selected_followers: 移除所選的跟隨者 remove_selected_follows: 取消跟隨所選使用者 status: 帳號狀態 @@ -1377,8 +1379,8 @@ zh-TW: windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone - revoke: 取消 - revoke_success: Session 取消成功 + revoke: 註銷 + revoke_success: Session 註銷成功 title: 作業階段 view_authentication_history: 檢視您帳號的身份驗證歷史紀錄 settings: @@ -1389,8 +1391,8 @@ zh-TW: authorized_apps: 已授權應用程式 back: 回到 Mastodon delete: 刪除帳號 - development: 開發 - edit_profile: 編輯使用者資訊 + development: 開發者 + edit_profile: 編輯個人檔案 export: 匯出 featured_tags: 推薦標籤 import: 匯入 @@ -1398,9 +1400,9 @@ zh-TW: migrate: 帳號搬遷 notifications: 通知 preferences: 偏好設定 - profile: 使用者資訊 + profile: 個人檔案 relationships: 跟隨中與跟隨者 - statuses_cleanup: 自動貼文刪除 + statuses_cleanup: 自動嘟文刪除 strikes: 管理警告 two_factor_authentication: 兩階段認證 webauthn_authentication: 安全金鑰 @@ -1426,8 +1428,8 @@ zh-TW: pin_errors: direct: 無法釘選只有僅提及使用者可見之嘟文 limit: 您所置頂的嘟文數量已經達到上限 - ownership: 不能置頂他人的嘟文 - reblog: 不能置頂轉嘟 + ownership: 不能釘選他人的嘟文 + reblog: 不能釘選轉嘟 poll: total_people: other: "%{count} 個人" @@ -1446,16 +1448,16 @@ zh-TW: private_long: 只有跟隨您的人能看到 public: 公開 public_long: 所有人都能看到 - unlisted: 公開,但不在公共時間軸顯示 - unlisted_long: 所有人都能看到,但不會出現在公共時間軸上 + unlisted: 不在公開時間軸顯示 + unlisted_long: 所有人都能看到,但不會出現在公開時間軸上 statuses_cleanup: - enabled: 自動刪除舊貼文 - enabled_hint: 一旦達到指定的保存期限,就會自動刪除您的貼文,除非貼文符合下列例外 + enabled: 自動刪除舊嘟文 + enabled_hint: 一旦達到指定的保存期限,就會自動刪除您的嘟文,除非該嘟文符合下列例外 exceptions: 例外 - explanation: 因為刪除貼文是昂貴的動作,所以當伺服器不那麼忙碌的時候才會慢慢完成。因此,您的貼文會在到達保存期限後一段時間才會被刪除。 + explanation: 因為刪除嘟文是昂貴的操作,當伺服器不那麼忙碌時才會慢慢完成。因此,您的嘟文會在到達保存期限後一段時間才會被刪除。 ignore_favs: 忽略最愛 ignore_reblogs: 忽略轉嘟 - interaction_exceptions: 以互動為基礎的例外 + interaction_exceptions: 基於互動的例外規則 interaction_exceptions_explanation: 請注意嘟文是無法保證被刪除的,如果在一次處理過後嘟文低於最愛或轉嘟的門檻。 keep_direct: 保留私訊 keep_direct_hint: 不會刪除任何您的私訊 @@ -1478,13 +1480,13 @@ zh-TW: '604800': 一週 '63113904': 2 年 '7889238': 3 個月 - min_age_label: 按時間篩選 + min_age_label: 保存期限 min_favs: 保留超過嘟文最愛門檻 - min_favs_hint: 如果您嘟文已收到超過最愛門檻則不會刪除。留白表示不論最愛數量皆刪除嘟文。 + min_favs_hint: 如果您嘟文已收到超過最愛門檻則不會刪除。留白表示不論最愛數量皆刪除該嘟文。 min_reblogs: 保留超過嘟文轉嘟門檻 - min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除嘟文。 + min_reblogs_hint: 如果您嘟文已收到超過轉嘟門檻則不會刪除。留白表示不論轉嘟數量皆刪除該嘟文。 stream_entries: - pinned: 置頂嘟文 + pinned: 釘選嘟文 reblogged: 轉嘟 sensitive_content: 敏感內容 strikes: @@ -1495,7 +1497,7 @@ zh-TW: themes: contrast: Mastodon(高對比) default: Mastodon(深色) - mastodon-light: Mastodon(亮色主題) + mastodon-light: Mastodon(亮色) time: formats: default: "%Y 年 %b 月 %d 日 %H:%M" @@ -1504,7 +1506,7 @@ zh-TW: two_factor_authentication: add: 新增 disable: 停用 - disabled_success: 已成功啟用兩步驟驗證 + disabled_success: 已成功啟用兩階段驗證 edit: 編輯 enabled: 兩階段認證已啟用 enabled_success: 已成功啟用兩階段認證 @@ -1546,18 +1548,18 @@ zh-TW: explanation: delete_statuses: 您的某些嘟文被發現違反了一項或多項社群準則,隨後已被 %{instance} 的管理員刪除。 disable: 您無法繼續使用您的帳號,但您的個人頁面及其他資料內容保持不變。您可以要求一份您的資料備份,帳號異動設定,或是刪除帳號。 - mark_statuses_as_sensitive: 您的部份嘟文已被 %{instance} 的管理員標記為敏感。這代表了人們必須在顯示預覽前點擊嘟文中的媒體。您可以在將來嘟文時自己將媒體標記為敏感。 + mark_statuses_as_sensitive: 您的部份嘟文已被 %{instance} 的管理員標記為敏感內容。這代表了人們必須在顯示預覽前點擊嘟文中的媒體。您可以在將來嘟文時自己將媒體標記為敏感內容。 sensitive: 由此刻起,您所有上傳的媒體檔案將被標記為敏感內容,並且隱藏於點擊警告之後。 - silence: 您仍然可以使用您的帳號,但僅有已追蹤您的人才能看到您在此伺服器的貼文,您也可能會從各式探索功能中被排除。但其他人仍可手動追蹤您。 - suspend: 您將不能使用您的帳號,您的個人資料頁面及其他資料將不再能被存取。您仍可於約 30 日內資料被完全刪除前要求下載您的資料,但我們仍會保留一部份基本資料,以防止有人規避停權處罰。 + silence: 您仍然可以使用您的帳號,但僅有已跟隨您的人才能看到您在此伺服器的嘟文,您也可能會從各式探索功能中被排除。但其他人仍可手動跟隨您。 + suspend: 您將不能使用您的帳號,您的個人檔案頁面及其他資料將不再能被存取。您仍可於約 30 日內資料被完全刪除前要求下載您的資料,但我們仍會保留一部份基本資料,以防止有人規避停權處罰。 reason: 原因: statuses: 引用的嘟文: subject: delete_statuses: 您於 %{acct} 之嘟文已被移除 disable: 您的帳號 %{acct} 已被凍結 - mark_statuses_as_sensitive: 您在 %{acct} 上的嘟文已被標記為敏感 + mark_statuses_as_sensitive: 您在 %{acct} 上的嘟文已被標記為敏感內容 none: 對 %{acct} 的警告 - sensitive: 從現在開始,您在 %{acct} 上的嘟文將會被標記為敏感 + sensitive: 從現在開始,您在 %{acct} 上的嘟文將會被標記為敏感內容 silence: 您的帳號 %{acct} 已被限制 suspend: 您的帳號 %{acct} 已被停權 title: @@ -1569,23 +1571,23 @@ zh-TW: silence: 帳號已被限制 suspend: 帳號己被停用 welcome: - edit_profile_action: 設定個人資料 - edit_profile_step: 您可以設定您的個人資料,包括上傳大頭貼、變更顯示名稱等等。您也可以選擇在新的跟隨者跟隨前,先對他們進行審核。 + edit_profile_action: 設定個人檔案 + edit_profile_step: 您可以設定您的個人檔案,包括上傳大頭貼、變更顯示名稱等等。您也可以選擇在新的跟隨者跟隨前,先對他們進行審核。 explanation: 下面是幾個小幫助,希望它們能幫到您 final_action: 開始嘟嘟 final_step: '開始嘟嘟吧!即使您現在沒有跟隨者,其他人仍然能在本站時間軸、主題標籤等地方,看到您的公開嘟文。試著用 #introductions 這個主題標籤介紹一下自己吧。' full_handle: 您的完整帳號名稱 - full_handle_hint: 您需要把這告訴你的朋友們,這樣他們就能從另一個伺服器向您發送訊息或著跟隨您。 + full_handle_hint: 您需要把這告訴您的朋友們,這樣他們就能從另一個伺服器向您發送訊息或著跟隨您。 subject: 歡迎來到 Mastodon title: "%{name} 誠摯歡迎您的加入!" users: - follow_limit_reached: 您無法追蹤多於 %{limit} 個人 + follow_limit_reached: 您無法跟隨多於 %{limit} 個人 invalid_otp_token: 兩階段認證碼不正確 otp_lost_help_html: 如果您無法訪問這兩者,可以透過 %{email} 與我們聯繫 seamless_external_login: 由於您是由外部系統登入,所以不能設定密碼與電子郵件。 signed_in_as: 目前登入的帳號: verification: - explanation_html: 您在 Mastodon 個人資料頁上所列出的連結,可以用此方式驗證您確實掌控該連結網頁的內容。您可以在連結的網頁上加上一個連回 Mastodon 個人資料頁的連結,該連結的原始碼 必須包含rel="me"屬性。連結的顯示文字可自由發揮,以下為範例: + explanation_html: 您在 Mastodon 個人檔案頁上所列出的連結,可以用此方式驗證您確實掌控該連結網頁的內容。您可以在連結的網頁上加上一個連回 Mastodon 個人檔案頁面的連結,該連結的原始碼 必須包含rel="me"屬性。連結的顯示文字可自由發揮,以下為範例: verification: 驗證連結 webauthn_credentials: add: 新增安全金鑰 @@ -1602,5 +1604,5 @@ zh-TW: nickname_hint: 輸入您新安全金鑰的暱稱 not_enabled: 您尚未啟用 WebAuthn not_supported: 此瀏覽器並不支援安全金鑰 - otp_required: 請先啟用兩步驟驗證以使用安全金鑰。 + otp_required: 請先啟用兩階段驗證以使用安全金鑰。 registered_on: 註冊於 %{date} From 03d9618595bd2433a319c0bfc0f5bbb14653d0d6 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 1 Nov 2022 12:59:23 +0100 Subject: [PATCH 224/500] Fix UserCleanupScheduler crash when an unconfirmed account has a moderation note (#19629) Fixes #19109 --- app/workers/scheduler/user_cleanup_scheduler.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb index d1f00c47fb..7a6995a1ff 100644 --- a/app/workers/scheduler/user_cleanup_scheduler.rb +++ b/app/workers/scheduler/user_cleanup_scheduler.rb @@ -15,6 +15,8 @@ class Scheduler::UserCleanupScheduler def clean_unconfirmed_accounts! User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).reorder(nil).find_in_batches do |batch| + # We have to do it separately because of missing database constraints + AccountModerationNote.where(account_id: batch.map(&:account_id)).delete_all Account.where(id: batch.map(&:account_id)).delete_all User.where(id: batch.map(&:id)).delete_all end From d0ba77047e539b7ae102296d096fcfd668a2ec92 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Nov 2022 13:01:39 +0100 Subject: [PATCH 225/500] Change max. thumbnail dimensions to 640x360px (360p) (#19619) --- app/models/media_attachment.rb | 2 +- spec/models/media_attachment_spec.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index a24fb857b5..4a19483807 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -72,7 +72,7 @@ class MediaAttachment < ApplicationRecord }.freeze, small: { - pixels: 160_000, # 400x400px + pixels: 230_400, # 640x360px file_geometry_parser: FastGeometryParser, blurhash: BLURHASH_OPTIONS, }.freeze, diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb index cbd9a09c55..29fd313aec 100644 --- a/spec/models/media_attachment_spec.rb +++ b/spec/models/media_attachment_spec.rb @@ -157,9 +157,9 @@ RSpec.describe MediaAttachment, type: :model do expect(media.file.meta["original"]["width"]).to eq 600 expect(media.file.meta["original"]["height"]).to eq 400 expect(media.file.meta["original"]["aspect"]).to eq 1.5 - expect(media.file.meta["small"]["width"]).to eq 490 - expect(media.file.meta["small"]["height"]).to eq 327 - expect(media.file.meta["small"]["aspect"]).to eq 490.0 / 327 + expect(media.file.meta["small"]["width"]).to eq 588 + expect(media.file.meta["small"]["height"]).to eq 392 + expect(media.file.meta["small"]["aspect"]).to eq 1.5 end it 'gives the file a random name' do From c68e6b52d9d4da5d34380587cb6faaabdfedfb35 Mon Sep 17 00:00:00 2001 From: pea-sys <49807271+pea-sys@users.noreply.github.com> Date: Tue, 1 Nov 2022 23:06:52 +0900 Subject: [PATCH 227/500] png optimization(loss less) (#19630) --- .../icons/android-chrome-144x144.png | Bin 6644 -> 5810 bytes .../icons/android-chrome-192x192.png | Bin 10138 -> 8741 bytes .../icons/android-chrome-256x256.png | Bin 14194 -> 11993 bytes app/javascript/icons/android-chrome-36x36.png | Bin 1050 -> 950 bytes .../icons/android-chrome-384x384.png | Bin 25667 -> 21112 bytes app/javascript/icons/android-chrome-48x48.png | Bin 1468 -> 1384 bytes .../icons/android-chrome-512x512.png | Bin 39853 -> 31858 bytes app/javascript/icons/android-chrome-72x72.png | Bin 2501 -> 2262 bytes app/javascript/icons/android-chrome-96x96.png | Bin 3713 -> 3306 bytes .../icons/apple-touch-icon-1024x1024.png | Bin 104580 -> 77950 bytes .../icons/apple-touch-icon-114x114.png | Bin 4641 -> 4123 bytes .../icons/apple-touch-icon-120x120.png | Bin 4914 -> 4366 bytes .../icons/apple-touch-icon-144x144.png | Bin 6644 -> 5810 bytes .../icons/apple-touch-icon-152x152.png | Bin 7002 -> 6177 bytes .../icons/apple-touch-icon-167x167.png | Bin 8096 -> 7041 bytes .../icons/apple-touch-icon-180x180.png | Bin 8947 -> 7709 bytes .../icons/apple-touch-icon-57x57.png | Bin 1857 -> 1673 bytes .../icons/apple-touch-icon-60x60.png | Bin 1952 -> 1761 bytes .../icons/apple-touch-icon-72x72.png | Bin 2501 -> 2262 bytes .../icons/apple-touch-icon-76x76.png | Bin 2617 -> 2360 bytes app/javascript/icons/favicon-16x16.png | Bin 639 -> 588 bytes app/javascript/icons/favicon-32x32.png | Bin 1250 -> 1114 bytes app/javascript/icons/favicon-48x48.png | Bin 1899 -> 1680 bytes app/javascript/images/mailer/icon_cached.png | Bin 2014 -> 1133 bytes app/javascript/images/mailer/icon_done.png | Bin 817 -> 477 bytes app/javascript/images/mailer/icon_email.png | Bin 2120 -> 1138 bytes .../images/mailer/icon_file_download.png | Bin 813 -> 346 bytes app/javascript/images/mailer/icon_flag.png | Bin 693 -> 298 bytes app/javascript/images/mailer/icon_grade.png | Bin 3243 -> 1959 bytes .../images/mailer/icon_lock_open.png | Bin 2498 -> 1642 bytes .../images/mailer/icon_person_add.png | Bin 2356 -> 1440 bytes app/javascript/images/mailer/icon_reply.png | Bin 2146 -> 1235 bytes app/javascript/images/mailer/logo.png | Bin 1673 -> 1150 bytes app/javascript/images/mailer/wordmark.png | Bin 8991 -> 6753 bytes app/javascript/images/preview.png | Bin 514463 -> 340408 bytes app/javascript/images/reticle.png | Bin 2199 -> 1439 bytes app/javascript/images/void.png | Bin 174 -> 80 bytes lib/assets/wordmark.dark.png | Bin 8991 -> 6753 bytes lib/assets/wordmark.light.png | Bin 8625 -> 6613 bytes public/avatars/original/missing.png | Bin 3292 -> 2897 bytes public/badge.png | Bin 4058 -> 2998 bytes public/headers/original/missing.png | Bin 81 -> 68 bytes public/oops.png | Bin 20552 -> 16948 bytes public/web-push-icon_expand.png | Bin 1380 -> 1077 bytes public/web-push-icon_favourite.png | Bin 1046 -> 721 bytes public/web-push-icon_reblog.png | Bin 851 -> 590 bytes spec/fabricators/assets/utah_teapot.png | Bin 248232 -> 195600 bytes spec/fixtures/files/emojo.png | Bin 29814 -> 29283 bytes 48 files changed, 0 insertions(+), 0 deletions(-) diff --git a/app/javascript/icons/android-chrome-144x144.png b/app/javascript/icons/android-chrome-144x144.png index d282a6d3d63432a3198d0ecbe882ba32915b8fe5..698fb4a260b13621d40468ad5f3fb3438568748d 100644 GIT binary patch literal 5810 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 literal 6644 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 diff --git a/app/javascript/icons/android-chrome-192x192.png b/app/javascript/icons/android-chrome-192x192.png index d3f9959c5aea246408b324e6700c4c0647b947c2..2b6b632648f6b18918881287c8a8b295cbc81eb7 100644 GIT binary patch literal 8741 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 P00000NkvXXu0mjfxX8FH literal 10138 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 KL2INfKK&1y=3s*W diff --git a/app/javascript/icons/android-chrome-256x256.png b/app/javascript/icons/android-chrome-256x256.png index 98ce6ffbbbc9d4482c2ca02a3a105d13fab9dc17..51e3849a263062ccefb246dfcd2130114ee040ae 100644 GIT binary patch literal 11993 zcmb7qWn7d`{O!_R3sQpA0@Bh7!Y;7jE-j^mf`D{M_tFwlOLvF}NGRR$BLwM=m2RXv zmfg$$-go!az4K;fUd;2%oS8XuzTeM@($;)MLCQ=D001c9FsKdyfb-DA0TAOpRFl+T zQ2;$_bVD_Usw01T1gyLdfrNA%hUEw>}=Q+@!2lvHRS(5 zT^THvIr;Px#o}jvXRq&5$?yT^S<8QpHh60GvuMnVo18APpYT@S6gTytjav`{(g^*Si9jiAV^fy!gk4D(5T1f?3v%?81ME_9mn@lTeMYdm%_z)W4pYk zM`^>GfVTZZgEtH^GT!GUx3_!I()MUf)%owo9z9iW2lRjZwB%zD*`hvo^D)OYM070K ziPSZ?A+kJ=Cc2a^TybVdp1DQH9=K<_mQ@%H7Z-n^7MV(?={9v)s^Zp188}n^GF~y2D`lW$y zqLhO~G@j$a*oB+Eu-!ou276`2$37#H7!R)cK1?H+@0q=55pZ5*Dh@Tmr-h`CDr}j_ z=|7FW`{s;L8w=wj$OQz@3Z5k0?(n+4F-ZyGON@~3f44**h6Jkg|6yJdREucVYrX#D*dCha32% z(MycN^YYI>D1u_EC62+(fsVT;zjL-p4S74CBjrHtrvXhhBUU^oe*Uye0mgsry?d+$ zy05Dp;=nId$C5bILZNidMMC*x`&Q6V5?oe56+obkUx zQ+H~ocFD%oJ`<@Ezc1qB;FB_kcCE55&@=cve_}1p32aLCw4IJSO|k2KaXHz@NbjEq z`)4Dmkiw_go`lYgd{n&DG(7>TU+UyDYFm~D*K*S(RKy1HfdGP_d|tdHX0qZUU8T@~ zWvVq1Op$kCp5!~C@|hH>Zvi&CHQ4%!o(PFSM`T#BlpYbhIO^y=hJ7) znI^3-Y7WHn25-sViIf8q8lz?(jm?EUA*>=9CbOb-Ldb1fzk

    ?H( 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 VBYhwK;8h0z;L4iNN=37f{{_(>6$k(T literal 14194 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 D;?&A6 delta 1029 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 KE0-%;hW-aH@Ujj7 literal 25667 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 diff --git a/app/javascript/icons/android-chrome-48x48.png b/app/javascript/icons/android-chrome-48x48.png index ce49448d43f48d48b3ba4d3d2f5e249ebdadf825..bcfe7475d0750b8d1ddb17df192841938de431dd 100644 GIT binary patch delta 1366 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 FV1hrM!e0OY diff --git a/app/javascript/icons/android-chrome-512x512.png b/app/javascript/icons/android-chrome-512x512.png index bccaada29fd44d5e8eb4074a0296b1c0a7b66535..bffacfb699c6b1133f85269342adddcc0d185c14 100644 GIT binary patch literal 31858 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 literal 39853 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 VnkRLF-ID=oFfp_=sM5#A{09w$jt&3- diff --git a/app/javascript/icons/android-chrome-72x72.png b/app/javascript/icons/android-chrome-72x72.png index ce57ab7461a91a7d7772e1bd3636fc10035f915e..16679d5731a6d62d7088d02b0590891f884ab737 100644 GIT binary patch delta 2251 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 delta 3713 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%0D-WT%mq9WvsW7+ESM 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

    x$PD?pMSt8kZo-Xt$@&-U^KoraSWy@N!k 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%0AIT%VzV{d3!#L$VVLGN>t((-%waAG zpR9w-Eifqpu%QB%;1gy)2CMp5q4m;b@-Ls~5DW=p-Tx$Px!qFv04AF@A829lCih?~ z_e9rpOF6&(ub0<4gP#fVE`Vlj$ITuRTTkD_{b|CBU$61%d{bBtJVx^EhqumE)@gQ( zC*IMu@cjG6LxxWDZhaXQb2h64V^Irwn8C5b+)$?aoouNRQnr615E=P z`h0kNCsb}R<71oMhtL)rgVI~8HUD{Gziv#(G>Or$;`1y8Awkv zHWt8Mw0g=-L-SOi!X-Mg96o()xbal*htlVV?5{x5kn)m0MDdKgVjni6u-Ux#PMJCs zGBG9hXf{ppS1)&%3sBp?hpzzei4%x?sp$tS4rw4*^m|c4tMKNS(CwyN1~U1+^U-57 zc`W`=j&xEJbeP3BHfl9zUP7JQZvtacBJ)Pyip_L*{a(dfbC$EFy^k%cz{mwlWB&HQ zlypze8oRQ_rnzUCcMSz;4rIT=*1T2=3J;7gv)bxaQo1~Up4F3(h-2d~Rr zfRHQk3^W`Z5?t@C1%$Y2E=|8C>J20|451Y+AbCA+g7(yZly7@NmRH^zOrfo3c{>{#*fy!2Vt@)m7^};kJ7?tzWK&R=3vR1i`aee z^$R=0@0DFmUh9?oU+sjRRO!bW)WtwIbseZ)!|#`;ptJCQUlxpRrSn6(XnFmJmBkBQ z3y4?#u`}(}Jz0kfv*sTA7$kI&Q}0LaDgkpazdktT%Qd&@U3_U=zf@G}hk@6LER1Wo z;vQAQy94yVvI~j(52?C8M4GE?-YVH!k?l^@twu+ZvvDaaha7v$^q^bJ&D*7RgIEfK zc@zRf>z7I1qFYUtFh~Bl&JI<0(-On=cAKQPfOKkd06AII^sC1YI!Z9p?alF@55`@V&blBEr1dT?mtF?A8S`?uJ2;`mR}!%3pWmOf}L%%urN(;V+u3rg<5^-8V3wVlbol?E=_;e5;I`-t9U?6yDGdSw5)y-S zNry-yA)V4NbSfd;-AE(dAl(hp-Ce`PoA1Y4Yktp~b?4p_`|Q0BCnK+B`cq#eF6;Yn z8+A#^)s|V}veHSg_x&K~c=zQ(R8O{Dg$QuFzQ5{aPh~Bim%B)=yVAsRy8M^hYJ(F+ zD!CJ0ot`KPoEK6uC�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 Oz~JfX=d#Wzp$Pysz(s!m diff --git a/app/javascript/icons/apple-touch-icon-114x114.png b/app/javascript/icons/apple-touch-icon-114x114.png index e13aaa87de5c6dde5af5861dc47d6b87df946bd1..e1563f51e5758b72ebddbfad67d50e4af6888916 100644 GIT binary patch literal 4123 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 JHQFxG{{znt_aguR diff --git a/app/javascript/icons/apple-touch-icon-120x120.png b/app/javascript/icons/apple-touch-icon-120x120.png index aa63012b5726546e756d272145e6acfad980666f..e9a5f5b0e57595fe866eb5224844655cc412b4de 100644 GIT binary patch literal 4366 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 IM6N<$g5H0PY5)KL literal 4914 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 GAO3&eU66$U diff --git a/app/javascript/icons/apple-touch-icon-144x144.png b/app/javascript/icons/apple-touch-icon-144x144.png index d282a6d3d63432a3198d0ecbe882ba32915b8fe5..698fb4a260b13621d40468ad5f3fb3438568748d 100644 GIT binary patch literal 5810 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 literal 6644 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 diff --git a/app/javascript/icons/apple-touch-icon-152x152.png b/app/javascript/icons/apple-touch-icon-152x152.png index 0dec7d63ef7ab0b749ab3beb7ed740d1c4267381..0cc93cc2888c02a3a2f1b4563858a2fe46d82c0c 100644 GIT binary patch literal 6177 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 literal 7002 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 literal 8096 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 HXBqroY-azQ diff --git a/app/javascript/icons/apple-touch-icon-180x180.png b/app/javascript/icons/apple-touch-icon-180x180.png index 864046b5652a166c3d3d15341ad6a4f7e11539df..329b803b91899248e364bd86dc39b299f3305852 100644 GIT binary patch literal 7709 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 diff --git a/app/javascript/icons/apple-touch-icon-57x57.png b/app/javascript/icons/apple-touch-icon-57x57.png index 116918ce286af08ef52bdad668ea9d475025e3d1..e00e142c640eca78b7e85825532a42d21166be1d 100644 GIT binary patch delta 1657 zcmV-<28Q{;4v7trBYy@^NklB+=JA_HKVb(!^YXI*9`FB(=} zM66(h3s=iAU`?ovWYVH_T;h2MLWTkSK%Gy&W;5aSZ=g4AMt^sYw6`OZ5fK9rt^^RW z&drH&jE%9cf}J~g*BM?tTw-+uK>2n(HV6V*qL9KQaiA$(;J^?2@Zq4R^Sc zRC@8XuZHEaoJH1BiBEr)>FO4jY!Nq!7z1lu4*2MivKK#+9vrCI05s4s`QV)NmJ#?TpHI*pq zh7G*I4U7XCM*PEX!@vG193G~%*sxLVd^fv(LmV5v&!7J^-1g6K>?E@}T=i=DF844U z9ny$fY*Dwqjr#Eq0*EA(v&b9X#5(4JfFFEs?Qg$527kmlwh#aO``RZyHGQL-=&FZz zzS-NmwG6~Myc>V{)7ob|FMai^>qgw`-9Z2Fd!8trj9(dr8#kq$H~-=H{J;LTY;+oN zxquuWs(j`XYu0bf{OEhZo~^y7YX#t$+L05LPkeCAYu}Q~W^tvuR%s9*6Ix@5QoC}T z`m3LL#($*JxmJi=>pHq;wW{=T``?B}PxOA|eQS^GAFtPTu5P>T^_7Th{d+Ju5n*Pm zzufzmKW@JLo$MTeCP*+!CI+-&ORJzkmE+NH-xb+H2O+n)oqgD&vH$^m<@23C|Ixs{ zZ52_bwY}}dugtc#Dgbx53ts=~$yBz*1NZIm8-H1~0T7WYi5MW2fs%P?X?!%&Iwc|i zZ*&uDEg=H(c6Uns?w7?HChN7=zfr2ALqP;UPY+kGk>0YT)5Y;IHkuMZYXm_gB1>gu z6bY4M$M=!S6aZlu)m<)106?U(TLF^J6iK#s#N}tIibcgRgoy7&PVzDufgb^C>3&5N z!G9Iw$poS?KUgbq31O^qn82v%GztSCA{4Qx3_&a^g0nM|M2pNXB!C#!ZIAdno$|P` zxLxY@waEcodLCfl&72x^>pVIF1$3F_%ITEHlbsRgrxeufYm)(&9It}N*o?J5vZ1)vqYJcSB>)d27gMcC^h|`}=&5 ziS1uW&d$uUS7?!|U&|5@AeDCFp!tS&?Rs6SrcQ4FOk>rao!)5%NzAVkV<8%J)qiWI zp8JZDGuDgieh(`IJ^?hguX*^}?`LC%q*zCW!o|nBx!f*p`|o^te4sLr$(NF39qbSO z{n`Jc+%CWV@$?VBF`$$YGO_yslI25HB&X4l;2WQt_|*@~qD(4NAOI$p2kNuct1_Jt zz}1lho;Sus@BV_}VthC>7X@qeSi?ya*sw^padhqO-BQI!bD* z(;VQczv6%3&HDj#_H-7CDw|iiyfRk2Sq1^UYBV#&vC&{+Y`DQ7l(9CIlNdC)7yv0^ ze)E&brmR=FW;&ZMc{39OeS-s65KTqV+FTj70x>oR2nm1*pSi8g{`EJN9e;N(T=ym} zZhM!##{-H#_-X*mEc{@xsk}fMOPoh1#wrk{%qQMG_=>lz?p|Y^+5NyrmsYJw{pKg* z=V|5nq3604N^$)-06?po~x~_KZtdosyeCriA zx>X*K>B&$;>QO5V$DXf$`hVo^f6hYA)m^awO7uYAz}sHo-}e!vdpu~RO)Gb4AXgMM zN#{0B5RrjEox3|tYcswd%}k&C(#J=B`TdT&-hbsS?pRpaZUKlmH*IlAJu(0GC*!~S z$v6mr=Z;k%)?@>}N=5@GhCcV9`X@GS>Ac#tbM4)>)M2bu0BW^ppmML)U#T75SM57K zBmi*g1bgo9wZ+&BNd(n1eUBa-JbGxsRHc+b>}ZlWSAKOJoB=^Fs6(S^K9{%dE?+%dGzb;ZjISp-LX600000NkvXXu0mjf Drz=Qo delta 1843 zcmV-32h8}14Z#kOBYyw}VoOIv0RI600RN!9r;`8x2KGrrK~!jg?U`L{Tt^kh|7Sk# zy}KK)E!SS#F;Sef%}1M*m?-pxG|*C&KJkQVL6PW(s#fLe0SSS4RG z=FFKhbLp|i8QVnS(*|flJFHuy9oDVUc4AfFZ4r{$BREKQsPHSzYBq8v%0kOOs zTpF}x6=1e{j2U=Xrn)4FdZ5jV2#zBLzOHvA>;RZ;*MC-DANTjGD$2<48|R|8-;AcG zS!?v|qc1<8_x2T6eGu^3zeblXMsuHVERF*Q<^2z;&d${)h>&a*UpOgV{c~uu)a+sw z^XE?Js^-FwpZ$6M!nqGiB_9ss;yZgDeZoC{Lgsw@>>2;P!O_y&k;{1N%{@EAr(Pfwc{f1kfH zI3}ell~;N@^KtsQXZ>tt;OW{e!LalJi?zjQ@2H69VaTuj%~#5C<82_i^Qi3U73nel z_l2q1kH>!Xi#=E0pI6FB_1<#VF+oIw?}UpB27j5kiP5pQ&fogQ`*f)(B?~BxF|2$* zDsFA77}fN3Gd=!MtfiAdCr{~zz7Z<~f){?5I{V7x@TD{f)z)##4}KhLYZCyzbU%Lj zlSL=i>Vt=`1m&z!0Wi#s_cjY3Fh&py0>Gtbe%46o5D|fopU_&fc1UZSy3cXlq|~l< zVt>buJDr_EJER@z=|S&jh=^P_IX}ncO%Wg^*qECT2iO?mYG(}sI9>}t9GTWOB0&H^ zlYX=7BP!qYJG_T5SYOgTb9;TEMX{J z(KivmrnrnM6@`Fdhz2Bz*V%B2RGiH$GJjgBvXB83VXN&|{xhnpFaS_>m275Fs`z?a zUxC$P0dnYPf&h-LC;nX&v=`*7SXaih zc4SNC)hf~xs#sZRk6_R!6xhTp63X#&CXpy>i_8AXO$h_vN-%>6w;fc~KY>f`v45&4 zBB2~+vhe|%J(jZB>d{;E*hGYifa6yA!RpT`*PgvHpK}0o?N;Tlt_=Ci zre2m?!)iIM3v*F zU3l%xC<*0wEsVPHxLUU3Ix!yjId;7|gL(BozMtjZy*k;pUT!}>8%<3H*MF~tmj|;$ zgSn;oDJdPH96@C7uQs_hXP0K*d$;4*=i{|6C(^+$pLriZswdTw6tRSeCxp`EXE_Yn z&zZ~;&&`GlbJJxFLMW}BI8nV_dM#GV^A?eM{V$7kS#Q6?jV0Rs%);dOjmeMJXpKqA zm2HfOKuX68S2C8M0OZmA-+#8T6GD!SOx=FCt*f^xEkHaW!@L<84w)lCqW&YKb`nau zQaVyPQtAzy+~v`IPutiLU`#YT6!qVo*p;mCOClUT8tdwDGRq>nB*6t5XIIiqbtewr zmAw08yX!gA6VY0YTZ#tmy<%y~Ci4BouH79^{;=!dkyynmMi?+N1Anx<7!gq{Q8-Ez z=l7*we{%Lua~6BkdXh)_o+>~6tn(Cxc4=YZ!npvz{sW#=#mObBn?PE5 zg>yj|=4wxZ1uG&_$|Dep$@HdRH~Vd)2)(`uZUQKpx+~tOHY|%+(suf0w4J`k?yzo+ hc38JYJFHuy{{aHU@||Z^M>7Bb002ovPDHLkV1nMxp9cT{ diff --git a/app/javascript/icons/apple-touch-icon-60x60.png b/app/javascript/icons/apple-touch-icon-60x60.png index 0eda96ed62a60d11495656f6ce33b69f756fc912..011285b564703b7bcb85bae65f9cd208e6c883aa 100644 GIT binary patch delta 1746 zcmV;@1}*uZ58(}vBYy^{Nklzy$)ss0m6`?h<|HU6iZwzP`M(o2roVm9;F{yMK9d^7WBY}NXxq9N`wW#e8v92etzG(0zc@%n;!d!3Q}{O z>*8@wRHhOnkbeox0Aur}=mYQZnM7*ohnJC#d>*fUy_wIqj5CEbKJo$YkAKueleB(&-uYMl=`WNBJ6U>b93A*Vmj62>%8j{fB@FD%ZZ-={fM(2(nn_0Q+>erNa zzn3vN*)B)8!<~&k{h^WaT!SfmY!ii%adhgQLzty$vczQH7jlu;D zqKu@O$A3l%NEYMA-}9w3&D=1Nn3#}j)`?1mcWw)7r3*j(fq(cwbpFIK!?2dE8ehFm zHkWp6Q&ALo)xwE`M}PP0)wjKaiaEoviCGgw3TfyReb(cXRw9DqNA>BW$LxV|L1JbJ zJ^!V)X%c|#+rsy~eV}~)_@;Ag80NKaF#hCcJAcX`0KfmO|Cx_#D>vv@3%hrOap@+O z4M1mhGtSJ0Vt^6j{5efR0fM1#a&sr2zcjh8cYU>drP{kg5ulvG+uv2?+)GQhxQ+Ft z&w5@%G=G2YY?L@45n3{wSv}?-%lBY90|ce+4FhH1{H7+j+U|@i~ zhJPkd^K*ww$yl0se*842!%U(rFxMfl1_YRGm*PuO5Nqyuz$i*Bow6Qbz#V@N@EnN2 z1m??EcXA7B4Rlxve4TMU!k}CHtGNlb(r~gIdF5h7>#6uW zUbR*|?D2zh9az3vGE#BxhYXa9A%KA)BfjOYe{2MPLr6Q*k>}Sho{vT+B>v9Cw12$i z?Oo0_NnF zZ+)@+`Hvj1oDmW-vwuVaq%cpN2olmgxOU(5lkZf%{K=C<20&oW^1&JgjvNS(DJPGG zU;bp_w?921q*B&EN|U*yHPXQP(0{%Lx^UuXaB#1;bcH#)OevGl1+UQ@5z*Px!QuVE zj?Im&e?A5f2}4Sg2m}Umws&m#=s~|yjPgUW!=lD}-ns|iTz+hDNZPJ&bJBKb?lj2r zxL#|%>$9iM#P)!MK}5=Oi6k)qMmp$WciNpYX|GXyTJ1Kmx)8A2af?cZOc0%w76MqGd@0 zzPw2!XI$E(@31qaG(-E1(lxI?^McpUn6{V~HgEcU_1j-69^6ysxCbGZmrIsgGs}z} ze{GyQ6JpWO!*0I=>0oBxuYYJAUhgKePkqVsz`Sy^MiA(FRi8N(1Rh(quwBaK4JSuv z@%GoA+`Y99`qw@_t(4>YwZHuC_-mi#H@(+g!)Y%7lp--8mb(@%(e}tH31~#b0*iwl zdfRPC4KoAm`&F$Y*B!pzP4oA7@aU=y_PoEL#H~r->0kb^^p%gFtAAA@5G`8zHe1jO z3E{z0@3=RF)&qqFe}19`lbM_I7QqZTVxRShz?eENcK* zwDd!6y%|8y-kO834rm6T+s54R$f(!Q^?D&W??@7nQVx+=wDheuVL>o!fPj`gbL@K1 z3=j#5CrYFY2S6(06id>7#o}PTGI+rpgbe`7us{MF*Cu2HJ>-^uL8dTsQZZ}j!MFHx o|H;q(ODFo$ed)e*UpiC%2KdRz2W9>mM*si-07*qoM6N<$f`0XTegFUf delta 1939 zcmV;E2W9NBFIR|%`1Zz6mDuqB0=#u zq$J0Il&m$h27qi9%G^ihLjekrG@wxYUp8k=0_x7c{L4>WnqP2}?XRTmt!y^`@L}#TN{_>~bt&_tfwUEwY zBdO1y8F}TnKQm)~^HP3pYD@@6D%Xj%O63aS+!`PI^)K_eT)8cx&0T<9gxG}#bNi;s zG!Ys;dBT&@ahlqQL`R3bbDKz~`NM%AGk5FtKYx3}gW>e}m{M*}U!s4TOsDzsfDXej zKR-J@GU{)Z0hQfEga#B9hSLKI*=nHeV0=~iU7Yoq4I=vXA45F~E@6#e+85yv3_ zmj;3tpO2@eubsciN;&sGnE2i^QLPBT+h@Gr{nofmE#Ca>N0)*e7@;{>oV?d?lhg@MgoV&rNY7$9_atHmJ!#N(XL83N^VRZcC0tVOA8 z4P7;jnW=!oT$)vg5Q`Gn6n^EA7?lo5L4Rzxrok|@hPFw0%pCYNrZF=XwzRCDz>LCn zSF5lw3%X_Edxlrn(}7>3v*?&=3;$&ZsD~85($SuJiXh5?oJ7gnqe zk6^W9+RN9PwnSFe9gkB-r(_0^6jD^G)P*+oF>R5j+2pceb#FnJ*;K4_v@_ME9UBgyS}HVZ-lEH9+~+nPop%ZE2Zw?pbm6u z&P-1xrHZa*%1b5F#%wOl$9;F{W8Y~h#K4w*X?gxRax|Vw1_0u%s#N9NyE)&>2^m?{ zl;>q>l2L#%j1#K?$nK- zRI|Y9xI#O^{-jvYs!)0Lcxv#{eHau4KG%=)bu8&uKV2FyXA*oP#?T_i>FHaCD zfNYOjwkH>0WU%_HxFVSt3y!}$d*<~KA+>hnmLvca>{27xT>W>h-r)GCKY#SE{2g1J z?jEh3x}MMH%=Bb9b;BS2*uQ)sck#V3fJi7Q9U@TO&wdSP%Y!YC4teQh*xXv%wn;cUiCU7sw`0SQG!+KmxOV%X%3BDC$MFlSQJ zr%$#$@{QK&!R{X2u{kj{Ie$GrH=Rz^Hb`73Obd5BAR&|!BZ#7l8@X|oJNkcM$IM~q zj}Bqq!RAP;MuLmCh)eH>#smZ+64gxzshuXJT`3(Y9VxXSv5fmE0CGp)(^eB1LaOxK z%*Y_^{bI9JWy=wvr`Ori=iIs}Q%SLag;iMZGjTe|%%y;&szgOGTo*J|><-tRXs zogt+*CYVd6-~O97I)9k&=+d_(R0$%HfK);%DmFrh9h8y6$k=JGC1vIx;mIOpJNghVxf0WIlK|ot&K^60RGs zf9q}yee_Eg8r5Mi4EsSAFbu#LrX~Ni-L@&8GuiBH*)mKZNqjgQripj zS0ScX;Yn`EpA3MsjG*Yz@_8#>Xi--BBv()VM`jDME+0SF<-bmBK(Cc-K(Cc-K(Cej Z2WPVY^?Y_`G7JC!002ovPDHLkV1hxd$@KsL diff --git a/app/javascript/icons/apple-touch-icon-72x72.png b/app/javascript/icons/apple-touch-icon-72x72.png index ce57ab7461a91a7d7772e1bd3636fc10035f915e..16679d5731a6d62d7088d02b0590891f884ab737 100644 GIT binary patch delta 2251 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 delta 2609 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 TRA5a{00000NkvXXu0mjf`KSM$ diff --git a/app/javascript/icons/favicon-16x16.png b/app/javascript/icons/favicon-16x16.png index 33ef3bb8c05d3b3c0dcb1b302a04979aff8c3abb..eed8e0035c34b51853e2f027f87171e682fecf7a 100644 GIT binary patch delta 564 zcmV-40?YmX1k41GBYy%DNkl&T18vv%SQYR(~_onqC8@xKKuIwF2JRfweVXdqJLzMtTA7mh_t0#F|ny){;^Qh9AIt zVV>kWfcJu2$@fCut*Mn$i8;C4VNNOoQ(PeV4&Z&PqY~p?mAumfM0&v2c~erUhZy6F zHKzDtFgGu^;=%1U@cyIg7h3W7Ui+7BNGcsljL`+djeju(_+N&Yg0qB06Y_C@F)Bx; z@Q<3QwU(&2{RxjDJnOX~JQJKT;!}hn{8OYMEYo0&$n@$XGL7^<(G-z6BsMm;H~BHT z(2vRb&<`pFpRkYnHKQK&CEvspn>&d7Dcaz79$nB|fkL-;&AQ+>Zy4IEsC@FbXoB7j z*80C(tu66?`AX~ms*MtL{;!HO{;y7I{9i|sU*t3VzDkuH>S5mi0000yx| delta 615 zcmV-t0+{{G1pfq(BYyw}VoOIv0RI600RN!9r;`8x0yIfPK~y-6jgm`9RZ$p)zklCz z?!8iqMX2bYhZ;DkMhzm6k{)8zASfy_lwK2|Q3FR!nn?r=8iXN1Nd^gm7|jYIY$6m` z_OhHQsW&@%UuW;X!MW#V666}~#ajQ`|6XjNgw9TF@O^hpgnxsoYz2})Wl7Ee4wwbT z!QAcdmp1?c(A{0!kJC}0iuFJVMYz&Gki0KFJ(>zKx$i(NK=me}smU-mtIW(e0O}ir z`g+6kv}68<#xZ#-+UN!ID@Rqd7GT?U!}Z=26%_)&&|rZeP`WOr5P?DgZujMQKWPC{ zqSE21wL4X!)PMGlBSj+}u_9^$ zYHEbcqT~7K3IMGKd^S`XhKH5`XglmvTW7$9Q58zk!`h;j0*nD0DrzkNxt!wpuFS)t zk}y){3f5ES0;OC`B$N!O0`eEvRk{cTU}>uNcL_5tXODc{i!i?Sulx@RBZJR&obZbI?4+Ocqutks zC1AiK+epu9H=4} zZ1(5nCt$DlWn<&H_D@w0$C{Vcu2Ww7RO{PIqIw5Nm82!aO-B!wI$-(n%iWD@15A7v zda>)CgBG=6pR?hF+AyJ^Yaw*i&e~Vbx~u;x8(! diff --git a/app/javascript/icons/favicon-32x32.png b/app/javascript/icons/favicon-32x32.png index 7b9a37403f78afb31f702955ad3f20347bfc9983..9165746bcfa5f7c94c013cc9ea9e355c675b454d 100644 GIT binary patch delta 1094 zcmV-M1iAa-3EBvdBYy-TNkl$5`98ZQHhY z{H!<~ZZftf=Gn9Ad!woGsrsV-=Jp?lDKu&|?5)$mDxEI%xK5Y;0ojpHuTOX3`3MRk zKq)lxpLXO!Jg%$L>r?OR^>8EZb22m4x%z6@3lDmiR+}0@Fn@Q_4O%UnHtE4N8aP6y zNtm>n1k97DMw681J@_Ro9IjQx{0Qb*Qmcxt$bIz6=+_7q$N{t9nEa?-dho}H!(~V7=Mc(pndygMA!fyA>4gyK*;X9 zBari`Uwt7Yh$S46)Ks=H}Kx?j#3LA8FBq2L@I}<`aK9&NtBs1T! zH74Y^mSjXsD4-M#ClSy#Hj@HQJ^_>EK5uT`@CV8Lf0CS%CI!|F#t_gl3fSY2oj28y zm&oPF&3_wyC%GRBl1xB718e#x5YRR@MW_NX$j+Po2-5{}@`m5SQ~{DxCWHct)qVX4 zXd9>k4qFVe^Tyw)0(@>>|0~ITSb$`LAyQyfPdftIhQ@G4fvg-0gy;gw_MQ=kKR4>kAJ&w7|6-%e+iNTo_J2KSkc`f6p%0L z+$3M#3A7CjQ~_(0WK)9$0#t!m?ixHMc?Ons{DOdj1%h+|l1)+F&zS|Xb1d;XDX^sN z69lv;@9l@r-WmDFOOFqdY>FPci`@U!r}Nx@aob{2V6pFU*t<`*w~Na7{h30; zR=I2l3gN0VXK^Pu+^?F@w^VR9bA=b`#+Z}o!?;oAzSHwN?Pr{lB;$v z5moU=GE*6@iocJobUVmo2RC8Q-bout$nM^HctwV>D0{Dvp2Dzv;Y7A M07*qoM6N<$fiHRmeeIUk5&*ffR64gbuI{aDF#q@0Klcrj#G?zgWNC!u|dF zrWqT6NI8PHFR~A0!`7{Gx-5Y;YwTf%)NX@@|Icxe3>va-+cs}UfWRv&?7>th(F)Yw zBj;I3gDu_qRe$Af04Mu4Suyyznbn#Z_jtKxe7SO^MF2d2mtTy}HPfY~=!QbjxX@#I zy+dWCaQ&LmdMwSEXu9aT+Q|+Jo^ToWkf3R}a6#F>FHK*sl`=c7(i>O@Z1Mn9Wf=rN z96MHct7EO4jX>^U{hfz1*lH)7v$7w zE>r5<-0y(_9~^Sa$7Qowf&Ri{9maY-V;-f9Ujc#J>6;k zh$eG*WQ^dqk7}MksdDkWJk{RbAl}uPuY#*xihpV`-qVxcaYaQ*9~Jo&n5Kbz%>80R zhp0f3Nh^N#;S}c72;z{;6HpywC?_QiV41L$#kmDuLLUZm1k7vzsHRw@$d>sWn(u?* za3iP>Byt2Wz3E2-I}C*IE^#YJfvWWe`$%yJO^Xfw{8Jyt4h;a%AJ+ix4}l+-!ZRSM zv46m1;7g%@2OaGRI@$xQ%Ny|No6(*lU|1}875H;n@=_`9J`fOJ1SB&dWviguZ{X;` zIR9SCw9l(u=~Ab7SULV{Ki4`l&FIFBpuQPD<_TE3-9Me3YK?QM^|pK#N%VM}=>vDss2jF;|)RZX& zBijEf@;9Q}Q;F2(T?c0L6(QM&6^qVAfth7Z2+J_*F_YPdO+h4rSq(^yWO`u?qZcF& z(rFHD4zwjLb!J!djLYTh=I%Tp{ezj5C155Kzip}i5ZF7?eUC(PA@|JLY--m{Gk;yr zzf^TqQ`6bdaK`S6z}GGH*Tm9mQPsfwW{Q|LI9z?@MO&kjnVp%5(u3A z<&Dv`CiW>%QAS6BL%=zp8>m6-0W%pRFb$Z9(X#X4tVMT30ATt26LZaRzUR*WCAIAQ zrC~$_N|xPshadgTOWbS_)3-3~EJ&4-^2;s?`q@aC-m?8HS#myH73-NV!qWzG1)Bsi tfuV^;pwo2XosBb`&X}1U z@-bhK!X zu0|gi>O>-@ue0}gCE*@UR zxei;fk%6J2tA9b%REAJp5rSqXJc9D#5bCQ#DAXv2MpJ@zA;6*dOB}WUhQjKVVf^?* z9MLEe6OREud>=dXJ!)^})DS-UFos}|?->U0&p&bO-y4Bb6?P~-7w-Wj@Rq9hF%VAG zkIz1hVX*n&{U|hh|J}X2!#tRnhK4x1M+1D1#<1DE<9`x|uXqsWs8(Nufr0q!(u{y_^wecUJS(g)jnh35bAzI?*aO-8_Dc-)mEMFmxz3Bf=}@>`1{TlrLp2}vi!~44ej_Y( z*RBX0a!7JrQ+Ys+Ycl%+C{`}<^4(O=7?wzeP#^^H0QwO@B{!9BQuIfBE^4_)7L}SmJWjoPGga zET9_{kL(cxKKnRK`Y${a5d2?%j*|Y~9pd%B`kcN#g9UW+02>RiXLo@>8u0!*A=2No z-6!~;eiSDC?Hj$)0Ex@V>YkYhU|*PI&*}sL3-Cz-f~3D|i+G@q-V2fb_6_;VnwRkfwJf#Q)}9x>pp0O{}C3^;HeF9q2Y^g1vcx0zr7C`wdz$FH}L;Ks- zN&-F&N?eYT(qiSWLaEL7D5=e$I3Nx1lYVVcJJu}e>Br3aPSW4HwpY0Rmn=Zya?+Y| z_;Vno;YKB;2?Q*_B?i3d7rYU|0(#^D^bV{^O?M{(EJ=-5DannXIIu$&;1j%&vVV1r zEFdu8j^&}2OZYvI{^vL)sR0xRw)e^c1aG8lUEM7Ypm%(;X5sWc{|ox*Z0p1Sfj}DY z-Wxu_8zJ(5PXeTGN&4?e)3IZH=wBZLGOE-jES%ETkBKGCf;Upil}6$ElgnC2UwP;s zvl#Gywe^HE(aq*MH~Tcb##VZ4FsN7;@8_8nQ7jyRPkQ4jHH4n{qwe zfBW~{K9_&ndm{j@lUI5syoHtMcS(1C zwshx|PJNP|>~e%uJ@mUqIdc7_E35QIxU#WP&P)aRTf}gunQ&%40Hp)3xql;bTsX2L z2vH4CbrX(s2&fvEAe|YXbfy;xM`jm%kAmmmb2Y|&3*$VLj`TJ7yq7!D>qSLs8fJT`7iWn|6LwbtYqF#<;AAqW! zXi(sU8P%Y{rgSS|iy9b?^ha7macnfK$VZ@RAWm^~JF`V*G92OXop5Vx61PPca2#1p zZPAV3DEwXopMiq^Dv?$R9Puz~b2!YHP-EaQH3wf(Q&82yM{t%HgEI(Dv_#rfjlE(D z^d|=YVrmHPAco*+YVa3f<(_}zG4NBPe;53>0)`(Bm)!QKgna>obe_C{6JZko0000< KMNUMnLSTYd;4*6f delta 1885 zcmV-j2cr0p4eJh&BYyw}VoOIv0RI600RN!9r;`8x2OvpAK~!jg&6;U!Tvrvxf9Jg! zkL}nVw}lXzCdD-&Zk;qCO&zfmoTY_O3AI9Y>MW{Bl&DB$5#j^l3;61<-pn{A&0l)b%)RHF z`#;Ow-i%NHcJ9=2U@aD_L`*eEl`0EGsZ=2<5Kf4e0+BRT1%}eTUqcvCWmI4Qv=_L7 zSXVKea$Qcew#r04oFtb(LxbAUsN1M&HG^&h?7Y0aK1={F8Dl-u(ju<~2?jc_YnSt| zsy+=;Gq3at!+-C={^oPf$px=YPY3qw(XivVKSK3MKbac}Atr{cziJI1&F-3oh6XJv zFLT;aee}k#%NwqRHa^=L`E7cmHCw8@baFq&Jc=qe*<%~!U~}{2>U6#t8ED=yzC%Qw z|NjJV-f%Kp99g$-pG-ko2AZ3-Sm1|+M8&d{%1VevL4PPLq6w>p}V}EvNd3F+G zX4*DB7=Plitwkw^y>R)m;m1$Mi4AH_A6zku4jd@&vjD!nStF==_~OH1-$6&NX;#`rVEf|{ z8k>qJE6Zd*GLkKyj?dMHC@mq7kBU}6auOSNp$3E~S}ELBon1O_pLf~+%W>Z8n=ba- z7hCN9S_xGN*~LpN7B89EYTh4Kp8450=gvB)LP@F6*c4&?rlJhHk%(}2t5@~)$t@Q8FY zDmmuBv|Mr(C+N&pQkva1IABOwnT6i}I)BVu4W`l8Yf$x;AL!3s{7Xxdyn+!*iizf2 zdovJ^E9#>Y8_XVfC}w=+C*$5k{p6?nL?PjTfJ>kQUVVvFdce5Z?XKf5?`eLTr9UMh z4oL@$#?{w~&j1=QfM;`n0|f>s(LD(X2VBgA1XhrDr(cTwg5fLg%RkV8v<$drJb!Sj z^fIJDCE+FS$28fQr=6M3nG7frFLV+I4p3+b71|Dnq?Hhu@t`SC_y7fFz_Wyc=YTOd zkZ{0K9SK@-{VUzO=gb>%e)?1_qivwi^`9Fa?dsE>f~8ZCEFpD=Jg&#H%z2IAJwV^P zQ}n$XaE{5xKK}Lr)MWsYtB{dlD}QJiDtK8e5Oc7v#{L&1!fuD-!#U62o>p?`6!H{i zfAkY|AH58T3`~ULLq(JR=Y4|uVQs@4-qQ7^3 z$a*0*;1C$i05Psgry#A)Ez4dye1BMcUpQu*p_?|HKMAb%k@dn(5$Oe8sVb{LR{(bam9uSo zAPzDl=p}_7g&tAu5!*f&v*qs{9n0eR5Xg+SYDYm12xW&}sc8X@%aoro%S z6u>s2G2^(#a;Ao_h6b*6b*;~P-3+FXhAs8oD=drCv)lck!prTQ_kTPxA4KMgETT;t z-fUBq$MV#VTO!L3y?W2ZdFGWjvd+*B&UZljlPB^VPehGrY53IZB{z_B20Tk;%jZvT z7LnhP_ll$^1^XLqUA4#Z9r(+iIbXgYG`Yfv>aV+2{ViX;+3>CP#`-hcMYWZ}e%L;% zLYJs^BMhSAib@5d6@Q3EjY!7}GDY_qV@x@1D6j;2Yr=yH*}-sz23l4DCQP zPkXhZ)B=f3J#pmoB>4gefFcJBqV=$#EH zJ5h6aKFOhX~PY+%X>2&-L X7sKQ+O^|C_00000NkvXXu0mjfw=JO# diff --git a/app/javascript/images/mailer/icon_cached.png b/app/javascript/images/mailer/icon_cached.png index e94abb7bab5e11b29ebf33c27a4215fbc01dd7a2..73bf9d198d488b1bc1207769cfee0cf92a76290b 100644 GIT binary patch literal 1133 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 literal 817 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcalY)RhkE)4%caKYZ?lNlJ8o_V@B zhE&XXd&f5KN`OS`LqXM2rHx%W{9ZwuG_=YlwE1peIOXi9v#`T6&1l~~`}?1D5}rlX z_22zj!UQxAFG#TPwEJeqTr%;A-O1od`FqbZwf|E8*DDxsxc-qjQ&xp)opM61_>p{; zH7~n<^fqkWqYM<_H3tfu$!!M;SiY6mFK95G?W4R|6aU)(4O>-r+Ryd7@4x)AbMyTF zcORH1%Ja_u{C1EZ#v>n6XAM8Pq|5dJU*@b z9$6(^Z+QOW|EhhC_S*dpe~#|ys1Gh;d8Gf$=Z~tp!oQ?@9s93v9Em^E`f<8M*VzJj_kdWTVEf?)M|fhN_#NqW6WgqL%lk#{++Fwjw0ObXqc=azH$K1lTKL0Lf6l%69(DW? zBhWBxz;oL=>#gs;?FxUjZ%y>vjmclnpFecEbo+t^MyTXkpE9wmLn^oAa?iHS~=KE{D+`kX+?|ygK zhhOQ&(yQ(Dk9R#civ19CH%*tVAT7a6FaPbs`|IAlK9I9!jrD@14C^?~TwA-==FjXa zwURT|E-j7TE^t7w@u$VkR)%$4JztXpCLL$`{4t4}agXSXe*Gwp2a^xftjSSqSijl8 z{pw!%W6vhUpI^7f7%oKQliMNgnwmi8i(mVfhE@*$)m!e$G!&qb8|Gr`3olhs;`XeOmm3JPTc-w)2$zW16 zST#`KEx$}?Z!r=nQ) z#{lGtHcZTU!e`%b(q02ai0gnyUdFy1uL`US(ZCGyIV z2Y~MGjbW5H>9&rcCq+3NWVH1UhG}UFfxPR|3na5&ubX?&eM0T4cmIEWoB8Q~_Uv8R zv!!?511tQ6&~t-fT51s3ggW(`_OF$Y?F6|cq4I@2rcHks!dm{pJi?^_viuptj}7l` z%zuAap+V7!L7SP0fw6(XfkC;EA&ixU0nBq_VqC+=!2ssGaTk=x_1Pf`(QO?y0P zovEkU%4)64tmm)g-rA~h(y#P=iq(U^yJB}wQ?=ak?yry7p6GH9a~Avkob%4494Ic` zUFtk3oFjEuCHFJoQP#uISg(SbjwYl@}N9zhc>V-_UO7yJ@?ozuNbq wY{8meKO-w%K2LwVWY^kVuFTl7Hc;#bXRkn*)Vuljj)N39c^6>pQ{Q>8P?{z=C-q-bh-LLz;-uHFC-*=X`mn#~D zM*#qUc6X!uKnSi5Ed(_C^s|u=AVNJ|>A=crD`_dq2LR-fJAJQjQt{Xu7p1wM@uR7U zbdAS#X=?>*{R8pxzsN-GQrnPYbk(19{QA%~N`@CshfT3yUqaXNJxX>&h7vuFn;9-= z$uCrb^7jwcQEtHaX9vj=)RndrPT$4V={gzw0wffxDr_@0mO=@uWD;62b?y=KyG@ zs=*+EKcVr6IDEShS)l@i$;Mp$xve#=s+fkJ1Re*5*(aaJBg?xW4|2v+*PX2W#o+H|on7WshNDr03&8RSzkurvf_$tY>A23FshOCW({Mp@+Yod97JRSdfe5dR(Mv5kI(FT~)fzgUoBt zPSmsZz5&~PxFnEZ^iV0tvvq7@$4p6hfpAKesWflG75 zu-rt2?ic%Q>ib|eVQvHBqZc4Mif2yy@}9LSt0k)jCW2A`I8C{d)0P|f^08@SwyAg% zEtXslX|Ql<5~IBAqWJc)IzLD77hOeq)IP|bf-c&UG@TJJgH~7(%-^v_W`y%g0W+@o z!j<-+1k&^gmh|SABbe|Jj?Se-hI5h7kFzOk#9WxnWJ!ZVLGq)%M5;MHx{GOpS*mEB(wKSEOZk}^T~HYJ!EtB@K17k*EUH`r?mAqT=9_$@?=Y)o zsZ1L^pC-@zzIbQ%7PNxHv4ZG*)1T^rBB`&f*-CXKswpV4qjrMIegNCqIEPQ%$H2u( zx{FT@Y6|7lZ4LOmq9vf*VNjaA^ERTLz1@rhh0`Z);4Cg85?#|UX4;gM`}+3m;XBYlH3N}%|u5N0bX`&|iW%&fPqXo9JEG{RiJ?Q7B z_diNX9E*Z4q)`m=%DQ;QM9mwapp@w2>i5!kYwX3-oM=xXAGZn_FkfV>=%gF^l4UYw!P}Gd3joG9-i)k znK17Z>%m$TSdm#Z5%@G$2eL!c##;3wjYo>0p1c?{jAAYIuDA9FK8?5A4TW2;q4d@nGgi&A9t$FScp zvx-Xut8of6r%t-?6Ag?!bp|L9+do1}RFIt!MjIay!`U4=;8OO=IV1ZTS*=o~FU5qw zPaMC))eh5Av4ya1JHnm=_1}TC=HAJ1AhHl$a;Nt@7^n5vB?9E92=5o{@1QG-EOg`* zvf$+>DG)%8{{L44k}}7uQ~CI=T^;DvJQ%#)n-=is6io+8e)*b_ZlC5}bZS79UJdfC z_+q1g5<1)|Xf;1x$5`9WZHZ=$!fu(t^|vprYXuHmSE3D*=zwKDk+)Nqw)t z{4(%Xp~L{^f!Ts`%XoWazdp7s!*J`DP1}gU8q%N}SGylht+RB|Pt7Nhwrie4q*nMI z_&_|Tow|$oA19vm!qzxeu#OYF|43a`0~aMG6PFKHggj5=6NkgqwkdFd$1d&EKi(-Y z2EiHGnWMaeK-YeFRd zCRi|eOt{bs6P2jnh#GhHeNDz4yySxHhox??*9t@jQdCBE?xTGFUddnQueSJ~5(PMg i2>z|ULIs$ic8S*VbUE_yc@GT!Hj|B+&14F9RsVS`y?J z%<#XwzJcTXj2@uCS5FtmkP61P=L2Ul0*!fK&CEr<2n-}+D>D6O2V z{P)-b$7VKODU*x~2*$yhqTtQl?9I2?xMwmPP-eKm!C=G0&eP&+D!IBNR4;cBnp zu{YBD9_`Yr|08}sO`gG+vmuLV!7PRqY7DCefO!k(rs!i5|5bh({^oo4sVw&T_nYp2 z&VFK4QMz&E(_?=#P6fe(Y1<^~Hw7|ua+qyA`(yH1CJ&blJJueXpCjR*)a06L{x9V+ zgOH$3+Ubw#((DsD5(IDe+26EjaABF8Yy0m>15nOq)88MHoq_s3B)Rw4TWSF1^o!2? zn0y!{l;YlNZ)pG&@-MmrRK*MwN^tM9x3mBX@fW=TssahQy7${_asVAOw@=0nKpFr5 diff --git a/app/javascript/images/mailer/icon_flag.png b/app/javascript/images/mailer/icon_flag.png index 0f14f45a85cd596124ab25ee6ba6e60f60bf734e..7e078fede78825aa84e711798f2647320414b12a 100644 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvG8AvYpRA>UE6a#!hT!Hj|yx_dz>z_bH+$BMN z!3_T;eHu1Duiqr`Y@b`ZDo}W>r;B4q1>@VZ?v6(p7#s}0S#3N&H9$szk#i~opM#U? z0};kIAAe{YPS9mwXy~6)doX}KS@zDggR!zcr3G>9;-v+V?BS&avFz#2vOT2*@$CJj z23HSOO4cOoWo~p(5a3{8LZPDbXT5%~gs<<_gAIITuOIB-+cxj@gOz-8uO2MpduC;^ vviYyojn&O}tt{3x_j4lY-SCQ$fkA(NW`>OWe}ykVhckG(`njxgN@xNA0quI= literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcalY)RhkE)4%caKYZ?lNlJ8vOHZJ zLn`LHy?t@5u%Up%MTx*8&1Mb%q#LXja0fFbEsm}JKJT-9rd^S#oMz=-pb^+W!{*+r z%zsYLDPA`(u{i#?#Qt#p!tnWF{0DCDTPyeA97{p{{c!$*bfz8l(hqoHQQEKy2QE2|#hh8X$St_yq%_O*;dhz=2|p2SDcW{;SM) zCITfCYa0GDZ@40n{IdK4n}RRH63zw_#tCW+mslKTF?a|wWHJph!QXqTfMI2L?3Lud z<8wYg{#x}n&epw^cf(A>WAmpo=qWeY{*AG9Xl3~JCHpIbDASF}40=ipwv|k=E)3E| z9P#c9zc;b!DKymXWCoF(515#4Ojp0a%CbST{evmX2J`a^CUYj_Gg-`J`1XtsM5;AR x&ix<#)AD)E^UvkK?HR6bVx&j7U?!4nAH=)FbOo03%y9%sdb;|#taD0e0sy+_+WY_j diff --git a/app/javascript/images/mailer/icon_grade.png b/app/javascript/images/mailer/icon_grade.png index 7f371ab1135d1503093b10b4b14b0edce9e2e5a8..94615fc4a7f6454057af71ef9091df4b9840dffe 100644 GIT binary patch delta 1946 zcmV;L2W9xH8K)1BBYy{ONklmkz)A-P-VOADEfAtz4dP5C}GJh}wKF{<%7iC}u+{*NB ziJ~(DR-R7t^zgqNvP(xzt#CHeSsWMPvpXOYe?}qA>&dsu$?p%c@_P6$$V$ zDz{sh6$x++mAg93iUL?(by2x)wNjWB0dN-8J2P@;2F$KTQoYe?j>wrAa45AqBywg3 zJVx!FRDB{xW`Dr;)Ni}Uks0uJ>i4(EjTx|{>ZE>MYU#*{8Sq0I=LeAsGhk-*K8-V6 z%@R2<1NNcu_KqBw0r%5*4@K(CfX!&0O(SJy!0%|D-$ts;fQ8j$nrE_FG*V;+e1qou zdZfk-7@*#u`QB0kBPC|QS7@CtM@r0qyJ(#|BNb-A+JCg(dXWM%;0jvr@@O|RU_Ld0 z)|;pnh;}jqPNIEIjCL^t`l**_pI21>Xa_Uk)3o2Gq8-eD8)?5AqSefRRa7@=SUp3oEK&-{zn&MNXIxeceH{Ta1`k|GMdc{=%bz?JDtADykSGQUrn!ybC8R`3JG@2POiyBV)MyOe%k<5St$;ScFNM^vJIdp*^)U_3Gu1EDb?OQArs~3`G=D+8sqR;U)i2bU>IAjB`k2~GEu#j6 zwQOg9nJK=ZcULD&@eMs#-LKwM9kh~7P%o(4r}%;SzB*!xADDI3BC225|G%LZQR`0e z4Sj_A{uJNPx2qS_WQxRwt0$)Tfw@q9eTpBL?bNDjk*uD;1B5~Q z_kXKbt5{Ajo1k7*_p71mO7&xPtlC5Es@7MFN4o)^Yr{9U*(CMVNCB{kdXLsH8?LsB zlmN@M;7;D`MYVFI2$)yhMst|mqZZ8J4W{4HSZ04wv*h%#!LQR8W@l#kaZg}h)j@5{ zI@O_(Ghhcb3bX2rRUeBY0M<~iQW>*1)qlECB)}r-AwHVf<7&w$B49Q(lo>O-Ud3q;; zKBUW(588Z4H-wV&L7NZheueesSAVL1Sn&X7V7)m#teAjnvEE!0Ry;sIH5%*9m;yco zGGHC7Qfr453vf7Asl&pG1^7Kyso#Ya3-B6NsW-xk16UfX)>2``0DKLr)>p%d0k{CG z*7;$@06dOW>#@k60duP^tXkb_p2(X4yJ5B3HS%V__pn-hH}YnlOR38(k$*i;rA(k6 zo;@5Cc`{&AtX`W$o(wo1tJiUnCj^#p0^P_sqa4A_?Rj8|W;k4og>&P>rDz(93`8cTbP zR{g@f0NsP@)k@JMz%puZYRl2)1?bn*?$IK^$JC2nj<$9$Ku=a@wtwU0L11R}bv41u z(bkRy=o?eGlLwYl!)Tq?qtv_r{f62-5(9ipz3k;^FF-f@;m+)lC}0-#bv4n;(T(H< z=$qB5kqKaVb#;lBqYZeB#(Pukp6iFgfsd(IXuLuQphqrCuK ziCfj`Q82)Y>RK;Hdw&7CCvWBaaHq=I%USiA9UVxtB;m!hKO$E%O&Qx7#EJu3*`eC(c zSW5xxse8Q~-6p_x>TuORtSx~4>TtDPl-@tvgJS^z004kN{?>!oTU`JE0000000000 g000000000$)f34CEfZ&=&;S4c07*qoM6N<$f+}CQmjD0& literal 3243 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 literal 2498 zcmb7Gc|6ox8~^=gnnr}`mWgY*G$>g@V>iTjGl-g^F_}m=vUgEj`*g2sD>RglhMLK~ zHAcND^OJ-YGRTr)iY#R;nFeFK(|zCf{`20?yPWem=RD^;-{(2Y^F8NtQjR(wmX=hI z1OPx9Z;vC0Tj*Pn*etFILxD(fv)SA6Fb>%GmJ6R0X92*L2t4l4iO5@g?x_-`lS-}g zvyy(^`E<9S{N$jsG3R?y>r)*{)KV6o*MIm}>ehtpLT(GU`l1pDmc$x4OdPzy6^g@z6L>3!BQev~%F0c%kIfV?RXLH!ar+zk9 zOt_3LKs;9Jmk5NNwp%xon?v!iJZ0WYHYeV2q`P7(-Vyx-&v{LiDTzm-xmr^})K$<& zA8qNv(M0oepVDca%6OHWI*X`S;vRH?x?dWdjdWfeT|2_@MHk3Fi3@y&Chzmp2rtu{ z{t2&=eA>mxfcn-!bZ&YGt7DZDeoPR>+@2ZEq8I<7DezXz6f{kK^@XeZ{hc0SZ??lc zgUQwQa~FszuDjeVNT8!&Y?u+QkI=RTx$a}cb|v;a2TjuHD0l>{I=zZflSGMNWGiRr z(lulteRL&q2KHQp2-TYt@Aj@3{1m*IDcHdSy@JAZETdr$Ef|8nNgMwf^rHj?doyHz z$C9QMgn)$Yi?_xxD!|2@?L!?)>C33lEpt*dr7x=6sEu1&wZWC4pL9d|`aia^m-ZoPpmn88nfiVZmO=fYq|8VFFfBZ+@c3jJNUKZ z3uvx^yBpr>bGc7>CcRwJrI1V=Hfa$V+Ygc>x8@hSvJr#`%MGWdl(2ldD>!O$ijyIg zel{bevX&^@WBH`$ne_C7(x=7xCFY7+^95cJS4WvnR3o`OMc>02 z=de^a{Ghwnt&nu(mvwdFI&WCH)mE^Wy$pdPG%cAzS`m0Vk;a3c; zc0I7m7(Ia(1&wE)Gwhlu;Q@ieT z$YIJ8(#Z{B*5Y*BKzw}15<12Wp%<7hhev76YH^gh&ep(s$ksO&&S#n5X{{krXI|`H z3{!Y>X2hFyK|($&TKA9 z1S(!d^3S%EB{MZgS;yI3zJnwQ>yDOyl{DAwn!a0QAc?VQaNK#_v&=Yuey|Ja@mvzEVwKY_BeRu_WB7&XvDW&U<RvlcWk%G{x9SggQ}_*Ih{MC^Vm* zA5*DjK`ySx^gj5*fEZ9^;Q=r75i`oQnVDP#Oz7_gr)VpY|bIx3YgZ2iTaX3 zSp*Oz(NWF8UcK3JKT8m4gh6x0$JYUWEFPv|Tt0HJ#V(HVTf5a}OiYxF=)19!cAabN zqK$^9GsxjQg4xhQsB`<92cAn~@*+u#8*~&H4;i=6?u)0gExb%{Z~;$pj`VPR5+eEz zF1JG9-oP(IxBEc0&QiTB@IApHV`q#@GdS7uqsyE#&(XT0R;22+zoztg@l$uuHoktW z-JYcBm+w3)U&N#~?(qu>U(+-c@KNgsg9vq8e2SUtr#SuLt$~|#?>1Z;UuwNOTi8(N zy)uTZ|0MmdP`(vQ%jW<4CI7F?`{(m;N`VY;@4|C*ge@2g@+&$1(Qptm4XTOhSTTof z#ccZFerHvSe{Jwh9uvjlz>h=+Rx zrd8guz;Qk^ptelRnInLgR_rAmw~Jy5nrt#Fo4_{6mA??v6#+zj{)XX)d60p^^WWUW z(niY~;kT0M7om#~W~udl(M@=qwViMD`0-dEomAL4b4QO+uO?&2!?ybTbuzNpK=y1q W9++q|8!rBo0eCxST$PR2<=+7@&9wOd diff --git a/app/javascript/images/mailer/icon_person_add.png b/app/javascript/images/mailer/icon_person_add.png index 696eb74951463265d760a5dd2ae8cd9ec0b8062a..9fe966391e543597343a4be8e5a4b2cf00c6d5d5 100644 GIT binary patch literal 1440 zcmah}dr*=I5dYvSaX67)R;MGKPFY$RX6mWn`+@l)9*L%?XD=yhEV)zh-H z!c#0hB*6z{HY(;6rgWx(CRvi9CR#Zb6{LB1e>ZnKv-{iq&FpV>c6RnGF(w>^v_%2{ zfQlf5kjyAwa7znwBn=%z0KnpX5g~yT7Hq2hgqZ_46?4!k2)>a1z*0WHhlR;J3M#+0 zdCM|h$TG^?r5P_QAIb1rnq(RGCpEOg{tYjwdHURMrK0B(FQGSQU zQQ1^)5F|0GP1Uv{zbed{(MMLS8)YI-fnDPeN=lF3DMmGj;F#JRD0)SYlbVd*q^t*6 zjkdMOl9)ggxd7Sl8K4NnHEE5!e0`-$hls)%heCHNf(%30jh@L*aM?IH5SfT?gE_dl# z@Lq%-l%YwYLrll_879n#Ey+S5BiTTkW0F7Gj2j69^=4Ya&3d;$Gx?J&+6>qf)$DpY z8^Cak>kE&=5hz_XB=l_L8L4GT)AvQSp$7M?>A4;jeBpq2*CmL@ErQjSKb1%?)%e*&SwMoi1061v|Jpv4Xr)IN!1N&1>9_)fTVaV zuF@A3tzYY^Sv_q(GildriI#%`;!lrxM&Sdn^O_@j?S~b{%caX*Ue8?6eEa#v7?NpYT+jU$5{z7)c(%?^F)uLV;D}!-bHQv+}T8R2$GO^w(S@H zvs2|2E{-;sfOHs-w77n}(G0C54V` zJp#U5LJgl#LG9*2ebB$yakvnM0X}S?Gvm;xr5}NM1WQ_0(Z6tNOliVJ@pwo77;LxQ zG|iCiL7WTP9Op~D(R_i#WZX`uW!G8=V_;Qvz2Z!nCIF7&(Q z1J&uddNHF&bITga_j!^OQG^&_x?bUc=lqVq#kA~VQjV(O%krP?zMB1%M;A#6^=45d)b9vcY>z;&?6)aM{E$ z-Sbhj40;>f4Q#57Q40gMkb>2RM3A*GT~AFNMF=Qs$nzZu2Tq%sh1T7k+SkJKnv+s# zFhh`&MU$CtB2DFe?#bW69r~i)Rx6f7UxlPWHY%b)BI$#>sJ^IEHRblCVX95)x^KAN zXj;EAZp(!cY(;`$$ErF}v*3(SBawkP>SjgP!)1mNNk8~%YS^@A;%ZKK<8|0DwY2UC zGa}EctcT-Aqg!3N<({(Siq~9KrbX`Z?kYR|5z?M@6qtL*W zLYG}{VRARp9xfhe3K35IiAeFf8;bzVFVO1L>>X~M;&O00ywEAY7S4D0uaM~QgRl87 Yg}vlA3U>9-yBDg6(3p_gpp^W706SofOaK4? literal 2356 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 delta 1657 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 diff --git a/app/javascript/images/preview.png b/app/javascript/images/preview.png index 369bed4b6cf02ad3cca2fea5710cb95c540b20ca..3d3a17b23c5591efa47396babc27f56fca979145 100644 GIT binary patch literal 340408 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 =z(8pyc@-$=L!4+&URNERG|CkOL(M)~ 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

      J^ZfYxbAjX%}K;rPLQTUW1JrdzJ7S~&BSQ5F44 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�@L*XTz(OTIG8kZmqkR6XKMg*RW&?0q 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%0D*o*JH{*sJ$kH7TZiI?5ujaOt@kk7sT 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拫W!ZIVCmrXR=G@4OpVU$ho)eEu~#Woja< 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

      &d#k;lJq-r1 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�BI@k4Z5?{s0emb1DxAM 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 P?gDf)4AmQ-*hc>!b1$&f diff --git a/spec/fixtures/files/emojo.png b/spec/fixtures/files/emojo.png index cb5993499f059fa4118504aee1e71c9181810e3e..6ef0a5fbc7574a7432b6d031718d4d35d4109204 100644 GIT binary patch literal 29283 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 W0edJykTJ3V0000);pF57oTHj^P`Ci88 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 From 15bae3e0e467a19582a25e0482cd26c1c82fd7f9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Nov 2022 15:27:58 +0100 Subject: [PATCH 228/500] Change post-processing to be deferred only for large media types (#19617) --- app/controllers/api/v2/media_controller.rb | 2 +- app/models/media_attachment.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/v2/media_controller.rb b/app/controllers/api/v2/media_controller.rb index 0c1baf01d0..288f847f17 100644 --- a/app/controllers/api/v2/media_controller.rb +++ b/app/controllers/api/v2/media_controller.rb @@ -3,7 +3,7 @@ class Api::V2::MediaController < Api::V1::MediaController def create @media_attachment = current_account.media_attachments.create!({ delay_processing: true }.merge(media_attachment_params)) - render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: 202 + render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: @media_attachment.not_processed? ? 202 : 200 rescue Paperclip::Errors::NotIdentifiedByImageMagickError render json: file_type_error, status: 422 rescue Paperclip::Error diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 4a19483807..81e8ef2dc2 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -248,11 +248,11 @@ class MediaAttachment < ApplicationRecord attr_writer :delay_processing def delay_processing? - @delay_processing + @delay_processing && larger_media_format? end def delay_processing_for_attachment?(attachment_name) - @delay_processing && attachment_name == :file + delay_processing? && attachment_name == :file end after_commit :enqueue_processing, on: :create From 6804228fdfab70b25eab300d0ce16d4321f947a8 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 1 Nov 2022 16:03:51 +0100 Subject: [PATCH 229/500] Fix N+1 on mentions in PushUpdateWorker (#19637) --- app/workers/push_update_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index ae444cfde9..9f44c32b3b 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -6,7 +6,7 @@ class PushUpdateWorker def perform(account_id, status_id, timeline_id = nil, options = {}) @account = Account.find(account_id) - @status = Status.find(status_id) + @status = Status.includes(active_mentions: :account, reblog: { active_mentions: :account }).find(status_id) @timeline_id = timeline_id || "timeline:#{account.id}" @options = options.symbolize_keys From ae07cfb8688e862203f682feaed866ce0ac1774e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Nov 2022 16:26:25 +0100 Subject: [PATCH 230/500] Add support for HEIC uploads (#19618) --- app/models/media_attachment.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 81e8ef2dc2..c71b54eb8d 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -44,7 +44,7 @@ class MediaAttachment < ApplicationRecord MAX_VIDEO_MATRIX_LIMIT = 2_304_000 # 1920x1200px MAX_VIDEO_FRAME_RATE = 60 - IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp).freeze + IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp .heic .heif).freeze VIDEO_FILE_EXTENSIONS = %w(.webm .mp4 .m4v .mov).freeze AUDIO_FILE_EXTENSIONS = %w(.ogg .oga .mp3 .wav .flac .opus .aac .m4a .3gp .wma).freeze @@ -55,7 +55,8 @@ class MediaAttachment < ApplicationRecord small ).freeze - IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/webp).freeze + IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/heic image/heif image/webp).freeze + IMAGE_CONVERTIBLE_MIME_TYPES = %w(image/heic image/heif).freeze VIDEO_MIME_TYPES = %w(video/webm video/mp4 video/quicktime video/ogg).freeze VIDEO_CONVERTIBLE_MIME_TYPES = %w(video/webm video/quicktime).freeze AUDIO_MIME_TYPES = %w(audio/wave audio/wav audio/x-wav audio/x-pn-wave audio/vnd.wave audio/ogg audio/vorbis audio/mpeg audio/mp3 audio/webm audio/flac audio/aac audio/m4a audio/x-m4a audio/mp4 audio/3gpp video/x-ms-asf).freeze @@ -78,6 +79,16 @@ class MediaAttachment < ApplicationRecord }.freeze, }.freeze + IMAGE_CONVERTED_STYLES = { + original: { + format: 'jpeg', + }.merge(IMAGE_STYLES[:original]).freeze, + + small: { + format: 'jpeg', + }.merge(IMAGE_STYLES[:small]).freeze, + }.freeze + VIDEO_FORMAT = { format: 'mp4', content_type: 'video/mp4', @@ -277,6 +288,8 @@ class MediaAttachment < ApplicationRecord def file_styles(attachment) if attachment.instance.file_content_type == 'image/gif' || VIDEO_CONVERTIBLE_MIME_TYPES.include?(attachment.instance.file_content_type) VIDEO_CONVERTED_STYLES + elsif IMAGE_CONVERTIBLE_MIME_TYPES.include?(attachment.instance.file_content_type) + IMAGE_CONVERTED_STYLES elsif IMAGE_MIME_TYPES.include?(attachment.instance.file_content_type) IMAGE_STYLES elsif VIDEO_MIME_TYPES.include?(attachment.instance.file_content_type) From 56eb1da0f5a794f0aa6cfb640d60e78252d4cb75 Mon Sep 17 00:00:00 2001 From: prplecake Date: Tue, 1 Nov 2022 12:06:07 -0500 Subject: [PATCH 231/500] Fix CharacterCount in vanilla UI (#1883) --- app/javascript/mastodon/initial_state.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index bb05dafdf7..a8a9de34d7 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -129,4 +129,7 @@ export const version = getMeta('version'); export const translationEnabled = getMeta('translation_enabled'); export const languages = initialState?.languages; +// Glitch-soc-specific settings +export const maxChars = (initialState && initialState.max_toot_chars) || 500; + export default initialState; From 0f5e6dd02b9434f66c2f19715b0f1318c5d721ed Mon Sep 17 00:00:00 2001 From: txt-file <44214237+txt-file@users.noreply.github.com> Date: Tue, 1 Nov 2022 22:08:41 +0100 Subject: [PATCH 232/500] Add support for AVIF uploads (#19647) --- app/models/media_attachment.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index c71b54eb8d..a6e090f4c8 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -44,7 +44,7 @@ class MediaAttachment < ApplicationRecord MAX_VIDEO_MATRIX_LIMIT = 2_304_000 # 1920x1200px MAX_VIDEO_FRAME_RATE = 60 - IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp .heic .heif).freeze + IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif .webp .heic .heif .avif).freeze VIDEO_FILE_EXTENSIONS = %w(.webm .mp4 .m4v .mov).freeze AUDIO_FILE_EXTENSIONS = %w(.ogg .oga .mp3 .wav .flac .opus .aac .m4a .3gp .wma).freeze @@ -55,7 +55,7 @@ class MediaAttachment < ApplicationRecord small ).freeze - IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/heic image/heif image/webp).freeze + IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif image/heic image/heif image/webp image/avif).freeze IMAGE_CONVERTIBLE_MIME_TYPES = %w(image/heic image/heif).freeze VIDEO_MIME_TYPES = %w(video/webm video/mp4 video/quicktime video/ogg).freeze VIDEO_CONVERTIBLE_MIME_TYPES = %w(video/webm video/quicktime).freeze From f359b15303e243b94c6923f789c5ae80330d5320 Mon Sep 17 00:00:00 2001 From: prplecake Date: Wed, 2 Nov 2022 03:20:47 -0500 Subject: [PATCH 233/500] Allow number of trending hashtags to be customizable (#1884) --- .env.production.sample | 4 ++++ app/controllers/api/v1/trends/tags_controller.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.env.production.sample b/.env.production.sample index 08247c19fe..da4c7fe4c8 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -279,6 +279,10 @@ MAX_POLL_OPTION_CHARS=100 # Only relevant when elasticsearch is installed # MAX_SEARCH_RESULTS=20 +# Maximum hashtags to display +# Customize the number of hashtags shown in 'Explore' +# MAX_TRENDING_TAGS=10 + # Maximum custom emoji file sizes # If undefined or smaller than MAX_EMOJI_SIZE, the value # of MAX_EMOJI_SIZE will be used for MAX_REMOTE_EMOJI_SIZE diff --git a/app/controllers/api/v1/trends/tags_controller.rb b/app/controllers/api/v1/trends/tags_controller.rb index 21adfa2a1f..885a4ad7e8 100644 --- a/app/controllers/api/v1/trends/tags_controller.rb +++ b/app/controllers/api/v1/trends/tags_controller.rb @@ -5,7 +5,7 @@ class Api::V1::Trends::TagsController < Api::BaseController after_action :insert_pagination_headers - DEFAULT_TAGS_LIMIT = 10 + DEFAULT_TAGS_LIMIT = (ENV['MAX_TRENDING_TAGS'] || 10).to_i def index render json: @tags, each_serializer: REST::TagSerializer, relationships: TagRelationshipsPresenter.new(@tags, current_user&.account_id) From cb27d8999798d96c17f84a705639fc59f9d12d14 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 16:34:47 +0100 Subject: [PATCH 234/500] Change migration to migrate admins to Owner role rather than Admin role (#19671) --- db/post_migrate/20220617202502_migrate_roles.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/db/post_migrate/20220617202502_migrate_roles.rb b/db/post_migrate/20220617202502_migrate_roles.rb index b7a7b22012..950699d9c9 100644 --- a/db/post_migrate/20220617202502_migrate_roles.rb +++ b/db/post_migrate/20220617202502_migrate_roles.rb @@ -9,18 +9,19 @@ class MigrateRoles < ActiveRecord::Migration[5.2] def up load Rails.root.join('db', 'seeds', '03_roles.rb') - admin_role = UserRole.find_by(name: 'Admin') + owner_role = UserRole.find_by(name: 'Owner') moderator_role = UserRole.find_by(name: 'Moderator') - User.where(admin: true).in_batches.update_all(role_id: admin_role.id) + User.where(admin: true).in_batches.update_all(role_id: owner_role.id) User.where(moderator: true).in_batches.update_all(role_id: moderator_role.id) end def down admin_role = UserRole.find_by(name: 'Admin') + owner_role = UserRole.find_by(name: 'Owner') moderator_role = UserRole.find_by(name: 'Moderator') - User.where(role_id: admin_role.id).in_batches.update_all(admin: true) if admin_role + User.where(role_id: [admin_role.id, owner_role.id]).in_batches.update_all(admin: true) if admin_role User.where(role_id: moderator_role.id).in_batches.update_all(moderator: true) if moderator_role end end From e91418436a17e13e09c2ad2a9eff13ce7e80946e Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 16:35:21 +0100 Subject: [PATCH 235/500] Fix mastodon:setup not setting the admin's role properly (#19670) * Fix mastodon:setup not setting the admin's role properly * Set contact username when creating admin account in mastodon:setup --- lib/tasks/mastodon.rake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 0ccfc9f29f..80e1dcf520 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -433,9 +433,12 @@ namespace :mastodon do password = SecureRandom.hex(16) - user = User.new(admin: true, email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_invite_request_check: true) + owner_role = UserRole.find_by(name: 'Owner') + user = User.new(email: email, password: password, confirmed_at: Time.now.utc, account_attributes: { username: username }, bypass_invite_request_check: true, role: owner_role) user.save(validate: false) + Setting.site_contact_username = username + prompt.ok "You can login with the password: #{password}" prompt.warn 'You can change your password once you login.' end From e0eb39d41b05115df973d5a9676b67a9309d4ff9 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 16:38:23 +0100 Subject: [PATCH 236/500] Fix bookmark import stopping at the first failure (#19669) Fixes #19389 --- app/services/import_service.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/services/import_service.rb b/app/services/import_service.rb index 676c37bde4..ece5b9ef04 100644 --- a/app/services/import_service.rb +++ b/app/services/import_service.rb @@ -112,6 +112,11 @@ class ImportService < BaseService next if status.nil? && ActivityPub::TagManager.instance.local_uri?(uri) status || ActivityPub::FetchRemoteStatusService.new.call(uri) + rescue HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::UnexpectedResponseError + nil + rescue StandardError => e + Rails.logger.warn "Unexpected error when importing bookmark: #{e}" + nil end account_ids = statuses.map(&:account_id) From 74d40c7d8fac3ccc263af29c622f4481e18e8c59 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 18:09:39 +0100 Subject: [PATCH 237/500] Fix edits not being immediately reflected (#19673) Fixes #19546 --- app/javascript/mastodon/actions/compose.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index e29b88a50f..a9b7efc4a3 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -7,7 +7,7 @@ import { tagHistory } from 'mastodon/settings'; import resizeImage from 'mastodon/utils/resize_image'; import { showAlert, showAlertForError } from './alerts'; import { useEmoji } from './emojis'; -import { importFetchedAccounts } from './importer'; +import { importFetchedAccounts, importFetchedStatus } from './importer'; import { openModal } from './modal'; import { updateTimeline } from './timelines'; @@ -194,6 +194,10 @@ export function submitCompose(routerHistory) { } }; + if (statusId) { + dispatch(importFetchedStatus({ ...response.data })); + } + if (statusId === null && response.data.visibility !== 'direct') { insertIfOnline('home'); } From 125322718bfe983e94937f5d127003d47a138313 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 18:50:21 +0100 Subject: [PATCH 238/500] Fix inaccurate admin log entry for re-sending confirmation e-mails (#19674) Fixes #19593 --- app/controllers/admin/confirmations_controller.rb | 2 +- app/models/admin/action_log_filter.rb | 1 + config/locales/en.yml | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/confirmations_controller.rb b/app/controllers/admin/confirmations_controller.rb index efe7dcbd4b..6f4e426797 100644 --- a/app/controllers/admin/confirmations_controller.rb +++ b/app/controllers/admin/confirmations_controller.rb @@ -17,7 +17,7 @@ module Admin @user.resend_confirmation_instructions - log_action :confirm, @user + log_action :resend, @user flash[:notice] = I18n.t('admin.accounts.resend_confirmation.success') redirect_to admin_accounts_path diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index c7a7e1a4c3..edb391e2e8 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -47,6 +47,7 @@ class Admin::ActionLogFilter promote_user: { target_type: 'User', action: 'promote' }.freeze, remove_avatar_user: { target_type: 'User', action: 'remove_avatar' }.freeze, reopen_report: { target_type: 'Report', action: 'reopen' }.freeze, + resend_user: { target_type: 'User', action: 'resend' }.freeze, reset_password_user: { target_type: 'User', action: 'reset_password' }.freeze, resolve_report: { target_type: 'Report', action: 'resolve' }.freeze, sensitive_account: { target_type: 'Account', action: 'sensitive' }.freeze, diff --git a/config/locales/en.yml b/config/locales/en.yml index 547b19f074..ce8dea65b3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -207,6 +207,7 @@ en: reject_user: Reject User remove_avatar_user: Remove Avatar reopen_report: Reopen Report + resend_user: Resend Confirmation Mail reset_password_user: Reset Password resolve_report: Resolve Report sensitive_account: Force-Sensitive Account @@ -265,6 +266,7 @@ en: reject_user_html: "%{name} rejected sign-up from %{target}" remove_avatar_user_html: "%{name} removed %{target}'s avatar" reopen_report_html: "%{name} reopened report %{target}" + resend_user_html: "%{name} resent confirmation e-mail for %{target}" reset_password_user_html: "%{name} reset password of user %{target}" resolve_report_html: "%{name} resolved report %{target}" sensitive_account_html: "%{name} marked %{target}'s media as sensitive" From cbb440bbc2de7c805f687c886b32ab7dbafde07f Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Nov 2022 16:05:39 +0100 Subject: [PATCH 239/500] Fix being unable to withdraw follow request when confirmation modal is disabled (#19687) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix being unable to withdraw follow request when unfollow confirmation modal is disabled Fixes #19569 * Fix “unfollow” being inadequately used for withdrawing follow requests from account card --- .../containers/header_container.js | 2 ++ .../directory/components/account_card.js | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.js index 62e59939c5..1d09cd1efc 100644 --- a/app/javascript/mastodon/features/account_timeline/containers/header_container.js +++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.js @@ -60,6 +60,8 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ confirm: intl.formatMessage(messages.cancelFollowRequestConfirm), onConfirm: () => dispatch(unfollowAccount(account.get('id'))), })); + } else { + dispatch(unfollowAccount(account.get('id'))); } } else { dispatch(followAccount(account.get('id'))); diff --git a/app/javascript/mastodon/features/directory/components/account_card.js b/app/javascript/mastodon/features/directory/components/account_card.js index 7c675a1471..e7eeb22548 100644 --- a/app/javascript/mastodon/features/directory/components/account_card.js +++ b/app/javascript/mastodon/features/directory/components/account_card.js @@ -24,6 +24,7 @@ const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, follow: { id: 'account.follow', defaultMessage: 'Follow' }, cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Withdraw follow request' }, + cancelFollowRequestConfirm: { id: 'confirmations.cancel_follow_request.confirm', defaultMessage: 'Withdraw request' }, requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' }, unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' }, @@ -43,10 +44,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch, { intl }) => ({ onFollow(account) { - if ( - account.getIn(['relationship', 'following']) || - account.getIn(['relationship', 'requested']) - ) { + if (account.getIn(['relationship', 'following'])) { if (unfollowModal) { dispatch( openModal('CONFIRM', { @@ -64,6 +62,16 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ } else { dispatch(unfollowAccount(account.get('id'))); } + } else if (account.getIn(['relationship', 'requested'])) { + if (unfollowModal) { + dispatch(openModal('CONFIRM', { + message: @{account.get('acct')} }} />, + confirm: intl.formatMessage(messages.cancelFollowRequestConfirm), + onConfirm: () => dispatch(unfollowAccount(account.get('id'))), + })); + } else { + dispatch(unfollowAccount(account.get('id'))); + } } else { dispatch(followAccount(account.get('id'))); } From 1dca08b76f25d15365127ded37202d783a50e298 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Nov 2022 16:06:42 +0100 Subject: [PATCH 240/500] Fix admin action logs page (#19649) * Add tests * Fix crash when trying to display orphaned action logs * Add migration for older admin action logs --- app/helpers/admin/action_logs_helper.rb | 20 ++- ...221101190723_backfill_admin_action_logs.rb | 150 ++++++++++++++++++ db/schema.rb | 2 +- lib/tasks/tests.rake | 51 +++++- .../admin/action_logs_controller_spec.rb | 13 ++ 5 files changed, 221 insertions(+), 15 deletions(-) create mode 100644 db/post_migrate/20221101190723_backfill_admin_action_logs.rb diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index fd1977ac53..215ecea0d7 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -4,15 +4,19 @@ module Admin::ActionLogsHelper def log_target(log) case log.target_type when 'Account' - link_to log.human_identifier, admin_account_path(log.target_id) + link_to (log.human_identifier.presence || I18n.t('admin.action_logs.deleted_account')), admin_account_path(log.target_id) when 'User' - link_to log.human_identifier, admin_account_path(log.route_param) + if log.route_param.present? + link_to log.human_identifier, admin_account_path(log.route_param) + else + I18n.t('admin.action_logs.deleted_account') + end when 'UserRole' link_to log.human_identifier, admin_roles_path(log.target_id) when 'Report' - link_to "##{log.human_identifier}", admin_report_path(log.target_id) + link_to "##{log.human_identifier.presence || log.target_id}", admin_report_path(log.target_id) when 'DomainBlock', 'DomainAllow', 'EmailDomainBlock', 'UnavailableDomain' - link_to log.human_identifier, "https://#{log.human_identifier}" + link_to log.human_identifier, "https://#{log.human_identifier.presence}" when 'Status' link_to log.human_identifier, log.permalink when 'AccountWarning' @@ -22,9 +26,13 @@ module Admin::ActionLogsHelper when 'IpBlock', 'Instance', 'CustomEmoji' log.human_identifier when 'CanonicalEmailBlock' - content_tag(:samp, log.human_identifier[0...7], title: log.human_identifier) + content_tag(:samp, (log.human_identifier.presence || '')[0...7], title: log.human_identifier) when 'Appeal' - link_to log.human_identifier, disputes_strike_path(log.route_param) + if log.route_param.present? + link_to log.human_identifier, disputes_strike_path(log.route_param.presence) + else + I18n.t('admin.action_logs.deleted_account') + end end end end diff --git a/db/post_migrate/20221101190723_backfill_admin_action_logs.rb b/db/post_migrate/20221101190723_backfill_admin_action_logs.rb new file mode 100644 index 0000000000..9a64d17150 --- /dev/null +++ b/db/post_migrate/20221101190723_backfill_admin_action_logs.rb @@ -0,0 +1,150 @@ +# frozen_string_literal: true + +class BackfillAdminActionLogs < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + class Account < ApplicationRecord + # Dummy class, to make migration possible across version changes + has_one :user, inverse_of: :account + + def local? + domain.nil? + end + + def acct + local? ? username : "#{username}@#{domain}" + end + end + + class User < ApplicationRecord + # Dummy class, to make migration possible across version changes + belongs_to :account + end + + class Status < ApplicationRecord + include RoutingHelper + + # Dummy class, to make migration possible across version changes + belongs_to :account + + def local? + attributes['local'] || attributes['uri'].nil? + end + + def uri + local? ? activity_account_status_url(account, self) : attributes['uri'] + end + end + + class DomainBlock < ApplicationRecord; end + class DomainAllow < ApplicationRecord; end + class EmailDomainBlock < ApplicationRecord; end + class UnavailableDomain < ApplicationRecord; end + + class AccountWarning < ApplicationRecord + # Dummy class, to make migration possible across version changes + belongs_to :account + end + + class Announcement < ApplicationRecord; end + class IpBlock < ApplicationRecord; end + class CustomEmoji < ApplicationRecord; end + class CanonicalEmailBlock < ApplicationRecord; end + + class Appeal < ApplicationRecord + # Dummy class, to make migration possible across version changes + belongs_to :account + end + + class AdminActionLog < ApplicationRecord + # Dummy class, to make migration possible across version changes + + # Cannot use usual polymorphic support because of namespacing issues + belongs_to :status, foreign_key: :target_id + belongs_to :account, foreign_key: :target_id + belongs_to :user, foreign_key: :user_id + belongs_to :domain_block, foreign_key: :target_id + belongs_to :domain_allow, foreign_key: :target_id + belongs_to :email_domain_block, foreign_key: :target_id + belongs_to :unavailable_domain, foreign_key: :target_id + belongs_to :account_warning, foreign_key: :target_id + belongs_to :announcement, foreign_key: :target_id + belongs_to :ip_block, foreign_key: :target_id + belongs_to :custom_emoji, foreign_key: :target_id + belongs_to :canonical_email_block, foreign_key: :target_id + belongs_to :appeal, foreign_key: :target_id + end + + def up + safety_assured do + AdminActionLog.includes(:account).where(target_type: 'Account', human_identifier: nil).find_each do |log| + next if log.account.nil? + log.update(human_identifier: log.account.acct) + end + + AdminActionLog.includes(user: :account).where(target_type: 'User', human_identifier: nil).find_each do |log| + next if log.user.nil? + log.update(human_identifier: log.user.account.acct, route_param: log.user.account_id) + end + + Admin::ActionLog.where(target_type: 'Report', human_identifier: nil).in_batches.update_all('human_identifier = target_id::text') + + AdminActionLog.includes(:domain_block).where(target_type: 'DomainBlock').find_each do |log| + next if log.domain_block.nil? + log.update(human_identifier: log.domain_block.domain) + end + + AdminActionLog.includes(:domain_allow).where(target_type: 'DomainAllow').find_each do |log| + next if log.domain_allow.nil? + log.update(human_identifier: log.domain_allow.domain) + end + + AdminActionLog.includes(:email_domain_block).where(target_type: 'EmailDomainBlock').find_each do |log| + next if log.email_domain_block.nil? + log.update(human_identifier: log.email_domain_block.domain) + end + + AdminActionLog.includes(:unavailable_domain).where(target_type: 'UnavailableDomain').find_each do |log| + next if log.unavailable_domain.nil? + log.update(human_identifier: log.unavailable_domain.domain) + end + + AdminActionLog.includes(status: :account).where(target_type: 'Status', human_identifier: nil).find_each do |log| + next if log.status.nil? + log.update(human_identifier: log.status.account.acct, permalink: log.status.uri) + end + + AdminActionLog.includes(account_warning: :account).where(target_type: 'AccountWarning', human_identifier: nil).find_each do |log| + next if log.account_warning.nil? + log.update(human_identifier: log.account_warning.account.acct) + end + + AdminActionLog.includes(:announcement).where(target_type: 'Announcement', human_identifier: nil).find_each do |log| + next if log.announcement.nil? + log.update(human_identifier: log.announcement.text) + end + + AdminActionLog.includes(:ip_block).where(target_type: 'IpBlock', human_identifier: nil).find_each do |log| + next if log.ip_block.nil? + log.update(human_identifier: "#{log.ip_block.ip}/#{log.ip_block.ip.prefix}") + end + + AdminActionLog.includes(:custom_emoji).where(target_type: 'CustomEmoji', human_identifier: nil).find_each do |log| + next if log.custom_emoji.nil? + log.update(human_identifier: log.custom_emoji.shortcode) + end + + AdminActionLog.includes(:canonical_email_block).where(target_type: 'CanonicalEmailBlock', human_identifier: nil).find_each do |log| + next if log.canonical_email_block.nil? + log.update(human_identifier: log.canonical_email_block.canonical_email_hash) + end + + AdminActionLog.includes(appeal: :account).where(target_type: 'Appeal', human_identifier: nil).find_each do |log| + next if log.appeal.nil? + log.update(human_identifier: log.appeal.account.acct, route_param: log.appeal.account_warning_id) + end + end + end + + def down; end +end diff --git a/db/schema.rb b/db/schema.rb index d7e40b133d..12ec37c111 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_10_25_171544) do +ActiveRecord::Schema.define(version: 2022_11_01_190723) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake index 65bff6a8e8..96d2f71127 100644 --- a/lib/tasks/tests.rake +++ b/lib/tasks/tests.rake @@ -53,6 +53,41 @@ namespace :tests do VALUES (1, 2, 'test', '{ "home", "public" }', true, true, now(), now()), (2, 2, 'take', '{ "home" }', false, false, now(), now()); + + -- Orphaned admin action logs + + INSERT INTO "admin_action_logs" + (account_id, action, target_type, target_id, created_at, updated_at) + VALUES + (1, 'destroy', 'Account', 1312, now(), now()), + (1, 'destroy', 'User', 1312, now(), now()), + (1, 'destroy', 'Report', 1312, now(), now()), + (1, 'destroy', 'DomainBlock', 1312, now(), now()), + (1, 'destroy', 'EmailDomainBlock', 1312, now(), now()), + (1, 'destroy', 'Status', 1312, now(), now()), + (1, 'destroy', 'CustomEmoji', 1312, now(), now()); + + -- Admin action logs with linked objects + + INSERT INTO "domain_blocks" + (id, domain, created_at, updated_at) + VALUES + (1, 'example.org', now(), now()); + + INSERT INTO "email_domain_blocks" + (id, domain, created_at, updated_at) + VALUES + (1, 'example.org', now(), now()); + + INSERT INTO "admin_action_logs" + (account_id, action, target_type, target_id, created_at, updated_at) + VALUES + (1, 'destroy', 'Account', 1, now(), now()), + (1, 'destroy', 'User', 1, now(), now()), + (1, 'destroy', 'DomainBlock', 1312, now(), now()), + (1, 'destroy', 'EmailDomainBlock', 1312, now(), now()), + (1, 'destroy', 'Status', 1, now(), now()), + (1, 'destroy', 'CustomEmoji', 3, now(), now()); SQL end @@ -207,18 +242,18 @@ namespace :tests do -- custom emoji INSERT INTO "custom_emojis" - (shortcode, created_at, updated_at) + (id, shortcode, created_at, updated_at) VALUES - ('test', now(), now()), - ('Test', now(), now()), - ('blobcat', now(), now()); + (1, 'test', now(), now()), + (2, 'Test', now(), now()), + (3, 'blobcat', now(), now()); INSERT INTO "custom_emojis" - (shortcode, domain, uri, created_at, updated_at) + (id, shortcode, domain, uri, created_at, updated_at) VALUES - ('blobcat', 'remote.org', 'https://remote.org/emoji/blobcat', now(), now()), - ('blobcat', 'Remote.org', 'https://remote.org/emoji/blobcat', now(), now()), - ('Blobcat', 'remote.org', 'https://remote.org/emoji/Blobcat', now(), now()); + (4, 'blobcat', 'remote.org', 'https://remote.org/emoji/blobcat', now(), now()), + (5, 'blobcat', 'Remote.org', 'https://remote.org/emoji/blobcat', now(), now()), + (6, 'Blobcat', 'remote.org', 'https://remote.org/emoji/Blobcat', now(), now()); -- favourites diff --git a/spec/controllers/admin/action_logs_controller_spec.rb b/spec/controllers/admin/action_logs_controller_spec.rb index c1957258fa..7cd8cdf462 100644 --- a/spec/controllers/admin/action_logs_controller_spec.rb +++ b/spec/controllers/admin/action_logs_controller_spec.rb @@ -3,6 +3,19 @@ require 'rails_helper' describe Admin::ActionLogsController, type: :controller do + render_views + + # Action logs typically cause issues when their targets are not in the database + let!(:account) { Fabricate(:account) } + + let!(:orphaned_logs) do + %w( + Account User UserRole Report DomainBlock DomainAllow + EmailDomainBlock UnavailableDomain Status AccountWarning + Announcement IpBlock Instance CustomEmoji CanonicalEmailBlock Appeal + ).map { |type| Admin::ActionLog.new(account: account, action: 'destroy', target_type: type, target_id: 1312).save! } + end + describe 'GET #index' do it 'returns 200' do sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) From 9387beb3b381e3f164eb538f178d9b543b7fcf40 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Nov 2022 23:12:08 +0100 Subject: [PATCH 241/500] Change flaky AccountSearchService test (#19650) --- spec/services/account_search_service_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/services/account_search_service_spec.rb b/spec/services/account_search_service_spec.rb index 5b7182586c..81cbc175e5 100644 --- a/spec/services/account_search_service_spec.rb +++ b/spec/services/account_search_service_spec.rb @@ -45,7 +45,6 @@ describe AccountSearchService, type: :service do results = subject.call('e@example.com', nil, limit: 2) - expect(results.size).to eq 2 expect(results).to eq([exact, remote]).or eq([exact, remote_too]) end end From 053dac2afa7a1da65204d336f19794ae8db23f27 Mon Sep 17 00:00:00 2001 From: SJang1 Date: Fri, 4 Nov 2022 08:13:07 +0900 Subject: [PATCH 242/500] Remove meta tag for official iOS app (#19656) --- app/views/layouts/application.html.haml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index fb5ba5cb0f..7b9434d6f3 100755 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -23,7 +23,6 @@ %link{ rel: 'manifest', href: manifest_path(format: :json) }/ %meta{ name: 'theme-color', content: '#191b22' }/ %meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/ - %meta{ name: 'apple-itunes-app', content: 'app-id=1571998974' }/ %title= content_for?(:page_title) ? safe_join([yield(:page_title).chomp.html_safe, title], ' - ') : title From 7c8e2b9859f2e206110accb74d19ec4591d79780 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 00:14:39 +0100 Subject: [PATCH 243/500] Fix handling of duplicate and out-of-order notifications in WebUI (#19693) * Fix handling of duplicate notifications from streaming server * Fix handling of duplicate and out-of-order notifications when polling/expanding Fixes #19615 --- .../mastodon/reducers/notifications.js | 87 +++++++++++++++---- 1 file changed, 69 insertions(+), 18 deletions(-) diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index eb34edb633..eb5368198c 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -58,6 +58,11 @@ const notificationToMap = notification => ImmutableMap({ const normalizeNotification = (state, notification, usePendingItems) => { const top = state.get('top'); + // Under currently unknown conditions, the client may receive duplicates from the server + if (state.get('pendingItems').some((item) => item?.get('id') === notification.id) || state.get('items').some((item) => item?.get('id') === notification.id)) { + return state; + } + if (usePendingItems || !state.get('pendingItems').isEmpty()) { return state.update('pendingItems', list => list.unshift(notificationToMap(notification))).update('unread', unread => unread + 1); } @@ -77,28 +82,74 @@ const normalizeNotification = (state, notification, usePendingItems) => { }); }; -const expandNormalizedNotifications = (state, notifications, next, isLoadingRecent, usePendingItems) => { - const lastReadId = state.get('lastReadId'); - let items = ImmutableList(); +const expandNormalizedNotifications = (state, notifications, next, isLoadingMore, isLoadingRecent, usePendingItems) => { + // This method is pretty tricky because: + // - existing notifications might be out of order + // - the existing notifications may have gaps, most often explicitly noted with a `null` item + // - ideally, we don't want it to reorder existing items + // - `notifications` may include items that are already included + // - this function can be called either to fill in a gap, or load newer items - notifications.forEach((n, i) => { - items = items.set(i, notificationToMap(n)); - }); + const lastReadId = state.get('lastReadId'); + const newItems = ImmutableList(notifications.map(notificationToMap)); return state.withMutations(mutable => { - if (!items.isEmpty()) { + if (!newItems.isEmpty()) { usePendingItems = isLoadingRecent && (usePendingItems || !mutable.get('pendingItems').isEmpty()); - mutable.update(usePendingItems ? 'pendingItems' : 'items', list => { - const lastIndex = 1 + list.findLastIndex( - item => item !== null && (compareId(item.get('id'), items.last().get('id')) > 0 || item.get('id') === items.last().get('id')), - ); - - const firstIndex = 1 + list.take(lastIndex).findLastIndex( - item => item !== null && compareId(item.get('id'), items.first().get('id')) > 0, + mutable.update(usePendingItems ? 'pendingItems' : 'items', oldItems => { + // If called to poll *new* notifications, we just need to add them on top without duplicates + if (isLoadingRecent) { + const idsToCheck = oldItems.map(item => item?.get('id')).toSet(); + const insertedItems = newItems.filterNot(item => idsToCheck.includes(item.get('id'))); + return insertedItems.concat(oldItems); + } + + // If called to expand more (presumably older than any known to the WebUI), we just have to + // add them to the bottom without duplicates + if (isLoadingMore) { + const idsToCheck = oldItems.map(item => item?.get('id')).toSet(); + const insertedItems = newItems.filterNot(item => idsToCheck.includes(item.get('id'))); + return oldItems.concat(insertedItems); + } + + // Now this gets tricky, as we don't necessarily know for sure where the gap to fill is, + // and some items in the timeline may not be properly ordered. + + // However, we know that `newItems.last()` is the oldest item that was requested and that + // there is no “hole” between `newItems.last()` and `newItems.first()`. + + // First, find the furthest (if properly sorted, oldest) item in the notifications that is + // newer than the oldest fetched one, as it's most likely that it delimits the gap. + // Start the gap *after* that item. + const lastIndex = oldItems.findLastIndex(item => item !== null && compareId(item.get('id'), newItems.last().get('id')) >= 0) + 1; + + // Then, try to find the furthest (if properly sorted, oldest) item in the notifications that + // is newer than the most recent fetched one, as it delimits a section comprised of only + // items older or within `newItems` (or that were deleted from the server, so should be removed + // anyway). + // Stop the gap *after* that item. + const firstIndex = oldItems.take(lastIndex).findLastIndex(item => item !== null && compareId(item.get('id'), newItems.first().get('id')) > 0) + 1; + + // At this point: + // - no `oldItems` after `firstIndex` is newer than any of the `newItems` + // - all `oldItems` after `lastIndex` are older than every of the `newItems` + // - it is possible for items in the replaced slice to be older than every `newItems` + // - it is possible for items before `firstIndex` to be in the `newItems` range + // Therefore: + // - to avoid losing items, items from the replaced slice that are older than `newItems` + // should be added in the back. + // - to avoid duplicates, `newItems` should be checked the first `firstIndex` items of + // `oldItems` + const idsToCheck = oldItems.take(firstIndex).map(item => item?.get('id')).toSet(); + const insertedItems = newItems.filterNot(item => idsToCheck.includes(item.get('id'))); + const olderItems = oldItems.slice(firstIndex, lastIndex).filter(item => item !== null && compareId(item.get('id'), newItems.last().get('id')) < 0); + + return oldItems.take(firstIndex).concat( + insertedItems, + olderItems, + oldItems.skip(lastIndex), ); - - return list.take(firstIndex).concat(items, list.skip(lastIndex)); }); } @@ -109,7 +160,7 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece if (shouldCountUnreadNotifications(state)) { mutable.set('unread', mutable.get('pendingItems').count(item => item !== null) + mutable.get('items').count(item => item && compareId(item.get('id'), lastReadId) > 0)); } else { - const mostRecent = items.find(item => item !== null); + const mostRecent = newItems.find(item => item !== null); if (mostRecent && compareId(lastReadId, mostRecent.get('id')) < 0) { mutable.set('lastReadId', mostRecent.get('id')); } @@ -224,7 +275,7 @@ export default function notifications(state = initialState, action) { case NOTIFICATIONS_UPDATE: return normalizeNotification(state, action.notification, action.usePendingItems); case NOTIFICATIONS_EXPAND_SUCCESS: - return expandNormalizedNotifications(state, action.notifications, action.next, action.isLoadingRecent, action.usePendingItems); + return expandNormalizedNotifications(state, action.notifications, action.next, action.isLoadingMore, action.isLoadingRecent, action.usePendingItems); case ACCOUNT_BLOCK_SUCCESS: return filterNotifications(state, [action.relationship.id]); case ACCOUNT_MUTE_SUCCESS: From 5825402ed57e42dc8093133aaf2815fd2008c185 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:00 +0100 Subject: [PATCH 244/500] Fix design of verified links in web UI (#19709) --- .../features/account/components/header.js | 4 +-- .../styles/mastodon/components.scss | 25 +++++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index e39f0158ea..8d3b3c5e64 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -337,10 +337,10 @@ class Header extends ImmutablePureComponent { {fields.map((pair, i) => ( -

      +
      -
      +
      {pair.get('verified_at') && }
      diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f60ad6050d..f1622dbb56 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7143,12 +7143,27 @@ noscript { color: lighten($ui-highlight-color, 8%); } - dl:first-child .verified { - border-radius: 0 4px 0 0; - } + .verified { + border: 1px solid rgba($valid-value-color, 0.5); + + &:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } + + &:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + } + + dt, + dd { + color: $valid-value-color; + } - .verified a { - color: $valid-value-color; + a { + color: $valid-value-color; + } } } } From 1c3192df6bf48eb4c3613f2a8744c809f6eeeec0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:14 +0100 Subject: [PATCH 245/500] Fix wrong colors in the high-contrast theme (#19708) --- app/javascript/styles/contrast/diff.scss | 74 ++++++++++--------- app/javascript/styles/contrast/variables.scss | 4 +- 2 files changed, 41 insertions(+), 37 deletions(-) diff --git a/app/javascript/styles/contrast/diff.scss b/app/javascript/styles/contrast/diff.scss index 27eb837df0..4fa1a03616 100644 --- a/app/javascript/styles/contrast/diff.scss +++ b/app/javascript/styles/contrast/diff.scss @@ -1,4 +1,3 @@ -// components.scss .compose-form { .compose-form__modifiers { .compose-form__upload { @@ -14,61 +13,66 @@ } .status__content a, -.reply-indicator__content a { - color: lighten($ui-highlight-color, 12%); +.link-footer a, +.reply-indicator__content a, +.status__content__read-more-button { text-decoration: underline; - &.mention { + &:hover, + &:focus, + &:active { text-decoration: none; } - &.mention span { - text-decoration: underline; + &.mention { + text-decoration: none; + + span { + text-decoration: underline; + } &:hover, &:focus, &:active { - text-decoration: none; + span { + text-decoration: none; + } } } +} - &:hover, - &:focus, - &:active { - text-decoration: none; - } +.status__content a { + color: $highlight-text-color; +} - &.status__content__spoiler-link { - color: $secondary-text-color; - text-decoration: none; - } +.nothing-here { + color: $darker-text-color; } -.status__content__read-more-button { - text-decoration: underline; +.compose-form__poll-wrapper .button.button-secondary, +.compose-form .autosuggest-textarea__textarea::placeholder, +.compose-form .spoiler-input__input::placeholder, +.report-dialog-modal__textarea::placeholder, +.language-dropdown__dropdown__results__item__common-name, +.compose-form .icon-button { + color: $inverted-text-color; +} - &:hover, - &:focus, - &:active { - text-decoration: none; - } +.text-icon-button.active { + color: $ui-highlight-color; } -.getting-started__footer a { - text-decoration: underline; +.language-dropdown__dropdown__results__item.active { + background: $ui-highlight-color; + font-weight: 500; +} + +.link-button:disabled { + cursor: not-allowed; &:hover, &:focus, &:active { - text-decoration: none; + text-decoration: none !important; } } - -.nothing-here { - color: $darker-text-color; -} - -.compose-form .autosuggest-textarea__textarea::placeholder, -.compose-form .spoiler-input__input::placeholder { - color: $inverted-text-color; -} diff --git a/app/javascript/styles/contrast/variables.scss b/app/javascript/styles/contrast/variables.scss index 9edfd6d8d7..e38d24b271 100644 --- a/app/javascript/styles/contrast/variables.scss +++ b/app/javascript/styles/contrast/variables.scss @@ -14,8 +14,8 @@ $ui-highlight-color: $classic-highlight-color !default; $darker-text-color: lighten($ui-primary-color, 20%) !default; $dark-text-color: lighten($ui-primary-color, 12%) !default; $secondary-text-color: lighten($ui-secondary-color, 6%) !default; -$highlight-text-color: lighten($ui-highlight-color, 8%) !default; -$action-button-color: #8d9ac2; +$highlight-text-color: lighten($ui-highlight-color, 10%) !default; +$action-button-color: lighten($ui-base-color, 50%); $inverted-text-color: $black !default; $lighter-text-color: darken($ui-base-color, 6%) !default; From bfafb114a2135b1f21ba7e6d54ee13e8da75b629 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:25 +0100 Subject: [PATCH 246/500] Fix showing profile's featured tags on individual statuses (#19712) --- app/javascript/mastodon/components/navigation_portal.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/navigation_portal.js b/app/javascript/mastodon/components/navigation_portal.js index b2d054a3b6..45407be43e 100644 --- a/app/javascript/mastodon/components/navigation_portal.js +++ b/app/javascript/mastodon/components/navigation_portal.js @@ -21,7 +21,12 @@ class NavigationPortal extends React.PureComponent { render () { return ( - + + + + + + ); From 139ea4c981f563e51d80ec3ec407d6265e29cb70 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:37 +0100 Subject: [PATCH 247/500] Fix limited account hint referencing "your" server when logged out (#19711) --- .../account_timeline/components/limited_account_hint.js | 3 ++- app/javascript/mastodon/locales/en.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js b/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js index 6b025596ca..80b9676423 100644 --- a/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js +++ b/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js @@ -4,6 +4,7 @@ import { connect } from 'react-redux'; import { revealAccount } from 'mastodon/actions/accounts'; import { FormattedMessage } from 'react-intl'; import Button from 'mastodon/components/button'; +import { domain } from 'mastodon/initial_state'; const mapDispatchToProps = (dispatch, { accountId }) => ({ @@ -26,7 +27,7 @@ class LimitedAccountHint extends React.PureComponent { return (
      -

      +

      ); diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 7d5c192057..fd504fa045 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", From 20aa8881dc98264e5875fa37fc2dbf18e3f2baac Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:32:26 +0100 Subject: [PATCH 248/500] Fix colors in light theme (#19714) --- .../styles/mastodon-light/diff.scss | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 20e973b8b3..d928a55ed5 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -41,7 +41,8 @@ html { } .about__meta, -.about__section__title { +.about__section__title, +.interaction-modal { background: $white; border: 1px solid lighten($ui-base-color, 8%); } @@ -414,6 +415,7 @@ html { .icon-with-badge__badge { border-color: $white; + color: $white; } .report-modal__comment { @@ -430,10 +432,36 @@ html { border-top: 0; } -.focal-point__preview strong { +.dashboard__quick-access, +.focal-point__preview strong, +.admin-wrapper .content__heading__tabs a.selected { color: $white; } +.button.button-tertiary { + &:hover, + &:focus, + &:active { + color: $white; + } +} + +.button.button-secondary { + border-color: $darker-text-color; + color: $darker-text-color; + + &:hover, + &:focus, + &:active { + border-color: darken($darker-text-color, 8%); + color: darken($darker-text-color, 8%); + } +} + +.flash-message.warning { + color: lighten($gold-star, 16%); +} + .boost-modal__action-bar, .confirmation-modal__action-bar, .mute-modal__action-bar, @@ -640,6 +668,16 @@ html { } } +.reply-indicator { + background: transparent; + border: 1px solid lighten($ui-base-color, 8%); +} + +.dismissable-banner { + border-left: 1px solid lighten($ui-base-color, 8%); + border-right: 1px solid lighten($ui-base-color, 8%); +} + .status__content, .reply-indicator__content { a { From 4fb0aae636316e79b3c13c4000fda7765fa9474f Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 13:19:12 +0100 Subject: [PATCH 249/500] Change mentions of blocked users to not be processed (#19725) Fixes #19698 --- app/services/process_mentions_service.rb | 10 ++ .../services/process_mentions_service_spec.rb | 100 +++++++++++------- 2 files changed, 74 insertions(+), 36 deletions(-) diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb index c9c158af1c..b117db8c25 100644 --- a/app/services/process_mentions_service.rb +++ b/app/services/process_mentions_service.rb @@ -66,6 +66,16 @@ class ProcessMentionsService < BaseService end def assign_mentions! + # Make sure we never mention blocked accounts + unless @current_mentions.empty? + mentioned_domains = @current_mentions.map { |m| m.account.domain }.compact.uniq + blocked_domains = Set.new(mentioned_domains.empty? ? [] : AccountDomainBlock.where(account_id: @status.account_id, domain: mentioned_domains)) + mentioned_account_ids = @current_mentions.map(&:account_id) + blocked_account_ids = Set.new(@status.account.block_relationships.where(target_account_id: mentioned_account_ids).pluck(:target_account_id)) + + @current_mentions.select! { |mention| !(blocked_account_ids.include?(mention.account_id) || blocked_domains.include?(mention.account.domain)) } + end + @current_mentions.each do |mention| mention.save if mention.new_record? end diff --git a/spec/services/process_mentions_service_spec.rb b/spec/services/process_mentions_service_spec.rb index 89b265e9a0..5b9d17a4c2 100644 --- a/spec/services/process_mentions_service_spec.rb +++ b/spec/services/process_mentions_service_spec.rb @@ -1,43 +1,85 @@ require 'rails_helper' RSpec.describe ProcessMentionsService, type: :service do - let(:account) { Fabricate(:account, username: 'alice') } - let(:visibility) { :public } - let(:status) { Fabricate(:status, account: account, text: "Hello @#{remote_user.acct}", visibility: visibility) } + let(:account) { Fabricate(:account, username: 'alice') } subject { ProcessMentionsService.new } - context 'ActivityPub' do - context do - let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') } + context 'when mentions contain blocked accounts' do + let(:non_blocked_account) { Fabricate(:account) } + let(:individually_blocked_account) { Fabricate(:account) } + let(:domain_blocked_account) { Fabricate(:account, domain: 'evil.com') } + let(:status) { Fabricate(:status, account: account, text: "Hello @#{non_blocked_account.acct} @#{individually_blocked_account.acct} @#{domain_blocked_account.acct}", visibility: :public) } - before do - subject.call(status) - end + before do + account.block!(individually_blocked_account) + account.domain_blocks.create!(domain: domain_blocked_account.domain) - it 'creates a mention' do - expect(remote_user.mentions.where(status: status).count).to eq 1 - end + subject.call(status) + end + + it 'creates a mention to the non-blocked account' do + expect(non_blocked_account.mentions.where(status: status).count).to eq 1 end - context 'with an IDN domain' do - let!(:remote_user) { Fabricate(:account, username: 'sneak', protocol: :activitypub, domain: 'xn--hresiar-mxa.ch', inbox_url: 'http://example.com/inbox') } - let!(:status) { Fabricate(:status, account: account, text: "Hello @sneak@hæresiar.ch") } + it 'does not create a mention to the individually blocked account' do + expect(individually_blocked_account.mentions.where(status: status).count).to eq 0 + end - before do - subject.call(status) + it 'does not create a mention to the domain-blocked account' do + expect(domain_blocked_account.mentions.where(status: status).count).to eq 0 + end + end + + context 'resolving a mention to a remote account' do + let(:status) { Fabricate(:status, account: account, text: "Hello @#{remote_user.acct}", visibility: :public) } + + context 'ActivityPub' do + context do + let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') } + + before do + subject.call(status) + end + + it 'creates a mention' do + expect(remote_user.mentions.where(status: status).count).to eq 1 + end end - it 'creates a mention' do - expect(remote_user.mentions.where(status: status).count).to eq 1 + context 'with an IDN domain' do + let!(:remote_user) { Fabricate(:account, username: 'sneak', protocol: :activitypub, domain: 'xn--hresiar-mxa.ch', inbox_url: 'http://example.com/inbox') } + let!(:status) { Fabricate(:status, account: account, text: "Hello @sneak@hæresiar.ch") } + + before do + subject.call(status) + end + + it 'creates a mention' do + expect(remote_user.mentions.where(status: status).count).to eq 1 + end + end + + context 'with an IDN TLD' do + let!(:remote_user) { Fabricate(:account, username: 'foo', protocol: :activitypub, domain: 'xn--y9a3aq.xn--y9a3aq', inbox_url: 'http://example.com/inbox') } + let!(:status) { Fabricate(:status, account: account, text: "Hello @foo@հայ.հայ") } + + before do + subject.call(status) + end + + it 'creates a mention' do + expect(remote_user.mentions.where(status: status).count).to eq 1 + end end end - context 'with an IDN TLD' do - let!(:remote_user) { Fabricate(:account, username: 'foo', protocol: :activitypub, domain: 'xn--y9a3aq.xn--y9a3aq', inbox_url: 'http://example.com/inbox') } - let!(:status) { Fabricate(:status, account: account, text: "Hello @foo@հայ.հայ") } + context 'Temporarily-unreachable ActivityPub user' do + let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox', last_webfingered_at: nil) } before do + stub_request(:get, "https://example.com/.well-known/host-meta").to_return(status: 404) + stub_request(:get, "https://example.com/.well-known/webfinger?resource=acct:remote_user@example.com").to_return(status: 500) subject.call(status) end @@ -46,18 +88,4 @@ RSpec.describe ProcessMentionsService, type: :service do end end end - - context 'Temporarily-unreachable ActivityPub user' do - let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox', last_webfingered_at: nil) } - - before do - stub_request(:get, "https://example.com/.well-known/host-meta").to_return(status: 404) - stub_request(:get, "https://example.com/.well-known/webfinger?resource=acct:remote_user@example.com").to_return(status: 500) - subject.call(status) - end - - it 'creates a mention' do - expect(remote_user.mentions.where(status: status).count).to eq 1 - end - end end From b8f6f039563044764336d4c62d87b1d5442d7c8b Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 13:19:57 +0100 Subject: [PATCH 250/500] Fix /users/:username/statuses/:id leading to a soft 404 in web app (#19724) --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.rb b/config/routes.rb index f24d539bae..800db96c80 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -81,6 +81,7 @@ Rails.application.routes.draw do } get '/users/:username', to: redirect('/@%{username}'), constraints: lambda { |req| req.format.nil? || req.format.html? } + get '/users/:username/statuses/:id', to: redirect('/@%{username}/%{id}'), constraints: lambda { |req| req.format.nil? || req.format.html? } get '/authorize_follow', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" } resources :accounts, path: 'users', only: [:show], param: :username do From 5f9e47be34fcf42ff7fcd5668c7555d4a38e289a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 13:21:06 +0100 Subject: [PATCH 251/500] Add caching for payload serialization during fan-out (#19642) --- app/lib/inline_renderer.rb | 11 +++++ app/lib/status_cache_hydrator.rb | 47 +++++++++++++++++++++ app/services/fan_out_on_write_service.rb | 11 ++++- app/workers/push_update_worker.rb | 13 +++--- spec/lib/status_cache_hydrator_spec.rb | 54 ++++++++++++++++++++++++ 5 files changed, 129 insertions(+), 7 deletions(-) create mode 100644 app/lib/status_cache_hydrator.rb create mode 100644 spec/lib/status_cache_hydrator_spec.rb diff --git a/app/lib/inline_renderer.rb b/app/lib/inline_renderer.rb index b70814748d..4bb240b48b 100644 --- a/app/lib/inline_renderer.rb +++ b/app/lib/inline_renderer.rb @@ -11,6 +11,7 @@ class InlineRenderer case @template when :status serializer = REST::StatusSerializer + preload_associations_for_status when :notification serializer = REST::NotificationSerializer when :conversation @@ -35,6 +36,16 @@ class InlineRenderer private + def preload_associations_for_status + ActiveRecord::Associations::Preloader.new.preload(@object, { + active_mentions: :account, + + reblog: { + active_mentions: :account, + }, + }) + end + def current_user @current_account&.user end diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb new file mode 100644 index 0000000000..01e92b3855 --- /dev/null +++ b/app/lib/status_cache_hydrator.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +class StatusCacheHydrator + def initialize(status) + @status = status + end + + def hydrate(account_id) + # The cache of the serialized hash is generated by the fan-out-on-write service + payload = Rails.cache.fetch("fan-out/#{@status.id}") { InlineRenderer.render(@status, nil, :status) } + + # If we're delivering to the author who disabled the display of the application used to create the + # status, we need to hydrate the application, since it was not rendered for the basic payload + payload[:application] = ActiveModelSerializers::SerializableResource.new(@status.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:application].nil? && @status.account_id == account_id + + # We take advantage of the fact that some relationships can only occur with an original status, not + # the reblog that wraps it, so we can assume that some values are always false + if payload[:reblog] + payload[:favourited] = false + payload[:reblogged] = false + payload[:muted] = false + payload[:bookmarked] = false + payload[:pinned] = false + payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.reblog_of_id), @status.reblog).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } + + # If the reblogged status is being delivered to the author who disabled the display of the application + # used to create the status, we need to hydrate it here too + payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id + + payload[:reblog][:favourited] = Favourite.where(account_id: account_id, status_id: @status.reblog_of_id).exists? + payload[:reblog][:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.reblog_of_id).exists? + payload[:reblog][:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.reblog.conversation_id).exists? + payload[:reblog][:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.reblog_of_id).exists? + payload[:reblog][:pinned] = StatusPin.where(account_id: account_id, status_id: @status.reblog_of_id).exists? + payload[:reblog][:filtered] = payload[:filtered] + else + payload[:favourited] = Favourite.where(account_id: account_id, status_id: @status.id).exists? + payload[:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.id).exists? + payload[:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.conversation_id).exists? + payload[:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.id).exists? + payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? + payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.id), @status).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } + end + + payload + end +end diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index ce20a146e9..2554756a5d 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -14,6 +14,7 @@ class FanOutOnWriteService < BaseService @options = options check_race_condition! + warm_payload_cache! fan_out_to_local_recipients! fan_out_to_public_recipients! if broadcastable? @@ -135,13 +136,21 @@ class FanOutOnWriteService < BaseService AccountConversation.add_status(@account, @status) unless update? end + def warm_payload_cache! + Rails.cache.write("fan-out/#{@status.id}", rendered_status) + end + def anonymous_payload @anonymous_payload ||= Oj.dump( event: update? ? :'status.update' : :update, - payload: InlineRenderer.render(@status, nil, :status) + payload: rendered_status ) end + def rendered_status + @rendered_status ||= InlineRenderer.render(@status, nil, :status) + end + def update? @options[:update] end diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index 9f44c32b3b..72c7817495 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -5,11 +5,12 @@ class PushUpdateWorker include Redisable def perform(account_id, status_id, timeline_id = nil, options = {}) - @account = Account.find(account_id) - @status = Status.includes(active_mentions: :account, reblog: { active_mentions: :account }).find(status_id) - @timeline_id = timeline_id || "timeline:#{account.id}" + @status = Status.find(status_id) + @account_id = account_id + @timeline_id = timeline_id || "timeline:#{account_id}" @options = options.symbolize_keys + render_payload! publish! rescue ActiveRecord::RecordNotFound true @@ -17,14 +18,14 @@ class PushUpdateWorker private - def payload - InlineRenderer.render(@status, @account, :status) + def render_payload! + @payload = StatusCacheHydrator.new(@status).hydrate(@account_id) end def message Oj.dump( event: update? ? :'status.update' : :update, - payload: payload, + payload: @payload, queued_at: (Time.now.to_f * 1000.0).to_i ) end diff --git a/spec/lib/status_cache_hydrator_spec.rb b/spec/lib/status_cache_hydrator_spec.rb new file mode 100644 index 0000000000..ad9940a853 --- /dev/null +++ b/spec/lib/status_cache_hydrator_spec.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe StatusCacheHydrator do + let(:status) { Fabricate(:status) } + let(:account) { Fabricate(:account) } + + describe '#hydrate' do + subject { described_class.new(status).hydrate(account.id) } + + let(:compare_to_hash) { InlineRenderer.render(status, account, :status) } + + context 'when cache is warm' do + before do + Rails.cache.write("fan-out/#{status.id}", InlineRenderer.render(status, nil, :status)) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'when cache is cold' do + before do + Rails.cache.delete("fan-out/#{status.id}") + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'when account has favourited status' do + before do + FavouriteService.new.call(account, status) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'when account has reblogged status' do + before do + ReblogService.new.call(account, status) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + end +end From f002878c95442bae71e64d45d2502e63efb4d468 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Sat, 5 Nov 2022 00:04:25 +0900 Subject: [PATCH 252/500] Make word-break: keep-all for dismissable banner (#19719) --- app/javascript/styles/mastodon/components.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f1622dbb56..2edb10857c 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -8317,6 +8317,7 @@ noscript { font-size: 14px; line-height: 18px; color: $primary-text-color; + word-break: keep-all; } &__action { From b1a219552e935d0c988e1f20b9fdceeb042d2c2d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 16:08:29 +0100 Subject: [PATCH 253/500] Fix featured tags not saving preferred casing (#19732) --- app/models/featured_tag.rb | 25 ++++++++----------- config/locales/simple_form.en.yml | 2 +- ...0221104133904_add_name_to_featured_tags.rb | 5 ++++ db/schema.rb | 3 ++- 4 files changed, 18 insertions(+), 17 deletions(-) create mode 100644 db/migrate/20221104133904_add_name_to_featured_tags.rb diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index d4ed743025..78185b2a99 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -10,13 +10,16 @@ # last_status_at :datetime # created_at :datetime not null # updated_at :datetime not null +# name :string # class FeaturedTag < ApplicationRecord belongs_to :account, inverse_of: :featured_tags belongs_to :tag, inverse_of: :featured_tags, optional: true # Set after validation - validate :validate_tag_name, on: :create + validates :name, presence: true, format: { with: /\A(#{Tag::HASHTAG_NAME_RE})\z/i }, on: :create + + validate :validate_tag_uniqueness, on: :create validate :validate_featured_tags_limit, on: :create before_validation :strip_name @@ -26,18 +29,14 @@ class FeaturedTag < ApplicationRecord scope :by_name, ->(name) { joins(:tag).where(tag: { name: HashtagNormalizer.new.normalize(name) }) } - delegate :display_name, to: :tag - - attr_writer :name - LIMIT = 10 def sign? true end - def name - tag_id.present? ? tag.name : @name + def display_name + attributes['name'] || tag.display_name end def increment(timestamp) @@ -51,13 +50,11 @@ class FeaturedTag < ApplicationRecord private def strip_name - return unless defined?(@name) - - @name = @name&.strip&.gsub(/\A#/, '') + self.name = name&.strip&.gsub(/\A#/, '') end def set_tag - self.tag = Tag.find_or_create_by_names(@name)&.first + self.tag = Tag.find_or_create_by_names(name)&.first end def reset_data @@ -69,9 +66,7 @@ class FeaturedTag < ApplicationRecord errors.add(:base, I18n.t('featured_tags.errors.limit')) if account.featured_tags.count >= LIMIT end - def validate_tag_name - errors.add(:name, :blank) if @name.blank? - errors.add(:name, :invalid) unless @name.match?(/\A(#{Tag::HASHTAG_NAME_RE})\z/i) - errors.add(:name, :taken) if FeaturedTag.by_name(@name).where(account_id: account_id).exists? + def validate_tag_uniqueness + errors.add(:name, :taken) if FeaturedTag.by_name(name).where(account_id: account_id).exists? end end diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 64281d7b74..6edf7b4e9e 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -67,7 +67,7 @@ en: domain: This can be the domain name that shows up in the e-mail address or the MX record it uses. They will be checked upon sign-up. with_dns_records: An attempt to resolve the given domain's DNS records will be made and the results will also be blocked featured_tag: - name: 'You might want to use one of these:' + name: 'Here are some of the hashtags you used the most recently:' filters: action: Chose which action to perform when a post matches the filter actions: diff --git a/db/migrate/20221104133904_add_name_to_featured_tags.rb b/db/migrate/20221104133904_add_name_to_featured_tags.rb new file mode 100644 index 0000000000..7c8c8ebfbc --- /dev/null +++ b/db/migrate/20221104133904_add_name_to_featured_tags.rb @@ -0,0 +1,5 @@ +class AddNameToFeaturedTags < ActiveRecord::Migration[6.1] + def change + add_column :featured_tags, :name, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 12ec37c111..09d07fcca6 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_11_01_190723) do +ActiveRecord::Schema.define(version: 2022_11_04_133904) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -442,6 +442,7 @@ ActiveRecord::Schema.define(version: 2022_11_01_190723) do t.datetime "last_status_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.string "name" t.index ["account_id", "tag_id"], name: "index_featured_tags_on_account_id_and_tag_id", unique: true t.index ["tag_id"], name: "index_featured_tags_on_tag_id" end From e02812d5b63b4909fff9c0c7246e80745c4c703e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 16:08:41 +0100 Subject: [PATCH 254/500] Add assets from Twemoji 14.0 (#19733) --- app/javascript/mastodon/features/emoji/emoji_map.json | 2 +- lib/tasks/emojis.rake | 4 ++-- public/emoji/1f1e7-1f1ea.svg | 2 +- public/emoji/1f1ee-1f1f3.svg | 2 +- public/emoji/1f3f3-fe0f-200d-1f308.svg | 2 +- public/emoji/1f50b.svg | 2 +- public/emoji/1f6dd.svg | 1 + public/emoji/1f6de.svg | 1 + public/emoji/1f6df.svg | 1 + public/emoji/1f7f0.svg | 1 + public/emoji/1f91d-1f3fb.svg | 1 + public/emoji/1f91d-1f3fc.svg | 1 + public/emoji/1f91d-1f3fd.svg | 1 + public/emoji/1f91d-1f3fe.svg | 1 + public/emoji/1f91d-1f3ff.svg | 1 + public/emoji/1f91d.svg | 2 +- public/emoji/1f921.svg | 2 +- public/emoji/1f979.svg | 1 + public/emoji/1f9cc.svg | 1 + public/emoji/1fa7b.svg | 1 + public/emoji/1fa7c.svg | 1 + public/emoji/1faa9.svg | 1 + public/emoji/1faaa.svg | 1 + public/emoji/1faab.svg | 1 + public/emoji/1faac.svg | 1 + public/emoji/1fab7.svg | 1 + public/emoji/1fab8.svg | 1 + public/emoji/1fab9.svg | 1 + public/emoji/1faba.svg | 1 + public/emoji/1fac3-1f3fb.svg | 1 + public/emoji/1fac3-1f3fc.svg | 1 + public/emoji/1fac3-1f3fd.svg | 1 + public/emoji/1fac3-1f3fe.svg | 1 + public/emoji/1fac3-1f3ff.svg | 1 + public/emoji/1fac3.svg | 1 + public/emoji/1fac4-1f3fb.svg | 1 + public/emoji/1fac4-1f3fc.svg | 1 + public/emoji/1fac4-1f3fd.svg | 1 + public/emoji/1fac4-1f3fe.svg | 1 + public/emoji/1fac4-1f3ff.svg | 1 + public/emoji/1fac4.svg | 1 + public/emoji/1fac5-1f3fb.svg | 1 + public/emoji/1fac5-1f3fc.svg | 1 + public/emoji/1fac5-1f3fd.svg | 1 + public/emoji/1fac5-1f3fe.svg | 1 + public/emoji/1fac5-1f3ff.svg | 1 + public/emoji/1fac5.svg | 1 + public/emoji/1fad7.svg | 1 + public/emoji/1fad8.svg | 1 + public/emoji/1fad9.svg | 1 + public/emoji/1fae0.svg | 1 + public/emoji/1fae1.svg | 1 + public/emoji/1fae2.svg | 1 + public/emoji/1fae3.svg | 1 + public/emoji/1fae4.svg | 1 + public/emoji/1fae5.svg | 1 + public/emoji/1fae6.svg | 1 + public/emoji/1fae7.svg | 1 + public/emoji/1faf0-1f3fb.svg | 1 + public/emoji/1faf0-1f3fc.svg | 1 + public/emoji/1faf0-1f3fd.svg | 1 + public/emoji/1faf0-1f3fe.svg | 1 + public/emoji/1faf0-1f3ff.svg | 1 + public/emoji/1faf0.svg | 1 + public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg | 1 + public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg | 1 + public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg | 1 + public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg | 1 + public/emoji/1faf1-1f3fb.svg | 1 + public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg | 1 + public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg | 1 + public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg | 1 + public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg | 1 + public/emoji/1faf1-1f3fc.svg | 1 + public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg | 1 + public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg | 1 + public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg | 1 + public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg | 1 + public/emoji/1faf1-1f3fd.svg | 1 + public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg | 1 + public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg | 1 + public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg | 1 + public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg | 1 + public/emoji/1faf1-1f3fe.svg | 1 + public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg | 1 + public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg | 1 + public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg | 1 + public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg | 1 + public/emoji/1faf1-1f3ff.svg | 1 + public/emoji/1faf1.svg | 1 + public/emoji/1faf2-1f3fb.svg | 1 + public/emoji/1faf2-1f3fc.svg | 1 + public/emoji/1faf2-1f3fd.svg | 1 + public/emoji/1faf2-1f3fe.svg | 1 + public/emoji/1faf2-1f3ff.svg | 1 + public/emoji/1faf2.svg | 1 + public/emoji/1faf3-1f3fb.svg | 1 + public/emoji/1faf3-1f3fc.svg | 1 + public/emoji/1faf3-1f3fd.svg | 1 + public/emoji/1faf3-1f3fe.svg | 1 + public/emoji/1faf3-1f3ff.svg | 1 + public/emoji/1faf3.svg | 1 + public/emoji/1faf4-1f3fb.svg | 1 + public/emoji/1faf4-1f3fc.svg | 1 + public/emoji/1faf4-1f3fd.svg | 1 + public/emoji/1faf4-1f3fe.svg | 1 + public/emoji/1faf4-1f3ff.svg | 1 + public/emoji/1faf4.svg | 1 + public/emoji/1faf5-1f3fb.svg | 1 + public/emoji/1faf5-1f3fc.svg | 1 + public/emoji/1faf5-1f3fd.svg | 1 + public/emoji/1faf5-1f3fe.svg | 1 + public/emoji/1faf5-1f3ff.svg | 1 + public/emoji/1faf5.svg | 1 + public/emoji/1faf6-1f3fb.svg | 1 + public/emoji/1faf6-1f3fc.svg | 1 + public/emoji/1faf6-1f3fd.svg | 1 + public/emoji/1faf6-1f3fe.svg | 1 + public/emoji/1faf6-1f3ff.svg | 1 + public/emoji/1faf6.svg | 1 + 120 files changed, 121 insertions(+), 9 deletions(-) create mode 100755 public/emoji/1f6dd.svg create mode 100755 public/emoji/1f6de.svg create mode 100755 public/emoji/1f6df.svg create mode 100755 public/emoji/1f7f0.svg create mode 100755 public/emoji/1f91d-1f3fb.svg create mode 100755 public/emoji/1f91d-1f3fc.svg create mode 100755 public/emoji/1f91d-1f3fd.svg create mode 100755 public/emoji/1f91d-1f3fe.svg create mode 100755 public/emoji/1f91d-1f3ff.svg create mode 100755 public/emoji/1f979.svg create mode 100755 public/emoji/1f9cc.svg create mode 100755 public/emoji/1fa7b.svg create mode 100755 public/emoji/1fa7c.svg create mode 100755 public/emoji/1faa9.svg create mode 100755 public/emoji/1faaa.svg create mode 100755 public/emoji/1faab.svg create mode 100755 public/emoji/1faac.svg create mode 100755 public/emoji/1fab7.svg create mode 100755 public/emoji/1fab8.svg create mode 100755 public/emoji/1fab9.svg create mode 100755 public/emoji/1faba.svg create mode 100755 public/emoji/1fac3-1f3fb.svg create mode 100755 public/emoji/1fac3-1f3fc.svg create mode 100755 public/emoji/1fac3-1f3fd.svg create mode 100755 public/emoji/1fac3-1f3fe.svg create mode 100755 public/emoji/1fac3-1f3ff.svg create mode 100755 public/emoji/1fac3.svg create mode 100755 public/emoji/1fac4-1f3fb.svg create mode 100755 public/emoji/1fac4-1f3fc.svg create mode 100755 public/emoji/1fac4-1f3fd.svg create mode 100755 public/emoji/1fac4-1f3fe.svg create mode 100755 public/emoji/1fac4-1f3ff.svg create mode 100755 public/emoji/1fac4.svg create mode 100755 public/emoji/1fac5-1f3fb.svg create mode 100755 public/emoji/1fac5-1f3fc.svg create mode 100755 public/emoji/1fac5-1f3fd.svg create mode 100755 public/emoji/1fac5-1f3fe.svg create mode 100755 public/emoji/1fac5-1f3ff.svg create mode 100755 public/emoji/1fac5.svg create mode 100755 public/emoji/1fad7.svg create mode 100755 public/emoji/1fad8.svg create mode 100755 public/emoji/1fad9.svg create mode 100755 public/emoji/1fae0.svg create mode 100755 public/emoji/1fae1.svg create mode 100755 public/emoji/1fae2.svg create mode 100755 public/emoji/1fae3.svg create mode 100755 public/emoji/1fae4.svg create mode 100755 public/emoji/1fae5.svg create mode 100755 public/emoji/1fae6.svg create mode 100755 public/emoji/1fae7.svg create mode 100755 public/emoji/1faf0-1f3fb.svg create mode 100755 public/emoji/1faf0-1f3fc.svg create mode 100755 public/emoji/1faf0-1f3fd.svg create mode 100755 public/emoji/1faf0-1f3fe.svg create mode 100755 public/emoji/1faf0-1f3ff.svg create mode 100755 public/emoji/1faf0.svg create mode 100755 public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg create mode 100755 public/emoji/1faf1-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg create mode 100755 public/emoji/1faf1-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg create mode 100755 public/emoji/1faf1-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg create mode 100755 public/emoji/1faf1-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg create mode 100755 public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg create mode 100755 public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg create mode 100755 public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg create mode 100755 public/emoji/1faf1-1f3ff.svg create mode 100755 public/emoji/1faf1.svg create mode 100755 public/emoji/1faf2-1f3fb.svg create mode 100755 public/emoji/1faf2-1f3fc.svg create mode 100755 public/emoji/1faf2-1f3fd.svg create mode 100755 public/emoji/1faf2-1f3fe.svg create mode 100755 public/emoji/1faf2-1f3ff.svg create mode 100755 public/emoji/1faf2.svg create mode 100755 public/emoji/1faf3-1f3fb.svg create mode 100755 public/emoji/1faf3-1f3fc.svg create mode 100755 public/emoji/1faf3-1f3fd.svg create mode 100755 public/emoji/1faf3-1f3fe.svg create mode 100755 public/emoji/1faf3-1f3ff.svg create mode 100755 public/emoji/1faf3.svg create mode 100755 public/emoji/1faf4-1f3fb.svg create mode 100755 public/emoji/1faf4-1f3fc.svg create mode 100755 public/emoji/1faf4-1f3fd.svg create mode 100755 public/emoji/1faf4-1f3fe.svg create mode 100755 public/emoji/1faf4-1f3ff.svg create mode 100755 public/emoji/1faf4.svg create mode 100755 public/emoji/1faf5-1f3fb.svg create mode 100755 public/emoji/1faf5-1f3fc.svg create mode 100755 public/emoji/1faf5-1f3fd.svg create mode 100755 public/emoji/1faf5-1f3fe.svg create mode 100755 public/emoji/1faf5-1f3ff.svg create mode 100755 public/emoji/1faf5.svg create mode 100755 public/emoji/1faf6-1f3fb.svg create mode 100755 public/emoji/1faf6-1f3fc.svg create mode 100755 public/emoji/1faf6-1f3fd.svg create mode 100755 public/emoji/1faf6-1f3fe.svg create mode 100755 public/emoji/1faf6-1f3ff.svg create mode 100755 public/emoji/1faf6.svg diff --git a/app/javascript/mastodon/features/emoji/emoji_map.json b/app/javascript/mastodon/features/emoji/emoji_map.json index 121fea2a5f..64f6615b79 100644 --- a/app/javascript/mastodon/features/emoji/emoji_map.json +++ b/app/javascript/mastodon/features/emoji/emoji_map.json @@ -1 +1 @@ -{"😀":"1f600","😃":"1f603","😄":"1f604","😁":"1f601","😆":"1f606","😅":"1f605","🤣":"1f923","😂":"1f602","🙂":"1f642","🙃":"1f643","😉":"1f609","😊":"1f60a","😇":"1f607","🥰":"1f970","😍":"1f60d","🤩":"1f929","😘":"1f618","😗":"1f617","☺":"263a","😚":"1f61a","😙":"1f619","🥲":"1f972","😋":"1f60b","😛":"1f61b","😜":"1f61c","🤪":"1f92a","😝":"1f61d","🤑":"1f911","🤗":"1f917","🤭":"1f92d","🤫":"1f92b","🤔":"1f914","🤐":"1f910","🤨":"1f928","😐":"1f610","😑":"1f611","😶":"1f636","😏":"1f60f","😒":"1f612","🙄":"1f644","😬":"1f62c","🤥":"1f925","😌":"1f60c","😔":"1f614","😪":"1f62a","🤤":"1f924","😴":"1f634","😷":"1f637","🤒":"1f912","🤕":"1f915","🤢":"1f922","🤮":"1f92e","🤧":"1f927","🥵":"1f975","🥶":"1f976","🥴":"1f974","😵":"1f635","🤯":"1f92f","🤠":"1f920","🥳":"1f973","🥸":"1f978","😎":"1f60e","🤓":"1f913","🧐":"1f9d0","😕":"1f615","😟":"1f61f","🙁":"1f641","☹":"2639","😮":"1f62e","😯":"1f62f","😲":"1f632","😳":"1f633","🥺":"1f97a","😦":"1f626","😧":"1f627","😨":"1f628","😰":"1f630","😥":"1f625","😢":"1f622","😭":"1f62d","😱":"1f631","😖":"1f616","😣":"1f623","😞":"1f61e","😓":"1f613","😩":"1f629","😫":"1f62b","🥱":"1f971","😤":"1f624","😡":"1f621","😠":"1f620","🤬":"1f92c","😈":"1f608","👿":"1f47f","💀":"1f480","☠":"2620","💩":"1f4a9","🤡":"1f921","👹":"1f479","👺":"1f47a","👻":"1f47b","👽":"1f47d","👾":"1f47e","🤖":"1f916","😺":"1f63a","😸":"1f638","😹":"1f639","😻":"1f63b","😼":"1f63c","😽":"1f63d","🙀":"1f640","😿":"1f63f","😾":"1f63e","🙈":"1f648","🙉":"1f649","🙊":"1f64a","💋":"1f48b","💌":"1f48c","💘":"1f498","💝":"1f49d","💖":"1f496","💗":"1f497","💓":"1f493","💞":"1f49e","💕":"1f495","💟":"1f49f","❣":"2763","💔":"1f494","❤":"2764","🧡":"1f9e1","💛":"1f49b","💚":"1f49a","💙":"1f499","💜":"1f49c","🤎":"1f90e","🖤":"1f5a4","🤍":"1f90d","💯":"1f4af","💢":"1f4a2","💥":"1f4a5","💫":"1f4ab","💦":"1f4a6","💨":"1f4a8","🕳":"1f573","💣":"1f4a3","💬":"1f4ac","🗨":"1f5e8","🗯":"1f5ef","💭":"1f4ad","💤":"1f4a4","👋":"1f44b","🤚":"1f91a","🖐":"1f590","✋":"270b","🖖":"1f596","👌":"1f44c","🤌":"1f90c","🤏":"1f90f","✌":"270c","🤞":"1f91e","🤟":"1f91f","🤘":"1f918","🤙":"1f919","👈":"1f448","👉":"1f449","👆":"1f446","🖕":"1f595","👇":"1f447","☝":"261d","👍":"1f44d","👎":"1f44e","✊":"270a","👊":"1f44a","🤛":"1f91b","🤜":"1f91c","👏":"1f44f","🙌":"1f64c","👐":"1f450","🤲":"1f932","🤝":"1f91d","🙏":"1f64f","✍":"270d","💅":"1f485","🤳":"1f933","💪":"1f4aa","🦾":"1f9be","🦿":"1f9bf","🦵":"1f9b5","🦶":"1f9b6","👂":"1f442","🦻":"1f9bb","👃":"1f443","🧠":"1f9e0","🫀":"1fac0","🫁":"1fac1","🦷":"1f9b7","🦴":"1f9b4","👀":"1f440","👁":"1f441","👅":"1f445","👄":"1f444","👶":"1f476","🧒":"1f9d2","👦":"1f466","👧":"1f467","🧑":"1f9d1","👱":"1f471","👨":"1f468","🧔":"1f9d4","👩":"1f469","🧓":"1f9d3","👴":"1f474","👵":"1f475","🙍":"1f64d","🙎":"1f64e","🙅":"1f645","🙆":"1f646","💁":"1f481","🙋":"1f64b","🧏":"1f9cf","🙇":"1f647","🤦":"1f926","🤷":"1f937","👮":"1f46e","🕵":"1f575","💂":"1f482","🥷":"1f977","👷":"1f477","🤴":"1f934","👸":"1f478","👳":"1f473","👲":"1f472","🧕":"1f9d5","🤵":"1f935","👰":"1f470","🤰":"1f930","🤱":"1f931","👼":"1f47c","🎅":"1f385","🤶":"1f936","🦸":"1f9b8","🦹":"1f9b9","🧙":"1f9d9","🧚":"1f9da","🧛":"1f9db","🧜":"1f9dc","🧝":"1f9dd","🧞":"1f9de","🧟":"1f9df","💆":"1f486","💇":"1f487","🚶":"1f6b6","🧍":"1f9cd","🧎":"1f9ce","🏃":"1f3c3","💃":"1f483","🕺":"1f57a","🕴":"1f574","👯":"1f46f","🧖":"1f9d6","🧗":"1f9d7","🤺":"1f93a","🏇":"1f3c7","⛷":"26f7","🏂":"1f3c2","🏌":"1f3cc","🏄":"1f3c4","🚣":"1f6a3","🏊":"1f3ca","⛹":"26f9","🏋":"1f3cb","🚴":"1f6b4","🚵":"1f6b5","🤸":"1f938","🤼":"1f93c","🤽":"1f93d","🤾":"1f93e","🤹":"1f939","🧘":"1f9d8","🛀":"1f6c0","🛌":"1f6cc","👭":"1f46d","👫":"1f46b","👬":"1f46c","💏":"1f48f","💑":"1f491","👪":"1f46a","🗣":"1f5e3","👤":"1f464","👥":"1f465","🫂":"1fac2","👣":"1f463","🏻":"1f463","🏼":"1f463","🏽":"1f463","🏾":"1f463","🏿":"1f463","🦰":"1f463","🦱":"1f463","🦳":"1f463","🦲":"1f463","🐵":"1f435","🐒":"1f412","🦍":"1f98d","🦧":"1f9a7","🐶":"1f436","🐕":"1f415","🦮":"1f9ae","🐩":"1f429","🐺":"1f43a","🦊":"1f98a","🦝":"1f99d","🐱":"1f431","🐈":"1f408","🦁":"1f981","🐯":"1f42f","🐅":"1f405","🐆":"1f406","🐴":"1f434","🐎":"1f40e","🦄":"1f984","🦓":"1f993","🦌":"1f98c","🦬":"1f9ac","🐮":"1f42e","🐂":"1f402","🐃":"1f403","🐄":"1f404","🐷":"1f437","🐖":"1f416","🐗":"1f417","🐽":"1f43d","🐏":"1f40f","🐑":"1f411","🐐":"1f410","🐪":"1f42a","🐫":"1f42b","🦙":"1f999","🦒":"1f992","🐘":"1f418","🦣":"1f9a3","🦏":"1f98f","🦛":"1f99b","🐭":"1f42d","🐁":"1f401","🐀":"1f400","🐹":"1f439","🐰":"1f430","🐇":"1f407","🐿":"1f43f","🦫":"1f9ab","🦔":"1f994","🦇":"1f987","🐻":"1f43b","🐨":"1f428","🐼":"1f43c","🦥":"1f9a5","🦦":"1f9a6","🦨":"1f9a8","🦘":"1f998","🦡":"1f9a1","🐾":"1f43e","🦃":"1f983","🐔":"1f414","🐓":"1f413","🐣":"1f423","🐤":"1f424","🐥":"1f425","🐦":"1f426","🐧":"1f427","🕊":"1f54a","🦅":"1f985","🦆":"1f986","🦢":"1f9a2","🦉":"1f989","🦤":"1f9a4","🪶":"1fab6","🦩":"1f9a9","🦚":"1f99a","🦜":"1f99c","🐸":"1f438","🐊":"1f40a","🐢":"1f422","🦎":"1f98e","🐍":"1f40d","🐲":"1f432","🐉":"1f409","🦕":"1f995","🦖":"1f996","🐳":"1f433","🐋":"1f40b","🐬":"1f42c","🦭":"1f9ad","🐟":"1f41f","🐠":"1f420","🐡":"1f421","🦈":"1f988","🐙":"1f419","🐚":"1f41a","🐌":"1f40c","🦋":"1f98b","🐛":"1f41b","🐜":"1f41c","🐝":"1f41d","🪲":"1fab2","🐞":"1f41e","🦗":"1f997","🪳":"1fab3","🕷":"1f577","🕸":"1f578","🦂":"1f982","🦟":"1f99f","🪰":"1fab0","🪱":"1fab1","🦠":"1f9a0","💐":"1f490","🌸":"1f338","💮":"1f4ae","🏵":"1f3f5","🌹":"1f339","🥀":"1f940","🌺":"1f33a","🌻":"1f33b","🌼":"1f33c","🌷":"1f337","🌱":"1f331","🪴":"1fab4","🌲":"1f332","🌳":"1f333","🌴":"1f334","🌵":"1f335","🌾":"1f33e","🌿":"1f33f","☘":"2618","🍀":"1f340","🍁":"1f341","🍂":"1f342","🍃":"1f343","🍇":"1f347","🍈":"1f348","🍉":"1f349","🍊":"1f34a","🍋":"1f34b","🍌":"1f34c","🍍":"1f34d","🥭":"1f96d","🍎":"1f34e","🍏":"1f34f","🍐":"1f350","🍑":"1f351","🍒":"1f352","🍓":"1f353","🫐":"1fad0","🥝":"1f95d","🍅":"1f345","🫒":"1fad2","🥥":"1f965","🥑":"1f951","🍆":"1f346","🥔":"1f954","🥕":"1f955","🌽":"1f33d","🌶":"1f336","🫑":"1fad1","🥒":"1f952","🥬":"1f96c","🥦":"1f966","🧄":"1f9c4","🧅":"1f9c5","🍄":"1f344","🥜":"1f95c","🌰":"1f330","🍞":"1f35e","🥐":"1f950","🥖":"1f956","🫓":"1fad3","🥨":"1f968","🥯":"1f96f","🥞":"1f95e","🧇":"1f9c7","🧀":"1f9c0","🍖":"1f356","🍗":"1f357","🥩":"1f969","🥓":"1f953","🍔":"1f354","🍟":"1f35f","🍕":"1f355","🌭":"1f32d","🥪":"1f96a","🌮":"1f32e","🌯":"1f32f","🫔":"1fad4","🥙":"1f959","🧆":"1f9c6","🥚":"1f95a","🍳":"1f373","🥘":"1f958","🍲":"1f372","🫕":"1fad5","🥣":"1f963","🥗":"1f957","🍿":"1f37f","🧈":"1f9c8","🧂":"1f9c2","🥫":"1f96b","🍱":"1f371","🍘":"1f358","🍙":"1f359","🍚":"1f35a","🍛":"1f35b","🍜":"1f35c","🍝":"1f35d","🍠":"1f360","🍢":"1f362","🍣":"1f363","🍤":"1f364","🍥":"1f365","🥮":"1f96e","🍡":"1f361","🥟":"1f95f","🥠":"1f960","🥡":"1f961","🦀":"1f980","🦞":"1f99e","🦐":"1f990","🦑":"1f991","🦪":"1f9aa","🍦":"1f366","🍧":"1f367","🍨":"1f368","🍩":"1f369","🍪":"1f36a","🎂":"1f382","🍰":"1f370","🧁":"1f9c1","🥧":"1f967","🍫":"1f36b","🍬":"1f36c","🍭":"1f36d","🍮":"1f36e","🍯":"1f36f","🍼":"1f37c","🥛":"1f95b","☕":"2615","🫖":"1fad6","🍵":"1f375","🍶":"1f376","🍾":"1f37e","🍷":"1f377","🍸":"1f378","🍹":"1f379","🍺":"1f37a","🍻":"1f37b","🥂":"1f942","🥃":"1f943","🥤":"1f964","🧋":"1f9cb","🧃":"1f9c3","🧉":"1f9c9","🧊":"1f9ca","🥢":"1f962","🍽":"1f37d","🍴":"1f374","🥄":"1f944","🔪":"1f52a","🏺":"1f3fa","🌍":"1f30d","🌎":"1f30e","🌏":"1f30f","🌐":"1f310","🗺":"1f5fa","🗾":"1f5fe","🧭":"1f9ed","🏔":"1f3d4","⛰":"26f0","🌋":"1f30b","🗻":"1f5fb","🏕":"1f3d5","🏖":"1f3d6","🏜":"1f3dc","🏝":"1f3dd","🏞":"1f3de","🏟":"1f3df","🏛":"1f3db","🏗":"1f3d7","🧱":"1f9f1","🪨":"1faa8","🪵":"1fab5","🛖":"1f6d6","🏘":"1f3d8","🏚":"1f3da","🏠":"1f3e0","🏡":"1f3e1","🏢":"1f3e2","🏣":"1f3e3","🏤":"1f3e4","🏥":"1f3e5","🏦":"1f3e6","🏨":"1f3e8","🏩":"1f3e9","🏪":"1f3ea","🏫":"1f3eb","🏬":"1f3ec","🏭":"1f3ed","🏯":"1f3ef","🏰":"1f3f0","💒":"1f492","🗼":"1f5fc","🗽":"1f5fd","⛪":"26ea","🕌":"1f54c","🛕":"1f6d5","🕍":"1f54d","⛩":"26e9","🕋":"1f54b","⛲":"26f2","⛺":"26fa","🌁":"1f301","🌃":"1f303","🏙":"1f3d9","🌄":"1f304","🌅":"1f305","🌆":"1f306","🌇":"1f307","🌉":"1f309","♨":"2668","🎠":"1f3a0","🎡":"1f3a1","🎢":"1f3a2","💈":"1f488","🎪":"1f3aa","🚂":"1f682","🚃":"1f683","🚄":"1f684","🚅":"1f685","🚆":"1f686","🚇":"1f687","🚈":"1f688","🚉":"1f689","🚊":"1f68a","🚝":"1f69d","🚞":"1f69e","🚋":"1f68b","🚌":"1f68c","🚍":"1f68d","🚎":"1f68e","🚐":"1f690","🚑":"1f691","🚒":"1f692","🚓":"1f693","🚔":"1f694","🚕":"1f695","🚖":"1f696","🚗":"1f697","🚘":"1f698","🚙":"1f699","🛻":"1f6fb","🚚":"1f69a","🚛":"1f69b","🚜":"1f69c","🏎":"1f3ce","🏍":"1f3cd","🛵":"1f6f5","🦽":"1f9bd","🦼":"1f9bc","🛺":"1f6fa","🚲":"1f6b2","🛴":"1f6f4","🛹":"1f6f9","🛼":"1f6fc","🚏":"1f68f","🛣":"1f6e3","🛤":"1f6e4","🛢":"1f6e2","⛽":"26fd","🚨":"1f6a8","🚥":"1f6a5","🚦":"1f6a6","🛑":"1f6d1","🚧":"1f6a7","⚓":"2693","⛵":"26f5","🛶":"1f6f6","🚤":"1f6a4","🛳":"1f6f3","⛴":"26f4","🛥":"1f6e5","🚢":"1f6a2","✈":"2708","🛩":"1f6e9","🛫":"1f6eb","🛬":"1f6ec","🪂":"1fa82","💺":"1f4ba","🚁":"1f681","🚟":"1f69f","🚠":"1f6a0","🚡":"1f6a1","🛰":"1f6f0","🚀":"1f680","🛸":"1f6f8","🛎":"1f6ce","🧳":"1f9f3","⌛":"231b","⏳":"23f3","⌚":"231a","⏰":"23f0","⏱":"23f1","⏲":"23f2","🕰":"1f570","🕛":"1f55b","🕧":"1f567","🕐":"1f550","🕜":"1f55c","🕑":"1f551","🕝":"1f55d","🕒":"1f552","🕞":"1f55e","🕓":"1f553","🕟":"1f55f","🕔":"1f554","🕠":"1f560","🕕":"1f555","🕡":"1f561","🕖":"1f556","🕢":"1f562","🕗":"1f557","🕣":"1f563","🕘":"1f558","🕤":"1f564","🕙":"1f559","🕥":"1f565","🕚":"1f55a","🕦":"1f566","🌑":"1f311","🌒":"1f312","🌓":"1f313","🌔":"1f314","🌕":"1f315","🌖":"1f316","🌗":"1f317","🌘":"1f318","🌙":"1f319","🌚":"1f31a","🌛":"1f31b","🌜":"1f31c","🌡":"1f321","☀":"2600","🌝":"1f31d","🌞":"1f31e","🪐":"1fa90","⭐":"2b50","🌟":"1f31f","🌠":"1f320","🌌":"1f30c","☁":"2601","⛅":"26c5","⛈":"26c8","🌤":"1f324","🌥":"1f325","🌦":"1f326","🌧":"1f327","🌨":"1f328","🌩":"1f329","🌪":"1f32a","🌫":"1f32b","🌬":"1f32c","🌀":"1f300","🌈":"1f308","🌂":"1f302","☂":"2602","☔":"2614","⛱":"26f1","⚡":"26a1","❄":"2744","☃":"2603","⛄":"26c4","☄":"2604","🔥":"1f525","💧":"1f4a7","🌊":"1f30a","🎃":"1f383","🎄":"1f384","🎆":"1f386","🎇":"1f387","🧨":"1f9e8","✨":"2728","🎈":"1f388","🎉":"1f389","🎊":"1f38a","🎋":"1f38b","🎍":"1f38d","🎎":"1f38e","🎏":"1f38f","🎐":"1f390","🎑":"1f391","🧧":"1f9e7","🎀":"1f380","🎁":"1f381","🎗":"1f397","🎟":"1f39f","🎫":"1f3ab","🎖":"1f396","🏆":"1f3c6","🏅":"1f3c5","🥇":"1f947","🥈":"1f948","🥉":"1f949","⚽":"26bd","⚾":"26be","🥎":"1f94e","🏀":"1f3c0","🏐":"1f3d0","🏈":"1f3c8","🏉":"1f3c9","🎾":"1f3be","🥏":"1f94f","🎳":"1f3b3","🏏":"1f3cf","🏑":"1f3d1","🏒":"1f3d2","🥍":"1f94d","🏓":"1f3d3","🏸":"1f3f8","🥊":"1f94a","🥋":"1f94b","🥅":"1f945","⛳":"26f3","⛸":"26f8","🎣":"1f3a3","🤿":"1f93f","🎽":"1f3bd","🎿":"1f3bf","🛷":"1f6f7","🥌":"1f94c","🎯":"1f3af","🪀":"1fa80","🪁":"1fa81","🎱":"1f3b1","🔮":"1f52e","🪄":"1fa84","🧿":"1f9ff","🎮":"1f3ae","🕹":"1f579","🎰":"1f3b0","🎲":"1f3b2","🧩":"1f9e9","🧸":"1f9f8","🪅":"1fa85","🪆":"1fa86","♠":"2660","♥":"2665","♦":"2666","♣":"2663","♟":"265f","🃏":"1f0cf","🀄":"1f004","🎴":"1f3b4","🎭":"1f3ad","🖼":"1f5bc","🎨":"1f3a8","🧵":"1f9f5","🪡":"1faa1","🧶":"1f9f6","🪢":"1faa2","👓":"1f453","🕶":"1f576","🥽":"1f97d","🥼":"1f97c","🦺":"1f9ba","👔":"1f454","👕":"1f455","👖":"1f456","🧣":"1f9e3","🧤":"1f9e4","🧥":"1f9e5","🧦":"1f9e6","👗":"1f457","👘":"1f458","🥻":"1f97b","🩱":"1fa71","🩲":"1fa72","🩳":"1fa73","👙":"1f459","👚":"1f45a","👛":"1f45b","👜":"1f45c","👝":"1f45d","🛍":"1f6cd","🎒":"1f392","🩴":"1fa74","👞":"1f45e","👟":"1f45f","🥾":"1f97e","🥿":"1f97f","👠":"1f460","👡":"1f461","🩰":"1fa70","👢":"1f462","👑":"1f451","👒":"1f452","🎩":"1f3a9","🎓":"1f393","🧢":"1f9e2","🪖":"1fa96","⛑":"26d1","📿":"1f4ff","💄":"1f484","💍":"1f48d","💎":"1f48e","🔇":"1f507","🔈":"1f508","🔉":"1f509","🔊":"1f50a","📢":"1f4e2","📣":"1f4e3","📯":"1f4ef","🔔":"1f514","🔕":"1f515","🎼":"1f3bc","🎵":"1f3b5","🎶":"1f3b6","🎙":"1f399","🎚":"1f39a","🎛":"1f39b","🎤":"1f3a4","🎧":"1f3a7","📻":"1f4fb","🎷":"1f3b7","🪗":"1fa97","🎸":"1f3b8","🎹":"1f3b9","🎺":"1f3ba","🎻":"1f3bb","🪕":"1fa95","🥁":"1f941","🪘":"1fa98","📱":"1f4f1","📲":"1f4f2","☎":"260e","📞":"1f4de","📟":"1f4df","📠":"1f4e0","🔋":"1f50b","🔌":"1f50c","💻":"1f4bb","🖥":"1f5a5","🖨":"1f5a8","⌨":"2328","🖱":"1f5b1","🖲":"1f5b2","💽":"1f4bd","💾":"1f4be","💿":"1f4bf","📀":"1f4c0","🧮":"1f9ee","🎥":"1f3a5","🎞":"1f39e","📽":"1f4fd","🎬":"1f3ac","📺":"1f4fa","📷":"1f4f7","📸":"1f4f8","📹":"1f4f9","📼":"1f4fc","🔍":"1f50d","🔎":"1f50e","🕯":"1f56f","💡":"1f4a1","🔦":"1f526","🏮":"1f3ee","🪔":"1fa94","📔":"1f4d4","📕":"1f4d5","📖":"1f4d6","📗":"1f4d7","📘":"1f4d8","📙":"1f4d9","📚":"1f4da","📓":"1f4d3","📒":"1f4d2","📃":"1f4c3","📜":"1f4dc","📄":"1f4c4","📰":"1f4f0","🗞":"1f5de","📑":"1f4d1","🔖":"1f516","🏷":"1f3f7","💰":"1f4b0","🪙":"1fa99","💴":"1f4b4","💵":"1f4b5","💶":"1f4b6","💷":"1f4b7","💸":"1f4b8","💳":"1f4b3","🧾":"1f9fe","💹":"1f4b9","✉":"2709","📧":"1f4e7","📨":"1f4e8","📩":"1f4e9","📤":"1f4e4","📥":"1f4e5","📦":"1f4e6","📫":"1f4eb","📪":"1f4ea","📬":"1f4ec","📭":"1f4ed","📮":"1f4ee","🗳":"1f5f3","✏":"270f","✒":"2712","🖋":"1f58b","🖊":"1f58a","🖌":"1f58c","🖍":"1f58d","📝":"1f4dd","💼":"1f4bc","📁":"1f4c1","📂":"1f4c2","🗂":"1f5c2","📅":"1f4c5","📆":"1f4c6","🗒":"1f5d2","🗓":"1f5d3","📇":"1f4c7","📈":"1f4c8","📉":"1f4c9","📊":"1f4ca","📋":"1f4cb","📌":"1f4cc","📍":"1f4cd","📎":"1f4ce","🖇":"1f587","📏":"1f4cf","📐":"1f4d0","✂":"2702","🗃":"1f5c3","🗄":"1f5c4","🗑":"1f5d1","🔒":"1f512","🔓":"1f513","🔏":"1f50f","🔐":"1f510","🔑":"1f511","🗝":"1f5dd","🔨":"1f528","🪓":"1fa93","⛏":"26cf","⚒":"2692","🛠":"1f6e0","🗡":"1f5e1","⚔":"2694","🔫":"1f52b","🪃":"1fa83","🏹":"1f3f9","🛡":"1f6e1","🪚":"1fa9a","🔧":"1f527","🪛":"1fa9b","🔩":"1f529","⚙":"2699","🗜":"1f5dc","⚖":"2696","🦯":"1f9af","🔗":"1f517","⛓":"26d3","🪝":"1fa9d","🧰":"1f9f0","🧲":"1f9f2","🪜":"1fa9c","⚗":"2697","🧪":"1f9ea","🧫":"1f9eb","🧬":"1f9ec","🔬":"1f52c","🔭":"1f52d","📡":"1f4e1","💉":"1f489","🩸":"1fa78","💊":"1f48a","🩹":"1fa79","🩺":"1fa7a","🚪":"1f6aa","🛗":"1f6d7","🪞":"1fa9e","🪟":"1fa9f","🛏":"1f6cf","🛋":"1f6cb","🪑":"1fa91","🚽":"1f6bd","🪠":"1faa0","🚿":"1f6bf","🛁":"1f6c1","🪤":"1faa4","🪒":"1fa92","🧴":"1f9f4","🧷":"1f9f7","🧹":"1f9f9","🧺":"1f9fa","🧻":"1f9fb","🪣":"1faa3","🧼":"1f9fc","🪥":"1faa5","🧽":"1f9fd","🧯":"1f9ef","🛒":"1f6d2","🚬":"1f6ac","⚰":"26b0","🪦":"1faa6","⚱":"26b1","🗿":"1f5ff","🪧":"1faa7","🏧":"1f3e7","🚮":"1f6ae","🚰":"1f6b0","♿":"267f","🚹":"1f6b9","🚺":"1f6ba","🚻":"1f6bb","🚼":"1f6bc","🚾":"1f6be","🛂":"1f6c2","🛃":"1f6c3","🛄":"1f6c4","🛅":"1f6c5","⚠":"26a0","🚸":"1f6b8","⛔":"26d4","🚫":"1f6ab","🚳":"1f6b3","🚭":"1f6ad","🚯":"1f6af","🚱":"1f6b1","🚷":"1f6b7","📵":"1f4f5","🔞":"1f51e","☢":"2622","☣":"2623","⬆":"2b06","↗":"2197","➡":"27a1","↘":"2198","⬇":"2b07","↙":"2199","⬅":"2b05","↖":"2196","↕":"2195","↔":"2194","↩":"21a9","↪":"21aa","⤴":"2934","⤵":"2935","🔃":"1f503","🔄":"1f504","🔙":"1f519","🔚":"1f51a","🔛":"1f51b","🔜":"1f51c","🔝":"1f51d","🛐":"1f6d0","⚛":"269b","🕉":"1f549","✡":"2721","☸":"2638","☯":"262f","✝":"271d","☦":"2626","☪":"262a","☮":"262e","🕎":"1f54e","🔯":"1f52f","♈":"2648","♉":"2649","♊":"264a","♋":"264b","♌":"264c","♍":"264d","♎":"264e","♏":"264f","♐":"2650","♑":"2651","♒":"2652","♓":"2653","⛎":"26ce","🔀":"1f500","🔁":"1f501","🔂":"1f502","▶":"25b6","⏩":"23e9","⏭":"23ed","⏯":"23ef","◀":"25c0","⏪":"23ea","⏮":"23ee","🔼":"1f53c","⏫":"23eb","🔽":"1f53d","⏬":"23ec","⏸":"23f8","⏹":"23f9","⏺":"23fa","⏏":"23cf","🎦":"1f3a6","🔅":"1f505","🔆":"1f506","📶":"1f4f6","📳":"1f4f3","📴":"1f4f4","♀":"2640","♂":"2642","⚧":"26a7","✖":"2716","➕":"2795","➖":"2796","➗":"2797","♾":"267e","‼":"203c","⁉":"2049","❓":"2753","❔":"2754","❕":"2755","❗":"2757","〰":"3030","💱":"1f4b1","💲":"1f4b2","⚕":"2695","♻":"267b","⚜":"269c","🔱":"1f531","📛":"1f4db","🔰":"1f530","⭕":"2b55","✅":"2705","☑":"2611","✔":"2714","❌":"274c","❎":"274e","➰":"27b0","➿":"27bf","〽":"303d","✳":"2733","✴":"2734","❇":"2747","©":"a9","®":"ae","™":"2122","🔟":"1f51f","🔠":"1f520","🔡":"1f521","🔢":"1f522","🔣":"1f523","🔤":"1f524","🅰":"1f170","🆎":"1f18e","🅱":"1f171","🆑":"1f191","🆒":"1f192","🆓":"1f193","ℹ":"2139","🆔":"1f194","Ⓜ":"24c2","🆕":"1f195","🆖":"1f196","🅾":"1f17e","🆗":"1f197","🅿":"1f17f","🆘":"1f198","🆙":"1f199","🆚":"1f19a","🈁":"1f201","🈂":"1f202","🈷":"1f237","🈶":"1f236","🈯":"1f22f","🉐":"1f250","🈹":"1f239","🈚":"1f21a","🈲":"1f232","🉑":"1f251","🈸":"1f238","🈴":"1f234","🈳":"1f233","㊗":"3297","㊙":"3299","🈺":"1f23a","🈵":"1f235","🔴":"1f534","🟠":"1f7e0","🟡":"1f7e1","🟢":"1f7e2","🔵":"1f535","🟣":"1f7e3","🟤":"1f7e4","⚫":"26ab","⚪":"26aa","🟥":"1f7e5","🟧":"1f7e7","🟨":"1f7e8","🟩":"1f7e9","🟦":"1f7e6","🟪":"1f7ea","🟫":"1f7eb","⬛":"2b1b","⬜":"2b1c","◼":"25fc","◻":"25fb","◾":"25fe","◽":"25fd","▪":"25aa","▫":"25ab","🔶":"1f536","🔷":"1f537","🔸":"1f538","🔹":"1f539","🔺":"1f53a","🔻":"1f53b","💠":"1f4a0","🔘":"1f518","🔳":"1f533","🔲":"1f532","🏁":"1f3c1","🚩":"1f6a9","🎌":"1f38c","🏴":"1f3f4","🏳":"1f3f3","☺️":"263a","☹️":"2639","☠️":"2620","❣️":"2763","❤️":"2764","🕳️":"1f573","🗨️":"1f5e8","🗯️":"1f5ef","👋🏻":"1f44b-1f3fb","👋🏼":"1f44b-1f3fc","👋🏽":"1f44b-1f3fd","👋🏾":"1f44b-1f3fe","👋🏿":"1f44b-1f3ff","🤚🏻":"1f91a-1f3fb","🤚🏼":"1f91a-1f3fc","🤚🏽":"1f91a-1f3fd","🤚🏾":"1f91a-1f3fe","🤚🏿":"1f91a-1f3ff","🖐️":"1f590","🖐🏻":"1f590-1f3fb","🖐🏼":"1f590-1f3fc","🖐🏽":"1f590-1f3fd","🖐🏾":"1f590-1f3fe","🖐🏿":"1f590-1f3ff","✋🏻":"270b-1f3fb","✋🏼":"270b-1f3fc","✋🏽":"270b-1f3fd","✋🏾":"270b-1f3fe","✋🏿":"270b-1f3ff","🖖🏻":"1f596-1f3fb","🖖🏼":"1f596-1f3fc","🖖🏽":"1f596-1f3fd","🖖🏾":"1f596-1f3fe","🖖🏿":"1f596-1f3ff","👌🏻":"1f44c-1f3fb","👌🏼":"1f44c-1f3fc","👌🏽":"1f44c-1f3fd","👌🏾":"1f44c-1f3fe","👌🏿":"1f44c-1f3ff","🤌🏻":"1f90c-1f3fb","🤌🏼":"1f90c-1f3fc","🤌🏽":"1f90c-1f3fd","🤌🏾":"1f90c-1f3fe","🤌🏿":"1f90c-1f3ff","🤏🏻":"1f90f-1f3fb","🤏🏼":"1f90f-1f3fc","🤏🏽":"1f90f-1f3fd","🤏🏾":"1f90f-1f3fe","🤏🏿":"1f90f-1f3ff","✌️":"270c","✌🏻":"270c-1f3fb","✌🏼":"270c-1f3fc","✌🏽":"270c-1f3fd","✌🏾":"270c-1f3fe","✌🏿":"270c-1f3ff","🤞🏻":"1f91e-1f3fb","🤞🏼":"1f91e-1f3fc","🤞🏽":"1f91e-1f3fd","🤞🏾":"1f91e-1f3fe","🤞🏿":"1f91e-1f3ff","🤟🏻":"1f91f-1f3fb","🤟🏼":"1f91f-1f3fc","🤟🏽":"1f91f-1f3fd","🤟🏾":"1f91f-1f3fe","🤟🏿":"1f91f-1f3ff","🤘🏻":"1f918-1f3fb","🤘🏼":"1f918-1f3fc","🤘🏽":"1f918-1f3fd","🤘🏾":"1f918-1f3fe","🤘🏿":"1f918-1f3ff","🤙🏻":"1f919-1f3fb","🤙🏼":"1f919-1f3fc","🤙🏽":"1f919-1f3fd","🤙🏾":"1f919-1f3fe","🤙🏿":"1f919-1f3ff","👈🏻":"1f448-1f3fb","👈🏼":"1f448-1f3fc","👈🏽":"1f448-1f3fd","👈🏾":"1f448-1f3fe","👈🏿":"1f448-1f3ff","👉🏻":"1f449-1f3fb","👉🏼":"1f449-1f3fc","👉🏽":"1f449-1f3fd","👉🏾":"1f449-1f3fe","👉🏿":"1f449-1f3ff","👆🏻":"1f446-1f3fb","👆🏼":"1f446-1f3fc","👆🏽":"1f446-1f3fd","👆🏾":"1f446-1f3fe","👆🏿":"1f446-1f3ff","🖕🏻":"1f595-1f3fb","🖕🏼":"1f595-1f3fc","🖕🏽":"1f595-1f3fd","🖕🏾":"1f595-1f3fe","🖕🏿":"1f595-1f3ff","👇🏻":"1f447-1f3fb","👇🏼":"1f447-1f3fc","👇🏽":"1f447-1f3fd","👇🏾":"1f447-1f3fe","👇🏿":"1f447-1f3ff","☝️":"261d","☝🏻":"261d-1f3fb","☝🏼":"261d-1f3fc","☝🏽":"261d-1f3fd","☝🏾":"261d-1f3fe","☝🏿":"261d-1f3ff","👍🏻":"1f44d-1f3fb","👍🏼":"1f44d-1f3fc","👍🏽":"1f44d-1f3fd","👍🏾":"1f44d-1f3fe","👍🏿":"1f44d-1f3ff","👎🏻":"1f44e-1f3fb","👎🏼":"1f44e-1f3fc","👎🏽":"1f44e-1f3fd","👎🏾":"1f44e-1f3fe","👎🏿":"1f44e-1f3ff","✊🏻":"270a-1f3fb","✊🏼":"270a-1f3fc","✊🏽":"270a-1f3fd","✊🏾":"270a-1f3fe","✊🏿":"270a-1f3ff","👊🏻":"1f44a-1f3fb","👊🏼":"1f44a-1f3fc","👊🏽":"1f44a-1f3fd","👊🏾":"1f44a-1f3fe","👊🏿":"1f44a-1f3ff","🤛🏻":"1f91b-1f3fb","🤛🏼":"1f91b-1f3fc","🤛🏽":"1f91b-1f3fd","🤛🏾":"1f91b-1f3fe","🤛🏿":"1f91b-1f3ff","🤜🏻":"1f91c-1f3fb","🤜🏼":"1f91c-1f3fc","🤜🏽":"1f91c-1f3fd","🤜🏾":"1f91c-1f3fe","🤜🏿":"1f91c-1f3ff","👏🏻":"1f44f-1f3fb","👏🏼":"1f44f-1f3fc","👏🏽":"1f44f-1f3fd","👏🏾":"1f44f-1f3fe","👏🏿":"1f44f-1f3ff","🙌🏻":"1f64c-1f3fb","🙌🏼":"1f64c-1f3fc","🙌🏽":"1f64c-1f3fd","🙌🏾":"1f64c-1f3fe","🙌🏿":"1f64c-1f3ff","👐🏻":"1f450-1f3fb","👐🏼":"1f450-1f3fc","👐🏽":"1f450-1f3fd","👐🏾":"1f450-1f3fe","👐🏿":"1f450-1f3ff","🤲🏻":"1f932-1f3fb","🤲🏼":"1f932-1f3fc","🤲🏽":"1f932-1f3fd","🤲🏾":"1f932-1f3fe","🤲🏿":"1f932-1f3ff","🙏🏻":"1f64f-1f3fb","🙏🏼":"1f64f-1f3fc","🙏🏽":"1f64f-1f3fd","🙏🏾":"1f64f-1f3fe","🙏🏿":"1f64f-1f3ff","✍️":"270d","✍🏻":"270d-1f3fb","✍🏼":"270d-1f3fc","✍🏽":"270d-1f3fd","✍🏾":"270d-1f3fe","✍🏿":"270d-1f3ff","💅🏻":"1f485-1f3fb","💅🏼":"1f485-1f3fc","💅🏽":"1f485-1f3fd","💅🏾":"1f485-1f3fe","💅🏿":"1f485-1f3ff","🤳🏻":"1f933-1f3fb","🤳🏼":"1f933-1f3fc","🤳🏽":"1f933-1f3fd","🤳🏾":"1f933-1f3fe","🤳🏿":"1f933-1f3ff","💪🏻":"1f4aa-1f3fb","💪🏼":"1f4aa-1f3fc","💪🏽":"1f4aa-1f3fd","💪🏾":"1f4aa-1f3fe","💪🏿":"1f4aa-1f3ff","🦵🏻":"1f9b5-1f3fb","🦵🏼":"1f9b5-1f3fc","🦵🏽":"1f9b5-1f3fd","🦵🏾":"1f9b5-1f3fe","🦵🏿":"1f9b5-1f3ff","🦶🏻":"1f9b6-1f3fb","🦶🏼":"1f9b6-1f3fc","🦶🏽":"1f9b6-1f3fd","🦶🏾":"1f9b6-1f3fe","🦶🏿":"1f9b6-1f3ff","👂🏻":"1f442-1f3fb","👂🏼":"1f442-1f3fc","👂🏽":"1f442-1f3fd","👂🏾":"1f442-1f3fe","👂🏿":"1f442-1f3ff","🦻🏻":"1f9bb-1f3fb","🦻🏼":"1f9bb-1f3fc","🦻🏽":"1f9bb-1f3fd","🦻🏾":"1f9bb-1f3fe","🦻🏿":"1f9bb-1f3ff","👃🏻":"1f443-1f3fb","👃🏼":"1f443-1f3fc","👃🏽":"1f443-1f3fd","👃🏾":"1f443-1f3fe","👃🏿":"1f443-1f3ff","👁️":"1f441","👶🏻":"1f476-1f3fb","👶🏼":"1f476-1f3fc","👶🏽":"1f476-1f3fd","👶🏾":"1f476-1f3fe","👶🏿":"1f476-1f3ff","🧒🏻":"1f9d2-1f3fb","🧒🏼":"1f9d2-1f3fc","🧒🏽":"1f9d2-1f3fd","🧒🏾":"1f9d2-1f3fe","🧒🏿":"1f9d2-1f3ff","👦🏻":"1f466-1f3fb","👦🏼":"1f466-1f3fc","👦🏽":"1f466-1f3fd","👦🏾":"1f466-1f3fe","👦🏿":"1f466-1f3ff","👧🏻":"1f467-1f3fb","👧🏼":"1f467-1f3fc","👧🏽":"1f467-1f3fd","👧🏾":"1f467-1f3fe","👧🏿":"1f467-1f3ff","🧑🏻":"1f9d1-1f3fb","🧑🏼":"1f9d1-1f3fc","🧑🏽":"1f9d1-1f3fd","🧑🏾":"1f9d1-1f3fe","🧑🏿":"1f9d1-1f3ff","👱🏻":"1f471-1f3fb","👱🏼":"1f471-1f3fc","👱🏽":"1f471-1f3fd","👱🏾":"1f471-1f3fe","👱🏿":"1f471-1f3ff","👨🏻":"1f468-1f3fb","👨🏼":"1f468-1f3fc","👨🏽":"1f468-1f3fd","👨🏾":"1f468-1f3fe","👨🏿":"1f468-1f3ff","🧔🏻":"1f9d4-1f3fb","🧔🏼":"1f9d4-1f3fc","🧔🏽":"1f9d4-1f3fd","🧔🏾":"1f9d4-1f3fe","🧔🏿":"1f9d4-1f3ff","👩🏻":"1f469-1f3fb","👩🏼":"1f469-1f3fc","👩🏽":"1f469-1f3fd","👩🏾":"1f469-1f3fe","👩🏿":"1f469-1f3ff","🧓🏻":"1f9d3-1f3fb","🧓🏼":"1f9d3-1f3fc","🧓🏽":"1f9d3-1f3fd","🧓🏾":"1f9d3-1f3fe","🧓🏿":"1f9d3-1f3ff","👴🏻":"1f474-1f3fb","👴🏼":"1f474-1f3fc","👴🏽":"1f474-1f3fd","👴🏾":"1f474-1f3fe","👴🏿":"1f474-1f3ff","👵🏻":"1f475-1f3fb","👵🏼":"1f475-1f3fc","👵🏽":"1f475-1f3fd","👵🏾":"1f475-1f3fe","👵🏿":"1f475-1f3ff","🙍🏻":"1f64d-1f3fb","🙍🏼":"1f64d-1f3fc","🙍🏽":"1f64d-1f3fd","🙍🏾":"1f64d-1f3fe","🙍🏿":"1f64d-1f3ff","🙎🏻":"1f64e-1f3fb","🙎🏼":"1f64e-1f3fc","🙎🏽":"1f64e-1f3fd","🙎🏾":"1f64e-1f3fe","🙎🏿":"1f64e-1f3ff","🙅🏻":"1f645-1f3fb","🙅🏼":"1f645-1f3fc","🙅🏽":"1f645-1f3fd","🙅🏾":"1f645-1f3fe","🙅🏿":"1f645-1f3ff","🙆🏻":"1f646-1f3fb","🙆🏼":"1f646-1f3fc","🙆🏽":"1f646-1f3fd","🙆🏾":"1f646-1f3fe","🙆🏿":"1f646-1f3ff","💁🏻":"1f481-1f3fb","💁🏼":"1f481-1f3fc","💁🏽":"1f481-1f3fd","💁🏾":"1f481-1f3fe","💁🏿":"1f481-1f3ff","🙋🏻":"1f64b-1f3fb","🙋🏼":"1f64b-1f3fc","🙋🏽":"1f64b-1f3fd","🙋🏾":"1f64b-1f3fe","🙋🏿":"1f64b-1f3ff","🧏🏻":"1f9cf-1f3fb","🧏🏼":"1f9cf-1f3fc","🧏🏽":"1f9cf-1f3fd","🧏🏾":"1f9cf-1f3fe","🧏🏿":"1f9cf-1f3ff","🙇🏻":"1f647-1f3fb","🙇🏼":"1f647-1f3fc","🙇🏽":"1f647-1f3fd","🙇🏾":"1f647-1f3fe","🙇🏿":"1f647-1f3ff","🤦🏻":"1f926-1f3fb","🤦🏼":"1f926-1f3fc","🤦🏽":"1f926-1f3fd","🤦🏾":"1f926-1f3fe","🤦🏿":"1f926-1f3ff","🤷🏻":"1f937-1f3fb","🤷🏼":"1f937-1f3fc","🤷🏽":"1f937-1f3fd","🤷🏾":"1f937-1f3fe","🤷🏿":"1f937-1f3ff","👮🏻":"1f46e-1f3fb","👮🏼":"1f46e-1f3fc","👮🏽":"1f46e-1f3fd","👮🏾":"1f46e-1f3fe","👮🏿":"1f46e-1f3ff","🕵️":"1f575","🕵🏻":"1f575-1f3fb","🕵🏼":"1f575-1f3fc","🕵🏽":"1f575-1f3fd","🕵🏾":"1f575-1f3fe","🕵🏿":"1f575-1f3ff","💂🏻":"1f482-1f3fb","💂🏼":"1f482-1f3fc","💂🏽":"1f482-1f3fd","💂🏾":"1f482-1f3fe","💂🏿":"1f482-1f3ff","🥷🏻":"1f977-1f3fb","🥷🏼":"1f977-1f3fc","🥷🏽":"1f977-1f3fd","🥷🏾":"1f977-1f3fe","🥷🏿":"1f977-1f3ff","👷🏻":"1f477-1f3fb","👷🏼":"1f477-1f3fc","👷🏽":"1f477-1f3fd","👷🏾":"1f477-1f3fe","👷🏿":"1f477-1f3ff","🤴🏻":"1f934-1f3fb","🤴🏼":"1f934-1f3fc","🤴🏽":"1f934-1f3fd","🤴🏾":"1f934-1f3fe","🤴🏿":"1f934-1f3ff","👸🏻":"1f478-1f3fb","👸🏼":"1f478-1f3fc","👸🏽":"1f478-1f3fd","👸🏾":"1f478-1f3fe","👸🏿":"1f478-1f3ff","👳🏻":"1f473-1f3fb","👳🏼":"1f473-1f3fc","👳🏽":"1f473-1f3fd","👳🏾":"1f473-1f3fe","👳🏿":"1f473-1f3ff","👲🏻":"1f472-1f3fb","👲🏼":"1f472-1f3fc","👲🏽":"1f472-1f3fd","👲🏾":"1f472-1f3fe","👲🏿":"1f472-1f3ff","🧕🏻":"1f9d5-1f3fb","🧕🏼":"1f9d5-1f3fc","🧕🏽":"1f9d5-1f3fd","🧕🏾":"1f9d5-1f3fe","🧕🏿":"1f9d5-1f3ff","🤵🏻":"1f935-1f3fb","🤵🏼":"1f935-1f3fc","🤵🏽":"1f935-1f3fd","🤵🏾":"1f935-1f3fe","🤵🏿":"1f935-1f3ff","👰🏻":"1f470-1f3fb","👰🏼":"1f470-1f3fc","👰🏽":"1f470-1f3fd","👰🏾":"1f470-1f3fe","👰🏿":"1f470-1f3ff","🤰🏻":"1f930-1f3fb","🤰🏼":"1f930-1f3fc","🤰🏽":"1f930-1f3fd","🤰🏾":"1f930-1f3fe","🤰🏿":"1f930-1f3ff","🤱🏻":"1f931-1f3fb","🤱🏼":"1f931-1f3fc","🤱🏽":"1f931-1f3fd","🤱🏾":"1f931-1f3fe","🤱🏿":"1f931-1f3ff","👼🏻":"1f47c-1f3fb","👼🏼":"1f47c-1f3fc","👼🏽":"1f47c-1f3fd","👼🏾":"1f47c-1f3fe","👼🏿":"1f47c-1f3ff","🎅🏻":"1f385-1f3fb","🎅🏼":"1f385-1f3fc","🎅🏽":"1f385-1f3fd","🎅🏾":"1f385-1f3fe","🎅🏿":"1f385-1f3ff","🤶🏻":"1f936-1f3fb","🤶🏼":"1f936-1f3fc","🤶🏽":"1f936-1f3fd","🤶🏾":"1f936-1f3fe","🤶🏿":"1f936-1f3ff","🦸🏻":"1f9b8-1f3fb","🦸🏼":"1f9b8-1f3fc","🦸🏽":"1f9b8-1f3fd","🦸🏾":"1f9b8-1f3fe","🦸🏿":"1f9b8-1f3ff","🦹🏻":"1f9b9-1f3fb","🦹🏼":"1f9b9-1f3fc","🦹🏽":"1f9b9-1f3fd","🦹🏾":"1f9b9-1f3fe","🦹🏿":"1f9b9-1f3ff","🧙🏻":"1f9d9-1f3fb","🧙🏼":"1f9d9-1f3fc","🧙🏽":"1f9d9-1f3fd","🧙🏾":"1f9d9-1f3fe","🧙🏿":"1f9d9-1f3ff","🧚🏻":"1f9da-1f3fb","🧚🏼":"1f9da-1f3fc","🧚🏽":"1f9da-1f3fd","🧚🏾":"1f9da-1f3fe","🧚🏿":"1f9da-1f3ff","🧛🏻":"1f9db-1f3fb","🧛🏼":"1f9db-1f3fc","🧛🏽":"1f9db-1f3fd","🧛🏾":"1f9db-1f3fe","🧛🏿":"1f9db-1f3ff","🧜🏻":"1f9dc-1f3fb","🧜🏼":"1f9dc-1f3fc","🧜🏽":"1f9dc-1f3fd","🧜🏾":"1f9dc-1f3fe","🧜🏿":"1f9dc-1f3ff","🧝🏻":"1f9dd-1f3fb","🧝🏼":"1f9dd-1f3fc","🧝🏽":"1f9dd-1f3fd","🧝🏾":"1f9dd-1f3fe","🧝🏿":"1f9dd-1f3ff","💆🏻":"1f486-1f3fb","💆🏼":"1f486-1f3fc","💆🏽":"1f486-1f3fd","💆🏾":"1f486-1f3fe","💆🏿":"1f486-1f3ff","💇🏻":"1f487-1f3fb","💇🏼":"1f487-1f3fc","💇🏽":"1f487-1f3fd","💇🏾":"1f487-1f3fe","💇🏿":"1f487-1f3ff","🚶🏻":"1f6b6-1f3fb","🚶🏼":"1f6b6-1f3fc","🚶🏽":"1f6b6-1f3fd","🚶🏾":"1f6b6-1f3fe","🚶🏿":"1f6b6-1f3ff","🧍🏻":"1f9cd-1f3fb","🧍🏼":"1f9cd-1f3fc","🧍🏽":"1f9cd-1f3fd","🧍🏾":"1f9cd-1f3fe","🧍🏿":"1f9cd-1f3ff","🧎🏻":"1f9ce-1f3fb","🧎🏼":"1f9ce-1f3fc","🧎🏽":"1f9ce-1f3fd","🧎🏾":"1f9ce-1f3fe","🧎🏿":"1f9ce-1f3ff","🏃🏻":"1f3c3-1f3fb","🏃🏼":"1f3c3-1f3fc","🏃🏽":"1f3c3-1f3fd","🏃🏾":"1f3c3-1f3fe","🏃🏿":"1f3c3-1f3ff","💃🏻":"1f483-1f3fb","💃🏼":"1f483-1f3fc","💃🏽":"1f483-1f3fd","💃🏾":"1f483-1f3fe","💃🏿":"1f483-1f3ff","🕺🏻":"1f57a-1f3fb","🕺🏼":"1f57a-1f3fc","🕺🏽":"1f57a-1f3fd","🕺🏾":"1f57a-1f3fe","🕺🏿":"1f57a-1f3ff","🕴️":"1f574","🕴🏻":"1f574-1f3fb","🕴🏼":"1f574-1f3fc","🕴🏽":"1f574-1f3fd","🕴🏾":"1f574-1f3fe","🕴🏿":"1f574-1f3ff","🧖🏻":"1f9d6-1f3fb","🧖🏼":"1f9d6-1f3fc","🧖🏽":"1f9d6-1f3fd","🧖🏾":"1f9d6-1f3fe","🧖🏿":"1f9d6-1f3ff","🧗🏻":"1f9d7-1f3fb","🧗🏼":"1f9d7-1f3fc","🧗🏽":"1f9d7-1f3fd","🧗🏾":"1f9d7-1f3fe","🧗🏿":"1f9d7-1f3ff","🏇🏻":"1f3c7-1f3fb","🏇🏼":"1f3c7-1f3fc","🏇🏽":"1f3c7-1f3fd","🏇🏾":"1f3c7-1f3fe","🏇🏿":"1f3c7-1f3ff","⛷️":"26f7","🏂🏻":"1f3c2-1f3fb","🏂🏼":"1f3c2-1f3fc","🏂🏽":"1f3c2-1f3fd","🏂🏾":"1f3c2-1f3fe","🏂🏿":"1f3c2-1f3ff","🏌️":"1f3cc","🏌🏻":"1f3cc-1f3fb","🏌🏼":"1f3cc-1f3fc","🏌🏽":"1f3cc-1f3fd","🏌🏾":"1f3cc-1f3fe","🏌🏿":"1f3cc-1f3ff","🏄🏻":"1f3c4-1f3fb","🏄🏼":"1f3c4-1f3fc","🏄🏽":"1f3c4-1f3fd","🏄🏾":"1f3c4-1f3fe","🏄🏿":"1f3c4-1f3ff","🚣🏻":"1f6a3-1f3fb","🚣🏼":"1f6a3-1f3fc","🚣🏽":"1f6a3-1f3fd","🚣🏾":"1f6a3-1f3fe","🚣🏿":"1f6a3-1f3ff","🏊🏻":"1f3ca-1f3fb","🏊🏼":"1f3ca-1f3fc","🏊🏽":"1f3ca-1f3fd","🏊🏾":"1f3ca-1f3fe","🏊🏿":"1f3ca-1f3ff","⛹️":"26f9","⛹🏻":"26f9-1f3fb","⛹🏼":"26f9-1f3fc","⛹🏽":"26f9-1f3fd","⛹🏾":"26f9-1f3fe","⛹🏿":"26f9-1f3ff","🏋️":"1f3cb","🏋🏻":"1f3cb-1f3fb","🏋🏼":"1f3cb-1f3fc","🏋🏽":"1f3cb-1f3fd","🏋🏾":"1f3cb-1f3fe","🏋🏿":"1f3cb-1f3ff","🚴🏻":"1f6b4-1f3fb","🚴🏼":"1f6b4-1f3fc","🚴🏽":"1f6b4-1f3fd","🚴🏾":"1f6b4-1f3fe","🚴🏿":"1f6b4-1f3ff","🚵🏻":"1f6b5-1f3fb","🚵🏼":"1f6b5-1f3fc","🚵🏽":"1f6b5-1f3fd","🚵🏾":"1f6b5-1f3fe","🚵🏿":"1f6b5-1f3ff","🤸🏻":"1f938-1f3fb","🤸🏼":"1f938-1f3fc","🤸🏽":"1f938-1f3fd","🤸🏾":"1f938-1f3fe","🤸🏿":"1f938-1f3ff","🤽🏻":"1f93d-1f3fb","🤽🏼":"1f93d-1f3fc","🤽🏽":"1f93d-1f3fd","🤽🏾":"1f93d-1f3fe","🤽🏿":"1f93d-1f3ff","🤾🏻":"1f93e-1f3fb","🤾🏼":"1f93e-1f3fc","🤾🏽":"1f93e-1f3fd","🤾🏾":"1f93e-1f3fe","🤾🏿":"1f93e-1f3ff","🤹🏻":"1f939-1f3fb","🤹🏼":"1f939-1f3fc","🤹🏽":"1f939-1f3fd","🤹🏾":"1f939-1f3fe","🤹🏿":"1f939-1f3ff","🧘🏻":"1f9d8-1f3fb","🧘🏼":"1f9d8-1f3fc","🧘🏽":"1f9d8-1f3fd","🧘🏾":"1f9d8-1f3fe","🧘🏿":"1f9d8-1f3ff","🛀🏻":"1f6c0-1f3fb","🛀🏼":"1f6c0-1f3fc","🛀🏽":"1f6c0-1f3fd","🛀🏾":"1f6c0-1f3fe","🛀🏿":"1f6c0-1f3ff","🛌🏻":"1f6cc-1f3fb","🛌🏼":"1f6cc-1f3fc","🛌🏽":"1f6cc-1f3fd","🛌🏾":"1f6cc-1f3fe","🛌🏿":"1f6cc-1f3ff","👭🏻":"1f46d-1f3fb","👭🏼":"1f46d-1f3fc","👭🏽":"1f46d-1f3fd","👭🏾":"1f46d-1f3fe","👭🏿":"1f46d-1f3ff","👫🏻":"1f46b-1f3fb","👫🏼":"1f46b-1f3fc","👫🏽":"1f46b-1f3fd","👫🏾":"1f46b-1f3fe","👫🏿":"1f46b-1f3ff","👬🏻":"1f46c-1f3fb","👬🏼":"1f46c-1f3fc","👬🏽":"1f46c-1f3fd","👬🏾":"1f46c-1f3fe","👬🏿":"1f46c-1f3ff","💏🏻":"1f48f-1f3fb","💏🏼":"1f48f-1f3fc","💏🏽":"1f48f-1f3fd","💏🏾":"1f48f-1f3fe","💏🏿":"1f48f-1f3ff","💑🏻":"1f491-1f3fb","💑🏼":"1f491-1f3fc","💑🏽":"1f491-1f3fd","💑🏾":"1f491-1f3fe","💑🏿":"1f491-1f3ff","🗣️":"1f5e3","🐿️":"1f43f","🕊️":"1f54a","🕷️":"1f577","🕸️":"1f578","🏵️":"1f3f5","☘️":"2618","🌶️":"1f336","🍽️":"1f37d","🗺️":"1f5fa","🏔️":"1f3d4","⛰️":"26f0","🏕️":"1f3d5","🏖️":"1f3d6","🏜️":"1f3dc","🏝️":"1f3dd","🏞️":"1f3de","🏟️":"1f3df","🏛️":"1f3db","🏗️":"1f3d7","🏘️":"1f3d8","🏚️":"1f3da","⛩️":"26e9","🏙️":"1f3d9","♨️":"2668","🏎️":"1f3ce","🏍️":"1f3cd","🛣️":"1f6e3","🛤️":"1f6e4","🛢️":"1f6e2","🛳️":"1f6f3","⛴️":"26f4","🛥️":"1f6e5","✈️":"2708","🛩️":"1f6e9","🛰️":"1f6f0","🛎️":"1f6ce","⏱️":"23f1","⏲️":"23f2","🕰️":"1f570","🌡️":"1f321","☀️":"2600","☁️":"2601","⛈️":"26c8","🌤️":"1f324","🌥️":"1f325","🌦️":"1f326","🌧️":"1f327","🌨️":"1f328","🌩️":"1f329","🌪️":"1f32a","🌫️":"1f32b","🌬️":"1f32c","☂️":"2602","⛱️":"26f1","❄️":"2744","☃️":"2603","☄️":"2604","🎗️":"1f397","🎟️":"1f39f","🎖️":"1f396","⛸️":"26f8","🕹️":"1f579","♠️":"2660","♥️":"2665","♦️":"2666","♣️":"2663","♟️":"265f","🖼️":"1f5bc","🕶️":"1f576","🛍️":"1f6cd","⛑️":"26d1","🎙️":"1f399","🎚️":"1f39a","🎛️":"1f39b","☎️":"260e","🖥️":"1f5a5","🖨️":"1f5a8","⌨️":"2328","🖱️":"1f5b1","🖲️":"1f5b2","🎞️":"1f39e","📽️":"1f4fd","🕯️":"1f56f","🗞️":"1f5de","🏷️":"1f3f7","✉️":"2709","🗳️":"1f5f3","✏️":"270f","✒️":"2712","🖋️":"1f58b","🖊️":"1f58a","🖌️":"1f58c","🖍️":"1f58d","🗂️":"1f5c2","🗒️":"1f5d2","🗓️":"1f5d3","🖇️":"1f587","✂️":"2702","🗃️":"1f5c3","🗄️":"1f5c4","🗑️":"1f5d1","🗝️":"1f5dd","⛏️":"26cf","⚒️":"2692","🛠️":"1f6e0","🗡️":"1f5e1","⚔️":"2694","🛡️":"1f6e1","⚙️":"2699","🗜️":"1f5dc","⚖️":"2696","⛓️":"26d3","⚗️":"2697","🛏️":"1f6cf","🛋️":"1f6cb","⚰️":"26b0","⚱️":"26b1","⚠️":"26a0","☢️":"2622","☣️":"2623","⬆️":"2b06","↗️":"2197","➡️":"27a1","↘️":"2198","⬇️":"2b07","↙️":"2199","⬅️":"2b05","↖️":"2196","↕️":"2195","↔️":"2194","↩️":"21a9","↪️":"21aa","⤴️":"2934","⤵️":"2935","⚛️":"269b","🕉️":"1f549","✡️":"2721","☸️":"2638","☯️":"262f","✝️":"271d","☦️":"2626","☪️":"262a","☮️":"262e","▶️":"25b6","⏭️":"23ed","⏯️":"23ef","◀️":"25c0","⏮️":"23ee","⏸️":"23f8","⏹️":"23f9","⏺️":"23fa","⏏️":"23cf","♀️":"2640","♂️":"2642","⚧️":"26a7","✖️":"2716","♾️":"267e","‼️":"203c","⁉️":"2049","〰️":"3030","⚕️":"2695","♻️":"267b","⚜️":"269c","☑️":"2611","✔️":"2714","〽️":"303d","✳️":"2733","✴️":"2734","❇️":"2747","©️":"a9","®️":"ae","™️":"2122","#⃣":"23-20e3","*⃣":"2a-20e3","0⃣":"30-20e3","1⃣":"31-20e3","2⃣":"32-20e3","3⃣":"33-20e3","4⃣":"34-20e3","5⃣":"35-20e3","6⃣":"36-20e3","7⃣":"37-20e3","8⃣":"38-20e3","9⃣":"39-20e3","🅰️":"1f170","🅱️":"1f171","ℹ️":"2139","Ⓜ️":"24c2","🅾️":"1f17e","🅿️":"1f17f","🈂️":"1f202","🈷️":"1f237","㊗️":"3297","㊙️":"3299","◼️":"25fc","◻️":"25fb","▪️":"25aa","▫️":"25ab","🏳️":"1f3f3","🇦🇨":"1f1e6-1f1e8","🇦🇩":"1f1e6-1f1e9","🇦🇪":"1f1e6-1f1ea","🇦🇫":"1f1e6-1f1eb","🇦🇬":"1f1e6-1f1ec","🇦🇮":"1f1e6-1f1ee","🇦🇱":"1f1e6-1f1f1","🇦🇲":"1f1e6-1f1f2","🇦🇴":"1f1e6-1f1f4","🇦🇶":"1f1e6-1f1f6","🇦🇷":"1f1e6-1f1f7","🇦🇸":"1f1e6-1f1f8","🇦🇹":"1f1e6-1f1f9","🇦🇺":"1f1e6-1f1fa","🇦🇼":"1f1e6-1f1fc","🇦🇽":"1f1e6-1f1fd","🇦🇿":"1f1e6-1f1ff","🇧🇦":"1f1e7-1f1e6","🇧🇧":"1f1e7-1f1e7","🇧🇩":"1f1e7-1f1e9","🇧🇪":"1f1e7-1f1ea","🇧🇫":"1f1e7-1f1eb","🇧🇬":"1f1e7-1f1ec","🇧🇭":"1f1e7-1f1ed","🇧🇮":"1f1e7-1f1ee","🇧🇯":"1f1e7-1f1ef","🇧🇱":"1f1e7-1f1f1","🇧🇲":"1f1e7-1f1f2","🇧🇳":"1f1e7-1f1f3","🇧🇴":"1f1e7-1f1f4","🇧🇶":"1f1e7-1f1f6","🇧🇷":"1f1e7-1f1f7","🇧🇸":"1f1e7-1f1f8","🇧🇹":"1f1e7-1f1f9","🇧🇻":"1f1e7-1f1fb","🇧🇼":"1f1e7-1f1fc","🇧🇾":"1f1e7-1f1fe","🇧🇿":"1f1e7-1f1ff","🇨🇦":"1f1e8-1f1e6","🇨🇨":"1f1e8-1f1e8","🇨🇩":"1f1e8-1f1e9","🇨🇫":"1f1e8-1f1eb","🇨🇬":"1f1e8-1f1ec","🇨🇭":"1f1e8-1f1ed","🇨🇮":"1f1e8-1f1ee","🇨🇰":"1f1e8-1f1f0","🇨🇱":"1f1e8-1f1f1","🇨🇲":"1f1e8-1f1f2","🇨🇳":"1f1e8-1f1f3","🇨🇴":"1f1e8-1f1f4","🇨🇵":"1f1e8-1f1f5","🇨🇷":"1f1e8-1f1f7","🇨🇺":"1f1e8-1f1fa","🇨🇻":"1f1e8-1f1fb","🇨🇼":"1f1e8-1f1fc","🇨🇽":"1f1e8-1f1fd","🇨🇾":"1f1e8-1f1fe","🇨🇿":"1f1e8-1f1ff","🇩🇪":"1f1e9-1f1ea","🇩🇬":"1f1e9-1f1ec","🇩🇯":"1f1e9-1f1ef","🇩🇰":"1f1e9-1f1f0","🇩🇲":"1f1e9-1f1f2","🇩🇴":"1f1e9-1f1f4","🇩🇿":"1f1e9-1f1ff","🇪🇦":"1f1ea-1f1e6","🇪🇨":"1f1ea-1f1e8","🇪🇪":"1f1ea-1f1ea","🇪🇬":"1f1ea-1f1ec","🇪🇭":"1f1ea-1f1ed","🇪🇷":"1f1ea-1f1f7","🇪🇸":"1f1ea-1f1f8","🇪🇹":"1f1ea-1f1f9","🇪🇺":"1f1ea-1f1fa","🇫🇮":"1f1eb-1f1ee","🇫🇯":"1f1eb-1f1ef","🇫🇰":"1f1eb-1f1f0","🇫🇲":"1f1eb-1f1f2","🇫🇴":"1f1eb-1f1f4","🇫🇷":"1f1eb-1f1f7","🇬🇦":"1f1ec-1f1e6","🇬🇧":"1f1ec-1f1e7","🇬🇩":"1f1ec-1f1e9","🇬🇪":"1f1ec-1f1ea","🇬🇫":"1f1ec-1f1eb","🇬🇬":"1f1ec-1f1ec","🇬🇭":"1f1ec-1f1ed","🇬🇮":"1f1ec-1f1ee","🇬🇱":"1f1ec-1f1f1","🇬🇲":"1f1ec-1f1f2","🇬🇳":"1f1ec-1f1f3","🇬🇵":"1f1ec-1f1f5","🇬🇶":"1f1ec-1f1f6","🇬🇷":"1f1ec-1f1f7","🇬🇸":"1f1ec-1f1f8","🇬🇹":"1f1ec-1f1f9","🇬🇺":"1f1ec-1f1fa","🇬🇼":"1f1ec-1f1fc","🇬🇾":"1f1ec-1f1fe","🇭🇰":"1f1ed-1f1f0","🇭🇲":"1f1ed-1f1f2","🇭🇳":"1f1ed-1f1f3","🇭🇷":"1f1ed-1f1f7","🇭🇹":"1f1ed-1f1f9","🇭🇺":"1f1ed-1f1fa","🇮🇨":"1f1ee-1f1e8","🇮🇩":"1f1ee-1f1e9","🇮🇪":"1f1ee-1f1ea","🇮🇱":"1f1ee-1f1f1","🇮🇲":"1f1ee-1f1f2","🇮🇳":"1f1ee-1f1f3","🇮🇴":"1f1ee-1f1f4","🇮🇶":"1f1ee-1f1f6","🇮🇷":"1f1ee-1f1f7","🇮🇸":"1f1ee-1f1f8","🇮🇹":"1f1ee-1f1f9","🇯🇪":"1f1ef-1f1ea","🇯🇲":"1f1ef-1f1f2","🇯🇴":"1f1ef-1f1f4","🇯🇵":"1f1ef-1f1f5","🇰🇪":"1f1f0-1f1ea","🇰🇬":"1f1f0-1f1ec","🇰🇭":"1f1f0-1f1ed","🇰🇮":"1f1f0-1f1ee","🇰🇲":"1f1f0-1f1f2","🇰🇳":"1f1f0-1f1f3","🇰🇵":"1f1f0-1f1f5","🇰🇷":"1f1f0-1f1f7","🇰🇼":"1f1f0-1f1fc","🇰🇾":"1f1f0-1f1fe","🇰🇿":"1f1f0-1f1ff","🇱🇦":"1f1f1-1f1e6","🇱🇧":"1f1f1-1f1e7","🇱🇨":"1f1f1-1f1e8","🇱🇮":"1f1f1-1f1ee","🇱🇰":"1f1f1-1f1f0","🇱🇷":"1f1f1-1f1f7","🇱🇸":"1f1f1-1f1f8","🇱🇹":"1f1f1-1f1f9","🇱🇺":"1f1f1-1f1fa","🇱🇻":"1f1f1-1f1fb","🇱🇾":"1f1f1-1f1fe","🇲🇦":"1f1f2-1f1e6","🇲🇨":"1f1f2-1f1e8","🇲🇩":"1f1f2-1f1e9","🇲🇪":"1f1f2-1f1ea","🇲🇫":"1f1f2-1f1eb","🇲🇬":"1f1f2-1f1ec","🇲🇭":"1f1f2-1f1ed","🇲🇰":"1f1f2-1f1f0","🇲🇱":"1f1f2-1f1f1","🇲🇲":"1f1f2-1f1f2","🇲🇳":"1f1f2-1f1f3","🇲🇴":"1f1f2-1f1f4","🇲🇵":"1f1f2-1f1f5","🇲🇶":"1f1f2-1f1f6","🇲🇷":"1f1f2-1f1f7","🇲🇸":"1f1f2-1f1f8","🇲🇹":"1f1f2-1f1f9","🇲🇺":"1f1f2-1f1fa","🇲🇻":"1f1f2-1f1fb","🇲🇼":"1f1f2-1f1fc","🇲🇽":"1f1f2-1f1fd","🇲🇾":"1f1f2-1f1fe","🇲🇿":"1f1f2-1f1ff","🇳🇦":"1f1f3-1f1e6","🇳🇨":"1f1f3-1f1e8","🇳🇪":"1f1f3-1f1ea","🇳🇫":"1f1f3-1f1eb","🇳🇬":"1f1f3-1f1ec","🇳🇮":"1f1f3-1f1ee","🇳🇱":"1f1f3-1f1f1","🇳🇴":"1f1f3-1f1f4","🇳🇵":"1f1f3-1f1f5","🇳🇷":"1f1f3-1f1f7","🇳🇺":"1f1f3-1f1fa","🇳🇿":"1f1f3-1f1ff","🇴🇲":"1f1f4-1f1f2","🇵🇦":"1f1f5-1f1e6","🇵🇪":"1f1f5-1f1ea","🇵🇫":"1f1f5-1f1eb","🇵🇬":"1f1f5-1f1ec","🇵🇭":"1f1f5-1f1ed","🇵🇰":"1f1f5-1f1f0","🇵🇱":"1f1f5-1f1f1","🇵🇲":"1f1f5-1f1f2","🇵🇳":"1f1f5-1f1f3","🇵🇷":"1f1f5-1f1f7","🇵🇸":"1f1f5-1f1f8","🇵🇹":"1f1f5-1f1f9","🇵🇼":"1f1f5-1f1fc","🇵🇾":"1f1f5-1f1fe","🇶🇦":"1f1f6-1f1e6","🇷🇪":"1f1f7-1f1ea","🇷🇴":"1f1f7-1f1f4","🇷🇸":"1f1f7-1f1f8","🇷🇺":"1f1f7-1f1fa","🇷🇼":"1f1f7-1f1fc","🇸🇦":"1f1f8-1f1e6","🇸🇧":"1f1f8-1f1e7","🇸🇨":"1f1f8-1f1e8","🇸🇩":"1f1f8-1f1e9","🇸🇪":"1f1f8-1f1ea","🇸🇬":"1f1f8-1f1ec","🇸🇭":"1f1f8-1f1ed","🇸🇮":"1f1f8-1f1ee","🇸🇯":"1f1f8-1f1ef","🇸🇰":"1f1f8-1f1f0","🇸🇱":"1f1f8-1f1f1","🇸🇲":"1f1f8-1f1f2","🇸🇳":"1f1f8-1f1f3","🇸🇴":"1f1f8-1f1f4","🇸🇷":"1f1f8-1f1f7","🇸🇸":"1f1f8-1f1f8","🇸🇹":"1f1f8-1f1f9","🇸🇻":"1f1f8-1f1fb","🇸🇽":"1f1f8-1f1fd","🇸🇾":"1f1f8-1f1fe","🇸🇿":"1f1f8-1f1ff","🇹🇦":"1f1f9-1f1e6","🇹🇨":"1f1f9-1f1e8","🇹🇩":"1f1f9-1f1e9","🇹🇫":"1f1f9-1f1eb","🇹🇬":"1f1f9-1f1ec","🇹🇭":"1f1f9-1f1ed","🇹🇯":"1f1f9-1f1ef","🇹🇰":"1f1f9-1f1f0","🇹🇱":"1f1f9-1f1f1","🇹🇲":"1f1f9-1f1f2","🇹🇳":"1f1f9-1f1f3","🇹🇴":"1f1f9-1f1f4","🇹🇷":"1f1f9-1f1f7","🇹🇹":"1f1f9-1f1f9","🇹🇻":"1f1f9-1f1fb","🇹🇼":"1f1f9-1f1fc","🇹🇿":"1f1f9-1f1ff","🇺🇦":"1f1fa-1f1e6","🇺🇬":"1f1fa-1f1ec","🇺🇲":"1f1fa-1f1f2","🇺🇳":"1f1fa-1f1f3","🇺🇸":"1f1fa-1f1f8","🇺🇾":"1f1fa-1f1fe","🇺🇿":"1f1fa-1f1ff","🇻🇦":"1f1fb-1f1e6","🇻🇨":"1f1fb-1f1e8","🇻🇪":"1f1fb-1f1ea","🇻🇬":"1f1fb-1f1ec","🇻🇮":"1f1fb-1f1ee","🇻🇳":"1f1fb-1f1f3","🇻🇺":"1f1fb-1f1fa","🇼🇫":"1f1fc-1f1eb","🇼🇸":"1f1fc-1f1f8","🇽🇰":"1f1fd-1f1f0","🇾🇪":"1f1fe-1f1ea","🇾🇹":"1f1fe-1f1f9","🇿🇦":"1f1ff-1f1e6","🇿🇲":"1f1ff-1f1f2","🇿🇼":"1f1ff-1f1fc","😶‍🌫":"1f636-200d-1f32b-fe0f","😮‍💨":"1f62e-200d-1f4a8","😵‍💫":"1f635-200d-1f4ab","❤‍🔥":"2764-fe0f-200d-1f525","❤‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨":"1f441-200d-1f5e8","🧔‍♂":"1f9d4-200d-2642-fe0f","🧔‍♀":"1f9d4-200d-2640-fe0f","👨‍🦰":"1f468-200d-1f9b0","👨‍🦱":"1f468-200d-1f9b1","👨‍🦳":"1f468-200d-1f9b3","👨‍🦲":"1f468-200d-1f9b2","👩‍🦰":"1f469-200d-1f9b0","🧑‍🦰":"1f9d1-200d-1f9b0","👩‍🦱":"1f469-200d-1f9b1","🧑‍🦱":"1f9d1-200d-1f9b1","👩‍🦳":"1f469-200d-1f9b3","🧑‍🦳":"1f9d1-200d-1f9b3","👩‍🦲":"1f469-200d-1f9b2","🧑‍🦲":"1f9d1-200d-1f9b2","👱‍♀":"1f471-200d-2640-fe0f","👱‍♂":"1f471-200d-2642-fe0f","🙍‍♂":"1f64d-200d-2642-fe0f","🙍‍♀":"1f64d-200d-2640-fe0f","🙎‍♂":"1f64e-200d-2642-fe0f","🙎‍♀":"1f64e-200d-2640-fe0f","🙅‍♂":"1f645-200d-2642-fe0f","🙅‍♀":"1f645-200d-2640-fe0f","🙆‍♂":"1f646-200d-2642-fe0f","🙆‍♀":"1f646-200d-2640-fe0f","💁‍♂":"1f481-200d-2642-fe0f","💁‍♀":"1f481-200d-2640-fe0f","🙋‍♂":"1f64b-200d-2642-fe0f","🙋‍♀":"1f64b-200d-2640-fe0f","🧏‍♂":"1f9cf-200d-2642-fe0f","🧏‍♀":"1f9cf-200d-2640-fe0f","🙇‍♂":"1f647-200d-2642-fe0f","🙇‍♀":"1f647-200d-2640-fe0f","🤦‍♂":"1f926-200d-2642-fe0f","🤦‍♀":"1f926-200d-2640-fe0f","🤷‍♂":"1f937-200d-2642-fe0f","🤷‍♀":"1f937-200d-2640-fe0f","🧑‍⚕":"1f9d1-200d-2695-fe0f","👨‍⚕":"1f468-200d-2695-fe0f","👩‍⚕":"1f469-200d-2695-fe0f","🧑‍🎓":"1f9d1-200d-1f393","👨‍🎓":"1f468-200d-1f393","👩‍🎓":"1f469-200d-1f393","🧑‍🏫":"1f9d1-200d-1f3eb","👨‍🏫":"1f468-200d-1f3eb","👩‍🏫":"1f469-200d-1f3eb","🧑‍⚖":"1f9d1-200d-2696-fe0f","👨‍⚖":"1f468-200d-2696-fe0f","👩‍⚖":"1f469-200d-2696-fe0f","🧑‍🌾":"1f9d1-200d-1f33e","👨‍🌾":"1f468-200d-1f33e","👩‍🌾":"1f469-200d-1f33e","🧑‍🍳":"1f9d1-200d-1f373","👨‍🍳":"1f468-200d-1f373","👩‍🍳":"1f469-200d-1f373","🧑‍🔧":"1f9d1-200d-1f527","👨‍🔧":"1f468-200d-1f527","👩‍🔧":"1f469-200d-1f527","🧑‍🏭":"1f9d1-200d-1f3ed","👨‍🏭":"1f468-200d-1f3ed","👩‍🏭":"1f469-200d-1f3ed","🧑‍💼":"1f9d1-200d-1f4bc","👨‍💼":"1f468-200d-1f4bc","👩‍💼":"1f469-200d-1f4bc","🧑‍🔬":"1f9d1-200d-1f52c","👨‍🔬":"1f468-200d-1f52c","👩‍🔬":"1f469-200d-1f52c","🧑‍💻":"1f9d1-200d-1f4bb","👨‍💻":"1f468-200d-1f4bb","👩‍💻":"1f469-200d-1f4bb","🧑‍🎤":"1f9d1-200d-1f3a4","👨‍🎤":"1f468-200d-1f3a4","👩‍🎤":"1f469-200d-1f3a4","🧑‍🎨":"1f9d1-200d-1f3a8","👨‍🎨":"1f468-200d-1f3a8","👩‍🎨":"1f469-200d-1f3a8","🧑‍✈":"1f9d1-200d-2708-fe0f","👨‍✈":"1f468-200d-2708-fe0f","👩‍✈":"1f469-200d-2708-fe0f","🧑‍🚀":"1f9d1-200d-1f680","👨‍🚀":"1f468-200d-1f680","👩‍🚀":"1f469-200d-1f680","🧑‍🚒":"1f9d1-200d-1f692","👨‍🚒":"1f468-200d-1f692","👩‍🚒":"1f469-200d-1f692","👮‍♂":"1f46e-200d-2642-fe0f","👮‍♀":"1f46e-200d-2640-fe0f","🕵‍♂":"1f575-fe0f-200d-2642-fe0f","🕵‍♀":"1f575-fe0f-200d-2640-fe0f","💂‍♂":"1f482-200d-2642-fe0f","💂‍♀":"1f482-200d-2640-fe0f","👷‍♂":"1f477-200d-2642-fe0f","👷‍♀":"1f477-200d-2640-fe0f","👳‍♂":"1f473-200d-2642-fe0f","👳‍♀":"1f473-200d-2640-fe0f","🤵‍♂":"1f935-200d-2642-fe0f","🤵‍♀":"1f935-200d-2640-fe0f","👰‍♂":"1f470-200d-2642-fe0f","👰‍♀":"1f470-200d-2640-fe0f","👩‍🍼":"1f469-200d-1f37c","👨‍🍼":"1f468-200d-1f37c","🧑‍🍼":"1f9d1-200d-1f37c","🧑‍🎄":"1f9d1-200d-1f384","🦸‍♂":"1f9b8-200d-2642-fe0f","🦸‍♀":"1f9b8-200d-2640-fe0f","🦹‍♂":"1f9b9-200d-2642-fe0f","🦹‍♀":"1f9b9-200d-2640-fe0f","🧙‍♂":"1f9d9-200d-2642-fe0f","🧙‍♀":"1f9d9-200d-2640-fe0f","🧚‍♂":"1f9da-200d-2642-fe0f","🧚‍♀":"1f9da-200d-2640-fe0f","🧛‍♂":"1f9db-200d-2642-fe0f","🧛‍♀":"1f9db-200d-2640-fe0f","🧜‍♂":"1f9dc-200d-2642-fe0f","🧜‍♀":"1f9dc-200d-2640-fe0f","🧝‍♂":"1f9dd-200d-2642-fe0f","🧝‍♀":"1f9dd-200d-2640-fe0f","🧞‍♂":"1f9de-200d-2642-fe0f","🧞‍♀":"1f9de-200d-2640-fe0f","🧟‍♂":"1f9df-200d-2642-fe0f","🧟‍♀":"1f9df-200d-2640-fe0f","💆‍♂":"1f486-200d-2642-fe0f","💆‍♀":"1f486-200d-2640-fe0f","💇‍♂":"1f487-200d-2642-fe0f","💇‍♀":"1f487-200d-2640-fe0f","🚶‍♂":"1f6b6-200d-2642-fe0f","🚶‍♀":"1f6b6-200d-2640-fe0f","🧍‍♂":"1f9cd-200d-2642-fe0f","🧍‍♀":"1f9cd-200d-2640-fe0f","🧎‍♂":"1f9ce-200d-2642-fe0f","🧎‍♀":"1f9ce-200d-2640-fe0f","🧑‍🦯":"1f9d1-200d-1f9af","👨‍🦯":"1f468-200d-1f9af","👩‍🦯":"1f469-200d-1f9af","🧑‍🦼":"1f9d1-200d-1f9bc","👨‍🦼":"1f468-200d-1f9bc","👩‍🦼":"1f469-200d-1f9bc","🧑‍🦽":"1f9d1-200d-1f9bd","👨‍🦽":"1f468-200d-1f9bd","👩‍🦽":"1f469-200d-1f9bd","🏃‍♂":"1f3c3-200d-2642-fe0f","🏃‍♀":"1f3c3-200d-2640-fe0f","👯‍♂":"1f46f-200d-2642-fe0f","👯‍♀":"1f46f-200d-2640-fe0f","🧖‍♂":"1f9d6-200d-2642-fe0f","🧖‍♀":"1f9d6-200d-2640-fe0f","🧗‍♂":"1f9d7-200d-2642-fe0f","🧗‍♀":"1f9d7-200d-2640-fe0f","🏌‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏄‍♂":"1f3c4-200d-2642-fe0f","🏄‍♀":"1f3c4-200d-2640-fe0f","🚣‍♂":"1f6a3-200d-2642-fe0f","🚣‍♀":"1f6a3-200d-2640-fe0f","🏊‍♂":"1f3ca-200d-2642-fe0f","🏊‍♀":"1f3ca-200d-2640-fe0f","⛹‍♂":"26f9-fe0f-200d-2642-fe0f","⛹‍♀":"26f9-fe0f-200d-2640-fe0f","🏋‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋‍♀":"1f3cb-fe0f-200d-2640-fe0f","🚴‍♂":"1f6b4-200d-2642-fe0f","🚴‍♀":"1f6b4-200d-2640-fe0f","🚵‍♂":"1f6b5-200d-2642-fe0f","🚵‍♀":"1f6b5-200d-2640-fe0f","🤸‍♂":"1f938-200d-2642-fe0f","🤸‍♀":"1f938-200d-2640-fe0f","🤼‍♂":"1f93c-200d-2642-fe0f","🤼‍♀":"1f93c-200d-2640-fe0f","🤽‍♂":"1f93d-200d-2642-fe0f","🤽‍♀":"1f93d-200d-2640-fe0f","🤾‍♂":"1f93e-200d-2642-fe0f","🤾‍♀":"1f93e-200d-2640-fe0f","🤹‍♂":"1f939-200d-2642-fe0f","🤹‍♀":"1f939-200d-2640-fe0f","🧘‍♂":"1f9d8-200d-2642-fe0f","🧘‍♀":"1f9d8-200d-2640-fe0f","👨‍👦":"1f468-200d-1f466","👨‍👧":"1f468-200d-1f467","👩‍👦":"1f469-200d-1f466","👩‍👧":"1f469-200d-1f467","🐕‍🦺":"1f415-200d-1f9ba","🐈‍⬛":"1f408-200d-2b1b","🐻‍❄":"1f43b-200d-2744-fe0f","#️⃣":"23-20e3","*️⃣":"2a-20e3","0️⃣":"30-20e3","1️⃣":"31-20e3","2️⃣":"32-20e3","3️⃣":"33-20e3","4️⃣":"34-20e3","5️⃣":"35-20e3","6️⃣":"36-20e3","7️⃣":"37-20e3","8️⃣":"38-20e3","9️⃣":"39-20e3","🏳‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠":"1f3f4-200d-2620-fe0f","😶‍🌫️":"1f636-200d-1f32b-fe0f","❤️‍🔥":"2764-fe0f-200d-1f525","❤️‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨️":"1f441-200d-1f5e8","👁️‍🗨":"1f441-200d-1f5e8","🧔‍♂️":"1f9d4-200d-2642-fe0f","🧔🏻‍♂":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂":"1f9d4-1f3ff-200d-2642-fe0f","🧔‍♀️":"1f9d4-200d-2640-fe0f","🧔🏻‍♀":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀":"1f9d4-1f3ff-200d-2640-fe0f","👨🏻‍🦰":"1f468-1f3fb-200d-1f9b0","👨🏼‍🦰":"1f468-1f3fc-200d-1f9b0","👨🏽‍🦰":"1f468-1f3fd-200d-1f9b0","👨🏾‍🦰":"1f468-1f3fe-200d-1f9b0","👨🏿‍🦰":"1f468-1f3ff-200d-1f9b0","👨🏻‍🦱":"1f468-1f3fb-200d-1f9b1","👨🏼‍🦱":"1f468-1f3fc-200d-1f9b1","👨🏽‍🦱":"1f468-1f3fd-200d-1f9b1","👨🏾‍🦱":"1f468-1f3fe-200d-1f9b1","👨🏿‍🦱":"1f468-1f3ff-200d-1f9b1","👨🏻‍🦳":"1f468-1f3fb-200d-1f9b3","👨🏼‍🦳":"1f468-1f3fc-200d-1f9b3","👨🏽‍🦳":"1f468-1f3fd-200d-1f9b3","👨🏾‍🦳":"1f468-1f3fe-200d-1f9b3","👨🏿‍🦳":"1f468-1f3ff-200d-1f9b3","👨🏻‍🦲":"1f468-1f3fb-200d-1f9b2","👨🏼‍🦲":"1f468-1f3fc-200d-1f9b2","👨🏽‍🦲":"1f468-1f3fd-200d-1f9b2","👨🏾‍🦲":"1f468-1f3fe-200d-1f9b2","👨🏿‍🦲":"1f468-1f3ff-200d-1f9b2","👩🏻‍🦰":"1f469-1f3fb-200d-1f9b0","👩🏼‍🦰":"1f469-1f3fc-200d-1f9b0","👩🏽‍🦰":"1f469-1f3fd-200d-1f9b0","👩🏾‍🦰":"1f469-1f3fe-200d-1f9b0","👩🏿‍🦰":"1f469-1f3ff-200d-1f9b0","🧑🏻‍🦰":"1f9d1-1f3fb-200d-1f9b0","🧑🏼‍🦰":"1f9d1-1f3fc-200d-1f9b0","🧑🏽‍🦰":"1f9d1-1f3fd-200d-1f9b0","🧑🏾‍🦰":"1f9d1-1f3fe-200d-1f9b0","🧑🏿‍🦰":"1f9d1-1f3ff-200d-1f9b0","👩🏻‍🦱":"1f469-1f3fb-200d-1f9b1","👩🏼‍🦱":"1f469-1f3fc-200d-1f9b1","👩🏽‍🦱":"1f469-1f3fd-200d-1f9b1","👩🏾‍🦱":"1f469-1f3fe-200d-1f9b1","👩🏿‍🦱":"1f469-1f3ff-200d-1f9b1","🧑🏻‍🦱":"1f9d1-1f3fb-200d-1f9b1","🧑🏼‍🦱":"1f9d1-1f3fc-200d-1f9b1","🧑🏽‍🦱":"1f9d1-1f3fd-200d-1f9b1","🧑🏾‍🦱":"1f9d1-1f3fe-200d-1f9b1","🧑🏿‍🦱":"1f9d1-1f3ff-200d-1f9b1","👩🏻‍🦳":"1f469-1f3fb-200d-1f9b3","👩🏼‍🦳":"1f469-1f3fc-200d-1f9b3","👩🏽‍🦳":"1f469-1f3fd-200d-1f9b3","👩🏾‍🦳":"1f469-1f3fe-200d-1f9b3","👩🏿‍🦳":"1f469-1f3ff-200d-1f9b3","🧑🏻‍🦳":"1f9d1-1f3fb-200d-1f9b3","🧑🏼‍🦳":"1f9d1-1f3fc-200d-1f9b3","🧑🏽‍🦳":"1f9d1-1f3fd-200d-1f9b3","🧑🏾‍🦳":"1f9d1-1f3fe-200d-1f9b3","🧑🏿‍🦳":"1f9d1-1f3ff-200d-1f9b3","👩🏻‍🦲":"1f469-1f3fb-200d-1f9b2","👩🏼‍🦲":"1f469-1f3fc-200d-1f9b2","👩🏽‍🦲":"1f469-1f3fd-200d-1f9b2","👩🏾‍🦲":"1f469-1f3fe-200d-1f9b2","👩🏿‍🦲":"1f469-1f3ff-200d-1f9b2","🧑🏻‍🦲":"1f9d1-1f3fb-200d-1f9b2","🧑🏼‍🦲":"1f9d1-1f3fc-200d-1f9b2","🧑🏽‍🦲":"1f9d1-1f3fd-200d-1f9b2","🧑🏾‍🦲":"1f9d1-1f3fe-200d-1f9b2","🧑🏿‍🦲":"1f9d1-1f3ff-200d-1f9b2","👱‍♀️":"1f471-200d-2640-fe0f","👱🏻‍♀":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀":"1f471-1f3ff-200d-2640-fe0f","👱‍♂️":"1f471-200d-2642-fe0f","👱🏻‍♂":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂":"1f471-1f3ff-200d-2642-fe0f","🙍‍♂️":"1f64d-200d-2642-fe0f","🙍🏻‍♂":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂":"1f64d-1f3ff-200d-2642-fe0f","🙍‍♀️":"1f64d-200d-2640-fe0f","🙍🏻‍♀":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀":"1f64d-1f3ff-200d-2640-fe0f","🙎‍♂️":"1f64e-200d-2642-fe0f","🙎🏻‍♂":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂":"1f64e-1f3ff-200d-2642-fe0f","🙎‍♀️":"1f64e-200d-2640-fe0f","🙎🏻‍♀":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀":"1f64e-1f3ff-200d-2640-fe0f","🙅‍♂️":"1f645-200d-2642-fe0f","🙅🏻‍♂":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂":"1f645-1f3ff-200d-2642-fe0f","🙅‍♀️":"1f645-200d-2640-fe0f","🙅🏻‍♀":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀":"1f645-1f3ff-200d-2640-fe0f","🙆‍♂️":"1f646-200d-2642-fe0f","🙆🏻‍♂":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂":"1f646-1f3ff-200d-2642-fe0f","🙆‍♀️":"1f646-200d-2640-fe0f","🙆🏻‍♀":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀":"1f646-1f3ff-200d-2640-fe0f","💁‍♂️":"1f481-200d-2642-fe0f","💁🏻‍♂":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂":"1f481-1f3ff-200d-2642-fe0f","💁‍♀️":"1f481-200d-2640-fe0f","💁🏻‍♀":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀":"1f481-1f3ff-200d-2640-fe0f","🙋‍♂️":"1f64b-200d-2642-fe0f","🙋🏻‍♂":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂":"1f64b-1f3ff-200d-2642-fe0f","🙋‍♀️":"1f64b-200d-2640-fe0f","🙋🏻‍♀":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀":"1f64b-1f3ff-200d-2640-fe0f","🧏‍♂️":"1f9cf-200d-2642-fe0f","🧏🏻‍♂":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂":"1f9cf-1f3ff-200d-2642-fe0f","🧏‍♀️":"1f9cf-200d-2640-fe0f","🧏🏻‍♀":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀":"1f9cf-1f3ff-200d-2640-fe0f","🙇‍♂️":"1f647-200d-2642-fe0f","🙇🏻‍♂":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂":"1f647-1f3ff-200d-2642-fe0f","🙇‍♀️":"1f647-200d-2640-fe0f","🙇🏻‍♀":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀":"1f647-1f3ff-200d-2640-fe0f","🤦‍♂️":"1f926-200d-2642-fe0f","🤦🏻‍♂":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂":"1f926-1f3ff-200d-2642-fe0f","🤦‍♀️":"1f926-200d-2640-fe0f","🤦🏻‍♀":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀":"1f926-1f3ff-200d-2640-fe0f","🤷‍♂️":"1f937-200d-2642-fe0f","🤷🏻‍♂":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂":"1f937-1f3ff-200d-2642-fe0f","🤷‍♀️":"1f937-200d-2640-fe0f","🤷🏻‍♀":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀":"1f937-1f3ff-200d-2640-fe0f","🧑‍⚕️":"1f9d1-200d-2695-fe0f","🧑🏻‍⚕":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕":"1f9d1-1f3ff-200d-2695-fe0f","👨‍⚕️":"1f468-200d-2695-fe0f","👨🏻‍⚕":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕":"1f468-1f3ff-200d-2695-fe0f","👩‍⚕️":"1f469-200d-2695-fe0f","👩🏻‍⚕":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍🎓":"1f9d1-1f3fb-200d-1f393","🧑🏼‍🎓":"1f9d1-1f3fc-200d-1f393","🧑🏽‍🎓":"1f9d1-1f3fd-200d-1f393","🧑🏾‍🎓":"1f9d1-1f3fe-200d-1f393","🧑🏿‍🎓":"1f9d1-1f3ff-200d-1f393","👨🏻‍🎓":"1f468-1f3fb-200d-1f393","👨🏼‍🎓":"1f468-1f3fc-200d-1f393","👨🏽‍🎓":"1f468-1f3fd-200d-1f393","👨🏾‍🎓":"1f468-1f3fe-200d-1f393","👨🏿‍🎓":"1f468-1f3ff-200d-1f393","👩🏻‍🎓":"1f469-1f3fb-200d-1f393","👩🏼‍🎓":"1f469-1f3fc-200d-1f393","👩🏽‍🎓":"1f469-1f3fd-200d-1f393","👩🏾‍🎓":"1f469-1f3fe-200d-1f393","👩🏿‍🎓":"1f469-1f3ff-200d-1f393","🧑🏻‍🏫":"1f9d1-1f3fb-200d-1f3eb","🧑🏼‍🏫":"1f9d1-1f3fc-200d-1f3eb","🧑🏽‍🏫":"1f9d1-1f3fd-200d-1f3eb","🧑🏾‍🏫":"1f9d1-1f3fe-200d-1f3eb","🧑🏿‍🏫":"1f9d1-1f3ff-200d-1f3eb","👨🏻‍🏫":"1f468-1f3fb-200d-1f3eb","👨🏼‍🏫":"1f468-1f3fc-200d-1f3eb","👨🏽‍🏫":"1f468-1f3fd-200d-1f3eb","👨🏾‍🏫":"1f468-1f3fe-200d-1f3eb","👨🏿‍🏫":"1f468-1f3ff-200d-1f3eb","👩🏻‍🏫":"1f469-1f3fb-200d-1f3eb","👩🏼‍🏫":"1f469-1f3fc-200d-1f3eb","👩🏽‍🏫":"1f469-1f3fd-200d-1f3eb","👩🏾‍🏫":"1f469-1f3fe-200d-1f3eb","👩🏿‍🏫":"1f469-1f3ff-200d-1f3eb","🧑‍⚖️":"1f9d1-200d-2696-fe0f","🧑🏻‍⚖":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖":"1f9d1-1f3ff-200d-2696-fe0f","👨‍⚖️":"1f468-200d-2696-fe0f","👨🏻‍⚖":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖":"1f468-1f3ff-200d-2696-fe0f","👩‍⚖️":"1f469-200d-2696-fe0f","👩🏻‍⚖":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍🌾":"1f9d1-1f3fb-200d-1f33e","🧑🏼‍🌾":"1f9d1-1f3fc-200d-1f33e","🧑🏽‍🌾":"1f9d1-1f3fd-200d-1f33e","🧑🏾‍🌾":"1f9d1-1f3fe-200d-1f33e","🧑🏿‍🌾":"1f9d1-1f3ff-200d-1f33e","👨🏻‍🌾":"1f468-1f3fb-200d-1f33e","👨🏼‍🌾":"1f468-1f3fc-200d-1f33e","👨🏽‍🌾":"1f468-1f3fd-200d-1f33e","👨🏾‍🌾":"1f468-1f3fe-200d-1f33e","👨🏿‍🌾":"1f468-1f3ff-200d-1f33e","👩🏻‍🌾":"1f469-1f3fb-200d-1f33e","👩🏼‍🌾":"1f469-1f3fc-200d-1f33e","👩🏽‍🌾":"1f469-1f3fd-200d-1f33e","👩🏾‍🌾":"1f469-1f3fe-200d-1f33e","👩🏿‍🌾":"1f469-1f3ff-200d-1f33e","🧑🏻‍🍳":"1f9d1-1f3fb-200d-1f373","🧑🏼‍🍳":"1f9d1-1f3fc-200d-1f373","🧑🏽‍🍳":"1f9d1-1f3fd-200d-1f373","🧑🏾‍🍳":"1f9d1-1f3fe-200d-1f373","🧑🏿‍🍳":"1f9d1-1f3ff-200d-1f373","👨🏻‍🍳":"1f468-1f3fb-200d-1f373","👨🏼‍🍳":"1f468-1f3fc-200d-1f373","👨🏽‍🍳":"1f468-1f3fd-200d-1f373","👨🏾‍🍳":"1f468-1f3fe-200d-1f373","👨🏿‍🍳":"1f468-1f3ff-200d-1f373","👩🏻‍🍳":"1f469-1f3fb-200d-1f373","👩🏼‍🍳":"1f469-1f3fc-200d-1f373","👩🏽‍🍳":"1f469-1f3fd-200d-1f373","👩🏾‍🍳":"1f469-1f3fe-200d-1f373","👩🏿‍🍳":"1f469-1f3ff-200d-1f373","🧑🏻‍🔧":"1f9d1-1f3fb-200d-1f527","🧑🏼‍🔧":"1f9d1-1f3fc-200d-1f527","🧑🏽‍🔧":"1f9d1-1f3fd-200d-1f527","🧑🏾‍🔧":"1f9d1-1f3fe-200d-1f527","🧑🏿‍🔧":"1f9d1-1f3ff-200d-1f527","👨🏻‍🔧":"1f468-1f3fb-200d-1f527","👨🏼‍🔧":"1f468-1f3fc-200d-1f527","👨🏽‍🔧":"1f468-1f3fd-200d-1f527","👨🏾‍🔧":"1f468-1f3fe-200d-1f527","👨🏿‍🔧":"1f468-1f3ff-200d-1f527","👩🏻‍🔧":"1f469-1f3fb-200d-1f527","👩🏼‍🔧":"1f469-1f3fc-200d-1f527","👩🏽‍🔧":"1f469-1f3fd-200d-1f527","👩🏾‍🔧":"1f469-1f3fe-200d-1f527","👩🏿‍🔧":"1f469-1f3ff-200d-1f527","🧑🏻‍🏭":"1f9d1-1f3fb-200d-1f3ed","🧑🏼‍🏭":"1f9d1-1f3fc-200d-1f3ed","🧑🏽‍🏭":"1f9d1-1f3fd-200d-1f3ed","🧑🏾‍🏭":"1f9d1-1f3fe-200d-1f3ed","🧑🏿‍🏭":"1f9d1-1f3ff-200d-1f3ed","👨🏻‍🏭":"1f468-1f3fb-200d-1f3ed","👨🏼‍🏭":"1f468-1f3fc-200d-1f3ed","👨🏽‍🏭":"1f468-1f3fd-200d-1f3ed","👨🏾‍🏭":"1f468-1f3fe-200d-1f3ed","👨🏿‍🏭":"1f468-1f3ff-200d-1f3ed","👩🏻‍🏭":"1f469-1f3fb-200d-1f3ed","👩🏼‍🏭":"1f469-1f3fc-200d-1f3ed","👩🏽‍🏭":"1f469-1f3fd-200d-1f3ed","👩🏾‍🏭":"1f469-1f3fe-200d-1f3ed","👩🏿‍🏭":"1f469-1f3ff-200d-1f3ed","🧑🏻‍💼":"1f9d1-1f3fb-200d-1f4bc","🧑🏼‍💼":"1f9d1-1f3fc-200d-1f4bc","🧑🏽‍💼":"1f9d1-1f3fd-200d-1f4bc","🧑🏾‍💼":"1f9d1-1f3fe-200d-1f4bc","🧑🏿‍💼":"1f9d1-1f3ff-200d-1f4bc","👨🏻‍💼":"1f468-1f3fb-200d-1f4bc","👨🏼‍💼":"1f468-1f3fc-200d-1f4bc","👨🏽‍💼":"1f468-1f3fd-200d-1f4bc","👨🏾‍💼":"1f468-1f3fe-200d-1f4bc","👨🏿‍💼":"1f468-1f3ff-200d-1f4bc","👩🏻‍💼":"1f469-1f3fb-200d-1f4bc","👩🏼‍💼":"1f469-1f3fc-200d-1f4bc","👩🏽‍💼":"1f469-1f3fd-200d-1f4bc","👩🏾‍💼":"1f469-1f3fe-200d-1f4bc","👩🏿‍💼":"1f469-1f3ff-200d-1f4bc","🧑🏻‍🔬":"1f9d1-1f3fb-200d-1f52c","🧑🏼‍🔬":"1f9d1-1f3fc-200d-1f52c","🧑🏽‍🔬":"1f9d1-1f3fd-200d-1f52c","🧑🏾‍🔬":"1f9d1-1f3fe-200d-1f52c","🧑🏿‍🔬":"1f9d1-1f3ff-200d-1f52c","👨🏻‍🔬":"1f468-1f3fb-200d-1f52c","👨🏼‍🔬":"1f468-1f3fc-200d-1f52c","👨🏽‍🔬":"1f468-1f3fd-200d-1f52c","👨🏾‍🔬":"1f468-1f3fe-200d-1f52c","👨🏿‍🔬":"1f468-1f3ff-200d-1f52c","👩🏻‍🔬":"1f469-1f3fb-200d-1f52c","👩🏼‍🔬":"1f469-1f3fc-200d-1f52c","👩🏽‍🔬":"1f469-1f3fd-200d-1f52c","👩🏾‍🔬":"1f469-1f3fe-200d-1f52c","👩🏿‍🔬":"1f469-1f3ff-200d-1f52c","🧑🏻‍💻":"1f9d1-1f3fb-200d-1f4bb","🧑🏼‍💻":"1f9d1-1f3fc-200d-1f4bb","🧑🏽‍💻":"1f9d1-1f3fd-200d-1f4bb","🧑🏾‍💻":"1f9d1-1f3fe-200d-1f4bb","🧑🏿‍💻":"1f9d1-1f3ff-200d-1f4bb","👨🏻‍💻":"1f468-1f3fb-200d-1f4bb","👨🏼‍💻":"1f468-1f3fc-200d-1f4bb","👨🏽‍💻":"1f468-1f3fd-200d-1f4bb","👨🏾‍💻":"1f468-1f3fe-200d-1f4bb","👨🏿‍💻":"1f468-1f3ff-200d-1f4bb","👩🏻‍💻":"1f469-1f3fb-200d-1f4bb","👩🏼‍💻":"1f469-1f3fc-200d-1f4bb","👩🏽‍💻":"1f469-1f3fd-200d-1f4bb","👩🏾‍💻":"1f469-1f3fe-200d-1f4bb","👩🏿‍💻":"1f469-1f3ff-200d-1f4bb","🧑🏻‍🎤":"1f9d1-1f3fb-200d-1f3a4","🧑🏼‍🎤":"1f9d1-1f3fc-200d-1f3a4","🧑🏽‍🎤":"1f9d1-1f3fd-200d-1f3a4","🧑🏾‍🎤":"1f9d1-1f3fe-200d-1f3a4","🧑🏿‍🎤":"1f9d1-1f3ff-200d-1f3a4","👨🏻‍🎤":"1f468-1f3fb-200d-1f3a4","👨🏼‍🎤":"1f468-1f3fc-200d-1f3a4","👨🏽‍🎤":"1f468-1f3fd-200d-1f3a4","👨🏾‍🎤":"1f468-1f3fe-200d-1f3a4","👨🏿‍🎤":"1f468-1f3ff-200d-1f3a4","👩🏻‍🎤":"1f469-1f3fb-200d-1f3a4","👩🏼‍🎤":"1f469-1f3fc-200d-1f3a4","👩🏽‍🎤":"1f469-1f3fd-200d-1f3a4","👩🏾‍🎤":"1f469-1f3fe-200d-1f3a4","👩🏿‍🎤":"1f469-1f3ff-200d-1f3a4","🧑🏻‍🎨":"1f9d1-1f3fb-200d-1f3a8","🧑🏼‍🎨":"1f9d1-1f3fc-200d-1f3a8","🧑🏽‍🎨":"1f9d1-1f3fd-200d-1f3a8","🧑🏾‍🎨":"1f9d1-1f3fe-200d-1f3a8","🧑🏿‍🎨":"1f9d1-1f3ff-200d-1f3a8","👨🏻‍🎨":"1f468-1f3fb-200d-1f3a8","👨🏼‍🎨":"1f468-1f3fc-200d-1f3a8","👨🏽‍🎨":"1f468-1f3fd-200d-1f3a8","👨🏾‍🎨":"1f468-1f3fe-200d-1f3a8","👨🏿‍🎨":"1f468-1f3ff-200d-1f3a8","👩🏻‍🎨":"1f469-1f3fb-200d-1f3a8","👩🏼‍🎨":"1f469-1f3fc-200d-1f3a8","👩🏽‍🎨":"1f469-1f3fd-200d-1f3a8","👩🏾‍🎨":"1f469-1f3fe-200d-1f3a8","👩🏿‍🎨":"1f469-1f3ff-200d-1f3a8","🧑‍✈️":"1f9d1-200d-2708-fe0f","🧑🏻‍✈":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈":"1f9d1-1f3ff-200d-2708-fe0f","👨‍✈️":"1f468-200d-2708-fe0f","👨🏻‍✈":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈":"1f468-1f3ff-200d-2708-fe0f","👩‍✈️":"1f469-200d-2708-fe0f","👩🏻‍✈":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈":"1f469-1f3ff-200d-2708-fe0f","🧑🏻‍🚀":"1f9d1-1f3fb-200d-1f680","🧑🏼‍🚀":"1f9d1-1f3fc-200d-1f680","🧑🏽‍🚀":"1f9d1-1f3fd-200d-1f680","🧑🏾‍🚀":"1f9d1-1f3fe-200d-1f680","🧑🏿‍🚀":"1f9d1-1f3ff-200d-1f680","👨🏻‍🚀":"1f468-1f3fb-200d-1f680","👨🏼‍🚀":"1f468-1f3fc-200d-1f680","👨🏽‍🚀":"1f468-1f3fd-200d-1f680","👨🏾‍🚀":"1f468-1f3fe-200d-1f680","👨🏿‍🚀":"1f468-1f3ff-200d-1f680","👩🏻‍🚀":"1f469-1f3fb-200d-1f680","👩🏼‍🚀":"1f469-1f3fc-200d-1f680","👩🏽‍🚀":"1f469-1f3fd-200d-1f680","👩🏾‍🚀":"1f469-1f3fe-200d-1f680","👩🏿‍🚀":"1f469-1f3ff-200d-1f680","🧑🏻‍🚒":"1f9d1-1f3fb-200d-1f692","🧑🏼‍🚒":"1f9d1-1f3fc-200d-1f692","🧑🏽‍🚒":"1f9d1-1f3fd-200d-1f692","🧑🏾‍🚒":"1f9d1-1f3fe-200d-1f692","🧑🏿‍🚒":"1f9d1-1f3ff-200d-1f692","👨🏻‍🚒":"1f468-1f3fb-200d-1f692","👨🏼‍🚒":"1f468-1f3fc-200d-1f692","👨🏽‍🚒":"1f468-1f3fd-200d-1f692","👨🏾‍🚒":"1f468-1f3fe-200d-1f692","👨🏿‍🚒":"1f468-1f3ff-200d-1f692","👩🏻‍🚒":"1f469-1f3fb-200d-1f692","👩🏼‍🚒":"1f469-1f3fc-200d-1f692","👩🏽‍🚒":"1f469-1f3fd-200d-1f692","👩🏾‍🚒":"1f469-1f3fe-200d-1f692","👩🏿‍🚒":"1f469-1f3ff-200d-1f692","👮‍♂️":"1f46e-200d-2642-fe0f","👮🏻‍♂":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂":"1f46e-1f3ff-200d-2642-fe0f","👮‍♀️":"1f46e-200d-2640-fe0f","👮🏻‍♀":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀":"1f46e-1f3ff-200d-2640-fe0f","🕵‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵️‍♂":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂":"1f575-1f3ff-200d-2642-fe0f","🕵‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵️‍♀":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀":"1f575-1f3ff-200d-2640-fe0f","💂‍♂️":"1f482-200d-2642-fe0f","💂🏻‍♂":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂":"1f482-1f3ff-200d-2642-fe0f","💂‍♀️":"1f482-200d-2640-fe0f","💂🏻‍♀":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀":"1f482-1f3ff-200d-2640-fe0f","👷‍♂️":"1f477-200d-2642-fe0f","👷🏻‍♂":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂":"1f477-1f3ff-200d-2642-fe0f","👷‍♀️":"1f477-200d-2640-fe0f","👷🏻‍♀":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀":"1f477-1f3ff-200d-2640-fe0f","👳‍♂️":"1f473-200d-2642-fe0f","👳🏻‍♂":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂":"1f473-1f3ff-200d-2642-fe0f","👳‍♀️":"1f473-200d-2640-fe0f","👳🏻‍♀":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀":"1f473-1f3ff-200d-2640-fe0f","🤵‍♂️":"1f935-200d-2642-fe0f","🤵🏻‍♂":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂":"1f935-1f3ff-200d-2642-fe0f","🤵‍♀️":"1f935-200d-2640-fe0f","🤵🏻‍♀":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀":"1f935-1f3ff-200d-2640-fe0f","👰‍♂️":"1f470-200d-2642-fe0f","👰🏻‍♂":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂":"1f470-1f3ff-200d-2642-fe0f","👰‍♀️":"1f470-200d-2640-fe0f","👰🏻‍♀":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀":"1f470-1f3ff-200d-2640-fe0f","👩🏻‍🍼":"1f469-1f3fb-200d-1f37c","👩🏼‍🍼":"1f469-1f3fc-200d-1f37c","👩🏽‍🍼":"1f469-1f3fd-200d-1f37c","👩🏾‍🍼":"1f469-1f3fe-200d-1f37c","👩🏿‍🍼":"1f469-1f3ff-200d-1f37c","👨🏻‍🍼":"1f468-1f3fb-200d-1f37c","👨🏼‍🍼":"1f468-1f3fc-200d-1f37c","👨🏽‍🍼":"1f468-1f3fd-200d-1f37c","👨🏾‍🍼":"1f468-1f3fe-200d-1f37c","👨🏿‍🍼":"1f468-1f3ff-200d-1f37c","🧑🏻‍🍼":"1f9d1-1f3fb-200d-1f37c","🧑🏼‍🍼":"1f9d1-1f3fc-200d-1f37c","🧑🏽‍🍼":"1f9d1-1f3fd-200d-1f37c","🧑🏾‍🍼":"1f9d1-1f3fe-200d-1f37c","🧑🏿‍🍼":"1f9d1-1f3ff-200d-1f37c","🧑🏻‍🎄":"1f9d1-1f3fb-200d-1f384","🧑🏼‍🎄":"1f9d1-1f3fc-200d-1f384","🧑🏽‍🎄":"1f9d1-1f3fd-200d-1f384","🧑🏾‍🎄":"1f9d1-1f3fe-200d-1f384","🧑🏿‍🎄":"1f9d1-1f3ff-200d-1f384","🦸‍♂️":"1f9b8-200d-2642-fe0f","🦸🏻‍♂":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂":"1f9b8-1f3ff-200d-2642-fe0f","🦸‍♀️":"1f9b8-200d-2640-fe0f","🦸🏻‍♀":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀":"1f9b8-1f3ff-200d-2640-fe0f","🦹‍♂️":"1f9b9-200d-2642-fe0f","🦹🏻‍♂":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂":"1f9b9-1f3ff-200d-2642-fe0f","🦹‍♀️":"1f9b9-200d-2640-fe0f","🦹🏻‍♀":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀":"1f9b9-1f3ff-200d-2640-fe0f","🧙‍♂️":"1f9d9-200d-2642-fe0f","🧙🏻‍♂":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂":"1f9d9-1f3ff-200d-2642-fe0f","🧙‍♀️":"1f9d9-200d-2640-fe0f","🧙🏻‍♀":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀":"1f9d9-1f3ff-200d-2640-fe0f","🧚‍♂️":"1f9da-200d-2642-fe0f","🧚🏻‍♂":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂":"1f9da-1f3ff-200d-2642-fe0f","🧚‍♀️":"1f9da-200d-2640-fe0f","🧚🏻‍♀":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀":"1f9da-1f3ff-200d-2640-fe0f","🧛‍♂️":"1f9db-200d-2642-fe0f","🧛🏻‍♂":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂":"1f9db-1f3ff-200d-2642-fe0f","🧛‍♀️":"1f9db-200d-2640-fe0f","🧛🏻‍♀":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀":"1f9db-1f3ff-200d-2640-fe0f","🧜‍♂️":"1f9dc-200d-2642-fe0f","🧜🏻‍♂":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂":"1f9dc-1f3ff-200d-2642-fe0f","🧜‍♀️":"1f9dc-200d-2640-fe0f","🧜🏻‍♀":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀":"1f9dc-1f3ff-200d-2640-fe0f","🧝‍♂️":"1f9dd-200d-2642-fe0f","🧝🏻‍♂":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂":"1f9dd-1f3ff-200d-2642-fe0f","🧝‍♀️":"1f9dd-200d-2640-fe0f","🧝🏻‍♀":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀":"1f9dd-1f3ff-200d-2640-fe0f","🧞‍♂️":"1f9de-200d-2642-fe0f","🧞‍♀️":"1f9de-200d-2640-fe0f","🧟‍♂️":"1f9df-200d-2642-fe0f","🧟‍♀️":"1f9df-200d-2640-fe0f","💆‍♂️":"1f486-200d-2642-fe0f","💆🏻‍♂":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂":"1f486-1f3ff-200d-2642-fe0f","💆‍♀️":"1f486-200d-2640-fe0f","💆🏻‍♀":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀":"1f486-1f3ff-200d-2640-fe0f","💇‍♂️":"1f487-200d-2642-fe0f","💇🏻‍♂":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂":"1f487-1f3ff-200d-2642-fe0f","💇‍♀️":"1f487-200d-2640-fe0f","💇🏻‍♀":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀":"1f487-1f3ff-200d-2640-fe0f","🚶‍♂️":"1f6b6-200d-2642-fe0f","🚶🏻‍♂":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂":"1f6b6-1f3ff-200d-2642-fe0f","🚶‍♀️":"1f6b6-200d-2640-fe0f","🚶🏻‍♀":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀":"1f6b6-1f3ff-200d-2640-fe0f","🧍‍♂️":"1f9cd-200d-2642-fe0f","🧍🏻‍♂":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂":"1f9cd-1f3ff-200d-2642-fe0f","🧍‍♀️":"1f9cd-200d-2640-fe0f","🧍🏻‍♀":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀":"1f9cd-1f3ff-200d-2640-fe0f","🧎‍♂️":"1f9ce-200d-2642-fe0f","🧎🏻‍♂":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂":"1f9ce-1f3ff-200d-2642-fe0f","🧎‍♀️":"1f9ce-200d-2640-fe0f","🧎🏻‍♀":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀":"1f9ce-1f3ff-200d-2640-fe0f","🧑🏻‍🦯":"1f9d1-1f3fb-200d-1f9af","🧑🏼‍🦯":"1f9d1-1f3fc-200d-1f9af","🧑🏽‍🦯":"1f9d1-1f3fd-200d-1f9af","🧑🏾‍🦯":"1f9d1-1f3fe-200d-1f9af","🧑🏿‍🦯":"1f9d1-1f3ff-200d-1f9af","👨🏻‍🦯":"1f468-1f3fb-200d-1f9af","👨🏼‍🦯":"1f468-1f3fc-200d-1f9af","👨🏽‍🦯":"1f468-1f3fd-200d-1f9af","👨🏾‍🦯":"1f468-1f3fe-200d-1f9af","👨🏿‍🦯":"1f468-1f3ff-200d-1f9af","👩🏻‍🦯":"1f469-1f3fb-200d-1f9af","👩🏼‍🦯":"1f469-1f3fc-200d-1f9af","👩🏽‍🦯":"1f469-1f3fd-200d-1f9af","👩🏾‍🦯":"1f469-1f3fe-200d-1f9af","👩🏿‍🦯":"1f469-1f3ff-200d-1f9af","🧑🏻‍🦼":"1f9d1-1f3fb-200d-1f9bc","🧑🏼‍🦼":"1f9d1-1f3fc-200d-1f9bc","🧑🏽‍🦼":"1f9d1-1f3fd-200d-1f9bc","🧑🏾‍🦼":"1f9d1-1f3fe-200d-1f9bc","🧑🏿‍🦼":"1f9d1-1f3ff-200d-1f9bc","👨🏻‍🦼":"1f468-1f3fb-200d-1f9bc","👨🏼‍🦼":"1f468-1f3fc-200d-1f9bc","👨🏽‍🦼":"1f468-1f3fd-200d-1f9bc","👨🏾‍🦼":"1f468-1f3fe-200d-1f9bc","👨🏿‍🦼":"1f468-1f3ff-200d-1f9bc","👩🏻‍🦼":"1f469-1f3fb-200d-1f9bc","👩🏼‍🦼":"1f469-1f3fc-200d-1f9bc","👩🏽‍🦼":"1f469-1f3fd-200d-1f9bc","👩🏾‍🦼":"1f469-1f3fe-200d-1f9bc","👩🏿‍🦼":"1f469-1f3ff-200d-1f9bc","🧑🏻‍🦽":"1f9d1-1f3fb-200d-1f9bd","🧑🏼‍🦽":"1f9d1-1f3fc-200d-1f9bd","🧑🏽‍🦽":"1f9d1-1f3fd-200d-1f9bd","🧑🏾‍🦽":"1f9d1-1f3fe-200d-1f9bd","🧑🏿‍🦽":"1f9d1-1f3ff-200d-1f9bd","👨🏻‍🦽":"1f468-1f3fb-200d-1f9bd","👨🏼‍🦽":"1f468-1f3fc-200d-1f9bd","👨🏽‍🦽":"1f468-1f3fd-200d-1f9bd","👨🏾‍🦽":"1f468-1f3fe-200d-1f9bd","👨🏿‍🦽":"1f468-1f3ff-200d-1f9bd","👩🏻‍🦽":"1f469-1f3fb-200d-1f9bd","👩🏼‍🦽":"1f469-1f3fc-200d-1f9bd","👩🏽‍🦽":"1f469-1f3fd-200d-1f9bd","👩🏾‍🦽":"1f469-1f3fe-200d-1f9bd","👩🏿‍🦽":"1f469-1f3ff-200d-1f9bd","🏃‍♂️":"1f3c3-200d-2642-fe0f","🏃🏻‍♂":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂":"1f3c3-1f3ff-200d-2642-fe0f","🏃‍♀️":"1f3c3-200d-2640-fe0f","🏃🏻‍♀":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀":"1f3c3-1f3ff-200d-2640-fe0f","👯‍♂️":"1f46f-200d-2642-fe0f","👯‍♀️":"1f46f-200d-2640-fe0f","🧖‍♂️":"1f9d6-200d-2642-fe0f","🧖🏻‍♂":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂":"1f9d6-1f3ff-200d-2642-fe0f","🧖‍♀️":"1f9d6-200d-2640-fe0f","🧖🏻‍♀":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀":"1f9d6-1f3ff-200d-2640-fe0f","🧗‍♂️":"1f9d7-200d-2642-fe0f","🧗🏻‍♂":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂":"1f9d7-1f3ff-200d-2642-fe0f","🧗‍♀️":"1f9d7-200d-2640-fe0f","🧗🏻‍♀":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀":"1f9d7-1f3ff-200d-2640-fe0f","🏌‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌️‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂":"1f3cc-1f3ff-200d-2642-fe0f","🏌‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌️‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀":"1f3cc-1f3ff-200d-2640-fe0f","🏄‍♂️":"1f3c4-200d-2642-fe0f","🏄🏻‍♂":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂":"1f3c4-1f3ff-200d-2642-fe0f","🏄‍♀️":"1f3c4-200d-2640-fe0f","🏄🏻‍♀":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀":"1f3c4-1f3ff-200d-2640-fe0f","🚣‍♂️":"1f6a3-200d-2642-fe0f","🚣🏻‍♂":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂":"1f6a3-1f3ff-200d-2642-fe0f","🚣‍♀️":"1f6a3-200d-2640-fe0f","🚣🏻‍♀":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀":"1f6a3-1f3ff-200d-2640-fe0f","🏊‍♂️":"1f3ca-200d-2642-fe0f","🏊🏻‍♂":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂":"1f3ca-1f3ff-200d-2642-fe0f","🏊‍♀️":"1f3ca-200d-2640-fe0f","🏊🏻‍♀":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀":"1f3ca-1f3ff-200d-2640-fe0f","⛹‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹️‍♂":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂":"26f9-1f3ff-200d-2642-fe0f","⛹‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹️‍♀":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀":"26f9-1f3ff-200d-2640-fe0f","🏋‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋️‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂":"1f3cb-1f3ff-200d-2642-fe0f","🏋‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋️‍♀":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀":"1f3cb-1f3ff-200d-2640-fe0f","🚴‍♂️":"1f6b4-200d-2642-fe0f","🚴🏻‍♂":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂":"1f6b4-1f3ff-200d-2642-fe0f","🚴‍♀️":"1f6b4-200d-2640-fe0f","🚴🏻‍♀":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀":"1f6b4-1f3ff-200d-2640-fe0f","🚵‍♂️":"1f6b5-200d-2642-fe0f","🚵🏻‍♂":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂":"1f6b5-1f3ff-200d-2642-fe0f","🚵‍♀️":"1f6b5-200d-2640-fe0f","🚵🏻‍♀":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀":"1f6b5-1f3ff-200d-2640-fe0f","🤸‍♂️":"1f938-200d-2642-fe0f","🤸🏻‍♂":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂":"1f938-1f3ff-200d-2642-fe0f","🤸‍♀️":"1f938-200d-2640-fe0f","🤸🏻‍♀":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀":"1f938-1f3ff-200d-2640-fe0f","🤼‍♂️":"1f93c-200d-2642-fe0f","🤼‍♀️":"1f93c-200d-2640-fe0f","🤽‍♂️":"1f93d-200d-2642-fe0f","🤽🏻‍♂":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂":"1f93d-1f3ff-200d-2642-fe0f","🤽‍♀️":"1f93d-200d-2640-fe0f","🤽🏻‍♀":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀":"1f93d-1f3ff-200d-2640-fe0f","🤾‍♂️":"1f93e-200d-2642-fe0f","🤾🏻‍♂":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂":"1f93e-1f3ff-200d-2642-fe0f","🤾‍♀️":"1f93e-200d-2640-fe0f","🤾🏻‍♀":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀":"1f93e-1f3ff-200d-2640-fe0f","🤹‍♂️":"1f939-200d-2642-fe0f","🤹🏻‍♂":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂":"1f939-1f3ff-200d-2642-fe0f","🤹‍♀️":"1f939-200d-2640-fe0f","🤹🏻‍♀":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀":"1f939-1f3ff-200d-2640-fe0f","🧘‍♂️":"1f9d8-200d-2642-fe0f","🧘🏻‍♂":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂":"1f9d8-1f3ff-200d-2642-fe0f","🧘‍♀️":"1f9d8-200d-2640-fe0f","🧘🏻‍♀":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀":"1f9d8-1f3ff-200d-2640-fe0f","🐻‍❄️":"1f43b-200d-2744-fe0f","🏳️‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","🏳️‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠️":"1f3f4-200d-2620-fe0f","👁️‍🗨️":"1f441-200d-1f5e8","🧔🏻‍♂️":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂️":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂️":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂️":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂️":"1f9d4-1f3ff-200d-2642-fe0f","🧔🏻‍♀️":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀️":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀️":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀️":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀️":"1f9d4-1f3ff-200d-2640-fe0f","👱🏻‍♀️":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀️":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀️":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀️":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀️":"1f471-1f3ff-200d-2640-fe0f","👱🏻‍♂️":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂️":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂️":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂️":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂️":"1f471-1f3ff-200d-2642-fe0f","🙍🏻‍♂️":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂️":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂️":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂️":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂️":"1f64d-1f3ff-200d-2642-fe0f","🙍🏻‍♀️":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀️":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀️":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀️":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀️":"1f64d-1f3ff-200d-2640-fe0f","🙎🏻‍♂️":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂️":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂️":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂️":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂️":"1f64e-1f3ff-200d-2642-fe0f","🙎🏻‍♀️":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀️":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀️":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀️":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀️":"1f64e-1f3ff-200d-2640-fe0f","🙅🏻‍♂️":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂️":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂️":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂️":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂️":"1f645-1f3ff-200d-2642-fe0f","🙅🏻‍♀️":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀️":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀️":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀️":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀️":"1f645-1f3ff-200d-2640-fe0f","🙆🏻‍♂️":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂️":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂️":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂️":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂️":"1f646-1f3ff-200d-2642-fe0f","🙆🏻‍♀️":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀️":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀️":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀️":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀️":"1f646-1f3ff-200d-2640-fe0f","💁🏻‍♂️":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂️":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂️":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂️":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂️":"1f481-1f3ff-200d-2642-fe0f","💁🏻‍♀️":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀️":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀️":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀️":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀️":"1f481-1f3ff-200d-2640-fe0f","🙋🏻‍♂️":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂️":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂️":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂️":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂️":"1f64b-1f3ff-200d-2642-fe0f","🙋🏻‍♀️":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀️":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀️":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀️":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀️":"1f64b-1f3ff-200d-2640-fe0f","🧏🏻‍♂️":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂️":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂️":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂️":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂️":"1f9cf-1f3ff-200d-2642-fe0f","🧏🏻‍♀️":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀️":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀️":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀️":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀️":"1f9cf-1f3ff-200d-2640-fe0f","🙇🏻‍♂️":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂️":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂️":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂️":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂️":"1f647-1f3ff-200d-2642-fe0f","🙇🏻‍♀️":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀️":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀️":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀️":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀️":"1f647-1f3ff-200d-2640-fe0f","🤦🏻‍♂️":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂️":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂️":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂️":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂️":"1f926-1f3ff-200d-2642-fe0f","🤦🏻‍♀️":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀️":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀️":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀️":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀️":"1f926-1f3ff-200d-2640-fe0f","🤷🏻‍♂️":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂️":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂️":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂️":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂️":"1f937-1f3ff-200d-2642-fe0f","🤷🏻‍♀️":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀️":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀️":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀️":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀️":"1f937-1f3ff-200d-2640-fe0f","🧑🏻‍⚕️":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕️":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕️":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕️":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕️":"1f9d1-1f3ff-200d-2695-fe0f","👨🏻‍⚕️":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕️":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕️":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕️":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕️":"1f468-1f3ff-200d-2695-fe0f","👩🏻‍⚕️":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕️":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕️":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕️":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕️":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍⚖️":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖️":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖️":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖️":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖️":"1f9d1-1f3ff-200d-2696-fe0f","👨🏻‍⚖️":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖️":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖️":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖️":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖️":"1f468-1f3ff-200d-2696-fe0f","👩🏻‍⚖️":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖️":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖️":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖️":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖️":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍✈️":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈️":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈️":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈️":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈️":"1f9d1-1f3ff-200d-2708-fe0f","👨🏻‍✈️":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈️":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈️":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈️":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈️":"1f468-1f3ff-200d-2708-fe0f","👩🏻‍✈️":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈️":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈️":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈️":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈️":"1f469-1f3ff-200d-2708-fe0f","👮🏻‍♂️":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂️":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂️":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂️":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂️":"1f46e-1f3ff-200d-2642-fe0f","👮🏻‍♀️":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀️":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀️":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀️":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀️":"1f46e-1f3ff-200d-2640-fe0f","🕵️‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂️":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂️":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂️":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂️":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂️":"1f575-1f3ff-200d-2642-fe0f","🕵️‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀️":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀️":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀️":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀️":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀️":"1f575-1f3ff-200d-2640-fe0f","💂🏻‍♂️":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂️":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂️":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂️":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂️":"1f482-1f3ff-200d-2642-fe0f","💂🏻‍♀️":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀️":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀️":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀️":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀️":"1f482-1f3ff-200d-2640-fe0f","👷🏻‍♂️":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂️":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂️":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂️":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂️":"1f477-1f3ff-200d-2642-fe0f","👷🏻‍♀️":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀️":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀️":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀️":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀️":"1f477-1f3ff-200d-2640-fe0f","👳🏻‍♂️":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂️":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂️":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂️":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂️":"1f473-1f3ff-200d-2642-fe0f","👳🏻‍♀️":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀️":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀️":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀️":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀️":"1f473-1f3ff-200d-2640-fe0f","🤵🏻‍♂️":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂️":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂️":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂️":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂️":"1f935-1f3ff-200d-2642-fe0f","🤵🏻‍♀️":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀️":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀️":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀️":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀️":"1f935-1f3ff-200d-2640-fe0f","👰🏻‍♂️":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂️":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂️":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂️":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂️":"1f470-1f3ff-200d-2642-fe0f","👰🏻‍♀️":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀️":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀️":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀️":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀️":"1f470-1f3ff-200d-2640-fe0f","🦸🏻‍♂️":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂️":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂️":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂️":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂️":"1f9b8-1f3ff-200d-2642-fe0f","🦸🏻‍♀️":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀️":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀️":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀️":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀️":"1f9b8-1f3ff-200d-2640-fe0f","🦹🏻‍♂️":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂️":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂️":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂️":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂️":"1f9b9-1f3ff-200d-2642-fe0f","🦹🏻‍♀️":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀️":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀️":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀️":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀️":"1f9b9-1f3ff-200d-2640-fe0f","🧙🏻‍♂️":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂️":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂️":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂️":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂️":"1f9d9-1f3ff-200d-2642-fe0f","🧙🏻‍♀️":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀️":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀️":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀️":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀️":"1f9d9-1f3ff-200d-2640-fe0f","🧚🏻‍♂️":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂️":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂️":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂️":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂️":"1f9da-1f3ff-200d-2642-fe0f","🧚🏻‍♀️":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀️":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀️":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀️":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀️":"1f9da-1f3ff-200d-2640-fe0f","🧛🏻‍♂️":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂️":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂️":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂️":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂️":"1f9db-1f3ff-200d-2642-fe0f","🧛🏻‍♀️":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀️":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀️":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀️":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀️":"1f9db-1f3ff-200d-2640-fe0f","🧜🏻‍♂️":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂️":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂️":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂️":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂️":"1f9dc-1f3ff-200d-2642-fe0f","🧜🏻‍♀️":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀️":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀️":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀️":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀️":"1f9dc-1f3ff-200d-2640-fe0f","🧝🏻‍♂️":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂️":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂️":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂️":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂️":"1f9dd-1f3ff-200d-2642-fe0f","🧝🏻‍♀️":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀️":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀️":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀️":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀️":"1f9dd-1f3ff-200d-2640-fe0f","💆🏻‍♂️":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂️":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂️":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂️":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂️":"1f486-1f3ff-200d-2642-fe0f","💆🏻‍♀️":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀️":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀️":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀️":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀️":"1f486-1f3ff-200d-2640-fe0f","💇🏻‍♂️":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂️":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂️":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂️":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂️":"1f487-1f3ff-200d-2642-fe0f","💇🏻‍♀️":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀️":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀️":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀️":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀️":"1f487-1f3ff-200d-2640-fe0f","🚶🏻‍♂️":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂️":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂️":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂️":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂️":"1f6b6-1f3ff-200d-2642-fe0f","🚶🏻‍♀️":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀️":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀️":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀️":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀️":"1f6b6-1f3ff-200d-2640-fe0f","🧍🏻‍♂️":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂️":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂️":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂️":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂️":"1f9cd-1f3ff-200d-2642-fe0f","🧍🏻‍♀️":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀️":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀️":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀️":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀️":"1f9cd-1f3ff-200d-2640-fe0f","🧎🏻‍♂️":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂️":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂️":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂️":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂️":"1f9ce-1f3ff-200d-2642-fe0f","🧎🏻‍♀️":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀️":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀️":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀️":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀️":"1f9ce-1f3ff-200d-2640-fe0f","🏃🏻‍♂️":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂️":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂️":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂️":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂️":"1f3c3-1f3ff-200d-2642-fe0f","🏃🏻‍♀️":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀️":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀️":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀️":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀️":"1f3c3-1f3ff-200d-2640-fe0f","🧖🏻‍♂️":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂️":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂️":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂️":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂️":"1f9d6-1f3ff-200d-2642-fe0f","🧖🏻‍♀️":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀️":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀️":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀️":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀️":"1f9d6-1f3ff-200d-2640-fe0f","🧗🏻‍♂️":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂️":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂️":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂️":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂️":"1f9d7-1f3ff-200d-2642-fe0f","🧗🏻‍♀️":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀️":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀️":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀️":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀️":"1f9d7-1f3ff-200d-2640-fe0f","🏌️‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂️":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂️":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂️":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂️":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂️":"1f3cc-1f3ff-200d-2642-fe0f","🏌️‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀️":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀️":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀️":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀️":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀️":"1f3cc-1f3ff-200d-2640-fe0f","🏄🏻‍♂️":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂️":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂️":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂️":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂️":"1f3c4-1f3ff-200d-2642-fe0f","🏄🏻‍♀️":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀️":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀️":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀️":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀️":"1f3c4-1f3ff-200d-2640-fe0f","🚣🏻‍♂️":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂️":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂️":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂️":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂️":"1f6a3-1f3ff-200d-2642-fe0f","🚣🏻‍♀️":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀️":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀️":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀️":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀️":"1f6a3-1f3ff-200d-2640-fe0f","🏊🏻‍♂️":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂️":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂️":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂️":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂️":"1f3ca-1f3ff-200d-2642-fe0f","🏊🏻‍♀️":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀️":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀️":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀️":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀️":"1f3ca-1f3ff-200d-2640-fe0f","⛹️‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂️":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂️":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂️":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂️":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂️":"26f9-1f3ff-200d-2642-fe0f","⛹️‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀️":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀️":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀️":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀️":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀️":"26f9-1f3ff-200d-2640-fe0f","🏋️‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂️":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂️":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂️":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂️":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂️":"1f3cb-1f3ff-200d-2642-fe0f","🏋️‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀️":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀️":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀️":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀️":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀️":"1f3cb-1f3ff-200d-2640-fe0f","🚴🏻‍♂️":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂️":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂️":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂️":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂️":"1f6b4-1f3ff-200d-2642-fe0f","🚴🏻‍♀️":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀️":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀️":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀️":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀️":"1f6b4-1f3ff-200d-2640-fe0f","🚵🏻‍♂️":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂️":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂️":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂️":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂️":"1f6b5-1f3ff-200d-2642-fe0f","🚵🏻‍♀️":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀️":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀️":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀️":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀️":"1f6b5-1f3ff-200d-2640-fe0f","🤸🏻‍♂️":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂️":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂️":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂️":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂️":"1f938-1f3ff-200d-2642-fe0f","🤸🏻‍♀️":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀️":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀️":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀️":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀️":"1f938-1f3ff-200d-2640-fe0f","🤽🏻‍♂️":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂️":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂️":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂️":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂️":"1f93d-1f3ff-200d-2642-fe0f","🤽🏻‍♀️":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀️":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀️":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀️":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀️":"1f93d-1f3ff-200d-2640-fe0f","🤾🏻‍♂️":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂️":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂️":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂️":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂️":"1f93e-1f3ff-200d-2642-fe0f","🤾🏻‍♀️":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀️":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀️":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀️":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀️":"1f93e-1f3ff-200d-2640-fe0f","🤹🏻‍♂️":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂️":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂️":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂️":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂️":"1f939-1f3ff-200d-2642-fe0f","🤹🏻‍♀️":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀️":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀️":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀️":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀️":"1f939-1f3ff-200d-2640-fe0f","🧘🏻‍♂️":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂️":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂️":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂️":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂️":"1f9d8-1f3ff-200d-2642-fe0f","🧘🏻‍♀️":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀️":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀️":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀️":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀️":"1f9d8-1f3ff-200d-2640-fe0f","🧑‍🤝‍🧑":"1f9d1-200d-1f91d-200d-1f9d1","👩‍❤‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤‍👩":"1f469-200d-2764-fe0f-200d-1f469","👨‍👩‍👦":"1f468-200d-1f469-200d-1f466","👨‍👩‍👧":"1f468-200d-1f469-200d-1f467","👨‍👨‍👦":"1f468-200d-1f468-200d-1f466","👨‍👨‍👧":"1f468-200d-1f468-200d-1f467","👩‍👩‍👦":"1f469-200d-1f469-200d-1f466","👩‍👩‍👧":"1f469-200d-1f469-200d-1f467","👨‍👦‍👦":"1f468-200d-1f466-200d-1f466","👨‍👧‍👦":"1f468-200d-1f467-200d-1f466","👨‍👧‍👧":"1f468-200d-1f467-200d-1f467","👩‍👦‍👦":"1f469-200d-1f466-200d-1f466","👩‍👧‍👦":"1f469-200d-1f467-200d-1f466","👩‍👧‍👧":"1f469-200d-1f467-200d-1f467","🏳️‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","👩‍❤️‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤️‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤️‍👩":"1f469-200d-2764-fe0f-200d-1f469","🧑🏻‍🤝‍🧑🏻":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb","🧑🏻‍🤝‍🧑🏼":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc","🧑🏻‍🤝‍🧑🏽":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd","🧑🏻‍🤝‍🧑🏾":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe","🧑🏻‍🤝‍🧑🏿":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff","🧑🏼‍🤝‍🧑🏻":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb","🧑🏼‍🤝‍🧑🏼":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc","🧑🏼‍🤝‍🧑🏽":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd","🧑🏼‍🤝‍🧑🏾":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe","🧑🏼‍🤝‍🧑🏿":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff","🧑🏽‍🤝‍🧑🏻":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb","🧑🏽‍🤝‍🧑🏼":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc","🧑🏽‍🤝‍🧑🏽":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd","🧑🏽‍🤝‍🧑🏾":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe","🧑🏽‍🤝‍🧑🏿":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff","🧑🏾‍🤝‍🧑🏻":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb","🧑🏾‍🤝‍🧑🏼":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc","🧑🏾‍🤝‍🧑🏽":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd","🧑🏾‍🤝‍🧑🏾":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe","🧑🏾‍🤝‍🧑🏿":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff","🧑🏿‍🤝‍🧑🏻":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb","🧑🏿‍🤝‍🧑🏼":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc","🧑🏿‍🤝‍🧑🏽":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd","🧑🏿‍🤝‍🧑🏾":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe","🧑🏿‍🤝‍🧑🏿":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff","👩🏻‍🤝‍👩🏼":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc","👩🏻‍🤝‍👩🏽":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd","👩🏻‍🤝‍👩🏾":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👩🏿":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff","👩🏼‍🤝‍👩🏻":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb","👩🏼‍🤝‍👩🏽":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd","👩🏼‍🤝‍👩🏾":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe","👩🏼‍🤝‍👩🏿":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff","👩🏽‍🤝‍👩🏻":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb","👩🏽‍🤝‍👩🏼":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc","👩🏽‍🤝‍👩🏾":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe","👩🏽‍🤝‍👩🏿":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff","👩🏾‍🤝‍👩🏻":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb","👩🏾‍🤝‍👩🏼":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc","👩🏾‍🤝‍👩🏽":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd","👩🏾‍🤝‍👩🏿":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff","👩🏿‍🤝‍👩🏻":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb","👩🏿‍🤝‍👩🏼":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc","👩🏿‍🤝‍👩🏽":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd","👩🏿‍🤝‍👩🏾":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👨🏼":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc","👩🏻‍🤝‍👨🏽":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd","👩🏻‍🤝‍👨🏾":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe","👩🏻‍🤝‍👨🏿":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff","👩🏼‍🤝‍👨🏻":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb","👩🏼‍🤝‍👨🏽":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd","👩🏼‍🤝‍👨🏾":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe","👩🏼‍🤝‍👨🏿":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff","👩🏽‍🤝‍👨🏻":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb","👩🏽‍🤝‍👨🏼":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc","👩🏽‍🤝‍👨🏾":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe","👩🏽‍🤝‍👨🏿":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff","👩🏾‍🤝‍👨🏻":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb","👩🏾‍🤝‍👨🏼":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc","👩🏾‍🤝‍👨🏽":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd","👩🏾‍🤝‍👨🏿":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff","👩🏿‍🤝‍👨🏻":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb","👩🏿‍🤝‍👨🏼":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc","👩🏿‍🤝‍👨🏽":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd","👩🏿‍🤝‍👨🏾":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏼":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc","👨🏻‍🤝‍👨🏽":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd","👨🏻‍🤝‍👨🏾":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏿":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff","👨🏼‍🤝‍👨🏻":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb","👨🏼‍🤝‍👨🏽":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd","👨🏼‍🤝‍👨🏾":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe","👨🏼‍🤝‍👨🏿":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff","👨🏽‍🤝‍👨🏻":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb","👨🏽‍🤝‍👨🏼":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc","👨🏽‍🤝‍👨🏾":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe","👨🏽‍🤝‍👨🏿":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff","👨🏾‍🤝‍👨🏻":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb","👨🏾‍🤝‍👨🏼":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc","👨🏾‍🤝‍👨🏽":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd","👨🏾‍🤝‍👨🏿":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff","👨🏿‍🤝‍👨🏻":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb","👨🏿‍🤝‍👨🏼":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc","👨🏿‍🤝‍👨🏽":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd","👨🏿‍🤝‍👨🏾":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe","👩‍❤‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","👨‍👩‍👧‍👦":"1f468-200d-1f469-200d-1f467-200d-1f466","👨‍👩‍👦‍👦":"1f468-200d-1f469-200d-1f466-200d-1f466","👨‍👩‍👧‍👧":"1f468-200d-1f469-200d-1f467-200d-1f467","👨‍👨‍👧‍👦":"1f468-200d-1f468-200d-1f467-200d-1f466","👨‍👨‍👦‍👦":"1f468-200d-1f468-200d-1f466-200d-1f466","👨‍👨‍👧‍👧":"1f468-200d-1f468-200d-1f467-200d-1f467","👩‍👩‍👧‍👦":"1f469-200d-1f469-200d-1f467-200d-1f466","👩‍👩‍👦‍👦":"1f469-200d-1f469-200d-1f466-200d-1f466","👩‍👩‍👧‍👧":"1f469-200d-1f469-200d-1f467-200d-1f467","🏴󠁧󠁢󠁥󠁮󠁧󠁿":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","🏴󠁧󠁢󠁳󠁣󠁴󠁿":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","🏴󠁧󠁢󠁷󠁬󠁳󠁿":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","👩‍❤️‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤️‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤️‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤️‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤️‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤️‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤️‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤️‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤️‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤️‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤️‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤️‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤️‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤️‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤️‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤️‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤️‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤️‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤️‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤️‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤️‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤️‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤️‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤️‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤️‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤️‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤️‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤️‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤️‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤️‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤️‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤️‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤️‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤️‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤️‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤️‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤️‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤️‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤️‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤️‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤️‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤️‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤️‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤️‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤️‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤️‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤️‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤️‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤️‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤️‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤️‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤️‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤️‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤️‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤️‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤️‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤️‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤️‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤️‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤️‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤️‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤️‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤️‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤️‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤️‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤️‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤️‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤️‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤️‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤️‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤️‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤️‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤️‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤️‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤️‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤️‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤️‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤️‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤️‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤️‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤️‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤️‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤️‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤️‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤️‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤️‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤️‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤️‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤️‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤️‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤️‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤️‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤️‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤️‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤️‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤️‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤️‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤️‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","🧑🏻‍❤‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","🧑🏻‍❤️‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤️‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤️‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤️‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤️‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤️‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤️‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤️‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤️‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤️‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤️‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤️‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤️‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤️‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤️‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤️‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤️‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤️‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤️‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤️‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤️‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤️‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤️‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤️‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤️‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤️‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤️‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤️‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤️‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤️‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤️‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤️‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤️‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤️‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤️‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤️‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤️‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤️‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤️‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤️‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤️‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤️‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤️‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤️‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤️‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤️‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤️‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤️‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤️‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤️‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤️‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤️‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤️‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤️‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤️‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤️‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤️‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤️‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤️‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤️‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤️‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤️‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤️‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤️‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤️‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤️‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤️‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤️‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤️‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤️‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤️‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤️‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤️‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤️‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤️‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤️‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤️‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤️‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤️‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤️‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤️‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤️‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤️‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤️‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤️‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤️‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤️‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤️‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤️‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤️‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤️‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤️‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤️‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤️‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤️‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff"} \ No newline at end of file +{"😀":"1f600","😃":"1f603","😄":"1f604","😁":"1f601","😆":"1f606","😅":"1f605","🤣":"1f923","😂":"1f602","🙂":"1f642","🙃":"1f643","🫠":"1fae0","😉":"1f609","😊":"1f60a","😇":"1f607","🥰":"1f970","😍":"1f60d","🤩":"1f929","😘":"1f618","😗":"1f617","☺":"263a","😚":"1f61a","😙":"1f619","🥲":"1f972","😋":"1f60b","😛":"1f61b","😜":"1f61c","🤪":"1f92a","😝":"1f61d","🤑":"1f911","🤗":"1f917","🤭":"1f92d","🫢":"1fae2","🫣":"1fae3","🤫":"1f92b","🤔":"1f914","🫡":"1fae1","🤐":"1f910","🤨":"1f928","😐":"1f610","😑":"1f611","😶":"1f636","🫥":"1fae5","😏":"1f60f","😒":"1f612","🙄":"1f644","😬":"1f62c","🤥":"1f925","😌":"1f60c","😔":"1f614","😪":"1f62a","🤤":"1f924","😴":"1f634","😷":"1f637","🤒":"1f912","🤕":"1f915","🤢":"1f922","🤮":"1f92e","🤧":"1f927","🥵":"1f975","🥶":"1f976","🥴":"1f974","😵":"1f635","🤯":"1f92f","🤠":"1f920","🥳":"1f973","🥸":"1f978","😎":"1f60e","🤓":"1f913","🧐":"1f9d0","😕":"1f615","🫤":"1fae4","😟":"1f61f","🙁":"1f641","☹":"2639","😮":"1f62e","😯":"1f62f","😲":"1f632","😳":"1f633","🥺":"1f97a","🥹":"1f979","😦":"1f626","😧":"1f627","😨":"1f628","😰":"1f630","😥":"1f625","😢":"1f622","😭":"1f62d","😱":"1f631","😖":"1f616","😣":"1f623","😞":"1f61e","😓":"1f613","😩":"1f629","😫":"1f62b","🥱":"1f971","😤":"1f624","😡":"1f621","😠":"1f620","🤬":"1f92c","😈":"1f608","👿":"1f47f","💀":"1f480","☠":"2620","💩":"1f4a9","🤡":"1f921","👹":"1f479","👺":"1f47a","👻":"1f47b","👽":"1f47d","👾":"1f47e","🤖":"1f916","😺":"1f63a","😸":"1f638","😹":"1f639","😻":"1f63b","😼":"1f63c","😽":"1f63d","🙀":"1f640","😿":"1f63f","😾":"1f63e","🙈":"1f648","🙉":"1f649","🙊":"1f64a","💋":"1f48b","💌":"1f48c","💘":"1f498","💝":"1f49d","💖":"1f496","💗":"1f497","💓":"1f493","💞":"1f49e","💕":"1f495","💟":"1f49f","❣":"2763","💔":"1f494","❤":"2764","🧡":"1f9e1","💛":"1f49b","💚":"1f49a","💙":"1f499","💜":"1f49c","🤎":"1f90e","🖤":"1f5a4","🤍":"1f90d","💯":"1f4af","💢":"1f4a2","💥":"1f4a5","💫":"1f4ab","💦":"1f4a6","💨":"1f4a8","🕳":"1f573","💣":"1f4a3","💬":"1f4ac","🗨":"1f5e8","🗯":"1f5ef","💭":"1f4ad","💤":"1f4a4","👋":"1f44b","🤚":"1f91a","🖐":"1f590","✋":"270b","🖖":"1f596","🫱":"1faf1","🫲":"1faf2","🫳":"1faf3","🫴":"1faf4","👌":"1f44c","🤌":"1f90c","🤏":"1f90f","✌":"270c","🤞":"1f91e","🫰":"1faf0","🤟":"1f91f","🤘":"1f918","🤙":"1f919","👈":"1f448","👉":"1f449","👆":"1f446","🖕":"1f595","👇":"1f447","☝":"261d","🫵":"1faf5","👍":"1f44d","👎":"1f44e","✊":"270a","👊":"1f44a","🤛":"1f91b","🤜":"1f91c","👏":"1f44f","🙌":"1f64c","🫶":"1faf6","👐":"1f450","🤲":"1f932","🤝":"1f91d","🙏":"1f64f","✍":"270d","💅":"1f485","🤳":"1f933","💪":"1f4aa","🦾":"1f9be","🦿":"1f9bf","🦵":"1f9b5","🦶":"1f9b6","👂":"1f442","🦻":"1f9bb","👃":"1f443","🧠":"1f9e0","🫀":"1fac0","🫁":"1fac1","🦷":"1f9b7","🦴":"1f9b4","👀":"1f440","👁":"1f441","👅":"1f445","👄":"1f444","🫦":"1fae6","👶":"1f476","🧒":"1f9d2","👦":"1f466","👧":"1f467","🧑":"1f9d1","👱":"1f471","👨":"1f468","🧔":"1f9d4","👩":"1f469","🧓":"1f9d3","👴":"1f474","👵":"1f475","🙍":"1f64d","🙎":"1f64e","🙅":"1f645","🙆":"1f646","💁":"1f481","🙋":"1f64b","🧏":"1f9cf","🙇":"1f647","🤦":"1f926","🤷":"1f937","👮":"1f46e","🕵":"1f575","💂":"1f482","🥷":"1f977","👷":"1f477","🫅":"1fac5","🤴":"1f934","👸":"1f478","👳":"1f473","👲":"1f472","🧕":"1f9d5","🤵":"1f935","👰":"1f470","🤰":"1f930","🫃":"1fac3","🫄":"1fac4","🤱":"1f931","👼":"1f47c","🎅":"1f385","🤶":"1f936","🦸":"1f9b8","🦹":"1f9b9","🧙":"1f9d9","🧚":"1f9da","🧛":"1f9db","🧜":"1f9dc","🧝":"1f9dd","🧞":"1f9de","🧟":"1f9df","🧌":"1f9cc","💆":"1f486","💇":"1f487","🚶":"1f6b6","🧍":"1f9cd","🧎":"1f9ce","🏃":"1f3c3","💃":"1f483","🕺":"1f57a","🕴":"1f574","👯":"1f46f","🧖":"1f9d6","🧗":"1f9d7","🤺":"1f93a","🏇":"1f3c7","⛷":"26f7","🏂":"1f3c2","🏌":"1f3cc","🏄":"1f3c4","🚣":"1f6a3","🏊":"1f3ca","⛹":"26f9","🏋":"1f3cb","🚴":"1f6b4","🚵":"1f6b5","🤸":"1f938","🤼":"1f93c","🤽":"1f93d","🤾":"1f93e","🤹":"1f939","🧘":"1f9d8","🛀":"1f6c0","🛌":"1f6cc","👭":"1f46d","👫":"1f46b","👬":"1f46c","💏":"1f48f","💑":"1f491","👪":"1f46a","🗣":"1f5e3","👤":"1f464","👥":"1f465","🫂":"1fac2","👣":"1f463","🏻":"1f463","🏼":"1f463","🏽":"1f463","🏾":"1f463","🏿":"1f463","🦰":"1f463","🦱":"1f463","🦳":"1f463","🦲":"1f463","🐵":"1f435","🐒":"1f412","🦍":"1f98d","🦧":"1f9a7","🐶":"1f436","🐕":"1f415","🦮":"1f9ae","🐩":"1f429","🐺":"1f43a","🦊":"1f98a","🦝":"1f99d","🐱":"1f431","🐈":"1f408","🦁":"1f981","🐯":"1f42f","🐅":"1f405","🐆":"1f406","🐴":"1f434","🐎":"1f40e","🦄":"1f984","🦓":"1f993","🦌":"1f98c","🦬":"1f9ac","🐮":"1f42e","🐂":"1f402","🐃":"1f403","🐄":"1f404","🐷":"1f437","🐖":"1f416","🐗":"1f417","🐽":"1f43d","🐏":"1f40f","🐑":"1f411","🐐":"1f410","🐪":"1f42a","🐫":"1f42b","🦙":"1f999","🦒":"1f992","🐘":"1f418","🦣":"1f9a3","🦏":"1f98f","🦛":"1f99b","🐭":"1f42d","🐁":"1f401","🐀":"1f400","🐹":"1f439","🐰":"1f430","🐇":"1f407","🐿":"1f43f","🦫":"1f9ab","🦔":"1f994","🦇":"1f987","🐻":"1f43b","🐨":"1f428","🐼":"1f43c","🦥":"1f9a5","🦦":"1f9a6","🦨":"1f9a8","🦘":"1f998","🦡":"1f9a1","🐾":"1f43e","🦃":"1f983","🐔":"1f414","🐓":"1f413","🐣":"1f423","🐤":"1f424","🐥":"1f425","🐦":"1f426","🐧":"1f427","🕊":"1f54a","🦅":"1f985","🦆":"1f986","🦢":"1f9a2","🦉":"1f989","🦤":"1f9a4","🪶":"1fab6","🦩":"1f9a9","🦚":"1f99a","🦜":"1f99c","🐸":"1f438","🐊":"1f40a","🐢":"1f422","🦎":"1f98e","🐍":"1f40d","🐲":"1f432","🐉":"1f409","🦕":"1f995","🦖":"1f996","🐳":"1f433","🐋":"1f40b","🐬":"1f42c","🦭":"1f9ad","🐟":"1f41f","🐠":"1f420","🐡":"1f421","🦈":"1f988","🐙":"1f419","🐚":"1f41a","🪸":"1fab8","🐌":"1f40c","🦋":"1f98b","🐛":"1f41b","🐜":"1f41c","🐝":"1f41d","🪲":"1fab2","🐞":"1f41e","🦗":"1f997","🪳":"1fab3","🕷":"1f577","🕸":"1f578","🦂":"1f982","🦟":"1f99f","🪰":"1fab0","🪱":"1fab1","🦠":"1f9a0","💐":"1f490","🌸":"1f338","💮":"1f4ae","🪷":"1fab7","🏵":"1f3f5","🌹":"1f339","🥀":"1f940","🌺":"1f33a","🌻":"1f33b","🌼":"1f33c","🌷":"1f337","🌱":"1f331","🪴":"1fab4","🌲":"1f332","🌳":"1f333","🌴":"1f334","🌵":"1f335","🌾":"1f33e","🌿":"1f33f","☘":"2618","🍀":"1f340","🍁":"1f341","🍂":"1f342","🍃":"1f343","🪹":"1fab9","🪺":"1faba","🍇":"1f347","🍈":"1f348","🍉":"1f349","🍊":"1f34a","🍋":"1f34b","🍌":"1f34c","🍍":"1f34d","🥭":"1f96d","🍎":"1f34e","🍏":"1f34f","🍐":"1f350","🍑":"1f351","🍒":"1f352","🍓":"1f353","🫐":"1fad0","🥝":"1f95d","🍅":"1f345","🫒":"1fad2","🥥":"1f965","🥑":"1f951","🍆":"1f346","🥔":"1f954","🥕":"1f955","🌽":"1f33d","🌶":"1f336","🫑":"1fad1","🥒":"1f952","🥬":"1f96c","🥦":"1f966","🧄":"1f9c4","🧅":"1f9c5","🍄":"1f344","🥜":"1f95c","🫘":"1fad8","🌰":"1f330","🍞":"1f35e","🥐":"1f950","🥖":"1f956","🫓":"1fad3","🥨":"1f968","🥯":"1f96f","🥞":"1f95e","🧇":"1f9c7","🧀":"1f9c0","🍖":"1f356","🍗":"1f357","🥩":"1f969","🥓":"1f953","🍔":"1f354","🍟":"1f35f","🍕":"1f355","🌭":"1f32d","🥪":"1f96a","🌮":"1f32e","🌯":"1f32f","🫔":"1fad4","🥙":"1f959","🧆":"1f9c6","🥚":"1f95a","🍳":"1f373","🥘":"1f958","🍲":"1f372","🫕":"1fad5","🥣":"1f963","🥗":"1f957","🍿":"1f37f","🧈":"1f9c8","🧂":"1f9c2","🥫":"1f96b","🍱":"1f371","🍘":"1f358","🍙":"1f359","🍚":"1f35a","🍛":"1f35b","🍜":"1f35c","🍝":"1f35d","🍠":"1f360","🍢":"1f362","🍣":"1f363","🍤":"1f364","🍥":"1f365","🥮":"1f96e","🍡":"1f361","🥟":"1f95f","🥠":"1f960","🥡":"1f961","🦀":"1f980","🦞":"1f99e","🦐":"1f990","🦑":"1f991","🦪":"1f9aa","🍦":"1f366","🍧":"1f367","🍨":"1f368","🍩":"1f369","🍪":"1f36a","🎂":"1f382","🍰":"1f370","🧁":"1f9c1","🥧":"1f967","🍫":"1f36b","🍬":"1f36c","🍭":"1f36d","🍮":"1f36e","🍯":"1f36f","🍼":"1f37c","🥛":"1f95b","☕":"2615","🫖":"1fad6","🍵":"1f375","🍶":"1f376","🍾":"1f37e","🍷":"1f377","🍸":"1f378","🍹":"1f379","🍺":"1f37a","🍻":"1f37b","🥂":"1f942","🥃":"1f943","🫗":"1fad7","🥤":"1f964","🧋":"1f9cb","🧃":"1f9c3","🧉":"1f9c9","🧊":"1f9ca","🥢":"1f962","🍽":"1f37d","🍴":"1f374","🥄":"1f944","🔪":"1f52a","🫙":"1fad9","🏺":"1f3fa","🌍":"1f30d","🌎":"1f30e","🌏":"1f30f","🌐":"1f310","🗺":"1f5fa","🗾":"1f5fe","🧭":"1f9ed","🏔":"1f3d4","⛰":"26f0","🌋":"1f30b","🗻":"1f5fb","🏕":"1f3d5","🏖":"1f3d6","🏜":"1f3dc","🏝":"1f3dd","🏞":"1f3de","🏟":"1f3df","🏛":"1f3db","🏗":"1f3d7","🧱":"1f9f1","🪨":"1faa8","🪵":"1fab5","🛖":"1f6d6","🏘":"1f3d8","🏚":"1f3da","🏠":"1f3e0","🏡":"1f3e1","🏢":"1f3e2","🏣":"1f3e3","🏤":"1f3e4","🏥":"1f3e5","🏦":"1f3e6","🏨":"1f3e8","🏩":"1f3e9","🏪":"1f3ea","🏫":"1f3eb","🏬":"1f3ec","🏭":"1f3ed","🏯":"1f3ef","🏰":"1f3f0","💒":"1f492","🗼":"1f5fc","🗽":"1f5fd","⛪":"26ea","🕌":"1f54c","🛕":"1f6d5","🕍":"1f54d","⛩":"26e9","🕋":"1f54b","⛲":"26f2","⛺":"26fa","🌁":"1f301","🌃":"1f303","🏙":"1f3d9","🌄":"1f304","🌅":"1f305","🌆":"1f306","🌇":"1f307","🌉":"1f309","♨":"2668","🎠":"1f3a0","🛝":"1f6dd","🎡":"1f3a1","🎢":"1f3a2","💈":"1f488","🎪":"1f3aa","🚂":"1f682","🚃":"1f683","🚄":"1f684","🚅":"1f685","🚆":"1f686","🚇":"1f687","🚈":"1f688","🚉":"1f689","🚊":"1f68a","🚝":"1f69d","🚞":"1f69e","🚋":"1f68b","🚌":"1f68c","🚍":"1f68d","🚎":"1f68e","🚐":"1f690","🚑":"1f691","🚒":"1f692","🚓":"1f693","🚔":"1f694","🚕":"1f695","🚖":"1f696","🚗":"1f697","🚘":"1f698","🚙":"1f699","🛻":"1f6fb","🚚":"1f69a","🚛":"1f69b","🚜":"1f69c","🏎":"1f3ce","🏍":"1f3cd","🛵":"1f6f5","🦽":"1f9bd","🦼":"1f9bc","🛺":"1f6fa","🚲":"1f6b2","🛴":"1f6f4","🛹":"1f6f9","🛼":"1f6fc","🚏":"1f68f","🛣":"1f6e3","🛤":"1f6e4","🛢":"1f6e2","⛽":"26fd","🛞":"1f6de","🚨":"1f6a8","🚥":"1f6a5","🚦":"1f6a6","🛑":"1f6d1","🚧":"1f6a7","⚓":"2693","🛟":"1f6df","⛵":"26f5","🛶":"1f6f6","🚤":"1f6a4","🛳":"1f6f3","⛴":"26f4","🛥":"1f6e5","🚢":"1f6a2","✈":"2708","🛩":"1f6e9","🛫":"1f6eb","🛬":"1f6ec","🪂":"1fa82","💺":"1f4ba","🚁":"1f681","🚟":"1f69f","🚠":"1f6a0","🚡":"1f6a1","🛰":"1f6f0","🚀":"1f680","🛸":"1f6f8","🛎":"1f6ce","🧳":"1f9f3","⌛":"231b","⏳":"23f3","⌚":"231a","⏰":"23f0","⏱":"23f1","⏲":"23f2","🕰":"1f570","🕛":"1f55b","🕧":"1f567","🕐":"1f550","🕜":"1f55c","🕑":"1f551","🕝":"1f55d","🕒":"1f552","🕞":"1f55e","🕓":"1f553","🕟":"1f55f","🕔":"1f554","🕠":"1f560","🕕":"1f555","🕡":"1f561","🕖":"1f556","🕢":"1f562","🕗":"1f557","🕣":"1f563","🕘":"1f558","🕤":"1f564","🕙":"1f559","🕥":"1f565","🕚":"1f55a","🕦":"1f566","🌑":"1f311","🌒":"1f312","🌓":"1f313","🌔":"1f314","🌕":"1f315","🌖":"1f316","🌗":"1f317","🌘":"1f318","🌙":"1f319","🌚":"1f31a","🌛":"1f31b","🌜":"1f31c","🌡":"1f321","☀":"2600","🌝":"1f31d","🌞":"1f31e","🪐":"1fa90","⭐":"2b50","🌟":"1f31f","🌠":"1f320","🌌":"1f30c","☁":"2601","⛅":"26c5","⛈":"26c8","🌤":"1f324","🌥":"1f325","🌦":"1f326","🌧":"1f327","🌨":"1f328","🌩":"1f329","🌪":"1f32a","🌫":"1f32b","🌬":"1f32c","🌀":"1f300","🌈":"1f308","🌂":"1f302","☂":"2602","☔":"2614","⛱":"26f1","⚡":"26a1","❄":"2744","☃":"2603","⛄":"26c4","☄":"2604","🔥":"1f525","💧":"1f4a7","🌊":"1f30a","🎃":"1f383","🎄":"1f384","🎆":"1f386","🎇":"1f387","🧨":"1f9e8","✨":"2728","🎈":"1f388","🎉":"1f389","🎊":"1f38a","🎋":"1f38b","🎍":"1f38d","🎎":"1f38e","🎏":"1f38f","🎐":"1f390","🎑":"1f391","🧧":"1f9e7","🎀":"1f380","🎁":"1f381","🎗":"1f397","🎟":"1f39f","🎫":"1f3ab","🎖":"1f396","🏆":"1f3c6","🏅":"1f3c5","🥇":"1f947","🥈":"1f948","🥉":"1f949","⚽":"26bd","⚾":"26be","🥎":"1f94e","🏀":"1f3c0","🏐":"1f3d0","🏈":"1f3c8","🏉":"1f3c9","🎾":"1f3be","🥏":"1f94f","🎳":"1f3b3","🏏":"1f3cf","🏑":"1f3d1","🏒":"1f3d2","🥍":"1f94d","🏓":"1f3d3","🏸":"1f3f8","🥊":"1f94a","🥋":"1f94b","🥅":"1f945","⛳":"26f3","⛸":"26f8","🎣":"1f3a3","🤿":"1f93f","🎽":"1f3bd","🎿":"1f3bf","🛷":"1f6f7","🥌":"1f94c","🎯":"1f3af","🪀":"1fa80","🪁":"1fa81","🎱":"1f3b1","🔮":"1f52e","🪄":"1fa84","🧿":"1f9ff","🪬":"1faac","🎮":"1f3ae","🕹":"1f579","🎰":"1f3b0","🎲":"1f3b2","🧩":"1f9e9","🧸":"1f9f8","🪅":"1fa85","🪩":"1faa9","🪆":"1fa86","♠":"2660","♥":"2665","♦":"2666","♣":"2663","♟":"265f","🃏":"1f0cf","🀄":"1f004","🎴":"1f3b4","🎭":"1f3ad","🖼":"1f5bc","🎨":"1f3a8","🧵":"1f9f5","🪡":"1faa1","🧶":"1f9f6","🪢":"1faa2","👓":"1f453","🕶":"1f576","🥽":"1f97d","🥼":"1f97c","🦺":"1f9ba","👔":"1f454","👕":"1f455","👖":"1f456","🧣":"1f9e3","🧤":"1f9e4","🧥":"1f9e5","🧦":"1f9e6","👗":"1f457","👘":"1f458","🥻":"1f97b","🩱":"1fa71","🩲":"1fa72","🩳":"1fa73","👙":"1f459","👚":"1f45a","👛":"1f45b","👜":"1f45c","👝":"1f45d","🛍":"1f6cd","🎒":"1f392","🩴":"1fa74","👞":"1f45e","👟":"1f45f","🥾":"1f97e","🥿":"1f97f","👠":"1f460","👡":"1f461","🩰":"1fa70","👢":"1f462","👑":"1f451","👒":"1f452","🎩":"1f3a9","🎓":"1f393","🧢":"1f9e2","🪖":"1fa96","⛑":"26d1","📿":"1f4ff","💄":"1f484","💍":"1f48d","💎":"1f48e","🔇":"1f507","🔈":"1f508","🔉":"1f509","🔊":"1f50a","📢":"1f4e2","📣":"1f4e3","📯":"1f4ef","🔔":"1f514","🔕":"1f515","🎼":"1f3bc","🎵":"1f3b5","🎶":"1f3b6","🎙":"1f399","🎚":"1f39a","🎛":"1f39b","🎤":"1f3a4","🎧":"1f3a7","📻":"1f4fb","🎷":"1f3b7","🪗":"1fa97","🎸":"1f3b8","🎹":"1f3b9","🎺":"1f3ba","🎻":"1f3bb","🪕":"1fa95","🥁":"1f941","🪘":"1fa98","📱":"1f4f1","📲":"1f4f2","☎":"260e","📞":"1f4de","📟":"1f4df","📠":"1f4e0","🔋":"1f50b","🪫":"1faab","🔌":"1f50c","💻":"1f4bb","🖥":"1f5a5","🖨":"1f5a8","⌨":"2328","🖱":"1f5b1","🖲":"1f5b2","💽":"1f4bd","💾":"1f4be","💿":"1f4bf","📀":"1f4c0","🧮":"1f9ee","🎥":"1f3a5","🎞":"1f39e","📽":"1f4fd","🎬":"1f3ac","📺":"1f4fa","📷":"1f4f7","📸":"1f4f8","📹":"1f4f9","📼":"1f4fc","🔍":"1f50d","🔎":"1f50e","🕯":"1f56f","💡":"1f4a1","🔦":"1f526","🏮":"1f3ee","🪔":"1fa94","📔":"1f4d4","📕":"1f4d5","📖":"1f4d6","📗":"1f4d7","📘":"1f4d8","📙":"1f4d9","📚":"1f4da","📓":"1f4d3","📒":"1f4d2","📃":"1f4c3","📜":"1f4dc","📄":"1f4c4","📰":"1f4f0","🗞":"1f5de","📑":"1f4d1","🔖":"1f516","🏷":"1f3f7","💰":"1f4b0","🪙":"1fa99","💴":"1f4b4","💵":"1f4b5","💶":"1f4b6","💷":"1f4b7","💸":"1f4b8","💳":"1f4b3","🧾":"1f9fe","💹":"1f4b9","✉":"2709","📧":"1f4e7","📨":"1f4e8","📩":"1f4e9","📤":"1f4e4","📥":"1f4e5","📦":"1f4e6","📫":"1f4eb","📪":"1f4ea","📬":"1f4ec","📭":"1f4ed","📮":"1f4ee","🗳":"1f5f3","✏":"270f","✒":"2712","🖋":"1f58b","🖊":"1f58a","🖌":"1f58c","🖍":"1f58d","📝":"1f4dd","💼":"1f4bc","📁":"1f4c1","📂":"1f4c2","🗂":"1f5c2","📅":"1f4c5","📆":"1f4c6","🗒":"1f5d2","🗓":"1f5d3","📇":"1f4c7","📈":"1f4c8","📉":"1f4c9","📊":"1f4ca","📋":"1f4cb","📌":"1f4cc","📍":"1f4cd","📎":"1f4ce","🖇":"1f587","📏":"1f4cf","📐":"1f4d0","✂":"2702","🗃":"1f5c3","🗄":"1f5c4","🗑":"1f5d1","🔒":"1f512","🔓":"1f513","🔏":"1f50f","🔐":"1f510","🔑":"1f511","🗝":"1f5dd","🔨":"1f528","🪓":"1fa93","⛏":"26cf","⚒":"2692","🛠":"1f6e0","🗡":"1f5e1","⚔":"2694","🔫":"1f52b","🪃":"1fa83","🏹":"1f3f9","🛡":"1f6e1","🪚":"1fa9a","🔧":"1f527","🪛":"1fa9b","🔩":"1f529","⚙":"2699","🗜":"1f5dc","⚖":"2696","🦯":"1f9af","🔗":"1f517","⛓":"26d3","🪝":"1fa9d","🧰":"1f9f0","🧲":"1f9f2","🪜":"1fa9c","⚗":"2697","🧪":"1f9ea","🧫":"1f9eb","🧬":"1f9ec","🔬":"1f52c","🔭":"1f52d","📡":"1f4e1","💉":"1f489","🩸":"1fa78","💊":"1f48a","🩹":"1fa79","🩼":"1fa7c","🩺":"1fa7a","🩻":"1fa7b","🚪":"1f6aa","🛗":"1f6d7","🪞":"1fa9e","🪟":"1fa9f","🛏":"1f6cf","🛋":"1f6cb","🪑":"1fa91","🚽":"1f6bd","🪠":"1faa0","🚿":"1f6bf","🛁":"1f6c1","🪤":"1faa4","🪒":"1fa92","🧴":"1f9f4","🧷":"1f9f7","🧹":"1f9f9","🧺":"1f9fa","🧻":"1f9fb","🪣":"1faa3","🧼":"1f9fc","🫧":"1fae7","🪥":"1faa5","🧽":"1f9fd","🧯":"1f9ef","🛒":"1f6d2","🚬":"1f6ac","⚰":"26b0","🪦":"1faa6","⚱":"26b1","🗿":"1f5ff","🪧":"1faa7","🪪":"1faaa","🏧":"1f3e7","🚮":"1f6ae","🚰":"1f6b0","♿":"267f","🚹":"1f6b9","🚺":"1f6ba","🚻":"1f6bb","🚼":"1f6bc","🚾":"1f6be","🛂":"1f6c2","🛃":"1f6c3","🛄":"1f6c4","🛅":"1f6c5","⚠":"26a0","🚸":"1f6b8","⛔":"26d4","🚫":"1f6ab","🚳":"1f6b3","🚭":"1f6ad","🚯":"1f6af","🚱":"1f6b1","🚷":"1f6b7","📵":"1f4f5","🔞":"1f51e","☢":"2622","☣":"2623","⬆":"2b06","↗":"2197","➡":"27a1","↘":"2198","⬇":"2b07","↙":"2199","⬅":"2b05","↖":"2196","↕":"2195","↔":"2194","↩":"21a9","↪":"21aa","⤴":"2934","⤵":"2935","🔃":"1f503","🔄":"1f504","🔙":"1f519","🔚":"1f51a","🔛":"1f51b","🔜":"1f51c","🔝":"1f51d","🛐":"1f6d0","⚛":"269b","🕉":"1f549","✡":"2721","☸":"2638","☯":"262f","✝":"271d","☦":"2626","☪":"262a","☮":"262e","🕎":"1f54e","🔯":"1f52f","♈":"2648","♉":"2649","♊":"264a","♋":"264b","♌":"264c","♍":"264d","♎":"264e","♏":"264f","♐":"2650","♑":"2651","♒":"2652","♓":"2653","⛎":"26ce","🔀":"1f500","🔁":"1f501","🔂":"1f502","▶":"25b6","⏩":"23e9","⏭":"23ed","⏯":"23ef","◀":"25c0","⏪":"23ea","⏮":"23ee","🔼":"1f53c","⏫":"23eb","🔽":"1f53d","⏬":"23ec","⏸":"23f8","⏹":"23f9","⏺":"23fa","⏏":"23cf","🎦":"1f3a6","🔅":"1f505","🔆":"1f506","📶":"1f4f6","📳":"1f4f3","📴":"1f4f4","♀":"2640","♂":"2642","⚧":"26a7","✖":"2716","➕":"2795","➖":"2796","➗":"2797","🟰":"1f7f0","♾":"267e","‼":"203c","⁉":"2049","❓":"2753","❔":"2754","❕":"2755","❗":"2757","〰":"3030","💱":"1f4b1","💲":"1f4b2","⚕":"2695","♻":"267b","⚜":"269c","🔱":"1f531","📛":"1f4db","🔰":"1f530","⭕":"2b55","✅":"2705","☑":"2611","✔":"2714","❌":"274c","❎":"274e","➰":"27b0","➿":"27bf","〽":"303d","✳":"2733","✴":"2734","❇":"2747","©":"a9","®":"ae","™":"2122","🔟":"1f51f","🔠":"1f520","🔡":"1f521","🔢":"1f522","🔣":"1f523","🔤":"1f524","🅰":"1f170","🆎":"1f18e","🅱":"1f171","🆑":"1f191","🆒":"1f192","🆓":"1f193","ℹ":"2139","🆔":"1f194","Ⓜ":"24c2","🆕":"1f195","🆖":"1f196","🅾":"1f17e","🆗":"1f197","🅿":"1f17f","🆘":"1f198","🆙":"1f199","🆚":"1f19a","🈁":"1f201","🈂":"1f202","🈷":"1f237","🈶":"1f236","🈯":"1f22f","🉐":"1f250","🈹":"1f239","🈚":"1f21a","🈲":"1f232","🉑":"1f251","🈸":"1f238","🈴":"1f234","🈳":"1f233","㊗":"3297","㊙":"3299","🈺":"1f23a","🈵":"1f235","🔴":"1f534","🟠":"1f7e0","🟡":"1f7e1","🟢":"1f7e2","🔵":"1f535","🟣":"1f7e3","🟤":"1f7e4","⚫":"26ab","⚪":"26aa","🟥":"1f7e5","🟧":"1f7e7","🟨":"1f7e8","🟩":"1f7e9","🟦":"1f7e6","🟪":"1f7ea","🟫":"1f7eb","⬛":"2b1b","⬜":"2b1c","◼":"25fc","◻":"25fb","◾":"25fe","◽":"25fd","▪":"25aa","▫":"25ab","🔶":"1f536","🔷":"1f537","🔸":"1f538","🔹":"1f539","🔺":"1f53a","🔻":"1f53b","💠":"1f4a0","🔘":"1f518","🔳":"1f533","🔲":"1f532","🏁":"1f3c1","🚩":"1f6a9","🎌":"1f38c","🏴":"1f3f4","🏳":"1f3f3","☺️":"263a","☹️":"2639","☠️":"2620","❣️":"2763","❤️":"2764","🕳️":"1f573","🗨️":"1f5e8","🗯️":"1f5ef","👋🏻":"1f44b-1f3fb","👋🏼":"1f44b-1f3fc","👋🏽":"1f44b-1f3fd","👋🏾":"1f44b-1f3fe","👋🏿":"1f44b-1f3ff","🤚🏻":"1f91a-1f3fb","🤚🏼":"1f91a-1f3fc","🤚🏽":"1f91a-1f3fd","🤚🏾":"1f91a-1f3fe","🤚🏿":"1f91a-1f3ff","🖐️":"1f590","🖐🏻":"1f590-1f3fb","🖐🏼":"1f590-1f3fc","🖐🏽":"1f590-1f3fd","🖐🏾":"1f590-1f3fe","🖐🏿":"1f590-1f3ff","✋🏻":"270b-1f3fb","✋🏼":"270b-1f3fc","✋🏽":"270b-1f3fd","✋🏾":"270b-1f3fe","✋🏿":"270b-1f3ff","🖖🏻":"1f596-1f3fb","🖖🏼":"1f596-1f3fc","🖖🏽":"1f596-1f3fd","🖖🏾":"1f596-1f3fe","🖖🏿":"1f596-1f3ff","🫱🏻":"1faf1-1f3fb","🫱🏼":"1faf1-1f3fc","🫱🏽":"1faf1-1f3fd","🫱🏾":"1faf1-1f3fe","🫱🏿":"1faf1-1f3ff","🫲🏻":"1faf2-1f3fb","🫲🏼":"1faf2-1f3fc","🫲🏽":"1faf2-1f3fd","🫲🏾":"1faf2-1f3fe","🫲🏿":"1faf2-1f3ff","🫳🏻":"1faf3-1f3fb","🫳🏼":"1faf3-1f3fc","🫳🏽":"1faf3-1f3fd","🫳🏾":"1faf3-1f3fe","🫳🏿":"1faf3-1f3ff","🫴🏻":"1faf4-1f3fb","🫴🏼":"1faf4-1f3fc","🫴🏽":"1faf4-1f3fd","🫴🏾":"1faf4-1f3fe","🫴🏿":"1faf4-1f3ff","👌🏻":"1f44c-1f3fb","👌🏼":"1f44c-1f3fc","👌🏽":"1f44c-1f3fd","👌🏾":"1f44c-1f3fe","👌🏿":"1f44c-1f3ff","🤌🏻":"1f90c-1f3fb","🤌🏼":"1f90c-1f3fc","🤌🏽":"1f90c-1f3fd","🤌🏾":"1f90c-1f3fe","🤌🏿":"1f90c-1f3ff","🤏🏻":"1f90f-1f3fb","🤏🏼":"1f90f-1f3fc","🤏🏽":"1f90f-1f3fd","🤏🏾":"1f90f-1f3fe","🤏🏿":"1f90f-1f3ff","✌️":"270c","✌🏻":"270c-1f3fb","✌🏼":"270c-1f3fc","✌🏽":"270c-1f3fd","✌🏾":"270c-1f3fe","✌🏿":"270c-1f3ff","🤞🏻":"1f91e-1f3fb","🤞🏼":"1f91e-1f3fc","🤞🏽":"1f91e-1f3fd","🤞🏾":"1f91e-1f3fe","🤞🏿":"1f91e-1f3ff","🫰🏻":"1faf0-1f3fb","🫰🏼":"1faf0-1f3fc","🫰🏽":"1faf0-1f3fd","🫰🏾":"1faf0-1f3fe","🫰🏿":"1faf0-1f3ff","🤟🏻":"1f91f-1f3fb","🤟🏼":"1f91f-1f3fc","🤟🏽":"1f91f-1f3fd","🤟🏾":"1f91f-1f3fe","🤟🏿":"1f91f-1f3ff","🤘🏻":"1f918-1f3fb","🤘🏼":"1f918-1f3fc","🤘🏽":"1f918-1f3fd","🤘🏾":"1f918-1f3fe","🤘🏿":"1f918-1f3ff","🤙🏻":"1f919-1f3fb","🤙🏼":"1f919-1f3fc","🤙🏽":"1f919-1f3fd","🤙🏾":"1f919-1f3fe","🤙🏿":"1f919-1f3ff","👈🏻":"1f448-1f3fb","👈🏼":"1f448-1f3fc","👈🏽":"1f448-1f3fd","👈🏾":"1f448-1f3fe","👈🏿":"1f448-1f3ff","👉🏻":"1f449-1f3fb","👉🏼":"1f449-1f3fc","👉🏽":"1f449-1f3fd","👉🏾":"1f449-1f3fe","👉🏿":"1f449-1f3ff","👆🏻":"1f446-1f3fb","👆🏼":"1f446-1f3fc","👆🏽":"1f446-1f3fd","👆🏾":"1f446-1f3fe","👆🏿":"1f446-1f3ff","🖕🏻":"1f595-1f3fb","🖕🏼":"1f595-1f3fc","🖕🏽":"1f595-1f3fd","🖕🏾":"1f595-1f3fe","🖕🏿":"1f595-1f3ff","👇🏻":"1f447-1f3fb","👇🏼":"1f447-1f3fc","👇🏽":"1f447-1f3fd","👇🏾":"1f447-1f3fe","👇🏿":"1f447-1f3ff","☝️":"261d","☝🏻":"261d-1f3fb","☝🏼":"261d-1f3fc","☝🏽":"261d-1f3fd","☝🏾":"261d-1f3fe","☝🏿":"261d-1f3ff","🫵🏻":"1faf5-1f3fb","🫵🏼":"1faf5-1f3fc","🫵🏽":"1faf5-1f3fd","🫵🏾":"1faf5-1f3fe","🫵🏿":"1faf5-1f3ff","👍🏻":"1f44d-1f3fb","👍🏼":"1f44d-1f3fc","👍🏽":"1f44d-1f3fd","👍🏾":"1f44d-1f3fe","👍🏿":"1f44d-1f3ff","👎🏻":"1f44e-1f3fb","👎🏼":"1f44e-1f3fc","👎🏽":"1f44e-1f3fd","👎🏾":"1f44e-1f3fe","👎🏿":"1f44e-1f3ff","✊🏻":"270a-1f3fb","✊🏼":"270a-1f3fc","✊🏽":"270a-1f3fd","✊🏾":"270a-1f3fe","✊🏿":"270a-1f3ff","👊🏻":"1f44a-1f3fb","👊🏼":"1f44a-1f3fc","👊🏽":"1f44a-1f3fd","👊🏾":"1f44a-1f3fe","👊🏿":"1f44a-1f3ff","🤛🏻":"1f91b-1f3fb","🤛🏼":"1f91b-1f3fc","🤛🏽":"1f91b-1f3fd","🤛🏾":"1f91b-1f3fe","🤛🏿":"1f91b-1f3ff","🤜🏻":"1f91c-1f3fb","🤜🏼":"1f91c-1f3fc","🤜🏽":"1f91c-1f3fd","🤜🏾":"1f91c-1f3fe","🤜🏿":"1f91c-1f3ff","👏🏻":"1f44f-1f3fb","👏🏼":"1f44f-1f3fc","👏🏽":"1f44f-1f3fd","👏🏾":"1f44f-1f3fe","👏🏿":"1f44f-1f3ff","🙌🏻":"1f64c-1f3fb","🙌🏼":"1f64c-1f3fc","🙌🏽":"1f64c-1f3fd","🙌🏾":"1f64c-1f3fe","🙌🏿":"1f64c-1f3ff","🫶🏻":"1faf6-1f3fb","🫶🏼":"1faf6-1f3fc","🫶🏽":"1faf6-1f3fd","🫶🏾":"1faf6-1f3fe","🫶🏿":"1faf6-1f3ff","👐🏻":"1f450-1f3fb","👐🏼":"1f450-1f3fc","👐🏽":"1f450-1f3fd","👐🏾":"1f450-1f3fe","👐🏿":"1f450-1f3ff","🤲🏻":"1f932-1f3fb","🤲🏼":"1f932-1f3fc","🤲🏽":"1f932-1f3fd","🤲🏾":"1f932-1f3fe","🤲🏿":"1f932-1f3ff","🤝🏻":"1f91d-1f3fb","🤝🏼":"1f91d-1f3fc","🤝🏽":"1f91d-1f3fd","🤝🏾":"1f91d-1f3fe","🤝🏿":"1f91d-1f3ff","🙏🏻":"1f64f-1f3fb","🙏🏼":"1f64f-1f3fc","🙏🏽":"1f64f-1f3fd","🙏🏾":"1f64f-1f3fe","🙏🏿":"1f64f-1f3ff","✍️":"270d","✍🏻":"270d-1f3fb","✍🏼":"270d-1f3fc","✍🏽":"270d-1f3fd","✍🏾":"270d-1f3fe","✍🏿":"270d-1f3ff","💅🏻":"1f485-1f3fb","💅🏼":"1f485-1f3fc","💅🏽":"1f485-1f3fd","💅🏾":"1f485-1f3fe","💅🏿":"1f485-1f3ff","🤳🏻":"1f933-1f3fb","🤳🏼":"1f933-1f3fc","🤳🏽":"1f933-1f3fd","🤳🏾":"1f933-1f3fe","🤳🏿":"1f933-1f3ff","💪🏻":"1f4aa-1f3fb","💪🏼":"1f4aa-1f3fc","💪🏽":"1f4aa-1f3fd","💪🏾":"1f4aa-1f3fe","💪🏿":"1f4aa-1f3ff","🦵🏻":"1f9b5-1f3fb","🦵🏼":"1f9b5-1f3fc","🦵🏽":"1f9b5-1f3fd","🦵🏾":"1f9b5-1f3fe","🦵🏿":"1f9b5-1f3ff","🦶🏻":"1f9b6-1f3fb","🦶🏼":"1f9b6-1f3fc","🦶🏽":"1f9b6-1f3fd","🦶🏾":"1f9b6-1f3fe","🦶🏿":"1f9b6-1f3ff","👂🏻":"1f442-1f3fb","👂🏼":"1f442-1f3fc","👂🏽":"1f442-1f3fd","👂🏾":"1f442-1f3fe","👂🏿":"1f442-1f3ff","🦻🏻":"1f9bb-1f3fb","🦻🏼":"1f9bb-1f3fc","🦻🏽":"1f9bb-1f3fd","🦻🏾":"1f9bb-1f3fe","🦻🏿":"1f9bb-1f3ff","👃🏻":"1f443-1f3fb","👃🏼":"1f443-1f3fc","👃🏽":"1f443-1f3fd","👃🏾":"1f443-1f3fe","👃🏿":"1f443-1f3ff","👁️":"1f441","👶🏻":"1f476-1f3fb","👶🏼":"1f476-1f3fc","👶🏽":"1f476-1f3fd","👶🏾":"1f476-1f3fe","👶🏿":"1f476-1f3ff","🧒🏻":"1f9d2-1f3fb","🧒🏼":"1f9d2-1f3fc","🧒🏽":"1f9d2-1f3fd","🧒🏾":"1f9d2-1f3fe","🧒🏿":"1f9d2-1f3ff","👦🏻":"1f466-1f3fb","👦🏼":"1f466-1f3fc","👦🏽":"1f466-1f3fd","👦🏾":"1f466-1f3fe","👦🏿":"1f466-1f3ff","👧🏻":"1f467-1f3fb","👧🏼":"1f467-1f3fc","👧🏽":"1f467-1f3fd","👧🏾":"1f467-1f3fe","👧🏿":"1f467-1f3ff","🧑🏻":"1f9d1-1f3fb","🧑🏼":"1f9d1-1f3fc","🧑🏽":"1f9d1-1f3fd","🧑🏾":"1f9d1-1f3fe","🧑🏿":"1f9d1-1f3ff","👱🏻":"1f471-1f3fb","👱🏼":"1f471-1f3fc","👱🏽":"1f471-1f3fd","👱🏾":"1f471-1f3fe","👱🏿":"1f471-1f3ff","👨🏻":"1f468-1f3fb","👨🏼":"1f468-1f3fc","👨🏽":"1f468-1f3fd","👨🏾":"1f468-1f3fe","👨🏿":"1f468-1f3ff","🧔🏻":"1f9d4-1f3fb","🧔🏼":"1f9d4-1f3fc","🧔🏽":"1f9d4-1f3fd","🧔🏾":"1f9d4-1f3fe","🧔🏿":"1f9d4-1f3ff","👩🏻":"1f469-1f3fb","👩🏼":"1f469-1f3fc","👩🏽":"1f469-1f3fd","👩🏾":"1f469-1f3fe","👩🏿":"1f469-1f3ff","🧓🏻":"1f9d3-1f3fb","🧓🏼":"1f9d3-1f3fc","🧓🏽":"1f9d3-1f3fd","🧓🏾":"1f9d3-1f3fe","🧓🏿":"1f9d3-1f3ff","👴🏻":"1f474-1f3fb","👴🏼":"1f474-1f3fc","👴🏽":"1f474-1f3fd","👴🏾":"1f474-1f3fe","👴🏿":"1f474-1f3ff","👵🏻":"1f475-1f3fb","👵🏼":"1f475-1f3fc","👵🏽":"1f475-1f3fd","👵🏾":"1f475-1f3fe","👵🏿":"1f475-1f3ff","🙍🏻":"1f64d-1f3fb","🙍🏼":"1f64d-1f3fc","🙍🏽":"1f64d-1f3fd","🙍🏾":"1f64d-1f3fe","🙍🏿":"1f64d-1f3ff","🙎🏻":"1f64e-1f3fb","🙎🏼":"1f64e-1f3fc","🙎🏽":"1f64e-1f3fd","🙎🏾":"1f64e-1f3fe","🙎🏿":"1f64e-1f3ff","🙅🏻":"1f645-1f3fb","🙅🏼":"1f645-1f3fc","🙅🏽":"1f645-1f3fd","🙅🏾":"1f645-1f3fe","🙅🏿":"1f645-1f3ff","🙆🏻":"1f646-1f3fb","🙆🏼":"1f646-1f3fc","🙆🏽":"1f646-1f3fd","🙆🏾":"1f646-1f3fe","🙆🏿":"1f646-1f3ff","💁🏻":"1f481-1f3fb","💁🏼":"1f481-1f3fc","💁🏽":"1f481-1f3fd","💁🏾":"1f481-1f3fe","💁🏿":"1f481-1f3ff","🙋🏻":"1f64b-1f3fb","🙋🏼":"1f64b-1f3fc","🙋🏽":"1f64b-1f3fd","🙋🏾":"1f64b-1f3fe","🙋🏿":"1f64b-1f3ff","🧏🏻":"1f9cf-1f3fb","🧏🏼":"1f9cf-1f3fc","🧏🏽":"1f9cf-1f3fd","🧏🏾":"1f9cf-1f3fe","🧏🏿":"1f9cf-1f3ff","🙇🏻":"1f647-1f3fb","🙇🏼":"1f647-1f3fc","🙇🏽":"1f647-1f3fd","🙇🏾":"1f647-1f3fe","🙇🏿":"1f647-1f3ff","🤦🏻":"1f926-1f3fb","🤦🏼":"1f926-1f3fc","🤦🏽":"1f926-1f3fd","🤦🏾":"1f926-1f3fe","🤦🏿":"1f926-1f3ff","🤷🏻":"1f937-1f3fb","🤷🏼":"1f937-1f3fc","🤷🏽":"1f937-1f3fd","🤷🏾":"1f937-1f3fe","🤷🏿":"1f937-1f3ff","👮🏻":"1f46e-1f3fb","👮🏼":"1f46e-1f3fc","👮🏽":"1f46e-1f3fd","👮🏾":"1f46e-1f3fe","👮🏿":"1f46e-1f3ff","🕵️":"1f575","🕵🏻":"1f575-1f3fb","🕵🏼":"1f575-1f3fc","🕵🏽":"1f575-1f3fd","🕵🏾":"1f575-1f3fe","🕵🏿":"1f575-1f3ff","💂🏻":"1f482-1f3fb","💂🏼":"1f482-1f3fc","💂🏽":"1f482-1f3fd","💂🏾":"1f482-1f3fe","💂🏿":"1f482-1f3ff","🥷🏻":"1f977-1f3fb","🥷🏼":"1f977-1f3fc","🥷🏽":"1f977-1f3fd","🥷🏾":"1f977-1f3fe","🥷🏿":"1f977-1f3ff","👷🏻":"1f477-1f3fb","👷🏼":"1f477-1f3fc","👷🏽":"1f477-1f3fd","👷🏾":"1f477-1f3fe","👷🏿":"1f477-1f3ff","🫅🏻":"1fac5-1f3fb","🫅🏼":"1fac5-1f3fc","🫅🏽":"1fac5-1f3fd","🫅🏾":"1fac5-1f3fe","🫅🏿":"1fac5-1f3ff","🤴🏻":"1f934-1f3fb","🤴🏼":"1f934-1f3fc","🤴🏽":"1f934-1f3fd","🤴🏾":"1f934-1f3fe","🤴🏿":"1f934-1f3ff","👸🏻":"1f478-1f3fb","👸🏼":"1f478-1f3fc","👸🏽":"1f478-1f3fd","👸🏾":"1f478-1f3fe","👸🏿":"1f478-1f3ff","👳🏻":"1f473-1f3fb","👳🏼":"1f473-1f3fc","👳🏽":"1f473-1f3fd","👳🏾":"1f473-1f3fe","👳🏿":"1f473-1f3ff","👲🏻":"1f472-1f3fb","👲🏼":"1f472-1f3fc","👲🏽":"1f472-1f3fd","👲🏾":"1f472-1f3fe","👲🏿":"1f472-1f3ff","🧕🏻":"1f9d5-1f3fb","🧕🏼":"1f9d5-1f3fc","🧕🏽":"1f9d5-1f3fd","🧕🏾":"1f9d5-1f3fe","🧕🏿":"1f9d5-1f3ff","🤵🏻":"1f935-1f3fb","🤵🏼":"1f935-1f3fc","🤵🏽":"1f935-1f3fd","🤵🏾":"1f935-1f3fe","🤵🏿":"1f935-1f3ff","👰🏻":"1f470-1f3fb","👰🏼":"1f470-1f3fc","👰🏽":"1f470-1f3fd","👰🏾":"1f470-1f3fe","👰🏿":"1f470-1f3ff","🤰🏻":"1f930-1f3fb","🤰🏼":"1f930-1f3fc","🤰🏽":"1f930-1f3fd","🤰🏾":"1f930-1f3fe","🤰🏿":"1f930-1f3ff","🫃🏻":"1fac3-1f3fb","🫃🏼":"1fac3-1f3fc","🫃🏽":"1fac3-1f3fd","🫃🏾":"1fac3-1f3fe","🫃🏿":"1fac3-1f3ff","🫄🏻":"1fac4-1f3fb","🫄🏼":"1fac4-1f3fc","🫄🏽":"1fac4-1f3fd","🫄🏾":"1fac4-1f3fe","🫄🏿":"1fac4-1f3ff","🤱🏻":"1f931-1f3fb","🤱🏼":"1f931-1f3fc","🤱🏽":"1f931-1f3fd","🤱🏾":"1f931-1f3fe","🤱🏿":"1f931-1f3ff","👼🏻":"1f47c-1f3fb","👼🏼":"1f47c-1f3fc","👼🏽":"1f47c-1f3fd","👼🏾":"1f47c-1f3fe","👼🏿":"1f47c-1f3ff","🎅🏻":"1f385-1f3fb","🎅🏼":"1f385-1f3fc","🎅🏽":"1f385-1f3fd","🎅🏾":"1f385-1f3fe","🎅🏿":"1f385-1f3ff","🤶🏻":"1f936-1f3fb","🤶🏼":"1f936-1f3fc","🤶🏽":"1f936-1f3fd","🤶🏾":"1f936-1f3fe","🤶🏿":"1f936-1f3ff","🦸🏻":"1f9b8-1f3fb","🦸🏼":"1f9b8-1f3fc","🦸🏽":"1f9b8-1f3fd","🦸🏾":"1f9b8-1f3fe","🦸🏿":"1f9b8-1f3ff","🦹🏻":"1f9b9-1f3fb","🦹🏼":"1f9b9-1f3fc","🦹🏽":"1f9b9-1f3fd","🦹🏾":"1f9b9-1f3fe","🦹🏿":"1f9b9-1f3ff","🧙🏻":"1f9d9-1f3fb","🧙🏼":"1f9d9-1f3fc","🧙🏽":"1f9d9-1f3fd","🧙🏾":"1f9d9-1f3fe","🧙🏿":"1f9d9-1f3ff","🧚🏻":"1f9da-1f3fb","🧚🏼":"1f9da-1f3fc","🧚🏽":"1f9da-1f3fd","🧚🏾":"1f9da-1f3fe","🧚🏿":"1f9da-1f3ff","🧛🏻":"1f9db-1f3fb","🧛🏼":"1f9db-1f3fc","🧛🏽":"1f9db-1f3fd","🧛🏾":"1f9db-1f3fe","🧛🏿":"1f9db-1f3ff","🧜🏻":"1f9dc-1f3fb","🧜🏼":"1f9dc-1f3fc","🧜🏽":"1f9dc-1f3fd","🧜🏾":"1f9dc-1f3fe","🧜🏿":"1f9dc-1f3ff","🧝🏻":"1f9dd-1f3fb","🧝🏼":"1f9dd-1f3fc","🧝🏽":"1f9dd-1f3fd","🧝🏾":"1f9dd-1f3fe","🧝🏿":"1f9dd-1f3ff","💆🏻":"1f486-1f3fb","💆🏼":"1f486-1f3fc","💆🏽":"1f486-1f3fd","💆🏾":"1f486-1f3fe","💆🏿":"1f486-1f3ff","💇🏻":"1f487-1f3fb","💇🏼":"1f487-1f3fc","💇🏽":"1f487-1f3fd","💇🏾":"1f487-1f3fe","💇🏿":"1f487-1f3ff","🚶🏻":"1f6b6-1f3fb","🚶🏼":"1f6b6-1f3fc","🚶🏽":"1f6b6-1f3fd","🚶🏾":"1f6b6-1f3fe","🚶🏿":"1f6b6-1f3ff","🧍🏻":"1f9cd-1f3fb","🧍🏼":"1f9cd-1f3fc","🧍🏽":"1f9cd-1f3fd","🧍🏾":"1f9cd-1f3fe","🧍🏿":"1f9cd-1f3ff","🧎🏻":"1f9ce-1f3fb","🧎🏼":"1f9ce-1f3fc","🧎🏽":"1f9ce-1f3fd","🧎🏾":"1f9ce-1f3fe","🧎🏿":"1f9ce-1f3ff","🏃🏻":"1f3c3-1f3fb","🏃🏼":"1f3c3-1f3fc","🏃🏽":"1f3c3-1f3fd","🏃🏾":"1f3c3-1f3fe","🏃🏿":"1f3c3-1f3ff","💃🏻":"1f483-1f3fb","💃🏼":"1f483-1f3fc","💃🏽":"1f483-1f3fd","💃🏾":"1f483-1f3fe","💃🏿":"1f483-1f3ff","🕺🏻":"1f57a-1f3fb","🕺🏼":"1f57a-1f3fc","🕺🏽":"1f57a-1f3fd","🕺🏾":"1f57a-1f3fe","🕺🏿":"1f57a-1f3ff","🕴️":"1f574","🕴🏻":"1f574-1f3fb","🕴🏼":"1f574-1f3fc","🕴🏽":"1f574-1f3fd","🕴🏾":"1f574-1f3fe","🕴🏿":"1f574-1f3ff","🧖🏻":"1f9d6-1f3fb","🧖🏼":"1f9d6-1f3fc","🧖🏽":"1f9d6-1f3fd","🧖🏾":"1f9d6-1f3fe","🧖🏿":"1f9d6-1f3ff","🧗🏻":"1f9d7-1f3fb","🧗🏼":"1f9d7-1f3fc","🧗🏽":"1f9d7-1f3fd","🧗🏾":"1f9d7-1f3fe","🧗🏿":"1f9d7-1f3ff","🏇🏻":"1f3c7-1f3fb","🏇🏼":"1f3c7-1f3fc","🏇🏽":"1f3c7-1f3fd","🏇🏾":"1f3c7-1f3fe","🏇🏿":"1f3c7-1f3ff","⛷️":"26f7","🏂🏻":"1f3c2-1f3fb","🏂🏼":"1f3c2-1f3fc","🏂🏽":"1f3c2-1f3fd","🏂🏾":"1f3c2-1f3fe","🏂🏿":"1f3c2-1f3ff","🏌️":"1f3cc","🏌🏻":"1f3cc-1f3fb","🏌🏼":"1f3cc-1f3fc","🏌🏽":"1f3cc-1f3fd","🏌🏾":"1f3cc-1f3fe","🏌🏿":"1f3cc-1f3ff","🏄🏻":"1f3c4-1f3fb","🏄🏼":"1f3c4-1f3fc","🏄🏽":"1f3c4-1f3fd","🏄🏾":"1f3c4-1f3fe","🏄🏿":"1f3c4-1f3ff","🚣🏻":"1f6a3-1f3fb","🚣🏼":"1f6a3-1f3fc","🚣🏽":"1f6a3-1f3fd","🚣🏾":"1f6a3-1f3fe","🚣🏿":"1f6a3-1f3ff","🏊🏻":"1f3ca-1f3fb","🏊🏼":"1f3ca-1f3fc","🏊🏽":"1f3ca-1f3fd","🏊🏾":"1f3ca-1f3fe","🏊🏿":"1f3ca-1f3ff","⛹️":"26f9","⛹🏻":"26f9-1f3fb","⛹🏼":"26f9-1f3fc","⛹🏽":"26f9-1f3fd","⛹🏾":"26f9-1f3fe","⛹🏿":"26f9-1f3ff","🏋️":"1f3cb","🏋🏻":"1f3cb-1f3fb","🏋🏼":"1f3cb-1f3fc","🏋🏽":"1f3cb-1f3fd","🏋🏾":"1f3cb-1f3fe","🏋🏿":"1f3cb-1f3ff","🚴🏻":"1f6b4-1f3fb","🚴🏼":"1f6b4-1f3fc","🚴🏽":"1f6b4-1f3fd","🚴🏾":"1f6b4-1f3fe","🚴🏿":"1f6b4-1f3ff","🚵🏻":"1f6b5-1f3fb","🚵🏼":"1f6b5-1f3fc","🚵🏽":"1f6b5-1f3fd","🚵🏾":"1f6b5-1f3fe","🚵🏿":"1f6b5-1f3ff","🤸🏻":"1f938-1f3fb","🤸🏼":"1f938-1f3fc","🤸🏽":"1f938-1f3fd","🤸🏾":"1f938-1f3fe","🤸🏿":"1f938-1f3ff","🤽🏻":"1f93d-1f3fb","🤽🏼":"1f93d-1f3fc","🤽🏽":"1f93d-1f3fd","🤽🏾":"1f93d-1f3fe","🤽🏿":"1f93d-1f3ff","🤾🏻":"1f93e-1f3fb","🤾🏼":"1f93e-1f3fc","🤾🏽":"1f93e-1f3fd","🤾🏾":"1f93e-1f3fe","🤾🏿":"1f93e-1f3ff","🤹🏻":"1f939-1f3fb","🤹🏼":"1f939-1f3fc","🤹🏽":"1f939-1f3fd","🤹🏾":"1f939-1f3fe","🤹🏿":"1f939-1f3ff","🧘🏻":"1f9d8-1f3fb","🧘🏼":"1f9d8-1f3fc","🧘🏽":"1f9d8-1f3fd","🧘🏾":"1f9d8-1f3fe","🧘🏿":"1f9d8-1f3ff","🛀🏻":"1f6c0-1f3fb","🛀🏼":"1f6c0-1f3fc","🛀🏽":"1f6c0-1f3fd","🛀🏾":"1f6c0-1f3fe","🛀🏿":"1f6c0-1f3ff","🛌🏻":"1f6cc-1f3fb","🛌🏼":"1f6cc-1f3fc","🛌🏽":"1f6cc-1f3fd","🛌🏾":"1f6cc-1f3fe","🛌🏿":"1f6cc-1f3ff","👭🏻":"1f46d-1f3fb","👭🏼":"1f46d-1f3fc","👭🏽":"1f46d-1f3fd","👭🏾":"1f46d-1f3fe","👭🏿":"1f46d-1f3ff","👫🏻":"1f46b-1f3fb","👫🏼":"1f46b-1f3fc","👫🏽":"1f46b-1f3fd","👫🏾":"1f46b-1f3fe","👫🏿":"1f46b-1f3ff","👬🏻":"1f46c-1f3fb","👬🏼":"1f46c-1f3fc","👬🏽":"1f46c-1f3fd","👬🏾":"1f46c-1f3fe","👬🏿":"1f46c-1f3ff","💏🏻":"1f48f-1f3fb","💏🏼":"1f48f-1f3fc","💏🏽":"1f48f-1f3fd","💏🏾":"1f48f-1f3fe","💏🏿":"1f48f-1f3ff","💑🏻":"1f491-1f3fb","💑🏼":"1f491-1f3fc","💑🏽":"1f491-1f3fd","💑🏾":"1f491-1f3fe","💑🏿":"1f491-1f3ff","🗣️":"1f5e3","🐿️":"1f43f","🕊️":"1f54a","🕷️":"1f577","🕸️":"1f578","🏵️":"1f3f5","☘️":"2618","🌶️":"1f336","🍽️":"1f37d","🗺️":"1f5fa","🏔️":"1f3d4","⛰️":"26f0","🏕️":"1f3d5","🏖️":"1f3d6","🏜️":"1f3dc","🏝️":"1f3dd","🏞️":"1f3de","🏟️":"1f3df","🏛️":"1f3db","🏗️":"1f3d7","🏘️":"1f3d8","🏚️":"1f3da","⛩️":"26e9","🏙️":"1f3d9","♨️":"2668","🏎️":"1f3ce","🏍️":"1f3cd","🛣️":"1f6e3","🛤️":"1f6e4","🛢️":"1f6e2","🛳️":"1f6f3","⛴️":"26f4","🛥️":"1f6e5","✈️":"2708","🛩️":"1f6e9","🛰️":"1f6f0","🛎️":"1f6ce","⏱️":"23f1","⏲️":"23f2","🕰️":"1f570","🌡️":"1f321","☀️":"2600","☁️":"2601","⛈️":"26c8","🌤️":"1f324","🌥️":"1f325","🌦️":"1f326","🌧️":"1f327","🌨️":"1f328","🌩️":"1f329","🌪️":"1f32a","🌫️":"1f32b","🌬️":"1f32c","☂️":"2602","⛱️":"26f1","❄️":"2744","☃️":"2603","☄️":"2604","🎗️":"1f397","🎟️":"1f39f","🎖️":"1f396","⛸️":"26f8","🕹️":"1f579","♠️":"2660","♥️":"2665","♦️":"2666","♣️":"2663","♟️":"265f","🖼️":"1f5bc","🕶️":"1f576","🛍️":"1f6cd","⛑️":"26d1","🎙️":"1f399","🎚️":"1f39a","🎛️":"1f39b","☎️":"260e","🖥️":"1f5a5","🖨️":"1f5a8","⌨️":"2328","🖱️":"1f5b1","🖲️":"1f5b2","🎞️":"1f39e","📽️":"1f4fd","🕯️":"1f56f","🗞️":"1f5de","🏷️":"1f3f7","✉️":"2709","🗳️":"1f5f3","✏️":"270f","✒️":"2712","🖋️":"1f58b","🖊️":"1f58a","🖌️":"1f58c","🖍️":"1f58d","🗂️":"1f5c2","🗒️":"1f5d2","🗓️":"1f5d3","🖇️":"1f587","✂️":"2702","🗃️":"1f5c3","🗄️":"1f5c4","🗑️":"1f5d1","🗝️":"1f5dd","⛏️":"26cf","⚒️":"2692","🛠️":"1f6e0","🗡️":"1f5e1","⚔️":"2694","🛡️":"1f6e1","⚙️":"2699","🗜️":"1f5dc","⚖️":"2696","⛓️":"26d3","⚗️":"2697","🛏️":"1f6cf","🛋️":"1f6cb","⚰️":"26b0","⚱️":"26b1","⚠️":"26a0","☢️":"2622","☣️":"2623","⬆️":"2b06","↗️":"2197","➡️":"27a1","↘️":"2198","⬇️":"2b07","↙️":"2199","⬅️":"2b05","↖️":"2196","↕️":"2195","↔️":"2194","↩️":"21a9","↪️":"21aa","⤴️":"2934","⤵️":"2935","⚛️":"269b","🕉️":"1f549","✡️":"2721","☸️":"2638","☯️":"262f","✝️":"271d","☦️":"2626","☪️":"262a","☮️":"262e","▶️":"25b6","⏭️":"23ed","⏯️":"23ef","◀️":"25c0","⏮️":"23ee","⏸️":"23f8","⏹️":"23f9","⏺️":"23fa","⏏️":"23cf","♀️":"2640","♂️":"2642","⚧️":"26a7","✖️":"2716","♾️":"267e","‼️":"203c","⁉️":"2049","〰️":"3030","⚕️":"2695","♻️":"267b","⚜️":"269c","☑️":"2611","✔️":"2714","〽️":"303d","✳️":"2733","✴️":"2734","❇️":"2747","©️":"a9","®️":"ae","™️":"2122","#⃣":"23-20e3","*⃣":"2a-20e3","0⃣":"30-20e3","1⃣":"31-20e3","2⃣":"32-20e3","3⃣":"33-20e3","4⃣":"34-20e3","5⃣":"35-20e3","6⃣":"36-20e3","7⃣":"37-20e3","8⃣":"38-20e3","9⃣":"39-20e3","🅰️":"1f170","🅱️":"1f171","ℹ️":"2139","Ⓜ️":"24c2","🅾️":"1f17e","🅿️":"1f17f","🈂️":"1f202","🈷️":"1f237","㊗️":"3297","㊙️":"3299","◼️":"25fc","◻️":"25fb","▪️":"25aa","▫️":"25ab","🏳️":"1f3f3","🇦🇨":"1f1e6-1f1e8","🇦🇩":"1f1e6-1f1e9","🇦🇪":"1f1e6-1f1ea","🇦🇫":"1f1e6-1f1eb","🇦🇬":"1f1e6-1f1ec","🇦🇮":"1f1e6-1f1ee","🇦🇱":"1f1e6-1f1f1","🇦🇲":"1f1e6-1f1f2","🇦🇴":"1f1e6-1f1f4","🇦🇶":"1f1e6-1f1f6","🇦🇷":"1f1e6-1f1f7","🇦🇸":"1f1e6-1f1f8","🇦🇹":"1f1e6-1f1f9","🇦🇺":"1f1e6-1f1fa","🇦🇼":"1f1e6-1f1fc","🇦🇽":"1f1e6-1f1fd","🇦🇿":"1f1e6-1f1ff","🇧🇦":"1f1e7-1f1e6","🇧🇧":"1f1e7-1f1e7","🇧🇩":"1f1e7-1f1e9","🇧🇪":"1f1e7-1f1ea","🇧🇫":"1f1e7-1f1eb","🇧🇬":"1f1e7-1f1ec","🇧🇭":"1f1e7-1f1ed","🇧🇮":"1f1e7-1f1ee","🇧🇯":"1f1e7-1f1ef","🇧🇱":"1f1e7-1f1f1","🇧🇲":"1f1e7-1f1f2","🇧🇳":"1f1e7-1f1f3","🇧🇴":"1f1e7-1f1f4","🇧🇶":"1f1e7-1f1f6","🇧🇷":"1f1e7-1f1f7","🇧🇸":"1f1e7-1f1f8","🇧🇹":"1f1e7-1f1f9","🇧🇻":"1f1e7-1f1fb","🇧🇼":"1f1e7-1f1fc","🇧🇾":"1f1e7-1f1fe","🇧🇿":"1f1e7-1f1ff","🇨🇦":"1f1e8-1f1e6","🇨🇨":"1f1e8-1f1e8","🇨🇩":"1f1e8-1f1e9","🇨🇫":"1f1e8-1f1eb","🇨🇬":"1f1e8-1f1ec","🇨🇭":"1f1e8-1f1ed","🇨🇮":"1f1e8-1f1ee","🇨🇰":"1f1e8-1f1f0","🇨🇱":"1f1e8-1f1f1","🇨🇲":"1f1e8-1f1f2","🇨🇳":"1f1e8-1f1f3","🇨🇴":"1f1e8-1f1f4","🇨🇵":"1f1e8-1f1f5","🇨🇷":"1f1e8-1f1f7","🇨🇺":"1f1e8-1f1fa","🇨🇻":"1f1e8-1f1fb","🇨🇼":"1f1e8-1f1fc","🇨🇽":"1f1e8-1f1fd","🇨🇾":"1f1e8-1f1fe","🇨🇿":"1f1e8-1f1ff","🇩🇪":"1f1e9-1f1ea","🇩🇬":"1f1e9-1f1ec","🇩🇯":"1f1e9-1f1ef","🇩🇰":"1f1e9-1f1f0","🇩🇲":"1f1e9-1f1f2","🇩🇴":"1f1e9-1f1f4","🇩🇿":"1f1e9-1f1ff","🇪🇦":"1f1ea-1f1e6","🇪🇨":"1f1ea-1f1e8","🇪🇪":"1f1ea-1f1ea","🇪🇬":"1f1ea-1f1ec","🇪🇭":"1f1ea-1f1ed","🇪🇷":"1f1ea-1f1f7","🇪🇸":"1f1ea-1f1f8","🇪🇹":"1f1ea-1f1f9","🇪🇺":"1f1ea-1f1fa","🇫🇮":"1f1eb-1f1ee","🇫🇯":"1f1eb-1f1ef","🇫🇰":"1f1eb-1f1f0","🇫🇲":"1f1eb-1f1f2","🇫🇴":"1f1eb-1f1f4","🇫🇷":"1f1eb-1f1f7","🇬🇦":"1f1ec-1f1e6","🇬🇧":"1f1ec-1f1e7","🇬🇩":"1f1ec-1f1e9","🇬🇪":"1f1ec-1f1ea","🇬🇫":"1f1ec-1f1eb","🇬🇬":"1f1ec-1f1ec","🇬🇭":"1f1ec-1f1ed","🇬🇮":"1f1ec-1f1ee","🇬🇱":"1f1ec-1f1f1","🇬🇲":"1f1ec-1f1f2","🇬🇳":"1f1ec-1f1f3","🇬🇵":"1f1ec-1f1f5","🇬🇶":"1f1ec-1f1f6","🇬🇷":"1f1ec-1f1f7","🇬🇸":"1f1ec-1f1f8","🇬🇹":"1f1ec-1f1f9","🇬🇺":"1f1ec-1f1fa","🇬🇼":"1f1ec-1f1fc","🇬🇾":"1f1ec-1f1fe","🇭🇰":"1f1ed-1f1f0","🇭🇲":"1f1ed-1f1f2","🇭🇳":"1f1ed-1f1f3","🇭🇷":"1f1ed-1f1f7","🇭🇹":"1f1ed-1f1f9","🇭🇺":"1f1ed-1f1fa","🇮🇨":"1f1ee-1f1e8","🇮🇩":"1f1ee-1f1e9","🇮🇪":"1f1ee-1f1ea","🇮🇱":"1f1ee-1f1f1","🇮🇲":"1f1ee-1f1f2","🇮🇳":"1f1ee-1f1f3","🇮🇴":"1f1ee-1f1f4","🇮🇶":"1f1ee-1f1f6","🇮🇷":"1f1ee-1f1f7","🇮🇸":"1f1ee-1f1f8","🇮🇹":"1f1ee-1f1f9","🇯🇪":"1f1ef-1f1ea","🇯🇲":"1f1ef-1f1f2","🇯🇴":"1f1ef-1f1f4","🇯🇵":"1f1ef-1f1f5","🇰🇪":"1f1f0-1f1ea","🇰🇬":"1f1f0-1f1ec","🇰🇭":"1f1f0-1f1ed","🇰🇮":"1f1f0-1f1ee","🇰🇲":"1f1f0-1f1f2","🇰🇳":"1f1f0-1f1f3","🇰🇵":"1f1f0-1f1f5","🇰🇷":"1f1f0-1f1f7","🇰🇼":"1f1f0-1f1fc","🇰🇾":"1f1f0-1f1fe","🇰🇿":"1f1f0-1f1ff","🇱🇦":"1f1f1-1f1e6","🇱🇧":"1f1f1-1f1e7","🇱🇨":"1f1f1-1f1e8","🇱🇮":"1f1f1-1f1ee","🇱🇰":"1f1f1-1f1f0","🇱🇷":"1f1f1-1f1f7","🇱🇸":"1f1f1-1f1f8","🇱🇹":"1f1f1-1f1f9","🇱🇺":"1f1f1-1f1fa","🇱🇻":"1f1f1-1f1fb","🇱🇾":"1f1f1-1f1fe","🇲🇦":"1f1f2-1f1e6","🇲🇨":"1f1f2-1f1e8","🇲🇩":"1f1f2-1f1e9","🇲🇪":"1f1f2-1f1ea","🇲🇫":"1f1f2-1f1eb","🇲🇬":"1f1f2-1f1ec","🇲🇭":"1f1f2-1f1ed","🇲🇰":"1f1f2-1f1f0","🇲🇱":"1f1f2-1f1f1","🇲🇲":"1f1f2-1f1f2","🇲🇳":"1f1f2-1f1f3","🇲🇴":"1f1f2-1f1f4","🇲🇵":"1f1f2-1f1f5","🇲🇶":"1f1f2-1f1f6","🇲🇷":"1f1f2-1f1f7","🇲🇸":"1f1f2-1f1f8","🇲🇹":"1f1f2-1f1f9","🇲🇺":"1f1f2-1f1fa","🇲🇻":"1f1f2-1f1fb","🇲🇼":"1f1f2-1f1fc","🇲🇽":"1f1f2-1f1fd","🇲🇾":"1f1f2-1f1fe","🇲🇿":"1f1f2-1f1ff","🇳🇦":"1f1f3-1f1e6","🇳🇨":"1f1f3-1f1e8","🇳🇪":"1f1f3-1f1ea","🇳🇫":"1f1f3-1f1eb","🇳🇬":"1f1f3-1f1ec","🇳🇮":"1f1f3-1f1ee","🇳🇱":"1f1f3-1f1f1","🇳🇴":"1f1f3-1f1f4","🇳🇵":"1f1f3-1f1f5","🇳🇷":"1f1f3-1f1f7","🇳🇺":"1f1f3-1f1fa","🇳🇿":"1f1f3-1f1ff","🇴🇲":"1f1f4-1f1f2","🇵🇦":"1f1f5-1f1e6","🇵🇪":"1f1f5-1f1ea","🇵🇫":"1f1f5-1f1eb","🇵🇬":"1f1f5-1f1ec","🇵🇭":"1f1f5-1f1ed","🇵🇰":"1f1f5-1f1f0","🇵🇱":"1f1f5-1f1f1","🇵🇲":"1f1f5-1f1f2","🇵🇳":"1f1f5-1f1f3","🇵🇷":"1f1f5-1f1f7","🇵🇸":"1f1f5-1f1f8","🇵🇹":"1f1f5-1f1f9","🇵🇼":"1f1f5-1f1fc","🇵🇾":"1f1f5-1f1fe","🇶🇦":"1f1f6-1f1e6","🇷🇪":"1f1f7-1f1ea","🇷🇴":"1f1f7-1f1f4","🇷🇸":"1f1f7-1f1f8","🇷🇺":"1f1f7-1f1fa","🇷🇼":"1f1f7-1f1fc","🇸🇦":"1f1f8-1f1e6","🇸🇧":"1f1f8-1f1e7","🇸🇨":"1f1f8-1f1e8","🇸🇩":"1f1f8-1f1e9","🇸🇪":"1f1f8-1f1ea","🇸🇬":"1f1f8-1f1ec","🇸🇭":"1f1f8-1f1ed","🇸🇮":"1f1f8-1f1ee","🇸🇯":"1f1f8-1f1ef","🇸🇰":"1f1f8-1f1f0","🇸🇱":"1f1f8-1f1f1","🇸🇲":"1f1f8-1f1f2","🇸🇳":"1f1f8-1f1f3","🇸🇴":"1f1f8-1f1f4","🇸🇷":"1f1f8-1f1f7","🇸🇸":"1f1f8-1f1f8","🇸🇹":"1f1f8-1f1f9","🇸🇻":"1f1f8-1f1fb","🇸🇽":"1f1f8-1f1fd","🇸🇾":"1f1f8-1f1fe","🇸🇿":"1f1f8-1f1ff","🇹🇦":"1f1f9-1f1e6","🇹🇨":"1f1f9-1f1e8","🇹🇩":"1f1f9-1f1e9","🇹🇫":"1f1f9-1f1eb","🇹🇬":"1f1f9-1f1ec","🇹🇭":"1f1f9-1f1ed","🇹🇯":"1f1f9-1f1ef","🇹🇰":"1f1f9-1f1f0","🇹🇱":"1f1f9-1f1f1","🇹🇲":"1f1f9-1f1f2","🇹🇳":"1f1f9-1f1f3","🇹🇴":"1f1f9-1f1f4","🇹🇷":"1f1f9-1f1f7","🇹🇹":"1f1f9-1f1f9","🇹🇻":"1f1f9-1f1fb","🇹🇼":"1f1f9-1f1fc","🇹🇿":"1f1f9-1f1ff","🇺🇦":"1f1fa-1f1e6","🇺🇬":"1f1fa-1f1ec","🇺🇲":"1f1fa-1f1f2","🇺🇳":"1f1fa-1f1f3","🇺🇸":"1f1fa-1f1f8","🇺🇾":"1f1fa-1f1fe","🇺🇿":"1f1fa-1f1ff","🇻🇦":"1f1fb-1f1e6","🇻🇨":"1f1fb-1f1e8","🇻🇪":"1f1fb-1f1ea","🇻🇬":"1f1fb-1f1ec","🇻🇮":"1f1fb-1f1ee","🇻🇳":"1f1fb-1f1f3","🇻🇺":"1f1fb-1f1fa","🇼🇫":"1f1fc-1f1eb","🇼🇸":"1f1fc-1f1f8","🇽🇰":"1f1fd-1f1f0","🇾🇪":"1f1fe-1f1ea","🇾🇹":"1f1fe-1f1f9","🇿🇦":"1f1ff-1f1e6","🇿🇲":"1f1ff-1f1f2","🇿🇼":"1f1ff-1f1fc","😶‍🌫":"1f636-200d-1f32b-fe0f","😮‍💨":"1f62e-200d-1f4a8","😵‍💫":"1f635-200d-1f4ab","❤‍🔥":"2764-fe0f-200d-1f525","❤‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨":"1f441-200d-1f5e8","🧔‍♂":"1f9d4-200d-2642-fe0f","🧔‍♀":"1f9d4-200d-2640-fe0f","👨‍🦰":"1f468-200d-1f9b0","👨‍🦱":"1f468-200d-1f9b1","👨‍🦳":"1f468-200d-1f9b3","👨‍🦲":"1f468-200d-1f9b2","👩‍🦰":"1f469-200d-1f9b0","🧑‍🦰":"1f9d1-200d-1f9b0","👩‍🦱":"1f469-200d-1f9b1","🧑‍🦱":"1f9d1-200d-1f9b1","👩‍🦳":"1f469-200d-1f9b3","🧑‍🦳":"1f9d1-200d-1f9b3","👩‍🦲":"1f469-200d-1f9b2","🧑‍🦲":"1f9d1-200d-1f9b2","👱‍♀":"1f471-200d-2640-fe0f","👱‍♂":"1f471-200d-2642-fe0f","🙍‍♂":"1f64d-200d-2642-fe0f","🙍‍♀":"1f64d-200d-2640-fe0f","🙎‍♂":"1f64e-200d-2642-fe0f","🙎‍♀":"1f64e-200d-2640-fe0f","🙅‍♂":"1f645-200d-2642-fe0f","🙅‍♀":"1f645-200d-2640-fe0f","🙆‍♂":"1f646-200d-2642-fe0f","🙆‍♀":"1f646-200d-2640-fe0f","💁‍♂":"1f481-200d-2642-fe0f","💁‍♀":"1f481-200d-2640-fe0f","🙋‍♂":"1f64b-200d-2642-fe0f","🙋‍♀":"1f64b-200d-2640-fe0f","🧏‍♂":"1f9cf-200d-2642-fe0f","🧏‍♀":"1f9cf-200d-2640-fe0f","🙇‍♂":"1f647-200d-2642-fe0f","🙇‍♀":"1f647-200d-2640-fe0f","🤦‍♂":"1f926-200d-2642-fe0f","🤦‍♀":"1f926-200d-2640-fe0f","🤷‍♂":"1f937-200d-2642-fe0f","🤷‍♀":"1f937-200d-2640-fe0f","🧑‍⚕":"1f9d1-200d-2695-fe0f","👨‍⚕":"1f468-200d-2695-fe0f","👩‍⚕":"1f469-200d-2695-fe0f","🧑‍🎓":"1f9d1-200d-1f393","👨‍🎓":"1f468-200d-1f393","👩‍🎓":"1f469-200d-1f393","🧑‍🏫":"1f9d1-200d-1f3eb","👨‍🏫":"1f468-200d-1f3eb","👩‍🏫":"1f469-200d-1f3eb","🧑‍⚖":"1f9d1-200d-2696-fe0f","👨‍⚖":"1f468-200d-2696-fe0f","👩‍⚖":"1f469-200d-2696-fe0f","🧑‍🌾":"1f9d1-200d-1f33e","👨‍🌾":"1f468-200d-1f33e","👩‍🌾":"1f469-200d-1f33e","🧑‍🍳":"1f9d1-200d-1f373","👨‍🍳":"1f468-200d-1f373","👩‍🍳":"1f469-200d-1f373","🧑‍🔧":"1f9d1-200d-1f527","👨‍🔧":"1f468-200d-1f527","👩‍🔧":"1f469-200d-1f527","🧑‍🏭":"1f9d1-200d-1f3ed","👨‍🏭":"1f468-200d-1f3ed","👩‍🏭":"1f469-200d-1f3ed","🧑‍💼":"1f9d1-200d-1f4bc","👨‍💼":"1f468-200d-1f4bc","👩‍💼":"1f469-200d-1f4bc","🧑‍🔬":"1f9d1-200d-1f52c","👨‍🔬":"1f468-200d-1f52c","👩‍🔬":"1f469-200d-1f52c","🧑‍💻":"1f9d1-200d-1f4bb","👨‍💻":"1f468-200d-1f4bb","👩‍💻":"1f469-200d-1f4bb","🧑‍🎤":"1f9d1-200d-1f3a4","👨‍🎤":"1f468-200d-1f3a4","👩‍🎤":"1f469-200d-1f3a4","🧑‍🎨":"1f9d1-200d-1f3a8","👨‍🎨":"1f468-200d-1f3a8","👩‍🎨":"1f469-200d-1f3a8","🧑‍✈":"1f9d1-200d-2708-fe0f","👨‍✈":"1f468-200d-2708-fe0f","👩‍✈":"1f469-200d-2708-fe0f","🧑‍🚀":"1f9d1-200d-1f680","👨‍🚀":"1f468-200d-1f680","👩‍🚀":"1f469-200d-1f680","🧑‍🚒":"1f9d1-200d-1f692","👨‍🚒":"1f468-200d-1f692","👩‍🚒":"1f469-200d-1f692","👮‍♂":"1f46e-200d-2642-fe0f","👮‍♀":"1f46e-200d-2640-fe0f","🕵‍♂":"1f575-fe0f-200d-2642-fe0f","🕵‍♀":"1f575-fe0f-200d-2640-fe0f","💂‍♂":"1f482-200d-2642-fe0f","💂‍♀":"1f482-200d-2640-fe0f","👷‍♂":"1f477-200d-2642-fe0f","👷‍♀":"1f477-200d-2640-fe0f","👳‍♂":"1f473-200d-2642-fe0f","👳‍♀":"1f473-200d-2640-fe0f","🤵‍♂":"1f935-200d-2642-fe0f","🤵‍♀":"1f935-200d-2640-fe0f","👰‍♂":"1f470-200d-2642-fe0f","👰‍♀":"1f470-200d-2640-fe0f","👩‍🍼":"1f469-200d-1f37c","👨‍🍼":"1f468-200d-1f37c","🧑‍🍼":"1f9d1-200d-1f37c","🧑‍🎄":"1f9d1-200d-1f384","🦸‍♂":"1f9b8-200d-2642-fe0f","🦸‍♀":"1f9b8-200d-2640-fe0f","🦹‍♂":"1f9b9-200d-2642-fe0f","🦹‍♀":"1f9b9-200d-2640-fe0f","🧙‍♂":"1f9d9-200d-2642-fe0f","🧙‍♀":"1f9d9-200d-2640-fe0f","🧚‍♂":"1f9da-200d-2642-fe0f","🧚‍♀":"1f9da-200d-2640-fe0f","🧛‍♂":"1f9db-200d-2642-fe0f","🧛‍♀":"1f9db-200d-2640-fe0f","🧜‍♂":"1f9dc-200d-2642-fe0f","🧜‍♀":"1f9dc-200d-2640-fe0f","🧝‍♂":"1f9dd-200d-2642-fe0f","🧝‍♀":"1f9dd-200d-2640-fe0f","🧞‍♂":"1f9de-200d-2642-fe0f","🧞‍♀":"1f9de-200d-2640-fe0f","🧟‍♂":"1f9df-200d-2642-fe0f","🧟‍♀":"1f9df-200d-2640-fe0f","💆‍♂":"1f486-200d-2642-fe0f","💆‍♀":"1f486-200d-2640-fe0f","💇‍♂":"1f487-200d-2642-fe0f","💇‍♀":"1f487-200d-2640-fe0f","🚶‍♂":"1f6b6-200d-2642-fe0f","🚶‍♀":"1f6b6-200d-2640-fe0f","🧍‍♂":"1f9cd-200d-2642-fe0f","🧍‍♀":"1f9cd-200d-2640-fe0f","🧎‍♂":"1f9ce-200d-2642-fe0f","🧎‍♀":"1f9ce-200d-2640-fe0f","🧑‍🦯":"1f9d1-200d-1f9af","👨‍🦯":"1f468-200d-1f9af","👩‍🦯":"1f469-200d-1f9af","🧑‍🦼":"1f9d1-200d-1f9bc","👨‍🦼":"1f468-200d-1f9bc","👩‍🦼":"1f469-200d-1f9bc","🧑‍🦽":"1f9d1-200d-1f9bd","👨‍🦽":"1f468-200d-1f9bd","👩‍🦽":"1f469-200d-1f9bd","🏃‍♂":"1f3c3-200d-2642-fe0f","🏃‍♀":"1f3c3-200d-2640-fe0f","👯‍♂":"1f46f-200d-2642-fe0f","👯‍♀":"1f46f-200d-2640-fe0f","🧖‍♂":"1f9d6-200d-2642-fe0f","🧖‍♀":"1f9d6-200d-2640-fe0f","🧗‍♂":"1f9d7-200d-2642-fe0f","🧗‍♀":"1f9d7-200d-2640-fe0f","🏌‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏄‍♂":"1f3c4-200d-2642-fe0f","🏄‍♀":"1f3c4-200d-2640-fe0f","🚣‍♂":"1f6a3-200d-2642-fe0f","🚣‍♀":"1f6a3-200d-2640-fe0f","🏊‍♂":"1f3ca-200d-2642-fe0f","🏊‍♀":"1f3ca-200d-2640-fe0f","⛹‍♂":"26f9-fe0f-200d-2642-fe0f","⛹‍♀":"26f9-fe0f-200d-2640-fe0f","🏋‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋‍♀":"1f3cb-fe0f-200d-2640-fe0f","🚴‍♂":"1f6b4-200d-2642-fe0f","🚴‍♀":"1f6b4-200d-2640-fe0f","🚵‍♂":"1f6b5-200d-2642-fe0f","🚵‍♀":"1f6b5-200d-2640-fe0f","🤸‍♂":"1f938-200d-2642-fe0f","🤸‍♀":"1f938-200d-2640-fe0f","🤼‍♂":"1f93c-200d-2642-fe0f","🤼‍♀":"1f93c-200d-2640-fe0f","🤽‍♂":"1f93d-200d-2642-fe0f","🤽‍♀":"1f93d-200d-2640-fe0f","🤾‍♂":"1f93e-200d-2642-fe0f","🤾‍♀":"1f93e-200d-2640-fe0f","🤹‍♂":"1f939-200d-2642-fe0f","🤹‍♀":"1f939-200d-2640-fe0f","🧘‍♂":"1f9d8-200d-2642-fe0f","🧘‍♀":"1f9d8-200d-2640-fe0f","👨‍👦":"1f468-200d-1f466","👨‍👧":"1f468-200d-1f467","👩‍👦":"1f469-200d-1f466","👩‍👧":"1f469-200d-1f467","🐕‍🦺":"1f415-200d-1f9ba","🐈‍⬛":"1f408-200d-2b1b","🐻‍❄":"1f43b-200d-2744-fe0f","#️⃣":"23-20e3","*️⃣":"2a-20e3","0️⃣":"30-20e3","1️⃣":"31-20e3","2️⃣":"32-20e3","3️⃣":"33-20e3","4️⃣":"34-20e3","5️⃣":"35-20e3","6️⃣":"36-20e3","7️⃣":"37-20e3","8️⃣":"38-20e3","9️⃣":"39-20e3","🏳‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠":"1f3f4-200d-2620-fe0f","😶‍🌫️":"1f636-200d-1f32b-fe0f","❤️‍🔥":"2764-fe0f-200d-1f525","❤️‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨️":"1f441-200d-1f5e8","👁️‍🗨":"1f441-200d-1f5e8","🧔‍♂️":"1f9d4-200d-2642-fe0f","🧔🏻‍♂":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂":"1f9d4-1f3ff-200d-2642-fe0f","🧔‍♀️":"1f9d4-200d-2640-fe0f","🧔🏻‍♀":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀":"1f9d4-1f3ff-200d-2640-fe0f","👨🏻‍🦰":"1f468-1f3fb-200d-1f9b0","👨🏼‍🦰":"1f468-1f3fc-200d-1f9b0","👨🏽‍🦰":"1f468-1f3fd-200d-1f9b0","👨🏾‍🦰":"1f468-1f3fe-200d-1f9b0","👨🏿‍🦰":"1f468-1f3ff-200d-1f9b0","👨🏻‍🦱":"1f468-1f3fb-200d-1f9b1","👨🏼‍🦱":"1f468-1f3fc-200d-1f9b1","👨🏽‍🦱":"1f468-1f3fd-200d-1f9b1","👨🏾‍🦱":"1f468-1f3fe-200d-1f9b1","👨🏿‍🦱":"1f468-1f3ff-200d-1f9b1","👨🏻‍🦳":"1f468-1f3fb-200d-1f9b3","👨🏼‍🦳":"1f468-1f3fc-200d-1f9b3","👨🏽‍🦳":"1f468-1f3fd-200d-1f9b3","👨🏾‍🦳":"1f468-1f3fe-200d-1f9b3","👨🏿‍🦳":"1f468-1f3ff-200d-1f9b3","👨🏻‍🦲":"1f468-1f3fb-200d-1f9b2","👨🏼‍🦲":"1f468-1f3fc-200d-1f9b2","👨🏽‍🦲":"1f468-1f3fd-200d-1f9b2","👨🏾‍🦲":"1f468-1f3fe-200d-1f9b2","👨🏿‍🦲":"1f468-1f3ff-200d-1f9b2","👩🏻‍🦰":"1f469-1f3fb-200d-1f9b0","👩🏼‍🦰":"1f469-1f3fc-200d-1f9b0","👩🏽‍🦰":"1f469-1f3fd-200d-1f9b0","👩🏾‍🦰":"1f469-1f3fe-200d-1f9b0","👩🏿‍🦰":"1f469-1f3ff-200d-1f9b0","🧑🏻‍🦰":"1f9d1-1f3fb-200d-1f9b0","🧑🏼‍🦰":"1f9d1-1f3fc-200d-1f9b0","🧑🏽‍🦰":"1f9d1-1f3fd-200d-1f9b0","🧑🏾‍🦰":"1f9d1-1f3fe-200d-1f9b0","🧑🏿‍🦰":"1f9d1-1f3ff-200d-1f9b0","👩🏻‍🦱":"1f469-1f3fb-200d-1f9b1","👩🏼‍🦱":"1f469-1f3fc-200d-1f9b1","👩🏽‍🦱":"1f469-1f3fd-200d-1f9b1","👩🏾‍🦱":"1f469-1f3fe-200d-1f9b1","👩🏿‍🦱":"1f469-1f3ff-200d-1f9b1","🧑🏻‍🦱":"1f9d1-1f3fb-200d-1f9b1","🧑🏼‍🦱":"1f9d1-1f3fc-200d-1f9b1","🧑🏽‍🦱":"1f9d1-1f3fd-200d-1f9b1","🧑🏾‍🦱":"1f9d1-1f3fe-200d-1f9b1","🧑🏿‍🦱":"1f9d1-1f3ff-200d-1f9b1","👩🏻‍🦳":"1f469-1f3fb-200d-1f9b3","👩🏼‍🦳":"1f469-1f3fc-200d-1f9b3","👩🏽‍🦳":"1f469-1f3fd-200d-1f9b3","👩🏾‍🦳":"1f469-1f3fe-200d-1f9b3","👩🏿‍🦳":"1f469-1f3ff-200d-1f9b3","🧑🏻‍🦳":"1f9d1-1f3fb-200d-1f9b3","🧑🏼‍🦳":"1f9d1-1f3fc-200d-1f9b3","🧑🏽‍🦳":"1f9d1-1f3fd-200d-1f9b3","🧑🏾‍🦳":"1f9d1-1f3fe-200d-1f9b3","🧑🏿‍🦳":"1f9d1-1f3ff-200d-1f9b3","👩🏻‍🦲":"1f469-1f3fb-200d-1f9b2","👩🏼‍🦲":"1f469-1f3fc-200d-1f9b2","👩🏽‍🦲":"1f469-1f3fd-200d-1f9b2","👩🏾‍🦲":"1f469-1f3fe-200d-1f9b2","👩🏿‍🦲":"1f469-1f3ff-200d-1f9b2","🧑🏻‍🦲":"1f9d1-1f3fb-200d-1f9b2","🧑🏼‍🦲":"1f9d1-1f3fc-200d-1f9b2","🧑🏽‍🦲":"1f9d1-1f3fd-200d-1f9b2","🧑🏾‍🦲":"1f9d1-1f3fe-200d-1f9b2","🧑🏿‍🦲":"1f9d1-1f3ff-200d-1f9b2","👱‍♀️":"1f471-200d-2640-fe0f","👱🏻‍♀":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀":"1f471-1f3ff-200d-2640-fe0f","👱‍♂️":"1f471-200d-2642-fe0f","👱🏻‍♂":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂":"1f471-1f3ff-200d-2642-fe0f","🙍‍♂️":"1f64d-200d-2642-fe0f","🙍🏻‍♂":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂":"1f64d-1f3ff-200d-2642-fe0f","🙍‍♀️":"1f64d-200d-2640-fe0f","🙍🏻‍♀":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀":"1f64d-1f3ff-200d-2640-fe0f","🙎‍♂️":"1f64e-200d-2642-fe0f","🙎🏻‍♂":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂":"1f64e-1f3ff-200d-2642-fe0f","🙎‍♀️":"1f64e-200d-2640-fe0f","🙎🏻‍♀":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀":"1f64e-1f3ff-200d-2640-fe0f","🙅‍♂️":"1f645-200d-2642-fe0f","🙅🏻‍♂":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂":"1f645-1f3ff-200d-2642-fe0f","🙅‍♀️":"1f645-200d-2640-fe0f","🙅🏻‍♀":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀":"1f645-1f3ff-200d-2640-fe0f","🙆‍♂️":"1f646-200d-2642-fe0f","🙆🏻‍♂":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂":"1f646-1f3ff-200d-2642-fe0f","🙆‍♀️":"1f646-200d-2640-fe0f","🙆🏻‍♀":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀":"1f646-1f3ff-200d-2640-fe0f","💁‍♂️":"1f481-200d-2642-fe0f","💁🏻‍♂":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂":"1f481-1f3ff-200d-2642-fe0f","💁‍♀️":"1f481-200d-2640-fe0f","💁🏻‍♀":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀":"1f481-1f3ff-200d-2640-fe0f","🙋‍♂️":"1f64b-200d-2642-fe0f","🙋🏻‍♂":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂":"1f64b-1f3ff-200d-2642-fe0f","🙋‍♀️":"1f64b-200d-2640-fe0f","🙋🏻‍♀":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀":"1f64b-1f3ff-200d-2640-fe0f","🧏‍♂️":"1f9cf-200d-2642-fe0f","🧏🏻‍♂":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂":"1f9cf-1f3ff-200d-2642-fe0f","🧏‍♀️":"1f9cf-200d-2640-fe0f","🧏🏻‍♀":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀":"1f9cf-1f3ff-200d-2640-fe0f","🙇‍♂️":"1f647-200d-2642-fe0f","🙇🏻‍♂":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂":"1f647-1f3ff-200d-2642-fe0f","🙇‍♀️":"1f647-200d-2640-fe0f","🙇🏻‍♀":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀":"1f647-1f3ff-200d-2640-fe0f","🤦‍♂️":"1f926-200d-2642-fe0f","🤦🏻‍♂":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂":"1f926-1f3ff-200d-2642-fe0f","🤦‍♀️":"1f926-200d-2640-fe0f","🤦🏻‍♀":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀":"1f926-1f3ff-200d-2640-fe0f","🤷‍♂️":"1f937-200d-2642-fe0f","🤷🏻‍♂":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂":"1f937-1f3ff-200d-2642-fe0f","🤷‍♀️":"1f937-200d-2640-fe0f","🤷🏻‍♀":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀":"1f937-1f3ff-200d-2640-fe0f","🧑‍⚕️":"1f9d1-200d-2695-fe0f","🧑🏻‍⚕":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕":"1f9d1-1f3ff-200d-2695-fe0f","👨‍⚕️":"1f468-200d-2695-fe0f","👨🏻‍⚕":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕":"1f468-1f3ff-200d-2695-fe0f","👩‍⚕️":"1f469-200d-2695-fe0f","👩🏻‍⚕":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍🎓":"1f9d1-1f3fb-200d-1f393","🧑🏼‍🎓":"1f9d1-1f3fc-200d-1f393","🧑🏽‍🎓":"1f9d1-1f3fd-200d-1f393","🧑🏾‍🎓":"1f9d1-1f3fe-200d-1f393","🧑🏿‍🎓":"1f9d1-1f3ff-200d-1f393","👨🏻‍🎓":"1f468-1f3fb-200d-1f393","👨🏼‍🎓":"1f468-1f3fc-200d-1f393","👨🏽‍🎓":"1f468-1f3fd-200d-1f393","👨🏾‍🎓":"1f468-1f3fe-200d-1f393","👨🏿‍🎓":"1f468-1f3ff-200d-1f393","👩🏻‍🎓":"1f469-1f3fb-200d-1f393","👩🏼‍🎓":"1f469-1f3fc-200d-1f393","👩🏽‍🎓":"1f469-1f3fd-200d-1f393","👩🏾‍🎓":"1f469-1f3fe-200d-1f393","👩🏿‍🎓":"1f469-1f3ff-200d-1f393","🧑🏻‍🏫":"1f9d1-1f3fb-200d-1f3eb","🧑🏼‍🏫":"1f9d1-1f3fc-200d-1f3eb","🧑🏽‍🏫":"1f9d1-1f3fd-200d-1f3eb","🧑🏾‍🏫":"1f9d1-1f3fe-200d-1f3eb","🧑🏿‍🏫":"1f9d1-1f3ff-200d-1f3eb","👨🏻‍🏫":"1f468-1f3fb-200d-1f3eb","👨🏼‍🏫":"1f468-1f3fc-200d-1f3eb","👨🏽‍🏫":"1f468-1f3fd-200d-1f3eb","👨🏾‍🏫":"1f468-1f3fe-200d-1f3eb","👨🏿‍🏫":"1f468-1f3ff-200d-1f3eb","👩🏻‍🏫":"1f469-1f3fb-200d-1f3eb","👩🏼‍🏫":"1f469-1f3fc-200d-1f3eb","👩🏽‍🏫":"1f469-1f3fd-200d-1f3eb","👩🏾‍🏫":"1f469-1f3fe-200d-1f3eb","👩🏿‍🏫":"1f469-1f3ff-200d-1f3eb","🧑‍⚖️":"1f9d1-200d-2696-fe0f","🧑🏻‍⚖":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖":"1f9d1-1f3ff-200d-2696-fe0f","👨‍⚖️":"1f468-200d-2696-fe0f","👨🏻‍⚖":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖":"1f468-1f3ff-200d-2696-fe0f","👩‍⚖️":"1f469-200d-2696-fe0f","👩🏻‍⚖":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍🌾":"1f9d1-1f3fb-200d-1f33e","🧑🏼‍🌾":"1f9d1-1f3fc-200d-1f33e","🧑🏽‍🌾":"1f9d1-1f3fd-200d-1f33e","🧑🏾‍🌾":"1f9d1-1f3fe-200d-1f33e","🧑🏿‍🌾":"1f9d1-1f3ff-200d-1f33e","👨🏻‍🌾":"1f468-1f3fb-200d-1f33e","👨🏼‍🌾":"1f468-1f3fc-200d-1f33e","👨🏽‍🌾":"1f468-1f3fd-200d-1f33e","👨🏾‍🌾":"1f468-1f3fe-200d-1f33e","👨🏿‍🌾":"1f468-1f3ff-200d-1f33e","👩🏻‍🌾":"1f469-1f3fb-200d-1f33e","👩🏼‍🌾":"1f469-1f3fc-200d-1f33e","👩🏽‍🌾":"1f469-1f3fd-200d-1f33e","👩🏾‍🌾":"1f469-1f3fe-200d-1f33e","👩🏿‍🌾":"1f469-1f3ff-200d-1f33e","🧑🏻‍🍳":"1f9d1-1f3fb-200d-1f373","🧑🏼‍🍳":"1f9d1-1f3fc-200d-1f373","🧑🏽‍🍳":"1f9d1-1f3fd-200d-1f373","🧑🏾‍🍳":"1f9d1-1f3fe-200d-1f373","🧑🏿‍🍳":"1f9d1-1f3ff-200d-1f373","👨🏻‍🍳":"1f468-1f3fb-200d-1f373","👨🏼‍🍳":"1f468-1f3fc-200d-1f373","👨🏽‍🍳":"1f468-1f3fd-200d-1f373","👨🏾‍🍳":"1f468-1f3fe-200d-1f373","👨🏿‍🍳":"1f468-1f3ff-200d-1f373","👩🏻‍🍳":"1f469-1f3fb-200d-1f373","👩🏼‍🍳":"1f469-1f3fc-200d-1f373","👩🏽‍🍳":"1f469-1f3fd-200d-1f373","👩🏾‍🍳":"1f469-1f3fe-200d-1f373","👩🏿‍🍳":"1f469-1f3ff-200d-1f373","🧑🏻‍🔧":"1f9d1-1f3fb-200d-1f527","🧑🏼‍🔧":"1f9d1-1f3fc-200d-1f527","🧑🏽‍🔧":"1f9d1-1f3fd-200d-1f527","🧑🏾‍🔧":"1f9d1-1f3fe-200d-1f527","🧑🏿‍🔧":"1f9d1-1f3ff-200d-1f527","👨🏻‍🔧":"1f468-1f3fb-200d-1f527","👨🏼‍🔧":"1f468-1f3fc-200d-1f527","👨🏽‍🔧":"1f468-1f3fd-200d-1f527","👨🏾‍🔧":"1f468-1f3fe-200d-1f527","👨🏿‍🔧":"1f468-1f3ff-200d-1f527","👩🏻‍🔧":"1f469-1f3fb-200d-1f527","👩🏼‍🔧":"1f469-1f3fc-200d-1f527","👩🏽‍🔧":"1f469-1f3fd-200d-1f527","👩🏾‍🔧":"1f469-1f3fe-200d-1f527","👩🏿‍🔧":"1f469-1f3ff-200d-1f527","🧑🏻‍🏭":"1f9d1-1f3fb-200d-1f3ed","🧑🏼‍🏭":"1f9d1-1f3fc-200d-1f3ed","🧑🏽‍🏭":"1f9d1-1f3fd-200d-1f3ed","🧑🏾‍🏭":"1f9d1-1f3fe-200d-1f3ed","🧑🏿‍🏭":"1f9d1-1f3ff-200d-1f3ed","👨🏻‍🏭":"1f468-1f3fb-200d-1f3ed","👨🏼‍🏭":"1f468-1f3fc-200d-1f3ed","👨🏽‍🏭":"1f468-1f3fd-200d-1f3ed","👨🏾‍🏭":"1f468-1f3fe-200d-1f3ed","👨🏿‍🏭":"1f468-1f3ff-200d-1f3ed","👩🏻‍🏭":"1f469-1f3fb-200d-1f3ed","👩🏼‍🏭":"1f469-1f3fc-200d-1f3ed","👩🏽‍🏭":"1f469-1f3fd-200d-1f3ed","👩🏾‍🏭":"1f469-1f3fe-200d-1f3ed","👩🏿‍🏭":"1f469-1f3ff-200d-1f3ed","🧑🏻‍💼":"1f9d1-1f3fb-200d-1f4bc","🧑🏼‍💼":"1f9d1-1f3fc-200d-1f4bc","🧑🏽‍💼":"1f9d1-1f3fd-200d-1f4bc","🧑🏾‍💼":"1f9d1-1f3fe-200d-1f4bc","🧑🏿‍💼":"1f9d1-1f3ff-200d-1f4bc","👨🏻‍💼":"1f468-1f3fb-200d-1f4bc","👨🏼‍💼":"1f468-1f3fc-200d-1f4bc","👨🏽‍💼":"1f468-1f3fd-200d-1f4bc","👨🏾‍💼":"1f468-1f3fe-200d-1f4bc","👨🏿‍💼":"1f468-1f3ff-200d-1f4bc","👩🏻‍💼":"1f469-1f3fb-200d-1f4bc","👩🏼‍💼":"1f469-1f3fc-200d-1f4bc","👩🏽‍💼":"1f469-1f3fd-200d-1f4bc","👩🏾‍💼":"1f469-1f3fe-200d-1f4bc","👩🏿‍💼":"1f469-1f3ff-200d-1f4bc","🧑🏻‍🔬":"1f9d1-1f3fb-200d-1f52c","🧑🏼‍🔬":"1f9d1-1f3fc-200d-1f52c","🧑🏽‍🔬":"1f9d1-1f3fd-200d-1f52c","🧑🏾‍🔬":"1f9d1-1f3fe-200d-1f52c","🧑🏿‍🔬":"1f9d1-1f3ff-200d-1f52c","👨🏻‍🔬":"1f468-1f3fb-200d-1f52c","👨🏼‍🔬":"1f468-1f3fc-200d-1f52c","👨🏽‍🔬":"1f468-1f3fd-200d-1f52c","👨🏾‍🔬":"1f468-1f3fe-200d-1f52c","👨🏿‍🔬":"1f468-1f3ff-200d-1f52c","👩🏻‍🔬":"1f469-1f3fb-200d-1f52c","👩🏼‍🔬":"1f469-1f3fc-200d-1f52c","👩🏽‍🔬":"1f469-1f3fd-200d-1f52c","👩🏾‍🔬":"1f469-1f3fe-200d-1f52c","👩🏿‍🔬":"1f469-1f3ff-200d-1f52c","🧑🏻‍💻":"1f9d1-1f3fb-200d-1f4bb","🧑🏼‍💻":"1f9d1-1f3fc-200d-1f4bb","🧑🏽‍💻":"1f9d1-1f3fd-200d-1f4bb","🧑🏾‍💻":"1f9d1-1f3fe-200d-1f4bb","🧑🏿‍💻":"1f9d1-1f3ff-200d-1f4bb","👨🏻‍💻":"1f468-1f3fb-200d-1f4bb","👨🏼‍💻":"1f468-1f3fc-200d-1f4bb","👨🏽‍💻":"1f468-1f3fd-200d-1f4bb","👨🏾‍💻":"1f468-1f3fe-200d-1f4bb","👨🏿‍💻":"1f468-1f3ff-200d-1f4bb","👩🏻‍💻":"1f469-1f3fb-200d-1f4bb","👩🏼‍💻":"1f469-1f3fc-200d-1f4bb","👩🏽‍💻":"1f469-1f3fd-200d-1f4bb","👩🏾‍💻":"1f469-1f3fe-200d-1f4bb","👩🏿‍💻":"1f469-1f3ff-200d-1f4bb","🧑🏻‍🎤":"1f9d1-1f3fb-200d-1f3a4","🧑🏼‍🎤":"1f9d1-1f3fc-200d-1f3a4","🧑🏽‍🎤":"1f9d1-1f3fd-200d-1f3a4","🧑🏾‍🎤":"1f9d1-1f3fe-200d-1f3a4","🧑🏿‍🎤":"1f9d1-1f3ff-200d-1f3a4","👨🏻‍🎤":"1f468-1f3fb-200d-1f3a4","👨🏼‍🎤":"1f468-1f3fc-200d-1f3a4","👨🏽‍🎤":"1f468-1f3fd-200d-1f3a4","👨🏾‍🎤":"1f468-1f3fe-200d-1f3a4","👨🏿‍🎤":"1f468-1f3ff-200d-1f3a4","👩🏻‍🎤":"1f469-1f3fb-200d-1f3a4","👩🏼‍🎤":"1f469-1f3fc-200d-1f3a4","👩🏽‍🎤":"1f469-1f3fd-200d-1f3a4","👩🏾‍🎤":"1f469-1f3fe-200d-1f3a4","👩🏿‍🎤":"1f469-1f3ff-200d-1f3a4","🧑🏻‍🎨":"1f9d1-1f3fb-200d-1f3a8","🧑🏼‍🎨":"1f9d1-1f3fc-200d-1f3a8","🧑🏽‍🎨":"1f9d1-1f3fd-200d-1f3a8","🧑🏾‍🎨":"1f9d1-1f3fe-200d-1f3a8","🧑🏿‍🎨":"1f9d1-1f3ff-200d-1f3a8","👨🏻‍🎨":"1f468-1f3fb-200d-1f3a8","👨🏼‍🎨":"1f468-1f3fc-200d-1f3a8","👨🏽‍🎨":"1f468-1f3fd-200d-1f3a8","👨🏾‍🎨":"1f468-1f3fe-200d-1f3a8","👨🏿‍🎨":"1f468-1f3ff-200d-1f3a8","👩🏻‍🎨":"1f469-1f3fb-200d-1f3a8","👩🏼‍🎨":"1f469-1f3fc-200d-1f3a8","👩🏽‍🎨":"1f469-1f3fd-200d-1f3a8","👩🏾‍🎨":"1f469-1f3fe-200d-1f3a8","👩🏿‍🎨":"1f469-1f3ff-200d-1f3a8","🧑‍✈️":"1f9d1-200d-2708-fe0f","🧑🏻‍✈":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈":"1f9d1-1f3ff-200d-2708-fe0f","👨‍✈️":"1f468-200d-2708-fe0f","👨🏻‍✈":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈":"1f468-1f3ff-200d-2708-fe0f","👩‍✈️":"1f469-200d-2708-fe0f","👩🏻‍✈":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈":"1f469-1f3ff-200d-2708-fe0f","🧑🏻‍🚀":"1f9d1-1f3fb-200d-1f680","🧑🏼‍🚀":"1f9d1-1f3fc-200d-1f680","🧑🏽‍🚀":"1f9d1-1f3fd-200d-1f680","🧑🏾‍🚀":"1f9d1-1f3fe-200d-1f680","🧑🏿‍🚀":"1f9d1-1f3ff-200d-1f680","👨🏻‍🚀":"1f468-1f3fb-200d-1f680","👨🏼‍🚀":"1f468-1f3fc-200d-1f680","👨🏽‍🚀":"1f468-1f3fd-200d-1f680","👨🏾‍🚀":"1f468-1f3fe-200d-1f680","👨🏿‍🚀":"1f468-1f3ff-200d-1f680","👩🏻‍🚀":"1f469-1f3fb-200d-1f680","👩🏼‍🚀":"1f469-1f3fc-200d-1f680","👩🏽‍🚀":"1f469-1f3fd-200d-1f680","👩🏾‍🚀":"1f469-1f3fe-200d-1f680","👩🏿‍🚀":"1f469-1f3ff-200d-1f680","🧑🏻‍🚒":"1f9d1-1f3fb-200d-1f692","🧑🏼‍🚒":"1f9d1-1f3fc-200d-1f692","🧑🏽‍🚒":"1f9d1-1f3fd-200d-1f692","🧑🏾‍🚒":"1f9d1-1f3fe-200d-1f692","🧑🏿‍🚒":"1f9d1-1f3ff-200d-1f692","👨🏻‍🚒":"1f468-1f3fb-200d-1f692","👨🏼‍🚒":"1f468-1f3fc-200d-1f692","👨🏽‍🚒":"1f468-1f3fd-200d-1f692","👨🏾‍🚒":"1f468-1f3fe-200d-1f692","👨🏿‍🚒":"1f468-1f3ff-200d-1f692","👩🏻‍🚒":"1f469-1f3fb-200d-1f692","👩🏼‍🚒":"1f469-1f3fc-200d-1f692","👩🏽‍🚒":"1f469-1f3fd-200d-1f692","👩🏾‍🚒":"1f469-1f3fe-200d-1f692","👩🏿‍🚒":"1f469-1f3ff-200d-1f692","👮‍♂️":"1f46e-200d-2642-fe0f","👮🏻‍♂":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂":"1f46e-1f3ff-200d-2642-fe0f","👮‍♀️":"1f46e-200d-2640-fe0f","👮🏻‍♀":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀":"1f46e-1f3ff-200d-2640-fe0f","🕵‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵️‍♂":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂":"1f575-1f3ff-200d-2642-fe0f","🕵‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵️‍♀":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀":"1f575-1f3ff-200d-2640-fe0f","💂‍♂️":"1f482-200d-2642-fe0f","💂🏻‍♂":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂":"1f482-1f3ff-200d-2642-fe0f","💂‍♀️":"1f482-200d-2640-fe0f","💂🏻‍♀":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀":"1f482-1f3ff-200d-2640-fe0f","👷‍♂️":"1f477-200d-2642-fe0f","👷🏻‍♂":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂":"1f477-1f3ff-200d-2642-fe0f","👷‍♀️":"1f477-200d-2640-fe0f","👷🏻‍♀":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀":"1f477-1f3ff-200d-2640-fe0f","👳‍♂️":"1f473-200d-2642-fe0f","👳🏻‍♂":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂":"1f473-1f3ff-200d-2642-fe0f","👳‍♀️":"1f473-200d-2640-fe0f","👳🏻‍♀":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀":"1f473-1f3ff-200d-2640-fe0f","🤵‍♂️":"1f935-200d-2642-fe0f","🤵🏻‍♂":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂":"1f935-1f3ff-200d-2642-fe0f","🤵‍♀️":"1f935-200d-2640-fe0f","🤵🏻‍♀":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀":"1f935-1f3ff-200d-2640-fe0f","👰‍♂️":"1f470-200d-2642-fe0f","👰🏻‍♂":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂":"1f470-1f3ff-200d-2642-fe0f","👰‍♀️":"1f470-200d-2640-fe0f","👰🏻‍♀":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀":"1f470-1f3ff-200d-2640-fe0f","👩🏻‍🍼":"1f469-1f3fb-200d-1f37c","👩🏼‍🍼":"1f469-1f3fc-200d-1f37c","👩🏽‍🍼":"1f469-1f3fd-200d-1f37c","👩🏾‍🍼":"1f469-1f3fe-200d-1f37c","👩🏿‍🍼":"1f469-1f3ff-200d-1f37c","👨🏻‍🍼":"1f468-1f3fb-200d-1f37c","👨🏼‍🍼":"1f468-1f3fc-200d-1f37c","👨🏽‍🍼":"1f468-1f3fd-200d-1f37c","👨🏾‍🍼":"1f468-1f3fe-200d-1f37c","👨🏿‍🍼":"1f468-1f3ff-200d-1f37c","🧑🏻‍🍼":"1f9d1-1f3fb-200d-1f37c","🧑🏼‍🍼":"1f9d1-1f3fc-200d-1f37c","🧑🏽‍🍼":"1f9d1-1f3fd-200d-1f37c","🧑🏾‍🍼":"1f9d1-1f3fe-200d-1f37c","🧑🏿‍🍼":"1f9d1-1f3ff-200d-1f37c","🧑🏻‍🎄":"1f9d1-1f3fb-200d-1f384","🧑🏼‍🎄":"1f9d1-1f3fc-200d-1f384","🧑🏽‍🎄":"1f9d1-1f3fd-200d-1f384","🧑🏾‍🎄":"1f9d1-1f3fe-200d-1f384","🧑🏿‍🎄":"1f9d1-1f3ff-200d-1f384","🦸‍♂️":"1f9b8-200d-2642-fe0f","🦸🏻‍♂":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂":"1f9b8-1f3ff-200d-2642-fe0f","🦸‍♀️":"1f9b8-200d-2640-fe0f","🦸🏻‍♀":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀":"1f9b8-1f3ff-200d-2640-fe0f","🦹‍♂️":"1f9b9-200d-2642-fe0f","🦹🏻‍♂":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂":"1f9b9-1f3ff-200d-2642-fe0f","🦹‍♀️":"1f9b9-200d-2640-fe0f","🦹🏻‍♀":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀":"1f9b9-1f3ff-200d-2640-fe0f","🧙‍♂️":"1f9d9-200d-2642-fe0f","🧙🏻‍♂":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂":"1f9d9-1f3ff-200d-2642-fe0f","🧙‍♀️":"1f9d9-200d-2640-fe0f","🧙🏻‍♀":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀":"1f9d9-1f3ff-200d-2640-fe0f","🧚‍♂️":"1f9da-200d-2642-fe0f","🧚🏻‍♂":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂":"1f9da-1f3ff-200d-2642-fe0f","🧚‍♀️":"1f9da-200d-2640-fe0f","🧚🏻‍♀":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀":"1f9da-1f3ff-200d-2640-fe0f","🧛‍♂️":"1f9db-200d-2642-fe0f","🧛🏻‍♂":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂":"1f9db-1f3ff-200d-2642-fe0f","🧛‍♀️":"1f9db-200d-2640-fe0f","🧛🏻‍♀":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀":"1f9db-1f3ff-200d-2640-fe0f","🧜‍♂️":"1f9dc-200d-2642-fe0f","🧜🏻‍♂":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂":"1f9dc-1f3ff-200d-2642-fe0f","🧜‍♀️":"1f9dc-200d-2640-fe0f","🧜🏻‍♀":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀":"1f9dc-1f3ff-200d-2640-fe0f","🧝‍♂️":"1f9dd-200d-2642-fe0f","🧝🏻‍♂":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂":"1f9dd-1f3ff-200d-2642-fe0f","🧝‍♀️":"1f9dd-200d-2640-fe0f","🧝🏻‍♀":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀":"1f9dd-1f3ff-200d-2640-fe0f","🧞‍♂️":"1f9de-200d-2642-fe0f","🧞‍♀️":"1f9de-200d-2640-fe0f","🧟‍♂️":"1f9df-200d-2642-fe0f","🧟‍♀️":"1f9df-200d-2640-fe0f","💆‍♂️":"1f486-200d-2642-fe0f","💆🏻‍♂":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂":"1f486-1f3ff-200d-2642-fe0f","💆‍♀️":"1f486-200d-2640-fe0f","💆🏻‍♀":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀":"1f486-1f3ff-200d-2640-fe0f","💇‍♂️":"1f487-200d-2642-fe0f","💇🏻‍♂":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂":"1f487-1f3ff-200d-2642-fe0f","💇‍♀️":"1f487-200d-2640-fe0f","💇🏻‍♀":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀":"1f487-1f3ff-200d-2640-fe0f","🚶‍♂️":"1f6b6-200d-2642-fe0f","🚶🏻‍♂":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂":"1f6b6-1f3ff-200d-2642-fe0f","🚶‍♀️":"1f6b6-200d-2640-fe0f","🚶🏻‍♀":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀":"1f6b6-1f3ff-200d-2640-fe0f","🧍‍♂️":"1f9cd-200d-2642-fe0f","🧍🏻‍♂":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂":"1f9cd-1f3ff-200d-2642-fe0f","🧍‍♀️":"1f9cd-200d-2640-fe0f","🧍🏻‍♀":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀":"1f9cd-1f3ff-200d-2640-fe0f","🧎‍♂️":"1f9ce-200d-2642-fe0f","🧎🏻‍♂":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂":"1f9ce-1f3ff-200d-2642-fe0f","🧎‍♀️":"1f9ce-200d-2640-fe0f","🧎🏻‍♀":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀":"1f9ce-1f3ff-200d-2640-fe0f","🧑🏻‍🦯":"1f9d1-1f3fb-200d-1f9af","🧑🏼‍🦯":"1f9d1-1f3fc-200d-1f9af","🧑🏽‍🦯":"1f9d1-1f3fd-200d-1f9af","🧑🏾‍🦯":"1f9d1-1f3fe-200d-1f9af","🧑🏿‍🦯":"1f9d1-1f3ff-200d-1f9af","👨🏻‍🦯":"1f468-1f3fb-200d-1f9af","👨🏼‍🦯":"1f468-1f3fc-200d-1f9af","👨🏽‍🦯":"1f468-1f3fd-200d-1f9af","👨🏾‍🦯":"1f468-1f3fe-200d-1f9af","👨🏿‍🦯":"1f468-1f3ff-200d-1f9af","👩🏻‍🦯":"1f469-1f3fb-200d-1f9af","👩🏼‍🦯":"1f469-1f3fc-200d-1f9af","👩🏽‍🦯":"1f469-1f3fd-200d-1f9af","👩🏾‍🦯":"1f469-1f3fe-200d-1f9af","👩🏿‍🦯":"1f469-1f3ff-200d-1f9af","🧑🏻‍🦼":"1f9d1-1f3fb-200d-1f9bc","🧑🏼‍🦼":"1f9d1-1f3fc-200d-1f9bc","🧑🏽‍🦼":"1f9d1-1f3fd-200d-1f9bc","🧑🏾‍🦼":"1f9d1-1f3fe-200d-1f9bc","🧑🏿‍🦼":"1f9d1-1f3ff-200d-1f9bc","👨🏻‍🦼":"1f468-1f3fb-200d-1f9bc","👨🏼‍🦼":"1f468-1f3fc-200d-1f9bc","👨🏽‍🦼":"1f468-1f3fd-200d-1f9bc","👨🏾‍🦼":"1f468-1f3fe-200d-1f9bc","👨🏿‍🦼":"1f468-1f3ff-200d-1f9bc","👩🏻‍🦼":"1f469-1f3fb-200d-1f9bc","👩🏼‍🦼":"1f469-1f3fc-200d-1f9bc","👩🏽‍🦼":"1f469-1f3fd-200d-1f9bc","👩🏾‍🦼":"1f469-1f3fe-200d-1f9bc","👩🏿‍🦼":"1f469-1f3ff-200d-1f9bc","🧑🏻‍🦽":"1f9d1-1f3fb-200d-1f9bd","🧑🏼‍🦽":"1f9d1-1f3fc-200d-1f9bd","🧑🏽‍🦽":"1f9d1-1f3fd-200d-1f9bd","🧑🏾‍🦽":"1f9d1-1f3fe-200d-1f9bd","🧑🏿‍🦽":"1f9d1-1f3ff-200d-1f9bd","👨🏻‍🦽":"1f468-1f3fb-200d-1f9bd","👨🏼‍🦽":"1f468-1f3fc-200d-1f9bd","👨🏽‍🦽":"1f468-1f3fd-200d-1f9bd","👨🏾‍🦽":"1f468-1f3fe-200d-1f9bd","👨🏿‍🦽":"1f468-1f3ff-200d-1f9bd","👩🏻‍🦽":"1f469-1f3fb-200d-1f9bd","👩🏼‍🦽":"1f469-1f3fc-200d-1f9bd","👩🏽‍🦽":"1f469-1f3fd-200d-1f9bd","👩🏾‍🦽":"1f469-1f3fe-200d-1f9bd","👩🏿‍🦽":"1f469-1f3ff-200d-1f9bd","🏃‍♂️":"1f3c3-200d-2642-fe0f","🏃🏻‍♂":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂":"1f3c3-1f3ff-200d-2642-fe0f","🏃‍♀️":"1f3c3-200d-2640-fe0f","🏃🏻‍♀":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀":"1f3c3-1f3ff-200d-2640-fe0f","👯‍♂️":"1f46f-200d-2642-fe0f","👯‍♀️":"1f46f-200d-2640-fe0f","🧖‍♂️":"1f9d6-200d-2642-fe0f","🧖🏻‍♂":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂":"1f9d6-1f3ff-200d-2642-fe0f","🧖‍♀️":"1f9d6-200d-2640-fe0f","🧖🏻‍♀":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀":"1f9d6-1f3ff-200d-2640-fe0f","🧗‍♂️":"1f9d7-200d-2642-fe0f","🧗🏻‍♂":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂":"1f9d7-1f3ff-200d-2642-fe0f","🧗‍♀️":"1f9d7-200d-2640-fe0f","🧗🏻‍♀":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀":"1f9d7-1f3ff-200d-2640-fe0f","🏌‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌️‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂":"1f3cc-1f3ff-200d-2642-fe0f","🏌‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌️‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀":"1f3cc-1f3ff-200d-2640-fe0f","🏄‍♂️":"1f3c4-200d-2642-fe0f","🏄🏻‍♂":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂":"1f3c4-1f3ff-200d-2642-fe0f","🏄‍♀️":"1f3c4-200d-2640-fe0f","🏄🏻‍♀":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀":"1f3c4-1f3ff-200d-2640-fe0f","🚣‍♂️":"1f6a3-200d-2642-fe0f","🚣🏻‍♂":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂":"1f6a3-1f3ff-200d-2642-fe0f","🚣‍♀️":"1f6a3-200d-2640-fe0f","🚣🏻‍♀":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀":"1f6a3-1f3ff-200d-2640-fe0f","🏊‍♂️":"1f3ca-200d-2642-fe0f","🏊🏻‍♂":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂":"1f3ca-1f3ff-200d-2642-fe0f","🏊‍♀️":"1f3ca-200d-2640-fe0f","🏊🏻‍♀":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀":"1f3ca-1f3ff-200d-2640-fe0f","⛹‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹️‍♂":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂":"26f9-1f3ff-200d-2642-fe0f","⛹‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹️‍♀":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀":"26f9-1f3ff-200d-2640-fe0f","🏋‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋️‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂":"1f3cb-1f3ff-200d-2642-fe0f","🏋‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋️‍♀":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀":"1f3cb-1f3ff-200d-2640-fe0f","🚴‍♂️":"1f6b4-200d-2642-fe0f","🚴🏻‍♂":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂":"1f6b4-1f3ff-200d-2642-fe0f","🚴‍♀️":"1f6b4-200d-2640-fe0f","🚴🏻‍♀":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀":"1f6b4-1f3ff-200d-2640-fe0f","🚵‍♂️":"1f6b5-200d-2642-fe0f","🚵🏻‍♂":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂":"1f6b5-1f3ff-200d-2642-fe0f","🚵‍♀️":"1f6b5-200d-2640-fe0f","🚵🏻‍♀":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀":"1f6b5-1f3ff-200d-2640-fe0f","🤸‍♂️":"1f938-200d-2642-fe0f","🤸🏻‍♂":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂":"1f938-1f3ff-200d-2642-fe0f","🤸‍♀️":"1f938-200d-2640-fe0f","🤸🏻‍♀":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀":"1f938-1f3ff-200d-2640-fe0f","🤼‍♂️":"1f93c-200d-2642-fe0f","🤼‍♀️":"1f93c-200d-2640-fe0f","🤽‍♂️":"1f93d-200d-2642-fe0f","🤽🏻‍♂":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂":"1f93d-1f3ff-200d-2642-fe0f","🤽‍♀️":"1f93d-200d-2640-fe0f","🤽🏻‍♀":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀":"1f93d-1f3ff-200d-2640-fe0f","🤾‍♂️":"1f93e-200d-2642-fe0f","🤾🏻‍♂":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂":"1f93e-1f3ff-200d-2642-fe0f","🤾‍♀️":"1f93e-200d-2640-fe0f","🤾🏻‍♀":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀":"1f93e-1f3ff-200d-2640-fe0f","🤹‍♂️":"1f939-200d-2642-fe0f","🤹🏻‍♂":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂":"1f939-1f3ff-200d-2642-fe0f","🤹‍♀️":"1f939-200d-2640-fe0f","🤹🏻‍♀":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀":"1f939-1f3ff-200d-2640-fe0f","🧘‍♂️":"1f9d8-200d-2642-fe0f","🧘🏻‍♂":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂":"1f9d8-1f3ff-200d-2642-fe0f","🧘‍♀️":"1f9d8-200d-2640-fe0f","🧘🏻‍♀":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀":"1f9d8-1f3ff-200d-2640-fe0f","🐻‍❄️":"1f43b-200d-2744-fe0f","🏳️‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","🏳️‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠️":"1f3f4-200d-2620-fe0f","👁️‍🗨️":"1f441-200d-1f5e8","🫱🏻‍🫲🏼":"1faf1-1f3fb-200d-1faf2-1f3fc","🫱🏻‍🫲🏽":"1faf1-1f3fb-200d-1faf2-1f3fd","🫱🏻‍🫲🏾":"1faf1-1f3fb-200d-1faf2-1f3fe","🫱🏻‍🫲🏿":"1faf1-1f3fb-200d-1faf2-1f3ff","🫱🏼‍🫲🏻":"1faf1-1f3fc-200d-1faf2-1f3fb","🫱🏼‍🫲🏽":"1faf1-1f3fc-200d-1faf2-1f3fd","🫱🏼‍🫲🏾":"1faf1-1f3fc-200d-1faf2-1f3fe","🫱🏼‍🫲🏿":"1faf1-1f3fc-200d-1faf2-1f3ff","🫱🏽‍🫲🏻":"1faf1-1f3fd-200d-1faf2-1f3fb","🫱🏽‍🫲🏼":"1faf1-1f3fd-200d-1faf2-1f3fc","🫱🏽‍🫲🏾":"1faf1-1f3fd-200d-1faf2-1f3fe","🫱🏽‍🫲🏿":"1faf1-1f3fd-200d-1faf2-1f3ff","🫱🏾‍🫲🏻":"1faf1-1f3fe-200d-1faf2-1f3fb","🫱🏾‍🫲🏼":"1faf1-1f3fe-200d-1faf2-1f3fc","🫱🏾‍🫲🏽":"1faf1-1f3fe-200d-1faf2-1f3fd","🫱🏾‍🫲🏿":"1faf1-1f3fe-200d-1faf2-1f3ff","🫱🏿‍🫲🏻":"1faf1-1f3ff-200d-1faf2-1f3fb","🫱🏿‍🫲🏼":"1faf1-1f3ff-200d-1faf2-1f3fc","🫱🏿‍🫲🏽":"1faf1-1f3ff-200d-1faf2-1f3fd","🫱🏿‍🫲🏾":"1faf1-1f3ff-200d-1faf2-1f3fe","🧔🏻‍♂️":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂️":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂️":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂️":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂️":"1f9d4-1f3ff-200d-2642-fe0f","🧔🏻‍♀️":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀️":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀️":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀️":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀️":"1f9d4-1f3ff-200d-2640-fe0f","👱🏻‍♀️":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀️":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀️":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀️":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀️":"1f471-1f3ff-200d-2640-fe0f","👱🏻‍♂️":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂️":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂️":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂️":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂️":"1f471-1f3ff-200d-2642-fe0f","🙍🏻‍♂️":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂️":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂️":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂️":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂️":"1f64d-1f3ff-200d-2642-fe0f","🙍🏻‍♀️":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀️":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀️":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀️":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀️":"1f64d-1f3ff-200d-2640-fe0f","🙎🏻‍♂️":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂️":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂️":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂️":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂️":"1f64e-1f3ff-200d-2642-fe0f","🙎🏻‍♀️":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀️":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀️":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀️":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀️":"1f64e-1f3ff-200d-2640-fe0f","🙅🏻‍♂️":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂️":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂️":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂️":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂️":"1f645-1f3ff-200d-2642-fe0f","🙅🏻‍♀️":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀️":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀️":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀️":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀️":"1f645-1f3ff-200d-2640-fe0f","🙆🏻‍♂️":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂️":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂️":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂️":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂️":"1f646-1f3ff-200d-2642-fe0f","🙆🏻‍♀️":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀️":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀️":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀️":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀️":"1f646-1f3ff-200d-2640-fe0f","💁🏻‍♂️":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂️":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂️":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂️":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂️":"1f481-1f3ff-200d-2642-fe0f","💁🏻‍♀️":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀️":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀️":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀️":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀️":"1f481-1f3ff-200d-2640-fe0f","🙋🏻‍♂️":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂️":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂️":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂️":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂️":"1f64b-1f3ff-200d-2642-fe0f","🙋🏻‍♀️":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀️":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀️":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀️":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀️":"1f64b-1f3ff-200d-2640-fe0f","🧏🏻‍♂️":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂️":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂️":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂️":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂️":"1f9cf-1f3ff-200d-2642-fe0f","🧏🏻‍♀️":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀️":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀️":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀️":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀️":"1f9cf-1f3ff-200d-2640-fe0f","🙇🏻‍♂️":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂️":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂️":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂️":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂️":"1f647-1f3ff-200d-2642-fe0f","🙇🏻‍♀️":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀️":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀️":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀️":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀️":"1f647-1f3ff-200d-2640-fe0f","🤦🏻‍♂️":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂️":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂️":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂️":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂️":"1f926-1f3ff-200d-2642-fe0f","🤦🏻‍♀️":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀️":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀️":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀️":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀️":"1f926-1f3ff-200d-2640-fe0f","🤷🏻‍♂️":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂️":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂️":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂️":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂️":"1f937-1f3ff-200d-2642-fe0f","🤷🏻‍♀️":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀️":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀️":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀️":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀️":"1f937-1f3ff-200d-2640-fe0f","🧑🏻‍⚕️":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕️":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕️":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕️":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕️":"1f9d1-1f3ff-200d-2695-fe0f","👨🏻‍⚕️":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕️":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕️":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕️":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕️":"1f468-1f3ff-200d-2695-fe0f","👩🏻‍⚕️":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕️":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕️":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕️":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕️":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍⚖️":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖️":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖️":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖️":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖️":"1f9d1-1f3ff-200d-2696-fe0f","👨🏻‍⚖️":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖️":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖️":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖️":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖️":"1f468-1f3ff-200d-2696-fe0f","👩🏻‍⚖️":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖️":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖️":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖️":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖️":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍✈️":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈️":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈️":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈️":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈️":"1f9d1-1f3ff-200d-2708-fe0f","👨🏻‍✈️":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈️":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈️":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈️":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈️":"1f468-1f3ff-200d-2708-fe0f","👩🏻‍✈️":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈️":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈️":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈️":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈️":"1f469-1f3ff-200d-2708-fe0f","👮🏻‍♂️":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂️":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂️":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂️":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂️":"1f46e-1f3ff-200d-2642-fe0f","👮🏻‍♀️":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀️":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀️":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀️":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀️":"1f46e-1f3ff-200d-2640-fe0f","🕵️‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂️":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂️":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂️":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂️":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂️":"1f575-1f3ff-200d-2642-fe0f","🕵️‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀️":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀️":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀️":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀️":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀️":"1f575-1f3ff-200d-2640-fe0f","💂🏻‍♂️":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂️":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂️":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂️":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂️":"1f482-1f3ff-200d-2642-fe0f","💂🏻‍♀️":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀️":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀️":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀️":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀️":"1f482-1f3ff-200d-2640-fe0f","👷🏻‍♂️":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂️":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂️":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂️":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂️":"1f477-1f3ff-200d-2642-fe0f","👷🏻‍♀️":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀️":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀️":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀️":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀️":"1f477-1f3ff-200d-2640-fe0f","👳🏻‍♂️":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂️":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂️":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂️":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂️":"1f473-1f3ff-200d-2642-fe0f","👳🏻‍♀️":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀️":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀️":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀️":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀️":"1f473-1f3ff-200d-2640-fe0f","🤵🏻‍♂️":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂️":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂️":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂️":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂️":"1f935-1f3ff-200d-2642-fe0f","🤵🏻‍♀️":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀️":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀️":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀️":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀️":"1f935-1f3ff-200d-2640-fe0f","👰🏻‍♂️":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂️":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂️":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂️":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂️":"1f470-1f3ff-200d-2642-fe0f","👰🏻‍♀️":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀️":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀️":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀️":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀️":"1f470-1f3ff-200d-2640-fe0f","🦸🏻‍♂️":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂️":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂️":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂️":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂️":"1f9b8-1f3ff-200d-2642-fe0f","🦸🏻‍♀️":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀️":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀️":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀️":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀️":"1f9b8-1f3ff-200d-2640-fe0f","🦹🏻‍♂️":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂️":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂️":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂️":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂️":"1f9b9-1f3ff-200d-2642-fe0f","🦹🏻‍♀️":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀️":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀️":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀️":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀️":"1f9b9-1f3ff-200d-2640-fe0f","🧙🏻‍♂️":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂️":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂️":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂️":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂️":"1f9d9-1f3ff-200d-2642-fe0f","🧙🏻‍♀️":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀️":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀️":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀️":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀️":"1f9d9-1f3ff-200d-2640-fe0f","🧚🏻‍♂️":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂️":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂️":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂️":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂️":"1f9da-1f3ff-200d-2642-fe0f","🧚🏻‍♀️":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀️":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀️":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀️":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀️":"1f9da-1f3ff-200d-2640-fe0f","🧛🏻‍♂️":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂️":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂️":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂️":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂️":"1f9db-1f3ff-200d-2642-fe0f","🧛🏻‍♀️":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀️":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀️":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀️":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀️":"1f9db-1f3ff-200d-2640-fe0f","🧜🏻‍♂️":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂️":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂️":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂️":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂️":"1f9dc-1f3ff-200d-2642-fe0f","🧜🏻‍♀️":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀️":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀️":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀️":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀️":"1f9dc-1f3ff-200d-2640-fe0f","🧝🏻‍♂️":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂️":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂️":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂️":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂️":"1f9dd-1f3ff-200d-2642-fe0f","🧝🏻‍♀️":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀️":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀️":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀️":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀️":"1f9dd-1f3ff-200d-2640-fe0f","💆🏻‍♂️":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂️":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂️":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂️":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂️":"1f486-1f3ff-200d-2642-fe0f","💆🏻‍♀️":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀️":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀️":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀️":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀️":"1f486-1f3ff-200d-2640-fe0f","💇🏻‍♂️":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂️":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂️":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂️":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂️":"1f487-1f3ff-200d-2642-fe0f","💇🏻‍♀️":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀️":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀️":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀️":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀️":"1f487-1f3ff-200d-2640-fe0f","🚶🏻‍♂️":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂️":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂️":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂️":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂️":"1f6b6-1f3ff-200d-2642-fe0f","🚶🏻‍♀️":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀️":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀️":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀️":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀️":"1f6b6-1f3ff-200d-2640-fe0f","🧍🏻‍♂️":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂️":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂️":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂️":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂️":"1f9cd-1f3ff-200d-2642-fe0f","🧍🏻‍♀️":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀️":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀️":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀️":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀️":"1f9cd-1f3ff-200d-2640-fe0f","🧎🏻‍♂️":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂️":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂️":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂️":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂️":"1f9ce-1f3ff-200d-2642-fe0f","🧎🏻‍♀️":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀️":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀️":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀️":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀️":"1f9ce-1f3ff-200d-2640-fe0f","🏃🏻‍♂️":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂️":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂️":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂️":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂️":"1f3c3-1f3ff-200d-2642-fe0f","🏃🏻‍♀️":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀️":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀️":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀️":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀️":"1f3c3-1f3ff-200d-2640-fe0f","🧖🏻‍♂️":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂️":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂️":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂️":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂️":"1f9d6-1f3ff-200d-2642-fe0f","🧖🏻‍♀️":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀️":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀️":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀️":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀️":"1f9d6-1f3ff-200d-2640-fe0f","🧗🏻‍♂️":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂️":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂️":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂️":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂️":"1f9d7-1f3ff-200d-2642-fe0f","🧗🏻‍♀️":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀️":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀️":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀️":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀️":"1f9d7-1f3ff-200d-2640-fe0f","🏌️‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂️":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂️":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂️":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂️":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂️":"1f3cc-1f3ff-200d-2642-fe0f","🏌️‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀️":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀️":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀️":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀️":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀️":"1f3cc-1f3ff-200d-2640-fe0f","🏄🏻‍♂️":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂️":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂️":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂️":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂️":"1f3c4-1f3ff-200d-2642-fe0f","🏄🏻‍♀️":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀️":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀️":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀️":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀️":"1f3c4-1f3ff-200d-2640-fe0f","🚣🏻‍♂️":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂️":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂️":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂️":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂️":"1f6a3-1f3ff-200d-2642-fe0f","🚣🏻‍♀️":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀️":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀️":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀️":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀️":"1f6a3-1f3ff-200d-2640-fe0f","🏊🏻‍♂️":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂️":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂️":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂️":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂️":"1f3ca-1f3ff-200d-2642-fe0f","🏊🏻‍♀️":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀️":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀️":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀️":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀️":"1f3ca-1f3ff-200d-2640-fe0f","⛹️‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂️":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂️":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂️":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂️":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂️":"26f9-1f3ff-200d-2642-fe0f","⛹️‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀️":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀️":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀️":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀️":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀️":"26f9-1f3ff-200d-2640-fe0f","🏋️‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂️":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂️":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂️":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂️":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂️":"1f3cb-1f3ff-200d-2642-fe0f","🏋️‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀️":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀️":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀️":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀️":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀️":"1f3cb-1f3ff-200d-2640-fe0f","🚴🏻‍♂️":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂️":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂️":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂️":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂️":"1f6b4-1f3ff-200d-2642-fe0f","🚴🏻‍♀️":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀️":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀️":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀️":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀️":"1f6b4-1f3ff-200d-2640-fe0f","🚵🏻‍♂️":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂️":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂️":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂️":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂️":"1f6b5-1f3ff-200d-2642-fe0f","🚵🏻‍♀️":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀️":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀️":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀️":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀️":"1f6b5-1f3ff-200d-2640-fe0f","🤸🏻‍♂️":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂️":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂️":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂️":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂️":"1f938-1f3ff-200d-2642-fe0f","🤸🏻‍♀️":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀️":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀️":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀️":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀️":"1f938-1f3ff-200d-2640-fe0f","🤽🏻‍♂️":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂️":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂️":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂️":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂️":"1f93d-1f3ff-200d-2642-fe0f","🤽🏻‍♀️":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀️":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀️":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀️":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀️":"1f93d-1f3ff-200d-2640-fe0f","🤾🏻‍♂️":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂️":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂️":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂️":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂️":"1f93e-1f3ff-200d-2642-fe0f","🤾🏻‍♀️":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀️":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀️":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀️":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀️":"1f93e-1f3ff-200d-2640-fe0f","🤹🏻‍♂️":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂️":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂️":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂️":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂️":"1f939-1f3ff-200d-2642-fe0f","🤹🏻‍♀️":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀️":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀️":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀️":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀️":"1f939-1f3ff-200d-2640-fe0f","🧘🏻‍♂️":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂️":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂️":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂️":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂️":"1f9d8-1f3ff-200d-2642-fe0f","🧘🏻‍♀️":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀️":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀️":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀️":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀️":"1f9d8-1f3ff-200d-2640-fe0f","🧑‍🤝‍🧑":"1f9d1-200d-1f91d-200d-1f9d1","👩‍❤‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤‍👩":"1f469-200d-2764-fe0f-200d-1f469","👨‍👩‍👦":"1f468-200d-1f469-200d-1f466","👨‍👩‍👧":"1f468-200d-1f469-200d-1f467","👨‍👨‍👦":"1f468-200d-1f468-200d-1f466","👨‍👨‍👧":"1f468-200d-1f468-200d-1f467","👩‍👩‍👦":"1f469-200d-1f469-200d-1f466","👩‍👩‍👧":"1f469-200d-1f469-200d-1f467","👨‍👦‍👦":"1f468-200d-1f466-200d-1f466","👨‍👧‍👦":"1f468-200d-1f467-200d-1f466","👨‍👧‍👧":"1f468-200d-1f467-200d-1f467","👩‍👦‍👦":"1f469-200d-1f466-200d-1f466","👩‍👧‍👦":"1f469-200d-1f467-200d-1f466","👩‍👧‍👧":"1f469-200d-1f467-200d-1f467","🏳️‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","👩‍❤️‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤️‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤️‍👩":"1f469-200d-2764-fe0f-200d-1f469","🧑🏻‍🤝‍🧑🏻":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb","🧑🏻‍🤝‍🧑🏼":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc","🧑🏻‍🤝‍🧑🏽":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd","🧑🏻‍🤝‍🧑🏾":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe","🧑🏻‍🤝‍🧑🏿":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff","🧑🏼‍🤝‍🧑🏻":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb","🧑🏼‍🤝‍🧑🏼":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc","🧑🏼‍🤝‍🧑🏽":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd","🧑🏼‍🤝‍🧑🏾":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe","🧑🏼‍🤝‍🧑🏿":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff","🧑🏽‍🤝‍🧑🏻":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb","🧑🏽‍🤝‍🧑🏼":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc","🧑🏽‍🤝‍🧑🏽":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd","🧑🏽‍🤝‍🧑🏾":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe","🧑🏽‍🤝‍🧑🏿":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff","🧑🏾‍🤝‍🧑🏻":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb","🧑🏾‍🤝‍🧑🏼":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc","🧑🏾‍🤝‍🧑🏽":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd","🧑🏾‍🤝‍🧑🏾":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe","🧑🏾‍🤝‍🧑🏿":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff","🧑🏿‍🤝‍🧑🏻":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb","🧑🏿‍🤝‍🧑🏼":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc","🧑🏿‍🤝‍🧑🏽":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd","🧑🏿‍🤝‍🧑🏾":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe","🧑🏿‍🤝‍🧑🏿":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff","👩🏻‍🤝‍👩🏼":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc","👩🏻‍🤝‍👩🏽":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd","👩🏻‍🤝‍👩🏾":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👩🏿":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff","👩🏼‍🤝‍👩🏻":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb","👩🏼‍🤝‍👩🏽":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd","👩🏼‍🤝‍👩🏾":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe","👩🏼‍🤝‍👩🏿":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff","👩🏽‍🤝‍👩🏻":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb","👩🏽‍🤝‍👩🏼":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc","👩🏽‍🤝‍👩🏾":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe","👩🏽‍🤝‍👩🏿":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff","👩🏾‍🤝‍👩🏻":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb","👩🏾‍🤝‍👩🏼":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc","👩🏾‍🤝‍👩🏽":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd","👩🏾‍🤝‍👩🏿":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff","👩🏿‍🤝‍👩🏻":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb","👩🏿‍🤝‍👩🏼":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc","👩🏿‍🤝‍👩🏽":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd","👩🏿‍🤝‍👩🏾":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👨🏼":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc","👩🏻‍🤝‍👨🏽":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd","👩🏻‍🤝‍👨🏾":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe","👩🏻‍🤝‍👨🏿":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff","👩🏼‍🤝‍👨🏻":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb","👩🏼‍🤝‍👨🏽":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd","👩🏼‍🤝‍👨🏾":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe","👩🏼‍🤝‍👨🏿":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff","👩🏽‍🤝‍👨🏻":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb","👩🏽‍🤝‍👨🏼":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc","👩🏽‍🤝‍👨🏾":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe","👩🏽‍🤝‍👨🏿":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff","👩🏾‍🤝‍👨🏻":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb","👩🏾‍🤝‍👨🏼":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc","👩🏾‍🤝‍👨🏽":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd","👩🏾‍🤝‍👨🏿":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff","👩🏿‍🤝‍👨🏻":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb","👩🏿‍🤝‍👨🏼":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc","👩🏿‍🤝‍👨🏽":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd","👩🏿‍🤝‍👨🏾":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏼":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc","👨🏻‍🤝‍👨🏽":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd","👨🏻‍🤝‍👨🏾":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏿":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff","👨🏼‍🤝‍👨🏻":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb","👨🏼‍🤝‍👨🏽":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd","👨🏼‍🤝‍👨🏾":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe","👨🏼‍🤝‍👨🏿":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff","👨🏽‍🤝‍👨🏻":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb","👨🏽‍🤝‍👨🏼":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc","👨🏽‍🤝‍👨🏾":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe","👨🏽‍🤝‍👨🏿":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff","👨🏾‍🤝‍👨🏻":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb","👨🏾‍🤝‍👨🏼":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc","👨🏾‍🤝‍👨🏽":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd","👨🏾‍🤝‍👨🏿":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff","👨🏿‍🤝‍👨🏻":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb","👨🏿‍🤝‍👨🏼":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc","👨🏿‍🤝‍👨🏽":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd","👨🏿‍🤝‍👨🏾":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe","👩‍❤‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","👨‍👩‍👧‍👦":"1f468-200d-1f469-200d-1f467-200d-1f466","👨‍👩‍👦‍👦":"1f468-200d-1f469-200d-1f466-200d-1f466","👨‍👩‍👧‍👧":"1f468-200d-1f469-200d-1f467-200d-1f467","👨‍👨‍👧‍👦":"1f468-200d-1f468-200d-1f467-200d-1f466","👨‍👨‍👦‍👦":"1f468-200d-1f468-200d-1f466-200d-1f466","👨‍👨‍👧‍👧":"1f468-200d-1f468-200d-1f467-200d-1f467","👩‍👩‍👧‍👦":"1f469-200d-1f469-200d-1f467-200d-1f466","👩‍👩‍👦‍👦":"1f469-200d-1f469-200d-1f466-200d-1f466","👩‍👩‍👧‍👧":"1f469-200d-1f469-200d-1f467-200d-1f467","🏴󠁧󠁢󠁥󠁮󠁧󠁿":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","🏴󠁧󠁢󠁳󠁣󠁴󠁿":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","🏴󠁧󠁢󠁷󠁬󠁳󠁿":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","👩‍❤️‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤️‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤️‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤️‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤️‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤️‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤️‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤️‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤️‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤️‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤️‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤️‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤️‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤️‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤️‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤️‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤️‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤️‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤️‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤️‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤️‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤️‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤️‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤️‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤️‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤️‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤️‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤️‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤️‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤️‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤️‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤️‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤️‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤️‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤️‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤️‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤️‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤️‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤️‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤️‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤️‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤️‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤️‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤️‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤️‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤️‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤️‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤️‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤️‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤️‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤️‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤️‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤️‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤️‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤️‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤️‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤️‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤️‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤️‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤️‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤️‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤️‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤️‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤️‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤️‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤️‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤️‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤️‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤️‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤️‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤️‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤️‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤️‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤️‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤️‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤️‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤️‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤️‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤️‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤️‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤️‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤️‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤️‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤️‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤️‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤️‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤️‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤️‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤️‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤️‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤️‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤️‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤️‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤️‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤️‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤️‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤️‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤️‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","🧑🏻‍❤‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","🧑🏻‍❤️‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤️‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤️‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤️‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤️‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤️‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤️‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤️‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤️‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤️‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤️‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤️‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤️‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤️‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤️‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤️‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤️‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤️‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤️‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤️‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤️‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤️‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤️‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤️‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤️‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤️‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤️‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤️‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤️‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤️‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤️‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤️‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤️‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤️‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤️‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤️‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤️‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤️‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤️‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤️‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤️‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤️‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤️‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤️‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤️‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤️‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤️‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤️‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤️‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤️‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤️‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤️‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤️‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤️‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤️‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤️‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤️‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤️‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤️‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤️‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤️‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤️‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤️‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤️‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤️‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤️‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤️‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤️‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤️‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤️‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤️‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤️‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤️‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤️‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤️‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤️‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤️‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤️‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤️‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤️‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤️‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤️‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤️‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤️‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤️‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤️‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤️‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤️‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤️‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤️‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤️‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤️‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤️‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤️‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤️‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff"} \ No newline at end of file diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake index d9db799402..473aee9cc4 100644 --- a/lib/tasks/emojis.rake +++ b/lib/tasks/emojis.rake @@ -45,7 +45,7 @@ end namespace :emojis do desc 'Generate a unicode to filename mapping' task :generate do - source = 'http://www.unicode.org/Public/emoji/13.1/emoji-test.txt' + source = 'http://www.unicode.org/Public/emoji/14.0/emoji-test.txt' codes = [] dest = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json') @@ -69,7 +69,7 @@ namespace :emojis do end end - existence_maps = grouped_codes.map { |c| c.index_with { |cc| File.exist?(Rails.root.join('public', 'emoji', codepoints_to_filename(cc) + '.svg')) } } + existence_maps = grouped_codes.map { |c| c.index_with { |cc| File.exist?(Rails.root.join('public', 'emoji', "#{codepoints_to_filename(cc)}.svg")) } } map = {} existence_maps.each do |group| diff --git a/public/emoji/1f1e7-1f1ea.svg b/public/emoji/1f1e7-1f1ea.svg index e956194340..86704269a7 100644 --- a/public/emoji/1f1e7-1f1ea.svg +++ b/public/emoji/1f1e7-1f1ea.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f1ee-1f1f3.svg b/public/emoji/1f1ee-1f1f3.svg index 7af1dafe43..55f97e6fbb 100644 --- a/public/emoji/1f1ee-1f1f3.svg +++ b/public/emoji/1f1ee-1f1f3.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f3f3-fe0f-200d-1f308.svg b/public/emoji/1f3f3-fe0f-200d-1f308.svg index 1969e49712..b1f9bbff21 100644 --- a/public/emoji/1f3f3-fe0f-200d-1f308.svg +++ b/public/emoji/1f3f3-fe0f-200d-1f308.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f50b.svg b/public/emoji/1f50b.svg index 66d420fc30..fd0913c63d 100644 --- a/public/emoji/1f50b.svg +++ b/public/emoji/1f50b.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f6dd.svg b/public/emoji/1f6dd.svg new file mode 100755 index 0000000000..3be3aa2278 --- /dev/null +++ b/public/emoji/1f6dd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6de.svg b/public/emoji/1f6de.svg new file mode 100755 index 0000000000..aed6c490d2 --- /dev/null +++ b/public/emoji/1f6de.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6df.svg b/public/emoji/1f6df.svg new file mode 100755 index 0000000000..b56811ca9d --- /dev/null +++ b/public/emoji/1f6df.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f7f0.svg b/public/emoji/1f7f0.svg new file mode 100755 index 0000000000..5844f61c5a --- /dev/null +++ b/public/emoji/1f7f0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3fb.svg b/public/emoji/1f91d-1f3fb.svg new file mode 100755 index 0000000000..64a75c6fe7 --- /dev/null +++ b/public/emoji/1f91d-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3fc.svg b/public/emoji/1f91d-1f3fc.svg new file mode 100755 index 0000000000..0ecf3b905d --- /dev/null +++ b/public/emoji/1f91d-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3fd.svg b/public/emoji/1f91d-1f3fd.svg new file mode 100755 index 0000000000..eaed0eff2a --- /dev/null +++ b/public/emoji/1f91d-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3fe.svg b/public/emoji/1f91d-1f3fe.svg new file mode 100755 index 0000000000..6fc64a9817 --- /dev/null +++ b/public/emoji/1f91d-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d-1f3ff.svg b/public/emoji/1f91d-1f3ff.svg new file mode 100755 index 0000000000..adf55f4f78 --- /dev/null +++ b/public/emoji/1f91d-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f91d.svg b/public/emoji/1f91d.svg index 3d797a0894..1deae92e98 100644 --- a/public/emoji/1f91d.svg +++ b/public/emoji/1f91d.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f921.svg b/public/emoji/1f921.svg index 6d16a66246..6ca668dcad 100644 --- a/public/emoji/1f921.svg +++ b/public/emoji/1f921.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/public/emoji/1f979.svg b/public/emoji/1f979.svg new file mode 100755 index 0000000000..1944a5463a --- /dev/null +++ b/public/emoji/1f979.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9cc.svg b/public/emoji/1f9cc.svg new file mode 100755 index 0000000000..ebc08baf04 --- /dev/null +++ b/public/emoji/1f9cc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fa7b.svg b/public/emoji/1fa7b.svg new file mode 100755 index 0000000000..fd81ad8ec3 --- /dev/null +++ b/public/emoji/1fa7b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fa7c.svg b/public/emoji/1fa7c.svg new file mode 100755 index 0000000000..895af1d5b6 --- /dev/null +++ b/public/emoji/1fa7c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faa9.svg b/public/emoji/1faa9.svg new file mode 100755 index 0000000000..e0243c0b08 --- /dev/null +++ b/public/emoji/1faa9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faaa.svg b/public/emoji/1faaa.svg new file mode 100755 index 0000000000..391e3d1277 --- /dev/null +++ b/public/emoji/1faaa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faab.svg b/public/emoji/1faab.svg new file mode 100755 index 0000000000..a7b3b9e7be --- /dev/null +++ b/public/emoji/1faab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faac.svg b/public/emoji/1faac.svg new file mode 100755 index 0000000000..8a2186021a --- /dev/null +++ b/public/emoji/1faac.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fab7.svg b/public/emoji/1fab7.svg new file mode 100755 index 0000000000..b32a58fd1b --- /dev/null +++ b/public/emoji/1fab7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fab8.svg b/public/emoji/1fab8.svg new file mode 100755 index 0000000000..2e458cff24 --- /dev/null +++ b/public/emoji/1fab8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fab9.svg b/public/emoji/1fab9.svg new file mode 100755 index 0000000000..d27cf192fe --- /dev/null +++ b/public/emoji/1fab9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faba.svg b/public/emoji/1faba.svg new file mode 100755 index 0000000000..5386cbdc43 --- /dev/null +++ b/public/emoji/1faba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3fb.svg b/public/emoji/1fac3-1f3fb.svg new file mode 100755 index 0000000000..73ac22b02f --- /dev/null +++ b/public/emoji/1fac3-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3fc.svg b/public/emoji/1fac3-1f3fc.svg new file mode 100755 index 0000000000..7f19822be0 --- /dev/null +++ b/public/emoji/1fac3-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3fd.svg b/public/emoji/1fac3-1f3fd.svg new file mode 100755 index 0000000000..96037961ee --- /dev/null +++ b/public/emoji/1fac3-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3fe.svg b/public/emoji/1fac3-1f3fe.svg new file mode 100755 index 0000000000..63f1152dc1 --- /dev/null +++ b/public/emoji/1fac3-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3-1f3ff.svg b/public/emoji/1fac3-1f3ff.svg new file mode 100755 index 0000000000..3312217c98 --- /dev/null +++ b/public/emoji/1fac3-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac3.svg b/public/emoji/1fac3.svg new file mode 100755 index 0000000000..2c0f2846c0 --- /dev/null +++ b/public/emoji/1fac3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3fb.svg b/public/emoji/1fac4-1f3fb.svg new file mode 100755 index 0000000000..1d6fe80d7d --- /dev/null +++ b/public/emoji/1fac4-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3fc.svg b/public/emoji/1fac4-1f3fc.svg new file mode 100755 index 0000000000..b87bd055a5 --- /dev/null +++ b/public/emoji/1fac4-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3fd.svg b/public/emoji/1fac4-1f3fd.svg new file mode 100755 index 0000000000..96e58f1a0d --- /dev/null +++ b/public/emoji/1fac4-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3fe.svg b/public/emoji/1fac4-1f3fe.svg new file mode 100755 index 0000000000..40f8869cd4 --- /dev/null +++ b/public/emoji/1fac4-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4-1f3ff.svg b/public/emoji/1fac4-1f3ff.svg new file mode 100755 index 0000000000..8565a9a007 --- /dev/null +++ b/public/emoji/1fac4-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac4.svg b/public/emoji/1fac4.svg new file mode 100755 index 0000000000..0d06947d02 --- /dev/null +++ b/public/emoji/1fac4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3fb.svg b/public/emoji/1fac5-1f3fb.svg new file mode 100755 index 0000000000..70f44e3430 --- /dev/null +++ b/public/emoji/1fac5-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3fc.svg b/public/emoji/1fac5-1f3fc.svg new file mode 100755 index 0000000000..c98b8c4d5a --- /dev/null +++ b/public/emoji/1fac5-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3fd.svg b/public/emoji/1fac5-1f3fd.svg new file mode 100755 index 0000000000..096506f2f5 --- /dev/null +++ b/public/emoji/1fac5-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3fe.svg b/public/emoji/1fac5-1f3fe.svg new file mode 100755 index 0000000000..44adb0159d --- /dev/null +++ b/public/emoji/1fac5-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5-1f3ff.svg b/public/emoji/1fac5-1f3ff.svg new file mode 100755 index 0000000000..c546423a29 --- /dev/null +++ b/public/emoji/1fac5-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fac5.svg b/public/emoji/1fac5.svg new file mode 100755 index 0000000000..b7b246ba09 --- /dev/null +++ b/public/emoji/1fac5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fad7.svg b/public/emoji/1fad7.svg new file mode 100755 index 0000000000..4a842421f2 --- /dev/null +++ b/public/emoji/1fad7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fad8.svg b/public/emoji/1fad8.svg new file mode 100755 index 0000000000..5e9325d6de --- /dev/null +++ b/public/emoji/1fad8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fad9.svg b/public/emoji/1fad9.svg new file mode 100755 index 0000000000..b0ebb69cea --- /dev/null +++ b/public/emoji/1fad9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae0.svg b/public/emoji/1fae0.svg new file mode 100755 index 0000000000..cd010b8f1a --- /dev/null +++ b/public/emoji/1fae0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae1.svg b/public/emoji/1fae1.svg new file mode 100755 index 0000000000..64d58b58e7 --- /dev/null +++ b/public/emoji/1fae1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae2.svg b/public/emoji/1fae2.svg new file mode 100755 index 0000000000..87b65d5f37 --- /dev/null +++ b/public/emoji/1fae2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae3.svg b/public/emoji/1fae3.svg new file mode 100755 index 0000000000..b293f71130 --- /dev/null +++ b/public/emoji/1fae3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae4.svg b/public/emoji/1fae4.svg new file mode 100755 index 0000000000..f8d8098f42 --- /dev/null +++ b/public/emoji/1fae4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae5.svg b/public/emoji/1fae5.svg new file mode 100755 index 0000000000..7d02e20ebe --- /dev/null +++ b/public/emoji/1fae5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae6.svg b/public/emoji/1fae6.svg new file mode 100755 index 0000000000..d8537a3ef4 --- /dev/null +++ b/public/emoji/1fae6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1fae7.svg b/public/emoji/1fae7.svg new file mode 100755 index 0000000000..665f7975b7 --- /dev/null +++ b/public/emoji/1fae7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3fb.svg b/public/emoji/1faf0-1f3fb.svg new file mode 100755 index 0000000000..6abb81eab4 --- /dev/null +++ b/public/emoji/1faf0-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3fc.svg b/public/emoji/1faf0-1f3fc.svg new file mode 100755 index 0000000000..1bd6d7f55b --- /dev/null +++ b/public/emoji/1faf0-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3fd.svg b/public/emoji/1faf0-1f3fd.svg new file mode 100755 index 0000000000..44054f514f --- /dev/null +++ b/public/emoji/1faf0-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3fe.svg b/public/emoji/1faf0-1f3fe.svg new file mode 100755 index 0000000000..4b7c89595b --- /dev/null +++ b/public/emoji/1faf0-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0-1f3ff.svg b/public/emoji/1faf0-1f3ff.svg new file mode 100755 index 0000000000..6d9cc6f1ea --- /dev/null +++ b/public/emoji/1faf0-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf0.svg b/public/emoji/1faf0.svg new file mode 100755 index 0000000000..da013e1528 --- /dev/null +++ b/public/emoji/1faf0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg new file mode 100755 index 0000000000..7b199adb16 --- /dev/null +++ b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg new file mode 100755 index 0000000000..4e6ab1f788 --- /dev/null +++ b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg new file mode 100755 index 0000000000..29cda9efd4 --- /dev/null +++ b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg new file mode 100755 index 0000000000..2a5a382076 --- /dev/null +++ b/public/emoji/1faf1-1f3fb-200d-1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fb.svg b/public/emoji/1faf1-1f3fb.svg new file mode 100755 index 0000000000..4d993c86f9 --- /dev/null +++ b/public/emoji/1faf1-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg new file mode 100755 index 0000000000..13d060dc15 --- /dev/null +++ b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg new file mode 100755 index 0000000000..25c64084dc --- /dev/null +++ b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg new file mode 100755 index 0000000000..81748049c0 --- /dev/null +++ b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg new file mode 100755 index 0000000000..3825515410 --- /dev/null +++ b/public/emoji/1faf1-1f3fc-200d-1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fc.svg b/public/emoji/1faf1-1f3fc.svg new file mode 100755 index 0000000000..da90e94a07 --- /dev/null +++ b/public/emoji/1faf1-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg new file mode 100755 index 0000000000..a8c8faf53e --- /dev/null +++ b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg new file mode 100755 index 0000000000..8851130272 --- /dev/null +++ b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg new file mode 100755 index 0000000000..84d470f625 --- /dev/null +++ b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg new file mode 100755 index 0000000000..f018908508 --- /dev/null +++ b/public/emoji/1faf1-1f3fd-200d-1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fd.svg b/public/emoji/1faf1-1f3fd.svg new file mode 100755 index 0000000000..af89e27155 --- /dev/null +++ b/public/emoji/1faf1-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg new file mode 100755 index 0000000000..32b88522cf --- /dev/null +++ b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg new file mode 100755 index 0000000000..fe34fd5ce0 --- /dev/null +++ b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg new file mode 100755 index 0000000000..ede918e737 --- /dev/null +++ b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg new file mode 100755 index 0000000000..9a3005c0dd --- /dev/null +++ b/public/emoji/1faf1-1f3fe-200d-1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3fe.svg b/public/emoji/1faf1-1f3fe.svg new file mode 100755 index 0000000000..c92d7880d4 --- /dev/null +++ b/public/emoji/1faf1-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg new file mode 100755 index 0000000000..5925547ed4 --- /dev/null +++ b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg new file mode 100755 index 0000000000..19220a1cf7 --- /dev/null +++ b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg new file mode 100755 index 0000000000..ead51cfc28 --- /dev/null +++ b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg new file mode 100755 index 0000000000..1d724bdeed --- /dev/null +++ b/public/emoji/1faf1-1f3ff-200d-1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1-1f3ff.svg b/public/emoji/1faf1-1f3ff.svg new file mode 100755 index 0000000000..8b9b9c2224 --- /dev/null +++ b/public/emoji/1faf1-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf1.svg b/public/emoji/1faf1.svg new file mode 100755 index 0000000000..7acb4bc14c --- /dev/null +++ b/public/emoji/1faf1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3fb.svg b/public/emoji/1faf2-1f3fb.svg new file mode 100755 index 0000000000..0f7778d8c6 --- /dev/null +++ b/public/emoji/1faf2-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3fc.svg b/public/emoji/1faf2-1f3fc.svg new file mode 100755 index 0000000000..5354ab53f9 --- /dev/null +++ b/public/emoji/1faf2-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3fd.svg b/public/emoji/1faf2-1f3fd.svg new file mode 100755 index 0000000000..9110dec109 --- /dev/null +++ b/public/emoji/1faf2-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3fe.svg b/public/emoji/1faf2-1f3fe.svg new file mode 100755 index 0000000000..4502250286 --- /dev/null +++ b/public/emoji/1faf2-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2-1f3ff.svg b/public/emoji/1faf2-1f3ff.svg new file mode 100755 index 0000000000..c464d267f3 --- /dev/null +++ b/public/emoji/1faf2-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf2.svg b/public/emoji/1faf2.svg new file mode 100755 index 0000000000..bb8afacdb8 --- /dev/null +++ b/public/emoji/1faf2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3fb.svg b/public/emoji/1faf3-1f3fb.svg new file mode 100755 index 0000000000..b553015037 --- /dev/null +++ b/public/emoji/1faf3-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3fc.svg b/public/emoji/1faf3-1f3fc.svg new file mode 100755 index 0000000000..a71212a972 --- /dev/null +++ b/public/emoji/1faf3-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3fd.svg b/public/emoji/1faf3-1f3fd.svg new file mode 100755 index 0000000000..fa8521ad97 --- /dev/null +++ b/public/emoji/1faf3-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3fe.svg b/public/emoji/1faf3-1f3fe.svg new file mode 100755 index 0000000000..081e709cf2 --- /dev/null +++ b/public/emoji/1faf3-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3-1f3ff.svg b/public/emoji/1faf3-1f3ff.svg new file mode 100755 index 0000000000..0d11e8a712 --- /dev/null +++ b/public/emoji/1faf3-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf3.svg b/public/emoji/1faf3.svg new file mode 100755 index 0000000000..a8e6f74b58 --- /dev/null +++ b/public/emoji/1faf3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3fb.svg b/public/emoji/1faf4-1f3fb.svg new file mode 100755 index 0000000000..70de846d47 --- /dev/null +++ b/public/emoji/1faf4-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3fc.svg b/public/emoji/1faf4-1f3fc.svg new file mode 100755 index 0000000000..e6f8a740d7 --- /dev/null +++ b/public/emoji/1faf4-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3fd.svg b/public/emoji/1faf4-1f3fd.svg new file mode 100755 index 0000000000..61fd7264fc --- /dev/null +++ b/public/emoji/1faf4-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3fe.svg b/public/emoji/1faf4-1f3fe.svg new file mode 100755 index 0000000000..973909cb53 --- /dev/null +++ b/public/emoji/1faf4-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4-1f3ff.svg b/public/emoji/1faf4-1f3ff.svg new file mode 100755 index 0000000000..cd06aaae0d --- /dev/null +++ b/public/emoji/1faf4-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf4.svg b/public/emoji/1faf4.svg new file mode 100755 index 0000000000..168c190e2d --- /dev/null +++ b/public/emoji/1faf4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3fb.svg b/public/emoji/1faf5-1f3fb.svg new file mode 100755 index 0000000000..a4ce272fa4 --- /dev/null +++ b/public/emoji/1faf5-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3fc.svg b/public/emoji/1faf5-1f3fc.svg new file mode 100755 index 0000000000..b0f5878fa9 --- /dev/null +++ b/public/emoji/1faf5-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3fd.svg b/public/emoji/1faf5-1f3fd.svg new file mode 100755 index 0000000000..279c507304 --- /dev/null +++ b/public/emoji/1faf5-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3fe.svg b/public/emoji/1faf5-1f3fe.svg new file mode 100755 index 0000000000..44d0668b51 --- /dev/null +++ b/public/emoji/1faf5-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5-1f3ff.svg b/public/emoji/1faf5-1f3ff.svg new file mode 100755 index 0000000000..bb47a26b4d --- /dev/null +++ b/public/emoji/1faf5-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf5.svg b/public/emoji/1faf5.svg new file mode 100755 index 0000000000..307a2d2e55 --- /dev/null +++ b/public/emoji/1faf5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3fb.svg b/public/emoji/1faf6-1f3fb.svg new file mode 100755 index 0000000000..45c5bd7ad5 --- /dev/null +++ b/public/emoji/1faf6-1f3fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3fc.svg b/public/emoji/1faf6-1f3fc.svg new file mode 100755 index 0000000000..903b267ef7 --- /dev/null +++ b/public/emoji/1faf6-1f3fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3fd.svg b/public/emoji/1faf6-1f3fd.svg new file mode 100755 index 0000000000..34393e5675 --- /dev/null +++ b/public/emoji/1faf6-1f3fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3fe.svg b/public/emoji/1faf6-1f3fe.svg new file mode 100755 index 0000000000..84f28447d3 --- /dev/null +++ b/public/emoji/1faf6-1f3fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6-1f3ff.svg b/public/emoji/1faf6-1f3ff.svg new file mode 100755 index 0000000000..7998c9b3a1 --- /dev/null +++ b/public/emoji/1faf6-1f3ff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1faf6.svg b/public/emoji/1faf6.svg new file mode 100755 index 0000000000..2dc07b47f2 --- /dev/null +++ b/public/emoji/1faf6.svg @@ -0,0 +1 @@ + \ No newline at end of file From c2170991c7889b8f6c6434f416cb0a8450db25a1 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 16:31:44 +0100 Subject: [PATCH 255/500] Fix reblogs being discarded after the reblogged status (#19731) --- app/controllers/api/v1/statuses_controller.rb | 2 +- app/lib/status_reach_finder.rb | 2 +- app/models/admin/status_batch_action.rb | 2 +- app/models/status.rb | 6 ++++++ app/services/account_statuses_cleanup_service.rb | 2 +- app/services/remove_status_service.rb | 4 ++-- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 2e239d48b9..676ec2a799 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -77,7 +77,7 @@ class Api::V1::StatusesController < Api::BaseController @status = Status.where(account: current_account).find(params[:id]) authorize @status, :destroy? - @status.discard + @status.discard_with_reblogs StatusPin.find_by(status: @status)&.destroy @status.account.statuses_count = @status.account.statuses_count - 1 json = render_to_body json: @status, serializer: REST::StatusSerializer, source_requested: true diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb index 98e502bb68..ccf1e9e3a7 100644 --- a/app/lib/status_reach_finder.rb +++ b/app/lib/status_reach_finder.rb @@ -55,7 +55,7 @@ class StatusReachFinder # Beware: Reblogs can be created without the author having had access to the status def reblogs_account_ids - @status.reblogs.pluck(:account_id) if distributable? || unsafe? + @status.reblogs.rewhere(deleted_at: [nil, @status.deleted_at]).pluck(:account_id) if distributable? || unsafe? end # Beware: Favourites can be created without the author having had access to the status diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb index 0ec4fef82a..0f019b854d 100644 --- a/app/models/admin/status_batch_action.rb +++ b/app/models/admin/status_batch_action.rb @@ -44,7 +44,7 @@ class Admin::StatusBatchAction ApplicationRecord.transaction do statuses.each do |status| - status.discard + status.discard_with_reblogs log_action(:destroy, status) end diff --git a/app/models/status.rb b/app/models/status.rb index 4805abfea0..8bdb5e8db1 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -440,6 +440,12 @@ class Status < ApplicationRecord im end + def discard_with_reblogs + discard_time = Time.current + Status.unscoped.where(reblog_of_id: id, deleted_at: [nil, deleted_at]).in_batches.update_all(deleted_at: discard_time) unless reblog? + update_attribute(:deleted_at, discard_time) + end + private def update_status_stat!(attrs) diff --git a/app/services/account_statuses_cleanup_service.rb b/app/services/account_statuses_cleanup_service.rb index 3918b5ba44..96bc3db7d1 100644 --- a/app/services/account_statuses_cleanup_service.rb +++ b/app/services/account_statuses_cleanup_service.rb @@ -14,7 +14,7 @@ class AccountStatusesCleanupService < BaseService last_deleted = nil account_policy.statuses_to_delete(budget, cutoff_id, account_policy.last_inspected).reorder(nil).find_each(order: :asc) do |status| - status.discard + status.discard_with_reblogs RemovalWorker.perform_async(status.id, { 'redraft' => false }) num_deleted += 1 last_deleted = status.id diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index f9fdea2cb0..37d2dabae2 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -19,7 +19,7 @@ class RemoveStatusService < BaseService @options = options with_lock("distribute:#{@status.id}") do - @status.discard + @status.discard_with_reblogs StatusPin.find_by(status: @status)&.destroy @@ -102,7 +102,7 @@ class RemoveStatusService < BaseService # because once original status is gone, reblogs will disappear # without us being able to do all the fancy stuff - @status.reblogs.includes(:account).reorder(nil).find_each do |reblog| + @status.reblogs.rewhere(deleted_at: [nil, @status.deleted_at]).includes(:account).reorder(nil).find_each do |reblog| RemoveStatusService.new.call(reblog, original_removed: true) end end From 0165449e3a062238511489a8b23f3facd98258b6 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Fri, 4 Nov 2022 17:08:08 +0100 Subject: [PATCH 256/500] A11y: Explicit
      element around compose area (#19742) --- app/javascript/mastodon/components/button.js | 2 ++ .../features/compose/components/compose_form.js | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/components/button.js b/app/javascript/mastodon/components/button.js index 85b2d78ca9..bcb855c7c1 100644 --- a/app/javascript/mastodon/components/button.js +++ b/app/javascript/mastodon/components/button.js @@ -6,6 +6,7 @@ export default class Button extends React.PureComponent { static propTypes = { text: PropTypes.node, + type: PropTypes.string, onClick: PropTypes.func, disabled: PropTypes.bool, block: PropTypes.bool, @@ -42,6 +43,7 @@ export default class Button extends React.PureComponent { onClick={this.handleClick} ref={this.setRef} title={this.props.title} + type={this.props.type} > {this.props.text || this.props.children} diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index cd10d0edab..9f5c3b3144 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -217,7 +217,7 @@ class ComposeForm extends ImmutablePureComponent { } return ( -
      + @@ -279,10 +279,16 @@ class ComposeForm extends ImmutablePureComponent {
      -
      -
      +
      ); } From 03b991de6c5874f3e7d1b6f6ff70b853b8daf639 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 19:33:16 +0100 Subject: [PATCH 257/500] Fix various issues with store hydration (#19746) - Improve tests - Fix possible crash when application of a reblogged post isn't set - Fix discrepancies around favourited and reblogged attributes - Fix discrepancies around pinned attribute - Fix polls not being hydrated --- app/lib/status_cache_hydrator.rb | 22 +++-- spec/lib/status_cache_hydrator_spec.rb | 111 +++++++++++++++++++------ 2 files changed, 101 insertions(+), 32 deletions(-) diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb index 01e92b3855..552419fff7 100644 --- a/app/lib/status_cache_hydrator.rb +++ b/app/lib/status_cache_hydrator.rb @@ -16,23 +16,35 @@ class StatusCacheHydrator # We take advantage of the fact that some relationships can only occur with an original status, not # the reblog that wraps it, so we can assume that some values are always false if payload[:reblog] - payload[:favourited] = false - payload[:reblogged] = false payload[:muted] = false payload[:bookmarked] = false - payload[:pinned] = false + payload[:pinned] = false if @status.account_id == account_id payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.reblog_of_id), @status.reblog).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } # If the reblogged status is being delivered to the author who disabled the display of the application # used to create the status, we need to hydrate it here too - payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id + payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id && @status.reblog.application_id.present? payload[:reblog][:favourited] = Favourite.where(account_id: account_id, status_id: @status.reblog_of_id).exists? payload[:reblog][:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.reblog_of_id).exists? payload[:reblog][:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.reblog.conversation_id).exists? payload[:reblog][:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.reblog_of_id).exists? - payload[:reblog][:pinned] = StatusPin.where(account_id: account_id, status_id: @status.reblog_of_id).exists? + payload[:reblog][:pinned] = StatusPin.where(account_id: account_id, status_id: @status.reblog_of_id).exists? if @status.reblog.account_id == account_id payload[:reblog][:filtered] = payload[:filtered] + + if payload[:reblog][:poll] + if @status.reblog.account_id == account_id + payload[:reblog][:poll][:voted] = true + payload[:reblog][:poll][:own_votes] = [] + else + own_votes = @status.reblog.poll.votes.where(account_id: account_id).pluck(:choice) + payload[:reblog][:poll][:voted] = !own_votes.empty? + payload[:reblog][:poll][:own_votes] = own_votes + end + end + + payload[:favourited] = payload[:reblog][:favourited] + payload[:reblogged] = payload[:reblog][:reblogged] else payload[:favourited] = Favourite.where(account_id: account_id, status_id: @status.id).exists? payload[:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.id).exists? diff --git a/spec/lib/status_cache_hydrator_spec.rb b/spec/lib/status_cache_hydrator_spec.rb index ad9940a853..873d584647 100644 --- a/spec/lib/status_cache_hydrator_spec.rb +++ b/spec/lib/status_cache_hydrator_spec.rb @@ -7,48 +7,105 @@ describe StatusCacheHydrator do let(:account) { Fabricate(:account) } describe '#hydrate' do - subject { described_class.new(status).hydrate(account.id) } - let(:compare_to_hash) { InlineRenderer.render(status, account, :status) } - context 'when cache is warm' do - before do - Rails.cache.write("fan-out/#{status.id}", InlineRenderer.render(status, nil, :status)) + shared_examples 'shared behavior' do + context 'when handling a new status' do + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end end - it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) - end - end + context 'when handling a reblog' do + let(:reblog) { Fabricate(:status) } + let(:status) { Fabricate(:status, reblog: reblog) } - context 'when cache is cold' do - before do - Rails.cache.delete("fan-out/#{status.id}") - end + context 'that has been favourited' do + before do + FavouriteService.new.call(account, reblog) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'that has been reblogged' do + before do + ReblogService.new.call(account, reblog) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'that has been pinned' do + let(:reblog) { Fabricate(:status, account: account) } + + before do + StatusPin.create!(account: account, status: reblog) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end - it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + context 'that has been followed tags' do + let(:followed_tag) { Fabricate(:tag) } + + before do + reblog.tags << Fabricate(:tag) + reblog.tags << followed_tag + TagFollow.create!(tag: followed_tag, account: account, rate_limit: false) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'that has a poll authored by the user' do + let(:poll) { Fabricate(:poll, account: account) } + let(:reblog) { Fabricate(:status, poll: poll, account: account) } + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end + + context 'that has been voted in' do + let(:poll) { Fabricate(:poll, options: %w(Yellow Blue)) } + let(:reblog) { Fabricate(:status, poll: poll) } + + before do + VoteService.new.call(account, poll, [0]) + end + + it 'renders the same attributes as a full render' do + expect(subject).to include(compare_to_hash) + end + end end end - context 'when account has favourited status' do - before do - FavouriteService.new.call(account, status) + context 'when cache is warm' do + subject do + Rails.cache.write("fan-out/#{status.id}", InlineRenderer.render(status, nil, :status)) + described_class.new(status).hydrate(account.id) end - it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) - end + it_behaves_like 'shared behavior' end - context 'when account has reblogged status' do - before do - ReblogService.new.call(account, status) + context 'when cache is cold' do + subject do + Rails.cache.delete("fan-out/#{status.id}") + described_class.new(status).hydrate(account.id) end - it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) - end + it_behaves_like 'shared behavior' end end end From bb89f83cc06b9665205c62db21163f2ce43d97ed Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 20:01:33 +0100 Subject: [PATCH 258/500] Fix additional issues with status cache hydration (#19747) * Spare one SQL query when hydrating polls * Improve tests * Fix more discrepancies * Fix possible crash when the status has no application set --- app/lib/status_cache_hydrator.rb | 13 +++++++++---- spec/lib/status_cache_hydrator_spec.rb | 26 +++++++++++++++++++------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb index 552419fff7..ffe813ee95 100644 --- a/app/lib/status_cache_hydrator.rb +++ b/app/lib/status_cache_hydrator.rb @@ -11,7 +11,7 @@ class StatusCacheHydrator # If we're delivering to the author who disabled the display of the application used to create the # status, we need to hydrate the application, since it was not rendered for the basic payload - payload[:application] = ActiveModelSerializers::SerializableResource.new(@status.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:application].nil? && @status.account_id == account_id + payload[:application] = ActiveModelSerializers::SerializableResource.new(@status.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:application].nil? && @status.account_id == account_id && @status.application.present? # We take advantage of the fact that some relationships can only occur with an original status, not # the reblog that wraps it, so we can assume that some values are always false @@ -23,7 +23,7 @@ class StatusCacheHydrator # If the reblogged status is being delivered to the author who disabled the display of the application # used to create the status, we need to hydrate it here too - payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id && @status.reblog.application_id.present? + payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id && @status.reblog.application.present? payload[:reblog][:favourited] = Favourite.where(account_id: account_id, status_id: @status.reblog_of_id).exists? payload[:reblog][:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.reblog_of_id).exists? @@ -37,7 +37,7 @@ class StatusCacheHydrator payload[:reblog][:poll][:voted] = true payload[:reblog][:poll][:own_votes] = [] else - own_votes = @status.reblog.poll.votes.where(account_id: account_id).pluck(:choice) + own_votes = PollVote.where(poll_id: @status.reblog.poll_id, account_id: account_id).pluck(:choice) payload[:reblog][:poll][:voted] = !own_votes.empty? payload[:reblog][:poll][:own_votes] = own_votes end @@ -50,8 +50,13 @@ class StatusCacheHydrator payload[:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.id).exists? payload[:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.conversation_id).exists? payload[:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.id).exists? - payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? + payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? if @status.account_id == account_id payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.id), @status).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } + + if payload[:poll] + payload[:poll][:voted] = @status.account_id == account_id + payload[:poll][:own_votes] = [] + end end payload diff --git a/spec/lib/status_cache_hydrator_spec.rb b/spec/lib/status_cache_hydrator_spec.rb index 873d584647..c9d8d0fe1a 100644 --- a/spec/lib/status_cache_hydrator_spec.rb +++ b/spec/lib/status_cache_hydrator_spec.rb @@ -11,8 +11,20 @@ describe StatusCacheHydrator do shared_examples 'shared behavior' do context 'when handling a new status' do + let(:poll) { Fabricate(:poll) } + let(:status) { Fabricate(:status, poll: poll) } + + it 'renders the same attributes as a full render' do + expect(subject).to eql(compare_to_hash) + end + end + + context 'when handling a new status with own poll' do + let(:poll) { Fabricate(:poll, account: account) } + let(:status) { Fabricate(:status, poll: poll, account: account) } + it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -26,7 +38,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -36,7 +48,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -48,7 +60,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -62,7 +74,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -71,7 +83,7 @@ describe StatusCacheHydrator do let(:reblog) { Fabricate(:status, poll: poll, account: account) } it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end @@ -84,7 +96,7 @@ describe StatusCacheHydrator do end it 'renders the same attributes as a full render' do - expect(subject).to include(compare_to_hash) + expect(subject).to eql(compare_to_hash) end end end From c4b92b1aee27a813e24395d43e265cc02a8fe9a3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 00:09:52 +0100 Subject: [PATCH 259/500] Fix n+1 query during status removal (#19753) --- app/helpers/application_helper.rb | 2 +- app/services/remove_status_service.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9cc34cab61..8706f5c2ae 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -203,7 +203,7 @@ module ApplicationHelper permit_visibilities.shift(permit_visibilities.index(default_privacy) + 1) if default_privacy.present? state_params[:visibility] = params[:visibility] if permit_visibilities.include? params[:visibility] - if user_signed_in? + if user_signed_in? && current_user.functional? state_params[:settings] = state_params[:settings].merge(Web::Setting.find_by(user: current_user)&.data || {}) state_params[:push_subscription] = current_account.user.web_push_subscription(current_session) state_params[:current_account] = current_account diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 37d2dabae2..45cfb75f47 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -57,13 +57,13 @@ class RemoveStatusService < BaseService end def remove_from_followers - @account.followers_for_local_distribution.reorder(nil).find_each do |follower| + @account.followers_for_local_distribution.includes(:user).reorder(nil).find_each do |follower| FeedManager.instance.unpush_from_home(follower, @status) end end def remove_from_lists - @account.lists_for_local_distribution.select(:id, :account_id).reorder(nil).find_each do |list| + @account.lists_for_local_distribution.select(:id, :account_id).includes(account: :user).reorder(nil).find_each do |list| FeedManager.instance.unpush_from_list(list, @status) end end From 34ba7612d11958217e373f03c5dccf618c9f4284 Mon Sep 17 00:00:00 2001 From: prplecake Date: Sat, 5 Nov 2022 02:12:04 -0500 Subject: [PATCH 260/500] Fix 'App settings' label visible in sidebar on mobile UI (#1888) --- .../flavours/glitch/features/ui/components/column_link.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/column_link.js b/app/javascript/flavours/glitch/features/ui/components/column_link.js index 4f04fdba22..bd1c20b471 100644 --- a/app/javascript/flavours/glitch/features/ui/components/column_link.js +++ b/app/javascript/flavours/glitch/features/ui/components/column_link.js @@ -34,7 +34,7 @@ const ColumnLink = ({ icon, text, to, onClick, href, method, badge, transparent, return (
      {iconElement} - {text} + {text} {badgeElement} ); From 1e7ea50f4ccadee0a25db0d79840497bd0175589 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 11:54:26 +0100 Subject: [PATCH 261/500] New Crowdin updates (#19627) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Vietnamese) * New translations en.json (Galician) * New translations en.json (Armenian) * New translations en.yml (Irish) * New translations en.json (Thai) * New translations en.json (Sinhala) * New translations en.json (Bulgarian) * New translations en.json (Ido) * New translations en.json (German) * New translations en.json (Tamil) * New translations en.json (Esperanto) * New translations en.json (Czech) * New translations en.json (Dutch) * New translations en.json (Albanian) * New translations en.json (Japanese) * New translations en.json (Indonesian) * New translations en.json (Romanian) * New translations en.json (Irish) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.json (Danish) * New translations en.json (Greek) * New translations en.json (Frisian) * New translations en.json (Basque) * New translations en.json (Finnish) * New translations en.json (Icelandic) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Corsican) * New translations en.json (Kannada) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Sardinian) * New translations en.json (Breton) * New translations en.json (Sanskrit) * New translations en.json (Taigi) * New translations en.json (Silesian) * New translations en.json (Standard Moroccan Tamazight) * New translations activerecord.en.yml (Spanish, Mexico) * New translations en.json (Burmese) * New translations en.json (Cornish) * New translations en.json (Malayalam) * New translations en.json (Persian) * New translations en.json (Estonian) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Kazakh) * New translations en.json (Latvian) * New translations en.json (Tatar) * New translations en.json (Hindi) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (English, United Kingdom) * New translations en.json (Welsh) * New translations en.json (Uyghur) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Japanese) * New translations en.json (Finnish) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations en.json (Portuguese) * New translations en.json (Chinese Simplified) * New translations en.json (Spanish, Argentina) * New translations en.json (Irish) * New translations en.json (Irish) * New translations doorkeeper.en.yml (Irish) * New translations activerecord.en.yml (Irish) * New translations devise.en.yml (Irish) * New translations en.json (Greek) * New translations en.json (Irish) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.json (Chinese Traditional) * New translations en.json (Galician) * New translations en.json (French) * New translations en.yml (French) * New translations en.json (Italian) * New translations en.json (Vietnamese) * New translations en.json (Latvian) * New translations simple_form.en.yml (Korean) * New translations en.json (Esperanto) * New translations en.json (Albanian) * New translations en.json (Indonesian) * New translations en.json (Icelandic) * New translations en.yml (Indonesian) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * New translations en.json (Slovenian) * New translations en.json (Turkish) * New translations en.json (Vietnamese) * New translations en.yml (Norwegian Nynorsk) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (German) * New translations simple_form.en.yml (Finnish) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.json (Breton) * New translations en.json (Dutch) * New translations en.json (Spanish) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Czech) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Hungarian) * New translations en.json (French) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (Korean) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Afrikaans) * New translations en.json (Catalan) * New translations simple_form.en.yml (Dutch) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Basque) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Indonesian) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Chinese Traditional) * New translations simple_form.en.yml (Ukrainian) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (Sinhala) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Corsican) * New translations simple_form.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Sardinian) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Croatian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Latvian) * New translations simple_form.en.yml (Tatar) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations en.json (Persian) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Italian) * New translations en.yml (Catalan) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Ukrainian) * New translations en.json (Irish) * New translations simple_form.en.yml (Dutch) * New translations en.json (Ukrainian) * New translations activerecord.en.yml (Irish) * New translations en.json (Polish) * New translations simple_form.en.yml (Chinese Simplified) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Slovenian) * New translations simple_form.en.yml (Asturian) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Chinese Traditional) * New translations en.yml (Dutch) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Swedish) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Swedish) * New translations doorkeeper.en.yml (Swedish) * New translations activerecord.en.yml (Swedish) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Swedish) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Swedish) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Vietnamese) * New translations en.json (Afrikaans) * New translations en.yml (Afrikaans) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Norwegian Nynorsk) * New translations simple_form.en.yml (Afrikaans) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Korean) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Swedish) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Polish) * New translations en.json (Swedish) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Icelandic) * New translations en.json (Czech) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 10 +- app/javascript/mastodon/locales/ar.json | 2 +- app/javascript/mastodon/locales/ast.json | 12 +- app/javascript/mastodon/locales/bg.json | 2 +- app/javascript/mastodon/locales/bn.json | 2 +- app/javascript/mastodon/locales/br.json | 108 ++-- app/javascript/mastodon/locales/ca.json | 22 +- app/javascript/mastodon/locales/ckb.json | 2 +- app/javascript/mastodon/locales/co.json | 2 +- app/javascript/mastodon/locales/cs.json | 28 +- app/javascript/mastodon/locales/cy.json | 2 +- app/javascript/mastodon/locales/da.json | 22 +- app/javascript/mastodon/locales/de.json | 68 +-- .../mastodon/locales/defaultMessages.json | 10 +- app/javascript/mastodon/locales/el.json | 22 +- app/javascript/mastodon/locales/en-GB.json | 2 +- app/javascript/mastodon/locales/eo.json | 28 +- app/javascript/mastodon/locales/es-AR.json | 22 +- app/javascript/mastodon/locales/es-MX.json | 34 +- app/javascript/mastodon/locales/es.json | 2 +- app/javascript/mastodon/locales/et.json | 2 +- app/javascript/mastodon/locales/eu.json | 22 +- app/javascript/mastodon/locales/fa.json | 20 +- app/javascript/mastodon/locales/fi.json | 46 +- app/javascript/mastodon/locales/fr.json | 80 +-- app/javascript/mastodon/locales/fy.json | 2 +- app/javascript/mastodon/locales/ga.json | 310 +++++------ app/javascript/mastodon/locales/gd.json | 2 +- app/javascript/mastodon/locales/gl.json | 22 +- app/javascript/mastodon/locales/he.json | 2 +- app/javascript/mastodon/locales/hi.json | 2 +- app/javascript/mastodon/locales/hr.json | 2 +- app/javascript/mastodon/locales/hu.json | 38 +- app/javascript/mastodon/locales/hy.json | 2 +- app/javascript/mastodon/locales/id.json | 22 +- app/javascript/mastodon/locales/ig.json | 88 +-- app/javascript/mastodon/locales/io.json | 2 +- app/javascript/mastodon/locales/is.json | 22 +- app/javascript/mastodon/locales/it.json | 22 +- app/javascript/mastodon/locales/ja.json | 34 +- app/javascript/mastodon/locales/ka.json | 2 +- app/javascript/mastodon/locales/kab.json | 6 +- app/javascript/mastodon/locales/kk.json | 2 +- app/javascript/mastodon/locales/kn.json | 2 +- app/javascript/mastodon/locales/ko.json | 24 +- app/javascript/mastodon/locales/ku.json | 74 +-- app/javascript/mastodon/locales/kw.json | 2 +- app/javascript/mastodon/locales/lt.json | 2 +- app/javascript/mastodon/locales/lv.json | 22 +- app/javascript/mastodon/locales/mk.json | 2 +- app/javascript/mastodon/locales/ml.json | 2 +- app/javascript/mastodon/locales/mr.json | 2 +- app/javascript/mastodon/locales/ms.json | 2 +- app/javascript/mastodon/locales/my.json | 2 +- app/javascript/mastodon/locales/nl.json | 28 +- app/javascript/mastodon/locales/nn.json | 242 ++++---- app/javascript/mastodon/locales/no.json | 10 +- app/javascript/mastodon/locales/oc.json | 2 +- app/javascript/mastodon/locales/pa.json | 2 +- app/javascript/mastodon/locales/pl.json | 104 ++-- app/javascript/mastodon/locales/pt-BR.json | 178 +++--- app/javascript/mastodon/locales/pt-PT.json | 22 +- app/javascript/mastodon/locales/ro.json | 2 +- app/javascript/mastodon/locales/ru.json | 20 +- app/javascript/mastodon/locales/sa.json | 2 +- app/javascript/mastodon/locales/sc.json | 2 +- app/javascript/mastodon/locales/si.json | 2 +- app/javascript/mastodon/locales/sk.json | 2 +- app/javascript/mastodon/locales/sl.json | 22 +- app/javascript/mastodon/locales/sq.json | 66 +-- app/javascript/mastodon/locales/sr-Latn.json | 2 +- app/javascript/mastodon/locales/sr.json | 2 +- app/javascript/mastodon/locales/sv.json | 342 ++++++------ app/javascript/mastodon/locales/szl.json | 2 +- app/javascript/mastodon/locales/ta.json | 2 +- app/javascript/mastodon/locales/tai.json | 2 +- app/javascript/mastodon/locales/te.json | 2 +- app/javascript/mastodon/locales/th.json | 34 +- app/javascript/mastodon/locales/tr.json | 40 +- app/javascript/mastodon/locales/tt.json | 2 +- app/javascript/mastodon/locales/ug.json | 2 +- app/javascript/mastodon/locales/uk.json | 24 +- app/javascript/mastodon/locales/ur.json | 2 +- app/javascript/mastodon/locales/vi.json | 46 +- app/javascript/mastodon/locales/zgh.json | 2 +- app/javascript/mastodon/locales/zh-CN.json | 34 +- app/javascript/mastodon/locales/zh-HK.json | 2 +- app/javascript/mastodon/locales/zh-TW.json | 22 +- config/locales/activerecord.ast.yml | 5 + config/locales/activerecord.cs.yml | 4 + config/locales/activerecord.es-MX.yml | 12 +- config/locales/activerecord.fi.yml | 4 + config/locales/activerecord.ga.yml | 13 + config/locales/activerecord.hu.yml | 4 + config/locales/activerecord.sq.yml | 4 + config/locales/activerecord.sv.yml | 19 + config/locales/activerecord.th.yml | 4 + config/locales/activerecord.zh-CN.yml | 4 + config/locales/af.yml | 6 + config/locales/ast.yml | 14 +- config/locales/br.yml | 16 +- config/locales/ca.yml | 4 +- config/locales/cs.yml | 1 + config/locales/da.yml | 2 + config/locales/de.yml | 68 +-- config/locales/devise.ast.yml | 18 +- config/locales/devise.de.yml | 6 +- config/locales/devise.fi.yml | 2 +- config/locales/devise.ga.yml | 8 + config/locales/devise.uk.yml | 6 +- config/locales/doorkeeper.ga.yml | 31 ++ config/locales/doorkeeper.ku.yml | 6 +- config/locales/doorkeeper.nl.yml | 2 +- config/locales/doorkeeper.pl.yml | 8 +- config/locales/doorkeeper.sv.yml | 93 ++-- config/locales/doorkeeper.uk.yml | 22 +- config/locales/doorkeeper.vi.yml | 2 +- config/locales/el.yml | 1 + config/locales/eo.yml | 2 + config/locales/es-AR.yml | 2 + config/locales/es-MX.yml | 2 + config/locales/eu.yml | 194 ++++++- config/locales/fi.yml | 14 +- config/locales/fr.yml | 43 ++ config/locales/ga.yml | 106 ++++ config/locales/gl.yml | 2 + config/locales/hu.yml | 5 + config/locales/id.yml | 2 + config/locales/is.yml | 2 + config/locales/it.yml | 2 + config/locales/ja.yml | 21 +- config/locales/kab.yml | 3 +- config/locales/ko.yml | 2 + config/locales/ku.yml | 32 +- config/locales/lv.yml | 2 + config/locales/nl.yml | 76 ++- config/locales/nn.yml | 165 +++++- config/locales/no.yml | 1 + config/locales/pl.yml | 106 ++-- config/locales/pt-BR.yml | 1 + config/locales/pt-PT.yml | 2 + config/locales/simple_form.af.yml | 2 + config/locales/simple_form.ar.yml | 2 - config/locales/simple_form.ast.yml | 2 +- config/locales/simple_form.ca.yml | 12 +- config/locales/simple_form.ckb.yml | 2 - config/locales/simple_form.co.yml | 2 - config/locales/simple_form.cs.yml | 4 +- config/locales/simple_form.cy.yml | 2 - config/locales/simple_form.da.yml | 2 - config/locales/simple_form.de.yml | 10 +- config/locales/simple_form.el.yml | 2 +- config/locales/simple_form.eo.yml | 2 - config/locales/simple_form.es-AR.yml | 2 +- config/locales/simple_form.es-MX.yml | 39 +- config/locales/simple_form.es.yml | 2 - config/locales/simple_form.et.yml | 2 - config/locales/simple_form.eu.yml | 4 +- config/locales/simple_form.fa.yml | 2 - config/locales/simple_form.fi.yml | 6 +- config/locales/simple_form.fr.yml | 34 +- config/locales/simple_form.gd.yml | 4 +- config/locales/simple_form.gl.yml | 2 - config/locales/simple_form.he.yml | 4 +- config/locales/simple_form.hu.yml | 16 +- config/locales/simple_form.hy.yml | 2 - config/locales/simple_form.id.yml | 2 - config/locales/simple_form.io.yml | 2 - config/locales/simple_form.is.yml | 2 +- config/locales/simple_form.it.yml | 2 +- config/locales/simple_form.ja.yml | 16 +- config/locales/simple_form.kab.yml | 2 - config/locales/simple_form.ko.yml | 6 +- config/locales/simple_form.ku.yml | 11 +- config/locales/simple_form.lv.yml | 2 +- config/locales/simple_form.nl.yml | 15 +- config/locales/simple_form.nn.yml | 2 +- config/locales/simple_form.no.yml | 2 - config/locales/simple_form.oc.yml | 2 - config/locales/simple_form.pl.yml | 24 +- config/locales/simple_form.pt-BR.yml | 2 - config/locales/simple_form.pt-PT.yml | 2 +- config/locales/simple_form.ro.yml | 2 - config/locales/simple_form.ru.yml | 2 - config/locales/simple_form.sc.yml | 2 - config/locales/simple_form.si.yml | 2 - config/locales/simple_form.sk.yml | 2 - config/locales/simple_form.sl.yml | 2 +- config/locales/simple_form.sq.yml | 39 +- config/locales/simple_form.sv.yml | 213 +++++-- config/locales/simple_form.th.yml | 4 +- config/locales/simple_form.tr.yml | 2 - config/locales/simple_form.uk.yml | 12 +- config/locales/simple_form.vi.yml | 28 +- config/locales/simple_form.zh-CN.yml | 2 +- config/locales/simple_form.zh-HK.yml | 2 - config/locales/simple_form.zh-TW.yml | 2 +- config/locales/sl.yml | 2 + config/locales/sq.yml | 42 ++ config/locales/sv.yml | 519 +++++++++++++++--- config/locales/th.yml | 5 + config/locales/tr.yml | 2 + config/locales/uk.yml | 30 +- config/locales/vi.yml | 50 +- config/locales/zh-CN.yml | 4 + config/locales/zh-TW.yml | 2 + 206 files changed, 3142 insertions(+), 1823 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 39a010ea2c..d5af5a213c 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -1,7 +1,7 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "Gehodereerde bedieners", "about.contact": "Kontak:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon is gratis, oop-bron sagteware, en 'n handelsmerk van Mastodon gGmbH.", "about.domain_blocks.comment": "Rede", "about.domain_blocks.domain": "Domein", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -23,7 +23,7 @@ "account.browse_more_on_origin_server": "Snuffel rond op oorspronklike profiel", "account.cancel_follow_request": "Onttrek volg aanvraag", "account.direct": "Stuur direkte boodskap aan @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "Hou op om kennisgewings te stuur wanneer @{name} plasings maak", "account.domain_blocked": "Domein geblok", "account.edit_profile": "Redigeer profiel", "account.enable_notifications": "Stel my in kennis wanneer @{name} plasings maak", @@ -137,7 +137,7 @@ "compose_form.poll.remove_option": "Verwyder hierdie keuse", "compose_form.poll.switch_to_multiple": "Verander die peiling na verskeie keuses", "compose_form.poll.switch_to_single": "Verander die peiling na 'n enkel keuse", - "compose_form.publish": "Publisheer", + "compose_form.publish": "Publiseer", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Stoor veranderinge", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Vertoon profiel in elkgeval", - "limited_account_hint.title": "Hierdie profiel is deur moderators van jou bediener versteek.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 858f610148..2f19596ca5 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -339,7 +339,7 @@ "lightbox.next": "التالي", "lightbox.previous": "العودة", "limited_account_hint.action": "إظهار الملف التعريفي على أي حال", - "limited_account_hint.title": "أخف مشرف الخادم هذا الملف التعريفي.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "أضف إلى القائمة", "lists.account.remove": "احذف من القائمة", "lists.delete": "احذف القائمة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 603f852386..e2e7414c19 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon ye software gratuito y de códigu llibre, y una marca rexistrada de Mastodon gGmbH.", "about.domain_blocks.comment": "Motivu", "about.domain_blocks.domain": "Dominiu", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -260,11 +260,11 @@ "follow_request.reject": "Refugar", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "footer.about": "About", - "footer.directory": "Profiles directory", + "footer.directory": "Direutoriu de perfiles", "footer.get_app": "Get the app", "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.keyboard_shortcuts": "Atayos del tecláu", + "footer.privacy_policy": "Política de privacidá", "footer.source_code": "View source code", "generic.saved": "Saved", "getting_started.heading": "Entamu", @@ -339,7 +339,7 @@ "lightbox.next": "Siguiente", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Amestar a la llista", "lists.account.remove": "Desaniciar de la llista", "lists.delete": "Desaniciar la llista", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Previsualización ({ratio})", "upload_progress.label": "Xubiendo…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Procesando…", "video.close": "Zarrar el videu", "video.download": "Download file", "video.exit_fullscreen": "Colar de la pantalla completa", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index d1f32ed7f4..99af5e3c65 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -339,7 +339,7 @@ "lightbox.next": "Напред", "lightbox.previous": "Назад", "limited_account_hint.action": "Покажи профила въпреки това", - "limited_account_hint.title": "Този профил е скрит от модераторите на сървъра Ви.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Добавяне към списък", "lists.account.remove": "Премахване от списък", "lists.delete": "Изтриване на списък", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 092cd2dfc1..44ddcdb516 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -339,7 +339,7 @@ "lightbox.next": "পরবর্তী", "lightbox.previous": "পূর্ববর্তী", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "তালিকাতে যুক্ত করতে", "lists.account.remove": "তালিকা থেকে বাদ দিতে", "lists.delete": "তালিকা মুছে ফেলতে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index f64f3df349..bf8fb5e5a1 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -7,9 +7,9 @@ "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Strizhder", "about.domain_blocks.silenced.explanation": "Ne vo ket gwelet profiloù eus ar servijer-mañ ganeoc'h peurliesañ, nemet ma vefec'h o klask war o lec'h pe choazfec'h o heuliañ.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.title": "Bevennet", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.title": "Astalet", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", "about.rules": "Reolennoù ar servijer", @@ -32,7 +32,7 @@ "account.featured_tags.last_status_never": "Kemennad ebet", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Heuliañ", - "account.followers": "Heulier·ezed·ien", + "account.followers": "Tud koumanantet", "account.followers.empty": "Den na heul an implijer·ez-mañ c'hoazh.", "account.followers_counter": "{count, plural, other{{counter} Heulier·ez}}", "account.following": "Koumanantoù", @@ -50,8 +50,8 @@ "account.mute": "Kuzhat @{name}", "account.mute_notifications": "Kuzh kemennoù a-berzh @{name}", "account.muted": "Kuzhet", - "account.posts": "Kemennadoù", - "account.posts_with_replies": "Kemennadoù ha respontoù", + "account.posts": "Kannadoù", + "account.posts_with_replies": "Kannadoù ha respontoù", "account.report": "Disklêriañ @{name}", "account.requested": "O c'hortoz an asant. Klikit evit nullañ ar goulenn heuliañ", "account.share": "Skignañ profil @{name}", @@ -77,7 +77,7 @@ "alert.unexpected.title": "Hopala !", "announcement.announcement": "Kemenn", "attachments_list.unprocessed": "(ket meret)", - "audio.hide": "Hide audio", + "audio.hide": "Kuzhat ar c'hleved", "autosuggest_hashtag.per_week": "{count} bep sizhun", "boost_modal.combo": "Ar wezh kentañ e c'halliot gwaskañ war {combo} evit tremen hebiou", "bundle_column_error.copy_stacktrace": "Copy error report", @@ -105,7 +105,7 @@ "column.directory": "Mont a-dreuz ar profiloù", "column.domain_blocks": "Domani berzet", "column.favourites": "Muiañ-karet", - "column.follow_requests": "Pedadoù heuliañ", + "column.follow_requests": "Rekedoù heuliañ", "column.home": "Degemer", "column.lists": "Listennoù", "column.mutes": "Implijer·ion·ezed kuzhet", @@ -151,7 +151,7 @@ "confirmations.block.confirm": "Stankañ", "confirmations.block.message": "Ha sur oc'h e fell deoc'h stankañ {name} ?", "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.message": "Ha sur oc'h e fell deoc'h nullañ ho reked evit heuliañ {name} ?", "confirmations.delete.confirm": "Dilemel", "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ ?", "confirmations.delete_list.confirm": "Dilemel", @@ -170,13 +170,13 @@ "confirmations.reply.confirm": "Respont", "confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?", "confirmations.unfollow.confirm": "Diheuliañ", - "confirmations.unfollow.message": "Ha sur oc'h e fell deoc'h paouez da heuliañ {name}?", + "confirmations.unfollow.message": "Ha sur oc'h e fell deoc'h paouez da heuliañ {name} ?", "conversation.delete": "Dilemel ar gaozeadenn", "conversation.mark_as_read": "Merkañ evel lennet", "conversation.open": "Gwelout ar gaozeadenn", "conversation.with": "Gant {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Eilet", + "copypaste.copy": "Eilañ", "directory.federated": "Eus ar fedibed anavezet", "directory.local": "Eus {domain} hepken", "directory.new_arrivals": "Degouezhet a-nevez", @@ -216,7 +216,7 @@ "empty_column.favourited_statuses": "N'ho peus kemennad muiañ-karet ebet c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", "empty_column.favourites": "Den ebet n'eus lakaet ar c'hemennad-mañ en e reoù muiañ-karet c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.", "empty_column.follow_recommendations": "Seblant a ra ne vez ket genelet damvenegoù evidoc'h. Gallout a rit implijout un enklask evit klask tud hag a vefe anavezet ganeoc'h pe ergerzhout gerioù-klik diouzh ar c'hiz.", - "empty_column.follow_requests": "N'ho peus goulenn heuliañ ebet c'hoazh. Pa resevot reoù e vo diskouezet amañ.", + "empty_column.follow_requests": "N'ho peus reked heuliañ ebet c'hoazh. Pa vo resevet unan e teuio war wel amañ.", "empty_column.hashtag": "N'eus netra er ger-klik-mañ c'hoazh.", "empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniñ {public} pe implijit ar c'hlask evit kregiñ ganti ha kejañ gant implijer·ien·ezed all.", "empty_column.home.suggestions": "Gwellout damvenegoù", @@ -261,11 +261,11 @@ "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", "footer.about": "About", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.get_app": "Pellgargañ an arload", + "footer.invite": "Pediñ tud", + "footer.keyboard_shortcuts": "Berradennoù klavier", + "footer.privacy_policy": "Reolennoù prevezded", + "footer.source_code": "Gwelet kod mammenn", "generic.saved": "Enrollet", "getting_started.heading": "Loc'hañ", "hashtag.column_header.tag_mode.all": "ha {additional}", @@ -278,7 +278,7 @@ "hashtag.column_settings.tag_mode.none": "Hini ebet anezho", "hashtag.column_settings.tag_toggle": "Endelc'her gerioù-alc'hwez ouzhpenn evit ar bannad-mañ", "hashtag.follow": "Heuliañ ar ger-klik", - "hashtag.unfollow": "Paouez heuliañ ar ger-klik", + "hashtag.unfollow": "Diheuliañ ar ger-klik", "home.column_settings.basic": "Diazez", "home.column_settings.show_reblogs": "Diskouez ar skignadennoù", "home.column_settings.show_replies": "Diskouez ar respontoù", @@ -288,12 +288,12 @@ "interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliañ {name} evit resev h·e gemennadoù war ho red degemer.", "interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignañ ar c'hemennad-mañ evit rannañ anezhañ gant ho heulierien·ezed.", "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'ar c'hemennad-mañ.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "War ur servijer all", + "interaction_modal.on_this_server": "War ar servijer-mañ", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Ouzhpennañ kemennad {name} d'ar re vuiañ-karet", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "Heuliañ {name}", "interaction_modal.title.reblog": "Skignañ kemennad {name}", "interaction_modal.title.reply": "Respont da gemennad {name}", "intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}", @@ -305,7 +305,7 @@ "keyboard_shortcuts.column": "Fokus ar bann", "keyboard_shortcuts.compose": "Fokus an takad testenn", "keyboard_shortcuts.description": "Deskrivadur", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "evit digeriñ bann ar c'hemennadoù eeun", "keyboard_shortcuts.down": "Diskennañ er roll", "keyboard_shortcuts.enter": "Digeriñ ar c'hemennad", "keyboard_shortcuts.favourite": "Ouzhpennañ ar c'hemennad d'ar re vuiañ-karet", @@ -339,7 +339,7 @@ "lightbox.next": "Da-heul", "lightbox.previous": "A-raok", "limited_account_hint.action": "Diskouez an aelad memes tra", - "limited_account_hint.title": "Kuzhet eo bet an aelad-mañ gant habaskerien·ezed ho servijer.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Ouzhpennañ d'al listenn", "lists.account.remove": "Lemel kuit eus al listenn", "lists.delete": "Dilemel al listenn", @@ -361,7 +361,7 @@ "mute_modal.duration": "Padelezh", "mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?", "mute_modal.indefinite": "Amstrizh", - "navigation_bar.about": "About", + "navigation_bar.about": "Diwar-benn", "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", @@ -382,9 +382,9 @@ "navigation_bar.pins": "Kemennadoù spilhennet", "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", - "navigation_bar.search": "Search", + "navigation_bar.search": "Klask", "navigation_bar.security": "Diogelroez", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Ret eo deoc'h kevreañ evit tizhout an danvez-se.", "notification.admin.report": "Disklêriet eo bet {target} gant {name}", "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", "notification.favourite": "{name} en·he deus ouzhpennet ho kemennad d'h·e re vuiañ-karet", @@ -398,8 +398,8 @@ "notification.update": "{name} en·he deus kemmet ur c'hemennad", "notifications.clear": "Skarzhañ ar c'hemennoù", "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?", - "notifications.column_settings.admin.report": "New reports:", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.report": "Disklêriadurioù nevez :", + "notifications.column_settings.admin.sign_up": "Enskrivadurioù nevez :", "notifications.column_settings.alert": "Kemennoù war ar burev", "notifications.column_settings.favourite": "Ar re vuiañ-karet:", "notifications.column_settings.filter_bar.advanced": "Skrammañ an-holl rummadoù", @@ -416,7 +416,7 @@ "notifications.column_settings.status": "Kemennadoù nevez :", "notifications.column_settings.unread_notifications.category": "Kemennoù n'int ket lennet", "notifications.column_settings.unread_notifications.highlight": "Usskediñ kemennoù nevez", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Kemmoù :", "notifications.filter.all": "Pep tra", "notifications.filter.boosts": "Skignadennoù", "notifications.filter.favourites": "Muiañ-karet", @@ -445,15 +445,15 @@ "poll_button.remove_poll": "Dilemel ar sontadeg", "privacy.change": "Cheñch prevezded ar c'hemennad", "privacy.direct.long": "Embann evit an implijer·ezed·ien meneget hepken", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Tud meneget hepken", "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Tud koumanantet hepken", + "privacy.public.long": "Gwelus d'an holl", "privacy.public.short": "Publik", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Anlistennet", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Hizivadenn ziwezhañ {date}", + "privacy_policy.title": "Reolennoù Prevezded", "refresh": "Freskaat", "regeneration_indicator.label": "O kargañ…", "regeneration_indicator.sublabel": "War brientiñ emañ ho red degemer!", @@ -471,10 +471,10 @@ "reply_indicator.cancel": "Nullañ", "report.block": "Stankañ", "report.block_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Ne welo ket ho kemennadoù ha ne c'hello ket ho heuliañ ken. Gouzout a raio eo bet stanket ganeoc'h.", - "report.categories.other": "Other", + "report.categories.other": "All", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", + "report.category.subtitle": "Choazit ar pezh a glot ar gwellañ", "report.category.title": "Lârit deomp petra c'hoarvez gant {type}", "report.category.title_account": "profil", "report.category.title_status": "ar c'hemennad-mañ", @@ -482,35 +482,35 @@ "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Treuzkas da: {target}", "report.forward_hint": "War ur servijer all emañ ar c'hont-se. Kas dezhañ un adskrid disanv eus an danevell ivez?", - "report.mute": "Mute", + "report.mute": "Kuzhat", "report.mute_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Gwelet ho kemennadoù ha ho heuliañ a c'hello ha ne ouezo ket eo bet kuzhet ganeoc'h.", - "report.next": "Next", + "report.next": "War-raok", "report.placeholder": "Askelennoù ouzhpenn", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", + "report.reasons.dislike": "Ne blij ket din", + "report.reasons.dislike_description": "An dra-se na fell ket deoc'h gwelet", + "report.reasons.other": "Un abeg all eo", + "report.reasons.other_description": "Ar gudenn na glot ket gant ar rummadoù all", + "report.reasons.spam": "Spam eo", + "report.reasons.spam_description": "Liammoù gwallyoulet, engouestl faos, respontoù liezek", + "report.reasons.violation": "Terriñ a ra reolennoù ar servijer", + "report.reasons.violation_description": "Gouzout a rit e ya a-enep da reolennoù ar servijer", + "report.rules.subtitle": "Diuzit an holl draoù a glot", + "report.rules.title": "Pesort reolennoù zo bet torret ?", + "report.statuses.subtitle": "Diuzit an holl draoù a glot", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Kinnig", "report.target": "O tisklêriañ {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", + "report.thanks.title": "Ne fell ket deoc'h gwelet an dra-se ?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", + "report_notification.categories.other": "All", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.open": "Digeriñ an disklêriadur", "search.placeholder": "Klask", "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Framm klask araokaet", @@ -554,8 +554,8 @@ "status.filter": "Filter this post", "status.filtered": "Silet", "status.hide": "Hide toot", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "Krouet gant {name} {date}", + "status.history.edited": "Kemmet gant {name} {date}", "status.load_more": "Kargañ muioc'h", "status.media_hidden": "Media kuzhet", "status.mention": "Menegiñ @{name}", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index ca8a29797c..fc3e220dcb 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidors moderats", "about.contact": "Contacte:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon és un programari lliure de codi obert i una marca comercial de Mastodon gGmbH.", "about.domain_blocks.comment": "Motiu", "about.domain_blocks.domain": "Domini", "about.domain_blocks.preamble": "En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autoritza", "follow_request.reject": "Rebutja", "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes manualment.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Quant a", + "footer.directory": "Directori de perfils", + "footer.get_app": "Aconsegueix l'app", + "footer.invite": "Convida persones", + "footer.keyboard_shortcuts": "Dreceres de teclat", + "footer.privacy_policy": "Política de privadesa", + "footer.source_code": "Mostra el codi font", "generic.saved": "Desat", "getting_started.heading": "Primers passos", "hashtag.column_header.tag_mode.all": "i {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Següent", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostra el perfil", - "limited_account_hint.title": "Aquest perfil ha estat amagat pels moderadors del servidor.", + "limited_account_hint.title": "Aquest perfil ha estat amagat pels moderadors de {domain}.", "lists.account.add": "Afegeix a la llista", "lists.account.remove": "Elimina de la llista", "lists.delete": "Esborra la llista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Violació de norma", "report_notification.open": "Informe obert", "search.placeholder": "Cerca", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Cerqueu o escriu l'URL", "search_popout.search_format": "Format de cerca avançada", "search_popout.tips.full_text": "El text simple recupera publicacions que has escrit, marcat com a preferides, que has impulsat o on t'han esmentat, així com els usuaris, els noms d'usuaris i les etiquetes.", "search_popout.tips.hashtag": "etiqueta", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparant OCR…", "upload_modal.preview_label": "Previsualitza ({ratio})", "upload_progress.label": "Pujant...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "En procés…", "video.close": "Tanca el vídeo", "video.download": "Descarrega l’arxiu", "video.exit_fullscreen": "Surt de la pantalla completa", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 931e8758ac..ff55d96e18 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -339,7 +339,7 @@ "lightbox.next": "داهاتوو", "lightbox.previous": "پێشوو", "limited_account_hint.action": "بەهەر حاڵ پڕۆفایلی پیشان بدە", - "limited_account_hint.title": "ئەم پرۆفایلییە لەلایەن بەڕێوەبەرانی سێرڤەرەکەتەوە شاراوەتەوە.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "زیادکردن بۆ لیست", "lists.account.remove": "لابردن لە لیست", "lists.delete": "سڕینەوەی لیست", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 322b533c1e..8cfa4f9657 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -339,7 +339,7 @@ "lightbox.next": "Siguente", "lightbox.previous": "Pricidente", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Aghjunghje à a lista", "lists.account.remove": "Toglie di a lista", "lists.delete": "Toglie a lista", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index ed0b7b0b15..705bf96810 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -4,9 +4,9 @@ "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Důvod", "about.domain_blocks.domain": "Doména", - "about.domain_blocks.preamble": "Mastodon vám obecně umožňuje prohlížet obsah a komunikovat s uživateli z jakéhokoliv jiného serveru ve fediveru. Toto jsou výjimky, které byly uděleny na tomto konkrétním serveru.", + "about.domain_blocks.preamble": "Mastodon umožňuje prohlížet obsah a komunikovat s uživateli jakéhokoliv serveru ve fediversu. Pro tento konkrétní server se vztahují následující výjimky.", "about.domain_blocks.severity": "Závažnost", - "about.domain_blocks.silenced.explanation": "Z tohoto serveru obecně neuvidíte profily a obsah, pokud se na něj výslovně nepodíváte, nebo se k němu připojíte sledováním.", + "about.domain_blocks.silenced.explanation": "Uživatele a obsah tohoto serveru neuvidíte, pokud je nebudete výslovně hledat nebo je nezačnete sledovat.", "about.domain_blocks.silenced.title": "Omezeno", "about.domain_blocks.suspended.explanation": "Žádná data z tohoto serveru nebudou zpracovávána, uložena ani vyměňována, což znemožňuje jakoukoli interakci nebo komunikaci s uživateli z tohoto serveru.", "about.domain_blocks.suspended.title": "Pozastaveno", @@ -21,7 +21,7 @@ "account.block_domain": "Blokovat doménu {domain}", "account.blocked": "Blokován", "account.browse_more_on_origin_server": "Více na původním profilu", - "account.cancel_follow_request": "Vybrat žádost o následování", + "account.cancel_follow_request": "Zrušit žádost o následování", "account.direct": "Poslat @{name} přímou zprávu", "account.disable_notifications": "Zrušit upozorňování na příspěvky @{name}", "account.domain_blocked": "Doména blokována", @@ -151,7 +151,7 @@ "confirmations.block.confirm": "Blokovat", "confirmations.block.message": "Opravdu chcete zablokovat {name}?", "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.message": "Opravdu chcete zrušit svou žádost o sledování {name}?", "confirmations.delete.confirm": "Smazat", "confirmations.delete.message": "Opravdu chcete smazat tento příspěvek?", "confirmations.delete_list.confirm": "Smazat", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizovat", "follow_request.reject": "Odmítnout", "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "O aplikaci", + "footer.directory": "Adresář profilů", + "footer.get_app": "Stáhnout aplikaci", + "footer.invite": "Pozvat lidi", + "footer.keyboard_shortcuts": "Klávesové zkratky", + "footer.privacy_policy": "Zásady ochrany osobních údajů", + "footer.source_code": "Zobrazit zdrojový kód", "generic.saved": "Uloženo", "getting_started.heading": "Začínáme", "hashtag.column_header.tag_mode.all": "a {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Další", "lightbox.previous": "Předchozí", "limited_account_hint.action": "Přesto profil zobrazit", - "limited_account_hint.title": "Tento profil byl skryt moderátory vašeho serveru.", + "limited_account_hint.title": "Tento profil byl skryt moderátory {domain}.", "lists.account.add": "Přidat do seznamu", "lists.account.remove": "Odebrat ze seznamu", "lists.delete": "Smazat seznam", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Porušení pravidla", "report_notification.open": "Otevřít hlášení", "search.placeholder": "Hledat", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Hledat nebo vložit URL", "search_popout.search_format": "Pokročilé hledání", "search_popout.tips.full_text": "Jednoduchý text vrací příspěvky, které jste napsali, oblíbili si, boostnuli, nebo vás v nich někdo zmínil, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.", "search_popout.tips.hashtag": "hashtag", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Příprava OCR…", "upload_modal.preview_label": "Náhled ({ratio})", "upload_progress.label": "Nahrávání…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Zpracovávání…", "video.close": "Zavřít video", "video.download": "Stáhnout soubor", "video.exit_fullscreen": "Ukončit režim celé obrazovky", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 4860ecbbec..082d2ea52c 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -339,7 +339,7 @@ "lightbox.next": "Nesaf", "lightbox.previous": "Blaenorol", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Ychwanegwch at restr", "lists.account.remove": "Dileu o'r rhestr", "lists.delete": "Dileu rhestr", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 6b832c7224..2e63e14704 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -1,7 +1,7 @@ { "about.blocks": "Modererede servere", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon er gratis, open-source software og et varemærke tilhørende Mastodon gGmbH.", "about.domain_blocks.comment": "Årsag", "about.domain_blocks.domain": "Domæne", "about.domain_blocks.preamble": "Mastodon tillader generelt, at man ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Om", + "footer.directory": "Profiloversigt", + "footer.get_app": "Hent appen", + "footer.invite": "Invitere personer", + "footer.keyboard_shortcuts": "Tastaturgenveje", + "footer.privacy_policy": "Fortrolighedspolitik", + "footer.source_code": "Vis kildekode", "generic.saved": "Gemt", "getting_started.heading": "Startmenu", "hashtag.column_header.tag_mode.all": "og {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Næste", "lightbox.previous": "Forrige", "limited_account_hint.action": "Vis profil alligevel", - "limited_account_hint.title": "Denne profil er blevet skjult af servermoderatorerne.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Føj til liste", "lists.account.remove": "Fjern fra liste", "lists.delete": "Slet liste", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Regelovertrædelse", "report_notification.open": "Åbn anmeldelse", "search.placeholder": "Søg", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Søg efter eller angiv URL", "search_popout.search_format": "Avanceret søgeformat", "search_popout.tips.full_text": "Simpel tekst returnerer indlæg, du har skrevet, favoritmarkeret, boostet eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Klargør OCR…", "upload_modal.preview_label": "Forhåndsvisning ({ratio})", "upload_progress.label": "Uploader...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Behandler…", "video.close": "Luk video", "video.download": "Download fil", "video.exit_fullscreen": "Forlad fuldskærm", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 52918f333f..fd327cb12e 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderierte Server", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon ist eine freie, quelloffene Software und eine Marke der Mastodon gGmbH.", "about.domain_blocks.comment": "Begründung", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon erlaubt es dir grundsätzlich, alle Inhalte von allen Nutzer*innen auf allen Servern im Fediversum zu sehen und mit ihnen zu interagieren. Für diese Instanz gibt es aber ein paar Ausnahmen.", @@ -21,13 +21,13 @@ "account.block_domain": "Alles von {domain} verstecken", "account.blocked": "Blockiert", "account.browse_more_on_origin_server": "Mehr auf dem Originalprofil durchsuchen", - "account.cancel_follow_request": "Folgeanfrage abbrechen", + "account.cancel_follow_request": "Folgeanfrage ablehnen", "account.direct": "Direktnachricht an @{name}", "account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet", "account.domain_blocked": "Domain versteckt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", - "account.endorse": "Account in meinem Profil empfehlen", + "account.endorse": "Im Profil hervorheben", "account.featured_tags.last_status_at": "Letzter Beitrag am {date}", "account.featured_tags.last_status_never": "Keine Beiträge", "account.featured_tags.title": "Von {name} vorgestellte Hashtags", @@ -43,7 +43,7 @@ "account.joined_short": "Beigetreten", "account.languages": "Abonnierte Sprachen ändern", "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt", - "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", + "account.locked_info": "Der Privatsphärenstatus dieses Kontos wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", "account.mention": "@{name} im Beitrag erwähnen", "account.moved_to": "{name} ist umgezogen nach:", @@ -60,7 +60,7 @@ "account.unblock": "@{name} entblocken", "account.unblock_domain": "Entblocken von {domain}", "account.unblock_short": "Blockierung aufheben", - "account.unendorse": "Account nicht länger in meinem Profil empfehlen", + "account.unendorse": "Nicht im Profil hervorheben", "account.unfollow": "Entfolgen", "account.unmute": "Stummschaltung von @{name} aufheben", "account.unmute_notifications": "Stummschaltung der Benachrichtigungen von @{name} aufheben", @@ -114,8 +114,8 @@ "column.public": "Föderierte Chronik", "column_back_button.label": "Zurück", "column_header.hide_settings": "Einstellungen verbergen", - "column_header.moveLeft_settings": "Spalte nach links verschieben", - "column_header.moveRight_settings": "Spalte nach rechts verschieben", + "column_header.moveLeft_settings": "Diese Spalte nach links verschieben", + "column_header.moveRight_settings": "Diese Spalte nach rechts verschieben", "column_header.pin": "Anheften", "column_header.show_settings": "Einstellungen anzeigen", "column_header.unpin": "Lösen", @@ -128,7 +128,7 @@ "compose_form.direct_message_warning_learn_more": "Mehr erfahren", "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Informationen über Mastodon.", "compose_form.hashtag_warning": "Dieser Beitrag ist über Hashtags nicht zu finden, weil er nicht gelistet ist. Nur öffentliche Beiträge tauchen in den Hashtag-Chroniken auf.", - "compose_form.lock_disclaimer": "Dein Account ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", + "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", "compose_form.lock_disclaimer.lock": "geschützt", "compose_form.placeholder": "Was gibt's Neues?", "compose_form.poll.add_option": "Auswahlfeld hinzufügen", @@ -158,7 +158,7 @@ "confirmations.delete_list.message": "Bist du dir sicher, dass du diese Liste permanent löschen möchtest?", "confirmations.discard_edit_media.confirm": "Verwerfen", "confirmations.discard_edit_media.message": "Du hast ungespeicherte Änderungen an der Medienbeschreibung oder der Medienvorschau. Trotzdem verwerfen?", - "confirmations.domain_block.confirm": "Domain blockieren", + "confirmations.domain_block.confirm": "Domain sperren", "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Auch deine Follower von dieser Domain werden entfernt.", "confirmations.logout.confirm": "Abmelden", "confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?", @@ -204,7 +204,7 @@ "emoji_button.search_results": "Suchergebnisse", "emoji_button.symbols": "Symbole", "emoji_button.travel": "Reisen & Orte", - "empty_column.account_suspended": "Account dauerhaft gesperrt", + "empty_column.account_suspended": "Konto gesperrt", "empty_column.account_timeline": "Keine Beiträge vorhanden!", "empty_column.account_unavailable": "Profil nicht verfügbar", "empty_column.blocks": "Du hast bisher keine Profile blockiert.", @@ -258,14 +258,14 @@ "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!", "follow_request.authorize": "Erlauben", "follow_request.reject": "Ablehnen", - "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Moderator_innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "follow_requests.unlocked_explanation": "Auch wenn dein Konto öffentlich bzw. nicht geschützt ist, haben die Moderator*innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", + "footer.about": "Über", + "footer.directory": "Profilverzeichnis", + "footer.get_app": "App herunterladen", + "footer.invite": "Leute einladen", + "footer.keyboard_shortcuts": "Tastenkombinationen", + "footer.privacy_policy": "Datenschutzerklärung", + "footer.source_code": "Quellcode anzeigen", "generic.saved": "Gespeichert", "getting_started.heading": "Erste Schritte", "hashtag.column_header.tag_mode.all": "und {additional}", @@ -329,7 +329,7 @@ "keyboard_shortcuts.spoilers": "Feld für Inhaltswarnung bzw. Triggerwarnung anzeigen/ausblenden", "keyboard_shortcuts.start": "\"Erste Schritte\"-Spalte öffnen", "keyboard_shortcuts.toggle_hidden": "Beitragstext hinter der Inhaltswarnung bzw. Triggerwarnung verstecken/anzeigen", - "keyboard_shortcuts.toggle_sensitivity": "Medien hinter einer Inhaltswarnung verstecken/anzeigen", + "keyboard_shortcuts.toggle_sensitivity": "Medien anzeigen/verbergen", "keyboard_shortcuts.toot": "Neuen Beitrag erstellen", "keyboard_shortcuts.unfocus": "Textfeld/die Suche nicht mehr fokussieren", "keyboard_shortcuts.up": "sich in der Liste hinauf bewegen", @@ -339,7 +339,7 @@ "lightbox.next": "Weiter", "lightbox.previous": "Zurück", "limited_account_hint.action": "Profil trotzdem anzeigen", - "limited_account_hint.title": "Dieses Profil wurde durch die Moderator*innen deiner Mastodon-Instanz ausgeblendet.", + "limited_account_hint.title": "Dieses Profil wurde von den Moderator*innnen der Mastodon-Instanz {domain} ausgeblendet.", "lists.account.add": "Zur Liste hinzufügen", "lists.account.remove": "Von der Liste entfernen", "lists.delete": "Liste löschen", @@ -359,7 +359,7 @@ "missing_indicator.label": "Nicht gefunden", "missing_indicator.sublabel": "Die Ressource konnte nicht gefunden werden", "mute_modal.duration": "Dauer", - "mute_modal.hide_notifications": "Benachrichtigungen von diesem Account verbergen?", + "mute_modal.hide_notifications": "Benachrichtigungen von diesem Profil verbergen?", "mute_modal.indefinite": "Unbestimmt", "navigation_bar.about": "Über", "navigation_bar.blocks": "Blockierte Profile", @@ -411,7 +411,7 @@ "notifications.column_settings.poll": "Ergebnisse von Umfragen:", "notifications.column_settings.push": "Push-Benachrichtigungen", "notifications.column_settings.reblog": "Geteilte Beiträge:", - "notifications.column_settings.show": "In der Spalte anzeigen", + "notifications.column_settings.show": "In der Timeline „Mitteilungen“ anzeigen", "notifications.column_settings.sound": "Ton abspielen", "notifications.column_settings.status": "Neue Beiträge:", "notifications.column_settings.unread_notifications.category": "Ungelesene Benachrichtigungen", @@ -420,10 +420,10 @@ "notifications.filter.all": "Alle", "notifications.filter.boosts": "Geteilte Beiträge", "notifications.filter.favourites": "Favorisierungen", - "notifications.filter.follows": "Folgt", - "notifications.filter.mentions": "Erwähnungen", - "notifications.filter.polls": "Ergebnisse der Umfrage", - "notifications.filter.statuses": "Updates von Personen, denen du folgst", + "notifications.filter.follows": "Neue Follower", + "notifications.filter.mentions": "Erwähnungen und Antworten", + "notifications.filter.polls": "Umfrageergebnisse", + "notifications.filter.statuses": "Beiträge von Personen, denen du folgst", "notifications.grant_permission": "Berechtigung erteilen.", "notifications.group": "{count} Benachrichtigungen", "notifications.mark_as_read": "Alles als gelesen markieren", @@ -444,13 +444,13 @@ "poll_button.add_poll": "Eine Umfrage erstellen", "poll_button.remove_poll": "Umfrage entfernen", "privacy.change": "Sichtbarkeit des Beitrags anpassen", - "privacy.direct.long": "Nur für im Beitrag erwähnte Mastodon-Profile sichtbar", + "privacy.direct.long": "Nur für die genannten Profile sichtbar", "privacy.direct.short": "Nur erwähnte Profile", "privacy.private.long": "Nur für deine Follower sichtbar", "privacy.private.short": "Nur Follower", "privacy.public.long": "Für alle sichtbar", "privacy.public.short": "Öffentlich", - "privacy.unlisted.long": "Sichtbar für alle, aber nicht über Entdeckungsfunktionen", + "privacy.unlisted.long": "Sichtbar für alle, aber nicht über Suchfunktion", "privacy.unlisted.short": "Nicht gelistet", "privacy_policy.last_updated": "Letztes Update am {date}", "privacy_policy.title": "Datenschutzbestimmungen", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Regelbruch", "report_notification.open": "Meldung öffnen", "search.placeholder": "Suche", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Suchen oder URL einfügen", "search_popout.search_format": "Erweiterte Suche", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast, zurück; außerdem auch Beiträge, in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", "search_popout.tips.hashtag": "Hashtag", @@ -533,10 +533,10 @@ "server_banner.introduction": "{domain} ist Teil des dezentralen sozialen Netzwerks, das von {mastodon} betrieben wird.", "server_banner.learn_more": "Mehr erfahren", "server_banner.server_stats": "Serverstatistiken:", - "sign_in_banner.create_account": "Account erstellen", + "sign_in_banner.create_account": "Konto erstellen", "sign_in_banner.sign_in": "Einloggen", "sign_in_banner.text": "Melden Sie sich an, um Profilen oder Hashtags zu folgen, Favoriten, Teilen und Antworten auf Beiträge oder interagieren Sie von Ihrem Konto auf einem anderen Server.", - "status.admin_account": "Öffne Moderationsoberfläche für @{name}", + "status.admin_account": "Moderationsoberfläche für @{name} öffnen", "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche", "status.block": "@{name} blockieren", "status.bookmark": "Lesezeichen setzen", @@ -576,7 +576,7 @@ "status.reply": "Antworten", "status.replyAll": "Allen antworten", "status.report": "@{name} melden", - "status.sensitive_warning": "Inhaltswarnung (NSFW)", + "status.sensitive_warning": "Inhaltswarnung", "status.share": "Teilen", "status.show_filter_reason": "Trotzdem anzeigen", "status.show_less": "Weniger anzeigen", @@ -623,7 +623,7 @@ "upload_form.edit": "Bearbeiten", "upload_form.thumbnail": "Miniaturansicht ändern", "upload_form.undo": "Löschen", - "upload_form.video_description": "Beschreibung des Videos für taube und hörbehinderte Menschen", + "upload_form.video_description": "Beschreibe das Video für Menschen mit einer Hör- oder Sehbehinderung", "upload_modal.analyzing_picture": "Analysiere Bild…", "upload_modal.apply": "Übernehmen", "upload_modal.applying": "Anwenden…", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Vorbereitung von OCR…", "upload_modal.preview_label": "Vorschau ({ratio})", "upload_progress.label": "Wird hochgeladen …", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Wird verarbeitet …", "video.close": "Video schließen", "video.download": "Datei herunterladen", "video.exit_fullscreen": "Vollbild verlassen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 0e190a1e4d..faa1f24c4e 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -938,7 +938,7 @@ { "descriptors": [ { - "defaultMessage": "This profile has been hidden by the moderators of your server.", + "defaultMessage": "This profile has been hidden by the moderators of {domain}.", "id": "limited_account_hint.title" }, { @@ -1912,6 +1912,10 @@ "defaultMessage": "Withdraw follow request", "id": "account.cancel_follow_request" }, + { + "defaultMessage": "Withdraw request", + "id": "confirmations.cancel_follow_request.confirm" + }, { "defaultMessage": "Awaiting approval. Click to cancel follow request", "id": "account.requested" @@ -1936,6 +1940,10 @@ "defaultMessage": "Are you sure you want to unfollow {name}?", "id": "confirmations.unfollow.message" }, + { + "defaultMessage": "Are you sure you want to withdraw your request to follow {name}?", + "id": "confirmations.cancel_follow_request.message" + }, { "defaultMessage": "Posts", "id": "account.posts" diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 88957939cc..eedf2905f4 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderated servers", "about.contact": "Επικοινωνία:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Το Mastodon είναι ελεύθερο λογισμικό ανοιχτού κώδικα και εμπορικό σήμα της Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Τομέας (Domain)", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Ενέκρινε", "follow_request.reject": "Απέρριψε", "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Σχετικά με", + "footer.directory": "Κατάλογος προφίλ", + "footer.get_app": "Αποκτήστε την Εφαρμογή", + "footer.invite": "Πρόσκληση ατόμων", + "footer.keyboard_shortcuts": "Συντομεύσεις πληκτρολογίου", + "footer.privacy_policy": "Πολιτική απορρήτου", + "footer.source_code": "Προβολή πηγαίου κώδικα", "generic.saved": "Αποθηκεύτηκε", "getting_started.heading": "Αφετηρία", "hashtag.column_header.tag_mode.all": "και {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Επόμενο", "lightbox.previous": "Προηγούμενο", "limited_account_hint.action": "Εμφάνιση προφίλ ούτως ή άλλως", - "limited_account_hint.title": "Αυτό το προφίλ έχει αποκρυφτεί από τους διαχειριστές του διακομιστή σας.", + "limited_account_hint.title": "Αυτό το προφίλ έχει αποκρυφτεί από τους διαχειριστές του διακομιστή {domain}.", "lists.account.add": "Πρόσθεσε στη λίστα", "lists.account.remove": "Βγάλε από τη λίστα", "lists.delete": "Διαγραφή λίστας", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Παραβίαση κανόνα", "report_notification.open": "Open report", "search.placeholder": "Αναζήτηση", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Αναζήτηση ή εισαγωγή URL", "search_popout.search_format": "Προχωρημένη αναζήτηση", "search_popout.tips.full_text": "Απλό κείμενο που επιστρέφει καταστάσεις που έχεις γράψει, έχεις σημειώσει ως αγαπημένες, έχεις προωθήσει ή έχεις αναφερθεί σε αυτές, καθώς και όσα ονόματα χρηστών και ετικέτες ταιριάζουν.", "search_popout.tips.hashtag": "ετικέτα", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Προετοιμασία αναγνώρισης κειμένου…", "upload_modal.preview_label": "Προεπισκόπηση ({ratio})", "upload_progress.label": "Ανεβαίνει...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Επεξεργασία…", "video.close": "Κλείσε το βίντεο", "video.download": "Λήψη αρχείου", "video.exit_fullscreen": "Έξοδος από πλήρη οθόνη", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 6f4078306d..a812530bbe 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 3e258a6c8e..d420d4a08f 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.blocks": "Moderigitaj serviloj", + "about.contact": "Kontakto:", + "about.disclaimer": "Mastodon estas libera, malfermitkoda programaro kaj varmarko de la firmao Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Graveco", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Reguloj de la servilo", "account.account_note_header": "Noto", "account.add_or_remove_from_list": "Aldoni al aŭ forigi el listoj", "account.badges.bot": "Roboto", @@ -175,8 +175,8 @@ "conversation.mark_as_read": "Marki legita", "conversation.open": "Vidi konversacion", "conversation.with": "Kun {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiita", + "copypaste.copy": "Kopii", "directory.federated": "El konata fediverso", "directory.local": "Nur de {domain}", "directory.new_arrivals": "Novaj alvenoj", @@ -259,13 +259,13 @@ "follow_request.authorize": "Rajtigi", "follow_request.reject": "Rifuzi", "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensas, ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.", - "footer.about": "About", + "footer.about": "Pri", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", + "footer.get_app": "Akiru la Programon", + "footer.invite": "Inviti homojn", "footer.keyboard_shortcuts": "Keyboard shortcuts", "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.source_code": "Montri fontkodon", "generic.saved": "Konservita", "getting_started.heading": "Por komenci", "hashtag.column_header.tag_mode.all": "kaj {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Antaŭen", "lightbox.previous": "Malantaŭen", "limited_account_hint.action": "Montru profilon ĉiukaze", - "limited_account_hint.title": "La profilo estas kaŝita de la moderigantoj de via servilo.", + "limited_account_hint.title": "La profilo estas kaŝita de la moderigantoj de {domain}.", "lists.account.add": "Aldoni al la listo", "lists.account.remove": "Forigi de la listo", "lists.delete": "Forigi la liston", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Malobservo de la regulo", "report_notification.open": "Malfermi la raporton", "search.placeholder": "Serĉi", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Serĉu aŭ algluu URL-on", "search_popout.search_format": "Detala serĉo", "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.", "search_popout.tips.hashtag": "kradvorto", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparante OSR…", "upload_modal.preview_label": "Antaŭvido ({ratio})", "upload_progress.label": "Alŝutado…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Traktante…", "video.close": "Fermi la videon", "video.download": "Elŝuti dosieron", "video.exit_fullscreen": "Eksigi plenekrana", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index a554d391de..e2a165aa03 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon es software libre y de código abierto y una marca comercial de Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Información", + "footer.directory": "Directorio de perfiles", + "footer.get_app": "Conseguí la aplicación", + "footer.invite": "Invitá a gente", + "footer.keyboard_shortcuts": "Atajos de teclado", + "footer.privacy_policy": "Política de privacidad", + "footer.source_code": "Ver código fuente", "generic.saved": "Guardado", "getting_started.heading": "Inicio de Mastodon", "hashtag.column_header.tag_mode.all": "y {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostrar perfil de todos modos", - "limited_account_hint.title": "Este perfil fue ocultado por los moderadores de tu servidor.", + "limited_account_hint.title": "Este perfil fue ocultado por los moderadores de {domain}.", "lists.account.add": "Agregar a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Eliminar lista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Violación de regla", "report_notification.open": "Abrir denuncia", "search.placeholder": "Buscar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Buscar o pegar dirección web", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto simple devuelven los mensajes que escribiste, los marcados como favoritos, los adheridos o en los que te mencionaron, así como nombres de usuarios, nombres mostrados y etiquetas.", "search_popout.tips.hashtag": "etiqueta", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Previsualización ({ratio})", "upload_progress.label": "Subiendo...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Procesando…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de la pantalla completa", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 44a2131ae9..1b73dfb3fd 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -40,7 +40,7 @@ "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", "account.hide_reblogs": "Ocultar retoots de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Se unió", "account.languages": "Cambiar idiomas suscritos", "account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", @@ -80,23 +80,23 @@ "audio.hide": "Ocultar audio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar informe de error", + "bundle_column_error.error.body": "La página solicitada no pudo ser renderizada. Podría deberse a un error en nuestro código o a un problema de compatibilidad con el navegador.", + "bundle_column_error.error.title": "¡Oh, no!", + "bundle_column_error.network.body": "Se ha producido un error al intentar cargar esta página. Esto puede deberse a un problema temporal con tu conexión a internet o a este servidor.", + "bundle_column_error.network.title": "Error de red", "bundle_column_error.retry": "Inténtalo de nuevo", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Volver al inicio", + "bundle_column_error.routing.body": "No se pudo encontrar la página solicitada. ¿Estás seguro de que la URL en la barra de direcciones es correcta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cerrar", "bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.retry": "Inténtalo de nuevo", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Como Mastodon es descentralizado, puedes crear una cuenta en otro servidor y seguir interactuando con este.", + "closed_registrations_modal.description": "La creación de una cuenta en {domain} no es posible actualmente, pero ten en cuenta que no necesitas una cuenta específicamente en {domain} para usar Mastodon.", + "closed_registrations_modal.find_another_server": "Buscar otro servidor", + "closed_registrations_modal.preamble": "Mastodon es descentralizado, por lo que no importa dónde crees tu cuenta, podrás seguir e interactuar con cualquier persona en este servidor. ¡Incluso puedes alojarlo tú mismo!", + "closed_registrations_modal.title": "Registrarse en Mastodon", "column.about": "Acerca de", "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", @@ -339,7 +339,7 @@ "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostrar perfil de todos modos", - "limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de tu servidor.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Añadir a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Borrar lista", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Toots fijados", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", @@ -572,7 +572,7 @@ "status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", "status.remove_bookmark": "Eliminar marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondió a {name}", "status.reply": "Responder", "status.replyAll": "Responder al hilo", "status.report": "Reportar", @@ -585,7 +585,7 @@ "status.show_more_all": "Mostrar más para todo", "status.show_original": "Mostrar original", "status.translate": "Traducir", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Traducido de {lang} usando {provider}", "status.uncached_media_warning": "No disponible", "status.unmute_conversation": "Dejar de silenciar conversación", "status.unpin": "Dejar de fijar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 870f428b94..a1c2541e93 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -339,7 +339,7 @@ "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostrar perfil de todos modos", - "limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de tu servidor.", + "limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de {domain}.", "lists.account.add": "Añadir a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Borrar lista", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 4584704ac9..a11a06b3bf 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -339,7 +339,7 @@ "lightbox.next": "Järgmine", "lightbox.previous": "Eelmine", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Lisa nimistusse", "lists.account.remove": "Eemalda nimistust", "lists.delete": "Kustuta nimistu", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index d27817992d..eff59c5055 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderatutako zerbitzariak", "about.contact": "Kontaktua:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon software libre eta kode irekikoa da, eta Mastodon gGmbH-ren marka erregistratua.", "about.domain_blocks.comment": "Arrazoia", "about.domain_blocks.domain": "Domeinua", "about.domain_blocks.preamble": "Mastodonek orokorrean aukera ematen dizu fedibertsoko beste zerbitzarietako erabiltzaileen edukia ikusi eta haiekin komunikatzeko. Zerbitzari zehatz honi ezarritako salbuespenak hauek dira.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Baimendu", "follow_request.reject": "Ukatu", "follow_requests.unlocked_explanation": "Zure kontua blokeatuta ez badago ere, {domain} domeinuko arduradunek uste dute kontu hauetako jarraipen eskariak agian eskuz begiratu nahiko dituzula.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Honi buruz", + "footer.directory": "Profil-direktorioa", + "footer.get_app": "Eskuratu aplikazioa", + "footer.invite": "Gonbidatu jendea", + "footer.keyboard_shortcuts": "Lasterbideak", + "footer.privacy_policy": "Pribatutasun politika", + "footer.source_code": "Ikusi iturburu kodea", "generic.saved": "Gordea", "getting_started.heading": "Menua", "hashtag.column_header.tag_mode.all": "eta {osagarria}", @@ -339,7 +339,7 @@ "lightbox.next": "Hurrengoa", "lightbox.previous": "Aurrekoa", "limited_account_hint.action": "Erakutsi profila hala ere", - "limited_account_hint.title": "Profil hau ezkutatu egin dute zure zerbitzariko moderatzaileek.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Gehitu zerrendara", "lists.account.remove": "Kendu zerrendatik", "lists.delete": "Ezabatu zerrenda", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Arau haustea", "report_notification.open": "Ireki salaketa", "search.placeholder": "Bilatu", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Bilatu edo itsatsi URLa", "search_popout.search_format": "Bilaketa aurreratuaren formatua", "search_popout.tips.full_text": "Testu hutsarekin zuk idatzitako bidalketak, gogokoak, bultzadak edo aipamenak aurkitu ditzakezu, bat datozen erabiltzaile-izenak, pantaila-izenak, eta traolak.", "search_popout.tips.hashtag": "traola", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR prestatzen…", "upload_modal.preview_label": "Aurreikusi ({ratio})", "upload_progress.label": "Igotzen...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Prozesatzen…", "video.close": "Itxi bideoa", "video.download": "Deskargatu fitxategia", "video.exit_fullscreen": "Irten pantaila osotik", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index b9c67fa061..259b125e46 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -1,7 +1,7 @@ { "about.blocks": "کارسازهای نظارت شده", "about.contact": "تماس:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "ماستودون نرم‌افزار آزاد، متن باز و یک شرکت غیر انتفاعی با مسئولیت محدود طبق قوانین آلمان است.", "about.domain_blocks.comment": "دلیل", "about.domain_blocks.domain": "دامنه", "about.domain_blocks.preamble": "ماستودون عموماً می‌گذارد محتوا را از از هر کارساز دیگری در دنیای شبکه‌های اجتماعی غیرمتمرکز دیده و با آنان برهم‌کنش داشته باشید. این‌ها استثناهایی هستند که روی این کارساز خاص وضع شده‌اند.", @@ -259,13 +259,13 @@ "follow_request.authorize": "اجازه دهید", "follow_request.reject": "رد کنید", "follow_requests.unlocked_explanation": "با این که حسابتان قفل نیست، کارکنان {domain} فکر کردند که ممکن است بخواهید درخواست‌ها از این حساب‌ها را به صورت دستی بازبینی کنید.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "درباره", + "footer.directory": "فهرست نمایه‌ها", + "footer.get_app": "گرفتن کاره", + "footer.invite": "دعوت دیگران", + "footer.keyboard_shortcuts": "میانبرهای صفحه‌کلید", + "footer.privacy_policy": "سیاست حریم خصوصی", + "footer.source_code": "مشاهده کد منبع", "generic.saved": "ذخیره شده", "getting_started.heading": "آغاز کنید", "hashtag.column_header.tag_mode.all": "و {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "بعدی", "lightbox.previous": "قبلی", "limited_account_hint.action": "به هر روی نمایه نشان داده شود", - "limited_account_hint.title": "این نمایه از سوی ناظم‌های کارسازتان پنهان شده.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "افزودن به سیاهه", "lists.account.remove": "برداشتن از سیاهه", "lists.delete": "حذف سیاهه", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "در حال آماده سازی OCR…", "upload_modal.preview_label": "پیش‌نمایش ({ratio})", "upload_progress.label": "در حال بارگذاری…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "در حال پردازش…", "video.close": "بستن ویدیو", "video.download": "بارگیری پرونده", "video.exit_fullscreen": "خروج از حالت تمام‌صفحه", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 99d6cd40b4..b214dfe9f7 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderoidut palvelimet", "about.contact": "Yhteystiedot:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon on ilmainen avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.", "about.domain_blocks.comment": "Syy", "about.domain_blocks.domain": "Verkkotunnus", "about.domain_blocks.preamble": "Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle.", @@ -22,7 +22,7 @@ "account.blocked": "Estetty", "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", "account.cancel_follow_request": "Peruuta seurantapyyntö", - "account.direct": "Pikaviesti käyttäjälle @{name}", + "account.direct": "Yksityisviesti käyttäjälle @{name}", "account.disable_notifications": "Lopeta @{name}:n julkaisuista ilmoittaminen", "account.domain_blocked": "Verkko-osoite piilotettu", "account.edit_profile": "Muokkaa profiilia", @@ -40,7 +40,7 @@ "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", "account.follows_you": "Seuraa sinua", "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Liittynyt", "account.languages": "Vaihda tilattuja kieliä", "account.link_verified_on": "Tämän linkin omistaja tarkistettiin {date}", "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.", @@ -92,11 +92,11 @@ "bundle_modal_error.close": "Sulje", "bundle_modal_error.message": "Jokin meni vikaan komponenttia ladattaessa.", "bundle_modal_error.retry": "Yritä uudelleen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations.other_server_instructions": "Koska Mastodon on hajautettu, voit luoda tilin toiselle palvelimelle ja silti olla vuorovaikutuksessa tämän kanssa.", + "closed_registrations_modal.description": "Tilin luominen palvelimeen {domain} ei ole tällä hetkellä mahdollista, mutta huomioi, että et tarvitse tiliä erityisesti palvelimeen {domain} käyttääksesi Mastodonia.", "closed_registrations_modal.find_another_server": "Etsi toinen palvelin", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.preamble": "Mastodon on hajautettu, joten riippumatta siitä, missä luot tilisi, voit seurata ja olla vuorovaikutuksessa kenen tahansa kanssa tällä palvelimella. Voit jopa isännöidä palvelinta!", + "closed_registrations_modal.title": "Rekisteröityminen Mastodoniin", "column.about": "Tietoja", "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", @@ -205,7 +205,7 @@ "emoji_button.symbols": "Symbolit", "emoji_button.travel": "Matkailu ja paikat", "empty_column.account_suspended": "Tilin käyttäminen keskeytetty", - "empty_column.account_timeline": "Täällä ei viestejä!", + "empty_column.account_timeline": "Ei viestejä täällä.", "empty_column.account_unavailable": "Profiilia ei löydy", "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.", "empty_column.bookmarked_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikka tiliäsi ei ole lukittu, {domain}:n ylläpitäjien mielestä saatat haluta tarkistaa nämä seurauspyynnöt manuaalisesti.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Tietoja", + "footer.directory": "Profiilihakemisto", + "footer.get_app": "Hanki sovellus", + "footer.invite": "Kutsu ihmisiä", + "footer.keyboard_shortcuts": "Pikanäppäimet", + "footer.privacy_policy": "Tietosuojakäytäntö", + "footer.source_code": "Näytä lähdekoodi", "generic.saved": "Tallennettu", "getting_started.heading": "Näin pääset alkuun", "hashtag.column_header.tag_mode.all": "ja {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Seuraava", "lightbox.previous": "Edellinen", "limited_account_hint.action": "Näytä profiili joka tapauksessa", - "limited_account_hint.title": "Tämä profiili on piilotettu serverisi valvojien toimesta.", + "limited_account_hint.title": "Palvelun {domain} moderaattorit ovat piilottaneet tämän profiilin.", "lists.account.add": "Lisää listaan", "lists.account.remove": "Poista listasta", "lists.delete": "Poista lista", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Kiinnitetyt viestit", "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", - "navigation_bar.search": "Search", + "navigation_bar.search": "Haku", "navigation_bar.security": "Turvallisuus", "not_signed_in_indicator.not_signed_in": "Sinun täytyy kirjautua sisään päästäksesi käsiksi tähän resurssiin.", "notification.admin.report": "{name} ilmoitti {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Sääntöjen rikkominen", "report_notification.open": "Avaa raportti", "search.placeholder": "Hae", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Etsi tai kirjoita URL-osoite", "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", "search_popout.tips.hashtag": "aihetunnisteet", @@ -545,7 +545,7 @@ "status.copy": "Kopioi linkki julkaisuun", "status.delete": "Poista", "status.detailed_status": "Yksityiskohtainen keskustelunäkymä", - "status.direct": "Pikaviesti käyttäjälle @{name}", + "status.direct": "Yksityisviesti käyttäjälle @{name}", "status.edit": "Muokkaa", "status.edited": "Muokattu {date}", "status.edited_x_times": "Muokattu {count, plural, one {{count} aika} other {{count} kertaa}}", @@ -572,7 +572,7 @@ "status.reblogs.empty": "Kukaan ei ole vielä buustannut tätä viestiä. Kun joku tekee niin, näkyy kyseinen henkilö tässä.", "status.redraft": "Poista ja palauta muokattavaksi", "status.remove_bookmark": "Poista kirjanmerkki", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Vastaa käyttäjälle {name}", "status.reply": "Vastaa", "status.replyAll": "Vastaa ketjuun", "status.report": "Raportoi @{name}", @@ -585,7 +585,7 @@ "status.show_more_all": "Näytä lisää kaikista", "status.show_original": "Näytä alkuperäinen", "status.translate": "Käännä", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Käännetty kielestä {lang} käyttäen palvelua {provider}", "status.uncached_media_warning": "Ei saatavilla", "status.unmute_conversation": "Poista keskustelun mykistys", "status.unpin": "Irrota profiilista", @@ -605,7 +605,7 @@ "time_remaining.seconds": "{number, plural, one {# sekunti} other {# sekuntia}} jäljellä", "timeline_hint.remote_resource_not_displayed": "{resource} muilta palvelimilta ei näytetä.", "timeline_hint.resources.followers": "Seuraajat", - "timeline_hint.resources.follows": "Seuraa", + "timeline_hint.resources.follows": "seurattua", "timeline_hint.resources.statuses": "Vanhemmat julkaisut", "trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} viimeinen {days, plural, one {päivä} other {{days} päivää}}", "trends.trending_now": "Suosittua nyt", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Valmistellaan OCR…", "upload_modal.preview_label": "Esikatselu ({ratio})", "upload_progress.label": "Ladataan...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Käsitellään…", "video.close": "Sulje video", "video.download": "Lataa tiedosto", "video.exit_fullscreen": "Poistu koko näytön tilasta", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 894f3599e7..a7c966b70b 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -1,20 +1,20 @@ { "about.blocks": "Serveurs modérés", "about.contact": "Contact :", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon est un logiciel libre, open-source et une marque déposée de Mastodon gGmbH.", "about.domain_blocks.comment": "Motif :", "about.domain_blocks.domain": "Domaine", "about.domain_blocks.preamble": "Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateurs de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier.", "about.domain_blocks.severity": "Sévérité", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.silenced.explanation": "Vous ne verrez généralement pas les profils et le contenu de ce serveur, à moins que vous ne les recherchiez explicitement ou que vous ne choisissiez de les suivre.", + "about.domain_blocks.silenced.title": "Limité", + "about.domain_blocks.suspended.explanation": "Aucune donnée de ce serveur ne sera traitée, enregistrée ou échangée, rendant impossible toute interaction ou communication avec les utilisateurs de ce serveur.", "about.domain_blocks.suspended.title": "Suspendu", - "about.not_available": "This information has not been made available on this server.", + "about.not_available": "Cette information n'a pas été rendue disponibles sur ce serveur.", "about.powered_by": "Réseau social décentralisé propulsé par {mastodon}", "about.rules": "Règles du serveur", "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Ajouter ou retirer des listes", + "account.add_or_remove_from_list": "Ajouter ou enlever des listes", "account.badges.bot": "Bot", "account.badges.group": "Groupe", "account.block": "Bloquer @{name}", @@ -23,7 +23,7 @@ "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", "account.cancel_follow_request": "Retirer la demande d’abonnement", "account.direct": "Envoyer un message direct à @{name}", - "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", + "account.disable_notifications": "Ne plus me notifier quand @{name} publie", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie quelque chose", @@ -80,26 +80,26 @@ "audio.hide": "Masquer l'audio", "autosuggest_hashtag.per_week": "{count} par semaine", "boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur", + "bundle_column_error.error.body": "La page demandée n'a pas pu être affichée. Cela peut être dû à un bogue dans notre code, ou à un problème de compatibilité avec le navigateur.", "bundle_column_error.error.title": "Oh non !", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.body": "Une erreur s'est produite lors du chargement de cette page. Cela peut être dû à un problème temporaire avec votre connexion internet ou avec ce serveur.", "bundle_column_error.network.title": "Erreur réseau", "bundle_column_error.retry": "Réessayer", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Retour à l'accueil", "bundle_column_error.routing.body": "La page demandée est introuvable. Êtes-vous sûr que l’URL dans la barre d’adresse est correcte ?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermer", "bundle_modal_error.message": "Une erreur s’est produite lors du chargement de ce composant.", "bundle_modal_error.retry": "Réessayer", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations.other_server_instructions": "Puisque Mastodon est décentralisé, vous pouvez créer un compte sur un autre serveur et interagir quand même avec celui-ci.", + "closed_registrations_modal.description": "Créer un compte sur {domain} est actuellement impossible, néanmoins souvenez-vous que vous n'avez pas besoin d'un compte spécifiquement sur {domain} pour utiliser Mastodon.", "closed_registrations_modal.find_another_server": "Trouver un autre serveur", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "S’inscrire sur Mastodon", + "closed_registrations_modal.preamble": "Mastodon est décentralisé : peu importe où vous créez votre votre, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger !", + "closed_registrations_modal.title": "Inscription sur Mastodon", "column.about": "À propos", - "column.blocks": "Comptes bloqués", - "column.bookmarks": "Marque-pages", + "column.blocks": "Utilisateurs bloqués", + "column.bookmarks": "Signets", "column.community": "Fil public local", "column.direct": "Messages directs", "column.directory": "Parcourir les profils", @@ -151,7 +151,7 @@ "confirmations.block.confirm": "Bloquer", "confirmations.block.message": "Voulez-vous vraiment bloquer {name} ?", "confirmations.cancel_follow_request.confirm": "Retirer la demande", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.message": "Êtes-vous sûr de vouloir retirer votre demande pour suivre {name} ?", "confirmations.delete.confirm": "Supprimer", "confirmations.delete.message": "Voulez-vous vraiment supprimer ce message ?", "confirmations.delete_list.confirm": "Supprimer", @@ -182,11 +182,11 @@ "directory.new_arrivals": "Inscrit·e·s récemment", "directory.recently_active": "Actif·ve·s récemment", "dismissable_banner.community_timeline": "Voici les messages publics les plus récents des personnes dont les comptes sont hébergés par {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.dismiss": "Rejeter", + "dismissable_banner.explore_links": "Ces nouvelles sont actuellement en cours de discussion par des personnes sur d'autres serveurs du réseau décentralisé ainsi que sur celui-ci.", + "dismissable_banner.explore_statuses": "Ces publications depuis les serveurs du réseau décentralisé, dont celui-ci, sont actuellement en train de gagner de l'ampleur sur ce serveur.", + "dismissable_banner.explore_tags": "Ces hashtags sont actuellement en train de gagner de l'ampleur parmi les personnes sur les serveurs du réseau décentralisé dont celui-ci.", + "dismissable_banner.public_timeline": "Ce sont les publications publiques les plus récentes des personnes sur les serveurs du réseau décentralisé dont ce serveur que celui-ci connaît.", "embed.instructions": "Intégrez ce message à votre site en copiant le code ci-dessous.", "embed.preview": "Il apparaîtra comme cela :", "emoji_button.activity": "Activités", @@ -241,7 +241,7 @@ "filter_modal.added.context_mismatch_title": "Incompatibilité du contexte !", "filter_modal.added.expired_explanation": "Cette catégorie de filtre a expiré, vous devrez modifier la date d'expiration pour qu'elle soit appliquée.", "filter_modal.added.expired_title": "Filtre expiré !", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", + "filter_modal.added.review_and_configure": "Pour passer en revue et approfondir la configuration de cette catégorie de filtre, aller sur le {settings_link}.", "filter_modal.added.review_and_configure_title": "Paramètres du filtre", "filter_modal.added.settings_link": "page des paramètres", "filter_modal.added.short_explanation": "Ce message a été ajouté à la catégorie de filtre suivante : {title}.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Accepter", "follow_request.reject": "Rejeter", "follow_requests.unlocked_explanation": "Même si votre compte n’est pas privé, l’équipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "À propos", + "footer.directory": "Annuaire des profils", + "footer.get_app": "Télécharger l’application", + "footer.invite": "Inviter des personnes", + "footer.keyboard_shortcuts": "Raccourcis clavier", + "footer.privacy_policy": "Politique de confidentialité", + "footer.source_code": "Voir le code source", "generic.saved": "Sauvegardé", "getting_started.heading": "Pour commencer", "hashtag.column_header.tag_mode.all": "et {additional}", @@ -284,15 +284,15 @@ "home.column_settings.show_replies": "Afficher les réponses", "home.hide_announcements": "Masquer les annonces", "home.show_announcements": "Afficher les annonces", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", + "interaction_modal.description.favourite": "Avec un compte Mastodon, vous pouvez ajouter ce post aux favoris pour informer l'auteur que vous l'appréciez et le sauvegarder pour plus tard.", + "interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs posts dans votre fil d'actualité.", "interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez booster ce message pour le partager avec vos propres abonné·e·s.", "interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.", "interaction_modal.on_another_server": "Sur un autre serveur", "interaction_modal.on_this_server": "Sur ce serveur", "interaction_modal.other_server_instructions": "Copiez et collez simplement cette URL dans la barre de recherche de votre application préférée ou dans l’interface web où vous êtes connecté.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.preamble": "Puisque Mastodon est décentralisé, vous pouvez utiliser votre compte existant hébergé par un autre serveur Mastodon ou une plateforme compatible si vous n'avez pas de compte sur celui-ci.", + "interaction_modal.title.favourite": "Ajouter de post de {name} aux favoris", "interaction_modal.title.follow": "Suivre {name}", "interaction_modal.title.reblog": "Partager la publication de {name}", "interaction_modal.title.reply": "Répondre au message de {name}", @@ -339,7 +339,7 @@ "lightbox.next": "Suivant", "lightbox.previous": "Précédent", "limited_account_hint.action": "Afficher le profil quand même", - "limited_account_hint.title": "Ce profil a été masqué par la modération de votre serveur.", + "limited_account_hint.title": "Ce profil a été masqué par la modération de {domain}.", "lists.account.add": "Ajouter à la liste", "lists.account.remove": "Supprimer de la liste", "lists.delete": "Supprimer la liste", @@ -408,7 +408,7 @@ "notifications.column_settings.follow": "Nouveaux·elles abonné·e·s :", "notifications.column_settings.follow_request": "Nouvelles demandes d’abonnement :", "notifications.column_settings.mention": "Mentions :", - "notifications.column_settings.poll": "Résultats des sondage :", + "notifications.column_settings.poll": "Résultats des sondages :", "notifications.column_settings.push": "Notifications push", "notifications.column_settings.reblog": "Partages :", "notifications.column_settings.show": "Afficher dans la colonne", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Infraction aux règles du serveur", "report_notification.open": "Ouvrir le signalement", "search.placeholder": "Rechercher", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Rechercher ou saisir une URL", "search_popout.search_format": "Recherche avancée", "search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.", "search_popout.tips.hashtag": "hashtag", @@ -535,7 +535,7 @@ "server_banner.server_stats": "Statistiques du serveur :", "sign_in_banner.create_account": "Créer un compte", "sign_in_banner.sign_in": "Se connecter", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "sign_in_banner.text": "Connectez-vous pour suivre les profils ou les hashtags, ajouter aux favoris, partager et répondre aux messages, ou interagir depuis votre compte sur un autre serveur.", "status.admin_account": "Ouvrir l’interface de modération pour @{name}", "status.admin_status": "Ouvrir ce message dans l’interface de modération", "status.block": "Bloquer @{name}", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Préparation de l’OCR…", "upload_modal.preview_label": "Aperçu ({ratio})", "upload_progress.label": "Envoi en cours…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "En cours…", "video.close": "Fermer la vidéo", "video.download": "Télécharger le fichier", "video.exit_fullscreen": "Quitter le plein écran", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 89db3f3270..9f905e3f8d 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -339,7 +339,7 @@ "lightbox.next": "Fierder", "lightbox.previous": "Werom", "limited_account_hint.action": "Profyl dochs besjen", - "limited_account_hint.title": "Dit profyl is ferstoppe troch de behearders fan jo tsjinner.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Oan list tafoegje", "lists.account.remove": "Ut list wei smite", "lists.delete": "List fuortsmite", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index d24e1aaec0..0bedff8831 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -1,15 +1,15 @@ { "about.blocks": "Freastalaithe faoi stiúir", "about.contact": "Teagmháil:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Bogearra foinse oscailte saor in aisce is ea Mastodon, agus is le Mastodon gGmbH an trádmharc.", "about.domain_blocks.comment": "Fáth", "about.domain_blocks.domain": "Fearann", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Déine", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.title": "Teoranta", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.title": "Ar fionraí", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", "about.rules": "Rialacha an fhreastalaí", @@ -21,16 +21,16 @@ "account.block_domain": "Bac ainm fearainn {domain}", "account.blocked": "Bactha", "account.browse_more_on_origin_server": "Brabhsáil níos mó ar an phróifíl bhunaidh", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Éirigh as iarratas leanta", "account.direct": "Seol teachtaireacht dhíreach chuig @{name}", "account.disable_notifications": "Éirigh as ag cuir mé in eol nuair bpostálann @{name}", "account.domain_blocked": "Ainm fearainn bactha", "account.edit_profile": "Cuir an phróifíl in eagar", "account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}", "account.endorse": "Cuir ar an phróifíl mar ghné", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Postáil is déanaí ar {date}", + "account.featured_tags.last_status_never": "Níl postáil ar bith ann", + "account.featured_tags.title": "Haischlib {name}", "account.follow": "Lean", "account.followers": "Leantóirí", "account.followers.empty": "Ní leanann éinne an t-úsáideoir seo fós.", @@ -40,7 +40,7 @@ "account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.", "account.follows_you": "Do do leanúint", "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Chuaigh i", "account.languages": "Change subscribed languages", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", @@ -68,40 +68,40 @@ "account_note.placeholder": "Cliceáil chun nóta a chuir leis", "admin.dashboard.daily_retention": "Ráta coinneála an úsáideora de réir an lae tar éis clárú", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", - "alert.rate_limited.title": "Rate limited", - "alert.unexpected.message": "An unexpected error occurred.", + "admin.dashboard.retention.average": "Meán", + "admin.dashboard.retention.cohort": "Mí cláraraithe", + "admin.dashboard.retention.cohort_size": "Úsáideoirí nua", + "alert.rate_limited.message": "Atriail aris tar éis {retry_time, time, medium}.", + "alert.rate_limited.title": "Rátatheoranta", + "alert.unexpected.message": "Tharla earráid gan choinne.", "alert.unexpected.title": "Hiúps!", "announcement.announcement": "Fógra", "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", - "autosuggest_hashtag.per_week": "{count} per week", + "audio.hide": "Cuir fuaim i bhfolach", + "autosuggest_hashtag.per_week": "{count} sa seachtain", "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Ná habair!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Earráid líonra", "bundle_column_error.retry": "Bain triail as arís", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Téigh abhaile", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Dún", - "bundle_modal_error.message": "Something went wrong while loading this component.", + "bundle_modal_error.message": "Chuaigh rud éigin mícheart nuair a bhí an chomhpháirt seo ag lódáil.", "bundle_modal_error.retry": "Bain triail as arís", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations.other_server_instructions": "Mar rud díláraithe Mastodon, is féidir leat cuntas a chruthú ar seirbheálaí eile ach fós idirghníomhaigh leis an ceann seo.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "Faigh freastalaí eile", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations_modal.title": "Cláraigh le Mastodon", + "column.about": "Maidir le", "column.blocks": "Cuntais choiscthe", "column.bookmarks": "Leabharmharcanna", "column.community": "Amlíne áitiúil", - "column.direct": "Direct messages", + "column.direct": "Teachtaireachtaí dhíreacha", "column.directory": "Brabhsáil próifílí", "column.domain_blocks": "Blocked domains", "column.favourites": "Roghanna", @@ -110,34 +110,34 @@ "column.lists": "Liostaí", "column.mutes": "Úsáideoirí balbhaithe", "column.notifications": "Fógraí", - "column.pins": "Pinned post", - "column.public": "Federated timeline", + "column.pins": "Postálacha pionnáilte", + "column.public": "Amlíne cónaidhmithe", "column_back_button.label": "Siar", - "column_header.hide_settings": "Hide settings", + "column_header.hide_settings": "Folaigh socruithe", "column_header.moveLeft_settings": "Move column to the left", "column_header.moveRight_settings": "Move column to the right", "column_header.pin": "Greamaigh", - "column_header.show_settings": "Show settings", + "column_header.show_settings": "Taispeáin socruithe", "column_header.unpin": "Díghreamaigh", "column_subheading.settings": "Socruithe", "community.column_settings.local_only": "Áitiúil amháin", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", - "compose_form.direct_message_warning_learn_more": "Learn more", + "compose.language.change": "Athraigh teanga", + "compose.language.search": "Cuardaigh teangacha...", + "compose_form.direct_message_warning_learn_more": "Tuilleadh eolais", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", - "compose_form.lock_disclaimer.lock": "locked", + "compose_form.lock_disclaimer.lock": "faoi ghlas", "compose_form.placeholder": "Cad atá ag tarlú?", - "compose_form.poll.add_option": "Add a choice", + "compose_form.poll.add_option": "Cuir rogha isteach", "compose_form.poll.duration": "Poll duration", - "compose_form.poll.option_placeholder": "Choice {number}", - "compose_form.poll.remove_option": "Remove this choice", - "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", - "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", - "compose_form.publish": "Publish", + "compose_form.poll.option_placeholder": "Rogha {number}", + "compose_form.poll.remove_option": "Bain an rogha seo", + "compose_form.poll.switch_to_multiple": "Athraigh suirbhé chun cead a thabhairt do ilrogha", + "compose_form.poll.switch_to_single": "Athraigh suirbhé chun cead a thabhairt do rogha amháin", + "compose_form.publish": "Foilsigh", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Save changes", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", @@ -147,40 +147,40 @@ "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "Write your warning here", "confirmation_modal.cancel": "Cealaigh", - "confirmations.block.block_and_report": "Block & Report", - "confirmations.block.confirm": "Block", - "confirmations.block.message": "Are you sure you want to block {name}?", + "confirmations.block.block_and_report": "Bac ⁊ Tuairiscigh", + "confirmations.block.confirm": "Bac", + "confirmations.block.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhac?", "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Scrios", "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?", "confirmations.delete_list.confirm": "Scrios", - "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", + "confirmations.delete_list.message": "An bhfuil tú cinnte gur mhaith leat an liosta seo a scriosadh go buan?", "confirmations.discard_edit_media.confirm": "Faigh réidh de", "confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "An bhfuil tú iontach cinnte gur mhaith leat bac an t-ainm fearainn {domain} in iomlán? I bhformhór na gcásanna, is leor agus is fearr cúpla baic a cur i bhfeidhm nó cúpla úsáideoirí a balbhú. Ní fheicfidh tú ábhair ón t-ainm fearainn sin in amlíne ar bith, nó i d'fhógraí. Scaoilfear do leantóirí ón ainm fearainn sin.", "confirmations.logout.confirm": "Logáil amach", - "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.logout.message": "An bhfuil tú cinnte gur mhaith leat logáil amach?", "confirmations.mute.confirm": "Balbhaigh", "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", "confirmations.mute.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhalbhú?", "confirmations.redraft.confirm": "Delete & redraft", "confirmations.redraft.message": "An bhfuil tú cinnte gur mhaith leat an phostáil sin a scriosadh agus athdhréachtú? Beidh roghanna agus treisithe caillte, agus beidh freagraí ar an bpostáil bhunúsach ina ndílleachtaí.", - "confirmations.reply.confirm": "Reply", + "confirmations.reply.confirm": "Freagair", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Ná lean", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", + "conversation.mark_as_read": "Marcáil mar léite", "conversation.open": "View conversation", "conversation.with": "With {names}", "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copy": "Cóipeáil", "directory.federated": "From known fediverse", "directory.local": "Ó {domain} amháin", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", + "directory.new_arrivals": "Daoine atá tar éis teacht", + "directory.recently_active": "Daoine gníomhacha le déanaí", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -190,21 +190,21 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", "emoji_button.activity": "Gníomhaíocht", - "emoji_button.clear": "Clear", - "emoji_button.custom": "Custom", - "emoji_button.flags": "Flags", + "emoji_button.clear": "Glan", + "emoji_button.custom": "Saincheaptha", + "emoji_button.flags": "Bratacha", "emoji_button.food": "Bia ⁊ Ól", - "emoji_button.label": "Insert emoji", + "emoji_button.label": "Cuir emoji isteach", "emoji_button.nature": "Nádur", "emoji_button.not_found": "No matching emojis found", "emoji_button.objects": "Objects", "emoji_button.people": "Daoine", "emoji_button.recent": "Frequently used", "emoji_button.search": "Cuardaigh...", - "emoji_button.search_results": "Search results", - "emoji_button.symbols": "Symbols", + "emoji_button.search_results": "Torthaí cuardaigh", + "emoji_button.symbols": "Comharthaí", "emoji_button.travel": "Taisteal ⁊ Áiteanna", - "empty_column.account_suspended": "Account suspended", + "empty_column.account_suspended": "Cuntas ar fionraí", "empty_column.account_timeline": "Níl postálacha ar bith anseo!", "empty_column.account_unavailable": "Níl an phróifíl ar fáil", "empty_column.blocks": "You haven't blocked any users yet.", @@ -231,8 +231,8 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", + "explore.search_results": "Torthaí cuardaigh", + "explore.suggested_follows": "Duitse", "explore.title": "Féach thart", "explore.trending_links": "Nuacht", "explore.trending_statuses": "Postálacha", @@ -243,12 +243,12 @@ "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.settings_link": "leathan socruithe", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", + "filter_modal.select_filter.prompt_new": "Catagóir nua: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", @@ -259,18 +259,18 @@ "follow_request.authorize": "Ceadaigh", "follow_request.reject": "Diúltaigh", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", - "footer.about": "About", + "footer.about": "Maidir le", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", + "footer.get_app": "Faigh an aip", "footer.invite": "Invite people", "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.privacy_policy": "Polasaí príobháideachais", "footer.source_code": "View source code", "generic.saved": "Saved", "getting_started.heading": "Getting started", - "hashtag.column_header.tag_mode.all": "and {additional}", - "hashtag.column_header.tag_mode.any": "or {additional}", - "hashtag.column_header.tag_mode.none": "without {additional}", + "hashtag.column_header.tag_mode.all": "agus {additional}", + "hashtag.column_header.tag_mode.any": "nó {additional}", + "hashtag.column_header.tag_mode.none": "gan {additional}", "hashtag.column_settings.select.no_options_message": "No suggestions found", "hashtag.column_settings.select.placeholder": "Enter hashtags…", "hashtag.column_settings.tag_mode.all": "All of these", @@ -279,7 +279,7 @@ "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "hashtag.follow": "Follow hashtag", "hashtag.unfollow": "Unfollow hashtag", - "home.column_settings.basic": "Basic", + "home.column_settings.basic": "Bunúsach", "home.column_settings.show_reblogs": "Taispeáin treisithe", "home.column_settings.show_replies": "Show replies", "home.hide_announcements": "Hide announcements", @@ -288,8 +288,8 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "Ar freastalaí eile", + "interaction_modal.on_this_server": "Ar an freastalaí seo", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", @@ -304,7 +304,7 @@ "keyboard_shortcuts.boost": "Treisigh postáil", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.description": "Cuntas", "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "Oscail postáil", @@ -333,57 +333,57 @@ "keyboard_shortcuts.toot": "Cuir tús le postáil nua", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", - "lightbox.close": "Close", + "lightbox.close": "Dún", "lightbox.compress": "Compress image view box", "lightbox.expand": "Expand image view box", - "lightbox.next": "Next", - "lightbox.previous": "Previous", + "lightbox.next": "An céad eile", + "lightbox.previous": "Roimhe seo", "limited_account_hint.action": "Taispeáin an phróifíl ar aon nós", - "limited_account_hint.title": "Tá an phróifíl seo curtha i bhfolach ag na modhnóra do fhreastalaí.", - "lists.account.add": "Add to list", - "lists.account.remove": "Remove from list", - "lists.delete": "Delete list", + "limited_account_hint.title": "Tá an phróifíl seo curtha i bhfolach ag na modhnóra {domain}.", + "lists.account.add": "Cuir leis an liosta", + "lists.account.remove": "Scrios as an liosta", + "lists.delete": "Scrios liosta", "lists.edit": "Cuir an liosta in eagar", "lists.edit.submit": "Athraigh teideal", - "lists.new.create": "Add list", + "lists.new.create": "Cruthaigh liosta", "lists.new.title_placeholder": "New list title", "lists.replies_policy.followed": "Any followed user", "lists.replies_policy.list": "Members of the list", - "lists.replies_policy.none": "No one", + "lists.replies_policy.none": "Duine ar bith", "lists.replies_policy.title": "Show replies to:", "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", + "lists.subheading": "Do liostaí", "load_pending": "{count, plural, one {# new item} other {# new items}}", - "loading_indicator.label": "Loading...", + "loading_indicator.label": "Ag lódáil...", "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", - "missing_indicator.label": "Not found", + "missing_indicator.label": "Níor aimsíodh é", "missing_indicator.sublabel": "This resource could not be found", "mute_modal.duration": "Tréimhse", "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?", "mute_modal.indefinite": "Gan téarma", - "navigation_bar.about": "About", + "navigation_bar.about": "Maidir le", "navigation_bar.blocks": "Blocked users", - "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.bookmarks": "Leabharmharcanna", "navigation_bar.community_timeline": "Amlíne áitiúil", "navigation_bar.compose": "Cum postáil nua", - "navigation_bar.direct": "Direct messages", - "navigation_bar.discover": "Discover", + "navigation_bar.direct": "Teachtaireachtaí dhíreacha", + "navigation_bar.discover": "Faigh amach", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.edit_profile": "Cuir an phróifíl in eagar", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "Féach thart", "navigation_bar.favourites": "Roghanna", "navigation_bar.filters": "Focail bhalbhaithe", - "navigation_bar.follow_requests": "Follow requests", + "navigation_bar.follow_requests": "Iarratais leanúnaí", "navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint", "navigation_bar.lists": "Liostaí", "navigation_bar.logout": "Logáil Amach", "navigation_bar.mutes": "Úsáideoirí balbhaithe", "navigation_bar.personal": "Pearsanta", - "navigation_bar.pins": "Pinned posts", - "navigation_bar.preferences": "Preferences", - "navigation_bar.public_timeline": "Federated timeline", - "navigation_bar.search": "Search", - "navigation_bar.security": "Security", + "navigation_bar.pins": "Postálacha pionnáilte", + "navigation_bar.preferences": "Sainroghanna pearsanta", + "navigation_bar.public_timeline": "Amlíne cónaidhmithe", + "navigation_bar.search": "Cuardaigh", + "navigation_bar.security": "Slándáil", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", @@ -398,7 +398,7 @@ "notification.update": "Chuir {name} postáil in eagar", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Tuairiscí nua:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Roghanna:", @@ -417,10 +417,10 @@ "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.column_settings.update": "Eagair:", - "notifications.filter.all": "All", + "notifications.filter.all": "Uile", "notifications.filter.boosts": "Treisithe", "notifications.filter.favourites": "Roghanna", - "notifications.filter.follows": "Follows", + "notifications.filter.follows": "Ag leanúint", "notifications.filter.mentions": "Mentions", "notifications.filter.polls": "Poll results", "notifications.filter.statuses": "Updates from people you follow", @@ -433,12 +433,12 @@ "notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.title": "Never miss a thing", - "picture_in_picture.restore": "Put it back", - "poll.closed": "Closed", - "poll.refresh": "Refresh", + "picture_in_picture.restore": "Cuir é ar ais", + "poll.closed": "Dúnta", + "poll.refresh": "Athnuaigh", "poll.total_people": "{count, plural, one {# person} other {# people}}", "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", - "poll.vote": "Vote", + "poll.vote": "Vótáil", "poll.voted": "You voted for this answer", "poll.votes": "{votes, plural, one {# vote} other {# votes}}", "poll_button.add_poll": "Add a poll", @@ -451,30 +451,30 @@ "privacy.public.long": "Visible for all", "privacy.public.short": "Poiblí", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", - "privacy.unlisted.short": "Unlisted", + "privacy.unlisted.short": "Neamhliostaithe", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", - "refresh": "Refresh", + "privacy_policy.title": "Polasaí príobháideachais", + "refresh": "Athnuaigh", "regeneration_indicator.label": "Ag lódáil…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", - "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}h", - "relative_time.just_now": "now", - "relative_time.minutes": "{number}m", + "relative_time.days": "{number}l", + "relative_time.full.days": "{number, plural, one {# lá} other {# lá}} ó shin", + "relative_time.full.hours": "{number, plural, one {# uair} other {# uair}} ó shin", + "relative_time.full.just_now": "díreach anois", + "relative_time.full.minutes": "{number, plural, one {# nóiméad} other {# nóiméad}} ó shin", + "relative_time.full.seconds": "{number, plural, one {# soicind} other {# soicind}} ó shin", + "relative_time.hours": "{number}u", + "relative_time.just_now": "anois", + "relative_time.minutes": "{number}n", "relative_time.seconds": "{number}s", "relative_time.today": "inniu", - "reply_indicator.cancel": "Cancel", - "report.block": "Block", + "reply_indicator.cancel": "Cealaigh", + "report.block": "Bac", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.categories.other": "Eile", "report.categories.spam": "Turscar", "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", + "report.category.subtitle": "Roghnaigh an toradh is fearr", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "próifíl", "report.category.title_status": "postáil", @@ -484,13 +484,13 @@ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.mute": "Balbhaigh", "report.mute_explanation": "Ní fheicfidh tú a postálacha. Is féidir an té seo tú a leanúint agus do phostálacha a fheiceáil, agus ní fhios go bhfuil iad balbhaithe.", - "report.next": "Next", - "report.placeholder": "Type or paste additional comments", + "report.next": "An céad eile", + "report.placeholder": "Ráitis bhreise", "report.reasons.dislike": "Ní maith liom é", "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", + "report.reasons.other": "Is rud eile é", "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.spam": "Is turscar é", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "It violates server rules", "report.reasons.violation_description": "You are aware that it breaks specific rules", @@ -507,10 +507,10 @@ "report.unfollow": "Unfollow @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", + "report_notification.categories.other": "Eile", + "report_notification.categories.spam": "Turscar", "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.open": "Oscail tuairisc", "search.placeholder": "Cuardaigh", "search.search_or_paste": "Search or paste URL", "search_popout.search_format": "Advanced search format", @@ -518,9 +518,9 @@ "search_popout.tips.hashtag": "haischlib", "search_popout.tips.status": "postáil", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "user", + "search_popout.tips.user": "úsáideoir", "search_results.accounts": "Daoine", - "search_results.all": "All", + "search_results.all": "Uile", "search_results.hashtags": "Haischlibeanna", "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Postálacha", @@ -531,41 +531,41 @@ "server_banner.active_users": "active users", "server_banner.administered_by": "Administered by:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", + "server_banner.learn_more": "Tuilleadh eolais", "server_banner.server_stats": "Server stats:", "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "sign_in_banner.sign_in": "Sinigh isteach", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", - "status.block": "Block @{name}", - "status.bookmark": "Bookmark", + "status.block": "Bac @{name}", + "status.bookmark": "Leabharmharcanna", "status.cancel_reblog_private": "Díthreisigh", "status.cannot_reblog": "Ní féidir an phostáil seo a threisiú", "status.copy": "Copy link to status", "status.delete": "Scrios", "status.detailed_status": "Detailed conversation view", - "status.direct": "Direct message @{name}", + "status.direct": "Seol teachtaireacht dhíreach chuig @{name}", "status.edit": "Cuir in eagar", "status.edited": "Curtha in eagar in {date}", "status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}", - "status.embed": "Embed", + "status.embed": "Leabaigh", "status.favourite": "Rogha", "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", "status.history.created": "{name} created {date}", "status.history.edited": "Curtha in eagar ag {name} in {date}", - "status.load_more": "Load more", + "status.load_more": "Lódáil a thuilleadh", "status.media_hidden": "Media hidden", - "status.mention": "Mention @{name}", + "status.mention": "Luaigh @{name}", "status.more": "Tuilleadh", "status.mute": "Balbhaigh @{name}", "status.mute_conversation": "Balbhaigh comhrá", "status.open": "Expand this status", "status.pin": "Pionnáil ar do phróifíl", "status.pinned": "Pinned post", - "status.read_more": "Read more", + "status.read_more": "Léan a thuilleadh", "status.reblog": "Treisigh", "status.reblog_private": "Treisigh le léargas bunúsach", "status.reblogged_by": "Treisithe ag {name}", @@ -573,20 +573,20 @@ "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", "status.replied_to": "Replied to {name}", - "status.reply": "Reply", + "status.reply": "Freagair", "status.replyAll": "Reply to thread", - "status.report": "Report @{name}", + "status.report": "Tuairiscigh @{name}", "status.sensitive_warning": "Sensitive content", - "status.share": "Share", + "status.share": "Comhroinn", "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", "status.show_less_all": "Show less for all", "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", - "status.uncached_media_warning": "Not available", + "status.translate": "Aistrigh", + "status.translated_from_with": "D'Aistrigh ón {lang} ag úsáid {provider}", + "status.uncached_media_warning": "Ní ar fáil", "status.unmute_conversation": "Díbhalbhaigh comhrá", "status.unpin": "Díphionnáil de do phróifíl", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", @@ -597,7 +597,7 @@ "tabs_bar.federated_timeline": "Federated", "tabs_bar.home": "Baile", "tabs_bar.local_timeline": "Áitiúil", - "tabs_bar.notifications": "Notifications", + "tabs_bar.notifications": "Fógraí", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", @@ -606,9 +606,9 @@ "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", "timeline_hint.resources.followers": "Leantóirí", "timeline_hint.resources.follows": "Follows", - "timeline_hint.resources.statuses": "Older posts", + "timeline_hint.resources.statuses": "Postáilí níos sine", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", - "trends.trending_now": "Trending now", + "trends.trending_now": "Ag treochtáil anois", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -622,26 +622,26 @@ "upload_form.description_missing": "No description added", "upload_form.edit": "Cuir in eagar", "upload_form.thumbnail": "Change thumbnail", - "upload_form.undo": "Delete", + "upload_form.undo": "Scrios", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", - "upload_modal.analyzing_picture": "Analyzing picture…", - "upload_modal.apply": "Apply", + "upload_modal.analyzing_picture": "Ag anailísiú íomhá…", + "upload_modal.apply": "Cuir i bhFeidhm", "upload_modal.applying": "Applying…", - "upload_modal.choose_image": "Choose image", - "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", + "upload_modal.choose_image": "Roghnaigh íomhá", + "upload_modal.description_placeholder": "Chuaigh bé mhórsách le dlúthspád fíorfhinn trí hata mo dhea-phorcáin bhig", "upload_modal.detect_text": "Detect text from picture", "upload_modal.edit_media": "Cuir gné in eagar", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading…", - "upload_progress.processing": "Processing…", - "video.close": "Close video", - "video.download": "Download file", + "upload_progress.label": "Ag uaslódáil...", + "upload_progress.processing": "Ag próiseáil…", + "video.close": "Dún físeán", + "video.download": "Íoslódáil comhad", "video.exit_fullscreen": "Exit full screen", - "video.expand": "Expand video", + "video.expand": "Leath físeán", "video.fullscreen": "Full screen", - "video.hide": "Hide video", + "video.hide": "Cuir físeán i bhfolach", "video.mute": "Ciúnaigh fuaim", "video.pause": "Cuir ar sos", "video.play": "Cuir ar siúl", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index cc0e47630f..078d7701c7 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -339,7 +339,7 @@ "lightbox.next": "Air adhart", "lightbox.previous": "Air ais", "limited_account_hint.action": "Seall a’ phròifil co-dhiù", - "limited_account_hint.title": "Chaidh a’ phròifil seo fhalach le maoir an fhrithealaiche agad.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Cuir ris an liosta", "lists.account.remove": "Thoir air falbh on liosta", "lists.delete": "Sguab às an liosta", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 009cb2dad3..1f9d462f73 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon é software libre, de código aberto, e unha marca comercial de Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Acerca de", + "footer.directory": "Directorio de perfís", + "footer.get_app": "Obtén a app", + "footer.invite": "Convidar persoas", + "footer.keyboard_shortcuts": "Atallos do teclado", + "footer.privacy_policy": "Política de privacidade", + "footer.source_code": "Ver código fonte", "generic.saved": "Gardado", "getting_started.heading": "Primeiros pasos", "hashtag.column_header.tag_mode.all": "e {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Seguinte", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostrar perfil igualmente", - "limited_account_hint.title": "Este perfil foi agochado pola moderación do teu servidor.", + "limited_account_hint.title": "Este perfil foi agochado pola moderación de {domain}.", "lists.account.add": "Engadir á listaxe", "lists.account.remove": "Eliminar da listaxe", "lists.delete": "Eliminar listaxe", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Faltou ás regras", "report_notification.open": "Abrir a denuncia", "search.placeholder": "Procurar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Busca ou insire URL", "search_popout.search_format": "Formato de procura avanzada", "search_popout.tips.full_text": "Texto simple devolve toots que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.", "search_popout.tips.hashtag": "cancelo", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Estase a subir...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Procesando…", "video.close": "Pechar vídeo", "video.download": "Baixar ficheiro", "video.exit_fullscreen": "Saír da pantalla completa", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index f886519e85..c52d763dde 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -339,7 +339,7 @@ "lightbox.next": "הבא", "lightbox.previous": "הקודם", "limited_account_hint.action": "הצג חשבון בכל זאת", - "limited_account_hint.title": "פרופיל זה הוסתר ע\"י מנהלי השרת שלך.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "הוסף לרשימה", "lists.account.remove": "הסר מרשימה", "lists.delete": "מחיקת רשימה", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index a3efc91c62..3698009cc7 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -339,7 +339,7 @@ "lightbox.next": "अगला", "lightbox.previous": "पिछला", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "सूची से निकालें", "lists.delete": "सूची हटाएँ", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index c413ef2b6b..cba8fa3d93 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -339,7 +339,7 @@ "lightbox.next": "Sljedeće", "lightbox.previous": "Prethodno", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Dodaj na listu", "lists.account.remove": "Ukloni s liste", "lists.delete": "Izbriši listu", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index f5682122a6..bced7fc73a 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderált kiszolgálók", "about.contact": "Kapcsolat:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "A Mastodon ingyenes, nyílt forráskódú szoftver, a Mastodon gGmbH védejegye.", "about.domain_blocks.comment": "Indoklás", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "A Mastodon általában mindenféle tartalomcserét és interakciót lehetővé tesz bármelyik másik kiszolgálóval a födiverzumban. Ezek azok a kivételek, amelyek a mi kiszolgálónkon érvényben vannak.", @@ -92,11 +92,11 @@ "bundle_modal_error.close": "Bezárás", "bundle_modal_error.message": "Hiba történt a komponens betöltésekor.", "bundle_modal_error.retry": "Próbáld újra", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Mivel a Mastdon decentralizált, létrehozhatsz egy fiókot egy másik kiszolgálón és mégis kapcsolódhatsz ehhez.", + "closed_registrations_modal.description": "Fiók létrehozása a {domain} kiszolgálón jelenleg nem lehetséges, de jó, ha tudod, hogy nem szükséges fiókkal rendelkezni pont a {domain} kiszolgálón, hogy használhasd a Mastodont.", + "closed_registrations_modal.find_another_server": "Másik kiszolgáló keresése", + "closed_registrations_modal.preamble": "A Mastodon decentralizált, így teljesen mindegy, hol hozod létre a fiókodat, követhetsz és kapcsolódhatsz bárkivel ezen a kiszolgálón is. Saját magad is üzemeltethetsz kiszolgálót!", + "closed_registrations_modal.title": "Regisztráció a Mastodonra", "column.about": "Névjegy", "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", @@ -259,13 +259,13 @@ "follow_request.authorize": "Engedélyezés", "follow_request.reject": "Elutasítás", "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Névjegy", + "footer.directory": "Profilok", + "footer.get_app": "Töltsd le az appot", + "footer.invite": "Mások meghívása", + "footer.keyboard_shortcuts": "Billentyűparancsok", + "footer.privacy_policy": "Adatvédelmi szabályzat", + "footer.source_code": "Forráskód megtekintése", "generic.saved": "Elmentve", "getting_started.heading": "Első lépések", "hashtag.column_header.tag_mode.all": "és {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Következő", "lightbox.previous": "Előző", "limited_account_hint.action": "Mindenképpen mutassa a profilt", - "limited_account_hint.title": "Ezt a profilt a kiszolgálód moderátorai elrejtették.", + "limited_account_hint.title": "Ezt a profilt a(z) {domain} moderátorai elrejtették.", "lists.account.add": "Hozzáadás a listához", "lists.account.remove": "Eltávolítás a listából", "lists.delete": "Lista törlése", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Kitűzött bejegyzések", "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", - "navigation_bar.search": "Search", + "navigation_bar.search": "Keresés", "navigation_bar.security": "Biztonság", "not_signed_in_indicator.not_signed_in": "Az erőforrás eléréséhez be kell jelentkezned.", "notification.admin.report": "{name} jelentette: {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Szabálysértés", "report_notification.open": "Bejelentés megnyitása", "search.placeholder": "Keresés", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Keresés vagy URL beillesztése", "search_popout.search_format": "Speciális keresés", "search_popout.tips.full_text": "Egyszerű szöveg, mely általad írt, kedvencnek jelölt vagy megtolt bejegyzéseket, rólad szóló megemlítéseket, felhasználói neveket, megjelenített neveket, hashtageket ad majd vissza.", "search_popout.tips.hashtag": "hashtag", @@ -572,7 +572,7 @@ "status.reblogs.empty": "Senki sem tolta még meg ezt a bejegyzést. Ha valaki megteszi, itt fog megjelenni.", "status.redraft": "Törlés és újraírás", "status.remove_bookmark": "Könyvjelző eltávolítása", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Megválaszolva {name} számára", "status.reply": "Válasz", "status.replyAll": "Válasz a beszélgetésre", "status.report": "@{name} bejelentése", @@ -585,7 +585,7 @@ "status.show_more_all": "Többet mindenhol", "status.show_original": "Eredeti mutatása", "status.translate": "Fordítás", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "{lang} nyelvről fordítva {provider} szolgáltatással", "status.uncached_media_warning": "Nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", "status.unpin": "Kitűzés eltávolítása a profilodról", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR előkészítése…", "upload_modal.preview_label": "Előnézet ({ratio})", "upload_progress.label": "Feltöltés...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Feldolgozás…", "video.close": "Videó bezárása", "video.download": "Fájl letöltése", "video.exit_fullscreen": "Kilépés teljes képernyőből", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 798153c275..ff246d03f5 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -339,7 +339,7 @@ "lightbox.next": "Յաջորդ", "lightbox.previous": "Նախորդ", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Աւելացնել ցանկին", "lists.account.remove": "Հանել ցանկից", "lists.delete": "Ջնջել ցանկը", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index b75a1a3325..80642586ce 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -1,7 +1,7 @@ { "about.blocks": "Server yang dimoderasi", "about.contact": "Hubungi:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon addalah perangkat lunak bebas dan sumber terbuka, dan adalah merek dagang dari Mastodon gGmbH.", "about.domain_blocks.comment": "Alasan", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon umumnya mengizinkan Anda untuk melihat konten dan berinteraksi dengan pengguna dari server lain di fediverse. Ini adalah pengecualian yang dibuat untuk beberapa server.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Izinkan", "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Tentang", + "footer.directory": "Direktori profil", + "footer.get_app": "Dapatkan aplikasi", + "footer.invite": "Undang orang", + "footer.keyboard_shortcuts": "Pintasan papan ketik", + "footer.privacy_policy": "Kebijakan privasi", + "footer.source_code": "Lihat kode sumber", "generic.saved": "Disimpan", "getting_started.heading": "Mulai", "hashtag.column_header.tag_mode.all": "dan {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Selanjutnya", "lightbox.previous": "Sebelumnya", "limited_account_hint.action": "Tetap tampilkan profil", - "limited_account_hint.title": "Profil ini telah disembunyikan oleh moderator server Anda.", + "limited_account_hint.title": "Profil ini telah disembunyikan oleh moderator {domain}.", "lists.account.add": "Tambah ke daftar", "lists.account.remove": "Hapus dari daftar", "lists.delete": "Hapus daftar", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Pelanggaran peraturan", "report_notification.open": "Buka laporan", "search.placeholder": "Pencarian", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Cari atau ketik URL", "search_popout.search_format": "Format pencarian mahir", "search_popout.tips.full_text": "Teks simpel memberikan kiriman yang Anda telah tulis, favorit, boost, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.", "search_popout.tips.hashtag": "tagar", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Menyiapkan OCR…", "upload_modal.preview_label": "Pratinjau ({ratio})", "upload_progress.label": "Mengunggah...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Memproses…", "video.close": "Tutup video", "video.download": "Unduh berkas", "video.exit_fullscreen": "Keluar dari layar penuh", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index c2cae13708..207d094b35 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -31,14 +31,14 @@ "account.featured_tags.last_status_at": "Last post on {date}", "account.featured_tags.last_status_never": "No posts", "account.featured_tags.title": "{name}'s featured hashtags", - "account.follow": "Follow", + "account.follow": "Soro", "account.followers": "Followers", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", - "account.follows_you": "Follows you", + "account.follows_you": "Na-eso gị", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -61,7 +61,7 @@ "account.unblock_domain": "Unblock domain {domain}", "account.unblock_short": "Unblock", "account.unendorse": "Don't feature on profile", - "account.unfollow": "Unfollow", + "account.unfollow": "Kwụsị iso", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account.unmute_short": "Unmute", @@ -70,14 +70,14 @@ "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "Ojiarụ ọhụrụ", "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.title": "Oops!", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "audio.hide": "Zoo ụda", "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.copy_stacktrace": "Copy error report", @@ -85,28 +85,28 @@ "bundle_column_error.error.title": "Oh, no!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", "bundle_column_error.network.title": "Network error", - "bundle_column_error.retry": "Try again", + "bundle_column_error.retry": "Nwaa ọzọ", "bundle_column_error.return": "Go back home", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", - "bundle_modal_error.retry": "Try again", + "bundle_modal_error.retry": "Nwaa ọzọ", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", - "column.blocks": "Blocked users", - "column.bookmarks": "Bookmarks", + "column.about": "Maka", + "column.blocks": "Ojiarụ egbochiri", + "column.bookmarks": "Ebenrụtụakā", "column.community": "Local timeline", "column.direct": "Direct messages", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", "column.favourites": "Favourites", "column.follow_requests": "Follow requests", - "column.home": "Home", + "column.home": "Be", "column.lists": "Lists", "column.mutes": "Muted users", "column.notifications": "Notifications", @@ -119,12 +119,12 @@ "column_header.pin": "Pin", "column_header.show_settings": "Show settings", "column_header.unpin": "Unpin", - "column_subheading.settings": "Settings", + "column_subheading.settings": "Mwube", "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Remote only", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Gbanwee asụsụ", + "compose.language.search": "Chọọ asụsụ...", "compose_form.direct_message_warning_learn_more": "Learn more", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", @@ -152,9 +152,9 @@ "confirmations.block.message": "Are you sure you want to block {name}?", "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", - "confirmations.delete.confirm": "Delete", + "confirmations.delete.confirm": "Hichapụ", "confirmations.delete.message": "Are you sure you want to delete this status?", - "confirmations.delete_list.confirm": "Delete", + "confirmations.delete_list.confirm": "Hichapụ", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.discard_edit_media.confirm": "Discard", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", @@ -167,11 +167,11 @@ "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", - "confirmations.reply.confirm": "Reply", + "confirmations.reply.confirm": "Zaa", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.delete": "Delete conversation", + "conversation.delete": "Hichapụ nkata", "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", "conversation.with": "With {names}", @@ -200,7 +200,7 @@ "emoji_button.objects": "Objects", "emoji_button.people": "People", "emoji_button.recent": "Frequently used", - "emoji_button.search": "Search...", + "emoji_button.search": "Chọọ...", "emoji_button.search_results": "Search results", "emoji_button.symbols": "Symbols", "emoji_button.travel": "Travel & Places", @@ -230,7 +230,7 @@ "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "errors.unexpected_crash.report_issue": "Kpesa nsogbu", "explore.search_results": "Search results", "explore.suggested_follows": "For you", "explore.title": "Explore", @@ -264,10 +264,10 @@ "footer.get_app": "Get the app", "footer.invite": "Invite people", "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.privacy_policy": "Iwu nzuzu", "footer.source_code": "View source code", "generic.saved": "Saved", - "getting_started.heading": "Getting started", + "getting_started.heading": "Mbido", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", "hashtag.column_header.tag_mode.none": "without {additional}", @@ -339,10 +339,10 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", - "lists.delete": "Delete list", + "lists.delete": "Hichapụ ndepụta", "lists.edit": "Edit list", "lists.edit.submit": "Change title", "lists.new.create": "Add list", @@ -352,18 +352,18 @@ "lists.replies_policy.none": "No one", "lists.replies_policy.title": "Show replies to:", "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", + "lists.subheading": "Ndepụta gị", "load_pending": "{count, plural, one {# new item} other {# new items}}", - "loading_indicator.label": "Loading...", + "loading_indicator.label": "Na-adọnye...", "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.about": "About", + "navigation_bar.about": "Maka", "navigation_bar.blocks": "Blocked users", - "navigation_bar.bookmarks": "Bookmarks", + "navigation_bar.bookmarks": "Ebenrụtụakā", "navigation_bar.community_timeline": "Local timeline", "navigation_bar.compose": "Compose new post", "navigation_bar.direct": "Direct messages", @@ -375,7 +375,7 @@ "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", - "navigation_bar.lists": "Lists", + "navigation_bar.lists": "Ndepụta", "navigation_bar.logout": "Logout", "navigation_bar.mutes": "Muted users", "navigation_bar.personal": "Personal", @@ -464,14 +464,14 @@ "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", - "relative_time.just_now": "now", + "relative_time.just_now": "kịta", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", - "relative_time.today": "today", + "relative_time.today": "taa", "reply_indicator.cancel": "Kagbuo", "report.block": "Block", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.categories.other": "Ọzọ", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", @@ -518,7 +518,7 @@ "search_popout.tips.hashtag": "hashtag", "search_popout.tips.status": "status", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "user", + "search_popout.tips.user": "ojiarụ", "search_results.accounts": "People", "search_results.all": "All", "search_results.hashtags": "Hashtags", @@ -528,7 +528,7 @@ "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", + "server_banner.active_users": "ojiarụ dị ìrè", "server_banner.administered_by": "Administered by:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", "server_banner.learn_more": "Learn more", @@ -539,11 +539,11 @@ "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Block @{name}", - "status.bookmark": "Bookmark", + "status.bookmark": "Kee ebenrụtụakā", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", "status.copy": "Copy link to status", - "status.delete": "Delete", + "status.delete": "Hichapụ", "status.detailed_status": "Detailed conversation view", "status.direct": "Direct message @{name}", "status.edit": "Edit", @@ -571,7 +571,7 @@ "status.reblogged_by": "{name} boosted", "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", - "status.remove_bookmark": "Remove bookmark", + "status.remove_bookmark": "Wepu ebenrụtụakā", "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", @@ -584,7 +584,7 @@ "status.show_more": "Show more", "status.show_more_all": "Show more for all", "status.show_original": "Show original", - "status.translate": "Translate", + "status.translate": "Tụgharịa", "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Not available", "status.unmute_conversation": "Unmute conversation", @@ -595,20 +595,20 @@ "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", - "tabs_bar.home": "Home", + "tabs_bar.home": "Be", "tabs_bar.local_timeline": "Local", - "tabs_bar.notifications": "Notifications", + "tabs_bar.notifications": "Nziọkwà", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", "time_remaining.moments": "Moments remaining", "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", - "timeline_hint.resources.followers": "Followers", + "timeline_hint.resources.followers": "Ndị na-eso", "timeline_hint.resources.follows": "Follows", "timeline_hint.resources.statuses": "Older posts", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", - "trends.trending_now": "Trending now", + "trends.trending_now": "Na-ewu ewu kịta", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -622,12 +622,12 @@ "upload_form.description_missing": "No description added", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", - "upload_form.undo": "Delete", + "upload_form.undo": "Hichapụ", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", "upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.apply": "Apply", "upload_modal.applying": "Applying…", - "upload_modal.choose_image": "Choose image", + "upload_modal.choose_image": "Họrọ onyonyo", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.detect_text": "Detect text from picture", "upload_modal.edit_media": "Edit media", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index a467cc3238..b13faa61e8 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -339,7 +339,7 @@ "lightbox.next": "Nexta", "lightbox.previous": "Antea", "limited_account_hint.action": "Jus montrez profilo", - "limited_account_hint.title": "Ca profilo celesas da jerero di vua servilo.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Insertez a listo", "lists.account.remove": "Efacez de listo", "lists.delete": "Efacez listo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 168d5ec81c..297fa141b2 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,7 +1,7 @@ { "about.blocks": "Netþjónar með efnisumsjón", "about.contact": "Hafa samband:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon er frjáls hugbúnaður með opinn grunnkóða og er skrásett vörumerki í eigu Mastodon gGmbH.", "about.domain_blocks.comment": "Ástæða", "about.domain_blocks.domain": "Lén", "about.domain_blocks.preamble": "Mastodon leyfir þér almennt að skoða og eiga við efni frá notendum frá hvaða vefþjóni sem er í vefþjónasambandinu. Þetta eru þær undantekningar sem hafa verið gerðar á þessum tiltekna vefþjóni.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Heimila", "follow_request.reject": "Hafna", "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Um hugbúnaðinn", + "footer.directory": "Notandasniðamappa", + "footer.get_app": "Ná í forritið", + "footer.invite": "Bjóða fólki", + "footer.keyboard_shortcuts": "Flýtileiðir á lyklaborði", + "footer.privacy_policy": "Persónuverndarstefna", + "footer.source_code": "Skoða frumkóða", "generic.saved": "Vistað", "getting_started.heading": "Komast í gang", "hashtag.column_header.tag_mode.all": "og {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Næsta", "lightbox.previous": "Fyrra", "limited_account_hint.action": "Birta notandasniðið samt", - "limited_account_hint.title": "Þetta notandasnið hefur verið falið af umsjónarmönnum netþjónsins þíns.", + "limited_account_hint.title": "Þetta notandasnið hefur verið falið af umsjónarmönnum {domain}.", "lists.account.add": "Bæta á lista", "lists.account.remove": "Fjarlægja af lista", "lists.delete": "Eyða lista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Brot á reglum", "report_notification.open": "Opin kæra", "search.placeholder": "Leita", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Leita eða líma slóð", "search_popout.search_format": "Snið ítarlegrar leitar", "search_popout.tips.full_text": "Einfaldur texti skilar færslum sem þú hefur skrifað, sett í eftirlæti, endurbirt eða verið minnst á þig í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.", "search_popout.tips.hashtag": "myllumerki", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Undirbý OCR-ljóslestur…", "upload_modal.preview_label": "Forskoðun ({ratio})", "upload_progress.label": "Er að senda inn...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Meðhöndla…", "video.close": "Loka myndskeiði", "video.download": "Sækja skrá", "video.exit_fullscreen": "Hætta í skjáfylli", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index afed6839dd..f59ac0ec29 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -1,7 +1,7 @@ { "about.blocks": "Server moderati", "about.contact": "Contatto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon è un software open source, gratuito e un marchio di Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon, generalmente, ti consente di visualizzare i contenuti e interagire con gli utenti da qualsiasi altro server nel fediverso. Queste sono le eccezioni che sono state fatte su questo particolare server.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizza", "follow_request.reject": "Rifiuta", "follow_requests.unlocked_explanation": "Benché il tuo account non sia privato, lo staff di {domain} ha pensato che potresti voler approvare manualmente le richieste di follow da questi account.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Info", + "footer.directory": "Directory dei profili", + "footer.get_app": "Scarica l'app", + "footer.invite": "Invita le persone", + "footer.keyboard_shortcuts": "Scorciatoie da tastiera", + "footer.privacy_policy": "Politica sulla privacy", + "footer.source_code": "Visualizza il codice sorgente", "generic.saved": "Salvato", "getting_started.heading": "Come iniziare", "hashtag.column_header.tag_mode.all": "e {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Successivo", "lightbox.previous": "Precedente", "limited_account_hint.action": "Mostra comunque il profilo", - "limited_account_hint.title": "Questo profilo è stato nascosto dai moderatori del tuo server.", + "limited_account_hint.title": "Questo profilo è stato nascosto dai moderatori di {domain}.", "lists.account.add": "Aggiungi alla lista", "lists.account.remove": "Togli dalla lista", "lists.delete": "Elimina lista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Violazione delle regole", "report_notification.open": "Apri segnalazione", "search.placeholder": "Cerca", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Cerca o incolla l'URL", "search_popout.search_format": "Formato di ricerca avanzato", "search_popout.tips.full_text": "Testo semplice per trovare gli status che hai scritto, segnato come apprezzati, condiviso o in cui sei stato citato, e inoltre i nomi utente, nomi visualizzati e hashtag che lo contengono.", "search_popout.tips.hashtag": "etichetta", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparazione OCR…", "upload_modal.preview_label": "Anteprima ({ratio})", "upload_progress.label": "Invio in corso...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "In elaborazione…", "video.close": "Chiudi video", "video.download": "Scarica file", "video.exit_fullscreen": "Esci da modalità a schermo intero", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 5849a1d384..e0e5b3dcd8 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -1,7 +1,7 @@ { "about.blocks": "制限中のサーバー", "about.contact": "連絡先", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon は自由なオープンソースソフトウェアで、Mastodon gGmbH の商標です。", "about.domain_blocks.comment": "制限理由", "about.domain_blocks.domain": "ドメイン", "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。", @@ -40,7 +40,7 @@ "account.follows.empty": "まだ誰もフォローしていません。", "account.follows_you": "フォローされています", "account.hide_reblogs": "@{name}さんからのブーストを非表示", - "account.joined_short": "参加済み", + "account.joined_short": "登録日", "account.languages": "購読言語の変更", "account.link_verified_on": "このリンクの所有権は{date}に確認されました", "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", @@ -82,7 +82,7 @@ "boost_modal.combo": "次からは{combo}を押せばスキップできます", "bundle_column_error.copy_stacktrace": "エラーレポートをコピー", "bundle_column_error.error.body": "要求されたページをレンダリングできませんでした。コードのバグ、またはブラウザの互換性の問題が原因である可能性があります。", - "bundle_column_error.error.title": "おっと!", + "bundle_column_error.error.title": "あらら……", "bundle_column_error.network.body": "このページを読み込もうとしたときにエラーが発生しました。インターネット接続またはこのサーバーの一時的な問題が発生した可能性があります。", "bundle_column_error.network.title": "ネットワークエラー", "bundle_column_error.retry": "再試行", @@ -237,14 +237,14 @@ "explore.trending_links": "ニュース", "explore.trending_statuses": "投稿", "explore.trending_tags": "ハッシュタグ", - "filter_modal.added.context_mismatch_explanation": "あなたがアクセスした投稿には、コンテキストはフィルターカテゴリが適用されてません。\nコンテキストへのフィルターを適用するには、フィルターを編集してください。", + "filter_modal.added.context_mismatch_explanation": "このフィルターカテゴリーは、あなたがアクセスした投稿のコンテキストには適用されません。\nこの投稿のコンテキストでもフィルターを適用するには、フィルターを編集する必要があります。", "filter_modal.added.context_mismatch_title": "コンテキストが一致しません!", - "filter_modal.added.expired_explanation": "このフィルターカテゴリは有効期限が切れています。適用するには有効期限を更新してください。", + "filter_modal.added.expired_explanation": "このフィルターカテゴリーは有効期限が切れています。適用するには有効期限を更新してください。", "filter_modal.added.expired_title": "フィルターの有効期限が切れています!", "filter_modal.added.review_and_configure": "このフィルターカテゴリーを確認して設定するには、{settings_link}に移動します。", "filter_modal.added.review_and_configure_title": "フィルター設定", "filter_modal.added.settings_link": "設定", - "filter_modal.added.short_explanation": "この投稿は以下のフィルターカテゴリに追加されました: {title}。", + "filter_modal.added.short_explanation": "この投稿は以下のフィルターカテゴリーに追加されました: {title}。", "filter_modal.added.title": "フィルターを追加しました!", "filter_modal.select_filter.context_mismatch": "このコンテキストには当てはまりません", "filter_modal.select_filter.expired": "期限切れ", @@ -259,13 +259,13 @@ "follow_request.authorize": "許可", "follow_request.reject": "拒否", "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "概要", + "footer.directory": "ディレクトリ", + "footer.get_app": "アプリをダウンロードする", + "footer.invite": "新規ユーザーの招待", + "footer.keyboard_shortcuts": "キーボードショートカット", + "footer.privacy_policy": "プライバシーポリシー", + "footer.source_code": "ソースコードを表示", "generic.saved": "保存しました", "getting_started.heading": "スタート", "hashtag.column_header.tag_mode.all": "と{additional}", @@ -339,7 +339,7 @@ "lightbox.next": "次", "lightbox.previous": "前", "limited_account_hint.action": "構わず表示する", - "limited_account_hint.title": "このプロフィールはサーバーのモデレーターによって非表示になっています。", + "limited_account_hint.title": "このプロフィールは {domain} のモデレーターによって非表示にされています。", "lists.account.add": "リストに追加", "lists.account.remove": "リストから外す", "lists.delete": "リストを削除", @@ -361,7 +361,7 @@ "mute_modal.duration": "ミュートする期間", "mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?", "mute_modal.indefinite": "無期限", - "navigation_bar.about": "概要", + "navigation_bar.about": "About", "navigation_bar.blocks": "ブロックしたユーザー", "navigation_bar.bookmarks": "ブックマーク", "navigation_bar.community_timeline": "ローカルタイムライン", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "ルール違反", "report_notification.open": "通報を開く", "search.placeholder": "検索", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "検索または URL を入力", "search_popout.search_format": "高度な検索フォーマット", "search_popout.tips.full_text": "表示名やユーザー名、ハッシュタグのほか、あなたの投稿やお気に入り、ブーストした投稿、返信に一致する単純なテキスト。", "search_popout.tips.hashtag": "ハッシュタグ", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCRの準備中…", "upload_modal.preview_label": "プレビュー ({ratio})", "upload_progress.label": "アップロード中...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "処理中…", "video.close": "動画を閉じる", "video.download": "ダウンロード", "video.exit_fullscreen": "全画面を終了する", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 4e3b8eb352..d59e1d5d82 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -339,7 +339,7 @@ "lightbox.next": "შემდეგი", "lightbox.previous": "წინა", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "სიაში დამატება", "lists.account.remove": "სიიდან ამოშლა", "lists.delete": "სიის წაშლა", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 8815fd0925..ac68de3191 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -36,7 +36,7 @@ "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.", "account.followers_counter": "{count, plural, one {{count} n umeḍfar} other {{count} n imeḍfaren}}", "account.following": "Following", - "account.following_counter": "{count, plural, one {{counter} yeṭṭafaren} other {{counter} wayeḍ}}", + "account.following_counter": "{count, plural, one {{counter} yettwaḍfaren} other {{counter} yettwaḍfaren}}", "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.", "account.follows_you": "Yeṭṭafaṛ-ik", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", @@ -44,7 +44,7 @@ "account.languages": "Change subscribed languages", "account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}", "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": "Amidya", + "account.media": "Timidyatin", "account.mention": "Bder-d @{name}", "account.moved_to": "{name} ibeddel ɣer:", "account.mute": "Sgugem @{name}", @@ -339,7 +339,7 @@ "lightbox.next": "Γer zdat", "lightbox.previous": "Γer deffir", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Rnu ɣer tebdart", "lists.account.remove": "Kkes seg tebdart", "lists.delete": "Kkes tabdart", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 886b515f52..4d49e7dcfc 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -339,7 +339,7 @@ "lightbox.next": "Келесі", "lightbox.previous": "Алдыңғы", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Тізімге қосу", "lists.account.remove": "Тізімнен шығару", "lists.delete": "Тізімді өшіру", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index a92c640302..7525b2b77e 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index bac5bb6859..30c41fee08 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -1,7 +1,7 @@ { "about.blocks": "제한된 서버들", "about.contact": "연락처:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "마스토돈은 자유 오픈소스 소프트웨어이며, Mastodon gGmbH의 상표입니다", "about.domain_blocks.comment": "사유", "about.domain_blocks.domain": "도메인", "about.domain_blocks.preamble": "마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.", @@ -150,7 +150,7 @@ "confirmations.block.block_and_report": "차단하고 신고하기", "confirmations.block.confirm": "차단", "confirmations.block.message": "정말로 {name}를 차단하시겠습니까?", - "confirmations.cancel_follow_request.confirm": "요청 무시", + "confirmations.cancel_follow_request.confirm": "요청 삭제", "confirmations.cancel_follow_request.message": "정말 {name}님에 대한 팔로우 요청을 취소하시겠습니까?", "confirmations.delete.confirm": "삭제", "confirmations.delete.message": "정말로 이 게시물을 삭제하시겠습니까?", @@ -259,13 +259,13 @@ "follow_request.authorize": "허가", "follow_request.reject": "거부", "follow_requests.unlocked_explanation": "당신의 계정이 잠기지 않았다고 할 지라도, {domain}의 스탭은 당신이 이 계정들로부터의 팔로우 요청을 수동으로 확인하길 원한다고 생각했습니다.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "정보", + "footer.directory": "프로필 책자", + "footer.get_app": "앱 다운로드하기", + "footer.invite": "초대하기", + "footer.keyboard_shortcuts": "키보드 단축키", + "footer.privacy_policy": "개인정보 정책", + "footer.source_code": "소스코드 보기", "generic.saved": "저장됨", "getting_started.heading": "시작", "hashtag.column_header.tag_mode.all": "그리고 {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "다음", "lightbox.previous": "이전", "limited_account_hint.action": "그래도 프로필 보기", - "limited_account_hint.title": "이 프로필은 이 서버의 중재자에 의해 숨겨진 상태입니다.", + "limited_account_hint.title": "이 프로필은 {domain}의 중재자에 의해 숨겨진 상태입니다.", "lists.account.add": "리스트에 추가", "lists.account.remove": "리스트에서 제거", "lists.delete": "리스트 삭제", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "규칙 위반", "report_notification.open": "신고 열기", "search.placeholder": "검색", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "검색하거나 URL 붙여넣기", "search_popout.search_format": "고급 검색 방법", "search_popout.tips.full_text": "단순한 텍스트 검색은 당신이 작성했거나, 관심글로 지정했거나, 부스트했거나, 멘션을 받은 게시글, 그리고 사용자명, 표시되는 이름, 해시태그를 반환합니다.", "search_popout.tips.hashtag": "해시태그", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR 준비 중…", "upload_modal.preview_label": "미리보기 ({ratio})", "upload_progress.label": "업로드 중...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "처리 중...", "video.close": "동영상 닫기", "video.download": "파일 다운로드", "video.exit_fullscreen": "전체화면 나가기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 700e5a264c..34a2ef6ce3 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -1,7 +1,7 @@ { "about.blocks": "Rajekarên çavdêrkirî", "about.contact": "Têkilî:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon belaş e, nermalaveke çavkaniya vekirî ye û markeyeke Mastodon gGmbHê ye.", "about.domain_blocks.comment": "Sedem", "about.domain_blocks.domain": "Navper", "about.domain_blocks.preamble": "Mastodon bi gelemperî dihêle ku tu naverokê bibînî û bi bikarhênerên ji rajekareke din a li fendiverse re têkilî dayne. Ev awaretyên ku li ser vê rajekara taybetî hatine çêkirin ev in.", @@ -14,7 +14,7 @@ "about.powered_by": "Medyaya civakî ya nenavendî bi hêzdariya {mastodon}", "about.rules": "Rêbazên rajekar", "account.account_note_header": "Nîşe", - "account.add_or_remove_from_list": "Tevlî bike an rake ji rêzokê", + "account.add_or_remove_from_list": "Li lîsteyan zêde bike yan jî rake", "account.badges.bot": "Bot", "account.badges.group": "Kom", "account.block": "@{name} asteng bike", @@ -86,7 +86,7 @@ "bundle_column_error.network.body": "Di dema hewldana barkirina vê rûpelê de çewtiyek derket. Ev dibe ku ji ber pirsgirêkeke demkî ya girêdana înternetê te be an jî ev rajekar be.", "bundle_column_error.network.title": "Çewtiya torê", "bundle_column_error.retry": "Dîsa biceribîne", - "bundle_column_error.return": "Vegere rûpela sereke", + "bundle_column_error.return": "Vegere serûpelê", "bundle_column_error.routing.body": "Rûpela xwestî nehate dîtin. Tu bawerî ku girêdana di kodika lêgerînê de rast e?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bigire", @@ -106,8 +106,8 @@ "column.domain_blocks": "Navperên astengkirî", "column.favourites": "Bijarte", "column.follow_requests": "Daxwazên şopandinê", - "column.home": "Rûpela sereke", - "column.lists": "Rêzok", + "column.home": "Serûpel", + "column.lists": "Lîste", "column.mutes": "Bikarhênerên bêdengkirî", "column.notifications": "Agahdarî", "column.pins": "Şandiya derzîkirî", @@ -130,7 +130,7 @@ "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.", "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.", "compose_form.lock_disclaimer.lock": "girtî ye", - "compose_form.placeholder": "Çi di hişê te derbas dibe?", + "compose_form.placeholder": "Tu li çi difikirî?", "compose_form.poll.add_option": "Hilbijarekî tevlî bike", "compose_form.poll.duration": "Dema rapirsî yê", "compose_form.poll.option_placeholder": "{number} Hilbijêre", @@ -155,7 +155,7 @@ "confirmations.delete.confirm": "Jê bibe", "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?", "confirmations.delete_list.confirm": "Jê bibe", - "confirmations.delete_list.message": "Ma tu dixwazî bi awayekî herdemî vê rêzokê jê bibî?", + "confirmations.delete_list.message": "Tu ji dil dixwazî vê lîsteyê bi awayekî mayînde jê bibî?", "confirmations.discard_edit_media.confirm": "Biavêje", "confirmations.discard_edit_media.message": "Guhertinên neqedandî di danasîna an pêşdîtina medyayê de hene, wan bi her awayî bavêje?", "confirmations.domain_block.confirm": "Hemî navperê asteng bike", @@ -220,8 +220,8 @@ "empty_column.hashtag": "Di vê hashtagê de hêj tiştekî tune.", "empty_column.home": "Demnameya mala we vala ye! Ji bona tijîkirinê bêtir mirovan bişopînin. {suggestions}", "empty_column.home.suggestions": "Hinek pêşniyaran bibîne", - "empty_column.list": "Di vê rêzokê de hîn tiştek tune ye. Gava ku endamên vê rêzokê peyamên nû biweşînin, ew ê li vir xuya bibin.", - "empty_column.lists": "Hîn tu rêzokên te tune ne. Dema yekî çê bikî, ew ê li vir xuya bibe.", + "empty_column.list": "Di vê lîsteyê de hîn tiştek tune ye. Gava ku endamên vê lîsteyê peyamên nû biweşînin, ew ê li virê xuya bibin.", + "empty_column.lists": "Hîn tu lîsteyên te tune ne. Dema yekê çêkî, ew ê li virê xuya bibe.", "empty_column.mutes": "Te tu bikarhêner bêdeng nekiriye.", "empty_column.notifications": "Hêj hişyariyên te tunene. Dema ku mirovên din bi we re têkilî danîn, hûn ê wê li vir bibînin.", "empty_column.public": "Li vir tiştekî tuneye! Ji raya giştî re tiştekî binivîsîne, an ji bo tijîkirinê ji rajekerên din bikarhêneran bi destan bişopînin", @@ -259,13 +259,13 @@ "follow_request.authorize": "Mafê bide", "follow_request.reject": "Nepejirîne", "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Derbar", + "footer.directory": "Pelrêça profîlan", + "footer.get_app": "Bernamokê bistîne", + "footer.invite": "Mirovan vexwîne", + "footer.keyboard_shortcuts": "Kurteriyên klavyeyê", + "footer.privacy_policy": "Peymana nepeniyê", + "footer.source_code": "Koda çavkanî nîşan bide", "generic.saved": "Tomarkirî", "getting_started.heading": "Destpêkirin", "hashtag.column_header.tag_mode.all": "û {additional}", @@ -300,16 +300,16 @@ "intervals.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}}\n \n", "intervals.full.minutes": "{number, plural, one {# xulek} other {# xulek}}", "keyboard_shortcuts.back": "Vegere paşê", - "keyboard_shortcuts.blocked": "Rêzoka bikarhênerên astengkirî veke", + "keyboard_shortcuts.blocked": "Lîsteya bikarhênerên astengkirî veke", "keyboard_shortcuts.boost": "Şandiyê bilind bike", "keyboard_shortcuts.column": "Stûna balkişandinê", "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea", "keyboard_shortcuts.description": "Danasîn", "keyboard_shortcuts.direct": "ji bo vekirina stûnê peyamên rasterast", - "keyboard_shortcuts.down": "Di rêzokê de dakêşe jêr", + "keyboard_shortcuts.down": "Di lîsteyê de dakêşe jêr", "keyboard_shortcuts.enter": "Şandiyê veke", "keyboard_shortcuts.favourite": "Şandiya bijarte", - "keyboard_shortcuts.favourites": "Rêzokên bijarte veke", + "keyboard_shortcuts.favourites": "Lîsteyên bijarte veke", "keyboard_shortcuts.federated": "Demnameya giştî veke", "keyboard_shortcuts.heading": "Kurterêyên klavyeyê", "keyboard_shortcuts.home": "Demnameyê veke", @@ -317,14 +317,14 @@ "keyboard_shortcuts.legend": "Vê çîrokê nîşan bike", "keyboard_shortcuts.local": "Demnameya herêmî veke", "keyboard_shortcuts.mention": "Qala nivîskarî/ê bike", - "keyboard_shortcuts.muted": "Rêzoka bikarhênerên bêdeng kirî veke", + "keyboard_shortcuts.muted": "Lîsteya bikarhênerên bêdengkirî veke", "keyboard_shortcuts.my_profile": "Profîla xwe veke", "keyboard_shortcuts.notifications": "Stûnê agahdariyan veke", "keyboard_shortcuts.open_media": "Medya veke", "keyboard_shortcuts.pinned": "Şandiyên derzîkirî veke", "keyboard_shortcuts.profile": "Profîla nivîskaran veke", "keyboard_shortcuts.reply": "Bersivê bide şandiyê", - "keyboard_shortcuts.requests": "Rêzoka daxwazên şopandinê veke", + "keyboard_shortcuts.requests": "Lîsteya daxwazên şopandinê veke", "keyboard_shortcuts.search": "Bal bide şivika lêgerînê", "keyboard_shortcuts.spoilers": "Zeviya hişyariya naverokê nîşan bide/veşêre", "keyboard_shortcuts.start": "Stûna \"destpêkê\" veke", @@ -332,27 +332,27 @@ "keyboard_shortcuts.toggle_sensitivity": "Medyayê nîşan bide/veşêre", "keyboard_shortcuts.toot": "Dest bi şandiyeke nû bike", "keyboard_shortcuts.unfocus": "Bal nede cîhê nivîsê /lêgerînê", - "keyboard_shortcuts.up": "Di rêzokê de rake jor", + "keyboard_shortcuts.up": "Di lîsteyê de rake jor", "lightbox.close": "Bigire", "lightbox.compress": "Qutîya wêneya nîşan dike bitepisîne", "lightbox.expand": "Qutîya wêneya nîşan dike fireh bike", "lightbox.next": "Pêş", "lightbox.previous": "Paş", "limited_account_hint.action": "Bi heman awayî profîlê nîşan bide", - "limited_account_hint.title": "Ev profîl ji aliyê çavdêriya li ser rajekarê te hatiye veşartin.", - "lists.account.add": "Tevlî rêzokê bike", - "lists.account.remove": "Ji rêzokê rake", - "lists.delete": "Rêzokê jê bibe", - "lists.edit": "Rêzokê serrast bike", + "limited_account_hint.title": "Profîl ji aliyê rêveberên {domain}ê ve hatiye veşartin.", + "lists.account.add": "Li lîsteyê zêde bike", + "lists.account.remove": "Ji lîsteyê rake", + "lists.delete": "Lîsteyê jê bibe", + "lists.edit": "Lîsteyê serrast bike", "lists.edit.submit": "Sernavê biguherîne", - "lists.new.create": "Rêzokê tevlî bike", - "lists.new.title_placeholder": "Sernavê rêzoka nû", + "lists.new.create": "Li lîsteyê zêde bike", + "lists.new.title_placeholder": "Sernavê lîsteya nû", "lists.replies_policy.followed": "Bikarhênereke şopandî", - "lists.replies_policy.list": "Endamên rêzokê", + "lists.replies_policy.list": "Endamên lîsteyê", "lists.replies_policy.none": "Ne yek", "lists.replies_policy.title": "Bersivan nîşan bide:", "lists.search": "Di navbera kesên ku te dişopînin bigere", - "lists.subheading": "Rêzokên te", + "lists.subheading": "Lîsteyên te", "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}", "loading_indicator.label": "Tê barkirin...", "media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}", @@ -375,7 +375,7 @@ "navigation_bar.filters": "Peyvên bêdengkirî", "navigation_bar.follow_requests": "Daxwazên şopandinê", "navigation_bar.follows_and_followers": "Şopandin û şopîner", - "navigation_bar.lists": "Rêzok", + "navigation_bar.lists": "Lîste", "navigation_bar.logout": "Derkeve", "navigation_bar.mutes": "Bikarhênerên bêdengkirî", "navigation_bar.personal": "Kesanî", @@ -451,12 +451,12 @@ "privacy.public.long": "Ji bo hemûyan xuyabar e", "privacy.public.short": "Gelemperî", "privacy.unlisted.long": "Ji bo hemûyan xuyabar e, lê ji taybetmendiyên vekolînê veqetiya ye", - "privacy.unlisted.short": "Nerêzok", + "privacy.unlisted.short": "Nelîstekirî", "privacy_policy.last_updated": "Rojanekirina dawî {date}", "privacy_policy.title": "Politîka taybetiyê", "refresh": "Nû bike", "regeneration_indicator.label": "Tê barkirin…", - "regeneration_indicator.sublabel": "Naveroka rûpela sereke ya te tê amedekirin!", + "regeneration_indicator.sublabel": "Naveroka serûpela te tê amedekirin!", "relative_time.days": "{number}r", "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê", "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Binpêkirina rêzîkê", "report_notification.open": "Ragihandinê veke", "search.placeholder": "Bigere", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Lêgerîn yan jî URLê pê ve bike", "search_popout.search_format": "Dirûva lêgerîna pêşketî", "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.", "search_popout.tips.hashtag": "hashtag", @@ -595,7 +595,7 @@ "suggestions.dismiss": "Pêşniyarê paşguh bike", "suggestions.header": "Dibe ku bala te bikşîne…", "tabs_bar.federated_timeline": "Giştî", - "tabs_bar.home": "Rûpela sereke", + "tabs_bar.home": "Serûpel", "tabs_bar.local_timeline": "Herêmî", "tabs_bar.notifications": "Agahdarî", "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR dihê amadekirin…", "upload_modal.preview_label": "Pêşdîtin ({ratio})", "upload_progress.label": "Tê barkirin...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Kar tê kirin…", "video.close": "Vîdyoyê bigire", "video.download": "Pelê daxe", "video.exit_fullscreen": "Ji dîmendera tijî derkeve", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 2faed5acc3..87074f1a39 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -339,7 +339,7 @@ "lightbox.next": "Nessa", "lightbox.previous": "Kynsa", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Keworra dhe rol", "lists.account.remove": "Removya a rol", "lists.delete": "Dilea rol", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 926e074f94..fca8650908 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 12da2ea914..bc8672f0a2 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderētie serveri", "about.contact": "Kontakts:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon ir bezmaksas atvērtā pirmkoda programmatūra un Mastodon gGmbH preču zīme.", "about.domain_blocks.comment": "Iemesls", "about.domain_blocks.domain": "Domēns", "about.domain_blocks.preamble": "Mastodon parasti ļauj apskatīt saturu un mijiedarboties ar lietotājiem no jebkura cita federācijas servera. Šie ir izņēmumi, kas veikti šajā konkrētajā serverī.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizēt", "follow_request.reject": "Noraidīt", "follow_requests.unlocked_explanation": "Lai gan tavs konts nav bloķēts, {domain} darbinieki iedomājās, ka, iespējams, vēlēsies pārskatīt pieprasījumus no šiem kontiem.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Par", + "footer.directory": "Profilu direktorija", + "footer.get_app": "Iegūt lietotni", + "footer.invite": "Uzaicināt cilvēkus", + "footer.keyboard_shortcuts": "Īsinājumtaustiņi", + "footer.privacy_policy": "Privātuma politika", + "footer.source_code": "Skatīt pirmkodu", "generic.saved": "Saglabāts", "getting_started.heading": "Darba sākšana", "hashtag.column_header.tag_mode.all": "un {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Tālāk", "lightbox.previous": "Iepriekšējais", "limited_account_hint.action": "Tik un tā rādīt profilu", - "limited_account_hint.title": "Tava servera moderatori ir paslēpuši šo profilu.", + "limited_account_hint.title": "{domain} moderatori ir paslēpuši šo profilu.", "lists.account.add": "Pievienot sarakstam", "lists.account.remove": "Noņemt no saraksta", "lists.delete": "Dzēst sarakstu", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Noteikumu pārkāpums", "report_notification.open": "Atvērt ziņojumu", "search.placeholder": "Meklēšana", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Meklēt vai iekopēt URL", "search_popout.search_format": "Paplašināts meklēšanas formāts", "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, iecienījis, paaugstinājis vai pieminējis, kā arī atbilstošie lietotājvārdi, parādāmie vārdi un tēmturi.", "search_popout.tips.hashtag": "mirkļbirka", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Sagatavo OCR…", "upload_modal.preview_label": "Priekšskatīt ({ratio})", "upload_progress.label": "Augšupielādē...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Apstrādā…", "video.close": "Aizvērt video", "video.download": "Lejupielādēt datni", "video.exit_fullscreen": "Iziet no pilnekrāna", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index ebdcb8225f..8c3509e912 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index bb116e9762..e0c253e50a 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -339,7 +339,7 @@ "lightbox.next": "അടുത്തത്", "lightbox.previous": "പുറകോട്ട്", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "പട്ടികയിലേക്ക് ചേർക്കുക", "lists.account.remove": "പട്ടികയിൽ നിന്ന് ഒഴിവാക്കുക", "lists.delete": "പട്ടിക ഒഴിവാക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 07d179979c..bf7c2d9e7b 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 26551104b4..36afdc2fb7 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -339,7 +339,7 @@ "lightbox.next": "Seterusnya", "lightbox.previous": "Sebelumnya", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Tambah ke senarai", "lists.account.remove": "Buang daripada senarai", "lists.delete": "Padam senarai", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index 1747697829..ed61123e5b 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 8484fb4dfd..e56666ba6e 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -1,7 +1,7 @@ { "about.blocks": "Gemodereerde servers", "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon is vrije, opensourcesoftware en een handelsmerk van Mastodon gGmbH.", "about.domain_blocks.comment": "Reden", "about.domain_blocks.domain": "Domein", "about.domain_blocks.preamble": "In het algemeen kun je met Mastodon berichten ontvangen van, en interactie hebben met gebruikers van elke server in de fediverse. Dit zijn de uitzonderingen die op deze specifieke server gelden.", @@ -92,7 +92,7 @@ "bundle_modal_error.close": "Sluiten", "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", - "closed_registrations.other_server_instructions": "Omdat Mastodon gedecentraliseerd is, kun je op een andere server een account registreren en vanaf daar nog steeds met dit account communiceren.", + "closed_registrations.other_server_instructions": "Omdat Mastodon gedecentraliseerd is, kun je op een andere server een account registreren en vanaf daar nog steeds met deze server communiceren.", "closed_registrations_modal.description": "Momenteel is het niet mogelijk om op {domain} een account aan te maken. Hou echter in gedachte dat om Mastodon te kunnen gebruiken het niet een vereiste is om op {domain} een account aan te maken.", "closed_registrations_modal.find_another_server": "Een andere server zoeken", "closed_registrations_modal.preamble": "Mastodon is gedecentraliseerd. Op welke server je ook een account hebt, je kunt overal vandaan mensen op deze server volgen en er mee interactie hebben. Je kunt zelfs zelf een Mastodon-server hosten!", @@ -259,13 +259,13 @@ "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afwijzen", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Over", + "footer.directory": "Gebruikersgids", + "footer.get_app": "App downloaden", + "footer.invite": "Mensen uitnodigen", + "footer.keyboard_shortcuts": "Sneltoetsen", + "footer.privacy_policy": "Privacybeleid", + "footer.source_code": "Broncode bekijken", "generic.saved": "Opgeslagen", "getting_started.heading": "Aan de slag", "hashtag.column_header.tag_mode.all": "en {additional}", @@ -290,7 +290,7 @@ "interaction_modal.description.reply": "Je kunt met een Mastodon-account op dit bericht reageren.", "interaction_modal.on_another_server": "Op een andere server", "interaction_modal.on_this_server": "Op deze server", - "interaction_modal.other_server_instructions": "Kopieer en plak eenvoudig deze URL in het zoekveld van de door jou gebruikte app of in de webinterface van de server waarop je bent ingelogd.", + "interaction_modal.other_server_instructions": "Kopieer en plak deze URL in het zoekveld van de door jou gebruikte app of in het zoekveld van de website van de server waarop je bent ingelogd.", "interaction_modal.preamble": "Mastodon is gedecentraliseerd. Daarom heb je geen account op deze Mastodon-server nodig, wanneer je al een account op een andere Mastodon-server of compatibel platform hebt.", "interaction_modal.title.favourite": "Bericht van {name} als favoriet markeren", "interaction_modal.title.follow": "{name} volgen", @@ -339,7 +339,7 @@ "lightbox.next": "Volgende", "lightbox.previous": "Vorige", "limited_account_hint.action": "Alsnog het profiel tonen", - "limited_account_hint.title": "Dit profiel is door de moderatoren van jouw server verborgen.", + "limited_account_hint.title": "Dit profiel is door de moderatoren van {domain} verborgen.", "lists.account.add": "Aan lijst toevoegen", "lists.account.remove": "Uit lijst verwijderen", "lists.delete": "Lijst verwijderen", @@ -445,7 +445,7 @@ "poll_button.remove_poll": "Poll verwijderen", "privacy.change": "Zichtbaarheid van bericht aanpassen", "privacy.direct.long": "Alleen aan vermelde gebruikers tonen", - "privacy.direct.short": "Alleen aan vermelde gebruikers tonen", + "privacy.direct.short": "Direct bericht", "privacy.private.long": "Alleen aan volgers tonen", "privacy.private.short": "Alleen volgers", "privacy.public.long": "Voor iedereen zichtbaar", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Overtreden regel(s)", "report_notification.open": "Rapportage openen", "search.placeholder": "Zoeken", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Zoek of voer een URL in", "search_popout.search_format": "Geavanceerd zoeken", "search_popout.tips.full_text": "Gebruik gewone tekst om te zoeken in jouw berichten, gebooste berichten, favorieten en in berichten waarin je bent vermeldt, en tevens naar gebruikersnamen, weergavenamen en hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR voorbereiden…", "upload_modal.preview_label": "Voorvertoning ({ratio})", "upload_progress.label": "Uploaden...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Bezig…", "video.close": "Video sluiten", "video.download": "Bestand downloaden", "video.exit_fullscreen": "Volledig scherm sluiten", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1a43085795..caa4096965 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "Modererte tenarar", + "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon er gratis programvare med open kjeldekode, og eit varemerke frå Mastodon gGmbH.", + "about.domain_blocks.comment": "Årsak", + "about.domain_blocks.domain": "Domene", + "about.domain_blocks.preamble": "Mastodon gjev deg som regel lov til å sjå innhald og samhandla med brukarar frå alle andre tenarar i fødiverset. Dette er unntaka som er valde for akkurat denne tenaren.", + "about.domain_blocks.severity": "Alvorsgrad", + "about.domain_blocks.silenced.explanation": "Du vil vanlegvis ikkje sjå profilar og innhald frå denen tenaren, med mindre du eksplisitt leiter den opp eller velgjer ved å fylgje.", + "about.domain_blocks.silenced.title": "Avgrensa", + "about.domain_blocks.suspended.explanation": "Ingen data frå desse tenarane vert handsama, lagra eller sende til andre, som gjer det umogeleg å samhandla eller kommunisera med andre brukarar frå desse tenarane.", + "about.domain_blocks.suspended.title": "Utvist", + "about.not_available": "Denne informasjonen er ikkje gjort tilgjengeleg på denne tenaren.", + "about.powered_by": "Desentraliserte sosiale medium drive av {mastodon}", + "about.rules": "Tenarreglar", "account.account_note_header": "Merknad", "account.add_or_remove_from_list": "Legg til eller tak vekk frå listene", "account.badges.bot": "Robot", @@ -21,27 +21,27 @@ "account.block_domain": "Skjul alt frå {domain}", "account.blocked": "Blokkert", "account.browse_more_on_origin_server": "Sjå gjennom meir på den opphavlege profilen", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Trekk attende fylgeførespurnad", "account.direct": "Send melding til @{name}", "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", "account.domain_blocked": "Domenet er gøymt", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg", "account.endorse": "Framhev på profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Sist nytta {date}", + "account.featured_tags.last_status_never": "Ingen innlegg", + "account.featured_tags.title": "{name} sine framheva emneknaggar", "account.follow": "Fylg", "account.followers": "Fylgjarar", "account.followers.empty": "Ingen fylgjer denne brukaren enno.", "account.followers_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjarar}}", - "account.following": "Følger", + "account.following": "Fylgjer", "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjar}}", "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.follows_you": "Fylgjer deg", "account.hide_reblogs": "Gøym fremhevingar frå @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Vart med", + "account.languages": "Endre språktingingar", "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}", "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.", "account.media": "Media", @@ -66,38 +66,38 @@ "account.unmute_notifications": "Vis varsel frå @{name}", "account.unmute_short": "Opphev målbinding", "account_note.placeholder": "Klikk for å leggja til merknad", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Mengda brukarar aktive ved dagar etter registrering", + "admin.dashboard.monthly_retention": "Mengda brukarar aktive ved månader etter registrering", "admin.dashboard.retention.average": "Gjennomsnitt", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort": "Registrert månad", "admin.dashboard.retention.cohort_size": "Nye brukarar", "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.", "alert.rate_limited.title": "Begrensa rate", "alert.unexpected.message": "Eit uventa problem oppstod.", "alert.unexpected.title": "Oi sann!", "announcement.announcement": "Kunngjering", - "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "attachments_list.unprocessed": "(ubehandla)", + "audio.hide": "Gøym lyd", "autosuggest_hashtag.per_week": "{count} per veke", "boost_modal.combo": "Du kan trykkja {combo} for å hoppa over dette neste gong", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopier feilrapport", + "bundle_column_error.error.body": "Den etterspurde sida kan ikke hentast fram. Det kan skuldast ein feil i vår kode eller eit kompatibilitetsproblem.", + "bundle_column_error.error.title": "Ånei!", + "bundle_column_error.network.body": "Det oppsto ein feil då ein forsøkte å laste denne sida. Dette kan skuldast eit midlertidig problem med nettkoplinga eller denne tenaren.", + "bundle_column_error.network.title": "Nettverksfeil", "bundle_column_error.retry": "Prøv igjen", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Gå heim att", + "bundle_column_error.routing.body": "Den etterspurde sida vart ikkje funnen. Er du sikker på at URL-adressa er rett?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Lat att", "bundle_modal_error.message": "Noko gjekk gale under lastinga av denne komponenten.", "bundle_modal_error.retry": "Prøv igjen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Sidan Mastodon er desentralisert kan du lage ein brukar på ein anna tenar og framleis interagere med denne.", + "closed_registrations_modal.description": "Oppretting av ein konto på {domain} er ikkje mogleg, men hugs at du ikkje treng ein konto spesifikt på {domain} for å nytte Mastodon.", + "closed_registrations_modal.find_another_server": "Fin ein anna tenar", + "closed_registrations_modal.preamble": "Mastodon er desentralisert, så uansett kvar du lagar kontoen, vil du kunne fylgje og samhandle med alle på denne tenaren. Du kan til og med ha din eigen tenar!", + "closed_registrations_modal.title": "Registrer deg på Mastodon", + "column.about": "Om", "column.blocks": "Blokkerte brukarar", "column.bookmarks": "Bokmerke", "column.community": "Lokal tidsline", @@ -124,7 +124,7 @@ "community.column_settings.media_only": "Berre media", "community.column_settings.remote_only": "Berre eksternt", "compose.language.change": "Byt språk", - "compose.language.search": "Search languages...", + "compose.language.search": "Søk språk...", "compose_form.direct_message_warning_learn_more": "Lær meir", "compose_form.encryption_warning": "Innlegg på Mastodon er ikkje ende-til-ende-krypterte. Ikkje del eventuell sensitiv informasjon via Mastodon.", "compose_form.hashtag_warning": "Dette tutet vert ikkje oppført under nokon emneknagg sidan det ikkje er oppført. Berre offentlege tut kan verta søkt etter med emneknagg.", @@ -137,7 +137,7 @@ "compose_form.poll.remove_option": "Ta vekk dette valet", "compose_form.poll.switch_to_multiple": "Endre avstemninga til å tillate fleirval", "compose_form.poll.switch_to_single": "Endra avstemninga til tillate berre eitt val", - "compose_form.publish": "Publish", + "compose_form.publish": "Publisér", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Lagre endringar", "compose_form.sensitive.hide": "Merk medium som sensitivt", @@ -150,8 +150,8 @@ "confirmations.block.block_and_report": "Blokker & rapporter", "confirmations.block.confirm": "Blokker", "confirmations.block.message": "Er du sikker på at du vil blokkera {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Trekk attende førespurnad", + "confirmations.cancel_follow_request.message": "Er du sikker på at du vil trekke attende førespurnaden din for å fylgje {name}?", "confirmations.delete.confirm": "Slett", "confirmations.delete.message": "Er du sikker på at du vil sletta denne statusen?", "confirmations.delete_list.confirm": "Slett", @@ -175,22 +175,22 @@ "conversation.mark_as_read": "Merk som lese", "conversation.open": "Sjå samtale", "conversation.with": "Med {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiert", + "copypaste.copy": "Kopiér", "directory.federated": "Frå kjent fedivers", "directory.local": "Berre frå {domain}", "directory.new_arrivals": "Nyankommne", "directory.recently_active": "Nyleg aktive", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Dette er dei nylegaste offentlege innlegga frå personar med kontoar frå {domain}.", + "dismissable_banner.dismiss": "Avvis", + "dismissable_banner.explore_links": "Desse nyhendesakene snakkast om av folk på denne og andre tenarar på det desentraliserte nettverket no.", + "dismissable_banner.explore_statuses": "Desse innlegga frå denne tenaren og andre tenarar i det desentraliserte nettverket er i dytten på denne tenaren nett no.", + "dismissable_banner.explore_tags": "Desse emneknaggane er populære blant folk på denne tenaren og andre tenarar i det desentraliserte nettverket nett no.", + "dismissable_banner.public_timeline": "Dette er dei siste offentlege innlegga frå folk på denne tenaren og andre tenarar på det desentraliserte nettverket som denne tenaren veit om.", "embed.instructions": "Bygg inn denne statusen på nettsida di ved å kopiera koden under.", "embed.preview": "Slik bid det å sjå ut:", "emoji_button.activity": "Aktivitet", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Tøm", "emoji_button.custom": "Eige", "emoji_button.flags": "Flagg", "emoji_button.food": "Mat & drikke", @@ -210,12 +210,12 @@ "empty_column.blocks": "Du har ikkje blokkert nokon brukarar enno.", "empty_column.bookmarked_statuses": "Du har ikkje nokon bokmerkte tut enno. Når du bokmerkjer eit, dukkar det opp her.", "empty_column.community": "Den lokale samtiden er tom. Skriv noko offentleg å få ballen til å rulle!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Du har ingen direktemeldingar enno. Når du sender eller får ei, vil ho dukka opp her.", "empty_column.domain_blocks": "Det er ingen gøymde domene ennå.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Ingenting trendar nett no. Prøv igjen seinare!", "empty_column.favourited_statuses": "Du har ingen favoritt-tut ennå. Når du merkjer ein som favoritt, så dukkar det opp her.", "empty_column.favourites": "Ingen har merkt dette tutet som favoritt enno. Når nokon gjer det, så dukkar det opp her.", - "empty_column.follow_recommendations": "Ser ut som at det ikke finnes noen forslag for deg. Du kan prøve å bruke søk for å se etter folk du kan vite eller utforske trendende hashtags.", + "empty_column.follow_recommendations": "Det ser ikkje ut til at noko forslag kunne genererast til deg. Prøv søkjefunksjonen for å finna folk du kjenner, eller utforsk populære emneknaggar.", "empty_column.follow_requests": "Du har ingen følgjeførespurnadar ennå. Når du får ein, så vil den dukke opp her.", "empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.", "empty_column.home": "Heime-tidslinja di er tom! Besøk {public} eller søk for å starte og å møte andre brukarar.", @@ -228,7 +228,7 @@ "error.unexpected_crash.explanation": "På grunn av ein feil i vår kode eller eit nettlesarkompatibilitetsproblem, kunne ikkje denne sida verte vist korrekt.", "error.unexpected_crash.explanation_addons": "Denne siden kunne ikke vises riktig. Denne feilen er sannsynligvis forårsaket av en nettleserutvidelse eller automatiske oversettelsesverktøy.", "error.unexpected_crash.next_steps": "Prøv å lasta inn sida på nytt. Om det ikkje hjelper så kan du framleis nytta Mastodon i ein annan nettlesar eller app.", - "error.unexpected_crash.next_steps_addons": "Prøv å deaktivere dem og laste siden på nytt. Hvis det ikke hjelper, kan du fremdeles bruke Mastodon via en annen nettleser eller en annen app.", + "error.unexpected_crash.next_steps_addons": "Prøv å skru dei av og last inn sida på nytt. Om ikkje det hjelper, kan du framleis bruka Mastodon i ein annan nettlesar eller app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla", "errors.unexpected_crash.report_issue": "Rapporter problem", "explore.search_results": "Søkeresultat", @@ -237,35 +237,35 @@ "explore.trending_links": "Nyheiter", "explore.trending_statuses": "Innlegg", "explore.trending_tags": "Emneknaggar", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Denne filterkategorien gjeld ikkje i den samanhengen du har lese dette innlegget. Viss du vil at innlegget skal filtrerast i denne samanhengen òg, må du endra filteret.", + "filter_modal.added.context_mismatch_title": "Konteksten passar ikkje!", + "filter_modal.added.expired_explanation": "Denne filterkategorien har gått ut på dato. Du må endre best før datoen for at den skal gjelde.", + "filter_modal.added.expired_title": "Filteret har gått ut på dato!", + "filter_modal.added.review_and_configure": "For å granske og konfigurere denne filterkategorien, gå til {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filterinnstillingar", + "filter_modal.added.settings_link": "sida med innstillingar", + "filter_modal.added.short_explanation": "Dette innlegget er lagt til i denne filterkategorien: {title}.", + "filter_modal.added.title": "Filteret er lagt til!", + "filter_modal.select_filter.context_mismatch": "gjeld ikkje i denne samanhengen", + "filter_modal.select_filter.expired": "utgått", + "filter_modal.select_filter.prompt_new": "Ny kategori: {name}", + "filter_modal.select_filter.search": "Søk eller opprett", + "filter_modal.select_filter.subtitle": "Bruk ein eksisterande kategori eller opprett ein ny", + "filter_modal.select_filter.title": "Filtrer dette innlegget", + "filter_modal.title.status": "Filtrer eit innlegg", "follow_recommendations.done": "Ferdig", "follow_recommendations.heading": "Fylg folk du ønsker å sjå innlegg frå! Her er nokre forslag.", - "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", + "follow_recommendations.lead": "Innlegg frå folk du fylgjer, kjem kronologisk i heimestraumen din. Ikkje ver redd for å gjera feil, du kan enkelt avfylgja folk når som helst!", "follow_request.authorize": "Autoriser", "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Sjølv om kontoen din ikkje er låst tenkte {domain} tilsette at du ville gå gjennom førespurnadar frå desse kontoane manuelt.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Om", + "footer.directory": "Profilmappe", + "footer.get_app": "Få appen", + "footer.invite": "Inviter folk", + "footer.keyboard_shortcuts": "Snøggtastar", + "footer.privacy_policy": "Personvernsreglar", + "footer.source_code": "Vis kjeldekode", "generic.saved": "Lagra", "getting_started.heading": "Kom i gang", "hashtag.column_header.tag_mode.all": "og {additional}", @@ -284,18 +284,18 @@ "home.column_settings.show_replies": "Vis svar", "home.hide_announcements": "Skjul kunngjeringar", "home.show_announcements": "Vis kunngjeringar", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Med ein konto på Mastodon kan du favorittmerkja dette innlegget for å visa forfattaren at du set pris på det, og for å lagra det til seinare.", + "interaction_modal.description.follow": "Med ein konto på Mastodon kan du fylgje {name} for å sjå innlegga deira i din heimestraum.", + "interaction_modal.description.reblog": "Med ein konto på Mastodon kan du framheve dette innlegget for å dele det med dine eigne fylgjarar.", + "interaction_modal.description.reply": "Med ein konto på Mastodon kan du svare på dette innlegget.", + "interaction_modal.on_another_server": "På ein annan tenar", + "interaction_modal.on_this_server": "På denne tenaren", + "interaction_modal.other_server_instructions": "Berre kopier og lim inn denne URL-en i søkefeltet til din favorittapp eller i søkefeltet på den nettsida der du er logga inn.", + "interaction_modal.preamble": "Sidan Mastodon er desentralisert, kan du bruke ein konto frå ein annan Mastodontenar eller frå ei anna kompatibel plattform dersom du ikkje har konto på denne tenaren.", + "interaction_modal.title.favourite": "Favorittmarker innlegget til {name}", + "interaction_modal.title.follow": "Fylg {name}", + "interaction_modal.title.reblog": "Framhev {name} sitt innlegg", + "interaction_modal.title.reply": "Svar på innlegge til {name}", "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# time} other {# timar}}", "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutt}}", @@ -305,7 +305,7 @@ "keyboard_shortcuts.column": "for å fokusera på ein status i ei av kolonnane", "keyboard_shortcuts.compose": "for å fokusera tekstfeltet for skriving", "keyboard_shortcuts.description": "Skildring", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "for å opna direktemeldingskolonnen", "keyboard_shortcuts.down": "for å flytta seg opp og ned i lista", "keyboard_shortcuts.enter": "for å opna status", "keyboard_shortcuts.favourite": "for å merkja som favoritt", @@ -334,12 +334,12 @@ "keyboard_shortcuts.unfocus": "for å fokusere vekk skrive-/søkefeltet", "keyboard_shortcuts.up": "for å flytta seg opp på lista", "lightbox.close": "Lukk att", - "lightbox.compress": "Komprimer bildevisningsboks", - "lightbox.expand": "Ekspander bildevisning boks", + "lightbox.compress": "Komprimer biletvisningsboksen", + "lightbox.expand": "Utvid biletvisningsboksen", "lightbox.next": "Neste", "lightbox.previous": "Førre", "limited_account_hint.action": "Vis profilen likevel", - "limited_account_hint.title": "Denne profilen har vorte skjult av moderatorane på tenaren din.", + "limited_account_hint.title": "Denne profilen har vorte skjult av moderatorane på {domain}.", "lists.account.add": "Legg til i liste", "lists.account.remove": "Fjern frå liste", "lists.delete": "Slett liste", @@ -347,7 +347,7 @@ "lists.edit.submit": "Endre tittel", "lists.new.create": "Legg til liste", "lists.new.title_placeholder": "Ny listetittel", - "lists.replies_policy.followed": "Enhver fulgt bruker", + "lists.replies_policy.followed": "Alle fylgde brukarar", "lists.replies_policy.list": "Medlem i lista", "lists.replies_policy.none": "Ikkje nokon", "lists.replies_policy.title": "Vis svar på:", @@ -361,7 +361,7 @@ "mute_modal.duration": "Varighet", "mute_modal.hide_notifications": "Gøyme varsel frå denne brukaren?", "mute_modal.indefinite": "På ubestemt tid", - "navigation_bar.about": "About", + "navigation_bar.about": "Om", "navigation_bar.blocks": "Blokkerte brukarar", "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", @@ -382,11 +382,11 @@ "navigation_bar.pins": "Festa tut", "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", - "navigation_bar.search": "Search", + "navigation_bar.search": "Søk", "navigation_bar.security": "Tryggleik", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Du må logga inn for å få tilgang til denne ressursen.", "notification.admin.report": "{name} rapporterte {target}", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} er registrert", "notification.favourite": "{name} merkte statusen din som favoritt", "notification.follow": "{name} fylgde deg", "notification.follow_request": "{name} har bedt om å fylgja deg", @@ -399,12 +399,12 @@ "notifications.clear": "Tøm varsel", "notifications.clear_confirmation": "Er du sikker på at du vil fjerna alle varsla dine for alltid?", "notifications.column_settings.admin.report": "Nye rapportar:", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nyleg registrerte:", "notifications.column_settings.alert": "Skrivebordsvarsel", "notifications.column_settings.favourite": "Favorittar:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategoriar", "notifications.column_settings.filter_bar.category": "Snarfilterlinje", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.show_bar": "Vis filterlinja", "notifications.column_settings.follow": "Nye fylgjarar:", "notifications.column_settings.follow_request": "Ny fylgjarførespurnader:", "notifications.column_settings.mention": "Nemningar:", @@ -424,14 +424,14 @@ "notifications.filter.mentions": "Nemningar", "notifications.filter.polls": "Røysteresultat", "notifications.filter.statuses": "Oppdateringer fra folk du følger", - "notifications.grant_permission": "Gi tillatelse.", + "notifications.grant_permission": "Gje løyve.", "notifications.group": "{count} varsel", "notifications.mark_as_read": "Merk alle varsler som lest", - "notifications.permission_denied": "Skrivebordsvarsler er ikke tilgjengelige på grunn av tidligere nektet nettlesertillatelser", - "notifications.permission_denied_alert": "Skrivebordsvarsler kan ikke aktiveres, ettersom lesertillatelse har blitt nektet før", - "notifications.permission_required": "Skrivebordsvarsler er utilgjengelige fordi nødvendige rettigheter ikke er gitt.", + "notifications.permission_denied": "Skrivebordsvarsel er ikkje tilgjengelege på grunn av at nettlesaren tidlegare ikkje har fått naudsynte rettar til å vise dei", + "notifications.permission_denied_alert": "Sidan nettlesaren tidlegare har blitt nekta naudsynte rettar, kan ikkje skrivebordsvarsel aktiverast", + "notifications.permission_required": "Skrivebordsvarsel er utilgjengelege fordi naudsynte rettar ikkje er gitt.", "notifications_permission_banner.enable": "Skru på skrivebordsvarsler", - "notifications_permission_banner.how_to_control": "For å motta varsler når Mastodon ikke er åpne, aktiver desktop varsler. Du kan kontrollere nøyaktig hvilke typer interaksjoner genererer skrivebordsvarsler gjennom {icon} -knappen ovenfor når de er aktivert.", + "notifications_permission_banner.how_to_control": "Aktiver skrivebordsvarsel for å få varsel når Mastodon ikkje er open. Du kan nøye bestemme kva samhandlingar som skal føre til skrivebordsvarsel gjennom {icon}-knappen ovanfor etter at varsel er aktivert.", "notifications_permission_banner.title": "Aldri gå glipp av noe", "picture_in_picture.restore": "Legg den tilbake", "poll.closed": "Lukka", @@ -450,10 +450,10 @@ "privacy.private.short": "Kun fylgjarar", "privacy.public.long": "Synleg for alle", "privacy.public.short": "Offentleg", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Synleg for alle, men blir ikkje vist i oppdagsfunksjonar", "privacy.unlisted.short": "Uoppført", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Sist oppdatert {date}", + "privacy_policy.title": "Personvernsreglar", "refresh": "Oppdater", "regeneration_indicator.label": "Lastar…", "regeneration_indicator.sublabel": "Heimetidslinja di vert førebudd!", @@ -483,7 +483,7 @@ "report.forward": "Vidaresend til {target}", "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?", "report.mute": "Målbind", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute_explanation": "Du vil ikkje lenger sjå innlegga deira. Dei kan framleis fylgje deg og sjå innlegga dine, men vil ikkje vite at du har valt å ikkje sjå innlegga deira.", "report.next": "Neste", "report.placeholder": "Tilleggskommentarar", "report.reasons.dislike": "Eg likar det ikkje", @@ -494,14 +494,14 @@ "report.reasons.spam_description": "Skadelege lenker, falskt engasjement og gjentakande svar", "report.reasons.violation": "Det bryt tenaren sine reglar", "report.reasons.violation_description": "Du veit at den bryt spesifikke reglar", - "report.rules.subtitle": "Select all that apply", + "report.rules.subtitle": "Velg det som gjeld", "report.rules.title": "Kva reglar vert brotne?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.statuses.subtitle": "Velg det som gjeld", + "report.statuses.title": "Er det innlegg som støttar opp under denne rapporten?", "report.submit": "Send inn", "report.target": "Rapporterer {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.take_action": "Dette er dei ulike alternativa for å kontrollere kva du ser på Mastodon:", + "report.thanks.take_action_actionable": "Medan vi undersøker rapporteringa, kan du utføre desse handlingane mot @{name}:", "report.thanks.title": "Vil du ikkje sjå dette?", "report.thanks.title_actionable": "Takk for at du rapporterer, me skal sjå på dette.", "report.unfollow": "Unfollow @{name}", @@ -591,7 +591,7 @@ "status.unpin": "Løys frå profil", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.target": "Endre abonnerte språk for {target}", "suggestions.dismiss": "Avslå framlegg", "suggestions.header": "Du er kanskje interessert i…", "tabs_bar.federated_timeline": "Føderert", @@ -607,7 +607,7 @@ "timeline_hint.resources.followers": "Fylgjarar", "timeline_hint.resources.follows": "Fylgjer", "timeline_hint.resources.statuses": "Eldre tut", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} folk}} siste {days, plural, one {døgnet} other {{days} dagane}}", "trends.trending_now": "Populært no", "ui.beforeunload": "Kladden din forsvinn om du forlèt Mastodon no.", "units.short.billion": "{count}m.ard", @@ -626,7 +626,7 @@ "upload_form.video_description": "Greit ut for folk med nedsett høyrsel eller syn", "upload_modal.analyzing_picture": "Analyserer bilete…", "upload_modal.apply": "Bruk", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Utfører…", "upload_modal.choose_image": "Vel bilete", "upload_modal.description_placeholder": "Ein rask brun rev hoppar over den late hunden", "upload_modal.detect_text": "Gjenkjenn tekst i biletet", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Førebur OCR…", "upload_modal.preview_label": "Førehandsvis ({ratio})", "upload_progress.label": "Lastar opp...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Handsamar…", "video.close": "Lukk video", "video.download": "Last ned fil", "video.exit_fullscreen": "Lukk fullskjerm", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 13ec6df9a4..558f178edd 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -101,7 +101,7 @@ "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", "column.community": "Lokal tidslinje", - "column.direct": "Direct messages", + "column.direct": "Direktemeldinger", "column.directory": "Bla gjennom profiler", "column.domain_blocks": "Skjulte domener", "column.favourites": "Likt", @@ -210,7 +210,7 @@ "empty_column.blocks": "Du har ikke blokkert noen brukere enda.", "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen tuter enda. Når du bokmerker en, vil den dukke opp her.", "empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "Du har ingen direktemeldinger enda. Etter du har sendt eller mottatt en, så vil den dukke opp her.", "empty_column.domain_blocks": "Det er ingen skjulte domener enda.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", "empty_column.favourited_statuses": "Du har ikke likt noen tuter enda. Når du liker en, vil den dukke opp her.", @@ -305,7 +305,7 @@ "keyboard_shortcuts.column": "å fokusere en status i en av kolonnene", "keyboard_shortcuts.compose": "å fokusere komponeringsfeltet", "keyboard_shortcuts.description": "Beskrivelse", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "for å åpne kolonne med direktemeldinger", "keyboard_shortcuts.down": "for å flytte ned i listen", "keyboard_shortcuts.enter": "å åpne status", "keyboard_shortcuts.favourite": "for å favorittmarkere", @@ -339,7 +339,7 @@ "lightbox.next": "Neste", "lightbox.previous": "Forrige", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Legg til i listen", "lists.account.remove": "Fjern fra listen", "lists.delete": "Slett listen", @@ -366,7 +366,7 @@ "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", "navigation_bar.compose": "Skriv en ny tut", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "Direktemeldinger", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domener", "navigation_bar.edit_profile": "Rediger profil", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 0be16f6771..b9943a10fd 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -339,7 +339,7 @@ "lightbox.next": "Seguent", "lightbox.previous": "Precedent", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Ajustar a la lista", "lists.account.remove": "Levar de la lista", "lists.delete": "Suprimir la lista", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index dbc5685989..0ee86d80cf 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 417d79ec6a..172281e9d9 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -1,10 +1,10 @@ { "about.blocks": "Serwery moderowane", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon jest darmowym, otwartym oprogramowaniem i znakiem towarowym Mastodon gGmbH.", "about.domain_blocks.comment": "Powód", "about.domain_blocks.domain": "Domena", - "about.domain_blocks.preamble": "Normalnie Mastodon pozwala ci przeglądać i reagować na treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. To są wyjątki, które zostały stworzone na tym konkretnym serwerze.", + "about.domain_blocks.preamble": "Domyślnie Mastodon pozwala ci przeglądać i reagować na treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. Poniżej znajduje się lista wyjątków, które zostały stworzone na tym konkretnym serwerze.", "about.domain_blocks.severity": "Priorytet", "about.domain_blocks.silenced.explanation": "Zazwyczaj nie zobaczysz profili i treści z tego serwera, chyba że wyraźnie go poszukasz lub zdecydujesz się go obserwować.", "about.domain_blocks.silenced.title": "Ograniczone", @@ -31,19 +31,19 @@ "account.featured_tags.last_status_at": "Ostatni post {date}", "account.featured_tags.last_status_never": "Brak postów", "account.featured_tags.title": "Polecane hasztagi {name}", - "account.follow": "Śledź", - "account.followers": "Śledzący", - "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.", - "account.followers_counter": "{count, plural, one {{counter} śledzący} few {{counter} śledzących} many {{counter} śledzących} other {{counter} śledzących}}", - "account.following": "Śledzenie", - "account.following_counter": "{count, plural, one {{counter} śledzony} few {{counter} śledzonych} many {{counter} śledzonych} other {{counter} śledzonych}}", - "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.", - "account.follows_you": "Śledzi Cię", + "account.follow": "Obserwuj", + "account.followers": "Obserwujący", + "account.followers.empty": "Nikt jeszcze nie obserwuje tego użytkownika.", + "account.followers_counter": "{count, plural, one {{counter} obserwujący} few {{counter} obserwujących} many {{counter} obserwujących} other {{counter} obserwujących}}", + "account.following": "Obserwowani", + "account.following_counter": "{count, plural, one {{counter} obserwowany} few {{counter} obserwowanych} many {{counter} obserwowanych} other {{counter} obserwowanych}}", + "account.follows.empty": "Ten użytkownik nie obserwuje jeszcze nikogo.", + "account.follows_you": "Obserwuje Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", "account.joined_short": "Dołączył(a)", "account.languages": "Zmień subskrybowane języki", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", - "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", + "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go obserwować.", "account.media": "Zawartość multimedialna", "account.mention": "Wspomnij o @{name}", "account.moved_to": "{name} przeniósł(-osła) się do:", @@ -61,7 +61,7 @@ "account.unblock_domain": "Odblokuj domenę {domain}", "account.unblock_short": "Odblokuj", "account.unendorse": "Przestań polecać", - "account.unfollow": "Przestań śledzić", + "account.unfollow": "Przestań obserwować", "account.unmute": "Cofnij wyciszenie @{name}", "account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}", "account.unmute_short": "Włącz dźwięki", @@ -97,7 +97,7 @@ "closed_registrations_modal.find_another_server": "Znajdź inny serwer", "closed_registrations_modal.preamble": "Mastodon jest zdecentralizowany, więc bez względu na to, gdzie się zarejestrujesz, będziesz w stanie obserwować i wchodzić w interakcje z innymi osobami na tym serwerze. Możesz nawet uruchomić własny serwer!", "closed_registrations_modal.title": "Rejestracja na Mastodonie", - "column.about": "O...", + "column.about": "O serwerze", "column.blocks": "Zablokowani użytkownicy", "column.bookmarks": "Zakładki", "column.community": "Lokalna oś czasu", @@ -105,7 +105,7 @@ "column.directory": "Przeglądaj profile", "column.domain_blocks": "Ukryte domeny", "column.favourites": "Ulubione", - "column.follow_requests": "Prośby o śledzenie", + "column.follow_requests": "Prośby o obserwację", "column.home": "Strona główna", "column.lists": "Listy", "column.mutes": "Wyciszeni użytkownicy", @@ -128,7 +128,7 @@ "compose_form.direct_message_warning_learn_more": "Dowiedz się więcej", "compose_form.encryption_warning": "Posty na Mastodon nie są szyfrowane end-to-end. Nie udostępniaj żadnych wrażliwych informacji przez Mastodon.", "compose_form.hashtag_warning": "Ten wpis nie będzie widoczny pod podanymi hasztagami, ponieważ jest oznaczony jako niewidoczny. Tylko publiczne wpisy mogą zostać znalezione z użyciem hasztagów.", - "compose_form.lock_disclaimer": "Twoje konto nie jest {locked}. Każdy, kto Cię śledzi, może wyświetlać Twoje wpisy przeznaczone tylko dla śledzących.", + "compose_form.lock_disclaimer": "Twoje konto nie jest {locked}. Każdy, kto Cię obserwuje, może wyświetlać Twoje wpisy przeznaczone tylko dla obserwujących.", "compose_form.lock_disclaimer.lock": "zablokowane", "compose_form.placeholder": "Co Ci chodzi po głowie?", "compose_form.poll.add_option": "Dodaj opcję", @@ -151,7 +151,7 @@ "confirmations.block.confirm": "Zablokuj", "confirmations.block.message": "Czy na pewno chcesz zablokować {name}?", "confirmations.cancel_follow_request.confirm": "Wycofaj żądanie", - "confirmations.cancel_follow_request.message": "Czy na pewno chcesz wycofać zgłoszenie śledzenia {name}?", + "confirmations.cancel_follow_request.message": "Czy na pewno chcesz wycofać prośbę o możliwość obserwacji {name}?", "confirmations.delete.confirm": "Usuń", "confirmations.delete.message": "Czy na pewno chcesz usunąć ten wpis?", "confirmations.delete_list.confirm": "Usuń", @@ -163,14 +163,14 @@ "confirmations.logout.confirm": "Wyloguj", "confirmations.logout.message": "Czy na pewno chcesz się wylogować?", "confirmations.mute.confirm": "Wycisz", - "confirmations.mute.explanation": "To schowa ich i wspominające ich posty, ale wciąż pozwoli im widzieć twoje posty i śledzić cię.", + "confirmations.mute.explanation": "To schowa ich i wspominające ich posty, ale wciąż pozwoli im widzieć twoje posty i obserwować cię.", "confirmations.mute.message": "Czy na pewno chcesz wyciszyć {name}?", "confirmations.redraft.confirm": "Usuń i przeredaguj", "confirmations.redraft.message": "Czy na pewno chcesz usunąć i przeredagować ten wpis? Polubienia i podbicia zostaną utracone, a odpowiedzi do oryginalnego wpisu zostaną osierocone.", "confirmations.reply.confirm": "Odpowiedz", "confirmations.reply.message": "W ten sposób utracisz wpis który obecnie tworzysz. Czy na pewno chcesz to zrobić?", - "confirmations.unfollow.confirm": "Przestań śledzić", - "confirmations.unfollow.message": "Czy na pewno zamierzasz przestać śledzić {name}?", + "confirmations.unfollow.confirm": "Przestań obserwować", + "confirmations.unfollow.message": "Czy na pewno zamierzasz przestać obserwować {name}?", "conversation.delete": "Usuń rozmowę", "conversation.mark_as_read": "Oznacz jako przeczytane", "conversation.open": "Zobacz rozmowę", @@ -216,9 +216,9 @@ "empty_column.favourited_statuses": "Nie dodałeś(-aś) żadnego wpisu do ulubionych. Kiedy to zrobisz, pojawi się on tutaj.", "empty_column.favourites": "Nikt nie dodał tego wpisu do ulubionych. Gdy ktoś to zrobi, pojawi się tutaj.", "empty_column.follow_recommendations": "Wygląda na to, że nie można wygenerować dla Ciebie żadnych sugestii. Możesz spróbować wyszukać osoby, które znasz, lub przeglądać popularne hasztagi.", - "empty_column.follow_requests": "Nie masz żadnych próśb o możliwość śledzenia. Kiedy ktoś utworzy ją, pojawi się tutaj.", + "empty_column.follow_requests": "Nie masz żadnych próśb o możliwość obserwacji. Kiedy ktoś utworzy ją, pojawi się tutaj.", "empty_column.hashtag": "Nie ma wpisów oznaczonych tym hasztagiem. Możesz napisać pierwszy(-a).", - "empty_column.home": "Nie śledzisz nikogo. Odwiedź globalną oś czasu lub użyj wyszukiwarki, aby znaleźć interesujące Cię profile.", + "empty_column.home": "Nie obserwujesz nikogo. Odwiedź globalną oś czasu lub użyj wyszukiwarki, aby znaleźć interesujące Cię profile.", "empty_column.home.suggestions": "Zobacz kilka sugestii", "empty_column.list": "Nie ma nic na tej liście. Kiedy członkowie listy dodadzą nowe wpisy, pojawia się one tutaj.", "empty_column.lists": "Nie masz żadnych list. Kiedy utworzysz jedną, pojawi się tutaj.", @@ -254,18 +254,18 @@ "filter_modal.select_filter.title": "Filtruj ten wpis", "filter_modal.title.status": "Filtruj wpis", "follow_recommendations.done": "Gotowe", - "follow_recommendations.heading": "Śledź ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", - "follow_recommendations.lead": "Wpisy osób, które śledzisz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać śledzić każdego w każdej chwili!", + "follow_recommendations.heading": "Obserwuj ludzi, których wpisy chcesz czytać. Oto kilka propozycji.", + "follow_recommendations.lead": "Wpisy osób, które obserwujesz będą pojawiać się w porządku chronologicznym na stronie głównej. Nie bój się popełniać błędów, możesz bez problemu przestać obserwować każdego w każdej chwili!", "follow_request.authorize": "Autoryzuj", "follow_request.reject": "Odrzuć", - "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość śledzenia.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość obserwacji.", + "footer.about": "O serwerze", + "footer.directory": "Katalog profilów", + "footer.get_app": "Pobierz aplikację", + "footer.invite": "Zaproś znajomych", + "footer.keyboard_shortcuts": "Skróty klawiszowe", + "footer.privacy_policy": "Polityka prywatności", + "footer.source_code": "Zobacz kod źródłowy", "generic.saved": "Zapisano", "getting_started.heading": "Rozpocznij", "hashtag.column_header.tag_mode.all": "i {additional}", @@ -324,7 +324,7 @@ "keyboard_shortcuts.pinned": "aby przejść do listy przypiętych wpisów", "keyboard_shortcuts.profile": "aby przejść do profilu autora wpisu", "keyboard_shortcuts.reply": "aby odpowiedzieć", - "keyboard_shortcuts.requests": "aby przejść do listy próśb o możliwość śledzenia", + "keyboard_shortcuts.requests": "aby przejść do listy próśb o możliwość obserwacji", "keyboard_shortcuts.search": "aby przejść do pola wyszukiwania", "keyboard_shortcuts.spoilers": "aby pokazać/ukryć pole CW", "keyboard_shortcuts.start": "aby otworzyć kolumnę „Rozpocznij”", @@ -339,7 +339,7 @@ "lightbox.next": "Następne", "lightbox.previous": "Poprzednie", "limited_account_hint.action": "Pokaż profil mimo wszystko", - "limited_account_hint.title": "Ten profil został ukryty przez moderatorów Twojego serwera.", + "limited_account_hint.title": "Ten profil został ukryty przez moderatorów {domain}.", "lists.account.add": "Dodaj do listy", "lists.account.remove": "Usunąć z listy", "lists.delete": "Usuń listę", @@ -351,7 +351,7 @@ "lists.replies_policy.list": "Członkowie listy", "lists.replies_policy.none": "Nikt", "lists.replies_policy.title": "Pokazuj odpowiedzi dla:", - "lists.search": "Szukaj wśród osób które śledzisz", + "lists.search": "Szukaj wśród osób które obserwujesz", "lists.subheading": "Twoje listy", "load_pending": "{count, plural, one {# nowa pozycja} other {nowe pozycje}}", "loading_indicator.label": "Ładowanie…", @@ -361,7 +361,7 @@ "mute_modal.duration": "Czas", "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "mute_modal.indefinite": "Nieokreślony", - "navigation_bar.about": "O...", + "navigation_bar.about": "O serwerze", "navigation_bar.blocks": "Zablokowani użytkownicy", "navigation_bar.bookmarks": "Zakładki", "navigation_bar.community_timeline": "Lokalna oś czasu", @@ -373,8 +373,8 @@ "navigation_bar.explore": "Odkrywaj", "navigation_bar.favourites": "Ulubione", "navigation_bar.filters": "Wyciszone słowa", - "navigation_bar.follow_requests": "Prośby o śledzenie", - "navigation_bar.follows_and_followers": "Śledzeni i śledzący", + "navigation_bar.follow_requests": "Prośby o obserwację", + "navigation_bar.follows_and_followers": "Obserwowani i obserwujący", "navigation_bar.lists": "Listy", "navigation_bar.logout": "Wyloguj", "navigation_bar.mutes": "Wyciszeni użytkownicy", @@ -388,8 +388,8 @@ "notification.admin.report": "{name} zgłosił {target}", "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", - "notification.follow": "{name} zaczął(-ęła) Cię śledzić", - "notification.follow_request": "{name} poprosił(a) o możliwość śledzenia Cię", + "notification.follow": "{name} zaobserwował(a) Cię", + "notification.follow_request": "{name} poprosił(a) o możliwość obserwacji Cię", "notification.mention": "{name} wspomniał(a) o tobie", "notification.own_poll": "Twoje głosowanie zakończyło się", "notification.poll": "Głosowanie w którym brałeś(-aś) udział zakończyło się", @@ -405,8 +405,8 @@ "notifications.column_settings.filter_bar.advanced": "Wyświetl wszystkie kategorie", "notifications.column_settings.filter_bar.category": "Szybkie filtrowanie", "notifications.column_settings.filter_bar.show_bar": "Pokaż filtry", - "notifications.column_settings.follow": "Nowi śledzący:", - "notifications.column_settings.follow_request": "Nowe prośby o możliwość śledzenia:", + "notifications.column_settings.follow": "Nowi obserwujący:", + "notifications.column_settings.follow_request": "Nowe prośby o możliwość obserwacji:", "notifications.column_settings.mention": "Wspomnienia:", "notifications.column_settings.poll": "Wyniki głosowania:", "notifications.column_settings.push": "Powiadomienia push", @@ -420,7 +420,7 @@ "notifications.filter.all": "Wszystkie", "notifications.filter.boosts": "Podbicia", "notifications.filter.favourites": "Ulubione", - "notifications.filter.follows": "Śledzenia", + "notifications.filter.follows": "Obserwacje", "notifications.filter.mentions": "Wspomienia", "notifications.filter.polls": "Wyniki głosowania", "notifications.filter.statuses": "Aktualizacje od osób które obserwujesz", @@ -446,8 +446,8 @@ "privacy.change": "Dostosuj widoczność wpisów", "privacy.direct.long": "Widoczny tylko dla wspomnianych", "privacy.direct.short": "Tylko wspomniane osoby", - "privacy.private.long": "Widoczny tylko dla osób, które Cię śledzą", - "privacy.private.short": "Tylko śledzący", + "privacy.private.long": "Widoczny tylko dla osób, które Cię obserwują", + "privacy.private.short": "Tylko obserwujący", "privacy.public.long": "Widoczne dla każdego", "privacy.public.short": "Publiczny", "privacy.unlisted.long": "Widoczne dla każdego, z wyłączeniem funkcji odkrywania", @@ -470,7 +470,7 @@ "relative_time.today": "dzisiaj", "reply_indicator.cancel": "Anuluj", "report.block": "Zablokuj", - "report.block_explanation": "Nie zobaczysz ich postów. Nie będą mogli zobaczyć Twoich postów ani cię śledzić. Będą mogli domyślić się, że są zablokowani.", + "report.block_explanation": "Nie zobaczysz ich postów. Nie będą mogli zobaczyć Twoich postów ani cię obserwować. Będą mogli domyślić się, że są zablokowani.", "report.categories.other": "Inne", "report.categories.spam": "Spam", "report.categories.violation": "Zawartość narusza co najmniej jedną zasadę serwera", @@ -483,7 +483,7 @@ "report.forward": "Przekaż na {target}", "report.forward_hint": "To konto znajduje się na innej instancji. Czy chcesz wysłać anonimową kopię zgłoszenia rnież na nią?", "report.mute": "Wycisz", - "report.mute_explanation": "Nie zobaczysz ich wpisów. Mimo to będą mogli wciąż śledzić cię i widzieć twoje wpisy, ale nie będą widzieli, że są wyciszeni.", + "report.mute_explanation": "Nie zobaczysz ich wpisów. Mimo to będą mogli wciąż obserwować cię i widzieć twoje wpisy, ale nie będą widzieli, że są wyciszeni.", "report.next": "Dalej", "report.placeholder": "Dodatkowe komentarze", "report.reasons.dislike": "Nie podoba mi się to", @@ -504,15 +504,15 @@ "report.thanks.take_action_actionable": "W trakcie jak będziemy się przyglądać tej sprawie, możesz podjąć akcje przeciwko @{name}:", "report.thanks.title": "Nie chcesz tego widzieć?", "report.thanks.title_actionable": "Dziękujemy za zgłoszenie. Przyjrzymy się tej sprawie.", - "report.unfollow": "Przestań śledzić @{name}", - "report.unfollow_explanation": "Śledzisz to konto. Jeśli nie chcesz już widzieć postów z tego konta w swojej głównej osi czasu, przestań je śledzić.", + "report.unfollow": "Przestań obserwować @{name}", + "report.unfollow_explanation": "Obserwujesz to konto. Jeśli nie chcesz już widzieć postów z tego konta w swojej głównej osi czasu, przestań je obserwować.", "report_notification.attached_statuses": "{count, plural, one {{count} wpis} few {{count} wpisy} many {{counter} wpisów} other {{counter} wpisów}}", "report_notification.categories.other": "Inne", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Naruszenie zasad", "report_notification.open": "Otwórz raport", "search.placeholder": "Szukaj", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Wyszukaj lub wklej adres", "search_popout.search_format": "Zaawansowane wyszukiwanie", "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.", "search_popout.tips.hashtag": "hasztag", @@ -604,8 +604,8 @@ "time_remaining.moments": "Pozostała chwila", "time_remaining.seconds": "{number, plural, one {Pozostała # sekunda} few {Pozostały # sekundy} many {Pozostało # sekund} other {Pozostało # sekund}}", "timeline_hint.remote_resource_not_displayed": "{resource} z innych serwerów nie są wyświetlane.", - "timeline_hint.resources.followers": "Śledzący", - "timeline_hint.resources.follows": "Śledzeni", + "timeline_hint.resources.followers": "Obserwujący", + "timeline_hint.resources.follows": "Obserwowani", "timeline_hint.resources.statuses": "Starsze wpisy", "trends.counter_by_accounts": "{count, plural, one {jedna osoba} few {{count} osoby} many {{count} osób} other {{counter} ludzie}} w ciągu {days, plural, one {ostatniego dnia} other {ostatnich {days} dni}}", "trends.trending_now": "Popularne teraz", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Przygotowywanie OCR…", "upload_modal.preview_label": "Podgląd ({ratio})", "upload_progress.label": "Wysyłanie…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Przetwarzanie…", "video.close": "Zamknij film", "video.download": "Pobierz plik", "video.exit_fullscreen": "Opuść tryb pełnoekranowy", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index db4367bcdc..7e1610e629 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.blocks": "Servidores moderados", + "about.contact": "Contato:", + "about.disclaimer": "Mastodon é um software de código aberto e livre, e uma marca registrada de Mastodon gGmbH.", + "about.domain_blocks.comment": "Motivo", + "about.domain_blocks.domain": "Domínio", + "about.domain_blocks.preamble": "Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", + "about.domain_blocks.severity": "Gravidade", + "about.domain_blocks.silenced.explanation": "Você geralmente não verá perfis e conteúdo deste servidor, a menos que você o procure explicitamente ou opte por seguir.", + "about.domain_blocks.silenced.title": "Limitado", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Regras do servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Adicionar ou remover de listas", "account.badges.bot": "Robô", @@ -30,7 +30,7 @@ "account.endorse": "Recomendar", "account.featured_tags.last_status_at": "Last post on {date}", "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.title": "Marcadores em destaque de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Nada aqui.", @@ -40,8 +40,8 @@ "account.follows.empty": "Nada aqui.", "account.follows_you": "te segue", "account.hide_reblogs": "Ocultar boosts de @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Entrou", + "account.languages": "Mudar idiomas inscritos", "account.link_verified_on": "link verificado em {date}", "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.", "account.media": "Mídia", @@ -77,27 +77,27 @@ "alert.unexpected.title": "Eita!", "announcement.announcement": "Comunicados", "attachments_list.unprocessed": "(não processado)", - "audio.hide": "Hide audio", + "audio.hide": "Ocultar áudio", "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiar erro de informe", + "bundle_column_error.error.body": "A página solicitada não pode ser renderizada. Pode ser devido a um bug em nosso código, ou um problema de compatibilidade do navegador.", + "bundle_column_error.error.title": "Ah, não!", + "bundle_column_error.network.body": "Houve um erro ao tentar carregar esta página. Isso pode ser devido a um problema temporário com sua conexão de internet ou deste servidor.", + "bundle_column_error.network.title": "Erro de rede", "bundle_column_error.retry": "Tente novamente", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", - "bundle_column_error.routing.title": "404", + "bundle_column_error.return": "Voltar à página inicial", + "bundle_column_error.routing.body": "A página solicitada não foi encontrada. Tem certeza de que a URL na barra de endereços está correta?", + "bundle_column_error.routing.title": "Erro 404", "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Erro ao carregar este componente.", "bundle_modal_error.retry": "Tente novamente", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Como o Mastodon é descentralizado, você pode criar uma conta em outra instância e ainda pode interagir com esta.", + "closed_registrations_modal.description": "Não é possível criar uma conta em {domain} no momento, mas atente que você não precisa de uma conta especificamente em {domain} para usar o Mastodon.", + "closed_registrations_modal.find_another_server": "Encontrar outra instância", + "closed_registrations_modal.preamble": "O Mastodon é descentralizado, não importa onde você crie sua conta, você poderá seguir e interagir com qualquer pessoa nesta instância. Você pode até mesmo criar sua própria instância!", + "closed_registrations_modal.title": "Inscrevendo-se no Mastodon", + "column.about": "Sobre", "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", "column.community": "Linha local", @@ -150,8 +150,8 @@ "confirmations.block.block_and_report": "Bloquear e denunciar", "confirmations.block.confirm": "Bloquear", "confirmations.block.message": "Você tem certeza de que deseja bloquear {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Cancelar a solicitação", + "confirmations.cancel_follow_request.message": "Tem certeza de que deseja cancelar seu pedido para seguir {name}?", "confirmations.delete.confirm": "Excluir", "confirmations.delete.message": "Você tem certeza de que deseja excluir este toot?", "confirmations.delete_list.confirm": "Excluir", @@ -175,18 +175,18 @@ "conversation.mark_as_read": "Marcar como lida", "conversation.open": "Ver conversa", "conversation.with": "Com {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiado", + "copypaste.copy": "Copiar", "directory.federated": "Do fediverso conhecido", "directory.local": "Somente de {domain}", "directory.new_arrivals": "Acabaram de chegar", "directory.recently_active": "Ativos recentemente", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes das pessoas cujas contas são hospedadas por {domain}.", + "dismissable_banner.dismiss": "Dispensar", + "dismissable_banner.explore_links": "Estas novas histórias estão sendo contadas por pessoas nesta e em outras instâncias da rede descentralizada no momento.", + "dismissable_banner.explore_statuses": "Estas publicações desta e de outras instâncias na rede descentralizada estão ganhando popularidade na instância agora.", + "dismissable_banner.explore_tags": "Estes marcadores estão ganhando popularidade entre pessoas desta e de outras instâncias da rede descentralizada no momento.", + "dismissable_banner.public_timeline": "Estas são as publicações mais recentes de pessoas desta e de outras instâncias da rede descentralizada que esta instância conhece.", "embed.instructions": "Incorpore este toot no seu site ao copiar o código abaixo.", "embed.preview": "Aqui está como vai ficar:", "emoji_button.activity": "Atividade", @@ -237,19 +237,19 @@ "explore.trending_links": "Notícias", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "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": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", + "filter_modal.added.expired_title": "Filtro expirado!", + "filter_modal.added.review_and_configure": "Para revisar e configurar ainda mais esta categoria de filtro, vá até {settings_link}.", + "filter_modal.added.review_and_configure_title": "Configuraçõ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!", + "filter_modal.select_filter.context_mismatch": "não se aplica a este contexto", + "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 an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", @@ -259,13 +259,13 @@ "follow_request.authorize": "Aprovar", "follow_request.reject": "Recusar", "follow_requests.unlocked_explanation": "Apesar de seu perfil não ser trancado, {domain} exige que você revise a solicitação para te seguir destes perfis manualmente.", - "footer.about": "About", + "footer.about": "Sobre", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.get_app": "Baixe o app", + "footer.invite": "Convidar pessoas", + "footer.keyboard_shortcuts": "Atalhos de teclado", + "footer.privacy_policy": "Política de privacidade", + "footer.source_code": "Exibir código-fonte", "generic.saved": "Salvo", "getting_started.heading": "Primeiros passos", "hashtag.column_header.tag_mode.all": "e {additional}", @@ -288,14 +288,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "Em um servidor diferente", + "interaction_modal.on_this_server": "Neste servidor", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "Seguir {name}", "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reply": "Responder à publicação de {name}", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -339,7 +339,7 @@ "lightbox.next": "Próximo", "lightbox.previous": "Anterior", "limited_account_hint.action": "Exibir perfil mesmo assim", - "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores do seu servidor.", + "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores do {domain}.", "lists.account.add": "Adicionar à lista", "lists.account.remove": "Remover da lista", "lists.delete": "Excluir lista", @@ -361,7 +361,7 @@ "mute_modal.duration": "Duração", "mute_modal.hide_notifications": "Ocultar notificações deste usuário?", "mute_modal.indefinite": "Indefinido", - "navigation_bar.about": "About", + "navigation_bar.about": "Sobre", "navigation_bar.blocks": "Usuários bloqueados", "navigation_bar.bookmarks": "Salvos", "navigation_bar.community_timeline": "Linha do tempo local", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Toots fixados", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Linha global", - "navigation_bar.search": "Search", + "navigation_bar.search": "Buscar", "navigation_bar.security": "Segurança", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} denunciou {target}", @@ -398,7 +398,7 @@ "notification.update": "{name} editou uma publicação", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Novos relatórios:", "notifications.column_settings.admin.sign_up": "Novas inscrições:", "notifications.column_settings.alert": "Notificações no computador", "notifications.column_settings.favourite": "Favoritos:", @@ -452,8 +452,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visível para todos, mas desativou os recursos de descoberta", "privacy.unlisted.short": "Não-listado", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Última atualização {date}", + "privacy_policy.title": "Política de Privacidade", "refresh": "Atualizar", "regeneration_indicator.label": "Carregando…", "regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!", @@ -506,13 +506,13 @@ "report.thanks.title_actionable": "Obrigado por reportar. Vamos analisar.", "report.unfollow": "Deixar de seguir @{name}", "report.unfollow_explanation": "Você está seguindo esta conta. Para não mais ver os posts dele em sua página inicial, deixe de segui-lo.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", + "report_notification.attached_statuses": "{count, plural, one {{count} publicação} other {{count} publicações}} anexada(s)", "report_notification.categories.other": "Outro", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir relatório", "search.placeholder": "Pesquisar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Buscar ou colar URL", "search_popout.search_format": "Formato de pesquisa avançada", "search_popout.tips.full_text": "Texto simples retorna toots que você escreveu, favoritou, deu boost, ou em que foi mencionado, assim como nomes de usuário e de exibição, e hashtags correspondentes.", "search_popout.tips.hashtag": "hashtag", @@ -525,17 +525,17 @@ "search_results.nothing_found": "Não foi possível encontrar nada para estes termos de busca", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.", - "search_results.title": "Search for {q}", + "search_results.title": "Buscar {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Pessoas usando esta instância durante os últimos 30 dias (Usuários Ativos Mensalmente)", + "server_banner.active_users": "usuários ativos", + "server_banner.administered_by": "Administrado por:", + "server_banner.introduction": "{domain} faz parte da rede social descentralizada desenvolvida por {mastodon}.", + "server_banner.learn_more": "Saiba mais", + "server_banner.server_stats": "Estatísticas da instância:", + "sign_in_banner.create_account": "Criar conta", + "sign_in_banner.sign_in": "Entrar", + "sign_in_banner.text": "Entre para seguir perfis ou marcadores, favoritar, compartilhar e responder publicações, interagir a partir da sua conta em uma instância diferente.", "status.admin_account": "Abrir interface de moderação para @{name}", "status.admin_status": "Abrir este toot na interface de moderação", "status.block": "Bloquear @{name}", @@ -551,9 +551,9 @@ "status.edited_x_times": "Editado {count, plural, one {{count} hora} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Favoritar", - "status.filter": "Filter this post", + "status.filter": "Filtrar esta publicação", "status.filtered": "Filtrado", - "status.hide": "Hide toot", + "status.hide": "Ocultar publicação", "status.history.created": "{name} criou {date}", "status.history.edited": "{name} editou {date}", "status.load_more": "Ver mais", @@ -572,26 +572,26 @@ "status.reblogs.empty": "Nada aqui. Quando alguém der boost, o usuário aparecerá aqui.", "status.redraft": "Excluir e rascunhar", "status.remove_bookmark": "Remover do Salvos", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Em resposta a {name}", "status.reply": "Responder", "status.replyAll": "Responder a conversa", "status.report": "Denunciar @{name}", "status.sensitive_warning": "Mídia sensível", "status.share": "Compartilhar", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Mostrar de qualquer maneira", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos em tudo", "status.show_more": "Mostrar mais", "status.show_more_all": "Mostrar mais em tudo", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Mostrar original", + "status.translate": "Traduzir", + "status.translated_from_with": "Traduzido do {lang} usando {provider}", "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Dessilenciar conversa", "status.unpin": "Desafixar", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Apenas publicações nos idiomas selecionados irão aparecer na sua página inicial e outras linhas do tempo após a mudança. Selecione nenhum para receber publicações em todos os idiomas.", + "subscribed_languages.save": "Salvar alterações", + "subscribed_languages.target": "Alterar idiomas inscritos para {target}", "suggestions.dismiss": "Ignorar sugestão", "suggestions.header": "Talvez seja do teu interesse…", "tabs_bar.federated_timeline": "Linha global", @@ -607,7 +607,7 @@ "timeline_hint.resources.followers": "Seguidores", "timeline_hint.resources.follows": "Segue", "timeline_hint.resources.statuses": "Toots anteriores", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} no(s) último(s) {days, plural, one {dia} other {{days} dias}}", "trends.trending_now": "Em alta agora", "ui.beforeunload": "Seu rascunho será perdido se sair do Mastodon.", "units.short.billion": "{count} bi", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Prévia ({ratio})", "upload_progress.label": "Enviando...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Processando…", "video.close": "Fechar vídeo", "video.download": "Baixar", "video.exit_fullscreen": "Sair da tela cheia", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index ea60d7622f..48b705e088 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon é um software livre, de código aberto e uma marca registada do Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Domínio", "about.domain_blocks.preamble": "Mastodon geralmente permite que veja e interaja com o conteúdo de utilizadores de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rejeitar", "follow_requests.unlocked_explanation": "Apesar de a sua não ser privada, a administração de {domain} pensa que poderá querer rever manualmente os pedidos de seguimento dessas contas.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Sobre", + "footer.directory": "Diretório de perfis", + "footer.get_app": "Obtém a aplicação", + "footer.invite": "Convidar pessoas", + "footer.keyboard_shortcuts": "Atalhos do teclado", + "footer.privacy_policy": "Política de privacidade", + "footer.source_code": "Ver código-fonte", "generic.saved": "Salvo", "getting_started.heading": "Primeiros passos", "hashtag.column_header.tag_mode.all": "e {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Próximo", "lightbox.previous": "Anterior", "limited_account_hint.action": "Exibir perfil mesmo assim", - "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores do seu servidor.", + "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores de {domain}.", "lists.account.add": "Adicionar à lista", "lists.account.remove": "Remover da lista", "lists.delete": "Eliminar lista", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Violação de regra", "report_notification.open": "Abrir denúncia", "search.placeholder": "Pesquisar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Pesquisar ou introduzir URL", "search_popout.search_format": "Formato avançado de pesquisa", "search_popout.tips.full_text": "Texto simples devolve publicações que escreveu, marcou como favorita, partilhou ou em que foi mencionado, tal como nomes de utilizador, alcunhas e hashtags.", "search_popout.tips.hashtag": "hashtag", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "A preparar OCR…", "upload_modal.preview_label": "Pré-visualizar ({ratio})", "upload_progress.label": "A enviar...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "A processar…", "video.close": "Fechar vídeo", "video.download": "Descarregar ficheiro", "video.exit_fullscreen": "Sair de full screen", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 2ccd7f6c55..d3531da428 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -339,7 +339,7 @@ "lightbox.next": "Înainte", "lightbox.previous": "Înapoi", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Adaugă în listă", "lists.account.remove": "Elimină din listă", "lists.delete": "Șterge lista", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 985a6bdd21..90ecd65d45 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -1,7 +1,7 @@ { "about.blocks": "Модерируемые серверы", "about.contact": "Контакты:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon — бесплатное программным обеспечением с открытым исходным кодом и торговой маркой Mastodon gGmbH.", "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домен", "about.domain_blocks.preamble": "Mastodon обычно позволяет просматривать содержимое и взаимодействовать с другими пользователями любых серверов в Федиверсе. Вот исключения, сделанные конкретно для этого сервера.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Авторизовать", "follow_request.reject": "Отказать", "follow_requests.unlocked_explanation": "Этот запрос отправлен с учётной записи, для которой администрация {domain} включила ручную проверку подписок.", - "footer.about": "About", + "footer.about": "О проекте", "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.get_app": "Скачать приложение", + "footer.invite": "Пригласить людей", + "footer.keyboard_shortcuts": "Сочетания клавиш", + "footer.privacy_policy": "Политика конфиденциальности", + "footer.source_code": "Исходный код", "generic.saved": "Сохранено", "getting_started.heading": "Начать", "hashtag.column_header.tag_mode.all": "и {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Далее", "lightbox.previous": "Назад", "limited_account_hint.action": "Все равно показать профиль", - "limited_account_hint.title": "Этот профиль был скрыт модераторами вашего сервера.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Добавить в список", "lists.account.remove": "Убрать из списка", "lists.delete": "Удалить список", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Нарушение правил", "report_notification.open": "Подать жалобу", "search.placeholder": "Поиск", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Поиск или вставка URL-адреса", "search_popout.search_format": "Продвинутый формат поиска", "search_popout.tips.full_text": "Поиск по простому тексту отобразит посты, которые вы написали, добавили в избранное, продвинули или в которых были упомянуты, а также подходящие имена пользователей и хэштеги.", "search_popout.tips.hashtag": "хэштег", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Подготовка распознования…", "upload_modal.preview_label": "Предпросмотр ({ratio})", "upload_progress.label": "Загрузка...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Обработка…", "video.close": "Закрыть видео", "video.download": "Загрузить файл", "video.exit_fullscreen": "Покинуть полноэкранный режим", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index b53a0154fc..06aac9ecef 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 80879eac07..255ebe131d 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -339,7 +339,7 @@ "lightbox.next": "Imbeniente", "lightbox.previous": "Pretzedente", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Agiunghe a sa lista", "lists.account.remove": "Boga dae sa lista", "lists.delete": "Cantzella sa lista", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 8d0bccd164..93032eae55 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -339,7 +339,7 @@ "lightbox.next": "ඊළඟ", "lightbox.previous": "පෙර", "limited_account_hint.action": "කෙසේ හෝ පැතිකඩ පෙන්වන්න", - "limited_account_hint.title": "මෙම පැතිකඩ ඔබගේ සේවාදායකයේ පරිපාලකයින් විසින් සඟවා ඇත.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "ලේඛනයට දමන්න", "lists.account.remove": "ලේඛනයෙන් ඉවතලන්න", "lists.delete": "ලේඛනය මකන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 8193153995..36d8c27c7f 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -339,7 +339,7 @@ "lightbox.next": "Ďalšie", "lightbox.previous": "Predchádzajúci", "limited_account_hint.action": "Ukáž profil aj tak", - "limited_account_hint.title": "Tento profil bol ukrytý správcami tvojho servera.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Pridaj do zoznamu", "lists.account.remove": "Odober zo zoznamu", "lists.delete": "Vymaž list", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 783da79326..77ede79d2f 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderirani strežniki", "about.contact": "Stik:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon je prosto, odprto-kodno programje in blagovna znamka Mastodon gGmbH.", "about.domain_blocks.comment": "Razlog", "about.domain_blocks.domain": "Domena", "about.domain_blocks.preamble": "Mastodon vam splošno omogoča ogled vsebin in interakcijo z uporabniki iz vseh drugih strežnikov v fediverzumu. To so izjeme, opravljene na tem strežniku.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Overi", "follow_request.reject": "Zavrni", "follow_requests.unlocked_explanation": "Čeprav vaš račun ni zaklenjen, zaposleni pri {domain} menijo, da bi morda želeli pregledati zahteve za sledenje teh računov ročno.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "O Mastodonu", + "footer.directory": "Imenik profilov", + "footer.get_app": "Prenesite aplikacijo", + "footer.invite": "Povabite osebe", + "footer.keyboard_shortcuts": "Tipkovne bližnjice", + "footer.privacy_policy": "Pravilnik o zasebnosti", + "footer.source_code": "Pokaži izvorno kodo", "generic.saved": "Shranjeno", "getting_started.heading": "Kako začeti", "hashtag.column_header.tag_mode.all": "in {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Naslednji", "lightbox.previous": "Prejšnji", "limited_account_hint.action": "Vseeno pokaži profil", - "limited_account_hint.title": "Profil so moderatorji vašega strežnika skrili.", + "limited_account_hint.title": "Profil so moderatorji strežnika {domain} skrili.", "lists.account.add": "Dodaj na seznam", "lists.account.remove": "Odstrani s seznama", "lists.delete": "Izbriši seznam", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Kršitev pravila", "report_notification.open": "Odpri prijavo", "search.placeholder": "Iskanje", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Iščite ali prilepite URL", "search_popout.search_format": "Napredna oblika iskanja", "search_popout.tips.full_text": "Enostavno besedilo vrne objave, ki ste jih napisali, vzljubili, izpostavili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.", "search_popout.tips.hashtag": "ključnik", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Priprava optične prepoznave znakov (OCR) ...", "upload_modal.preview_label": "Predogled ({ratio})", "upload_progress.label": "Pošiljanje...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Obdelovanje …", "video.close": "Zapri video", "video.download": "Prenesi datoteko", "video.exit_fullscreen": "Izhod iz celozaslonskega načina", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index f82b49b7f3..21442c856f 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -1,7 +1,7 @@ { "about.blocks": "Shërbyes të moderuar", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon-i është software i lirë, me burim të hapët dhe shenjë tregtare e Mastodon gGmbH.", "about.domain_blocks.comment": "Arsye", "about.domain_blocks.domain": "Përkatësi", "about.domain_blocks.preamble": "Mastodon-i ju lë përgjithësisht të shihni lëndë prej përdoruesish dhe të ndërveproni me ta nga cilido shërbyes tjetër qofshin në fedivers. Ka përjashtime që janë bërë në këtë shërbyes të dhënë.", @@ -21,16 +21,16 @@ "account.block_domain": "Blloko përkatësinë {domain}", "account.blocked": "E bllokuar", "account.browse_more_on_origin_server": "Shfletoni më tepër rreth profilit origjinal", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Tërhiq mbrapsht kërkesë për ndjekje", "account.direct": "Mesazh i drejtpërdrejtë për @{name}", "account.disable_notifications": "Resht së njoftuari mua, kur poston @{name}", "account.domain_blocked": "Përkatësia u bllokua", "account.edit_profile": "Përpunoni profilin", "account.enable_notifications": "Njoftomë, kur poston @{name}", "account.endorse": "Pasqyrojeni në profil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Postimi i fundit më {date}", + "account.featured_tags.last_status_never": "Pa postime", + "account.featured_tags.title": "Hashtagë të zgjedhur të {name}", "account.follow": "Ndiqeni", "account.followers": "Ndjekës", "account.followers.empty": "Këtë përdorues ende s’e ndjek kush.", @@ -40,7 +40,7 @@ "account.follows.empty": "Ky përdorues ende s’ndjek kënd.", "account.follows_you": "Ju ndjek", "account.hide_reblogs": "Fshih përforcime nga @{name}", - "account.joined_short": "Joined", + "account.joined_short": "U bë pjesë", "account.languages": "Ndryshoni gjuhë pajtimesh", "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}", "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", @@ -80,23 +80,23 @@ "audio.hide": "Fshihe audion", "autosuggest_hashtag.per_week": "{count} për javë", "boost_modal.combo": "Që kjo të anashkalohet herës tjetër, mund të shtypni {combo}", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopjo raportim gabimi", + "bundle_column_error.error.body": "Faqja e kërkuar s’u vizatua dot. Kjo mund të vijë nga një e metë në kodin tonë, ose nga një problem përputhshmërie i shfletuesit.", + "bundle_column_error.error.title": "Oh, mos!", + "bundle_column_error.network.body": "Pati një gabim teksa provohej të ngarkohej kjo faqe. Kjo mund të vijë për shkak të një problemi të përkohshëm me lidhjen tuaj internet ose me këtë shërbyes.", + "bundle_column_error.network.title": "Gabim rrjeti", "bundle_column_error.retry": "Riprovoni", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Shko mbrapsht te kreu", + "bundle_column_error.routing.body": "Faqja e kërkuar s’u gjet dot. Jeni i sigurt se URL-ja te shtylla e adresave është e saktë?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Mbylle", "bundle_modal_error.message": "Diç shkoi ters teksa ngarkohej ky përbërës.", "bundle_modal_error.retry": "Riprovoni", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations.other_server_instructions": "Ngaqë Mastodon-i është i decentralizuar, mund të krijoni një llogari në një tjetër shërbyes dhe prapë të ndëveproni me këtë këtu.", + "closed_registrations_modal.description": "Krijimi i një llogarie te {domain} aktualisht është i pamundur, por kini parasysh se s’keni nevojë për një llogari posaçërisht në {domain} që të përdorni Mastodon-in.", + "closed_registrations_modal.find_another_server": "Gjeni shërbyes tjetër", + "closed_registrations_modal.preamble": "Mastodon-i është i decentralizuar, ndaj pavarësisht se ku krijoni llogarinë tuaj, do të jeni në gjendje të ndiqni dhe ndërveproni me këdo në këtë shërbyes. Mundeni madje edhe ta strehoni ju vetë!", + "closed_registrations_modal.title": "Po regjistroheni në Mastodon", "column.about": "Mbi", "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", @@ -150,8 +150,8 @@ "confirmations.block.block_and_report": "Bllokojeni & Raportojeni", "confirmations.block.confirm": "Bllokoje", "confirmations.block.message": "Jeni i sigurt se doni të bllokohet {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Tërhiqeni mbrapsht kërkesën", + "confirmations.cancel_follow_request.message": "Jeni i sigurt se doni të tërhiqni mbrapsht kërkesën tuaj për ndjekje të {name}?", "confirmations.delete.confirm": "Fshije", "confirmations.delete.message": "Jeni i sigurt se doni të fshihet kjo gjendje?", "confirmations.delete_list.confirm": "Fshije", @@ -259,13 +259,13 @@ "follow_request.authorize": "Autorizoje", "follow_request.reject": "Hidhe tej", "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Mbi", + "footer.directory": "Drejtori profilesh", + "footer.get_app": "Merreni aplikacionin", + "footer.invite": "Ftoni njerëz", + "footer.keyboard_shortcuts": "Shkurtore tastiere", + "footer.privacy_policy": "Rregulla privatësie", + "footer.source_code": "Shihni kodin burim", "generic.saved": "U ruajt", "getting_started.heading": "Si t’ia fillohet", "hashtag.column_header.tag_mode.all": "dhe {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Pasuesja", "lightbox.previous": "E mëparshmja", "limited_account_hint.action": "Shfaqe profilin sido qoftë", - "limited_account_hint.title": "Ky profil është fshehur nga moderatorët e shërbyesit tuaj.", + "limited_account_hint.title": "Ky profil është fshehur nga moderatorët e {domain}.", "lists.account.add": "Shto në listë", "lists.account.remove": "Hiqe nga lista", "lists.delete": "Fshije listën", @@ -382,7 +382,7 @@ "navigation_bar.pins": "Mesazhe të fiksuar", "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", - "navigation_bar.search": "Search", + "navigation_bar.search": "Kërkoni", "navigation_bar.security": "Siguri", "not_signed_in_indicator.not_signed_in": "Që të përdorni këtë burim, lypset të bëni hyrjen.", "notification.admin.report": "{name} raportoi {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Cenim rregullash", "report_notification.open": "Hape raportimin", "search.placeholder": "Kërkoni", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Kërkoni, ose hidhni një URL", "search_popout.search_format": "Format kërkimi të mëtejshëm", "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me mesazhe që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtag-ë që kanë përputhje me termin e kërkimit.", "search_popout.tips.hashtag": "hashtag", @@ -572,7 +572,7 @@ "status.reblogs.empty": "Këtë mesazh s’e ka përforcuar njeri deri tani. Kur ta bëjë dikush, kjo do të duket këtu.", "status.redraft": "Fshijeni & rihartojeni", "status.remove_bookmark": "Hiqe faqerojtësin", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Iu përgjigj {name}", "status.reply": "Përgjigjuni", "status.replyAll": "Përgjigjuni rrjedhës", "status.report": "Raportojeni @{name}", @@ -585,7 +585,7 @@ "status.show_more_all": "Shfaq më tepër për të tërë", "status.show_original": "Shfaq origjinalin", "status.translate": "Përktheje", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "Përkthyer nga {lang} duke përdorur {provider}", "status.uncached_media_warning": "Jo e passhme", "status.unmute_conversation": "Ktheji zërin bisedës", "status.unpin": "Shfiksoje nga profili", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Po përgatitet OCR-ja…", "upload_modal.preview_label": "Paraparje ({ratio})", "upload_progress.label": "Po ngarkohet…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Po përpunon…", "video.close": "Mbylle videon", "video.download": "Shkarkoje kartelën", "video.exit_fullscreen": "Dil nga mënyra Sa Krejt Ekrani", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 8df13a0f15..510944d6d6 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -339,7 +339,7 @@ "lightbox.next": "Sledeći", "lightbox.previous": "Prethodni", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Dodaj na listu", "lists.account.remove": "Ukloni sa liste", "lists.delete": "Obriši listu", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 4b80f15217..c5e24c1bc1 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -339,7 +339,7 @@ "lightbox.next": "Следећи", "lightbox.previous": "Претходни", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Додај на листу", "lists.account.remove": "Уклони са листе", "lists.delete": "Обриши листу", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 91a4a07961..07e75ec448 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -1,36 +1,36 @@ { "about.blocks": "Modererade servrar", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Skäl", + "about.disclaimer": "Mastodon är fri programvara med öppen källkod och ett varumärke tillhörande Mastodon gGmbH.", + "about.domain_blocks.comment": "Anledning", "about.domain_blocks.domain": "Domän", - "about.domain_blocks.preamble": "Mastodon låter dig i allmänhet visa innehåll från och interagera med användare från någon annan server i fediverse. Dessa är de undantag som har gjorts på just denna server.", + "about.domain_blocks.preamble": "Mastodon låter dig i allmänhet visa innehåll från, och interagera med, användare från andra servrar i fediversumet. Dessa är undantagen som gjorts på just denna server.", "about.domain_blocks.severity": "Allvarlighetsgrad", - "about.domain_blocks.silenced.explanation": "Du kommer i allmänhet inte att se profiler och innehåll från denna server, om du inte uttryckligen slå upp eller välja in det genom att följa.", + "about.domain_blocks.silenced.explanation": "Du kommer i allmänhet inte att se profiler och innehåll från denna server, om du inte uttryckligen slår upp eller samtycker till det genom att följa.", "about.domain_blocks.silenced.title": "Begränsat", - "about.domain_blocks.suspended.explanation": "Ingen data från denna server kommer bearbetas, lagras eller bytas ut vilket omöjliggör kommunikation med användare från denna serverdator.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.explanation": "Inga data från denna server kommer behandlas, lagras eller bytas ut, vilket omöjliggör kommunikation med användare på denna server.", + "about.domain_blocks.suspended.title": "Avstängd", "about.not_available": "Denna information har inte gjorts tillgänglig på denna server.", - "about.powered_by": "Decentraliserade sociala medier drivna av {mastodon}", + "about.powered_by": "Decentraliserat socialt medium drivet av {mastodon}", "about.rules": "Serverregler", "account.account_note_header": "Anteckning", "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor", "account.badges.bot": "Robot", "account.badges.group": "Grupp", "account.block": "Blockera @{name}", - "account.block_domain": "Dölj allt från {domain}", + "account.block_domain": "Blockera domänen {domain}", "account.blocked": "Blockerad", - "account.browse_more_on_origin_server": "Läs mer på original profilen", - "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Skicka ett direktmeddelande till @{name}", - "account.disable_notifications": "Sluta meddela mig när @{name} tutar", - "account.domain_blocked": "Domän dold", + "account.browse_more_on_origin_server": "Läs mer på den ursprungliga profilen", + "account.cancel_follow_request": "Återkalla följförfrågan", + "account.direct": "Skicka direktmeddelande till @{name}", + "account.disable_notifications": "Sluta notifiera mig när @{name} gör inlägg", + "account.domain_blocked": "Domän blockerad", "account.edit_profile": "Redigera profil", - "account.enable_notifications": "Meddela mig när @{name} tutar", + "account.enable_notifications": "Notifiera mig när @{name} gör inlägg", "account.endorse": "Visa på profil", "account.featured_tags.last_status_at": "Senaste inlägg den {date}", "account.featured_tags.last_status_never": "Inga inlägg", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.title": "{name}s utvalda hashtags", "account.follow": "Följ", "account.followers": "Följare", "account.followers.empty": "Ingen följer denna användare än.", @@ -39,8 +39,8 @@ "account.following_counter": "{count, plural, one {{counter} Följer} other {{counter} Följer}}", "account.follows.empty": "Denna användare följer inte någon än.", "account.follows_you": "Följer dig", - "account.hide_reblogs": "Dölj knuffar från @{name}", - "account.joined_short": "Joined", + "account.hide_reblogs": "Dölj boostningar från @{name}", + "account.joined_short": "Gick med", "account.languages": "Ändra prenumererade språk", "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", @@ -55,8 +55,8 @@ "account.report": "Rapportera @{name}", "account.requested": "Inväntar godkännande. Klicka för att avbryta följarförfrågan", "account.share": "Dela @{name}s profil", - "account.show_reblogs": "Visa knuffar från @{name}", - "account.statuses_counter": "{count, plural,one {{counter} Tuta} other {{counter} Tutor}}", + "account.show_reblogs": "Visa boostningar av @{name}", + "account.statuses_counter": "{count, plural, one {{counter} Inlägg} other {{counter} Inlägg}}", "account.unblock": "Avblockera @{name}", "account.unblock_domain": "Sluta dölja {domain}", "account.unblock_short": "Avblockera", @@ -64,7 +64,7 @@ "account.unfollow": "Sluta följ", "account.unmute": "Sluta tysta @{name}", "account.unmute_notifications": "Återaktivera aviseringar från @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Avtysta", "account_note.placeholder": "Klicka för att lägga till anteckning", "admin.dashboard.daily_retention": "Användarlojalitet per dag efter registrering", "admin.dashboard.monthly_retention": "Användarlojalitet per månad efter registrering", @@ -79,25 +79,25 @@ "attachments_list.unprocessed": "(obearbetad)", "audio.hide": "Dölj audio", "autosuggest_hashtag.per_week": "{count} per vecka", - "boost_modal.combo": "Du kan trycka {combo} för att slippa detta nästa gång", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "boost_modal.combo": "Du kan trycka på {combo} för att hoppa över detta nästa gång", + "bundle_column_error.copy_stacktrace": "Kopiera felrapport", + "bundle_column_error.error.body": "Den begärda sidan kunde inte visas. Det kan bero på ett fel i vår kod eller ett problem med webbläsarens kompatibilitet.", + "bundle_column_error.error.title": "Åh nej!", + "bundle_column_error.network.body": "Det uppstod ett fel när denna sida skulle visas. Detta kan bero på ett tillfälligt problem med din internetanslutning eller denna server.", + "bundle_column_error.network.title": "Nätverksfel", "bundle_column_error.retry": "Försök igen", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Tillbaka till startsidan", + "bundle_column_error.routing.body": "Den begärda sidan kunde inte hittas. Är du säker på att URL:en i adressfältet är korrekt?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Stäng", "bundle_modal_error.message": "Något gick fel när denna komponent laddades.", "bundle_modal_error.retry": "Försök igen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Eftersom Mastodon är decentraliserat kan du skapa ett konto på en annan server och fortfarande interagera med denna.", + "closed_registrations_modal.description": "Det är för närvarande inte möjligt att skapa ett konto på {domain} men kom ihåg att du inte behöver ett konto specifikt på {domain} för att använda Mastodon.", + "closed_registrations_modal.find_another_server": "Hitta en annan server", + "closed_registrations_modal.preamble": "Mastodon är decentraliserat så oavsett var du skapar ditt konto kommer du att kunna följa och interagera med någon på denna server. Du kan också köra din egen server!", + "closed_registrations_modal.title": "Registrera sig på Mastodon", + "column.about": "Om", "column.blocks": "Blockerade användare", "column.bookmarks": "Bokmärken", "column.community": "Lokal tidslinje", @@ -110,7 +110,7 @@ "column.lists": "Listor", "column.mutes": "Tystade användare", "column.notifications": "Aviseringar", - "column.pins": "Nålade toots", + "column.pins": "Fästa inlägg", "column.public": "Federerad tidslinje", "column_back_button.label": "Tillbaka", "column_header.hide_settings": "Dölj inställningar", @@ -123,11 +123,11 @@ "community.column_settings.local_only": "Endast lokalt", "community.column_settings.media_only": "Endast media", "community.column_settings.remote_only": "Endast fjärr", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Ändra språk", + "compose.language.search": "Sök språk...", "compose_form.direct_message_warning_learn_more": "Lär dig mer", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", - "compose_form.hashtag_warning": "Denna toot kommer inte att visas under någon hashtag eftersom den är onoterad. Endast offentliga toots kan sökas med hashtag.", + "compose_form.encryption_warning": "Inlägg på Mastodon är inte obrutet krypterade. Dela inte någon känslig information på Mastodon.", + "compose_form.hashtag_warning": "Detta inlägg kommer inte listas under någon hashtagg eftersom det är olistat. Endast offentliga inlägg kan eftersökas med hashtagg.", "compose_form.lock_disclaimer": "Ditt konto är inte {locked}. Vem som helst kan följa dig för att se dina inlägg som endast är för följare.", "compose_form.lock_disclaimer.lock": "låst", "compose_form.placeholder": "Vad tänker du på?", @@ -150,10 +150,10 @@ "confirmations.block.block_and_report": "Blockera & rapportera", "confirmations.block.confirm": "Blockera", "confirmations.block.message": "Är du säker på att du vill blockera {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Återkalla förfrågan", + "confirmations.cancel_follow_request.message": "Är du säker på att du vill återkalla din begäran om att följa {name}?", "confirmations.delete.confirm": "Radera", - "confirmations.delete.message": "Är du säker på att du vill radera denna status?", + "confirmations.delete.message": "Är du säker på att du vill radera detta inlägg?", "confirmations.delete_list.confirm": "Radera", "confirmations.delete_list.message": "Är du säker på att du vill radera denna lista permanent?", "confirmations.discard_edit_media.confirm": "Kasta", @@ -163,10 +163,10 @@ "confirmations.logout.confirm": "Logga ut", "confirmations.logout.message": "Är du säker på att du vill logga ut?", "confirmations.mute.confirm": "Tysta", - "confirmations.mute.explanation": "Detta kommer att dölja poster från dem och poster som nämner dem, men fortfarande tillåta dem att se dina poster och följa dig.", + "confirmations.mute.explanation": "Detta kommer dölja inlägg från dem och inlägg som nämner dem, men de tillåts fortfarande se dina inlägg och följa dig.", "confirmations.mute.message": "Är du säker på att du vill tysta {name}?", "confirmations.redraft.confirm": "Radera & gör om", - "confirmations.redraft.message": "Är du säker på att du vill radera detta meddelande och göra om det? Du kommer förlora alla favoriter, knuffar och svar till det ursprungliga meddelandet.", + "confirmations.redraft.message": "Är du säker på att du vill radera detta inlägg och göra om det? Favoritmarkeringar, boostningar och svar till det ursprungliga inlägget kommer förlora sitt sammanhang.", "confirmations.reply.confirm": "Svara", "confirmations.reply.message": "Om du svarar nu kommer det att ersätta meddelandet du håller på att skapa. Är du säker på att du vill fortsätta?", "confirmations.unfollow.confirm": "Avfölj", @@ -175,22 +175,22 @@ "conversation.mark_as_read": "Markera som läst", "conversation.open": "Visa konversation", "conversation.with": "Med {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", - "directory.federated": "Från känt servernätverk", + "copypaste.copied": "Kopierad", + "copypaste.copy": "Kopiera", + "directory.federated": "Från känt fediversum", "directory.local": "Endast från {domain}", "directory.new_arrivals": "Nyanlända", "directory.recently_active": "Nyligen aktiva", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "Lägg in denna status på din webbplats genom att kopiera koden nedan.", + "dismissable_banner.community_timeline": "Dessa är de senaste offentliga inläggen från personer vars konton tillhandahålls av {domain}.", + "dismissable_banner.dismiss": "Avfärda", + "dismissable_banner.explore_links": "Dessa nyheter pratas det om just nu, på denna och på andra servrar i det decentraliserade nätverket.", + "dismissable_banner.explore_statuses": "Dessa inlägg, från denna och andra servrar i det decentraliserade nätverket, pratas det om just nu på denna server.", + "dismissable_banner.explore_tags": "Dessa hashtaggar pratas det om just nu bland folk på denna och andra servrar i det decentraliserade nätverket.", + "dismissable_banner.public_timeline": "Dessa är de senaste offentliga inläggen från personer på denna och andra servrar på det decentraliserade nätverket som denna server känner till.", + "embed.instructions": "Bädda in detta inlägg på din webbplats genom att kopiera koden nedan.", "embed.preview": "Så här kommer det att se ut:", "emoji_button.activity": "Aktivitet", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Rensa", "emoji_button.custom": "Anpassad", "emoji_button.flags": "Flaggor", "emoji_button.food": "Mat & dryck", @@ -208,19 +208,19 @@ "empty_column.account_timeline": "Inga inlägg här!", "empty_column.account_unavailable": "Profilen ej tillgänglig", "empty_column.blocks": "Du har ännu ej blockerat några användare.", - "empty_column.bookmarked_statuses": "Du har inte bokmärkt några tutar än. När du gör ett bokmärke kommer det synas här.", + "empty_column.bookmarked_statuses": "Du har inte bokmärkt några inlägg än. När du bokmärker ett inlägg kommer det synas här.", "empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att sätta bollen i rullning!", "empty_column.direct": "Du har inga direktmeddelanden. När du skickar eller tar emot ett direktmeddelande kommer det att visas här.", "empty_column.domain_blocks": "Det finns ännu inga dolda domäner.", "empty_column.explore_statuses": "Ingenting är trendigt just nu. Kom tillbaka senare!", - "empty_column.favourited_statuses": "Du har inga favoritmarkerade toots än. När du favoritmarkerar en kommer den visas här.", - "empty_column.favourites": "Ingen har favoritmarkerat den här tooten än. När någon gör det kommer den visas här.", + "empty_column.favourited_statuses": "Du har inga favoritmarkerade inlägg än. När du favoritmarkerar ett inlägg kommer det visas här.", + "empty_column.favourites": "Ingen har favoritmarkerat detta inlägg än. När någon gör det kommer de synas här.", "empty_column.follow_recommendations": "Det ser ut som om inga förslag kan genereras till dig. Du kan prova att använda sök för att leta efter personer som du kanske känner eller utforska trendande hash-taggar.", "empty_column.follow_requests": "Du har inga följarförfrågningar än. När du får en kommer den visas här.", "empty_column.hashtag": "Det finns inget i denna hashtag ännu.", "empty_column.home": "Din hemma-tidslinje är tom! Besök {public} eller använd sökning för att komma igång och träffa andra användare.", "empty_column.home.suggestions": "Se några förslag", - "empty_column.list": "Det finns inget i denna lista än. När medlemmar i denna lista lägger till nya statusar kommer de att visas här.", + "empty_column.list": "Det finns inget i denna lista än. När listmedlemmar publicerar nya inlägg kommer de synas här.", "empty_column.lists": "Du har inga listor än. När skapar en kommer den dyka upp här.", "empty_column.mutes": "Du har ännu inte tystat några användare.", "empty_column.notifications": "Du har inga meddelanden än. Interagera med andra för att starta konversationen.", @@ -237,35 +237,35 @@ "explore.trending_links": "Nyheter", "explore.trending_statuses": "Inlägg", "explore.trending_tags": "Hashtaggar", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.added.context_mismatch_explanation": "Denna filterkategori gäller inte för det sammanhang där du har tillgång till det här inlägget. Om du vill att inlägget ska filtreras även i detta sammanhang måste du redigera filtret.", + "filter_modal.added.context_mismatch_title": "Misspassning av sammanhang!", + "filter_modal.added.expired_explanation": "Denna filterkategori har utgått, du måste ändra utgångsdatum för att den ska kunna tillämpas.", + "filter_modal.added.expired_title": "Utgånget filter!", + "filter_modal.added.review_and_configure": "För att granska och vidare konfigurera denna filterkategorin, gå till {settings_link}.", + "filter_modal.added.review_and_configure_title": "Filterinställningar", + "filter_modal.added.settings_link": "inställningar", + "filter_modal.added.short_explanation": "Inlägget har lagts till i följande filterkategori: {title}.", + "filter_modal.added.title": "Filter tillagt!", + "filter_modal.select_filter.context_mismatch": "gäller inte för detta sammanhang", + "filter_modal.select_filter.expired": "utgånget", + "filter_modal.select_filter.prompt_new": "Ny kategori: {name}", + "filter_modal.select_filter.search": "Sök eller skapa", + "filter_modal.select_filter.subtitle": "Använd en befintlig kategori eller skapa en ny", + "filter_modal.select_filter.title": "Filtrera detta inlägg", + "filter_modal.title.status": "Filtrera ett inlägg", "follow_recommendations.done": "Klar", - "follow_recommendations.heading": "Följ personer som du skulle vilja se inlägg från! Här finns det några förslag.", - "follow_recommendations.lead": "Inlägg från personer du följer kommer att dyka upp i kronologisk ordning i ditt hem-flöde. Var inte rädd för att göra misstag, du kan sluta följa människor lika enkelt när som helst!", + "follow_recommendations.heading": "Följ personer du skulle vilja se inlägg från! Här kommer några förslag.", + "follow_recommendations.lead": "Inlägg från personer du följer kommer att dyka upp i kronologisk ordning i ditt hemflöde. Var inte rädd för att göra misstag, du kan sluta följa folk när som helst!", "follow_request.authorize": "Godkänn", "follow_request.reject": "Avvisa", "follow_requests.unlocked_explanation": "Även om ditt konto inte är låst tror {domain} personalen att du kanske vill granska dessa följares förfrågningar manuellt.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Om", + "footer.directory": "Profilkatalog", + "footer.get_app": "Skaffa appen", + "footer.invite": "Bjud in personer", + "footer.keyboard_shortcuts": "Tangentbordsgenvägar", + "footer.privacy_policy": "Integritetspolicy", + "footer.source_code": "Visa källkod", "generic.saved": "Sparad", "getting_started.heading": "Kom igång", "hashtag.column_header.tag_mode.all": "och {additional}", @@ -277,38 +277,38 @@ "hashtag.column_settings.tag_mode.any": "Någon av dessa", "hashtag.column_settings.tag_mode.none": "Ingen av dessa", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Följ hashtagg", + "hashtag.unfollow": "Avfölj hashtagg", "home.column_settings.basic": "Grundläggande", - "home.column_settings.show_reblogs": "Visa knuffar", + "home.column_settings.show_reblogs": "Visa boostningar", "home.column_settings.show_replies": "Visa svar", "home.hide_announcements": "Dölj notiser", "home.show_announcements": "Visa notiser", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favorisera {name}'s inlägg", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "Med ett Mastodon-konto kan du favoritmarkera detta inlägg för att visa författaren att du gillar det och för att spara det till senare.", + "interaction_modal.description.follow": "Med ett Mastodon-konto kan du följa {name} för att se deras inlägg i ditt hemflöde.", + "interaction_modal.description.reblog": "Med ett Mastodon-konto kan du boosta detta inlägg för att dela den med dina egna följare.", + "interaction_modal.description.reply": "Med ett Mastodon-konto kan du svara på detta inlägg.", + "interaction_modal.on_another_server": "På en annan server", + "interaction_modal.on_this_server": "På denna server", + "interaction_modal.other_server_instructions": "Kopiera och klistra in denna webbadress i din favoritapps sökfält eller i webbgränssnittet där du är inloggad.", + "interaction_modal.preamble": "Eftersom Mastodon är decentraliserat kan du använda ditt befintliga konto från en annan Mastodonserver, eller annan kompatibel plattform, om du inte har ett konto på denna.", + "interaction_modal.title.favourite": "Favoritmarkera {name}s inlägg", + "interaction_modal.title.follow": "Följ {name}", + "interaction_modal.title.reblog": "Boosta {name}s inlägg", + "interaction_modal.title.reply": "Svara på {name}s inlägg", "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# timme} other {# timmar}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuter}}", "keyboard_shortcuts.back": "för att gå bakåt", "keyboard_shortcuts.blocked": "för att öppna listan över blockerade användare", - "keyboard_shortcuts.boost": "för att knuffa", + "keyboard_shortcuts.boost": "Boosta inlägg", "keyboard_shortcuts.column": "för att fokusera en status i en av kolumnerna", "keyboard_shortcuts.compose": "för att fokusera skrivfältet", "keyboard_shortcuts.description": "Beskrivning", "keyboard_shortcuts.direct": "för att öppna Direktmeddelanden", "keyboard_shortcuts.down": "för att flytta nedåt i listan", - "keyboard_shortcuts.enter": "för att öppna en status", - "keyboard_shortcuts.favourite": "för att sätta som favorit", + "keyboard_shortcuts.enter": "Öppna inlägg", + "keyboard_shortcuts.favourite": "Favoritmarkera inlägg", "keyboard_shortcuts.favourites": "för att öppna Favoriter", "keyboard_shortcuts.federated": "Öppna federerad tidslinje", "keyboard_shortcuts.heading": "Tangentbordsgenvägar", @@ -321,16 +321,16 @@ "keyboard_shortcuts.my_profile": "för att öppna din profil", "keyboard_shortcuts.notifications": "för att öppna Meddelanden", "keyboard_shortcuts.open_media": "öppna media", - "keyboard_shortcuts.pinned": "för att öppna nålade inlägg", + "keyboard_shortcuts.pinned": "Öppna listan över fästa inlägg", "keyboard_shortcuts.profile": "för att öppna skaparens profil", - "keyboard_shortcuts.reply": "för att svara", + "keyboard_shortcuts.reply": "Svara på inlägg", "keyboard_shortcuts.requests": "för att öppna Följförfrågningar", "keyboard_shortcuts.search": "för att fokusera sökfältet", "keyboard_shortcuts.spoilers": "visa/dölja CW-fält", "keyboard_shortcuts.start": "för att öppna \"Kom igång\"-kolumnen", "keyboard_shortcuts.toggle_hidden": "för att visa/gömma text bakom CW", "keyboard_shortcuts.toggle_sensitivity": "för att visa/gömma media", - "keyboard_shortcuts.toot": "för att påbörja en helt ny toot", + "keyboard_shortcuts.toot": "Starta nytt inlägg", "keyboard_shortcuts.unfocus": "för att avfokusera skrivfält/sökfält", "keyboard_shortcuts.up": "för att flytta uppåt i listan", "lightbox.close": "Stäng", @@ -338,8 +338,8 @@ "lightbox.expand": "Utöka bildvyrutan", "lightbox.next": "Nästa", "lightbox.previous": "Tidigare", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.action": "Visa profil ändå", + "limited_account_hint.title": "Denna profil har dolts av {domain}s moderatorer.", "lists.account.add": "Lägg till i lista", "lists.account.remove": "Ta bort från lista", "lists.delete": "Radera lista", @@ -361,11 +361,11 @@ "mute_modal.duration": "Varaktighet", "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?", "mute_modal.indefinite": "Obestämt", - "navigation_bar.about": "About", + "navigation_bar.about": "Om", "navigation_bar.blocks": "Blockerade användare", "navigation_bar.bookmarks": "Bokmärken", "navigation_bar.community_timeline": "Lokal tidslinje", - "navigation_bar.compose": "Författa ny toot", + "navigation_bar.compose": "Författa nytt inlägg", "navigation_bar.direct": "Direktmeddelanden", "navigation_bar.discover": "Upptäck", "navigation_bar.domain_blocks": "Dolda domäner", @@ -379,26 +379,26 @@ "navigation_bar.logout": "Logga ut", "navigation_bar.mutes": "Tystade användare", "navigation_bar.personal": "Personligt", - "navigation_bar.pins": "Nålade inlägg (toots)", + "navigation_bar.pins": "Fästa inlägg", "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Federerad tidslinje", - "navigation_bar.search": "Search", + "navigation_bar.search": "Sök", "navigation_bar.security": "Säkerhet", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "Du behöver logga in för att få åtkomst till denna resurs.", + "notification.admin.report": "{name} rapporterade {target}", "notification.admin.sign_up": "{name} registrerade sig", - "notification.favourite": "{name} favoriserade din status", + "notification.favourite": "{name} favoritmarkerade din status", "notification.follow": "{name} följer dig", "notification.follow_request": "{name} har begärt att följa dig", "notification.mention": "{name} nämnde dig", "notification.own_poll": "Din röstning har avslutats", "notification.poll": "En omröstning du röstat i har avslutats", - "notification.reblog": "{name} knuffade din status", - "notification.status": "{name} skrev just", + "notification.reblog": "{name} boostade ditt inlägg", + "notification.status": "{name} publicerade just ett inlägg", "notification.update": "{name} redigerade ett inlägg", "notifications.clear": "Rensa aviseringar", "notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Nya rapporter:", "notifications.column_settings.admin.sign_up": "Nya registreringar:", "notifications.column_settings.alert": "Skrivbordsaviseringar", "notifications.column_settings.favourite": "Favoriter:", @@ -410,7 +410,7 @@ "notifications.column_settings.mention": "Omnämningar:", "notifications.column_settings.poll": "Omröstningsresultat:", "notifications.column_settings.push": "Push-aviseringar", - "notifications.column_settings.reblog": "Knuffar:", + "notifications.column_settings.reblog": "Boostningar:", "notifications.column_settings.show": "Visa i kolumnen", "notifications.column_settings.sound": "Spela upp ljud", "notifications.column_settings.status": "Nya inlägg:", @@ -418,7 +418,7 @@ "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", "notifications.column_settings.update": "Redigeringar:", "notifications.filter.all": "Alla", - "notifications.filter.boosts": "Knuffar", + "notifications.filter.boosts": "Boostningar", "notifications.filter.favourites": "Favoriter", "notifications.filter.follows": "Följer", "notifications.filter.mentions": "Omnämningar", @@ -443,17 +443,17 @@ "poll.votes": "{votes, plural, one {# röst} other {# röster}}", "poll_button.add_poll": "Lägg till en omröstning", "poll_button.remove_poll": "Ta bort omröstning", - "privacy.change": "Justera sekretess", + "privacy.change": "Ändra inläggsintegritet", "privacy.direct.long": "Skicka endast till nämnda användare", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Endast omnämnda personer", "privacy.private.long": "Endast synligt för följare", "privacy.private.short": "Endast följare", "privacy.public.long": "Synlig för alla", "privacy.public.short": "Publik", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Synlig för alla, men visas inte i upptäcksfunktioner", "privacy.unlisted.short": "Olistad", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Senast uppdaterad {date}", + "privacy_policy.title": "Integritetspolicy", "refresh": "Läs om", "regeneration_indicator.label": "Laddar…", "regeneration_indicator.sublabel": "Ditt hemmaflöde förbereds!", @@ -470,7 +470,7 @@ "relative_time.today": "idag", "reply_indicator.cancel": "Ångra", "report.block": "Blockera", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block_explanation": "Du kommer inte se deras inlägg. De kommer inte kunna se dina inlägg eller följa dig. De kommer kunna se att de är blockerade.", "report.categories.other": "Övrigt", "report.categories.spam": "Skräppost", "report.categories.violation": "Innehåll bryter mot en eller flera serverregler", @@ -479,44 +479,44 @@ "report.category.title_account": "profil", "report.category.title_status": "inlägg", "report.close": "Färdig", - "report.comment.title": "Is there anything else you think we should know?", + "report.comment.title": "Finns det något annat vi borde veta?", "report.forward": "Vidarebefordra till {target}", "report.forward_hint": "Kontot är från en annan server. Skicka även en anonymiserad kopia av anmälan dit?", "report.mute": "Tysta", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute_explanation": "Du kommer inte se deras inlägg. De kan fortfarande följa dig och se dina inlägg. De kommer inte veta att de är tystade.", "report.next": "Nästa", "report.placeholder": "Ytterligare kommentarer", "report.reasons.dislike": "Jag tycker inte om det", "report.reasons.dislike_description": "Det är inget som du vill se", "report.reasons.other": "Det är något annat", - "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.other_description": "Problemet passar inte in i andra kategorier", "report.reasons.spam": "Det är skräppost", "report.reasons.spam_description": "Skadliga länkar, bedrägligt beteende eller repetitiva svar", "report.reasons.violation": "Det bryter mot serverns regler", "report.reasons.violation_description": "Du är medveten om att det bryter mot specifika regler", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.rules.subtitle": "Välj alla som stämmer", + "report.rules.title": "Vilka regler överträds?", + "report.statuses.subtitle": "Välj alla som stämmer", + "report.statuses.title": "Finns det några inlägg som stöder denna rapport?", "report.submit": "Skicka", "report.target": "Rapporterar {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.take_action": "Här är dina alternativ för att bestämma vad du ser på Mastodon:", + "report.thanks.take_action_actionable": "Medan vi granskar detta kan du vidta åtgärder mot {name}:", "report.thanks.title": "Vill du inte se det här?", "report.thanks.title_actionable": "Tack för att du rapporterar, vi kommer att titta på detta.", "report.unfollow": "Sluta följ @{username}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report.unfollow_explanation": "Du följer detta konto. Avfölj dem för att inte se deras inlägg i ditt hemflöde.", + "report_notification.attached_statuses": "bifogade {count, plural, one {{count} inlägg} other {{count} inlägg}}", + "report_notification.categories.other": "Övrigt", + "report_notification.categories.spam": "Skräppost", + "report_notification.categories.violation": "Regelöverträdelse", + "report_notification.open": "Öppna rapport", "search.placeholder": "Sök", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Sök eller klistra in URL", "search_popout.search_format": "Avancerat sökformat", - "search_popout.tips.full_text": "Enkel text returnerar statusar där du har skrivit, favoriserat, knuffat eller nämnts samt med matchande användarnamn, visningsnamn och hashtags.", + "search_popout.tips.full_text": "Enkel text returnerar inlägg du har skrivit, favoritmarkerat, boostat eller blivit nämnd i, samt matchar användarnamn, visningsnamn och hashtaggar.", "search_popout.tips.hashtag": "hash-tagg", - "search_popout.tips.status": "status", + "search_popout.tips.status": "inlägg", "search_popout.tips.text": "Enkel text returnerar matchande visningsnamn, användarnamn och hashtags", "search_popout.tips.user": "användare", "search_results.accounts": "Människor", @@ -524,25 +524,25 @@ "search_results.hashtags": "Hashtaggar", "search_results.nothing_found": "Kunde inte hitta något för dessa sökord", "search_results.statuses": "Inlägg", - "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", - "search_results.title": "Search for {q}", + "search_results.statuses_fts_disabled": "Att söka efter inlägg baserat på innehåll är inte aktiverat på denna Mastodon-server.", + "search_results.title": "Sök efter {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.about_active_users": "Personer som använt denna server de senaste 30 dagarna (månatligt aktiva användare)", + "server_banner.active_users": "aktiva användare", + "server_banner.administered_by": "Administrerad av:", "server_banner.introduction": "{domain} är en del av det decentraliserade sociala nätverket som drivs av {mastodon}.", "server_banner.learn_more": "Lär dig mer", "server_banner.server_stats": "Serverstatistik:", "sign_in_banner.create_account": "Skapa konto", "sign_in_banner.sign_in": "Logga in", - "sign_in_banner.text": "Logga in för att följa profiler eller hashtaggar, favorisera, dela och svara på inlägg eller interagera från ditt konto på en annan server.", + "sign_in_banner.text": "Logga in för att följa profiler eller hashtaggar, favoritmarkera, dela och svara på inlägg eller interagera från ditt konto på en annan server.", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", - "status.admin_status": "Öppna denna status i modereringsgränssnittet", + "status.admin_status": "Öppna detta inlägg i modereringsgränssnittet", "status.block": "Blockera @{name}", "status.bookmark": "Bokmärk", - "status.cancel_reblog_private": "Ta bort knuff", - "status.cannot_reblog": "Detta inlägg kan inte knuffas", - "status.copy": "Kopiera länk till status", + "status.cancel_reblog_private": "Avboosta", + "status.cannot_reblog": "Detta inlägg kan inte boostas", + "status.copy": "Kopiera inläggslänk", "status.delete": "Radera", "status.detailed_status": "Detaljerad samtalsvy", "status.direct": "Direktmeddela @{name}", @@ -553,7 +553,7 @@ "status.favourite": "Favorit", "status.filter": "Filtrera detta inlägg", "status.filtered": "Filtrerat", - "status.hide": "Hide toot", + "status.hide": "Göm inlägg", "status.history.created": "{name} skapade {date}", "status.history.edited": "{name} redigerade {date}", "status.load_more": "Ladda fler", @@ -562,36 +562,36 @@ "status.more": "Mer", "status.mute": "Tysta @{name}", "status.mute_conversation": "Tysta konversation", - "status.open": "Utvidga denna status", + "status.open": "Utvidga detta inlägg", "status.pin": "Fäst i profil", - "status.pinned": "Fäst toot", + "status.pinned": "Fästa inlägg", "status.read_more": "Läs mer", - "status.reblog": "Knuffa", - "status.reblog_private": "Knuffa till de ursprungliga åhörarna", - "status.reblogged_by": "{name} knuffade", - "status.reblogs.empty": "Ingen har favoriserat den här tutningen än. När någon gör det kommer den att synas här.", + "status.reblog": "Boosta", + "status.reblog_private": "Boosta med ursprunglig synlighet", + "status.reblogged_by": "{name} boostade", + "status.reblogs.empty": "Ingen har boostat detta inlägg än. När någon gör det kommer de synas här.", "status.redraft": "Radera & gör om", "status.remove_bookmark": "Ta bort bokmärke", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Svarade på {name}", "status.reply": "Svara", "status.replyAll": "Svara på tråden", "status.report": "Rapportera @{name}", "status.sensitive_warning": "Känsligt innehåll", "status.share": "Dela", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Visa ändå", "status.show_less": "Visa mindre", "status.show_less_all": "Visa mindre för alla", "status.show_more": "Visa mer", "status.show_more_all": "Visa mer för alla", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Visa original", + "status.translate": "Översätt", + "status.translated_from_with": "Översatt från {lang} med {provider}", "status.uncached_media_warning": "Ej tillgängligt", "status.unmute_conversation": "Öppna konversation", "status.unpin": "Ångra fäst i profil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Endast inlägg på valda språk kommer att visas på dina hem- och listflöden efter ändringen. Välj ingenting för att se inlägg på alla språk.", + "subscribed_languages.save": "Spara ändringar", + "subscribed_languages.target": "Ändra språkprenumerationer för {target}", "suggestions.dismiss": "Avfärda förslag", "suggestions.header": "Du kanske är intresserad av…", "tabs_bar.federated_timeline": "Federerad", @@ -606,8 +606,8 @@ "timeline_hint.remote_resource_not_displayed": "{resource} från andra servrar visas inte.", "timeline_hint.resources.followers": "Följare", "timeline_hint.resources.follows": "Följer", - "timeline_hint.resources.statuses": "Äldre tutningar", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "timeline_hint.resources.statuses": "Äldre inlägg", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} senaste {days, plural, one {dygnet} other {{days} dagarna}}", "trends.trending_now": "Trendar nu", "ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Mastodon.", "units.short.billion": "{count}B", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Förbereder OCR…", "upload_modal.preview_label": "Förhandstitt ({ratio})", "upload_progress.label": "Laddar upp...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Bearbetar…", "video.close": "Stäng video", "video.download": "Ladda ner fil", "video.exit_fullscreen": "Stäng helskärm", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index dbc5685989..0ee86d80cf 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index bbfd1da793..7d502ae6e4 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -339,7 +339,7 @@ "lightbox.next": "அடுத்த", "lightbox.previous": "சென்ற", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "பட்டியலில் சேர்", "lists.account.remove": "பட்டியலில் இருந்து அகற்று", "lists.delete": "பட்டியலை நீக்கு", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 91a529b9da..7d44cbc897 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index e038482cdb..a37f95aec8 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -339,7 +339,7 @@ "lightbox.next": "తరువాత", "lightbox.previous": "మునుపటి", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "జాబితాకు జోడించు", "lists.account.remove": "జాబితా నుండి తొలగించు", "lists.delete": "జాబితాను తొలగించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 174d74d20a..603a727bb9 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -1,7 +1,7 @@ { "about.blocks": "เซิร์ฟเวอร์ที่มีการควบคุม", "about.contact": "ติดต่อ:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon เป็นซอฟต์แวร์เสรี โอเพนซอร์ส และเครื่องหมายการค้าของ Mastodon gGmbH", "about.domain_blocks.comment": "เหตุผล", "about.domain_blocks.domain": "โดเมน", "about.domain_blocks.preamble": "โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ", @@ -40,7 +40,7 @@ "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร", "account.follows_you": "ติดตามคุณ", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", - "account.joined_short": "Joined", + "account.joined_short": "เข้าร่วมเมื่อ", "account.languages": "เปลี่ยนภาษาที่บอกรับ", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", @@ -94,9 +94,9 @@ "bundle_modal_error.retry": "ลองอีกครั้ง", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "ค้นหาเซิร์ฟเวอร์อื่น", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.title": "การลงทะเบียนใน Mastodon", "column.about": "เกี่ยวกับ", "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", @@ -259,13 +259,13 @@ "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "เกี่ยวกับ", + "footer.directory": "ไดเรกทอรีโปรไฟล์", + "footer.get_app": "รับแอป", + "footer.invite": "เชิญผู้คน", + "footer.keyboard_shortcuts": "แป้นพิมพ์ลัด", + "footer.privacy_policy": "นโยบายความเป็นส่วนตัว", + "footer.source_code": "ดูโค้ดต้นฉบับ", "generic.saved": "บันทึกแล้ว", "getting_started.heading": "เริ่มต้นใช้งาน", "hashtag.column_header.tag_mode.all": "และ {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "ถัดไป", "lightbox.previous": "ก่อนหน้า", "limited_account_hint.action": "แสดงโปรไฟล์ต่อไป", - "limited_account_hint.title": "มีการซ่อนโปรไฟล์นี้โดยผู้ควบคุมของเซิร์ฟเวอร์ของคุณ", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "เพิ่มไปยังรายการ", "lists.account.remove": "เอาออกจากรายการ", "lists.delete": "ลบรายการ", @@ -382,7 +382,7 @@ "navigation_bar.pins": "โพสต์ที่ปักหมุด", "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", - "navigation_bar.search": "Search", + "navigation_bar.search": "ค้นหา", "navigation_bar.security": "ความปลอดภัย", "not_signed_in_indicator.not_signed_in": "คุณจำเป็นต้องลงชื่อเข้าเพื่อเข้าถึงทรัพยากรนี้", "notification.admin.report": "{name} ได้รายงาน {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "การละเมิดกฎ", "report_notification.open": "รายงานที่เปิด", "search.placeholder": "ค้นหา", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "ค้นหาหรือวาง URL", "search_popout.search_format": "รูปแบบการค้นหาขั้นสูง", "search_popout.tips.full_text": "ข้อความแบบง่ายส่งคืนโพสต์ที่คุณได้เขียน ชื่นชอบ ดัน หรือได้รับการกล่าวถึง ตลอดจนชื่อผู้ใช้, ชื่อที่แสดง และแฮชแท็กที่ตรงกัน", "search_popout.tips.hashtag": "แฮชแท็ก", @@ -572,7 +572,7 @@ "status.reblogs.empty": "ยังไม่มีใครดันโพสต์นี้ เมื่อใครสักคนดัน เขาจะปรากฏที่นี่", "status.redraft": "ลบแล้วร่างใหม่", "status.remove_bookmark": "เอาที่คั่นหน้าออก", - "status.replied_to": "Replied to {name}", + "status.replied_to": "ตอบกลับ {name}", "status.reply": "ตอบกลับ", "status.replyAll": "ตอบกลับกระทู้", "status.report": "รายงาน @{name}", @@ -585,7 +585,7 @@ "status.show_more_all": "แสดงเพิ่มเติมทั้งหมด", "status.show_original": "แสดงดั้งเดิม", "status.translate": "แปล", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "แปลจาก {lang} โดยใช้ {provider}", "status.uncached_media_warning": "ไม่พร้อมใช้งาน", "status.unmute_conversation": "เลิกซ่อนการสนทนา", "status.unpin": "ถอนหมุดจากโปรไฟล์", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "กำลังเตรียม OCR…", "upload_modal.preview_label": "ตัวอย่าง ({ratio})", "upload_progress.label": "กำลังอัปโหลด...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "กำลังประมวลผล…", "video.close": "ปิดวิดีโอ", "video.download": "ดาวน์โหลดไฟล์", "video.exit_fullscreen": "ออกจากเต็มหน้าจอ", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 934a4f6d0e..cb08147a68 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -1,7 +1,7 @@ { "about.blocks": "Denetlenen sunucular", "about.contact": "İletişim:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon özgür, açık kaynak bir yazılımdır ve Mastodon gGmbH şirketinin ticari markasıdır.", "about.domain_blocks.comment": "Gerekçe", "about.domain_blocks.domain": "Alan adı", "about.domain_blocks.preamble": "Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır.", @@ -11,7 +11,7 @@ "about.domain_blocks.suspended.explanation": "Bu sunucudaki hiçbir veri işlenmeyecek, saklanmayacak veya değiş tokuş edilmeyecektir, dolayısıyla bu sunucudaki kullanıcılarla herhangi bir etkileşim veya iletişim imkansız olacaktır.", "about.domain_blocks.suspended.title": "Askıya alındı", "about.not_available": "Bu sunucuda bu bilgi kullanıma sunulmadı.", - "about.powered_by": "{mastodon} destekli ademi merkeziyetçi sosyal medya", + "about.powered_by": "{mastodon} destekli merkeziyetsiz sosyal medya", "about.rules": "Sunucu kuralları", "account.account_note_header": "Not", "account.add_or_remove_from_list": "Listelere ekle veya kaldır", @@ -35,19 +35,19 @@ "account.followers": "Takipçi", "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.", "account.followers_counter": "{count, plural, one {{counter} Takipçi} other {{counter} Takipçi}}", - "account.following": "Takip Ediliyor", - "account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}", - "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi takip etmiyor.", - "account.follows_you": "Seni takip ediyor", + "account.following": "İzleniyor", + "account.following_counter": "{count, plural, one {{counter} İzlenen} other {{counter} İzlenen}}", + "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi izlemiyor.", + "account.follows_you": "Seni izliyor", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined_short": "Katıldı", "account.languages": "Abone olunan dilleri değiştir", - "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi", - "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", + "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde denetlendi", + "account.locked_info": "Bu hesabın gizlilik durumu kilitli olarak ayarlanmış. Sahibi, onu kimin izleyebileceğini kendi onaylıyor.", "account.media": "Medya", "account.mention": "@{name}'i an", "account.moved_to": "{name} şuraya taşındı:", - "account.mute": "@{name}'i susstur", + "account.mute": "@{name}'i sustur", "account.mute_notifications": "@{name}'in bildirimlerini sustur", "account.muted": "Susturuldu", "account.posts": "Gönderiler", @@ -57,7 +57,7 @@ "account.share": "@{name}'in profilini paylaş", "account.show_reblogs": "@{name} kişisinin boostlarını göster", "account.statuses_counter": "{count, plural, one {{counter} Gönderi} other {{counter} Gönderi}}", - "account.unblock": "@{name} adlı kişinin engelini kaldır", + "account.unblock": "@{name}'in engelini kaldır", "account.unblock_domain": "{domain} alan adının engelini kaldır", "account.unblock_short": "Engeli kaldır", "account.unendorse": "Profilimde öne çıkarma", @@ -259,13 +259,13 @@ "follow_request.authorize": "İzin Ver", "follow_request.reject": "Reddet", "follow_requests.unlocked_explanation": "Hesabınız kilitli olmasa bile, {domain} personeli bu hesaplardan gelen takip isteklerini gözden geçirmek isteyebileceğinizi düşündü.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Hakkında", + "footer.directory": "Profil dizini", + "footer.get_app": "Uygulamayı indir", + "footer.invite": "İnsanları davet et", + "footer.keyboard_shortcuts": "Klavye kısayolları", + "footer.privacy_policy": "Gizlilik politikası", + "footer.source_code": "Kaynak kodu görüntüle", "generic.saved": "Kaydedildi", "getting_started.heading": "Başlarken", "hashtag.column_header.tag_mode.all": "ve {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Sonraki", "lightbox.previous": "Önceki", "limited_account_hint.action": "Yine de profili göster", - "limited_account_hint.title": "Bu profil sunucunuzun moderatörleri tarafından gizlendi.", + "limited_account_hint.title": "Bu profil {domain} moderatörleri tarafından gizlendi.", "lists.account.add": "Listeye ekle", "lists.account.remove": "Listeden kaldır", "lists.delete": "Listeyi sil", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Kural ihlali", "report_notification.open": "Bildirim aç", "search.placeholder": "Ara", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Ara veya URL gir", "search_popout.search_format": "Gelişmiş arama biçimi", "search_popout.tips.full_text": "Basit metin yazdığınız, beğendiğiniz, teşvik ettiğiniz veya söz edilen gönderilerin yanı sıra kullanıcı adlarını, görünen adları ve etiketleri eşleşen gönderileri de döndürür.", "search_popout.tips.hashtag": "etiket", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "OCR hazırlanıyor…", "upload_modal.preview_label": "Ön izleme ({ratio})", "upload_progress.label": "Yükleniyor...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "İşleniyor…", "video.close": "Videoyu kapat", "video.download": "Dosyayı indir", "video.exit_fullscreen": "Tam ekrandan çık", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 0144053df5..f90f40cb16 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -339,7 +339,7 @@ "lightbox.next": "Киләсе", "lightbox.previous": "Алдагы", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Исемлектән бетерергә", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index dbc5685989..0ee86d80cf 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index c2db2045bb..c9c70b0d3a 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -1,7 +1,7 @@ { "about.blocks": "Модеровані сервери", "about.contact": "Kонтакти:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon — це безплатне програмне забезпечення з відкритим вихідним кодом та торгова марка компанії Mastodon GmbH.", "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домен", "about.domain_blocks.preamble": "Mastodon зазвичай дозволяє вам взаємодіяти з користувачами будь-яких серверів у Федіверсі та переглядати їх вміст. Ось винятки, які було зроблено на цьому конкретному сервері.", @@ -259,13 +259,13 @@ "follow_request.authorize": "Авторизувати", "follow_request.reject": "Відмовити", "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, персонал {domain} припускає, що, можливо, ви хотіли б переглянути ці запити на підписку.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Про проєкт", + "footer.directory": "Каталог профілів", + "footer.get_app": "Завантажити застосунок", + "footer.invite": "Запросити людей", + "footer.keyboard_shortcuts": "Комбінації клавіш", + "footer.privacy_policy": "Політика приватності", + "footer.source_code": "Перегляд програмного коду", "generic.saved": "Збережено", "getting_started.heading": "Розпочати", "hashtag.column_header.tag_mode.all": "та {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Далі", "lightbox.previous": "Назад", "limited_account_hint.action": "Усе одно показати профіль", - "limited_account_hint.title": "Цей профіль прихований модераторами вашого сервера.", + "limited_account_hint.title": "Цей профіль сховали модератори {domain}.", "lists.account.add": "Додати до списку", "lists.account.remove": "Вилучити зі списку", "lists.delete": "Видалити список", @@ -481,7 +481,7 @@ "report.close": "Готово", "report.comment.title": "Чи є щось, що нам потрібно знати?", "report.forward": "Надіслати до {target}", - "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", + "report.forward_hint": "Це обліковий запис з іншого сервера. Відправити анонімізовану копію скарги й туди?", "report.mute": "Нехтувати", "report.mute_explanation": "Ви не побачите їхніх дописів. Вони все ще можуть стежити за вами, бачити ваші дописи та не знатимуть про нехтування.", "report.next": "Далі", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "Порушення правил", "report_notification.open": "Відкрити скаргу", "search.placeholder": "Пошук", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Введіть адресу або пошуковий запит", "search_popout.search_format": "Розширений формат пошуку", "search_popout.tips.full_text": "Пошук за текстом знаходить дописи, які ви написали, вподобали, поширили, або в яких вас згадували. Також він знаходить імена користувачів, реальні імена та гештеґи.", "search_popout.tips.hashtag": "хештеґ", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Підготовка OCR…", "upload_modal.preview_label": "Переглянути ({ratio})", "upload_progress.label": "Завантаження...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Обробка…", "video.close": "Закрити відео", "video.download": "Завантажити файл", "video.exit_fullscreen": "Вийти з повноекранного режиму", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index c4d337cef8..755dd6ff1d 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index af307601dc..2251dddb37 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -1,7 +1,7 @@ { - "about.blocks": "Giới hạn chung", + "about.blocks": "Các máy chủ quản trị", "about.contact": "Liên lạc:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon là phần mềm tự do mã nguồn mở, một thương hiệu của Mastodon gGmbH.", "about.domain_blocks.comment": "Lý do", "about.domain_blocks.domain": "Máy chủ", "about.domain_blocks.preamble": "Mastodon cho phép bạn tương tác nội dung và giao tiếp với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.", @@ -185,7 +185,7 @@ "dismissable_banner.dismiss": "Bỏ qua", "dismissable_banner.explore_links": "Những sự kiện đang được thảo luận nhiều trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", "dismissable_banner.explore_statuses": "Những tút đang phổ biến trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", - "dismissable_banner.explore_tags": "Những hashtag đang được sử dụng nhiều trên máy chủ này và và những máy chủ khác thuộc mạng liên hợp của nó.", + "dismissable_banner.explore_tags": "Những hashtag đang được sử dụng nhiều trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", "dismissable_banner.public_timeline": "Những tút công khai gần đây nhất trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", "embed.instructions": "Sao chép đoạn mã dưới đây và chèn vào trang web của bạn.", "embed.preview": "Nó sẽ hiển thị như vầy:", @@ -212,10 +212,10 @@ "empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!", "empty_column.direct": "Bạn chưa có tin nhắn riêng nào. Khi bạn gửi hoặc nhận một tin nhắn riêng, nó sẽ xuất hiện ở đây.", "empty_column.domain_blocks": "Chưa ẩn bất kỳ máy chủ nào.", - "empty_column.explore_statuses": "Chưa có xu hướng nào. Kiểm tra lại sau!", + "empty_column.explore_statuses": "Chưa có gì hot. Kiểm tra lại sau!", "empty_column.favourited_statuses": "Bạn chưa thích tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.", "empty_column.favourites": "Chưa có ai thích tút này.", - "empty_column.follow_recommendations": "Bạn chưa có gợi ý theo dõi nào. Hãy thử tìm kiếm những người thú vị hoặc khám phá những hashtag xu hướng.", + "empty_column.follow_recommendations": "Bạn chưa có gợi ý theo dõi nào. Hãy thử tìm kiếm những người thú vị hoặc khám phá những hashtag nổi bật.", "empty_column.follow_requests": "Bạn chưa có yêu cầu theo dõi nào.", "empty_column.hashtag": "Chưa có bài đăng nào dùng hashtag này.", "empty_column.home": "Bảng tin của bạn đang trống! Hãy theo dõi nhiều người hơn. {suggestions}", @@ -259,13 +259,13 @@ "follow_request.authorize": "Cho phép", "follow_request.reject": "Từ chối", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Giới thiệu", + "footer.directory": "Cộng đồng", + "footer.get_app": "Tải ứng dụng", + "footer.invite": "Mời bạn bè", + "footer.keyboard_shortcuts": "Phím tắt", + "footer.privacy_policy": "Chính sách bảo mật", + "footer.source_code": "Mã nguồn", "generic.saved": "Đã lưu", "getting_started.heading": "Quản lý", "hashtag.column_header.tag_mode.all": "và {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "Tiếp", "lightbox.previous": "Trước", "limited_account_hint.action": "Vẫn cứ xem", - "limited_account_hint.title": "Người này bị ẩn bởi kiểm duyệt viên máy chủ.", + "limited_account_hint.title": "Người này đã bị ẩn bởi quản trị viên của {domain}.", "lists.account.add": "Thêm vào danh sách", "lists.account.remove": "Xóa khỏi danh sách", "lists.delete": "Xóa danh sách", @@ -385,8 +385,8 @@ "navigation_bar.search": "Tìm kiếm", "navigation_bar.security": "Bảo mật", "not_signed_in_indicator.not_signed_in": "Bạn cần đăng nhập để truy cập mục này.", - "notification.admin.report": "{name} đã báo cáo {target}", - "notification.admin.sign_up": "{name} đăng ký máy chủ của bạn", + "notification.admin.report": "{name} báo cáo {target}", + "notification.admin.sign_up": "{name} tham gia máy chủ của bạn", "notification.favourite": "{name} thích tút của bạn", "notification.follow": "{name} theo dõi bạn", "notification.follow_request": "{name} yêu cầu theo dõi bạn", @@ -399,7 +399,7 @@ "notifications.clear": "Xóa hết thông báo", "notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?", "notifications.column_settings.admin.report": "Báo cáo mới:", - "notifications.column_settings.admin.sign_up": "Lượt đăng ký mới:", + "notifications.column_settings.admin.sign_up": "Người dùng mới:", "notifications.column_settings.alert": "Thông báo trên máy tính", "notifications.column_settings.favourite": "Lượt thích:", "notifications.column_settings.filter_bar.advanced": "Toàn bộ", @@ -411,8 +411,8 @@ "notifications.column_settings.poll": "Kết quả bình chọn:", "notifications.column_settings.push": "Thông báo đẩy", "notifications.column_settings.reblog": "Lượt đăng lại mới:", - "notifications.column_settings.show": "Thông báo trên thanh menu", - "notifications.column_settings.sound": "Kèm theo tiếng \"bíp\"", + "notifications.column_settings.show": "Hiện trên thanh bên", + "notifications.column_settings.sound": "Kèm âm thanh", "notifications.column_settings.status": "Tút mới:", "notifications.column_settings.unread_notifications.category": "Thông báo chưa đọc", "notifications.column_settings.unread_notifications.highlight": "Nổi bật thông báo chưa đọc", @@ -512,12 +512,12 @@ "report_notification.categories.violation": "Vi phạm quy tắc", "report_notification.open": "Mở báo cáo", "search.placeholder": "Tìm kiếm", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Tìm kiếm hoặc nhập URL", "search_popout.search_format": "Gợi ý", - "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.", + "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, biệt danh và hashtag.", "search_popout.tips.hashtag": "hashtag", "search_popout.tips.status": "tút", - "search_popout.tips.text": "Nội dung trả về là tên người dùng, tên hiển thị và hashtag", + "search_popout.tips.text": "Nội dung trả về là tên người dùng, biệt danh và hashtag", "search_popout.tips.user": "người dùng", "search_results.accounts": "Người dùng", "search_results.all": "Toàn bộ", @@ -608,7 +608,7 @@ "timeline_hint.resources.follows": "Đang theo dõi", "timeline_hint.resources.statuses": "Tút cũ hơn", "trends.counter_by_accounts": "{count, plural, other {{count} lượt}} dùng trong {days, plural, other {{days} ngày}} qua", - "trends.trending_now": "Xu hướng", + "trends.trending_now": "Thịnh hành", "ui.beforeunload": "Bản nháp của bạn sẽ bị mất nếu bạn thoát khỏi Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "Đang nhận dạng ký tự…", "upload_modal.preview_label": "Xem trước ({ratio})", "upload_progress.label": "Đang tải lên...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Đang tải lên…", "video.close": "Đóng video", "video.download": "Lưu về máy", "video.exit_fullscreen": "Thoát toàn màn hình", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index da5da985b2..0108ab3454 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -339,7 +339,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "ⵔⵏⵓ ⵖⵔ ⵜⵍⴳⴰⵎⵜ", "lists.account.remove": "ⴽⴽⵙ ⵙⴳ ⵜⵍⴳⴰⵎⵜ", "lists.delete": "ⴽⴽⵙ ⵜⴰⵍⴳⴰⵎⵜ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index c8f9b2126c..71415d525b 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,7 +1,7 @@ { "about.blocks": "被限制的服务器", "about.contact": "联系方式:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon是免费,开源的软件,也是Mastodon gmbH的商标。", "about.domain_blocks.comment": "原因", "about.domain_blocks.domain": "域名", "about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。", @@ -40,7 +40,7 @@ "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", - "account.joined_short": "Joined", + "account.joined_short": "加入于", "account.languages": "更改订阅语言", "account.link_verified_on": "此链接的所有权已在 {date} 检查", "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", @@ -95,8 +95,8 @@ "closed_registrations.other_server_instructions": "基于Mastodon去中心化的特性, 你可以在其它服务器上创建账户并与该服务器保持联系.", "closed_registrations_modal.description": "您并不能在 {domain} 上创建账户, 但您无需在 {domain} 上的账户也可以使用Mastodon.", "closed_registrations_modal.find_another_server": "查找另外的服务器", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.preamble": "Mastodon是分布式的,所以无论您在哪个实例创建帐户,您都可以关注并与本服务器上的任何人交流。 甚至您可以自己搭建实例。", + "closed_registrations_modal.title": "在 Mastodon 注册", "column.about": "关于", "column.blocks": "已屏蔽的用户", "column.bookmarks": "书签", @@ -259,13 +259,13 @@ "follow_request.authorize": "授权", "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "关于本站", + "footer.directory": "用户目录", + "footer.get_app": "获取应用程序", + "footer.invite": "邀请", + "footer.keyboard_shortcuts": "快捷键列表", + "footer.privacy_policy": "隐私政策", + "footer.source_code": "查看源代码", "generic.saved": "已保存", "getting_started.heading": "开始使用", "hashtag.column_header.tag_mode.all": "以及 {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "下一个", "lightbox.previous": "上一个", "limited_account_hint.action": "仍然显示个人资料", - "limited_account_hint.title": "此个人资料已被服务器监察员隐藏。", + "limited_account_hint.title": "此账户已被 {domain} 管理员隐藏。", "lists.account.add": "添加到列表", "lists.account.remove": "从列表中移除", "lists.delete": "删除列表", @@ -382,7 +382,7 @@ "navigation_bar.pins": "置顶嘟文", "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", - "navigation_bar.search": "Search", + "navigation_bar.search": "搜索", "navigation_bar.security": "安全", "not_signed_in_indicator.not_signed_in": "您需要登录才能访问此资源。", "notification.admin.report": "{name} 已报告 {target}", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "违反规则", "report_notification.open": "展开报告", "search.placeholder": "搜索", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "搜索或输入链接", "search_popout.search_format": "高级搜索格式", "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的帖子,以及其他用户公开的用户名、昵称和话题标签。", "search_popout.tips.hashtag": "话题标签", @@ -572,7 +572,7 @@ "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "移除书签", - "status.replied_to": "Replied to {name}", + "status.replied_to": "回复给 {name}", "status.reply": "回复", "status.replyAll": "回复所有人", "status.report": "举报 @{name}", @@ -585,7 +585,7 @@ "status.show_more_all": "显示全部内容", "status.show_original": "显示原文", "status.translate": "翻译", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translated_from_with": "使用 {provider} 翻译 {lang} ", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "正在准备文字识别…", "upload_modal.preview_label": "预览 ({ratio})", "upload_progress.label": "上传中…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "正在处理…", "video.close": "关闭视频", "video.download": "下载文件", "video.exit_fullscreen": "退出全屏", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 6ea522ab36..fb277f50f0 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -339,7 +339,7 @@ "lightbox.next": "下一頁", "lightbox.previous": "上一頁", "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of your server.", + "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "新增到列表", "lists.account.remove": "從列表刪除", "lists.delete": "刪除列表", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 8ef55acd39..a5c6efb1c9 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,7 +1,7 @@ { "about.blocks": "受管制的伺服器", "about.contact": "聯絡我們:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon 是一個自由的開源軟體,是 Mastodon gGmbH 的註冊商標。", "about.domain_blocks.comment": "原因", "about.domain_blocks.domain": "網域", "about.domain_blocks.preamble": "Mastodon 一般來說允許您閱讀並和聯邦宇宙上任何伺服器的使用者互動。這些伺服器是這個站台設下的例外。", @@ -259,13 +259,13 @@ "follow_request.authorize": "授權", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳號的跟隨請求。", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "關於", + "footer.directory": "個人檔案目錄", + "footer.get_app": "取得應用程式", + "footer.invite": "邀請他人", + "footer.keyboard_shortcuts": "鍵盤快速鍵", + "footer.privacy_policy": "隱私權政策", + "footer.source_code": "檢視原始碼", "generic.saved": "已儲存", "getting_started.heading": "開始使用", "hashtag.column_header.tag_mode.all": "以及 {additional}", @@ -339,7 +339,7 @@ "lightbox.next": "下一步", "lightbox.previous": "上一步", "limited_account_hint.action": "一律顯示個人檔案", - "limited_account_hint.title": "此個人檔案已被您伺服器的管理員隱藏。", + "limited_account_hint.title": "此個人檔案已被 {domain} 的管理員隱藏。", "lists.account.add": "新增至列表", "lists.account.remove": "從列表中移除", "lists.delete": "刪除列表", @@ -512,7 +512,7 @@ "report_notification.categories.violation": "違反規則", "report_notification.open": "開啟檢舉報告", "search.placeholder": "搜尋", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "搜尋或輸入網址", "search_popout.search_format": "進階搜尋格式", "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳號顯示名稱和主題標籤。", "search_popout.tips.hashtag": "主題標籤", @@ -635,7 +635,7 @@ "upload_modal.preparing_ocr": "準備 OCR 中……", "upload_modal.preview_label": "預覽 ({ratio})", "upload_progress.label": "上傳中...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "處理中...", "video.close": "關閉影片", "video.download": "下載檔案", "video.exit_fullscreen": "退出全螢幕", diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml index d35b95dfc2..96612a0719 100644 --- a/config/locales/activerecord.ast.yml +++ b/config/locales/activerecord.ast.yml @@ -3,6 +3,7 @@ ast: activerecord: attributes: user: + email: Direición de corréu electrónicu locale: Locale password: Contraseña user/account: @@ -19,3 +20,7 @@ ast: attributes: website: invalid: nun ye una URL válida + user: + attributes: + email: + unreachable: nun paez qu'esista diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml index 5505254e5f..a411d270d4 100644 --- a/config/locales/activerecord.cs.yml +++ b/config/locales/activerecord.cs.yml @@ -29,6 +29,10 @@ cs: attributes: website: invalid: není platná URL + import: + attributes: + data: + malformed: je chybný status: attributes: reblog: diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml index c7283aafd5..534d99117d 100644 --- a/config/locales/activerecord.es-MX.yml +++ b/config/locales/activerecord.es-MX.yml @@ -13,22 +13,26 @@ es-MX: user/account: username: Nombre de usuario user/invite_request: - text: Razón + text: Motivo errors: models: account: attributes: username: - invalid: solo puede contener letras, números y guiones bajos + invalid: debe contener sólo letras, números y guiones bajos reserved: está reservado admin/webhook: attributes: url: - invalid: no es una URL válida + invalid: no es una dirección URL válida doorkeeper/application: attributes: website: invalid: no es una URL válida + import: + attributes: + data: + malformed: tiene un formato incorrecto status: attributes: reblog: @@ -39,7 +43,7 @@ es-MX: blocked: utiliza un proveedor de correo no autorizado unreachable: no parece existir role_id: - elevated: no puede ser mayor que tu rol actual + elevated: no puede ser mayor a tu rol actual user_role: attributes: permissions_as_keys: diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml index f9798cabe4..1ead707f52 100644 --- a/config/locales/activerecord.fi.yml +++ b/config/locales/activerecord.fi.yml @@ -29,6 +29,10 @@ fi: attributes: website: invalid: ei ole kelvollinen URL + import: + attributes: + data: + malformed: on väärin muodostettu status: attributes: reblog: diff --git a/config/locales/activerecord.ga.yml b/config/locales/activerecord.ga.yml index 20a9da24e9..64f3e57f80 100644 --- a/config/locales/activerecord.ga.yml +++ b/config/locales/activerecord.ga.yml @@ -1 +1,14 @@ +--- ga: + activerecord: + attributes: + poll: + options: Roghanna + user: + email: Seoladh ríomhphoist + locale: Láthair + password: Pasfhocal + user/account: + username: Ainm úsáideora + user/invite_request: + text: Fáth diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml index 44340b3e91..67bad4cb45 100644 --- a/config/locales/activerecord.hu.yml +++ b/config/locales/activerecord.hu.yml @@ -29,6 +29,10 @@ hu: attributes: website: invalid: nem érvényes URL + import: + attributes: + data: + malformed: hibás status: attributes: reblog: diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml index a4c8af15f8..f2ceee70d3 100644 --- a/config/locales/activerecord.sq.yml +++ b/config/locales/activerecord.sq.yml @@ -29,6 +29,10 @@ sq: attributes: website: invalid: s’është URL + import: + attributes: + data: + malformed: janë të keqformuara status: attributes: reblog: diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml index 89a7574635..5a009becc3 100644 --- a/config/locales/activerecord.sv.yml +++ b/config/locales/activerecord.sv.yml @@ -21,6 +21,14 @@ sv: username: invalid: endast bokstäver, siffror och understrykning reserved: är reserverat + admin/webhook: + attributes: + url: + invalid: är inte en giltig URL + doorkeeper/application: + attributes: + website: + invalid: är inte en giltig URL import: attributes: data: @@ -34,3 +42,14 @@ sv: email: blocked: använder en icke tillåten e-postleverantör unreachable: verkar inte existera + role_id: + elevated: kan inte vara högre än din nuvarande roll + user_role: + attributes: + permissions_as_keys: + dangerous: inkludera behörigheter som inte är säkra för grundrollen + elevated: kan inte inkludera behörigheter som din nuvarande roll inte innehar + own_role: kan inte ändras med din nuvarande roll + position: + elevated: kan inte vara högre än din nuvarande roll + own_role: kan inte ändras med din nuvarande roll diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml index 64586f5bbe..45d5565424 100644 --- a/config/locales/activerecord.th.yml +++ b/config/locales/activerecord.th.yml @@ -29,6 +29,10 @@ th: attributes: website: invalid: ไม่ใช่ URL ที่ถูกต้อง + import: + attributes: + data: + malformed: ผิดรูปแบบ status: attributes: reblog: diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index c46c874517..e36ea66622 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -29,6 +29,10 @@ zh-CN: attributes: website: invalid: 非有效网址 + import: + attributes: + data: + malformed: 格式错误 status: attributes: reblog: diff --git a/config/locales/af.yml b/config/locales/af.yml index 038660b7a3..7320e4badb 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -4,10 +4,16 @@ af: contact_unavailable: NVT hosted_on: Mastodon gehuisves op %{domain} admin: + announcements: + publish: Publiseer + published_msg: Aankondiging was suksesvol gepubliseer! + unpublish: Depubliseer domain_blocks: existing_domain_block: Jy het alreeds strenger perke ingelê op %{name}. trends: only_allowed: Slegs toegelate + preview_card_providers: + title: Publiseerders trending: Gewild webhooks: add_new: Voeg end-punt by diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 30bb52c5a8..3f6602e582 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -25,7 +25,8 @@ ast: ip: IP location: local: Llocal - title: Allugamientu + remote: Remotu + title: Llugar most_recent_activity: L'actividá más recién most_recent_ip: La IP más recién protocol: Protocolu @@ -33,9 +34,10 @@ ast: resend_confirmation: already_confirmed: Esti usuariu yá ta confirmáu send: Reunviar les instrucciones - statuses: Estaos + statuses: Artículos title: Cuentes username: Nome d'usuariu + web: Web announcements: destroyed_msg: "¡L'anunciu desanicióse correutamente!" new: @@ -130,7 +132,7 @@ ast: didnt_get_confirmation: "¿Nun recibiesti les instrucciones de confirmación?" dont_have_your_security_key: "¿Nun tienes una clave de seguranza?" forgot_password: "¿Escaeciesti la contraseña?" - login: Aniciar sesión + login: Aniciar la sesión migrate_account: Mudase a otra cuenta migrate_account_html: Si deseyes redirixir esta cuenta a otra, pues configuralo equí. providers: @@ -378,7 +380,6 @@ ast: visibilities: private: Namái siguidores private_long: Namái s'amuesen a los siguidores - public_long: Tol mundu puen velos unlisted: Nun llistar unlisted_long: Tol mundu puen velos pero nun se llisten nes llinies temporales públiques statuses_cleanup: @@ -399,8 +400,8 @@ ast: does_not_match_previous_name: nun concasa col nome anterior themes: contrast: Contraste altu - default: Mastodon - mastodon-light: Claridá + default: Mastodon (escuridá) + mastodon-light: Mastodon (claridá) two_factor_authentication: disable: Desactivar enabled: L'autenticación en dos pasos ta activada @@ -419,7 +420,6 @@ ast: none: Alvertencia suspend: Cuenta suspendida welcome: - full_handle_hint: Esto ye lo que-yos diríes a los collacios pa que puean unviate mensaxes o siguite dende otra instancia. subject: Afáyate en Mastodon users: follow_limit_reached: Nun pues siguir a más de %{limit} persones diff --git a/config/locales/br.yml b/config/locales/br.yml index b9bf388869..2de887b6d9 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -1,5 +1,7 @@ --- br: + about: + title: Diwar-benn accounts: follow: Heuliañ followers: @@ -8,7 +10,9 @@ br: one: Heulier·ez other: Heulier·ez two: Heulier·ez - following: O heuliañ + following: Koumanantoù + last_active: oberiantiz ziwezhañ + nothing_here: N'eus netra amañ ! posts: few: Toud many: Toud @@ -18,9 +22,13 @@ br: posts_tab_heading: Toudoù admin: accounts: + add_email_domain_block: Stankañ an domani postel + approve: Aprouiñ + are_you_sure: Ha sur oc'h? avatar: Avatar by_domain: Domani change_email: + changed_msg: Chomlec'h postel kemmet ! current_email: Postel bremanel label: Kemm ar postel new_email: Postel nevez @@ -140,7 +148,7 @@ br: invalid_password: Ger-tremen diwiriek date: formats: - default: "%d %b %Y" + default: "%d a viz %b %Y" with_month_name: "%d a viz %B %Y" datetime: distance_in_words: @@ -255,7 +263,9 @@ br: mastodon-light: Mastodoñ (Sklaer) time: formats: - default: "%He%M, %d %b %Y" + default: "%d a viz %b %Y, %H:%M" + month: Miz %b %Y + time: "%H:%M" two_factor_authentication: add: Ouzhpennañ disable: Diweredekaat diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 947329fedf..bd778dc5c8 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -207,6 +207,7 @@ ca: reject_user: Rebutja l'usuari remove_avatar_user: Eliminar avatar reopen_report: Reobre l'informe + resend_user: Torna a enviar el correu de confirmació reset_password_user: Restableix la contrasenya resolve_report: Resolt l'informe sensitive_account: Marcar els mèdia en el teu compte com a sensibles @@ -265,6 +266,7 @@ ca: reject_user_html: "%{name} ha rebutjat el registre de %{target}" remove_avatar_user_html: "%{name} ha eliminat l'avatar de %{target}" reopen_report_html: "%{name} ha reobert l'informe %{target}" + resend_user_html: "%{name} ha renviat el correu de confirmació per %{target}" reset_password_user_html: "%{name} ha restablert la contrasenya de l'usuari %{target}" resolve_report_html: "%{name} ha resolt l'informe %{target}" sensitive_account_html: "%{name} ha marcat els mèdia de %{target} com a sensibles" @@ -1566,7 +1568,7 @@ ca: change_password: canvia la teva contrasenya details: 'Aquí estan els detalls del inici de sessió:' explanation: Hem detectat un inici de sessió del teu compte des d'una nova adreça IP. - further_actions_html: Si no has estat tu, recomanem que tu %{action} immediatament i activis l'autenticació de dos-factors per a mantenir el teu compte segur. + further_actions_html: Si no has estat tu, et recomanem %{action} immediatament i activis l'autenticació de dos-factors per a mantenir el teu compte segur. subject: S'ha accedit al teu compte des d'una adreça IP nova title: Un nou inici de sessió warning: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index f1a666e74e..3ea6442c20 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -737,6 +737,7 @@ cs: deleted: Smazáno favourites: Oblíbené history: Historie verzí + in_reply_to: Odpověď na language: Jazyk media: title: Média diff --git a/config/locales/da.yml b/config/locales/da.yml index 8c6a9c8fd5..c2bccb224f 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -207,6 +207,7 @@ da: reject_user: Afvis bruger remove_avatar_user: Fjern profilbillede reopen_report: Genåbn anmeldelse + resend_user: Gensend bekræftelsese-mail reset_password_user: Nulstil adgangskode resolve_report: Løs anmeldelse sensitive_account: Gennemtving sensitiv konto @@ -265,6 +266,7 @@ da: reject_user_html: "%{name} afviste tilmelding fra %{target}" remove_avatar_user_html: "%{name} fjernede %{target}s profilbillede" reopen_report_html: "%{name} genåbnede anmeldelsen %{target}" + resend_user_html: "%{name} gensendte bekræftelses-e-mail for %{target}" reset_password_user_html: "%{name} nulstillede adgangskoden for brugeren %{target}" resolve_report_html: "%{name} løste anmeldelsen %{target}" sensitive_account_html: "%{name} markerede %{target}s medier som sensitive" diff --git a/config/locales/de.yml b/config/locales/de.yml index b90d8a6065..3944d031c4 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -11,7 +11,7 @@ de: followers: one: Follower other: Folgende - following: Folgt + following: Folge ich instance_actor_flash: Dieses Konto ist ein virtueller Akteur, der den Server selbst repräsentiert und nicht ein einzelner Benutzer. Es wird für Föderationszwecke verwendet und sollte nicht gesperrt werden. last_active: zuletzt aktiv link_verified_on: Das Profil mit dieser E-Mail-Adresse wurde bereits am %{date} bestätigt @@ -113,7 +113,7 @@ de: public: Öffentlich push_subscription_expires: PuSH-Abonnement läuft aus redownload: Profil neu laden - redownloaded_msg: Profil von %{username} erfolgreich von Ursprung aktualisiert + redownloaded_msg: Das Profil von %{username} wurde von der Quelle erfolgreich aktualisiert reject: Ablehnen rejected_msg: Anmeldeantrag von %{username} erfolgreich abgelehnt remove_avatar: Profilbild entfernen @@ -121,7 +121,7 @@ de: removed_avatar_msg: Profilbild von %{username} erfolgreich entfernt removed_header_msg: Titelbild von %{username} wurde erfolgreich entfernt resend_confirmation: - already_confirmed: Diese_r Benutzer_in wurde bereits bestätigt + already_confirmed: Dieses Profil wurde bereits bestätigt send: Bestätigungs-E-Mail erneut senden success: Bestätigungs-E-Mail erfolgreich gesendet! reset: Zurücksetzen @@ -201,20 +201,21 @@ de: enable_custom_emoji: Benutzerdefiniertes Emoji aktivieren enable_sign_in_token_auth_user: Zwei-Faktor-Authentisierung (2FA) per E-Mail für diesen Account aktivieren enable_user: Benutzer aktivieren - memorialize_account: Account deaktivieren + memorialize_account: Gedenkkonto promote_user: Benutzer befördern reject_appeal: Einspruch ablehnen reject_user: Benutzer ablehnen remove_avatar_user: Profilbild entfernen reopen_report: Meldung wieder eröffnen + resend_user: Bestätigungs-E-Mail erneut senden reset_password_user: Passwort zurücksetzen resolve_report: Bericht lösen - sensitive_account: Markiere die Medien in deinem Konto als NSFW + sensitive_account: Zwangssensibles Konto silence_account: Konto stummschalten suspend_account: Konto sperren unassigned_report: Meldung widerrufen unblock_email_account: E-Mail Adresse entsperren - unsensitive_account: Markiere die Medien in deinem Konto nicht mehr als NSFW + unsensitive_account: Zwangssensibles Konto rückgängig machen unsilence_account: Konto nicht mehr stummschalten unsuspend_account: Konto nicht mehr sperren update_announcement: Ankündigung aktualisieren @@ -240,7 +241,7 @@ de: create_ip_block_html: "%{name} hat eine Regel für IP %{target} erstellt" create_unavailable_domain_html: "%{name} hat die Lieferung an die Domain %{target} eingestellt" create_user_role_html: "%{name} hat die Rolle %{target} erstellt" - demote_user_html: "%{name} stufte Benutzer_in %{target} herunter" + demote_user_html: "%{name} hat die Nutzungsrechte von %{target} heruntergestuft" destroy_announcement_html: "%{name} hat die neue Ankündigung %{target} gelöscht" destroy_canonical_email_block_html: "%{name} hat die E-Mail mit dem Hash %{target} freigegeben" destroy_custom_emoji_html: "%{name} hat das %{target} Emoji gelöscht" @@ -252,19 +253,20 @@ de: destroy_status_html: "%{name} hat einen Beitrag von %{target} entfernt" destroy_unavailable_domain_html: "%{name} setzte die Lieferung an die Domain %{target} fort" destroy_user_role_html: "%{name} hat die Rolle %{target} gelöscht" - disable_2fa_user_html: "%{name} hat Zwei-Faktor-Anforderung für Benutzer_in %{target} deaktiviert" + disable_2fa_user_html: "%{name} hat die Zwei-Faktor-Authentisierung für %{target} deaktiviert" disable_custom_emoji_html: "%{name} hat das %{target} Emoji deaktiviert" disable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token Authentifizierung für %{target} deaktiviert" - disable_user_html: "%{name} hat Zugang von Benutzer_in %{target} deaktiviert" + disable_user_html: "%{name} hat den Zugang für %{target} deaktiviert" enable_custom_emoji_html: "%{name} hat das %{target} Emoji aktiviert" enable_sign_in_token_auth_user_html: "%{name} hat die E-Mail-Token-Authentifizierung für %{target} aktiviert" - enable_user_html: "%{name} hat Zugang von Benutzer_in %{target} aktiviert" + enable_user_html: "%{name} hat den Zugang für %{target} aktiviert" memorialize_account_html: "%{name} hat das Konto von %{target} in eine Gedenkseite umgewandelt" promote_user_html: "%{name} hat %{target} befördert" reject_appeal_html: "%{name} hat die Moderationsbeschlüsse von %{target} abgelehnt" reject_user_html: "%{name} hat die Registrierung von %{target} abgelehnt" remove_avatar_user_html: "%{name} hat das Profilbild von %{target} entfernt" reopen_report_html: "%{name} hat die Meldung %{target} wieder geöffnet" + resend_user_html: "%{name} hat erneut eine Bestätigungs-E-Mail für %{target} gesendet" reset_password_user_html: "%{name} hat das Passwort von %{target} zurückgesetzt" resolve_report_html: "%{name} hat die Meldung %{target} bearbeitet" sensitive_account_html: "%{name} hat die Medien von %{target} mit einer Inhaltswarnung versehen" @@ -272,7 +274,7 @@ de: suspend_account_html: "%{name} hat das Konto von %{target} verbannt" unassigned_report_html: "%{name} hat die Zuweisung der Meldung %{target} entfernt" unblock_email_account_html: "%{name} entsperrte die E-Mail-Adresse von %{target}" - unsensitive_account_html: "%{name} hob die Inhaltswarnung für Medien von %{target} auf" + unsensitive_account_html: "%{name} hat die Inhaltswarnung für Medien von %{target} aufgehoben" unsilence_account_html: "%{name} hat die Stummschaltung von %{target} aufgehoben" unsuspend_account_html: "%{name} hat die Verbannung von %{target} aufgehoben" update_announcement_html: "%{name} aktualisierte Ankündigung %{target}" @@ -378,7 +380,7 @@ de: domain: Domain edit: Domainblockade bearbeiten existing_domain_block: Du hast %{name} bereits stärker eingeschränkt. - existing_domain_block_html: Es gibt schon eine Blockade für %{name}, diese muss erst aufgehoben werden. + existing_domain_block_html: Du hast bereits strengere Beschränkungen für die Domain %{name} verhängt. Du musst diese erst aufheben. new: create: Blockade einrichten hint: Die Domain-Blockade wird nicht verhindern, dass Konteneinträge in der Datenbank erstellt werden. Aber es werden rückwirkend und automatisch alle Moderationsmethoden auf diese Konten angewendet. @@ -557,7 +559,7 @@ de: add_to_report: Mehr zur Meldung hinzufügen are_you_sure: Bist du dir sicher? assign_to_self: Mir zuweisen - assigned: Zugewiesene_r Moderator_in + assigned: Zugewiesene*r Moderator*in by_target_domain: Domain des gemeldeten Kontos category: Kategorie category_description_html: Der Grund, warum dieses Konto und/oder der Inhalt gemeldet wurden, wird in der Kommunikation mit dem gemeldeten Konto zitiert @@ -569,7 +571,7 @@ de: forwarded: Weitergeleitet forwarded_to: Weitergeleitet an %{domain} mark_as_resolved: Als gelöst markieren - mark_as_sensitive: Mit einer Inhaltswarnung (NSFW) versehen + mark_as_sensitive: Mit einer Inhaltswarnung versehen mark_as_unresolved: Als ungelöst markieren no_one_assigned: Niemand notes: @@ -577,7 +579,7 @@ de: create_and_resolve: Mit Kommentar lösen create_and_unresolve: Mit Kommentar wieder öffnen delete: Löschen - placeholder: Beschreibe, welche Maßnahmen ergriffen wurden oder irgendwelche andere Neuigkeiten… + placeholder: Bitte beschreiben, welche Maßnahmen ergriffen wurden oder andere damit verbundene Aktualisierungen … title: Notizen notes_description_html: Zeige und hinterlasse Notizen an andere Moderator_innen und dein zukünftiges Ich quick_actions_description_html: 'Führe eine schnelle Aktion aus oder scrolle nach unten, um gemeldete Inhalte zu sehen:' @@ -597,7 +599,7 @@ de: unassign: Zuweisung entfernen unresolved: Ungelöst updated_at: Aktualisiert - view_profile: Zeige Profil + view_profile: Profil anzeigen roles: add_new: Rolle hinzufügen assigned_users: @@ -684,7 +686,7 @@ de: discovery: follow_recommendations: Folgeempfehlungen preamble: Das Auffinden interessanter Inhalte ist wichtig, um neue Nutzer einzubinden, die Mastodon noch nicht kennen. Bestimmen Sie, wie verschiedene Suchfunktionen auf Ihrem Server funktionieren. - profile_directory: Benutzerverzeichnis + profile_directory: Profilverzeichnis public_timelines: Öffentliche Timelines title: Entdecken trends: Trends @@ -733,9 +735,9 @@ de: actions: delete_statuses: "%{name} hat die Beiträge von %{target} entfernt" disable: "%{name} hat das Konto von %{target} eingefroren" - mark_statuses_as_sensitive: "%{name} hat die Beiträge von %{target} mit einer Inhaltswarnung (NSFW) versehen" + mark_statuses_as_sensitive: "%{name} hat die Beiträge von %{target} mit einer Inhaltswarnung versehen" none: "%{name} hat eine Warnung an %{target} gesendet" - sensitive: "%{name} hat das Profil von %{target} mit einer Inhaltswarnung (NSFW) versehen" + sensitive: "%{name} hat das Profil von %{target} mit einer Inhaltswarnung versehen" silence: "%{name} hat das Konto von %{target} eingeschränkt" suspend: "%{name} hat das Konto von %{target} verbannt" appeal_approved: Einspruch angenommen @@ -851,9 +853,9 @@ de: actions: delete_statuses: deren Beiträge zu löschen disable: deren Konto einzufrieren - mark_statuses_as_sensitive: um die Beiträge des Profils mit einer Inhaltswarnung (NSFW) zu versehen + mark_statuses_as_sensitive: um die Beiträge des Profils mit einer Inhaltswarnung zu versehen none: eine Warnung - sensitive: um das Profil mit einer Inhaltswarnung (NSFW) zu versehen + sensitive: um das Profil mit einer Inhaltswarnung zu versehen silence: deren Konto zu beschränken suspend: deren Konto zu sperren body: "%{target} hat etwas gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:" @@ -894,14 +896,14 @@ de: body: Mastodon wurde von Freiwilligen übersetzt. guide_link: https://de.crowdin.com/project/mastodon guide_link_text: Jeder kann etwas dazu beitragen. - sensitive_content: Inhaltswarnung (NSFW) + sensitive_content: Inhaltswarnung toot_layout: Timeline-Layout application_mailer: notification_preferences: Ändere E-Mail-Einstellungen salutation: "%{name}," settings: 'E-Mail-Einstellungen ändern: %{link}' view: 'Ansehen:' - view_profile: Zeige Profil + view_profile: Profil anzeigen view_status: Beitrag öffnen applications: created: Anwendung erfolgreich erstellt @@ -931,7 +933,7 @@ de: migrate_account: Ziehe zu einem anderen Konto um migrate_account_html: Wenn du wünschst, dieses Konto zu einem anderen umzuziehen, kannst du dies hier einstellen. or_log_in_with: Oder anmelden mit - privacy_policy_agreement_html: Ich habe die Datenschutzerklärung gelesen und stimme ihr zu + privacy_policy_agreement_html: Ich habe die Datenschutzbestimmungen gelesen und stimme ihnen zu providers: cas: CAS saml: SAML @@ -969,7 +971,7 @@ de: following: 'Erfolg! Du folgst nun:' post_follow: close: Oder du schließt einfach dieses Fenster. - return: Zeige das Profil + return: Das Benutzerprofil anzeigen web: In der Benutzeroberfläche öffnen title: "%{acct} folgen" challenge: @@ -1038,9 +1040,9 @@ de: title_actions: delete_statuses: Post-Entfernung disable: Einfrieren des Kontos - mark_statuses_as_sensitive: Beiträge mit einer Inhaltswarnung (NSFW) versehen + mark_statuses_as_sensitive: Beiträge mit einer Inhaltswarnung versehen none: Warnung - sensitive: Profil mit einer Inhaltswarnung (NSFW) versehen + sensitive: Profil mit einer Inhaltswarnung versehen silence: Kontobeschränkung suspend: Kontosperre your_appeal_approved: Dein Einspruch wurde angenommen @@ -1071,7 +1073,7 @@ de: date: Datum download: Dein Archiv herunterladen hint_html: Du kannst ein Archiv deiner Beiträge, Listen, hochgeladenen Medien, usw. anfordern. Die exportierten Daten werden in dem ActivityPub-Format gespeichert und können mit jeder passenden Software gelesen werden. Du kannst alle 7 Tage ein Archiv anfordern. - in_progress: Dein persönliches Archiv wird erstellt... + in_progress: Persönliches Archiv wird erstellt … request: Dein Archiv anfordern size: Größe blocks: Blockierte Accounts @@ -1250,7 +1252,7 @@ de: carry_mutes_over_text: Das Profil wurde von %{acct} übertragen – und dieses hattest du stummgeschaltet. copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier sind deine letzten Notizen zu diesem Benutzer:' navigation: - toggle_menu: Menü umschalten + toggle_menu: Menü ein-/ausblenden notification_mailer: admin: report: @@ -1287,7 +1289,7 @@ de: subject: "%{name} bearbeitete einen Beitrag" notifications: email_events: Benachrichtigungen per E-Mail - email_events_hint: Eine E-Mail erhalten, ... + email_events_hint: 'Bitte die Ereignisse auswählen, für die du Benachrichtigungen erhalten möchtest:' other_settings: Weitere Einstellungen number: human: @@ -1409,7 +1411,7 @@ de: view_authentication_history: Authentifizierungsverlauf deines Kontos anzeigen settings: account: Konto - account_settings: Konto & Sicherheit + account_settings: Kontoeinstellungen aliases: Kontoaliase appearance: Aussehen authorized_apps: Autorisierte Anwendungen @@ -1518,7 +1520,7 @@ de: stream_entries: pinned: Angehefteter Beitrag reblogged: teilte - sensitive_content: Inhaltswarnung (NSFW) + sensitive_content: Inhaltswarnung strikes: errors: too_late: Es ist zu spät, um gegen diese Verwarnung Einspruch zu erheben @@ -1601,7 +1603,7 @@ de: silence: Konto limitiert suspend: Konto gesperrt welcome: - edit_profile_action: Profil einstellen + edit_profile_action: Profil einrichten edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst, deinen Anzeigenamen änderst und viel mehr. Du kannst optional einstellen, ob du Accounts, die dir folgen wollen, akzeptieren musst, bevor sie dies können. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml index 687c8e7b2d..7429b3014e 100644 --- a/config/locales/devise.ast.yml +++ b/config/locales/devise.ast.yml @@ -10,9 +10,9 @@ ast: inactive: Entá nun s'activó la cuenta. last_attempt: Tienes un intentu más enantes de bloquiar la cuenta. locked: La cuenta ta bloquiada. - pending: La cuenta ta entá en revisión. - timeout: La sesión caducó. Volvi aniciar sesión pa siguir. - unauthenticated: Precises aniciar sesión o rexistrate enantes de siguir. + pending: La cuenta sigue en revisión. + timeout: La sesión caducó. Volvi aniciala pa siguir. + unauthenticated: Tienes d'aniciar la sesión o rexistrate enantes de siguir. unconfirmed: Tienes de confirmar la direición de corréu electrónicu enantes de siguir. mailer: confirmation_instructions: @@ -30,9 +30,9 @@ ast: extra: Si nun solicitesti esto, inora esti corréu. La contraseña nun va camudar hasta que nun accedas al enllaz d'enriba y crees una nueva. subject: 'Mastodon: Instrucciones pa reafitar la contraseña' two_factor_disabled: - subject: 'Mastodon: Desactivóse l''autenticación en dos pasos' + subject: 'Mastodon: desactivóse l''autenticación en dos pasos' two_factor_enabled: - subject: 'Mastodon: Activóse l''autenticación en dos pasos' + subject: 'Mastodon: activóse l''autenticación en dos pasos' two_factor_recovery_codes_changed: subject: 'Mastodon: Rexeneráronse los códigos de l''autenticación en dos pasos' unlock_instructions: @@ -43,16 +43,18 @@ ast: updated_not_active: La contraseña camudó con correutamente. registrations: signed_up: "¡Afáyate! Rexistréstite correutamente." - signed_up_but_inactive: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la to cuenta entá nun s'activó. - signed_up_but_locked: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la to cuenta ta bloquiada. + signed_up_but_inactive: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la cuenta entá nun s'activó. + signed_up_but_locked: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la cuenta ta bloquiada. signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la direición de corréu. Sigui l'enllaz p'activar la cuenta. Comprueba la carpeta Puxarra si nun recibiesti esti corréu. updated: La cuenta anovóse correutamente. sessions: + already_signed_out: Zarresti la sesión correutamente. signed_in: Aniciesti sesión correutamente. + signed_out: Zarresti la sesión correutamente. unlocks: send_instructions: Nunos minutos vas recibir un corréu coles instrucciones pa cómo desbloquiar la cuenta. Comprueba la carpeta Puxarra si nun lu recibiesti. send_paranoid_instructions: Si esiste la cuenta, nun momentu vas recibir un corréu coles instrucciones pa cómo desbloquiala. Comprueba la carpeta Puxarra si nun recibiesti esti corréu. - unlocked: La cuenta desbloquióse correutamente. Anicia sesión pa siguir. + unlocked: La cuenta desbloquióse correutamente. Anicia la sesión pa siguir. errors: messages: already_confirmed: yá se confirmó, volvi aniciar sesión diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 4cc829f3b8..680b583309 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -20,11 +20,11 @@ de: confirmation_instructions: action: E-Mail-Adresse verifizieren action_with_app: Bestätigen und zu %{app} zurückkehren - explanation: Du hast einen Account auf %{host} mit dieser E-Mail-Adresse erstellt. Du bist nur noch einen Klick weit von der Aktivierung entfernt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. + explanation: Du hast auf %{host} mit dieser E-Mail-Adresse ein Konto erstellt. Du bist nur noch einen Klick von der Aktivierung entfernt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. explanation_when_pending: Du hast dich für eine Einladung bei %{host} mit dieser E-Mailadresse beworben. Sobald du deine E-Mailadresse bestätigst hast, werden wir deine Anfrage überprüfen. Du kannst dich in dieser Zeit nicht anmelden. Wenn deine Anfrage abgelehnt wird, werden deine Daten entfernt, also wird keine weitere Handlung benötigt. Wenn du das nicht warst, kannst du diese E-Mail ignorieren. extra_html: Bitte lies auch die Regeln des Servers und unsere Nutzungsbedingungen. subject: 'Mastodon: Bestätigung deines Kontos bei %{instance}' - title: Verifiziere E-Mail-Adresse + title: E-Mail-Adresse verifizieren email_changed: explanation: 'Die E-Mail-Adresse deines Accounts wird geändert zu:' extra: Wenn du deine E-Mail-Adresse nicht geändert hast, dann wird es vermutlich so sein, dass jemand Zugriff zu deinem Account erhalten hat. Bitte ändere sofort dein Passwort oder kontaktiere den Administrator des Servers, wenn du dich ausgesperrt hast. @@ -39,7 +39,7 @@ de: explanation: Bestätige deine neue E-Mail-Adresse, um sie zu ändern. extra: Wenn diese Änderung nicht von dir ausgeführt wurde, dann solltest du diese E-Mail ignorieren. Die E-Mail-Adresse für deinen Mastodon-Account wird sich nicht ändern, bis du den obigen Link anklickst. subject: 'Mastodon: Bestätige E-Mail-Adresse für %{instance}' - title: Verifiziere E-Mail-Adresse + title: E-Mail-Adresse verifizieren reset_password_instructions: action: Ändere Passwort explanation: Du hast ein neues Passwort für deinen Account angefragt. diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml index 7637ae3e16..c5eae0cc52 100644 --- a/config/locales/devise.fi.yml +++ b/config/locales/devise.fi.yml @@ -112,4 +112,4 @@ fi: not_locked: ei ollut lukittu not_saved: one: '1 virhe esti kohteen %{resource} tallennuksen:' - other: "%{count} virhettä esti kohteen %{resource} tallennuksen:" + other: "%{count} virhettä esti kohteen %{resource} tallentamisen:" diff --git a/config/locales/devise.ga.yml b/config/locales/devise.ga.yml index 20a9da24e9..6a8e0ec752 100644 --- a/config/locales/devise.ga.yml +++ b/config/locales/devise.ga.yml @@ -1 +1,9 @@ +--- ga: + devise: + mailer: + reset_password_instructions: + action: Athraigh pasfhocal + errors: + messages: + not_found: níor aimsíodh é diff --git a/config/locales/devise.uk.yml b/config/locales/devise.uk.yml index afd83861cd..4450a4e26a 100644 --- a/config/locales/devise.uk.yml +++ b/config/locales/devise.uk.yml @@ -22,17 +22,17 @@ uk: action_with_app: Підтвердити та повернутися до %{app} explanation: Ви створили обліковий запис на %{host} з цією адресою електронної пошти, і зараз на відстані одного кліку від його активації. Якщо це були не ви, проігноруйте цього листа, будь ласка. explanation_when_pending: Ви подали заявку на запрошення до %{host} з цією адресою електронної пошти. Після підтвердження адреси ми розглянемо вашу заявку. Ви можете увійти, щоб змінити ваші дані або видалити свій обліковий запис, але Ви не зможете отримати доступ до більшості функцій, поки Ваш обліковий запис не буде схвалено. Якщо вашу заявку буде відхилено, ваші дані будуть видалені, тож вам не потрібно буде нічого робити. Якщо це були не ви, просто проігноруйте цей лист. - extra_html: Також перегляньте правила серверу та умови використання. + extra_html: Також перегляньте правила сервера та умови користування. subject: 'Mastodon: Інструкції для підтвердження %{instance}' title: Підтвердити адресу електронної пошти email_changed: explanation: 'Адреса електронної пошти для вашого облікового запису змінюється на:' - extra: Якщо ви не змінювали свою адресу електронної пошти, то хтось вірогідно отримав доступ до вашого облікового запису. Будь ласка, негайно змініть свій пароль або зв'яжіться з адміністратором серверу, якщо ви не маєте доступу до свого облікового запису. + extra: Якщо ви не змінювали свою адресу електронної пошти, то хтось вірогідно отримав доступ до вашого облікового запису. Будь ласка, негайно змініть свій пароль або зв'яжіться з адміністратором сервера, якщо ви не маєте доступу до свого облікового запису. subject: 'Mastodon: адресу електронної пошти змінено' title: Нова адреса електронної пошти password_change: explanation: Пароль до вашого облікового запису був змінений. - extra: Якщо ви не змінювали свій пароль, то хтось вірогідно отримав доступ до вашого облікового запису. Будь ласка, негайно змініть свій пароль або зв'яжіться з адміністратором серверу, якщо ви не маєте доступу до свого облікового запису. + extra: Якщо ви не змінювали свій пароль, то хтось вірогідно отримав доступ до вашого облікового запису. Будь ласка, негайно змініть свій пароль або зв'яжіться з адміністратором сервера, якщо ви не маєте доступу до свого облікового запису. subject: 'Mastodon: Ваш пароль змінений' title: Пароль змінено reconfirmation_instructions: diff --git a/config/locales/doorkeeper.ga.yml b/config/locales/doorkeeper.ga.yml index 20a9da24e9..189e43aaef 100644 --- a/config/locales/doorkeeper.ga.yml +++ b/config/locales/doorkeeper.ga.yml @@ -1 +1,32 @@ +--- ga: + activerecord: + attributes: + doorkeeper/application: + name: Ainm feidhmchláir + doorkeeper: + applications: + buttons: + authorize: Ceadaigh + destroy: Scrios + edit: Cuir in eagar + confirmations: + destroy: An bhfuil tú cinnte? + index: + name: Ainm + authorizations: + buttons: + deny: Diúltaigh + authorized_applications: + confirmations: + revoke: An bhfuil tú cinnte? + grouped_scopes: + title: + accounts: Cuntais + all: Gach Rud + bookmarks: Leabharmharcanna + conversations: Comhráite + favourites: Roghanna + lists: Liostaí + notifications: Fógraí + statuses: Postálacha diff --git a/config/locales/doorkeeper.ku.yml b/config/locales/doorkeeper.ku.yml index c4e66aef17..fdc1c0da41 100644 --- a/config/locales/doorkeeper.ku.yml +++ b/config/locales/doorkeeper.ku.yml @@ -131,7 +131,7 @@ ku: filters: Parzûn follow: Pêwendî follows: Dişopîne - lists: Rêzok + lists: Lîste media: Pêvekên medya mutes: Bêdengkirin notifications: Agahdarî @@ -163,7 +163,7 @@ ku: read:favourites: bijarteyên xwe bibîne read:filters: parzûnûn xwe bibîne read:follows: ên tu dişopînî bibîne - read:lists: rêzoka xwe bibîne + read:lists: lîsteyên xwe bibîne read:mutes: ajimêrên bêdeng kirî bibîne read:notifications: agahdariyên xwe bibîne read:reports: ragihandinên xwe bibîne @@ -177,7 +177,7 @@ ku: write:favourites: şandiyên bijarte write:filters: parzûnan çê bike write:follows: kesan bişopîne - write:lists: rêzokan çê bike + write:lists: lîsteyan biafirîne write:media: pelên medya bar bike write:mutes: mirovan û axaftinan bêdeng bike write:notifications: agahdariyên xwe pak bike diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml index ac9e97b551..6bd062a170 100644 --- a/config/locales/doorkeeper.nl.yml +++ b/config/locales/doorkeeper.nl.yml @@ -72,7 +72,7 @@ nl: revoke: Weet je het zeker? index: authorized_at: Toestemming verleent op %{date} - description_html: Dit zijn toepassingen die toegang hebben tot uw account via de API. Als er toepassingen tussen staan die u niet herkent of een toepassing zich misdraagt, kunt u de toegang van de toepassing intrekken. + description_html: Dit zijn toepassingen die toegang hebben tot jouw account via de API. Als er toepassingen tussen staan die je niet herkent of een toepassing zich misdraagt, kun je de toegangsrechten van de toepassing intrekken. last_used_at: Voor het laatst gebruikt op %{date} never_used: Nooit gebruikt scopes: Toestemmingen diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml index c508aab94d..75af425de3 100644 --- a/config/locales/doorkeeper.pl.yml +++ b/config/locales/doorkeeper.pl.yml @@ -130,7 +130,7 @@ pl: favourites: Ulubione filters: Filtry follow: Relacje - follows: Śledzenia + follows: Obserwowani lists: Listy media: Załączniki multimedialne mutes: Wyciszenia @@ -154,7 +154,7 @@ pl: admin:write:accounts: wykonaj działania moderacyjne na kontach admin:write:reports: wykonaj działania moderacyjne na zgłoszeniach crypto: użyj szyfrowania end-to-end - follow: możliwość śledzenia kont + follow: możliwość zarządzania relacjami kont push: otrzymywanie powiadomień push dla Twojego konta read: możliwość odczytu wszystkich danych konta read:accounts: dostęp do informacji o koncie @@ -162,7 +162,7 @@ pl: read:bookmarks: dostęp do zakładek read:favourites: dostęp do listy ulubionych read:filters: dostęp do filtrów - read:follows: dostęp do listy śledzonych + read:follows: dostęp do listy obserwowanych read:lists: dostęp do Twoich list read:mutes: dostęp do listy wyciszonych read:notifications: możliwość odczytu powiadomień @@ -176,7 +176,7 @@ pl: write:conversations: wycisz i usuń konwersacje write:favourites: możliwość dodawnia wpisów do ulubionych write:filters: możliwość tworzenia filtrów - write:follows: możliwość śledzenia ludzi + write:follows: możliwość obserwowania ludzi write:lists: możliwość tworzenia list write:media: możliwość wysyłania zawartości multimedialnej write:mutes: możliwość wyciszania ludzi i konwersacji diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml index 6e0efd6d17..0c934155ed 100644 --- a/config/locales/doorkeeper.sv.yml +++ b/config/locales/doorkeeper.sv.yml @@ -5,7 +5,7 @@ sv: doorkeeper/application: name: Applikationsnamn redirect_uri: Omdirigera URI - scopes: Omfattning + scopes: Omfattningar website: Applikationswebbplats errors: models: @@ -15,13 +15,13 @@ sv: fragment_present: kan inte innehålla ett fragment. invalid_uri: måste vara en giltig URI. relative_uri: måste vara en absolut URI. - secured_uri: måste vara en HTTPS/SSL URI. + secured_uri: måste vara en HTTPS/SSL-URI. doorkeeper: applications: buttons: - authorize: Godkänna + authorize: Godkänn cancel: Ångra - destroy: Förstöra + destroy: Förstör edit: Redigera submit: Skicka confirmations: @@ -29,52 +29,54 @@ sv: edit: title: Redigera applikation form: - error: Hoppsan! Kontrollera i formuläret efter eventuella fel + error: Hoppsan! Kolla ditt formulär efter eventuella fel help: - native_redirect_uri: Använd %{native_redirect_uri} för lokalt test - redirect_uri: Använd en per rad URI - scopes: Separera omfattningen med mellanslag. Lämna tomt för att använda standardomfattning. + native_redirect_uri: Använd %{native_redirect_uri} för lokala tester + redirect_uri: Använd en rad per URI + scopes: Separera omfattningar med mellanslag. Lämna tomt för att använda standardomfattningar. index: application: Applikation - callback_url: Återkalls URL + callback_url: URL för återanrop delete: Radera - empty: Du har inga program. + empty: Du har inga applikationer. name: Namn new: Ny applikation - scopes: Omfattning + scopes: Omfattningar show: Visa title: Dina applikationer new: title: Ny applikation show: - actions: Handlingar + actions: Åtgärder application_id: Klientnyckel - callback_urls: Återkalls URLs - scopes: Omfattning - secret: Kundhemlighet - title: 'Program: %{name}' + callback_urls: URL:er för återanrop + scopes: Omfattningar + secret: Klienthemlighet + title: 'Applikation: %{name}' authorizations: buttons: - authorize: Godkänna + authorize: Godkänn deny: Neka error: title: Ett fel har uppstått new: - review_permissions: Förhandsgranska behörigheter + prompt_html: "%{client_name} vill ha behörighet att komma åt ditt konto. Det är en applikation från tredje part. Du bör endast godkänna den om du litar på den." + review_permissions: Granska behörigheter title: Godkännande krävs show: - title: Kopiera denna behörighetskod och klistra in den i programmet. + title: Kopiera denna behörighetskod och klistra in den i applikationen. authorized_applications: buttons: revoke: Återkalla confirmations: revoke: Är du säker? index: - authorized_at: Auktoriserades %{date} + authorized_at: Godkändes den %{date} + description_html: Dessa applikationer har åtkomst till ditt konto genom API:et. Om det finns applikationer du inte känner igen här, eller om en applikation inte fungerar, kan du återkalla dess åtkomst. last_used_at: Användes senast %{date} never_used: Aldrig använd scopes: Behörigheter - superapp: Internt + superapp: Intern title: Dina behöriga ansökningar errors: messages: @@ -111,6 +113,10 @@ sv: destroy: notice: Applikation återkallas. grouped_scopes: + access: + read: Enbart rätt att läsa + read/write: Läs- och skrivbehörighet + write: Enbart rätt att skriva title: accounts: Konton admin/accounts: Administrering av konton @@ -122,9 +128,12 @@ sv: conversations: Konversationer crypto: Ände-till-ände-kryptering favourites: Favoriter + filters: Filter follow: Relationer follows: Följer lists: Listor + media: Mediabilagor + mutes: Tystade användare notifications: Aviseringar push: Push-aviseringar reports: Rapporter @@ -134,18 +143,19 @@ sv: admin: nav: applications: Applikationer - oauth2_provider: OAuth2 leverantör + oauth2_provider: OAuth2-leverantör application: - title: OAuth-behörighet krävs + title: OAuth-godkännande krävs scopes: - admin:read: läs all data på servern - admin:read:accounts: läs känslig information från alla konton - admin:read:reports: läs känslig information från alla rapporter och rapporterade konton + admin:read: läsa all data på servern + admin:read:accounts: läsa känslig information om alla konton + admin:read:reports: läsa känslig information om alla rapporter och rapporterade konton admin:write: ändra all data på servern - admin:write:accounts: utför alla aktiviteter för moderering på konton - admin:write:reports: utför alla aktiviteter för moderering i rapporter - follow: följa, blockera, ta bort blockerade och sluta följa konton - push: ta emot push-aviseringar för ditt konto + admin:write:accounts: utföra modereringsåtgärder på konton + admin:write:reports: utföra modereringsåtgärder på rapporter + crypto: använd obruten kryptering + follow: modifiera kontorelationer + push: ta emot dina push-notiser read: läsa dina kontodata read:accounts: se kontoinformation read:blocks: se dina blockeringar @@ -155,20 +165,21 @@ sv: read:follows: se vem du följer read:lists: se dina listor read:mutes: se dina tystningar - read:notifications: se dina aviseringar + read:notifications: se dina notiser read:reports: se dina rapporter read:search: sök å dina vägnar - read:statuses: se alla statusar - write: posta åt dig + read:statuses: se alla inlägg + write: ändra all din kontodata write:accounts: ändra din profil write:blocks: blockera konton och domäner - write:bookmarks: bokmärkesstatusar - write:favourites: favoritmarkera statusar + write:bookmarks: bokmärka inlägg + write:conversations: tysta och radera konversationer + write:favourites: favoritmarkera inlägg write:filters: skapa filter - write:follows: följ människor + write:follows: följa folk write:lists: skapa listor - write:media: ladda upp mediafiler - write:mutes: tysta människor och konversationer - write:notifications: rensa dina aviseringar - write:reports: rapportera andra människor - write:statuses: publicera statusar + write:media: ladda upp mediefiler + write:mutes: tysta folk och konversationer + write:notifications: rensa dina notiser + write:reports: rapportera andra personer + write:statuses: publicera inlägg diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml index 563d20e323..8c8a039477 100644 --- a/config/locales/doorkeeper.uk.yml +++ b/config/locales/doorkeeper.uk.yml @@ -27,7 +27,7 @@ uk: confirmations: destroy: Ви впевнені? edit: - title: Редагувати додаток + title: Редагувати застосунок form: error: Отакої! Перевірте свою форму на помилки help: @@ -35,24 +35,24 @@ uk: redirect_uri: Використовуйте одну стрічку на URI scopes: Відділяйте області видимості пробілами. Залишайте порожніми, щоб використовувати області видимості за промовчуванням. index: - application: Додаток + application: Застосунок callback_url: URL зворотнього виклику delete: Видалити empty: У вас немає створених додатків. name: Назва - new: Новий додаток + new: Новий застосунок scopes: Області видимості show: Показати title: Ваші додатки new: - title: Новий додаток + title: Новий застосунок show: actions: Дії application_id: Ключ застосунку callback_urls: URL зворотніх викликів scopes: Дозволи secret: Таємниця - title: 'Додаток: %{name}' + title: 'Застосунок: %{name}' authorizations: buttons: authorize: Авторизувати @@ -64,7 +64,7 @@ uk: review_permissions: Переглянути дозволи title: Необхідна авторизація show: - title: Скопіюйте цей код авторизації та вставте його у додаток. + title: Скопіюйте цей код авторизації та вставте його у застосунок. authorized_applications: buttons: revoke: Відкликати авторизацію @@ -104,11 +104,11 @@ uk: flash: applications: create: - notice: Додаток створено. + notice: Застосунок створено. destroy: - notice: Додаток видалено. + notice: Застосунок видалено. update: - notice: Додаток оновлено. + notice: Застосунок оновлено. authorized_applications: destroy: notice: Авторизацію додатка відкликано. @@ -160,7 +160,7 @@ uk: read:accounts: бачити інформацію про облікові записи read:blocks: бачити Ваші блокування read:bookmarks: бачити ваші закладки - read:favourites: бачити Ваші вподобані пости + read:favourites: бачити вподобані дописи read:filters: бачити Ваші фільтри read:follows: бачити Ваші підписки read:lists: бачити Ваші списки @@ -172,7 +172,7 @@ uk: write: змінювати усі дані вашого облікового запису write:accounts: змінювати ваш профіль write:blocks: блокувати облікові записи і домени - write:bookmarks: додавати пости в закладки + write:bookmarks: додавати дописи до закладок write:conversations: нехтувати й видалити бесіди write:favourites: вподобані статуси write:filters: створювати фільтри diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml index 946760d323..b43540257c 100644 --- a/config/locales/doorkeeper.vi.yml +++ b/config/locales/doorkeeper.vi.yml @@ -77,7 +77,7 @@ vi: never_used: Chưa dùng scopes: Quyền cho phép superapp: Đang dùng - title: Các ứng dụng đang dùng + title: Các ứng dụng đã dùng errors: messages: access_denied: Chủ sở hữu tài nguyên hoặc máy chủ đã từ chối yêu cầu. diff --git a/config/locales/el.yml b/config/locales/el.yml index c5be24815d..9a2510461b 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -184,6 +184,7 @@ el: reject_user: Απόρριψη Χρήστη remove_avatar_user: Αφαίρεση Avatar reopen_report: Ξανάνοιγμα Καταγγελίας + resend_user: Επαναποστολή του email επιβεβαίωσης reset_password_user: Επαναφορά Συνθηματικού resolve_report: Επίλυση Καταγγελίας sensitive_account: Σήμανση των πολυμέσων στον λογαριασμό σας ως ευαίσθητων diff --git a/config/locales/eo.yml b/config/locales/eo.yml index f4f4d48191..8138bac598 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -171,6 +171,7 @@ eo: reject_user: Malakcepti Uzanton remove_avatar_user: Forigi la rolfiguron reopen_report: Remalfermi signalon + resend_user: Resendi konfirman retmesaĝon reset_password_user: Restarigi pasvorton resolve_report: Solvitaj reporto sensitive_account: Marki tikla la aŭdovidaĵojn de via konto @@ -214,6 +215,7 @@ eo: reject_user_html: "%{name} malakceptis registriĝon de %{target}" remove_avatar_user_html: "%{name} forigis la rolfiguron de %{target}" reopen_report_html: "%{name} remalfermis signalon %{target}" + resend_user_html: "%{name} resendis konfirman retmesaĝon por %{target}" suspend_account_html: "%{name} suspendis la konton de %{target}" unsuspend_account_html: "%{name} reaktivigis la konton de %{target}" update_announcement_html: "%{name} ĝisdatigis anoncon %{target}" diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 1dbe88ec2d..18a2f45d00 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -207,6 +207,7 @@ es-AR: reject_user: Rechazar usuario remove_avatar_user: Quitar avatar reopen_report: Reabrir denuncia + resend_user: Reenviar correo electrónico de confirmación reset_password_user: Cambiar contraseña resolve_report: Resolver denuncia sensitive_account: Forzar cuenta como sensible @@ -265,6 +266,7 @@ es-AR: reject_user_html: "%{name} rechazó el registro de %{target}" remove_avatar_user_html: "%{name} quitó el avatar de %{target}" reopen_report_html: "%{name} reabrió la denuncia %{target}" + resend_user_html: "%{name} reenvió el correo electrónico de confirmación para %{target}" reset_password_user_html: "%{name} cambió la contraseña del usuario %{target}" resolve_report_html: "%{name} resolvió la denuncia %{target}" sensitive_account_html: "%{name} marcó los medios de %{target} como sensibles" diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 382e2c9249..efcd8476ec 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1236,6 +1236,8 @@ es-MX: carry_blocks_over_text: Este usuario se mudó desde %{acct}, que habías bloqueado. carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado. copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:' + navigation: + toggle_menu: Alternar menú notification_mailer: admin: report: diff --git a/config/locales/eu.yml b/config/locales/eu.yml index bec8e5c50b..d4a77a992d 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -104,10 +104,10 @@ eu: not_subscribed: Harpidetu gabe pending: Berrikusketa egiteke perform_full_suspension: Kanporatu - previous_strikes: Aurreko abisuak + previous_strikes: Aurreko neurriak previous_strikes_description_html: - one: Kontu honek abisu bat dauka. - other: Kontu honek %{count} abisu dauzka. + one: Kontu honen aurka neurri bat hartu da. + other: Kontu honen aurka %{count} neurri hartu dira. promote: Sustatu protocol: Protokoloa public: Publikoa @@ -143,7 +143,7 @@ eu: silence: Isilarazi silenced: Isilarazita statuses: Bidalketa - strikes: Aurreko abisuak + strikes: Aurreko neurriak subscribe: Harpidetu suspend: Kanporatu suspended: Kanporatuta @@ -342,6 +342,18 @@ eu: media_storage: Multimedia biltegiratzea new_users: erabiltzaile berri opened_reports: txosten irekita + pending_appeals_html: + one: Apelazio %{count} zain + other: "%{count} apelazio zain" + pending_reports_html: + one: Txosten %{count} zain + other: "%{count} txosten zain" + pending_tags_html: + one: Traola %{count} zain + other: "%{count} traola zain" + pending_users_html: + one: Erabiltzaile %{count} zain + other: "%{count} erabiltzaile zain" resolved_reports: txosten konponduta software: Softwarea sources: Izen emate jatorriak @@ -390,6 +402,9 @@ eu: view: Ikusi domeinuaren blokeoa email_domain_blocks: add_new: Gehitu berria + attempts_over_week: + one: Izen-emateko saiakera %{count} azken astean + other: Izen-emateko %{count} saiakera azken astean created_msg: Ongi gehitu da e-mail helbidea domeinuen zerrenda beltzera delete: Ezabatu dns: @@ -418,6 +433,9 @@ eu: one: Domeinura entregatzeak arrakastarik gabe huts egiten badu egun %{count} igaro ondoren, ez da entregatzeko saiakera gehiago egingo, ez bada domeinu horretatik entregarik jasotzen. other: Domeinura entregatzeak arrakastarik gabe huts egiten badu %{count} egun igaro ondoren, ez da entregatzeko saiakera gehiago egingo, ez bada domeinu horretatik entregarik jasotzen. failure_threshold_reached: Hutsegite atalasera iritsi da %{date} datan. + failures_recorded: + one: Huts egindako saiakera egun %{count}ean. + other: Huts egindako saiakera %{count} egun desberdinetan. no_failures_recorded: Ez dago hutsegiterik erregistroan. title: Egoera warning: Zerbitzari honetara konektatzeko azken saiakerak huts egin du @@ -529,10 +547,10 @@ eu: action_log: Auditoria-egunkaria action_taken_by: Neurrien hartzailea actions: - delete_description_html: Salatutako bidalketak ezabatuko dira eta abisu bat gordeko da, etorkizunean kontu berarekin elkarrekintzarik baduzu kontuan izan dezazun. - mark_as_sensitive_description_html: Salatutako bidalketetako multimedia edukia hunkigarri bezala eta abisu bat gordeko da, etorkizunean kontu honek arau-hausterik egiten badu kontuan izan dezazun. + delete_description_html: Salatutako bidalketak ezabatuko dira eta neurria gordeko da, etorkizunean kontu berarekin elkarrekintzarik baduzu kontuan izan dezazun. + mark_as_sensitive_description_html: Salatutako bidalketetako multimedia edukia hunkigarri bezala eta neurria gordeko da, etorkizunean kontu honek arau-hausterik egiten badu kontuan izan dezazun. other_description_html: Ikusi kontuaren portaera kontrolatzeko eta salatutako kontuarekin komunikazioa pertsonalizatzeko aukera gehiago. - resolve_description_html: Ez da neurririk hartuko salatutako kontuaren aurka, ez da abisurik gordeko eta salaketa itxiko da. + resolve_description_html: Ez da ekintzarik hartuko salatutako kontuaren aurka, ez da neurria gordeko eta salaketa itxiko da. silence_description_html: Profila dagoeneko jarraitzen dutenei edo eskuz bilatzen dutenei bakarrik agertuko zaie, bere irismena asko mugatuz. Beti bota daiteke atzera. suspend_description_html: Profila eta bere eduki guztiak iritsiezinak bihurtuko dira, ezabatzen den arte. Kontuarekin ezin da interakziorik eduki. Atzera bota daiteke 30 eguneko epean. actions_description_html: Erabaki txosten hau konpontzeko ze ekintza hartu. Salatutako kontuaren aurka zigor ekintza bat hartzen baduzu, eposta jakinarazpen bat bidaliko zaie, Spam kategoria hautatzean ezik. @@ -582,6 +600,9 @@ eu: view_profile: Ikusi profila roles: add_new: Gehitu rola + assigned_users: + one: Erabiltzaile %{count} + other: "%{count} erabiltzaile" categories: administration: Administrazioa devops: Devops @@ -593,6 +614,9 @@ eu: edit: Editatu '%{name}' rola everyone: Baimen lehenetsiak everyone_full_description_html: Hau erabiltzaile guztiei eragiten dien oinarrizko rola da, rol bat esleitu gabekoei ere bai. Gainerako rolek honetatik heredatzen dituzte baimenak. + permissions_count: + one: Baimen %{count} + other: "%{count} baimen" privileges: administrator: Administratzailea administrator_description: Baimen hau duten erabiltzaileak baimen guztien gainetik pasako dira @@ -659,6 +683,7 @@ eu: title: Edukia atxikitzea discovery: follow_recommendations: Jarraitzeko gomendioak + preamble: Eduki interesgarria aurkitzea garrantzitsua da Mastodoneko erabiltzaile berrientzat, behar bada inor ez dutelako ezagutuko. Kontrolatu zure zerbitzariko aurkikuntza-ezaugarriek nola funtzionatzen duten. profile_directory: Profil-direktorioa public_timelines: Denbora-lerro publikoak title: Aurkitzea @@ -754,15 +779,22 @@ eu: pending_review: Berrikusketaren zain preview_card_providers: allowed: Argitaratzaile honen estekak joera izan daitezke + description_html: Hauek dira zure zerbitzarian maiz partekatzen diren esteken domeinuak. Estekak ez dira joeretan publikoki agertuko estekaren domeinua onartu arte. Onartzeak (edo baztertzeak) azpi-domeinuei ere eragiten die. rejected: Argitaratzaile honen estekek ezin dute joera izan title: Argitaratzaileak rejected: Ukatua statuses: allow: Onartu bidalketa allow_account: Onartu egilea + description_html: Hauek dira une honetan asko partekatu eta gogokoak diren bidalketak (zure zerbitzariak ezagutzen dituenak). Erabiltzaile berrientzat eta bueltan itzuli direnentzat lagungarriak izan daitezke nor jarraitu aurkitzeko. Bidalketak ez dira publikoki erakusten zuk egilea onartu arte eta egileak gomendatua izatea onartu arte. Bidalketak banan bana ere onartu edo baztertu ditzakezu. disallow: Ez onartu bidalketa disallow_account: Ez onartu egilea no_status_selected: Ez da joerarik aldatu ez delako bat ere hautatu + not_discoverable: Egileak ez du aukeratu aurkikuntza ezaugarrietan agertzea + shared_by: + one: Behin partekatua edo gogoko egina + other: "%{friendly_count} aldiz partekatua edo gogoko egina" + title: Bidalketen joerak tags: current_score: Uneko emaitza%{score} dashboard: @@ -771,6 +803,7 @@ eu: tag_servers_dimension: Zerbitzari nagusiak tag_servers_measure: zerbitzari desberdin tag_uses_measure: erabilera guztira + description_html: Traola hauek askotan agertzen dira zure zerbitzariak ikusten dituen bidalketetan. Jendea zertaz hitz egiten ari den aurkitzen lagun diezaieke erabiltzaileei. Traolak ez dira publiko egiten onartzen dituzun arte. listable: Gomendatu daiteke no_tag_selected: Ez da etiketarik aldatu ez delako bat ere hautatu not_listable: Ez da gomendatuko @@ -782,6 +815,9 @@ eu: trending_rank: "%{rank}. joera" usable: Erabili daiteke usage_comparison: "%{today} aldiz erabili da gaur, atzo %{yesterday} aldiz" + used_by_over_week: + one: Pertsona batek erabilia azken astean + other: "%{count} pertsonak erabilia azken astean" title: Joerak trending: Joerak warning_presets: @@ -793,12 +829,16 @@ eu: webhooks: add_new: Gehitu amaiera-puntua delete: Ezabatu + description_html: "Webhook batek aukera ematen dio Mastodoni zure aplikazioari aukeratutako gertaeren jakinarazpenak denbora errealean bidaltzeko, zure aplikazioak automatikoki erantzunak abiarazi ditzan." disable: Desgaitu disabled: Desgaituta edit: Editatu amaiera-puntua empty: Ez duzu webhook amaiera-punturik konfiguratu oraindik. enable: Gaitu enabled: Aktiboa + enabled_events: + one: Gaitutako gertaera bat + other: Gaitutako %{count} gertaera events: Gertaerak new: Webhook berria rotate_secret: Biratu sekretua @@ -816,6 +856,9 @@ eu: sensitive: kontua hunkigarri gisa markatzea silence: kontua mugatzea suspend: kontua kanporatzea + body: "%{target} erabiltzaileak apelazioa jarri dio %{action_taken_by} erabiltzaileak %{date}(e)an hartutako %{type} motako erabakiari. Hau idatzi du:" + next_steps: Apelazioa onartu dezakezu moderazio erabakia desegiteko, edo ez ikusia egin. + subject: "%{username} erabiltzailea %{instance} instantziako moderazio erabaki bat apelatzen ari da" new_pending_account: body: Kontu berriaren xehetasunak azpian daude. Eskaera hau onartu edo ukatu dezakezu. subject: Kontu berria berrikusteko %{instance} instantzian (%{username}) @@ -824,10 +867,16 @@ eu: body_remote: "%{domain} domeinuko norbaitek %{target} salatu du" subject: Salaketa berria %{instance} instantzian (#%{id}) new_trends: + body: 'Ondorengo elementuak berrikusi behar dira publikoki bistaratu aurretik:' new_trending_links: title: Esteken joerak + new_trending_statuses: + title: Bidalketen joerak new_trending_tags: + no_approved_tags: Ez dago onartutako traolen joerarik une honetan. + requirements: 'Hautagai hauek joeretan onartutako %{rank}. traola gainditu dezakete: une honetan #%{lowest_tag_name} da, %{lowest_tag_score} puntuazioarekin.' title: Traolak joeran + subject: Joera berriak daude berrikusteko %{instance} instantzian aliases: add_new: Sortu ezizena created_msg: Ongi sortu da ezizena. Orain kontu zaharretik migratzen hasi zaitezke. @@ -862,6 +911,7 @@ eu: warning: Kontuz datu hauekin, ez partekatu inoiz inorekin! your_token: Zure sarbide token-a auth: + apply_for_account: Jarri itxarote-zerrendan change_password: Pasahitza delete_account: Ezabatu kontua delete_account_html: Kontua ezabatu nahi baduzu, jarraitu hemen. Berrestea eskatuko zaizu. @@ -881,6 +931,7 @@ eu: migrate_account: Migratu beste kontu batera migrate_account_html: Kontu hau beste batera birbideratu nahi baduzu, hemen konfiguratu dezakezu. or_log_in_with: Edo hasi saioa honekin + privacy_policy_agreement_html: Pribatutasun politika irakurri dut eta ados nago providers: cas: CAS saml: SAML @@ -888,18 +939,25 @@ eu: registration_closed: "%{instance} instantziak ez du kide berririk onartzen" resend_confirmation: Birbidali berresteko argibideak reset_password: Berrezarri pasahitza + rules: + preamble: Hauek %{domain} instantziako moderatzaileek ezarriak eta betearaziak dira. + title: Oinarrizko arau batzuk. security: Segurtasuna set_new_password: Ezarri pasahitza berria setup: email_below_hint_html: Beheko e-mail helbidea okerra bada, hemen aldatu dezakezu eta baieztapen e-mail berria jaso. email_settings_hint_html: Baieztamen e-maila %{email} helbidera bidali da. E-mail helbide hori zuzena ez bada, kontuaren ezarpenetan aldatu dezakezu. title: Ezarpena + sign_up: + preamble: Mastodon zerbitzari honetako kontu batekin, aukera izango duzu sareko edozein pertsona jarraitzeko, ez dio axola kontua non ostatatua dagoen. + title: "%{domain} zerbitzariko kontua prestatuko dizugu." status: account_status: Kontuaren egoera confirming: E-mail baieztapena osatu bitartean zain. functional: Zure kontua guztiz erabilgarri dago. pending: Zure eskaera gainbegiratzeko dago oraindik. Honek denbora behar lezake. Zure eskaera onartzen bada e-mail bat jasoko duzu. redirecting_to: Zure kontua ez dago aktibo orain %{acct} kontura birbideratzen duelako. + view_strikes: Ikusi zure kontuaren aurkako neurriak too_fast: Formularioa azkarregi bidali duzu, saiatu berriro. use_security_key: Erabili segurtasun gakoa authorize_follow: @@ -960,12 +1018,34 @@ eu: username_unavailable: Zure erabiltzaile-izena ez da eskuragarri egongo disputes: strikes: + action_taken: Ezarritako neurria appeal: Apelazioa + appeal_approved: Neurria behar bezala apelatu da eta jada ez da baliozkoa + appeal_rejected: Apelazioa baztertu da + appeal_submitted_at: Apelazioa bidalita + appealed_msg: Zure apelazioa bidali da. Onartzen bada, jakinaraziko zaizu. appeals: submit: Bidali apelazioa + approve_appeal: Onartu apelazioa + associated_report: Erlazionatutako txostena + created_at: Data + description_html: Hauek dira %{instance} instantziako arduradunek zure kontuaren aurka hartutako ekintzak eta bidali dizkizuten abisuak. recipient: Honi zuzendua + reject_appeal: Baztertu apelazioa + status: "%{id} bidalketa" + status_removed: Bidalketa dagoeneko ezabatu da sistematik + title: "%{date}(e)ko %{action}" title_actions: + delete_statuses: Bidalketa ezabatzea + disable: Kontua blokeatzea + mark_statuses_as_sensitive: Bidalketak hunkigarri gisa markatzea + none: Abisua + sensitive: Kontua hunkigarri gisa markatzea + silence: Kontua mugatzea suspend: Kontua kanporatzea + your_appeal_approved: Zure apelazioa onartu da + your_appeal_pending: Apelazio bat bidali duzu + your_appeal_rejected: Zure apelazioa baztertu da domain_validator: invalid_domain: ez da domeinu izen baliogarria errors: @@ -1014,25 +1094,60 @@ eu: public: Denbora-lerro publikoak thread: Elkarrizketak edit: + add_keyword: Gehitu gako-hitza + keywords: Gako-hitzak + statuses: Banako bidalketak + statuses_hint_html: Iragazki hau hautatutako banako bidalketei aplikatuko zaie, gako-hitzekin bat etorri ala ez. Berrikusi edo kendu bidalketak iragazkitik. title: Editatu iragazkia errors: + deprecated_api_multiple_keywords: Parametro hauek ezin dira aldatu aplikazio honetatik, iragazitako gako-hitz bat baino gehiagori eragiten diotelako. Erabili aplikazio berriago bat edo web interfazea. invalid_context: Testuinguru baliogabe edo hutsa eman da index: + contexts: "%{contexts} testuinguruetako iragazkiak" delete: Ezabatu empty: Ez duzu iragazkirik. + expires_in: "%{distance}(a)n iraungitzen da" + expires_on: "%{date}(a)n iraungitzen da" + keywords: + one: Gako-hitz %{count} + other: "%{count} gako-hitz" + statuses: + one: Bidalketa %{count} + other: "%{count} bidalketa" + statuses_long: + one: Banako bidalketa %{count} ezkutatuta + other: Banako %{count} bidalketa ezkutatuta title: Iragazkiak new: + save: Gorde iragazki berria title: Gehitu iragazki berria + statuses: + back_to_filter: Itzuli iragazkira + batch: + remove: Kendu iragazkitik + index: + hint: Iragazki honek banako bidalketei eragiten die, beste kriterioak badaude ere. Bidalketa gehiago gehitu ditzakezu iragazkira web interfazetik. + title: Iragazitako bidalketak footer: trending_now: Joera orain generic: all: Denak + all_items_on_page_selected_html: + one: Orri honetako elementu %{count} hautatuta. + other: Orri honetako %{count} elementuak hautatuta. + all_matching_items_selected_html: + one: Zure bilaketarekin bat datorren elementu %{count} hautatuta. + other: Zure bilaketarekin bat datozen %{count} elementu hautatuta. changes_saved_msg: Aldaketak ongi gorde dira! copy: Kopiatu delete: Ezabatu + deselect: Desautatu guztiak none: Bat ere ez order_by: Ordenatze-irizpidea save_changes: Gorde aldaketak + select_all_matching_items: + one: Hautatu zure bilaketarekin bat datorren elementu %{count}. + other: Hautatu zure bilaketarekin bat datozen %{count} elementuak. today: gaur validation_errors: one: Zerbait ez dabil ongi! Egiaztatu beheko errorea mesedez @@ -1134,7 +1249,14 @@ eu: carry_blocks_over_text: Erabiltzaile hau %{acct} kontutik dator, zeina blokeatuta daukazun. carry_mutes_over_text: Erabiltzaile hau %{acct} kontutik dator, zeina isilarazita daukazun. copy_account_note_text: 'Erabiltzaile hau %{acct} kontutik dator, hemen berari buruzko zure aurreko oharrak:' + navigation: + toggle_menu: Txandakatu menua notification_mailer: + admin: + report: + subject: "%{name} erabiltzaileak txosten bat bidali du" + sign_up: + subject: "%{name} erabiltzailea erregistratu da" favourite: body: "%{name}(e)k zure bidalketa gogoko du:" subject: "%{name}(e)k zure bidalketa gogoko du" @@ -1161,6 +1283,8 @@ eu: title: Bultzada berria status: subject: "%{name} erabiltzaileak bidalketa egin berri du" + update: + subject: "%{name} erabiltzaileak bidalketa bat editatu du" notifications: email_events: E-mail jakinarazpenentzako gertaerak email_events_hint: 'Hautatu jaso nahi dituzun gertaeren jakinarazpenak:' @@ -1204,6 +1328,8 @@ eu: other: Denetarik posting_defaults: Bidalketarako lehenetsitakoak public_timelines: Denbora-lerro publikoak + privacy_policy: + title: Pribatutasun politika reactions: errors: limit_reached: Erreakzio desberdinen muga gaindituta @@ -1227,6 +1353,14 @@ eu: status: Kontuaren egoera remote_follow: missing_resource: Ezin izan da zure konturako behar den birbideratze URL-a + reports: + errors: + invalid_rules: ez die erreferentzia egiten baliozko arauei + rss: + content_warning: 'Edukiaren abisua:' + descriptions: + account: "@%{acct} kontuaren bidalketa publikoak" + tag: "#%{hashtag} traola duten bidalketa publikoak" scheduled_statuses: over_daily_limit: 'Egun horretarako programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}' over_total_limit: 'Programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}' @@ -1293,6 +1427,7 @@ eu: profile: Profila relationships: Jarraitutakoak eta jarraitzaileak statuses_cleanup: Bidalketak automatikoki ezabatzea + strikes: Moderazio neurriak two_factor_authentication: Bi faktoreetako autentifikazioa webauthn_authentication: Segurtasun gakoak statuses: @@ -1309,14 +1444,17 @@ eu: other: "%{count} bideo" boosted_from_html: "%{acct_link}(e)tik bultzatua" content_warning: 'Edukiaren abisua: %{warning}' + default_language: Interfazearen hizkuntzaren berdina disallowed_hashtags: one: 'debekatutako traola bat zuen: %{tags}' other: 'debekatutako traola hauek zituen: %{tags}' + edited_at_html: Editatua %{date} errors: in_reply_not_found: Erantzuten saiatu zaren bidalketa antza ez da existitzen. open_in_web: Ireki web-ean over_character_limit: "%{max}eko karaktere muga gaindituta" pin_errors: + direct: Aipatutako erabiltzaileentzat soilik ikusgai dauden bidalketak ezin dira finkatu limit: Gehienez finkatu daitekeen bidalketa kopurua finkatu duzu jada ownership: Ezin duzu beste norbaiten bidalketa bat finkatu reblog: Bultzada bat ezin da finkatu @@ -1369,7 +1507,7 @@ eu: '2629746': Hilabete 1 '31556952': Urte 1 '5259492': 2 hilabete - '604800': 1 week + '604800': Aste 1 '63113904': 2 urte '7889238': 3 hilabete min_age_label: Denbora muga @@ -1381,6 +1519,9 @@ eu: pinned: Finkatutako bidalketa reblogged: "(r)en bultzada" sensitive_content: 'Kontuz: Eduki hunkigarria' + strikes: + errors: + too_late: Beranduegi da neurri hau apelatzeko tags: does_not_match_previous_name: ez dator aurreko izenarekin bat themes: @@ -1391,6 +1532,7 @@ eu: formats: default: "%Y(e)ko %b %d, %H:%M" month: "%Y(e)ko %b" + time: "%H:%M" two_factor_authentication: add: Gehitu disable: Desgaitu @@ -1407,27 +1549,63 @@ eu: recovery_instructions_html: Zure telefonora sarbidea galtzen baduzu, beheko berreskuratze kode bat erabili dezakezu kontura berriro sartu ahal izateko. Gore barreskuratze kodeak toki seguruan. Adibidez inprimatu eta dokumentu garrantzitsuekin batera gorde. webauthn: Segurtasun gakoak user_mailer: + appeal_approved: + action: Joan zure kontura + explanation: "%{strike_date}(e)an zure kontuari ezarritako neurriaren aurka %{appeal_date}(e)an jarri zenuen apelazioa onartu da. Zure kontua egoera onean dago berriro." + subject: "%{date}(e)ko zure apelazioa onartu da" + title: Apelazioa onartuta + appeal_rejected: + explanation: "%{strike_date}(e)an zure kontuari ezarritako neurriaren aurka %{appeal_date}(e)an jarri zenuen apelazioa baztertu da." + subject: "%{date}(e)ko zure apelazioa baztertu da" + title: Apelazioa baztertuta backup_ready: explanation: Zure Mastodon kontuaren babes-kopia osoa eskatu duzu. Deskargatzeko prest dago! subject: Zure artxiboa deskargatzeko prest dago title: Artxiboa jasotzea + suspicious_sign_in: + change_password: aldatu pasahitza + details: 'Hemen daude saio hasieraren xehetasunak:' + explanation: Zure kontuan IP helbide berri batetik saioa hasi dela detektatu dugu. + further_actions_html: Ez bazara zu izan, lehenbailehen %{action} gomendatzen dizugu eta bi faktoreko autentifikazioa gaitzea zure kontua seguru mantentzeko. + subject: Zure kontura sarbidea egon da IP helbide berri batetik + title: Saio hasiera berria warning: + appeal: Bidali apelazioa + appeal_description: Hau errore bat dela uste baduzu, apelazio bat bidali diezaiekezu %{instance} instantziako arduradunei. + categories: + spam: Spama + violation: Edukiak komunitatearen gidalerro hauek urratzen ditu explanation: + delete_statuses: Zure bidalketetako batzuk komunitatearen gidalerro bat edo gehiago urratzen dituztela aurkitu da eta ondorioz %{instance} instantziako moderatzaileek ezabatu egin dituzte. + disable: Ezin duzu zure kontua erabili, baina zure profilak eta beste datuek hor diraute. Zure datuen babeskopia eskatu dezakezu, kontuaren ezarpenak aldatu edo kontua ezabatu. + mark_statuses_as_sensitive: Zure bidalketetako batzuk hunkigarri bezala markatu dituzte %{instance} instantziako moderatzaileek. Horrek esan nahi du jendeak klik egin beharko duela bidalketetako multimedia edukian aurrebista bistaratzeko. Etorkizunean zuk zeuk markatu ditzakezu multimediak hunkigarri bezala. + sensitive: Hemendik aurrera, igotzen dituzun multimedia fitxategi guztiak hunkigarri gisa markatuko dira eta abisuan klik egin beharko da ikusteko. + silence: Zure kontua erabili dezakezu oraindik, baina dagoeneko jarraitzen zaituen jendeak soilik ikusi ahal izango ditu zure bidalketak zerbitzari honetan, eta aurkikuntza-ezaugarrietatik baztertua izango zara. Hala ere, besteek eskuz jarrai zaitzakete oraindik. suspend: Ezin duzu zure kontua erabili, eta zure profila eta beste datuak ez daude eskuragarri jada. Hala ere, saioa hasi dezakezu zure datuen babeskopia eskatzeko, 30 egun inguru barru behin betiko ezabatu aurretik. Zure oinarrizko informazioa gordeko da kanporatzea saihestea eragozteko. + reason: 'Arrazoia:' + statuses: 'Aipatutako bidalketak:' subject: + delete_statuses: "%{acct} zerbitzarian zure bidalketak ezabatu dira" disable: Zure %{acct} kontua izoztu da + mark_statuses_as_sensitive: "%{acct} zerbitzarian zure bidalketak hunkigarri gisa markatu dira" none: "%{acct} konturako abisua" + sensitive: "%{acct} zerbitzarian zure bidalketak hunkigarri gisa markatuko dira hemendik aurrera" silence: Zure %{acct} kontua murriztu da suspend: Zure %{acct} kontua kanporatua izan da title: + delete_statuses: Bidalketak ezabatuta disable: Kontu izoztua + mark_statuses_as_sensitive: Bidalketak hunkigarri gisa markatuta none: Abisua + sensitive: Kontua hunkigarri gisa markatuta silence: Kontu murriztua suspend: Kontu kanporatua welcome: edit_profile_action: Ezarri profila + edit_profile_step: Pertsonalizatu profila abatar bat igoz, zure pantaila-izena aldatuz eta gehiago. Jarraitzaile berriak onartu aurretik berrikusi nahi badituzu, kontuari giltzarrapoa jarri diezaiokezu. explanation: Hona hasteko aholku batzuk final_action: Hasi bidalketak argitaratzen + final_step: 'Hasi argitaratzen! Jarraitzailerik ez baduzu ere zure bidalketa publikoak besteek ikusi ditzakete, esaterako denbora-lerro lokalean eta traoletan. Zure burua aurkeztu nahi baduzu #aurkezpenak traola erabili zenezake.' full_handle: Zure erabiltzaile-izen osoa full_handle_hint: Hau da lagunei esango zeniekeena beste zerbitzari batetik zu jarraitzeko edo zuri mezuak bidaltzeko. subject: Ongi etorri Mastodon-era diff --git a/config/locales/fi.yml b/config/locales/fi.yml index c7ab01ab0e..1033da4906 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -207,6 +207,7 @@ fi: reject_user: Hylkää käyttäjä remove_avatar_user: Profiilikuvan poisto reopen_report: Uudelleenavaa raportti + resend_user: Lähetä vahvistusviesti uudelleen reset_password_user: Nollaa salasana resolve_report: Selvitä raportti sensitive_account: Pakotus arkaluontoiseksi tiliksi @@ -265,6 +266,7 @@ fi: reject_user_html: "%{name} hylkäsi käyttäjän rekisteröitymisen kohteesta %{target}" remove_avatar_user_html: "%{name} poisti käyttäjän %{target} profiilikuvan" reopen_report_html: "%{name} avasi uudelleen raportin %{target}" + resend_user_html: "%{name} lähetti vahvistusviestin sähköpostitse käyttäjälle %{target}" reset_password_user_html: "%{name} palautti käyttäjän %{target} salasanan" resolve_report_html: "%{name} ratkaisi raportin %{target}" sensitive_account_html: "%{name} merkitsi %{target} median arkaluonteiseksi" @@ -885,11 +887,11 @@ fi: hint_html: Jos haluat siirtyä toisesta tilistä tähän tiliin, voit luoda aliasin, joka on pakollinen, ennen kuin voit siirtää seuraajia vanhasta tilistä tähän tiliin. Tämä toiminto on itsessään vaaraton ja palautuva. Tilin siirtyminen aloitetaan vanhalta tililtä. remove: Poista aliaksen linkitys appearance: - advanced_web_interface: Edistynyt web-käyttöliittymä + advanced_web_interface: Edistynyt selainkäyttöliittymä advanced_web_interface_hint: 'Jos haluat käyttää koko näytön leveyttä, edistyneen web-käyttöliittymän avulla voit määrittää useita eri sarakkeita näyttämään niin paljon tietoa samanaikaisesti kuin haluat: Koti, ilmoitukset, yhdistetty aikajana, mikä tahansa määrä luetteloita ja aihetunnisteita.' animations_and_accessibility: Animaatiot ja saavutettavuus confirmation_dialogs: Vahvistusvalinnat - discovery: Löytö + discovery: Löydöt localization: body: Mastodonin ovat kääntäneet vapaaehtoiset. guide_link: https://crowdin.com/project/mastodon @@ -1249,6 +1251,8 @@ fi: carry_blocks_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka olit estänyt. carry_mutes_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka mykistit. copy_account_note_text: 'Tämä käyttäjä siirtyi paikasta %{acct}, tässä olivat aiemmat muistiinpanosi niistä:' + navigation: + toggle_menu: Avaa/sulje valikko notification_mailer: admin: report: @@ -1482,12 +1486,12 @@ fi: enabled: Poista vanhat viestit automaattisesti enabled_hint: Poistaa viestit automaattisesti, kun ne saavuttavat tietyn ikärajan, elleivät ne täsmää yhtä alla olevista poikkeuksista exceptions: Poikkeukset - explanation: Koska viestien poistaminen on kallista toimintaa. Tämä tehdään hitaasti ajan mittaan, kun palvelin ei ole muuten kiireinen. Tästä syystä viestejäsi voidaan poistaa jonkin aikaa myöhemmin, kun ne ovat saavuttaneet ikärajan. + explanation: Koska viestien poistaminen on kallista toimintaa, sitä tehdään hitaasti ajan mittaan, kun palvelin ei ole muutoin kiireinen. Viestejäsi voidaankin siis poistaa myös viiveellä verrattuna niille määrittämääsi aikarajaan. ignore_favs: Ohita suosikit ignore_reblogs: Ohita tehostukset interaction_exceptions: Poikkeukset, jotka perustuvat vuorovaikutukseen interaction_exceptions_explanation: Huomaa, että ei ole takeita viestien poistamiselle, jos ne alittavat suosikki- tai tehostusrajan sen jälkeen, kun ne on kerran ylitetty. - keep_direct: Säilytä suorat viestit + keep_direct: Säilytä yksityisviestit keep_direct_hint: Ei poista mitään sinun suoria viestejä keep_media: Säilytä viestit, joissa on liitetiedostoja keep_media_hint: Ei poista viestejä, joissa on liitteitä @@ -1495,7 +1499,7 @@ fi: keep_pinned_hint: Ei poista mitään kiinnitettyä viestiä keep_polls: Säilytä äänestykset keep_polls_hint: Ei poista yhtäkään äänestystä - keep_self_bookmark: Säilytä lisäämäsi viestit kirjanmerkkeihin + keep_self_bookmark: Säilytä kirjanmerkkeihin lisäämäsi viestit keep_self_bookmark_hint: Ei poista viestejäsi, jos olet lisännyt ne kirjanmerkkeihin keep_self_fav: Säilyttää viestit suosikeissa keep_self_fav_hint: Ei poista omia viestejäsi, jos olet lisännyt ne suosikkeihin diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 4a519c107d..416d4a1eb3 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -174,6 +174,7 @@ fr: confirm_user: Confirmer l’utilisateur create_account_warning: Créer une alerte create_announcement: Créer une annonce + create_canonical_email_block: Créer un blocage de domaine de courriel create_custom_emoji: Créer des émojis personnalisés create_domain_allow: Créer un domaine autorisé create_domain_block: Créer un blocage de domaine @@ -183,6 +184,7 @@ fr: create_user_role: Créer le rôle demote_user: Rétrograder l’utilisateur·ice destroy_announcement: Supprimer l’annonce + destroy_canonical_email_block: Supprimer le blocage de domaine de courriel destroy_custom_emoji: Supprimer des émojis personnalisés destroy_domain_allow: Supprimer le domaine autorisé destroy_domain_block: Supprimer le blocage de domaine @@ -205,6 +207,7 @@ fr: reject_user: Rejeter l’utilisateur remove_avatar_user: Supprimer l’avatar reopen_report: Rouvrir le signalement + resend_user: Renvoyer l'e-mail de confirmation reset_password_user: Réinitialiser le mot de passe resolve_report: Résoudre le signalement sensitive_account: Marquer les médias de votre compte comme sensibles @@ -240,6 +243,8 @@ fr: create_user_role_html: "%{name} a créé le rôle %{target}" demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}" destroy_announcement_html: "%{name} a supprimé l'annonce %{target}" + destroy_canonical_email_block_html: "%{name} a débloqué l'email avec le hash %{target}" + destroy_custom_emoji_html: "%{name} a supprimé l'émoji %{target}" destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}" destroy_domain_block_html: "%{name} a débloqué le domaine %{target}" destroy_email_domain_block_html: "%{name} a débloqué le domaine de courriel %{target}" @@ -247,6 +252,7 @@ fr: destroy_ip_block_html: "%{name} a supprimé la règle pour l'IP %{target}" destroy_status_html: "%{name} a supprimé le message de %{target}" destroy_unavailable_domain_html: "%{name} a repris la livraison au domaine %{target}" + destroy_user_role_html: "%{name} a supprimé le rôle %{target}" disable_2fa_user_html: "%{name} a désactivé l'authentification à deux facteurs pour l'utilisateur·rice %{target}" disable_custom_emoji_html: "%{name} a désactivé l'émoji %{target}" disable_sign_in_token_auth_user_html: "%{name} a désactivé l'authentification basée sur les jetons envoyés par courriel pour %{target}" @@ -260,6 +266,7 @@ fr: reject_user_html: "%{name} a rejeté l’inscription de %{target}" remove_avatar_user_html: "%{name} a supprimé l'avatar de %{target}" reopen_report_html: "%{name} a rouvert le signalement %{target}" + resend_user_html: "%{name} a renvoyé l'e-mail de confirmation pour %{target}" reset_password_user_html: "%{name} a réinitialisé le mot de passe de l'utilisateur·rice %{target}" resolve_report_html: "%{name} a résolu le signalement %{target}" sensitive_account_html: "%{name} a marqué le média de %{target} comme sensible" @@ -273,6 +280,7 @@ fr: update_announcement_html: "%{name} a mis à jour l'annonce %{target}" update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}" update_domain_block_html: "%{name} a mis à jour le blocage de domaine pour %{target}" + update_ip_block_html: "%{name} a modifié la règle pour l'IP %{target}" update_status_html: "%{name} a mis à jour le message de %{target}" update_user_role_html: "%{name} a changé le rôle %{target}" empty: Aucun journal trouvé. @@ -318,6 +326,7 @@ fr: listed: Listé new: title: Ajouter un nouvel émoji personnalisé + no_emoji_selected: Aucun émoji n’a été modifié, car aucun n’a été sélectionné not_permitted: Vous n’êtes pas autorisé à effectuer cette action overwrite: Écraser shortcode: Raccourci @@ -662,9 +671,18 @@ fr: settings: about: manage_rules: Gérer les règles du serveur + preamble: Fournissez des informations détaillées sur le fonctionnement, la modération et le financement du serveur. + rules_hint: Il y a un espace dédié pour les règles auxquelles vos utilisateurs sont invités à adhérer. title: À propos appearance: + preamble: Personnaliser l'interface web de Mastodon. title: Apparence + branding: + preamble: L'image de marque de votre serveur la différencie des autres serveurs du réseau. Ces informations peuvent être affichées dans nombre d'environnements, tels que l'interface web de Mastodon, les applications natives, dans les aperçus de liens sur d'autres sites Web et dans les applications de messagerie, etc. C'est pourquoi il est préférable de garder ces informations claires, courtes et concises. + title: Thème + content_retention: + preamble: Contrôle comment le contenu créé par les utilisateurs est enregistré et stocké dans Mastodon. + title: Rétention du contenu discovery: follow_recommendations: Suivre les recommandations profile_directory: Annuaire des profils @@ -676,6 +694,7 @@ fr: disabled: À personne users: Aux utilisateur·rice·s connecté·e·s localement registrations: + preamble: Affecte qui peut créer un compte sur votre serveur. title: Inscriptions registrations_mode: modes: @@ -696,12 +715,17 @@ fr: report: Signalement deleted: Supprimé favourites: Favoris + history: Historique de version + in_reply_to: Répondre à language: Langue media: title: Médias + metadata: Metadonnés no_status_selected: Aucun message n’a été modifié car aucun n’a été sélectionné open: Ouvrir le message original_status: Message original + reblogs: Partages + status_changed: Publication modifiée title: Messages du compte trending: Tendances visibility: Visibilité @@ -744,6 +768,9 @@ fr: description_html: Ces liens sont actuellement énormément partagés par des comptes dont votre serveur voit les messages. Cela peut aider vos utilisateur⋅rice⋅s à découvrir ce qu'il se passe dans le monde. Aucun lien n'est publiquement affiché tant que vous n'avez pas approuvé le compte qui le publie. Vous pouvez également autoriser ou rejeter les liens individuellement. disallow: Interdire le lien disallow_provider: Interdire l'éditeur + no_link_selected: Aucun lien n'a été changé car aucun n'a été sélectionné + publishers: + no_publisher_selected: Aucun compte publicateur n'a été changé car aucun n'a été sélectionné shared_by_over_week: one: Partagé par %{count} personne au cours de la dernière semaine other: Partagé par %{count} personnes au cours de la dernière semaine @@ -763,6 +790,7 @@ fr: description_html: Voici les messages dont votre serveur a connaissance qui sont beaucoup partagés et mis en favoris en ce moment. Cela peut aider vos utilisateur⋅rice⋅s, néophytes comme aguerri⋅e⋅s, à trouver plus de comptes à suivre. Aucun message n'est publiquement affiché tant que vous n'en avez pas approuvé l'auteur⋅rice, et seulement si icellui permet que son compte soit suggéré aux autres. Vous pouvez également autoriser ou rejeter les messages individuellement. disallow: Proscrire le message disallow_account: Proscrire l'auteur·rice + no_status_selected: Aucune publication en tendance n'a été changée car aucune n'a été sélectionnée not_discoverable: L'auteur⋅rice n'a pas choisi de pouvoir être découvert⋅e shared_by: one: Partagé ou ajouté aux favoris une fois @@ -778,6 +806,7 @@ fr: tag_uses_measure: utilisations totales description_html: Ces hashtags apparaissent actuellement dans de nombreux messages que votre serveur voit. Cela peut aider vos utilisateur⋅rice⋅s à découvrir les sujets dont les gens parlent le plus en ce moment. Aucun hashtag n'est publiquement affiché tant que vous ne l'avez pas approuvé. listable: Peut être suggéré + no_tag_selected: Aucun tag n'a été changé car aucun n'a été sélectionné not_listable: Ne sera pas suggéré not_trendable: N'apparaîtra pas sous les tendances not_usable: Ne peut être utilisé @@ -912,6 +941,7 @@ fr: resend_confirmation: Envoyer à nouveau les consignes de confirmation reset_password: Réinitialiser le mot de passe rules: + preamble: Celles-ci sont définies et appliqués par les modérateurs de %{domain}. title: Quelques règles de base. security: Sécurité set_new_password: Définir le nouveau mot de passe @@ -1098,6 +1128,12 @@ fr: trending_now: Tendance en ce moment generic: all: Tous + all_items_on_page_selected_html: + one: "%{count} élément de cette page est sélectionné." + other: L'ensemble des %{count} éléments de cette page est sélectionné. + all_matching_items_selected_html: + one: "%{count} élément correspondant à votre recherche est sélectionné." + other: L'ensemble des %{count} éléments correspondant à votre recherche est sélectionné. changes_saved_msg: Les modifications ont été enregistrées avec succès ! copy: Copier delete: Supprimer @@ -1105,6 +1141,9 @@ fr: none: Aucun order_by: Classer par save_changes: Enregistrer les modifications + select_all_matching_items: + one: Sélectionnez %{count} élément correspondant à votre recherche. + other: Sélectionnez tous l'ensemble des %{count} éléments correspondant à votre recherche. today: aujourd’hui validation_errors: one: Quelque chose ne va pas ! Veuillez vérifiez l’erreur ci-dessous @@ -1206,6 +1245,8 @@ fr: carry_blocks_over_text: Cet utilisateur que vous aviez bloqué est parti de %{acct}. carry_mutes_over_text: Cet utilisateur que vous aviez masqué est parti de %{acct}. copy_account_note_text: 'Cet·te utilisateur·rice est parti·e de %{acct}, voici vos notes précédentes à son sujet :' + navigation: + toggle_menu: Basculer l'affichage du menu notification_mailer: admin: report: @@ -1557,8 +1598,10 @@ fr: suspend: Compte suspendu welcome: edit_profile_action: Configuration du profil + edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant une photo de profil, en changant votre nom d'utilisateur, etc. Vous pouvez opter pour le passage en revue de chaque nouvelle demande d'abonnement à chaque fois qu'un utilisateur essaie de s'abonner à votre compte. explanation: Voici quelques conseils pour vous aider à démarrer final_action: Commencez à publier + final_step: 'Commencez à publier ! Même si vous n''avez pas encore d''abonnés, vos publications sont publiques et sont accessibles par les autres, par exemple grâce à la zone horaire locale ou par les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.' full_handle: Votre identifiant complet full_handle_hint: C’est ce que vous diriez à vos ami·e·s pour leur permettre de vous envoyer un message ou vous suivre à partir d’un autre serveur. subject: Bienvenue sur Mastodon diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 14936b4ba7..45516c4d5f 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1,38 +1,144 @@ --- ga: + about: + contact_unavailable: N/B + title: Maidir le accounts: + follow: Lean + following: Ag leanúint + nothing_here: Níl rud ar bith anseo! + posts: + few: Postálacha + many: Postálacha + one: Postáil + other: Postálacha + two: Postálacha posts_tab_heading: Postálacha admin: + account_actions: + action: Déan gníomh + title: Déan modhnóireacht ar %{acct} + account_moderation_notes: + create: Fág nóta accounts: + approve: Faomh are_you_sure: An bhfuil tú cinnte? + avatar: Abhatár + change_email: + current_email: Ríomhphost reatha + label: Athraigh ríomhphost + new_email: Ríomhphost nua + submit: Athraigh ríomhphost + title: Athraigh ríomhphost %{username} + change_role: + changed_msg: D'athraigh ró go rathúil! + label: Athraigh ról + no_role: Níl aon ról ann + title: Athraigh ról %{username} confirm: Deimhnigh confirmed: Deimhnithe confirming: Ag deimhniú + custom: Saincheaptha + delete: Scrios sonraí + deleted: Scriosta + demote: Ísligh + disable: Reoigh + disabled: Reoite + display_name: Ainm taispeána + edit: Cuir in eagar email: Ríomhphost email_status: Stádas ríomhphoist + enabled: Ar chumas followers: Leantóirí + follows: Ag leanúint ip: IP location: all: Uile + promote: Ardaigh public: Poiblí reject: Diúltaigh + role: Ról search: Cuardaigh statuses: Postálacha title: Cuntais + web: Gréasán announcements: live: Beo publish: Foilsigh custom_emojis: delete: Scrios + disable: Díchumasaigh + disabled: Díchumasaithe emoji: Emoji + enable: Cumasaigh list: Liosta + upload: Uaslódáil + dashboard: + software: Bogearraí + title: Deais + website: Suíomh Gréasáin + domain_blocks: + new: + severity: + silence: Ciúnaigh email_domain_blocks: delete: Scrios + follow_recommendations: + status: Stádas instances: + back_to_all: Uile content_policies: policy: Polasaí delivery: all: Uile + unavailable: Níl ar fáil + moderation: + all: Uile + invites: + filter: + all: Uile + available: Ar fáil + ip_blocks: + delete: Scrios + expires_in: + '1209600': Coicís + '15778476': 6 mhí + '2629746': Mí amháin + '31556952': Bliain amháin + '86400': Lá amháin + '94670856': 3 bhliain + relays: + delete: Scrios + disable: Díchumasaigh + disabled: Díchumasaithe + enable: Cumasaigh + enabled: Ar chumas + status: Stádas + reports: + category: Catagóir + no_one_assigned: Duine ar bith + notes: + delete: Scrios + title: Nótaí + status: Stádas + title: Tuairiscí + roles: + delete: Scrios + statuses: + account: Údar + deleted: Scriosta + language: Teanga + open: Oscail postáil + original_status: Bunphostáil + with_media: Le meáin + tags: + review: Stádas athbhreithnithe + trends: + allow: Ceadaigh + disallow: Dícheadaigh + statuses: + allow: Ceadaigh postáil + allow_account: Ceadaigh údar errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 75fee0002e..3ae0550f3f 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -207,6 +207,7 @@ gl: reject_user: Rexeitar Usuaria remove_avatar_user: Eliminar avatar reopen_report: Reabrir denuncia + resend_user: Reenviar o email de confirmación reset_password_user: Restabelecer contrasinal resolve_report: Resolver denuncia sensitive_account: Marca o multimedia da túa conta como sensible @@ -265,6 +266,7 @@ gl: reject_user_html: "%{name} rexeitou o rexistro de %{target}" remove_avatar_user_html: "%{name} eliminou o avatar de %{target}" reopen_report_html: "%{name} reabriu a denuncia %{target}" + resend_user_html: "%{name} reenviou o email de confirmación para %{target}" reset_password_user_html: "%{name} restableceu o contrasinal da usuaria %{target}" resolve_report_html: "%{name} resolveu a denuncia %{target}" sensitive_account_html: "%{name} marcou o multimedia de %{target} como sensible" diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 008026aa4e..a588d8587d 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -207,6 +207,7 @@ hu: reject_user: Felhasználó Elutasítása remove_avatar_user: Profilkép eltávolítása reopen_report: Jelentés újranyitása + resend_user: Megerősítő e-mail újraküldése reset_password_user: Jelszó visszaállítása resolve_report: Jelentés megoldása sensitive_account: A fiókodban minden média kényesnek jelölése @@ -265,6 +266,7 @@ hu: reject_user_html: "%{name} elutasította %{target} regisztrációját" remove_avatar_user_html: "%{name} törölte %{target} profilképét" reopen_report_html: "%{name} újranyitotta a %{target} bejelentést" + resend_user_html: "%{name} újraküldte %{target} megerősítő e-mailjét" reset_password_user_html: "%{name} visszaállította %{target} felhasználó jelszavát" resolve_report_html: "%{name} megoldotta a %{target} bejelentést" sensitive_account_html: "%{name} kényesnek jelölte %{target} médiatartalmát" @@ -670,13 +672,16 @@ hu: about: manage_rules: Kiszolgáló szabályainak kezelése preamble: Adj meg részletes információkat arról, hogy a kiszolgáló hogyan működik, miként moderálják és finanszírozzák. + rules_hint: Van egy helyünk a szabályoknak, melyeket a felhasználóidnak be kellene tartani. title: Névjegy appearance: preamble: A Mastodon webes felületének testreszabása. title: Megjelenés branding: preamble: A kiszolgáló márkajelzése különbözteti meg a hálózat többi kiszolgálójától. Ez az információ számos környezetben megjelenhet, például a Mastodon webes felületén, natív alkalmazásokban, más weboldalakon és üzenetküldő alkalmazásokban megjelenő hivatkozások előnézetben stb. Ezért a legjobb, ha ez az információ világos, rövid és tömör. + title: Branding content_retention: + preamble: Felhasználók által generált tartalom Mastodonon való tárolásának szabályozása. title: Tartalom megtartása discovery: follow_recommendations: Ajánlottak követése diff --git a/config/locales/id.yml b/config/locales/id.yml index 5daa4addd0..a26156ffa7 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -204,6 +204,7 @@ id: reject_user: Tolak Pengguna remove_avatar_user: Hapus Avatar reopen_report: Buka Lagi Laporan + resend_user: Kirim Ulang Email Konfirmasi reset_password_user: Atur Ulang Kata sandi resolve_report: Selesaikan Laporan sensitive_account: Tandai media di akun Anda sebagai sensitif @@ -262,6 +263,7 @@ id: reject_user_html: "%{name} menolak pendaftaran dari %{target}" remove_avatar_user_html: "%{name} menghapus avatar %{target}" reopen_report_html: "%{name} membuka ulang laporan %{target}" + resend_user_html: "%{name} mengirim ulang konfirmasi email untuk %{target}" reset_password_user_html: "%{name} mereset kata sandi pengguna %{target}" resolve_report_html: "%{name} menyelesaikan laporan %{target}" sensitive_account_html: "%{name} menandai media %{target} sebagai sensitif" diff --git a/config/locales/is.yml b/config/locales/is.yml index 72ca95e6f9..6bad0b97e8 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -207,6 +207,7 @@ is: reject_user: Hafna notanda remove_avatar_user: Fjarlægja auðkennismynd reopen_report: Enduropna kæru + resend_user: Endursenda staðfestingarpóst reset_password_user: Endurstilla lykilorð resolve_report: Leysa kæru sensitive_account: Merkja myndefni á aðgangnum þínum sem viðkvæmt @@ -265,6 +266,7 @@ is: reject_user_html: "%{name} hafnaði nýskráningu frá %{target}" remove_avatar_user_html: "%{name} fjarlægði auðkennismynd af %{target}" reopen_report_html: "%{name} enduropnaði kæru %{target}" + resend_user_html: "%{name} endursendi staðfestingarpóst vegna %{target}" reset_password_user_html: "%{name} endurstillti lykilorð fyrir notandann %{target}" resolve_report_html: "%{name} leysti kæru %{target}" sensitive_account_html: "%{name} merkti myndefni frá %{target} sem viðkvæmt" diff --git a/config/locales/it.yml b/config/locales/it.yml index ed71c40262..6fa1e780cf 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -207,6 +207,7 @@ it: reject_user: Rifiuta Utente remove_avatar_user: Elimina avatar reopen_report: Riapri report + resend_user: Invia di nuovo l'email di conferma reset_password_user: Reimposta password resolve_report: Risolvi report sensitive_account: Contrassegna il media nel tuo profilo come sensibile @@ -265,6 +266,7 @@ it: reject_user_html: "%{name} ha rifiutato la registrazione da %{target}" remove_avatar_user_html: "%{name} ha rimosso l'immagine profilo di %{target}" reopen_report_html: "%{name} ha riaperto il rapporto %{target}" + resend_user_html: "%{name} inviata nuovamente l'email di conferma per %{target}" reset_password_user_html: "%{name} ha reimpostato la password dell'utente %{target}" resolve_report_html: "%{name} ha risolto il rapporto %{target}" sensitive_account_html: "%{name} ha segnato il media di %{target} come sensibile" diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 5ee19aa6b1..9d0a3c0ca4 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -204,6 +204,7 @@ ja: reject_user: ユーザーを拒否 remove_avatar_user: アイコンを削除 reopen_report: 未解決に戻す + resend_user: 確認メールを再送信する reset_password_user: パスワードをリセット resolve_report: 通報を解決済みにする sensitive_account: アカウントのメディアを閲覧注意にマーク @@ -262,6 +263,7 @@ ja: reject_user_html: "%{target}から登録された%{name}さんを拒否しました" remove_avatar_user_html: "%{name}さんが%{target}さんのアイコンを削除しました" reopen_report_html: "%{name}さんが通報 %{target}を未解決に戻しました" + resend_user_html: "%{name} が %{target} の確認メールを再送信しました" reset_password_user_html: "%{name}さんが%{target}さんのパスワードをリセットしました" resolve_report_html: "%{name}さんが通報 %{target}を解決済みにしました" sensitive_account_html: "%{name}さんが%{target}さんのメディアを閲覧注意にマークしました" @@ -812,6 +814,7 @@ ja: webhooks: add_new: エンドポイントを追加 delete: 削除 + description_html: "Webhook により、Mastodon は選択されたイベントのリアルタイム通知をアプリケーションにプッシュします。これにより、アプリケーションは自動的に処理を行うことができます。" disable: 無効化 disabled: 無効 edit: エンドポイントを編集 @@ -822,7 +825,8 @@ ja: other: "%{count}件の有効なイベント" events: イベント new: 新しいwebhook - rotate_secret: シークレットをローテーションする + rotate_secret: シークレットをローテートする + secret: シークレットに署名 status: ステータス title: Webhooks webhook: Webhook @@ -836,6 +840,7 @@ ja: sensitive: アカウントを閲覧注意にする silence: アカウントを制限する suspend: アカウントを停止する + body: "%{target} は %{date} に行われた %{action_taken_by} による %{type} のモデレーション判定に不服を申し立てています。内容は次の通りです:" next_steps: モデレーションの決定を取り消すために申し立てを承認するか、無視することができます。 subject: "%{instance}で%{username}さんからモデレーションへの申し立てが届きました。" new_pending_account: @@ -853,6 +858,7 @@ ja: title: トレンド投稿 new_trending_tags: no_approved_tags: 承認されたトレンドハッシュタグはありません。 + requirements: 'これらの候補はいずれも %{rank} 位の承認済みトレンドハッシュタグのスコアを上回ります。現在 #%{lowest_tag_name} のスコアは %{lowest_tag_score} です。' title: トレンドハッシュタグ subject: "%{instance}で新しいトレンドが審査待ちです" aliases: @@ -1075,6 +1081,7 @@ ja: add_keyword: キーワードを追加 keywords: キーワード statuses: 個別の投稿 + statuses_hint_html: このフィルタは、以下のキーワードにマッチするかどうかに関わらず、個々の投稿を選択して適用されます。 フィルターを確認または投稿を削除。 title: フィルターを編集 errors: deprecated_api_multiple_keywords: これらのパラメータは複数のフィルタキーワードに適用されるため、このアプリケーションから変更できません。 最新のアプリケーションまたはWebインターフェースを使用してください。 @@ -1106,6 +1113,10 @@ ja: trending_now: トレンドタグ generic: all: すべて + all_items_on_page_selected_html: + other: このページの %{count} 件すべてが選択されています。 + all_matching_items_selected_html: + other: 検索条件に一致する %{count} 件すべてが選択されています。 changes_saved_msg: 正常に変更されました! copy: コピー delete: 削除 @@ -1114,7 +1125,7 @@ ja: order_by: 並び順 save_changes: 変更を保存 select_all_matching_items: - other: 検索条件に一致するすべての %{count} 個の項目を選択 + other: 検索条件に一致する %{count} 件をすべて選択 today: 今日 validation_errors: other: エラーが発生しました! 以下の%{count}件のエラーを確認してください @@ -1215,7 +1226,7 @@ ja: carry_mutes_over_text: このユーザーは、あなたがミュートしていた%{acct}から引っ越しました。 copy_account_note_text: このユーザーは%{acct}から引っ越しました。これは以前のメモです。 navigation: - toggle_menu: メニューを表示 + toggle_menu: メニューを表示 / 非表示 notification_mailer: admin: report: @@ -1562,8 +1573,8 @@ ja: welcome: edit_profile_action: プロフィールを設定 edit_profile_step: |- - プロフィール画像をアップロードしたり、ディスプレイネームを変更したりして、プロフィールをカスタマイズできます。 - 新しいフォロワーのフォローリクエストを承認される前に、新しいフォロワーの確認をオプトインすることができます。 + プロフィール画像をアップロードしたり、表示名を変更したりして、プロフィールをカスタマイズできます。 + 新しいフォロワーからフォローリクエストを承認する前に、オプトインで確認できます。 explanation: 始めるにあたってのアドバイスです final_action: 始めましょう final_step: 'さあ、始めましょう! たとえフォロワーがまだいなくても、あなたの公開した投稿はローカルタイムラインやハッシュタグなどを通じて誰かの目にとまるはずです。自己紹介をしたいときには #introductions ハッシュタグが便利かもしれません。' diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 2ae6a455a1..1cd5d72d61 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -598,7 +598,7 @@ kab: setup: Sbadu pagination: newer: Amaynut - next: Wayed + next: Γer zdat older: Aqbuṛ prev: Win iɛeddan preferences: @@ -672,6 +672,7 @@ kab: preferences: Imenyafen profile: Ameγnu relationships: Imeḍfaṛen akked wid i teṭṭafaṛeḍ + statuses_cleanup: Tukksa tawurmant n tsuffaɣ two_factor_authentication: Asesteb s snat n tarrayin webauthn_authentication: Tisura n teɣlist statuses: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 3ad38d6cb5..f37f3ec46e 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -204,6 +204,7 @@ ko: reject_user: 사용자 거부 remove_avatar_user: 아바타 지우기 reopen_report: 신고 다시 열기 + resend_user: 확인 메일 다시 보내기 reset_password_user: 암호 재설정 resolve_report: 신고 처리 sensitive_account: 당신의 계정의 미디어를 민감함으로 표시 @@ -262,6 +263,7 @@ ko: reject_user_html: "%{name} 님이 %{target}의 가입을 거부했습니다" remove_avatar_user_html: "%{name} 님이 %{target}의 아바타를 지웠습니다" reopen_report_html: "%{name} 님이 신고 %{target}을 다시 열었습니다" + resend_user_html: "%{name} 님이 %{target} 님에 대한 확인 메일을 다시 보냈습니다" reset_password_user_html: "%{name} 님이 사용자 %{target}의 암호를 초기화했습니다" resolve_report_html: "%{name} 님이 신고 %{target}를 처리됨으로 변경하였습니다" sensitive_account_html: "%{name} 님이 %{target}의 미디어를 민감함으로 표시했습니다" diff --git a/config/locales/ku.yml b/config/locales/ku.yml index f3094f46e1..af0fea5563 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -207,6 +207,7 @@ ku: reject_user: Bikarhêner nepejirîne remove_avatar_user: Avatarê rake reopen_report: Ragihandina ji nû ve veke + resend_user: E-nameya pejirandinê dîsa bişîne reset_password_user: Borînpeyvê ji nû ve saz bike resolve_report: Ragihandinê çareser bike sensitive_account: Ajimêra hêz-hestiyar @@ -265,6 +266,7 @@ ku: reject_user_html: "%{name} tomarkirina ji %{target} nepejirand" remove_avatar_user_html: "%{name} avatara bikarhêner %{target} rakir" reopen_report_html: "%{name} ragihandina %{target} ji nû ve vekir" + resend_user_html: "%{name} e-nameya pejirandinê dîsa bişîne ji bo %{target}" reset_password_user_html: "%{name} borînpeyva bikarhêner %{target} ji nû ve saz kir" resolve_report_html: "%{name} ragihandina %{target} çareser kir" sensitive_account_html: "%{name} medyayê %{target} wekî hestiyarî nîşan kir" @@ -320,8 +322,8 @@ ku: enabled: Çalakkirî enabled_msg: Ev hestok bi serkeftî hate çalak kirin image_hint: Mezinahiya PNG an jî GIF digîheje heya %{size} - list: Rêzok - listed: Rêzokkirî + list: Lîste + listed: Lîstekirî new: title: Hestokên kesane yên nû lê zêde bike no_emoji_selected: Tu emojî nehatin hilbijartin ji ber vê tu şandî jî nehatin guhertin @@ -331,8 +333,8 @@ ku: shortcode_hint: Herê kêm 2 tîp, tenê tîpên alfahejmarî û yên bin xêzkirî title: Hestokên kesane uncategorized: Bêbeş - unlist: Dervî rêzokê - unlisted: Nerêzokkirî + unlist: Bêlîste + unlisted: Nelîstekirî update_failed_msg: Ev hestok nehate rojanekirin updated_msg: Emojî bi awayekî serkeftî hate rojanekirin! upload: Bar bike @@ -391,11 +393,11 @@ ku: suspend: Dur bike title: Astengkirina navpera nû obfuscate: Navê navperê biveşêre - obfuscate_hint: Heke rêzoka sînorên navperê were çalakkirin navê navperê di rêzokê de bi qismî veşêre + obfuscate_hint: Heke lîsteya sînorên navperê were çalakkirin navê navperê di lîsteyê de bi qismî veşêre private_comment: Şîroveya taybet private_comment_hint: Derbarê sînorkirina vê navperê da ji bo bikaranîna hundirîn a moderatoran şîrove bikin. public_comment: Şîroveya gelemperî - public_comment_hint: Heke reklamkirina rêzoka sînorên navperê çalak be, derbarê sînorkirina vê navperê da ji bo raya giştî şîrove bikin. + public_comment_hint: Heke reklamkirina lîsteya sînorên navperê çalak be, derbarê sînorkirina vê navperê da ji bo raya giştî şîrove bikin. reject_media: Pelên medyayê red bike reject_media_hint: Pelên medyayê herêmî hatine tomarkirin radike û di pêşerojê de daxistinê red dike. Ji bo rawstandinê ne girîng e reject_reports: Ragihandinan red bike @@ -1071,7 +1073,7 @@ ku: bookmarks: Şûnpel csv: CSV domain_blocks: Navperên astengkirî - lists: Rêzok + lists: Lîste mutes: Te bêdeng kir storage: Bîrdanaka medyayê featured_tags: @@ -1082,7 +1084,7 @@ ku: filters: contexts: account: Profîl - home: Serrûpel û rêzok + home: Serûpel û lîste notifications: Agahdarî public: Demnameya gelemperî thread: Axaftin @@ -1149,20 +1151,20 @@ ku: invalid_markup: 'di nav de nîşana HTML a nederbasdar heye: %{error}' imports: errors: - over_rows_processing_limit: ji %{count} zêdetir rêzok hene + over_rows_processing_limit: ji %{count} zêdetir lîste hene modes: merge: Bi hev re bike merge_long: Tomarên heyî bigire û yên nû lê zêde bike overwrite: Bi ser de binivsîne overwrite_long: Tomarkirinên heyî bi yên nû re biguherîne - preface: Tu dikarî têxistin ê daneyên bike ku te ji rajekareke din derxistî ye wek rêzoka kesên ku tu dişopîne an jî asteng dike. + preface: Tu dikarî têxistin ê daneyên bike ku te ji rajekareke din derxistî ye wek lîsteya kesên ku tu dişopîne an jî asteng dike. success: Daneyên te bi serkeftî hat barkirin û di dema xwe de were pêvajotin types: - blocking: Rêzoka astengkirinê + blocking: Lîsteya antengkiriyan bookmarks: Şûnpel - domain_blocking: Rêzoka navperên astengkirî - following: Rêzoka yên dişopînin - muting: Rêzoka bêdengiyê + domain_blocking: Lîsteya domaînên astengkirî + following: Lîsteyan şopîneran + muting: Lîsteya bêdengkiriyan upload: Bar bike invites: delete: Neçalak bike @@ -1471,7 +1473,7 @@ ku: private_long: Tenê bo şopîneran nîşan bide public: Gelemperî public_long: Herkes dikare bibîne - unlisted: Nerêzokkirî + unlisted: Nelîstekirî unlisted_long: Herkes dikare bibîne, lê di demnameya gelemperî de nayê rêz kirin statuses_cleanup: enabled: Şandiyên berê bi xweberî va jê bibe diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 57647b1426..903b302958 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -210,6 +210,7 @@ lv: reject_user: Noraidīt lietotāju remove_avatar_user: Noņemt Avatāru reopen_report: Atkārtoti Atvērt Ziņojumu + resend_user: Atkārtoti nosūtīt Apstiprinājuma Pastu reset_password_user: Atiestatīt Paroli resolve_report: Atrisināt Ziņojumu sensitive_account: Piespiedu sensitīvizēt kontu @@ -268,6 +269,7 @@ lv: reject_user_html: "%{name} noraidīja reģistrēšanos no %{target}" remove_avatar_user_html: "%{name} noņēma %{target} avatāru" reopen_report_html: "%{name} atkārtoti atvēra ziņojumu %{target}" + resend_user_html: "%{name} atkārtoti nosūtīja apstiprinājuma e-pastu %{target}" reset_password_user_html: "%{name} atiestatīja paroli lietotājam %{target}" resolve_report_html: "%{name} atrisināja ziņojumu %{target}" sensitive_account_html: "%{name} atzīmēja %{target} mediju kā sensitīvu" diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 2073767760..1536554304 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -58,7 +58,7 @@ nl: demote: Degraderen destroyed_msg: De verwijdering van de gegevens van %{username} staat nu in de wachtrij disable: Bevriezen - disable_sign_in_token_auth: E-mail token authenticatie uitschakelen + disable_sign_in_token_auth: Verificatie met een toegangscode via e-mail uitschakelen disable_two_factor_authentication: 2FA uitschakelen disabled: Bevroren display_name: Weergavenaam @@ -67,7 +67,7 @@ nl: email: E-mail email_status: E-mailstatus enable: Ontdooien - enable_sign_in_token_auth: E-mail token authenticatie inschakelen + enable_sign_in_token_auth: Verificatie met een toegangscode via e-mail inschakelen enabled: Ingeschakeld enabled_msg: Het ontdooien van het account van %{username} is geslaagd followers: Volgers @@ -122,7 +122,7 @@ nl: removed_header_msg: Het verwijderen van de omslagfoto van %{username} is geslaagd resend_confirmation: already_confirmed: Deze gebruiker is al bevestigd - send: Verzend bevestigingsmail opnieuw + send: Bevestigingsmail opnieuw verzenden success: Bevestigingsmail succesvol verzonden! reset: Opnieuw reset_password: Wachtwoord opnieuw instellen @@ -196,8 +196,10 @@ nl: destroy_user_role: Rol permanent verwijderen disable_2fa_user: Tweestapsverificatie uitschakelen disable_custom_emoji: Lokale emojij uitschakelen + disable_sign_in_token_auth_user: Verificatie met een toegangscode via e-mail voor de gebruiker uitschakelen disable_user: Gebruiker uitschakelen enable_custom_emoji: Lokale emoji inschakelen + enable_sign_in_token_auth_user: Verificatie met een toegangscode via e-mail voor de gebruiker inschakelen enable_user: Gebruiker inschakelen memorialize_account: Het account in een In memoriam veranderen promote_user: Gebruiker promoveren @@ -205,6 +207,7 @@ nl: reject_user: Gebruiker afwijzen remove_avatar_user: Avatar verwijderen reopen_report: Rapportage heropenen + resend_user: Bevestigingsmail opnieuw verzenden reset_password_user: Wachtwoord opnieuw instellen resolve_report: Rapportage oplossen sensitive_account: De media in jouw account als gevoelig markeren @@ -252,8 +255,10 @@ nl: destroy_user_role_html: "%{name} verwijderde de rol %{target}" disable_2fa_user_html: De vereiste tweestapsverificatie voor %{target} is door %{name} uitgeschakeld disable_custom_emoji_html: Emoji %{target} is door %{name} uitgeschakeld + disable_sign_in_token_auth_user_html: "%{name} heeft verificatie met een toegangscode via e-mail uitgeschakeld voor %{target}" disable_user_html: Inloggen voor %{target} is door %{name} uitgeschakeld enable_custom_emoji_html: Emoji %{target} is door %{name} ingeschakeld + enable_sign_in_token_auth_user_html: "%{name} heeft verificatie met een toegangscode via e-mail ingeschakeld voor %{target}" enable_user_html: Inloggen voor %{target} is door %{name} ingeschakeld memorialize_account_html: Het account %{target} is door %{name} in een In memoriam veranderd promote_user_html: Gebruiker %{target} is door %{name} gepromoveerd @@ -261,12 +266,14 @@ nl: reject_user_html: "%{name} heeft de registratie van %{target} afgewezen" remove_avatar_user_html: "%{name} verwijderde de avatar van %{target}" reopen_report_html: "%{name} heeft rapportage %{target} heropend" + resend_user_html: "%{name} heeft de bevestigingsmail voor %{target} opnieuw verzonden" reset_password_user_html: Wachtwoord van gebruiker %{target} is door %{name} opnieuw ingesteld resolve_report_html: "%{name} heeft rapportage %{target} opgelost" sensitive_account_html: "%{name} markeerde de media van %{target} als gevoelig" silence_account_html: Account %{target} is door %{name} beperkt suspend_account_html: Account %{target} is door %{name} opgeschort unassigned_report_html: "%{name} heeft het toewijzen van rapportage %{target} ongedaan gemaakt" + unblock_email_account_html: "%{name} deblokkeerde het e-mailadres van %{target}" unsensitive_account_html: "%{name} markeerde media van %{target} als niet gevoelig" unsilence_account_html: Beperking van account %{target} is door %{name} opgeheven unsuspend_account_html: Opschorten van account %{target} is door %{name} opgeheven @@ -372,6 +379,7 @@ nl: destroyed_msg: Domeinblokkade is ongedaan gemaakt domain: Domein edit: Domeinblokkade bewerken + existing_domain_block: Je hebt al strengere limieten opgelegd aan %{name}. existing_domain_block_html: Jij hebt al strengere beperkingen opgelegd aan %{name}, je moet het domein eerst deblokkeren. new: create: Blokkade aanmaken @@ -409,6 +417,7 @@ nl: create: Blokkeren resolve: Domein opzoeken title: Nieuw e-maildomein blokkeren + no_email_domain_block_selected: Er werden geen e-maildomeinblokkades gewijzigd, omdat er geen enkele werd geselecteerd resolved_dns_records_hint_html: De domeinnaam slaat op de volgende MX-domeinen die uiteindelijk verantwoordelijk zijn voor het accepteren van e-mail. Het blokkeren van een MX-domein blokkeert aanmeldingen van elk e-mailadres dat hetzelfde MX-domein gebruikt, zelfs als de zichtbare domeinnaam anders is. Pas op dat u geen grote e-mailproviders blokkeert. resolved_through_html: Geblokkeerd via %{domain} title: Geblokkeerde e-maildomeinen @@ -422,6 +431,7 @@ nl: unsuppress: Account weer aanbevelen instances: availability: + failure_threshold_reached: Foutieve drempelwaarde bereikt op %{date}. failures_recorded: one: Mislukte poging op %{count} dag. other: Mislukte pogingen op %{count} verschillende dagen. @@ -432,6 +442,7 @@ nl: back_to_limited: Beperkt back_to_warning: Waarschuwing by_domain: Domein + confirm_purge: Weet je zeker dat je de gegevens van dit domein permanent wilt verwijderen? content_policies: comment: Interne reden description_html: Je kunt het beleid bepalen dat op de accounts van dit domein en alle subdomeinen van toepassing is. @@ -462,6 +473,7 @@ nl: delivery_available: Bezorging is mogelijk delivery_error_days: Dagen met bezorgfouten delivery_error_hint: Wanneer de bezorging voor %{count} dagen niet mogelijk is, wordt de bezorging automatisch als niet beschikbaar gemarkeerd. + destroyed_msg: Gegevens van %{domain} staan nu in de wachtrij voor aanstaande verwijdering. empty: Geen domeinen gevonden. known_accounts: one: "%{count} bekend account" @@ -473,12 +485,14 @@ nl: private_comment: Privé-opmerking public_comment: Openbare opmerking purge: Volledig verwijderen + purge_description_html: Als je denkt dat dit domein definitief offline is, kunt je alle accountrecords en bijbehorende gegevens van dit domein verwijderen. Dit kan een tijdje duren. title: Federatie total_blocked_by_us: Door ons geblokkeerd total_followed_by_them: Door hun gevolgd total_followed_by_us: Door ons gevolgd total_reported: Rapportages over hun total_storage: Mediabijlagen + totals_time_period_hint_html: De hieronder getoonde totalen bevatten gegevens sinds het begin. invites: deactivate_all: Alles deactiveren filter: @@ -531,6 +545,10 @@ nl: other: "%{count} opmerkingen" action_log: Auditlog action_taken_by: Actie uitgevoerd door + actions: + delete_description_html: De gerapporteerde berichten worden verwijderd en er wordt een overtreding geregistreerd om toekomstige overtredingen van hetzelfde account sneller af te kunnen handelen. + mark_as_sensitive_description_html: De media in de gerapporteerde berichten worden gemarkeerd als gevoelig en er wordt een overtreding geregistreerd om toekomstige overtredingen van hetzelfde account sneller af te kunnen handelen. + silence_description_html: Het profiel zal alleen zichtbaar zijn voor diegenen die het al volgen of het handmatig opzoeken, waardoor het bereik ernstig wordt beperkt. Kan altijd worden teruggedraaid. add_to_report: Meer aan de rapportage toevoegen are_you_sure: Weet je het zeker? assign_to_self: Aan mij toewijzen @@ -539,6 +557,7 @@ nl: category: Category comment: none: Geen + comment_description_html: 'Om meer informatie te verstrekken, schreef %{name}:' created_at: Gerapporteerd op delete_and_resolve: Bericht verwijderen forwarded: Doorgestuurd @@ -554,6 +573,8 @@ nl: delete: Verwijderen placeholder: Beschrijf welke acties zijn ondernomen of andere gerelateerde opmerkingen… title: Opmerkingen + notes_description_html: Bekijk en laat opmerkingen achter voor andere moderatoren en voor jouw toekomstige zelf + quick_actions_description_html: 'Onderneem een snelle actie of scroll naar beneden om de gerapporteerde inhoud te zien:' remote_user_placeholder: de externe gebruiker van %{instance} reopen: Rapportage heropenen report: 'Rapportage #%{id}' @@ -582,6 +603,7 @@ nl: moderation: Moderatie special: Speciaal delete: Verwijderen + description_html: Met gebruikersrollen kunt je aanpassen op welke functies en gebieden van Mastodon jouw gebruikers toegang hebben. edit: Rol '%{name}' bewerken everyone: Standaardrechten everyone_full_description_html: Dit is de basisrol die van toepassing is op alle gebruikers, zelfs voor diegenen zonder toegewezen rol. Alle andere rollen hebben de rechten van deze rol als minimum. @@ -590,25 +612,45 @@ nl: other: "%{count} rechten" privileges: administrator: Beheerder + administrator_description: Deze gebruikers hebben volledige rechten en kun dus overal bij delete_user_data: Gebruikersgegevens verwijderen + delete_user_data_description: Staat gebruikers toe om de gegevens van andere gebruikers zonder vertraging te verwijderen invite_users: Gebruikers uitnodigen + invite_users_description: Staat gebruikers toe om nieuwe mensen voor de server uit te nodigen manage_announcements: Aankondigingen beheren + manage_announcements_description: Staat gebruikers toe om mededelingen op de server te beheren manage_appeals: Bezwaren afhandelen + manage_appeals_description: Staat gebruikers toe om bewaren tegen moderatie-acties te beoordelen manage_blocks: Blokkades beheren + manage_blocks_description: Staat gebruikers toe om e-mailproviders en IP-adressen te blokkeren manage_custom_emojis: Lokale emoji's beheren + manage_custom_emojis_description: Staat gebruikers toe om lokale emoji's op de server te beheren manage_federation: Federatie beheren + manage_federation_description: Staat gebruikers toe om federatie met andere domeinen te blokkeren of toe te staan en om de bezorging te bepalen manage_invites: Uitnodigingen beheren + manage_invites_description: Staat gebruikers toe om uitnodigingslinks te bekijken en te deactiveren manage_reports: Rapportages afhandelen + manage_reports_description: Sta gebruikers toe om rapporten te bekijken om actie tegen hen te nemen manage_roles: Rollen beheren + manage_roles_description: Staat gebruikers toe om rollen te beheren en toe te wijzen die minder rechten hebben dan hun eigen rol(len) manage_rules: Serverregels wijzigen + manage_rules_description: Staat gebruikers toe om serverregels te wijzigen manage_settings: Server-instellingen wijzigen + manage_settings_description: Staat gebruikers toe de instellingen van de site te wijzigen manage_taxonomies: Trends en hashtags beheren + manage_taxonomies_description: Staat gebruikers toe om trending inhoud te bekijken en om hashtag-instellingen bij te werken manage_user_access: Gebruikerstoegang beheren + manage_user_access_description: Staat gebruikers toe om tweestapsverificatie van andere gebruikers uit te schakelen, om hun e-mailadres te wijzigen en om hun wachtwoord opnieuw in te stellen manage_users: Gebruikers beheren + manage_users_description: Staat gebruikers toe om gebruikersdetails van anderen te bekijken en moderatie-acties tegen hen uit te voeren manage_webhooks: Webhooks beheren + manage_webhooks_description: Staat gebruikers toe om webhooks voor beheertaken in te stellen view_audit_log: Auditlog bekijken + view_audit_log_description: Staat gebruikers toe om een geschiedenis van beheeracties op de server te bekijken view_dashboard: Dashboard bekijken + view_dashboard_description: Geeft gebruikers toegang tot het dashboard en verschillende statistieken view_devops: Devops + view_devops_description: Geeft gebruikers toegang tot de dashboards van Sidekiq en pgHero title: Rollen rules: add_new: Regel toevoegen @@ -620,6 +662,8 @@ nl: settings: about: manage_rules: Serverregels beheren + preamble: Geef uitgebreide informatie over hoe de server wordt beheerd, gemodereerd en gefinancierd. + rules_hint: Er is een speciaal gebied voor regels waaraan uw gebruikers zich dienen te houden. title: Over appearance: preamble: Mastodons webomgeving aanpassen. @@ -679,7 +723,11 @@ nl: with_media: Met media strikes: actions: - delete_statuses: "%{name} heeft de toots van %{target} verwijderd" + delete_statuses: "%{name} heeft de berichten van %{target} verwijderd" + disable: Account %{target} is door %{name} bevroren + mark_statuses_as_sensitive: "%{name} markeerde de berichten van %{target} als gevoelig" + none: "%{name} verzond een waarschuwing naar %{target}" + sensitive: "%{name} markeerde het account van %{target} als gevoelig" silence: "%{name} beperkte het account %{target}" suspend: "%{name} schortte het account %{target} op" appeal_approved: Bezwaar ingediend @@ -687,6 +735,8 @@ nl: system_checks: database_schema_check: message_html: Niet alle databasemigraties zijn voltooid. Je moet deze uitvoeren om er voor te zorgen dat de applicatie blijft werken zoals het hoort + elasticsearch_running_check: + message_html: Kon geen verbinding maken met Elasticsearch. Controleer dat Elasticsearch wordt uitgevoerd of schakel full-text-zoeken uit elasticsearch_version_check: message_html: 'Incompatibele Elasticsearch-versie: %{value}' version_comparison: Je gebruikt Elasticsearch %{running_version}, maar %{required_version} is vereist @@ -721,6 +771,7 @@ nl: pending_review: In afwachting van beoordeling preview_card_providers: allowed: Links van deze website kunnen trending worden + description_html: Dit zijn domeinen waarvan links vaak worden gedeeld op jouw server. Links zullen niet in het openbaar verlopen, maar niet als het domein van de link wordt goedgekeurd. Jouw goedkeuring (of afwijzing) strekt zich uit tot subdomeinen. rejected: Links naar deze nieuwssite kunnen niet trending worden title: Websites rejected: Afgekeurd @@ -731,6 +782,9 @@ nl: disallow_account: Account afkeuren no_status_selected: Er werden geen trending berichten gewijzigd, omdat er geen enkele werd geselecteerd not_discoverable: Gebruiker heeft geen toestemming gegeven om vindbaar te zijn + shared_by: + one: Een keer gedeeld of als favoriet gemarkeerd + other: "%{friendly_count} keer gedeeld of als favoriet gemarkeerd" title: Trending berichten tags: current_score: Huidige score is %{score} @@ -745,10 +799,15 @@ nl: not_listable: Wordt niet aanbevolen not_trendable: Zal niet onder trends verschijnen not_usable: Kan niet worden gebruikt + peaked_on_and_decaying: Piekte op %{date} en is nu weer op diens retour title: Trending hashtags trendable: Kan onder trends verschijnen trending_rank: 'Trending #%{rank}' usable: Kan worden gebruikt + usage_comparison: "%{today} keer vandaag gebruikt, vergeleken met %{yesterday} keer gisteren" + used_by_over_week: + one: Door één persoon tijdens de afgelopen week gebruikt + other: Door %{count} mensen tijdens de afgelopen week gebruikt title: Trends trending: Trending warning_presets: @@ -763,6 +822,7 @@ nl: disable: Uitschakelen disabled: Uitgeschakeld edit: Eindpunt bewerken + empty: Je hebt nog geen webhook-eindpunten geconfigureerd. enable: Inschakelen enabled: Ingeschakeld enabled_events: @@ -796,11 +856,13 @@ nl: body_remote: Iemand van %{domain} heeft %{target} gerapporteerd subject: Nieuwe rapportage op %{instance} (#%{id}) new_trends: + body: 'De volgende items moeten worden beoordeeld voordat ze openbaar kunnen worden getoond:' new_trending_links: title: Trending links new_trending_statuses: title: Trending berichten new_trending_tags: + no_approved_tags: Op dit moment zijn er geen goedgekeurde hashtags. title: Trending hashtags subject: Nieuwe trends te beoordelen op %{instance} aliases: @@ -1052,7 +1114,7 @@ nl: batch: remove: Uit het filter verwijderen index: - hint: Dit filter is van toepassing om individuele berichten te selecteren, ongeacht andere critiria. Je kunt in de webomgeving meer berichten aan dit filter toevoegen. + hint: Dit filter is van toepassing om individuele berichten te selecteren, ongeacht andere criteria. Je kunt in de webomgeving meer berichten aan dit filter toevoegen. title: Gefilterde berichten footer: trending_now: Trends @@ -1175,6 +1237,8 @@ nl: carry_blocks_over_text: Deze gebruiker is verhuisd vanaf %{acct}. Je hebt dat account geblokkeerd. carry_mutes_over_text: Deze gebruiker is verhuisd vanaf %{acct}. Je hebt dat account genegeerd. copy_account_note_text: 'Deze gebruiker is verhuisd vanaf %{acct}. Je hebt de volgende opmerkingen over dat account gemaakt:' + navigation: + toggle_menu: Menu tonen/verbergen notification_mailer: admin: report: @@ -1250,7 +1314,7 @@ nl: too_many_options: kan niet meer dan %{max} items bevatten preferences: other: Overig - posting_defaults: Standaardinstellingen voor posten + posting_defaults: Standaardinstellingen voor berichten public_timelines: Openbare tijdlijnen privacy_policy: title: Privacybeleid diff --git a/config/locales/nn.yml b/config/locales/nn.yml index b989db081e..068e5d5ff8 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -5,13 +5,14 @@ nn: contact_missing: Ikkje sett contact_unavailable: I/T hosted_on: "%{domain} er vert for Mastodon" + title: Om accounts: follow: Fylg followers: one: Fylgjar other: Fylgjarar following: Fylgjer - instance_actor_flash: Denne kontoen er en virtuell figur som brukes til å representere selve serveren og ikke noen individuell bruker. Den brukes til forbundsformål og bør ikke oppheves. + instance_actor_flash: Denne kontoen er ein virtuell figur som nyttast som representant for tenaren, og ikkje som individuell brukar. Den nyttast til forbundsformål og bør ikkje suspenderast. last_active: sist aktiv link_verified_on: Eigarskap for denne lenkja vart sist sjekka %{date} nothing_here: Her er det ingenting! @@ -32,29 +33,32 @@ nn: accounts: add_email_domain_block: Gøym e-postdomene approve: Godtak - approved_msg: Godkjent %{username} sin registreringsapplikasjon + approved_msg: Godkjende %{username} sin registreringssøknad are_you_sure: Er du sikker? avatar: Bilete by_domain: Domene change_email: + changed_msg: Konto-e-posten er endra! current_email: Noverande e-post label: Byt e-post new_email: Ny e-post submit: Byt e-post title: Byt e-post for %{username} change_role: + changed_msg: Rolle endra! label: Endre rolle no_role: Inga rolle title: Endre rolle for %{username} confirm: Stadfest confirmed: Stadfesta confirming: Stadfestar + custom: Tilpassa delete: Slett data deleted: Sletta demote: Degrader - destroyed_msg: "%{username} sine data er nå i kø for å bli slettet minimum" + destroyed_msg: "%{username} sine data er no i slettekøa" disable: Slå av - disable_sign_in_token_auth: Deaktiver e-post token autentisering + disable_sign_in_token_auth: Slå av e-post token autentisering disable_two_factor_authentication: Slå av 2FA disabled: Slege av display_name: Synleg namn @@ -63,14 +67,14 @@ nn: email: E-post email_status: E-poststatus enable: Slå på - enable_sign_in_token_auth: Aktiver godkjenning av e-post token + enable_sign_in_token_auth: Slå på e-post token autentisering enabled: Aktivert - enabled_msg: Frossent %{username} sin konto + enabled_msg: Gjenaktiverte %{username} sin konto followers: Fylgjarar follows: Fylgje header: Overskrift inbox_url: Innbokslenkje - invite_request_text: Begrunnelse for å bli med + invite_request_text: Grunngjeving for å bli med invited_by: Innboden av ip: IP-adresse joined: Vart med @@ -82,12 +86,13 @@ nn: login_status: Innlogginsstatus media_attachments: Medievedlegg memorialize: Gjør om til et minne - memorialized: Minnet - memorialized_msg: Vellykket gjort av %{username} til en minnestedet + memorialized: Minna + memorialized_msg: Endra %{username} til ei minneside moderation: active: Aktiv all: Alle pending: Ventar på svar + silenced: Avgrensa suspended: Utvist title: Moderasjon moderation_notes: Moderasjonsmerknader @@ -95,21 +100,26 @@ nn: most_recent_ip: Nyast IP no_account_selected: Ingen kontoar vart endra sidan ingen var valde no_limits_imposed: Ingen grenser sett + no_role_assigned: Inga rolle tildelt not_subscribed: Ikkje tinga pending: Ventar på gjennomgang perform_full_suspension: Utvis + previous_strikes: Tidlegare prikkar + previous_strikes_description_html: + one: Denne kontoen har ein prikk. + other: Denne kontoen har %{count} prikkar. promote: Frem protocol: Protokoll public: Offentleg push_subscription_expires: PuSH-abonnent utløper redownload: Last inn profil på nytt - redownloaded_msg: Oppdatert %{username} sin profil fra opprinnelse + redownloaded_msg: Oppdaterte %{username} sin profil frå opphavstenar reject: Avvis - rejected_msg: Vellykket avvist %{username} sin registreringsapplikasjon + rejected_msg: Avviste %{username} sin registreringssøknad remove_avatar: Fjern bilete remove_header: Fjern overskrift - removed_avatar_msg: Fjernet %{username} sitt avatarbilde - removed_header_msg: Fjernet %{username} sin topptekst bilde + removed_avatar_msg: Fjerna %{username} sitt avatarbilete + removed_header_msg: Fjerna %{username} sitt toppbilete resend_confirmation: already_confirmed: Denne brukaren er allereie stadfesta send: Send stadfestings-e-posten på nytt @@ -124,7 +134,8 @@ nn: security_measures: only_password: Kun passord password_and_2fa: Passord og 2FA - sensitized: Merket som følsom + sensitive: Tving sensitiv + sensitized: Avmerka som følsom shared_inbox_url: Delt Innboks URL show: created_reports: Rapportar frå denne kontoen @@ -132,12 +143,17 @@ nn: silence: Togn silenced: Dempa statuses: Statusar + strikes: Tidlegare prikkar subscribe: Ting + suspend: Utvis og slett kontodata for godt suspended: Utvist - suspension_irreversible: Dataene fra denne kontoen har blitt ikke reverserbart slettet. Du kan oppheve suspenderingen av kontoen for å gjøre den brukbart, men den vil ikke gjenopprette alle data den tidligere har hatt. - suspension_reversible_hint_html: Kontoen har blitt suspendert, og dataene vil bli fullstendig fjernet den %{date}. Frem til da kan kontoen gjenopprettes uten negative effekter. Hvis du ønsker å fjerne alle kontoens data umiddelbart, kan du gjøre det nedenfor. + suspension_irreversible: Data frå denne kontoen har blitt ikkje-reverserbart sletta. Du kan oppheve suspenderinga av kontoen for å bruke den, men det vil ikkje gjenopprette alle data den tidligare har hatt. + suspension_reversible_hint_html: Kontoen har blitt suspendert, og data vil bli fullstendig fjerna den %{date}. Fram til då kan kontoen gjenopprettes uten negative effekter. Om du ynskjer å fjerne kontodata no, kan du gjere det nedanfor. title: Kontoar + unblock_email: Avblokker e-postadresse + unblocked_email_msg: Avblokkerte %{username} si e-postadresse unconfirmed_email: E-post utan stadfesting + undo_sensitized: Gjør om tving sensitiv undo_silenced: Angr målbinding undo_suspension: Angr utvising unsilenced_msg: Opphevde vellykket begrensningen av %{username} sin konto @@ -150,50 +166,97 @@ nn: whitelisted: Kvitlista action_logs: action_types: - approve_user: Godkjenn bruker + approve_appeal: Godkjenn appell + approve_user: Godkjenn brukar assigned_to_self_report: Tilordne rapport change_email_user: Byt e-post for brukar + change_role_user: Endre brukarrolle confirm_user: Stadfest brukar create_account_warning: Opprett åtvaring create_announcement: Opprett lysing + create_canonical_email_block: Opprett e-post-blokkering create_custom_emoji: Opprett tilpassa emoji create_domain_allow: Opprett domene tillatt create_domain_block: Opprett domene-blokk create_email_domain_block: Opprett e-post domeneblokk create_ip_block: Opprett IP-regel + create_unavailable_domain: Opprett utilgjengeleg domene + create_user_role: Opprett rolle demote_user: Degrader brukar destroy_announcement: Slett lysinga + destroy_canonical_email_block: Slett e-post-blokkering destroy_custom_emoji: Slett tilpassa emoji destroy_domain_allow: Slett domenegodkjenning destroy_domain_block: Slett domenesperring destroy_email_domain_block: Slett e-postdomenesperring + destroy_instance: Slett domene destroy_ip_block: Slett IP-regel destroy_status: Slett status + destroy_unavailable_domain: Slett utilgjengeleg domene + destroy_user_role: Øydelegg rolle disable_2fa_user: Skruv av 2FA disable_custom_emoji: Skruv av tilpassa emoji + disable_sign_in_token_auth_user: Slå av e-post tokenautentisering for brukar disable_user: Skruv av brukar enable_custom_emoji: Skruv på tilpassa emoji + enable_sign_in_token_auth_user: Slå på e-post tokenautentisering for brukar enable_user: Skruv på brukar + memorialize_account: Opprett minnekonto promote_user: Forfrem brukar - reject_user: Avvis bruker + reject_appeal: Avvis appell + reject_user: Avvis brukar remove_avatar_user: Fjern avatar reopen_report: Opn rapport opp att + resend_user: Send stadfestings-epost på ny reset_password_user: Tilbakestill passord resolve_report: Løs rapport + sensitive_account: Tvangsfølsom konto silence_account: Demp konto suspend_account: Suspender kontoen + unassigned_report: Fjern tilordna rapport + unblock_email_account: Avblokker e-postadresse + unsensitive_account: Angre tvangsfølsom konto + unsilence_account: Angre avgrensing av konto unsuspend_account: Opphev suspensjonen av kontoen update_announcement: Oppdater kunngjøringen update_custom_emoji: Oppdater tilpassa emoji + update_domain_block: Oppdater domene-sperring + update_ip_block: Oppdater IP-regel update_status: Oppdater tut + update_user_role: Oppdater rolla actions: - approve_user_html: "%{name} godkjente registrering fra %{target}" - create_custom_emoji_html: "%{name} lastet opp ny emoji %{target}" - create_domain_allow_html: "%{name} tillatt føderasjon med domenet %{target}" - create_domain_block_html: "%{name} blokkert domene %{target}" - create_email_domain_block_html: "%{name} blokkert e-post domene %{target}" - create_ip_block_html: "%{name} opprettet regel for IP %{target}" + approve_appeal_html: "%{name} godkjende klagen frå %{target} på modereringa" + approve_user_html: "%{name} godkjende registreringa til %{target}" + assigned_to_self_report_html: "%{name} tildelte rapport %{target} til seg sjølv" + change_email_user_html: "%{name} endra e-postadressa til brukaren %{target}" + change_role_user_html: "%{name} endra rolla til %{target}" + confirm_user_html: "%{name} stadfesta e-postadressa til brukaren %{target}" + create_account_warning_html: "%{name} sende ei åtvaring til %{target}" + create_announcement_html: "%{name} oppretta ei ny kunngjering %{target}" + create_canonical_email_block_html: "%{name} blokkerte e-post med hash %{target}" + create_custom_emoji_html: "%{name} lasta opp ein ny emoji %{target}" + create_domain_allow_html: "%{name} tillot føderasjon med domenet %{target}" + create_domain_block_html: "%{name} blokkerte domenet %{target}" + create_email_domain_block_html: "%{name} blokkerte e-postdomenet %{target}" + create_ip_block_html: "%{name} oppretta ein regel for IP-en %{target}" + create_unavailable_domain_html: "%{name} stogga levering til domenet %{target}" + create_user_role_html: "%{name} oppretta rolla %{target}" + demote_user_html: "%{name} degraderte brukaren %{target}" + destroy_announcement_html: "%{name} sletta kunngjeringa %{target}" + destroy_canonical_email_block_html: "%{name} avblokkerte e-post med hash %{target}" + destroy_custom_emoji_html: "%{name} sletta emojien %{target}" + destroy_domain_allow_html: "%{name} forbydde føderasjon med domenet %{target}" + destroy_domain_block_html: "%{name} avblokkerte domenet %{target}" + destroy_email_domain_block_html: "%{name} avblokkerte e-postdomenet %{target}" + destroy_instance_html: "%{name} tømde domenet %{target}" + destroy_ip_block_html: "%{name} sletta ein regel for IP-en %{target}" + destroy_status_html: "%{name} fjerna innlegget frå %{target}" + destroy_unavailable_domain_html: "%{name} tok opp att levering til domenet %{target}" + destroy_user_role_html: "%{name} sletta rolla %{target}" + disable_2fa_user_html: "%{name} tok vekk krav om tofaktorautentisering for brukaren %{target}" + disable_custom_emoji_html: "%{name} deaktiverte emojien %{target}" reject_user_html: "%{name} avslo registrering fra %{target}" + reset_password_user_html: "%{name} tilbakestilte passordet for brukaren %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" empty: Ingen loggar funne. filter_by_action: Sorter etter handling @@ -233,10 +296,12 @@ nn: enable: Slå på enabled: Slege på enabled_msg: Aktiverte kjensleteikn + image_hint: PNG eller GIF opp til %{size} list: Oppfør listed: Oppført new: title: Legg til eige kjensleteikn + no_emoji_selected: Ingen emojiar vart endra sidan ingen vart valde not_permitted: Du har ikkje løyve til å utføra denne handlinga overwrite: Skriv over shortcode: Stuttkode @@ -249,7 +314,7 @@ nn: updated_msg: Kjensleteiknet er oppdatert! upload: Last opp dashboard: - active_users: aktive brukere + active_users: aktive brukarar interactions: interaksjoner media_storage: Medialagring new_users: nye brukere @@ -303,6 +368,7 @@ nn: new: create: Legg til domene title: Ny blokkeringsoppføring av e-postdomene + resolved_through_html: Løyst gjennom %{domain} title: Blokkerte e-postadresser follow_recommendations: description_html: "Følg anbefalinger hjelper nye brukere med å finne interessant innhold. Når en bruker ikke har kommunisert med andre nok til å danne personlig tilpassede følger anbefalinger, anbefales disse kontoene i stedet. De beregnes daglig på nytt fra en blanding av kontoer der de høyeste engasjementene er og med høyest lokal tilhenger for et gitt språk." @@ -944,10 +1010,33 @@ nn: public_long: Alle kan sjå unlisted: Ikkje oppført unlisted_long: Alle kan sjå, men ikkje oppført på offentlege tidsliner + statuses_cleanup: + keep_pinned: Behald festa innlegg + keep_pinned_hint: Sletter ingen av dine festa innlegg + keep_polls: Behald røystingar + keep_polls_hint: Sletter ingen av dine røystingar + keep_self_bookmark: Behald bokmerka innlegg + keep_self_bookmark_hint: Sletter ikkje dine eigne innlegg om du har bokmerka dei + keep_self_fav: Behald innlegg som favoritt + keep_self_fav_hint: Sletter ikkje dine eigne innlegg om du har favorittmerka dei + min_age: + '1209600': 2 veker + '15778476': 6 månader + '2629746': 1 månad + '31556952': 1 år + '5259492': 2 månader + '604800': 1 veke + '63113904': 2 år + '7889238': 3 månader + min_age_label: Aldersterskel + min_favs_hint: Sletter ingen av dine innlegg som har mottatt minst dette antalet favorittmerkingar. Lat vere blank for å slette innlegg uavhengig av antal favorittmerkingar stream_entries: pinned: Festa tut reblogged: framheva sensitive_content: Følsomt innhold + strikes: + errors: + too_late: Det er for seint å klage på denne prikken tags: does_not_match_previous_name: stemmar ikkje med det førre namnet themes: @@ -974,10 +1063,36 @@ nn: recovery_instructions_html: Hvis du skulle miste tilgang til telefonen din, kan du bruke en av gjenopprettingskodene nedenfor til å gjenopprette tilgang til din konto. Oppbevar gjenopprettingskodene sikkert, for eksempel ved å skrive dem ut og gjemme dem på et lurt sted bare du vet om. webauthn: Sikkerhetsnøkler user_mailer: + appeal_approved: + action: Gå til din konto + explanation: Apellen på prikken mot din kontor på %{strike_date} som du la inn på %{appeal_date} har blitt godkjend. Din konto er nok ein gong i god stand. + title: Anke godkjend + appeal_rejected: + title: Anke avvist backup_ready: explanation: Du ba om en fullstendig sikkerhetskopi av Mastodon-kontoen din. Den er nå klar for nedlasting! subject: Arkivet ditt er klart til å lastes ned + suspicious_sign_in: + change_password: endre passord + details: 'Her er påloggingsdetaljane:' + explanation: Vi har oppdaga ei pålogging til din konto frå ei ny IP-adresse. + further_actions_html: Om dette ikkje var deg, tilrår vi at du %{action} no og aktiverar 2-trinnsinnlogging for å halde kontoen din sikker. + subject: Din konto er opna frå ei ny IP-adresse + title: Ei ny pålogging warning: + appeal: Send inn anke + appeal_description: Om du meiner dette er ein feil, kan du sende inn ei klage til gjengen i %{instance}. + categories: + spam: Søppelpost + violation: Innhald bryter følgjande retningslinjer + explanation: + delete_statuses: Nokre av innlegga dine er bryt éin eller fleire retningslinjer, og har så blitt fjerna av moderatorene på %{instance}. + disable: Du kan ikkje lenger bruke kontoen, men profilen din og andre data er intakt. Du kan be om ein sikkerhetskopi av dine data, endre kontoinnstillingar eller slette din konto. + sensitive: Frå no av vil alle dine opplasta mediefiler bli markert som sensitive og skjult bak ei klikk-åtvaring. + silence: Medan kontoen din er avgrensa, vil berre folk som allereie fylgjer deg sjå dine tutar på denne tenaren, og du kan bli ekskludert fra diverse offentlige oppføringer. Andre kan framleis fylgje deg manuelt. + suspend: Du kan ikkje lenger bruke kontoen din, og profilen og andre data er ikkje lenger tilgjengelege. Du kan framleis logge inn for å be om ein sikkerheitskopi av data før dei blir fullstendig sletta om omtrent 30 dagar, men vi beheld nokre grunnleggjande data for å forhindre deg å omgå suspenderinga. + reason: 'Årsak:' + statuses: 'Innlegg sitert:' subject: disable: Kontoen din, %{acct}, har blitt fryst none: Åtvaring for %{acct} diff --git a/config/locales/no.yml b/config/locales/no.yml index 09dcc93c7e..7c38679944 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -170,6 +170,7 @@ reject_user: Avvis bruker remove_avatar_user: Fjern Avatar reopen_report: Gjenåpne rapporten + resend_user: Send e-post med bekreftelse på nytt reset_password_user: Tilbakestill passord resolve_report: Løs rapport silence_account: Demp konto diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 5a6dd0ecbe..4698bedc25 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -7,19 +7,19 @@ pl: hosted_on: Mastodon uruchomiony na %{domain} title: O nas accounts: - follow: Śledź + follow: Obserwuj followers: few: śledzących many: śledzących one: śledzący - other: Śledzących - following: śledzonych + other: obserwujących + following: Obserwowanych instance_actor_flash: To konto jest wirtualnym profilem używanym do reprezentowania samego serwera, a nie żadnego indywidualnego użytkownika. Jest ono stosowane do celów federacji i nie powinien być zawieszany. last_active: ostatnio aktywny(-a) link_verified_on: Własność tego odnośnika została sprawdzona %{date} nothing_here: Niczego tu nie ma! pin_errors: - following: Musisz śledzić osobę, którą chcesz polecać + following: Musisz obserwować osobę, którą chcesz polecać posts: few: wpisy many: wpisów @@ -74,8 +74,8 @@ pl: enable_sign_in_token_auth: Włącz uwierzytelnianie tokenu e-mail enabled: Aktywowano enabled_msg: Pomyślnie odblokowano konto %{username} - followers: Śledzący - follows: Śledzeni + followers: Obserwujący + follows: Obserwowani header: Nagłówek inbox_url: Adres skrzynki invite_request_text: Powody rejestracji @@ -213,6 +213,7 @@ pl: reject_user: Odrzuć użytkownika remove_avatar_user: Usuń awatar reopen_report: Otwórz zgłoszenie ponownie + resend_user: Wyślij ponownie e-mail potwierdzający reset_password_user: Resetuj hasło resolve_report: Rozwiąż zgłoszenie sensitive_account: Oznacz zawartość multimedialną swojego konta jako wrażliwą @@ -271,6 +272,7 @@ pl: reject_user_html: "%{name} odrzucił rejestrację od %{target}" remove_avatar_user_html: "%{name} usunął(-ęła) awatar użytkownikowi %{target}" reopen_report_html: "%{name} otworzył(a) ponownie zgłoszenie %{target}" + resend_user_html: "%{name} ponownie wysłał(a) e-mail z potwierdzeniem dla %{target}" reset_password_user_html: "%{name} przywrócił(a) hasło użytkownikowi %{target}" resolve_report_html: "%{name} rozwiązał(a) zgłoszenie %{target}" sensitive_account_html: "%{name} oznaczył(a) zawartość multimedialną %{target} jako wrażliwą" @@ -397,7 +399,7 @@ pl: create: Utwórz blokadę hint: Blokada domen nie zabroni tworzenia wpisów kont w bazie danych, ale pozwoli na automatyczną moderację kont do nich należących. severity: - desc_html: "Wyciszenie uczyni wpisy użytkownika widoczne tylko dla osób, które go śledzą. Zawieszenie spowoduje usunięcie całej zawartości dodanej przez użytkownika. Użyj Żadne, jeżeli chcesz jedynie odrzucać zawartość multimedialną." + desc_html: "Wyciszenie uczyni wpisy użytkownika widoczne tylko dla osób, które go obserwują. Zawieszenie spowoduje usunięcie całej zawartości dodanej przez użytkownika. Użyj Żadne, jeżeli chcesz jedynie odrzucać zawartość multimedialną." noop: Nic nie rób silence: Wycisz suspend: Zawieś @@ -436,13 +438,13 @@ pl: resolved_through_html: Rozwiązano przez %{domain} title: Blokowanie domen e-mail follow_recommendations: - description_html: "Polecane śledzenia pomagają nowym użytkownikom szybko odnaleźć interesujące treści. Jeżeli użytkownik nie wchodził w interakcje z innymi wystarczająco często, aby powstały spersonalizowane rekomendacje, polecane są te konta. Są one obliczane każdego dnia na podstawie kombinacji kont o największej liczbie niedawnej aktywności i największej liczbie lokalnych obserwatorów dla danego języka." + description_html: "Polecane obserwacje pomagają nowym użytkownikom szybko odnaleźć interesujące treści. Jeżeli użytkownik nie wchodził w interakcje z innymi wystarczająco często, aby powstały spersonalizowane rekomendacje, polecane są te konta. Są one obliczane każdego dnia na podstawie kombinacji kont o największej liczbie niedawnej aktywności i największej liczbie lokalnych obserwatorów dla danego języka." language: Dla języka status: Stan - suppress: Usuń polecenie śledzenia + suppress: Usuń polecenie obserwacji suppressed: Usunięto title: Polecane konta - unsuppress: Przywróć polecenie śledzenia konta + unsuppress: Przywróć polecenie obserwacji konta instances: availability: description_html: @@ -476,10 +478,10 @@ pl: reason: Powód publiczny title: Polityki zawartości dashboard: - instance_accounts_dimension: Najczęściej śledzone konta + instance_accounts_dimension: Najczęściej obserwowane konta instance_accounts_measure: przechowywane konta - instance_followers_measure: nasi śledzący tam - instance_follows_measure: ich śledzący tutaj + instance_followers_measure: nasi obserwujący tam + instance_follows_measure: ich obserwujący tutaj instance_languages_dimension: Najpopularniejsze języki instance_media_attachments_measure: przechowywane załączniki multimedialne instance_reports_measure: zgłoszenia dotyczące ich @@ -511,8 +513,8 @@ pl: purge_description_html: Jeśli uważasz, że ta domena została zamknięta na dobre, możesz usunąć wszystkie rejestry konta i powiązane dane z tej domeny z pamięci. Proces ten może chwilę potrwać. title: Znane instancje total_blocked_by_us: Zablokowane przez nas - total_followed_by_them: Śledzeni przez nich - total_followed_by_us: Śledzeni przez nas + total_followed_by_them: Obserwowani przez nich + total_followed_by_us: Obserwowani przez nas total_reported: Zgłoszenia dotyczące ich total_storage: Załączniki multimedialne totals_time_period_hint_html: Poniższe sumy zawierają dane od początku serwera. @@ -544,7 +546,7 @@ pl: relays: add_new: Dodaj nowy delete: Usuń - description_html: "Przekaźnik federacji jest pośredniczącym serwerem wymieniającym duże ilości publicznych wpisów pomiędzy serwerami które subskrybują je i publikują na nich. Pomaga to małym i średnim instancją poznawać nową zawartość z Fediwersum, co w innym przypadku wymagałoby od użytkowników ręcznego śledzenia osób z innych serwerów." + description_html: "Przekaźnik federacji jest pośredniczącym serwerem wymieniającym duże ilości publicznych wpisów pomiędzy serwerami które subskrybują je i publikują na nich. Pomaga to małym i średnim instancją poznawać nową zawartość z Fediwersum, co w innym przypadku wymagałoby od użytkowników ręcznej obserwacji osób z innych serwerów." disable: Wyłącz disabled: Wyłączony enable: Włącz @@ -710,7 +712,7 @@ pl: preamble: Kontroluj, jak treści generowane przez użytkownika są przechowywane w Mastodon. title: Retencja treści discovery: - follow_recommendations: Postępuj zgodnie z zaleceniami + follow_recommendations: Polecane konta preamble: Prezentowanie interesujących treści ma kluczowe znaczenie dla nowych użytkowników, którzy mogą nie znać nikogo z Mastodona. Kontroluj, jak różne funkcje odkrywania działają na Twoim serwerze. profile_directory: Katalog profilów public_timelines: Publiczne osie czasu @@ -816,7 +818,7 @@ pl: statuses: allow: Zezwól na post allow_account: Zezwól na autora - description_html: Są to wpisy, o których Twój serwer wie i które są obecnie często udostępniane i dodawane do ulubionych. Może to pomóc nowym i powracającym użytkownikom znaleźć więcej osób do śledzenia. Żadne posty nie są wyświetlane publicznie, dopóki nie zatwierdzisz autora, a autor ustawi zezwolenie na wyświetlanie się w katalogu. Możesz również zezwolić lub odrzucić poszczególne posty. + description_html: Są to wpisy, o których Twój serwer wie i które są obecnie często udostępniane i dodawane do ulubionych. Może to pomóc nowym i powracającym użytkownikom znaleźć więcej osób do obserwacji. Żadne posty nie są wyświetlane publicznie, dopóki nie zatwierdzisz autora, a autor ustawi zezwolenie na wyświetlanie się w katalogu. Możesz również zezwolić lub odrzucić poszczególne posty. disallow: Nie zezwalaj na post disallow_account: Nie zezwalaj na autora no_status_selected: Żadne popularne wpisy nie zostały zmienione, ponieważ żadnych nie wybrano @@ -954,7 +956,7 @@ pl: description: prefix_invited_by_user: "@%{name} zaprasza Cię do dołączenia na ten serwer Mastodona!" prefix_sign_up: Zarejestruj się na Mastodon już dziś! - suffix: Mając konto, możesz śledzić ludzi, publikować wpisy i wymieniać się wiadomościami z użytkownikami innych serwerów Mastodona i nie tylko! + suffix: Mając konto, możesz obserwować ludzi, publikować wpisy i wymieniać się wiadomościami z użytkownikami innych serwerów Mastodona i nie tylko! didnt_get_confirmation: Nie otrzymałeś(-aś) instrukcji weryfikacji? dont_have_your_security_key: Nie masz klucza bezpieczeństwa? forgot_password: Nie pamiętasz hasła? @@ -997,17 +999,17 @@ pl: too_fast: Zbyt szybko przesłano formularz, spróbuj ponownie. use_security_key: Użyj klucza bezpieczeństwa authorize_follow: - already_following: Już śledzisz to konto - already_requested: Już wysłałeś(-aś) prośbę o możliwość śledzenia tego konta + already_following: Już obserwujesz to konto + already_requested: Już wysłałeś(-aś) prośbę o możliwość obserwowania tego konta error: Niestety, podczas sprawdzania zdalnego konta wystąpił błąd - follow: Śledź - follow_request: 'Wysłano prośbę o pozwolenie na śledzenie:' - following: 'Pomyślnie! Od teraz śledzisz:' + follow: Obsewuj + follow_request: 'Wysłano prośbę o możliwość obserwowania:' + following: 'Pomyślnie! Od teraz obserwujesz:' post_follow: close: Ewentualnie, możesz po prostu zamknąć tę stronę. return: Pokaż stronę użytkownika web: Przejdź do sieci - title: Śledź %{acct} + title: Obserwuj %{acct} challenge: confirm: Kontynuuj hint_html: "Informacja: Nie będziemy prosić Cię o ponowne podanie hasła przez następną godzinę." @@ -1212,13 +1214,13 @@ pl: merge_long: Zachowaj obecne wpisy i dodaj nowe overwrite: Nadpisz overwrite_long: Zastąp obecne wpisy nowymi - preface: Możesz zaimportować pewne dane (np. lista kont, które śledzisz lub blokujesz) do swojego konta na tym serwerze, korzystając z danych wyeksportowanych z innego serwera. + preface: Możesz zaimportować pewne dane (np. lista kont, które obserwujesz lub blokujesz) do swojego konta na tym serwerze, korzystając z danych wyeksportowanych z innego serwera. success: Twoje dane zostały załadowane i zostaną niebawem przetworzone types: blocking: Lista blokowanych bookmarks: Zakładki domain_blocking: Lista zablokowanych domen - following: Lista śledzonych + following: Lista obserwowanych muting: Lista wyciszonych upload: Załaduj invites: @@ -1267,7 +1269,7 @@ pl: migrations: acct: nazwa@domena nowego konta cancel: Anuluj przekierowanie - cancel_explanation: Anulowanie przekierowania aktywuje Twoje obecne konto ponownie, ale nie przeniesie z powrotem śledzących, których przeniesiono na tamto konto. + cancel_explanation: Anulowanie przekierowania aktywuje Twoje obecne konto ponownie, ale nie przeniesie z powrotem obserwujących, których przeniesiono na tamto konto. cancelled_msg: Pomyślnie anulowano przekierowanie. errors: already_moved: jest tym samym kontem, na które już się przeniosłeś(-aś) @@ -1275,10 +1277,10 @@ pl: move_to_self: nie może być bieżącym kontem not_found: nie mogło zostać odnalezione on_cooldown: Nie możesz teraz przenieść konta - followers_count: Śledzący w chwili przenoszenia + followers_count: Obserwujący w chwili przenoszenia incoming_migrations: Przenoszenie z innego konta incoming_migrations_html: Aby przenieść się z innego konta na to, musisz najpierw utworzyć alias konta. - moved_msg: Twoje konto przekierowuje teraz na %{acct}, a śledzący są przenoszeni. + moved_msg: Twoje konto przekierowuje teraz na %{acct}, a obserwujący są przenoszeni. not_redirecting: Twoje konto nie przekierowuje obecnie na żadne inne konto. on_cooldown: Ostatnio przeniosłeś(-aś) swoje konto. Ta funkcja będzie dostępna ponownie za %{count} dni. past_migrations: Poprzednie migracje @@ -1291,7 +1293,7 @@ pl: before: 'Zanim kontynuujesz, przeczytaj uważnie te uwagi:' cooldown: Po przeniesieniu się, istnieje okres przez który nie możesz ponownie się przenieść disabled_account: Twoje obecne konto nie będzie później całkowicie użyteczne. Możesz jednak uzyskać dostęp do eksportu danych i ponownie aktywować je. - followers: To działanie przeniesie wszystkich Twoich śledzących z obecnego konta na nowe + followers: To działanie przeniesie wszystkich Twoich obserwujących z obecnego konta na nowe only_redirect_html: Możesz też po prostu skonfigurować przekierowanie na swój profil. other_data: Żadne inne dane nie zostaną automatycznie przeniesione redirect: Twoje obecne konto zostanie uaktualnione o informację o przeniesieniu i wyłączone z wyszukiwania @@ -1314,14 +1316,14 @@ pl: subject: "%{name} lubi Twój wpis" title: Nowe polubienie follow: - body: "%{name} Cię śledzi!" - subject: "%{name} Cię śledzi" - title: Nowy śledzący + body: "%{name} Cię obserwuje!" + subject: "%{name} Cię obserwuje" + title: Nowy obserwujący follow_request: - action: Zarządzaj prośbami o możliwość śledzenia - body: "%{name} poprosił(a) o możliwość śledzenia Cię" - subject: 'Prośba o możliwość śledzenia: %{name}' - title: Nowa prośba o możliwość śledzenia + action: Zarządzaj prośbami o możliwość obserwacji + body: "%{name} poprosił(a) o możliwość obserwowania Cię" + subject: 'Prośba o możliwość obserwowania: %{name}' + title: Nowa prośba o możliwość obsewowania mention: action: Odpowiedz body: "%{name} wspomniał(a) o Tobie w:" @@ -1389,9 +1391,9 @@ pl: relationships: activity: Aktywność konta dormant: Uśpione - follow_selected_followers: Zacznij śledzić wybranych śledzących - followers: Śledzący - following: Śledzeni + follow_selected_followers: Zacznij obserwować wybranych obserwujących + followers: Obserwujący + following: Obserwowani invited: Zaproszeni last_active: Ostatnia aktywność most_recent: Ostatnie @@ -1399,9 +1401,9 @@ pl: mutual: Wspólna primary: Jednostronna relationship: Relacja - remove_selected_domains: Usuń wszystkich śledzących z zaznaczonych domen - remove_selected_followers: Usuń zaznaczonych śledzących - remove_selected_follows: Przestań śledzić zaznaczonych użytkowników + remove_selected_domains: Usuń wszystkich obserwujących z zaznaczonych domen + remove_selected_followers: Usuń zaznaczonych obserwujących + remove_selected_follows: Przestań obserwować zaznaczonych użytkowników status: Stan konta remote_follow: missing_resource: Nie udało się znaleźć adresu przekierowania z Twojej domeny @@ -1477,7 +1479,7 @@ pl: notifications: Powiadomienia preferences: Preferencje profile: Profil - relationships: Śledzeni i śledzący + relationships: Obserwowani i obserwujący statuses_cleanup: Automatyczne usuwanie posta strikes: Ostrzeżenia moderacyjne two_factor_authentication: Uwierzytelnianie dwuetapowe @@ -1538,8 +1540,8 @@ pl: title: '%{name}: "%{quote}"' visibilities: direct: Bezpośredni - private: Tylko dla śledzących - private_long: Widoczne tylko dla osób, które Cię śledzą + private: Tylko dla obserwujących + private_long: Widoczne tylko dla osób, które Cię obserwują public: Publiczne public_long: Widoczne dla wszystkich użytkowników unlisted: Niewypisane @@ -1644,7 +1646,7 @@ pl: disable: Nie możesz już używać swojego konta, ale Twój profil i inne dane pozostają nienaruszone. Możesz poprosić o kopię swoich danych, zmienić ustawienia konta lub usunąć swoje konto. mark_statuses_as_sensitive: Niektóre z Twoich postów zostały oznaczone jako wrażliwe przez moderatorów %{instance}. Oznacza to, że ludzie będą musieli dotknąć mediów w postach przed wyświetleniem podglądu. Możesz oznaczyć media jako wrażliwe podczas publikowania w przyszłości. sensitive: Od teraz wszystkie przesłane pliki multimedialne będą oznaczone jako wrażliwe i ukryte za ostrzeżeniem kliknięcia. - silence: Kiedy Twoje konto jest ograniczone, tylko osoby, które je śledzą, będą widzieć Twoje wpisy. Może ono też przestać być widoczne w funkcjach odkrywania. Inni wciąż mogą zacząć Cię śledzić. + silence: Kiedy Twoje konto jest ograniczone, tylko osoby, które je obserwują, będą widzieć Twoje wpisy. Może ono też przestać być widoczne w funkcjach odkrywania. Inni wciąż mogą zacząć Cię obserwować. suspend: Nie możesz już używać Twojego konta, a Twój profil i inne dane nie są już dostępne. Zanim w pełni usuniemy Twoje dane po około 30 dniach, możesz nadal zalogować się, aby uzyskać ich kopię. Zachowamy pewne podstawowe dane, aby zapobiegać obchodzeniu przez Ciebie zawieszenia. reason: 'Powód:' statuses: 'Cytowane posty:' @@ -1666,16 +1668,16 @@ pl: suspend: Konto zawieszone welcome: edit_profile_action: Skonfiguruj profil - edit_profile_step: Możesz dostosować profil wysyłając awatar, zmieniając wyświetlaną nazwę i o wiele więcej. Jeżeli chcesz, możesz również włączyć przeglądanie i ręczne akceptowanie nowych zgłoszeń śledzenia Twojego profilu. + edit_profile_step: Możesz dostosować profil wysyłając awatar, zmieniając wyświetlaną nazwę i o wiele więcej. Jeżeli chcesz, możesz również włączyć przeglądanie i ręczne akceptowanie nowych próśb o możliwość obserwacji Twojego profilu. explanation: Kilka wskazówek, które pomogą Ci rozpocząć final_action: Zacznij pisać - final_step: 'Zacznij tworzyć! Nawet jeżeli nikt Cię nie śledzi, Twoje publiczne wiadomości będą widziane przez innych, na przykład na lokalnej osi czasu i w hashtagach. Możesz też utworzyć wpis wprowadzający używając hashtagu #introductions.' + final_step: 'Zacznij tworzyć! Nawet jeżeli nikt Cię nie obserwuje, Twoje publiczne wiadomości będą widziane przez innych, na przykład na lokalnej osi czasu i w hashtagach. Możesz też utworzyć wpis wprowadzający używając hashtagu #introductions.' full_handle: Twój pełny adres - full_handle_hint: Ten adres możesz podać znajomym, aby mogli skontaktować się z Tobą lub zacząć śledzić z innego serwera. + full_handle_hint: Ten adres możesz podać znajomym, aby mogli skontaktować się z Tobą lub zacząć obserwować z innego serwera. subject: Witaj w Mastodonie title: Witaj na pokładzie, %{name}! users: - follow_limit_reached: Nie możesz śledzić więcej niż %{limit} osób + follow_limit_reached: Nie możesz obserwować więcej niż %{limit} osób invalid_otp_token: Kod uwierzytelniający jest niepoprawny otp_lost_help_html: Jeżeli utracisz dostęp do obu, możesz skontaktować się z %{email} seamless_external_login: Zalogowano z użyciem zewnętrznej usługi, więc ustawienia hasła i adresu e-mail nie są dostępne. diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 032187a346..4b6206f20c 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -702,6 +702,7 @@ pt-BR: language: Idioma media: title: Mídia + metadata: Metadados no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado title: Toots da conta with_media: Com mídia diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index d1f29a92b5..8413c642ae 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -207,6 +207,7 @@ pt-PT: reject_user: Rejeitar Utilizador remove_avatar_user: Remover Imagem de Perfil reopen_report: Reabrir Denúncia + resend_user: Reenviar E-mail de Confirmação reset_password_user: Repor Password resolve_report: Resolver Denúncia sensitive_account: Marcar a media na sua conta como sensível @@ -265,6 +266,7 @@ pt-PT: reject_user_html: "%{name} rejeitou a inscrição de %{target}" remove_avatar_user_html: "%{name} removeu a imagem de perfil de %{target}" reopen_report_html: "%{name} reabriu a denúncia %{target}" + resend_user_html: "%{name} reenviou e-mail de confirmação para %{target}" reset_password_user_html: "%{name} restabeleceu a palavra-passe do utilizador %{target}" resolve_report_html: "%{name} resolveu a denúncia %{target}" sensitive_account_html: "%{name} marcou a media de %{target} como sensível" diff --git a/config/locales/simple_form.af.yml b/config/locales/simple_form.af.yml index a52c53eba1..82dffa42f2 100644 --- a/config/locales/simple_form.af.yml +++ b/config/locales/simple_form.af.yml @@ -2,6 +2,8 @@ af: simple_form: hints: + announcement: + scheduled_at: Los blanko om die aankondiging onmiddelik te publiseer webhook: events: Kies gebeurtenisse om te stuur url: Waarheen gebeurtenisse gestuur sal word diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index 1ed63a99a6..0c1a3dcc86 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -65,8 +65,6 @@ ar: domain: سيكون بإمكان هذا النطاق جلب البيانات من هذا الخادم ومعالجة وتخزين البيانات الواردة منه email_domain_block: with_dns_records: سوف تُبذل محاولة لحل سجلات DNS الخاصة بالنطاق المعني، كما ستُمنع النتائج - featured_tag: - name: 'رُبَّما تريد·ين استخدام واحد مِن بين هذه:' form_admin_settings: site_contact_username: كيف يمكن للناس أن يصلوا إليك في ماستدون. form_challenge: diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 7c5400f94e..b22fc9ee52 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -13,7 +13,7 @@ ast: setting_show_application: L'aplicación qu'uses pa espublizar apaez na vista detallada de los tos artículos username: El nome d'usuariu va ser únicu en %{domain} featured_tag: - name: 'Quiciabes quieras usar unu d''estos:' + name: 'Equí hai dalgunes de les etiquetes qu''usesti apocayá:' form_challenge: current_password: Tas entrando nuna área segura imports: diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index a21fd78cde..2fd51bfea3 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -36,7 +36,7 @@ ca: context: Un o diversos contextos en què s'ha d'aplicar el filtre current_password: Per motius de seguretat, introdueix la contrasenya del compte actual current_username: Per confirmar-ho, introdueix el nom d'usuari del compte actual - digest: Només s'envia després d'un llarg període d'inactivitat amb un resum de les mencions que has rebut en la teva absència + digest: Només s'envia després d'un llarg període d'inactivitat i només si has rebut algun missatge personal durant la teva absència discoverable: Permet que el teu compte sigui descobert per desconeguts a través de recomanacions, etiquetes i altres característiques email: Se t'enviarà un correu electrònic de confirmació fields: Pots tenir fins a 4 elements que es mostren com a taula al teu perfil @@ -67,9 +67,9 @@ ca: domain: Aquest pot ser el nom del domini que es mostra en l'adreça de correu o el registre MX que utilitza. Es revisaran ql registrar-se. with_dns_records: Es procurarà resoldre els registres DNS del domini determinat i els resultats també es llistaran a la llista negra featured_tag: - name: 'És possible que vulguis utilitzar una d''aquestes:' + name: 'Aquí estan algunes de les etiquetes que més has usat recentment:' filters: - action: Tria quina acció cal executar quan una publicació coincideixi amb el filtre + action: Tria quina acció cal executar quan un apunt coincideixi amb el filtre actions: hide: Ocultar completament el contingut filtrat, comportant-se com si no existís warn: Oculta el contingut filtrat rera un avís mencionant el títol del filtre @@ -246,6 +246,12 @@ ca: site_extended_description: Descripció ampliada site_short_description: Descripció del servidor site_terms: Política de Privacitat + site_title: Nom del servidor + theme: Tema per defecte + thumbnail: Miniatura del servidor + timeline_preview: Permet l'accés no autenticat a les línies de temps públiques + trendable_by_default: Permet tendències sense revisió prèvia + trends: Activa les tendències interactions: must_be_follower: Bloqueja les notificacions de persones que no em segueixen must_be_following: Bloqueja les notificacions de persones no seguides diff --git a/config/locales/simple_form.ckb.yml b/config/locales/simple_form.ckb.yml index 32fda85a4a..9ce9ac0655 100644 --- a/config/locales/simple_form.ckb.yml +++ b/config/locales/simple_form.ckb.yml @@ -57,8 +57,6 @@ ckb: domain: ئەم دۆمەینە دەتوانێت دراوە لە ئەم ڕاژە وەربگرێت و دراوەی ئەم دۆمەینە لێرە ڕێکدەخرین و پاشکەوت دەکرێن email_domain_block: with_dns_records: هەوڵێک بۆ چارەسەرکردنی تۆمارەکانی DNSی دۆمەین دراوە کە ئەنجامەکان بلۆک دەکرێت - featured_tag: - name: 'لەوانەیە بتەوێت یەکێک لەمانە بەکاربهێنیت:' form_challenge: current_password: تۆ دەچیتە ناو ناوچەی پارێزراو imports: diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml index 576feb0318..79e5837d4b 100644 --- a/config/locales/simple_form.co.yml +++ b/config/locales/simple_form.co.yml @@ -55,8 +55,6 @@ co: domain: Stu duminiu puderà ricuperà i dati di stu servore è i dati ch'affaccanu da quallà saranu trattati è cunservati email_domain_block: with_dns_records: Un tintativu di cunsultà i dati DNS di u duminiu sarà fattu, è i risultati saranu ancu messi nant'à a lista nera - featured_tag: - name: 'Pudete vulè utilizà unu di quelli:' form_challenge: current_password: Entrate in in una zona sicurizata imports: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index a7dce2b677..afa12a1d2a 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -66,8 +66,6 @@ cs: email_domain_block: domain: Toto může být doménové jméno, které je v e-mailové adrese nebo MX záznam, který používá. Budou zkontrolovány při registraci. with_dns_records: Dojde k pokusu o překlad DNS záznamů dané domény a výsledky budou rovněž zablokovány - featured_tag: - name: 'Nejspíš budete chtít použít jeden z těchto:' filters: action: Vyberte jakou akci provést, když příspěvek odpovídá filtru actions: @@ -81,10 +79,12 @@ cs: custom_css: Můžete použít vlastní styly ve verzi Mastodonu. media_cache_retention_period: Stažené mediální soubory budou po zadaném počtu dní odstraněny, pokud je nastavena kladná hodnota, a na požádání znovu staženy. profile_directory: Adresář profilu obsahuje seznam všech uživatelů, kteří se přihlásili, aby mohli být nalezeni. + require_invite_text: Pokud přihlášení vyžaduje ruční schválení, měl by být textový vstup „Proč se chcete připojit?“ povinný spíše než volitelný site_contact_username: Jak vás lidé mohou oslovit na Mastodon. site_extended_description: Jakékoli další informace, které mohou být užitečné pro návštěvníky a vaše uživatele. Může být strukturováno pomocí Markdown syntaxe. site_terms: Použijte vlastní zásady ochrany osobních údajů nebo ponechte prázdné pro použití výchozího nastavení. Může být strukturováno pomocí Markdown syntaxe. thumbnail: Přibližně 2:1 obrázek zobrazený vedle informací o vašem serveru. + trends: Trendy zobrazují, které příspěvky, hashtagy a zprávy získávají na serveru pozornost. form_challenge: current_password: Vstupujete do zabezpečeného prostoru imports: diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index b0217cfe30..1114292577 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -56,8 +56,6 @@ cy: email_domain_block: domain: Gall hwn fod yr enw parth sy'n ymddangos yn y cyfeiriad e-bost neu'r cofnod MX y mae'n ei ddefnyddio. Byddant yn cael eu gwirio wrth gofrestru. with_dns_records: Bydd ceisiad i adfer cofnodau DNS y parth penodol yn cael ei wneud, a bydd y canlyniadau hefyd yn cael ei gosbrestru - featured_tag: - name: 'Efallai hoffech defnyddio un o''r rhain:' form_challenge: current_password: Rydych chi'n mynd i mewn i ardal sicr imports: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 0c63e5133c..b5cb9c6a25 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -66,8 +66,6 @@ da: email_domain_block: domain: Dette kan være domænenavnet vist i den benyttede i e-mailadresse eller MX-post. Begge tjekkes under tilmelding. with_dns_records: Et forsøg på at opløse det givne domænes DNS-poster foretages, og resultaterne blokeres ligeledes - featured_tag: - name: 'Et af flg. ønskes måske anvendt:' filters: action: Vælg handlingen til eksekvering, når et indlæg matcher filteret actions: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 20600c878a..8fe509cb80 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -8,7 +8,7 @@ de: acct: Gib den benutzernamen@domain des Kontos an, zu dem du umziehen möchtest account_warning_preset: text: Du kannst Beitragssyntax benutzen, wie z.B. URLs, Hashtags und Erwähnungen - title: Freiwillige Angabe. Die Accounts können dies nicht sehen + title: Optional. Für den Empfänger nicht sichtbar admin_account_action: include_statuses: Der Benutzer wird sehen, welche Beiträge diese Maßnahme verursacht haben send_email_notification: Benutzer_in wird Bescheid gegeben, was mit dem Konto geschehen ist @@ -67,7 +67,7 @@ de: domain: Dies kann der Domänenname sein, der in der E-Mail-Adresse oder dem von ihm verwendeten MX-Eintrag angezeigt wird. Er wird bei der Anmeldung überprüft. with_dns_records: Ein Versuch, die DNS-Einträge der Domain aufzulösen, wurde unternommen, und diese Ergebnisse werden unter anderem auch blockiert featured_tag: - name: 'Du möchtest vielleicht einen von diesen benutzen:' + name: 'Hier sind ein paar Hashtags, die du in letzter Zeit am häufigsten genutzt hast:' filters: action: Wählen Sie, welche Aktion ausgeführt werden soll, wenn ein Beitrag dem Filter entspricht actions: @@ -123,7 +123,7 @@ de: color: Die Farbe, die für die Rolle im gesamten UI verwendet wird, als RGB im Hexformat highlighted: Dies macht die Rolle öffentlich sichtbar name: Öffentlicher Name der Rolle, wenn die Rolle als Abzeichen angezeigt werden soll - permissions_as_keys: Benutzer mit dieser Rolle haben Zugriff auf... + permissions_as_keys: Benutzer mit dieser Rolle haben Zugriff auf … position: Die höhere Rolle entscheidet über die Konfliktlösung in bestimmten Situationen. Bestimmte Aktionen können nur in Rollen mit geringerer Priorität ausgeführt werden webhook: events: Zu sendende Ereignisse auswählen @@ -148,7 +148,7 @@ de: types: disable: Deaktivieren none: Nichts tun - sensitive: Inhaltswarnung (NSFW) + sensitive: Inhaltswarnung silence: Stummschalten suspend: Deaktivieren und Benutzerdaten unwiderruflich löschen warning_preset_id: Benutze eine Warnungsvorlage @@ -236,7 +236,7 @@ de: custom_css: Benutzerdefiniertes CSS mascot: Benutzerdefiniertes Maskottchen (Legacy) media_cache_retention_period: Aufbewahrungsfrist für den Medien-Cache - profile_directory: Benutzerliste aktivieren + profile_directory: Profilverzeichnis aktivieren registrations_mode: Wer kann sich registrieren require_invite_text: Grund für den Beitritt verlangen show_domain_blocks: Zeige Domain-Blockaden diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 9ef776059e..c68fd47990 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -63,7 +63,7 @@ el: email_domain_block: with_dns_records: Θα γίνει απόπειρα ανάλυσης των εγγραφών DNS του τομέα και τα αποτελέσματα θα μπουν και αυτά σε μαύρη λίστα featured_tag: - name: 'Ίσως να θες να χρησιμοποιήσεις μια από αυτές:' + name: 'Εδώ είναι μερικά από τα hashtags που χρησιμοποιήσατε περισσότερο πρόσφατα:' form_challenge: current_password: Μπαίνεις σε ασφαλή περιοχή imports: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 5076506746..48e2c780ef 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -60,8 +60,6 @@ eo: whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto domain_allow: domain: Ĉi tiu domajno povos akiri datumon de ĉi tiu servilo kaj envenanta datumo estos prilaborita kaj konservita - featured_tag: - name: 'Vi povus uzi iun el la jenaj:' filters: actions: warn: Kaŝi la enhavon filtritan malantaŭ averto mencianta la nomon de la filtro diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 49b09ace4f..39c5e9674a 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -67,7 +67,7 @@ es-AR: domain: Este puede ser el nombre de dominio que aparece en la dirección de correo electrónico o el registro MX que se use. Se revisarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también bloqueados featured_tag: - name: 'Puede que quieras usar una de estas:' + name: 'Acá tenés algunas de las etiquetas que más usaste recientemente:' filters: action: Elegir qué acción realizar cuando un mensaje coincide con el filtro actions: diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 80d5b83fe4..e5db78c4d8 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -66,8 +66,6 @@ es-MX: email_domain_block: domain: Este puede ser el nombre de dominio que se muestra en al dirección de correo o el registro MX que utiliza. Se comprobarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra - featured_tag: - name: 'Puede que quieras usar uno de estos:' filters: action: Elegir qué acción realizar cuando una publicación coincide con el filtro actions: @@ -75,8 +73,25 @@ es-MX: warn: Ocultar el contenido filtrado detrás de una advertencia mencionando el título del filtro form_admin_settings: backups_retention_period: Mantener los archivos de usuario generados durante el número de días especificado. + bootstrap_timeline_accounts: Estas cuentas aparecerán en la parte superior de las recomendaciones de los nuevos usuarios. + closed_registrations_message: Mostrado cuando los registros están cerrados content_cache_retention_period: Las publicaciones de otros servidores se eliminarán después del número especificado de días cuando se establezca un valor positivo. Esto puede ser irreversible. + custom_css: Puedes aplicar estilos personalizados a la versión web de Mastodon. + mascot: Reemplaza la ilustración en la interfaz web avanzada. media_cache_retention_period: Los archivos multimedia descargados se eliminarán después del número especificado de días cuando se establezca un valor positivo, y se redescargarán bajo demanda. + profile_directory: El directorio de perfiles lista a todos los usuarios que han optado por que su cuenta pueda ser descubierta. + require_invite_text: Cuando los registros requieren aprobación manual, hace obligatoria la entrada de texto "¿Por qué quieres unirte?" en lugar de opcional + site_contact_email: Cómo la gente puede ponerse en contacto contigo para consultas legales o de ayuda. + site_contact_username: Cómo puede contactarte la gente en Mastodon. + site_extended_description: Cualquier información adicional que pueda ser útil para los visitantes y sus usuarios. Se puede estructurar con formato Markdown. + site_short_description: Una breve descripción para ayudar a identificar su servidor de forma única. ¿Quién lo administra, a quién va dirigido? + site_terms: Utiliza tu propia política de privacidad o déjala en blanco para usar la predeterminada Puede estructurarse con formato Markdown. + site_title: Cómo puede referirse la gente a tu servidor además de por el nombre de dominio. + theme: El tema que los visitantes no registrados y los nuevos usuarios ven. + thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor. + timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor. + trendable_by_default: Omitir la revisión manual del contenido en tendencia. Los elementos individuales aún podrán eliminarse de las tendencias. + trends: Las tendencias muestran qué mensajes, etiquetas y noticias están ganando tracción en tu servidor. form_challenge: current_password: Estás entrando en un área segura imports: @@ -213,8 +228,28 @@ es-MX: warn: Ocultar con una advertencia form_admin_settings: backups_retention_period: Período de retención del archivo de usuario + bootstrap_timeline_accounts: Recomendar siempre estas cuentas a nuevos usuarios + closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles content_cache_retention_period: Período de retención de caché de contenido + custom_css: CSS personalizado + mascot: Mascota personalizada (legado) media_cache_retention_period: Período de retención de caché multimedia + profile_directory: Habilitar directorio de perfiles + registrations_mode: Quién puede registrarse + require_invite_text: Requerir una razón para unirse + show_domain_blocks: Mostrar dominios bloqueados + show_domain_blocks_rationale: Mostrar por qué se bloquearon los dominios + site_contact_email: Dirección de correo electrónico de contacto + site_contact_username: Nombre de usuario de contacto + site_extended_description: Descripción extendida + site_short_description: Descripción del servidor + site_terms: Política de Privacidad + site_title: Nombre del servidor + theme: Tema por defecto + thumbnail: Miniatura del servidor + timeline_preview: Permitir el acceso no autenticado a las líneas de tiempo públicas + trendable_by_default: Permitir tendencias sin revisión previa + trends: Habilitar tendencias interactions: must_be_follower: Bloquear notificaciones de personas que no te siguen must_be_following: Bloquear notificaciones de personas que no sigues diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 8df08dc8d4..2fe4d033dd 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -66,8 +66,6 @@ es: email_domain_block: domain: Este puede ser el nombre de dominio que aparece en la dirección de correo electrónico o el registro MX que utiliza. Se comprobarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra - featured_tag: - name: 'Puede que quieras usar uno de estos:' filters: action: Elegir qué acción realizar cuando una publicación coincide con el filtro actions: diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index d2e51b209d..b2009500d1 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -55,8 +55,6 @@ et: domain: See domeen saab tõmmata andmeid sellelt serverilt ning sissetulevad andmed sellelt domeenilt töödeldakse ning salvestatakse email_domain_block: with_dns_records: Proovitakse ka üles vaadata selle domeeni DNS kirjed ning selle vastused samuti keelatakse - featured_tag: - name: 'Äkki soovite kasutada mõnda neist:' form_challenge: current_password: Te sisenete turvalisele alale imports: diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 353f376886..44f25f2c48 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -28,7 +28,7 @@ eu: starts_at: Aukerakoa. Zure iragarpena denbora-tarte batera lotuta dagoenerako text: Tootetako sintaxia erabili dezakezu. Kontuan izan iragarpenak erabiltzailearen pantailan hartuko duen neurria appeal: - text: Abisu bati errekurtsoa behin bakarrik jarri diezaiokezu + text: Neurri bati apelazioa behin bakarrik jarri diezaiokezu defaults: autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko dizute avatar: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px neurrira eskalatuko da @@ -66,8 +66,6 @@ eu: email_domain_block: domain: Hau eposta helbidean agertzen den domeinu-izena edo MX erregistroak erabiltzen duena izan daiteke. Izen-ematean egiaztatuko dira. with_dns_records: Emandako domeinuaren DNS erregistroak ebazteko saiakera bat egingo da eta emaitzak ere zerrenda beltzean sartuko dira - featured_tag: - name: 'Hauetakoren bat erabili zenezake:' filters: action: Aukeratu ze ekintza burutu behar den bidalketa bat iragazkiarekin bat datorrenean actions: diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index e3b4921cd7..b74b08e9a1 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -65,8 +65,6 @@ fa: email_domain_block: domain: این می‌تواند نام دامنه‌ای باشد که در نشانی رایانامه یا رکورد MX استفاده می‌شود. پس از ثبت نام بررسی خواهند شد. with_dns_records: تلاشی برای resolve کردن رکوردهای ساناد دامنهٔ داده‌شده انجام شده و نتیجه نیز مسدود خواهد شد - featured_tag: - name: 'شاید بخواهید چنین چیزهایی را به کار ببرید:' form_challenge: current_password: شما در حال ورود به یک منطقهٔ‌ حفاظت‌شده هستید imports: diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 2a0765cfff..218113d32e 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -67,7 +67,7 @@ fi: domain: Tämä voi olla se verkkotunnus, joka näkyy sähköpostiosoitteessa tai MX tietueessa jota se käyttää. Ne tarkistetaan rekisteröitymisen yhteydessä. with_dns_records: Annetun verkkotunnuksen DNS-tietueet yritetään ratkaista ja tulokset myös estetään featured_tag: - name: 'Voit halutessasi käyttää jotakin näistä:' + name: 'Tässä muutamia aihetunnisteita, joita käytit viime aikoina:' filters: action: Valitse, mikä toiminto suoritetaan, kun viesti vastaa suodatinta actions: @@ -99,7 +99,7 @@ fi: imports: data: Toisesta Mastodon-instanssista tuotu CSV-tiedosto invite_request: - text: Tämä auttaa meitä arvioimaan sovellustasi + text: Tämä auttaa meitä arvioimaan hakemustasi ip_block: comment: Valinnainen. Muista miksi lisäsit tämän säännön. expires_in: IP-osoitteet ovat rajallinen resurssi, joskus niitä jaetaan ja vaihtavat usein omistajaa. Tästä syystä epämääräisiä IP-lohkoja ei suositella. @@ -187,7 +187,7 @@ fi: otp_attempt: Kaksivaiheisen tunnistuksen koodi password: Salasana phrase: Avainsana tai lause - setting_advanced_layout: Ota käyttöön edistynyt web käyttöliittymä + setting_advanced_layout: Ota käyttöön edistynyt selainkäyttöliittymä setting_aggregate_reblogs: Ryhmitä boostaukset aikajanalla setting_always_send_emails: Lähetä aina sähköposti-ilmoituksia setting_auto_play_gif: Toista GIF-animaatiot automaattisesti diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 7d2fe2c5fa..774c5f5025 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -3,7 +3,7 @@ fr: simple_form: hints: account_alias: - acct: Spécifiez l’identifiant@domaine du compte que vous souhaitez migrer + acct: Spécifiez l’identifiant@domaine du compte que vous souhaitez faire migrer account_migration: acct: Spécifiez l’identifiant@domaine du compte vers lequel vous souhaitez déménager account_warning_preset: @@ -12,7 +12,7 @@ fr: admin_account_action: include_statuses: L’utilisateur·rice verra quels messages sont la source de l’action de modération ou de l’avertissement send_email_notification: L’utilisateur recevra une explication de ce qu’il s’est passé avec son compte - text_html: Optionnel. Vous pouvez utilisez la syntaxe des messages. Vous pouvez ajouter des modèles d’avertissement pour économiser du temps + text_html: Facultatif. Vous pouvez utiliser la syntaxe des publications. Vous pouvez ajouter des présélections d'attention pour gagner du temps type_html: Choisir que faire avec %{acct} types: disable: Empêcher l’utilisateur·rice d’utiliser son compte, mais ne pas supprimer ou masquer son contenu. @@ -20,29 +20,29 @@ fr: sensitive: Forcer toutes les pièces jointes de cet·te utilisateur·rice à être signalées comme sensibles. silence: Empêcher l’utilisateur·rice de poster avec une visibilité publique, cacher ses messages et ses notifications aux personnes qui ne les suivent pas. suspend: Empêcher toute interaction depuis ou vers ce compte et supprimer son contenu. Réversible dans les 30 jours. - warning_preset_id: Optionnel. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection + warning_preset_id: Facultatif. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection announcement: - all_day: Si coché, seules les dates de l’intervalle de temps seront affichées - ends_at: Optionnel. L’annonce sera automatiquement dépubliée à ce moment + all_day: Coché, seules les dates de l’intervalle de temps seront affichées + ends_at: Facultatif. La fin de l'annonce surviendra automatiquement à ce moment scheduled_at: Laisser vide pour publier l’annonce immédiatement - starts_at: Optionnel. Si votre annonce est liée à une période spécifique + starts_at: Facultatif. Si votre annonce est liée à une période spécifique text: Vous pouvez utiliser la syntaxe des messages. Veuillez prendre en compte l’espace que l'annonce prendra sur l’écran de l'utilisateur·rice appeal: text: Vous ne pouvez faire appel d'une sanction qu'une seule fois defaults: autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement avatar: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px - bot: Ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé + bot: Signale aux autres que ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé context: Un ou plusieurs contextes où le filtre devrait s’appliquer - current_password: Pour des raisons de sécurité, veuillez saisir le mot de passe du compte courant - current_username: Pour confirmer, veuillez saisir le nom d'utilisateur du compte courant - digest: Uniquement envoyé après une longue période d’inactivité et uniquement si vous avez reçu des messages personnels pendant votre absence - discoverable: Permettre à votre compte d’être découvert par des inconnus par le biais de recommandations, de tendances et d’autres fonctionnalités + current_password: Par mesure de sécurité, veuillez saisir le mot de passe de ce compte + current_username: Pour confirmer, veuillez saisir le nom d'utilisateur de ce compte + digest: Uniquement envoyé après une longue période d’inactivité en cas de messages personnels reçus pendant votre absence + discoverable: Permet à votre compte d’être découvert par des inconnus par le biais de recommandations, de tendances et autres fonctionnalités email: Vous recevrez un courriel de confirmation fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil header: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px - inbox_url: Copiez l’URL depuis la page d’accueil du relais que vous souhaitez utiliser - irreversible: Les messages filtrés disparaîtront pour toujours, même si le filtre est supprimé plus tard + inbox_url: Copiez l’URL depuis la page d’accueil du relai que vous souhaitez utiliser + irreversible: Les messages filtrés disparaîtront irrévocablement, même si le filtre est supprimé plus tard locale: La langue de l’interface, des courriels et des notifications locked: Nécessite que vous approuviez manuellement chaque abonné·e password: Utilisez au moins 8 caractères @@ -67,12 +67,16 @@ fr: domain: Cela peut être le nom de domaine qui apparaît dans l'adresse courriel ou l'enregistrement MX qu'il utilise. Une vérification sera faite à l'inscription. with_dns_records: Une tentative de résolution des enregistrements DNS du domaine donné sera effectuée et les résultats seront également mis sur liste noire featured_tag: - name: 'Vous pourriez vouloir utiliser l’un d’entre eux :' + name: 'Voici quelques hashtags que vous avez utilisés récemment :' filters: action: Choisir l'action à effectuer quand un message correspond au filtre actions: hide: Cacher complètement le contenu filtré, faire comme s'il n'existait pas warn: Cacher le contenu filtré derrière un avertissement mentionnant le nom du filtre + form_admin_settings: + closed_registrations_message: Affiché lorsque les inscriptions sont fermées + site_contact_username: Comment les gens peuvent vous conracter sur Mastodon. + theme: Thème que verront les utilisateur·rice·s déconnecté·e·s ainsi que les nouveaux·elles utilisateur·rice·s. form_challenge: current_password: Vous entrez une zone sécurisée imports: @@ -214,6 +218,8 @@ fr: media_cache_retention_period: Durée de rétention des médias dans le cache profile_directory: Activer l’annuaire des profils registrations_mode: Qui peut s’inscrire + require_invite_text: Exiger une raison pour s’inscrire + show_domain_blocks_rationale: Montrer pourquoi les domaines ont été bloqués site_extended_description: Description étendue site_short_description: Description du serveur site_terms: Politique de confidentialité diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 5a23f5f851..0f4528af87 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -25,7 +25,7 @@ gd: all_day: Nuair a bhios cromag ris, cha nochd ach cinn-latha na rainse-ama ends_at: Roghainneil. Thèid am brath-fios a neo-fhoillseachadh gu fèin-obrachail aig an àm ud scheduled_at: Fàg seo bàn airson am brath-fios fhoillseachadh sa bhad - starts_at: Roghainnean. Cleachd seo airson am brath-fios a chuingeachadh rè ama shònraichte + starts_at: Roghainneil. Cleachd seo airson am brath-fios a chuingeachadh rè ama shònraichte text: "’S urrainn dhut co-chàradh puist a chleachdadh. Thoir an aire air am meud a chaitheas am brath-fios air sgrìn an luchd-chleachdaidh" appeal: text: Chan urrainn dhut ath-thagradh a dhèanamh air rabhadh ach aon turas @@ -66,8 +66,6 @@ gd: email_domain_block: domain: Seo ainm na h-àrainne a nochdas san t-seòladh puist-d no sa chlàr MX a chleachdas e. Thèid an dearbhadh aig àm a’ chlàraidh. with_dns_records: Thèid oidhirp a dhèanamh air fuasgladh clàran DNS na h-àrainne a chaidh a thoirt seachad agus thèid na toraidhean a bhacadh cuideachd - featured_tag: - name: 'Mholamaid fear dhe na tagaichean seo:' filters: action: Tagh na thachras nuair a bhios post a’ maidseadh na criathraige actions: diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index d351ff4127..9aa9c57459 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -66,8 +66,6 @@ gl: email_domain_block: domain: Este pode ser o nome de dominio que aparece no enderezo de email ou o rexistro MX que utiliza. Será comprobado no momento do rexistro. with_dns_records: Vaise facer un intento de resolver os rexistros DNS proporcionados e os resultados tamén irán a lista de bloqueo - featured_tag: - name: 'Poderías usar algún destos:' filters: action: Elixe a acción a realizar cando algunha publicación coincida co filtro actions: diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 22b5d84807..e3dc997616 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -66,8 +66,6 @@ he: email_domain_block: domain: זה יכול להיות שם הדומיין המופיע בכתובת הדוא"ל או רשומת ה-MX בה הוא משתמש. הם ייבדקו בהרשמה. with_dns_records: ייעשה נסיון למצוא את רשומות ה-DNS של דומיין נתון והתוצאות ייחסמו גם הן - featured_tag: - name: 'אולי תרצה/י להשתמש באחד מאלה:' filters: action: בחרו איזו פעולה לבצע כאשר פוסט מתאים למסנן actions: @@ -154,7 +152,7 @@ he: email: כתובת דוא"ל expires_in: תפוגה לאחר fields: מטא-נתונים על הפרופיל - header: ראשה + header: כותרת honeypot: "%{label} (לא למלא)" inbox_url: קישורית לתיבת ממסר irreversible: הסרה במקום הסתרה diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index d39f8fe091..be1ba159f3 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -67,7 +67,7 @@ hu: domain: Ez lehet az e-mail címben szereplő domain név vagy az MX rekord, melyet ez használ. Ezeket feliratkozáskor ellenőrizzük. with_dns_records: Megpróbáljuk a megadott domain DNS rekordjait lekérni, és az eredményeket hozzáadjuk a tiltólistához featured_tag: - name: 'Ezeket esetleg használhatod:' + name: 'Itt vannak azok a hashtagek, melyeket legutóbb használtál:' filters: action: A végrehajtandó műveletet, ha a bejegyzés megfelel a szűrőnek actions: @@ -75,10 +75,21 @@ hu: warn: A szűrt tartalom a szűrő címét említő figyelmeztetés mögé rejtése form_admin_settings: backups_retention_period: Az előállított felhasználói archívumok megtartása a megadott napokig. + bootstrap_timeline_accounts: Ezek a fiókok ki lesznek tűzve az új felhasználók követési javaslatainak élére. + closed_registrations_message: Akkor jelenik meg, amikor a regisztráció le van zárva content_cache_retention_period: A más kiszolgálókról származó bejegyzések megadott számú nap után törölve lesznek, ha pozitív értékre van állítva. Ez lehet, hogy nem fordítható vissza. + custom_css: A Mastodon webes verziójában használhatsz egyedi stílusokat. + mascot: Felülvágja a haladó webes felületen található illusztrációt. media_cache_retention_period: A letöltött médiafájlok megadott számú nap után törölve lesznek, ha pozitív értékre van állítva, és igény szerint újból le lesznek töltve. + profile_directory: A profilok jegyzéke minden olyan felhasználót felsorol, akik engedélyezték a felfedezhetőségüket. + require_invite_text: Ha a regisztrációhoz manuális jóváhagyásra van szükség, akkor a „Miért akarsz csatlakozni?” válasz kitöltése legyen kötelező, és ne opcionális + site_contact_email: Hogyan érhetnek el jogi vagy támogatási kérésekkel. + site_contact_username: Hogyan érhetnek el Mastodonon. + site_extended_description: Bármilyen egyéb információ, mely hasznos lehet a látogatóid vagy felhasználóid számára. Markdown szintaxis használható. site_short_description: Rövid leírás, amely segíthet a kiszolgálód egyedi azonosításában. Ki futtatja, kinek készült? + site_terms: Használd a saját adatvédelmi irányelveidet, vagy hagyd üresen az alapértelmezett használatához. Markdown szintaxis használható. site_title: Hogyan hivatkozhatnak mások a kiszolgálódra a domain nevén kívül. + theme: A téma, melyet a kijelentkezett látogatók és az új felhasználók látnak. thumbnail: Egy durván 2:1 arányú kép, amely a kiszolgálóinformációk mellett jelenik meg. timeline_preview: A kijelentkezett látogatók továbbra is böngészhetik a kiszolgáló legfrissebb nyilvános bejegyzéseit. trendable_by_default: Kézi felülvizsgálat kihagyása a felkapott tartalmaknál. Az egyes elemek utólag távolíthatók el a trendek közül. @@ -219,6 +230,7 @@ hu: warn: Elrejtés figyelmeztetéssel form_admin_settings: backups_retention_period: Felhasználói archívum megtartási időszaka + bootstrap_timeline_accounts: Mindig javasoljuk ezeket a fiókokat az új felhasználók számára closed_registrations_message: A feliratkozáskor megjelenő egyéni üzenet nem érhető el content_cache_retention_period: Tartalom-gyorsítótár megtartási időszaka custom_css: Egyéni CSS @@ -229,6 +241,8 @@ hu: require_invite_text: Indok megkövetelése a csatlakozáshoz show_domain_blocks: Domain tiltások megjelenitése show_domain_blocks_rationale: A domainok blokkolásának okának megjelenítése + site_contact_email: Kapcsolattartó e-mail + site_contact_username: Kapcsolattartó felhasználóneve site_extended_description: Bővített leírás site_short_description: Kiszolgáló leírása site_terms: Adatvédelmi szabályzat diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml index 94b0096fa5..b955021550 100644 --- a/config/locales/simple_form.hy.yml +++ b/config/locales/simple_form.hy.yml @@ -55,8 +55,6 @@ hy: domain: Այս տիրոյթը կարող է ստանալ տուեալներ այս սպասարկչից եւ ստացուող տուեալները կարող են օգտագործուել եւ պահուել email_domain_block: with_dns_records: Այս տիրոյթի DNS գրառումները կը տարրալուծուեն եւ արդիւնքները նոյնպէս կուղարկուեն սեւ ցուցակ - featured_tag: - name: Գուցէ ցանկանաս օգտագործել սրանցից մէկը․ form_challenge: current_password: Մուտք ես գործել ապահով տարածք imports: diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index 1637b7b042..196222e22a 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -66,8 +66,6 @@ id: email_domain_block: domain: Ini bisa berupa nama domain yang tampil di alamat email atau data MX yang memakainya. Mereka akan diperiksa saat mendaftar. with_dns_records: Usaha untuk menyelesaikan data DNS domain yang diberikan akan dilakukan dan hasilnya akan masuk daftar hitam - featured_tag: - name: 'Anda mungkin ingin pakai salah satu dari ini:' filters: action: Pilih tindakan apa yang dilakukan ketika sebuah kiriman cocok dengan saringan actions: diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index 7cde207ac6..42c95a9aee 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -66,8 +66,6 @@ io: email_domain_block: domain: Co povas esas domennomo quo montresas che retposto o registrajo MX quon ol uzas. Oli kontrolesos kande registro. with_dns_records: Probo di rezolvar registri DNS di la domeno agesos e rezulti anke preventesos - featured_tag: - name: 'Vu forsan volas uzar 1 de co:' filters: action: Selektez ago kande posto parigas filtrilo actions: diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 50019ecb67..64cc2e6024 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -67,7 +67,7 @@ is: domain: Þetta getur verið lénið sem birtist í tölvupóstfanginu eða MX-færslunni sem það notar. Þetta verður yfirfarið við nýskráningu. with_dns_records: Tilraun verður gerð til að leysa DNS-færslur uppgefins léns og munu niðurstöðurnar einnig verða útilokaðar featured_tag: - name: 'Þú gætir viljað nota eitt af þessum:' + name: 'Hér eru nokkur af þeim myllumerkjum sem þú hefur notað nýlega:' filters: action: Veldu hvaða aðgerð á að framkvæma þegar færsla samsvarar síunni actions: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 408eeedd29..dd9207b44b 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -67,7 +67,7 @@ it: domain: Questo può essere il nome di dominio che appare nell'indirizzo e-mail o nel record MX che utilizza. Verranno controllati al momento dell'iscrizione. with_dns_records: Sarà effettuato un tentativo di risolvere i record DNS del dominio in questione e i risultati saranno inseriti anche nella blacklist featured_tag: - name: 'Eccone alcuni che potresti usare:' + name: 'Ecco alcuni degli hashtag che hai usato di più recentemente:' filters: action: Scegli quale azione eseguire quando un post corrisponde al filtro actions: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index b948217fe8..deb85676ae 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -67,11 +67,12 @@ ja: domain: 電子メールアドレスのドメイン名、または使用されるMXレコードを指定できます。新規登録時にチェックされます。 with_dns_records: 指定したドメインのDNSレコードを取得し、その結果もメールドメインブロックに登録されます featured_tag: - name: 'これらを使うといいかもしれません:' + name: '最近使用したハッシュタグ:' filters: action: 投稿がフィルタに一致したときに実行するアクションを選択します actions: hide: フィルタリングされたコンテンツを完全に隠し、存在しないかのようにします + warn: フィルタリングされたコンテンツを、フィルタータイトルの警告の後ろに隠します。 form_admin_settings: backups_retention_period: 生成されたユーザーのアーカイブを指定した日数の間保持します。 bootstrap_timeline_accounts: これらのアカウントは、新しいユーザーのフォロー推奨の一番上にピン留めされます。 @@ -80,13 +81,17 @@ ja: custom_css: ウェブ版の Mastodon でカスタムスタイルを適用できます。 mascot: 上級者向けWebインターフェースのイラストを上書きします。 media_cache_retention_period: 正の値に設定されている場合、ダウンロードされたメディアファイルは指定された日数の後に削除され、リクエストに応じて再ダウンロードされます。 - profile_directory: プロファイルディレクトリには、検出可能にオプトイン設定したすべてのユーザーが一覧に表示されます。 + profile_directory: ディレクトリには、掲載する設定をしたすべてのユーザーが一覧表示されます。 require_invite_text: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする site_contact_email: 法律またはサポートに関する問い合わせ先 site_contact_username: マストドンでの連絡方法 site_extended_description: 訪問者やユーザーに役立つかもしれない任意の追加情報。Mastodon 構文が使用できます。 site_short_description: 誰が運営しているのか、誰に向けたものなのかなど、サーバーを特定する短い説明。 site_terms: 独自のプライバシーポリシーを使用するか、空白にしてデフォルトのプライバシーポリシーを使用します。Mastodon 構文が使用できます。 + site_title: ドメイン名以外でサーバーを参照する方法です。 + theme: ログインしていない人と新規ユーザーに表示されるテーマ。 + thumbnail: サーバー情報と共に表示される、アスペクト比が約 2:1 の画像。 + timeline_preview: ログアウトした人は、サーバー上で利用可能な最新の公開投稿を閲覧することができます。 trendable_by_default: トレンドコンテンツの手動レビューをスキップする。個々のコンテンツは後でトレンドから削除できます。 trends: トレンドは、サーバー上でどの投稿、ハッシュタグ、ニュース記事が人気を集めているかを示します。 form_challenge: @@ -119,6 +124,7 @@ ja: highlighted: これによりロールが公開されます。 name: ロールのバッジを表示する際の表示名 permissions_as_keys: このロールを持つユーザーは次の機能にアクセスできます + position: 特定の状況では、より高いロールが競合の解決を決定します。特定のアクションは優先順位が低いロールでのみ実行できます。 webhook: events: 送信するイベントを選択 url: イベントの送信先 @@ -230,9 +236,9 @@ ja: custom_css: カスタムCSS mascot: カスタムマスコット(レガシー) media_cache_retention_period: メディアキャッシュの保持期間 - profile_directory: プロファイル ディレクトリを有効設定にする - registrations_mode: 新規登録が可能な方 - require_invite_text: 参加する理由を提出してください。 + profile_directory: ディレクトリを有効にする + registrations_mode: 新規登録が可能な人 + require_invite_text: 意気込み理由の入力を必須にする。 show_domain_blocks: ドメインブロックを表示 show_domain_blocks_rationale: ドメインがブロックされた理由を表示 site_contact_email: 連絡先メールアドレス diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index 3803560596..ae18d2a424 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -21,8 +21,6 @@ kab: setting_display_media_show_all: Ffer yal tikkelt teywalt yettwacreḍ d tanafrit setting_hide_network: Wid i teṭṭafaṛeḍ d wid i k-yeṭṭafaṛen ur d-ttwaseknen ara deg umaγnu-inek username: Isem-ik n umseqdac ad yili d ayiwen, ulac am netta deg %{domain} - featured_tag: - name: 'Ahat ad tebγuḍ ad tesqedceḍ yiwen gar-asen:' imports: data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun ip_block: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index f64f3d5488..d2d244b531 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -67,7 +67,7 @@ ko: domain: 이메일에 표시되는 도메인 네임이거나 그것이 사용하는 MX 레코드일 수 있습니다. 가입시에 검증됩니다. with_dns_records: 입력한 도메인의 DNS를 조회를 시도하여 나온 값도 차단됩니다 featured_tag: - name: '이것들을 사용하면 좋을 것 같습니다:' + name: '이것들은 최근에 많이 쓰인 해시태그들입니다:' filters: action: 게시물이 필터에 걸러질 때 어떤 동작을 수행할 지 고르세요 actions: @@ -88,7 +88,11 @@ ko: site_extended_description: 방문자와 사용자에게 유용할 수 있는 추가정보들. 마크다운 문법을 사용할 수 있습니다. site_short_description: 이 서버를 특별하게 구분할 수 있는 짧은 설명. 누가 운영하고, 누구를 위한 것인가요? site_terms: 자신만의 개인정보 정책을 사용하거나 비워두는 것으로 기본값을 사용할 수 있습니다. 마크다운 문법을 사용할 수 있습니다. + site_title: 사람들이 이 서버를 도메인 네임 대신에 부를 이름. theme: 로그인 하지 않은 사용자나 새로운 사용자가 보게 될 테마. + thumbnail: 대략 2:1 비율의 이미지가 서버 정보 옆에 표시됩니다. + timeline_preview: 로그아웃 한 사용자들이 이 서버에 있는 최신 공개글들을 볼 수 있게 합니다. + trendable_by_default: 유행하는 콘텐츠에 대한 수동 승인을 건너뜁니다. 이 설정이 적용된 이후에도 각각의 항목들을 삭제할 수 있습니다. form_challenge: current_password: 당신은 보안 구역에 진입하고 있습니다 imports: diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 678d919334..e85d156bf1 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -69,7 +69,7 @@ ku: domain: Ev dikare bibe navê navparek ku di navnîşana e-nameyê de an tomara MX ya ku ew bi kar tîne de xuya dike. Ew ê di dema tomarkirinê de werin kontrolkirin. with_dns_records: Hewl tê dayîn ku tomarên DNSê yên li qada jê re hatine dayîn were çareserkirin û encamên wê jî were astengkirin featured_tag: - name: 'Belkî tu yekê bi kar bînî çi van:' + name: 'Li virê çend haştag hene ku te demên dawî bi kar anîne:' filters: action: Hilbijêre ku dema şandiyek bi parzûnê re lihevhatî be bila kîjan çalakî were pêkanîn actions: @@ -84,6 +84,12 @@ ku: mascot: Îlustrasyona navrûyê webê yê pêşketî bêbandor dike. media_cache_retention_period: Pelên medyayê yên daxistî wê piştî çend rojên diyarkirî dema ku li ser nirxek erênî were danîn werin jêbirin, û li gorî daxwazê ​​ji nû ve werin daxistin. profile_directory: Pelrêça profîlê hemû bikarhênerên keşfbûnê hilbijartine lîste dike. + require_invite_text: Heke ji bo qeydkirinê pejirandina bi destan hewce bike, Nivîsa "Hûn çima dixwazin tevlê bibin?" li şûna vebijarkî bike mecbûrî + site_contact_email: Mirov dikarin ji bo pirsên qanûnî yan jî yên piştgiriyê çawa xwe digihînin te. + site_contact_username: Mirov dikarin li ser Mastodonê xwe çawa xwe bigihînin te. + site_extended_description: Her zanyariyek daxwazî dibe ku bibe alîkar bo mêvan û bikarhêneran re. Û dikarin bi hevoksaziya Markdown re werin sazkirin. + site_short_description: Danasîneke kurt ji bo ku bibe alîkar ku rajekara te ya bêhempa werê naskirin. Kî bi rê ve dibe, ji bo kê ye? + site_terms: Politîka taybetiyê ya xwe bi kar bîne an jî vala bihêle da ku berdest werê bikaranîn. Dikare bi hevoksaziya Markdown ve werê sazkirin. form_challenge: current_password: Tu dikevî qadeke ewledar imports: @@ -228,6 +234,9 @@ ku: registrations_mode: Kî dikare tomar bibe require_invite_text: Ji bo tevlêbûnê sedemek pêdivî ye show_domain_blocks: Astengkirinên navperê nîşan bide + site_contact_email: Bi me re biaxive bi riya e-name + site_contact_username: Bi bikarhêner re têkeve têkiliyê + site_extended_description: Danasîna berferhkirî site_short_description: Danasîna rajekar site_terms: Politîka taybetiyê site_title: Navê rajekar diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 4529d2c5da..7f31232a11 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -67,7 +67,7 @@ lv: domain: Tas var būt domēna nosaukums, kas tiek parādīts e-pasta adresē vai izmantotajā MX ierakstā. Tie tiks pārbaudīti reģistrācijas laikā. with_dns_records: Tiks mēģināts atrisināt dotā domēna DNS ierakstus, un rezultāti arī tiks bloķēti featured_tag: - name: 'Iespējams, vēlēsies izmantot kādu no šīm:' + name: 'Šeit ir daži no pēdējiem lietotajiem tēmturiem:' filters: action: Izvēlies, kuru darbību veikt, ja ziņa atbilst filtram actions: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 5a73d00051..0ee48f6a0a 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -66,7 +66,7 @@ nl: email_domain_block: with_dns_records: Er wordt een poging gewaagd om de desbetreffende DNS-records op te zoeken, waarna de resultaten ook worden geblokkeerd featured_tag: - name: 'Je wilt misschien een van deze gebruiken:' + name: 'Hier zijn enkele van de hashtags die je onlangs hebt gebruikt:' filters: action: Kies welke acties uitgevoerd moeten wanneer een bericht overeenkomt met het filter actions: @@ -77,15 +77,17 @@ nl: bootstrap_timeline_accounts: Deze accounts worden bovenaan de aanbevelingen aan nieuwe gebruikers getoond. Meerdere gebruikersnamen met komma's scheiden. closed_registrations_message: Weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld content_cache_retention_period: 'Berichten van andere servers worden na het opgegeven aantal dagen verwijderd. Let op: Dit is onomkeerbaar.' - custom_css: Je kunt aangepaste stijlen toepassen op de webversie van Mastodon. - mascot: Overschrijft de illustratie in de geavanceerde webinterface. + custom_css: Je kunt aangepaste CSS toepassen op de webversie van deze Mastodon-server. + mascot: Overschrijft de illustratie in de geavanceerde webomgeving. media_cache_retention_period: Mediabestanden die van andere servers zijn gedownload worden na het opgegeven aantal dagen verwijderd en worden op verzoek opnieuw gedownload. profile_directory: De gebruikersgids bevat een lijst van alle gebruikers die ervoor gekozen hebben om ontdekt te kunnen worden. require_invite_text: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd - site_contact_email: Hoe mensen je kunnen bereiken voor juridische of ondersteunende onderzoeken. - site_contact_username: Hoe mensen je kunnen bereiken op Mastodon. - site_title: Hoe mensen naar uw server kunnen verwijzen naast de domeinnaam. + site_contact_email: Hoe mensen je kunnen bereiken voor juridische vragen of support. + site_contact_username: Hoe mensen je op Mastodon kunnen bereiken. + site_terms: Gebruik uw eigen privacybeleid of laat leeg om de standaardwaarde te gebruiken. Kan worden gestructureerd met Markdown syntax. + site_title: Hoe mensen buiten de domeinnaam naar je server kunnen verwijzen. theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien. + thumbnail: Een afbeelding van ongeveer een verhouding van 2:1 die naast jouw serverinformatie wordt getoond. timeline_preview: Bezoekers (die niet zijn ingelogd) kunnen de meest recente, op de server aanwezige openbare berichten bekijken. trendable_by_default: Handmatige beoordeling van trends overslaan. Individuele items kunnen later alsnog worden afgekeurd. trends: Trends laten zien welke berichten, hashtags en nieuwsberichten op jouw server aan populariteit winnen. @@ -115,6 +117,7 @@ nl: chosen_languages: Alleen berichten in de aangevinkte talen worden op de openbare tijdlijnen getoond role: De rol bepaalt welke rechten een gebruiker heeft user_role: + color: Kleur die gebruikt wordt voor de rol in de UI, als RGB in hexadecimale formaat highlighted: Dit maakt de rol openbaar zichtbaar name: Openbare naam van de rol, wanneer de rol als badge op profielpagina's wordt getoond permissions_as_keys: Gebruikers met deze rol hebben toegang tot... diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 71734509bc..a38b1e67ce 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -62,7 +62,7 @@ nn: email_domain_block: with_dns_records: Eit forsøk på å løysa gjeve domene som DNS-data vil vera gjord og resultata vert svartelista featured_tag: - name: 'Kanskje du vil nytta ein av desse:' + name: 'Her er nokre av dei mest brukte hashtaggane dine i det siste:' form_challenge: current_password: Du går inn i eit trygt område imports: diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 7f1b8cbac3..5196fb2c22 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -61,8 +61,6 @@ domain: Dette domenet vil være i stand til å hente data fra denne serveren og dets innkommende data vil bli prosessert og lagret email_domain_block: with_dns_records: Et forsøk på å løse det gitte domenets DNS-poster vil bli gjort, og resultatene vil også bli svartelistet - featured_tag: - name: 'Du vil kanskje ønske å bruke en av disse:' form_challenge: current_password: Du går inn i et sikkert område imports: diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index 0ae0bb3659..0f9abd7bfa 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -55,8 +55,6 @@ oc: domain: Aqueste domeni poirà recuperar las donadas d’aqueste servidor estant e las donadas venent d’aqueste domeni seràn tractadas e gardadas email_domain_block: with_dns_records: Un ensag de resolucion dels enregistraments DNS del domeni donat serà realizat e los resultats seràn tanben meses en lista negra - featured_tag: - name: 'Benlèu que volètz utilizar una d’aquestas causas :' form_challenge: current_password: Dintratz dins una zòna segura imports: diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 4d44bbe640..b660f4d89e 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -30,7 +30,7 @@ pl: appeal: text: Możesz wysłać odwołanie do ostrzeżenia tylko raz defaults: - autofollow: Osoby, które zarejestrują się z Twojego zaproszenia automatycznie zaczną Cię śledzić + autofollow: Osoby, które zarejestrują się z Twojego zaproszenia automatycznie zaczną Cię obserwować avatar: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px bot: To konto wykonuje głównie zautomatyzowane działania i może nie być monitorowane context: Jedno lub wiele miejsc, w których filtr zostanie zastosowany @@ -44,7 +44,7 @@ pl: inbox_url: Skopiuj adres ze strony głównej przekaźnika, którego chcesz użyć irreversible: Filtrowane wpisy znikną bezpowrotnie, nawet gdy filtr zostanie usunięty locale: Język interfejsu, wiadomości e-mail i powiadomieniach push - locked: Musisz akceptować prośby o śledzenie + locked: Musisz akceptować prośby o możliwość obserwacji password: Użyj co najmniej 8 znaków phrase: Zostanie wykryte nawet, gdy znajduje się za ostrzeżeniem o zawartości scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów. @@ -54,7 +54,7 @@ pl: setting_display_media_default: Ukrywaj zawartość multimedialną oznaczoną jako wrażliwa setting_display_media_hide_all: Zawsze ukrywaj zawartość multimedialną setting_display_media_show_all: Zawsze pokazuj zawartość multimedialną - setting_hide_network: Informacje o tym, kto Cię śledzi i kogo śledzisz nie będą widoczne + setting_hide_network: Informacje o tym, kto Cię obserwuje i kogo obserwujesz nie będą widoczne setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów setting_show_application: W informacjach o wpisie będzie widoczna informacja o aplikacji, z której został wysłany setting_use_blurhash: Gradienty są oparte na kolorach ukrywanej zawartości, ale uniewidaczniają wszystkie szczegóły @@ -67,7 +67,7 @@ pl: domain: To może być nazwa domeny, która pojawia się w adresie e-mail lub rekordzie MX, którego używa. Zostaną one sprawdzone przy rejestracji. with_dns_records: Zostanie wykonana próba rozwiązania rekordów DNS podanej domeny, a wyniki również zostaną dodane na czarną listę featured_tag: - name: 'Sugerujemy użycie jednego z następujących:' + name: 'Oto niektóre hasztagi, których były ostatnio przez ciebie użyte:' filters: action: Wybierz akcję do wykonania, gdy post pasuje do filtra actions: @@ -75,7 +75,7 @@ pl: warn: Ukryj filtrowaną zawartość za ostrzeżeniem wskazującym tytuł filtra form_admin_settings: backups_retention_period: Zachowaj wygenerowane archiwa użytkownika przez określoną liczbę dni. - bootstrap_timeline_accounts: Te konta zostaną przypięte na górze rekomendacji śledzenia nowych użytkowników. + bootstrap_timeline_accounts: Te konta zostaną przypięte na górze rekomendacji obserwacji nowych użytkowników. closed_registrations_message: Wyświetlane po zamknięciu rejestracji content_cache_retention_period: Posty z innych serwerów zostaną usunięte po określonej liczbie dni, kiedy liczba jest ustawiona na wartość dodatnią. Może to być nieodwracalne. custom_css: Możesz zastosować niestandardowe style w internetowej wersji Mastodon. @@ -161,7 +161,7 @@ pl: appeal: text: Wyjaśnij, dlaczego ta decyzja powinna zostać cofnięta defaults: - autofollow: Zapraszaj do śledzenia swojego konta + autofollow: Zapraszaj do obserwacji swojego konta avatar: Awatar bot: To konto jest prowadzone przez bota chosen_languages: Filtrowanie języków @@ -210,7 +210,7 @@ pl: setting_system_font_ui: Używaj domyślnej czcionki systemu setting_theme: Motyw strony setting_trends: Pokazuj dzisiejsze „Na czasie” - setting_unfollow_modal: Pytaj o potwierdzenie przed cofnięciem śledzenia + setting_unfollow_modal: Pytaj o potwierdzenie przed cofnięciem obserwacji setting_use_blurhash: Pokazuj kolorowe gradienty dla ukrytej zawartości multimedialnej setting_use_pending_items: Tryb spowolniony severity: Priorytet @@ -253,9 +253,9 @@ pl: trendable_by_default: Zezwalaj na trendy bez wcześniejszego przeglądu trends: Włącz trendy interactions: - must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą - must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz - must_be_following_dm: Nie wyświetlaj wiadomości bezpośrednich od osób, których nie śledzisz + must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie obserwują + must_be_following: Nie wyświetlaj powiadomień od osób, których nie obserwujesz + must_be_following_dm: Nie wyświetlaj wiadomości bezpośrednich od osób, których nie obserwujesz invite: comment: Komentarz invite_request: @@ -272,8 +272,8 @@ pl: appeal: Ktoś odwołuje się od decyzji moderatora digest: Wysyłaj podsumowania e-mailem favourite: Powiadamiaj mnie e-mailem, gdy ktoś polubi mój wpis - follow: Powiadamiaj mnie e-mailem, gdy ktoś zacznie mnie śledzić - follow_request: Powiadamiaj mnie e-mailem, gdy ktoś poprosi o pozwolenie na śledzenie mnie + follow: Powiadamiaj mnie e-mailem, gdy ktoś zaobserwuje mnie + follow_request: Powiadamiaj mnie e-mailem, gdy ktoś poprosi o pozwolenie na obserwowanie mnie mention: Powiadamiaj mnie e-mailem, gdy ktoś o mnie wspomni pending_account: Wyślij e-mail kiedy nowe konto potrzebuje recenzji reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index f2b81b9bdb..ce4d0d713a 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -66,8 +66,6 @@ pt-BR: email_domain_block: domain: Este pode ser o nome de domínio que aparece no endereço de e-mail ou no registro MX que ele utiliza. Eles serão verificados após a inscrição. with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra - featured_tag: - name: 'Você pode querer usar um destes:' filters: action: Escolher qual ação executar quando um post corresponder ao filtro actions: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 4fa667dddb..211a2fac4a 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -67,7 +67,7 @@ pt-PT: domain: Este pode ser o nome de domínio que aparece no endereço de e-mail ou o registo MX por ele utilizado. Eles serão verificados aquando da inscrição. with_dns_records: Será feita uma tentativa de resolver os registos DNS do domínio em questão e os resultados também serão colocados na lista negra featured_tag: - name: 'Poderás querer usar um destes:' + name: 'Aqui estão algumas das hashtags que utilizou recentemente:' filters: action: Escolha qual a ação a executar quando uma publicação corresponde ao filtro actions: diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index 1f0fee419f..c7339008a1 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -55,8 +55,6 @@ ro: domain: Acest domeniu va putea prelua date de pe acest server și datele primite de la el vor fi procesate și stocate email_domain_block: with_dns_records: Se va face o încercare de a rezolva înregistrările DNS ale domeniului dat și rezultatele vor fi de asemenea afișate pe lista neagră - featured_tag: - name: 'S-ar putea să vreți să folosiți unul dintre acestea:' form_challenge: current_password: Ați intrat într-o zonă securizată imports: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index bb304a9e46..a941fb354c 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -66,8 +66,6 @@ ru: email_domain_block: domain: Это может быть доменное имя, которое отображается в адресе электронной почты или используемая MX запись. Они будут проверяться при регистрации. with_dns_records: Будет сделана попытка разрешить DNS-записи данного домена и результаты также будут внесены в чёрный список - featured_tag: - name: 'Возможно, вы захотите добавить что-то из этого:' filters: action: Выберите действие, которое нужно выполнить, когда сообщение соответствует фильтру actions: diff --git a/config/locales/simple_form.sc.yml b/config/locales/simple_form.sc.yml index b894bc912d..96c31c3745 100644 --- a/config/locales/simple_form.sc.yml +++ b/config/locales/simple_form.sc.yml @@ -61,8 +61,6 @@ sc: domain: Custu domìniu at a pòdere recuperare datos dae custu serbidore e is datos in intrada dae cue ant a èssere protzessados e archiviados email_domain_block: with_dns_records: S'at a fàghere unu tentativu de risòlvere is registros DNS de su domìniu e fintzas is risultados ant a èssere blocados - featured_tag: - name: 'Forsis boles impreare unu de custos:' form_challenge: current_password: Ses intrende in un'àrea segura imports: diff --git a/config/locales/simple_form.si.yml b/config/locales/simple_form.si.yml index e2ada04aa7..829d42e4c8 100644 --- a/config/locales/simple_form.si.yml +++ b/config/locales/simple_form.si.yml @@ -66,8 +66,6 @@ si: email_domain_block: domain: මෙය විද්‍යුත් තැපැල් ලිපිනයේ හෝ එය භාවිතා කරන MX වාර්තාවේ පෙන්වන ඩොමේන් නාමය විය හැක. ලියාපදිංචි වූ පසු ඒවා පරීක්ෂා කරනු ලැබේ. with_dns_records: ලබා දී ඇති වසමේ DNS වාර්තා විසඳීමට උත්සාහ කරන අතර ප්‍රතිඵල ද අවහිර කරනු ලැබේ - featured_tag: - name: 'ඔබට මේවායින් එකක් භාවිතා කිරීමට අවශ්‍ය විය හැකිය:' filters: action: පළ කිරීමක් පෙරහනට ගැළපෙන විට සිදු කළ යුතු ක්‍රියාව තෝරන්න actions: diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml index bd482f7786..85c47dae98 100644 --- a/config/locales/simple_form.sk.yml +++ b/config/locales/simple_form.sk.yml @@ -46,8 +46,6 @@ sk: whole_word: Ak je kľúčové slovo, alebo fráza poskladaná iba s písmen a čísel, bude použité iba ak sa zhoduje s celým výrazom domain_allow: domain: Táto doména bude schopná získavať dáta z tohto servera, a prichádzajúce dáta ním budú spracovávané a uložené - featured_tag: - name: 'Možno by si chcel/a použiť niektoré z týchto:' form_challenge: current_password: Vstupuješ do zabezpečenej časti imports: diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 51a21ff06c..c7ef18b3ac 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -67,7 +67,7 @@ sl: domain: To je lahko ime domene, ki se pokaže v e-poštnem naslovu, ali zapis MX, ki ga uporablja. Ob prijavi bo preverjeno. with_dns_records: Poskus razrešitve zapisov DNS danih domen bo izveden in rezultati bodo prav tako blokirani featured_tag: - name: 'Morda boste želeli uporabiti eno od teh:' + name: 'Tukaj je nekaj ključnikov, ki ste jih nedavno uporabili:' filters: action: Izberite, kako naj se program vede, ko se objava sklada s filtrom actions: diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index bc0890e0d6..24212621b6 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -66,8 +66,6 @@ sq: email_domain_block: domain: Ky mund të jetë emri i përkatësisë që shfaqet te adresa email, ose zëri MX që përdor. Do të kontrollohen gjatë regjistrimit. with_dns_records: Do të bëhet një përpjekje për ftillimin e zërave DNS të përkatësisë së dhënë dhe do të futen në listë bllokimesh edhe përfundimet - featured_tag: - name: 'Mund të doni të përdorni një nga këto:' filters: action: Zgjidhni cili veprim të kryhet, kur një postim ka përputhje me një filtër actions: @@ -75,8 +73,25 @@ sq: warn: Fshihe lëndën e filtruar pas një sinjalizimi që përmend titullin e filtrit form_admin_settings: backups_retention_period: Mbaji arkivat e prodhuara të përdoruesve për aq ditë sa numri i dhënë. + bootstrap_timeline_accounts: Këto llogari do të fiksohen në krye të rekomandimeve për ndjekje nga përdorues të rinj. + closed_registrations_message: Shfaqur kur mbyllen dritare regjistrimesh content_cache_retention_period: Postimet prej shërbyesve të tjerë do të fshihen pas numrit të dhënë të ditëve, kur këtij i jepet një vlerë pozitive. Kjo mund të jetë e pakthyeshme. + custom_css: Stile vetjakë mund të aplikoni në versionin web të Mastodon-it. + mascot: Anashkalon ilustrimin te ndërfaqja web e thelluar. media_cache_retention_period: Kartelat media të shkarkuara do të fshihen pas numrit të dhënë të ditëve, kur këtij i jepet një vlerë pozitive dhe rishkarkohen po u kërkua. + profile_directory: Drejtoria e profileve paraqet krejt përdoruesit që kanë zgjedhur të jenë të zbulueshëm. + require_invite_text: Kur regjistrimet lypin miratim dorazi, bëje tekstin “Përse doni të bëheni pjesë?” të detyrueshëm, në vend se opsional + site_contact_email: Si mund të lidhen me ju njerëzit, për çështje ligjore, ose për asistencë. + site_contact_username: Si mund të lidhen njerëzit me ju në Mastodon. + site_extended_description: Çfarëdo hollësie shtesë që mund të jetë e dobishme për vizitorët dhe përdoruesit tuaj. Mund të hartohet me sintaksë Markdown. + site_short_description: Një përshkrim i shkurtër për të ndihmuar identifikimin unik të shërbyesit tuaj. Kush e mban në punë, për kë është? + site_terms: Përdorni rregullat tuaja të privatësisë, ose lëreni të zbrazët që të përdoren ato parazgjedhje. Mund të hartohet me sintaksë Markdown. + site_title: Si mund t’i referohen njerëzit shërbyesit tuaj, përveç emrit të tij të përkatësisë. + theme: Temë që shohin vizitorët që kanë bërë daljen dhe përdorues të rinj. + thumbnail: Një figurë afërsisht 2:1 e shfaqur tok me hollësi mbi shërbyesin tuaj. + timeline_preview: Vizitorët që kanë bërë daljen do të jenë në gjendje të shfletojnë psotimet më të freskëta publike të passhme në shërbyes. + trendable_by_default: Anashkalo shqyrtim dorazi lënde në modë. Gjëra individuale prapë mund të hiqen nga lëndë në modë pas publikimi. + trends: Gjërat në modë shfaqin cilat postime, hashtagë dhe histori të reja po tërheqin vëmendjen në shërbyesin tuaj. form_challenge: current_password: Po hyni në një zonë të sigurt imports: @@ -213,8 +228,28 @@ sq: warn: Fshihe me një sinjalizim form_admin_settings: backups_retention_period: Periudhë mbajtjeje arkivash përdoruesish + bootstrap_timeline_accounts: Rekomandoju përherë këto llogari përdoruesve të rinj + closed_registrations_message: Mesazh vetjak për pamundësi regjistrimesh të reja content_cache_retention_period: Periudhë mbajtjeje lënde fshehtine + custom_css: CSS Vetjake + mascot: Simbol vetjak (e dikurshme) media_cache_retention_period: Periudhë mbajtjeje lënde media + profile_directory: Aktivizo drejtori profilesh + registrations_mode: Kush mund të regjistrohet + require_invite_text: Kërko një arsye për pjesëmarrje + show_domain_blocks: Shfaq bllokime përkatësish + show_domain_blocks_rationale: Shfaq pse janë bllokuar përkatësitë + site_contact_email: Email kontakti + site_contact_username: Emër përdoruesi kontakti + site_extended_description: Përshkrim i zgjeruar + site_short_description: Përshkrim shërbyesi + site_terms: Rregulla Privatësie + site_title: Emër shërbyesi + theme: Temë parazgjedhje + thumbnail: Miniaturë shërbyesi + timeline_preview: Lejo hyrje pa mirëfilltësim te rrjedha kohore publike + trendable_by_default: Lejoni gjëra në modë pa shqyrtim paraprak + trends: Aktivizo gjëra në modë interactions: must_be_follower: Blloko njoftime nga jo-ndjekës must_be_following: Blloko njoftime nga persona që s’i ndiqni diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 282c0ce700..1084309177 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -5,73 +5,129 @@ sv: account_alias: acct: Ange användarnamn@domän för kontot som du vill flytta från account_migration: - acct: Ange användarnamn@domän för kontot du flyttar till + acct: Ange användarnamn@domän för kontot du vill flytta till account_warning_preset: text: Du kan använda inläggssyntax som webbadresser, hashtaggar och omnämnanden title: Valfri. Inte synlig för mottagaren admin_account_action: - include_statuses: Användaren ser de toots som orsakat moderering eller varning - send_email_notification: Användaren kommer att få en förklaring av vad som hände med sitt konto - text_html: Extra. Du kan använda toot syntax. Du kan lägga till förvalda varningar för att spara tid + include_statuses: Användaren ser vilka inlägg som orsakat modereringsåtgärd eller varning + send_email_notification: Användaren kommer få en förklaring på vad som hände med deras konto + text_html: Valfri. Du kan använda inläggssyntax. Du kan lägga till förvalda varningar för att spara tid type_html: Välj vad du vill göra med %{acct} types: - disable: Förhindra användaren från att använda sitt konto, men ta inte bort eller dölj innehållet. - none: Använd det här för att skicka en varning till användaren, utan att trigga någon annan åtgärd. - sensitive: Tvinga denna användares alla mediebilagor att flaggas som känsliga. - warning_preset_id: Extra. Du kan lägga till valfri text i slutet av förinställningen + disable: Förhindra användaren från att använda sitt konto, men radera eller dölj inte innehållet. + none: Använd det här för att skicka en varning till användaren, utan att vidta någon ytterligare åtgärd. + sensitive: Tvinga alla denna användares mediebilagor till att flaggas som känsliga. + silence: Hindra användaren från att kunna göra offentliga inlägg, göm deras inlägg och notiser från folk som inte följer dem. + suspend: Hindra all interaktion från eller till detta konto och radera allt dess innehåll. Går att ångra inom 30 dagar. + warning_preset_id: Valfri. Du kan lägga till anpassad text i slutet av förinställningen announcement: all_day: När det är markerat visas endast datum för tidsintervallet - ends_at: Frivillig. Meddelandet kommer automatiskt att publiceras just nu - scheduled_at: Lämna tomt för att publicera meddelandet omedelbart - starts_at: Valfritt. Om ditt meddelande är bundet till ett visst tidsintervall + ends_at: Valfri. Kungörelsen kommer automatiskt avpubliceras vid denna tidpunkt + scheduled_at: Lämna tomt för att publicera kungörelsen omedelbart + starts_at: Valfritt. Om din kungörelse är bunden till ett visst tidsintervall + text: Du kan använda inläggssyntax. Håll i åtanke hur mycket plats din kungörelse tar upp på användarnas skärmar appeal: text: Du kan endast överklaga en varning en gång defaults: autofollow: Användarkonton som skapas genom din inbjudan kommer automatiskt följa dig avatar: PNG, GIF eller JPG. Högst %{size}. Kommer att skalas ner till %{dimensions}px bot: Detta konto utför huvudsakligen automatiserade åtgärder och kanske inte övervakas + context: Ett eller fler sammanhang där filtret ska tillämpas + current_password: Av säkerhetsskäl krävs lösenordet till det nuvarande kontot + current_username: Ange det nuvarande kontots användarnamn för att bekräfta digest: Skickas endast efter en lång period av inaktivitet och endast om du har fått några personliga meddelanden i din frånvaro + discoverable: Tillåt att ditt konto upptäcks av främlingar genom rekommendationer, trender och andra funktioner email: Du kommer att få ett bekräftelsemeddelande via e-post fields: Du kan ha upp till 4 objekt visade som en tabell på din profil header: PNG, GIF eller JPG. Högst %{size}. Kommer att skalas ner till %{dimensions}px + inbox_url: Kopiera webbadressen från hemsidan av det ombud du vill använda irreversible: Filtrerade inlägg kommer att försvinna oåterkalleligt, även om filter tas bort senare locale: Språket för användargränssnittet, e-postmeddelanden och push-aviseringar locked: Kräver att du manuellt godkänner följare password: Använd minst 8 tecken + phrase: Matchas oavsett användande i text eller innehållsvarning för ett inlägg + scopes: 'Vilka API: er applikationen kommer tillåtas åtkomst till. Om du väljer en omfattning på högstanivån behöver du inte välja individuella sådana.' + setting_aggregate_reblogs: Visa inte nya boostningar för inlägg som nyligen blivit boostade (påverkar endast nymottagna boostningar) + setting_always_send_emails: E-postnotiser kommer vanligtvis inte skickas när du aktivt använder Mastodon + setting_default_sensitive: Känslig media döljs som standard och kan visas med ett klick setting_display_media_default: Dölj media markerad som känslig setting_display_media_hide_all: Dölj alltid all media setting_display_media_show_all: Visa alltid media markerad som känslig setting_hide_network: Vem du följer och vilka som följer dig kommer inte att visas på din profilsida setting_noindex: Påverkar din offentliga profil och statussidor + setting_show_application: Applikationen du använder för att göra inlägg kommer visas i detaljvyn för dina inlägg + setting_use_blurhash: Gradienter är baserade på färgerna av de dolda objekten men fördunklar alla detaljer + setting_use_pending_items: Dölj tidslinjeuppdateringar bakom ett klick istället för att automatiskt bläddra i flödet username: Ditt användarnamn måste vara unikt på %{domain} + whole_word: När sökordet eller frasen endast är alfanumerisk, kommer det endast att tillämpas om det matchar hela ordet + domain_allow: + domain: Denna domän kommer att kunna hämta data från denna server och inkommande data från den kommer att behandlas och lagras email_domain_block: - with_dns_records: Ett försök att lösa den givna domänens DNS-poster kommer att göras och resultaten kommer också att blockeras + domain: Detta kan vara domännamnet som dyker upp i e-postadressen eller MX-posten som används. De kommer kontrolleras vid registrering. + with_dns_records: Ett försök att slå upp den angivna domänens DNS-poster kommer att göras och resultaten kommer också att blockeras featured_tag: - name: 'Du kan vilja använda en av dessa:' + name: 'Här är några av de hashtaggar du använt nyligen:' + filters: + action: Välj vilken åtgärd som ska utföras när ett inlägg matchar filtret + actions: + hide: Dölj det filtrerade innehållet helt (beter sig som om det inte fanns) + warn: Dölj det filtrerade innehållet bakom en varning som visar filtrets rubrik + form_admin_settings: + backups_retention_period: Behåll genererade användararkiv i det angivna antalet dagar. + bootstrap_timeline_accounts: Dessa konton kommer fästas högst upp i nya användares följrekommendationer. + closed_registrations_message: Visas när nyregistreringar är avstängda + content_cache_retention_period: Inlägg från andra servrar kommer att raderas efter det angivna antalet dagar när detta är inställt på ett positivt värde. Åtgärden kan vara oåterkallelig. + custom_css: Du kan använda anpassade stilar på webbversionen av Mastodon. + mascot: Åsidosätter illustrationen i det avancerade webbgränssnittet. + media_cache_retention_period: Nedladdade mediefiler kommer raderas efter det angivna antalet dagar, om inställt till ett positivt värde, och laddas ned på nytt vid behov. + profile_directory: Profilkatalogen visar alla användare som har samtyckt till att bli upptäckbara. + require_invite_text: Gör fältet "Varför vill du gå med?" obligatoriskt när nyregistreringar kräver manuellt godkännande + site_contact_email: Hur människor kan nå dig för juridiska spörsmål eller supportfrågor. + site_contact_username: Hur folk kan nå dig på Mastodon. + site_extended_description: Eventuell övrig information som kan vara användbar för besökare och dina användare. Kan struktureras med Markdown-syntax. + site_short_description: En kort beskrivning för att unikt identifiera din server. Vem är det som driver den, vilka är den till för? + site_terms: Använd din egen sekretesspolicy eller lämna tomt för att använda standardinställningen. Kan struktureras med Markdown-syntax. + site_title: Hur folk kan hänvisa till din server förutom med dess domännamn. + theme: Tema som utloggade besökare och nya användare ser. + thumbnail: En bild i cirka 2:1-proportioner som visas tillsammans med din serverinformation. + timeline_preview: Utloggade besökare kommer kunna bläddra bland de senaste offentliga inläggen som finns på servern. + trendable_by_default: Hoppa över manuell granskning av trendande innehåll. Enskilda objekt kan ändå raderas från trender retroaktivt. + trends: Trender visar vilka inlägg, hashtaggar och nyheter det pratas om på din server. form_challenge: current_password: Du går in i ett säkert område imports: - data: CSV-fil som exporteras från en annan Mastodon-instans + data: CSV-fil som exporterats från en annan Mastodon-server invite_request: - text: Det här kommer att hjälpa oss att granska din ansökan + text: Detta kommer hjälpa oss att granska din ansökan ip_block: comment: Valfritt. Kom ihåg varför du lade till denna regel. expires_in: IP-adresser är en ändlig resurs, de delas ibland och byter ofta händer. Av den här anledningen så rekommenderas inte IP-blockeringar på obestämd tid. - ip: Ange en IPv4 eller IPv6-adress. Du kan blockera hela intervall med hjälp av CIDR-syntax. Var försiktig så att du inte låser ut dig själv! + ip: Ange en IPv4- eller IPv6-adress. Du kan blockera hela intervall med hjälp av CIDR-syntax. Var försiktig så att du inte låser ute dig själv! severities: no_access: Blockera åtkomst till alla resurser - sign_up_block: Nya registreringar inte möjligt + sign_up_block: Nyregistreringar kommer inte vara möjliga sign_up_requires_approval: Nya registreringar kräver ditt godkännande severity: Välj vad som ska hända med förfrågningar från denna IP rule: - text: Beskriv en kort och enkel regel för användare på denna server + text: Beskriv en regel eller ett krav för användare av denna server. Försök hålla det kort och koncist sessions: - otp: 'Ange tvåfaktorkoden genererad från din telefonapp eller använd någon av dina återställningskoder:' - webauthn: Om det är en USB-nyckel se till att sätta in den och, om nödvändigt, knacka på den. + otp: 'Ange tvåfaktorskoden som genererades av din telefonapp, eller använd någon av dina återställningskoder:' + webauthn: Om det är en USB-nyckel se till att sätta in den och, om nödvändigt, tryck på den. tag: - name: Du kan bara ändra bokstävernas typ av variant, till exempel för att göra det mer läsbart + name: Du kan bara ändra skriftläget av bokstäverna, till exempel, för att göra det mer läsbart user: - chosen_languages: När aktiverat så visas bara inlägg i dina valda språk i den offentliga tidslinjen + chosen_languages: Vid aktivering visas bara inlägg på dina valda språk i offentliga tidslinjer + role: Rollen bestämmer vilka behörigheter användaren har + user_role: + color: Färgen som ska användas för rollen i användargränssnittet, som RGB i hex-format + highlighted: Detta gör rollen synlig offentligt + name: Offentligt namn på rollen, om rollen är inställd på att visas som ett emblem + permissions_as_keys: Användare med denna roll kommer ha tillgång till... + position: Högre roll avgör konfliktlösning i vissa situationer. Vissa åtgärder kan endast utföras på roller med lägre prioritet + webhook: + events: Välj händelser att skicka + url: Dit händelser kommer skickas labels: account: fields: @@ -86,15 +142,15 @@ sv: title: Rubrik admin_account_action: include_statuses: Inkludera rapporterade inlägg i e-postmeddelandet - send_email_notification: Meddela användaren via e-post + send_email_notification: Notifiera användaren via e-post text: Anpassad varning type: Åtgärd types: - disable: Inaktivera inloggning - none: Gör ingenting + disable: Frys + none: Skicka en varning sensitive: Känslig silence: Tysta - suspend: Stäng av + suspend: Pausa warning_preset_id: Använd en förinställd varning announcement: all_day: Heldagsevenemang @@ -102,6 +158,8 @@ sv: scheduled_at: Schemalägg publicering starts_at: Evenemangets början text: Kungörelse + appeal: + text: Redogör anledningen till att detta beslut bör upphävas defaults: autofollow: Bjud in till att följa ditt konto avatar: Profilbild @@ -109,35 +167,36 @@ sv: chosen_languages: Filtrera språk confirm_new_password: Bekräfta nytt lösenord confirm_password: Bekräfta lösenord - context: Filter sammanhang + context: Filtrera sammanhang current_password: Nuvarande lösenord data: Data - discoverable: Lista detta konto i katalogen + discoverable: Föreslå konto för andra display_name: Visningsnamn email: E-postadress - expires_in: Förfaller efter + expires_in: Utgår efter fields: Profil-metadata - header: Bakgrundsbild + header: Sidhuvud honeypot: "%{label} (fyll inte i)" - inbox_url: URL för reläinkorg + inbox_url: Webbadress för ombudsinkorg irreversible: Släng istället för att dölja - locale: Språk - locked: Lås konto - max_uses: Högst antal användningar + locale: Språk för gränssnittet + locked: Kräv följförfrågningar + max_uses: Max antal användningar new_password: Nytt lösenord note: Biografi otp_attempt: Tvåfaktorskod password: Lösenord - phrase: Nyckelord eller fras + phrase: Nyckelord eller -fras setting_advanced_layout: Aktivera avancerat webbgränssnitt - setting_aggregate_reblogs: Gruppera knuffar i tidslinjer - setting_auto_play_gif: Spela upp animerade GIF-bilder automatiskt - setting_boost_modal: Visa bekräftelsedialog innan du knuffar - setting_crop_images: Beskär bilder i icke-utökade tutningar till 16x9 - setting_default_language: Språk - setting_default_privacy: Postintegritet + setting_aggregate_reblogs: Gruppera boostningar i tidslinjer + setting_always_send_emails: Skicka alltid e-postnotiser + setting_auto_play_gif: Spela upp GIF:ar automatiskt + setting_boost_modal: Visa bekräftelsedialog innan boostningar + setting_crop_images: Beskär bilder i icke-utökade inlägg till 16x9 + setting_default_language: Inläggsspråk + setting_default_privacy: Inläggsintegritet setting_default_sensitive: Markera alltid media som känsligt - setting_delete_modal: Visa bekräftelsedialog innan du raderar en toot + setting_delete_modal: Visa bekräftelsedialog innan radering av inlägg setting_disable_swiping: Inaktivera svepande rörelser setting_display_media: Mediavisning setting_display_media_default: Standard @@ -156,6 +215,7 @@ sv: setting_use_pending_items: Långsamt läge severity: Strikthet sign_in_token_attempt: Säkerhetskod + title: Rubrik type: Importtyp username: Användarnamn username_or_email: Användarnamn eller e-mail @@ -164,11 +224,37 @@ sv: with_dns_records: Inkludera MX-poster och IP-adresser för domänen featured_tag: name: Hashtag + filters: + actions: + hide: Dölj helt + warn: Dölj med en varning form_admin_settings: + backups_retention_period: Lagringsperiod för användararkivet + bootstrap_timeline_accounts: Rekommendera alltid dessa konton till nya användare + closed_registrations_message: Anpassat meddelande när nyregistreringar inte är tillgängliga + content_cache_retention_period: Tid för bibehållande av innehållscache + custom_css: Anpassad CSS + mascot: Anpassad maskot (tekniskt arv) + media_cache_retention_period: Tid för bibehållande av mediecache + profile_directory: Aktivera profilkatalog + registrations_mode: Vem kan registrera sig + require_invite_text: Kräv anledning för att gå med + show_domain_blocks: Visa domänblockeringar + show_domain_blocks_rationale: Visa varför domäner blockerades + site_contact_email: Kontakt via e-post + site_contact_username: Användarnamn för kontakt + site_extended_description: Utökad beskrivning + site_short_description: Serverbeskrivning site_terms: Integritetspolicy + site_title: Servernamn + theme: Standardtema + thumbnail: Serverns tumnagelbild + timeline_preview: Tillåt oautentiserad åtkomst till offentliga tidslinjer + trendable_by_default: Tillåt trender utan föregående granskning + trends: Aktivera trender interactions: - must_be_follower: Blockera aviseringar från icke-följare - must_be_following: Blockera aviseringar från personer du inte följer + must_be_follower: Blockera notiser från icke-följare + must_be_following: Blockera notiser från personer du inte följer must_be_following_dm: Blockera direktmeddelanden från personer du inte följer invite: comment: Kommentar @@ -183,25 +269,40 @@ sv: sign_up_requires_approval: Begränsa registreringar severity: Regel notification_emails: - digest: Skicka sammandrag via e-post - favourite: Skicka e-post när någon favoriserar din status - follow: Skicka e-post när någon följer dig - follow_request: Skicka e-post när någon begär att följa dig - mention: Skicka e-post när någon nämner dig - pending_account: Nytt konto behöver granskas - reblog: Skicka e-post när någon knuffar din status + appeal: Någon överklagar ett moderatorbeslut + digest: Skicka e-postsammandrag + favourite: Någon favoritmarkerar ditt inlägg + follow: Någon följt dig + follow_request: Någon begärt att följa dig + mention: Någon nämnt dig + pending_account: Ett nytt konto behöver granskas + reblog: Någon boostar ditt inlägg + report: En ny rapport har skickats + trending_tag: En ny trend kräver granskning rule: text: Regel tag: - listable: Tillåt att denna hashtag visas i sökningar och förslag - name: Hashtag - trendable: Tillåt att denna hashtag visas under trender - usable: Tillåt tutningar att använda denna hashtag + listable: Tillåt denna hashtagg att visas i sökningar och förslag + name: Hashtagg + trendable: Tillåt denna hashtagg att visas under trender + usable: Tillåt inlägg att använda denna hashtagg + user: + role: Roll + user_role: + color: Emblemsfärg + highlighted: Visa roll som emblem på användarprofiler + name: Namn + permissions_as_keys: Behörigheter + position: Prioritet + webhook: + events: Aktiverade händelser + url: Slutpunkts-URL 'no': Nej + not_recommended: Rekommenderas inte recommended: Rekommenderad required: mark: "*" - text: obligatorisk + text: krävs title: sessions: webauthn: Använd en av dina säkerhetsnycklar för att logga in diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 1d5c810cdf..a17d62a9be 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -66,13 +66,13 @@ th: email_domain_block: domain: สิ่งนี้สามารถเป็นชื่อโดเมนที่ปรากฏในที่อยู่อีเมลหรือระเบียน MX ที่โดเมนใช้ จะตรวจสอบโดเมนเมื่อลงทะเบียน with_dns_records: จะทำการพยายามแปลงที่อยู่ระเบียน DNS ของโดเมนที่กำหนดและจะปิดกั้นผลลัพธ์เช่นกัน - featured_tag: - name: 'คุณอาจต้องการใช้หนึ่งในนี้:' filters: action: เลือกว่าการกระทำใดที่จะทำเมื่อโพสต์ตรงกับตัวกรอง actions: hide: ซ่อนเนื้อหาที่กรองอยู่อย่างสมบูรณ์ ทำเสมือนว่าไม่มีเนื้อหาอยู่ warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง + form_admin_settings: + closed_registrations_message: แสดงเมื่อมีการปิดการลงทะเบียน form_challenge: current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย imports: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index fa9620476a..838317e204 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -66,8 +66,6 @@ tr: email_domain_block: domain: Bu e-posta adresinde görünen veya kullanılan MX kaydındaki alan adı olabilir. Kayıt sırasında denetleneceklerdir. with_dns_records: Belirli bir alanın DNS kayıtlarını çözmeyi deneyecek ve sonuçlar kara listeye eklenecek - featured_tag: - name: 'Bunlardan birini kullanmak isteyebilirsiniz:' filters: action: Bir gönderi filtreyle eşleştiğinde hangi eylemin yapılacağını seçin actions: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 506197b22c..756fd07958 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -26,7 +26,7 @@ uk: ends_at: Необов'язково. Оголошення буде автоматично знято з публікації scheduled_at: Залиште поля незаповненими, щоб опублікувати оголошення відразу starts_at: Необов'язково. У разі якщо оголошення прив'язується до певного періоду часу - text: Ви можете використовувати той же синтаксис, що і в постах. Будьте завбачливі щодо місця, яке займе оголошення на екрані користувачів + text: Ви можете використовувати той же синтаксис, що і в дописах. Будьте завбачливі щодо місця, яке займе оголошення на екрані користувачів appeal: text: Ви можете оскаржити рішення лише один раз defaults: @@ -44,7 +44,7 @@ uk: inbox_url: Скопіюйте інтернет-адресу з титульної сторінки ретранслятора irreversible: Відсіяні дмухи зникнуть назавжди, навіть якщо фільтр потім буде знято locale: Мова інтерфейсу, електронних листів та push-сповіщень - locked: Буде вимагати від Вас самостійного підтверждення підписників, змінить приватність постів за замовчуванням на "тільки для підписників" + locked: Вручну контролюйте, хто може слідкувати за вами, затверджуючи запити на стеження password: Не менше 8 символів phrase: Шукає без врахування регістру у тексті дмуха або у його попередженні про вміст scopes: Які API додатку буде дозволено використовувати. Якщо ви виберете самий верхній, нижчестоящі будуть обрані автоматично. @@ -62,12 +62,12 @@ uk: username: Ваше ім'я користувача буде унікальним у %{domain} whole_word: Якщо пошукове слово або фраза містить лише літери та цифри, воно має збігатися цілком domain_allow: - domain: Цей домен зможе отримувати дані з цього серверу. Вхідні дані будуть оброблені та збережені + domain: Цей домен зможе отримувати дані з цього сервера. Вхідні дані будуть оброблені та збережені email_domain_block: domain: Це може бути доменне ім'я, яке відображується в адресі електронної пошти, або використовуваний запис MX. Вони будуть перевірятися при реєстрації. with_dns_records: Спроба визначення DNS-записів заданого домену буде здійснена, а результати також будуть занесені до чорного списку featured_tag: - name: 'Можливо, ви захочете використовувати один з цих:' + name: 'Ось деякі використані останнім часом хештеґи:' filters: action: Виберіть дію для виконання коли допис збігається з фільтром actions: @@ -192,9 +192,9 @@ uk: setting_always_send_emails: Завжди надсилати сповіщення електронною поштою setting_auto_play_gif: Автоматично відтворювати анімовані GIF setting_boost_modal: Відображати діалог підтвердження під час передмухування - setting_crop_images: Обрізати зображення в нерозкритих постах до 16x9 + setting_crop_images: Обрізати зображення в нерозкритих дописах до 16x9 setting_default_language: Мова дмухів - setting_default_privacy: Видимість постів + setting_default_privacy: Видимість дописів setting_default_sensitive: Позначити медіа як дражливе setting_delete_modal: Показувати діалог підтвердження під час видалення дмуху setting_disable_swiping: Вимкнути рух проведення diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index e7f83892d9..7f4de3df27 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -31,16 +31,16 @@ vi: text: Bạn chỉ có thể khiếu nại mỗi lần một cảnh cáo defaults: autofollow: Những người đăng ký sẽ tự động theo dõi bạn - avatar: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px + avatar: PNG, GIF hoặc JPG, tối đa %{size}. Sẽ bị nén xuống %{dimensions}px bot: Tài khoản này tự động thực hiện các hành động và không được quản lý bởi người thật context: Chọn một hoặc nhiều nơi mà bộ lọc sẽ áp dụng current_password: Vì mục đích bảo mật, vui lòng nhập mật khẩu của tài khoản hiện tại current_username: Để xác nhận, vui lòng nhập tên người dùng của tài khoản hiện tại digest: Chỉ gửi sau một thời gian dài không hoạt động hoặc khi bạn nhận được tin nhắn (trong thời gian vắng mặt) - discoverable: Cho phép tài khoản của bạn xuất hiện trong gợi ý theo dõi, xu hướng và những tính năng khác + discoverable: Cho phép tài khoản của bạn xuất hiện trong gợi ý theo dõi, thịnh hành và những tính năng khác email: Bạn sẽ được gửi một email xác nhận fields: Được phép thêm tối đa 4 mục trên trang hồ sơ của bạn - header: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px + header: PNG, GIF hoặc JPG, tối đa %{size}. Sẽ bị nén xuống %{dimensions}px inbox_url: Sao chép URL của máy chủ mà bạn muốn dùng irreversible: Các tút đã lọc sẽ không thể phục hồi, kể cả sau khi xóa bộ lọc locale: Ngôn ngữ của giao diện, email và thông báo đẩy @@ -51,10 +51,10 @@ vi: setting_aggregate_reblogs: Nếu một tút đã được đăng lại thì những lượt đăng lại sau sẽ không hiện trên bảng tin nữa setting_always_send_emails: Bình thường thì email thông báo sẽ không gửi khi bạn đang dùng Mastodon setting_default_sensitive: Mặc định là nội dung nhạy cảm và chỉ hiện nếu nhấn vào - setting_display_media_default: Làm mờ những thứ được đánh dấu là nhạy cảm - setting_display_media_hide_all: Không hiển thị + setting_display_media_default: Làm mờ nội dung nhạy cảm + setting_display_media_hide_all: Ẩn setting_display_media_show_all: Luôn hiển thị - setting_hide_network: Ẩn những người bạn theo dõi và những người theo dõi bạn trên trang hồ sơ + setting_hide_network: Ẩn những người bạn theo dõi và những người theo dõi bạn setting_noindex: Ảnh hưởng đến trang cá nhân và tút của bạn setting_show_application: Tên ứng dụng bạn dùng để đăng tút sẽ hiện trong chi tiết của tút setting_use_blurhash: Lớp phủ mờ dựa trên màu sắc của hình ảnh nhạy cảm @@ -67,7 +67,7 @@ vi: domain: Phân tích tên miền thành các tên miền MX sau, các tên miền này chịu trách nhiệm cuối cùng trong chấp nhận email. Giá trị MX sẽ chặn đăng ký từ bất kỳ địa chỉ email nào sử dụng cùng một giá trị MX, ngay cả khi tên miền hiển thị là khác. with_dns_records: Nếu DNS có vấn đề, nó sẽ bị đưa vào danh sách cấm featured_tag: - name: 'Những hashtag gợi ý cho bạn:' + name: 'Các hashtag mà bạn đã sử dụng gần đây:' filters: action: Chọn hành động sẽ thực hiện khi một tút khớp với bộ lọc actions: @@ -93,7 +93,7 @@ vi: thumbnail: 'Một hình ảnh tỉ lệ 2: 1 được hiển thị cùng với thông tin máy chủ của bạn.' timeline_preview: Khách truy cập đã đăng xuất sẽ có thể xem các tút công khai gần đây nhất trên máy chủ. trendable_by_default: Bỏ qua việc duyệt thủ công nội dung thịnh hành. Các mục riêng lẻ vẫn có thể bị xóa khỏi xu hướng sau này. - trends: Xu hướng hiển thị tút, hashtag và tin tức nào đang thu hút thảo luận trên máy chủ của bạn. + trends: Hiển thị những tút, hashtag và tin tức đang được thảo luận nhiều trên máy chủ của bạn. form_challenge: current_password: Biểu mẫu này an toàn imports: @@ -171,7 +171,7 @@ vi: current_password: Mật khẩu hiện tại data: Dữ liệu discoverable: Đề xuất tài khoản - display_name: Tên hiển thị + display_name: Biệt danh email: Địa chỉ email expires_in: Hết hạn sau fields: Metadata @@ -209,7 +209,7 @@ vi: setting_show_application: Hiện ứng dụng đã dùng để đăng tút setting_system_font_ui: Dùng phông chữ mặc định của hệ thống setting_theme: Giao diện - setting_trends: Hiển thị xu hướng hôm nay + setting_trends: Hiển thị thịnh hành hôm nay setting_unfollow_modal: Yêu cầu xác nhận trước khi ngưng theo dõi ai đó setting_use_blurhash: Làm mờ trước ảnh/video nhạy cảm setting_use_pending_items: Không tự động cập nhật bảng tin @@ -250,8 +250,8 @@ vi: theme: Chủ đề mặc định thumbnail: Hình thu nhỏ của máy chủ timeline_preview: Cho phép truy cập vào dòng thời gian công khai - trendable_by_default: Cho phép xu hướng mà không cần xem xét trước - trends: Bật xu hướng + trendable_by_default: Cho phép thịnh hành mà không cần duyệt trước + trends: Bật thịnh hành interactions: must_be_follower: Chặn thông báo từ những người không theo dõi bạn must_be_following: Chặn thông báo từ những người bạn không theo dõi @@ -278,13 +278,13 @@ vi: pending_account: Phê duyệt tài khoản mới reblog: Ai đó đăng lại tút của bạn report: Ai đó gửi báo cáo - trending_tag: Phê duyệt xu hướng mới + trending_tag: Phê duyệt nội dung nổi bật mới rule: text: Quy tắc tag: listable: Cho phép xuất hiện trong tìm kiếm và đề xuất name: Hashtag - trendable: Cho phép xuất hiện trong xu hướng + trendable: Cho phép hashtag này thịnh hành usable: Cho phép dùng trong tút user: role: Vai trò diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index ad36ddf6e1..793a39b001 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -67,7 +67,7 @@ zh-CN: domain: 这可以是电子邮件地址的域名或它使用的 MX 记录所指向的域名。用户注册时,系统会对此检查。 with_dns_records: Mastodon 会尝试解析所给域名的 DNS 记录,然后把解析结果一并封禁 featured_tag: - name: 你可能想要使用以下之一: + name: 以下是您最近使用的主题标签: filters: action: 选择在帖子匹配过滤器时要执行的操作 actions: diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml index 412b1a7699..24533e6047 100644 --- a/config/locales/simple_form.zh-HK.yml +++ b/config/locales/simple_form.zh-HK.yml @@ -61,8 +61,6 @@ zh-HK: domain: 此網域將能從此站獲取資料,而此站發出的數據也會被處理和存儲。 email_domain_block: with_dns_records: Mastodon 會嘗試解析所給域名的 DNS 記錄,然後與解析結果一併封禁 - featured_tag: - name: 你可能想使用其中一個: form_challenge: current_password: 你正要進入安全區域 imports: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index ee12f02527..efb8a7a780 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -67,7 +67,7 @@ zh-TW: domain: 這可以是顯示在電子郵件中的網域名稱,或是其使用的 MX 紀錄。其將在註冊時檢查。 with_dns_records: Mastodon 會嘗試解析所給域名的 DNS 記錄,解析結果一致者將一併封鎖 featured_tag: - name: 您可能想使用其中一個: + name: 這些是您最近使用的一些主題標籤: filters: action: 請選擇當嘟文符合該過濾器時將被執行之動作 actions: diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 01fe282557..5f46aa9e45 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -213,6 +213,7 @@ sl: reject_user: Zavrni uporabnika remove_avatar_user: Odstrani avatar reopen_report: Ponovno odpri prijavo + resend_user: Ponovno pošlji potrditveno e-pošto reset_password_user: Ponastavi geslo resolve_report: Razreši prijavo sensitive_account: Občutljivi račun @@ -271,6 +272,7 @@ sl: reject_user_html: "%{name} je zavrnil/a registracijo iz %{target}" remove_avatar_user_html: "%{name} je odstranil podobo (avatar) uporabnika %{target}" reopen_report_html: "%{name} je ponovno odprl/a prijavo %{target}" + resend_user_html: "%{name} je ponovno poslal_a potrditveno e-sporočilo za %{target}" reset_password_user_html: "%{name} je ponastavil/a geslo uporabnika %{target}" resolve_report_html: "%{name} je razrešil/a prijavo %{target}" sensitive_account_html: "%{name} je označil/a medije računa %{target}'s kot občutljive" diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 8010f49303..36ebb26ece 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -207,6 +207,7 @@ sq: reject_user: Hidhe Poshtë Përdoruesin remove_avatar_user: Hiqe Avatarin reopen_report: Rihape Raportimin + resend_user: Ridërgo Email Ripohimi reset_password_user: Ricaktoni Fjalëkalimin resolve_report: Zgjidhe Raportimin sensitive_account: I vini shenjë si rezervat medias në llogarinë tuaj @@ -265,6 +266,7 @@ sq: reject_user_html: "%{name} hodhi poshtë regjistrimin nga %{target}" remove_avatar_user_html: "%{name} hoqi avatarin e %{target}" reopen_report_html: "%{name} rihapi raportimin %{target}" + resend_user_html: "%{name} ridërgoi email ripohimi për %{target}" reset_password_user_html: "%{name} ricaktoi fjalëkalimi për përdoruesin %{target}" resolve_report_html: "%{name} zgjidhi raportimin %{target}" sensitive_account_html: "%{name} i vuri shenjë si rezervat medias në %{target}" @@ -664,29 +666,67 @@ sq: empty: S’janë përcaktuar ende rregulla shërbyesi. title: Rregulla shërbyesi settings: + about: + manage_rules: Administroni rregulla shërbyesi + preamble: Jepni informacion të hollësishëm rreth se si mbahet në punë, si moderohet dhe si financohet shërbyesi. + rules_hint: Ka një zonë enkas për rregulla me të cilat pritet që përdoruesit tuaj të pajtohen. + title: Mbi + appearance: + preamble: Përshtatni ndërfaqen web të Mastodon-it. + title: Dukje + branding: + preamble: Elementët e markës të shërbyesit tuaj e dallojnë atë nga shërbyes të tjerë në rrjet. Këto hollësi mund të shfaqen në një larmi mjedisesh, bie fjala, në ndërfaqen web të Mastodon-it, aplikacione për platforma të ndryshme, në paraparje lidhjesh në sajte të tjerë dhe brenda aplikacionesh për shkëmbim mesazhesh, e me radhë. Për këtë arsyes, më e mira është që këto hollësi të jenë të qarta, të shkurtra dhe të kursyera. + title: Elementë marke + content_retention: + preamble: Kontrolloni se si depozitohen në Mastodon lënda e prodhuar nga përdoruesit. + title: Mbajtje lënde + discovery: + follow_recommendations: Rekomandime ndjekjeje + preamble: Shpërfaqja e lëndës interesante është me rëndësi kyçe për mirëseardhjen e përdoruesve të rinj që mund të mos njohin njeri në Mastodon. Kontrolloni se si funksionojnë në shërbyesin tuaj veçori të ndryshme zbulimi. + profile_directory: Drejtori profilesh + public_timelines: Rrjedha kohore publike + title: Zbulim + trends: Në modë domain_blocks: all: Për këdo disabled: Për askënd users: Për përdorues vendorë që kanë bërë hyrjen + registrations: + preamble: Kontrolloni cilët mund të krijojnë llogari në shërbyesin tuaj. + title: Regjistrime registrations_mode: modes: approved: Për regjistrim, lypset miratimi none: S’mund të regjistrohet ndokush open: Mund të regjistrohet gjithkush + title: Rregullime Shërbyesi site_uploads: delete: Fshi kartelën e ngarkuar destroyed_msg: Ngarkimi në sajt u fshi me sukses! statuses: + account: Autor + application: Aplikacion back_to_account: Mbrapsht te faqja e llogarisë back_to_report: Mbrapsht te faqja e raportimit batch: remove_from_report: Hiqe prej raportimit report: Raportojeni deleted: E fshirë + favourites: Të parapëlqyer + history: Historik versioni + in_reply_to: Përgjigje për + language: Gjuhë media: title: Media + metadata: Tejtëdhëna no_status_selected: S’u ndryshua ndonjë gjendje, ngaqë s’u përzgjodh ndonjë e tillë + open: Hape postimin + original_status: Postim origjinal + reblogs: Riblogime + status_changed: Postimi ndryshoi title: Gjendje llogarish + trending: Në modë + visibility: Dukshmëri with_media: Me media strikes: actions: @@ -1206,6 +1246,8 @@ sq: carry_blocks_over_text: Ky përdorues lëvizi prej %{acct}, të cilin e keni bllokuar. carry_mutes_over_text: Ky përdorues lëvizi prej %{acct}, që e keni heshtuar. copy_account_note_text: 'Ky përdorues ka ikur prej %{acct}, ja ku janë shënimet tuaja të mëparshme mbi të:' + navigation: + toggle_menu: Shfaq/Fshih menunë notification_mailer: admin: report: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index df7d27efdc..079244484e 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -1,7 +1,7 @@ --- sv: about: - about_mastodon_html: Mastodon är ett socialt nätverk baserat på öppna webbprotokoll och gratis, öppen källkodsprogramvara. Det är decentraliserat som e-post. + about_mastodon_html: 'Framtidens sociala medium: Ingen reklam. Ingen övervakning. Etisk design och decentralisering! Äg din data med Mastodon!' contact_missing: Inte inställd contact_unavailable: Ej tillämplig hosted_on: Mastodon-värd på %{domain} @@ -19,9 +19,9 @@ sv: pin_errors: following: Du måste vara följare av den person du vill godkänna posts: - one: Tuta - other: Tutor - posts_tab_heading: Tutor + one: Inlägg + other: Inlägg + posts_tab_heading: Inlägg admin: account_actions: action: Utför åtgärd @@ -33,15 +33,22 @@ sv: accounts: add_email_domain_block: Blockera e-postdomän approve: Godkänn + approved_msg: "%{username}s registreringsansökan godkändes" are_you_sure: Är du säker? avatar: Profilbild by_domain: Domän change_email: - current_email: Nuvarande E-postadress - label: Byt E-postadress - new_email: Ny E-postadress - submit: Byt E-postadress - title: Byt E-postadress för %{username} + changed_msg: E-postadressen har ändrats! + current_email: Nuvarande e-postadress + label: Byt e-postadress + new_email: Ny e-postadress + submit: Byt e-postadress + title: Byt e-postadress för %{username} + change_role: + changed_msg: Rollen har ändrats! + label: Ändra roll + no_role: Ingen roll + title: Ändra roll för %{username} confirm: Bekräfta confirmed: Bekräftad confirming: Bekräftande @@ -51,6 +58,7 @@ sv: demote: Degradera destroyed_msg: "%{username}'s data har nu lagts till kön för att raderas omedelbart" disable: inaktivera + disable_sign_in_token_auth: Inaktivera autentisering med e-post-token disable_two_factor_authentication: Inaktivera 2FA disabled: inaktiverad display_name: Visningsnamn @@ -59,6 +67,7 @@ sv: email: E-post email_status: E-poststatus enable: Aktivera + enable_sign_in_token_auth: Aktivera autentisering med e-post-token enabled: Aktiverad enabled_msg: Uppfrysningen av %{username}'s konto lyckades followers: Följare @@ -83,6 +92,7 @@ sv: active: Aktiv all: Alla pending: Väntande + silenced: Begränsad suspended: Avstängd title: Moderering moderation_notes: Moderation anteckning @@ -90,6 +100,7 @@ sv: most_recent_ip: Senaste IP no_account_selected: Inga konton har ändrats och inget har valts no_limits_imposed: Inga begränsningar har införts + no_role_assigned: Ingen roll tilldelad not_subscribed: Inte prenumererat pending: Inväntar granskning perform_full_suspension: Utför full avstängning @@ -102,9 +113,13 @@ sv: public: Offentlig push_subscription_expires: PuSH-prenumerationen löper ut redownload: Uppdatera profil + redownloaded_msg: Uppdaterade %{username}s profil från server reject: Förkasta + rejected_msg: Avvisade %{username}s registreringsansökan remove_avatar: Ta bort avatar remove_header: Ta bort rubrik + removed_avatar_msg: Tog bort %{username}s profilbild + removed_header_msg: Tog bort %{username}s sidhuvudsbild resend_confirmation: already_confirmed: Den här användaren är redan bekräftad send: Skicka om e-postbekräftelse @@ -112,6 +127,7 @@ sv: reset: Återställ reset_password: Återställ lösenord resubscribe: Starta en ny prenumeration + role: Roll search: Sök search_same_email_domain: Andra användare med samma e-postdomän search_same_ip: Annan användare med samma IP-adress @@ -126,18 +142,23 @@ sv: targeted_reports: Anmälningar gjorda om detta konto silence: Tystnad silenced: Tystad / Tystat - statuses: Status + statuses: Inlägg strikes: Föregående varningar subscribe: Prenumerera suspend: Stäng av suspended: Avstängd / Avstängt + suspension_irreversible: All data som tillhör detta konto har permanent raderats. Du kan låsa upp och återanvända kontot, men ingen data kommer att finnas kvar. + suspension_reversible_hint_html: Kontot har låsts, och all data som tillhör det kommer att raderas permanent den %{date}. Tills dess kan kontot återställas utan dataförlust. Om du vill radera all kontodata redan nu, kan du göra detta nedan. title: Konton unblock_email: Avblockera e-postadress unblocked_email_msg: "%{username}s e-postadress avblockerad" - unconfirmed_email: Obekräftad E-postadress + unconfirmed_email: Obekräftad e-postadress + undo_sensitized: Ångra tvinga känsligt undo_silenced: Ångra tystnad undo_suspension: Ångra avstängning + unsilenced_msg: Begränsningen borttagen för %{username}s konto unsubscribe: Avsluta prenumeration + unsuspended_msg: Låste upp %{username}s konto username: Användarnamn view_domain: Visa sammanfattning för domän warn: Varna @@ -149,27 +170,36 @@ sv: approve_user: Godkänn användare assigned_to_self_report: Tilldela anmälan change_email_user: Ändra e-post för användare + change_role_user: Ändra roll för användaren confirm_user: Bekräfta användare create_account_warning: Skapa varning - create_announcement: Skapa ett anslag + create_announcement: Skapa kungörelse + create_canonical_email_block: Skapa e-postblockering create_custom_emoji: Skapa egen emoji create_domain_allow: Skapa tillåten domän create_domain_block: Skapa blockerad domän + create_email_domain_block: Skapa blockering av e-postdomän create_ip_block: Skapa IP-regel create_unavailable_domain: Skapa otillgänglig domän + create_user_role: Skapa roll demote_user: Degradera användare - destroy_announcement: Ta bort anslag + destroy_announcement: Radera kungörelse + destroy_canonical_email_block: Radera e-postblockering destroy_custom_emoji: Radera egen emoji destroy_domain_allow: Ta bort tillåten domän destroy_domain_block: Ta bort blockerad domän + destroy_email_domain_block: Radera blockering av e-postdomän destroy_instance: Rensa domänen destroy_ip_block: Radera IP-regel - destroy_status: Ta bort status + destroy_status: Radera inlägg destroy_unavailable_domain: Ta bort otillgänglig domän + destroy_user_role: Förstör roll disable_2fa_user: Inaktivera 2FA disable_custom_emoji: Inaktivera egna emojis + disable_sign_in_token_auth_user: Inaktivera autentisering med e-post-token för användare disable_user: Inaktivera användare enable_custom_emoji: Aktivera egna emojis + enable_sign_in_token_auth_user: Aktivera autentisering med e-post-token för användare enable_user: Aktivera användare memorialize_account: Minnesmärk konto promote_user: Befordra användare @@ -177,6 +207,7 @@ sv: reject_user: Avvisa användare remove_avatar_user: Ta bort avatar reopen_report: Öppna rapporten igen + resend_user: Skicka bekräftelse på nytt reset_password_user: Återställ lösenord resolve_report: Lös rapport sensitive_account: Markera mediet i ditt konto som känsligt @@ -184,61 +215,95 @@ sv: suspend_account: Stäng av konto unassigned_report: Återkalla rapport unblock_email_account: Avblockera e-postadress + unsensitive_account: Ångra tvinga känsligt konto + unsilence_account: Ångra begränsa konto unsuspend_account: Återaktivera konto - update_announcement: Uppdatera meddelande + update_announcement: Uppdatera kungörelse update_custom_emoji: Uppdatera egna emojis update_domain_block: Uppdatera blockerad domän - update_status: Uppdatera status + update_ip_block: Uppdatera IP-regel + update_status: Uppdatera inlägg + update_user_role: Uppdatera roll actions: + approve_appeal_html: "%{name} godkände överklagande av modereringsbeslut från %{target}" + approve_user_html: "%{name} godkände registrering från %{target}" + assigned_to_self_report_html: "%{name} tilldelade rapporten %{target} till sig själva" + change_email_user_html: "%{name} bytte e-postadress för användare %{target}" + change_role_user_html: "%{name} ändrade roll för %{target}" + confirm_user_html: "%{name} bekräftade e-postadress för användare %{target}" create_account_warning_html: "%{name} skickade en varning till %{target}" - create_announcement_html: "%{name} skapade tillkännagivande %{target}" + create_announcement_html: "%{name} skapade kungörelsen %{target}" + create_canonical_email_block_html: "%{name} blockerade e-post med hashen %{target}" create_custom_emoji_html: "%{name} laddade upp ny emoji %{target}" + create_domain_allow_html: "%{name} vitlistade domän %{target}" create_domain_block_html: "%{name} blockerade domänen %{target}" - create_email_domain_block_html: "%{name} svartlistade e-postdomän %{target}" + create_email_domain_block_html: "%{name} blockerade e-postdomänen %{target}" create_ip_block_html: "%{name} skapade regel för IP %{target}" + create_unavailable_domain_html: "%{name} stoppade leverans till domänen %{target}" + create_user_role_html: "%{name} skapade rollen %{target}" + demote_user_html: "%{name} nedgraderade användare %{target}" + destroy_announcement_html: "%{name} raderade kungörelsen %{target}" + destroy_canonical_email_block_html: "%{name} avblockerade e-post med hashen %{target}" + destroy_custom_emoji_html: "%{name} raderade emoji %{target}" + destroy_domain_allow_html: "%{name} raderade domän %{target} från vitlistan" destroy_domain_block_html: "%{name} avblockerade domänen %{target}" - destroy_email_domain_block_html: "%{name} avblockerade e-postdomän %{target}" + destroy_email_domain_block_html: "%{name} avblockerade e-postdomänen %{target}" + destroy_instance_html: "%{name} rensade domän %{target}" destroy_ip_block_html: "%{name} tog bort regel för IP %{target}" destroy_status_html: "%{name} tog bort inlägget av %{target}" + destroy_unavailable_domain_html: "%{name} återupptog leverans till domänen %{target}" + destroy_user_role_html: "%{name} raderade rollen %{target}" + disable_2fa_user_html: "%{name} inaktiverade tvåfaktorsautentiseringskrav för användaren %{target}" disable_custom_emoji_html: "%{name} inaktiverade emoji %{target}" + disable_sign_in_token_auth_user_html: "%{name} inaktiverade e-posttokenautentisering för %{target}" disable_user_html: "%{name} stängde av inloggning för användaren %{target}" enable_custom_emoji_html: "%{name} aktiverade emoji %{target}" + enable_sign_in_token_auth_user_html: "%{name} aktiverade e-posttokenautentisering för %{target}" enable_user_html: "%{name} aktiverade inloggning för användaren %{target}" memorialize_account_html: "%{name} gjorde %{target}'s konto till en minnessida" promote_user_html: "%{name} befordrade användaren %{target}" + reject_appeal_html: "%{name} avvisade överklagande av modereringsbeslut från %{target}" + reject_user_html: "%{name} avvisade registrering från %{target}" remove_avatar_user_html: "%{name} tog bort %{target}'s avatar" reopen_report_html: "%{name} öppnade rapporten igen %{target}" + resend_user_html: "%{name} skickade bekräftelsemail för %{target} på nytt" reset_password_user_html: "%{name} återställ användarens lösenord %{target}" resolve_report_html: "%{name} löste rapporten %{target}" sensitive_account_html: "%{name} markerade %{target}'s media som känsligt" silence_account_html: "%{name} begränsade %{target}'s konto" suspend_account_html: "%{name} stängde av %{target}'s konto" + unassigned_report_html: "%{name} tog bort tilldelning av rapporten %{target}" + unblock_email_account_html: "%{name} avblockerade %{target}s e-postadress" unsensitive_account_html: "%{name} avmarkerade %{target}'s media som känsligt" + unsilence_account_html: "%{name} tog bort begränsning av %{target}s konto" unsuspend_account_html: "%{name} tog bort avstängningen av %{target}'s konto" - update_announcement_html: "%{name} uppdaterade tillkännagivandet %{target}" + update_announcement_html: "%{name} uppdaterade kungörelsen %{target}" update_custom_emoji_html: "%{name} uppdaterade emoji %{target}" update_domain_block_html: "%{name} uppdaterade domän-block för %{target}" + update_ip_block_html: "%{name} ändrade regel för IP %{target}" update_status_html: "%{name} uppdaterade inlägget av %{target}" + update_user_role_html: "%{name} ändrade rollen %{target}" empty: Inga loggar hittades. filter_by_action: Filtrera efter åtgärd filter_by_user: Filtrera efter användare title: Revisionslogg announcements: - destroyed_msg: Borttagning av tillkännagivandet lyckades! + destroyed_msg: Kungörelsen raderades! edit: - title: Redigera tillkännagivande - empty: Inga tillkännagivanden hittades. + title: Redigera kungörelse + empty: Inga kungörelser hittades. live: Direkt new: - create: Skapa tillkännagivande - title: Nytt tillkännagivande + create: Skapa kungörelse + title: Ny kungörelse publish: Publicera - published_msg: Publiceringen av tillkännagivandet lyckades! - scheduled_for: Schemalagd för %{time} - scheduled_msg: Tillkännagivandet schemalades för publicering! - title: Tillkännagivanden + published_msg: Publicerade kungörelsen! + scheduled_for: Schemalagd till %{time} + scheduled_msg: Kungörelsen schemalades för publicering! + title: Kungörelser unpublish: Avpublicera - updated_msg: Uppdatering av tillkännagivandet lyckades! + unpublished_msg: Kungörelsen raderades! + updated_msg: Kungörelsen uppdaterades! custom_emojis: assign_category: Tilldela kategori by_domain: Domän @@ -261,6 +326,7 @@ sv: listed: Noterade new: title: Lägg till ny egen emoji + no_emoji_selected: Inga emojier ändrades eftersom inga valdes not_permitted: Du har inte behörighet att utföra denna åtgärd overwrite: Skriva över shortcode: Kortkod @@ -277,9 +343,26 @@ sv: interactions: interaktioner media_storage: Medialagring new_users: nya användare + opened_reports: öppnade rapporter + pending_appeals_html: + one: "%{count} väntande överklagan" + other: "%{count} väntande överklaganden" + pending_reports_html: + one: "%{count} väntande rapport" + other: "%{count} väntande rapporter" + pending_tags_html: + one: "%{count} väntande hashtagg" + other: "%{count} väntande hashtaggar" + pending_users_html: + one: "%{count} väntande användare" + other: "%{count} väntande användare" + resolved_reports: lösta rapporter software: Programvara + sources: Registreringskällor space: Utrymmesutnyttjande / Utrymmesanvändning title: Kontrollpanel + top_languages: Mest aktiva språk + top_servers: Mest aktiva servrar website: Hemsida disputes: appeals: @@ -296,10 +379,11 @@ sv: destroyed_msg: Domänblockering har återtagits domain: Domän edit: Ändra domänblock + existing_domain_block: Du har redan satt strängare gränser för %{name}. existing_domain_block_html: Du har redan satt begränsningar för %{name} så avblockera användaren först. new: create: Skapa block - hint: Domänblocket hindrar inte skapandet av kontoposter i databasen, men kommer retroaktivt, automatiskt att tillämpa specifika modereringsmetoder på dessa konton. + hint: Domänblockeringen hindrar inte skapandet av kontoposter i databasen, men kommer retroaktivt och automatiskt tillämpa specifika modereringsmetoder på dessa konton. severity: desc_html: "Tysta ner kommer att göra kontoinlägg osynliga för alla som inte följer dem. Suspendera kommer ta bort allt av kontots innehåll, media och profildata. Använd Ingen om du bara vill avvisa mediefiler." noop: Ingen @@ -311,6 +395,7 @@ sv: private_comment: Privat kommentar private_comment_hint: Kommentar för moderatorer om denna domänbegränsning. public_comment: Offentlig kommentar + public_comment_hint: Kommentar om denna domänbegränsning för allmänheten, om listan över domänbegränsningar är publik. reject_media: Avvisa mediafiler reject_media_hint: Raderar lokalt lagrade mediefiler och förhindrar möjligheten att ladda ner något i framtiden. Irrelevant för suspensioner reject_reports: Avvisa rapporter @@ -319,19 +404,30 @@ sv: view: Visa domänblock email_domain_blocks: add_new: Lägg till ny - created_msg: E-postdomän har lagts till i domänblockslistan utan problem + attempts_over_week: + one: "%{count} försök under den senaste veckan" + other: "%{count} registreringsförsök under den senaste veckan" + created_msg: Blockerade e-postdomänen delete: Radera + dns: + types: + mx: MX-post domain: Domän new: create: Skapa domän - title: Ny E-postdomänblocklistningsinmatning - title: E-postdomänblock + resolve: Slå upp domän + title: Blockera ny e-postdomän + no_email_domain_block_selected: Inga blockeringar av e-postdomäner ändrades eftersom inga valdes + resolved_through_html: Uppslagen genom %{domain} + title: Blockerade e-postdomäner follow_recommendations: + description_html: "Följrekommendationer hjälper nya användare att snabbt hitta intressant innehåll. När en användare inte har interagerat med andra tillräckligt mycket för att forma personliga följrekommendationer, rekommenderas istället dessa konton. De beräknas om varje dag från en mix av konton med nylig aktivitet och högst antal följare för ett givet språk." language: För språket status: Status title: Följ rekommendationer instances: availability: + title: Tillgänglighet warning: Det senaste försöket att ansluta till denna värddator har misslyckats back_to_all: Alla back_to_limited: Begränsat @@ -339,18 +435,32 @@ sv: by_domain: Domän content_policies: policies: + reject_reports: Avvisa rapporter silence: Gräns policy: Policy reason: Offentlig orsak title: Riktlinjer för innehåll + dashboard: + instance_accounts_dimension: Mest följda konton + instance_accounts_measure: lagrade konton + instance_followers_measure: våra följare där + instance_follows_measure: sina följare här + instance_languages_dimension: Mest använda språk + instance_media_attachments_measure: lagrade mediebilagor + instance_reports_measure: rapporter om dem + instance_statuses_measure: sparade inlägg delivery: all: Alla clear: Rensa leverans-fel + failing: Misslyckas restart: Starta om leverans stop: Stoppa leverans unavailable: Ej tillgänglig delivery_available: Leverans är tillgängligt empty: Inga domäner hittades. + known_accounts: + one: "%{count} känt konto" + other: "%{count} kända konton" moderation: all: Alla limited: Begränsad @@ -392,13 +502,17 @@ sv: relays: add_new: Lägg till nytt relä delete: Radera + description_html: Ett federeringsombud är en mellanliggande server som utbyter höga antal offentliga inlägg mellan servrar som prenumererar på och publicerar till det. Det kan hjälpa små och medelstora servrar upptäcka innehåll från fediversumet, vilket annars skulle kräva att lokala användare manuellt följer personer på fjärrservrar. disable: Inaktivera disabled: Inaktiverad enable: Aktivera - enable_hint: När den är aktiverad kommer din server att prenumerera på alla publika toots från detta relay, och kommer att börja skicka serverns publika toots till den. + enable_hint: Vid aktivering kommer din server börja prenumerera på alla offentliga inlägg från detta ombud, och kommer börja sända denna servers offentliga inlägg till den. enabled: Aktivera + inbox_url: Ombuds-URL + pending: Väntar på ombudets godkännande save_and_enable: Spara och aktivera setup: Konfigurera en relä-anslutning + signatures_not_enabled: Ombud fungerar inte korrekt medan säkert läge eller begränsat federeringsläge är aktiverade status: Status title: Relä report_notes: @@ -410,7 +524,13 @@ sv: notes: one: "%{count} anteckning" other: "%{count} anteckningar" + action_log: Granskningslogg action_taken_by: Åtgärder vidtagna av + actions: + delete_description_html: De rapporterade inläggen kommer raderas och en prick kommer registreras för att hjälpa dig eskalera framtida överträdelser av samma konto. + mark_as_sensitive_description_html: Medierna i de rapporterade inläggen kommer markeras som känsliga och en prick kommer registreras för att hjälpa dig eskalera framtida överträdelser av samma konto. + suspend_description_html: Profilen och allt dess innehåll kommer att bli oåtkomligt tills det slutligen raderas. Det kommer inte vara möjligt att interagera med kontot. Går att ångra inom 30 dagar. + add_to_report: Lägg till mer i rapporten are_you_sure: Är du säker? assign_to_self: Tilldela till mig assigned: Tilldelad moderator @@ -419,6 +539,7 @@ sv: comment: none: Ingen created_at: Anmäld + delete_and_resolve: Ta bort inlägg forwarded: Vidarebefordrad forwarded_to: Vidarebefordrad till %{domain} mark_as_resolved: Markera som löst @@ -431,19 +552,79 @@ sv: delete: Radera placeholder: Beskriv vilka åtgärder som vidtagits eller andra uppdateringar till den här anmälan. title: Anteckningar + remote_user_placeholder: fjärranvändaren från %{instance} reopen: Återuppta anmälan report: 'Rapport #%{id}' reported_account: Anmält konto reported_by: Anmäld av resolved: Löst resolved_msg: Anmälan har lösts framgångsrikt! + skip_to_actions: Hoppa till åtgärder status: Status + statuses: Rapporterat innehåll target_origin: Ursprung för anmält konto title: Anmälningar unassign: Otilldela unresolved: Olösta updated_at: Uppdaterad view_profile: Visa profil + roles: + add_new: Lägg till roll + assigned_users: + one: "%{count} användare" + other: "%{count} användare" + categories: + administration: Administration + devops: Devops + invites: Inbjudningar + moderation: Moderering + special: Särskild + delete: Ta bort + description_html: Med användarroller kan du anpassa vilka funktioner och områden dina användare kan komma åt i Mastodon. + edit: Redigera roll för '%{name}' + everyone: Standardbehörigheter + everyone_full_description_html: Detta är den grundroll som påverkar alla användare, även de utan särskilt tilldelad roll. Alla andra roller ärver behörigheter från denna. + permissions_count: + one: "%{count} behörighet" + other: "%{count} behörigheter" + privileges: + administrator: Administratör + delete_user_data: Ta bort användardata + delete_user_data_description: Tillåter användare att omedelbart radera andra användares data + invite_users: Bjud in användare + invite_users_description: Tillåter användare att bjuda in nya personer till servern + manage_announcements: Hantera kungörelser + manage_announcements_description: Tillåt användare att hantera kungörelser på servern + manage_appeals: Hantera överklaganden + manage_appeals_description: Tillåter användare att granska överklaganden av modereringsåtgärder + manage_blocks_description: Tillåter användare att blockera e-postleverantörer och IP-adresser + manage_custom_emojis: Hantera egna emojier + manage_custom_emojis_description: Tillåter användare att hantera egna emojier på servern + manage_federation: Hantera federering + manage_federation_description: Tillåter användare att blockera eller tillåta federering med andra domäner, samt kontrollera levererbarhet + manage_invites: Hantera inbjudningar + manage_invites_description: Tillåter användare att granska och inaktivera inbjudningslänkar + manage_reports: Hantera rapporter + manage_reports_description: Tillåter användare att granska rapporter och utföra modereringsåtgärder på dessa + manage_roles: Hantera roller + manage_roles_description: Tillåter användare att hantera och tilldela roller underordnade deras + manage_rules: Hantera regler + manage_rules_description: Tillåter användare att ändra serverregler + manage_settings: Hantera inställningar + manage_settings_description: Tillåter användare att ändra webbplatsinställningar + manage_taxonomies: Hantera taxonomier + manage_taxonomies_description: Tillåter användare att granska trendande innehåll och uppdatera inställningar för hashtaggar + manage_user_access: Hantera användaråtkomst + manage_user_access_description: Tillåter användare att inaktivera andra användares tvåfaktorsautentisering, ändra deras e-postadress samt återställa deras lösenord + manage_users: Hantera användare + manage_users_description: Tillåter användare att granska användares data och utföra modereringsåtgärder på dessa + manage_webhooks: Hantera webhooks + manage_webhooks_description: Tillåter användare att konfigurera webhooks för administrativa händelser + view_audit_log: Visa granskningsloggen + view_audit_log_description: Tillåter användare att se historiken över administrativa åtgärder på servern + view_dashboard: Visa instrumentpanel + view_devops: Devops + title: Roller rules: add_new: Lägg till regel delete: Radera @@ -451,58 +632,187 @@ sv: title: Serverns regler settings: about: + manage_rules: Hantera serverregler title: Om + appearance: + preamble: Anpassa Mastodons webbgränssnitt. + title: Utseende + branding: + title: Profilering + content_retention: + preamble: Kontrollera hur användargenererat innehåll lagras i Mastodon. + title: Bibehållande av innehåll + discovery: + profile_directory: Profilkatalog + trends: Trender domain_blocks: all: Till alla disabled: För ingen users: För inloggade lokala användare + registrations: + title: Registreringar registrations_mode: modes: approved: Godkännande krävs för registrering none: Ingen kan registrera open: Alla kan registrera + title: Serverinställningar site_uploads: delete: Radera uppladdad fil statuses: + application: Applikation back_to_account: Tillbaka till kontosidan + back_to_report: Tillbaka till rapportsidan batch: + remove_from_report: Ta bort från rapport report: Rapportera deleted: Raderad + favourites: Favoriter + history: Versionshistorik + in_reply_to: Svarar på + language: Språk media: title: Media - title: Kontostatus + metadata: Metadata + open: Öppna inlägg + title: Kontoinlägg + trending: Trendande + visibility: Synlighet with_media: med media strikes: actions: delete_statuses: "%{name} raderade %{target}s inlägg" disable: "%{name} frös %{target}s konto" + sensitive: "%{name} markerade %{target}s konto som känsligt" silence: "%{name} begränsade %{target}s konto" + suspend: "%{name} stängde av %{target}s konto" appeal_approved: Överklagad + appeal_pending: Överklagande väntar system_checks: + database_schema_check: + message_html: Det finns väntande databasmigreringar. Vänligen kör dem för att säkerställa att programmet beter sig som förväntat + elasticsearch_running_check: + message_html: Kunde inte ansluta till Elasticsearch. Kontrollera att det körs, eller inaktivera fulltextsökning + elasticsearch_version_check: + message_html: 'Inkompatibel Elasticsearch-version: %{value}' + version_comparison: Elasticsearch %{running_version} körs medan %{required_version} krävs rules_check: action: Hantera serverregler message_html: Du har inte definierat några serverregler. + sidekiq_process_check: + message_html: Ingen Sidekiq-process körs för kön/köerna %{value}. Vänligen kontrollera din Sidekiq-konfiguration + tags: + review: Granskningsstatus + updated_msg: Hashtagg-inställningarna har uppdaterats title: Administration trends: allow: Tillåt approved: Godkänd + disallow: Neka + links: + allow: Tillåt länk + allow_provider: Tillåt utgivare + description_html: Detta är länkar som för närvarande delas mycket av konton som din server ser inlägg från. Det kan hjälpa dina användare att ta reda på vad som händer i världen. Inga länkar visas offentligt tills du godkänner utgivaren. Du kan också tillåta eller avvisa enskilda länkar. + disallow: Blockera länk + disallow_provider: Blockera utgivare + no_link_selected: Inga länkar ändrades eftersom inga valdes + publishers: + no_publisher_selected: Inga utgivare ändrades eftersom inga valdes + shared_by_over_week: + one: Delad av en person under den senaste veckan + other: Delad av %{count} personer under den senaste veckan + title: Trendande länkar + usage_comparison: Delade %{today} gånger idag, jämfört med %{yesterday} igår + only_allowed: Endast tillåtna + pending_review: Väntar på granskning + preview_card_providers: + allowed: Länkar från denna utgivare kan trenda + description_html: Detta är domäner från vilka länkar ofta delas på din server. Länkar kommer inte att trenda offentligt om inte deras domän godkänns. Ditt godkännande (eller avslag) omfattar underdomäner. + rejected: Länkar från denna utgivare kommer inte att trenda + title: Utgivare + rejected: Avvisade statuses: - allow: Godkänn inlägg + allow: Tillåt inlägg allow_account: Godkänn författare + description_html: Detta är inlägg som din server vet om som för närvarande delas och favoriseras mycket just nu. Det kan hjälpa dina nya och återvändande användare att hitta fler människor att följa. Inga inlägg visas offentligt förrän du godkänner författaren, och författaren tillåter att deras konto föreslås till andra. Du kan också tillåta eller avvisa enskilda inlägg. + disallow: Tillåt inte inlägg + disallow_account: Tillåt inte författare + no_status_selected: Inga trendande inlägg ändrades eftersom inga valdes + not_discoverable: Författaren har valt att inte vara upptäckbar + shared_by: + one: Delad eller favoritmarkerad en gång + other: Delade och favoritmarkerade %{friendly_count} gånger + title: Trendande inlägg + tags: + current_score: Nuvarande poäng %{score} + dashboard: + tag_accounts_measure: unika användningar + tag_languages_dimension: Mest använda språk + tag_servers_dimension: Mest använda servrar + tag_servers_measure: olika servrar + tag_uses_measure: total användning + description_html: Detta är hashtaggar som just nu visas i många inlägg som din server ser. Det kan hjälpa dina användare att ta reda på vad människor talar mest om för tillfället. Inga hashtaggar visas offentligt tills du godkänner dem. + listable: Kan föreslås + no_tag_selected: Inga taggar ändrades eftersom inga valdes + not_listable: Kommer ej föreslås + not_trendable: Kommer ej visas under trender + not_usable: Kan inte användas + peaked_on_and_decaying: Nådde sin höjdpunkt %{date}, faller nu + title: Trendande hashtaggar + trendable: Kan visas under trender + trending_rank: 'Trendande #%{rank}' + usable: Kan användas + usage_comparison: Använd %{today} gånger idag, jämfört med %{yesterday} igår + used_by_over_week: + one: Använd av en person under den senaste veckan + other: Använd av %{count} personer under den senaste veckan title: Trender + trending: Trendande warning_presets: add_new: Lägg till ny delete: Radera + edit_preset: Redigera varningsförval + empty: Du har inte definierat några varningsförval ännu. + title: Hantera varningsförval + webhooks: + add_new: Lägg till slutpunkt + delete: Ta bort + description_html: En webhook gör det möjligt för Mastodon att skicka realtidsaviseringar om valda händelser till din egen applikation så att den automatiskt kan utlösa händelser. + disable: Inaktivera + disabled: Inaktiverad + edit: Redigera slutpunkt + empty: Du har inte några webhook-slutpunkter konfigurerade ännu. + enable: Aktivera + enabled: Aktiv + enabled_events: + one: 1 aktiverad händelse + other: "%{count} aktiverade händelser" + events: Händelser + new: Ny webhook + rotate_secret: Rotera hemlighet + secret: Signeringshemlighet + status: Status + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: + delete_statuses: att radera deras inlägg none: en varning new_report: body: "%{reporter} har rapporterat %{target}" body_remote: Någon från %{domain} har rapporterat %{target} subject: Ny rapport för %{instance} (#%{id}) + new_trends: + new_trending_links: + title: Trendande länkar + new_trending_statuses: + title: Trendande inlägg + new_trending_tags: + title: Trendande hashtaggar aliases: add_new: Skapa alias + empty: Du har inga alias. remove: Avlänka alias appearance: advanced_web_interface: Avancerat webbgränssnitt @@ -514,13 +824,14 @@ sv: guide_link: https://crowdin.com/project/mastodon guide_link_text: Alla kan bidra. sensitive_content: Känsligt innehåll + toot_layout: Inläggslayout application_mailer: notification_preferences: Ändra e-postinställningar salutation: "%{name}," settings: 'Ändra e-postinställningar: %{link}' view: 'Granska:' view_profile: Visa profil - view_status: Visa status + view_status: Visa inlägg applications: created: Ansökan är framgångsrikt skapad destroyed: Ansökan är framgångsrikt borttagen @@ -553,10 +864,12 @@ sv: registration_closed: "%{instance} accepterar inte nya medlemmar" resend_confirmation: Skicka instruktionerna om bekräftelse igen reset_password: Återställ lösenord + rules: + title: Några grundregler. security: Säkerhet set_new_password: Skriv in nytt lösenord setup: - email_settings_hint_html: Bekräftelsemeddelandet skickades till %{email}. Om den e-postadressen inte stämmer så kan du ändra den i kontoinställningarna. + email_settings_hint_html: E-postmeddelande för verifiering skickades till %{email}. Om e-postadressen inte stämmer kan du ändra den i kontoinställningarna. title: Ställ in status: account_status: Kontostatus @@ -622,6 +935,12 @@ sv: status: 'Inlägg #%{id}' title_actions: none: Varning + sensitive: Märkning av konto som känslig + silence: Begränsning av konto + suspend: Avstängning av konto + your_appeal_approved: Din överklagan har godkänts + your_appeal_pending: Du har lämnat in en överklagan + your_appeal_rejected: Din överklagan har avvisats domain_validator: invalid_domain: är inte ett giltigt domännamn errors: @@ -637,15 +956,16 @@ sv: '500': content: Vi är ledsna, men något gick fel från vårat håll. title: Den här sidan är inte korrekt - '503': The page could not be served due to a temporary server failure. + '503': Sidan kunde inte visas på grund av ett tillfälligt serverfel. noscript_html: För att använda Mastodon webbapplikationen, vänligen aktivera JavaScript. Alternativt kan du prova en av inhemska appar för Mastodon för din plattform. existing_username_validator: + not_found: kunde inte hitta en lokal användare med det användarnamnet not_found_multiple: kunde inte hitta %{usernames} exports: archive_takeout: date: Datum download: Ladda ner ditt arkiv - hint_html: Du kan begära ett arkiv av dina toots och uppladdad media. Den exporterade datan kommer att vara i ActivityPub-format och läsbar av kompatibel programvara. Du kan begära ett arkiv var sjunde dag. + hint_html: Du kan begära ett arkiv av dina inlägg och uppladdad media. Den exporterade datan kommer att vara i ActivityPub-format och läsbar av kompatibel programvara. Du kan begära ett arkiv var sjunde dag. in_progress: Kompilerar ditt arkiv... request: Efterfråga ditt arkiv size: Storlek @@ -658,6 +978,9 @@ sv: storage: Medialagring featured_tags: add_new: Lägg till ny + errors: + limit: Du har redan det maximala antalet utvalda hashtaggar + hint_html: "Vad är utvalda hashtaggar? De visas tydligt på din offentliga profil och låter andra bläddra bland dina offentliga inlägg specifikt under dessa hashtaggar. De är ett bra verktyg för att hålla reda på kreativa arbeten eller långsiktiga projekt." filters: contexts: account: Profiler @@ -666,26 +989,66 @@ sv: public: Publika tidslinjer thread: Konversationer edit: + add_keyword: Lägg till nyckelord + keywords: Nyckelord + statuses: Individuella inlägg + statuses_hint_html: Detta filter gäller för att välja enskilda inlägg oavsett om de matchar sökorden nedan. Granska eller ta bort inlägg från filtret. title: Redigera filter + errors: + deprecated_api_multiple_keywords: Dessa parametrar kan inte ändras från denna applikation eftersom de gäller mer än ett filtersökord. Använd en nyare applikation eller webbgränssnittet. + invalid_context: Ingen eller ogiltig kontext angiven index: + contexts: Filter i %{contexts} delete: Radera empty: Du har inga filter. + expires_in: Förfaller om %{distance} + expires_on: Förfaller på %{date} + keywords: + one: "%{count} nyckelord" + other: "%{count} nyckelord" + statuses: + one: "%{count} inlägg" + other: "%{count} inlägg" + statuses_long: + one: "%{count} enskilt inlägg dolt" + other: "%{count} enskilda inlägg dolda" title: Filter new: + save: Spara nytt filter title: Lägg till nytt filter + statuses: + back_to_filter: Tillbaka till filter + batch: + remove: Ta bort från filter + index: + hint: Detta filter gäller för att välja enskilda inlägg oavsett andra kriterier. Du kan lägga till fler inlägg till detta filter från webbgränssnittet. + title: Filtrerade inlägg footer: trending_now: Trendar nu generic: all: Alla + all_items_on_page_selected_html: + one: "%{count} objekt på denna sida valt." + other: "%{count} objekt på denna sida valda." + all_matching_items_selected_html: + one: "%{count} objekt som matchar din sökning är valt." + other: "%{count} objekt som matchar din sökning är valda." changes_saved_msg: Ändringar sparades framgångsrikt! copy: Kopiera delete: Radera + deselect: Avmarkera alla + none: Ingen order_by: Sortera efter save_changes: Spara ändringar + select_all_matching_items: + one: Välj %{count} objekt som matchar din sökning. + other: Välj alla %{count} objekt som matchar din sökning. today: idag validation_errors: one: Något är inte riktigt rätt ännu! Kontrollera felet nedan other: Något är inte riktigt rätt ännu! Kontrollera dom %{count} felen nedan + html_validator: + invalid_markup: 'innehåller ogiltig HTML: %{error}' imports: errors: over_rows_processing_limit: innehåller fler än %{count} rader @@ -699,6 +1062,7 @@ sv: types: blocking: Lista av blockerade bookmarks: Bokmärken + domain_blocking: Domänblockeringslista following: Lista av följare muting: Lista av nertystade upload: Ladda upp @@ -729,18 +1093,25 @@ sv: limit: Du har nått det maximala antalet listor login_activities: authentication_methods: + otp: tvåfaktorsautentiseringsapp password: lösenord - sign_in_token: säkerhetskod för e-post + sign_in_token: e-postsäkerhetskod webauthn: säkerhetsnycklar description_html: Om du ser aktivitet som du inte känner igen, överväg att byta ditt lösenord och aktivera tvåfaktor-autentisering. + empty: Ingen autentiseringshistorik tillgänglig + failed_sign_in_html: Misslyckat inloggningsförsök med %{method} från %{ip} (%{browser}) + successful_sign_in_html: Lyckad inloggning med %{method} från %{ip} (%{browser}) + title: Autentiseringshistorik media_attachments: validations: - images_and_video: Det går inte att bifoga en video till en status som redan innehåller bilder + images_and_video: Det går inte att bifoga en video till ett inlägg som redan innehåller bilder + not_ready: Kan inte bifoga filer som inte har behandlats färdigt. Försök igen om ett ögonblick! too_many: Det går inte att bifoga mer än 4 filer migrations: acct: användarnamn@domän av det nya kontot cancel: Avbryt omdirigering cancel_explanation: Avstängning av omdirigeringen kommer att återaktivera ditt nuvarande konto, men kommer inte att återskapa följare som har flyttats till det kontot. + cancelled_msg: Avbröt omdirigeringen. errors: already_moved: är samma konto som du redan har flyttat till missing_also_known_as: är inte ett alias för det här kontot @@ -761,21 +1132,29 @@ sv: warning: backreference_required: Det nya kontot måste först vara konfigurerat till att bakåt-referera till det här before: 'Vänligen läs dessa anteckningar noggrant innan du fortsätter:' + cooldown: Efter flytten följer en vänteperiod under vilken du inte kan flytta igen + disabled_account: Ditt nuvarande konto kommer inte att kunna användas fullt ut efteråt. Du kommer dock att ha tillgång till dataexport samt återaktivering. followers: Den här åtgärden kommer att flytta alla följare från det nuvarande kontot till det nya kontot + only_redirect_html: Alternativt kan du bara sätta upp en omdirigering på din profil. other_data: Ingen annan data kommer att flyttas automatiskt + redirect: Ditt nuvarande kontos profil kommer att uppdateras med ett meddelande om omdirigering och uteslutas från sökningar moderation: title: Moderera move_handler: carry_blocks_over_text: Den här användaren flyttades från %{acct} som du hade blockerat. carry_mutes_over_text: Den här användaren flyttade från %{acct} som du hade tystat. copy_account_note_text: 'Den här användaren flyttade från %{acct}, här var dina föregående anteckningar om dem:' + navigation: + toggle_menu: Växla meny notification_mailer: admin: + report: + subject: "%{name} skickade in en rapport" sign_up: subject: "%{name} registrerade sig" favourite: - body: 'Din status favoriserades av %{name}:' - subject: "%{name} favoriserade din status" + body: 'Din status favoritmarkerades av %{name}:' + subject: "%{name} favoritmarkerade din status" title: Ny favorit follow: body: "%{name} följer nu dig!" @@ -794,15 +1173,15 @@ sv: poll: subject: En undersökning av %{name} har avslutats reblog: - body: 'Din status knuffades av %{name}:' - subject: "%{name} knuffade din status" - title: Ny knuff + body: 'Ditt inlägg boostades av %{name}:' + subject: "%{name} boostade ditt inlägg" + title: Ny boostning status: - subject: "%{name} publicerade nyss" + subject: "%{name} publicerade just ett inlägg" update: subject: "%{name} redigerade ett inlägg" notifications: - email_events: Händelser för e-postaviseringar + email_events: Händelser för e-postnotiser email_events_hint: 'Välj händelser som du vill ta emot aviseringar för:' other_settings: Andra aviseringsinställningar number: @@ -816,6 +1195,7 @@ sv: thousand: K trillion: T otp_authentication: + code_hint: Ange koden som genererats av din autentiseringsapp för att bekräfta enable: Aktivera instructions_html: "Skanna den här QR-koden i Google Authenticator eller en liknande TOTP-app i din telefon. Från och med nu så kommer den appen att generera symboler som du måste skriva in när du ska logga in." setup: Konfigurera @@ -838,6 +1218,7 @@ sv: too_many_options: kan inte innehålla mer än %{max} objekt preferences: other: Annat + posting_defaults: Standardinställningar för inlägg public_timelines: Publika tidslinjer privacy_policy: title: Integritetspolicy @@ -863,6 +1244,8 @@ sv: status: Kontostatus remote_follow: missing_resource: Det gick inte att hitta den begärda omdirigeringsadressen för ditt konto + rss: + content_warning: 'Innehållsvarning:' sessions: activity: Senaste aktivitet browser: Webbläsare @@ -920,7 +1303,7 @@ sv: preferences: Inställningar profile: Profil relationships: Följer och följare - statuses_cleanup: Automatisk borttagning av inlägg + statuses_cleanup: Automatisk radering av inlägg two_factor_authentication: Tvåfaktorsautentisering webauthn_authentication: Säkerhetsnycklar statuses: @@ -935,7 +1318,7 @@ sv: video: one: "%{count} video" other: "%{count} videor" - boosted_from_html: Boosted från %{acct_link} + boosted_from_html: Boostad från %{acct_link} content_warning: 'Innehållsvarning: %{warning}' default_language: Samma som användargränssnittet disallowed_hashtags: @@ -943,14 +1326,14 @@ sv: other: 'innehöll de otillåtna hashtagarna: %{tags}' edited_at_html: 'Ändrad: %{date}' errors: - in_reply_not_found: Statusen du försöker svara på existerar inte. + in_reply_not_found: Inlägget du försöker svara på verkar inte existera. open_in_web: Öppna på webben over_character_limit: teckengräns på %{max} har överskridits pin_errors: direct: Inlägg som endast är synliga för nämnda användare kan inte fästas - limit: Du har redan fäst det maximala antalet toots - ownership: Någon annans toot kan inte fästas - reblog: Knuffar kan inte fästas + limit: Du har redan fäst det maximala antalet inlägg + ownership: Någon annans inlägg kan inte fästas + reblog: En boost kan inte fästas poll: total_people: one: "%{count} person" @@ -977,18 +1360,20 @@ sv: enabled: Ta automatiskt bort gamla inlägg exceptions: Undantag ignore_favs: Bortse från favoriter + ignore_reblogs: Ignorera boostningar interaction_exceptions: Undantag baserat på interaktioner + interaction_exceptions_explanation: Observera att det inte finns någon garanti att inlägg blir raderade om de går under favorit- eller boosttröskeln efter att en gång ha gått över dem. keep_direct: Behåll direktmeddelanden keep_direct_hint: Tar inte bort någon av dina direktmeddelanden - keep_media: Behåll inlägg med media-bilagor - keep_media_hint: Tar inte bort någon av dina inlägg som har media-bilagor - keep_pinned: Behåll fästade inlägg - keep_pinned_hint: Tar inte bort någon av dina fästade inlägg + keep_media: Behåll inlägg med mediebilagor + keep_media_hint: Tar inte bort någon av dina inlägg som har mediebilagor + keep_pinned: Behåll fästa inlägg + keep_pinned_hint: Raderar inte något av dina fästa inlägg keep_polls: Behåll undersökningar keep_polls_hint: Tar inte bort någon av dina undersökningar - keep_self_bookmark: Behåller inlägg som du har bokmärkt + keep_self_bookmark: Behåll inlägg du har bokmärkt keep_self_bookmark_hint: Tar inte bort dina egna inlägg om du har bokmärkt dem - keep_self_fav: Behåll inlägg som du har favorit-märkt + keep_self_fav: Behåll inlägg du favoritmarkerat min_age: '1209600': 2 veckor '15778476': 6 månader @@ -999,8 +1384,10 @@ sv: '63113904': 2 år '7889238': 3 månader min_age_label: Åldersgräns + min_reblogs: Behåll boostade inlägg i minst + min_reblogs_hint: Raderar inte något av dina inlägg som har blivit boostat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal boostningar stream_entries: - pinned: Fäst toot + pinned: Fäst inlägg reblogged: boostad sensitive_content: Känsligt innehåll strikes: @@ -1042,6 +1429,8 @@ sv: change_password: Ändra ditt lösenord title: En ny inloggning warning: + categories: + spam: Skräppost reason: 'Anledning:' statuses: 'Inlägg citerades:' subject: @@ -1058,7 +1447,7 @@ sv: welcome: edit_profile_action: Profilinställning explanation: Här är några tips för att komma igång - final_action: Börja posta + final_action: Börja göra inlägg full_handle: Ditt fullständiga användarnamn/mastodonadress full_handle_hint: Det här är vad du skulle berätta för dina vänner så att de kan meddela eller följa dig från en annan instans. subject: Välkommen till Mastodon @@ -1067,7 +1456,7 @@ sv: follow_limit_reached: Du kan inte följa fler än %{limit} personer invalid_otp_token: Ogiltig tvåfaktorskod otp_lost_help_html: Om du förlorat åtkomst till båda kan du komma i kontakt med %{email} - seamless_external_login: Du är inloggad via en extern tjänst, så lösenord och e-postinställningar är inte tillgängliga. + seamless_external_login: Du är inloggad via en extern tjänst, inställningar för lösenord och e-post är därför inte tillgängliga. signed_in_as: 'Inloggad som:' verification: verification: Bekräftelse diff --git a/config/locales/th.yml b/config/locales/th.yml index f809ba73f4..d55e996250 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -204,6 +204,7 @@ th: reject_user: ปฏิเสธผู้ใช้ remove_avatar_user: เอาภาพประจำตัวออก reopen_report: เปิดรายงานใหม่ + resend_user: ส่งจดหมายยืนยันใหม่ reset_password_user: ตั้งรหัสผ่านใหม่ resolve_report: แก้ปัญหารายงาน sensitive_account: บังคับให้บัญชีละเอียดอ่อน @@ -262,6 +263,7 @@ th: reject_user_html: "%{name} ได้ปฏิเสธการลงทะเบียนจาก %{target}" remove_avatar_user_html: "%{name} ได้เอาภาพประจำตัวของ %{target} ออก" reopen_report_html: "%{name} ได้เปิดรายงาน %{target} ใหม่" + resend_user_html: "%{name} ได้ส่งอีเมลยืนยันสำหรับ %{target} ใหม่" reset_password_user_html: "%{name} ได้ตั้งรหัสผ่านของผู้ใช้ %{target} ใหม่" resolve_report_html: "%{name} ได้แก้ปัญหารายงาน %{target}" sensitive_account_html: "%{name} ได้ทำเครื่องหมายสื่อของ %{target} ว่าละเอียดอ่อน" @@ -692,6 +694,7 @@ th: open: เปิดโพสต์ original_status: โพสต์ดั้งเดิม reblogs: การดัน + status_changed: เปลี่ยนโพสต์แล้ว title: โพสต์ของบัญชี trending: กำลังนิยม visibility: การมองเห็น @@ -1163,6 +1166,8 @@ th: carry_blocks_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ปิดกั้น carry_mutes_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ซ่อน copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้านี้ของคุณเกี่ยวกับผู้ใช้:' + navigation: + toggle_menu: เปิด/ปิดเมนู notification_mailer: admin: report: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 2c4285ca74..e46a88fce3 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -207,6 +207,7 @@ tr: reject_user: Kullanıcıyı Reddet remove_avatar_user: Profil Resmini Kaldır reopen_report: Şikayeti Tekrar Aç + resend_user: Doğrulama E-postasını Tekrar Gönder reset_password_user: Parolayı Sıfırla resolve_report: Şikayeti Çöz sensitive_account: Hesabınızdaki medyayı hassas olarak işaretleyin @@ -265,6 +266,7 @@ tr: reject_user_html: "%{name}, %{target} konumundan kaydı reddetti" remove_avatar_user_html: "%{name}, %{target} kullanıcısının avatarını kaldırdı" reopen_report_html: "%{name}, %{target} şikayetini yeniden açtı" + resend_user_html: "%{name}, %{target} için doğrulama e-postasını tekrar gönderdi" reset_password_user_html: "%{name}, %{target} kullanıcısının parolasını sıfırladı" resolve_report_html: "%{name}, %{target} şikayetini çözdü" sensitive_account_html: "%{name}, %{target} kullanıcısının medyasını hassas olarak işaretledi" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index ba380339af..7c4702966f 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -197,7 +197,7 @@ uk: destroy_email_domain_block: Видалити блокування поштового домену destroy_instance: Очистити домен destroy_ip_block: Видалити правило IP - destroy_status: Видалити пост + destroy_status: Видалити допис destroy_unavailable_domain: Видалити недоступний домен destroy_user_role: Знищити роль disable_2fa_user: Вимкнути 2FA @@ -213,6 +213,7 @@ uk: reject_user: Відхилити користувача remove_avatar_user: Видалити аватар reopen_report: Поновити скаргу + resend_user: Повторне підтвердження пошти reset_password_user: Скинути пароль resolve_report: Розв'язати скаргу sensitive_account: Позначити делікатним медіа вашого облікового запису @@ -271,6 +272,7 @@ uk: reject_user_html: "%{name} відхиляє реєстрацію від %{target}" remove_avatar_user_html: "%{name} прибирає аватар %{target}" reopen_report_html: "%{name} знову відкриває звіт %{target}" + resend_user_html: "%{name} було надіслано листа з підтвердженням для %{target}" reset_password_user_html: "%{name} скидає пароль користувача %{target}" resolve_report_html: "%{name} розв'язує скаргу %{target}" sensitive_account_html: "%{name} позначає медіа від %{target} делікатним" @@ -397,7 +399,7 @@ uk: create: Створити блокування hint: Блокування домену не завадить створенню нових облікових записів у базі даних, але ретроактивно та автоматично застосує до них конкретні методи модерації. severity: - desc_html: "Глушення зробить пости облікового запису невидимими для всіх, окрім його підписників. Заморожування видалить увесь контент, медіа та дані профілю облікового запису. Якщо ви хочете лише заборонити медіафайли, оберіть Нічого." + desc_html: "Глушення зробить дописи облікового запису невидимими для всіх, окрім його підписників. Заморожування видалить усі матеріали, медіа та дані профілю облікового запису. Якщо ви хочете лише заборонити медіафайли, оберіть Нічого." noop: Нічого silence: Глушення suspend: Блокування @@ -792,7 +794,7 @@ uk: links: allow: Дозволити посилання allow_provider: Дозволити публікатора - description_html: Це посилання, з яких наразі багаторазово поширюються записи, з яких Ваш сервер бачить пости. Це може допомогти вашим користувачам дізнатися, що відбувається в світі. Посилання не відображається публічно, поки ви не затверджуєте його публікацію. Ви також можете дозволити або відхилити окремі посилання. + description_html: Це посилання, з яких наразі багаторазово поширюються записи, з яких ваш сервер бачить дописи. Це може допомогти вашим користувачам дізнатися, що відбувається у світі. Посилання не показується публічно, поки ви не затверджуєте його публікацію. Ви також можете дозволити або відхилити окремі посилання. disallow: Заборонити посилання disallow_provider: Заборонити публікатора no_link_selected: Жодне посилання не було змінено, оскільки жодне не було вибрано @@ -954,7 +956,7 @@ uk: description: prefix_invited_by_user: "@%{name} запрошує вас приєднатися до цього сервера Mastodon!" prefix_sign_up: Зареєструйтеся на Mastodon сьогодні! - suffix: Маючи обліковий запис, ви зможете підписуватися на людей, публікувати пости та листуватися з користувачами будь-якого сервера Mastodon! + suffix: Маючи обліковий запис, ви зможете підписуватися на людей, публікувати дописи та листуватися з користувачами будь-якого сервера Mastodon! didnt_get_confirmation: Ви не отримали інструкції з підтвердження? dont_have_your_security_key: Не маєте ключа безпеки? forgot_password: Забули пароль? @@ -1044,7 +1046,7 @@ uk: warning: before: 'До того як продовжити, будь ласка уважно прочитайте це:' caches: Інформація, кешована іншими серверами, може залишитися - data_removal: Ваші пости та інші дані будуть видалені назавжди + data_removal: Ваші дописи й інші дані будуть вилучені назавжди email_change_html: Ви можете змінити вашу електронну адресу, не видаляючи ваш обліковий запис email_contact_html: Якщо його все ще немає, ви можете написали до %{email} для допомоги email_reconfirmation_html: Якщо ви не отримали електронного листа з підтвердженням, ви можете запросити його знову @@ -1106,7 +1108,7 @@ uk: archive_takeout: date: Дата download: Завантажити ваш архів - hint_html: Ви можете зробити запит на архів ваших постів та вивантаженого медіа контенту. Завантажені дані будуть у форматі ActivityPub, доступні для читання будь-яким сумісним програмним забезпеченням. Ви можете робити запит на архів кожні 7 днів. + hint_html: Ви можете зробити запит на архів ваших дописів та вивантаженого медіавмісту. Експортовані дані будуть у форматі ActivityPub, доступні для читання будь-яким сумісним програмним забезпеченням. Ви можете робити запит на архів що 7 днів. in_progress: Збираємо ваш архів... request: Зробити запит на архів size: Розмір @@ -1121,7 +1123,7 @@ uk: add_new: Додати новий errors: limit: Ви досягли максимальної кількості хештеґів - hint_html: "Що таке виділені хештеґи? Це ті, що відображаються ни видному місці у вашому публічному профілі. Вони дають змогу людям фільтрувати ваші публічні пости за цими хештеґами. Це дуже корисно для відстеження мистецьких творів та довготривалих проектів." + hint_html: "Що таке виділені хештеґи? Це ті, що показуються на видному місці у вашому загальнодоступному профілі. Вони дають змогу людям фільтрувати ваші загальнодоступні дописи за цими хештеґами. Це дуже корисно для стеження з мистецькими творами та довготривалими проєктами." filters: contexts: account: Профілі @@ -1355,7 +1357,7 @@ uk: code_hint: Для підтверждення введіть код, згенерований додатком аутентифікатора description_html: При увімкненні двофакторної аутентифікації, вхід буде вимагати від Вас використання Вашого телефона для генерації вхідного коду. enable: Увімкнути - instructions_html: "Відскануйте цей QR-код за допомогою Google Authenticator чи іншого TOTP-додатку на Вашому телефоні. Відтепер додаток буде генерувати коди, які буде необхідно ввести для входу." + instructions_html: "Скануйте цей QR-код за допомогою Google Authenticator чи іншого TOTP-застосунку на своєму телефоні. Відтепер застосунок генеруватиме коди, які буде необхідно ввести для входу." manual_instructions: 'Якщо ви не можете сканувати QR-код і потрібно ввести його вручну, ось він:' setup: Налаштувати wrong_code: Введений код неправильний! Чи правильно встановлений час на сервері та пристрої? @@ -1378,7 +1380,7 @@ uk: too_many_options: не може мати більше ніж %{max} варіантів preferences: other: Інше - posting_defaults: Промовчання для постів + posting_defaults: Усталені налаштування дописів public_timelines: Глобальні стрічки privacy_policy: title: Політика конфіденційності @@ -1515,9 +1517,9 @@ uk: over_character_limit: перевищено ліміт символів %{max} pin_errors: direct: Не можливо прикріпити дописи, які видимі лише згаданим користувачам - limit: Ви вже закріпили максимальну кількість постів - ownership: Не можна закріпити чужий пост - reblog: Не можна закріпити просунутий пост + limit: Ви вже закріпили максимальну кількість дописів + ownership: Не можна закріпити чужий допис + reblog: Не можна закріпити просунутий допис poll: total_people: few: "%{count} людей" @@ -1580,7 +1582,7 @@ uk: min_reblogs: Залишати дописи передмухнуті більше ніж min_reblogs_hint: Не видаляти ваших дописів, що були передмухнуті більш ніж вказану кількість разів. Залиште порожнім, щоб видаляти дописи, попри кількість їхніх передмухів stream_entries: - pinned: Закріплений пост + pinned: Закріплений допис reblogged: поширив sensitive_content: Дражливий зміст strikes: @@ -1668,7 +1670,7 @@ uk: edit_profile_action: Налаштувати профіль edit_profile_step: Ви можете налаштувати свій профіль, завантаживши зображення профілю, змінивши відображуване ім'я та інше. Ви можете включити для перегляду нових підписників до того, як вони матимуть змогу підписатися на вас. explanation: Ось декілька порад для початку - final_action: Почати постити + final_action: Почати писати final_step: 'Почніть дописувати! Навіть не підписавшись на вас, інші зможуть побачити ваші пости, наприклад, у локальній стрічці та у хештеґах. Якщо ви хочете представитися, можете скористатися хештеґом #introductions.' full_handle: Ваше звернення full_handle_hint: Те, що ви хочете сказати друзям, щоб вони могли написати вам або підписатися з інших сайтів. diff --git a/config/locales/vi.yml b/config/locales/vi.yml index d032691bf4..a4c2595ad9 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -59,7 +59,7 @@ vi: disable_sign_in_token_auth: Vô hiệu hóa xác minh bằng email disable_two_factor_authentication: Vô hiệu hóa xác minh 2 bước disabled: Tạm khóa - display_name: Tên hiển thị + display_name: Biệt danh domain: Máy chủ edit: Chỉnh sửa email: Email @@ -204,6 +204,7 @@ vi: reject_user: Từ chối người dùng remove_avatar_user: Xóa ảnh đại diện reopen_report: Mở lại báo cáo + resend_user: Gửi lại email xác nhận reset_password_user: Đặt lại mật khẩu resolve_report: Xử lý báo cáo sensitive_account: Áp đặt nhạy cảm @@ -262,6 +263,7 @@ vi: reject_user_html: "%{name} đã từ chối đăng ký từ %{target}" remove_avatar_user_html: "%{name} đã xóa ảnh đại diện của %{target}" reopen_report_html: "%{name} mở lại báo cáo %{target}" + resend_user_html: "%{name} gửi lại email xác nhận cho %{target}" reset_password_user_html: "%{name} đã đặt lại mật khẩu của %{target}" resolve_report_html: "%{name} đã xử lý báo cáo %{target}" sensitive_account_html: "%{name} đánh dấu nội dung của %{target} là nhạy cảm" @@ -631,7 +633,7 @@ vi: manage_settings: Quản lý thiết lập manage_settings_description: Cho phép thay đổi thiết lập máy chủ manage_taxonomies: Quản lý phân loại - manage_taxonomies_description: Cho phép đánh giá nội dung xu hướng và cập nhật cài đặt hashtag + manage_taxonomies_description: Cho phép đánh giá nội dung thịnh hành và cập nhật cài đặt hashtag manage_user_access: Quản lý người dùng truy cập manage_user_access_description: Cho phép vô hiệu hóa xác thực hai bước của người dùng khác, thay đổi địa chỉ email và đặt lại mật khẩu của họ manage_users: Quản lý người dùng @@ -673,7 +675,7 @@ vi: profile_directory: Cộng đồng public_timelines: Bảng tin title: Khám phá - trends: Xu hướng + trends: Thịnh hành domain_blocks: all: Tới mọi người disabled: Không ai @@ -712,7 +714,7 @@ vi: reblogs: Lượt đăng lại status_changed: Tút đã thay đổi title: Toàn bộ tút - trending: Xu hướng + trending: Thịnh hành visibility: Hiển thị with_media: Có media strikes: @@ -758,14 +760,14 @@ vi: no_publisher_selected: Không có nguồn đăng nào thay đổi vì không có nguồn đăng nào được chọn shared_by_over_week: other: "%{count} người chia sẻ tuần rồi" - title: Liên kết xu hướng + title: Liên kết nổi bật usage_comparison: Chia sẻ %{today} lần hôm nay, so với %{yesterday} lần hôm qua only_allowed: Chỉ cho phép pending_review: Đang chờ preview_card_providers: - allowed: Liên kết từ nguồn đăng này có thể thành xu hướng - description_html: Đây là những nguồn mà từ đó các liên kết thường được chia sẻ trên máy chủ của bạn. Các liên kết sẽ không được trở thành xu hướng trừ khi bạn cho phép nguồn. Sự cho phép (hoặc cấm) của bạn áp dụng luôn cho các tên miền phụ. - rejected: Liên kết từ nguồn đăng không thể thành xu hướng + allowed: Liên kết từ nguồn đăng này có thể nổi bật + description_html: Đây là những nguồn mà từ đó các liên kết thường được chia sẻ trên máy chủ của bạn. Các liên kết sẽ không thể thịnh hành trừ khi bạn cho phép nguồn. Sự cho phép (hoặc cấm) của bạn áp dụng luôn cho các tên miền phụ. + rejected: Liên kết từ nguồn đăng không thể nổi bật title: Nguồn đăng rejected: Đã cấm statuses: @@ -778,7 +780,7 @@ vi: not_discoverable: Tác giả đã chọn không tham gia mục khám phá shared_by: other: Được thích và đăng lại %{friendly_count} lần - title: Tút xu hướng + title: Tút nổi bật tags: current_score: Chỉ số gần đây %{score} dashboard: @@ -791,18 +793,18 @@ vi: listable: Có thể đề xuất no_tag_selected: Không có hashtag thịnh hành nào thay đổi vì không có hashtag nào được chọn not_listable: Không thể đề xuất - not_trendable: Không xuất hiện xu hướng + not_trendable: Không cho thịnh hành not_usable: Không được phép dùng peaked_on_and_decaying: Đỉnh điểm %{date}, giờ đang giảm - title: Hashtag xu hướng - trendable: Có thể trở thành xu hướng - trending_rank: 'Xu hướng #%{rank}' + title: Hashtag nổi bật + trendable: Cho phép thịnh hành + trending_rank: 'Nổi bật #%{rank}' usable: Có thể dùng usage_comparison: Dùng %{today} lần hôm nay, so với %{yesterday} hôm qua used_by_over_week: other: "%{count} người dùng tuần rồi" title: Xu hướng - trending: Xu hướng + trending: Thịnh hành warning_presets: add_new: Thêm mới delete: Xóa bỏ @@ -851,14 +853,14 @@ vi: new_trends: body: 'Các mục sau đây cần được xem xét trước khi chúng hiển thị công khai:' new_trending_links: - title: Liên kết xu hướng + title: Liên kết nổi bật new_trending_statuses: - title: Tút xu hướng + title: Tút nổi bật new_trending_tags: - no_approved_tags: Hiện tại không có hashtag xu hướng nào được duyệt. - requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt hashtag xu hướng, với hiện tại là "%{lowest_tag_name}" với điểm số %{lowest_tag_score}.' - title: Hashtag xu hướng - subject: Xu hướng mới chờ duyệt trên %{instance} + no_approved_tags: Hiện tại không có hashtag nổi bật nào được duyệt. + requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt hashtag nổi bật, với hiện tại là "%{lowest_tag_name}" với điểm số %{lowest_tag_score}.' + title: Hashtag nổi bật + subject: Nội dung nổi bật chờ duyệt trên %{instance} aliases: add_new: Kết nối tài khoản created_msg: Tạo thành công một tên hiển thị mới. Bây giờ bạn có thể bắt đầu di chuyển từ tài khoản cũ. @@ -1108,7 +1110,7 @@ vi: hint: Bộ lọc này áp dụng để chọn các tút riêng lẻ bất kể các tiêu chí khác. Bạn có thể thêm các tút khác vào bộ lọc này từ giao diện web. title: Những tút đã lọc footer: - trending_now: Xu hướng + trending_now: Thịnh hành generic: all: Tất cả all_items_on_page_selected_html: @@ -1380,13 +1382,13 @@ vi: revoke: Gỡ revoke_success: Gỡ phiên thành công title: Phiên - view_authentication_history: Xem lại lịch sử đăng nhập tài khoản của bạn + view_authentication_history: Xem lại lịch sử đăng nhập settings: account: Bảo mật account_settings: Cài đặt tài khoản aliases: Kết nối tài khoản appearance: Giao diện - authorized_apps: App đã dùng + authorized_apps: Ứng dụng back: Quay lại Mastodon delete: Xóa tài khoản development: Lập trình @@ -1570,7 +1572,7 @@ vi: suspend: Tài khoản bị vô hiệu hóa welcome: edit_profile_action: Cài đặt trang hồ sơ - edit_profile_step: Bạn có thể chỉnh sửa trang hồ sơ của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Bạn cũng có thể tự phê duyệt những người theo dõi mới. + edit_profile_step: Bạn có thể chỉnh sửa trang hồ sơ của mình bằng cách tải lên ảnh đại diện, ảnh bìa, đổi biệt danh và hơn thế nữa. Bạn cũng có thể tự phê duyệt những người theo dõi mới. explanation: Dưới đây là một số mẹo để giúp bạn bắt đầu final_action: Viết tút mới final_step: 'Viết tút mới! Ngay cả khi chưa có người theo dõi, người khác vẫn có thể xem tút công khai của bạn trên bảng tin máy chủ và qua hashtag. Hãy giới thiệu bản thân với hashtag #introductions.' diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 92ae4cbe74..d0b3b15509 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -204,6 +204,7 @@ zh-CN: reject_user: 拒绝用户 remove_avatar_user: 移除头像 reopen_report: 重开举报 + resend_user: 重新发送确认电子邮件 reset_password_user: 重置密码 resolve_report: 处理举报 sensitive_account: 将你账号中的媒体标记为敏感内容 @@ -262,6 +263,7 @@ zh-CN: reject_user_html: "%{name} 拒绝了用户 %{target} 的注册" remove_avatar_user_html: "%{name} 删除了 %{target} 的头像" reopen_report_html: "%{name} 重开了举报 %{target}" + resend_user_html: "%{name} 给 %{target} 发送了重新确认电子邮件" reset_password_user_html: "%{name} 重置了用户 %{target} 的密码" resolve_report_html: "%{name} 处理了举报 %{target}" sensitive_account_html: "%{name} 将 %{target} 的媒体标记为敏感内容" @@ -1223,6 +1225,8 @@ zh-CN: carry_blocks_over_text: 这个用户迁移自你屏蔽过的 %{acct} carry_mutes_over_text: 这个用户迁移自你隐藏过的 %{acct} copy_account_note_text: 这个用户迁移自 %{acct},你曾为其添加备注: + navigation: + toggle_menu: 切换菜单 notification_mailer: admin: report: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 88447d1861..f7ace47afd 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -204,6 +204,7 @@ zh-TW: reject_user: 回絕使用者 remove_avatar_user: 刪除大頭貼 reopen_report: 重開舉報 + resend_user: 重新發送驗證信 reset_password_user: 重設密碼 resolve_report: 消除舉報 sensitive_account: 把您的帳號的媒體標記為敏感內容 @@ -262,6 +263,7 @@ zh-TW: reject_user_html: "%{name} 回絕了從 %{target} 而來的註冊" remove_avatar_user_html: "%{name} 移除了 %{target} 的大頭貼" reopen_report_html: "%{name} 重新開啟 %{target} 的檢舉" + resend_user_html: "%{name} 已重新發送驗證信給 %{target}" reset_password_user_html: "%{name} 重新設定了使用者 %{target} 的密碼" resolve_report_html: "%{name} 處理了 %{target} 的檢舉" sensitive_account_html: "%{name} 將 %{target} 的媒體檔案標記為敏感內容" From 2f8fb49d1314db931385089bc9004a48700161ad Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 5 Nov 2022 11:55:25 +0100 Subject: [PATCH 262/500] Fix users not being able to change their hide_followers_count setting (#1889) --- app/lib/user_settings_decorator.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb index 1d70ed36ab..260077a1c1 100644 --- a/app/lib/user_settings_decorator.rb +++ b/app/lib/user_settings_decorator.rb @@ -32,6 +32,7 @@ class UserSettingsDecorator user.settings['system_font_ui'] = system_font_ui_preference if change?('setting_system_font_ui') user.settings['system_emoji_font'] = system_emoji_font_preference if change?('setting_system_emoji_font') user.settings['noindex'] = noindex_preference if change?('setting_noindex') + user.settings['hide_followers_count'] = hide_followers_count_preference if change?('setting_hide_followers_count') user.settings['flavour'] = flavour_preference if change?('setting_flavour') user.settings['skin'] = skin_preference if change?('setting_skin') user.settings['aggregate_reblogs'] = aggregate_reblogs_preference if change?('setting_aggregate_reblogs') @@ -117,6 +118,10 @@ class UserSettingsDecorator settings['setting_skin'] end + def hide_followers_count_preference + boolean_cast_setting 'setting_hide_followers_count' + end + def show_application_preference boolean_cast_setting 'setting_show_application' end From 9616f5bb2248b4bf8f1e51130af1f19a94abf6db Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 5 Nov 2022 13:43:37 +0100 Subject: [PATCH 263/500] Fix compose form submission reloading web interface (#19762) * Fix compose form submission reloading web interface Fix regression introduced by #19742 * Fix various compose form buttons being handled like submit buttons * Fix coding style issue * Fix missing onClick prop check --- .../__tests__/__snapshots__/button-test.js.snap | 7 +++++++ app/javascript/mastodon/components/button.js | 6 +++++- app/javascript/mastodon/components/icon_button.js | 1 + app/javascript/mastodon/components/load_more.js | 2 +- .../features/compose/components/compose_form.js | 11 +++++++---- .../compose/components/emoji_picker_dropdown.js | 12 ++++++------ .../features/compose/components/language_dropdown.js | 2 +- .../features/compose/components/poll_form.js | 2 +- .../features/compose/components/text_icon_button.js | 1 + .../mastodon/features/compose/components/upload.js | 6 +++--- app/javascript/mastodon/features/favourites/index.js | 2 +- .../mastodon/features/filters/select_filter.js | 2 +- .../mastodon/features/home_timeline/index.js | 1 + .../mastodon/features/list_timeline/index.js | 4 ++-- app/javascript/mastodon/features/reblogs/index.js | 2 +- .../mastodon/features/status/components/card.js | 2 +- app/javascript/mastodon/features/status/index.js | 2 +- 17 files changed, 41 insertions(+), 24 deletions(-) diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap index 86fbba917b..bfc091d450 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/button-test.js.snap @@ -4,6 +4,7 @@ exports[` @@ -53,6 +59,7 @@ exports[` diff --git a/app/javascript/mastodon/components/button.js b/app/javascript/mastodon/components/button.js index bcb855c7c1..42ce01f384 100644 --- a/app/javascript/mastodon/components/button.js +++ b/app/javascript/mastodon/components/button.js @@ -16,8 +16,12 @@ export default class Button extends React.PureComponent { children: PropTypes.node, }; + static defaultProps = { + type: 'button', + }; + handleClick = (e) => { - if (!this.props.disabled) { + if (!this.props.disabled && this.props.onClick) { this.props.onClick(e); } } diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js index 47945c475f..8fd9e10c04 100644 --- a/app/javascript/mastodon/components/icon_button.js +++ b/app/javascript/mastodon/components/icon_button.js @@ -141,6 +141,7 @@ export default class IconButton extends React.PureComponent { return ( ); diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index 9f5c3b3144..6a65f44da3 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -93,7 +93,7 @@ class ComposeForm extends ImmutablePureComponent { return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > 500 || (isOnlyWhitespace && !anyMedia)); } - handleSubmit = () => { + handleSubmit = (e) => { if (this.props.text !== this.autosuggestTextarea.textarea.value) { // Something changed the text inside the textarea (e.g. browser extensions like Grammarly) // Update the state to match the current text @@ -105,6 +105,10 @@ class ComposeForm extends ImmutablePureComponent { } this.props.onSubmit(this.context.router ? this.context.router.history : null); + + if (e) { + e.preventDefault(); + } } onSuggestionsClearRequested = () => { @@ -217,7 +221,7 @@ class ComposeForm extends ImmutablePureComponent { } return ( -
      + @@ -280,9 +284,8 @@ class ComposeForm extends ImmutablePureComponent {
      - - - - - + + + + + +
      ); } diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.js b/app/javascript/mastodon/features/compose/components/language_dropdown.js index 0af3db7a46..e48fa60ffb 100644 --- a/app/javascript/mastodon/features/compose/components/language_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/language_dropdown.js @@ -227,7 +227,7 @@ class LanguageDropdownMenu extends React.PureComponent {
      - +
      diff --git a/app/javascript/mastodon/features/compose/components/poll_form.js b/app/javascript/mastodon/features/compose/components/poll_form.js index db49f90eb4..ede29b8a08 100644 --- a/app/javascript/mastodon/features/compose/components/poll_form.js +++ b/app/javascript/mastodon/features/compose/components/poll_form.js @@ -157,7 +157,7 @@ class PollForm extends ImmutablePureComponent {
      - + {/* eslint-disable-next-line jsx-a11y/no-onchange */} - +
      diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js index 838ed7dd84..749a47e76a 100644 --- a/app/javascript/mastodon/features/home_timeline/index.js +++ b/app/javascript/mastodon/features/home_timeline/index.js @@ -126,6 +126,7 @@ class HomeTimeline extends React.PureComponent { if (hasAnnouncements) { announcementsButton = ( -
      diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js index 70d338ef14..36ca11d1a7 100644 --- a/app/javascript/mastodon/features/reblogs/index.js +++ b/app/javascript/mastodon/features/reblogs/index.js @@ -68,7 +68,7 @@ class Reblogs extends ImmutablePureComponent { showBackButton multiColumn={multiColumn} extraButton={( - + )} /> diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js index 3d81bcb29b..82537dd5d9 100644 --- a/app/javascript/mastodon/features/status/components/card.js +++ b/app/javascript/mastodon/features/status/components/card.js @@ -247,7 +247,7 @@ export default class Card extends React.PureComponent { {revealed && (
      - + {horizontal && }
      diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index 02f390c6a1..c0ba1f2d61 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -619,7 +619,7 @@ class Status extends ImmutablePureComponent { showBackButton multiColumn={multiColumn} extraButton={( - + )} /> From c95d9aab56dcde8c183f15d565cd1e8746d42c48 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Sat, 5 Nov 2022 13:43:47 +0100 Subject: [PATCH 264/500] Fix JavaScript console error on upload editing status (#19769) --- app/javascript/mastodon/features/compose/components/upload.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.js index 44bf9a24aa..0b2dcf08f3 100644 --- a/app/javascript/mastodon/features/compose/components/upload.js +++ b/app/javascript/mastodon/features/compose/components/upload.js @@ -17,7 +17,7 @@ export default class Upload extends ImmutablePureComponent { media: ImmutablePropTypes.map.isRequired, onUndo: PropTypes.func.isRequired, onOpenFocalPoint: PropTypes.func.isRequired, - isEditingStatus: PropTypes.func.isRequired, + isEditingStatus: PropTypes.bool.isRequired, }; handleUndoClick = e => { From 887976814a2639a666896ae94b14c64e2834e26d Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Sat, 5 Nov 2022 13:45:06 +0100 Subject: [PATCH 265/500] Fix JavaScript console warning when loading notifications (#19772) --- app/javascript/mastodon/features/notifications/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js index f1bc5f160b..826a7e9ad3 100644 --- a/app/javascript/mastodon/features/notifications/index.js +++ b/app/javascript/mastodon/features/notifications/index.js @@ -58,7 +58,7 @@ const getNotifications = createSelector([ const mapStateToProps = state => ({ showFilterBar: state.getIn(['settings', 'notifications', 'quickFilter', 'show']), notifications: getNotifications(state), - isLoading: state.getIn(['notifications', 'isLoading'], true), + isLoading: state.getIn(['notifications', 'isLoading'], 0) > 0, isUnread: state.getIn(['notifications', 'unread']) > 0 || state.getIn(['notifications', 'pendingItems']).size > 0, hasMore: state.getIn(['notifications', 'hasMore']), numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size, From 29604763d7e8b639a21afeb6c8d8386d2226ddc8 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Sat, 5 Nov 2022 18:27:44 +0200 Subject: [PATCH 266/500] Remove broken link references to bug bounty program (#19779) The link https://app.intigriti.com/programs/mastodon/mastodonio/detail no longer works * Closes #19491 Signed-off-by: Yarden Shoham Signed-off-by: Yarden Shoham --- .github/ISSUE_TEMPLATE/config.yml | 5 +---- SECURITY.md | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 7c0dbaf670..fd62889d05 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,7 +2,4 @@ blank_issues_enabled: false contact_links: - name: GitHub Discussions url: https://github.com/mastodon/mastodon/discussions - about: Please ask and answer questions here. - - name: Bug Bounty Program - url: https://app.intigriti.com/programs/mastodon/mastodonio/detail - about: Please report security vulnerabilities here. + about: Please ask and answer questions here. \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md index 62e23f7360..9a72f3640b 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,6 +1,6 @@ # Security Policy -If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you should submit the report through our [Bug Bounty Program][bug-bounty]. Alternatively, you can reach us at . +If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you can reach us at . You should *not* report such issues on GitHub or in other public spaces to give us time to publish a fix for the issue without exposing Mastodon's users to increased risk. @@ -16,5 +16,3 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through | 3.4.x | Yes | | 3.3.x | No | | < 3.3 | No | - -[bug-bounty]: https://app.intigriti.com/programs/mastodon/mastodonio/detail From 0498b106c9d632d761dc556e9d471eb6aec846c5 Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Sat, 5 Nov 2022 17:29:20 +0100 Subject: [PATCH 267/500] Add S3 existing secret to sidekiq (#19778) --- chart/templates/deployment-sidekiq.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index 56ba257b59..4b108d79df 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -82,6 +82,18 @@ spec: secretKeyRef: name: {{ template "mastodon.redis.secretName" . }} key: redis-password + {{- if (and .Values.mastodon.s3.enabled .Values.mastodon.s3.existingSecret) }} + - name: "AWS_SECRET_ACCESS_KEY" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.s3.existingSecret }} + key: AWS_SECRET_ACCESS_KEY + - name: "AWS_ACCESS_KEY_ID" + valueFrom: + secretKeyRef: + name: {{ .Values.mastodon.s3.existingSecret }} + key: AWS_ACCESS_KEY_ID + {{- end -}} {{- if .Values.mastodon.smtp.existingSecret }} - name: "SMTP_LOGIN" valueFrom: From 312d616371096235f1f317041300b8220c447613 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 5 Nov 2022 18:28:13 +0100 Subject: [PATCH 268/500] Change sign-in banner to reflect disabled or moved account status (#19773) --- app/helpers/application_helper.rb | 5 + .../mastodon/containers/mastodon.js | 2 + .../ui/components/disabled_account_banner.js | 92 +++++++++++++++++++ .../ui/components/navigation_panel.js | 5 +- app/javascript/mastodon/initial_state.js | 4 + .../styles/mastodon/components.scss | 14 +++ app/presenters/initial_state_presenter.rb | 3 +- app/serializers/initial_state_serializer.rb | 5 + 8 files changed, 127 insertions(+), 3 deletions(-) create mode 100644 app/javascript/mastodon/features/ui/components/disabled_account_banner.js diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8706f5c2ae..4c20f1e140 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -211,6 +211,11 @@ module ApplicationHelper state_params[:admin] = Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, '')) end + if user_signed_in? && !current_user.functional? + state_params[:disabled_account] = current_account + state_params[:moved_to_account] = current_account.moved_to_account + end + if single_user_mode? state_params[:owner] = Account.local.without_suspended.where('id > 0').first end diff --git a/app/javascript/mastodon/containers/mastodon.js b/app/javascript/mastodon/containers/mastodon.js index 730695c49d..724719f74f 100644 --- a/app/javascript/mastodon/containers/mastodon.js +++ b/app/javascript/mastodon/containers/mastodon.js @@ -28,6 +28,7 @@ store.dispatch(fetchCustomEmojis()); const createIdentityContext = state => ({ signedIn: !!state.meta.me, accountId: state.meta.me, + disabledAccountId: state.meta.disabled_account_id, accessToken: state.meta.access_token, permissions: state.role ? state.role.permissions : 0, }); @@ -42,6 +43,7 @@ export default class Mastodon extends React.PureComponent { identity: PropTypes.shape({ signedIn: PropTypes.bool.isRequired, accountId: PropTypes.string, + disabledAccountId: PropTypes.string, accessToken: PropTypes.string, }).isRequired, }; diff --git a/app/javascript/mastodon/features/ui/components/disabled_account_banner.js b/app/javascript/mastodon/features/ui/components/disabled_account_banner.js new file mode 100644 index 0000000000..c9845d917c --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/disabled_account_banner.js @@ -0,0 +1,92 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { Link } from 'react-router-dom'; +import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; +import { disabledAccountId, movedToAccountId, domain } from 'mastodon/initial_state'; +import { openModal } from 'mastodon/actions/modal'; +import { logOut } from 'mastodon/utils/log_out'; + +const messages = defineMessages({ + logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, + logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' }, +}); + +const mapStateToProps = (state) => ({ + disabledAcct: state.getIn(['accounts', disabledAccountId, 'acct']), + movedToAcct: movedToAccountId ? state.getIn(['accounts', movedToAccountId, 'acct']) : undefined, +}); + +const mapDispatchToProps = (dispatch, { intl }) => ({ + onLogout () { + dispatch(openModal('CONFIRM', { + message: intl.formatMessage(messages.logoutMessage), + confirm: intl.formatMessage(messages.logoutConfirm), + closeWhenConfirm: false, + onConfirm: () => logOut(), + })); + }, +}); + +export default @injectIntl +@connect(mapStateToProps, mapDispatchToProps) +class DisabledAccountBanner extends React.PureComponent { + + static propTypes = { + disabledAcct: PropTypes.string.isRequired, + movedToAcct: PropTypes.string, + onLogout: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + }; + + handleLogOutClick = e => { + e.preventDefault(); + e.stopPropagation(); + + this.props.onLogout(); + + return false; + } + + render () { + const { disabledAcct, movedToAcct } = this.props; + + const disabledAccountLink = ( + + {disabledAcct}@{domain} + + ); + + return ( +
      +

      + {movedToAcct ? ( + {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@{domain}`}, + }} + /> + ) : ( + + )} +

      + + + + +
      + ); + } + +}; diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 4e9e39e2f5..9a9309be05 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -5,6 +5,7 @@ import { Link } from 'react-router-dom'; import Logo from 'mastodon/components/logo'; import { timelinePreview, showTrends } from 'mastodon/initial_state'; import ColumnLink from './column_link'; +import DisabledAccountBanner from './disabled_account_banner'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; @@ -41,7 +42,7 @@ class NavigationPanel extends React.Component { render () { const { intl } = this.props; - const { signedIn } = this.context.identity; + const { signedIn, disabledAccountId } = this.context.identity; return (
      @@ -74,7 +75,7 @@ class NavigationPanel extends React.Component { {!signedIn && (

      - + { disabledAccountId ? : }
      )} diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index bb05dafdf7..62fd4ac720 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -54,6 +54,7 @@ * @property {boolean} crop_images * @property {boolean=} delete_modal * @property {boolean=} disable_swiping + * @property {string=} disabled_account_id * @property {boolean} display_media * @property {string} domain * @property {boolean=} expand_spoilers @@ -61,6 +62,7 @@ * @property {string} locale * @property {string | null} mascot * @property {string=} me + * @property {string=} moved_to_account_id * @property {string=} owner * @property {boolean} profile_directory * @property {boolean} registrations_open @@ -104,6 +106,7 @@ export const boostModal = getMeta('boost_modal'); export const cropImages = getMeta('crop_images'); export const deleteModal = getMeta('delete_modal'); export const disableSwiping = getMeta('disable_swiping'); +export const disabledAccountId = getMeta('disabled_account_id'); export const displayMedia = getMeta('display_media'); export const domain = getMeta('domain'); export const expandSpoilers = getMeta('expand_spoilers'); @@ -111,6 +114,7 @@ export const forceSingleColumn = !getMeta('advanced_layout'); export const limitedFederationMode = getMeta('limited_federation_mode'); export const mascot = getMeta('mascot'); export const me = getMeta('me'); +export const movedToAccountId = getMeta('moved_to_account_id'); export const owner = getMeta('owner'); export const profile_directory = getMeta('profile_directory'); export const reduceMotion = getMeta('reduce_motion'); diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 2edb10857c..542a2ce1b4 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -742,6 +742,20 @@ p { color: $darker-text-color; margin-bottom: 20px; + + a { + color: $secondary-text-color; + text-decoration: none; + unicode-bidi: isolate; + + &:hover { + text-decoration: underline; + + .fa { + color: lighten($dark-text-color, 7%); + } + } + } } .button { diff --git a/app/presenters/initial_state_presenter.rb b/app/presenters/initial_state_presenter.rb index ed04792119..b87cff51e1 100644 --- a/app/presenters/initial_state_presenter.rb +++ b/app/presenters/initial_state_presenter.rb @@ -2,7 +2,8 @@ class InitialStatePresenter < ActiveModelSerializers::Model attributes :settings, :push_subscription, :token, - :current_account, :admin, :owner, :text, :visibility + :current_account, :admin, :owner, :text, :visibility, + :disabled_account, :moved_to_account def role current_account&.user_role diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 02e45a92e3..89f468ab59 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -57,6 +57,9 @@ class InitialStateSerializer < ActiveModel::Serializer store[:crop_images] = Setting.crop_images end + store[:disabled_account_id] = object.disabled_account.id.to_s if object.disabled_account + store[:moved_to_account_id] = object.moved_to_account.id.to_s if object.moved_to_account + if Rails.configuration.x.single_user_mode store[:owner] = object.owner&.id&.to_s end @@ -85,6 +88,8 @@ class InitialStateSerializer < ActiveModel::Serializer store[object.current_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.current_account, serializer: REST::AccountSerializer) if object.current_account store[object.admin.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.admin, serializer: REST::AccountSerializer) if object.admin store[object.owner.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.owner, serializer: REST::AccountSerializer) if object.owner + store[object.disabled_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.disabled_account, serializer: REST::AccountSerializer) if object.disabled_account + store[object.moved_to_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.moved_to_account, serializer: REST::AccountSerializer) if object.moved_to_account store end From 30e786225e665f44676ed6f1c6d5200e68b3a378 Mon Sep 17 00:00:00 2001 From: eai04191 Date: Sun, 6 Nov 2022 05:03:58 +0900 Subject: [PATCH 269/500] Remove word-break:keep-all from Dismissable banner message (#19799) --- app/javascript/styles/mastodon/components.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 542a2ce1b4..28b06b5912 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -8331,7 +8331,6 @@ noscript { font-size: 14px; line-height: 18px; color: $primary-text-color; - word-break: keep-all; } &__action { From 7c65f5269277cd8e953efb25fa77dc28441904e7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 21:11:24 +0100 Subject: [PATCH 270/500] Change design of moved account banner in web UI (#19790) --- .../account_timeline/components/moved_note.js | 36 +++++++------------ app/javascript/mastodon/locales/en.json | 2 +- .../styles/mastodon/components.scss | 35 ++++++++---------- 3 files changed, 27 insertions(+), 46 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/components/moved_note.js b/app/javascript/mastodon/features/account_timeline/components/moved_note.js index 2e32d660f8..a548160a53 100644 --- a/app/javascript/mastodon/features/account_timeline/components/moved_note.js +++ b/app/javascript/mastodon/features/account_timeline/components/moved_note.js @@ -1,47 +1,35 @@ import React from 'react'; -import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import AvatarOverlay from '../../../components/avatar_overlay'; import DisplayName from '../../../components/display_name'; -import Icon from 'mastodon/components/icon'; +import Permalink from 'mastodon/components/permalink'; export default class MovedNote extends ImmutablePureComponent { - static contextTypes = { - router: PropTypes.object, - }; - static propTypes = { from: ImmutablePropTypes.map.isRequired, to: ImmutablePropTypes.map.isRequired, }; - handleAccountClick = e => { - if (e.button === 0) { - e.preventDefault(); - this.context.router.history.push(`/@${this.props.to.get('acct')}`); - } - - e.stopPropagation(); - } - render () { const { from, to } = this.props; - const displayNameHtml = { __html: from.get('display_name_html') }; return ( -
      -
      -
      - }} /> +
      +
      + }} />
      - -
      - -
      +
      + +
      + +
      + + +
      ); } diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index fd504fa045..0e58a7133f 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -46,7 +46,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 28b06b5912..d3046761cc 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -6733,36 +6733,29 @@ noscript { } } -.account__moved-note { - padding: 14px 10px; - padding-bottom: 16px; +.moved-account-banner { + padding: 20px; background: lighten($ui-base-color, 4%); - border-top: 1px solid lighten($ui-base-color, 8%); - border-bottom: 1px solid lighten($ui-base-color, 8%); + display: flex; + align-items: center; + flex-direction: column; &__message { - position: relative; - margin-left: 58px; - color: $dark-text-color; + color: $darker-text-color; padding: 8px 0; padding-top: 0; padding-bottom: 4px; font-size: 14px; - - > span { - display: block; - overflow: hidden; - text-overflow: ellipsis; - } - } - - &__icon-wrapper { - left: -26px; - position: absolute; + font-weight: 500; + text-align: center; + margin-bottom: 16px; } - .detailed-status__display-avatar { - position: relative; + &__action { + display: flex; + justify-content: space-between; + align-items: center; + gap: 15px; } .detailed-status__display-name { From a442f481f850d857544eafdd0725142ed8656552 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 21:11:35 +0100 Subject: [PATCH 271/500] Fix missing interpolation of domain in disabled account banner in web UI (#19788) --- .../mastodon/features/ui/components/disabled_account_banner.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/ui/components/disabled_account_banner.js b/app/javascript/mastodon/features/ui/components/disabled_account_banner.js index c9845d917c..cc8cc32850 100644 --- a/app/javascript/mastodon/features/ui/components/disabled_account_banner.js +++ b/app/javascript/mastodon/features/ui/components/disabled_account_banner.js @@ -66,7 +66,7 @@ class DisabledAccountBanner extends React.PureComponent { defaultMessage='Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.' values={{ disabledAccount: disabledAccountLink, - movedToAccount: {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@{domain}`}, + movedToAccount: {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@${domain}`}, }} /> ) : ( From d1de7fb7fa561a76c30f3b1f60b82856443ed4b3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 21:18:57 +0100 Subject: [PATCH 272/500] Fix rendering empty avatar in web UI (#19798) --- app/javascript/mastodon/components/avatar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.js index 207b266913..e617c28890 100644 --- a/app/javascript/mastodon/components/avatar.js +++ b/app/javascript/mastodon/components/avatar.js @@ -54,7 +54,7 @@ export default class Avatar extends React.PureComponent { return (
      - {account?.get('acct')} + {src && {account?.get('acct')}}
      ); } From c64be9758f7e0c078ac8c6d27ec383b14253e3e0 Mon Sep 17 00:00:00 2001 From: Moritz Hedtke Date: Sat, 5 Nov 2022 21:19:25 +0100 Subject: [PATCH 273/500] helm: Add documentation to run tootctl commands (#19791) --- chart/readme.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/chart/readme.md b/chart/readme.md index 381037cc1a..edcc973bcd 100644 --- a/chart/readme.md +++ b/chart/readme.md @@ -19,6 +19,20 @@ The variables that _must_ be configured are: - SMTP settings for your mailer in the `mastodon.smtp` group. +# Administration + +You can run [admin CLI](https://docs.joinmastodon.org/admin/tootctl/) commands in the web deployment. + +```bash +kubectl -n mastodon exec -it deployment/mastodon-web -- bash +tootctl accounts modify admin --reset-password +``` + +or +```bash +kubectl -n mastodon exec -it deployment/mastodon-web -- tootctl accounts modify admin --reset-password +``` + # Missing features Currently this chart does _not_ support: From d54e7ee61edf028cd51f7362a970acc152afa456 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 21:51:01 +0100 Subject: [PATCH 274/500] Fix n+1 queries when rendering initial state JSON (#19795) --- app/serializers/initial_state_serializer.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 89f468ab59..8d3f4f87df 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -85,11 +85,15 @@ class InitialStateSerializer < ActiveModel::Serializer def accounts store = {} - store[object.current_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.current_account, serializer: REST::AccountSerializer) if object.current_account - store[object.admin.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.admin, serializer: REST::AccountSerializer) if object.admin - store[object.owner.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.owner, serializer: REST::AccountSerializer) if object.owner + + ActiveRecord::Associations::Preloader.new.preload([object.current_account, object.admin, object.owner, object.disabled_account, object.moved_to_account].compact, [:account_stat, :user, { moved_to_account: [:account_stat, :user] }]) + + store[object.current_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.current_account, serializer: REST::AccountSerializer) if object.current_account + store[object.admin.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.admin, serializer: REST::AccountSerializer) if object.admin + store[object.owner.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.owner, serializer: REST::AccountSerializer) if object.owner store[object.disabled_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.disabled_account, serializer: REST::AccountSerializer) if object.disabled_account store[object.moved_to_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.moved_to_account, serializer: REST::AccountSerializer) if object.moved_to_account + store end From d0c9ac39190c71afb581836e770ebace4ad1ef1b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 22:31:52 +0100 Subject: [PATCH 275/500] Fix indexing scheduler trying to index when Elasticsearch is disabled (#19805) Fix #19646 --- app/workers/scheduler/indexing_scheduler.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/workers/scheduler/indexing_scheduler.rb b/app/workers/scheduler/indexing_scheduler.rb index 3a6f47a29a..c423966297 100644 --- a/app/workers/scheduler/indexing_scheduler.rb +++ b/app/workers/scheduler/indexing_scheduler.rb @@ -7,6 +7,8 @@ class Scheduler::IndexingScheduler sidekiq_options retry: 0 def perform + return unless Chewy.enabled? + indexes.each do |type| with_redis do |redis| ids = redis.smembers("chewy:queue:#{type.name}") From 3a41fccc43931d12216aa491b234805892dc0861 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 22:56:03 +0100 Subject: [PATCH 276/500] Change `AUTHORIZED_FETCH` to not block unauthenticated REST API access (#19803) New environment variable `DISALLOW_UNAUTHENTICATED_API_ACCESS` --- app/controllers/api/base_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index c46fde65b2..3f3e1ca7bd 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -133,7 +133,7 @@ class Api::BaseController < ApplicationController end def disallow_unauthenticated_api_access? - authorized_fetch_mode? + ENV['DISALLOW_UNAUTHENTICATED_API_ACCESS'] == 'true' || Rails.configuration.x.whitelist_mode end private From c8bf6192e43e426b71d2543dc29a2cba8cc9ac80 Mon Sep 17 00:00:00 2001 From: Hayden Date: Sat, 5 Nov 2022 14:57:58 -0700 Subject: [PATCH 277/500] Heroku fix (#19807) Currently building on Heroku fails with a package error for libidn11. Since Mastodon uses idn-ruby 0.1.2 we should upgrade to libidn12 --- Aptfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Aptfile b/Aptfile index 9235141ad5..a52eef4e18 100644 --- a/Aptfile +++ b/Aptfile @@ -1,8 +1,8 @@ ffmpeg libicu[0-9][0-9] libicu-dev -libidn11 -libidn11-dev +libidn12 +libidn-dev libpq-dev libxdamage1 libxfixes3 From b5b1a202ccf12a2c4907bc9831a5960bb10f2404 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 23:00:48 +0100 Subject: [PATCH 278/500] Fix missing string in admin UI (#19809) --- config/locales/en.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index ce8dea65b3..c50fc074c4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -283,6 +283,7 @@ en: update_ip_block_html: "%{name} changed rule for IP %{target}" update_status_html: "%{name} updated post by %{target}" update_user_role_html: "%{name} changed %{target} role" + deleted_account: deleted account empty: No logs found. filter_by_action: Filter by action filter_by_user: Filter by user From 18ac5f1cc8aa68ff17632f7fe99981f6a653dd62 Mon Sep 17 00:00:00 2001 From: Justin Thomas Date: Sat, 5 Nov 2022 15:02:41 -0700 Subject: [PATCH 279/500] version emoji-mart (#19715) * version emoji-mart * add lock file --- package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9ba8199649..b1d5759868 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "cssnano": "^4.1.11", "detect-passive-events": "^2.0.3", "dotenv": "^16.0.3", - "emoji-mart": "npm:emoji-mart-lazyload", + "emoji-mart": "npm:emoji-mart-lazyload@latest", "es6-symbol": "^3.1.3", "escape-html": "^1.0.3", "exif-js": "^2.3.0", diff --git a/yarn.lock b/yarn.lock index 7005028afb..9351abfbcb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4454,9 +4454,9 @@ emittery@^0.13.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== -"emoji-mart@npm:emoji-mart-lazyload": +"emoji-mart@npm:emoji-mart-lazyload@latest": version "3.0.1-j" - resolved "https://registry.npmjs.org/emoji-mart-lazyload/-/emoji-mart-lazyload-3.0.1-j.tgz#87a90d30b79d9145ece078d53e3e683c1a10ce9c" + resolved "https://registry.yarnpkg.com/emoji-mart-lazyload/-/emoji-mart-lazyload-3.0.1-j.tgz#87a90d30b79d9145ece078d53e3e683c1a10ce9c" integrity sha512-0wKF7MR0/iAeCIoiBLY+JjXCugycTgYRC2SL0y9/bjNSQlbeMdzILmPQJAufU/mgLFDUitOvjxLDhOZ9yxZ48g== dependencies: "@babel/runtime" "^7.0.0" From ca8d52c2a4e7d71836008f63cffd273542ab2476 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 23:06:32 +0100 Subject: [PATCH 280/500] Change design of new list form in web UI (#19801) --- .../mastodon/components/setting_text.js | 34 ----- .../lists/components/new_list_form.js | 9 +- .../mastodon/features/lists/index.js | 8 +- .../styles/mastodon/components.scss | 122 +++++++----------- 4 files changed, 55 insertions(+), 118 deletions(-) delete mode 100644 app/javascript/mastodon/components/setting_text.js diff --git a/app/javascript/mastodon/components/setting_text.js b/app/javascript/mastodon/components/setting_text.js deleted file mode 100644 index a6dde4c0f1..0000000000 --- a/app/javascript/mastodon/components/setting_text.js +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import ImmutablePropTypes from 'react-immutable-proptypes'; - -export default class SettingText extends React.PureComponent { - - static propTypes = { - settings: ImmutablePropTypes.map.isRequired, - settingKey: PropTypes.array.isRequired, - label: PropTypes.string.isRequired, - onChange: PropTypes.func.isRequired, - }; - - handleChange = (e) => { - this.props.onChange(this.props.settingKey, e.target.value); - } - - render () { - const { settings, settingKey, label } = this.props; - - return ( - - ); - } - -} diff --git a/app/javascript/mastodon/features/lists/components/new_list_form.js b/app/javascript/mastodon/features/lists/components/new_list_form.js index 7faf50be81..f790ccbe60 100644 --- a/app/javascript/mastodon/features/lists/components/new_list_form.js +++ b/app/javascript/mastodon/features/lists/components/new_list_form.js @@ -1,8 +1,8 @@ import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import { changeListEditorTitle, submitListEditor } from '../../../actions/lists'; -import IconButton from '../../../components/icon_button'; +import { changeListEditorTitle, submitListEditor } from 'mastodon/actions/lists'; +import Button from 'mastodon/components/button'; import { defineMessages, injectIntl } from 'react-intl'; const messages = defineMessages({ @@ -65,10 +65,9 @@ class NewListForm extends React.PureComponent { /> - diff --git a/app/javascript/mastodon/features/lists/index.js b/app/javascript/mastodon/features/lists/index.js index 017595ba03..3a0b1373a6 100644 --- a/app/javascript/mastodon/features/lists/index.js +++ b/app/javascript/mastodon/features/lists/index.js @@ -7,10 +7,10 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; import { fetchLists } from 'mastodon/actions/lists'; -import ColumnBackButtonSlim from 'mastodon/components/column_back_button_slim'; import LoadingIndicator from 'mastodon/components/loading_indicator'; import ScrollableList from 'mastodon/components/scrollable_list'; -import Column from 'mastodon/features/ui/components/column'; +import Column from 'mastodon/components/column'; +import ColumnHeader from 'mastodon/components/column_header'; import ColumnLink from 'mastodon/features/ui/components/column_link'; import ColumnSubheading from 'mastodon/features/ui/components/column_subheading'; import NewListForm from './components/new_list_form'; @@ -62,8 +62,8 @@ class Lists extends ImmutablePureComponent { const emptyMessage = ; return ( - - + + diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index d3046761cc..57a383476e 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -3200,23 +3200,49 @@ $ui-header-height: 55px; .setting-text { display: block; box-sizing: border-box; - width: 100%; margin: 0; - color: $darker-text-color; - background: transparent; - padding: 7px 0; + color: $inverted-text-color; + background: $white; + padding: 7px 10px; font-family: inherit; font-size: 14px; - resize: vertical; - border: 0; - border-bottom: 2px solid $ui-primary-color; - outline: 0; + line-height: 22px; + border-radius: 4px; + border: 1px solid $white; - &:focus, - &:active { - color: $primary-text-color; - border-bottom-color: $ui-highlight-color; + &:focus { outline: 0; + border-color: lighten($ui-highlight-color, 12%); + } + + &__wrapper { + background: $white; + border: 1px solid $ui-secondary-color; + margin-bottom: 10px; + border-radius: 4px; + + .setting-text { + border: 0; + margin-bottom: 0; + border-radius: 0; + + &:focus { + border: 0; + } + } + + &__modifiers { + color: $inverted-text-color; + font-family: inherit; + font-size: 14px; + background: $white; + } + } + + &__toolbar { + display: flex; + justify-content: space-between; + margin-bottom: 20px; } @media screen and (max-width: 600px) { @@ -5503,59 +5529,6 @@ a.status-card.compact:hover { margin-bottom: 20px; } - .setting-text { - display: block; - box-sizing: border-box; - width: 100%; - margin: 0; - color: $inverted-text-color; - background: $white; - padding: 10px; - font-family: inherit; - font-size: 14px; - resize: none; - outline: 0; - border-radius: 4px; - border: 1px solid $ui-secondary-color; - min-height: 100px; - max-height: 50vh; - margin-bottom: 10px; - - &:focus { - border: 1px solid darken($ui-secondary-color, 8%); - } - - &__wrapper { - background: $white; - border: 1px solid $ui-secondary-color; - margin-bottom: 10px; - border-radius: 4px; - - .setting-text { - border: 0; - margin-bottom: 0; - border-radius: 0; - - &:focus { - border: 0; - } - } - - &__modifiers { - color: $inverted-text-color; - font-family: inherit; - font-size: 14px; - background: $white; - } - } - - &__toolbar { - display: flex; - justify-content: space-between; - margin-bottom: 20px; - } - } - .setting-text-label { display: block; color: $inverted-text-color; @@ -5564,6 +5537,14 @@ a.status-card.compact:hover { margin-bottom: 10px; } + .setting-text { + width: 100%; + resize: none; + min-height: 100px; + max-height: 50vh; + border: 0; + } + .setting-toggle { margin-top: 20px; margin-bottom: 24px; @@ -6765,9 +6746,9 @@ noscript { .column-inline-form { padding: 15px; - padding-right: 0; display: flex; justify-content: flex-start; + gap: 15px; align-items: center; background: lighten($ui-base-color, 4%); @@ -6776,17 +6757,8 @@ noscript { input { width: 100%; - - &:focus { - outline: 0; - } } } - - .icon-button { - flex: 0 0 auto; - margin: 0 10px; - } } .drawer__backdrop { From 58fc889c6fe697da4f880cb43e75d97d3a604d79 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 23:24:07 +0100 Subject: [PATCH 281/500] Update changelog for 4.0.0rc1 (#19814) --- CHANGELOG.md | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c161d95dea..777a83790c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ Some of the features in this release have been funded through the [NGI0 Discover - **Add ability to follow hashtags** ([Gargron](https://github.com/mastodon/mastodon/pull/18809), [Gargron](https://github.com/mastodon/mastodon/pull/18862), [Gargron](https://github.com/mastodon/mastodon/pull/19472), [noellabo](https://github.com/mastodon/mastodon/pull/18924)) - Add ability to filter individual posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18945)) - **Add ability to translate posts** ([Gargron](https://github.com/mastodon/mastodon/pull/19218), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19433), [Gargron](https://github.com/mastodon/mastodon/pull/19453), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19434), [Gargron](https://github.com/mastodon/mastodon/pull/19388), [ykzts](https://github.com/mastodon/mastodon/pull/19244), [Gargron](https://github.com/mastodon/mastodon/pull/19245)) -- Add featured tags to web UI ([noellabo](https://github.com/mastodon/mastodon/pull/19408), [noellabo](https://github.com/mastodon/mastodon/pull/19380), [noellabo](https://github.com/mastodon/mastodon/pull/19358), [noellabo](https://github.com/mastodon/mastodon/pull/19409), [Gargron](https://github.com/mastodon/mastodon/pull/19382), [ykzts](https://github.com/mastodon/mastodon/pull/19418), [noellabo](https://github.com/mastodon/mastodon/pull/19403), [noellabo](https://github.com/mastodon/mastodon/pull/19404), [Gargron](https://github.com/mastodon/mastodon/pull/19398)) +- Add featured tags to web UI ([noellabo](https://github.com/mastodon/mastodon/pull/19408), [noellabo](https://github.com/mastodon/mastodon/pull/19380), [noellabo](https://github.com/mastodon/mastodon/pull/19358), [noellabo](https://github.com/mastodon/mastodon/pull/19409), [Gargron](https://github.com/mastodon/mastodon/pull/19382), [ykzts](https://github.com/mastodon/mastodon/pull/19418), [noellabo](https://github.com/mastodon/mastodon/pull/19403), [noellabo](https://github.com/mastodon/mastodon/pull/19404), [Gargron](https://github.com/mastodon/mastodon/pull/19398), [Gargron](https://github.com/mastodon/mastodon/pull/19712)) - **Add support for language preferences for trending statuses and links** ([Gargron](https://github.com/mastodon/mastodon/pull/18288), [Gargron](https://github.com/mastodon/mastodon/pull/19349), [ykzts](https://github.com/mastodon/mastodon/pull/19335)) - Previously, you could only see trends in your current language - For less popular languages, that meant empty trends @@ -23,9 +23,10 @@ Some of the features in this release have been funded through the [NGI0 Discover - Add `noopener` to links to remote profiles in web UI ([shleeable](https://github.com/mastodon/mastodon/pull/19014)) - Add warning for sensitive audio posts in web UI ([rgroothuijsen](https://github.com/mastodon/mastodon/pull/17885)) - Add language attribute to posts in web UI ([tribela](https://github.com/mastodon/mastodon/pull/18544)) -- Add meta tag for official iOS app ([Gargron](https://github.com/mastodon/mastodon/pull/16599)) - Add support for uploading WebP files ([Saiv46](https://github.com/mastodon/mastodon/pull/18506)) - Add support for uploading `audio/vnd.wave` files ([tribela](https://github.com/mastodon/mastodon/pull/18737)) +- Add support for uploading AVIF files ([txt-file](https://github.com/mastodon/mastodon/pull/19647)) +- Add support for uploading HEIC files ([Gargron](https://github.com/mastodon/mastodon/pull/19618)) - Add more debug information when processing remote accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/15605), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19209)) - **Add retention policy for cached content and media** ([Gargron](https://github.com/mastodon/mastodon/pull/19232), [zunda](https://github.com/mastodon/mastodon/pull/19478), [Gargron](https://github.com/mastodon/mastodon/pull/19458), [Gargron](https://github.com/mastodon/mastodon/pull/19248)) - Set for how long remote posts or media should be cached on your server @@ -49,12 +50,15 @@ Some of the features in this release have been funded through the [NGI0 Discover - Add `EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION` environment variable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18642)) - Add `IP_RETENTION_PERIOD` and `SESSION_RETENTION_PERIOD` environment variables ([kescherCode](https://github.com/mastodon/mastodon/pull/18757)) - Add `http_hidden_proxy` environment variable ([tribela](https://github.com/mastodon/mastodon/pull/18427)) +- Add caching for payload serialization during fan-out ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19637), [Gargron](https://github.com/mastodon/mastodon/pull/19642), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19746), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19747)) +- Add assets from Twemoji 14.0 ([Gargron](https://github.com/mastodon/mastodon/pull/19733)) +- Add reputation and followers score boost to SQL-only account search ([Gargron](https://github.com/mastodon/mastodon/pull/19251)) ### Changed - **Change brand color and logotypes** ([Gargron](https://github.com/mastodon/mastodon/pull/18592), [Gargron](https://github.com/mastodon/mastodon/pull/18639), [Gargron](https://github.com/mastodon/mastodon/pull/18691), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18634), [Gargron](https://github.com/mastodon/mastodon/pull/19254), [mayaeh](https://github.com/mastodon/mastodon/pull/18710)) - **Change post editing to be enabled in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/19103)) -- **Change web UI to work for logged-out users** ([Gargron](https://github.com/mastodon/mastodon/pull/18961), [Gargron](https://github.com/mastodon/mastodon/pull/19250), [Gargron](https://github.com/mastodon/mastodon/pull/19294), [Gargron](https://github.com/mastodon/mastodon/pull/19306), [Gargron](https://github.com/mastodon/mastodon/pull/19315), [ykzts](https://github.com/mastodon/mastodon/pull/19322), [Gargron](https://github.com/mastodon/mastodon/pull/19412), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19437), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19415), [Gargron](https://github.com/mastodon/mastodon/pull/19348), [Gargron](https://github.com/mastodon/mastodon/pull/19295), [Gargron](https://github.com/mastodon/mastodon/pull/19422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19414), [Gargron](https://github.com/mastodon/mastodon/pull/19319), [Gargron](https://github.com/mastodon/mastodon/pull/19345), [Gargron](https://github.com/mastodon/mastodon/pull/19310), [Gargron](https://github.com/mastodon/mastodon/pull/19301), [Gargron](https://github.com/mastodon/mastodon/pull/19423), [ykzts](https://github.com/mastodon/mastodon/pull/19471), [ykzts](https://github.com/mastodon/mastodon/pull/19333), [ykzts](https://github.com/mastodon/mastodon/pull/19337), [ykzts](https://github.com/mastodon/mastodon/pull/19272), [ykzts](https://github.com/mastodon/mastodon/pull/19468), [Gargron](https://github.com/mastodon/mastodon/pull/19466), [Gargron](https://github.com/mastodon/mastodon/pull/19457), [Gargron](https://github.com/mastodon/mastodon/pull/19426), [Gargron](https://github.com/mastodon/mastodon/pull/19427), [Gargron](https://github.com/mastodon/mastodon/pull/19421), [Gargron](https://github.com/mastodon/mastodon/pull/19417), [Gargron](https://github.com/mastodon/mastodon/pull/19413), [Gargron](https://github.com/mastodon/mastodon/pull/19397), [Gargron](https://github.com/mastodon/mastodon/pull/19387), [Gargron](https://github.com/mastodon/mastodon/pull/19396), [Gargron](https://github.com/mastodon/mastodon/pull/19385), [ykzts](https://github.com/mastodon/mastodon/pull/19334), [ykzts](https://github.com/mastodon/mastodon/pull/19329), [Gargron](https://github.com/mastodon/mastodon/pull/19324), [Gargron](https://github.com/mastodon/mastodon/pull/19318), [Gargron](https://github.com/mastodon/mastodon/pull/19316), [Gargron](https://github.com/mastodon/mastodon/pull/19263), [trwnh](https://github.com/mastodon/mastodon/pull/19305), [ykzts](https://github.com/mastodon/mastodon/pull/19273)) +- **Change web UI to work for logged-out users** ([Gargron](https://github.com/mastodon/mastodon/pull/18961), [Gargron](https://github.com/mastodon/mastodon/pull/19250), [Gargron](https://github.com/mastodon/mastodon/pull/19294), [Gargron](https://github.com/mastodon/mastodon/pull/19306), [Gargron](https://github.com/mastodon/mastodon/pull/19315), [ykzts](https://github.com/mastodon/mastodon/pull/19322), [Gargron](https://github.com/mastodon/mastodon/pull/19412), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19437), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19415), [Gargron](https://github.com/mastodon/mastodon/pull/19348), [Gargron](https://github.com/mastodon/mastodon/pull/19295), [Gargron](https://github.com/mastodon/mastodon/pull/19422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19414), [Gargron](https://github.com/mastodon/mastodon/pull/19319), [Gargron](https://github.com/mastodon/mastodon/pull/19345), [Gargron](https://github.com/mastodon/mastodon/pull/19310), [Gargron](https://github.com/mastodon/mastodon/pull/19301), [Gargron](https://github.com/mastodon/mastodon/pull/19423), [ykzts](https://github.com/mastodon/mastodon/pull/19471), [ykzts](https://github.com/mastodon/mastodon/pull/19333), [ykzts](https://github.com/mastodon/mastodon/pull/19337), [ykzts](https://github.com/mastodon/mastodon/pull/19272), [ykzts](https://github.com/mastodon/mastodon/pull/19468), [Gargron](https://github.com/mastodon/mastodon/pull/19466), [Gargron](https://github.com/mastodon/mastodon/pull/19457), [Gargron](https://github.com/mastodon/mastodon/pull/19426), [Gargron](https://github.com/mastodon/mastodon/pull/19427), [Gargron](https://github.com/mastodon/mastodon/pull/19421), [Gargron](https://github.com/mastodon/mastodon/pull/19417), [Gargron](https://github.com/mastodon/mastodon/pull/19413), [Gargron](https://github.com/mastodon/mastodon/pull/19397), [Gargron](https://github.com/mastodon/mastodon/pull/19387), [Gargron](https://github.com/mastodon/mastodon/pull/19396), [Gargron](https://github.com/mastodon/mastodon/pull/19385), [ykzts](https://github.com/mastodon/mastodon/pull/19334), [ykzts](https://github.com/mastodon/mastodon/pull/19329), [Gargron](https://github.com/mastodon/mastodon/pull/19324), [Gargron](https://github.com/mastodon/mastodon/pull/19318), [Gargron](https://github.com/mastodon/mastodon/pull/19316), [Gargron](https://github.com/mastodon/mastodon/pull/19263), [trwnh](https://github.com/mastodon/mastodon/pull/19305), [ykzts](https://github.com/mastodon/mastodon/pull/19273), [Gargron](https://github.com/mastodon/mastodon/pull/19801), [Gargron](https://github.com/mastodon/mastodon/pull/19790), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19773), [Gargron](https://github.com/mastodon/mastodon/pull/19798), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19724), [Gargron](https://github.com/mastodon/mastodon/pull/19709), [Gargron](https://github.com/mastodon/mastodon/pull/19514), [Gargron](https://github.com/mastodon/mastodon/pull/19562)) - The web app can now be accessed without being logged in - No more `/web` prefix on web app paths - Profiles, posts, and other public pages now use the same interface for logged in and logged out users @@ -77,15 +81,20 @@ Some of the features in this release have been funded through the [NGI0 Discover - You can peek inside filtered posts anyway - Change path of privacy policy page from `/terms` to `/privacy-policy` ([Gargron](https://github.com/mastodon/mastodon/pull/19249)) - Change how hashtags are normalized ([Gargron](https://github.com/mastodon/mastodon/pull/18795), [Gargron](https://github.com/mastodon/mastodon/pull/18863), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18854)) -- Change public timelines to be filtered by current locale by default ([Gargron](https://github.com/mastodon/mastodon/pull/19291)) -- Change settings area to be separated into categories in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19407)) +- Change public (but not hashtag) timelines to be filtered by current locale by default ([Gargron](https://github.com/mastodon/mastodon/pull/19291), [Gargron](https://github.com/mastodon/mastodon/pull/19563)) +- Change settings area to be separated into categories in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19407), [Gargron](https://github.com/mastodon/mastodon/pull/19533)) - Change "No accounts selected" errors to use the appropriate noun in admin UI ([prplecake](https://github.com/mastodon/mastodon/pull/19356)) - Change e-mail domain blocks to match subdomains of blocked domains ([Gargron](https://github.com/mastodon/mastodon/pull/18979)) - Change custom emoji file size limit from 50 KB to 256 KB ([Gargron](https://github.com/mastodon/mastodon/pull/18788)) - Change "Allow trends without prior review" setting to also work for trending posts ([Gargron](https://github.com/mastodon/mastodon/pull/17977)) +- Change admin announcements form to use single inputs for date and time in admin UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18321)) - Change search API to be accessible without being logged in ([Gargron](https://github.com/mastodon/mastodon/pull/18963), [Gargron](https://github.com/mastodon/mastodon/pull/19326)) - Change following and followers API to be accessible without being logged in ([Gargron](https://github.com/mastodon/mastodon/pull/18964)) +- Change `AUTHORIZED_FETCH` to not block unauthenticated REST API access ([Gargron](https://github.com/mastodon/mastodon/pull/19803)) - Change Helm configuration ([deepy](https://github.com/mastodon/mastodon/pull/18997), [jgsmith](https://github.com/mastodon/mastodon/pull/18415), [deepy](https://github.com/mastodon/mastodon/pull/18941)) +- Change mentions of blocked users to not be processed ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19725)) +- Change max. thumbnail dimensions to 640x360px (360p) ([Gargron](https://github.com/mastodon/mastodon/pull/19619)) +- Change post-processing to be deferred only for large media types ([Gargron](https://github.com/mastodon/mastodon/pull/19617)) ### Removed @@ -98,6 +107,25 @@ Some of the features in this release have been funded through the [NGI0 Discover ### Fixed +- Fix featured tags not saving preferred casing ([Gargron](https://github.com/mastodon/mastodon/pull/19732)) +- Fix language not being saved when editing status ([Gargron](https://github.com/mastodon/mastodon/pull/19543)) +- Fix not being able to input featured tag with hash symbol ([Gargron](https://github.com/mastodon/mastodon/pull/19535)) +- Fix user clean-up scheduler crash when an unconfirmed account has a moderation note ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19629)) +- Fix being unable to withdraw follow request when confirmation modal is disabled in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19687)) +- Fix inaccurate admin log entry for re-sending confirmation e-mails ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19674)) +- Fix edits not being immediately reflected ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19673)) +- Fix bookmark import stopping at the first failure ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19669)) +- Fix account action type validation ([Gargron](https://github.com/mastodon/mastodon/pull/19476)) +- Fix upload progress not communicating processing phase in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19530)) +- Fix wrong host being used for custom.css when asset host configured ([Gargron](https://github.com/mastodon/mastodon/pull/19521)) +- Fix account migration form ever using outdated account data ([Gargron](https://github.com/mastodon/mastodon/pull/18429)) +- Fix error when uploading malformed CSV import ([Gargron](https://github.com/mastodon/mastodon/pull/19509)) +- Fix avatars not using image tags in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19488)) +- Fix handling of duplicate and out-of-order notifications in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19693)) +- Fix reblogs being discarded after the reblogged status ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19731)) +- Fix indexing scheduler trying to index when Elasticsearch is disabled ([Gargron](https://github.com/mastodon/mastodon/pull/19805)) +- Fix n+1 queries when rendering initial state JSON ([Gargron](https://github.com/mastodon/mastodon/pull/19795)) +- Fix n+1 query during status removal ([Gargron](https://github.com/mastodon/mastodon/pull/19753)) - Fix OCR not working due to Content Security Policy in web UI ([prplecake](https://github.com/mastodon/mastodon/pull/18817)) - Fix `nofollow` rel being removed in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19455)) - Fix language dropdown causing zoom on mobile devices in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19428)) From 3151b260e27c1d3143b36a68b700bf3884ae9808 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Nov 2022 06:16:34 +0100 Subject: [PATCH 282/500] Fix not using GIN index for account search queries (#19830) --- app/models/account.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/account.rb b/app/models/account.rb index da0ee23361..3647b82258 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -445,7 +445,7 @@ class Account < ApplicationRecord class << self DISALLOWED_TSQUERY_CHARACTERS = /['?\\:‘’]/.freeze - TEXTSEARCH = "(setweight(to_tsvector('simple', accounts.display_name), 'A') || setweight(to_tsvector('simple', accounts.username), 'A') || setweight(to_tsvector('simple', coalesce(accounts.domain, '')), 'C'))" + TEXTSEARCH = "(setweight(to_tsvector('simple', accounts.display_name), 'A') || setweight(to_tsvector('simple', accounts.username), 'B') || setweight(to_tsvector('simple', coalesce(accounts.domain, '')), 'C'))" REPUTATION_SCORE_FUNCTION = '(greatest(0, coalesce(s.followers_count, 0)) / (greatest(0, coalesce(s.following_count, 0)) + 1.0))' FOLLOWERS_SCORE_FUNCTION = 'log(greatest(0, coalesce(s.followers_count, 0)) + 2)' From 5187e4e758b0636432d984d1a95a310cac536205 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Nov 2022 06:59:56 +0100 Subject: [PATCH 283/500] Bump version to 4.0.0rc2 (#19831) --- lib/mastodon/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 1794900982..2b0b84b8f3 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -17,7 +17,7 @@ module Mastodon end def flags - 'rc1' + 'rc2' end def suffix From e42875d19566ee95195ae050ac4471711c442136 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Nov 2022 18:09:39 +0100 Subject: [PATCH 284/500] [Glitch] Fix edits not being immediately reflected Port 74d40c7d8fac3ccc263af29c622f4481e18e8c59 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/actions/compose.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index 15476fc590..54909b56e4 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -8,7 +8,7 @@ import { recoverHashtags } from 'flavours/glitch/utils/hashtag'; import resizeImage from 'flavours/glitch/utils/resize_image'; import { showAlert, showAlertForError } from './alerts'; import { useEmoji } from './emojis'; -import { importFetchedAccounts } from './importer'; +import { importFetchedAccounts, importFetchedStatus } from './importer'; import { openModal } from './modal'; import { updateTimeline } from './timelines'; @@ -223,6 +223,10 @@ export function submitCompose(routerHistory) { } }; + if (statusId) { + dispatch(importFetchedStatus({ ...response.data })); + } + if (statusId === null) { insertIfOnline('home'); } From 6b498fae466526e5b61cbea5b7772c4cff9370f8 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Nov 2022 16:05:39 +0100 Subject: [PATCH 285/500] [Glitch] Fix being unable to withdraw follow request when confirmation modal is disabled (#19687) Port cbb440bbc2de7c805f687c886b32ab7dbafde07f to glitch-soc Signed-off-by: Claire --- .../containers/header_container.js | 2 ++ .../directory/components/account_card.js | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js index e6d8bb3bc8..a65463243c 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js +++ b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js @@ -61,6 +61,8 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ confirm: intl.formatMessage(messages.cancelFollowRequestConfirm), onConfirm: () => dispatch(unfollowAccount(account.get('id'))), })); + } else { + dispatch(unfollowAccount(account.get('id'))); } } else { dispatch(followAccount(account.get('id'))); diff --git a/app/javascript/flavours/glitch/features/directory/components/account_card.js b/app/javascript/flavours/glitch/features/directory/components/account_card.js index 8c344c7931..ccc3dd3d2e 100644 --- a/app/javascript/flavours/glitch/features/directory/components/account_card.js +++ b/app/javascript/flavours/glitch/features/directory/components/account_card.js @@ -25,6 +25,7 @@ const messages = defineMessages({ unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, follow: { id: 'account.follow', defaultMessage: 'Follow' }, cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Withdraw follow request' }, + cancelFollowRequestConfirm: { id: 'confirmations.cancel_follow_request.confirm', defaultMessage: 'Withdraw request' }, requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' }, unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' }, @@ -45,10 +46,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch, { intl }) => ({ onFollow(account) { - if ( - account.getIn(['relationship', 'following']) || - account.getIn(['relationship', 'requested']) - ) { + if (account.getIn(['relationship', 'following'])) { if (unfollowModal) { dispatch( openModal('CONFIRM', { @@ -66,6 +64,16 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ } else { dispatch(unfollowAccount(account.get('id'))); } + } else if (account.getIn(['relationship', 'requested'])) { + if (unfollowModal) { + dispatch(openModal('CONFIRM', { + message: @{account.get('acct')}
      }} />, + confirm: intl.formatMessage(messages.cancelFollowRequestConfirm), + onConfirm: () => dispatch(unfollowAccount(account.get('id'))), + })); + } else { + dispatch(unfollowAccount(account.get('id'))); + } } else { dispatch(followAccount(account.get('id'))); } From 81334e2bfbe2885c113d96eb51615dfe70417c87 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:37 +0100 Subject: [PATCH 286/500] [Glitch] Fix limited account hint referencing "your" server when logged out Port 139ea4c981f563e51d80ec3ec407d6265e29cb70 to glitch-soc Signed-off-by: Claire --- .../account_timeline/components/limited_account_hint.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/limited_account_hint.js b/app/javascript/flavours/glitch/features/account_timeline/components/limited_account_hint.js index e465c83b47..ca0e60672b 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/limited_account_hint.js +++ b/app/javascript/flavours/glitch/features/account_timeline/components/limited_account_hint.js @@ -4,6 +4,7 @@ import { connect } from 'react-redux'; import { revealAccount } from 'flavours/glitch/actions/accounts'; import { FormattedMessage } from 'react-intl'; import Button from 'flavours/glitch/components/button'; +import { domain } from 'flavours/glitch/initial_state'; const mapDispatchToProps = (dispatch, { accountId }) => ({ @@ -26,7 +27,7 @@ class LimitedAccountHint extends React.PureComponent { return (
      -

      +

      ); From 93ccb4a29e21fcdbc2df661ad0be94766f2ed403 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Sat, 5 Nov 2022 13:43:47 +0100 Subject: [PATCH 287/500] [Glitch] Fix JavaScript console error on upload editing status Port c95d9aab56dcde8c183f15d565cd1e8746d42c48 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/compose/components/upload.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/compose/components/upload.js b/app/javascript/flavours/glitch/features/compose/components/upload.js index ade6f0437a..32638342ca 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload.js +++ b/app/javascript/flavours/glitch/features/compose/components/upload.js @@ -18,7 +18,7 @@ export default class Upload extends ImmutablePureComponent { media: ImmutablePropTypes.map.isRequired, onUndo: PropTypes.func.isRequired, onOpenFocalPoint: PropTypes.func.isRequired, - isEditingStatus: PropTypes.func.isRequired, + isEditingStatus: PropTypes.bool.isRequired, }; handleUndoClick = e => { From 8368f4857c493364ebf55717bd76ab62188e286e Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Sat, 5 Nov 2022 13:45:06 +0100 Subject: [PATCH 288/500] [Glitch] Fix JavaScript console warning when loading notifications Port 887976814a2639a666896ae94b14c64e2834e26d to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/features/notifications/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/notifications/index.js b/app/javascript/flavours/glitch/features/notifications/index.js index 67b155ced2..fc42a4de4c 100644 --- a/app/javascript/flavours/glitch/features/notifications/index.js +++ b/app/javascript/flavours/glitch/features/notifications/index.js @@ -64,7 +64,7 @@ const mapStateToProps = state => ({ showFilterBar: state.getIn(['settings', 'notifications', 'quickFilter', 'show']), notifications: getNotifications(state), localSettings: state.get('local_settings'), - isLoading: state.getIn(['notifications', 'isLoading'], true), + isLoading: state.getIn(['notifications', 'isLoading'], 0) > 0, isUnread: state.getIn(['notifications', 'unread']) > 0 || state.getIn(['notifications', 'pendingItems']).size > 0, hasMore: state.getIn(['notifications', 'hasMore']), numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size, From 01e0cb1cd59ecb5c1dd077d447c29f2fd029dd83 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 16:08:41 +0100 Subject: [PATCH 289/500] [Glitch] Add assets from Twemoji 14.0 Port e02812d5b63b4909fff9c0c7246e80745c4c703e to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/features/emoji/emoji_map.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/emoji/emoji_map.json b/app/javascript/flavours/glitch/features/emoji/emoji_map.json index 121fea2a5f..64f6615b79 100644 --- a/app/javascript/flavours/glitch/features/emoji/emoji_map.json +++ b/app/javascript/flavours/glitch/features/emoji/emoji_map.json @@ -1 +1 @@ -{"😀":"1f600","😃":"1f603","😄":"1f604","😁":"1f601","😆":"1f606","😅":"1f605","🤣":"1f923","😂":"1f602","🙂":"1f642","🙃":"1f643","😉":"1f609","😊":"1f60a","😇":"1f607","🥰":"1f970","😍":"1f60d","🤩":"1f929","😘":"1f618","😗":"1f617","☺":"263a","😚":"1f61a","😙":"1f619","🥲":"1f972","😋":"1f60b","😛":"1f61b","😜":"1f61c","🤪":"1f92a","😝":"1f61d","🤑":"1f911","🤗":"1f917","🤭":"1f92d","🤫":"1f92b","🤔":"1f914","🤐":"1f910","🤨":"1f928","😐":"1f610","😑":"1f611","😶":"1f636","😏":"1f60f","😒":"1f612","🙄":"1f644","😬":"1f62c","🤥":"1f925","😌":"1f60c","😔":"1f614","😪":"1f62a","🤤":"1f924","😴":"1f634","😷":"1f637","🤒":"1f912","🤕":"1f915","🤢":"1f922","🤮":"1f92e","🤧":"1f927","🥵":"1f975","🥶":"1f976","🥴":"1f974","😵":"1f635","🤯":"1f92f","🤠":"1f920","🥳":"1f973","🥸":"1f978","😎":"1f60e","🤓":"1f913","🧐":"1f9d0","😕":"1f615","😟":"1f61f","🙁":"1f641","☹":"2639","😮":"1f62e","😯":"1f62f","😲":"1f632","😳":"1f633","🥺":"1f97a","😦":"1f626","😧":"1f627","😨":"1f628","😰":"1f630","😥":"1f625","😢":"1f622","😭":"1f62d","😱":"1f631","😖":"1f616","😣":"1f623","😞":"1f61e","😓":"1f613","😩":"1f629","😫":"1f62b","🥱":"1f971","😤":"1f624","😡":"1f621","😠":"1f620","🤬":"1f92c","😈":"1f608","👿":"1f47f","💀":"1f480","☠":"2620","💩":"1f4a9","🤡":"1f921","👹":"1f479","👺":"1f47a","👻":"1f47b","👽":"1f47d","👾":"1f47e","🤖":"1f916","😺":"1f63a","😸":"1f638","😹":"1f639","😻":"1f63b","😼":"1f63c","😽":"1f63d","🙀":"1f640","😿":"1f63f","😾":"1f63e","🙈":"1f648","🙉":"1f649","🙊":"1f64a","💋":"1f48b","💌":"1f48c","💘":"1f498","💝":"1f49d","💖":"1f496","💗":"1f497","💓":"1f493","💞":"1f49e","💕":"1f495","💟":"1f49f","❣":"2763","💔":"1f494","❤":"2764","🧡":"1f9e1","💛":"1f49b","💚":"1f49a","💙":"1f499","💜":"1f49c","🤎":"1f90e","🖤":"1f5a4","🤍":"1f90d","💯":"1f4af","💢":"1f4a2","💥":"1f4a5","💫":"1f4ab","💦":"1f4a6","💨":"1f4a8","🕳":"1f573","💣":"1f4a3","💬":"1f4ac","🗨":"1f5e8","🗯":"1f5ef","💭":"1f4ad","💤":"1f4a4","👋":"1f44b","🤚":"1f91a","🖐":"1f590","✋":"270b","🖖":"1f596","👌":"1f44c","🤌":"1f90c","🤏":"1f90f","✌":"270c","🤞":"1f91e","🤟":"1f91f","🤘":"1f918","🤙":"1f919","👈":"1f448","👉":"1f449","👆":"1f446","🖕":"1f595","👇":"1f447","☝":"261d","👍":"1f44d","👎":"1f44e","✊":"270a","👊":"1f44a","🤛":"1f91b","🤜":"1f91c","👏":"1f44f","🙌":"1f64c","👐":"1f450","🤲":"1f932","🤝":"1f91d","🙏":"1f64f","✍":"270d","💅":"1f485","🤳":"1f933","💪":"1f4aa","🦾":"1f9be","🦿":"1f9bf","🦵":"1f9b5","🦶":"1f9b6","👂":"1f442","🦻":"1f9bb","👃":"1f443","🧠":"1f9e0","🫀":"1fac0","🫁":"1fac1","🦷":"1f9b7","🦴":"1f9b4","👀":"1f440","👁":"1f441","👅":"1f445","👄":"1f444","👶":"1f476","🧒":"1f9d2","👦":"1f466","👧":"1f467","🧑":"1f9d1","👱":"1f471","👨":"1f468","🧔":"1f9d4","👩":"1f469","🧓":"1f9d3","👴":"1f474","👵":"1f475","🙍":"1f64d","🙎":"1f64e","🙅":"1f645","🙆":"1f646","💁":"1f481","🙋":"1f64b","🧏":"1f9cf","🙇":"1f647","🤦":"1f926","🤷":"1f937","👮":"1f46e","🕵":"1f575","💂":"1f482","🥷":"1f977","👷":"1f477","🤴":"1f934","👸":"1f478","👳":"1f473","👲":"1f472","🧕":"1f9d5","🤵":"1f935","👰":"1f470","🤰":"1f930","🤱":"1f931","👼":"1f47c","🎅":"1f385","🤶":"1f936","🦸":"1f9b8","🦹":"1f9b9","🧙":"1f9d9","🧚":"1f9da","🧛":"1f9db","🧜":"1f9dc","🧝":"1f9dd","🧞":"1f9de","🧟":"1f9df","💆":"1f486","💇":"1f487","🚶":"1f6b6","🧍":"1f9cd","🧎":"1f9ce","🏃":"1f3c3","💃":"1f483","🕺":"1f57a","🕴":"1f574","👯":"1f46f","🧖":"1f9d6","🧗":"1f9d7","🤺":"1f93a","🏇":"1f3c7","⛷":"26f7","🏂":"1f3c2","🏌":"1f3cc","🏄":"1f3c4","🚣":"1f6a3","🏊":"1f3ca","⛹":"26f9","🏋":"1f3cb","🚴":"1f6b4","🚵":"1f6b5","🤸":"1f938","🤼":"1f93c","🤽":"1f93d","🤾":"1f93e","🤹":"1f939","🧘":"1f9d8","🛀":"1f6c0","🛌":"1f6cc","👭":"1f46d","👫":"1f46b","👬":"1f46c","💏":"1f48f","💑":"1f491","👪":"1f46a","🗣":"1f5e3","👤":"1f464","👥":"1f465","🫂":"1fac2","👣":"1f463","🏻":"1f463","🏼":"1f463","🏽":"1f463","🏾":"1f463","🏿":"1f463","🦰":"1f463","🦱":"1f463","🦳":"1f463","🦲":"1f463","🐵":"1f435","🐒":"1f412","🦍":"1f98d","🦧":"1f9a7","🐶":"1f436","🐕":"1f415","🦮":"1f9ae","🐩":"1f429","🐺":"1f43a","🦊":"1f98a","🦝":"1f99d","🐱":"1f431","🐈":"1f408","🦁":"1f981","🐯":"1f42f","🐅":"1f405","🐆":"1f406","🐴":"1f434","🐎":"1f40e","🦄":"1f984","🦓":"1f993","🦌":"1f98c","🦬":"1f9ac","🐮":"1f42e","🐂":"1f402","🐃":"1f403","🐄":"1f404","🐷":"1f437","🐖":"1f416","🐗":"1f417","🐽":"1f43d","🐏":"1f40f","🐑":"1f411","🐐":"1f410","🐪":"1f42a","🐫":"1f42b","🦙":"1f999","🦒":"1f992","🐘":"1f418","🦣":"1f9a3","🦏":"1f98f","🦛":"1f99b","🐭":"1f42d","🐁":"1f401","🐀":"1f400","🐹":"1f439","🐰":"1f430","🐇":"1f407","🐿":"1f43f","🦫":"1f9ab","🦔":"1f994","🦇":"1f987","🐻":"1f43b","🐨":"1f428","🐼":"1f43c","🦥":"1f9a5","🦦":"1f9a6","🦨":"1f9a8","🦘":"1f998","🦡":"1f9a1","🐾":"1f43e","🦃":"1f983","🐔":"1f414","🐓":"1f413","🐣":"1f423","🐤":"1f424","🐥":"1f425","🐦":"1f426","🐧":"1f427","🕊":"1f54a","🦅":"1f985","🦆":"1f986","🦢":"1f9a2","🦉":"1f989","🦤":"1f9a4","🪶":"1fab6","🦩":"1f9a9","🦚":"1f99a","🦜":"1f99c","🐸":"1f438","🐊":"1f40a","🐢":"1f422","🦎":"1f98e","🐍":"1f40d","🐲":"1f432","🐉":"1f409","🦕":"1f995","🦖":"1f996","🐳":"1f433","🐋":"1f40b","🐬":"1f42c","🦭":"1f9ad","🐟":"1f41f","🐠":"1f420","🐡":"1f421","🦈":"1f988","🐙":"1f419","🐚":"1f41a","🐌":"1f40c","🦋":"1f98b","🐛":"1f41b","🐜":"1f41c","🐝":"1f41d","🪲":"1fab2","🐞":"1f41e","🦗":"1f997","🪳":"1fab3","🕷":"1f577","🕸":"1f578","🦂":"1f982","🦟":"1f99f","🪰":"1fab0","🪱":"1fab1","🦠":"1f9a0","💐":"1f490","🌸":"1f338","💮":"1f4ae","🏵":"1f3f5","🌹":"1f339","🥀":"1f940","🌺":"1f33a","🌻":"1f33b","🌼":"1f33c","🌷":"1f337","🌱":"1f331","🪴":"1fab4","🌲":"1f332","🌳":"1f333","🌴":"1f334","🌵":"1f335","🌾":"1f33e","🌿":"1f33f","☘":"2618","🍀":"1f340","🍁":"1f341","🍂":"1f342","🍃":"1f343","🍇":"1f347","🍈":"1f348","🍉":"1f349","🍊":"1f34a","🍋":"1f34b","🍌":"1f34c","🍍":"1f34d","🥭":"1f96d","🍎":"1f34e","🍏":"1f34f","🍐":"1f350","🍑":"1f351","🍒":"1f352","🍓":"1f353","🫐":"1fad0","🥝":"1f95d","🍅":"1f345","🫒":"1fad2","🥥":"1f965","🥑":"1f951","🍆":"1f346","🥔":"1f954","🥕":"1f955","🌽":"1f33d","🌶":"1f336","🫑":"1fad1","🥒":"1f952","🥬":"1f96c","🥦":"1f966","🧄":"1f9c4","🧅":"1f9c5","🍄":"1f344","🥜":"1f95c","🌰":"1f330","🍞":"1f35e","🥐":"1f950","🥖":"1f956","🫓":"1fad3","🥨":"1f968","🥯":"1f96f","🥞":"1f95e","🧇":"1f9c7","🧀":"1f9c0","🍖":"1f356","🍗":"1f357","🥩":"1f969","🥓":"1f953","🍔":"1f354","🍟":"1f35f","🍕":"1f355","🌭":"1f32d","🥪":"1f96a","🌮":"1f32e","🌯":"1f32f","🫔":"1fad4","🥙":"1f959","🧆":"1f9c6","🥚":"1f95a","🍳":"1f373","🥘":"1f958","🍲":"1f372","🫕":"1fad5","🥣":"1f963","🥗":"1f957","🍿":"1f37f","🧈":"1f9c8","🧂":"1f9c2","🥫":"1f96b","🍱":"1f371","🍘":"1f358","🍙":"1f359","🍚":"1f35a","🍛":"1f35b","🍜":"1f35c","🍝":"1f35d","🍠":"1f360","🍢":"1f362","🍣":"1f363","🍤":"1f364","🍥":"1f365","🥮":"1f96e","🍡":"1f361","🥟":"1f95f","🥠":"1f960","🥡":"1f961","🦀":"1f980","🦞":"1f99e","🦐":"1f990","🦑":"1f991","🦪":"1f9aa","🍦":"1f366","🍧":"1f367","🍨":"1f368","🍩":"1f369","🍪":"1f36a","🎂":"1f382","🍰":"1f370","🧁":"1f9c1","🥧":"1f967","🍫":"1f36b","🍬":"1f36c","🍭":"1f36d","🍮":"1f36e","🍯":"1f36f","🍼":"1f37c","🥛":"1f95b","☕":"2615","🫖":"1fad6","🍵":"1f375","🍶":"1f376","🍾":"1f37e","🍷":"1f377","🍸":"1f378","🍹":"1f379","🍺":"1f37a","🍻":"1f37b","🥂":"1f942","🥃":"1f943","🥤":"1f964","🧋":"1f9cb","🧃":"1f9c3","🧉":"1f9c9","🧊":"1f9ca","🥢":"1f962","🍽":"1f37d","🍴":"1f374","🥄":"1f944","🔪":"1f52a","🏺":"1f3fa","🌍":"1f30d","🌎":"1f30e","🌏":"1f30f","🌐":"1f310","🗺":"1f5fa","🗾":"1f5fe","🧭":"1f9ed","🏔":"1f3d4","⛰":"26f0","🌋":"1f30b","🗻":"1f5fb","🏕":"1f3d5","🏖":"1f3d6","🏜":"1f3dc","🏝":"1f3dd","🏞":"1f3de","🏟":"1f3df","🏛":"1f3db","🏗":"1f3d7","🧱":"1f9f1","🪨":"1faa8","🪵":"1fab5","🛖":"1f6d6","🏘":"1f3d8","🏚":"1f3da","🏠":"1f3e0","🏡":"1f3e1","🏢":"1f3e2","🏣":"1f3e3","🏤":"1f3e4","🏥":"1f3e5","🏦":"1f3e6","🏨":"1f3e8","🏩":"1f3e9","🏪":"1f3ea","🏫":"1f3eb","🏬":"1f3ec","🏭":"1f3ed","🏯":"1f3ef","🏰":"1f3f0","💒":"1f492","🗼":"1f5fc","🗽":"1f5fd","⛪":"26ea","🕌":"1f54c","🛕":"1f6d5","🕍":"1f54d","⛩":"26e9","🕋":"1f54b","⛲":"26f2","⛺":"26fa","🌁":"1f301","🌃":"1f303","🏙":"1f3d9","🌄":"1f304","🌅":"1f305","🌆":"1f306","🌇":"1f307","🌉":"1f309","♨":"2668","🎠":"1f3a0","🎡":"1f3a1","🎢":"1f3a2","💈":"1f488","🎪":"1f3aa","🚂":"1f682","🚃":"1f683","🚄":"1f684","🚅":"1f685","🚆":"1f686","🚇":"1f687","🚈":"1f688","🚉":"1f689","🚊":"1f68a","🚝":"1f69d","🚞":"1f69e","🚋":"1f68b","🚌":"1f68c","🚍":"1f68d","🚎":"1f68e","🚐":"1f690","🚑":"1f691","🚒":"1f692","🚓":"1f693","🚔":"1f694","🚕":"1f695","🚖":"1f696","🚗":"1f697","🚘":"1f698","🚙":"1f699","🛻":"1f6fb","🚚":"1f69a","🚛":"1f69b","🚜":"1f69c","🏎":"1f3ce","🏍":"1f3cd","🛵":"1f6f5","🦽":"1f9bd","🦼":"1f9bc","🛺":"1f6fa","🚲":"1f6b2","🛴":"1f6f4","🛹":"1f6f9","🛼":"1f6fc","🚏":"1f68f","🛣":"1f6e3","🛤":"1f6e4","🛢":"1f6e2","⛽":"26fd","🚨":"1f6a8","🚥":"1f6a5","🚦":"1f6a6","🛑":"1f6d1","🚧":"1f6a7","⚓":"2693","⛵":"26f5","🛶":"1f6f6","🚤":"1f6a4","🛳":"1f6f3","⛴":"26f4","🛥":"1f6e5","🚢":"1f6a2","✈":"2708","🛩":"1f6e9","🛫":"1f6eb","🛬":"1f6ec","🪂":"1fa82","💺":"1f4ba","🚁":"1f681","🚟":"1f69f","🚠":"1f6a0","🚡":"1f6a1","🛰":"1f6f0","🚀":"1f680","🛸":"1f6f8","🛎":"1f6ce","🧳":"1f9f3","⌛":"231b","⏳":"23f3","⌚":"231a","⏰":"23f0","⏱":"23f1","⏲":"23f2","🕰":"1f570","🕛":"1f55b","🕧":"1f567","🕐":"1f550","🕜":"1f55c","🕑":"1f551","🕝":"1f55d","🕒":"1f552","🕞":"1f55e","🕓":"1f553","🕟":"1f55f","🕔":"1f554","🕠":"1f560","🕕":"1f555","🕡":"1f561","🕖":"1f556","🕢":"1f562","🕗":"1f557","🕣":"1f563","🕘":"1f558","🕤":"1f564","🕙":"1f559","🕥":"1f565","🕚":"1f55a","🕦":"1f566","🌑":"1f311","🌒":"1f312","🌓":"1f313","🌔":"1f314","🌕":"1f315","🌖":"1f316","🌗":"1f317","🌘":"1f318","🌙":"1f319","🌚":"1f31a","🌛":"1f31b","🌜":"1f31c","🌡":"1f321","☀":"2600","🌝":"1f31d","🌞":"1f31e","🪐":"1fa90","⭐":"2b50","🌟":"1f31f","🌠":"1f320","🌌":"1f30c","☁":"2601","⛅":"26c5","⛈":"26c8","🌤":"1f324","🌥":"1f325","🌦":"1f326","🌧":"1f327","🌨":"1f328","🌩":"1f329","🌪":"1f32a","🌫":"1f32b","🌬":"1f32c","🌀":"1f300","🌈":"1f308","🌂":"1f302","☂":"2602","☔":"2614","⛱":"26f1","⚡":"26a1","❄":"2744","☃":"2603","⛄":"26c4","☄":"2604","🔥":"1f525","💧":"1f4a7","🌊":"1f30a","🎃":"1f383","🎄":"1f384","🎆":"1f386","🎇":"1f387","🧨":"1f9e8","✨":"2728","🎈":"1f388","🎉":"1f389","🎊":"1f38a","🎋":"1f38b","🎍":"1f38d","🎎":"1f38e","🎏":"1f38f","🎐":"1f390","🎑":"1f391","🧧":"1f9e7","🎀":"1f380","🎁":"1f381","🎗":"1f397","🎟":"1f39f","🎫":"1f3ab","🎖":"1f396","🏆":"1f3c6","🏅":"1f3c5","🥇":"1f947","🥈":"1f948","🥉":"1f949","⚽":"26bd","⚾":"26be","🥎":"1f94e","🏀":"1f3c0","🏐":"1f3d0","🏈":"1f3c8","🏉":"1f3c9","🎾":"1f3be","🥏":"1f94f","🎳":"1f3b3","🏏":"1f3cf","🏑":"1f3d1","🏒":"1f3d2","🥍":"1f94d","🏓":"1f3d3","🏸":"1f3f8","🥊":"1f94a","🥋":"1f94b","🥅":"1f945","⛳":"26f3","⛸":"26f8","🎣":"1f3a3","🤿":"1f93f","🎽":"1f3bd","🎿":"1f3bf","🛷":"1f6f7","🥌":"1f94c","🎯":"1f3af","🪀":"1fa80","🪁":"1fa81","🎱":"1f3b1","🔮":"1f52e","🪄":"1fa84","🧿":"1f9ff","🎮":"1f3ae","🕹":"1f579","🎰":"1f3b0","🎲":"1f3b2","🧩":"1f9e9","🧸":"1f9f8","🪅":"1fa85","🪆":"1fa86","♠":"2660","♥":"2665","♦":"2666","♣":"2663","♟":"265f","🃏":"1f0cf","🀄":"1f004","🎴":"1f3b4","🎭":"1f3ad","🖼":"1f5bc","🎨":"1f3a8","🧵":"1f9f5","🪡":"1faa1","🧶":"1f9f6","🪢":"1faa2","👓":"1f453","🕶":"1f576","🥽":"1f97d","🥼":"1f97c","🦺":"1f9ba","👔":"1f454","👕":"1f455","👖":"1f456","🧣":"1f9e3","🧤":"1f9e4","🧥":"1f9e5","🧦":"1f9e6","👗":"1f457","👘":"1f458","🥻":"1f97b","🩱":"1fa71","🩲":"1fa72","🩳":"1fa73","👙":"1f459","👚":"1f45a","👛":"1f45b","👜":"1f45c","👝":"1f45d","🛍":"1f6cd","🎒":"1f392","🩴":"1fa74","👞":"1f45e","👟":"1f45f","🥾":"1f97e","🥿":"1f97f","👠":"1f460","👡":"1f461","🩰":"1fa70","👢":"1f462","👑":"1f451","👒":"1f452","🎩":"1f3a9","🎓":"1f393","🧢":"1f9e2","🪖":"1fa96","⛑":"26d1","📿":"1f4ff","💄":"1f484","💍":"1f48d","💎":"1f48e","🔇":"1f507","🔈":"1f508","🔉":"1f509","🔊":"1f50a","📢":"1f4e2","📣":"1f4e3","📯":"1f4ef","🔔":"1f514","🔕":"1f515","🎼":"1f3bc","🎵":"1f3b5","🎶":"1f3b6","🎙":"1f399","🎚":"1f39a","🎛":"1f39b","🎤":"1f3a4","🎧":"1f3a7","📻":"1f4fb","🎷":"1f3b7","🪗":"1fa97","🎸":"1f3b8","🎹":"1f3b9","🎺":"1f3ba","🎻":"1f3bb","🪕":"1fa95","🥁":"1f941","🪘":"1fa98","📱":"1f4f1","📲":"1f4f2","☎":"260e","📞":"1f4de","📟":"1f4df","📠":"1f4e0","🔋":"1f50b","🔌":"1f50c","💻":"1f4bb","🖥":"1f5a5","🖨":"1f5a8","⌨":"2328","🖱":"1f5b1","🖲":"1f5b2","💽":"1f4bd","💾":"1f4be","💿":"1f4bf","📀":"1f4c0","🧮":"1f9ee","🎥":"1f3a5","🎞":"1f39e","📽":"1f4fd","🎬":"1f3ac","📺":"1f4fa","📷":"1f4f7","📸":"1f4f8","📹":"1f4f9","📼":"1f4fc","🔍":"1f50d","🔎":"1f50e","🕯":"1f56f","💡":"1f4a1","🔦":"1f526","🏮":"1f3ee","🪔":"1fa94","📔":"1f4d4","📕":"1f4d5","📖":"1f4d6","📗":"1f4d7","📘":"1f4d8","📙":"1f4d9","📚":"1f4da","📓":"1f4d3","📒":"1f4d2","📃":"1f4c3","📜":"1f4dc","📄":"1f4c4","📰":"1f4f0","🗞":"1f5de","📑":"1f4d1","🔖":"1f516","🏷":"1f3f7","💰":"1f4b0","🪙":"1fa99","💴":"1f4b4","💵":"1f4b5","💶":"1f4b6","💷":"1f4b7","💸":"1f4b8","💳":"1f4b3","🧾":"1f9fe","💹":"1f4b9","✉":"2709","📧":"1f4e7","📨":"1f4e8","📩":"1f4e9","📤":"1f4e4","📥":"1f4e5","📦":"1f4e6","📫":"1f4eb","📪":"1f4ea","📬":"1f4ec","📭":"1f4ed","📮":"1f4ee","🗳":"1f5f3","✏":"270f","✒":"2712","🖋":"1f58b","🖊":"1f58a","🖌":"1f58c","🖍":"1f58d","📝":"1f4dd","💼":"1f4bc","📁":"1f4c1","📂":"1f4c2","🗂":"1f5c2","📅":"1f4c5","📆":"1f4c6","🗒":"1f5d2","🗓":"1f5d3","📇":"1f4c7","📈":"1f4c8","📉":"1f4c9","📊":"1f4ca","📋":"1f4cb","📌":"1f4cc","📍":"1f4cd","📎":"1f4ce","🖇":"1f587","📏":"1f4cf","📐":"1f4d0","✂":"2702","🗃":"1f5c3","🗄":"1f5c4","🗑":"1f5d1","🔒":"1f512","🔓":"1f513","🔏":"1f50f","🔐":"1f510","🔑":"1f511","🗝":"1f5dd","🔨":"1f528","🪓":"1fa93","⛏":"26cf","⚒":"2692","🛠":"1f6e0","🗡":"1f5e1","⚔":"2694","🔫":"1f52b","🪃":"1fa83","🏹":"1f3f9","🛡":"1f6e1","🪚":"1fa9a","🔧":"1f527","🪛":"1fa9b","🔩":"1f529","⚙":"2699","🗜":"1f5dc","⚖":"2696","🦯":"1f9af","🔗":"1f517","⛓":"26d3","🪝":"1fa9d","🧰":"1f9f0","🧲":"1f9f2","🪜":"1fa9c","⚗":"2697","🧪":"1f9ea","🧫":"1f9eb","🧬":"1f9ec","🔬":"1f52c","🔭":"1f52d","📡":"1f4e1","💉":"1f489","🩸":"1fa78","💊":"1f48a","🩹":"1fa79","🩺":"1fa7a","🚪":"1f6aa","🛗":"1f6d7","🪞":"1fa9e","🪟":"1fa9f","🛏":"1f6cf","🛋":"1f6cb","🪑":"1fa91","🚽":"1f6bd","🪠":"1faa0","🚿":"1f6bf","🛁":"1f6c1","🪤":"1faa4","🪒":"1fa92","🧴":"1f9f4","🧷":"1f9f7","🧹":"1f9f9","🧺":"1f9fa","🧻":"1f9fb","🪣":"1faa3","🧼":"1f9fc","🪥":"1faa5","🧽":"1f9fd","🧯":"1f9ef","🛒":"1f6d2","🚬":"1f6ac","⚰":"26b0","🪦":"1faa6","⚱":"26b1","🗿":"1f5ff","🪧":"1faa7","🏧":"1f3e7","🚮":"1f6ae","🚰":"1f6b0","♿":"267f","🚹":"1f6b9","🚺":"1f6ba","🚻":"1f6bb","🚼":"1f6bc","🚾":"1f6be","🛂":"1f6c2","🛃":"1f6c3","🛄":"1f6c4","🛅":"1f6c5","⚠":"26a0","🚸":"1f6b8","⛔":"26d4","🚫":"1f6ab","🚳":"1f6b3","🚭":"1f6ad","🚯":"1f6af","🚱":"1f6b1","🚷":"1f6b7","📵":"1f4f5","🔞":"1f51e","☢":"2622","☣":"2623","⬆":"2b06","↗":"2197","➡":"27a1","↘":"2198","⬇":"2b07","↙":"2199","⬅":"2b05","↖":"2196","↕":"2195","↔":"2194","↩":"21a9","↪":"21aa","⤴":"2934","⤵":"2935","🔃":"1f503","🔄":"1f504","🔙":"1f519","🔚":"1f51a","🔛":"1f51b","🔜":"1f51c","🔝":"1f51d","🛐":"1f6d0","⚛":"269b","🕉":"1f549","✡":"2721","☸":"2638","☯":"262f","✝":"271d","☦":"2626","☪":"262a","☮":"262e","🕎":"1f54e","🔯":"1f52f","♈":"2648","♉":"2649","♊":"264a","♋":"264b","♌":"264c","♍":"264d","♎":"264e","♏":"264f","♐":"2650","♑":"2651","♒":"2652","♓":"2653","⛎":"26ce","🔀":"1f500","🔁":"1f501","🔂":"1f502","▶":"25b6","⏩":"23e9","⏭":"23ed","⏯":"23ef","◀":"25c0","⏪":"23ea","⏮":"23ee","🔼":"1f53c","⏫":"23eb","🔽":"1f53d","⏬":"23ec","⏸":"23f8","⏹":"23f9","⏺":"23fa","⏏":"23cf","🎦":"1f3a6","🔅":"1f505","🔆":"1f506","📶":"1f4f6","📳":"1f4f3","📴":"1f4f4","♀":"2640","♂":"2642","⚧":"26a7","✖":"2716","➕":"2795","➖":"2796","➗":"2797","♾":"267e","‼":"203c","⁉":"2049","❓":"2753","❔":"2754","❕":"2755","❗":"2757","〰":"3030","💱":"1f4b1","💲":"1f4b2","⚕":"2695","♻":"267b","⚜":"269c","🔱":"1f531","📛":"1f4db","🔰":"1f530","⭕":"2b55","✅":"2705","☑":"2611","✔":"2714","❌":"274c","❎":"274e","➰":"27b0","➿":"27bf","〽":"303d","✳":"2733","✴":"2734","❇":"2747","©":"a9","®":"ae","™":"2122","🔟":"1f51f","🔠":"1f520","🔡":"1f521","🔢":"1f522","🔣":"1f523","🔤":"1f524","🅰":"1f170","🆎":"1f18e","🅱":"1f171","🆑":"1f191","🆒":"1f192","🆓":"1f193","ℹ":"2139","🆔":"1f194","Ⓜ":"24c2","🆕":"1f195","🆖":"1f196","🅾":"1f17e","🆗":"1f197","🅿":"1f17f","🆘":"1f198","🆙":"1f199","🆚":"1f19a","🈁":"1f201","🈂":"1f202","🈷":"1f237","🈶":"1f236","🈯":"1f22f","🉐":"1f250","🈹":"1f239","🈚":"1f21a","🈲":"1f232","🉑":"1f251","🈸":"1f238","🈴":"1f234","🈳":"1f233","㊗":"3297","㊙":"3299","🈺":"1f23a","🈵":"1f235","🔴":"1f534","🟠":"1f7e0","🟡":"1f7e1","🟢":"1f7e2","🔵":"1f535","🟣":"1f7e3","🟤":"1f7e4","⚫":"26ab","⚪":"26aa","🟥":"1f7e5","🟧":"1f7e7","🟨":"1f7e8","🟩":"1f7e9","🟦":"1f7e6","🟪":"1f7ea","🟫":"1f7eb","⬛":"2b1b","⬜":"2b1c","◼":"25fc","◻":"25fb","◾":"25fe","◽":"25fd","▪":"25aa","▫":"25ab","🔶":"1f536","🔷":"1f537","🔸":"1f538","🔹":"1f539","🔺":"1f53a","🔻":"1f53b","💠":"1f4a0","🔘":"1f518","🔳":"1f533","🔲":"1f532","🏁":"1f3c1","🚩":"1f6a9","🎌":"1f38c","🏴":"1f3f4","🏳":"1f3f3","☺️":"263a","☹️":"2639","☠️":"2620","❣️":"2763","❤️":"2764","🕳️":"1f573","🗨️":"1f5e8","🗯️":"1f5ef","👋🏻":"1f44b-1f3fb","👋🏼":"1f44b-1f3fc","👋🏽":"1f44b-1f3fd","👋🏾":"1f44b-1f3fe","👋🏿":"1f44b-1f3ff","🤚🏻":"1f91a-1f3fb","🤚🏼":"1f91a-1f3fc","🤚🏽":"1f91a-1f3fd","🤚🏾":"1f91a-1f3fe","🤚🏿":"1f91a-1f3ff","🖐️":"1f590","🖐🏻":"1f590-1f3fb","🖐🏼":"1f590-1f3fc","🖐🏽":"1f590-1f3fd","🖐🏾":"1f590-1f3fe","🖐🏿":"1f590-1f3ff","✋🏻":"270b-1f3fb","✋🏼":"270b-1f3fc","✋🏽":"270b-1f3fd","✋🏾":"270b-1f3fe","✋🏿":"270b-1f3ff","🖖🏻":"1f596-1f3fb","🖖🏼":"1f596-1f3fc","🖖🏽":"1f596-1f3fd","🖖🏾":"1f596-1f3fe","🖖🏿":"1f596-1f3ff","👌🏻":"1f44c-1f3fb","👌🏼":"1f44c-1f3fc","👌🏽":"1f44c-1f3fd","👌🏾":"1f44c-1f3fe","👌🏿":"1f44c-1f3ff","🤌🏻":"1f90c-1f3fb","🤌🏼":"1f90c-1f3fc","🤌🏽":"1f90c-1f3fd","🤌🏾":"1f90c-1f3fe","🤌🏿":"1f90c-1f3ff","🤏🏻":"1f90f-1f3fb","🤏🏼":"1f90f-1f3fc","🤏🏽":"1f90f-1f3fd","🤏🏾":"1f90f-1f3fe","🤏🏿":"1f90f-1f3ff","✌️":"270c","✌🏻":"270c-1f3fb","✌🏼":"270c-1f3fc","✌🏽":"270c-1f3fd","✌🏾":"270c-1f3fe","✌🏿":"270c-1f3ff","🤞🏻":"1f91e-1f3fb","🤞🏼":"1f91e-1f3fc","🤞🏽":"1f91e-1f3fd","🤞🏾":"1f91e-1f3fe","🤞🏿":"1f91e-1f3ff","🤟🏻":"1f91f-1f3fb","🤟🏼":"1f91f-1f3fc","🤟🏽":"1f91f-1f3fd","🤟🏾":"1f91f-1f3fe","🤟🏿":"1f91f-1f3ff","🤘🏻":"1f918-1f3fb","🤘🏼":"1f918-1f3fc","🤘🏽":"1f918-1f3fd","🤘🏾":"1f918-1f3fe","🤘🏿":"1f918-1f3ff","🤙🏻":"1f919-1f3fb","🤙🏼":"1f919-1f3fc","🤙🏽":"1f919-1f3fd","🤙🏾":"1f919-1f3fe","🤙🏿":"1f919-1f3ff","👈🏻":"1f448-1f3fb","👈🏼":"1f448-1f3fc","👈🏽":"1f448-1f3fd","👈🏾":"1f448-1f3fe","👈🏿":"1f448-1f3ff","👉🏻":"1f449-1f3fb","👉🏼":"1f449-1f3fc","👉🏽":"1f449-1f3fd","👉🏾":"1f449-1f3fe","👉🏿":"1f449-1f3ff","👆🏻":"1f446-1f3fb","👆🏼":"1f446-1f3fc","👆🏽":"1f446-1f3fd","👆🏾":"1f446-1f3fe","👆🏿":"1f446-1f3ff","🖕🏻":"1f595-1f3fb","🖕🏼":"1f595-1f3fc","🖕🏽":"1f595-1f3fd","🖕🏾":"1f595-1f3fe","🖕🏿":"1f595-1f3ff","👇🏻":"1f447-1f3fb","👇🏼":"1f447-1f3fc","👇🏽":"1f447-1f3fd","👇🏾":"1f447-1f3fe","👇🏿":"1f447-1f3ff","☝️":"261d","☝🏻":"261d-1f3fb","☝🏼":"261d-1f3fc","☝🏽":"261d-1f3fd","☝🏾":"261d-1f3fe","☝🏿":"261d-1f3ff","👍🏻":"1f44d-1f3fb","👍🏼":"1f44d-1f3fc","👍🏽":"1f44d-1f3fd","👍🏾":"1f44d-1f3fe","👍🏿":"1f44d-1f3ff","👎🏻":"1f44e-1f3fb","👎🏼":"1f44e-1f3fc","👎🏽":"1f44e-1f3fd","👎🏾":"1f44e-1f3fe","👎🏿":"1f44e-1f3ff","✊🏻":"270a-1f3fb","✊🏼":"270a-1f3fc","✊🏽":"270a-1f3fd","✊🏾":"270a-1f3fe","✊🏿":"270a-1f3ff","👊🏻":"1f44a-1f3fb","👊🏼":"1f44a-1f3fc","👊🏽":"1f44a-1f3fd","👊🏾":"1f44a-1f3fe","👊🏿":"1f44a-1f3ff","🤛🏻":"1f91b-1f3fb","🤛🏼":"1f91b-1f3fc","🤛🏽":"1f91b-1f3fd","🤛🏾":"1f91b-1f3fe","🤛🏿":"1f91b-1f3ff","🤜🏻":"1f91c-1f3fb","🤜🏼":"1f91c-1f3fc","🤜🏽":"1f91c-1f3fd","🤜🏾":"1f91c-1f3fe","🤜🏿":"1f91c-1f3ff","👏🏻":"1f44f-1f3fb","👏🏼":"1f44f-1f3fc","👏🏽":"1f44f-1f3fd","👏🏾":"1f44f-1f3fe","👏🏿":"1f44f-1f3ff","🙌🏻":"1f64c-1f3fb","🙌🏼":"1f64c-1f3fc","🙌🏽":"1f64c-1f3fd","🙌🏾":"1f64c-1f3fe","🙌🏿":"1f64c-1f3ff","👐🏻":"1f450-1f3fb","👐🏼":"1f450-1f3fc","👐🏽":"1f450-1f3fd","👐🏾":"1f450-1f3fe","👐🏿":"1f450-1f3ff","🤲🏻":"1f932-1f3fb","🤲🏼":"1f932-1f3fc","🤲🏽":"1f932-1f3fd","🤲🏾":"1f932-1f3fe","🤲🏿":"1f932-1f3ff","🙏🏻":"1f64f-1f3fb","🙏🏼":"1f64f-1f3fc","🙏🏽":"1f64f-1f3fd","🙏🏾":"1f64f-1f3fe","🙏🏿":"1f64f-1f3ff","✍️":"270d","✍🏻":"270d-1f3fb","✍🏼":"270d-1f3fc","✍🏽":"270d-1f3fd","✍🏾":"270d-1f3fe","✍🏿":"270d-1f3ff","💅🏻":"1f485-1f3fb","💅🏼":"1f485-1f3fc","💅🏽":"1f485-1f3fd","💅🏾":"1f485-1f3fe","💅🏿":"1f485-1f3ff","🤳🏻":"1f933-1f3fb","🤳🏼":"1f933-1f3fc","🤳🏽":"1f933-1f3fd","🤳🏾":"1f933-1f3fe","🤳🏿":"1f933-1f3ff","💪🏻":"1f4aa-1f3fb","💪🏼":"1f4aa-1f3fc","💪🏽":"1f4aa-1f3fd","💪🏾":"1f4aa-1f3fe","💪🏿":"1f4aa-1f3ff","🦵🏻":"1f9b5-1f3fb","🦵🏼":"1f9b5-1f3fc","🦵🏽":"1f9b5-1f3fd","🦵🏾":"1f9b5-1f3fe","🦵🏿":"1f9b5-1f3ff","🦶🏻":"1f9b6-1f3fb","🦶🏼":"1f9b6-1f3fc","🦶🏽":"1f9b6-1f3fd","🦶🏾":"1f9b6-1f3fe","🦶🏿":"1f9b6-1f3ff","👂🏻":"1f442-1f3fb","👂🏼":"1f442-1f3fc","👂🏽":"1f442-1f3fd","👂🏾":"1f442-1f3fe","👂🏿":"1f442-1f3ff","🦻🏻":"1f9bb-1f3fb","🦻🏼":"1f9bb-1f3fc","🦻🏽":"1f9bb-1f3fd","🦻🏾":"1f9bb-1f3fe","🦻🏿":"1f9bb-1f3ff","👃🏻":"1f443-1f3fb","👃🏼":"1f443-1f3fc","👃🏽":"1f443-1f3fd","👃🏾":"1f443-1f3fe","👃🏿":"1f443-1f3ff","👁️":"1f441","👶🏻":"1f476-1f3fb","👶🏼":"1f476-1f3fc","👶🏽":"1f476-1f3fd","👶🏾":"1f476-1f3fe","👶🏿":"1f476-1f3ff","🧒🏻":"1f9d2-1f3fb","🧒🏼":"1f9d2-1f3fc","🧒🏽":"1f9d2-1f3fd","🧒🏾":"1f9d2-1f3fe","🧒🏿":"1f9d2-1f3ff","👦🏻":"1f466-1f3fb","👦🏼":"1f466-1f3fc","👦🏽":"1f466-1f3fd","👦🏾":"1f466-1f3fe","👦🏿":"1f466-1f3ff","👧🏻":"1f467-1f3fb","👧🏼":"1f467-1f3fc","👧🏽":"1f467-1f3fd","👧🏾":"1f467-1f3fe","👧🏿":"1f467-1f3ff","🧑🏻":"1f9d1-1f3fb","🧑🏼":"1f9d1-1f3fc","🧑🏽":"1f9d1-1f3fd","🧑🏾":"1f9d1-1f3fe","🧑🏿":"1f9d1-1f3ff","👱🏻":"1f471-1f3fb","👱🏼":"1f471-1f3fc","👱🏽":"1f471-1f3fd","👱🏾":"1f471-1f3fe","👱🏿":"1f471-1f3ff","👨🏻":"1f468-1f3fb","👨🏼":"1f468-1f3fc","👨🏽":"1f468-1f3fd","👨🏾":"1f468-1f3fe","👨🏿":"1f468-1f3ff","🧔🏻":"1f9d4-1f3fb","🧔🏼":"1f9d4-1f3fc","🧔🏽":"1f9d4-1f3fd","🧔🏾":"1f9d4-1f3fe","🧔🏿":"1f9d4-1f3ff","👩🏻":"1f469-1f3fb","👩🏼":"1f469-1f3fc","👩🏽":"1f469-1f3fd","👩🏾":"1f469-1f3fe","👩🏿":"1f469-1f3ff","🧓🏻":"1f9d3-1f3fb","🧓🏼":"1f9d3-1f3fc","🧓🏽":"1f9d3-1f3fd","🧓🏾":"1f9d3-1f3fe","🧓🏿":"1f9d3-1f3ff","👴🏻":"1f474-1f3fb","👴🏼":"1f474-1f3fc","👴🏽":"1f474-1f3fd","👴🏾":"1f474-1f3fe","👴🏿":"1f474-1f3ff","👵🏻":"1f475-1f3fb","👵🏼":"1f475-1f3fc","👵🏽":"1f475-1f3fd","👵🏾":"1f475-1f3fe","👵🏿":"1f475-1f3ff","🙍🏻":"1f64d-1f3fb","🙍🏼":"1f64d-1f3fc","🙍🏽":"1f64d-1f3fd","🙍🏾":"1f64d-1f3fe","🙍🏿":"1f64d-1f3ff","🙎🏻":"1f64e-1f3fb","🙎🏼":"1f64e-1f3fc","🙎🏽":"1f64e-1f3fd","🙎🏾":"1f64e-1f3fe","🙎🏿":"1f64e-1f3ff","🙅🏻":"1f645-1f3fb","🙅🏼":"1f645-1f3fc","🙅🏽":"1f645-1f3fd","🙅🏾":"1f645-1f3fe","🙅🏿":"1f645-1f3ff","🙆🏻":"1f646-1f3fb","🙆🏼":"1f646-1f3fc","🙆🏽":"1f646-1f3fd","🙆🏾":"1f646-1f3fe","🙆🏿":"1f646-1f3ff","💁🏻":"1f481-1f3fb","💁🏼":"1f481-1f3fc","💁🏽":"1f481-1f3fd","💁🏾":"1f481-1f3fe","💁🏿":"1f481-1f3ff","🙋🏻":"1f64b-1f3fb","🙋🏼":"1f64b-1f3fc","🙋🏽":"1f64b-1f3fd","🙋🏾":"1f64b-1f3fe","🙋🏿":"1f64b-1f3ff","🧏🏻":"1f9cf-1f3fb","🧏🏼":"1f9cf-1f3fc","🧏🏽":"1f9cf-1f3fd","🧏🏾":"1f9cf-1f3fe","🧏🏿":"1f9cf-1f3ff","🙇🏻":"1f647-1f3fb","🙇🏼":"1f647-1f3fc","🙇🏽":"1f647-1f3fd","🙇🏾":"1f647-1f3fe","🙇🏿":"1f647-1f3ff","🤦🏻":"1f926-1f3fb","🤦🏼":"1f926-1f3fc","🤦🏽":"1f926-1f3fd","🤦🏾":"1f926-1f3fe","🤦🏿":"1f926-1f3ff","🤷🏻":"1f937-1f3fb","🤷🏼":"1f937-1f3fc","🤷🏽":"1f937-1f3fd","🤷🏾":"1f937-1f3fe","🤷🏿":"1f937-1f3ff","👮🏻":"1f46e-1f3fb","👮🏼":"1f46e-1f3fc","👮🏽":"1f46e-1f3fd","👮🏾":"1f46e-1f3fe","👮🏿":"1f46e-1f3ff","🕵️":"1f575","🕵🏻":"1f575-1f3fb","🕵🏼":"1f575-1f3fc","🕵🏽":"1f575-1f3fd","🕵🏾":"1f575-1f3fe","🕵🏿":"1f575-1f3ff","💂🏻":"1f482-1f3fb","💂🏼":"1f482-1f3fc","💂🏽":"1f482-1f3fd","💂🏾":"1f482-1f3fe","💂🏿":"1f482-1f3ff","🥷🏻":"1f977-1f3fb","🥷🏼":"1f977-1f3fc","🥷🏽":"1f977-1f3fd","🥷🏾":"1f977-1f3fe","🥷🏿":"1f977-1f3ff","👷🏻":"1f477-1f3fb","👷🏼":"1f477-1f3fc","👷🏽":"1f477-1f3fd","👷🏾":"1f477-1f3fe","👷🏿":"1f477-1f3ff","🤴🏻":"1f934-1f3fb","🤴🏼":"1f934-1f3fc","🤴🏽":"1f934-1f3fd","🤴🏾":"1f934-1f3fe","🤴🏿":"1f934-1f3ff","👸🏻":"1f478-1f3fb","👸🏼":"1f478-1f3fc","👸🏽":"1f478-1f3fd","👸🏾":"1f478-1f3fe","👸🏿":"1f478-1f3ff","👳🏻":"1f473-1f3fb","👳🏼":"1f473-1f3fc","👳🏽":"1f473-1f3fd","👳🏾":"1f473-1f3fe","👳🏿":"1f473-1f3ff","👲🏻":"1f472-1f3fb","👲🏼":"1f472-1f3fc","👲🏽":"1f472-1f3fd","👲🏾":"1f472-1f3fe","👲🏿":"1f472-1f3ff","🧕🏻":"1f9d5-1f3fb","🧕🏼":"1f9d5-1f3fc","🧕🏽":"1f9d5-1f3fd","🧕🏾":"1f9d5-1f3fe","🧕🏿":"1f9d5-1f3ff","🤵🏻":"1f935-1f3fb","🤵🏼":"1f935-1f3fc","🤵🏽":"1f935-1f3fd","🤵🏾":"1f935-1f3fe","🤵🏿":"1f935-1f3ff","👰🏻":"1f470-1f3fb","👰🏼":"1f470-1f3fc","👰🏽":"1f470-1f3fd","👰🏾":"1f470-1f3fe","👰🏿":"1f470-1f3ff","🤰🏻":"1f930-1f3fb","🤰🏼":"1f930-1f3fc","🤰🏽":"1f930-1f3fd","🤰🏾":"1f930-1f3fe","🤰🏿":"1f930-1f3ff","🤱🏻":"1f931-1f3fb","🤱🏼":"1f931-1f3fc","🤱🏽":"1f931-1f3fd","🤱🏾":"1f931-1f3fe","🤱🏿":"1f931-1f3ff","👼🏻":"1f47c-1f3fb","👼🏼":"1f47c-1f3fc","👼🏽":"1f47c-1f3fd","👼🏾":"1f47c-1f3fe","👼🏿":"1f47c-1f3ff","🎅🏻":"1f385-1f3fb","🎅🏼":"1f385-1f3fc","🎅🏽":"1f385-1f3fd","🎅🏾":"1f385-1f3fe","🎅🏿":"1f385-1f3ff","🤶🏻":"1f936-1f3fb","🤶🏼":"1f936-1f3fc","🤶🏽":"1f936-1f3fd","🤶🏾":"1f936-1f3fe","🤶🏿":"1f936-1f3ff","🦸🏻":"1f9b8-1f3fb","🦸🏼":"1f9b8-1f3fc","🦸🏽":"1f9b8-1f3fd","🦸🏾":"1f9b8-1f3fe","🦸🏿":"1f9b8-1f3ff","🦹🏻":"1f9b9-1f3fb","🦹🏼":"1f9b9-1f3fc","🦹🏽":"1f9b9-1f3fd","🦹🏾":"1f9b9-1f3fe","🦹🏿":"1f9b9-1f3ff","🧙🏻":"1f9d9-1f3fb","🧙🏼":"1f9d9-1f3fc","🧙🏽":"1f9d9-1f3fd","🧙🏾":"1f9d9-1f3fe","🧙🏿":"1f9d9-1f3ff","🧚🏻":"1f9da-1f3fb","🧚🏼":"1f9da-1f3fc","🧚🏽":"1f9da-1f3fd","🧚🏾":"1f9da-1f3fe","🧚🏿":"1f9da-1f3ff","🧛🏻":"1f9db-1f3fb","🧛🏼":"1f9db-1f3fc","🧛🏽":"1f9db-1f3fd","🧛🏾":"1f9db-1f3fe","🧛🏿":"1f9db-1f3ff","🧜🏻":"1f9dc-1f3fb","🧜🏼":"1f9dc-1f3fc","🧜🏽":"1f9dc-1f3fd","🧜🏾":"1f9dc-1f3fe","🧜🏿":"1f9dc-1f3ff","🧝🏻":"1f9dd-1f3fb","🧝🏼":"1f9dd-1f3fc","🧝🏽":"1f9dd-1f3fd","🧝🏾":"1f9dd-1f3fe","🧝🏿":"1f9dd-1f3ff","💆🏻":"1f486-1f3fb","💆🏼":"1f486-1f3fc","💆🏽":"1f486-1f3fd","💆🏾":"1f486-1f3fe","💆🏿":"1f486-1f3ff","💇🏻":"1f487-1f3fb","💇🏼":"1f487-1f3fc","💇🏽":"1f487-1f3fd","💇🏾":"1f487-1f3fe","💇🏿":"1f487-1f3ff","🚶🏻":"1f6b6-1f3fb","🚶🏼":"1f6b6-1f3fc","🚶🏽":"1f6b6-1f3fd","🚶🏾":"1f6b6-1f3fe","🚶🏿":"1f6b6-1f3ff","🧍🏻":"1f9cd-1f3fb","🧍🏼":"1f9cd-1f3fc","🧍🏽":"1f9cd-1f3fd","🧍🏾":"1f9cd-1f3fe","🧍🏿":"1f9cd-1f3ff","🧎🏻":"1f9ce-1f3fb","🧎🏼":"1f9ce-1f3fc","🧎🏽":"1f9ce-1f3fd","🧎🏾":"1f9ce-1f3fe","🧎🏿":"1f9ce-1f3ff","🏃🏻":"1f3c3-1f3fb","🏃🏼":"1f3c3-1f3fc","🏃🏽":"1f3c3-1f3fd","🏃🏾":"1f3c3-1f3fe","🏃🏿":"1f3c3-1f3ff","💃🏻":"1f483-1f3fb","💃🏼":"1f483-1f3fc","💃🏽":"1f483-1f3fd","💃🏾":"1f483-1f3fe","💃🏿":"1f483-1f3ff","🕺🏻":"1f57a-1f3fb","🕺🏼":"1f57a-1f3fc","🕺🏽":"1f57a-1f3fd","🕺🏾":"1f57a-1f3fe","🕺🏿":"1f57a-1f3ff","🕴️":"1f574","🕴🏻":"1f574-1f3fb","🕴🏼":"1f574-1f3fc","🕴🏽":"1f574-1f3fd","🕴🏾":"1f574-1f3fe","🕴🏿":"1f574-1f3ff","🧖🏻":"1f9d6-1f3fb","🧖🏼":"1f9d6-1f3fc","🧖🏽":"1f9d6-1f3fd","🧖🏾":"1f9d6-1f3fe","🧖🏿":"1f9d6-1f3ff","🧗🏻":"1f9d7-1f3fb","🧗🏼":"1f9d7-1f3fc","🧗🏽":"1f9d7-1f3fd","🧗🏾":"1f9d7-1f3fe","🧗🏿":"1f9d7-1f3ff","🏇🏻":"1f3c7-1f3fb","🏇🏼":"1f3c7-1f3fc","🏇🏽":"1f3c7-1f3fd","🏇🏾":"1f3c7-1f3fe","🏇🏿":"1f3c7-1f3ff","⛷️":"26f7","🏂🏻":"1f3c2-1f3fb","🏂🏼":"1f3c2-1f3fc","🏂🏽":"1f3c2-1f3fd","🏂🏾":"1f3c2-1f3fe","🏂🏿":"1f3c2-1f3ff","🏌️":"1f3cc","🏌🏻":"1f3cc-1f3fb","🏌🏼":"1f3cc-1f3fc","🏌🏽":"1f3cc-1f3fd","🏌🏾":"1f3cc-1f3fe","🏌🏿":"1f3cc-1f3ff","🏄🏻":"1f3c4-1f3fb","🏄🏼":"1f3c4-1f3fc","🏄🏽":"1f3c4-1f3fd","🏄🏾":"1f3c4-1f3fe","🏄🏿":"1f3c4-1f3ff","🚣🏻":"1f6a3-1f3fb","🚣🏼":"1f6a3-1f3fc","🚣🏽":"1f6a3-1f3fd","🚣🏾":"1f6a3-1f3fe","🚣🏿":"1f6a3-1f3ff","🏊🏻":"1f3ca-1f3fb","🏊🏼":"1f3ca-1f3fc","🏊🏽":"1f3ca-1f3fd","🏊🏾":"1f3ca-1f3fe","🏊🏿":"1f3ca-1f3ff","⛹️":"26f9","⛹🏻":"26f9-1f3fb","⛹🏼":"26f9-1f3fc","⛹🏽":"26f9-1f3fd","⛹🏾":"26f9-1f3fe","⛹🏿":"26f9-1f3ff","🏋️":"1f3cb","🏋🏻":"1f3cb-1f3fb","🏋🏼":"1f3cb-1f3fc","🏋🏽":"1f3cb-1f3fd","🏋🏾":"1f3cb-1f3fe","🏋🏿":"1f3cb-1f3ff","🚴🏻":"1f6b4-1f3fb","🚴🏼":"1f6b4-1f3fc","🚴🏽":"1f6b4-1f3fd","🚴🏾":"1f6b4-1f3fe","🚴🏿":"1f6b4-1f3ff","🚵🏻":"1f6b5-1f3fb","🚵🏼":"1f6b5-1f3fc","🚵🏽":"1f6b5-1f3fd","🚵🏾":"1f6b5-1f3fe","🚵🏿":"1f6b5-1f3ff","🤸🏻":"1f938-1f3fb","🤸🏼":"1f938-1f3fc","🤸🏽":"1f938-1f3fd","🤸🏾":"1f938-1f3fe","🤸🏿":"1f938-1f3ff","🤽🏻":"1f93d-1f3fb","🤽🏼":"1f93d-1f3fc","🤽🏽":"1f93d-1f3fd","🤽🏾":"1f93d-1f3fe","🤽🏿":"1f93d-1f3ff","🤾🏻":"1f93e-1f3fb","🤾🏼":"1f93e-1f3fc","🤾🏽":"1f93e-1f3fd","🤾🏾":"1f93e-1f3fe","🤾🏿":"1f93e-1f3ff","🤹🏻":"1f939-1f3fb","🤹🏼":"1f939-1f3fc","🤹🏽":"1f939-1f3fd","🤹🏾":"1f939-1f3fe","🤹🏿":"1f939-1f3ff","🧘🏻":"1f9d8-1f3fb","🧘🏼":"1f9d8-1f3fc","🧘🏽":"1f9d8-1f3fd","🧘🏾":"1f9d8-1f3fe","🧘🏿":"1f9d8-1f3ff","🛀🏻":"1f6c0-1f3fb","🛀🏼":"1f6c0-1f3fc","🛀🏽":"1f6c0-1f3fd","🛀🏾":"1f6c0-1f3fe","🛀🏿":"1f6c0-1f3ff","🛌🏻":"1f6cc-1f3fb","🛌🏼":"1f6cc-1f3fc","🛌🏽":"1f6cc-1f3fd","🛌🏾":"1f6cc-1f3fe","🛌🏿":"1f6cc-1f3ff","👭🏻":"1f46d-1f3fb","👭🏼":"1f46d-1f3fc","👭🏽":"1f46d-1f3fd","👭🏾":"1f46d-1f3fe","👭🏿":"1f46d-1f3ff","👫🏻":"1f46b-1f3fb","👫🏼":"1f46b-1f3fc","👫🏽":"1f46b-1f3fd","👫🏾":"1f46b-1f3fe","👫🏿":"1f46b-1f3ff","👬🏻":"1f46c-1f3fb","👬🏼":"1f46c-1f3fc","👬🏽":"1f46c-1f3fd","👬🏾":"1f46c-1f3fe","👬🏿":"1f46c-1f3ff","💏🏻":"1f48f-1f3fb","💏🏼":"1f48f-1f3fc","💏🏽":"1f48f-1f3fd","💏🏾":"1f48f-1f3fe","💏🏿":"1f48f-1f3ff","💑🏻":"1f491-1f3fb","💑🏼":"1f491-1f3fc","💑🏽":"1f491-1f3fd","💑🏾":"1f491-1f3fe","💑🏿":"1f491-1f3ff","🗣️":"1f5e3","🐿️":"1f43f","🕊️":"1f54a","🕷️":"1f577","🕸️":"1f578","🏵️":"1f3f5","☘️":"2618","🌶️":"1f336","🍽️":"1f37d","🗺️":"1f5fa","🏔️":"1f3d4","⛰️":"26f0","🏕️":"1f3d5","🏖️":"1f3d6","🏜️":"1f3dc","🏝️":"1f3dd","🏞️":"1f3de","🏟️":"1f3df","🏛️":"1f3db","🏗️":"1f3d7","🏘️":"1f3d8","🏚️":"1f3da","⛩️":"26e9","🏙️":"1f3d9","♨️":"2668","🏎️":"1f3ce","🏍️":"1f3cd","🛣️":"1f6e3","🛤️":"1f6e4","🛢️":"1f6e2","🛳️":"1f6f3","⛴️":"26f4","🛥️":"1f6e5","✈️":"2708","🛩️":"1f6e9","🛰️":"1f6f0","🛎️":"1f6ce","⏱️":"23f1","⏲️":"23f2","🕰️":"1f570","🌡️":"1f321","☀️":"2600","☁️":"2601","⛈️":"26c8","🌤️":"1f324","🌥️":"1f325","🌦️":"1f326","🌧️":"1f327","🌨️":"1f328","🌩️":"1f329","🌪️":"1f32a","🌫️":"1f32b","🌬️":"1f32c","☂️":"2602","⛱️":"26f1","❄️":"2744","☃️":"2603","☄️":"2604","🎗️":"1f397","🎟️":"1f39f","🎖️":"1f396","⛸️":"26f8","🕹️":"1f579","♠️":"2660","♥️":"2665","♦️":"2666","♣️":"2663","♟️":"265f","🖼️":"1f5bc","🕶️":"1f576","🛍️":"1f6cd","⛑️":"26d1","🎙️":"1f399","🎚️":"1f39a","🎛️":"1f39b","☎️":"260e","🖥️":"1f5a5","🖨️":"1f5a8","⌨️":"2328","🖱️":"1f5b1","🖲️":"1f5b2","🎞️":"1f39e","📽️":"1f4fd","🕯️":"1f56f","🗞️":"1f5de","🏷️":"1f3f7","✉️":"2709","🗳️":"1f5f3","✏️":"270f","✒️":"2712","🖋️":"1f58b","🖊️":"1f58a","🖌️":"1f58c","🖍️":"1f58d","🗂️":"1f5c2","🗒️":"1f5d2","🗓️":"1f5d3","🖇️":"1f587","✂️":"2702","🗃️":"1f5c3","🗄️":"1f5c4","🗑️":"1f5d1","🗝️":"1f5dd","⛏️":"26cf","⚒️":"2692","🛠️":"1f6e0","🗡️":"1f5e1","⚔️":"2694","🛡️":"1f6e1","⚙️":"2699","🗜️":"1f5dc","⚖️":"2696","⛓️":"26d3","⚗️":"2697","🛏️":"1f6cf","🛋️":"1f6cb","⚰️":"26b0","⚱️":"26b1","⚠️":"26a0","☢️":"2622","☣️":"2623","⬆️":"2b06","↗️":"2197","➡️":"27a1","↘️":"2198","⬇️":"2b07","↙️":"2199","⬅️":"2b05","↖️":"2196","↕️":"2195","↔️":"2194","↩️":"21a9","↪️":"21aa","⤴️":"2934","⤵️":"2935","⚛️":"269b","🕉️":"1f549","✡️":"2721","☸️":"2638","☯️":"262f","✝️":"271d","☦️":"2626","☪️":"262a","☮️":"262e","▶️":"25b6","⏭️":"23ed","⏯️":"23ef","◀️":"25c0","⏮️":"23ee","⏸️":"23f8","⏹️":"23f9","⏺️":"23fa","⏏️":"23cf","♀️":"2640","♂️":"2642","⚧️":"26a7","✖️":"2716","♾️":"267e","‼️":"203c","⁉️":"2049","〰️":"3030","⚕️":"2695","♻️":"267b","⚜️":"269c","☑️":"2611","✔️":"2714","〽️":"303d","✳️":"2733","✴️":"2734","❇️":"2747","©️":"a9","®️":"ae","™️":"2122","#⃣":"23-20e3","*⃣":"2a-20e3","0⃣":"30-20e3","1⃣":"31-20e3","2⃣":"32-20e3","3⃣":"33-20e3","4⃣":"34-20e3","5⃣":"35-20e3","6⃣":"36-20e3","7⃣":"37-20e3","8⃣":"38-20e3","9⃣":"39-20e3","🅰️":"1f170","🅱️":"1f171","ℹ️":"2139","Ⓜ️":"24c2","🅾️":"1f17e","🅿️":"1f17f","🈂️":"1f202","🈷️":"1f237","㊗️":"3297","㊙️":"3299","◼️":"25fc","◻️":"25fb","▪️":"25aa","▫️":"25ab","🏳️":"1f3f3","🇦🇨":"1f1e6-1f1e8","🇦🇩":"1f1e6-1f1e9","🇦🇪":"1f1e6-1f1ea","🇦🇫":"1f1e6-1f1eb","🇦🇬":"1f1e6-1f1ec","🇦🇮":"1f1e6-1f1ee","🇦🇱":"1f1e6-1f1f1","🇦🇲":"1f1e6-1f1f2","🇦🇴":"1f1e6-1f1f4","🇦🇶":"1f1e6-1f1f6","🇦🇷":"1f1e6-1f1f7","🇦🇸":"1f1e6-1f1f8","🇦🇹":"1f1e6-1f1f9","🇦🇺":"1f1e6-1f1fa","🇦🇼":"1f1e6-1f1fc","🇦🇽":"1f1e6-1f1fd","🇦🇿":"1f1e6-1f1ff","🇧🇦":"1f1e7-1f1e6","🇧🇧":"1f1e7-1f1e7","🇧🇩":"1f1e7-1f1e9","🇧🇪":"1f1e7-1f1ea","🇧🇫":"1f1e7-1f1eb","🇧🇬":"1f1e7-1f1ec","🇧🇭":"1f1e7-1f1ed","🇧🇮":"1f1e7-1f1ee","🇧🇯":"1f1e7-1f1ef","🇧🇱":"1f1e7-1f1f1","🇧🇲":"1f1e7-1f1f2","🇧🇳":"1f1e7-1f1f3","🇧🇴":"1f1e7-1f1f4","🇧🇶":"1f1e7-1f1f6","🇧🇷":"1f1e7-1f1f7","🇧🇸":"1f1e7-1f1f8","🇧🇹":"1f1e7-1f1f9","🇧🇻":"1f1e7-1f1fb","🇧🇼":"1f1e7-1f1fc","🇧🇾":"1f1e7-1f1fe","🇧🇿":"1f1e7-1f1ff","🇨🇦":"1f1e8-1f1e6","🇨🇨":"1f1e8-1f1e8","🇨🇩":"1f1e8-1f1e9","🇨🇫":"1f1e8-1f1eb","🇨🇬":"1f1e8-1f1ec","🇨🇭":"1f1e8-1f1ed","🇨🇮":"1f1e8-1f1ee","🇨🇰":"1f1e8-1f1f0","🇨🇱":"1f1e8-1f1f1","🇨🇲":"1f1e8-1f1f2","🇨🇳":"1f1e8-1f1f3","🇨🇴":"1f1e8-1f1f4","🇨🇵":"1f1e8-1f1f5","🇨🇷":"1f1e8-1f1f7","🇨🇺":"1f1e8-1f1fa","🇨🇻":"1f1e8-1f1fb","🇨🇼":"1f1e8-1f1fc","🇨🇽":"1f1e8-1f1fd","🇨🇾":"1f1e8-1f1fe","🇨🇿":"1f1e8-1f1ff","🇩🇪":"1f1e9-1f1ea","🇩🇬":"1f1e9-1f1ec","🇩🇯":"1f1e9-1f1ef","🇩🇰":"1f1e9-1f1f0","🇩🇲":"1f1e9-1f1f2","🇩🇴":"1f1e9-1f1f4","🇩🇿":"1f1e9-1f1ff","🇪🇦":"1f1ea-1f1e6","🇪🇨":"1f1ea-1f1e8","🇪🇪":"1f1ea-1f1ea","🇪🇬":"1f1ea-1f1ec","🇪🇭":"1f1ea-1f1ed","🇪🇷":"1f1ea-1f1f7","🇪🇸":"1f1ea-1f1f8","🇪🇹":"1f1ea-1f1f9","🇪🇺":"1f1ea-1f1fa","🇫🇮":"1f1eb-1f1ee","🇫🇯":"1f1eb-1f1ef","🇫🇰":"1f1eb-1f1f0","🇫🇲":"1f1eb-1f1f2","🇫🇴":"1f1eb-1f1f4","🇫🇷":"1f1eb-1f1f7","🇬🇦":"1f1ec-1f1e6","🇬🇧":"1f1ec-1f1e7","🇬🇩":"1f1ec-1f1e9","🇬🇪":"1f1ec-1f1ea","🇬🇫":"1f1ec-1f1eb","🇬🇬":"1f1ec-1f1ec","🇬🇭":"1f1ec-1f1ed","🇬🇮":"1f1ec-1f1ee","🇬🇱":"1f1ec-1f1f1","🇬🇲":"1f1ec-1f1f2","🇬🇳":"1f1ec-1f1f3","🇬🇵":"1f1ec-1f1f5","🇬🇶":"1f1ec-1f1f6","🇬🇷":"1f1ec-1f1f7","🇬🇸":"1f1ec-1f1f8","🇬🇹":"1f1ec-1f1f9","🇬🇺":"1f1ec-1f1fa","🇬🇼":"1f1ec-1f1fc","🇬🇾":"1f1ec-1f1fe","🇭🇰":"1f1ed-1f1f0","🇭🇲":"1f1ed-1f1f2","🇭🇳":"1f1ed-1f1f3","🇭🇷":"1f1ed-1f1f7","🇭🇹":"1f1ed-1f1f9","🇭🇺":"1f1ed-1f1fa","🇮🇨":"1f1ee-1f1e8","🇮🇩":"1f1ee-1f1e9","🇮🇪":"1f1ee-1f1ea","🇮🇱":"1f1ee-1f1f1","🇮🇲":"1f1ee-1f1f2","🇮🇳":"1f1ee-1f1f3","🇮🇴":"1f1ee-1f1f4","🇮🇶":"1f1ee-1f1f6","🇮🇷":"1f1ee-1f1f7","🇮🇸":"1f1ee-1f1f8","🇮🇹":"1f1ee-1f1f9","🇯🇪":"1f1ef-1f1ea","🇯🇲":"1f1ef-1f1f2","🇯🇴":"1f1ef-1f1f4","🇯🇵":"1f1ef-1f1f5","🇰🇪":"1f1f0-1f1ea","🇰🇬":"1f1f0-1f1ec","🇰🇭":"1f1f0-1f1ed","🇰🇮":"1f1f0-1f1ee","🇰🇲":"1f1f0-1f1f2","🇰🇳":"1f1f0-1f1f3","🇰🇵":"1f1f0-1f1f5","🇰🇷":"1f1f0-1f1f7","🇰🇼":"1f1f0-1f1fc","🇰🇾":"1f1f0-1f1fe","🇰🇿":"1f1f0-1f1ff","🇱🇦":"1f1f1-1f1e6","🇱🇧":"1f1f1-1f1e7","🇱🇨":"1f1f1-1f1e8","🇱🇮":"1f1f1-1f1ee","🇱🇰":"1f1f1-1f1f0","🇱🇷":"1f1f1-1f1f7","🇱🇸":"1f1f1-1f1f8","🇱🇹":"1f1f1-1f1f9","🇱🇺":"1f1f1-1f1fa","🇱🇻":"1f1f1-1f1fb","🇱🇾":"1f1f1-1f1fe","🇲🇦":"1f1f2-1f1e6","🇲🇨":"1f1f2-1f1e8","🇲🇩":"1f1f2-1f1e9","🇲🇪":"1f1f2-1f1ea","🇲🇫":"1f1f2-1f1eb","🇲🇬":"1f1f2-1f1ec","🇲🇭":"1f1f2-1f1ed","🇲🇰":"1f1f2-1f1f0","🇲🇱":"1f1f2-1f1f1","🇲🇲":"1f1f2-1f1f2","🇲🇳":"1f1f2-1f1f3","🇲🇴":"1f1f2-1f1f4","🇲🇵":"1f1f2-1f1f5","🇲🇶":"1f1f2-1f1f6","🇲🇷":"1f1f2-1f1f7","🇲🇸":"1f1f2-1f1f8","🇲🇹":"1f1f2-1f1f9","🇲🇺":"1f1f2-1f1fa","🇲🇻":"1f1f2-1f1fb","🇲🇼":"1f1f2-1f1fc","🇲🇽":"1f1f2-1f1fd","🇲🇾":"1f1f2-1f1fe","🇲🇿":"1f1f2-1f1ff","🇳🇦":"1f1f3-1f1e6","🇳🇨":"1f1f3-1f1e8","🇳🇪":"1f1f3-1f1ea","🇳🇫":"1f1f3-1f1eb","🇳🇬":"1f1f3-1f1ec","🇳🇮":"1f1f3-1f1ee","🇳🇱":"1f1f3-1f1f1","🇳🇴":"1f1f3-1f1f4","🇳🇵":"1f1f3-1f1f5","🇳🇷":"1f1f3-1f1f7","🇳🇺":"1f1f3-1f1fa","🇳🇿":"1f1f3-1f1ff","🇴🇲":"1f1f4-1f1f2","🇵🇦":"1f1f5-1f1e6","🇵🇪":"1f1f5-1f1ea","🇵🇫":"1f1f5-1f1eb","🇵🇬":"1f1f5-1f1ec","🇵🇭":"1f1f5-1f1ed","🇵🇰":"1f1f5-1f1f0","🇵🇱":"1f1f5-1f1f1","🇵🇲":"1f1f5-1f1f2","🇵🇳":"1f1f5-1f1f3","🇵🇷":"1f1f5-1f1f7","🇵🇸":"1f1f5-1f1f8","🇵🇹":"1f1f5-1f1f9","🇵🇼":"1f1f5-1f1fc","🇵🇾":"1f1f5-1f1fe","🇶🇦":"1f1f6-1f1e6","🇷🇪":"1f1f7-1f1ea","🇷🇴":"1f1f7-1f1f4","🇷🇸":"1f1f7-1f1f8","🇷🇺":"1f1f7-1f1fa","🇷🇼":"1f1f7-1f1fc","🇸🇦":"1f1f8-1f1e6","🇸🇧":"1f1f8-1f1e7","🇸🇨":"1f1f8-1f1e8","🇸🇩":"1f1f8-1f1e9","🇸🇪":"1f1f8-1f1ea","🇸🇬":"1f1f8-1f1ec","🇸🇭":"1f1f8-1f1ed","🇸🇮":"1f1f8-1f1ee","🇸🇯":"1f1f8-1f1ef","🇸🇰":"1f1f8-1f1f0","🇸🇱":"1f1f8-1f1f1","🇸🇲":"1f1f8-1f1f2","🇸🇳":"1f1f8-1f1f3","🇸🇴":"1f1f8-1f1f4","🇸🇷":"1f1f8-1f1f7","🇸🇸":"1f1f8-1f1f8","🇸🇹":"1f1f8-1f1f9","🇸🇻":"1f1f8-1f1fb","🇸🇽":"1f1f8-1f1fd","🇸🇾":"1f1f8-1f1fe","🇸🇿":"1f1f8-1f1ff","🇹🇦":"1f1f9-1f1e6","🇹🇨":"1f1f9-1f1e8","🇹🇩":"1f1f9-1f1e9","🇹🇫":"1f1f9-1f1eb","🇹🇬":"1f1f9-1f1ec","🇹🇭":"1f1f9-1f1ed","🇹🇯":"1f1f9-1f1ef","🇹🇰":"1f1f9-1f1f0","🇹🇱":"1f1f9-1f1f1","🇹🇲":"1f1f9-1f1f2","🇹🇳":"1f1f9-1f1f3","🇹🇴":"1f1f9-1f1f4","🇹🇷":"1f1f9-1f1f7","🇹🇹":"1f1f9-1f1f9","🇹🇻":"1f1f9-1f1fb","🇹🇼":"1f1f9-1f1fc","🇹🇿":"1f1f9-1f1ff","🇺🇦":"1f1fa-1f1e6","🇺🇬":"1f1fa-1f1ec","🇺🇲":"1f1fa-1f1f2","🇺🇳":"1f1fa-1f1f3","🇺🇸":"1f1fa-1f1f8","🇺🇾":"1f1fa-1f1fe","🇺🇿":"1f1fa-1f1ff","🇻🇦":"1f1fb-1f1e6","🇻🇨":"1f1fb-1f1e8","🇻🇪":"1f1fb-1f1ea","🇻🇬":"1f1fb-1f1ec","🇻🇮":"1f1fb-1f1ee","🇻🇳":"1f1fb-1f1f3","🇻🇺":"1f1fb-1f1fa","🇼🇫":"1f1fc-1f1eb","🇼🇸":"1f1fc-1f1f8","🇽🇰":"1f1fd-1f1f0","🇾🇪":"1f1fe-1f1ea","🇾🇹":"1f1fe-1f1f9","🇿🇦":"1f1ff-1f1e6","🇿🇲":"1f1ff-1f1f2","🇿🇼":"1f1ff-1f1fc","😶‍🌫":"1f636-200d-1f32b-fe0f","😮‍💨":"1f62e-200d-1f4a8","😵‍💫":"1f635-200d-1f4ab","❤‍🔥":"2764-fe0f-200d-1f525","❤‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨":"1f441-200d-1f5e8","🧔‍♂":"1f9d4-200d-2642-fe0f","🧔‍♀":"1f9d4-200d-2640-fe0f","👨‍🦰":"1f468-200d-1f9b0","👨‍🦱":"1f468-200d-1f9b1","👨‍🦳":"1f468-200d-1f9b3","👨‍🦲":"1f468-200d-1f9b2","👩‍🦰":"1f469-200d-1f9b0","🧑‍🦰":"1f9d1-200d-1f9b0","👩‍🦱":"1f469-200d-1f9b1","🧑‍🦱":"1f9d1-200d-1f9b1","👩‍🦳":"1f469-200d-1f9b3","🧑‍🦳":"1f9d1-200d-1f9b3","👩‍🦲":"1f469-200d-1f9b2","🧑‍🦲":"1f9d1-200d-1f9b2","👱‍♀":"1f471-200d-2640-fe0f","👱‍♂":"1f471-200d-2642-fe0f","🙍‍♂":"1f64d-200d-2642-fe0f","🙍‍♀":"1f64d-200d-2640-fe0f","🙎‍♂":"1f64e-200d-2642-fe0f","🙎‍♀":"1f64e-200d-2640-fe0f","🙅‍♂":"1f645-200d-2642-fe0f","🙅‍♀":"1f645-200d-2640-fe0f","🙆‍♂":"1f646-200d-2642-fe0f","🙆‍♀":"1f646-200d-2640-fe0f","💁‍♂":"1f481-200d-2642-fe0f","💁‍♀":"1f481-200d-2640-fe0f","🙋‍♂":"1f64b-200d-2642-fe0f","🙋‍♀":"1f64b-200d-2640-fe0f","🧏‍♂":"1f9cf-200d-2642-fe0f","🧏‍♀":"1f9cf-200d-2640-fe0f","🙇‍♂":"1f647-200d-2642-fe0f","🙇‍♀":"1f647-200d-2640-fe0f","🤦‍♂":"1f926-200d-2642-fe0f","🤦‍♀":"1f926-200d-2640-fe0f","🤷‍♂":"1f937-200d-2642-fe0f","🤷‍♀":"1f937-200d-2640-fe0f","🧑‍⚕":"1f9d1-200d-2695-fe0f","👨‍⚕":"1f468-200d-2695-fe0f","👩‍⚕":"1f469-200d-2695-fe0f","🧑‍🎓":"1f9d1-200d-1f393","👨‍🎓":"1f468-200d-1f393","👩‍🎓":"1f469-200d-1f393","🧑‍🏫":"1f9d1-200d-1f3eb","👨‍🏫":"1f468-200d-1f3eb","👩‍🏫":"1f469-200d-1f3eb","🧑‍⚖":"1f9d1-200d-2696-fe0f","👨‍⚖":"1f468-200d-2696-fe0f","👩‍⚖":"1f469-200d-2696-fe0f","🧑‍🌾":"1f9d1-200d-1f33e","👨‍🌾":"1f468-200d-1f33e","👩‍🌾":"1f469-200d-1f33e","🧑‍🍳":"1f9d1-200d-1f373","👨‍🍳":"1f468-200d-1f373","👩‍🍳":"1f469-200d-1f373","🧑‍🔧":"1f9d1-200d-1f527","👨‍🔧":"1f468-200d-1f527","👩‍🔧":"1f469-200d-1f527","🧑‍🏭":"1f9d1-200d-1f3ed","👨‍🏭":"1f468-200d-1f3ed","👩‍🏭":"1f469-200d-1f3ed","🧑‍💼":"1f9d1-200d-1f4bc","👨‍💼":"1f468-200d-1f4bc","👩‍💼":"1f469-200d-1f4bc","🧑‍🔬":"1f9d1-200d-1f52c","👨‍🔬":"1f468-200d-1f52c","👩‍🔬":"1f469-200d-1f52c","🧑‍💻":"1f9d1-200d-1f4bb","👨‍💻":"1f468-200d-1f4bb","👩‍💻":"1f469-200d-1f4bb","🧑‍🎤":"1f9d1-200d-1f3a4","👨‍🎤":"1f468-200d-1f3a4","👩‍🎤":"1f469-200d-1f3a4","🧑‍🎨":"1f9d1-200d-1f3a8","👨‍🎨":"1f468-200d-1f3a8","👩‍🎨":"1f469-200d-1f3a8","🧑‍✈":"1f9d1-200d-2708-fe0f","👨‍✈":"1f468-200d-2708-fe0f","👩‍✈":"1f469-200d-2708-fe0f","🧑‍🚀":"1f9d1-200d-1f680","👨‍🚀":"1f468-200d-1f680","👩‍🚀":"1f469-200d-1f680","🧑‍🚒":"1f9d1-200d-1f692","👨‍🚒":"1f468-200d-1f692","👩‍🚒":"1f469-200d-1f692","👮‍♂":"1f46e-200d-2642-fe0f","👮‍♀":"1f46e-200d-2640-fe0f","🕵‍♂":"1f575-fe0f-200d-2642-fe0f","🕵‍♀":"1f575-fe0f-200d-2640-fe0f","💂‍♂":"1f482-200d-2642-fe0f","💂‍♀":"1f482-200d-2640-fe0f","👷‍♂":"1f477-200d-2642-fe0f","👷‍♀":"1f477-200d-2640-fe0f","👳‍♂":"1f473-200d-2642-fe0f","👳‍♀":"1f473-200d-2640-fe0f","🤵‍♂":"1f935-200d-2642-fe0f","🤵‍♀":"1f935-200d-2640-fe0f","👰‍♂":"1f470-200d-2642-fe0f","👰‍♀":"1f470-200d-2640-fe0f","👩‍🍼":"1f469-200d-1f37c","👨‍🍼":"1f468-200d-1f37c","🧑‍🍼":"1f9d1-200d-1f37c","🧑‍🎄":"1f9d1-200d-1f384","🦸‍♂":"1f9b8-200d-2642-fe0f","🦸‍♀":"1f9b8-200d-2640-fe0f","🦹‍♂":"1f9b9-200d-2642-fe0f","🦹‍♀":"1f9b9-200d-2640-fe0f","🧙‍♂":"1f9d9-200d-2642-fe0f","🧙‍♀":"1f9d9-200d-2640-fe0f","🧚‍♂":"1f9da-200d-2642-fe0f","🧚‍♀":"1f9da-200d-2640-fe0f","🧛‍♂":"1f9db-200d-2642-fe0f","🧛‍♀":"1f9db-200d-2640-fe0f","🧜‍♂":"1f9dc-200d-2642-fe0f","🧜‍♀":"1f9dc-200d-2640-fe0f","🧝‍♂":"1f9dd-200d-2642-fe0f","🧝‍♀":"1f9dd-200d-2640-fe0f","🧞‍♂":"1f9de-200d-2642-fe0f","🧞‍♀":"1f9de-200d-2640-fe0f","🧟‍♂":"1f9df-200d-2642-fe0f","🧟‍♀":"1f9df-200d-2640-fe0f","💆‍♂":"1f486-200d-2642-fe0f","💆‍♀":"1f486-200d-2640-fe0f","💇‍♂":"1f487-200d-2642-fe0f","💇‍♀":"1f487-200d-2640-fe0f","🚶‍♂":"1f6b6-200d-2642-fe0f","🚶‍♀":"1f6b6-200d-2640-fe0f","🧍‍♂":"1f9cd-200d-2642-fe0f","🧍‍♀":"1f9cd-200d-2640-fe0f","🧎‍♂":"1f9ce-200d-2642-fe0f","🧎‍♀":"1f9ce-200d-2640-fe0f","🧑‍🦯":"1f9d1-200d-1f9af","👨‍🦯":"1f468-200d-1f9af","👩‍🦯":"1f469-200d-1f9af","🧑‍🦼":"1f9d1-200d-1f9bc","👨‍🦼":"1f468-200d-1f9bc","👩‍🦼":"1f469-200d-1f9bc","🧑‍🦽":"1f9d1-200d-1f9bd","👨‍🦽":"1f468-200d-1f9bd","👩‍🦽":"1f469-200d-1f9bd","🏃‍♂":"1f3c3-200d-2642-fe0f","🏃‍♀":"1f3c3-200d-2640-fe0f","👯‍♂":"1f46f-200d-2642-fe0f","👯‍♀":"1f46f-200d-2640-fe0f","🧖‍♂":"1f9d6-200d-2642-fe0f","🧖‍♀":"1f9d6-200d-2640-fe0f","🧗‍♂":"1f9d7-200d-2642-fe0f","🧗‍♀":"1f9d7-200d-2640-fe0f","🏌‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏄‍♂":"1f3c4-200d-2642-fe0f","🏄‍♀":"1f3c4-200d-2640-fe0f","🚣‍♂":"1f6a3-200d-2642-fe0f","🚣‍♀":"1f6a3-200d-2640-fe0f","🏊‍♂":"1f3ca-200d-2642-fe0f","🏊‍♀":"1f3ca-200d-2640-fe0f","⛹‍♂":"26f9-fe0f-200d-2642-fe0f","⛹‍♀":"26f9-fe0f-200d-2640-fe0f","🏋‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋‍♀":"1f3cb-fe0f-200d-2640-fe0f","🚴‍♂":"1f6b4-200d-2642-fe0f","🚴‍♀":"1f6b4-200d-2640-fe0f","🚵‍♂":"1f6b5-200d-2642-fe0f","🚵‍♀":"1f6b5-200d-2640-fe0f","🤸‍♂":"1f938-200d-2642-fe0f","🤸‍♀":"1f938-200d-2640-fe0f","🤼‍♂":"1f93c-200d-2642-fe0f","🤼‍♀":"1f93c-200d-2640-fe0f","🤽‍♂":"1f93d-200d-2642-fe0f","🤽‍♀":"1f93d-200d-2640-fe0f","🤾‍♂":"1f93e-200d-2642-fe0f","🤾‍♀":"1f93e-200d-2640-fe0f","🤹‍♂":"1f939-200d-2642-fe0f","🤹‍♀":"1f939-200d-2640-fe0f","🧘‍♂":"1f9d8-200d-2642-fe0f","🧘‍♀":"1f9d8-200d-2640-fe0f","👨‍👦":"1f468-200d-1f466","👨‍👧":"1f468-200d-1f467","👩‍👦":"1f469-200d-1f466","👩‍👧":"1f469-200d-1f467","🐕‍🦺":"1f415-200d-1f9ba","🐈‍⬛":"1f408-200d-2b1b","🐻‍❄":"1f43b-200d-2744-fe0f","#️⃣":"23-20e3","*️⃣":"2a-20e3","0️⃣":"30-20e3","1️⃣":"31-20e3","2️⃣":"32-20e3","3️⃣":"33-20e3","4️⃣":"34-20e3","5️⃣":"35-20e3","6️⃣":"36-20e3","7️⃣":"37-20e3","8️⃣":"38-20e3","9️⃣":"39-20e3","🏳‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠":"1f3f4-200d-2620-fe0f","😶‍🌫️":"1f636-200d-1f32b-fe0f","❤️‍🔥":"2764-fe0f-200d-1f525","❤️‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨️":"1f441-200d-1f5e8","👁️‍🗨":"1f441-200d-1f5e8","🧔‍♂️":"1f9d4-200d-2642-fe0f","🧔🏻‍♂":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂":"1f9d4-1f3ff-200d-2642-fe0f","🧔‍♀️":"1f9d4-200d-2640-fe0f","🧔🏻‍♀":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀":"1f9d4-1f3ff-200d-2640-fe0f","👨🏻‍🦰":"1f468-1f3fb-200d-1f9b0","👨🏼‍🦰":"1f468-1f3fc-200d-1f9b0","👨🏽‍🦰":"1f468-1f3fd-200d-1f9b0","👨🏾‍🦰":"1f468-1f3fe-200d-1f9b0","👨🏿‍🦰":"1f468-1f3ff-200d-1f9b0","👨🏻‍🦱":"1f468-1f3fb-200d-1f9b1","👨🏼‍🦱":"1f468-1f3fc-200d-1f9b1","👨🏽‍🦱":"1f468-1f3fd-200d-1f9b1","👨🏾‍🦱":"1f468-1f3fe-200d-1f9b1","👨🏿‍🦱":"1f468-1f3ff-200d-1f9b1","👨🏻‍🦳":"1f468-1f3fb-200d-1f9b3","👨🏼‍🦳":"1f468-1f3fc-200d-1f9b3","👨🏽‍🦳":"1f468-1f3fd-200d-1f9b3","👨🏾‍🦳":"1f468-1f3fe-200d-1f9b3","👨🏿‍🦳":"1f468-1f3ff-200d-1f9b3","👨🏻‍🦲":"1f468-1f3fb-200d-1f9b2","👨🏼‍🦲":"1f468-1f3fc-200d-1f9b2","👨🏽‍🦲":"1f468-1f3fd-200d-1f9b2","👨🏾‍🦲":"1f468-1f3fe-200d-1f9b2","👨🏿‍🦲":"1f468-1f3ff-200d-1f9b2","👩🏻‍🦰":"1f469-1f3fb-200d-1f9b0","👩🏼‍🦰":"1f469-1f3fc-200d-1f9b0","👩🏽‍🦰":"1f469-1f3fd-200d-1f9b0","👩🏾‍🦰":"1f469-1f3fe-200d-1f9b0","👩🏿‍🦰":"1f469-1f3ff-200d-1f9b0","🧑🏻‍🦰":"1f9d1-1f3fb-200d-1f9b0","🧑🏼‍🦰":"1f9d1-1f3fc-200d-1f9b0","🧑🏽‍🦰":"1f9d1-1f3fd-200d-1f9b0","🧑🏾‍🦰":"1f9d1-1f3fe-200d-1f9b0","🧑🏿‍🦰":"1f9d1-1f3ff-200d-1f9b0","👩🏻‍🦱":"1f469-1f3fb-200d-1f9b1","👩🏼‍🦱":"1f469-1f3fc-200d-1f9b1","👩🏽‍🦱":"1f469-1f3fd-200d-1f9b1","👩🏾‍🦱":"1f469-1f3fe-200d-1f9b1","👩🏿‍🦱":"1f469-1f3ff-200d-1f9b1","🧑🏻‍🦱":"1f9d1-1f3fb-200d-1f9b1","🧑🏼‍🦱":"1f9d1-1f3fc-200d-1f9b1","🧑🏽‍🦱":"1f9d1-1f3fd-200d-1f9b1","🧑🏾‍🦱":"1f9d1-1f3fe-200d-1f9b1","🧑🏿‍🦱":"1f9d1-1f3ff-200d-1f9b1","👩🏻‍🦳":"1f469-1f3fb-200d-1f9b3","👩🏼‍🦳":"1f469-1f3fc-200d-1f9b3","👩🏽‍🦳":"1f469-1f3fd-200d-1f9b3","👩🏾‍🦳":"1f469-1f3fe-200d-1f9b3","👩🏿‍🦳":"1f469-1f3ff-200d-1f9b3","🧑🏻‍🦳":"1f9d1-1f3fb-200d-1f9b3","🧑🏼‍🦳":"1f9d1-1f3fc-200d-1f9b3","🧑🏽‍🦳":"1f9d1-1f3fd-200d-1f9b3","🧑🏾‍🦳":"1f9d1-1f3fe-200d-1f9b3","🧑🏿‍🦳":"1f9d1-1f3ff-200d-1f9b3","👩🏻‍🦲":"1f469-1f3fb-200d-1f9b2","👩🏼‍🦲":"1f469-1f3fc-200d-1f9b2","👩🏽‍🦲":"1f469-1f3fd-200d-1f9b2","👩🏾‍🦲":"1f469-1f3fe-200d-1f9b2","👩🏿‍🦲":"1f469-1f3ff-200d-1f9b2","🧑🏻‍🦲":"1f9d1-1f3fb-200d-1f9b2","🧑🏼‍🦲":"1f9d1-1f3fc-200d-1f9b2","🧑🏽‍🦲":"1f9d1-1f3fd-200d-1f9b2","🧑🏾‍🦲":"1f9d1-1f3fe-200d-1f9b2","🧑🏿‍🦲":"1f9d1-1f3ff-200d-1f9b2","👱‍♀️":"1f471-200d-2640-fe0f","👱🏻‍♀":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀":"1f471-1f3ff-200d-2640-fe0f","👱‍♂️":"1f471-200d-2642-fe0f","👱🏻‍♂":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂":"1f471-1f3ff-200d-2642-fe0f","🙍‍♂️":"1f64d-200d-2642-fe0f","🙍🏻‍♂":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂":"1f64d-1f3ff-200d-2642-fe0f","🙍‍♀️":"1f64d-200d-2640-fe0f","🙍🏻‍♀":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀":"1f64d-1f3ff-200d-2640-fe0f","🙎‍♂️":"1f64e-200d-2642-fe0f","🙎🏻‍♂":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂":"1f64e-1f3ff-200d-2642-fe0f","🙎‍♀️":"1f64e-200d-2640-fe0f","🙎🏻‍♀":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀":"1f64e-1f3ff-200d-2640-fe0f","🙅‍♂️":"1f645-200d-2642-fe0f","🙅🏻‍♂":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂":"1f645-1f3ff-200d-2642-fe0f","🙅‍♀️":"1f645-200d-2640-fe0f","🙅🏻‍♀":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀":"1f645-1f3ff-200d-2640-fe0f","🙆‍♂️":"1f646-200d-2642-fe0f","🙆🏻‍♂":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂":"1f646-1f3ff-200d-2642-fe0f","🙆‍♀️":"1f646-200d-2640-fe0f","🙆🏻‍♀":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀":"1f646-1f3ff-200d-2640-fe0f","💁‍♂️":"1f481-200d-2642-fe0f","💁🏻‍♂":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂":"1f481-1f3ff-200d-2642-fe0f","💁‍♀️":"1f481-200d-2640-fe0f","💁🏻‍♀":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀":"1f481-1f3ff-200d-2640-fe0f","🙋‍♂️":"1f64b-200d-2642-fe0f","🙋🏻‍♂":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂":"1f64b-1f3ff-200d-2642-fe0f","🙋‍♀️":"1f64b-200d-2640-fe0f","🙋🏻‍♀":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀":"1f64b-1f3ff-200d-2640-fe0f","🧏‍♂️":"1f9cf-200d-2642-fe0f","🧏🏻‍♂":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂":"1f9cf-1f3ff-200d-2642-fe0f","🧏‍♀️":"1f9cf-200d-2640-fe0f","🧏🏻‍♀":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀":"1f9cf-1f3ff-200d-2640-fe0f","🙇‍♂️":"1f647-200d-2642-fe0f","🙇🏻‍♂":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂":"1f647-1f3ff-200d-2642-fe0f","🙇‍♀️":"1f647-200d-2640-fe0f","🙇🏻‍♀":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀":"1f647-1f3ff-200d-2640-fe0f","🤦‍♂️":"1f926-200d-2642-fe0f","🤦🏻‍♂":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂":"1f926-1f3ff-200d-2642-fe0f","🤦‍♀️":"1f926-200d-2640-fe0f","🤦🏻‍♀":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀":"1f926-1f3ff-200d-2640-fe0f","🤷‍♂️":"1f937-200d-2642-fe0f","🤷🏻‍♂":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂":"1f937-1f3ff-200d-2642-fe0f","🤷‍♀️":"1f937-200d-2640-fe0f","🤷🏻‍♀":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀":"1f937-1f3ff-200d-2640-fe0f","🧑‍⚕️":"1f9d1-200d-2695-fe0f","🧑🏻‍⚕":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕":"1f9d1-1f3ff-200d-2695-fe0f","👨‍⚕️":"1f468-200d-2695-fe0f","👨🏻‍⚕":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕":"1f468-1f3ff-200d-2695-fe0f","👩‍⚕️":"1f469-200d-2695-fe0f","👩🏻‍⚕":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍🎓":"1f9d1-1f3fb-200d-1f393","🧑🏼‍🎓":"1f9d1-1f3fc-200d-1f393","🧑🏽‍🎓":"1f9d1-1f3fd-200d-1f393","🧑🏾‍🎓":"1f9d1-1f3fe-200d-1f393","🧑🏿‍🎓":"1f9d1-1f3ff-200d-1f393","👨🏻‍🎓":"1f468-1f3fb-200d-1f393","👨🏼‍🎓":"1f468-1f3fc-200d-1f393","👨🏽‍🎓":"1f468-1f3fd-200d-1f393","👨🏾‍🎓":"1f468-1f3fe-200d-1f393","👨🏿‍🎓":"1f468-1f3ff-200d-1f393","👩🏻‍🎓":"1f469-1f3fb-200d-1f393","👩🏼‍🎓":"1f469-1f3fc-200d-1f393","👩🏽‍🎓":"1f469-1f3fd-200d-1f393","👩🏾‍🎓":"1f469-1f3fe-200d-1f393","👩🏿‍🎓":"1f469-1f3ff-200d-1f393","🧑🏻‍🏫":"1f9d1-1f3fb-200d-1f3eb","🧑🏼‍🏫":"1f9d1-1f3fc-200d-1f3eb","🧑🏽‍🏫":"1f9d1-1f3fd-200d-1f3eb","🧑🏾‍🏫":"1f9d1-1f3fe-200d-1f3eb","🧑🏿‍🏫":"1f9d1-1f3ff-200d-1f3eb","👨🏻‍🏫":"1f468-1f3fb-200d-1f3eb","👨🏼‍🏫":"1f468-1f3fc-200d-1f3eb","👨🏽‍🏫":"1f468-1f3fd-200d-1f3eb","👨🏾‍🏫":"1f468-1f3fe-200d-1f3eb","👨🏿‍🏫":"1f468-1f3ff-200d-1f3eb","👩🏻‍🏫":"1f469-1f3fb-200d-1f3eb","👩🏼‍🏫":"1f469-1f3fc-200d-1f3eb","👩🏽‍🏫":"1f469-1f3fd-200d-1f3eb","👩🏾‍🏫":"1f469-1f3fe-200d-1f3eb","👩🏿‍🏫":"1f469-1f3ff-200d-1f3eb","🧑‍⚖️":"1f9d1-200d-2696-fe0f","🧑🏻‍⚖":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖":"1f9d1-1f3ff-200d-2696-fe0f","👨‍⚖️":"1f468-200d-2696-fe0f","👨🏻‍⚖":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖":"1f468-1f3ff-200d-2696-fe0f","👩‍⚖️":"1f469-200d-2696-fe0f","👩🏻‍⚖":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍🌾":"1f9d1-1f3fb-200d-1f33e","🧑🏼‍🌾":"1f9d1-1f3fc-200d-1f33e","🧑🏽‍🌾":"1f9d1-1f3fd-200d-1f33e","🧑🏾‍🌾":"1f9d1-1f3fe-200d-1f33e","🧑🏿‍🌾":"1f9d1-1f3ff-200d-1f33e","👨🏻‍🌾":"1f468-1f3fb-200d-1f33e","👨🏼‍🌾":"1f468-1f3fc-200d-1f33e","👨🏽‍🌾":"1f468-1f3fd-200d-1f33e","👨🏾‍🌾":"1f468-1f3fe-200d-1f33e","👨🏿‍🌾":"1f468-1f3ff-200d-1f33e","👩🏻‍🌾":"1f469-1f3fb-200d-1f33e","👩🏼‍🌾":"1f469-1f3fc-200d-1f33e","👩🏽‍🌾":"1f469-1f3fd-200d-1f33e","👩🏾‍🌾":"1f469-1f3fe-200d-1f33e","👩🏿‍🌾":"1f469-1f3ff-200d-1f33e","🧑🏻‍🍳":"1f9d1-1f3fb-200d-1f373","🧑🏼‍🍳":"1f9d1-1f3fc-200d-1f373","🧑🏽‍🍳":"1f9d1-1f3fd-200d-1f373","🧑🏾‍🍳":"1f9d1-1f3fe-200d-1f373","🧑🏿‍🍳":"1f9d1-1f3ff-200d-1f373","👨🏻‍🍳":"1f468-1f3fb-200d-1f373","👨🏼‍🍳":"1f468-1f3fc-200d-1f373","👨🏽‍🍳":"1f468-1f3fd-200d-1f373","👨🏾‍🍳":"1f468-1f3fe-200d-1f373","👨🏿‍🍳":"1f468-1f3ff-200d-1f373","👩🏻‍🍳":"1f469-1f3fb-200d-1f373","👩🏼‍🍳":"1f469-1f3fc-200d-1f373","👩🏽‍🍳":"1f469-1f3fd-200d-1f373","👩🏾‍🍳":"1f469-1f3fe-200d-1f373","👩🏿‍🍳":"1f469-1f3ff-200d-1f373","🧑🏻‍🔧":"1f9d1-1f3fb-200d-1f527","🧑🏼‍🔧":"1f9d1-1f3fc-200d-1f527","🧑🏽‍🔧":"1f9d1-1f3fd-200d-1f527","🧑🏾‍🔧":"1f9d1-1f3fe-200d-1f527","🧑🏿‍🔧":"1f9d1-1f3ff-200d-1f527","👨🏻‍🔧":"1f468-1f3fb-200d-1f527","👨🏼‍🔧":"1f468-1f3fc-200d-1f527","👨🏽‍🔧":"1f468-1f3fd-200d-1f527","👨🏾‍🔧":"1f468-1f3fe-200d-1f527","👨🏿‍🔧":"1f468-1f3ff-200d-1f527","👩🏻‍🔧":"1f469-1f3fb-200d-1f527","👩🏼‍🔧":"1f469-1f3fc-200d-1f527","👩🏽‍🔧":"1f469-1f3fd-200d-1f527","👩🏾‍🔧":"1f469-1f3fe-200d-1f527","👩🏿‍🔧":"1f469-1f3ff-200d-1f527","🧑🏻‍🏭":"1f9d1-1f3fb-200d-1f3ed","🧑🏼‍🏭":"1f9d1-1f3fc-200d-1f3ed","🧑🏽‍🏭":"1f9d1-1f3fd-200d-1f3ed","🧑🏾‍🏭":"1f9d1-1f3fe-200d-1f3ed","🧑🏿‍🏭":"1f9d1-1f3ff-200d-1f3ed","👨🏻‍🏭":"1f468-1f3fb-200d-1f3ed","👨🏼‍🏭":"1f468-1f3fc-200d-1f3ed","👨🏽‍🏭":"1f468-1f3fd-200d-1f3ed","👨🏾‍🏭":"1f468-1f3fe-200d-1f3ed","👨🏿‍🏭":"1f468-1f3ff-200d-1f3ed","👩🏻‍🏭":"1f469-1f3fb-200d-1f3ed","👩🏼‍🏭":"1f469-1f3fc-200d-1f3ed","👩🏽‍🏭":"1f469-1f3fd-200d-1f3ed","👩🏾‍🏭":"1f469-1f3fe-200d-1f3ed","👩🏿‍🏭":"1f469-1f3ff-200d-1f3ed","🧑🏻‍💼":"1f9d1-1f3fb-200d-1f4bc","🧑🏼‍💼":"1f9d1-1f3fc-200d-1f4bc","🧑🏽‍💼":"1f9d1-1f3fd-200d-1f4bc","🧑🏾‍💼":"1f9d1-1f3fe-200d-1f4bc","🧑🏿‍💼":"1f9d1-1f3ff-200d-1f4bc","👨🏻‍💼":"1f468-1f3fb-200d-1f4bc","👨🏼‍💼":"1f468-1f3fc-200d-1f4bc","👨🏽‍💼":"1f468-1f3fd-200d-1f4bc","👨🏾‍💼":"1f468-1f3fe-200d-1f4bc","👨🏿‍💼":"1f468-1f3ff-200d-1f4bc","👩🏻‍💼":"1f469-1f3fb-200d-1f4bc","👩🏼‍💼":"1f469-1f3fc-200d-1f4bc","👩🏽‍💼":"1f469-1f3fd-200d-1f4bc","👩🏾‍💼":"1f469-1f3fe-200d-1f4bc","👩🏿‍💼":"1f469-1f3ff-200d-1f4bc","🧑🏻‍🔬":"1f9d1-1f3fb-200d-1f52c","🧑🏼‍🔬":"1f9d1-1f3fc-200d-1f52c","🧑🏽‍🔬":"1f9d1-1f3fd-200d-1f52c","🧑🏾‍🔬":"1f9d1-1f3fe-200d-1f52c","🧑🏿‍🔬":"1f9d1-1f3ff-200d-1f52c","👨🏻‍🔬":"1f468-1f3fb-200d-1f52c","👨🏼‍🔬":"1f468-1f3fc-200d-1f52c","👨🏽‍🔬":"1f468-1f3fd-200d-1f52c","👨🏾‍🔬":"1f468-1f3fe-200d-1f52c","👨🏿‍🔬":"1f468-1f3ff-200d-1f52c","👩🏻‍🔬":"1f469-1f3fb-200d-1f52c","👩🏼‍🔬":"1f469-1f3fc-200d-1f52c","👩🏽‍🔬":"1f469-1f3fd-200d-1f52c","👩🏾‍🔬":"1f469-1f3fe-200d-1f52c","👩🏿‍🔬":"1f469-1f3ff-200d-1f52c","🧑🏻‍💻":"1f9d1-1f3fb-200d-1f4bb","🧑🏼‍💻":"1f9d1-1f3fc-200d-1f4bb","🧑🏽‍💻":"1f9d1-1f3fd-200d-1f4bb","🧑🏾‍💻":"1f9d1-1f3fe-200d-1f4bb","🧑🏿‍💻":"1f9d1-1f3ff-200d-1f4bb","👨🏻‍💻":"1f468-1f3fb-200d-1f4bb","👨🏼‍💻":"1f468-1f3fc-200d-1f4bb","👨🏽‍💻":"1f468-1f3fd-200d-1f4bb","👨🏾‍💻":"1f468-1f3fe-200d-1f4bb","👨🏿‍💻":"1f468-1f3ff-200d-1f4bb","👩🏻‍💻":"1f469-1f3fb-200d-1f4bb","👩🏼‍💻":"1f469-1f3fc-200d-1f4bb","👩🏽‍💻":"1f469-1f3fd-200d-1f4bb","👩🏾‍💻":"1f469-1f3fe-200d-1f4bb","👩🏿‍💻":"1f469-1f3ff-200d-1f4bb","🧑🏻‍🎤":"1f9d1-1f3fb-200d-1f3a4","🧑🏼‍🎤":"1f9d1-1f3fc-200d-1f3a4","🧑🏽‍🎤":"1f9d1-1f3fd-200d-1f3a4","🧑🏾‍🎤":"1f9d1-1f3fe-200d-1f3a4","🧑🏿‍🎤":"1f9d1-1f3ff-200d-1f3a4","👨🏻‍🎤":"1f468-1f3fb-200d-1f3a4","👨🏼‍🎤":"1f468-1f3fc-200d-1f3a4","👨🏽‍🎤":"1f468-1f3fd-200d-1f3a4","👨🏾‍🎤":"1f468-1f3fe-200d-1f3a4","👨🏿‍🎤":"1f468-1f3ff-200d-1f3a4","👩🏻‍🎤":"1f469-1f3fb-200d-1f3a4","👩🏼‍🎤":"1f469-1f3fc-200d-1f3a4","👩🏽‍🎤":"1f469-1f3fd-200d-1f3a4","👩🏾‍🎤":"1f469-1f3fe-200d-1f3a4","👩🏿‍🎤":"1f469-1f3ff-200d-1f3a4","🧑🏻‍🎨":"1f9d1-1f3fb-200d-1f3a8","🧑🏼‍🎨":"1f9d1-1f3fc-200d-1f3a8","🧑🏽‍🎨":"1f9d1-1f3fd-200d-1f3a8","🧑🏾‍🎨":"1f9d1-1f3fe-200d-1f3a8","🧑🏿‍🎨":"1f9d1-1f3ff-200d-1f3a8","👨🏻‍🎨":"1f468-1f3fb-200d-1f3a8","👨🏼‍🎨":"1f468-1f3fc-200d-1f3a8","👨🏽‍🎨":"1f468-1f3fd-200d-1f3a8","👨🏾‍🎨":"1f468-1f3fe-200d-1f3a8","👨🏿‍🎨":"1f468-1f3ff-200d-1f3a8","👩🏻‍🎨":"1f469-1f3fb-200d-1f3a8","👩🏼‍🎨":"1f469-1f3fc-200d-1f3a8","👩🏽‍🎨":"1f469-1f3fd-200d-1f3a8","👩🏾‍🎨":"1f469-1f3fe-200d-1f3a8","👩🏿‍🎨":"1f469-1f3ff-200d-1f3a8","🧑‍✈️":"1f9d1-200d-2708-fe0f","🧑🏻‍✈":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈":"1f9d1-1f3ff-200d-2708-fe0f","👨‍✈️":"1f468-200d-2708-fe0f","👨🏻‍✈":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈":"1f468-1f3ff-200d-2708-fe0f","👩‍✈️":"1f469-200d-2708-fe0f","👩🏻‍✈":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈":"1f469-1f3ff-200d-2708-fe0f","🧑🏻‍🚀":"1f9d1-1f3fb-200d-1f680","🧑🏼‍🚀":"1f9d1-1f3fc-200d-1f680","🧑🏽‍🚀":"1f9d1-1f3fd-200d-1f680","🧑🏾‍🚀":"1f9d1-1f3fe-200d-1f680","🧑🏿‍🚀":"1f9d1-1f3ff-200d-1f680","👨🏻‍🚀":"1f468-1f3fb-200d-1f680","👨🏼‍🚀":"1f468-1f3fc-200d-1f680","👨🏽‍🚀":"1f468-1f3fd-200d-1f680","👨🏾‍🚀":"1f468-1f3fe-200d-1f680","👨🏿‍🚀":"1f468-1f3ff-200d-1f680","👩🏻‍🚀":"1f469-1f3fb-200d-1f680","👩🏼‍🚀":"1f469-1f3fc-200d-1f680","👩🏽‍🚀":"1f469-1f3fd-200d-1f680","👩🏾‍🚀":"1f469-1f3fe-200d-1f680","👩🏿‍🚀":"1f469-1f3ff-200d-1f680","🧑🏻‍🚒":"1f9d1-1f3fb-200d-1f692","🧑🏼‍🚒":"1f9d1-1f3fc-200d-1f692","🧑🏽‍🚒":"1f9d1-1f3fd-200d-1f692","🧑🏾‍🚒":"1f9d1-1f3fe-200d-1f692","🧑🏿‍🚒":"1f9d1-1f3ff-200d-1f692","👨🏻‍🚒":"1f468-1f3fb-200d-1f692","👨🏼‍🚒":"1f468-1f3fc-200d-1f692","👨🏽‍🚒":"1f468-1f3fd-200d-1f692","👨🏾‍🚒":"1f468-1f3fe-200d-1f692","👨🏿‍🚒":"1f468-1f3ff-200d-1f692","👩🏻‍🚒":"1f469-1f3fb-200d-1f692","👩🏼‍🚒":"1f469-1f3fc-200d-1f692","👩🏽‍🚒":"1f469-1f3fd-200d-1f692","👩🏾‍🚒":"1f469-1f3fe-200d-1f692","👩🏿‍🚒":"1f469-1f3ff-200d-1f692","👮‍♂️":"1f46e-200d-2642-fe0f","👮🏻‍♂":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂":"1f46e-1f3ff-200d-2642-fe0f","👮‍♀️":"1f46e-200d-2640-fe0f","👮🏻‍♀":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀":"1f46e-1f3ff-200d-2640-fe0f","🕵‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵️‍♂":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂":"1f575-1f3ff-200d-2642-fe0f","🕵‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵️‍♀":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀":"1f575-1f3ff-200d-2640-fe0f","💂‍♂️":"1f482-200d-2642-fe0f","💂🏻‍♂":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂":"1f482-1f3ff-200d-2642-fe0f","💂‍♀️":"1f482-200d-2640-fe0f","💂🏻‍♀":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀":"1f482-1f3ff-200d-2640-fe0f","👷‍♂️":"1f477-200d-2642-fe0f","👷🏻‍♂":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂":"1f477-1f3ff-200d-2642-fe0f","👷‍♀️":"1f477-200d-2640-fe0f","👷🏻‍♀":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀":"1f477-1f3ff-200d-2640-fe0f","👳‍♂️":"1f473-200d-2642-fe0f","👳🏻‍♂":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂":"1f473-1f3ff-200d-2642-fe0f","👳‍♀️":"1f473-200d-2640-fe0f","👳🏻‍♀":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀":"1f473-1f3ff-200d-2640-fe0f","🤵‍♂️":"1f935-200d-2642-fe0f","🤵🏻‍♂":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂":"1f935-1f3ff-200d-2642-fe0f","🤵‍♀️":"1f935-200d-2640-fe0f","🤵🏻‍♀":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀":"1f935-1f3ff-200d-2640-fe0f","👰‍♂️":"1f470-200d-2642-fe0f","👰🏻‍♂":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂":"1f470-1f3ff-200d-2642-fe0f","👰‍♀️":"1f470-200d-2640-fe0f","👰🏻‍♀":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀":"1f470-1f3ff-200d-2640-fe0f","👩🏻‍🍼":"1f469-1f3fb-200d-1f37c","👩🏼‍🍼":"1f469-1f3fc-200d-1f37c","👩🏽‍🍼":"1f469-1f3fd-200d-1f37c","👩🏾‍🍼":"1f469-1f3fe-200d-1f37c","👩🏿‍🍼":"1f469-1f3ff-200d-1f37c","👨🏻‍🍼":"1f468-1f3fb-200d-1f37c","👨🏼‍🍼":"1f468-1f3fc-200d-1f37c","👨🏽‍🍼":"1f468-1f3fd-200d-1f37c","👨🏾‍🍼":"1f468-1f3fe-200d-1f37c","👨🏿‍🍼":"1f468-1f3ff-200d-1f37c","🧑🏻‍🍼":"1f9d1-1f3fb-200d-1f37c","🧑🏼‍🍼":"1f9d1-1f3fc-200d-1f37c","🧑🏽‍🍼":"1f9d1-1f3fd-200d-1f37c","🧑🏾‍🍼":"1f9d1-1f3fe-200d-1f37c","🧑🏿‍🍼":"1f9d1-1f3ff-200d-1f37c","🧑🏻‍🎄":"1f9d1-1f3fb-200d-1f384","🧑🏼‍🎄":"1f9d1-1f3fc-200d-1f384","🧑🏽‍🎄":"1f9d1-1f3fd-200d-1f384","🧑🏾‍🎄":"1f9d1-1f3fe-200d-1f384","🧑🏿‍🎄":"1f9d1-1f3ff-200d-1f384","🦸‍♂️":"1f9b8-200d-2642-fe0f","🦸🏻‍♂":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂":"1f9b8-1f3ff-200d-2642-fe0f","🦸‍♀️":"1f9b8-200d-2640-fe0f","🦸🏻‍♀":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀":"1f9b8-1f3ff-200d-2640-fe0f","🦹‍♂️":"1f9b9-200d-2642-fe0f","🦹🏻‍♂":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂":"1f9b9-1f3ff-200d-2642-fe0f","🦹‍♀️":"1f9b9-200d-2640-fe0f","🦹🏻‍♀":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀":"1f9b9-1f3ff-200d-2640-fe0f","🧙‍♂️":"1f9d9-200d-2642-fe0f","🧙🏻‍♂":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂":"1f9d9-1f3ff-200d-2642-fe0f","🧙‍♀️":"1f9d9-200d-2640-fe0f","🧙🏻‍♀":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀":"1f9d9-1f3ff-200d-2640-fe0f","🧚‍♂️":"1f9da-200d-2642-fe0f","🧚🏻‍♂":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂":"1f9da-1f3ff-200d-2642-fe0f","🧚‍♀️":"1f9da-200d-2640-fe0f","🧚🏻‍♀":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀":"1f9da-1f3ff-200d-2640-fe0f","🧛‍♂️":"1f9db-200d-2642-fe0f","🧛🏻‍♂":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂":"1f9db-1f3ff-200d-2642-fe0f","🧛‍♀️":"1f9db-200d-2640-fe0f","🧛🏻‍♀":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀":"1f9db-1f3ff-200d-2640-fe0f","🧜‍♂️":"1f9dc-200d-2642-fe0f","🧜🏻‍♂":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂":"1f9dc-1f3ff-200d-2642-fe0f","🧜‍♀️":"1f9dc-200d-2640-fe0f","🧜🏻‍♀":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀":"1f9dc-1f3ff-200d-2640-fe0f","🧝‍♂️":"1f9dd-200d-2642-fe0f","🧝🏻‍♂":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂":"1f9dd-1f3ff-200d-2642-fe0f","🧝‍♀️":"1f9dd-200d-2640-fe0f","🧝🏻‍♀":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀":"1f9dd-1f3ff-200d-2640-fe0f","🧞‍♂️":"1f9de-200d-2642-fe0f","🧞‍♀️":"1f9de-200d-2640-fe0f","🧟‍♂️":"1f9df-200d-2642-fe0f","🧟‍♀️":"1f9df-200d-2640-fe0f","💆‍♂️":"1f486-200d-2642-fe0f","💆🏻‍♂":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂":"1f486-1f3ff-200d-2642-fe0f","💆‍♀️":"1f486-200d-2640-fe0f","💆🏻‍♀":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀":"1f486-1f3ff-200d-2640-fe0f","💇‍♂️":"1f487-200d-2642-fe0f","💇🏻‍♂":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂":"1f487-1f3ff-200d-2642-fe0f","💇‍♀️":"1f487-200d-2640-fe0f","💇🏻‍♀":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀":"1f487-1f3ff-200d-2640-fe0f","🚶‍♂️":"1f6b6-200d-2642-fe0f","🚶🏻‍♂":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂":"1f6b6-1f3ff-200d-2642-fe0f","🚶‍♀️":"1f6b6-200d-2640-fe0f","🚶🏻‍♀":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀":"1f6b6-1f3ff-200d-2640-fe0f","🧍‍♂️":"1f9cd-200d-2642-fe0f","🧍🏻‍♂":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂":"1f9cd-1f3ff-200d-2642-fe0f","🧍‍♀️":"1f9cd-200d-2640-fe0f","🧍🏻‍♀":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀":"1f9cd-1f3ff-200d-2640-fe0f","🧎‍♂️":"1f9ce-200d-2642-fe0f","🧎🏻‍♂":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂":"1f9ce-1f3ff-200d-2642-fe0f","🧎‍♀️":"1f9ce-200d-2640-fe0f","🧎🏻‍♀":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀":"1f9ce-1f3ff-200d-2640-fe0f","🧑🏻‍🦯":"1f9d1-1f3fb-200d-1f9af","🧑🏼‍🦯":"1f9d1-1f3fc-200d-1f9af","🧑🏽‍🦯":"1f9d1-1f3fd-200d-1f9af","🧑🏾‍🦯":"1f9d1-1f3fe-200d-1f9af","🧑🏿‍🦯":"1f9d1-1f3ff-200d-1f9af","👨🏻‍🦯":"1f468-1f3fb-200d-1f9af","👨🏼‍🦯":"1f468-1f3fc-200d-1f9af","👨🏽‍🦯":"1f468-1f3fd-200d-1f9af","👨🏾‍🦯":"1f468-1f3fe-200d-1f9af","👨🏿‍🦯":"1f468-1f3ff-200d-1f9af","👩🏻‍🦯":"1f469-1f3fb-200d-1f9af","👩🏼‍🦯":"1f469-1f3fc-200d-1f9af","👩🏽‍🦯":"1f469-1f3fd-200d-1f9af","👩🏾‍🦯":"1f469-1f3fe-200d-1f9af","👩🏿‍🦯":"1f469-1f3ff-200d-1f9af","🧑🏻‍🦼":"1f9d1-1f3fb-200d-1f9bc","🧑🏼‍🦼":"1f9d1-1f3fc-200d-1f9bc","🧑🏽‍🦼":"1f9d1-1f3fd-200d-1f9bc","🧑🏾‍🦼":"1f9d1-1f3fe-200d-1f9bc","🧑🏿‍🦼":"1f9d1-1f3ff-200d-1f9bc","👨🏻‍🦼":"1f468-1f3fb-200d-1f9bc","👨🏼‍🦼":"1f468-1f3fc-200d-1f9bc","👨🏽‍🦼":"1f468-1f3fd-200d-1f9bc","👨🏾‍🦼":"1f468-1f3fe-200d-1f9bc","👨🏿‍🦼":"1f468-1f3ff-200d-1f9bc","👩🏻‍🦼":"1f469-1f3fb-200d-1f9bc","👩🏼‍🦼":"1f469-1f3fc-200d-1f9bc","👩🏽‍🦼":"1f469-1f3fd-200d-1f9bc","👩🏾‍🦼":"1f469-1f3fe-200d-1f9bc","👩🏿‍🦼":"1f469-1f3ff-200d-1f9bc","🧑🏻‍🦽":"1f9d1-1f3fb-200d-1f9bd","🧑🏼‍🦽":"1f9d1-1f3fc-200d-1f9bd","🧑🏽‍🦽":"1f9d1-1f3fd-200d-1f9bd","🧑🏾‍🦽":"1f9d1-1f3fe-200d-1f9bd","🧑🏿‍🦽":"1f9d1-1f3ff-200d-1f9bd","👨🏻‍🦽":"1f468-1f3fb-200d-1f9bd","👨🏼‍🦽":"1f468-1f3fc-200d-1f9bd","👨🏽‍🦽":"1f468-1f3fd-200d-1f9bd","👨🏾‍🦽":"1f468-1f3fe-200d-1f9bd","👨🏿‍🦽":"1f468-1f3ff-200d-1f9bd","👩🏻‍🦽":"1f469-1f3fb-200d-1f9bd","👩🏼‍🦽":"1f469-1f3fc-200d-1f9bd","👩🏽‍🦽":"1f469-1f3fd-200d-1f9bd","👩🏾‍🦽":"1f469-1f3fe-200d-1f9bd","👩🏿‍🦽":"1f469-1f3ff-200d-1f9bd","🏃‍♂️":"1f3c3-200d-2642-fe0f","🏃🏻‍♂":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂":"1f3c3-1f3ff-200d-2642-fe0f","🏃‍♀️":"1f3c3-200d-2640-fe0f","🏃🏻‍♀":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀":"1f3c3-1f3ff-200d-2640-fe0f","👯‍♂️":"1f46f-200d-2642-fe0f","👯‍♀️":"1f46f-200d-2640-fe0f","🧖‍♂️":"1f9d6-200d-2642-fe0f","🧖🏻‍♂":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂":"1f9d6-1f3ff-200d-2642-fe0f","🧖‍♀️":"1f9d6-200d-2640-fe0f","🧖🏻‍♀":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀":"1f9d6-1f3ff-200d-2640-fe0f","🧗‍♂️":"1f9d7-200d-2642-fe0f","🧗🏻‍♂":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂":"1f9d7-1f3ff-200d-2642-fe0f","🧗‍♀️":"1f9d7-200d-2640-fe0f","🧗🏻‍♀":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀":"1f9d7-1f3ff-200d-2640-fe0f","🏌‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌️‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂":"1f3cc-1f3ff-200d-2642-fe0f","🏌‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌️‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀":"1f3cc-1f3ff-200d-2640-fe0f","🏄‍♂️":"1f3c4-200d-2642-fe0f","🏄🏻‍♂":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂":"1f3c4-1f3ff-200d-2642-fe0f","🏄‍♀️":"1f3c4-200d-2640-fe0f","🏄🏻‍♀":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀":"1f3c4-1f3ff-200d-2640-fe0f","🚣‍♂️":"1f6a3-200d-2642-fe0f","🚣🏻‍♂":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂":"1f6a3-1f3ff-200d-2642-fe0f","🚣‍♀️":"1f6a3-200d-2640-fe0f","🚣🏻‍♀":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀":"1f6a3-1f3ff-200d-2640-fe0f","🏊‍♂️":"1f3ca-200d-2642-fe0f","🏊🏻‍♂":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂":"1f3ca-1f3ff-200d-2642-fe0f","🏊‍♀️":"1f3ca-200d-2640-fe0f","🏊🏻‍♀":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀":"1f3ca-1f3ff-200d-2640-fe0f","⛹‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹️‍♂":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂":"26f9-1f3ff-200d-2642-fe0f","⛹‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹️‍♀":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀":"26f9-1f3ff-200d-2640-fe0f","🏋‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋️‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂":"1f3cb-1f3ff-200d-2642-fe0f","🏋‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋️‍♀":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀":"1f3cb-1f3ff-200d-2640-fe0f","🚴‍♂️":"1f6b4-200d-2642-fe0f","🚴🏻‍♂":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂":"1f6b4-1f3ff-200d-2642-fe0f","🚴‍♀️":"1f6b4-200d-2640-fe0f","🚴🏻‍♀":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀":"1f6b4-1f3ff-200d-2640-fe0f","🚵‍♂️":"1f6b5-200d-2642-fe0f","🚵🏻‍♂":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂":"1f6b5-1f3ff-200d-2642-fe0f","🚵‍♀️":"1f6b5-200d-2640-fe0f","🚵🏻‍♀":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀":"1f6b5-1f3ff-200d-2640-fe0f","🤸‍♂️":"1f938-200d-2642-fe0f","🤸🏻‍♂":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂":"1f938-1f3ff-200d-2642-fe0f","🤸‍♀️":"1f938-200d-2640-fe0f","🤸🏻‍♀":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀":"1f938-1f3ff-200d-2640-fe0f","🤼‍♂️":"1f93c-200d-2642-fe0f","🤼‍♀️":"1f93c-200d-2640-fe0f","🤽‍♂️":"1f93d-200d-2642-fe0f","🤽🏻‍♂":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂":"1f93d-1f3ff-200d-2642-fe0f","🤽‍♀️":"1f93d-200d-2640-fe0f","🤽🏻‍♀":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀":"1f93d-1f3ff-200d-2640-fe0f","🤾‍♂️":"1f93e-200d-2642-fe0f","🤾🏻‍♂":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂":"1f93e-1f3ff-200d-2642-fe0f","🤾‍♀️":"1f93e-200d-2640-fe0f","🤾🏻‍♀":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀":"1f93e-1f3ff-200d-2640-fe0f","🤹‍♂️":"1f939-200d-2642-fe0f","🤹🏻‍♂":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂":"1f939-1f3ff-200d-2642-fe0f","🤹‍♀️":"1f939-200d-2640-fe0f","🤹🏻‍♀":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀":"1f939-1f3ff-200d-2640-fe0f","🧘‍♂️":"1f9d8-200d-2642-fe0f","🧘🏻‍♂":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂":"1f9d8-1f3ff-200d-2642-fe0f","🧘‍♀️":"1f9d8-200d-2640-fe0f","🧘🏻‍♀":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀":"1f9d8-1f3ff-200d-2640-fe0f","🐻‍❄️":"1f43b-200d-2744-fe0f","🏳️‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","🏳️‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠️":"1f3f4-200d-2620-fe0f","👁️‍🗨️":"1f441-200d-1f5e8","🧔🏻‍♂️":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂️":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂️":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂️":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂️":"1f9d4-1f3ff-200d-2642-fe0f","🧔🏻‍♀️":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀️":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀️":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀️":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀️":"1f9d4-1f3ff-200d-2640-fe0f","👱🏻‍♀️":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀️":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀️":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀️":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀️":"1f471-1f3ff-200d-2640-fe0f","👱🏻‍♂️":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂️":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂️":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂️":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂️":"1f471-1f3ff-200d-2642-fe0f","🙍🏻‍♂️":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂️":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂️":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂️":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂️":"1f64d-1f3ff-200d-2642-fe0f","🙍🏻‍♀️":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀️":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀️":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀️":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀️":"1f64d-1f3ff-200d-2640-fe0f","🙎🏻‍♂️":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂️":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂️":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂️":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂️":"1f64e-1f3ff-200d-2642-fe0f","🙎🏻‍♀️":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀️":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀️":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀️":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀️":"1f64e-1f3ff-200d-2640-fe0f","🙅🏻‍♂️":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂️":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂️":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂️":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂️":"1f645-1f3ff-200d-2642-fe0f","🙅🏻‍♀️":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀️":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀️":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀️":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀️":"1f645-1f3ff-200d-2640-fe0f","🙆🏻‍♂️":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂️":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂️":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂️":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂️":"1f646-1f3ff-200d-2642-fe0f","🙆🏻‍♀️":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀️":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀️":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀️":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀️":"1f646-1f3ff-200d-2640-fe0f","💁🏻‍♂️":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂️":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂️":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂️":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂️":"1f481-1f3ff-200d-2642-fe0f","💁🏻‍♀️":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀️":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀️":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀️":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀️":"1f481-1f3ff-200d-2640-fe0f","🙋🏻‍♂️":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂️":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂️":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂️":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂️":"1f64b-1f3ff-200d-2642-fe0f","🙋🏻‍♀️":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀️":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀️":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀️":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀️":"1f64b-1f3ff-200d-2640-fe0f","🧏🏻‍♂️":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂️":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂️":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂️":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂️":"1f9cf-1f3ff-200d-2642-fe0f","🧏🏻‍♀️":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀️":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀️":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀️":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀️":"1f9cf-1f3ff-200d-2640-fe0f","🙇🏻‍♂️":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂️":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂️":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂️":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂️":"1f647-1f3ff-200d-2642-fe0f","🙇🏻‍♀️":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀️":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀️":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀️":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀️":"1f647-1f3ff-200d-2640-fe0f","🤦🏻‍♂️":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂️":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂️":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂️":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂️":"1f926-1f3ff-200d-2642-fe0f","🤦🏻‍♀️":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀️":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀️":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀️":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀️":"1f926-1f3ff-200d-2640-fe0f","🤷🏻‍♂️":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂️":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂️":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂️":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂️":"1f937-1f3ff-200d-2642-fe0f","🤷🏻‍♀️":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀️":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀️":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀️":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀️":"1f937-1f3ff-200d-2640-fe0f","🧑🏻‍⚕️":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕️":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕️":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕️":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕️":"1f9d1-1f3ff-200d-2695-fe0f","👨🏻‍⚕️":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕️":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕️":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕️":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕️":"1f468-1f3ff-200d-2695-fe0f","👩🏻‍⚕️":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕️":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕️":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕️":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕️":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍⚖️":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖️":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖️":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖️":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖️":"1f9d1-1f3ff-200d-2696-fe0f","👨🏻‍⚖️":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖️":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖️":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖️":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖️":"1f468-1f3ff-200d-2696-fe0f","👩🏻‍⚖️":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖️":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖️":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖️":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖️":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍✈️":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈️":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈️":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈️":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈️":"1f9d1-1f3ff-200d-2708-fe0f","👨🏻‍✈️":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈️":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈️":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈️":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈️":"1f468-1f3ff-200d-2708-fe0f","👩🏻‍✈️":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈️":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈️":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈️":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈️":"1f469-1f3ff-200d-2708-fe0f","👮🏻‍♂️":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂️":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂️":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂️":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂️":"1f46e-1f3ff-200d-2642-fe0f","👮🏻‍♀️":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀️":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀️":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀️":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀️":"1f46e-1f3ff-200d-2640-fe0f","🕵️‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂️":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂️":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂️":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂️":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂️":"1f575-1f3ff-200d-2642-fe0f","🕵️‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀️":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀️":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀️":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀️":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀️":"1f575-1f3ff-200d-2640-fe0f","💂🏻‍♂️":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂️":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂️":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂️":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂️":"1f482-1f3ff-200d-2642-fe0f","💂🏻‍♀️":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀️":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀️":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀️":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀️":"1f482-1f3ff-200d-2640-fe0f","👷🏻‍♂️":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂️":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂️":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂️":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂️":"1f477-1f3ff-200d-2642-fe0f","👷🏻‍♀️":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀️":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀️":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀️":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀️":"1f477-1f3ff-200d-2640-fe0f","👳🏻‍♂️":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂️":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂️":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂️":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂️":"1f473-1f3ff-200d-2642-fe0f","👳🏻‍♀️":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀️":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀️":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀️":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀️":"1f473-1f3ff-200d-2640-fe0f","🤵🏻‍♂️":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂️":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂️":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂️":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂️":"1f935-1f3ff-200d-2642-fe0f","🤵🏻‍♀️":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀️":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀️":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀️":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀️":"1f935-1f3ff-200d-2640-fe0f","👰🏻‍♂️":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂️":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂️":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂️":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂️":"1f470-1f3ff-200d-2642-fe0f","👰🏻‍♀️":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀️":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀️":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀️":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀️":"1f470-1f3ff-200d-2640-fe0f","🦸🏻‍♂️":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂️":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂️":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂️":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂️":"1f9b8-1f3ff-200d-2642-fe0f","🦸🏻‍♀️":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀️":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀️":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀️":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀️":"1f9b8-1f3ff-200d-2640-fe0f","🦹🏻‍♂️":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂️":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂️":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂️":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂️":"1f9b9-1f3ff-200d-2642-fe0f","🦹🏻‍♀️":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀️":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀️":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀️":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀️":"1f9b9-1f3ff-200d-2640-fe0f","🧙🏻‍♂️":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂️":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂️":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂️":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂️":"1f9d9-1f3ff-200d-2642-fe0f","🧙🏻‍♀️":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀️":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀️":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀️":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀️":"1f9d9-1f3ff-200d-2640-fe0f","🧚🏻‍♂️":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂️":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂️":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂️":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂️":"1f9da-1f3ff-200d-2642-fe0f","🧚🏻‍♀️":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀️":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀️":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀️":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀️":"1f9da-1f3ff-200d-2640-fe0f","🧛🏻‍♂️":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂️":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂️":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂️":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂️":"1f9db-1f3ff-200d-2642-fe0f","🧛🏻‍♀️":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀️":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀️":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀️":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀️":"1f9db-1f3ff-200d-2640-fe0f","🧜🏻‍♂️":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂️":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂️":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂️":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂️":"1f9dc-1f3ff-200d-2642-fe0f","🧜🏻‍♀️":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀️":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀️":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀️":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀️":"1f9dc-1f3ff-200d-2640-fe0f","🧝🏻‍♂️":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂️":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂️":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂️":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂️":"1f9dd-1f3ff-200d-2642-fe0f","🧝🏻‍♀️":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀️":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀️":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀️":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀️":"1f9dd-1f3ff-200d-2640-fe0f","💆🏻‍♂️":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂️":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂️":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂️":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂️":"1f486-1f3ff-200d-2642-fe0f","💆🏻‍♀️":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀️":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀️":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀️":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀️":"1f486-1f3ff-200d-2640-fe0f","💇🏻‍♂️":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂️":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂️":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂️":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂️":"1f487-1f3ff-200d-2642-fe0f","💇🏻‍♀️":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀️":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀️":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀️":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀️":"1f487-1f3ff-200d-2640-fe0f","🚶🏻‍♂️":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂️":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂️":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂️":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂️":"1f6b6-1f3ff-200d-2642-fe0f","🚶🏻‍♀️":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀️":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀️":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀️":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀️":"1f6b6-1f3ff-200d-2640-fe0f","🧍🏻‍♂️":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂️":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂️":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂️":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂️":"1f9cd-1f3ff-200d-2642-fe0f","🧍🏻‍♀️":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀️":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀️":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀️":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀️":"1f9cd-1f3ff-200d-2640-fe0f","🧎🏻‍♂️":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂️":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂️":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂️":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂️":"1f9ce-1f3ff-200d-2642-fe0f","🧎🏻‍♀️":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀️":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀️":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀️":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀️":"1f9ce-1f3ff-200d-2640-fe0f","🏃🏻‍♂️":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂️":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂️":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂️":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂️":"1f3c3-1f3ff-200d-2642-fe0f","🏃🏻‍♀️":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀️":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀️":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀️":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀️":"1f3c3-1f3ff-200d-2640-fe0f","🧖🏻‍♂️":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂️":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂️":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂️":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂️":"1f9d6-1f3ff-200d-2642-fe0f","🧖🏻‍♀️":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀️":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀️":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀️":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀️":"1f9d6-1f3ff-200d-2640-fe0f","🧗🏻‍♂️":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂️":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂️":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂️":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂️":"1f9d7-1f3ff-200d-2642-fe0f","🧗🏻‍♀️":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀️":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀️":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀️":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀️":"1f9d7-1f3ff-200d-2640-fe0f","🏌️‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂️":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂️":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂️":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂️":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂️":"1f3cc-1f3ff-200d-2642-fe0f","🏌️‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀️":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀️":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀️":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀️":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀️":"1f3cc-1f3ff-200d-2640-fe0f","🏄🏻‍♂️":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂️":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂️":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂️":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂️":"1f3c4-1f3ff-200d-2642-fe0f","🏄🏻‍♀️":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀️":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀️":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀️":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀️":"1f3c4-1f3ff-200d-2640-fe0f","🚣🏻‍♂️":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂️":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂️":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂️":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂️":"1f6a3-1f3ff-200d-2642-fe0f","🚣🏻‍♀️":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀️":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀️":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀️":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀️":"1f6a3-1f3ff-200d-2640-fe0f","🏊🏻‍♂️":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂️":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂️":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂️":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂️":"1f3ca-1f3ff-200d-2642-fe0f","🏊🏻‍♀️":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀️":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀️":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀️":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀️":"1f3ca-1f3ff-200d-2640-fe0f","⛹️‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂️":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂️":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂️":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂️":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂️":"26f9-1f3ff-200d-2642-fe0f","⛹️‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀️":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀️":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀️":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀️":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀️":"26f9-1f3ff-200d-2640-fe0f","🏋️‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂️":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂️":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂️":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂️":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂️":"1f3cb-1f3ff-200d-2642-fe0f","🏋️‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀️":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀️":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀️":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀️":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀️":"1f3cb-1f3ff-200d-2640-fe0f","🚴🏻‍♂️":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂️":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂️":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂️":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂️":"1f6b4-1f3ff-200d-2642-fe0f","🚴🏻‍♀️":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀️":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀️":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀️":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀️":"1f6b4-1f3ff-200d-2640-fe0f","🚵🏻‍♂️":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂️":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂️":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂️":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂️":"1f6b5-1f3ff-200d-2642-fe0f","🚵🏻‍♀️":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀️":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀️":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀️":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀️":"1f6b5-1f3ff-200d-2640-fe0f","🤸🏻‍♂️":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂️":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂️":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂️":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂️":"1f938-1f3ff-200d-2642-fe0f","🤸🏻‍♀️":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀️":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀️":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀️":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀️":"1f938-1f3ff-200d-2640-fe0f","🤽🏻‍♂️":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂️":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂️":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂️":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂️":"1f93d-1f3ff-200d-2642-fe0f","🤽🏻‍♀️":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀️":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀️":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀️":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀️":"1f93d-1f3ff-200d-2640-fe0f","🤾🏻‍♂️":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂️":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂️":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂️":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂️":"1f93e-1f3ff-200d-2642-fe0f","🤾🏻‍♀️":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀️":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀️":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀️":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀️":"1f93e-1f3ff-200d-2640-fe0f","🤹🏻‍♂️":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂️":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂️":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂️":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂️":"1f939-1f3ff-200d-2642-fe0f","🤹🏻‍♀️":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀️":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀️":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀️":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀️":"1f939-1f3ff-200d-2640-fe0f","🧘🏻‍♂️":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂️":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂️":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂️":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂️":"1f9d8-1f3ff-200d-2642-fe0f","🧘🏻‍♀️":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀️":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀️":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀️":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀️":"1f9d8-1f3ff-200d-2640-fe0f","🧑‍🤝‍🧑":"1f9d1-200d-1f91d-200d-1f9d1","👩‍❤‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤‍👩":"1f469-200d-2764-fe0f-200d-1f469","👨‍👩‍👦":"1f468-200d-1f469-200d-1f466","👨‍👩‍👧":"1f468-200d-1f469-200d-1f467","👨‍👨‍👦":"1f468-200d-1f468-200d-1f466","👨‍👨‍👧":"1f468-200d-1f468-200d-1f467","👩‍👩‍👦":"1f469-200d-1f469-200d-1f466","👩‍👩‍👧":"1f469-200d-1f469-200d-1f467","👨‍👦‍👦":"1f468-200d-1f466-200d-1f466","👨‍👧‍👦":"1f468-200d-1f467-200d-1f466","👨‍👧‍👧":"1f468-200d-1f467-200d-1f467","👩‍👦‍👦":"1f469-200d-1f466-200d-1f466","👩‍👧‍👦":"1f469-200d-1f467-200d-1f466","👩‍👧‍👧":"1f469-200d-1f467-200d-1f467","🏳️‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","👩‍❤️‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤️‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤️‍👩":"1f469-200d-2764-fe0f-200d-1f469","🧑🏻‍🤝‍🧑🏻":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb","🧑🏻‍🤝‍🧑🏼":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc","🧑🏻‍🤝‍🧑🏽":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd","🧑🏻‍🤝‍🧑🏾":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe","🧑🏻‍🤝‍🧑🏿":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff","🧑🏼‍🤝‍🧑🏻":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb","🧑🏼‍🤝‍🧑🏼":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc","🧑🏼‍🤝‍🧑🏽":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd","🧑🏼‍🤝‍🧑🏾":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe","🧑🏼‍🤝‍🧑🏿":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff","🧑🏽‍🤝‍🧑🏻":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb","🧑🏽‍🤝‍🧑🏼":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc","🧑🏽‍🤝‍🧑🏽":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd","🧑🏽‍🤝‍🧑🏾":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe","🧑🏽‍🤝‍🧑🏿":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff","🧑🏾‍🤝‍🧑🏻":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb","🧑🏾‍🤝‍🧑🏼":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc","🧑🏾‍🤝‍🧑🏽":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd","🧑🏾‍🤝‍🧑🏾":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe","🧑🏾‍🤝‍🧑🏿":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff","🧑🏿‍🤝‍🧑🏻":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb","🧑🏿‍🤝‍🧑🏼":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc","🧑🏿‍🤝‍🧑🏽":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd","🧑🏿‍🤝‍🧑🏾":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe","🧑🏿‍🤝‍🧑🏿":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff","👩🏻‍🤝‍👩🏼":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc","👩🏻‍🤝‍👩🏽":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd","👩🏻‍🤝‍👩🏾":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👩🏿":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff","👩🏼‍🤝‍👩🏻":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb","👩🏼‍🤝‍👩🏽":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd","👩🏼‍🤝‍👩🏾":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe","👩🏼‍🤝‍👩🏿":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff","👩🏽‍🤝‍👩🏻":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb","👩🏽‍🤝‍👩🏼":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc","👩🏽‍🤝‍👩🏾":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe","👩🏽‍🤝‍👩🏿":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff","👩🏾‍🤝‍👩🏻":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb","👩🏾‍🤝‍👩🏼":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc","👩🏾‍🤝‍👩🏽":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd","👩🏾‍🤝‍👩🏿":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff","👩🏿‍🤝‍👩🏻":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb","👩🏿‍🤝‍👩🏼":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc","👩🏿‍🤝‍👩🏽":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd","👩🏿‍🤝‍👩🏾":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👨🏼":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc","👩🏻‍🤝‍👨🏽":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd","👩🏻‍🤝‍👨🏾":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe","👩🏻‍🤝‍👨🏿":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff","👩🏼‍🤝‍👨🏻":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb","👩🏼‍🤝‍👨🏽":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd","👩🏼‍🤝‍👨🏾":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe","👩🏼‍🤝‍👨🏿":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff","👩🏽‍🤝‍👨🏻":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb","👩🏽‍🤝‍👨🏼":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc","👩🏽‍🤝‍👨🏾":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe","👩🏽‍🤝‍👨🏿":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff","👩🏾‍🤝‍👨🏻":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb","👩🏾‍🤝‍👨🏼":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc","👩🏾‍🤝‍👨🏽":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd","👩🏾‍🤝‍👨🏿":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff","👩🏿‍🤝‍👨🏻":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb","👩🏿‍🤝‍👨🏼":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc","👩🏿‍🤝‍👨🏽":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd","👩🏿‍🤝‍👨🏾":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏼":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc","👨🏻‍🤝‍👨🏽":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd","👨🏻‍🤝‍👨🏾":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏿":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff","👨🏼‍🤝‍👨🏻":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb","👨🏼‍🤝‍👨🏽":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd","👨🏼‍🤝‍👨🏾":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe","👨🏼‍🤝‍👨🏿":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff","👨🏽‍🤝‍👨🏻":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb","👨🏽‍🤝‍👨🏼":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc","👨🏽‍🤝‍👨🏾":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe","👨🏽‍🤝‍👨🏿":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff","👨🏾‍🤝‍👨🏻":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb","👨🏾‍🤝‍👨🏼":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc","👨🏾‍🤝‍👨🏽":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd","👨🏾‍🤝‍👨🏿":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff","👨🏿‍🤝‍👨🏻":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb","👨🏿‍🤝‍👨🏼":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc","👨🏿‍🤝‍👨🏽":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd","👨🏿‍🤝‍👨🏾":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe","👩‍❤‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","👨‍👩‍👧‍👦":"1f468-200d-1f469-200d-1f467-200d-1f466","👨‍👩‍👦‍👦":"1f468-200d-1f469-200d-1f466-200d-1f466","👨‍👩‍👧‍👧":"1f468-200d-1f469-200d-1f467-200d-1f467","👨‍👨‍👧‍👦":"1f468-200d-1f468-200d-1f467-200d-1f466","👨‍👨‍👦‍👦":"1f468-200d-1f468-200d-1f466-200d-1f466","👨‍👨‍👧‍👧":"1f468-200d-1f468-200d-1f467-200d-1f467","👩‍👩‍👧‍👦":"1f469-200d-1f469-200d-1f467-200d-1f466","👩‍👩‍👦‍👦":"1f469-200d-1f469-200d-1f466-200d-1f466","👩‍👩‍👧‍👧":"1f469-200d-1f469-200d-1f467-200d-1f467","🏴󠁧󠁢󠁥󠁮󠁧󠁿":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","🏴󠁧󠁢󠁳󠁣󠁴󠁿":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","🏴󠁧󠁢󠁷󠁬󠁳󠁿":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","👩‍❤️‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤️‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤️‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤️‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤️‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤️‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤️‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤️‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤️‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤️‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤️‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤️‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤️‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤️‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤️‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤️‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤️‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤️‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤️‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤️‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤️‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤️‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤️‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤️‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤️‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤️‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤️‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤️‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤️‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤️‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤️‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤️‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤️‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤️‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤️‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤️‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤️‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤️‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤️‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤️‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤️‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤️‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤️‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤️‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤️‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤️‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤️‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤️‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤️‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤️‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤️‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤️‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤️‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤️‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤️‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤️‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤️‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤️‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤️‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤️‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤️‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤️‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤️‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤️‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤️‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤️‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤️‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤️‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤️‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤️‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤️‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤️‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤️‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤️‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤️‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤️‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤️‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤️‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤️‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤️‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤️‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤️‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤️‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤️‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤️‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤️‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤️‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤️‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤️‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤️‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤️‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤️‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤️‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤️‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤️‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤️‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤️‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤️‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","🧑🏻‍❤‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","🧑🏻‍❤️‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤️‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤️‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤️‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤️‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤️‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤️‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤️‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤️‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤️‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤️‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤️‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤️‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤️‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤️‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤️‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤️‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤️‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤️‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤️‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤️‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤️‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤️‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤️‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤️‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤️‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤️‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤️‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤️‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤️‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤️‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤️‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤️‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤️‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤️‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤️‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤️‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤️‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤️‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤️‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤️‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤️‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤️‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤️‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤️‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤️‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤️‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤️‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤️‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤️‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤️‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤️‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤️‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤️‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤️‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤️‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤️‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤️‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤️‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤️‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤️‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤️‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤️‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤️‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤️‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤️‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤️‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤️‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤️‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤️‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤️‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤️‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤️‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤️‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤️‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤️‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤️‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤️‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤️‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤️‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤️‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤️‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤️‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤️‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤️‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤️‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤️‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤️‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤️‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤️‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤️‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤️‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤️‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤️‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤️‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff"} \ No newline at end of file +{"😀":"1f600","😃":"1f603","😄":"1f604","😁":"1f601","😆":"1f606","😅":"1f605","🤣":"1f923","😂":"1f602","🙂":"1f642","🙃":"1f643","🫠":"1fae0","😉":"1f609","😊":"1f60a","😇":"1f607","🥰":"1f970","😍":"1f60d","🤩":"1f929","😘":"1f618","😗":"1f617","☺":"263a","😚":"1f61a","😙":"1f619","🥲":"1f972","😋":"1f60b","😛":"1f61b","😜":"1f61c","🤪":"1f92a","😝":"1f61d","🤑":"1f911","🤗":"1f917","🤭":"1f92d","🫢":"1fae2","🫣":"1fae3","🤫":"1f92b","🤔":"1f914","🫡":"1fae1","🤐":"1f910","🤨":"1f928","😐":"1f610","😑":"1f611","😶":"1f636","🫥":"1fae5","😏":"1f60f","😒":"1f612","🙄":"1f644","😬":"1f62c","🤥":"1f925","😌":"1f60c","😔":"1f614","😪":"1f62a","🤤":"1f924","😴":"1f634","😷":"1f637","🤒":"1f912","🤕":"1f915","🤢":"1f922","🤮":"1f92e","🤧":"1f927","🥵":"1f975","🥶":"1f976","🥴":"1f974","😵":"1f635","🤯":"1f92f","🤠":"1f920","🥳":"1f973","🥸":"1f978","😎":"1f60e","🤓":"1f913","🧐":"1f9d0","😕":"1f615","🫤":"1fae4","😟":"1f61f","🙁":"1f641","☹":"2639","😮":"1f62e","😯":"1f62f","😲":"1f632","😳":"1f633","🥺":"1f97a","🥹":"1f979","😦":"1f626","😧":"1f627","😨":"1f628","😰":"1f630","😥":"1f625","😢":"1f622","😭":"1f62d","😱":"1f631","😖":"1f616","😣":"1f623","😞":"1f61e","😓":"1f613","😩":"1f629","😫":"1f62b","🥱":"1f971","😤":"1f624","😡":"1f621","😠":"1f620","🤬":"1f92c","😈":"1f608","👿":"1f47f","💀":"1f480","☠":"2620","💩":"1f4a9","🤡":"1f921","👹":"1f479","👺":"1f47a","👻":"1f47b","👽":"1f47d","👾":"1f47e","🤖":"1f916","😺":"1f63a","😸":"1f638","😹":"1f639","😻":"1f63b","😼":"1f63c","😽":"1f63d","🙀":"1f640","😿":"1f63f","😾":"1f63e","🙈":"1f648","🙉":"1f649","🙊":"1f64a","💋":"1f48b","💌":"1f48c","💘":"1f498","💝":"1f49d","💖":"1f496","💗":"1f497","💓":"1f493","💞":"1f49e","💕":"1f495","💟":"1f49f","❣":"2763","💔":"1f494","❤":"2764","🧡":"1f9e1","💛":"1f49b","💚":"1f49a","💙":"1f499","💜":"1f49c","🤎":"1f90e","🖤":"1f5a4","🤍":"1f90d","💯":"1f4af","💢":"1f4a2","💥":"1f4a5","💫":"1f4ab","💦":"1f4a6","💨":"1f4a8","🕳":"1f573","💣":"1f4a3","💬":"1f4ac","🗨":"1f5e8","🗯":"1f5ef","💭":"1f4ad","💤":"1f4a4","👋":"1f44b","🤚":"1f91a","🖐":"1f590","✋":"270b","🖖":"1f596","🫱":"1faf1","🫲":"1faf2","🫳":"1faf3","🫴":"1faf4","👌":"1f44c","🤌":"1f90c","🤏":"1f90f","✌":"270c","🤞":"1f91e","🫰":"1faf0","🤟":"1f91f","🤘":"1f918","🤙":"1f919","👈":"1f448","👉":"1f449","👆":"1f446","🖕":"1f595","👇":"1f447","☝":"261d","🫵":"1faf5","👍":"1f44d","👎":"1f44e","✊":"270a","👊":"1f44a","🤛":"1f91b","🤜":"1f91c","👏":"1f44f","🙌":"1f64c","🫶":"1faf6","👐":"1f450","🤲":"1f932","🤝":"1f91d","🙏":"1f64f","✍":"270d","💅":"1f485","🤳":"1f933","💪":"1f4aa","🦾":"1f9be","🦿":"1f9bf","🦵":"1f9b5","🦶":"1f9b6","👂":"1f442","🦻":"1f9bb","👃":"1f443","🧠":"1f9e0","🫀":"1fac0","🫁":"1fac1","🦷":"1f9b7","🦴":"1f9b4","👀":"1f440","👁":"1f441","👅":"1f445","👄":"1f444","🫦":"1fae6","👶":"1f476","🧒":"1f9d2","👦":"1f466","👧":"1f467","🧑":"1f9d1","👱":"1f471","👨":"1f468","🧔":"1f9d4","👩":"1f469","🧓":"1f9d3","👴":"1f474","👵":"1f475","🙍":"1f64d","🙎":"1f64e","🙅":"1f645","🙆":"1f646","💁":"1f481","🙋":"1f64b","🧏":"1f9cf","🙇":"1f647","🤦":"1f926","🤷":"1f937","👮":"1f46e","🕵":"1f575","💂":"1f482","🥷":"1f977","👷":"1f477","🫅":"1fac5","🤴":"1f934","👸":"1f478","👳":"1f473","👲":"1f472","🧕":"1f9d5","🤵":"1f935","👰":"1f470","🤰":"1f930","🫃":"1fac3","🫄":"1fac4","🤱":"1f931","👼":"1f47c","🎅":"1f385","🤶":"1f936","🦸":"1f9b8","🦹":"1f9b9","🧙":"1f9d9","🧚":"1f9da","🧛":"1f9db","🧜":"1f9dc","🧝":"1f9dd","🧞":"1f9de","🧟":"1f9df","🧌":"1f9cc","💆":"1f486","💇":"1f487","🚶":"1f6b6","🧍":"1f9cd","🧎":"1f9ce","🏃":"1f3c3","💃":"1f483","🕺":"1f57a","🕴":"1f574","👯":"1f46f","🧖":"1f9d6","🧗":"1f9d7","🤺":"1f93a","🏇":"1f3c7","⛷":"26f7","🏂":"1f3c2","🏌":"1f3cc","🏄":"1f3c4","🚣":"1f6a3","🏊":"1f3ca","⛹":"26f9","🏋":"1f3cb","🚴":"1f6b4","🚵":"1f6b5","🤸":"1f938","🤼":"1f93c","🤽":"1f93d","🤾":"1f93e","🤹":"1f939","🧘":"1f9d8","🛀":"1f6c0","🛌":"1f6cc","👭":"1f46d","👫":"1f46b","👬":"1f46c","💏":"1f48f","💑":"1f491","👪":"1f46a","🗣":"1f5e3","👤":"1f464","👥":"1f465","🫂":"1fac2","👣":"1f463","🏻":"1f463","🏼":"1f463","🏽":"1f463","🏾":"1f463","🏿":"1f463","🦰":"1f463","🦱":"1f463","🦳":"1f463","🦲":"1f463","🐵":"1f435","🐒":"1f412","🦍":"1f98d","🦧":"1f9a7","🐶":"1f436","🐕":"1f415","🦮":"1f9ae","🐩":"1f429","🐺":"1f43a","🦊":"1f98a","🦝":"1f99d","🐱":"1f431","🐈":"1f408","🦁":"1f981","🐯":"1f42f","🐅":"1f405","🐆":"1f406","🐴":"1f434","🐎":"1f40e","🦄":"1f984","🦓":"1f993","🦌":"1f98c","🦬":"1f9ac","🐮":"1f42e","🐂":"1f402","🐃":"1f403","🐄":"1f404","🐷":"1f437","🐖":"1f416","🐗":"1f417","🐽":"1f43d","🐏":"1f40f","🐑":"1f411","🐐":"1f410","🐪":"1f42a","🐫":"1f42b","🦙":"1f999","🦒":"1f992","🐘":"1f418","🦣":"1f9a3","🦏":"1f98f","🦛":"1f99b","🐭":"1f42d","🐁":"1f401","🐀":"1f400","🐹":"1f439","🐰":"1f430","🐇":"1f407","🐿":"1f43f","🦫":"1f9ab","🦔":"1f994","🦇":"1f987","🐻":"1f43b","🐨":"1f428","🐼":"1f43c","🦥":"1f9a5","🦦":"1f9a6","🦨":"1f9a8","🦘":"1f998","🦡":"1f9a1","🐾":"1f43e","🦃":"1f983","🐔":"1f414","🐓":"1f413","🐣":"1f423","🐤":"1f424","🐥":"1f425","🐦":"1f426","🐧":"1f427","🕊":"1f54a","🦅":"1f985","🦆":"1f986","🦢":"1f9a2","🦉":"1f989","🦤":"1f9a4","🪶":"1fab6","🦩":"1f9a9","🦚":"1f99a","🦜":"1f99c","🐸":"1f438","🐊":"1f40a","🐢":"1f422","🦎":"1f98e","🐍":"1f40d","🐲":"1f432","🐉":"1f409","🦕":"1f995","🦖":"1f996","🐳":"1f433","🐋":"1f40b","🐬":"1f42c","🦭":"1f9ad","🐟":"1f41f","🐠":"1f420","🐡":"1f421","🦈":"1f988","🐙":"1f419","🐚":"1f41a","🪸":"1fab8","🐌":"1f40c","🦋":"1f98b","🐛":"1f41b","🐜":"1f41c","🐝":"1f41d","🪲":"1fab2","🐞":"1f41e","🦗":"1f997","🪳":"1fab3","🕷":"1f577","🕸":"1f578","🦂":"1f982","🦟":"1f99f","🪰":"1fab0","🪱":"1fab1","🦠":"1f9a0","💐":"1f490","🌸":"1f338","💮":"1f4ae","🪷":"1fab7","🏵":"1f3f5","🌹":"1f339","🥀":"1f940","🌺":"1f33a","🌻":"1f33b","🌼":"1f33c","🌷":"1f337","🌱":"1f331","🪴":"1fab4","🌲":"1f332","🌳":"1f333","🌴":"1f334","🌵":"1f335","🌾":"1f33e","🌿":"1f33f","☘":"2618","🍀":"1f340","🍁":"1f341","🍂":"1f342","🍃":"1f343","🪹":"1fab9","🪺":"1faba","🍇":"1f347","🍈":"1f348","🍉":"1f349","🍊":"1f34a","🍋":"1f34b","🍌":"1f34c","🍍":"1f34d","🥭":"1f96d","🍎":"1f34e","🍏":"1f34f","🍐":"1f350","🍑":"1f351","🍒":"1f352","🍓":"1f353","🫐":"1fad0","🥝":"1f95d","🍅":"1f345","🫒":"1fad2","🥥":"1f965","🥑":"1f951","🍆":"1f346","🥔":"1f954","🥕":"1f955","🌽":"1f33d","🌶":"1f336","🫑":"1fad1","🥒":"1f952","🥬":"1f96c","🥦":"1f966","🧄":"1f9c4","🧅":"1f9c5","🍄":"1f344","🥜":"1f95c","🫘":"1fad8","🌰":"1f330","🍞":"1f35e","🥐":"1f950","🥖":"1f956","🫓":"1fad3","🥨":"1f968","🥯":"1f96f","🥞":"1f95e","🧇":"1f9c7","🧀":"1f9c0","🍖":"1f356","🍗":"1f357","🥩":"1f969","🥓":"1f953","🍔":"1f354","🍟":"1f35f","🍕":"1f355","🌭":"1f32d","🥪":"1f96a","🌮":"1f32e","🌯":"1f32f","🫔":"1fad4","🥙":"1f959","🧆":"1f9c6","🥚":"1f95a","🍳":"1f373","🥘":"1f958","🍲":"1f372","🫕":"1fad5","🥣":"1f963","🥗":"1f957","🍿":"1f37f","🧈":"1f9c8","🧂":"1f9c2","🥫":"1f96b","🍱":"1f371","🍘":"1f358","🍙":"1f359","🍚":"1f35a","🍛":"1f35b","🍜":"1f35c","🍝":"1f35d","🍠":"1f360","🍢":"1f362","🍣":"1f363","🍤":"1f364","🍥":"1f365","🥮":"1f96e","🍡":"1f361","🥟":"1f95f","🥠":"1f960","🥡":"1f961","🦀":"1f980","🦞":"1f99e","🦐":"1f990","🦑":"1f991","🦪":"1f9aa","🍦":"1f366","🍧":"1f367","🍨":"1f368","🍩":"1f369","🍪":"1f36a","🎂":"1f382","🍰":"1f370","🧁":"1f9c1","🥧":"1f967","🍫":"1f36b","🍬":"1f36c","🍭":"1f36d","🍮":"1f36e","🍯":"1f36f","🍼":"1f37c","🥛":"1f95b","☕":"2615","🫖":"1fad6","🍵":"1f375","🍶":"1f376","🍾":"1f37e","🍷":"1f377","🍸":"1f378","🍹":"1f379","🍺":"1f37a","🍻":"1f37b","🥂":"1f942","🥃":"1f943","🫗":"1fad7","🥤":"1f964","🧋":"1f9cb","🧃":"1f9c3","🧉":"1f9c9","🧊":"1f9ca","🥢":"1f962","🍽":"1f37d","🍴":"1f374","🥄":"1f944","🔪":"1f52a","🫙":"1fad9","🏺":"1f3fa","🌍":"1f30d","🌎":"1f30e","🌏":"1f30f","🌐":"1f310","🗺":"1f5fa","🗾":"1f5fe","🧭":"1f9ed","🏔":"1f3d4","⛰":"26f0","🌋":"1f30b","🗻":"1f5fb","🏕":"1f3d5","🏖":"1f3d6","🏜":"1f3dc","🏝":"1f3dd","🏞":"1f3de","🏟":"1f3df","🏛":"1f3db","🏗":"1f3d7","🧱":"1f9f1","🪨":"1faa8","🪵":"1fab5","🛖":"1f6d6","🏘":"1f3d8","🏚":"1f3da","🏠":"1f3e0","🏡":"1f3e1","🏢":"1f3e2","🏣":"1f3e3","🏤":"1f3e4","🏥":"1f3e5","🏦":"1f3e6","🏨":"1f3e8","🏩":"1f3e9","🏪":"1f3ea","🏫":"1f3eb","🏬":"1f3ec","🏭":"1f3ed","🏯":"1f3ef","🏰":"1f3f0","💒":"1f492","🗼":"1f5fc","🗽":"1f5fd","⛪":"26ea","🕌":"1f54c","🛕":"1f6d5","🕍":"1f54d","⛩":"26e9","🕋":"1f54b","⛲":"26f2","⛺":"26fa","🌁":"1f301","🌃":"1f303","🏙":"1f3d9","🌄":"1f304","🌅":"1f305","🌆":"1f306","🌇":"1f307","🌉":"1f309","♨":"2668","🎠":"1f3a0","🛝":"1f6dd","🎡":"1f3a1","🎢":"1f3a2","💈":"1f488","🎪":"1f3aa","🚂":"1f682","🚃":"1f683","🚄":"1f684","🚅":"1f685","🚆":"1f686","🚇":"1f687","🚈":"1f688","🚉":"1f689","🚊":"1f68a","🚝":"1f69d","🚞":"1f69e","🚋":"1f68b","🚌":"1f68c","🚍":"1f68d","🚎":"1f68e","🚐":"1f690","🚑":"1f691","🚒":"1f692","🚓":"1f693","🚔":"1f694","🚕":"1f695","🚖":"1f696","🚗":"1f697","🚘":"1f698","🚙":"1f699","🛻":"1f6fb","🚚":"1f69a","🚛":"1f69b","🚜":"1f69c","🏎":"1f3ce","🏍":"1f3cd","🛵":"1f6f5","🦽":"1f9bd","🦼":"1f9bc","🛺":"1f6fa","🚲":"1f6b2","🛴":"1f6f4","🛹":"1f6f9","🛼":"1f6fc","🚏":"1f68f","🛣":"1f6e3","🛤":"1f6e4","🛢":"1f6e2","⛽":"26fd","🛞":"1f6de","🚨":"1f6a8","🚥":"1f6a5","🚦":"1f6a6","🛑":"1f6d1","🚧":"1f6a7","⚓":"2693","🛟":"1f6df","⛵":"26f5","🛶":"1f6f6","🚤":"1f6a4","🛳":"1f6f3","⛴":"26f4","🛥":"1f6e5","🚢":"1f6a2","✈":"2708","🛩":"1f6e9","🛫":"1f6eb","🛬":"1f6ec","🪂":"1fa82","💺":"1f4ba","🚁":"1f681","🚟":"1f69f","🚠":"1f6a0","🚡":"1f6a1","🛰":"1f6f0","🚀":"1f680","🛸":"1f6f8","🛎":"1f6ce","🧳":"1f9f3","⌛":"231b","⏳":"23f3","⌚":"231a","⏰":"23f0","⏱":"23f1","⏲":"23f2","🕰":"1f570","🕛":"1f55b","🕧":"1f567","🕐":"1f550","🕜":"1f55c","🕑":"1f551","🕝":"1f55d","🕒":"1f552","🕞":"1f55e","🕓":"1f553","🕟":"1f55f","🕔":"1f554","🕠":"1f560","🕕":"1f555","🕡":"1f561","🕖":"1f556","🕢":"1f562","🕗":"1f557","🕣":"1f563","🕘":"1f558","🕤":"1f564","🕙":"1f559","🕥":"1f565","🕚":"1f55a","🕦":"1f566","🌑":"1f311","🌒":"1f312","🌓":"1f313","🌔":"1f314","🌕":"1f315","🌖":"1f316","🌗":"1f317","🌘":"1f318","🌙":"1f319","🌚":"1f31a","🌛":"1f31b","🌜":"1f31c","🌡":"1f321","☀":"2600","🌝":"1f31d","🌞":"1f31e","🪐":"1fa90","⭐":"2b50","🌟":"1f31f","🌠":"1f320","🌌":"1f30c","☁":"2601","⛅":"26c5","⛈":"26c8","🌤":"1f324","🌥":"1f325","🌦":"1f326","🌧":"1f327","🌨":"1f328","🌩":"1f329","🌪":"1f32a","🌫":"1f32b","🌬":"1f32c","🌀":"1f300","🌈":"1f308","🌂":"1f302","☂":"2602","☔":"2614","⛱":"26f1","⚡":"26a1","❄":"2744","☃":"2603","⛄":"26c4","☄":"2604","🔥":"1f525","💧":"1f4a7","🌊":"1f30a","🎃":"1f383","🎄":"1f384","🎆":"1f386","🎇":"1f387","🧨":"1f9e8","✨":"2728","🎈":"1f388","🎉":"1f389","🎊":"1f38a","🎋":"1f38b","🎍":"1f38d","🎎":"1f38e","🎏":"1f38f","🎐":"1f390","🎑":"1f391","🧧":"1f9e7","🎀":"1f380","🎁":"1f381","🎗":"1f397","🎟":"1f39f","🎫":"1f3ab","🎖":"1f396","🏆":"1f3c6","🏅":"1f3c5","🥇":"1f947","🥈":"1f948","🥉":"1f949","⚽":"26bd","⚾":"26be","🥎":"1f94e","🏀":"1f3c0","🏐":"1f3d0","🏈":"1f3c8","🏉":"1f3c9","🎾":"1f3be","🥏":"1f94f","🎳":"1f3b3","🏏":"1f3cf","🏑":"1f3d1","🏒":"1f3d2","🥍":"1f94d","🏓":"1f3d3","🏸":"1f3f8","🥊":"1f94a","🥋":"1f94b","🥅":"1f945","⛳":"26f3","⛸":"26f8","🎣":"1f3a3","🤿":"1f93f","🎽":"1f3bd","🎿":"1f3bf","🛷":"1f6f7","🥌":"1f94c","🎯":"1f3af","🪀":"1fa80","🪁":"1fa81","🎱":"1f3b1","🔮":"1f52e","🪄":"1fa84","🧿":"1f9ff","🪬":"1faac","🎮":"1f3ae","🕹":"1f579","🎰":"1f3b0","🎲":"1f3b2","🧩":"1f9e9","🧸":"1f9f8","🪅":"1fa85","🪩":"1faa9","🪆":"1fa86","♠":"2660","♥":"2665","♦":"2666","♣":"2663","♟":"265f","🃏":"1f0cf","🀄":"1f004","🎴":"1f3b4","🎭":"1f3ad","🖼":"1f5bc","🎨":"1f3a8","🧵":"1f9f5","🪡":"1faa1","🧶":"1f9f6","🪢":"1faa2","👓":"1f453","🕶":"1f576","🥽":"1f97d","🥼":"1f97c","🦺":"1f9ba","👔":"1f454","👕":"1f455","👖":"1f456","🧣":"1f9e3","🧤":"1f9e4","🧥":"1f9e5","🧦":"1f9e6","👗":"1f457","👘":"1f458","🥻":"1f97b","🩱":"1fa71","🩲":"1fa72","🩳":"1fa73","👙":"1f459","👚":"1f45a","👛":"1f45b","👜":"1f45c","👝":"1f45d","🛍":"1f6cd","🎒":"1f392","🩴":"1fa74","👞":"1f45e","👟":"1f45f","🥾":"1f97e","🥿":"1f97f","👠":"1f460","👡":"1f461","🩰":"1fa70","👢":"1f462","👑":"1f451","👒":"1f452","🎩":"1f3a9","🎓":"1f393","🧢":"1f9e2","🪖":"1fa96","⛑":"26d1","📿":"1f4ff","💄":"1f484","💍":"1f48d","💎":"1f48e","🔇":"1f507","🔈":"1f508","🔉":"1f509","🔊":"1f50a","📢":"1f4e2","📣":"1f4e3","📯":"1f4ef","🔔":"1f514","🔕":"1f515","🎼":"1f3bc","🎵":"1f3b5","🎶":"1f3b6","🎙":"1f399","🎚":"1f39a","🎛":"1f39b","🎤":"1f3a4","🎧":"1f3a7","📻":"1f4fb","🎷":"1f3b7","🪗":"1fa97","🎸":"1f3b8","🎹":"1f3b9","🎺":"1f3ba","🎻":"1f3bb","🪕":"1fa95","🥁":"1f941","🪘":"1fa98","📱":"1f4f1","📲":"1f4f2","☎":"260e","📞":"1f4de","📟":"1f4df","📠":"1f4e0","🔋":"1f50b","🪫":"1faab","🔌":"1f50c","💻":"1f4bb","🖥":"1f5a5","🖨":"1f5a8","⌨":"2328","🖱":"1f5b1","🖲":"1f5b2","💽":"1f4bd","💾":"1f4be","💿":"1f4bf","📀":"1f4c0","🧮":"1f9ee","🎥":"1f3a5","🎞":"1f39e","📽":"1f4fd","🎬":"1f3ac","📺":"1f4fa","📷":"1f4f7","📸":"1f4f8","📹":"1f4f9","📼":"1f4fc","🔍":"1f50d","🔎":"1f50e","🕯":"1f56f","💡":"1f4a1","🔦":"1f526","🏮":"1f3ee","🪔":"1fa94","📔":"1f4d4","📕":"1f4d5","📖":"1f4d6","📗":"1f4d7","📘":"1f4d8","📙":"1f4d9","📚":"1f4da","📓":"1f4d3","📒":"1f4d2","📃":"1f4c3","📜":"1f4dc","📄":"1f4c4","📰":"1f4f0","🗞":"1f5de","📑":"1f4d1","🔖":"1f516","🏷":"1f3f7","💰":"1f4b0","🪙":"1fa99","💴":"1f4b4","💵":"1f4b5","💶":"1f4b6","💷":"1f4b7","💸":"1f4b8","💳":"1f4b3","🧾":"1f9fe","💹":"1f4b9","✉":"2709","📧":"1f4e7","📨":"1f4e8","📩":"1f4e9","📤":"1f4e4","📥":"1f4e5","📦":"1f4e6","📫":"1f4eb","📪":"1f4ea","📬":"1f4ec","📭":"1f4ed","📮":"1f4ee","🗳":"1f5f3","✏":"270f","✒":"2712","🖋":"1f58b","🖊":"1f58a","🖌":"1f58c","🖍":"1f58d","📝":"1f4dd","💼":"1f4bc","📁":"1f4c1","📂":"1f4c2","🗂":"1f5c2","📅":"1f4c5","📆":"1f4c6","🗒":"1f5d2","🗓":"1f5d3","📇":"1f4c7","📈":"1f4c8","📉":"1f4c9","📊":"1f4ca","📋":"1f4cb","📌":"1f4cc","📍":"1f4cd","📎":"1f4ce","🖇":"1f587","📏":"1f4cf","📐":"1f4d0","✂":"2702","🗃":"1f5c3","🗄":"1f5c4","🗑":"1f5d1","🔒":"1f512","🔓":"1f513","🔏":"1f50f","🔐":"1f510","🔑":"1f511","🗝":"1f5dd","🔨":"1f528","🪓":"1fa93","⛏":"26cf","⚒":"2692","🛠":"1f6e0","🗡":"1f5e1","⚔":"2694","🔫":"1f52b","🪃":"1fa83","🏹":"1f3f9","🛡":"1f6e1","🪚":"1fa9a","🔧":"1f527","🪛":"1fa9b","🔩":"1f529","⚙":"2699","🗜":"1f5dc","⚖":"2696","🦯":"1f9af","🔗":"1f517","⛓":"26d3","🪝":"1fa9d","🧰":"1f9f0","🧲":"1f9f2","🪜":"1fa9c","⚗":"2697","🧪":"1f9ea","🧫":"1f9eb","🧬":"1f9ec","🔬":"1f52c","🔭":"1f52d","📡":"1f4e1","💉":"1f489","🩸":"1fa78","💊":"1f48a","🩹":"1fa79","🩼":"1fa7c","🩺":"1fa7a","🩻":"1fa7b","🚪":"1f6aa","🛗":"1f6d7","🪞":"1fa9e","🪟":"1fa9f","🛏":"1f6cf","🛋":"1f6cb","🪑":"1fa91","🚽":"1f6bd","🪠":"1faa0","🚿":"1f6bf","🛁":"1f6c1","🪤":"1faa4","🪒":"1fa92","🧴":"1f9f4","🧷":"1f9f7","🧹":"1f9f9","🧺":"1f9fa","🧻":"1f9fb","🪣":"1faa3","🧼":"1f9fc","🫧":"1fae7","🪥":"1faa5","🧽":"1f9fd","🧯":"1f9ef","🛒":"1f6d2","🚬":"1f6ac","⚰":"26b0","🪦":"1faa6","⚱":"26b1","🗿":"1f5ff","🪧":"1faa7","🪪":"1faaa","🏧":"1f3e7","🚮":"1f6ae","🚰":"1f6b0","♿":"267f","🚹":"1f6b9","🚺":"1f6ba","🚻":"1f6bb","🚼":"1f6bc","🚾":"1f6be","🛂":"1f6c2","🛃":"1f6c3","🛄":"1f6c4","🛅":"1f6c5","⚠":"26a0","🚸":"1f6b8","⛔":"26d4","🚫":"1f6ab","🚳":"1f6b3","🚭":"1f6ad","🚯":"1f6af","🚱":"1f6b1","🚷":"1f6b7","📵":"1f4f5","🔞":"1f51e","☢":"2622","☣":"2623","⬆":"2b06","↗":"2197","➡":"27a1","↘":"2198","⬇":"2b07","↙":"2199","⬅":"2b05","↖":"2196","↕":"2195","↔":"2194","↩":"21a9","↪":"21aa","⤴":"2934","⤵":"2935","🔃":"1f503","🔄":"1f504","🔙":"1f519","🔚":"1f51a","🔛":"1f51b","🔜":"1f51c","🔝":"1f51d","🛐":"1f6d0","⚛":"269b","🕉":"1f549","✡":"2721","☸":"2638","☯":"262f","✝":"271d","☦":"2626","☪":"262a","☮":"262e","🕎":"1f54e","🔯":"1f52f","♈":"2648","♉":"2649","♊":"264a","♋":"264b","♌":"264c","♍":"264d","♎":"264e","♏":"264f","♐":"2650","♑":"2651","♒":"2652","♓":"2653","⛎":"26ce","🔀":"1f500","🔁":"1f501","🔂":"1f502","▶":"25b6","⏩":"23e9","⏭":"23ed","⏯":"23ef","◀":"25c0","⏪":"23ea","⏮":"23ee","🔼":"1f53c","⏫":"23eb","🔽":"1f53d","⏬":"23ec","⏸":"23f8","⏹":"23f9","⏺":"23fa","⏏":"23cf","🎦":"1f3a6","🔅":"1f505","🔆":"1f506","📶":"1f4f6","📳":"1f4f3","📴":"1f4f4","♀":"2640","♂":"2642","⚧":"26a7","✖":"2716","➕":"2795","➖":"2796","➗":"2797","🟰":"1f7f0","♾":"267e","‼":"203c","⁉":"2049","❓":"2753","❔":"2754","❕":"2755","❗":"2757","〰":"3030","💱":"1f4b1","💲":"1f4b2","⚕":"2695","♻":"267b","⚜":"269c","🔱":"1f531","📛":"1f4db","🔰":"1f530","⭕":"2b55","✅":"2705","☑":"2611","✔":"2714","❌":"274c","❎":"274e","➰":"27b0","➿":"27bf","〽":"303d","✳":"2733","✴":"2734","❇":"2747","©":"a9","®":"ae","™":"2122","🔟":"1f51f","🔠":"1f520","🔡":"1f521","🔢":"1f522","🔣":"1f523","🔤":"1f524","🅰":"1f170","🆎":"1f18e","🅱":"1f171","🆑":"1f191","🆒":"1f192","🆓":"1f193","ℹ":"2139","🆔":"1f194","Ⓜ":"24c2","🆕":"1f195","🆖":"1f196","🅾":"1f17e","🆗":"1f197","🅿":"1f17f","🆘":"1f198","🆙":"1f199","🆚":"1f19a","🈁":"1f201","🈂":"1f202","🈷":"1f237","🈶":"1f236","🈯":"1f22f","🉐":"1f250","🈹":"1f239","🈚":"1f21a","🈲":"1f232","🉑":"1f251","🈸":"1f238","🈴":"1f234","🈳":"1f233","㊗":"3297","㊙":"3299","🈺":"1f23a","🈵":"1f235","🔴":"1f534","🟠":"1f7e0","🟡":"1f7e1","🟢":"1f7e2","🔵":"1f535","🟣":"1f7e3","🟤":"1f7e4","⚫":"26ab","⚪":"26aa","🟥":"1f7e5","🟧":"1f7e7","🟨":"1f7e8","🟩":"1f7e9","🟦":"1f7e6","🟪":"1f7ea","🟫":"1f7eb","⬛":"2b1b","⬜":"2b1c","◼":"25fc","◻":"25fb","◾":"25fe","◽":"25fd","▪":"25aa","▫":"25ab","🔶":"1f536","🔷":"1f537","🔸":"1f538","🔹":"1f539","🔺":"1f53a","🔻":"1f53b","💠":"1f4a0","🔘":"1f518","🔳":"1f533","🔲":"1f532","🏁":"1f3c1","🚩":"1f6a9","🎌":"1f38c","🏴":"1f3f4","🏳":"1f3f3","☺️":"263a","☹️":"2639","☠️":"2620","❣️":"2763","❤️":"2764","🕳️":"1f573","🗨️":"1f5e8","🗯️":"1f5ef","👋🏻":"1f44b-1f3fb","👋🏼":"1f44b-1f3fc","👋🏽":"1f44b-1f3fd","👋🏾":"1f44b-1f3fe","👋🏿":"1f44b-1f3ff","🤚🏻":"1f91a-1f3fb","🤚🏼":"1f91a-1f3fc","🤚🏽":"1f91a-1f3fd","🤚🏾":"1f91a-1f3fe","🤚🏿":"1f91a-1f3ff","🖐️":"1f590","🖐🏻":"1f590-1f3fb","🖐🏼":"1f590-1f3fc","🖐🏽":"1f590-1f3fd","🖐🏾":"1f590-1f3fe","🖐🏿":"1f590-1f3ff","✋🏻":"270b-1f3fb","✋🏼":"270b-1f3fc","✋🏽":"270b-1f3fd","✋🏾":"270b-1f3fe","✋🏿":"270b-1f3ff","🖖🏻":"1f596-1f3fb","🖖🏼":"1f596-1f3fc","🖖🏽":"1f596-1f3fd","🖖🏾":"1f596-1f3fe","🖖🏿":"1f596-1f3ff","🫱🏻":"1faf1-1f3fb","🫱🏼":"1faf1-1f3fc","🫱🏽":"1faf1-1f3fd","🫱🏾":"1faf1-1f3fe","🫱🏿":"1faf1-1f3ff","🫲🏻":"1faf2-1f3fb","🫲🏼":"1faf2-1f3fc","🫲🏽":"1faf2-1f3fd","🫲🏾":"1faf2-1f3fe","🫲🏿":"1faf2-1f3ff","🫳🏻":"1faf3-1f3fb","🫳🏼":"1faf3-1f3fc","🫳🏽":"1faf3-1f3fd","🫳🏾":"1faf3-1f3fe","🫳🏿":"1faf3-1f3ff","🫴🏻":"1faf4-1f3fb","🫴🏼":"1faf4-1f3fc","🫴🏽":"1faf4-1f3fd","🫴🏾":"1faf4-1f3fe","🫴🏿":"1faf4-1f3ff","👌🏻":"1f44c-1f3fb","👌🏼":"1f44c-1f3fc","👌🏽":"1f44c-1f3fd","👌🏾":"1f44c-1f3fe","👌🏿":"1f44c-1f3ff","🤌🏻":"1f90c-1f3fb","🤌🏼":"1f90c-1f3fc","🤌🏽":"1f90c-1f3fd","🤌🏾":"1f90c-1f3fe","🤌🏿":"1f90c-1f3ff","🤏🏻":"1f90f-1f3fb","🤏🏼":"1f90f-1f3fc","🤏🏽":"1f90f-1f3fd","🤏🏾":"1f90f-1f3fe","🤏🏿":"1f90f-1f3ff","✌️":"270c","✌🏻":"270c-1f3fb","✌🏼":"270c-1f3fc","✌🏽":"270c-1f3fd","✌🏾":"270c-1f3fe","✌🏿":"270c-1f3ff","🤞🏻":"1f91e-1f3fb","🤞🏼":"1f91e-1f3fc","🤞🏽":"1f91e-1f3fd","🤞🏾":"1f91e-1f3fe","🤞🏿":"1f91e-1f3ff","🫰🏻":"1faf0-1f3fb","🫰🏼":"1faf0-1f3fc","🫰🏽":"1faf0-1f3fd","🫰🏾":"1faf0-1f3fe","🫰🏿":"1faf0-1f3ff","🤟🏻":"1f91f-1f3fb","🤟🏼":"1f91f-1f3fc","🤟🏽":"1f91f-1f3fd","🤟🏾":"1f91f-1f3fe","🤟🏿":"1f91f-1f3ff","🤘🏻":"1f918-1f3fb","🤘🏼":"1f918-1f3fc","🤘🏽":"1f918-1f3fd","🤘🏾":"1f918-1f3fe","🤘🏿":"1f918-1f3ff","🤙🏻":"1f919-1f3fb","🤙🏼":"1f919-1f3fc","🤙🏽":"1f919-1f3fd","🤙🏾":"1f919-1f3fe","🤙🏿":"1f919-1f3ff","👈🏻":"1f448-1f3fb","👈🏼":"1f448-1f3fc","👈🏽":"1f448-1f3fd","👈🏾":"1f448-1f3fe","👈🏿":"1f448-1f3ff","👉🏻":"1f449-1f3fb","👉🏼":"1f449-1f3fc","👉🏽":"1f449-1f3fd","👉🏾":"1f449-1f3fe","👉🏿":"1f449-1f3ff","👆🏻":"1f446-1f3fb","👆🏼":"1f446-1f3fc","👆🏽":"1f446-1f3fd","👆🏾":"1f446-1f3fe","👆🏿":"1f446-1f3ff","🖕🏻":"1f595-1f3fb","🖕🏼":"1f595-1f3fc","🖕🏽":"1f595-1f3fd","🖕🏾":"1f595-1f3fe","🖕🏿":"1f595-1f3ff","👇🏻":"1f447-1f3fb","👇🏼":"1f447-1f3fc","👇🏽":"1f447-1f3fd","👇🏾":"1f447-1f3fe","👇🏿":"1f447-1f3ff","☝️":"261d","☝🏻":"261d-1f3fb","☝🏼":"261d-1f3fc","☝🏽":"261d-1f3fd","☝🏾":"261d-1f3fe","☝🏿":"261d-1f3ff","🫵🏻":"1faf5-1f3fb","🫵🏼":"1faf5-1f3fc","🫵🏽":"1faf5-1f3fd","🫵🏾":"1faf5-1f3fe","🫵🏿":"1faf5-1f3ff","👍🏻":"1f44d-1f3fb","👍🏼":"1f44d-1f3fc","👍🏽":"1f44d-1f3fd","👍🏾":"1f44d-1f3fe","👍🏿":"1f44d-1f3ff","👎🏻":"1f44e-1f3fb","👎🏼":"1f44e-1f3fc","👎🏽":"1f44e-1f3fd","👎🏾":"1f44e-1f3fe","👎🏿":"1f44e-1f3ff","✊🏻":"270a-1f3fb","✊🏼":"270a-1f3fc","✊🏽":"270a-1f3fd","✊🏾":"270a-1f3fe","✊🏿":"270a-1f3ff","👊🏻":"1f44a-1f3fb","👊🏼":"1f44a-1f3fc","👊🏽":"1f44a-1f3fd","👊🏾":"1f44a-1f3fe","👊🏿":"1f44a-1f3ff","🤛🏻":"1f91b-1f3fb","🤛🏼":"1f91b-1f3fc","🤛🏽":"1f91b-1f3fd","🤛🏾":"1f91b-1f3fe","🤛🏿":"1f91b-1f3ff","🤜🏻":"1f91c-1f3fb","🤜🏼":"1f91c-1f3fc","🤜🏽":"1f91c-1f3fd","🤜🏾":"1f91c-1f3fe","🤜🏿":"1f91c-1f3ff","👏🏻":"1f44f-1f3fb","👏🏼":"1f44f-1f3fc","👏🏽":"1f44f-1f3fd","👏🏾":"1f44f-1f3fe","👏🏿":"1f44f-1f3ff","🙌🏻":"1f64c-1f3fb","🙌🏼":"1f64c-1f3fc","🙌🏽":"1f64c-1f3fd","🙌🏾":"1f64c-1f3fe","🙌🏿":"1f64c-1f3ff","🫶🏻":"1faf6-1f3fb","🫶🏼":"1faf6-1f3fc","🫶🏽":"1faf6-1f3fd","🫶🏾":"1faf6-1f3fe","🫶🏿":"1faf6-1f3ff","👐🏻":"1f450-1f3fb","👐🏼":"1f450-1f3fc","👐🏽":"1f450-1f3fd","👐🏾":"1f450-1f3fe","👐🏿":"1f450-1f3ff","🤲🏻":"1f932-1f3fb","🤲🏼":"1f932-1f3fc","🤲🏽":"1f932-1f3fd","🤲🏾":"1f932-1f3fe","🤲🏿":"1f932-1f3ff","🤝🏻":"1f91d-1f3fb","🤝🏼":"1f91d-1f3fc","🤝🏽":"1f91d-1f3fd","🤝🏾":"1f91d-1f3fe","🤝🏿":"1f91d-1f3ff","🙏🏻":"1f64f-1f3fb","🙏🏼":"1f64f-1f3fc","🙏🏽":"1f64f-1f3fd","🙏🏾":"1f64f-1f3fe","🙏🏿":"1f64f-1f3ff","✍️":"270d","✍🏻":"270d-1f3fb","✍🏼":"270d-1f3fc","✍🏽":"270d-1f3fd","✍🏾":"270d-1f3fe","✍🏿":"270d-1f3ff","💅🏻":"1f485-1f3fb","💅🏼":"1f485-1f3fc","💅🏽":"1f485-1f3fd","💅🏾":"1f485-1f3fe","💅🏿":"1f485-1f3ff","🤳🏻":"1f933-1f3fb","🤳🏼":"1f933-1f3fc","🤳🏽":"1f933-1f3fd","🤳🏾":"1f933-1f3fe","🤳🏿":"1f933-1f3ff","💪🏻":"1f4aa-1f3fb","💪🏼":"1f4aa-1f3fc","💪🏽":"1f4aa-1f3fd","💪🏾":"1f4aa-1f3fe","💪🏿":"1f4aa-1f3ff","🦵🏻":"1f9b5-1f3fb","🦵🏼":"1f9b5-1f3fc","🦵🏽":"1f9b5-1f3fd","🦵🏾":"1f9b5-1f3fe","🦵🏿":"1f9b5-1f3ff","🦶🏻":"1f9b6-1f3fb","🦶🏼":"1f9b6-1f3fc","🦶🏽":"1f9b6-1f3fd","🦶🏾":"1f9b6-1f3fe","🦶🏿":"1f9b6-1f3ff","👂🏻":"1f442-1f3fb","👂🏼":"1f442-1f3fc","👂🏽":"1f442-1f3fd","👂🏾":"1f442-1f3fe","👂🏿":"1f442-1f3ff","🦻🏻":"1f9bb-1f3fb","🦻🏼":"1f9bb-1f3fc","🦻🏽":"1f9bb-1f3fd","🦻🏾":"1f9bb-1f3fe","🦻🏿":"1f9bb-1f3ff","👃🏻":"1f443-1f3fb","👃🏼":"1f443-1f3fc","👃🏽":"1f443-1f3fd","👃🏾":"1f443-1f3fe","👃🏿":"1f443-1f3ff","👁️":"1f441","👶🏻":"1f476-1f3fb","👶🏼":"1f476-1f3fc","👶🏽":"1f476-1f3fd","👶🏾":"1f476-1f3fe","👶🏿":"1f476-1f3ff","🧒🏻":"1f9d2-1f3fb","🧒🏼":"1f9d2-1f3fc","🧒🏽":"1f9d2-1f3fd","🧒🏾":"1f9d2-1f3fe","🧒🏿":"1f9d2-1f3ff","👦🏻":"1f466-1f3fb","👦🏼":"1f466-1f3fc","👦🏽":"1f466-1f3fd","👦🏾":"1f466-1f3fe","👦🏿":"1f466-1f3ff","👧🏻":"1f467-1f3fb","👧🏼":"1f467-1f3fc","👧🏽":"1f467-1f3fd","👧🏾":"1f467-1f3fe","👧🏿":"1f467-1f3ff","🧑🏻":"1f9d1-1f3fb","🧑🏼":"1f9d1-1f3fc","🧑🏽":"1f9d1-1f3fd","🧑🏾":"1f9d1-1f3fe","🧑🏿":"1f9d1-1f3ff","👱🏻":"1f471-1f3fb","👱🏼":"1f471-1f3fc","👱🏽":"1f471-1f3fd","👱🏾":"1f471-1f3fe","👱🏿":"1f471-1f3ff","👨🏻":"1f468-1f3fb","👨🏼":"1f468-1f3fc","👨🏽":"1f468-1f3fd","👨🏾":"1f468-1f3fe","👨🏿":"1f468-1f3ff","🧔🏻":"1f9d4-1f3fb","🧔🏼":"1f9d4-1f3fc","🧔🏽":"1f9d4-1f3fd","🧔🏾":"1f9d4-1f3fe","🧔🏿":"1f9d4-1f3ff","👩🏻":"1f469-1f3fb","👩🏼":"1f469-1f3fc","👩🏽":"1f469-1f3fd","👩🏾":"1f469-1f3fe","👩🏿":"1f469-1f3ff","🧓🏻":"1f9d3-1f3fb","🧓🏼":"1f9d3-1f3fc","🧓🏽":"1f9d3-1f3fd","🧓🏾":"1f9d3-1f3fe","🧓🏿":"1f9d3-1f3ff","👴🏻":"1f474-1f3fb","👴🏼":"1f474-1f3fc","👴🏽":"1f474-1f3fd","👴🏾":"1f474-1f3fe","👴🏿":"1f474-1f3ff","👵🏻":"1f475-1f3fb","👵🏼":"1f475-1f3fc","👵🏽":"1f475-1f3fd","👵🏾":"1f475-1f3fe","👵🏿":"1f475-1f3ff","🙍🏻":"1f64d-1f3fb","🙍🏼":"1f64d-1f3fc","🙍🏽":"1f64d-1f3fd","🙍🏾":"1f64d-1f3fe","🙍🏿":"1f64d-1f3ff","🙎🏻":"1f64e-1f3fb","🙎🏼":"1f64e-1f3fc","🙎🏽":"1f64e-1f3fd","🙎🏾":"1f64e-1f3fe","🙎🏿":"1f64e-1f3ff","🙅🏻":"1f645-1f3fb","🙅🏼":"1f645-1f3fc","🙅🏽":"1f645-1f3fd","🙅🏾":"1f645-1f3fe","🙅🏿":"1f645-1f3ff","🙆🏻":"1f646-1f3fb","🙆🏼":"1f646-1f3fc","🙆🏽":"1f646-1f3fd","🙆🏾":"1f646-1f3fe","🙆🏿":"1f646-1f3ff","💁🏻":"1f481-1f3fb","💁🏼":"1f481-1f3fc","💁🏽":"1f481-1f3fd","💁🏾":"1f481-1f3fe","💁🏿":"1f481-1f3ff","🙋🏻":"1f64b-1f3fb","🙋🏼":"1f64b-1f3fc","🙋🏽":"1f64b-1f3fd","🙋🏾":"1f64b-1f3fe","🙋🏿":"1f64b-1f3ff","🧏🏻":"1f9cf-1f3fb","🧏🏼":"1f9cf-1f3fc","🧏🏽":"1f9cf-1f3fd","🧏🏾":"1f9cf-1f3fe","🧏🏿":"1f9cf-1f3ff","🙇🏻":"1f647-1f3fb","🙇🏼":"1f647-1f3fc","🙇🏽":"1f647-1f3fd","🙇🏾":"1f647-1f3fe","🙇🏿":"1f647-1f3ff","🤦🏻":"1f926-1f3fb","🤦🏼":"1f926-1f3fc","🤦🏽":"1f926-1f3fd","🤦🏾":"1f926-1f3fe","🤦🏿":"1f926-1f3ff","🤷🏻":"1f937-1f3fb","🤷🏼":"1f937-1f3fc","🤷🏽":"1f937-1f3fd","🤷🏾":"1f937-1f3fe","🤷🏿":"1f937-1f3ff","👮🏻":"1f46e-1f3fb","👮🏼":"1f46e-1f3fc","👮🏽":"1f46e-1f3fd","👮🏾":"1f46e-1f3fe","👮🏿":"1f46e-1f3ff","🕵️":"1f575","🕵🏻":"1f575-1f3fb","🕵🏼":"1f575-1f3fc","🕵🏽":"1f575-1f3fd","🕵🏾":"1f575-1f3fe","🕵🏿":"1f575-1f3ff","💂🏻":"1f482-1f3fb","💂🏼":"1f482-1f3fc","💂🏽":"1f482-1f3fd","💂🏾":"1f482-1f3fe","💂🏿":"1f482-1f3ff","🥷🏻":"1f977-1f3fb","🥷🏼":"1f977-1f3fc","🥷🏽":"1f977-1f3fd","🥷🏾":"1f977-1f3fe","🥷🏿":"1f977-1f3ff","👷🏻":"1f477-1f3fb","👷🏼":"1f477-1f3fc","👷🏽":"1f477-1f3fd","👷🏾":"1f477-1f3fe","👷🏿":"1f477-1f3ff","🫅🏻":"1fac5-1f3fb","🫅🏼":"1fac5-1f3fc","🫅🏽":"1fac5-1f3fd","🫅🏾":"1fac5-1f3fe","🫅🏿":"1fac5-1f3ff","🤴🏻":"1f934-1f3fb","🤴🏼":"1f934-1f3fc","🤴🏽":"1f934-1f3fd","🤴🏾":"1f934-1f3fe","🤴🏿":"1f934-1f3ff","👸🏻":"1f478-1f3fb","👸🏼":"1f478-1f3fc","👸🏽":"1f478-1f3fd","👸🏾":"1f478-1f3fe","👸🏿":"1f478-1f3ff","👳🏻":"1f473-1f3fb","👳🏼":"1f473-1f3fc","👳🏽":"1f473-1f3fd","👳🏾":"1f473-1f3fe","👳🏿":"1f473-1f3ff","👲🏻":"1f472-1f3fb","👲🏼":"1f472-1f3fc","👲🏽":"1f472-1f3fd","👲🏾":"1f472-1f3fe","👲🏿":"1f472-1f3ff","🧕🏻":"1f9d5-1f3fb","🧕🏼":"1f9d5-1f3fc","🧕🏽":"1f9d5-1f3fd","🧕🏾":"1f9d5-1f3fe","🧕🏿":"1f9d5-1f3ff","🤵🏻":"1f935-1f3fb","🤵🏼":"1f935-1f3fc","🤵🏽":"1f935-1f3fd","🤵🏾":"1f935-1f3fe","🤵🏿":"1f935-1f3ff","👰🏻":"1f470-1f3fb","👰🏼":"1f470-1f3fc","👰🏽":"1f470-1f3fd","👰🏾":"1f470-1f3fe","👰🏿":"1f470-1f3ff","🤰🏻":"1f930-1f3fb","🤰🏼":"1f930-1f3fc","🤰🏽":"1f930-1f3fd","🤰🏾":"1f930-1f3fe","🤰🏿":"1f930-1f3ff","🫃🏻":"1fac3-1f3fb","🫃🏼":"1fac3-1f3fc","🫃🏽":"1fac3-1f3fd","🫃🏾":"1fac3-1f3fe","🫃🏿":"1fac3-1f3ff","🫄🏻":"1fac4-1f3fb","🫄🏼":"1fac4-1f3fc","🫄🏽":"1fac4-1f3fd","🫄🏾":"1fac4-1f3fe","🫄🏿":"1fac4-1f3ff","🤱🏻":"1f931-1f3fb","🤱🏼":"1f931-1f3fc","🤱🏽":"1f931-1f3fd","🤱🏾":"1f931-1f3fe","🤱🏿":"1f931-1f3ff","👼🏻":"1f47c-1f3fb","👼🏼":"1f47c-1f3fc","👼🏽":"1f47c-1f3fd","👼🏾":"1f47c-1f3fe","👼🏿":"1f47c-1f3ff","🎅🏻":"1f385-1f3fb","🎅🏼":"1f385-1f3fc","🎅🏽":"1f385-1f3fd","🎅🏾":"1f385-1f3fe","🎅🏿":"1f385-1f3ff","🤶🏻":"1f936-1f3fb","🤶🏼":"1f936-1f3fc","🤶🏽":"1f936-1f3fd","🤶🏾":"1f936-1f3fe","🤶🏿":"1f936-1f3ff","🦸🏻":"1f9b8-1f3fb","🦸🏼":"1f9b8-1f3fc","🦸🏽":"1f9b8-1f3fd","🦸🏾":"1f9b8-1f3fe","🦸🏿":"1f9b8-1f3ff","🦹🏻":"1f9b9-1f3fb","🦹🏼":"1f9b9-1f3fc","🦹🏽":"1f9b9-1f3fd","🦹🏾":"1f9b9-1f3fe","🦹🏿":"1f9b9-1f3ff","🧙🏻":"1f9d9-1f3fb","🧙🏼":"1f9d9-1f3fc","🧙🏽":"1f9d9-1f3fd","🧙🏾":"1f9d9-1f3fe","🧙🏿":"1f9d9-1f3ff","🧚🏻":"1f9da-1f3fb","🧚🏼":"1f9da-1f3fc","🧚🏽":"1f9da-1f3fd","🧚🏾":"1f9da-1f3fe","🧚🏿":"1f9da-1f3ff","🧛🏻":"1f9db-1f3fb","🧛🏼":"1f9db-1f3fc","🧛🏽":"1f9db-1f3fd","🧛🏾":"1f9db-1f3fe","🧛🏿":"1f9db-1f3ff","🧜🏻":"1f9dc-1f3fb","🧜🏼":"1f9dc-1f3fc","🧜🏽":"1f9dc-1f3fd","🧜🏾":"1f9dc-1f3fe","🧜🏿":"1f9dc-1f3ff","🧝🏻":"1f9dd-1f3fb","🧝🏼":"1f9dd-1f3fc","🧝🏽":"1f9dd-1f3fd","🧝🏾":"1f9dd-1f3fe","🧝🏿":"1f9dd-1f3ff","💆🏻":"1f486-1f3fb","💆🏼":"1f486-1f3fc","💆🏽":"1f486-1f3fd","💆🏾":"1f486-1f3fe","💆🏿":"1f486-1f3ff","💇🏻":"1f487-1f3fb","💇🏼":"1f487-1f3fc","💇🏽":"1f487-1f3fd","💇🏾":"1f487-1f3fe","💇🏿":"1f487-1f3ff","🚶🏻":"1f6b6-1f3fb","🚶🏼":"1f6b6-1f3fc","🚶🏽":"1f6b6-1f3fd","🚶🏾":"1f6b6-1f3fe","🚶🏿":"1f6b6-1f3ff","🧍🏻":"1f9cd-1f3fb","🧍🏼":"1f9cd-1f3fc","🧍🏽":"1f9cd-1f3fd","🧍🏾":"1f9cd-1f3fe","🧍🏿":"1f9cd-1f3ff","🧎🏻":"1f9ce-1f3fb","🧎🏼":"1f9ce-1f3fc","🧎🏽":"1f9ce-1f3fd","🧎🏾":"1f9ce-1f3fe","🧎🏿":"1f9ce-1f3ff","🏃🏻":"1f3c3-1f3fb","🏃🏼":"1f3c3-1f3fc","🏃🏽":"1f3c3-1f3fd","🏃🏾":"1f3c3-1f3fe","🏃🏿":"1f3c3-1f3ff","💃🏻":"1f483-1f3fb","💃🏼":"1f483-1f3fc","💃🏽":"1f483-1f3fd","💃🏾":"1f483-1f3fe","💃🏿":"1f483-1f3ff","🕺🏻":"1f57a-1f3fb","🕺🏼":"1f57a-1f3fc","🕺🏽":"1f57a-1f3fd","🕺🏾":"1f57a-1f3fe","🕺🏿":"1f57a-1f3ff","🕴️":"1f574","🕴🏻":"1f574-1f3fb","🕴🏼":"1f574-1f3fc","🕴🏽":"1f574-1f3fd","🕴🏾":"1f574-1f3fe","🕴🏿":"1f574-1f3ff","🧖🏻":"1f9d6-1f3fb","🧖🏼":"1f9d6-1f3fc","🧖🏽":"1f9d6-1f3fd","🧖🏾":"1f9d6-1f3fe","🧖🏿":"1f9d6-1f3ff","🧗🏻":"1f9d7-1f3fb","🧗🏼":"1f9d7-1f3fc","🧗🏽":"1f9d7-1f3fd","🧗🏾":"1f9d7-1f3fe","🧗🏿":"1f9d7-1f3ff","🏇🏻":"1f3c7-1f3fb","🏇🏼":"1f3c7-1f3fc","🏇🏽":"1f3c7-1f3fd","🏇🏾":"1f3c7-1f3fe","🏇🏿":"1f3c7-1f3ff","⛷️":"26f7","🏂🏻":"1f3c2-1f3fb","🏂🏼":"1f3c2-1f3fc","🏂🏽":"1f3c2-1f3fd","🏂🏾":"1f3c2-1f3fe","🏂🏿":"1f3c2-1f3ff","🏌️":"1f3cc","🏌🏻":"1f3cc-1f3fb","🏌🏼":"1f3cc-1f3fc","🏌🏽":"1f3cc-1f3fd","🏌🏾":"1f3cc-1f3fe","🏌🏿":"1f3cc-1f3ff","🏄🏻":"1f3c4-1f3fb","🏄🏼":"1f3c4-1f3fc","🏄🏽":"1f3c4-1f3fd","🏄🏾":"1f3c4-1f3fe","🏄🏿":"1f3c4-1f3ff","🚣🏻":"1f6a3-1f3fb","🚣🏼":"1f6a3-1f3fc","🚣🏽":"1f6a3-1f3fd","🚣🏾":"1f6a3-1f3fe","🚣🏿":"1f6a3-1f3ff","🏊🏻":"1f3ca-1f3fb","🏊🏼":"1f3ca-1f3fc","🏊🏽":"1f3ca-1f3fd","🏊🏾":"1f3ca-1f3fe","🏊🏿":"1f3ca-1f3ff","⛹️":"26f9","⛹🏻":"26f9-1f3fb","⛹🏼":"26f9-1f3fc","⛹🏽":"26f9-1f3fd","⛹🏾":"26f9-1f3fe","⛹🏿":"26f9-1f3ff","🏋️":"1f3cb","🏋🏻":"1f3cb-1f3fb","🏋🏼":"1f3cb-1f3fc","🏋🏽":"1f3cb-1f3fd","🏋🏾":"1f3cb-1f3fe","🏋🏿":"1f3cb-1f3ff","🚴🏻":"1f6b4-1f3fb","🚴🏼":"1f6b4-1f3fc","🚴🏽":"1f6b4-1f3fd","🚴🏾":"1f6b4-1f3fe","🚴🏿":"1f6b4-1f3ff","🚵🏻":"1f6b5-1f3fb","🚵🏼":"1f6b5-1f3fc","🚵🏽":"1f6b5-1f3fd","🚵🏾":"1f6b5-1f3fe","🚵🏿":"1f6b5-1f3ff","🤸🏻":"1f938-1f3fb","🤸🏼":"1f938-1f3fc","🤸🏽":"1f938-1f3fd","🤸🏾":"1f938-1f3fe","🤸🏿":"1f938-1f3ff","🤽🏻":"1f93d-1f3fb","🤽🏼":"1f93d-1f3fc","🤽🏽":"1f93d-1f3fd","🤽🏾":"1f93d-1f3fe","🤽🏿":"1f93d-1f3ff","🤾🏻":"1f93e-1f3fb","🤾🏼":"1f93e-1f3fc","🤾🏽":"1f93e-1f3fd","🤾🏾":"1f93e-1f3fe","🤾🏿":"1f93e-1f3ff","🤹🏻":"1f939-1f3fb","🤹🏼":"1f939-1f3fc","🤹🏽":"1f939-1f3fd","🤹🏾":"1f939-1f3fe","🤹🏿":"1f939-1f3ff","🧘🏻":"1f9d8-1f3fb","🧘🏼":"1f9d8-1f3fc","🧘🏽":"1f9d8-1f3fd","🧘🏾":"1f9d8-1f3fe","🧘🏿":"1f9d8-1f3ff","🛀🏻":"1f6c0-1f3fb","🛀🏼":"1f6c0-1f3fc","🛀🏽":"1f6c0-1f3fd","🛀🏾":"1f6c0-1f3fe","🛀🏿":"1f6c0-1f3ff","🛌🏻":"1f6cc-1f3fb","🛌🏼":"1f6cc-1f3fc","🛌🏽":"1f6cc-1f3fd","🛌🏾":"1f6cc-1f3fe","🛌🏿":"1f6cc-1f3ff","👭🏻":"1f46d-1f3fb","👭🏼":"1f46d-1f3fc","👭🏽":"1f46d-1f3fd","👭🏾":"1f46d-1f3fe","👭🏿":"1f46d-1f3ff","👫🏻":"1f46b-1f3fb","👫🏼":"1f46b-1f3fc","👫🏽":"1f46b-1f3fd","👫🏾":"1f46b-1f3fe","👫🏿":"1f46b-1f3ff","👬🏻":"1f46c-1f3fb","👬🏼":"1f46c-1f3fc","👬🏽":"1f46c-1f3fd","👬🏾":"1f46c-1f3fe","👬🏿":"1f46c-1f3ff","💏🏻":"1f48f-1f3fb","💏🏼":"1f48f-1f3fc","💏🏽":"1f48f-1f3fd","💏🏾":"1f48f-1f3fe","💏🏿":"1f48f-1f3ff","💑🏻":"1f491-1f3fb","💑🏼":"1f491-1f3fc","💑🏽":"1f491-1f3fd","💑🏾":"1f491-1f3fe","💑🏿":"1f491-1f3ff","🗣️":"1f5e3","🐿️":"1f43f","🕊️":"1f54a","🕷️":"1f577","🕸️":"1f578","🏵️":"1f3f5","☘️":"2618","🌶️":"1f336","🍽️":"1f37d","🗺️":"1f5fa","🏔️":"1f3d4","⛰️":"26f0","🏕️":"1f3d5","🏖️":"1f3d6","🏜️":"1f3dc","🏝️":"1f3dd","🏞️":"1f3de","🏟️":"1f3df","🏛️":"1f3db","🏗️":"1f3d7","🏘️":"1f3d8","🏚️":"1f3da","⛩️":"26e9","🏙️":"1f3d9","♨️":"2668","🏎️":"1f3ce","🏍️":"1f3cd","🛣️":"1f6e3","🛤️":"1f6e4","🛢️":"1f6e2","🛳️":"1f6f3","⛴️":"26f4","🛥️":"1f6e5","✈️":"2708","🛩️":"1f6e9","🛰️":"1f6f0","🛎️":"1f6ce","⏱️":"23f1","⏲️":"23f2","🕰️":"1f570","🌡️":"1f321","☀️":"2600","☁️":"2601","⛈️":"26c8","🌤️":"1f324","🌥️":"1f325","🌦️":"1f326","🌧️":"1f327","🌨️":"1f328","🌩️":"1f329","🌪️":"1f32a","🌫️":"1f32b","🌬️":"1f32c","☂️":"2602","⛱️":"26f1","❄️":"2744","☃️":"2603","☄️":"2604","🎗️":"1f397","🎟️":"1f39f","🎖️":"1f396","⛸️":"26f8","🕹️":"1f579","♠️":"2660","♥️":"2665","♦️":"2666","♣️":"2663","♟️":"265f","🖼️":"1f5bc","🕶️":"1f576","🛍️":"1f6cd","⛑️":"26d1","🎙️":"1f399","🎚️":"1f39a","🎛️":"1f39b","☎️":"260e","🖥️":"1f5a5","🖨️":"1f5a8","⌨️":"2328","🖱️":"1f5b1","🖲️":"1f5b2","🎞️":"1f39e","📽️":"1f4fd","🕯️":"1f56f","🗞️":"1f5de","🏷️":"1f3f7","✉️":"2709","🗳️":"1f5f3","✏️":"270f","✒️":"2712","🖋️":"1f58b","🖊️":"1f58a","🖌️":"1f58c","🖍️":"1f58d","🗂️":"1f5c2","🗒️":"1f5d2","🗓️":"1f5d3","🖇️":"1f587","✂️":"2702","🗃️":"1f5c3","🗄️":"1f5c4","🗑️":"1f5d1","🗝️":"1f5dd","⛏️":"26cf","⚒️":"2692","🛠️":"1f6e0","🗡️":"1f5e1","⚔️":"2694","🛡️":"1f6e1","⚙️":"2699","🗜️":"1f5dc","⚖️":"2696","⛓️":"26d3","⚗️":"2697","🛏️":"1f6cf","🛋️":"1f6cb","⚰️":"26b0","⚱️":"26b1","⚠️":"26a0","☢️":"2622","☣️":"2623","⬆️":"2b06","↗️":"2197","➡️":"27a1","↘️":"2198","⬇️":"2b07","↙️":"2199","⬅️":"2b05","↖️":"2196","↕️":"2195","↔️":"2194","↩️":"21a9","↪️":"21aa","⤴️":"2934","⤵️":"2935","⚛️":"269b","🕉️":"1f549","✡️":"2721","☸️":"2638","☯️":"262f","✝️":"271d","☦️":"2626","☪️":"262a","☮️":"262e","▶️":"25b6","⏭️":"23ed","⏯️":"23ef","◀️":"25c0","⏮️":"23ee","⏸️":"23f8","⏹️":"23f9","⏺️":"23fa","⏏️":"23cf","♀️":"2640","♂️":"2642","⚧️":"26a7","✖️":"2716","♾️":"267e","‼️":"203c","⁉️":"2049","〰️":"3030","⚕️":"2695","♻️":"267b","⚜️":"269c","☑️":"2611","✔️":"2714","〽️":"303d","✳️":"2733","✴️":"2734","❇️":"2747","©️":"a9","®️":"ae","™️":"2122","#⃣":"23-20e3","*⃣":"2a-20e3","0⃣":"30-20e3","1⃣":"31-20e3","2⃣":"32-20e3","3⃣":"33-20e3","4⃣":"34-20e3","5⃣":"35-20e3","6⃣":"36-20e3","7⃣":"37-20e3","8⃣":"38-20e3","9⃣":"39-20e3","🅰️":"1f170","🅱️":"1f171","ℹ️":"2139","Ⓜ️":"24c2","🅾️":"1f17e","🅿️":"1f17f","🈂️":"1f202","🈷️":"1f237","㊗️":"3297","㊙️":"3299","◼️":"25fc","◻️":"25fb","▪️":"25aa","▫️":"25ab","🏳️":"1f3f3","🇦🇨":"1f1e6-1f1e8","🇦🇩":"1f1e6-1f1e9","🇦🇪":"1f1e6-1f1ea","🇦🇫":"1f1e6-1f1eb","🇦🇬":"1f1e6-1f1ec","🇦🇮":"1f1e6-1f1ee","🇦🇱":"1f1e6-1f1f1","🇦🇲":"1f1e6-1f1f2","🇦🇴":"1f1e6-1f1f4","🇦🇶":"1f1e6-1f1f6","🇦🇷":"1f1e6-1f1f7","🇦🇸":"1f1e6-1f1f8","🇦🇹":"1f1e6-1f1f9","🇦🇺":"1f1e6-1f1fa","🇦🇼":"1f1e6-1f1fc","🇦🇽":"1f1e6-1f1fd","🇦🇿":"1f1e6-1f1ff","🇧🇦":"1f1e7-1f1e6","🇧🇧":"1f1e7-1f1e7","🇧🇩":"1f1e7-1f1e9","🇧🇪":"1f1e7-1f1ea","🇧🇫":"1f1e7-1f1eb","🇧🇬":"1f1e7-1f1ec","🇧🇭":"1f1e7-1f1ed","🇧🇮":"1f1e7-1f1ee","🇧🇯":"1f1e7-1f1ef","🇧🇱":"1f1e7-1f1f1","🇧🇲":"1f1e7-1f1f2","🇧🇳":"1f1e7-1f1f3","🇧🇴":"1f1e7-1f1f4","🇧🇶":"1f1e7-1f1f6","🇧🇷":"1f1e7-1f1f7","🇧🇸":"1f1e7-1f1f8","🇧🇹":"1f1e7-1f1f9","🇧🇻":"1f1e7-1f1fb","🇧🇼":"1f1e7-1f1fc","🇧🇾":"1f1e7-1f1fe","🇧🇿":"1f1e7-1f1ff","🇨🇦":"1f1e8-1f1e6","🇨🇨":"1f1e8-1f1e8","🇨🇩":"1f1e8-1f1e9","🇨🇫":"1f1e8-1f1eb","🇨🇬":"1f1e8-1f1ec","🇨🇭":"1f1e8-1f1ed","🇨🇮":"1f1e8-1f1ee","🇨🇰":"1f1e8-1f1f0","🇨🇱":"1f1e8-1f1f1","🇨🇲":"1f1e8-1f1f2","🇨🇳":"1f1e8-1f1f3","🇨🇴":"1f1e8-1f1f4","🇨🇵":"1f1e8-1f1f5","🇨🇷":"1f1e8-1f1f7","🇨🇺":"1f1e8-1f1fa","🇨🇻":"1f1e8-1f1fb","🇨🇼":"1f1e8-1f1fc","🇨🇽":"1f1e8-1f1fd","🇨🇾":"1f1e8-1f1fe","🇨🇿":"1f1e8-1f1ff","🇩🇪":"1f1e9-1f1ea","🇩🇬":"1f1e9-1f1ec","🇩🇯":"1f1e9-1f1ef","🇩🇰":"1f1e9-1f1f0","🇩🇲":"1f1e9-1f1f2","🇩🇴":"1f1e9-1f1f4","🇩🇿":"1f1e9-1f1ff","🇪🇦":"1f1ea-1f1e6","🇪🇨":"1f1ea-1f1e8","🇪🇪":"1f1ea-1f1ea","🇪🇬":"1f1ea-1f1ec","🇪🇭":"1f1ea-1f1ed","🇪🇷":"1f1ea-1f1f7","🇪🇸":"1f1ea-1f1f8","🇪🇹":"1f1ea-1f1f9","🇪🇺":"1f1ea-1f1fa","🇫🇮":"1f1eb-1f1ee","🇫🇯":"1f1eb-1f1ef","🇫🇰":"1f1eb-1f1f0","🇫🇲":"1f1eb-1f1f2","🇫🇴":"1f1eb-1f1f4","🇫🇷":"1f1eb-1f1f7","🇬🇦":"1f1ec-1f1e6","🇬🇧":"1f1ec-1f1e7","🇬🇩":"1f1ec-1f1e9","🇬🇪":"1f1ec-1f1ea","🇬🇫":"1f1ec-1f1eb","🇬🇬":"1f1ec-1f1ec","🇬🇭":"1f1ec-1f1ed","🇬🇮":"1f1ec-1f1ee","🇬🇱":"1f1ec-1f1f1","🇬🇲":"1f1ec-1f1f2","🇬🇳":"1f1ec-1f1f3","🇬🇵":"1f1ec-1f1f5","🇬🇶":"1f1ec-1f1f6","🇬🇷":"1f1ec-1f1f7","🇬🇸":"1f1ec-1f1f8","🇬🇹":"1f1ec-1f1f9","🇬🇺":"1f1ec-1f1fa","🇬🇼":"1f1ec-1f1fc","🇬🇾":"1f1ec-1f1fe","🇭🇰":"1f1ed-1f1f0","🇭🇲":"1f1ed-1f1f2","🇭🇳":"1f1ed-1f1f3","🇭🇷":"1f1ed-1f1f7","🇭🇹":"1f1ed-1f1f9","🇭🇺":"1f1ed-1f1fa","🇮🇨":"1f1ee-1f1e8","🇮🇩":"1f1ee-1f1e9","🇮🇪":"1f1ee-1f1ea","🇮🇱":"1f1ee-1f1f1","🇮🇲":"1f1ee-1f1f2","🇮🇳":"1f1ee-1f1f3","🇮🇴":"1f1ee-1f1f4","🇮🇶":"1f1ee-1f1f6","🇮🇷":"1f1ee-1f1f7","🇮🇸":"1f1ee-1f1f8","🇮🇹":"1f1ee-1f1f9","🇯🇪":"1f1ef-1f1ea","🇯🇲":"1f1ef-1f1f2","🇯🇴":"1f1ef-1f1f4","🇯🇵":"1f1ef-1f1f5","🇰🇪":"1f1f0-1f1ea","🇰🇬":"1f1f0-1f1ec","🇰🇭":"1f1f0-1f1ed","🇰🇮":"1f1f0-1f1ee","🇰🇲":"1f1f0-1f1f2","🇰🇳":"1f1f0-1f1f3","🇰🇵":"1f1f0-1f1f5","🇰🇷":"1f1f0-1f1f7","🇰🇼":"1f1f0-1f1fc","🇰🇾":"1f1f0-1f1fe","🇰🇿":"1f1f0-1f1ff","🇱🇦":"1f1f1-1f1e6","🇱🇧":"1f1f1-1f1e7","🇱🇨":"1f1f1-1f1e8","🇱🇮":"1f1f1-1f1ee","🇱🇰":"1f1f1-1f1f0","🇱🇷":"1f1f1-1f1f7","🇱🇸":"1f1f1-1f1f8","🇱🇹":"1f1f1-1f1f9","🇱🇺":"1f1f1-1f1fa","🇱🇻":"1f1f1-1f1fb","🇱🇾":"1f1f1-1f1fe","🇲🇦":"1f1f2-1f1e6","🇲🇨":"1f1f2-1f1e8","🇲🇩":"1f1f2-1f1e9","🇲🇪":"1f1f2-1f1ea","🇲🇫":"1f1f2-1f1eb","🇲🇬":"1f1f2-1f1ec","🇲🇭":"1f1f2-1f1ed","🇲🇰":"1f1f2-1f1f0","🇲🇱":"1f1f2-1f1f1","🇲🇲":"1f1f2-1f1f2","🇲🇳":"1f1f2-1f1f3","🇲🇴":"1f1f2-1f1f4","🇲🇵":"1f1f2-1f1f5","🇲🇶":"1f1f2-1f1f6","🇲🇷":"1f1f2-1f1f7","🇲🇸":"1f1f2-1f1f8","🇲🇹":"1f1f2-1f1f9","🇲🇺":"1f1f2-1f1fa","🇲🇻":"1f1f2-1f1fb","🇲🇼":"1f1f2-1f1fc","🇲🇽":"1f1f2-1f1fd","🇲🇾":"1f1f2-1f1fe","🇲🇿":"1f1f2-1f1ff","🇳🇦":"1f1f3-1f1e6","🇳🇨":"1f1f3-1f1e8","🇳🇪":"1f1f3-1f1ea","🇳🇫":"1f1f3-1f1eb","🇳🇬":"1f1f3-1f1ec","🇳🇮":"1f1f3-1f1ee","🇳🇱":"1f1f3-1f1f1","🇳🇴":"1f1f3-1f1f4","🇳🇵":"1f1f3-1f1f5","🇳🇷":"1f1f3-1f1f7","🇳🇺":"1f1f3-1f1fa","🇳🇿":"1f1f3-1f1ff","🇴🇲":"1f1f4-1f1f2","🇵🇦":"1f1f5-1f1e6","🇵🇪":"1f1f5-1f1ea","🇵🇫":"1f1f5-1f1eb","🇵🇬":"1f1f5-1f1ec","🇵🇭":"1f1f5-1f1ed","🇵🇰":"1f1f5-1f1f0","🇵🇱":"1f1f5-1f1f1","🇵🇲":"1f1f5-1f1f2","🇵🇳":"1f1f5-1f1f3","🇵🇷":"1f1f5-1f1f7","🇵🇸":"1f1f5-1f1f8","🇵🇹":"1f1f5-1f1f9","🇵🇼":"1f1f5-1f1fc","🇵🇾":"1f1f5-1f1fe","🇶🇦":"1f1f6-1f1e6","🇷🇪":"1f1f7-1f1ea","🇷🇴":"1f1f7-1f1f4","🇷🇸":"1f1f7-1f1f8","🇷🇺":"1f1f7-1f1fa","🇷🇼":"1f1f7-1f1fc","🇸🇦":"1f1f8-1f1e6","🇸🇧":"1f1f8-1f1e7","🇸🇨":"1f1f8-1f1e8","🇸🇩":"1f1f8-1f1e9","🇸🇪":"1f1f8-1f1ea","🇸🇬":"1f1f8-1f1ec","🇸🇭":"1f1f8-1f1ed","🇸🇮":"1f1f8-1f1ee","🇸🇯":"1f1f8-1f1ef","🇸🇰":"1f1f8-1f1f0","🇸🇱":"1f1f8-1f1f1","🇸🇲":"1f1f8-1f1f2","🇸🇳":"1f1f8-1f1f3","🇸🇴":"1f1f8-1f1f4","🇸🇷":"1f1f8-1f1f7","🇸🇸":"1f1f8-1f1f8","🇸🇹":"1f1f8-1f1f9","🇸🇻":"1f1f8-1f1fb","🇸🇽":"1f1f8-1f1fd","🇸🇾":"1f1f8-1f1fe","🇸🇿":"1f1f8-1f1ff","🇹🇦":"1f1f9-1f1e6","🇹🇨":"1f1f9-1f1e8","🇹🇩":"1f1f9-1f1e9","🇹🇫":"1f1f9-1f1eb","🇹🇬":"1f1f9-1f1ec","🇹🇭":"1f1f9-1f1ed","🇹🇯":"1f1f9-1f1ef","🇹🇰":"1f1f9-1f1f0","🇹🇱":"1f1f9-1f1f1","🇹🇲":"1f1f9-1f1f2","🇹🇳":"1f1f9-1f1f3","🇹🇴":"1f1f9-1f1f4","🇹🇷":"1f1f9-1f1f7","🇹🇹":"1f1f9-1f1f9","🇹🇻":"1f1f9-1f1fb","🇹🇼":"1f1f9-1f1fc","🇹🇿":"1f1f9-1f1ff","🇺🇦":"1f1fa-1f1e6","🇺🇬":"1f1fa-1f1ec","🇺🇲":"1f1fa-1f1f2","🇺🇳":"1f1fa-1f1f3","🇺🇸":"1f1fa-1f1f8","🇺🇾":"1f1fa-1f1fe","🇺🇿":"1f1fa-1f1ff","🇻🇦":"1f1fb-1f1e6","🇻🇨":"1f1fb-1f1e8","🇻🇪":"1f1fb-1f1ea","🇻🇬":"1f1fb-1f1ec","🇻🇮":"1f1fb-1f1ee","🇻🇳":"1f1fb-1f1f3","🇻🇺":"1f1fb-1f1fa","🇼🇫":"1f1fc-1f1eb","🇼🇸":"1f1fc-1f1f8","🇽🇰":"1f1fd-1f1f0","🇾🇪":"1f1fe-1f1ea","🇾🇹":"1f1fe-1f1f9","🇿🇦":"1f1ff-1f1e6","🇿🇲":"1f1ff-1f1f2","🇿🇼":"1f1ff-1f1fc","😶‍🌫":"1f636-200d-1f32b-fe0f","😮‍💨":"1f62e-200d-1f4a8","😵‍💫":"1f635-200d-1f4ab","❤‍🔥":"2764-fe0f-200d-1f525","❤‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨":"1f441-200d-1f5e8","🧔‍♂":"1f9d4-200d-2642-fe0f","🧔‍♀":"1f9d4-200d-2640-fe0f","👨‍🦰":"1f468-200d-1f9b0","👨‍🦱":"1f468-200d-1f9b1","👨‍🦳":"1f468-200d-1f9b3","👨‍🦲":"1f468-200d-1f9b2","👩‍🦰":"1f469-200d-1f9b0","🧑‍🦰":"1f9d1-200d-1f9b0","👩‍🦱":"1f469-200d-1f9b1","🧑‍🦱":"1f9d1-200d-1f9b1","👩‍🦳":"1f469-200d-1f9b3","🧑‍🦳":"1f9d1-200d-1f9b3","👩‍🦲":"1f469-200d-1f9b2","🧑‍🦲":"1f9d1-200d-1f9b2","👱‍♀":"1f471-200d-2640-fe0f","👱‍♂":"1f471-200d-2642-fe0f","🙍‍♂":"1f64d-200d-2642-fe0f","🙍‍♀":"1f64d-200d-2640-fe0f","🙎‍♂":"1f64e-200d-2642-fe0f","🙎‍♀":"1f64e-200d-2640-fe0f","🙅‍♂":"1f645-200d-2642-fe0f","🙅‍♀":"1f645-200d-2640-fe0f","🙆‍♂":"1f646-200d-2642-fe0f","🙆‍♀":"1f646-200d-2640-fe0f","💁‍♂":"1f481-200d-2642-fe0f","💁‍♀":"1f481-200d-2640-fe0f","🙋‍♂":"1f64b-200d-2642-fe0f","🙋‍♀":"1f64b-200d-2640-fe0f","🧏‍♂":"1f9cf-200d-2642-fe0f","🧏‍♀":"1f9cf-200d-2640-fe0f","🙇‍♂":"1f647-200d-2642-fe0f","🙇‍♀":"1f647-200d-2640-fe0f","🤦‍♂":"1f926-200d-2642-fe0f","🤦‍♀":"1f926-200d-2640-fe0f","🤷‍♂":"1f937-200d-2642-fe0f","🤷‍♀":"1f937-200d-2640-fe0f","🧑‍⚕":"1f9d1-200d-2695-fe0f","👨‍⚕":"1f468-200d-2695-fe0f","👩‍⚕":"1f469-200d-2695-fe0f","🧑‍🎓":"1f9d1-200d-1f393","👨‍🎓":"1f468-200d-1f393","👩‍🎓":"1f469-200d-1f393","🧑‍🏫":"1f9d1-200d-1f3eb","👨‍🏫":"1f468-200d-1f3eb","👩‍🏫":"1f469-200d-1f3eb","🧑‍⚖":"1f9d1-200d-2696-fe0f","👨‍⚖":"1f468-200d-2696-fe0f","👩‍⚖":"1f469-200d-2696-fe0f","🧑‍🌾":"1f9d1-200d-1f33e","👨‍🌾":"1f468-200d-1f33e","👩‍🌾":"1f469-200d-1f33e","🧑‍🍳":"1f9d1-200d-1f373","👨‍🍳":"1f468-200d-1f373","👩‍🍳":"1f469-200d-1f373","🧑‍🔧":"1f9d1-200d-1f527","👨‍🔧":"1f468-200d-1f527","👩‍🔧":"1f469-200d-1f527","🧑‍🏭":"1f9d1-200d-1f3ed","👨‍🏭":"1f468-200d-1f3ed","👩‍🏭":"1f469-200d-1f3ed","🧑‍💼":"1f9d1-200d-1f4bc","👨‍💼":"1f468-200d-1f4bc","👩‍💼":"1f469-200d-1f4bc","🧑‍🔬":"1f9d1-200d-1f52c","👨‍🔬":"1f468-200d-1f52c","👩‍🔬":"1f469-200d-1f52c","🧑‍💻":"1f9d1-200d-1f4bb","👨‍💻":"1f468-200d-1f4bb","👩‍💻":"1f469-200d-1f4bb","🧑‍🎤":"1f9d1-200d-1f3a4","👨‍🎤":"1f468-200d-1f3a4","👩‍🎤":"1f469-200d-1f3a4","🧑‍🎨":"1f9d1-200d-1f3a8","👨‍🎨":"1f468-200d-1f3a8","👩‍🎨":"1f469-200d-1f3a8","🧑‍✈":"1f9d1-200d-2708-fe0f","👨‍✈":"1f468-200d-2708-fe0f","👩‍✈":"1f469-200d-2708-fe0f","🧑‍🚀":"1f9d1-200d-1f680","👨‍🚀":"1f468-200d-1f680","👩‍🚀":"1f469-200d-1f680","🧑‍🚒":"1f9d1-200d-1f692","👨‍🚒":"1f468-200d-1f692","👩‍🚒":"1f469-200d-1f692","👮‍♂":"1f46e-200d-2642-fe0f","👮‍♀":"1f46e-200d-2640-fe0f","🕵‍♂":"1f575-fe0f-200d-2642-fe0f","🕵‍♀":"1f575-fe0f-200d-2640-fe0f","💂‍♂":"1f482-200d-2642-fe0f","💂‍♀":"1f482-200d-2640-fe0f","👷‍♂":"1f477-200d-2642-fe0f","👷‍♀":"1f477-200d-2640-fe0f","👳‍♂":"1f473-200d-2642-fe0f","👳‍♀":"1f473-200d-2640-fe0f","🤵‍♂":"1f935-200d-2642-fe0f","🤵‍♀":"1f935-200d-2640-fe0f","👰‍♂":"1f470-200d-2642-fe0f","👰‍♀":"1f470-200d-2640-fe0f","👩‍🍼":"1f469-200d-1f37c","👨‍🍼":"1f468-200d-1f37c","🧑‍🍼":"1f9d1-200d-1f37c","🧑‍🎄":"1f9d1-200d-1f384","🦸‍♂":"1f9b8-200d-2642-fe0f","🦸‍♀":"1f9b8-200d-2640-fe0f","🦹‍♂":"1f9b9-200d-2642-fe0f","🦹‍♀":"1f9b9-200d-2640-fe0f","🧙‍♂":"1f9d9-200d-2642-fe0f","🧙‍♀":"1f9d9-200d-2640-fe0f","🧚‍♂":"1f9da-200d-2642-fe0f","🧚‍♀":"1f9da-200d-2640-fe0f","🧛‍♂":"1f9db-200d-2642-fe0f","🧛‍♀":"1f9db-200d-2640-fe0f","🧜‍♂":"1f9dc-200d-2642-fe0f","🧜‍♀":"1f9dc-200d-2640-fe0f","🧝‍♂":"1f9dd-200d-2642-fe0f","🧝‍♀":"1f9dd-200d-2640-fe0f","🧞‍♂":"1f9de-200d-2642-fe0f","🧞‍♀":"1f9de-200d-2640-fe0f","🧟‍♂":"1f9df-200d-2642-fe0f","🧟‍♀":"1f9df-200d-2640-fe0f","💆‍♂":"1f486-200d-2642-fe0f","💆‍♀":"1f486-200d-2640-fe0f","💇‍♂":"1f487-200d-2642-fe0f","💇‍♀":"1f487-200d-2640-fe0f","🚶‍♂":"1f6b6-200d-2642-fe0f","🚶‍♀":"1f6b6-200d-2640-fe0f","🧍‍♂":"1f9cd-200d-2642-fe0f","🧍‍♀":"1f9cd-200d-2640-fe0f","🧎‍♂":"1f9ce-200d-2642-fe0f","🧎‍♀":"1f9ce-200d-2640-fe0f","🧑‍🦯":"1f9d1-200d-1f9af","👨‍🦯":"1f468-200d-1f9af","👩‍🦯":"1f469-200d-1f9af","🧑‍🦼":"1f9d1-200d-1f9bc","👨‍🦼":"1f468-200d-1f9bc","👩‍🦼":"1f469-200d-1f9bc","🧑‍🦽":"1f9d1-200d-1f9bd","👨‍🦽":"1f468-200d-1f9bd","👩‍🦽":"1f469-200d-1f9bd","🏃‍♂":"1f3c3-200d-2642-fe0f","🏃‍♀":"1f3c3-200d-2640-fe0f","👯‍♂":"1f46f-200d-2642-fe0f","👯‍♀":"1f46f-200d-2640-fe0f","🧖‍♂":"1f9d6-200d-2642-fe0f","🧖‍♀":"1f9d6-200d-2640-fe0f","🧗‍♂":"1f9d7-200d-2642-fe0f","🧗‍♀":"1f9d7-200d-2640-fe0f","🏌‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏄‍♂":"1f3c4-200d-2642-fe0f","🏄‍♀":"1f3c4-200d-2640-fe0f","🚣‍♂":"1f6a3-200d-2642-fe0f","🚣‍♀":"1f6a3-200d-2640-fe0f","🏊‍♂":"1f3ca-200d-2642-fe0f","🏊‍♀":"1f3ca-200d-2640-fe0f","⛹‍♂":"26f9-fe0f-200d-2642-fe0f","⛹‍♀":"26f9-fe0f-200d-2640-fe0f","🏋‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋‍♀":"1f3cb-fe0f-200d-2640-fe0f","🚴‍♂":"1f6b4-200d-2642-fe0f","🚴‍♀":"1f6b4-200d-2640-fe0f","🚵‍♂":"1f6b5-200d-2642-fe0f","🚵‍♀":"1f6b5-200d-2640-fe0f","🤸‍♂":"1f938-200d-2642-fe0f","🤸‍♀":"1f938-200d-2640-fe0f","🤼‍♂":"1f93c-200d-2642-fe0f","🤼‍♀":"1f93c-200d-2640-fe0f","🤽‍♂":"1f93d-200d-2642-fe0f","🤽‍♀":"1f93d-200d-2640-fe0f","🤾‍♂":"1f93e-200d-2642-fe0f","🤾‍♀":"1f93e-200d-2640-fe0f","🤹‍♂":"1f939-200d-2642-fe0f","🤹‍♀":"1f939-200d-2640-fe0f","🧘‍♂":"1f9d8-200d-2642-fe0f","🧘‍♀":"1f9d8-200d-2640-fe0f","👨‍👦":"1f468-200d-1f466","👨‍👧":"1f468-200d-1f467","👩‍👦":"1f469-200d-1f466","👩‍👧":"1f469-200d-1f467","🐕‍🦺":"1f415-200d-1f9ba","🐈‍⬛":"1f408-200d-2b1b","🐻‍❄":"1f43b-200d-2744-fe0f","#️⃣":"23-20e3","*️⃣":"2a-20e3","0️⃣":"30-20e3","1️⃣":"31-20e3","2️⃣":"32-20e3","3️⃣":"33-20e3","4️⃣":"34-20e3","5️⃣":"35-20e3","6️⃣":"36-20e3","7️⃣":"37-20e3","8️⃣":"38-20e3","9️⃣":"39-20e3","🏳‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠":"1f3f4-200d-2620-fe0f","😶‍🌫️":"1f636-200d-1f32b-fe0f","❤️‍🔥":"2764-fe0f-200d-1f525","❤️‍🩹":"2764-fe0f-200d-1fa79","👁‍🗨️":"1f441-200d-1f5e8","👁️‍🗨":"1f441-200d-1f5e8","🧔‍♂️":"1f9d4-200d-2642-fe0f","🧔🏻‍♂":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂":"1f9d4-1f3ff-200d-2642-fe0f","🧔‍♀️":"1f9d4-200d-2640-fe0f","🧔🏻‍♀":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀":"1f9d4-1f3ff-200d-2640-fe0f","👨🏻‍🦰":"1f468-1f3fb-200d-1f9b0","👨🏼‍🦰":"1f468-1f3fc-200d-1f9b0","👨🏽‍🦰":"1f468-1f3fd-200d-1f9b0","👨🏾‍🦰":"1f468-1f3fe-200d-1f9b0","👨🏿‍🦰":"1f468-1f3ff-200d-1f9b0","👨🏻‍🦱":"1f468-1f3fb-200d-1f9b1","👨🏼‍🦱":"1f468-1f3fc-200d-1f9b1","👨🏽‍🦱":"1f468-1f3fd-200d-1f9b1","👨🏾‍🦱":"1f468-1f3fe-200d-1f9b1","👨🏿‍🦱":"1f468-1f3ff-200d-1f9b1","👨🏻‍🦳":"1f468-1f3fb-200d-1f9b3","👨🏼‍🦳":"1f468-1f3fc-200d-1f9b3","👨🏽‍🦳":"1f468-1f3fd-200d-1f9b3","👨🏾‍🦳":"1f468-1f3fe-200d-1f9b3","👨🏿‍🦳":"1f468-1f3ff-200d-1f9b3","👨🏻‍🦲":"1f468-1f3fb-200d-1f9b2","👨🏼‍🦲":"1f468-1f3fc-200d-1f9b2","👨🏽‍🦲":"1f468-1f3fd-200d-1f9b2","👨🏾‍🦲":"1f468-1f3fe-200d-1f9b2","👨🏿‍🦲":"1f468-1f3ff-200d-1f9b2","👩🏻‍🦰":"1f469-1f3fb-200d-1f9b0","👩🏼‍🦰":"1f469-1f3fc-200d-1f9b0","👩🏽‍🦰":"1f469-1f3fd-200d-1f9b0","👩🏾‍🦰":"1f469-1f3fe-200d-1f9b0","👩🏿‍🦰":"1f469-1f3ff-200d-1f9b0","🧑🏻‍🦰":"1f9d1-1f3fb-200d-1f9b0","🧑🏼‍🦰":"1f9d1-1f3fc-200d-1f9b0","🧑🏽‍🦰":"1f9d1-1f3fd-200d-1f9b0","🧑🏾‍🦰":"1f9d1-1f3fe-200d-1f9b0","🧑🏿‍🦰":"1f9d1-1f3ff-200d-1f9b0","👩🏻‍🦱":"1f469-1f3fb-200d-1f9b1","👩🏼‍🦱":"1f469-1f3fc-200d-1f9b1","👩🏽‍🦱":"1f469-1f3fd-200d-1f9b1","👩🏾‍🦱":"1f469-1f3fe-200d-1f9b1","👩🏿‍🦱":"1f469-1f3ff-200d-1f9b1","🧑🏻‍🦱":"1f9d1-1f3fb-200d-1f9b1","🧑🏼‍🦱":"1f9d1-1f3fc-200d-1f9b1","🧑🏽‍🦱":"1f9d1-1f3fd-200d-1f9b1","🧑🏾‍🦱":"1f9d1-1f3fe-200d-1f9b1","🧑🏿‍🦱":"1f9d1-1f3ff-200d-1f9b1","👩🏻‍🦳":"1f469-1f3fb-200d-1f9b3","👩🏼‍🦳":"1f469-1f3fc-200d-1f9b3","👩🏽‍🦳":"1f469-1f3fd-200d-1f9b3","👩🏾‍🦳":"1f469-1f3fe-200d-1f9b3","👩🏿‍🦳":"1f469-1f3ff-200d-1f9b3","🧑🏻‍🦳":"1f9d1-1f3fb-200d-1f9b3","🧑🏼‍🦳":"1f9d1-1f3fc-200d-1f9b3","🧑🏽‍🦳":"1f9d1-1f3fd-200d-1f9b3","🧑🏾‍🦳":"1f9d1-1f3fe-200d-1f9b3","🧑🏿‍🦳":"1f9d1-1f3ff-200d-1f9b3","👩🏻‍🦲":"1f469-1f3fb-200d-1f9b2","👩🏼‍🦲":"1f469-1f3fc-200d-1f9b2","👩🏽‍🦲":"1f469-1f3fd-200d-1f9b2","👩🏾‍🦲":"1f469-1f3fe-200d-1f9b2","👩🏿‍🦲":"1f469-1f3ff-200d-1f9b2","🧑🏻‍🦲":"1f9d1-1f3fb-200d-1f9b2","🧑🏼‍🦲":"1f9d1-1f3fc-200d-1f9b2","🧑🏽‍🦲":"1f9d1-1f3fd-200d-1f9b2","🧑🏾‍🦲":"1f9d1-1f3fe-200d-1f9b2","🧑🏿‍🦲":"1f9d1-1f3ff-200d-1f9b2","👱‍♀️":"1f471-200d-2640-fe0f","👱🏻‍♀":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀":"1f471-1f3ff-200d-2640-fe0f","👱‍♂️":"1f471-200d-2642-fe0f","👱🏻‍♂":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂":"1f471-1f3ff-200d-2642-fe0f","🙍‍♂️":"1f64d-200d-2642-fe0f","🙍🏻‍♂":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂":"1f64d-1f3ff-200d-2642-fe0f","🙍‍♀️":"1f64d-200d-2640-fe0f","🙍🏻‍♀":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀":"1f64d-1f3ff-200d-2640-fe0f","🙎‍♂️":"1f64e-200d-2642-fe0f","🙎🏻‍♂":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂":"1f64e-1f3ff-200d-2642-fe0f","🙎‍♀️":"1f64e-200d-2640-fe0f","🙎🏻‍♀":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀":"1f64e-1f3ff-200d-2640-fe0f","🙅‍♂️":"1f645-200d-2642-fe0f","🙅🏻‍♂":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂":"1f645-1f3ff-200d-2642-fe0f","🙅‍♀️":"1f645-200d-2640-fe0f","🙅🏻‍♀":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀":"1f645-1f3ff-200d-2640-fe0f","🙆‍♂️":"1f646-200d-2642-fe0f","🙆🏻‍♂":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂":"1f646-1f3ff-200d-2642-fe0f","🙆‍♀️":"1f646-200d-2640-fe0f","🙆🏻‍♀":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀":"1f646-1f3ff-200d-2640-fe0f","💁‍♂️":"1f481-200d-2642-fe0f","💁🏻‍♂":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂":"1f481-1f3ff-200d-2642-fe0f","💁‍♀️":"1f481-200d-2640-fe0f","💁🏻‍♀":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀":"1f481-1f3ff-200d-2640-fe0f","🙋‍♂️":"1f64b-200d-2642-fe0f","🙋🏻‍♂":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂":"1f64b-1f3ff-200d-2642-fe0f","🙋‍♀️":"1f64b-200d-2640-fe0f","🙋🏻‍♀":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀":"1f64b-1f3ff-200d-2640-fe0f","🧏‍♂️":"1f9cf-200d-2642-fe0f","🧏🏻‍♂":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂":"1f9cf-1f3ff-200d-2642-fe0f","🧏‍♀️":"1f9cf-200d-2640-fe0f","🧏🏻‍♀":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀":"1f9cf-1f3ff-200d-2640-fe0f","🙇‍♂️":"1f647-200d-2642-fe0f","🙇🏻‍♂":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂":"1f647-1f3ff-200d-2642-fe0f","🙇‍♀️":"1f647-200d-2640-fe0f","🙇🏻‍♀":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀":"1f647-1f3ff-200d-2640-fe0f","🤦‍♂️":"1f926-200d-2642-fe0f","🤦🏻‍♂":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂":"1f926-1f3ff-200d-2642-fe0f","🤦‍♀️":"1f926-200d-2640-fe0f","🤦🏻‍♀":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀":"1f926-1f3ff-200d-2640-fe0f","🤷‍♂️":"1f937-200d-2642-fe0f","🤷🏻‍♂":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂":"1f937-1f3ff-200d-2642-fe0f","🤷‍♀️":"1f937-200d-2640-fe0f","🤷🏻‍♀":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀":"1f937-1f3ff-200d-2640-fe0f","🧑‍⚕️":"1f9d1-200d-2695-fe0f","🧑🏻‍⚕":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕":"1f9d1-1f3ff-200d-2695-fe0f","👨‍⚕️":"1f468-200d-2695-fe0f","👨🏻‍⚕":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕":"1f468-1f3ff-200d-2695-fe0f","👩‍⚕️":"1f469-200d-2695-fe0f","👩🏻‍⚕":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍🎓":"1f9d1-1f3fb-200d-1f393","🧑🏼‍🎓":"1f9d1-1f3fc-200d-1f393","🧑🏽‍🎓":"1f9d1-1f3fd-200d-1f393","🧑🏾‍🎓":"1f9d1-1f3fe-200d-1f393","🧑🏿‍🎓":"1f9d1-1f3ff-200d-1f393","👨🏻‍🎓":"1f468-1f3fb-200d-1f393","👨🏼‍🎓":"1f468-1f3fc-200d-1f393","👨🏽‍🎓":"1f468-1f3fd-200d-1f393","👨🏾‍🎓":"1f468-1f3fe-200d-1f393","👨🏿‍🎓":"1f468-1f3ff-200d-1f393","👩🏻‍🎓":"1f469-1f3fb-200d-1f393","👩🏼‍🎓":"1f469-1f3fc-200d-1f393","👩🏽‍🎓":"1f469-1f3fd-200d-1f393","👩🏾‍🎓":"1f469-1f3fe-200d-1f393","👩🏿‍🎓":"1f469-1f3ff-200d-1f393","🧑🏻‍🏫":"1f9d1-1f3fb-200d-1f3eb","🧑🏼‍🏫":"1f9d1-1f3fc-200d-1f3eb","🧑🏽‍🏫":"1f9d1-1f3fd-200d-1f3eb","🧑🏾‍🏫":"1f9d1-1f3fe-200d-1f3eb","🧑🏿‍🏫":"1f9d1-1f3ff-200d-1f3eb","👨🏻‍🏫":"1f468-1f3fb-200d-1f3eb","👨🏼‍🏫":"1f468-1f3fc-200d-1f3eb","👨🏽‍🏫":"1f468-1f3fd-200d-1f3eb","👨🏾‍🏫":"1f468-1f3fe-200d-1f3eb","👨🏿‍🏫":"1f468-1f3ff-200d-1f3eb","👩🏻‍🏫":"1f469-1f3fb-200d-1f3eb","👩🏼‍🏫":"1f469-1f3fc-200d-1f3eb","👩🏽‍🏫":"1f469-1f3fd-200d-1f3eb","👩🏾‍🏫":"1f469-1f3fe-200d-1f3eb","👩🏿‍🏫":"1f469-1f3ff-200d-1f3eb","🧑‍⚖️":"1f9d1-200d-2696-fe0f","🧑🏻‍⚖":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖":"1f9d1-1f3ff-200d-2696-fe0f","👨‍⚖️":"1f468-200d-2696-fe0f","👨🏻‍⚖":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖":"1f468-1f3ff-200d-2696-fe0f","👩‍⚖️":"1f469-200d-2696-fe0f","👩🏻‍⚖":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍🌾":"1f9d1-1f3fb-200d-1f33e","🧑🏼‍🌾":"1f9d1-1f3fc-200d-1f33e","🧑🏽‍🌾":"1f9d1-1f3fd-200d-1f33e","🧑🏾‍🌾":"1f9d1-1f3fe-200d-1f33e","🧑🏿‍🌾":"1f9d1-1f3ff-200d-1f33e","👨🏻‍🌾":"1f468-1f3fb-200d-1f33e","👨🏼‍🌾":"1f468-1f3fc-200d-1f33e","👨🏽‍🌾":"1f468-1f3fd-200d-1f33e","👨🏾‍🌾":"1f468-1f3fe-200d-1f33e","👨🏿‍🌾":"1f468-1f3ff-200d-1f33e","👩🏻‍🌾":"1f469-1f3fb-200d-1f33e","👩🏼‍🌾":"1f469-1f3fc-200d-1f33e","👩🏽‍🌾":"1f469-1f3fd-200d-1f33e","👩🏾‍🌾":"1f469-1f3fe-200d-1f33e","👩🏿‍🌾":"1f469-1f3ff-200d-1f33e","🧑🏻‍🍳":"1f9d1-1f3fb-200d-1f373","🧑🏼‍🍳":"1f9d1-1f3fc-200d-1f373","🧑🏽‍🍳":"1f9d1-1f3fd-200d-1f373","🧑🏾‍🍳":"1f9d1-1f3fe-200d-1f373","🧑🏿‍🍳":"1f9d1-1f3ff-200d-1f373","👨🏻‍🍳":"1f468-1f3fb-200d-1f373","👨🏼‍🍳":"1f468-1f3fc-200d-1f373","👨🏽‍🍳":"1f468-1f3fd-200d-1f373","👨🏾‍🍳":"1f468-1f3fe-200d-1f373","👨🏿‍🍳":"1f468-1f3ff-200d-1f373","👩🏻‍🍳":"1f469-1f3fb-200d-1f373","👩🏼‍🍳":"1f469-1f3fc-200d-1f373","👩🏽‍🍳":"1f469-1f3fd-200d-1f373","👩🏾‍🍳":"1f469-1f3fe-200d-1f373","👩🏿‍🍳":"1f469-1f3ff-200d-1f373","🧑🏻‍🔧":"1f9d1-1f3fb-200d-1f527","🧑🏼‍🔧":"1f9d1-1f3fc-200d-1f527","🧑🏽‍🔧":"1f9d1-1f3fd-200d-1f527","🧑🏾‍🔧":"1f9d1-1f3fe-200d-1f527","🧑🏿‍🔧":"1f9d1-1f3ff-200d-1f527","👨🏻‍🔧":"1f468-1f3fb-200d-1f527","👨🏼‍🔧":"1f468-1f3fc-200d-1f527","👨🏽‍🔧":"1f468-1f3fd-200d-1f527","👨🏾‍🔧":"1f468-1f3fe-200d-1f527","👨🏿‍🔧":"1f468-1f3ff-200d-1f527","👩🏻‍🔧":"1f469-1f3fb-200d-1f527","👩🏼‍🔧":"1f469-1f3fc-200d-1f527","👩🏽‍🔧":"1f469-1f3fd-200d-1f527","👩🏾‍🔧":"1f469-1f3fe-200d-1f527","👩🏿‍🔧":"1f469-1f3ff-200d-1f527","🧑🏻‍🏭":"1f9d1-1f3fb-200d-1f3ed","🧑🏼‍🏭":"1f9d1-1f3fc-200d-1f3ed","🧑🏽‍🏭":"1f9d1-1f3fd-200d-1f3ed","🧑🏾‍🏭":"1f9d1-1f3fe-200d-1f3ed","🧑🏿‍🏭":"1f9d1-1f3ff-200d-1f3ed","👨🏻‍🏭":"1f468-1f3fb-200d-1f3ed","👨🏼‍🏭":"1f468-1f3fc-200d-1f3ed","👨🏽‍🏭":"1f468-1f3fd-200d-1f3ed","👨🏾‍🏭":"1f468-1f3fe-200d-1f3ed","👨🏿‍🏭":"1f468-1f3ff-200d-1f3ed","👩🏻‍🏭":"1f469-1f3fb-200d-1f3ed","👩🏼‍🏭":"1f469-1f3fc-200d-1f3ed","👩🏽‍🏭":"1f469-1f3fd-200d-1f3ed","👩🏾‍🏭":"1f469-1f3fe-200d-1f3ed","👩🏿‍🏭":"1f469-1f3ff-200d-1f3ed","🧑🏻‍💼":"1f9d1-1f3fb-200d-1f4bc","🧑🏼‍💼":"1f9d1-1f3fc-200d-1f4bc","🧑🏽‍💼":"1f9d1-1f3fd-200d-1f4bc","🧑🏾‍💼":"1f9d1-1f3fe-200d-1f4bc","🧑🏿‍💼":"1f9d1-1f3ff-200d-1f4bc","👨🏻‍💼":"1f468-1f3fb-200d-1f4bc","👨🏼‍💼":"1f468-1f3fc-200d-1f4bc","👨🏽‍💼":"1f468-1f3fd-200d-1f4bc","👨🏾‍💼":"1f468-1f3fe-200d-1f4bc","👨🏿‍💼":"1f468-1f3ff-200d-1f4bc","👩🏻‍💼":"1f469-1f3fb-200d-1f4bc","👩🏼‍💼":"1f469-1f3fc-200d-1f4bc","👩🏽‍💼":"1f469-1f3fd-200d-1f4bc","👩🏾‍💼":"1f469-1f3fe-200d-1f4bc","👩🏿‍💼":"1f469-1f3ff-200d-1f4bc","🧑🏻‍🔬":"1f9d1-1f3fb-200d-1f52c","🧑🏼‍🔬":"1f9d1-1f3fc-200d-1f52c","🧑🏽‍🔬":"1f9d1-1f3fd-200d-1f52c","🧑🏾‍🔬":"1f9d1-1f3fe-200d-1f52c","🧑🏿‍🔬":"1f9d1-1f3ff-200d-1f52c","👨🏻‍🔬":"1f468-1f3fb-200d-1f52c","👨🏼‍🔬":"1f468-1f3fc-200d-1f52c","👨🏽‍🔬":"1f468-1f3fd-200d-1f52c","👨🏾‍🔬":"1f468-1f3fe-200d-1f52c","👨🏿‍🔬":"1f468-1f3ff-200d-1f52c","👩🏻‍🔬":"1f469-1f3fb-200d-1f52c","👩🏼‍🔬":"1f469-1f3fc-200d-1f52c","👩🏽‍🔬":"1f469-1f3fd-200d-1f52c","👩🏾‍🔬":"1f469-1f3fe-200d-1f52c","👩🏿‍🔬":"1f469-1f3ff-200d-1f52c","🧑🏻‍💻":"1f9d1-1f3fb-200d-1f4bb","🧑🏼‍💻":"1f9d1-1f3fc-200d-1f4bb","🧑🏽‍💻":"1f9d1-1f3fd-200d-1f4bb","🧑🏾‍💻":"1f9d1-1f3fe-200d-1f4bb","🧑🏿‍💻":"1f9d1-1f3ff-200d-1f4bb","👨🏻‍💻":"1f468-1f3fb-200d-1f4bb","👨🏼‍💻":"1f468-1f3fc-200d-1f4bb","👨🏽‍💻":"1f468-1f3fd-200d-1f4bb","👨🏾‍💻":"1f468-1f3fe-200d-1f4bb","👨🏿‍💻":"1f468-1f3ff-200d-1f4bb","👩🏻‍💻":"1f469-1f3fb-200d-1f4bb","👩🏼‍💻":"1f469-1f3fc-200d-1f4bb","👩🏽‍💻":"1f469-1f3fd-200d-1f4bb","👩🏾‍💻":"1f469-1f3fe-200d-1f4bb","👩🏿‍💻":"1f469-1f3ff-200d-1f4bb","🧑🏻‍🎤":"1f9d1-1f3fb-200d-1f3a4","🧑🏼‍🎤":"1f9d1-1f3fc-200d-1f3a4","🧑🏽‍🎤":"1f9d1-1f3fd-200d-1f3a4","🧑🏾‍🎤":"1f9d1-1f3fe-200d-1f3a4","🧑🏿‍🎤":"1f9d1-1f3ff-200d-1f3a4","👨🏻‍🎤":"1f468-1f3fb-200d-1f3a4","👨🏼‍🎤":"1f468-1f3fc-200d-1f3a4","👨🏽‍🎤":"1f468-1f3fd-200d-1f3a4","👨🏾‍🎤":"1f468-1f3fe-200d-1f3a4","👨🏿‍🎤":"1f468-1f3ff-200d-1f3a4","👩🏻‍🎤":"1f469-1f3fb-200d-1f3a4","👩🏼‍🎤":"1f469-1f3fc-200d-1f3a4","👩🏽‍🎤":"1f469-1f3fd-200d-1f3a4","👩🏾‍🎤":"1f469-1f3fe-200d-1f3a4","👩🏿‍🎤":"1f469-1f3ff-200d-1f3a4","🧑🏻‍🎨":"1f9d1-1f3fb-200d-1f3a8","🧑🏼‍🎨":"1f9d1-1f3fc-200d-1f3a8","🧑🏽‍🎨":"1f9d1-1f3fd-200d-1f3a8","🧑🏾‍🎨":"1f9d1-1f3fe-200d-1f3a8","🧑🏿‍🎨":"1f9d1-1f3ff-200d-1f3a8","👨🏻‍🎨":"1f468-1f3fb-200d-1f3a8","👨🏼‍🎨":"1f468-1f3fc-200d-1f3a8","👨🏽‍🎨":"1f468-1f3fd-200d-1f3a8","👨🏾‍🎨":"1f468-1f3fe-200d-1f3a8","👨🏿‍🎨":"1f468-1f3ff-200d-1f3a8","👩🏻‍🎨":"1f469-1f3fb-200d-1f3a8","👩🏼‍🎨":"1f469-1f3fc-200d-1f3a8","👩🏽‍🎨":"1f469-1f3fd-200d-1f3a8","👩🏾‍🎨":"1f469-1f3fe-200d-1f3a8","👩🏿‍🎨":"1f469-1f3ff-200d-1f3a8","🧑‍✈️":"1f9d1-200d-2708-fe0f","🧑🏻‍✈":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈":"1f9d1-1f3ff-200d-2708-fe0f","👨‍✈️":"1f468-200d-2708-fe0f","👨🏻‍✈":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈":"1f468-1f3ff-200d-2708-fe0f","👩‍✈️":"1f469-200d-2708-fe0f","👩🏻‍✈":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈":"1f469-1f3ff-200d-2708-fe0f","🧑🏻‍🚀":"1f9d1-1f3fb-200d-1f680","🧑🏼‍🚀":"1f9d1-1f3fc-200d-1f680","🧑🏽‍🚀":"1f9d1-1f3fd-200d-1f680","🧑🏾‍🚀":"1f9d1-1f3fe-200d-1f680","🧑🏿‍🚀":"1f9d1-1f3ff-200d-1f680","👨🏻‍🚀":"1f468-1f3fb-200d-1f680","👨🏼‍🚀":"1f468-1f3fc-200d-1f680","👨🏽‍🚀":"1f468-1f3fd-200d-1f680","👨🏾‍🚀":"1f468-1f3fe-200d-1f680","👨🏿‍🚀":"1f468-1f3ff-200d-1f680","👩🏻‍🚀":"1f469-1f3fb-200d-1f680","👩🏼‍🚀":"1f469-1f3fc-200d-1f680","👩🏽‍🚀":"1f469-1f3fd-200d-1f680","👩🏾‍🚀":"1f469-1f3fe-200d-1f680","👩🏿‍🚀":"1f469-1f3ff-200d-1f680","🧑🏻‍🚒":"1f9d1-1f3fb-200d-1f692","🧑🏼‍🚒":"1f9d1-1f3fc-200d-1f692","🧑🏽‍🚒":"1f9d1-1f3fd-200d-1f692","🧑🏾‍🚒":"1f9d1-1f3fe-200d-1f692","🧑🏿‍🚒":"1f9d1-1f3ff-200d-1f692","👨🏻‍🚒":"1f468-1f3fb-200d-1f692","👨🏼‍🚒":"1f468-1f3fc-200d-1f692","👨🏽‍🚒":"1f468-1f3fd-200d-1f692","👨🏾‍🚒":"1f468-1f3fe-200d-1f692","👨🏿‍🚒":"1f468-1f3ff-200d-1f692","👩🏻‍🚒":"1f469-1f3fb-200d-1f692","👩🏼‍🚒":"1f469-1f3fc-200d-1f692","👩🏽‍🚒":"1f469-1f3fd-200d-1f692","👩🏾‍🚒":"1f469-1f3fe-200d-1f692","👩🏿‍🚒":"1f469-1f3ff-200d-1f692","👮‍♂️":"1f46e-200d-2642-fe0f","👮🏻‍♂":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂":"1f46e-1f3ff-200d-2642-fe0f","👮‍♀️":"1f46e-200d-2640-fe0f","👮🏻‍♀":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀":"1f46e-1f3ff-200d-2640-fe0f","🕵‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵️‍♂":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂":"1f575-1f3ff-200d-2642-fe0f","🕵‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵️‍♀":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀":"1f575-1f3ff-200d-2640-fe0f","💂‍♂️":"1f482-200d-2642-fe0f","💂🏻‍♂":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂":"1f482-1f3ff-200d-2642-fe0f","💂‍♀️":"1f482-200d-2640-fe0f","💂🏻‍♀":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀":"1f482-1f3ff-200d-2640-fe0f","👷‍♂️":"1f477-200d-2642-fe0f","👷🏻‍♂":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂":"1f477-1f3ff-200d-2642-fe0f","👷‍♀️":"1f477-200d-2640-fe0f","👷🏻‍♀":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀":"1f477-1f3ff-200d-2640-fe0f","👳‍♂️":"1f473-200d-2642-fe0f","👳🏻‍♂":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂":"1f473-1f3ff-200d-2642-fe0f","👳‍♀️":"1f473-200d-2640-fe0f","👳🏻‍♀":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀":"1f473-1f3ff-200d-2640-fe0f","🤵‍♂️":"1f935-200d-2642-fe0f","🤵🏻‍♂":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂":"1f935-1f3ff-200d-2642-fe0f","🤵‍♀️":"1f935-200d-2640-fe0f","🤵🏻‍♀":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀":"1f935-1f3ff-200d-2640-fe0f","👰‍♂️":"1f470-200d-2642-fe0f","👰🏻‍♂":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂":"1f470-1f3ff-200d-2642-fe0f","👰‍♀️":"1f470-200d-2640-fe0f","👰🏻‍♀":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀":"1f470-1f3ff-200d-2640-fe0f","👩🏻‍🍼":"1f469-1f3fb-200d-1f37c","👩🏼‍🍼":"1f469-1f3fc-200d-1f37c","👩🏽‍🍼":"1f469-1f3fd-200d-1f37c","👩🏾‍🍼":"1f469-1f3fe-200d-1f37c","👩🏿‍🍼":"1f469-1f3ff-200d-1f37c","👨🏻‍🍼":"1f468-1f3fb-200d-1f37c","👨🏼‍🍼":"1f468-1f3fc-200d-1f37c","👨🏽‍🍼":"1f468-1f3fd-200d-1f37c","👨🏾‍🍼":"1f468-1f3fe-200d-1f37c","👨🏿‍🍼":"1f468-1f3ff-200d-1f37c","🧑🏻‍🍼":"1f9d1-1f3fb-200d-1f37c","🧑🏼‍🍼":"1f9d1-1f3fc-200d-1f37c","🧑🏽‍🍼":"1f9d1-1f3fd-200d-1f37c","🧑🏾‍🍼":"1f9d1-1f3fe-200d-1f37c","🧑🏿‍🍼":"1f9d1-1f3ff-200d-1f37c","🧑🏻‍🎄":"1f9d1-1f3fb-200d-1f384","🧑🏼‍🎄":"1f9d1-1f3fc-200d-1f384","🧑🏽‍🎄":"1f9d1-1f3fd-200d-1f384","🧑🏾‍🎄":"1f9d1-1f3fe-200d-1f384","🧑🏿‍🎄":"1f9d1-1f3ff-200d-1f384","🦸‍♂️":"1f9b8-200d-2642-fe0f","🦸🏻‍♂":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂":"1f9b8-1f3ff-200d-2642-fe0f","🦸‍♀️":"1f9b8-200d-2640-fe0f","🦸🏻‍♀":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀":"1f9b8-1f3ff-200d-2640-fe0f","🦹‍♂️":"1f9b9-200d-2642-fe0f","🦹🏻‍♂":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂":"1f9b9-1f3ff-200d-2642-fe0f","🦹‍♀️":"1f9b9-200d-2640-fe0f","🦹🏻‍♀":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀":"1f9b9-1f3ff-200d-2640-fe0f","🧙‍♂️":"1f9d9-200d-2642-fe0f","🧙🏻‍♂":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂":"1f9d9-1f3ff-200d-2642-fe0f","🧙‍♀️":"1f9d9-200d-2640-fe0f","🧙🏻‍♀":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀":"1f9d9-1f3ff-200d-2640-fe0f","🧚‍♂️":"1f9da-200d-2642-fe0f","🧚🏻‍♂":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂":"1f9da-1f3ff-200d-2642-fe0f","🧚‍♀️":"1f9da-200d-2640-fe0f","🧚🏻‍♀":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀":"1f9da-1f3ff-200d-2640-fe0f","🧛‍♂️":"1f9db-200d-2642-fe0f","🧛🏻‍♂":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂":"1f9db-1f3ff-200d-2642-fe0f","🧛‍♀️":"1f9db-200d-2640-fe0f","🧛🏻‍♀":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀":"1f9db-1f3ff-200d-2640-fe0f","🧜‍♂️":"1f9dc-200d-2642-fe0f","🧜🏻‍♂":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂":"1f9dc-1f3ff-200d-2642-fe0f","🧜‍♀️":"1f9dc-200d-2640-fe0f","🧜🏻‍♀":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀":"1f9dc-1f3ff-200d-2640-fe0f","🧝‍♂️":"1f9dd-200d-2642-fe0f","🧝🏻‍♂":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂":"1f9dd-1f3ff-200d-2642-fe0f","🧝‍♀️":"1f9dd-200d-2640-fe0f","🧝🏻‍♀":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀":"1f9dd-1f3ff-200d-2640-fe0f","🧞‍♂️":"1f9de-200d-2642-fe0f","🧞‍♀️":"1f9de-200d-2640-fe0f","🧟‍♂️":"1f9df-200d-2642-fe0f","🧟‍♀️":"1f9df-200d-2640-fe0f","💆‍♂️":"1f486-200d-2642-fe0f","💆🏻‍♂":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂":"1f486-1f3ff-200d-2642-fe0f","💆‍♀️":"1f486-200d-2640-fe0f","💆🏻‍♀":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀":"1f486-1f3ff-200d-2640-fe0f","💇‍♂️":"1f487-200d-2642-fe0f","💇🏻‍♂":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂":"1f487-1f3ff-200d-2642-fe0f","💇‍♀️":"1f487-200d-2640-fe0f","💇🏻‍♀":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀":"1f487-1f3ff-200d-2640-fe0f","🚶‍♂️":"1f6b6-200d-2642-fe0f","🚶🏻‍♂":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂":"1f6b6-1f3ff-200d-2642-fe0f","🚶‍♀️":"1f6b6-200d-2640-fe0f","🚶🏻‍♀":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀":"1f6b6-1f3ff-200d-2640-fe0f","🧍‍♂️":"1f9cd-200d-2642-fe0f","🧍🏻‍♂":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂":"1f9cd-1f3ff-200d-2642-fe0f","🧍‍♀️":"1f9cd-200d-2640-fe0f","🧍🏻‍♀":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀":"1f9cd-1f3ff-200d-2640-fe0f","🧎‍♂️":"1f9ce-200d-2642-fe0f","🧎🏻‍♂":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂":"1f9ce-1f3ff-200d-2642-fe0f","🧎‍♀️":"1f9ce-200d-2640-fe0f","🧎🏻‍♀":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀":"1f9ce-1f3ff-200d-2640-fe0f","🧑🏻‍🦯":"1f9d1-1f3fb-200d-1f9af","🧑🏼‍🦯":"1f9d1-1f3fc-200d-1f9af","🧑🏽‍🦯":"1f9d1-1f3fd-200d-1f9af","🧑🏾‍🦯":"1f9d1-1f3fe-200d-1f9af","🧑🏿‍🦯":"1f9d1-1f3ff-200d-1f9af","👨🏻‍🦯":"1f468-1f3fb-200d-1f9af","👨🏼‍🦯":"1f468-1f3fc-200d-1f9af","👨🏽‍🦯":"1f468-1f3fd-200d-1f9af","👨🏾‍🦯":"1f468-1f3fe-200d-1f9af","👨🏿‍🦯":"1f468-1f3ff-200d-1f9af","👩🏻‍🦯":"1f469-1f3fb-200d-1f9af","👩🏼‍🦯":"1f469-1f3fc-200d-1f9af","👩🏽‍🦯":"1f469-1f3fd-200d-1f9af","👩🏾‍🦯":"1f469-1f3fe-200d-1f9af","👩🏿‍🦯":"1f469-1f3ff-200d-1f9af","🧑🏻‍🦼":"1f9d1-1f3fb-200d-1f9bc","🧑🏼‍🦼":"1f9d1-1f3fc-200d-1f9bc","🧑🏽‍🦼":"1f9d1-1f3fd-200d-1f9bc","🧑🏾‍🦼":"1f9d1-1f3fe-200d-1f9bc","🧑🏿‍🦼":"1f9d1-1f3ff-200d-1f9bc","👨🏻‍🦼":"1f468-1f3fb-200d-1f9bc","👨🏼‍🦼":"1f468-1f3fc-200d-1f9bc","👨🏽‍🦼":"1f468-1f3fd-200d-1f9bc","👨🏾‍🦼":"1f468-1f3fe-200d-1f9bc","👨🏿‍🦼":"1f468-1f3ff-200d-1f9bc","👩🏻‍🦼":"1f469-1f3fb-200d-1f9bc","👩🏼‍🦼":"1f469-1f3fc-200d-1f9bc","👩🏽‍🦼":"1f469-1f3fd-200d-1f9bc","👩🏾‍🦼":"1f469-1f3fe-200d-1f9bc","👩🏿‍🦼":"1f469-1f3ff-200d-1f9bc","🧑🏻‍🦽":"1f9d1-1f3fb-200d-1f9bd","🧑🏼‍🦽":"1f9d1-1f3fc-200d-1f9bd","🧑🏽‍🦽":"1f9d1-1f3fd-200d-1f9bd","🧑🏾‍🦽":"1f9d1-1f3fe-200d-1f9bd","🧑🏿‍🦽":"1f9d1-1f3ff-200d-1f9bd","👨🏻‍🦽":"1f468-1f3fb-200d-1f9bd","👨🏼‍🦽":"1f468-1f3fc-200d-1f9bd","👨🏽‍🦽":"1f468-1f3fd-200d-1f9bd","👨🏾‍🦽":"1f468-1f3fe-200d-1f9bd","👨🏿‍🦽":"1f468-1f3ff-200d-1f9bd","👩🏻‍🦽":"1f469-1f3fb-200d-1f9bd","👩🏼‍🦽":"1f469-1f3fc-200d-1f9bd","👩🏽‍🦽":"1f469-1f3fd-200d-1f9bd","👩🏾‍🦽":"1f469-1f3fe-200d-1f9bd","👩🏿‍🦽":"1f469-1f3ff-200d-1f9bd","🏃‍♂️":"1f3c3-200d-2642-fe0f","🏃🏻‍♂":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂":"1f3c3-1f3ff-200d-2642-fe0f","🏃‍♀️":"1f3c3-200d-2640-fe0f","🏃🏻‍♀":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀":"1f3c3-1f3ff-200d-2640-fe0f","👯‍♂️":"1f46f-200d-2642-fe0f","👯‍♀️":"1f46f-200d-2640-fe0f","🧖‍♂️":"1f9d6-200d-2642-fe0f","🧖🏻‍♂":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂":"1f9d6-1f3ff-200d-2642-fe0f","🧖‍♀️":"1f9d6-200d-2640-fe0f","🧖🏻‍♀":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀":"1f9d6-1f3ff-200d-2640-fe0f","🧗‍♂️":"1f9d7-200d-2642-fe0f","🧗🏻‍♂":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂":"1f9d7-1f3ff-200d-2642-fe0f","🧗‍♀️":"1f9d7-200d-2640-fe0f","🧗🏻‍♀":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀":"1f9d7-1f3ff-200d-2640-fe0f","🏌‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌️‍♂":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂":"1f3cc-1f3ff-200d-2642-fe0f","🏌‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌️‍♀":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀":"1f3cc-1f3ff-200d-2640-fe0f","🏄‍♂️":"1f3c4-200d-2642-fe0f","🏄🏻‍♂":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂":"1f3c4-1f3ff-200d-2642-fe0f","🏄‍♀️":"1f3c4-200d-2640-fe0f","🏄🏻‍♀":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀":"1f3c4-1f3ff-200d-2640-fe0f","🚣‍♂️":"1f6a3-200d-2642-fe0f","🚣🏻‍♂":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂":"1f6a3-1f3ff-200d-2642-fe0f","🚣‍♀️":"1f6a3-200d-2640-fe0f","🚣🏻‍♀":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀":"1f6a3-1f3ff-200d-2640-fe0f","🏊‍♂️":"1f3ca-200d-2642-fe0f","🏊🏻‍♂":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂":"1f3ca-1f3ff-200d-2642-fe0f","🏊‍♀️":"1f3ca-200d-2640-fe0f","🏊🏻‍♀":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀":"1f3ca-1f3ff-200d-2640-fe0f","⛹‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹️‍♂":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂":"26f9-1f3ff-200d-2642-fe0f","⛹‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹️‍♀":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀":"26f9-1f3ff-200d-2640-fe0f","🏋‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋️‍♂":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂":"1f3cb-1f3ff-200d-2642-fe0f","🏋‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋️‍♀":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀":"1f3cb-1f3ff-200d-2640-fe0f","🚴‍♂️":"1f6b4-200d-2642-fe0f","🚴🏻‍♂":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂":"1f6b4-1f3ff-200d-2642-fe0f","🚴‍♀️":"1f6b4-200d-2640-fe0f","🚴🏻‍♀":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀":"1f6b4-1f3ff-200d-2640-fe0f","🚵‍♂️":"1f6b5-200d-2642-fe0f","🚵🏻‍♂":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂":"1f6b5-1f3ff-200d-2642-fe0f","🚵‍♀️":"1f6b5-200d-2640-fe0f","🚵🏻‍♀":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀":"1f6b5-1f3ff-200d-2640-fe0f","🤸‍♂️":"1f938-200d-2642-fe0f","🤸🏻‍♂":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂":"1f938-1f3ff-200d-2642-fe0f","🤸‍♀️":"1f938-200d-2640-fe0f","🤸🏻‍♀":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀":"1f938-1f3ff-200d-2640-fe0f","🤼‍♂️":"1f93c-200d-2642-fe0f","🤼‍♀️":"1f93c-200d-2640-fe0f","🤽‍♂️":"1f93d-200d-2642-fe0f","🤽🏻‍♂":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂":"1f93d-1f3ff-200d-2642-fe0f","🤽‍♀️":"1f93d-200d-2640-fe0f","🤽🏻‍♀":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀":"1f93d-1f3ff-200d-2640-fe0f","🤾‍♂️":"1f93e-200d-2642-fe0f","🤾🏻‍♂":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂":"1f93e-1f3ff-200d-2642-fe0f","🤾‍♀️":"1f93e-200d-2640-fe0f","🤾🏻‍♀":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀":"1f93e-1f3ff-200d-2640-fe0f","🤹‍♂️":"1f939-200d-2642-fe0f","🤹🏻‍♂":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂":"1f939-1f3ff-200d-2642-fe0f","🤹‍♀️":"1f939-200d-2640-fe0f","🤹🏻‍♀":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀":"1f939-1f3ff-200d-2640-fe0f","🧘‍♂️":"1f9d8-200d-2642-fe0f","🧘🏻‍♂":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂":"1f9d8-1f3ff-200d-2642-fe0f","🧘‍♀️":"1f9d8-200d-2640-fe0f","🧘🏻‍♀":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀":"1f9d8-1f3ff-200d-2640-fe0f","🐻‍❄️":"1f43b-200d-2744-fe0f","🏳️‍🌈":"1f3f3-fe0f-200d-1f308","🏳‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","🏳️‍⚧":"1f3f3-fe0f-200d-26a7-fe0f","🏴‍☠️":"1f3f4-200d-2620-fe0f","👁️‍🗨️":"1f441-200d-1f5e8","🫱🏻‍🫲🏼":"1faf1-1f3fb-200d-1faf2-1f3fc","🫱🏻‍🫲🏽":"1faf1-1f3fb-200d-1faf2-1f3fd","🫱🏻‍🫲🏾":"1faf1-1f3fb-200d-1faf2-1f3fe","🫱🏻‍🫲🏿":"1faf1-1f3fb-200d-1faf2-1f3ff","🫱🏼‍🫲🏻":"1faf1-1f3fc-200d-1faf2-1f3fb","🫱🏼‍🫲🏽":"1faf1-1f3fc-200d-1faf2-1f3fd","🫱🏼‍🫲🏾":"1faf1-1f3fc-200d-1faf2-1f3fe","🫱🏼‍🫲🏿":"1faf1-1f3fc-200d-1faf2-1f3ff","🫱🏽‍🫲🏻":"1faf1-1f3fd-200d-1faf2-1f3fb","🫱🏽‍🫲🏼":"1faf1-1f3fd-200d-1faf2-1f3fc","🫱🏽‍🫲🏾":"1faf1-1f3fd-200d-1faf2-1f3fe","🫱🏽‍🫲🏿":"1faf1-1f3fd-200d-1faf2-1f3ff","🫱🏾‍🫲🏻":"1faf1-1f3fe-200d-1faf2-1f3fb","🫱🏾‍🫲🏼":"1faf1-1f3fe-200d-1faf2-1f3fc","🫱🏾‍🫲🏽":"1faf1-1f3fe-200d-1faf2-1f3fd","🫱🏾‍🫲🏿":"1faf1-1f3fe-200d-1faf2-1f3ff","🫱🏿‍🫲🏻":"1faf1-1f3ff-200d-1faf2-1f3fb","🫱🏿‍🫲🏼":"1faf1-1f3ff-200d-1faf2-1f3fc","🫱🏿‍🫲🏽":"1faf1-1f3ff-200d-1faf2-1f3fd","🫱🏿‍🫲🏾":"1faf1-1f3ff-200d-1faf2-1f3fe","🧔🏻‍♂️":"1f9d4-1f3fb-200d-2642-fe0f","🧔🏼‍♂️":"1f9d4-1f3fc-200d-2642-fe0f","🧔🏽‍♂️":"1f9d4-1f3fd-200d-2642-fe0f","🧔🏾‍♂️":"1f9d4-1f3fe-200d-2642-fe0f","🧔🏿‍♂️":"1f9d4-1f3ff-200d-2642-fe0f","🧔🏻‍♀️":"1f9d4-1f3fb-200d-2640-fe0f","🧔🏼‍♀️":"1f9d4-1f3fc-200d-2640-fe0f","🧔🏽‍♀️":"1f9d4-1f3fd-200d-2640-fe0f","🧔🏾‍♀️":"1f9d4-1f3fe-200d-2640-fe0f","🧔🏿‍♀️":"1f9d4-1f3ff-200d-2640-fe0f","👱🏻‍♀️":"1f471-1f3fb-200d-2640-fe0f","👱🏼‍♀️":"1f471-1f3fc-200d-2640-fe0f","👱🏽‍♀️":"1f471-1f3fd-200d-2640-fe0f","👱🏾‍♀️":"1f471-1f3fe-200d-2640-fe0f","👱🏿‍♀️":"1f471-1f3ff-200d-2640-fe0f","👱🏻‍♂️":"1f471-1f3fb-200d-2642-fe0f","👱🏼‍♂️":"1f471-1f3fc-200d-2642-fe0f","👱🏽‍♂️":"1f471-1f3fd-200d-2642-fe0f","👱🏾‍♂️":"1f471-1f3fe-200d-2642-fe0f","👱🏿‍♂️":"1f471-1f3ff-200d-2642-fe0f","🙍🏻‍♂️":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼‍♂️":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽‍♂️":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾‍♂️":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿‍♂️":"1f64d-1f3ff-200d-2642-fe0f","🙍🏻‍♀️":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼‍♀️":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽‍♀️":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾‍♀️":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿‍♀️":"1f64d-1f3ff-200d-2640-fe0f","🙎🏻‍♂️":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼‍♂️":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽‍♂️":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾‍♂️":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿‍♂️":"1f64e-1f3ff-200d-2642-fe0f","🙎🏻‍♀️":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼‍♀️":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽‍♀️":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾‍♀️":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿‍♀️":"1f64e-1f3ff-200d-2640-fe0f","🙅🏻‍♂️":"1f645-1f3fb-200d-2642-fe0f","🙅🏼‍♂️":"1f645-1f3fc-200d-2642-fe0f","🙅🏽‍♂️":"1f645-1f3fd-200d-2642-fe0f","🙅🏾‍♂️":"1f645-1f3fe-200d-2642-fe0f","🙅🏿‍♂️":"1f645-1f3ff-200d-2642-fe0f","🙅🏻‍♀️":"1f645-1f3fb-200d-2640-fe0f","🙅🏼‍♀️":"1f645-1f3fc-200d-2640-fe0f","🙅🏽‍♀️":"1f645-1f3fd-200d-2640-fe0f","🙅🏾‍♀️":"1f645-1f3fe-200d-2640-fe0f","🙅🏿‍♀️":"1f645-1f3ff-200d-2640-fe0f","🙆🏻‍♂️":"1f646-1f3fb-200d-2642-fe0f","🙆🏼‍♂️":"1f646-1f3fc-200d-2642-fe0f","🙆🏽‍♂️":"1f646-1f3fd-200d-2642-fe0f","🙆🏾‍♂️":"1f646-1f3fe-200d-2642-fe0f","🙆🏿‍♂️":"1f646-1f3ff-200d-2642-fe0f","🙆🏻‍♀️":"1f646-1f3fb-200d-2640-fe0f","🙆🏼‍♀️":"1f646-1f3fc-200d-2640-fe0f","🙆🏽‍♀️":"1f646-1f3fd-200d-2640-fe0f","🙆🏾‍♀️":"1f646-1f3fe-200d-2640-fe0f","🙆🏿‍♀️":"1f646-1f3ff-200d-2640-fe0f","💁🏻‍♂️":"1f481-1f3fb-200d-2642-fe0f","💁🏼‍♂️":"1f481-1f3fc-200d-2642-fe0f","💁🏽‍♂️":"1f481-1f3fd-200d-2642-fe0f","💁🏾‍♂️":"1f481-1f3fe-200d-2642-fe0f","💁🏿‍♂️":"1f481-1f3ff-200d-2642-fe0f","💁🏻‍♀️":"1f481-1f3fb-200d-2640-fe0f","💁🏼‍♀️":"1f481-1f3fc-200d-2640-fe0f","💁🏽‍♀️":"1f481-1f3fd-200d-2640-fe0f","💁🏾‍♀️":"1f481-1f3fe-200d-2640-fe0f","💁🏿‍♀️":"1f481-1f3ff-200d-2640-fe0f","🙋🏻‍♂️":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼‍♂️":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽‍♂️":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾‍♂️":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿‍♂️":"1f64b-1f3ff-200d-2642-fe0f","🙋🏻‍♀️":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼‍♀️":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽‍♀️":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾‍♀️":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿‍♀️":"1f64b-1f3ff-200d-2640-fe0f","🧏🏻‍♂️":"1f9cf-1f3fb-200d-2642-fe0f","🧏🏼‍♂️":"1f9cf-1f3fc-200d-2642-fe0f","🧏🏽‍♂️":"1f9cf-1f3fd-200d-2642-fe0f","🧏🏾‍♂️":"1f9cf-1f3fe-200d-2642-fe0f","🧏🏿‍♂️":"1f9cf-1f3ff-200d-2642-fe0f","🧏🏻‍♀️":"1f9cf-1f3fb-200d-2640-fe0f","🧏🏼‍♀️":"1f9cf-1f3fc-200d-2640-fe0f","🧏🏽‍♀️":"1f9cf-1f3fd-200d-2640-fe0f","🧏🏾‍♀️":"1f9cf-1f3fe-200d-2640-fe0f","🧏🏿‍♀️":"1f9cf-1f3ff-200d-2640-fe0f","🙇🏻‍♂️":"1f647-1f3fb-200d-2642-fe0f","🙇🏼‍♂️":"1f647-1f3fc-200d-2642-fe0f","🙇🏽‍♂️":"1f647-1f3fd-200d-2642-fe0f","🙇🏾‍♂️":"1f647-1f3fe-200d-2642-fe0f","🙇🏿‍♂️":"1f647-1f3ff-200d-2642-fe0f","🙇🏻‍♀️":"1f647-1f3fb-200d-2640-fe0f","🙇🏼‍♀️":"1f647-1f3fc-200d-2640-fe0f","🙇🏽‍♀️":"1f647-1f3fd-200d-2640-fe0f","🙇🏾‍♀️":"1f647-1f3fe-200d-2640-fe0f","🙇🏿‍♀️":"1f647-1f3ff-200d-2640-fe0f","🤦🏻‍♂️":"1f926-1f3fb-200d-2642-fe0f","🤦🏼‍♂️":"1f926-1f3fc-200d-2642-fe0f","🤦🏽‍♂️":"1f926-1f3fd-200d-2642-fe0f","🤦🏾‍♂️":"1f926-1f3fe-200d-2642-fe0f","🤦🏿‍♂️":"1f926-1f3ff-200d-2642-fe0f","🤦🏻‍♀️":"1f926-1f3fb-200d-2640-fe0f","🤦🏼‍♀️":"1f926-1f3fc-200d-2640-fe0f","🤦🏽‍♀️":"1f926-1f3fd-200d-2640-fe0f","🤦🏾‍♀️":"1f926-1f3fe-200d-2640-fe0f","🤦🏿‍♀️":"1f926-1f3ff-200d-2640-fe0f","🤷🏻‍♂️":"1f937-1f3fb-200d-2642-fe0f","🤷🏼‍♂️":"1f937-1f3fc-200d-2642-fe0f","🤷🏽‍♂️":"1f937-1f3fd-200d-2642-fe0f","🤷🏾‍♂️":"1f937-1f3fe-200d-2642-fe0f","🤷🏿‍♂️":"1f937-1f3ff-200d-2642-fe0f","🤷🏻‍♀️":"1f937-1f3fb-200d-2640-fe0f","🤷🏼‍♀️":"1f937-1f3fc-200d-2640-fe0f","🤷🏽‍♀️":"1f937-1f3fd-200d-2640-fe0f","🤷🏾‍♀️":"1f937-1f3fe-200d-2640-fe0f","🤷🏿‍♀️":"1f937-1f3ff-200d-2640-fe0f","🧑🏻‍⚕️":"1f9d1-1f3fb-200d-2695-fe0f","🧑🏼‍⚕️":"1f9d1-1f3fc-200d-2695-fe0f","🧑🏽‍⚕️":"1f9d1-1f3fd-200d-2695-fe0f","🧑🏾‍⚕️":"1f9d1-1f3fe-200d-2695-fe0f","🧑🏿‍⚕️":"1f9d1-1f3ff-200d-2695-fe0f","👨🏻‍⚕️":"1f468-1f3fb-200d-2695-fe0f","👨🏼‍⚕️":"1f468-1f3fc-200d-2695-fe0f","👨🏽‍⚕️":"1f468-1f3fd-200d-2695-fe0f","👨🏾‍⚕️":"1f468-1f3fe-200d-2695-fe0f","👨🏿‍⚕️":"1f468-1f3ff-200d-2695-fe0f","👩🏻‍⚕️":"1f469-1f3fb-200d-2695-fe0f","👩🏼‍⚕️":"1f469-1f3fc-200d-2695-fe0f","👩🏽‍⚕️":"1f469-1f3fd-200d-2695-fe0f","👩🏾‍⚕️":"1f469-1f3fe-200d-2695-fe0f","👩🏿‍⚕️":"1f469-1f3ff-200d-2695-fe0f","🧑🏻‍⚖️":"1f9d1-1f3fb-200d-2696-fe0f","🧑🏼‍⚖️":"1f9d1-1f3fc-200d-2696-fe0f","🧑🏽‍⚖️":"1f9d1-1f3fd-200d-2696-fe0f","🧑🏾‍⚖️":"1f9d1-1f3fe-200d-2696-fe0f","🧑🏿‍⚖️":"1f9d1-1f3ff-200d-2696-fe0f","👨🏻‍⚖️":"1f468-1f3fb-200d-2696-fe0f","👨🏼‍⚖️":"1f468-1f3fc-200d-2696-fe0f","👨🏽‍⚖️":"1f468-1f3fd-200d-2696-fe0f","👨🏾‍⚖️":"1f468-1f3fe-200d-2696-fe0f","👨🏿‍⚖️":"1f468-1f3ff-200d-2696-fe0f","👩🏻‍⚖️":"1f469-1f3fb-200d-2696-fe0f","👩🏼‍⚖️":"1f469-1f3fc-200d-2696-fe0f","👩🏽‍⚖️":"1f469-1f3fd-200d-2696-fe0f","👩🏾‍⚖️":"1f469-1f3fe-200d-2696-fe0f","👩🏿‍⚖️":"1f469-1f3ff-200d-2696-fe0f","🧑🏻‍✈️":"1f9d1-1f3fb-200d-2708-fe0f","🧑🏼‍✈️":"1f9d1-1f3fc-200d-2708-fe0f","🧑🏽‍✈️":"1f9d1-1f3fd-200d-2708-fe0f","🧑🏾‍✈️":"1f9d1-1f3fe-200d-2708-fe0f","🧑🏿‍✈️":"1f9d1-1f3ff-200d-2708-fe0f","👨🏻‍✈️":"1f468-1f3fb-200d-2708-fe0f","👨🏼‍✈️":"1f468-1f3fc-200d-2708-fe0f","👨🏽‍✈️":"1f468-1f3fd-200d-2708-fe0f","👨🏾‍✈️":"1f468-1f3fe-200d-2708-fe0f","👨🏿‍✈️":"1f468-1f3ff-200d-2708-fe0f","👩🏻‍✈️":"1f469-1f3fb-200d-2708-fe0f","👩🏼‍✈️":"1f469-1f3fc-200d-2708-fe0f","👩🏽‍✈️":"1f469-1f3fd-200d-2708-fe0f","👩🏾‍✈️":"1f469-1f3fe-200d-2708-fe0f","👩🏿‍✈️":"1f469-1f3ff-200d-2708-fe0f","👮🏻‍♂️":"1f46e-1f3fb-200d-2642-fe0f","👮🏼‍♂️":"1f46e-1f3fc-200d-2642-fe0f","👮🏽‍♂️":"1f46e-1f3fd-200d-2642-fe0f","👮🏾‍♂️":"1f46e-1f3fe-200d-2642-fe0f","👮🏿‍♂️":"1f46e-1f3ff-200d-2642-fe0f","👮🏻‍♀️":"1f46e-1f3fb-200d-2640-fe0f","👮🏼‍♀️":"1f46e-1f3fc-200d-2640-fe0f","👮🏽‍♀️":"1f46e-1f3fd-200d-2640-fe0f","👮🏾‍♀️":"1f46e-1f3fe-200d-2640-fe0f","👮🏿‍♀️":"1f46e-1f3ff-200d-2640-fe0f","🕵️‍♂️":"1f575-fe0f-200d-2642-fe0f","🕵🏻‍♂️":"1f575-1f3fb-200d-2642-fe0f","🕵🏼‍♂️":"1f575-1f3fc-200d-2642-fe0f","🕵🏽‍♂️":"1f575-1f3fd-200d-2642-fe0f","🕵🏾‍♂️":"1f575-1f3fe-200d-2642-fe0f","🕵🏿‍♂️":"1f575-1f3ff-200d-2642-fe0f","🕵️‍♀️":"1f575-fe0f-200d-2640-fe0f","🕵🏻‍♀️":"1f575-1f3fb-200d-2640-fe0f","🕵🏼‍♀️":"1f575-1f3fc-200d-2640-fe0f","🕵🏽‍♀️":"1f575-1f3fd-200d-2640-fe0f","🕵🏾‍♀️":"1f575-1f3fe-200d-2640-fe0f","🕵🏿‍♀️":"1f575-1f3ff-200d-2640-fe0f","💂🏻‍♂️":"1f482-1f3fb-200d-2642-fe0f","💂🏼‍♂️":"1f482-1f3fc-200d-2642-fe0f","💂🏽‍♂️":"1f482-1f3fd-200d-2642-fe0f","💂🏾‍♂️":"1f482-1f3fe-200d-2642-fe0f","💂🏿‍♂️":"1f482-1f3ff-200d-2642-fe0f","💂🏻‍♀️":"1f482-1f3fb-200d-2640-fe0f","💂🏼‍♀️":"1f482-1f3fc-200d-2640-fe0f","💂🏽‍♀️":"1f482-1f3fd-200d-2640-fe0f","💂🏾‍♀️":"1f482-1f3fe-200d-2640-fe0f","💂🏿‍♀️":"1f482-1f3ff-200d-2640-fe0f","👷🏻‍♂️":"1f477-1f3fb-200d-2642-fe0f","👷🏼‍♂️":"1f477-1f3fc-200d-2642-fe0f","👷🏽‍♂️":"1f477-1f3fd-200d-2642-fe0f","👷🏾‍♂️":"1f477-1f3fe-200d-2642-fe0f","👷🏿‍♂️":"1f477-1f3ff-200d-2642-fe0f","👷🏻‍♀️":"1f477-1f3fb-200d-2640-fe0f","👷🏼‍♀️":"1f477-1f3fc-200d-2640-fe0f","👷🏽‍♀️":"1f477-1f3fd-200d-2640-fe0f","👷🏾‍♀️":"1f477-1f3fe-200d-2640-fe0f","👷🏿‍♀️":"1f477-1f3ff-200d-2640-fe0f","👳🏻‍♂️":"1f473-1f3fb-200d-2642-fe0f","👳🏼‍♂️":"1f473-1f3fc-200d-2642-fe0f","👳🏽‍♂️":"1f473-1f3fd-200d-2642-fe0f","👳🏾‍♂️":"1f473-1f3fe-200d-2642-fe0f","👳🏿‍♂️":"1f473-1f3ff-200d-2642-fe0f","👳🏻‍♀️":"1f473-1f3fb-200d-2640-fe0f","👳🏼‍♀️":"1f473-1f3fc-200d-2640-fe0f","👳🏽‍♀️":"1f473-1f3fd-200d-2640-fe0f","👳🏾‍♀️":"1f473-1f3fe-200d-2640-fe0f","👳🏿‍♀️":"1f473-1f3ff-200d-2640-fe0f","🤵🏻‍♂️":"1f935-1f3fb-200d-2642-fe0f","🤵🏼‍♂️":"1f935-1f3fc-200d-2642-fe0f","🤵🏽‍♂️":"1f935-1f3fd-200d-2642-fe0f","🤵🏾‍♂️":"1f935-1f3fe-200d-2642-fe0f","🤵🏿‍♂️":"1f935-1f3ff-200d-2642-fe0f","🤵🏻‍♀️":"1f935-1f3fb-200d-2640-fe0f","🤵🏼‍♀️":"1f935-1f3fc-200d-2640-fe0f","🤵🏽‍♀️":"1f935-1f3fd-200d-2640-fe0f","🤵🏾‍♀️":"1f935-1f3fe-200d-2640-fe0f","🤵🏿‍♀️":"1f935-1f3ff-200d-2640-fe0f","👰🏻‍♂️":"1f470-1f3fb-200d-2642-fe0f","👰🏼‍♂️":"1f470-1f3fc-200d-2642-fe0f","👰🏽‍♂️":"1f470-1f3fd-200d-2642-fe0f","👰🏾‍♂️":"1f470-1f3fe-200d-2642-fe0f","👰🏿‍♂️":"1f470-1f3ff-200d-2642-fe0f","👰🏻‍♀️":"1f470-1f3fb-200d-2640-fe0f","👰🏼‍♀️":"1f470-1f3fc-200d-2640-fe0f","👰🏽‍♀️":"1f470-1f3fd-200d-2640-fe0f","👰🏾‍♀️":"1f470-1f3fe-200d-2640-fe0f","👰🏿‍♀️":"1f470-1f3ff-200d-2640-fe0f","🦸🏻‍♂️":"1f9b8-1f3fb-200d-2642-fe0f","🦸🏼‍♂️":"1f9b8-1f3fc-200d-2642-fe0f","🦸🏽‍♂️":"1f9b8-1f3fd-200d-2642-fe0f","🦸🏾‍♂️":"1f9b8-1f3fe-200d-2642-fe0f","🦸🏿‍♂️":"1f9b8-1f3ff-200d-2642-fe0f","🦸🏻‍♀️":"1f9b8-1f3fb-200d-2640-fe0f","🦸🏼‍♀️":"1f9b8-1f3fc-200d-2640-fe0f","🦸🏽‍♀️":"1f9b8-1f3fd-200d-2640-fe0f","🦸🏾‍♀️":"1f9b8-1f3fe-200d-2640-fe0f","🦸🏿‍♀️":"1f9b8-1f3ff-200d-2640-fe0f","🦹🏻‍♂️":"1f9b9-1f3fb-200d-2642-fe0f","🦹🏼‍♂️":"1f9b9-1f3fc-200d-2642-fe0f","🦹🏽‍♂️":"1f9b9-1f3fd-200d-2642-fe0f","🦹🏾‍♂️":"1f9b9-1f3fe-200d-2642-fe0f","🦹🏿‍♂️":"1f9b9-1f3ff-200d-2642-fe0f","🦹🏻‍♀️":"1f9b9-1f3fb-200d-2640-fe0f","🦹🏼‍♀️":"1f9b9-1f3fc-200d-2640-fe0f","🦹🏽‍♀️":"1f9b9-1f3fd-200d-2640-fe0f","🦹🏾‍♀️":"1f9b9-1f3fe-200d-2640-fe0f","🦹🏿‍♀️":"1f9b9-1f3ff-200d-2640-fe0f","🧙🏻‍♂️":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼‍♂️":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽‍♂️":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾‍♂️":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿‍♂️":"1f9d9-1f3ff-200d-2642-fe0f","🧙🏻‍♀️":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼‍♀️":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽‍♀️":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾‍♀️":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿‍♀️":"1f9d9-1f3ff-200d-2640-fe0f","🧚🏻‍♂️":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼‍♂️":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽‍♂️":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾‍♂️":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿‍♂️":"1f9da-1f3ff-200d-2642-fe0f","🧚🏻‍♀️":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼‍♀️":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽‍♀️":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾‍♀️":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿‍♀️":"1f9da-1f3ff-200d-2640-fe0f","🧛🏻‍♂️":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼‍♂️":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽‍♂️":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾‍♂️":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿‍♂️":"1f9db-1f3ff-200d-2642-fe0f","🧛🏻‍♀️":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼‍♀️":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽‍♀️":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾‍♀️":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿‍♀️":"1f9db-1f3ff-200d-2640-fe0f","🧜🏻‍♂️":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼‍♂️":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽‍♂️":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾‍♂️":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿‍♂️":"1f9dc-1f3ff-200d-2642-fe0f","🧜🏻‍♀️":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼‍♀️":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽‍♀️":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾‍♀️":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿‍♀️":"1f9dc-1f3ff-200d-2640-fe0f","🧝🏻‍♂️":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼‍♂️":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽‍♂️":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾‍♂️":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿‍♂️":"1f9dd-1f3ff-200d-2642-fe0f","🧝🏻‍♀️":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼‍♀️":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽‍♀️":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾‍♀️":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿‍♀️":"1f9dd-1f3ff-200d-2640-fe0f","💆🏻‍♂️":"1f486-1f3fb-200d-2642-fe0f","💆🏼‍♂️":"1f486-1f3fc-200d-2642-fe0f","💆🏽‍♂️":"1f486-1f3fd-200d-2642-fe0f","💆🏾‍♂️":"1f486-1f3fe-200d-2642-fe0f","💆🏿‍♂️":"1f486-1f3ff-200d-2642-fe0f","💆🏻‍♀️":"1f486-1f3fb-200d-2640-fe0f","💆🏼‍♀️":"1f486-1f3fc-200d-2640-fe0f","💆🏽‍♀️":"1f486-1f3fd-200d-2640-fe0f","💆🏾‍♀️":"1f486-1f3fe-200d-2640-fe0f","💆🏿‍♀️":"1f486-1f3ff-200d-2640-fe0f","💇🏻‍♂️":"1f487-1f3fb-200d-2642-fe0f","💇🏼‍♂️":"1f487-1f3fc-200d-2642-fe0f","💇🏽‍♂️":"1f487-1f3fd-200d-2642-fe0f","💇🏾‍♂️":"1f487-1f3fe-200d-2642-fe0f","💇🏿‍♂️":"1f487-1f3ff-200d-2642-fe0f","💇🏻‍♀️":"1f487-1f3fb-200d-2640-fe0f","💇🏼‍♀️":"1f487-1f3fc-200d-2640-fe0f","💇🏽‍♀️":"1f487-1f3fd-200d-2640-fe0f","💇🏾‍♀️":"1f487-1f3fe-200d-2640-fe0f","💇🏿‍♀️":"1f487-1f3ff-200d-2640-fe0f","🚶🏻‍♂️":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼‍♂️":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽‍♂️":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾‍♂️":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿‍♂️":"1f6b6-1f3ff-200d-2642-fe0f","🚶🏻‍♀️":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼‍♀️":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽‍♀️":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾‍♀️":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿‍♀️":"1f6b6-1f3ff-200d-2640-fe0f","🧍🏻‍♂️":"1f9cd-1f3fb-200d-2642-fe0f","🧍🏼‍♂️":"1f9cd-1f3fc-200d-2642-fe0f","🧍🏽‍♂️":"1f9cd-1f3fd-200d-2642-fe0f","🧍🏾‍♂️":"1f9cd-1f3fe-200d-2642-fe0f","🧍🏿‍♂️":"1f9cd-1f3ff-200d-2642-fe0f","🧍🏻‍♀️":"1f9cd-1f3fb-200d-2640-fe0f","🧍🏼‍♀️":"1f9cd-1f3fc-200d-2640-fe0f","🧍🏽‍♀️":"1f9cd-1f3fd-200d-2640-fe0f","🧍🏾‍♀️":"1f9cd-1f3fe-200d-2640-fe0f","🧍🏿‍♀️":"1f9cd-1f3ff-200d-2640-fe0f","🧎🏻‍♂️":"1f9ce-1f3fb-200d-2642-fe0f","🧎🏼‍♂️":"1f9ce-1f3fc-200d-2642-fe0f","🧎🏽‍♂️":"1f9ce-1f3fd-200d-2642-fe0f","🧎🏾‍♂️":"1f9ce-1f3fe-200d-2642-fe0f","🧎🏿‍♂️":"1f9ce-1f3ff-200d-2642-fe0f","🧎🏻‍♀️":"1f9ce-1f3fb-200d-2640-fe0f","🧎🏼‍♀️":"1f9ce-1f3fc-200d-2640-fe0f","🧎🏽‍♀️":"1f9ce-1f3fd-200d-2640-fe0f","🧎🏾‍♀️":"1f9ce-1f3fe-200d-2640-fe0f","🧎🏿‍♀️":"1f9ce-1f3ff-200d-2640-fe0f","🏃🏻‍♂️":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼‍♂️":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽‍♂️":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾‍♂️":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿‍♂️":"1f3c3-1f3ff-200d-2642-fe0f","🏃🏻‍♀️":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼‍♀️":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽‍♀️":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾‍♀️":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿‍♀️":"1f3c3-1f3ff-200d-2640-fe0f","🧖🏻‍♂️":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼‍♂️":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽‍♂️":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾‍♂️":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿‍♂️":"1f9d6-1f3ff-200d-2642-fe0f","🧖🏻‍♀️":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼‍♀️":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽‍♀️":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾‍♀️":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿‍♀️":"1f9d6-1f3ff-200d-2640-fe0f","🧗🏻‍♂️":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼‍♂️":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽‍♂️":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾‍♂️":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿‍♂️":"1f9d7-1f3ff-200d-2642-fe0f","🧗🏻‍♀️":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼‍♀️":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽‍♀️":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾‍♀️":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿‍♀️":"1f9d7-1f3ff-200d-2640-fe0f","🏌️‍♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻‍♂️":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼‍♂️":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽‍♂️":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾‍♂️":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿‍♂️":"1f3cc-1f3ff-200d-2642-fe0f","🏌️‍♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻‍♀️":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼‍♀️":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽‍♀️":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾‍♀️":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿‍♀️":"1f3cc-1f3ff-200d-2640-fe0f","🏄🏻‍♂️":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼‍♂️":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽‍♂️":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾‍♂️":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿‍♂️":"1f3c4-1f3ff-200d-2642-fe0f","🏄🏻‍♀️":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼‍♀️":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽‍♀️":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾‍♀️":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿‍♀️":"1f3c4-1f3ff-200d-2640-fe0f","🚣🏻‍♂️":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼‍♂️":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽‍♂️":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾‍♂️":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿‍♂️":"1f6a3-1f3ff-200d-2642-fe0f","🚣🏻‍♀️":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼‍♀️":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽‍♀️":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾‍♀️":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿‍♀️":"1f6a3-1f3ff-200d-2640-fe0f","🏊🏻‍♂️":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼‍♂️":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽‍♂️":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾‍♂️":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿‍♂️":"1f3ca-1f3ff-200d-2642-fe0f","🏊🏻‍♀️":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼‍♀️":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽‍♀️":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾‍♀️":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿‍♀️":"1f3ca-1f3ff-200d-2640-fe0f","⛹️‍♂️":"26f9-fe0f-200d-2642-fe0f","⛹🏻‍♂️":"26f9-1f3fb-200d-2642-fe0f","⛹🏼‍♂️":"26f9-1f3fc-200d-2642-fe0f","⛹🏽‍♂️":"26f9-1f3fd-200d-2642-fe0f","⛹🏾‍♂️":"26f9-1f3fe-200d-2642-fe0f","⛹🏿‍♂️":"26f9-1f3ff-200d-2642-fe0f","⛹️‍♀️":"26f9-fe0f-200d-2640-fe0f","⛹🏻‍♀️":"26f9-1f3fb-200d-2640-fe0f","⛹🏼‍♀️":"26f9-1f3fc-200d-2640-fe0f","⛹🏽‍♀️":"26f9-1f3fd-200d-2640-fe0f","⛹🏾‍♀️":"26f9-1f3fe-200d-2640-fe0f","⛹🏿‍♀️":"26f9-1f3ff-200d-2640-fe0f","🏋️‍♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻‍♂️":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼‍♂️":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽‍♂️":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾‍♂️":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿‍♂️":"1f3cb-1f3ff-200d-2642-fe0f","🏋️‍♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻‍♀️":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼‍♀️":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽‍♀️":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾‍♀️":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿‍♀️":"1f3cb-1f3ff-200d-2640-fe0f","🚴🏻‍♂️":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼‍♂️":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽‍♂️":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾‍♂️":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿‍♂️":"1f6b4-1f3ff-200d-2642-fe0f","🚴🏻‍♀️":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼‍♀️":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽‍♀️":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾‍♀️":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿‍♀️":"1f6b4-1f3ff-200d-2640-fe0f","🚵🏻‍♂️":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼‍♂️":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽‍♂️":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾‍♂️":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿‍♂️":"1f6b5-1f3ff-200d-2642-fe0f","🚵🏻‍♀️":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼‍♀️":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽‍♀️":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾‍♀️":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿‍♀️":"1f6b5-1f3ff-200d-2640-fe0f","🤸🏻‍♂️":"1f938-1f3fb-200d-2642-fe0f","🤸🏼‍♂️":"1f938-1f3fc-200d-2642-fe0f","🤸🏽‍♂️":"1f938-1f3fd-200d-2642-fe0f","🤸🏾‍♂️":"1f938-1f3fe-200d-2642-fe0f","🤸🏿‍♂️":"1f938-1f3ff-200d-2642-fe0f","🤸🏻‍♀️":"1f938-1f3fb-200d-2640-fe0f","🤸🏼‍♀️":"1f938-1f3fc-200d-2640-fe0f","🤸🏽‍♀️":"1f938-1f3fd-200d-2640-fe0f","🤸🏾‍♀️":"1f938-1f3fe-200d-2640-fe0f","🤸🏿‍♀️":"1f938-1f3ff-200d-2640-fe0f","🤽🏻‍♂️":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼‍♂️":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽‍♂️":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾‍♂️":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿‍♂️":"1f93d-1f3ff-200d-2642-fe0f","🤽🏻‍♀️":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼‍♀️":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽‍♀️":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾‍♀️":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿‍♀️":"1f93d-1f3ff-200d-2640-fe0f","🤾🏻‍♂️":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼‍♂️":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽‍♂️":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾‍♂️":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿‍♂️":"1f93e-1f3ff-200d-2642-fe0f","🤾🏻‍♀️":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼‍♀️":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽‍♀️":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾‍♀️":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿‍♀️":"1f93e-1f3ff-200d-2640-fe0f","🤹🏻‍♂️":"1f939-1f3fb-200d-2642-fe0f","🤹🏼‍♂️":"1f939-1f3fc-200d-2642-fe0f","🤹🏽‍♂️":"1f939-1f3fd-200d-2642-fe0f","🤹🏾‍♂️":"1f939-1f3fe-200d-2642-fe0f","🤹🏿‍♂️":"1f939-1f3ff-200d-2642-fe0f","🤹🏻‍♀️":"1f939-1f3fb-200d-2640-fe0f","🤹🏼‍♀️":"1f939-1f3fc-200d-2640-fe0f","🤹🏽‍♀️":"1f939-1f3fd-200d-2640-fe0f","🤹🏾‍♀️":"1f939-1f3fe-200d-2640-fe0f","🤹🏿‍♀️":"1f939-1f3ff-200d-2640-fe0f","🧘🏻‍♂️":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼‍♂️":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽‍♂️":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾‍♂️":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿‍♂️":"1f9d8-1f3ff-200d-2642-fe0f","🧘🏻‍♀️":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼‍♀️":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽‍♀️":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾‍♀️":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿‍♀️":"1f9d8-1f3ff-200d-2640-fe0f","🧑‍🤝‍🧑":"1f9d1-200d-1f91d-200d-1f9d1","👩‍❤‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤‍👩":"1f469-200d-2764-fe0f-200d-1f469","👨‍👩‍👦":"1f468-200d-1f469-200d-1f466","👨‍👩‍👧":"1f468-200d-1f469-200d-1f467","👨‍👨‍👦":"1f468-200d-1f468-200d-1f466","👨‍👨‍👧":"1f468-200d-1f468-200d-1f467","👩‍👩‍👦":"1f469-200d-1f469-200d-1f466","👩‍👩‍👧":"1f469-200d-1f469-200d-1f467","👨‍👦‍👦":"1f468-200d-1f466-200d-1f466","👨‍👧‍👦":"1f468-200d-1f467-200d-1f466","👨‍👧‍👧":"1f468-200d-1f467-200d-1f467","👩‍👦‍👦":"1f469-200d-1f466-200d-1f466","👩‍👧‍👦":"1f469-200d-1f467-200d-1f466","👩‍👧‍👧":"1f469-200d-1f467-200d-1f467","🏳️‍⚧️":"1f3f3-fe0f-200d-26a7-fe0f","👩‍❤️‍👨":"1f469-200d-2764-fe0f-200d-1f468","👨‍❤️‍👨":"1f468-200d-2764-fe0f-200d-1f468","👩‍❤️‍👩":"1f469-200d-2764-fe0f-200d-1f469","🧑🏻‍🤝‍🧑🏻":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fb","🧑🏻‍🤝‍🧑🏼":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fc","🧑🏻‍🤝‍🧑🏽":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fd","🧑🏻‍🤝‍🧑🏾":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3fe","🧑🏻‍🤝‍🧑🏿":"1f9d1-1f3fb-200d-1f91d-200d-1f9d1-1f3ff","🧑🏼‍🤝‍🧑🏻":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fb","🧑🏼‍🤝‍🧑🏼":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fc","🧑🏼‍🤝‍🧑🏽":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fd","🧑🏼‍🤝‍🧑🏾":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3fe","🧑🏼‍🤝‍🧑🏿":"1f9d1-1f3fc-200d-1f91d-200d-1f9d1-1f3ff","🧑🏽‍🤝‍🧑🏻":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fb","🧑🏽‍🤝‍🧑🏼":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fc","🧑🏽‍🤝‍🧑🏽":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fd","🧑🏽‍🤝‍🧑🏾":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3fe","🧑🏽‍🤝‍🧑🏿":"1f9d1-1f3fd-200d-1f91d-200d-1f9d1-1f3ff","🧑🏾‍🤝‍🧑🏻":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fb","🧑🏾‍🤝‍🧑🏼":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fc","🧑🏾‍🤝‍🧑🏽":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fd","🧑🏾‍🤝‍🧑🏾":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3fe","🧑🏾‍🤝‍🧑🏿":"1f9d1-1f3fe-200d-1f91d-200d-1f9d1-1f3ff","🧑🏿‍🤝‍🧑🏻":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fb","🧑🏿‍🤝‍🧑🏼":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fc","🧑🏿‍🤝‍🧑🏽":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fd","🧑🏿‍🤝‍🧑🏾":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3fe","🧑🏿‍🤝‍🧑🏿":"1f9d1-1f3ff-200d-1f91d-200d-1f9d1-1f3ff","👩🏻‍🤝‍👩🏼":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fc","👩🏻‍🤝‍👩🏽":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fd","👩🏻‍🤝‍👩🏾":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👩🏿":"1f469-1f3fb-200d-1f91d-200d-1f469-1f3ff","👩🏼‍🤝‍👩🏻":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fb","👩🏼‍🤝‍👩🏽":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fd","👩🏼‍🤝‍👩🏾":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3fe","👩🏼‍🤝‍👩🏿":"1f469-1f3fc-200d-1f91d-200d-1f469-1f3ff","👩🏽‍🤝‍👩🏻":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fb","👩🏽‍🤝‍👩🏼":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fc","👩🏽‍🤝‍👩🏾":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3fe","👩🏽‍🤝‍👩🏿":"1f469-1f3fd-200d-1f91d-200d-1f469-1f3ff","👩🏾‍🤝‍👩🏻":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fb","👩🏾‍🤝‍👩🏼":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fc","👩🏾‍🤝‍👩🏽":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3fd","👩🏾‍🤝‍👩🏿":"1f469-1f3fe-200d-1f91d-200d-1f469-1f3ff","👩🏿‍🤝‍👩🏻":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fb","👩🏿‍🤝‍👩🏼":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fc","👩🏿‍🤝‍👩🏽":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fd","👩🏿‍🤝‍👩🏾":"1f469-1f3ff-200d-1f91d-200d-1f469-1f3fe","👩🏻‍🤝‍👨🏼":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fc","👩🏻‍🤝‍👨🏽":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fd","👩🏻‍🤝‍👨🏾":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3fe","👩🏻‍🤝‍👨🏿":"1f469-1f3fb-200d-1f91d-200d-1f468-1f3ff","👩🏼‍🤝‍👨🏻":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fb","👩🏼‍🤝‍👨🏽":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fd","👩🏼‍🤝‍👨🏾":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3fe","👩🏼‍🤝‍👨🏿":"1f469-1f3fc-200d-1f91d-200d-1f468-1f3ff","👩🏽‍🤝‍👨🏻":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fb","👩🏽‍🤝‍👨🏼":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fc","👩🏽‍🤝‍👨🏾":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3fe","👩🏽‍🤝‍👨🏿":"1f469-1f3fd-200d-1f91d-200d-1f468-1f3ff","👩🏾‍🤝‍👨🏻":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fb","👩🏾‍🤝‍👨🏼":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fc","👩🏾‍🤝‍👨🏽":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3fd","👩🏾‍🤝‍👨🏿":"1f469-1f3fe-200d-1f91d-200d-1f468-1f3ff","👩🏿‍🤝‍👨🏻":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fb","👩🏿‍🤝‍👨🏼":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fc","👩🏿‍🤝‍👨🏽":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fd","👩🏿‍🤝‍👨🏾":"1f469-1f3ff-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏼":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fc","👨🏻‍🤝‍👨🏽":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fd","👨🏻‍🤝‍👨🏾":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3fe","👨🏻‍🤝‍👨🏿":"1f468-1f3fb-200d-1f91d-200d-1f468-1f3ff","👨🏼‍🤝‍👨🏻":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fb","👨🏼‍🤝‍👨🏽":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fd","👨🏼‍🤝‍👨🏾":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3fe","👨🏼‍🤝‍👨🏿":"1f468-1f3fc-200d-1f91d-200d-1f468-1f3ff","👨🏽‍🤝‍👨🏻":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fb","👨🏽‍🤝‍👨🏼":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fc","👨🏽‍🤝‍👨🏾":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3fe","👨🏽‍🤝‍👨🏿":"1f468-1f3fd-200d-1f91d-200d-1f468-1f3ff","👨🏾‍🤝‍👨🏻":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fb","👨🏾‍🤝‍👨🏼":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fc","👨🏾‍🤝‍👨🏽":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3fd","👨🏾‍🤝‍👨🏿":"1f468-1f3fe-200d-1f91d-200d-1f468-1f3ff","👨🏿‍🤝‍👨🏻":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fb","👨🏿‍🤝‍👨🏼":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fc","👨🏿‍🤝‍👨🏽":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fd","👨🏿‍🤝‍👨🏾":"1f468-1f3ff-200d-1f91d-200d-1f468-1f3fe","👩‍❤‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","👨‍👩‍👧‍👦":"1f468-200d-1f469-200d-1f467-200d-1f466","👨‍👩‍👦‍👦":"1f468-200d-1f469-200d-1f466-200d-1f466","👨‍👩‍👧‍👧":"1f468-200d-1f469-200d-1f467-200d-1f467","👨‍👨‍👧‍👦":"1f468-200d-1f468-200d-1f467-200d-1f466","👨‍👨‍👦‍👦":"1f468-200d-1f468-200d-1f466-200d-1f466","👨‍👨‍👧‍👧":"1f468-200d-1f468-200d-1f467-200d-1f467","👩‍👩‍👧‍👦":"1f469-200d-1f469-200d-1f467-200d-1f466","👩‍👩‍👦‍👦":"1f469-200d-1f469-200d-1f466-200d-1f466","👩‍👩‍👧‍👧":"1f469-200d-1f469-200d-1f467-200d-1f467","🏴󠁧󠁢󠁥󠁮󠁧󠁿":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","🏴󠁧󠁢󠁳󠁣󠁴󠁿":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","🏴󠁧󠁢󠁷󠁬󠁳󠁿":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","👩‍❤️‍💋‍👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨‍❤️‍💋‍👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩‍❤️‍💋‍👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","🧑🏻‍❤️‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏻‍❤️‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏻‍❤️‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏻‍❤️‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏼‍❤️‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏼‍❤️‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏼‍❤️‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏼‍❤️‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏽‍❤️‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏽‍❤️‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏽‍❤️‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3fe","🧑🏽‍❤️‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏾‍❤️‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏾‍❤️‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏾‍❤️‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏾‍❤️‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f9d1-1f3ff","🧑🏿‍❤️‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fb","🧑🏿‍❤️‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fc","🧑🏿‍❤️‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fd","🧑🏿‍❤️‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f9d1-1f3fe","👩🏻‍❤️‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👩🏻‍❤️‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👩🏻‍❤️‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👩🏻‍❤️‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👩🏻‍❤️‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👩🏼‍❤️‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👩🏼‍❤️‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👩🏼‍❤️‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👩🏼‍❤️‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👩🏼‍❤️‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👩🏽‍❤️‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👩🏽‍❤️‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👩🏽‍❤️‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👩🏽‍❤️‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👩🏽‍❤️‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👩🏾‍❤️‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👩🏾‍❤️‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👩🏾‍❤️‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👩🏾‍❤️‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👩🏾‍❤️‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👩🏿‍❤️‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👩🏿‍❤️‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👩🏿‍❤️‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👩🏿‍❤️‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👩🏿‍❤️‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👨🏻‍❤️‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fb","👨🏻‍❤️‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fc","👨🏻‍❤️‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fd","👨🏻‍❤️‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3fe","👨🏻‍❤️‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f468-1f3ff","👨🏼‍❤️‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fb","👨🏼‍❤️‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fc","👨🏼‍❤️‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fd","👨🏼‍❤️‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3fe","👨🏼‍❤️‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f468-1f3ff","👨🏽‍❤️‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fb","👨🏽‍❤️‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fc","👨🏽‍❤️‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fd","👨🏽‍❤️‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3fe","👨🏽‍❤️‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f468-1f3ff","👨🏾‍❤️‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fb","👨🏾‍❤️‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fc","👨🏾‍❤️‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fd","👨🏾‍❤️‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3fe","👨🏾‍❤️‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f468-1f3ff","👨🏿‍❤️‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fb","👨🏿‍❤️‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fc","👨🏿‍❤️‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fd","👨🏿‍❤️‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3fe","👨🏿‍❤️‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f468-1f3ff","👩🏻‍❤️‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fb","👩🏻‍❤️‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fc","👩🏻‍❤️‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fd","👩🏻‍❤️‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3fe","👩🏻‍❤️‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f469-1f3ff","👩🏼‍❤️‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fb","👩🏼‍❤️‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fc","👩🏼‍❤️‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fd","👩🏼‍❤️‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3fe","👩🏼‍❤️‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f469-1f3ff","👩🏽‍❤️‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fb","👩🏽‍❤️‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fc","👩🏽‍❤️‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fd","👩🏽‍❤️‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3fe","👩🏽‍❤️‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f469-1f3ff","👩🏾‍❤️‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fb","👩🏾‍❤️‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fc","👩🏾‍❤️‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fd","👩🏾‍❤️‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3fe","👩🏾‍❤️‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f469-1f3ff","👩🏿‍❤️‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fb","👩🏿‍❤️‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fc","👩🏿‍❤️‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fd","👩🏿‍❤️‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3fe","👩🏿‍❤️‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f469-1f3ff","🧑🏻‍❤‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","🧑🏻‍❤️‍💋‍🧑🏼":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏻‍❤️‍💋‍🧑🏽":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏻‍❤️‍💋‍🧑🏾":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏻‍❤️‍💋‍🧑🏿":"1f9d1-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏼‍❤️‍💋‍🧑🏻":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏼‍❤️‍💋‍🧑🏽":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏼‍❤️‍💋‍🧑🏾":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏼‍❤️‍💋‍🧑🏿":"1f9d1-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏽‍❤️‍💋‍🧑🏻":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏽‍❤️‍💋‍🧑🏼":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏽‍❤️‍💋‍🧑🏾":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","🧑🏽‍❤️‍💋‍🧑🏿":"1f9d1-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏾‍❤️‍💋‍🧑🏻":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏾‍❤️‍💋‍🧑🏼":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏾‍❤️‍💋‍🧑🏽":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏾‍❤️‍💋‍🧑🏿":"1f9d1-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3ff","🧑🏿‍❤️‍💋‍🧑🏻":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fb","🧑🏿‍❤️‍💋‍🧑🏼":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fc","🧑🏿‍❤️‍💋‍🧑🏽":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fd","🧑🏿‍❤️‍💋‍🧑🏾":"1f9d1-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f9d1-1f3fe","👩🏻‍❤️‍💋‍👨🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏻‍❤️‍💋‍👨🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏻‍❤️‍💋‍👨🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏻‍❤️‍💋‍👨🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏻‍❤️‍💋‍👨🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏼‍❤️‍💋‍👨🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏼‍❤️‍💋‍👨🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏼‍❤️‍💋‍👨🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏼‍❤️‍💋‍👨🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏼‍❤️‍💋‍👨🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏽‍❤️‍💋‍👨🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏽‍❤️‍💋‍👨🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏽‍❤️‍💋‍👨🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏽‍❤️‍💋‍👨🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏽‍❤️‍💋‍👨🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏾‍❤️‍💋‍👨🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏾‍❤️‍💋‍👨🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏾‍❤️‍💋‍👨🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏾‍❤️‍💋‍👨🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏾‍❤️‍💋‍👨🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏿‍❤️‍💋‍👨🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👩🏿‍❤️‍💋‍👨🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👩🏿‍❤️‍💋‍👨🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👩🏿‍❤️‍💋‍👨🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👩🏿‍❤️‍💋‍👨🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏻‍❤️‍💋‍👨🏻":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏻‍❤️‍💋‍👨🏼":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏻‍❤️‍💋‍👨🏽":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏻‍❤️‍💋‍👨🏾":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏻‍❤️‍💋‍👨🏿":"1f468-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏼‍❤️‍💋‍👨🏻":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏼‍❤️‍💋‍👨🏼":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏼‍❤️‍💋‍👨🏽":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏼‍❤️‍💋‍👨🏾":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏼‍❤️‍💋‍👨🏿":"1f468-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏽‍❤️‍💋‍👨🏻":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏽‍❤️‍💋‍👨🏼":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏽‍❤️‍💋‍👨🏽":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏽‍❤️‍💋‍👨🏾":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏽‍❤️‍💋‍👨🏿":"1f468-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏾‍❤️‍💋‍👨🏻":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏾‍❤️‍💋‍👨🏼":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏾‍❤️‍💋‍👨🏽":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏾‍❤️‍💋‍👨🏾":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏾‍❤️‍💋‍👨🏿":"1f468-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👨🏿‍❤️‍💋‍👨🏻":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fb","👨🏿‍❤️‍💋‍👨🏼":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fc","👨🏿‍❤️‍💋‍👨🏽":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fd","👨🏿‍❤️‍💋‍👨🏾":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3fe","👨🏿‍❤️‍💋‍👨🏿":"1f468-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f468-1f3ff","👩🏻‍❤️‍💋‍👩🏻":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏻‍❤️‍💋‍👩🏼":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏻‍❤️‍💋‍👩🏽":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏻‍❤️‍💋‍👩🏾":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏻‍❤️‍💋‍👩🏿":"1f469-1f3fb-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏼‍❤️‍💋‍👩🏻":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏼‍❤️‍💋‍👩🏼":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏼‍❤️‍💋‍👩🏽":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏼‍❤️‍💋‍👩🏾":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏼‍❤️‍💋‍👩🏿":"1f469-1f3fc-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏽‍❤️‍💋‍👩🏻":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏽‍❤️‍💋‍👩🏼":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏽‍❤️‍💋‍👩🏽":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏽‍❤️‍💋‍👩🏾":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏽‍❤️‍💋‍👩🏿":"1f469-1f3fd-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏾‍❤️‍💋‍👩🏻":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏾‍❤️‍💋‍👩🏼":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏾‍❤️‍💋‍👩🏽":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏾‍❤️‍💋‍👩🏾":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏾‍❤️‍💋‍👩🏿":"1f469-1f3fe-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff","👩🏿‍❤️‍💋‍👩🏻":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fb","👩🏿‍❤️‍💋‍👩🏼":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fc","👩🏿‍❤️‍💋‍👩🏽":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fd","👩🏿‍❤️‍💋‍👩🏾":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3fe","👩🏿‍❤️‍💋‍👩🏿":"1f469-1f3ff-200d-2764-fe0f-200d-1f48b-200d-1f469-1f3ff"} \ No newline at end of file From bd220c32f162230d31e99bdabd30aea787a89cfc Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Mon, 7 Nov 2022 00:13:53 +0900 Subject: [PATCH 290/500] Update SECURITY.md (#19869) --- SECURITY.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 9a72f3640b..d2543b18d6 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,9 +10,8 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through ## Supported Versions -| Version | Supported | -| ------- | ------------------ | -| 3.5.x | Yes | -| 3.4.x | Yes | -| 3.3.x | No | -| < 3.3 | No | +| Version | Supported | +| ------- | ----------| +| 4.0.x | Yes | +| 3.5.x | Yes | +| < 3.5 | No | From fa293f03faceb26229ec4b74c3c679b4cf800bd9 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Nov 2022 00:14:39 +0100 Subject: [PATCH 291/500] [Glitch] Fix handling of duplicate and out-of-order notifications in WebUI Port 7c8e2b9859f2e206110accb74d19ec4591d79780 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/reducers/notifications.js | 97 ++++++++++++++----- 1 file changed, 75 insertions(+), 22 deletions(-) diff --git a/app/javascript/flavours/glitch/reducers/notifications.js b/app/javascript/flavours/glitch/reducers/notifications.js index 4adb0a3ba6..18610e7583 100644 --- a/app/javascript/flavours/glitch/reducers/notifications.js +++ b/app/javascript/flavours/glitch/reducers/notifications.js @@ -52,20 +52,26 @@ const initialState = ImmutableMap({ markNewForDelete: false, }); -const notificationToMap = (state, notification) => ImmutableMap({ +const notificationToMap = (notification, markForDelete) => ImmutableMap({ id: notification.id, type: notification.type, account: notification.account.id, - markedForDelete: state.get('markNewForDelete'), + markedForDelete: markForDelete, status: notification.status ? notification.status.id : null, report: notification.report ? fromJS(notification.report) : null, }); const normalizeNotification = (state, notification, usePendingItems) => { + const markNewForDelete = state.get('markNewForDelete'); const top = state.get('top'); + // Under currently unknown conditions, the client may receive duplicates from the server + if (state.get('pendingItems').some((item) => item?.get('id') === notification.id) || state.get('items').some((item) => item?.get('id') === notification.id)) { + return state; + } + if (usePendingItems || !state.get('pendingItems').isEmpty()) { - return state.update('pendingItems', list => list.unshift(notificationToMap(state, notification))).update('unread', unread => unread + 1); + return state.update('pendingItems', list => list.unshift(notificationToMap(notification, markNewForDelete))).update('unread', unread => unread + 1); } if (shouldCountUnreadNotifications(state)) { @@ -79,32 +85,79 @@ const normalizeNotification = (state, notification, usePendingItems) => { list = list.take(20); } - return list.unshift(notificationToMap(state, notification)); + return list.unshift(notificationToMap(notification, markNewForDelete)); }); }; -const expandNormalizedNotifications = (state, notifications, next, isLoadingRecent, usePendingItems) => { - const lastReadId = state.get('lastReadId'); - let items = ImmutableList(); +const expandNormalizedNotifications = (state, notifications, next, isLoadingMore, isLoadingRecent, usePendingItems) => { + // This method is pretty tricky because: + // - existing notifications might be out of order + // - the existing notifications may have gaps, most often explicitly noted with a `null` item + // - ideally, we don't want it to reorder existing items + // - `notifications` may include items that are already included + // - this function can be called either to fill in a gap, or load newer items - notifications.forEach((n, i) => { - items = items.set(i, notificationToMap(state, n)); - }); + const markNewForDelete = state.get('markNewForDelete'); + const lastReadId = state.get('lastReadId'); + const newItems = ImmutableList(notifications.map((notification) => notificationToMap(notification, markNewForDelete))); return state.withMutations(mutable => { - if (!items.isEmpty()) { + if (!newItems.isEmpty()) { usePendingItems = isLoadingRecent && (usePendingItems || !mutable.get('pendingItems').isEmpty()); - mutable.update(usePendingItems ? 'pendingItems' : 'items', list => { - const lastIndex = 1 + list.findLastIndex( - item => item !== null && (compareId(item.get('id'), items.last().get('id')) > 0 || item.get('id') === items.last().get('id')), - ); - - const firstIndex = 1 + list.take(lastIndex).findLastIndex( - item => item !== null && compareId(item.get('id'), items.first().get('id')) > 0, + mutable.update(usePendingItems ? 'pendingItems' : 'items', oldItems => { + // If called to poll *new* notifications, we just need to add them on top without duplicates + if (isLoadingRecent) { + const idsToCheck = oldItems.map(item => item?.get('id')).toSet(); + const insertedItems = newItems.filterNot(item => idsToCheck.includes(item.get('id'))); + return insertedItems.concat(oldItems); + } + + // If called to expand more (presumably older than any known to the WebUI), we just have to + // add them to the bottom without duplicates + if (isLoadingMore) { + const idsToCheck = oldItems.map(item => item?.get('id')).toSet(); + const insertedItems = newItems.filterNot(item => idsToCheck.includes(item.get('id'))); + return oldItems.concat(insertedItems); + } + + // Now this gets tricky, as we don't necessarily know for sure where the gap to fill is, + // and some items in the timeline may not be properly ordered. + + // However, we know that `newItems.last()` is the oldest item that was requested and that + // there is no “hole” between `newItems.last()` and `newItems.first()`. + + // First, find the furthest (if properly sorted, oldest) item in the notifications that is + // newer than the oldest fetched one, as it's most likely that it delimits the gap. + // Start the gap *after* that item. + const lastIndex = oldItems.findLastIndex(item => item !== null && compareId(item.get('id'), newItems.last().get('id')) >= 0) + 1; + + // Then, try to find the furthest (if properly sorted, oldest) item in the notifications that + // is newer than the most recent fetched one, as it delimits a section comprised of only + // items older or within `newItems` (or that were deleted from the server, so should be removed + // anyway). + // Stop the gap *after* that item. + const firstIndex = oldItems.take(lastIndex).findLastIndex(item => item !== null && compareId(item.get('id'), newItems.first().get('id')) > 0) + 1; + + // At this point: + // - no `oldItems` after `firstIndex` is newer than any of the `newItems` + // - all `oldItems` after `lastIndex` are older than every of the `newItems` + // - it is possible for items in the replaced slice to be older than every `newItems` + // - it is possible for items before `firstIndex` to be in the `newItems` range + // Therefore: + // - to avoid losing items, items from the replaced slice that are older than `newItems` + // should be added in the back. + // - to avoid duplicates, `newItems` should be checked the first `firstIndex` items of + // `oldItems` + const idsToCheck = oldItems.take(firstIndex).map(item => item?.get('id')).toSet(); + const insertedItems = newItems.filterNot(item => idsToCheck.includes(item.get('id'))); + const olderItems = oldItems.slice(firstIndex, lastIndex).filter(item => item !== null && compareId(item.get('id'), newItems.last().get('id')) < 0); + + return oldItems.take(firstIndex).concat( + insertedItems, + olderItems, + oldItems.skip(lastIndex), ); - - return list.take(firstIndex).concat(items, list.skip(lastIndex)); }); } @@ -115,7 +168,7 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece if (shouldCountUnreadNotifications(state)) { mutable.set('unread', mutable.get('pendingItems').count(item => item !== null) + mutable.get('items').count(item => item && compareId(item.get('id'), lastReadId) > 0)); } else { - const mostRecent = items.find(item => item !== null); + const mostRecent = newItems.find(item => item !== null); if (mostRecent && compareId(lastReadId, mostRecent.get('id')) < 0) { mutable.set('lastReadId', mostRecent.get('id')); } @@ -264,7 +317,7 @@ export default function notifications(state = initialState, action) { case NOTIFICATIONS_UPDATE: return normalizeNotification(state, action.notification, action.usePendingItems); case NOTIFICATIONS_EXPAND_SUCCESS: - return expandNormalizedNotifications(state, action.notifications, action.next, action.isLoadingRecent, action.usePendingItems); + return expandNormalizedNotifications(state, action.notifications, action.next, action.isLoadingMore, action.isLoadingRecent, action.usePendingItems); case ACCOUNT_BLOCK_SUCCESS: return filterNotifications(state, [action.relationship.id]); case ACCOUNT_MUTE_SUCCESS: From 043715905635cea6449d3984af61bfd3a90a238d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:25 +0100 Subject: [PATCH 292/500] [Glitch] Fix showing profile's featured tags on individual statuses Port bfafb114a2135b1f21ba7e6d54ee13e8da75b629 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/components/navigation_portal.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/components/navigation_portal.js b/app/javascript/flavours/glitch/components/navigation_portal.js index 16a8ca3f50..90afa1da0b 100644 --- a/app/javascript/flavours/glitch/components/navigation_portal.js +++ b/app/javascript/flavours/glitch/components/navigation_portal.js @@ -21,7 +21,12 @@ class NavigationPortal extends React.PureComponent { render () { return ( - + + + + + + ); From b6c0ef70a2c088fecd0609a96ef1a47fb6ee7ce6 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 5 Nov 2022 18:28:13 +0100 Subject: [PATCH 293/500] [Glitch] Change sign-in banner to reflect disabled or moved account status Port 312d616371096235f1f317041300b8220c447613 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/containers/mastodon.js | 2 + .../ui/components/disabled_account_banner.js | 92 +++++++++++++++++++ .../ui/components/navigation_panel.js | 5 +- .../flavours/glitch/initial_state.js | 4 + .../glitch/styles/components/signed_out.scss | 14 +++ 5 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.js diff --git a/app/javascript/flavours/glitch/containers/mastodon.js b/app/javascript/flavours/glitch/containers/mastodon.js index cf870102b6..6c92376d81 100644 --- a/app/javascript/flavours/glitch/containers/mastodon.js +++ b/app/javascript/flavours/glitch/containers/mastodon.js @@ -33,6 +33,7 @@ store.dispatch(fetchCustomEmojis()); const createIdentityContext = state => ({ signedIn: !!state.meta.me, accountId: state.meta.me, + disabledAccountId: state.meta.disabled_account_id, accessToken: state.meta.access_token, permissions: state.role ? state.role.permissions : 0, }); @@ -47,6 +48,7 @@ export default class Mastodon extends React.PureComponent { identity: PropTypes.shape({ signedIn: PropTypes.bool.isRequired, accountId: PropTypes.string, + disabledAccountId: PropTypes.string, accessToken: PropTypes.string, }).isRequired, }; diff --git a/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.js b/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.js new file mode 100644 index 0000000000..9f96b5acbf --- /dev/null +++ b/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.js @@ -0,0 +1,92 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { Link } from 'react-router-dom'; +import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; +import { disabledAccountId, movedToAccountId, domain } from 'flavours/glitch/initial_state'; +import { openModal } from 'flavours/glitch/actions/modal'; +import { logOut } from 'flavours/glitch/utils/log_out'; + +const messages = defineMessages({ + logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' }, + logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' }, +}); + +const mapStateToProps = (state) => ({ + disabledAcct: state.getIn(['accounts', disabledAccountId, 'acct']), + movedToAcct: movedToAccountId ? state.getIn(['accounts', movedToAccountId, 'acct']) : undefined, +}); + +const mapDispatchToProps = (dispatch, { intl }) => ({ + onLogout () { + dispatch(openModal('CONFIRM', { + message: intl.formatMessage(messages.logoutMessage), + confirm: intl.formatMessage(messages.logoutConfirm), + closeWhenConfirm: false, + onConfirm: () => logOut(), + })); + }, +}); + +export default @injectIntl +@connect(mapStateToProps, mapDispatchToProps) +class DisabledAccountBanner extends React.PureComponent { + + static propTypes = { + disabledAcct: PropTypes.string.isRequired, + movedToAcct: PropTypes.string, + onLogout: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + }; + + handleLogOutClick = e => { + e.preventDefault(); + e.stopPropagation(); + + this.props.onLogout(); + + return false; + } + + render () { + const { disabledAcct, movedToAcct } = this.props; + + const disabledAccountLink = ( + + {disabledAcct}@{domain} + + ); + + return ( +
      +

      + {movedToAcct ? ( + {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@{domain}`}, + }} + /> + ) : ( + + )} +

      + + + + +
      + ); + } + +}; diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js index affb5ec478..3b46c6eec0 100644 --- a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js +++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js @@ -4,6 +4,7 @@ import { defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; import { timelinePreview, showTrends } from 'flavours/glitch/initial_state'; import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; +import DisabledAccountBanner from './disabled_account_banner'; import FollowRequestsColumnLink from './follow_requests_column_link'; import ListPanel from './list_panel'; import NotificationsCounterIcon from './notifications_counter_icon'; @@ -42,7 +43,7 @@ class NavigationPanel extends React.Component { render() { const { intl, onOpenSettings } = this.props; - const { signedIn } = this.context.identity; + const { signedIn, disabledAccountId } = this.context.identity; return (
      @@ -70,7 +71,7 @@ class NavigationPanel extends React.Component { {!signedIn && (

      - + { disabledAccountId ? : }
      )} diff --git a/app/javascript/flavours/glitch/initial_state.js b/app/javascript/flavours/glitch/initial_state.js index ce6bf920c8..5be177cedf 100644 --- a/app/javascript/flavours/glitch/initial_state.js +++ b/app/javascript/flavours/glitch/initial_state.js @@ -54,6 +54,7 @@ * @property {boolean} crop_images * @property {boolean=} delete_modal * @property {boolean=} disable_swiping + * @property {string=} disabled_account_id * @property {boolean} display_media * @property {string} domain * @property {boolean=} expand_spoilers @@ -61,6 +62,7 @@ * @property {string} locale * @property {string | null} mascot * @property {string=} me + * @property {string=} moved_to_account_id * @property {string=} owner * @property {boolean} profile_directory * @property {boolean} registrations_open @@ -111,6 +113,7 @@ export const boostModal = getMeta('boost_modal'); export const cropImages = getMeta('crop_images'); export const deleteModal = getMeta('delete_modal'); export const disableSwiping = getMeta('disable_swiping'); +export const disabledAccountId = getMeta('disabled_account_id'); export const displayMedia = getMeta('display_media'); export const domain = getMeta('domain'); export const expandSpoilers = getMeta('expand_spoilers'); @@ -118,6 +121,7 @@ export const forceSingleColumn = !getMeta('advanced_layout'); export const limitedFederationMode = getMeta('limited_federation_mode'); export const mascot = getMeta('mascot'); export const me = getMeta('me'); +export const movedToAccountId = getMeta('moved_to_account_id'); export const owner = getMeta('owner'); export const profile_directory = getMeta('profile_directory'); export const reduceMotion = getMeta('reduce_motion'); diff --git a/app/javascript/flavours/glitch/styles/components/signed_out.scss b/app/javascript/flavours/glitch/styles/components/signed_out.scss index 1051b2f322..efb49305dc 100644 --- a/app/javascript/flavours/glitch/styles/components/signed_out.scss +++ b/app/javascript/flavours/glitch/styles/components/signed_out.scss @@ -4,6 +4,20 @@ p { color: $darker-text-color; margin-bottom: 20px; + + a { + color: $secondary-text-color; + text-decoration: none; + unicode-bidi: isolate; + + &:hover { + text-decoration: underline; + + .fa { + color: lighten($dark-text-color, 7%); + } + } + } } .button { From d29172a6821ca74ab56cc272347232c1004d97cb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 5 Nov 2022 21:11:35 +0100 Subject: [PATCH 294/500] [Glitch] Fix missing interpolation of domain in disabled account banner in web UI Port a442f481f850d857544eafdd0725142ed8656552 to glitch-soc Signed-off-by: Claire --- .../glitch/features/ui/components/disabled_account_banner.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.js b/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.js index 9f96b5acbf..c861d4d814 100644 --- a/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.js +++ b/app/javascript/flavours/glitch/features/ui/components/disabled_account_banner.js @@ -66,7 +66,7 @@ class DisabledAccountBanner extends React.PureComponent { defaultMessage='Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.' values={{ disabledAccount: disabledAccountLink, - movedToAccount: {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@{domain}`}, + movedToAccount: {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@${domain}`}, }} /> ) : ( From c883799a1ff37c7c004b8dc5fedc0fe14232400d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 31 Oct 2022 13:06:17 +0100 Subject: [PATCH 295/500] [Glitch] Change design of link footer Port 2d9a85db6efe0c9ccfda1420551ce3d6025bc27e to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/components/account.js | 8 ++- .../glitch/components/server_banner.js | 2 +- .../flavours/glitch/features/about/index.js | 7 +- .../features/ui/components/link_footer.js | 68 +++++++++---------- .../glitch/styles/components/about.scss | 38 ++++++++++- .../glitch/styles/components/index.scss | 37 ---------- 6 files changed, 85 insertions(+), 75 deletions(-) diff --git a/app/javascript/flavours/glitch/components/account.js b/app/javascript/flavours/glitch/components/account.js index 8bfc8e9dce..8e810ce5fb 100644 --- a/app/javascript/flavours/glitch/components/account.js +++ b/app/javascript/flavours/glitch/components/account.js @@ -27,6 +27,7 @@ export default @injectIntl class Account extends ImmutablePureComponent { static propTypes = { + size: PropTypes.number, account: ImmutablePropTypes.map, onFollow: PropTypes.func.isRequired, onBlock: PropTypes.func.isRequired, @@ -41,6 +42,10 @@ class Account extends ImmutablePureComponent { onActionClick: PropTypes.func, }; + static defaultProps = { + size: 36, + }; + handleFollow = () => { this.props.onFollow(this.props.account); } @@ -75,6 +80,7 @@ class Account extends ImmutablePureComponent { actionIcon, actionTitle, defaultAction, + size, } = this.props; if (!account) { @@ -163,7 +169,7 @@ class Account extends ImmutablePureComponent {
      -
      +
      {mute_expires_at}
      diff --git a/app/javascript/flavours/glitch/components/server_banner.js b/app/javascript/flavours/glitch/components/server_banner.js index 9cb0ef13c0..36e0ff2381 100644 --- a/app/javascript/flavours/glitch/components/server_banner.js +++ b/app/javascript/flavours/glitch/components/server_banner.js @@ -61,7 +61,7 @@ class ServerBanner extends React.PureComponent {

      - +
      diff --git a/app/javascript/flavours/glitch/features/about/index.js b/app/javascript/flavours/glitch/features/about/index.js index 3d26c59bcb..4129c8236e 100644 --- a/app/javascript/flavours/glitch/features/about/index.js +++ b/app/javascript/flavours/glitch/features/about/index.js @@ -125,7 +125,7 @@ class About extends React.PureComponent {

      - +

      @@ -209,6 +209,11 @@ class About extends React.PureComponent { + +
      +

      +

      +
      diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.js b/app/javascript/flavours/glitch/features/ui/components/link_footer.js index 3f74c908ac..d7a4cf1304 100644 --- a/app/javascript/flavours/glitch/features/ui/components/link_footer.js +++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.js @@ -3,7 +3,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import { version, repository, source_url, profile_directory as profileDirectory } from 'flavours/glitch/initial_state'; +import { domain, version, source_url, profile_directory as profileDirectory } from 'flavours/glitch/initial_state'; import { logOut } from 'flavours/glitch/utils/log_out'; import { openModal } from 'flavours/glitch/actions/modal'; import { PERMISSION_INVITE_USERS } from 'flavours/glitch/permissions'; @@ -48,44 +48,44 @@ class LinkFooter extends React.PureComponent { render () { const { signedIn, permissions } = this.context.identity; - const items = []; - items.push(); - items.push(); - items.push(); - items.push(); - items.push(); - items.push(); - - if (profileDirectory) { - items.push(); - } - - if (signedIn) { - if ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS) { - items.push(); - } - - items.push(); - items.push(); - } + const canInvite = signedIn && ((permissions & PERMISSION_INVITE_USERS) === PERMISSION_INVITE_USERS); + const canProfileDirectory = profileDirectory; return ( -
      -
        - {items.map((item, index, array) => ( -
      • {item} { index === array.length - 1 ? null : ' · ' }
      • - ))} -
      +
      +

      + {domain}: + {' '} + + {canInvite && ( + <> + {' · '} + + + )} + {canProfileDirectory && ( + <> + {' · '} + + + )} + {' · '} + +

      - {repository} (v{version}), - Mastodon: Mastodon }} - /> + Mastodon: + {' '} + + {' · '} + + {' · '} + + {' · '} + + {' · '} + v{version}

      ); diff --git a/app/javascript/flavours/glitch/styles/components/about.scss b/app/javascript/flavours/glitch/styles/components/about.scss index ca9ba3ebf8..c6cc6c6154 100644 --- a/app/javascript/flavours/glitch/styles/components/about.scss +++ b/app/javascript/flavours/glitch/styles/components/about.scss @@ -30,6 +30,34 @@ } } +.link-footer { + flex: 0 0 auto; + padding: 10px; + padding-top: 20px; + z-index: 1; + font-size: 13px; + + p { + color: $dark-text-color; + margin-bottom: 20px; + + strong { + font-weight: 500; + } + + a { + color: $dark-text-color; + text-decoration: underline; + + &:hover, + &:focus, + &:active { + text-decoration: none; + } + } + } +} + .about { padding: 20px; @@ -37,6 +65,14 @@ border-radius: 4px; } + &__footer { + color: $dark-text-color; + text-align: center; + font-size: 15px; + line-height: 22px; + margin-top: 20px; + } + &__header { margin-bottom: 30px; @@ -157,7 +193,7 @@ } } - .getting-started__footer { + .link-footer { padding: 0; margin-top: 60px; text-align: center; diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index 28f93018da..c3276b035b 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -1044,43 +1044,6 @@ color: $dark-text-color; } - &__footer { - flex: 0 0 auto; - padding: 10px; - padding-top: 20px; - z-index: 1; - font-size: 13px; - - ul { - margin-bottom: 10px; - } - - ul li { - display: inline; - } - - p { - color: $dark-text-color; - margin-bottom: 20px; - - a { - color: $dark-text-color; - text-decoration: underline; - } - } - - a { - text-decoration: none; - color: $darker-text-color; - - &:hover, - &:focus, - &:active { - text-decoration: underline; - } - } - } - &__trends { flex: 0 1 auto; opacity: 1; From cbfa5ad5dd443bd1d5242491b5f269f2d830d971 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:28:14 +0100 Subject: [PATCH 296/500] [Glitch] Fix wrong colors in the high-contrast theme Port 1c3192df6bf48eb4c3613f2a8744c809f6eeeec0 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/contrast/diff.scss | 95 ++++++++++--------- .../glitch/styles/contrast/variables.scss | 4 +- 2 files changed, 54 insertions(+), 45 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/contrast/diff.scss b/app/javascript/flavours/glitch/styles/contrast/diff.scss index a9a2039600..4fa1a03616 100644 --- a/app/javascript/flavours/glitch/styles/contrast/diff.scss +++ b/app/javascript/flavours/glitch/styles/contrast/diff.scss @@ -1,69 +1,78 @@ -// components.scss +.compose-form { + .compose-form__modifiers { + .compose-form__upload { + &-description { + input { + &::placeholder { + opacity: 1; + } + } + } + } + } +} .status__content a, -.reply-indicator__content a { - color: lighten($ui-highlight-color, 12%); +.link-footer a, +.reply-indicator__content a, +.status__content__read-more-button { text-decoration: underline; - &.mention { - text-decoration: none; - } - - &.mention span { - text-decoration: underline; - - &:hover, - &:focus, - &:active { - text-decoration: none; - } - } - &:hover, &:focus, &:active { text-decoration: none; } - &.status__content__spoiler-link { - color: $secondary-text-color; + &.mention { text-decoration: none; - } -} -.status__content__read-more-button { - text-decoration: underline; + span { + text-decoration: underline; + } - &:hover, - &:focus, - &:active { - text-decoration: none; + &:hover, + &:focus, + &:active { + span { + text-decoration: none; + } + } } } -.getting-started__footer a { - text-decoration: underline; - - &:hover, - &:focus, - &:active { - text-decoration: none; - } +.status__content a { + color: $highlight-text-color; } .nothing-here { color: $darker-text-color; } -.public-layout .public-account-header__tabs__tabs .counter.active::after { - border-bottom: 4px solid $ui-highlight-color; +.compose-form__poll-wrapper .button.button-secondary, +.compose-form .autosuggest-textarea__textarea::placeholder, +.compose-form .spoiler-input__input::placeholder, +.report-dialog-modal__textarea::placeholder, +.language-dropdown__dropdown__results__item__common-name, +.compose-form .icon-button { + color: $inverted-text-color; } -.composer { - .composer--spoiler input, - .compose-form__autosuggest-wrapper textarea { - &::placeholder { - color: $inverted-text-color; - } +.text-icon-button.active { + color: $ui-highlight-color; +} + +.language-dropdown__dropdown__results__item.active { + background: $ui-highlight-color; + font-weight: 500; +} + +.link-button:disabled { + cursor: not-allowed; + + &:hover, + &:focus, + &:active { + text-decoration: none !important; } } diff --git a/app/javascript/flavours/glitch/styles/contrast/variables.scss b/app/javascript/flavours/glitch/styles/contrast/variables.scss index ab14a7b738..e272b6ca3f 100644 --- a/app/javascript/flavours/glitch/styles/contrast/variables.scss +++ b/app/javascript/flavours/glitch/styles/contrast/variables.scss @@ -14,8 +14,8 @@ $ui-highlight-color: $classic-highlight-color !default; $darker-text-color: lighten($ui-primary-color, 20%) !default; $dark-text-color: lighten($ui-primary-color, 12%) !default; $secondary-text-color: lighten($ui-secondary-color, 6%) !default; -$highlight-text-color: lighten($ui-highlight-color, 8%) !default; -$action-button-color: #8d9ac2; +$highlight-text-color: lighten($ui-highlight-color, 10%) !default; +$action-button-color: lighten($ui-base-color, 50%); $inverted-text-color: $black !default; $lighter-text-color: darken($ui-base-color,6%) !default; From c199387558e0e0ec824b5e66c4a1e22e8b2e135b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Nov 2022 02:32:26 +0100 Subject: [PATCH 297/500] [Glitch] Fix colors in light theme Port 20aa8881dc98264e5875fa37fc2dbf18e3f2baac to glitch-soc --- .../glitch/styles/mastodon-light/diff.scss | 701 ++++++++++++++---- .../styles/mastodon-light/variables.scss | 19 +- 2 files changed, 559 insertions(+), 161 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss index d4ac558476..f0b8a320b6 100644 --- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss +++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss @@ -1,237 +1,372 @@ // Notes! // Sass color functions, "darken" and "lighten" are automatically replaced. -.glitch.local-settings { - background: $ui-base-color; +html { + scrollbar-color: $ui-base-color rgba($ui-base-color, 0.25); +} - &__navigation { - background: darken($ui-base-color, 8%); +// Change the colors of button texts +.button { + color: $white; + + &.button-alternative-2 { + color: $white; } +} - &__navigation__item { - background: darken($ui-base-color, 8%); +.status-card__actions button, +.status-card__actions a { + color: rgba($white, 0.8); - &:hover { - background: $ui-base-color; - } + &:hover, + &:active, + &:focus { + color: $white; } } -.notification__dismiss-overlay { - .wrappy { - box-shadow: unset; - } +// Change default background colors of columns +.column > .scrollable, +.getting-started, +.column-inline-form, +.error-column, +.regeneration-indicator { + background: $white; + border: 1px solid lighten($ui-base-color, 8%); + border-top: 0; +} - .ckbox { - text-shadow: unset; - } +.column > .scrollable.about { + border-top: 1px solid lighten($ui-base-color, 8%); } -.status.status-direct { - background: darken($ui-base-color, 8%); - border-bottom-color: darken($ui-base-color, 12%); +.about__meta, +.about__section__title, +.interaction-modal { + background: $white; + border: 1px solid lighten($ui-base-color, 8%); +} - &.collapsed> .status__content:after { - background: linear-gradient(rgba(darken($ui-base-color, 8%), 0), rgba(darken($ui-base-color, 8%), 1)); - } +.rules-list li::before { + background: $ui-highlight-color; } -.focusable:focus.status.status-direct { - background: darken($ui-base-color, 4%); +.directory__card__img { + background: lighten($ui-base-color, 12%); +} - &.collapsed> .status__content:after { - background: linear-gradient(rgba(darken($ui-base-color, 4%), 0), rgba(darken($ui-base-color, 4%), 1)); +.filter-form { + background: $white; + border-bottom: 1px solid lighten($ui-base-color, 8%); +} + +.column-back-button, +.column-header { + background: $white; + border: 1px solid lighten($ui-base-color, 8%); + + @media screen and (max-width: $no-gap-breakpoint) { + border-top: 0; } + + &--slim-button { + top: -50px; + right: 0; + } +} + +.column-header__back-button, +.column-header__button, +.column-header__button.active, +.account__header__bar { + background: $white; } -// Change columns' default background colors -.column { - > .scrollable { - background: darken($ui-base-color, 13%); +.column-header__button.active { + color: $ui-highlight-color; + + &:hover, + &:active, + &:focus { + color: $ui-highlight-color; + background: $white; } } -.status.collapsed .status__content:after { - background: linear-gradient(rgba(darken($ui-base-color, 13%), 0), rgba(darken($ui-base-color, 13%), 1)); +.account__header__bar .avatar .account__avatar { + border-color: $white; } -.drawer__inner { - background: $ui-base-color; +.getting-started__footer a { + color: $ui-secondary-color; + text-decoration: underline; } -.drawer__inner__mastodon { - background: $ui-base-color url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto !important; +.confirmation-modal__secondary-button, +.confirmation-modal__cancel-button, +.mute-modal__cancel-button, +.block-modal__cancel-button { + color: lighten($ui-base-color, 26%); - .mastodon { - filter: contrast(75%) brightness(75%) !important; + &:hover, + &:focus, + &:active { + color: $primary-text-color; } } -// Change the default appearance of the content warning button -.status__content { - - .status__content__spoiler-link { +.column-subheading { + background: darken($ui-base-color, 4%); + border-bottom: 1px solid lighten($ui-base-color, 8%); +} - background: lighten($ui-base-color, 30%); +.getting-started, +.scrollable { + .column-link { + background: $white; + border-bottom: 1px solid lighten($ui-base-color, 8%); - &:hover { - background: lighten($ui-base-color, 35%); - text-decoration: none; + &:hover, + &:active, + &:focus { + background: $ui-base-color; } + } +} + +.getting-started .navigation-bar { + border-top: 1px solid lighten($ui-base-color, 8%); + border-bottom: 1px solid lighten($ui-base-color, 8%); + @media screen and (max-width: $no-gap-breakpoint) { + border-top: 0; } +} +.compose-form__autosuggest-wrapper, +.poll__option input[type="text"], +.compose-form .spoiler-input__input, +.compose-form__poll-wrapper select, +.search__input, +.setting-text, +.report-dialog-modal__textarea, +.audio-player { + border: 1px solid lighten($ui-base-color, 8%); } -// Change the background colors of media and video spoilers -.media-spoiler, -.video-player__spoiler, -.account-gallery__item a { - background: $ui-base-color; +.report-dialog-modal .dialog-option .poll__input { + color: $white; } -// Change the colors used in the dropdown menu -.dropdown-menu { - background: $ui-base-color; +.search__input { + @media screen and (max-width: $no-gap-breakpoint) { + border-top: 0; + border-bottom: 0; + } } -.dropdown-menu__arrow { +.list-editor .search .search__input { + border-top: 0; + border-bottom: 0; +} - &.left { - border-left-color: $ui-base-color; - } +.compose-form__poll-wrapper select { + background: $simple-background-color url("data:image/svg+xml;utf8,") no-repeat right 8px center / auto 16px; +} - &.top { - border-top-color: $ui-base-color; - } +.compose-form__poll-wrapper, +.compose-form__poll-wrapper .poll__footer { + border-top-color: lighten($ui-base-color, 8%); +} - &.bottom { - border-bottom-color: $ui-base-color; - } +.notification__filter-bar { + border: 1px solid lighten($ui-base-color, 8%); + border-top: 0; +} - &.right { - border-right-color: $ui-base-color; - } +.compose-form .compose-form__buttons-wrapper { + background: $ui-base-color; + border: 1px solid lighten($ui-base-color, 8%); + border-top: 0; +} +.drawer__header, +.drawer__inner { + background: $white; + border: 1px solid lighten($ui-base-color, 8%); } -.dropdown-menu__item { - a, - button { - background: $ui-base-color; - color: $ui-secondary-color; - } +.drawer__inner__mastodon { + background: $white url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto; } -// Change the default color of several parts of the compose form -.composer { +// Change the colors used in compose-form +.compose-form { + .compose-form__modifiers { + .compose-form__upload__actions .icon-button { + color: lighten($white, 7%); - .composer--spoiler input, .compose-form__autosuggest-wrapper textarea { - color: lighten($ui-base-color, 80%); + &:active, + &:focus, + &:hover { + color: $white; + } + } - &:disabled { background: lighten($simple-background-color, 10%) } + .compose-form__upload-description input { + color: lighten($white, 7%); - &::placeholder { - color: lighten($ui-base-color, 70%); + &::placeholder { + color: lighten($white, 7%); + } } } - .composer--options-wrapper { - background: lighten($ui-base-color, 10%); + .compose-form__buttons-wrapper { + background: darken($ui-base-color, 6%); } - .composer--options > hr { - display: none; + .autosuggest-textarea__suggestions { + background: darken($ui-base-color, 6%); } - .composer--options--dropdown--content--item { - color: $ui-primary-color; - - strong { - color: $ui-primary-color; + .autosuggest-textarea__suggestions__item { + &:hover, + &:focus, + &:active, + &.selected { + background: lighten($ui-base-color, 4%); } + } +} + +.emoji-mart-bar { + border-color: lighten($ui-base-color, 4%); + &:first-child { + background: darken($ui-base-color, 6%); } +} + +.emoji-mart-search input { + background: rgba($ui-base-color, 0.3); + border-color: $ui-base-color; +} +// Change the background colors of statuses +.focusable:focus { + background: $ui-base-color; } -.composer--upload_form--actions .icon-button { - color: lighten($white, 7%); +.detailed-status, +.detailed-status__action-bar { + background: $white; +} + +// Change the background colors of status__content__spoiler-link +.reply-indicator__content .status__content__spoiler-link, +.status__content .status__content__spoiler-link { + background: $ui-base-color; - &:active, - &:focus, &:hover { - color: $white; + background: lighten($ui-base-color, 4%); } } -.language-dropdown__dropdown__results__item:hover, -.language-dropdown__dropdown__results__item:focus, -.language-dropdown__dropdown__results__item:active { - background-color: $ui-base-color; +// Change the background colors of media and video spoilers +.media-spoiler, +.video-player__spoiler { + background: $ui-base-color; } -.dropdown-menu__separator, -.dropdown-menu__item.edited-timestamp__history__item, -.dropdown-menu__container__header, -.compare-history-modal .report-modal__target, -.report-dialog-modal .poll__option.dialog-option { - border-bottom-color: lighten($ui-base-color, 12%); +.privacy-dropdown.active .privacy-dropdown__value.active .icon-button { + color: $white; } -.report-dialog-modal__container { - border-bottom-color: lighten($ui-base-color, 12%); +.account-gallery__item a { + background-color: $ui-base-color; } -.status__content, -.reply-indicator__content { - a { - color: $highlight-text-color; - } -} +// Change the colors used in the dropdown menu +.dropdown-menu { + background: $white; -.emoji-mart-bar { - border-color: darken($ui-base-color, 4%); + &__arrow { + &.left { + border-left-color: $white; + } - &:first-child { - background: lighten($ui-base-color, 10%); + &.top { + border-top-color: $white; + } + + &.bottom { + border-bottom-color: $white; + } + + &.right { + border-right-color: $white; + } } -} -.emoji-mart-search input { - background: rgba($ui-base-color, 0.3); - border-color: $ui-base-color; + &__item { + a, + button { + background: $white; + color: $darker-text-color; + } + } } -.autosuggest-textarea__suggestions { - background: lighten($ui-base-color, 10%) +// Change the text colors on inverted background +.privacy-dropdown__option.active, +.privacy-dropdown__option:hover, +.privacy-dropdown__option.active .privacy-dropdown__option__content, +.privacy-dropdown__option.active .privacy-dropdown__option__content strong, +.privacy-dropdown__option:hover .privacy-dropdown__option__content, +.privacy-dropdown__option:hover .privacy-dropdown__option__content strong, +.dropdown-menu__item a:active, +.dropdown-menu__item a:focus, +.dropdown-menu__item a:hover, +.actions-modal ul li:not(:empty) a.active, +.actions-modal ul li:not(:empty) a.active button, +.actions-modal ul li:not(:empty) a:active, +.actions-modal ul li:not(:empty) a:active button, +.actions-modal ul li:not(:empty) a:focus, +.actions-modal ul li:not(:empty) a:focus button, +.actions-modal ul li:not(:empty) a:hover, +.actions-modal ul li:not(:empty) a:hover button, +.language-dropdown__dropdown__results__item.active, +.admin-wrapper .sidebar ul .simple-navigation-active-leaf a, +.simple_form .block-button, +.simple_form .button, +.simple_form button { + color: $white; } -.autosuggest-textarea__suggestions__item { - &:hover, - &:focus, - &:active, - &.selected { - background: darken($ui-base-color, 4%); - } +.language-dropdown__dropdown__results__item .language-dropdown__dropdown__results__item__common-name { + color: lighten($ui-base-color, 8%); } -.react-toggle-track { - background: $ui-secondary-color; +.language-dropdown__dropdown__results__item.active .language-dropdown__dropdown__results__item__common-name { + color: darken($ui-base-color, 12%); } -.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track { - background: lighten($ui-secondary-color, 10%); +.dropdown-menu__separator, +.dropdown-menu__item.edited-timestamp__history__item, +.dropdown-menu__container__header, +.compare-history-modal .report-modal__target, +.report-dialog-modal .poll__option.dialog-option { + border-bottom-color: lighten($ui-base-color, 4%); } -.react-toggle.react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track { - background: darken($ui-highlight-color, 10%); +.report-dialog-modal__container { + border-top-color: lighten($ui-base-color, 4%); } // Change the background colors of modals .actions-modal, .boost-modal, -.favourite-modal, .confirmation-modal, .mute-modal, .block-modal, @@ -243,12 +378,43 @@ .compare-history-modal, .report-modal__comment .setting-text__wrapper, .report-modal__comment .setting-text, -.report-dialog-modal__textarea { - background: $white; +.announcements, +.picture-in-picture__header, +.picture-in-picture__footer, +.reactions-bar__item { + background: $ui-base-color; border: 1px solid lighten($ui-base-color, 8%); } -.report-dialog-modal .dialog-option .poll__input { +.reactions-bar__item:hover, +.reactions-bar__item:focus, +.reactions-bar__item:active, +.language-dropdown__dropdown__results__item:hover, +.language-dropdown__dropdown__results__item:focus, +.language-dropdown__dropdown__results__item:active { + background-color: $ui-base-color; +} + +.reactions-bar__item.active { + background-color: mix($white, $ui-highlight-color, 80%); + border-color: mix(lighten($ui-base-color, 8%), $ui-highlight-color, 80%); +} + +.media-modal__overlay .picture-in-picture__footer { + border: 0; +} + +.picture-in-picture__header { + border-bottom: 0; +} + +.announcements, +.picture-in-picture__footer { + border-top: 0; +} + +.icon-with-badge__badge { + border-color: $white; color: $white; } @@ -260,8 +426,43 @@ border-top-color: lighten($ui-base-color, 8%); } +.column-header__collapsible-inner { + background: darken($ui-base-color, 4%); + border: 1px solid lighten($ui-base-color, 8%); + border-top: 0; +} + +.dashboard__quick-access, +.focal-point__preview strong, +.admin-wrapper .content__heading__tabs a.selected { + color: $white; +} + +.button.button-tertiary { + &:hover, + &:focus, + &:active { + color: $white; + } +} + +.button.button-secondary { + border-color: $darker-text-color; + color: $darker-text-color; + + &:hover, + &:focus, + &:active { + border-color: darken($darker-text-color, 8%); + color: darken($darker-text-color, 8%); + } +} + +.flash-message.warning { + color: lighten($gold-star, 16%); +} + .boost-modal__action-bar, -.favourite-modal__action-bar, .confirmation-modal__action-bar, .mute-modal__action-bar, .block-modal__action-bar, @@ -279,33 +480,134 @@ } } +.display-case__case { + background: $white; +} + +.embed-modal .embed-modal__container .embed-modal__html { + background: $white; + border: 1px solid lighten($ui-base-color, 8%); + + &:focus { + border-color: lighten($ui-base-color, 12%); + background: $white; + } +} + +.react-toggle-track { + background: $ui-secondary-color; +} + +.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track { + background: darken($ui-secondary-color, 10%); +} + +.react-toggle.react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track { + background: lighten($ui-highlight-color, 10%); +} + // Change the default color used for the text in an empty column or on the error column .empty-column-indicator, .error-column { - color: lighten($ui-base-color, 60%); + color: $primary-text-color; + background: $white; } // Change the default colors used on some parts of the profile pages .activity-stream-tabs { - background: $account-background-color; + border-bottom-color: lighten($ui-base-color, 8%); +} - a { - &.active { - color: $ui-primary-color; - } +.nothing-here, +.page-header, +.directory__tag > a, +.directory__tag > div { + background: $white; + border: 1px solid lighten($ui-base-color, 8%); + + @media screen and (max-width: $no-gap-breakpoint) { + border-left: 0; + border-right: 0; + border-top: 0; + } +} + +.simple_form { + input[type="text"], + input[type="number"], + input[type="email"], + input[type="password"], + textarea { + &:hover { + border-color: lighten($ui-base-color, 12%); + } + } +} + +.picture-in-picture-placeholder { + background: $white; + border-color: lighten($ui-base-color, 8%); + color: lighten($ui-base-color, 8%); +} + +.directory__tag > a { + &:hover, + &:active, + &:focus { + background: $ui-base-color; } + @media screen and (max-width: $no-gap-breakpoint) { + border: 0; + } +} + +.directory__tag.active > a, +.directory__tag.active > div { + border-color: $ui-highlight-color; + + &, + h4, + h4 small, + .fa, + .trends__item__current { + color: $white; + } + + &:hover, + &:active, + &:focus { + background: $ui-highlight-color; + } +} + +.batch-table { + &__toolbar, + &__row, + .nothing-here { + border-color: lighten($ui-base-color, 8%); + } } .activity-stream { + border: 1px solid lighten($ui-base-color, 8%); + + &--under-tabs { + border-top: 0; + } .entry { background: $account-background-color; + + .detailed-status.light, + .more.light, + .status.light { + border-bottom-color: lighten($ui-base-color, 8%); + } } .status.light { - .status__content { color: $primary-text-color; } @@ -315,17 +617,14 @@ color: $primary-text-color; } } - } - } .accounts-grid { .account-grid-card { - .controls { .icon-button { - color: $ui-secondary-color; + color: $darker-text-color; } } @@ -336,13 +635,53 @@ } .username { - color: $ui-secondary-color; + color: $darker-text-color; } .account__header__content { color: $primary-text-color; } + } +} +.simple_form { + .warning { + box-shadow: none; + background: rgba($error-red, 0.5); + text-shadow: none; + } + + .recommended { + border-color: $ui-highlight-color; + color: $ui-highlight-color; + background-color: rgba($ui-highlight-color, 0.1); + } +} + +.compose-form .compose-form__warning { + border-color: $ui-highlight-color; + background-color: rgba($ui-highlight-color, 0.1); + + &, + a { + color: $ui-highlight-color; + } +} + +.reply-indicator { + background: transparent; + border: 1px solid lighten($ui-base-color, 8%); +} + +.dismissable-banner { + border-left: 1px solid lighten($ui-base-color, 8%); + border-right: 1px solid lighten($ui-base-color, 8%); +} + +.status__content, +.reply-indicator__content { + a { + color: $highlight-text-color; } } @@ -354,6 +693,7 @@ } } +.notification__filter-bar button.active::after, .account__section-headline a.active::after { border-color: transparent transparent $white; } @@ -364,7 +704,10 @@ .activity-stream, .nothing-here, .directory__tag > a, -.directory__tag > div { +.directory__tag > div, +.card > a, +.page-header, +.compose-form .compose-form__warning { box-shadow: none; } @@ -372,3 +715,55 @@ border: 1px solid lighten($ui-base-color, 8%); background: $simple-background-color url("data:image/svg+xml;utf8,") no-repeat right 8px center / auto 16px; } + +// Glitch-soc-specific changes + +.glitch.local-settings { + background: $ui-base-color; + border: 1px solid lighten($ui-base-color, 8%); +} + +.glitch.local-settings__navigation { + background: darken($ui-base-color, 8%); +} + +.glitch.local-settings__navigation__item { + background: darken($ui-base-color, 8%); + border-bottom: 1px lighten($ui-base-color, 8%) solid; + + &:hover { + background: $ui-base-color; + } + + &.active { + background: $ui-highlight-color; + color: $white; + } + + &.close, &.close:hover { + background: $error-value-color; + color: $primary-text-color; + } +} + +.notification__dismiss-overlay { + .wrappy { + box-shadow: unset; + + .ckbox { + text-shadow: unset; + } + } +} + +.status.collapsed .status__content:after { + background: linear-gradient(rgba(darken($ui-base-color, 13%), 0), rgba(darken($ui-base-color, 13%), 1)); +} + +.drawer__inner__mastodon { + background: $white url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto !important; + + .mastodon { + filter: contrast(75%) brightness(75%) !important; + } +} diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/variables.scss b/app/javascript/flavours/glitch/styles/mastodon-light/variables.scss index f1c8a3503a..cae065878c 100644 --- a/app/javascript/flavours/glitch/styles/mastodon-light/variables.scss +++ b/app/javascript/flavours/glitch/styles/mastodon-light/variables.scss @@ -7,11 +7,17 @@ $classic-primary-color: #9baec8; $classic-secondary-color: #d9e1e8; $classic-highlight-color: #6364ff; +// Differences +$success-green: lighten(#3c754d, 8%); + +$base-overlay-background: $white !default; +$valid-value-color: $success-green !default; + $ui-base-color: $classic-secondary-color !default; -$ui-base-lighter-color: darken($ui-base-color, 57%); -$ui-highlight-color: $classic-highlight-color !default; -$ui-primary-color: $classic-primary-color !default; +$ui-base-lighter-color: #b0c0cf; +$ui-primary-color: #9bcbed; $ui-secondary-color: $classic-base-color !default; +$ui-highlight-color: $classic-highlight-color !default; $primary-text-color: $black !default; $darker-text-color: $classic-base-color !default; @@ -19,17 +25,14 @@ $highlight-text-color: darken($ui-highlight-color, 8%) !default; $dark-text-color: #444b5d; $action-button-color: #606984; -$success-green: lighten(#3c754d, 8%); - -$base-overlay-background: $white !default; - $inverted-text-color: $black !default; $lighter-text-color: $classic-base-color !default; $light-text-color: #444b5d; +// Newly added colors $account-background-color: $white !default; -//Invert darkened and lightened colors +// Invert darkened and lightened colors @function darken($color, $amount) { @return hsl(hue($color), saturation($color), lightness($color) + $amount); } From 0be6da42d34f2a87864e0acab8836d3ac6463229 Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 6 Nov 2022 13:30:37 +0100 Subject: [PATCH 298/500] Change glitch-soc composer classes to match upstream --- .../compose/components/compose_form.js | 8 +- .../features/compose/components/dropdown.js | 49 ++- .../compose/components/dropdown_menu.js | 6 +- .../features/compose/components/options.js | 3 +- .../features/compose/components/publisher.js | 32 +- .../compose/components/reply_indicator.js | 8 +- .../compose/components/textarea_icons.js | 2 +- .../features/compose/components/upload.js | 8 +- .../compose/components/upload_form.js | 4 +- .../compose/components/upload_progress.js | 13 +- .../features/compose/components/warning.js | 2 +- .../flavours/glitch/styles/accessibility.scss | 8 +- .../{composer.scss => compose_form.scss} | 355 +++++++++--------- .../glitch/styles/components/index.scss | 2 +- .../glitch/styles/components/modal.scss | 4 +- .../styles/components/single_column.scss | 6 +- .../flavours/glitch/styles/containers.scss | 2 +- .../flavours/glitch/styles/rtl.scss | 6 +- 18 files changed, 258 insertions(+), 260 deletions(-) rename app/javascript/flavours/glitch/styles/components/{composer.scss => compose_form.scss} (72%) diff --git a/app/javascript/flavours/glitch/features/compose/components/compose_form.js b/app/javascript/flavours/glitch/features/compose/components/compose_form.js index 0be14e495b..516648f4b3 100644 --- a/app/javascript/flavours/glitch/features/compose/components/compose_form.js +++ b/app/javascript/flavours/glitch/features/compose/components/compose_form.js @@ -305,12 +305,12 @@ class ComposeForm extends ImmutablePureComponent { const countText = this.getFulltextForCharacterCounting(); return ( -
      +
      -
      +
      -
      +
      0)} spoiler={spoilersAlwaysOn ? (spoilerText && spoilerText.length > 0) : spoiler} /> -
      +
      diff --git a/app/javascript/flavours/glitch/features/compose/components/dropdown.js b/app/javascript/flavours/glitch/features/compose/components/dropdown.js index 829f6d00f2..6b6d3de948 100644 --- a/app/javascript/flavours/glitch/features/compose/components/dropdown.js +++ b/app/javascript/flavours/glitch/features/compose/components/dropdown.js @@ -16,7 +16,6 @@ import { assignHandlers } from 'flavours/glitch/utils/react_helpers'; export default class ComposerOptionsDropdown extends React.PureComponent { static propTypes = { - active: PropTypes.bool, disabled: PropTypes.bool, icon: PropTypes.string, items: PropTypes.arrayOf(PropTypes.shape({ @@ -162,7 +161,6 @@ export default class ComposerOptionsDropdown extends React.PureComponent { // Rendering. render () { const { - active, disabled, title, icon, @@ -174,35 +172,34 @@ export default class ComposerOptionsDropdown extends React.PureComponent { closeOnChange, } = this.props; const { open, placement } = this.state; - const computedClass = classNames('composer--options--dropdown', { - active, - open, - top: placement === 'top', - }); - // The result. + const active = value && items.findIndex(({ name }) => name === value) === (placement === 'bottom' ? 0 : (items.length - 1)); + return (
      - +
      + +
      + {icon && } -
      +
      {text} {meta}
      @@ -218,7 +218,7 @@ export default class ComposerOptionsDropdownContent extends React.PureComponent // size will be used to determine the coordinate of the menu by // react-overlays
      +
      !!value)} disabled={disabled || isEditing} icon='ellipsis-h' items={advancedOptions ? [ diff --git a/app/javascript/flavours/glitch/features/compose/components/publisher.js b/app/javascript/flavours/glitch/features/compose/components/publisher.js index 50baad0658..9d53b7ee3c 100644 --- a/app/javascript/flavours/glitch/features/compose/components/publisher.js +++ b/app/javascript/flavours/glitch/features/compose/components/publisher.js @@ -48,7 +48,7 @@ class Publisher extends ImmutablePureComponent { const { countText, disabled, intl, onSecondarySubmit, privacy, sideArm, isEditing } = this.props; const diff = maxChars - length(countText || ''); - const computedClass = classNames('composer--publisher', { + const computedClass = classNames('compose-form__publish', { disabled: disabled, over: diff < 0, }); @@ -72,22 +72,26 @@ class Publisher extends ImmutablePureComponent { return (
      {sideArm && !isEditing && sideArm !== 'none' ? ( +
      +
      + ) : null} +
      ); }; diff --git a/app/javascript/flavours/glitch/features/compose/components/reply_indicator.js b/app/javascript/flavours/glitch/features/compose/components/reply_indicator.js index 37ae9cab9b..7ad9e2b644 100644 --- a/app/javascript/flavours/glitch/features/compose/components/reply_indicator.js +++ b/app/javascript/flavours/glitch/features/compose/components/reply_indicator.js @@ -49,10 +49,10 @@ class ReplyIndicator extends ImmutablePureComponent { // The result. return ( -
      -
      +
      +
      {attachments.size > 0 && ( diff --git a/app/javascript/flavours/glitch/features/compose/components/textarea_icons.js b/app/javascript/flavours/glitch/features/compose/components/textarea_icons.js index b875fb15e3..25c2443b16 100644 --- a/app/javascript/flavours/glitch/features/compose/components/textarea_icons.js +++ b/app/javascript/flavours/glitch/features/compose/components/textarea_icons.js @@ -38,7 +38,7 @@ class TextareaIcons extends ImmutablePureComponent { render () { const { advancedOptions, intl } = this.props; return ( -
      +
      {advancedOptions ? iconMap.map( ([key, icon, message]) => advancedOptions.get(key) ? ( +
      {({ scale }) => ( -
      -
      +
      +
      {!isEditingStatus && ()}
      {(media.get('description') || '').length === 0 && ( -
      +
      )} diff --git a/app/javascript/flavours/glitch/features/compose/components/upload_form.js b/app/javascript/flavours/glitch/features/compose/components/upload_form.js index 35880ddccc..7ebbac9632 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload_form.js +++ b/app/javascript/flavours/glitch/features/compose/components/upload_form.js @@ -14,11 +14,11 @@ export default class UploadForm extends ImmutablePureComponent { const { mediaIds } = this.props; return ( -
      +
      {mediaIds.size > 0 && ( -
      +
      {mediaIds.map(id => ( ))} diff --git a/app/javascript/flavours/glitch/features/compose/components/upload_progress.js b/app/javascript/flavours/glitch/features/compose/components/upload_progress.js index c7c33c418e..39ac310532 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload_progress.js +++ b/app/javascript/flavours/glitch/features/compose/components/upload_progress.js @@ -29,17 +29,18 @@ export default class UploadProgress extends React.PureComponent { } return ( -
      - +
      +
      + +
      -
      +
      {message} -
      +
      {({ width }) => - (
      ) +
      }
      diff --git a/app/javascript/flavours/glitch/features/compose/components/warning.js b/app/javascript/flavours/glitch/features/compose/components/warning.js index 4009be8c6b..803b7f86ab 100644 --- a/app/javascript/flavours/glitch/features/compose/components/warning.js +++ b/app/javascript/flavours/glitch/features/compose/components/warning.js @@ -15,7 +15,7 @@ export default class Warning extends React.PureComponent { return ( {({ opacity, scaleX, scaleY }) => ( -
      +
      {message}
      )} diff --git a/app/javascript/flavours/glitch/styles/accessibility.scss b/app/javascript/flavours/glitch/styles/accessibility.scss index 9b36bfd8dd..7bffb2e264 100644 --- a/app/javascript/flavours/glitch/styles/accessibility.scss +++ b/app/javascript/flavours/glitch/styles/accessibility.scss @@ -29,22 +29,22 @@ $emojis-requiring-inversion: 'back' 'copyright' 'curly_loop' 'currency_exchange' .hicolor-privacy-icons { .status__visibility-icon.fa-globe, - .composer--options--dropdown--content--item .fa-globe { + .privacy-dropdown__option .fa-globe { color: #1976d2; } .status__visibility-icon.fa-unlock, - .composer--options--dropdown--content--item .fa-unlock { + .privacy-dropdown__option .fa-unlock { color: #388e3c; } .status__visibility-icon.fa-lock, - .composer--options--dropdown--content--item .fa-lock { + .privacy-dropdown__option .fa-lock { color: #ffa000; } .status__visibility-icon.fa-envelope, - .composer--options--dropdown--content--item .fa-envelope { + .privacy-dropdown__option .fa-envelope { color: #d32f2f; } } diff --git a/app/javascript/flavours/glitch/styles/components/composer.scss b/app/javascript/flavours/glitch/styles/components/compose_form.scss similarity index 72% rename from app/javascript/flavours/glitch/styles/components/composer.scss rename to app/javascript/flavours/glitch/styles/components/compose_form.scss index da086833c5..72d3aad1d3 100644 --- a/app/javascript/flavours/glitch/styles/components/composer.scss +++ b/app/javascript/flavours/glitch/styles/components/compose_form.scss @@ -1,4 +1,4 @@ -.composer { +.compose-form { padding: 10px; .emoji-picker-dropdown { @@ -25,16 +25,16 @@ } } -.no-reduce-motion .composer--spoiler { +.no-reduce-motion .spoiler-input { transition: height 0.4s ease, opacity 0.4s ease; } -.composer--spoiler { +.spoiler-input { height: 0; transform-origin: bottom; opacity: 0.0; - &.composer--spoiler--visible { + &.spoiler-input--visible { height: 36px; margin-bottom: 11px; opacity: 1.0; @@ -64,7 +64,7 @@ } } -.composer--warning { +.compose-form__warning { color: $inverted-text-color; margin-bottom: 15px; background: $ui-primary-color; @@ -123,7 +123,7 @@ } } -.composer--reply { +.reply-indicator { margin: 0 0 10px; border-radius: 4px; padding: 10px; @@ -131,117 +131,117 @@ min-height: 23px; overflow-y: auto; flex: 0 2 auto; +} - & > header { - margin-bottom: 5px; - overflow: hidden; +.reply-indicator__header { + margin-bottom: 5px; + overflow: hidden; - & > .account.small { color: $inverted-text-color; } + & > .account.small { color: $inverted-text-color; } +} - & > .cancel { - float: right; - line-height: 24px; - } - } +.reply-indicator__cancel { + float: right; + line-height: 24px; +} - & > .content { - position: relative; - margin: 10px 0; - padding: 0 12px; - font-size: 14px; - line-height: 20px; - color: $inverted-text-color; - word-wrap: break-word; - font-weight: 400; - overflow: visible; - white-space: pre-wrap; - padding-top: 5px; - overflow: hidden; +.reply-indicator__content { + position: relative; + margin: 10px 0; + padding: 0 12px; + font-size: 14px; + line-height: 20px; + color: $inverted-text-color; + word-wrap: break-word; + font-weight: 400; + overflow: visible; + white-space: pre-wrap; + padding-top: 5px; + overflow: hidden; - p, pre, blockquote { - margin-bottom: 20px; - white-space: pre-wrap; + p, pre, blockquote { + margin-bottom: 20px; + white-space: pre-wrap; - &:last-child { - margin-bottom: 0; - } + &:last-child { + margin-bottom: 0; } + } - h1, h2, h3, h4, h5 { - margin-top: 20px; - margin-bottom: 20px; - } + h1, h2, h3, h4, h5 { + margin-top: 20px; + margin-bottom: 20px; + } - h1, h2 { - font-weight: 700; - font-size: 18px; - } + h1, h2 { + font-weight: 700; + font-size: 18px; + } - h2 { - font-size: 16px; - } + h2 { + font-size: 16px; + } - h3, h4, h5 { - font-weight: 500; - } + h3, h4, h5 { + font-weight: 500; + } - blockquote { - padding-left: 10px; - border-left: 3px solid $inverted-text-color; - color: $inverted-text-color; - white-space: normal; + blockquote { + padding-left: 10px; + border-left: 3px solid $inverted-text-color; + color: $inverted-text-color; + white-space: normal; - p:last-child { - margin-bottom: 0; - } + p:last-child { + margin-bottom: 0; } + } - b, strong { - font-weight: 700; - } + b, strong { + font-weight: 700; + } - em, i { - font-style: italic; - } + em, i { + font-style: italic; + } - sub { - font-size: smaller; - vertical-align: sub; - } + sub { + font-size: smaller; + vertical-align: sub; + } - sup { - font-size: smaller; - vertical-align: super; - } + sup { + font-size: smaller; + vertical-align: super; + } - ul, ol { - margin-left: 1em; + ul, ol { + margin-left: 1em; - p { - margin: 0; - } + p { + margin: 0; } + } - ul { - list-style-type: disc; - } + ul { + list-style-type: disc; + } - ol { - list-style-type: decimal; - } + ol { + list-style-type: decimal; + } - a { - color: $lighter-text-color; - text-decoration: none; + a { + color: $lighter-text-color; + text-decoration: none; - &:hover { text-decoration: underline } + &:hover { text-decoration: underline } - &.mention { - &:hover { - text-decoration: none; + &.mention { + &:hover { + text-decoration: none; - span { text-decoration: underline } - } + span { text-decoration: underline } } } } @@ -253,8 +253,12 @@ } } -.compose-form__autosuggest-wrapper, -.autosuggest-input { +.compose-form .compose-form__autosuggest-wrapper { + position: relative; +} + +.compose-form .autosuggest-textarea, +.compose-form .autosuggest-input { position: relative; width: 100%; @@ -284,10 +288,6 @@ all: unset; } - &:disabled { - background: $ui-secondary-color; - } - &:focus { outline: 0; } @@ -304,7 +304,7 @@ } } -.composer--textarea--icons { +.compose-form__textarea-icons { display: block; position: absolute; top: 29px; @@ -401,25 +401,25 @@ } } -.composer--upload_form { +.compose-form__upload-wrapper { overflow: hidden; +} - & > .content { - display: flex; - flex-direction: row; - flex-wrap: wrap; - font-family: inherit; - padding: 5px; - overflow: hidden; - } +.compose-form__uploads-wrapper { + display: flex; + flex-direction: row; + flex-wrap: wrap; + font-family: inherit; + padding: 5px; + overflow: hidden; } -.composer--upload_form--item { +.compose-form__upload { flex: 1 1 0; margin: 5px; min-width: 40%; - & > div { + .compose-form__upload-thumbnail { position: relative; border-radius: 4px; height: 140px; @@ -459,52 +459,52 @@ } } -.composer--upload_form--actions { +.compose-form__upload__actions { background: linear-gradient(180deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent); display: flex; align-items: flex-start; justify-content: space-between; } -.composer--upload_form--progress { +.upload-progress { display: flex; padding: 10px; color: $darker-text-color; overflow: hidden; - & > .fa { + .fa { font-size: 34px; margin-right: 10px; } - & > .message { - flex: 1 1 auto; + span { + display: block; + font-size: 12px; + font-weight: 500; + text-transform: uppercase; + } +} - & > span { - display: block; - font-size: 12px; - font-weight: 500; - text-transform: uppercase; - } +.upload-progress__message { + flex: 1 1 auto; +} - & > .backdrop { - position: relative; - margin-top: 5px; - border-radius: 6px; - width: 100%; - height: 6px; - background: $ui-base-lighter-color; - - & > .tracker { - position: absolute; - top: 0; - left: 0; - height: 6px; - border-radius: 6px; - background: $ui-highlight-color; - } - } - } +.upload-progress__backdrop { + position: relative; + margin-top: 5px; + border-radius: 6px; + width: 100%; + height: 6px; + background: $ui-base-lighter-color; +} + +.upload-progress__tracker { + position: absolute; + top: 0; + left: 0; + height: 6px; + border-radius: 6px; + background: $ui-highlight-color; } .compose-form__modifiers { @@ -514,7 +514,7 @@ background: $simple-background-color; } -.composer--options-wrapper { +.compose-form__buttons-wrapper { padding: 10px; background: darken($simple-background-color, 8%); border-radius: 0 0 4px 4px; @@ -524,7 +524,7 @@ flex: 0 0 auto; } -.composer--options { +.compose-form__buttons { display: flex; flex: 0 0 auto; @@ -551,30 +551,41 @@ } } -.compose--counter-wrapper { +.character-counter__wrapper { align-self: center; margin-right: 4px; } -.composer--options--dropdown { - &.open { - & > .value { - border-radius: 4px 4px 0 0; - box-shadow: 0 -4px 4px rgba($base-shadow-color, 0.1); - color: $primary-text-color; - background: $ui-highlight-color; +.privacy-dropdown.active { + .privacy-dropdown__value { + background: $simple-background-color; + border-radius: 4px 4px 0 0; + box-shadow: 0 -4px 4px rgba($base-shadow-color, 0.1); + + .icon-button { transition: none; } - &.top { - & > .value { - border-radius: 0 0 4px 4px; - box-shadow: 0 4px 4px rgba($base-shadow-color, 0.1); + + &.active { + background: $ui-highlight-color; + + .icon-button { + color: $primary-text-color; } } } + + &.top .privacy-dropdown__value { + border-radius: 0 0 4px 4px; + } + + .privacy-dropdown__dropdown { + display: block; + box-shadow: 2px 4px 6px rgba($base-shadow-color, 0.1); + } } -.composer--options--dropdown--content { +.privacy-dropdown__dropdown { position: absolute; border-radius: 4px; box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); @@ -583,14 +594,14 @@ transform-origin: 50% 0; } -.composer--options--dropdown--content--item { +.privacy-dropdown__option { display: flex; align-items: center; padding: 10px; color: $inverted-text-color; cursor: pointer; - & > .content { + .privacy-dropdown__option__content { flex: 1 1 auto; color: $lighter-text-color; @@ -608,7 +619,7 @@ background: $ui-highlight-color; color: $primary-text-color; - & > .content { + .privacy-dropdown__option__content { color: $primary-text-color; strong { color: $primary-text-color } @@ -618,31 +629,25 @@ &.active:hover { background: lighten($ui-highlight-color, 4%) } } -.composer--publisher { - padding-top: 10px; - text-align: right; - white-space: nowrap; - overflow: hidden; +.compose-form__publish { + display: flex; justify-content: flex-end; + min-width: 0; flex: 0 0 auto; + column-gap: 5px; - & > .primary { - display: inline-block; - margin: 0; - padding: 7px 10px; - text-align: center; - } + .compose-form__publish-button-wrapper { + overflow: hidden; + padding-top: 10px; - & > .side_arm { - display: inline-block; - margin: 0 5px; - padding: 7px 0; - width: 36px; - text-align: center; - } + button { + padding: 7px 10px; + text-align: center; + } - &.over { - & > .count { color: $warning-red } + & > .side_arm { + width: 36px; + } } } diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index c3276b035b..b00038afd6 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -1738,7 +1738,7 @@ noscript { @import 'domains'; @import 'status'; @import 'modal'; -@import 'composer'; +@import 'compose_form'; @import 'columns'; @import 'regeneration_indicator'; @import 'directory'; diff --git a/app/javascript/flavours/glitch/styles/components/modal.scss b/app/javascript/flavours/glitch/styles/components/modal.scss index cd96f83d6f..711d4d5b29 100644 --- a/app/javascript/flavours/glitch/styles/components/modal.scss +++ b/app/javascript/flavours/glitch/styles/components/modal.scss @@ -1290,11 +1290,11 @@ } } -.modal-root__container .composer--options--dropdown { +.modal-root__container .privacy-dropdown { flex-grow: 0; } -.modal-root__container .composer--options--dropdown--content { +.modal-root__container .privacy-dropdown__dropdown { pointer-events: auto; z-index: 9999; } diff --git a/app/javascript/flavours/glitch/styles/components/single_column.scss b/app/javascript/flavours/glitch/styles/components/single_column.scss index 1f1d7d68db..d91306151e 100644 --- a/app/javascript/flavours/glitch/styles/components/single_column.scss +++ b/app/javascript/flavours/glitch/styles/components/single_column.scss @@ -41,7 +41,7 @@ flex: 0 1 48px; } - .composer { + .compose-form { flex: 1; overflow-y: hidden; display: flex; @@ -59,10 +59,6 @@ .autosuggest-textarea__textarea { overflow-y: hidden; } - - .compose-form__upload-thumbnail { - height: 80px; - } } .navigation-panel { diff --git a/app/javascript/flavours/glitch/styles/containers.scss b/app/javascript/flavours/glitch/styles/containers.scss index 75472646e9..a3aee7eef3 100644 --- a/app/javascript/flavours/glitch/styles/containers.scss +++ b/app/javascript/flavours/glitch/styles/containers.scss @@ -37,7 +37,7 @@ } .compose-standalone { - .composer { + .compose-form { width: 400px; margin: 0 auto; padding: 20px 0; diff --git a/app/javascript/flavours/glitch/styles/rtl.scss b/app/javascript/flavours/glitch/styles/rtl.scss index 31d1de376d..2419691cd0 100644 --- a/app/javascript/flavours/glitch/styles/rtl.scss +++ b/app/javascript/flavours/glitch/styles/rtl.scss @@ -36,15 +36,11 @@ body.rtl { margin-left: 5px; } - .composer .compose--counter-wrapper { + .compose-form .character-counter__wrapper { margin-right: 0; margin-left: 4px; } - .composer--publisher { - text-align: left; - } - .boost-modal__status-time, .favourite-modal__status-time { float: left; From 21d6bc16893a9dd24c5ef54cf2f554846c8eca5b Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 6 Nov 2022 16:56:27 +0100 Subject: [PATCH 299/500] Fix status cache hydration discrepancy --- app/lib/status_cache_hydrator.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb index ffe813ee95..cde75ae8b1 100644 --- a/app/lib/status_cache_hydrator.rb +++ b/app/lib/status_cache_hydrator.rb @@ -11,7 +11,7 @@ class StatusCacheHydrator # If we're delivering to the author who disabled the display of the application used to create the # status, we need to hydrate the application, since it was not rendered for the basic payload - payload[:application] = ActiveModelSerializers::SerializableResource.new(@status.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:application].nil? && @status.account_id == account_id && @status.application.present? + payload[:application] = @status.application.present? ? ActiveModelSerializers::SerializableResource.new(@status.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json : nil if payload[:application].nil? && @status.account_id == account_id # We take advantage of the fact that some relationships can only occur with an original status, not # the reblog that wraps it, so we can assume that some values are always false @@ -23,7 +23,7 @@ class StatusCacheHydrator # If the reblogged status is being delivered to the author who disabled the display of the application # used to create the status, we need to hydrate it here too - payload[:reblog][:application] = ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id && @status.reblog.application.present? + payload[:reblog][:application] = @status.reblog.application.present? ? ActiveModelSerializers::SerializableResource.new(@status.reblog.application, serializer: REST::StatusSerializer::ApplicationSerializer).as_json : nil if payload[:reblog][:application].nil? && @status.reblog.account_id == account_id payload[:reblog][:favourited] = Favourite.where(account_id: account_id, status_id: @status.reblog_of_id).exists? payload[:reblog][:reblogged] = Status.where(account_id: account_id, reblog_of_id: @status.reblog_of_id).exists? From e53fc34e9abd8d6d3a0907fea2d0f657c5e8666c Mon Sep 17 00:00:00 2001 From: rcombs Date: Sun, 6 Nov 2022 20:16:10 -0600 Subject: [PATCH 300/500] Set autocomplete attr for email field on signup page (#19833) The email address will be used as the "username" for sign-in purposes, so it's the value that should be stored in password managers. We can inform the password manager of this by setting `autocomplete="email"`. Without this hint, password managers may instead store the `username` field, which isn't valid for sign-in (this happens with iCloud Keychain in Safari, for instance). --- app/views/auth/registrations/new.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml index 5eb3f937c3..b1d52dd0c2 100644 --- a/app/views/auth/registrations/new.html.haml +++ b/app/views/auth/registrations/new.html.haml @@ -19,7 +19,7 @@ = f.simple_fields_for :account do |ff| = ff.input :display_name, wrapper: :with_label, label: false, required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.display_name'), :autocomplete => 'off', placeholder: t('simple_form.labels.defaults.display_name') } = ff.input :username, wrapper: :with_label, label: false, required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username'), :autocomplete => 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, append: "@#{site_hostname}", hint: false - = f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email'), :autocomplete => 'off' }, hint: false + = f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email'), :autocomplete => 'username' }, hint: false = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'new-password', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: false = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'new-password' }, hint: false = f.input :confirm_password, as: :string, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), :autocomplete => 'off' }, hint: false From 8c81db5a415cce3491cb5d343709db552ad262b6 Mon Sep 17 00:00:00 2001 From: Rob Petti Date: Sun, 6 Nov 2022 19:16:44 -0700 Subject: [PATCH 301/500] allow /api/v1/streaming to be used as per documentation (#19896) --- dist/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/nginx.conf b/dist/nginx.conf index 716c277dd0..5c16693d08 100644 --- a/dist/nginx.conf +++ b/dist/nginx.conf @@ -112,7 +112,7 @@ server { try_files $uri =404; } - location ^~ /api/v1/streaming/ { + location ^~ /api/v1/streaming { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; From 54f0f1b9efa73166d5d1dfb475b71111e2a5f2ed Mon Sep 17 00:00:00 2001 From: nightpool Date: Sun, 6 Nov 2022 21:31:38 -0500 Subject: [PATCH 302/500] Skip Webfinger cache during migrations as well (#19883) --- app/models/account_migration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/account_migration.rb b/app/models/account_migration.rb index 06291c9f31..16276158d7 100644 --- a/app/models/account_migration.rb +++ b/app/models/account_migration.rb @@ -58,7 +58,7 @@ class AccountMigration < ApplicationRecord private def set_target_account - self.target_account = ResolveAccountService.new.call(acct) + self.target_account = ResolveAccountService.new.call(acct, skip_cache: true) rescue Webfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error # Validation will take care of it end From 4cb23234580b12750940f60afc4a2bbace8347e9 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 7 Nov 2022 03:38:53 +0100 Subject: [PATCH 303/500] Fix crash in legacy filter creation controller (#19878) --- app/controllers/api/v1/filters_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/v1/filters_controller.rb b/app/controllers/api/v1/filters_controller.rb index 07cd141478..149139b40a 100644 --- a/app/controllers/api/v1/filters_controller.rb +++ b/app/controllers/api/v1/filters_controller.rb @@ -52,7 +52,7 @@ class Api::V1::FiltersController < Api::BaseController end def resource_params - params.permit(:phrase, :expires_in, :irreversible, :whole_word, context: []) + params.permit(:phrase, :expires_in, :irreversible, context: []) end def filter_params From 34c269310d2017c3164d57c1e8631f9423092ee3 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Mon, 7 Nov 2022 03:39:48 +0100 Subject: [PATCH 304/500] Fix console log error on column settings load (#19886) --- .../features/notifications/components/column_settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index d75fa8a02f..a38f8d3c2d 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -21,7 +21,7 @@ export default class ColumnSettings extends React.PureComponent { onRequestNotificationPermission: PropTypes.func, alertsEnabled: PropTypes.bool, browserSupport: PropTypes.bool, - browserPermission: PropTypes.bool, + browserPermission: PropTypes.string, }; onPushChange = (path, checked) => { From ffe735344bb47ad2af743ad97729db9ea9c11f60 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Mon, 7 Nov 2022 03:40:04 +0100 Subject: [PATCH 305/500] Fix JavaScript console error on Getting Started column (#19891) * Fix JavaScript console error on Getting Started column * Update app/javascript/mastodon/components/column_header.js Co-authored-by: Ilias Tsangaris Co-authored-by: Ilias Tsangaris --- app/javascript/mastodon/components/column_header.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/column_header.js b/app/javascript/mastodon/components/column_header.js index 5b2e166276..43efa179e2 100644 --- a/app/javascript/mastodon/components/column_header.js +++ b/app/javascript/mastodon/components/column_header.js @@ -57,7 +57,7 @@ class ColumnHeader extends React.PureComponent { } handleTitleClick = () => { - this.props.onClick(); + this.props.onClick?.(); } handleMoveLeft = () => { From 02a34252ba21a405e3960da4b65c15a2c8d952f2 Mon Sep 17 00:00:00 2001 From: Jeremy Kescher Date: Mon, 7 Nov 2022 02:40:17 +0000 Subject: [PATCH 306/500] Add null check on application in dispute viewer (#19851) --- app/views/disputes/strikes/show.html.haml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml index 1be50331a4..4a3005f72a 100644 --- a/app/views/disputes/strikes/show.html.haml +++ b/app/views/disputes/strikes/show.html.haml @@ -59,8 +59,9 @@ = media_attachment.file_file_name .strike-card__statuses-list__item__meta %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) - · - = status.application.name + - unless status.application.nil? + · + = status.application.name - else .one-liner= t('disputes.strikes.status', id: status_id) .strike-card__statuses-list__item__meta From 4b7f32a2a668b7068ede7ac8eb2ac087883ba213 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Mon, 7 Nov 2022 03:40:54 +0100 Subject: [PATCH 307/500] Fix double button to clear emoji search input (#19888) --- app/javascript/styles/mastodon/emoji_picker.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/styles/mastodon/emoji_picker.scss b/app/javascript/styles/mastodon/emoji_picker.scss index e4ec96d89f..1042ddda89 100644 --- a/app/javascript/styles/mastodon/emoji_picker.scss +++ b/app/javascript/styles/mastodon/emoji_picker.scss @@ -132,6 +132,10 @@ &:active { outline: 0 !important; } + + &::-webkit-search-cancel-button { + display: none; + } } } From a70e2cd649cbd82d534f03202fb3078a4ae1af1d Mon Sep 17 00:00:00 2001 From: Chris Rose Date: Sun, 6 Nov 2022 18:57:16 -0800 Subject: [PATCH 308/500] Tag the OTP field with autocomplete for password managers (#19946) This is modeled on #19833, and based on the attribute values documented in https://developer.apple.com/documentation/security/password_autofill/enabling_password_autofill_on_an_html_input_element?language=objc --- .../auth/sessions/two_factor/_otp_authentication_form.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml b/app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml index ab2d48c0a3..82f9575275 100644 --- a/app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml +++ b/app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml @@ -5,7 +5,7 @@ %p.hint.authentication-hint= t('simple_form.hints.sessions.otp') .fields-group - = f.input :otp_attempt, type: :number, wrapper: :with_label, label: t('simple_form.labels.defaults.otp_attempt'), input_html: { 'aria-label' => t('simple_form.labels.defaults.otp_attempt'), :autocomplete => 'off' }, autofocus: true + = f.input :otp_attempt, type: :number, wrapper: :with_label, label: t('simple_form.labels.defaults.otp_attempt'), input_html: { 'aria-label' => t('simple_form.labels.defaults.otp_attempt'), :autocomplete => 'one-time-code' }, autofocus: true .actions = f.button :button, t('auth.login'), type: :submit From d13a2f79017da6ac479b58f2c21a064351ef9675 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Mon, 7 Nov 2022 03:39:48 +0100 Subject: [PATCH 309/500] [Glitch] Fix console log error on column settings load Port 34c269310d2017c3164d57c1e8631f9423092ee3 to glitch-soc Signed-off-by: Claire --- .../glitch/features/notifications/components/column_settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/notifications/components/column_settings.js b/app/javascript/flavours/glitch/features/notifications/components/column_settings.js index ee05c7fd6b..64fd98bd92 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/column_settings.js +++ b/app/javascript/flavours/glitch/features/notifications/components/column_settings.js @@ -22,7 +22,7 @@ export default class ColumnSettings extends React.PureComponent { onRequestNotificationPermission: PropTypes.func, alertsEnabled: PropTypes.bool, browserSupport: PropTypes.bool, - browserPermission: PropTypes.bool, + browserPermission: PropTypes.string, }; onPushChange = (path, checked) => { From 71e68dac4e8954b32c67b3d3b5b62d4124c3e5de Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Mon, 7 Nov 2022 03:40:04 +0100 Subject: [PATCH 310/500] [Glitch] Fix JavaScript console error on Getting Started column Port ffe735344bb47ad2af743ad97729db9ea9c11f60 to glitch-soc Co-authored-by: Ilias Tsangaris Co-authored-by: Ilias Tsangaris Signed-off-by: Claire --- app/javascript/flavours/glitch/components/column_header.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/components/column_header.js b/app/javascript/flavours/glitch/components/column_header.js index 024068c584..3df3597455 100644 --- a/app/javascript/flavours/glitch/components/column_header.js +++ b/app/javascript/flavours/glitch/components/column_header.js @@ -63,7 +63,7 @@ class ColumnHeader extends React.PureComponent { } handleTitleClick = () => { - this.props.onClick(); + this.props.onClick?.(); } handleMoveLeft = () => { From 7ba13dddfadc4231f8c0643bae5a20018892855b Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Mon, 7 Nov 2022 03:40:54 +0100 Subject: [PATCH 311/500] [Glitch] Fix double button to clear emoji search input Port 4b7f32a2a668b7068ede7ac8eb2ac087883ba213 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/components/emoji_picker.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/flavours/glitch/styles/components/emoji_picker.scss b/app/javascript/flavours/glitch/styles/components/emoji_picker.scss index bad6949c28..790650cfa3 100644 --- a/app/javascript/flavours/glitch/styles/components/emoji_picker.scss +++ b/app/javascript/flavours/glitch/styles/components/emoji_picker.scss @@ -132,6 +132,10 @@ &:active { outline: 0 !important; } + + &::-webkit-search-cancel-button { + display: none; + } } } From c493c967d67058a305006a09de66a1e08d877680 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 7 Nov 2022 10:34:18 +0100 Subject: [PATCH 312/500] Fix light theme issues with the favourite modal and some background colors (#1902) * Fix favourite modal styling in glitch-soc light theme * Fix unnecessary difference between glitch-soc's light theme and upstream's --- .../features/ui/components/favourite_modal.js | 10 +++++----- .../flavours/glitch/styles/components/modal.scss | 13 ++++--------- .../flavours/glitch/styles/mastodon-light/diff.scss | 2 +- app/javascript/flavours/glitch/styles/rtl.scss | 3 +-- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/components/favourite_modal.js b/app/javascript/flavours/glitch/features/ui/components/favourite_modal.js index 4d02be29b5..d7f671d581 100644 --- a/app/javascript/flavours/glitch/features/ui/components/favourite_modal.js +++ b/app/javascript/flavours/glitch/features/ui/components/favourite_modal.js @@ -58,11 +58,11 @@ class FavouriteModal extends ImmutablePureComponent { const { status, intl } = this.props; return ( -
      -
      +
      +
      -
      -
      + -
      +
      Shift + }} />
      diff --git a/app/javascript/flavours/glitch/styles/components/modal.scss b/app/javascript/flavours/glitch/styles/components/modal.scss index 711d4d5b29..ab86091700 100644 --- a/app/javascript/flavours/glitch/styles/components/modal.scss +++ b/app/javascript/flavours/glitch/styles/components/modal.scss @@ -416,7 +416,6 @@ } .boost-modal, -.favourite-modal, .confirmation-modal, .report-modal, .actions-modal, @@ -461,7 +460,7 @@ } } -.favourite-modal .status-direct { +.boost-modal .status-direct { background-color: inherit; } @@ -478,8 +477,7 @@ } } -.boost-modal__container, -.favourite-modal__container { +.boost-modal__container { overflow-x: scroll; padding: 10px; @@ -490,7 +488,6 @@ } .boost-modal__action-bar, -.favourite-modal__action-bar, .confirmation-modal__action-bar, .mute-modal__action-bar, .block-modal__action-bar { @@ -512,13 +509,11 @@ } } -.boost-modal__status-header, -.favourite-modal__status-header { +.boost-modal__status-header { font-size: 15px; } -.boost-modal__status-time, -.favourite-modal__status-time { +.boost-modal__status-time { float: right; font-size: 14px; } diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss index f0b8a320b6..37a49ce9f1 100644 --- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss +++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss @@ -382,7 +382,7 @@ html { .picture-in-picture__header, .picture-in-picture__footer, .reactions-bar__item { - background: $ui-base-color; + background: $white; border: 1px solid lighten($ui-base-color, 8%); } diff --git a/app/javascript/flavours/glitch/styles/rtl.scss b/app/javascript/flavours/glitch/styles/rtl.scss index 2419691cd0..c14c07cb90 100644 --- a/app/javascript/flavours/glitch/styles/rtl.scss +++ b/app/javascript/flavours/glitch/styles/rtl.scss @@ -41,8 +41,7 @@ body.rtl { margin-left: 4px; } - .boost-modal__status-time, - .favourite-modal__status-time { + .boost-modal__status-time { float: left; } From 5925a31b78f9eadd8daeb8e316bd6728fde547a9 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 7 Nov 2022 15:38:55 +0100 Subject: [PATCH 313/500] Fix followers count not being updated when migrating follows (#19998) Fixes #19900 --- app/workers/move_worker.rb | 4 +++- spec/workers/move_worker_spec.rb | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/workers/move_worker.rb b/app/workers/move_worker.rb index c3167f9ca5..3b429928ea 100644 --- a/app/workers/move_worker.rb +++ b/app/workers/move_worker.rb @@ -8,7 +8,9 @@ class MoveWorker @target_account = Account.find(target_account_id) if @target_account.local? && @source_account.local? - rewrite_follows! + nb_moved = rewrite_follows! + @source_account.update_count!(:followers_count, -nb_moved) + @target_account.update_count!(:followers_count, nb_moved) else queue_follow_unfollows! end diff --git a/spec/workers/move_worker_spec.rb b/spec/workers/move_worker_spec.rb index be02d31924..3ca6aaf4de 100644 --- a/spec/workers/move_worker_spec.rb +++ b/spec/workers/move_worker_spec.rb @@ -74,6 +74,18 @@ describe MoveWorker do end end + shared_examples 'followers count handling' do + it 'updates the source account followers count' do + subject.perform(source_account.id, target_account.id) + expect(source_account.reload.followers_count).to eq(source_account.passive_relationships.count) + end + + it 'updates the target account followers count' do + subject.perform(source_account.id, target_account.id) + expect(target_account.reload.followers_count).to eq(target_account.passive_relationships.count) + end + end + context 'both accounts are distant' do describe 'perform' do it 'calls UnfollowFollowWorker' do @@ -83,6 +95,7 @@ describe MoveWorker do include_examples 'user note handling' include_examples 'block and mute handling' + include_examples 'followers count handling' end end @@ -97,6 +110,7 @@ describe MoveWorker do include_examples 'user note handling' include_examples 'block and mute handling' + include_examples 'followers count handling' end end @@ -112,6 +126,7 @@ describe MoveWorker do include_examples 'user note handling' include_examples 'block and mute handling' + include_examples 'followers count handling' it 'does not fail when a local user is already following both accounts' do double_follower = Fabricate(:account) From 8515bc79628c6e753a09a7da42eff9ce7ed4ade7 Mon Sep 17 00:00:00 2001 From: Sunny Ripert Date: Mon, 7 Nov 2022 15:41:42 +0100 Subject: [PATCH 314/500] Add form element on focal point modal (#19834) * Add form element on focal point modal * Add type="button" for detection button --- .../ui/components/focal_point_modal.js | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/focal_point_modal.js b/app/javascript/mastodon/features/ui/components/focal_point_modal.js index a2e6b3d16b..ba8aa8f039 100644 --- a/app/javascript/mastodon/features/ui/components/focal_point_modal.js +++ b/app/javascript/mastodon/features/ui/components/focal_point_modal.js @@ -176,14 +176,14 @@ class FocalPointModal extends ImmutablePureComponent { handleKeyDown = (e) => { if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) { - e.preventDefault(); - e.stopPropagation(); this.props.onChangeDescription(e.target.value); - this.handleSubmit(); + this.handleSubmit(e); } } - handleSubmit = () => { + handleSubmit = (e) => { + e.preventDefault(); + e.stopPropagation(); this.props.onSave(this.props.description, this.props.focusX, this.props.focusY); } @@ -313,7 +313,7 @@ class FocalPointModal extends ImmutablePureComponent {
      -
      +
      {focals &&

      } {thumbnailable && ( @@ -361,12 +361,23 @@ class FocalPointModal extends ImmutablePureComponent {
      - +
      -
      + +

      {mentionsPlaceholder} From 86a80acf40c5ca212ffede62a42806e035d7cab3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Nov 2022 16:06:48 +0100 Subject: [PATCH 318/500] New Crowdin updates (#19771) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Icelandic) * New translations en.yml (Japanese) * New translations en.yml (Armenian) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Chinese Simplified) * New translations en.yml (Ido) * New translations en.json (Esperanto) * New translations en.yml (Turkish) * New translations en.yml (Albanian) * New translations en.yml (Ukrainian) * New translations en.yml (Romanian) * New translations en.yml (Hungarian) * New translations en.yml (Bulgarian) * New translations en.yml (Catalan) * New translations en.yml (Danish) * New translations en.yml (Greek) * New translations en.yml (Frisian) * New translations en.yml (Basque) * New translations en.json (Finnish) * New translations en.yml (Finnish) * New translations en.yml (Irish) * New translations en.yml (Hebrew) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Sinhala) * New translations en.yml (Cornish) * New translations en.yml (Kannada) * New translations en.yml (Asturian) * New translations en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Corsican) * New translations en.yml (Malayalam) * New translations en.yml (Sardinian) * New translations en.yml (Sanskrit) * New translations en.yml (Kabyle) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations en.yml (Burmese) * New translations en.yml (Breton) * New translations en.yml (Tatar) * New translations en.yml (Indonesian) * New translations en.yml (Kazakh) * New translations en.yml (Persian) * New translations en.yml (Tamil) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Marathi) * New translations en.yml (Croatian) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Estonian) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.json (Latvian) * New translations en.yml (Latvian) * New translations en.yml (Hindi) * New translations en.yml (Malay) * New translations en.yml (Telugu) * New translations en.yml (English, United Kingdom) * New translations en.yml (Welsh) * New translations en.yml (Esperanto) * New translations en.yml (Uyghur) * New translations en.yml (Igbo) * New translations en.json (Czech) * New translations en.json (Dutch) * New translations en.json (Hungarian) * New translations en.yml (Hungarian) * New translations en.yml (Dutch) * New translations en.yml (Polish) * New translations en.yml (Swedish) * New translations en.json (Icelandic) * New translations en.yml (Icelandic) * New translations en.json (Dutch) * New translations en.yml (Ukrainian) * New translations en.yml (Swedish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations simple_form.en.yml (Irish) * New translations simple_form.en.yml (Asturian) * New translations devise.en.yml (Asturian) * New translations en.json (Slovenian) * New translations en.yml (Slovenian) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.yml (Asturian) * New translations simple_form.en.yml (Vietnamese) * New translations simple_form.en.yml (Asturian) * New translations activerecord.en.yml (Asturian) * New translations devise.en.yml (Asturian) * New translations en.json (Japanese) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Japanese) * New translations en.yml (Japanese) * New translations en.json (Vietnamese) * New translations en.yml (Vietnamese) * New translations simple_form.en.yml (Vietnamese) * New translations doorkeeper.en.yml (Vietnamese) * New translations en.json (Afrikaans) * New translations en.json (Galician) * New translations en.yml (Turkish) * New translations en.json (Afrikaans) * New translations en.yml (Afrikaans) * New translations en.yml (Galician) * New translations simple_form.en.yml (Afrikaans) * New translations en.json (Albanian) * New translations en.yml (Albanian) * New translations en.yml (French) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.json (Slovenian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Albanian) * New translations activerecord.en.yml (French) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations devise.en.yml (French) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Occitan) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Occitan) * New translations doorkeeper.en.yml (Occitan) * New translations activerecord.en.yml (Occitan) * New translations en.yml (Spanish) * New translations en.yml (Japanese) * New translations en.json (Occitan) * New translations en.json (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations doorkeeper.en.yml (Occitan) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.json (Irish) * New translations en.json (Slovenian) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Irish) * New translations doorkeeper.en.yml (Irish) * New translations simple_form.en.yml (Thai) * New translations en.json (Thai) * New translations en.json (German) * New translations en.yml (Spanish) * New translations en.json (Greek) * New translations en.json (Slovenian) * New translations en.json (Scottish Gaelic) * New translations en.yml (Asturian) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Scottish Gaelic) * New translations devise.en.yml (Asturian) * New translations en.json (Danish) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.yml (Asturian) * New translations simple_form.en.yml (Korean) * New translations en.json (French) * New translations en.json (Danish) * New translations en.yml (Danish) * New translations en.json (Ukrainian) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations en.json (German) * New translations en.json (Catalan) * New translations en.json (Danish) * New translations en.yml (Danish) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Spanish, Mexico) * New translations en.json (Asturian) * New translations en.json (Occitan) * New translations doorkeeper.en.yml (Catalan) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Scottish Gaelic) * New translations en.json (German) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations en.json (Asturian) * New translations en.yml (Asturian) * New translations en.json (Sorani (Kurdish)) * New translations en.json (French) * New translations en.yml (Dutch) * New translations en.json (Welsh) * New translations en.json (Sorani (Kurdish)) * New translations doorkeeper.en.yml (Norwegian Nynorsk) * New translations en.json (Dutch) * New translations en.json (French) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations doorkeeper.en.yml (Dutch) * New translations en.json (Irish) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (German) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Arabic) * New translations en.yml (Ukrainian) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (Ukrainian) * New translations doorkeeper.en.yml (Ukrainian) * New translations activerecord.en.yml (Ukrainian) * New translations en.json (Russian) * New translations en.json (Bulgarian) * New translations en.json (Hebrew) * New translations en.json (Bulgarian) * New translations en.json (Japanese) * New translations en.yml (Finnish) * New translations simple_form.en.yml (Japanese) * New translations devise.en.yml (Finnish) * New translations en.json (Hebrew) * New translations en.yml (German) * New translations en.json (Bulgarian) * New translations en.yml (Polish) * New translations simple_form.en.yml (Japanese) * New translations activerecord.en.yml (Arabic) * New translations activerecord.en.yml (Hebrew) * New translations en.json (Bulgarian) * New translations en.json (German) * New translations en.json (Danish) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations en.json (Bulgarian) * New translations en.json (Frisian) * New translations en.json (Russian) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Russian) * New translations devise.en.yml (Frisian) * New translations en.yml (Czech) * New translations en.json (Bulgarian) * New translations en.json (Czech) * New translations en.json (Frisian) * New translations en.json (Italian) * New translations en.json (Polish) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 126 ++-- app/javascript/mastodon/locales/ar.json | 94 +-- app/javascript/mastodon/locales/ast.json | 36 +- app/javascript/mastodon/locales/bg.json | 346 +++++----- app/javascript/mastodon/locales/bn.json | 6 +- app/javascript/mastodon/locales/br.json | 6 +- app/javascript/mastodon/locales/ca.json | 16 +- app/javascript/mastodon/locales/ckb.json | 24 +- app/javascript/mastodon/locales/co.json | 6 +- app/javascript/mastodon/locales/cs.json | 14 +- app/javascript/mastodon/locales/cy.json | 14 +- app/javascript/mastodon/locales/da.json | 16 +- app/javascript/mastodon/locales/de.json | 20 +- .../mastodon/locales/defaultMessages.json | 31 +- app/javascript/mastodon/locales/el.json | 6 +- app/javascript/mastodon/locales/en-GB.json | 6 +- app/javascript/mastodon/locales/en.json | 4 + app/javascript/mastodon/locales/eo.json | 16 +- app/javascript/mastodon/locales/es-AR.json | 6 +- app/javascript/mastodon/locales/es-MX.json | 28 +- app/javascript/mastodon/locales/es.json | 28 +- app/javascript/mastodon/locales/et.json | 6 +- app/javascript/mastodon/locales/eu.json | 6 +- app/javascript/mastodon/locales/fa.json | 6 +- app/javascript/mastodon/locales/fi.json | 6 +- app/javascript/mastodon/locales/fr.json | 26 +- app/javascript/mastodon/locales/fy.json | 624 +++++++++--------- app/javascript/mastodon/locales/ga.json | 58 +- app/javascript/mastodon/locales/gd.json | 38 +- app/javascript/mastodon/locales/gl.json | 10 +- app/javascript/mastodon/locales/he.json | 36 +- app/javascript/mastodon/locales/hi.json | 6 +- app/javascript/mastodon/locales/hr.json | 6 +- app/javascript/mastodon/locales/hu.json | 6 +- app/javascript/mastodon/locales/hy.json | 6 +- app/javascript/mastodon/locales/id.json | 6 +- app/javascript/mastodon/locales/ig.json | 6 +- app/javascript/mastodon/locales/io.json | 6 +- app/javascript/mastodon/locales/is.json | 6 +- app/javascript/mastodon/locales/it.json | 8 +- app/javascript/mastodon/locales/ja.json | 26 +- app/javascript/mastodon/locales/ka.json | 6 +- app/javascript/mastodon/locales/kab.json | 6 +- app/javascript/mastodon/locales/kk.json | 6 +- app/javascript/mastodon/locales/kn.json | 6 +- app/javascript/mastodon/locales/ko.json | 6 +- app/javascript/mastodon/locales/ku.json | 6 +- app/javascript/mastodon/locales/kw.json | 6 +- app/javascript/mastodon/locales/lt.json | 6 +- app/javascript/mastodon/locales/lv.json | 6 +- app/javascript/mastodon/locales/mk.json | 6 +- app/javascript/mastodon/locales/ml.json | 6 +- app/javascript/mastodon/locales/mr.json | 6 +- app/javascript/mastodon/locales/ms.json | 6 +- app/javascript/mastodon/locales/my.json | 6 +- app/javascript/mastodon/locales/nl.json | 10 +- app/javascript/mastodon/locales/nn.json | 332 +++++----- app/javascript/mastodon/locales/no.json | 6 +- app/javascript/mastodon/locales/oc.json | 146 ++-- app/javascript/mastodon/locales/pa.json | 6 +- app/javascript/mastodon/locales/pl.json | 10 +- app/javascript/mastodon/locales/pt-BR.json | 54 +- app/javascript/mastodon/locales/pt-PT.json | 6 +- app/javascript/mastodon/locales/ro.json | 6 +- app/javascript/mastodon/locales/ru.json | 10 +- app/javascript/mastodon/locales/sa.json | 6 +- app/javascript/mastodon/locales/sc.json | 6 +- app/javascript/mastodon/locales/si.json | 6 +- app/javascript/mastodon/locales/sk.json | 6 +- app/javascript/mastodon/locales/sl.json | 234 +++---- app/javascript/mastodon/locales/sq.json | 6 +- app/javascript/mastodon/locales/sr-Latn.json | 6 +- app/javascript/mastodon/locales/sr.json | 6 +- app/javascript/mastodon/locales/sv.json | 10 +- app/javascript/mastodon/locales/szl.json | 6 +- app/javascript/mastodon/locales/ta.json | 6 +- app/javascript/mastodon/locales/tai.json | 6 +- app/javascript/mastodon/locales/te.json | 6 +- app/javascript/mastodon/locales/th.json | 18 +- app/javascript/mastodon/locales/tr.json | 24 +- app/javascript/mastodon/locales/tt.json | 6 +- app/javascript/mastodon/locales/ug.json | 6 +- app/javascript/mastodon/locales/uk.json | 22 +- app/javascript/mastodon/locales/ur.json | 6 +- app/javascript/mastodon/locales/vi.json | 40 +- app/javascript/mastodon/locales/zgh.json | 6 +- app/javascript/mastodon/locales/zh-CN.json | 8 +- app/javascript/mastodon/locales/zh-HK.json | 6 +- app/javascript/mastodon/locales/zh-TW.json | 6 +- config/locales/activerecord.ar.yml | 23 + config/locales/activerecord.ast.yml | 9 + config/locales/activerecord.ckb.yml | 18 + config/locales/activerecord.fr.yml | 6 +- config/locales/activerecord.he.yml | 6 +- config/locales/activerecord.nn.yml | 9 +- config/locales/activerecord.oc.yml | 23 + config/locales/activerecord.uk.yml | 2 +- config/locales/af.yml | 65 ++ config/locales/ar.yml | 25 + config/locales/ast.yml | 25 +- config/locales/ca.yml | 1 + config/locales/ckb.yml | 27 +- config/locales/cs.yml | 5 + config/locales/da.yml | 11 +- config/locales/de.yml | 105 +-- config/locales/devise.ast.yml | 5 +- config/locales/devise.fi.yml | 2 +- config/locales/devise.fr.yml | 2 +- config/locales/devise.fy.yml | 19 + config/locales/devise.nn.yml | 2 + config/locales/devise.sv.yml | 16 +- config/locales/doorkeeper.ca.yml | 2 +- config/locales/doorkeeper.ga.yml | 4 + config/locales/doorkeeper.gd.yml | 10 +- config/locales/doorkeeper.nl.yml | 4 +- config/locales/doorkeeper.nn.yml | 82 ++- config/locales/doorkeeper.oc.yml | 26 + config/locales/doorkeeper.pt-BR.yml | 2 + config/locales/doorkeeper.uk.yml | 6 +- config/locales/doorkeeper.vi.yml | 4 +- config/locales/el.yml | 1 + config/locales/eo.yml | 1 + config/locales/es-AR.yml | 1 + config/locales/es-MX.yml | 22 +- config/locales/es.yml | 20 +- config/locales/fi.yml | 1 + config/locales/fr.yml | 7 + config/locales/gd.yml | 7 +- config/locales/gl.yml | 1 + config/locales/hu.yml | 1 + config/locales/is.yml | 1 + config/locales/it.yml | 1 + config/locales/ja.yml | 7 +- config/locales/ko.yml | 3 + config/locales/ku.yml | 45 +- config/locales/lv.yml | 1 + config/locales/nl.yml | 42 +- config/locales/nn.yml | 1 + config/locales/oc.yml | 76 ++- config/locales/pl.yml | 1 + config/locales/pt-BR.yml | 41 ++ config/locales/pt-PT.yml | 1 + config/locales/simple_form.af.yml | 6 + config/locales/simple_form.ar.yml | 1 + config/locales/simple_form.ast.yml | 27 +- config/locales/simple_form.cs.yml | 32 +- config/locales/simple_form.da.yml | 2 + config/locales/simple_form.de.yml | 4 +- config/locales/simple_form.eo.yml | 2 + config/locales/simple_form.es.yml | 2 + config/locales/simple_form.fr.yml | 27 +- config/locales/simple_form.ga.yml | 43 ++ config/locales/simple_form.gd.yml | 10 +- config/locales/simple_form.he.yml | 2 + config/locales/simple_form.ja.yml | 22 +- config/locales/simple_form.ko.yml | 1 + config/locales/simple_form.ku.yml | 1 + config/locales/simple_form.nl.yml | 8 +- config/locales/simple_form.nn.yml | 15 +- config/locales/simple_form.oc.yml | 20 + config/locales/simple_form.pt-BR.yml | 2 + config/locales/simple_form.ru.yml | 2 + config/locales/simple_form.sq.yml | 2 + config/locales/simple_form.th.yml | 3 + config/locales/simple_form.tr.yml | 2 + config/locales/simple_form.uk.yml | 10 +- config/locales/simple_form.vi.yml | 14 +- config/locales/sl.yml | 1 + config/locales/sq.yml | 1 + config/locales/sv.yml | 186 +++++- config/locales/th.yml | 1 + config/locales/tr.yml | 1 + config/locales/uk.yml | 47 +- config/locales/vi.yml | 65 +- config/locales/zh-CN.yml | 1 + config/locales/zh-TW.yml | 1 + 176 files changed, 2715 insertions(+), 1552 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index d5af5a213c..bfa5a89f99 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -1,5 +1,5 @@ { - "about.blocks": "Gehodereerde bedieners", + "about.blocks": "Gemodereerde bedieners", "about.contact": "Kontak:", "about.disclaimer": "Mastodon is gratis, oop-bron sagteware, en 'n handelsmerk van Mastodon gGmbH.", "about.domain_blocks.comment": "Rede", @@ -7,11 +7,11 @@ "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Ernstigheid", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.title": "Beperk", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Opgeskort", "about.not_available": "Hierdie informasie is nie beskikbaar gemaak op hierdie bediener nie.", - "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.powered_by": "Gedesentraliseerde sosiale media bekragtig deur {mastodon}", "about.rules": "Bediener reëls", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Voeg by of verwyder van lyste", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Die gebruiker volg nie tans iemand nie.", "account.follows_you": "Volg jou", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", "account.joined_short": "Aangesluit", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Die rekening se privaatheidstatus is gesluit. Die eienaar hersien handmatig wie hom/haar kan volg.", "account.media": "Media", "account.mention": "Noem @{name}", - "account.moved_to": "{name} is geskuif na:", + "account.moved_to": "{name} het aangedui dat hul nuwe rekening die volgende is:", "account.mute": "Demp @{name}", "account.mute_notifications": "Demp kennisgewings van @{name}", "account.muted": "Gedemp", @@ -72,7 +73,7 @@ "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "Nuwe gebruikers", "alert.rate_limited.message": "Probeer asb. weer na {retry_time, time, medium}.", - "alert.rate_limited.title": "Rate limited", + "alert.rate_limited.title": "Tempo-beperk", "alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.title": "Oeps!", "announcement.announcement": "Aankondiging", @@ -89,14 +90,14 @@ "bundle_column_error.return": "Gaan terug huistoe", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", - "bundle_modal_error.close": "Close", + "bundle_modal_error.close": "Maak toe", "bundle_modal_error.message": "Iets het verkeerd gegaan terwyl hierdie komponent besig was om te laai.", "bundle_modal_error.retry": "Probeer weer", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.find_another_server": "Vind 'n ander bediener", + "closed_registrations_modal.preamble": "Mastodon is gedesentraliseerd, so ongeag van waar jou rekening geskep word, jy sal in staat wees enige iemand op hierdie bediener te volg en interaksie te he. Jy kan dit ook self 'n bediener bestuur!", + "closed_registrations_modal.title": "Aanteken by Mastodon", "column.about": "Aangaande", "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Boekmerke", @@ -128,7 +129,7 @@ "compose_form.direct_message_warning_learn_more": "Leer meer", "compose_form.encryption_warning": "Plasings op Mastodon het nie end-tot-end enkripsie nie. Moet nie enige sensitiewe inligting oor Mastodon deel nie.", "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", - "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.lock_disclaimer": "Jou rekening is nie {locked}. Enigeeen kan jou volg om jou slegs-volgeling plasings te sien.", "compose_form.lock_disclaimer.lock": "gesluit", "compose_form.placeholder": "What is on your mind?", "compose_form.poll.add_option": "Voeg 'n keuse by", @@ -146,8 +147,8 @@ "compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "Write your warning here", - "confirmation_modal.cancel": "Cancel", - "confirmations.block.block_and_report": "Block & Report", + "confirmation_modal.cancel": "Kanselleer", + "confirmations.block.block_and_report": "Block & Rapporteer", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", "confirmations.cancel_follow_request.confirm": "Withdraw request", @@ -160,8 +161,8 @@ "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", - "confirmations.logout.confirm": "Log out", - "confirmations.logout.message": "Are you sure you want to log out?", + "confirmations.logout.confirm": "Teken Uit", + "confirmations.logout.message": "Is jy seker jy wil uit teken?", "confirmations.mute.confirm": "Mute", "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", "confirmations.mute.message": "Are you sure you want to mute {name}?", @@ -177,10 +178,12 @@ "conversation.with": "With {names}", "copypaste.copied": "Copied", "copypaste.copy": "Copy", - "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", + "directory.federated": "Vanaf bekende fediverse", + "directory.local": "Slegs vanaf {domain}", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -200,8 +203,8 @@ "emoji_button.objects": "Objects", "emoji_button.people": "People", "emoji_button.recent": "Frequently used", - "emoji_button.search": "Search...", - "emoji_button.search_results": "Search results", + "emoji_button.search": "Soek...", + "emoji_button.search_results": "Soek resultate", "emoji_button.symbols": "Symbols", "emoji_button.travel": "Travel & Places", "empty_column.account_suspended": "Account suspended", @@ -209,7 +212,7 @@ "empty_column.account_unavailable": "Profile unavailable", "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", - "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", + "empty_column.community": "Die plaaslike tydlyn is leeg. Skryf iets vir die publiek om die bal aan die rol te kry!", "empty_column.direct": "Jy het nog nie direkte boodskappe nie. Wanneer jy een stuur of ontvang, sal dit hier verskyn.", "empty_column.domain_blocks": "There are no blocked domains yet.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", @@ -231,7 +234,7 @@ "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", "errors.unexpected_crash.report_issue": "Report issue", - "explore.search_results": "Search results", + "explore.search_results": "Soek resultate", "explore.suggested_follows": "For you", "explore.title": "Explore", "explore.trending_links": "News", @@ -249,7 +252,7 @@ "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.search": "Soek of skep", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", @@ -259,12 +262,12 @@ "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", + "footer.about": "Aangaande", + "footer.directory": "Profielgids", + "footer.get_app": "Kry die Toep", "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.keyboard_shortcuts": "Sleutelbord kortpaaie", + "footer.privacy_policy": "Privaatheidsbeleid", "footer.source_code": "View source code", "generic.saved": "Saved", "getting_started.heading": "Getting started", @@ -304,7 +307,7 @@ "keyboard_shortcuts.boost": "to boost", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.description": "Beskrywing", "keyboard_shortcuts.direct": "om direkte boodskappe kolom oop te maak", "keyboard_shortcuts.down": "to move down in the list", "keyboard_shortcuts.enter": "to open status", @@ -326,9 +329,9 @@ "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", "keyboard_shortcuts.search": "to focus search", - "keyboard_shortcuts.spoilers": "to show/hide CW field", + "keyboard_shortcuts.spoilers": "Wys/versteek IW veld", "keyboard_shortcuts.start": "to open \"get started\" column", - "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", + "keyboard_shortcuts.toggle_hidden": "Wys/versteek teks agter IW", "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", "keyboard_shortcuts.toot": "to start a brand new toot", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", @@ -339,7 +342,7 @@ "lightbox.next": "Next", "lightbox.previous": "Previous", "limited_account_hint.action": "Vertoon profiel in elkgeval", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "Hierdie profiel is deur moderators van {domain} versteek.", "lists.account.add": "Add to list", "lists.account.remove": "Remove from list", "lists.delete": "Delete list", @@ -358,31 +361,32 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", - "navigation_bar.about": "About", + "navigation_bar.about": "Aangaande", "navigation_bar.blocks": "Blocked users", - "navigation_bar.bookmarks": "Bookmarks", - "navigation_bar.community_timeline": "Local timeline", + "navigation_bar.bookmarks": "Boekmerke", + "navigation_bar.community_timeline": "Plaaslike tydlyn", "navigation_bar.compose": "Compose new toot", "navigation_bar.direct": "Direkte boodskappe", "navigation_bar.discover": "Discover", "navigation_bar.domain_blocks": "Hidden domains", - "navigation_bar.edit_profile": "Edit profile", + "navigation_bar.edit_profile": "Redigeer profiel", "navigation_bar.explore": "Explore", - "navigation_bar.favourites": "Favourites", + "navigation_bar.favourites": "Gunstelinge", "navigation_bar.filters": "Muted words", "navigation_bar.follow_requests": "Follow requests", "navigation_bar.follows_and_followers": "Follows and followers", "navigation_bar.lists": "Lists", - "navigation_bar.logout": "Logout", + "navigation_bar.logout": "Teken Uit", "navigation_bar.mutes": "Muted users", "navigation_bar.personal": "Personal", "navigation_bar.pins": "Pinned toots", - "navigation_bar.preferences": "Preferences", - "navigation_bar.public_timeline": "Federated timeline", - "navigation_bar.search": "Search", + "navigation_bar.preferences": "Voorkeure", + "navigation_bar.public_timeline": "Gefedereerde tydlyn", + "navigation_bar.search": "Soek", "navigation_bar.security": "Security", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -401,7 +405,7 @@ "notifications.column_settings.admin.report": "New reports:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Desktop notifications", - "notifications.column_settings.favourite": "Favourites:", + "notifications.column_settings.favourite": "Gunstelinge:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.filter_bar.show_bar": "Show filter bar", @@ -409,23 +413,23 @@ "notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.mention": "Mentions:", "notifications.column_settings.poll": "Poll results:", - "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.push": "Stoot kennisgewings", "notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Beklemtoon ongeleesde kennisgewings", "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", + "notifications.filter.favourites": "Gunstelinge", "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.filter.polls": "Poll results", "notifications.filter.statuses": "Updates from people you follow", "notifications.grant_permission": "Grant permission.", - "notifications.group": "{count} notifications", + "notifications.group": "{count} kennisgewings", "notifications.mark_as_read": "Mark every notification as read", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", @@ -452,8 +456,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Unlisted", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Laas opdateer om {date}", + "privacy_policy.title": "Privaatheidsbeleid", "refresh": "Refresh", "regeneration_indicator.label": "Loading…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", @@ -511,25 +515,25 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", - "search.placeholder": "Search", - "search.search_or_paste": "Search or paste URL", - "search_popout.search_format": "Advanced search format", + "search.placeholder": "Soek", + "search.search_or_paste": "Soek of plak URL", + "search_popout.search_format": "Gevorderde soek formaat", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", - "search_popout.tips.hashtag": "hashtag", + "search_popout.tips.hashtag": "hits-etiket", "search_popout.tips.status": "status", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", - "search_popout.tips.user": "user", - "search_results.accounts": "People", - "search_results.all": "All", - "search_results.hashtags": "Hashtags", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_popout.tips.user": "gebruiker", + "search_results.accounts": "Mense", + "search_results.all": "Alles", + "search_results.hashtags": "Hits-etiket", + "search_results.nothing_found": "Kon niks vind vir hierdie soek terme nie", "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", - "search_results.title": "Search for {q}", + "search_results.title": "Soek vir {q}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.administered_by": "Administrasie deur:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", "server_banner.learn_more": "Learn more", "server_banner.server_stats": "Server stats:", @@ -576,7 +580,7 @@ "status.reply": "Reply", "status.replyAll": "Reply to thread", "status.report": "Report @{name}", - "status.sensitive_warning": "Sensitive content", + "status.sensitive_warning": "Sensitiewe inhoud", "status.share": "Share", "status.show_filter_reason": "Show anyway", "status.show_less": "Show less", @@ -594,10 +598,10 @@ "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", - "tabs_bar.federated_timeline": "Federated", + "tabs_bar.federated_timeline": "Gefedereerde", "tabs_bar.home": "Home", - "tabs_bar.local_timeline": "Local", - "tabs_bar.notifications": "Notifications", + "tabs_bar.local_timeline": "Plaaslik", + "tabs_bar.notifications": "Kennisgewings", "time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 2f19596ca5..0392a58b54 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -1,16 +1,16 @@ { "about.blocks": "خوادم تحت الإشراف", "about.contact": "اتصل بـ:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "ماستدون مجاني ومفتوح المصدر وعلامة تجارية لماستدون GmbH.", "about.domain_blocks.comment": "السبب", "about.domain_blocks.domain": "النطاق", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", + "about.domain_blocks.preamble": "يسمح لك ماستدون عموماً بعرض المحتوى من المستخدمين من أي خادم آخر في الفدرالية والتفاعل معهم. وهذه هي الاستثناءات التي وضعت على هذا الخادوم بالذات.", + "about.domain_blocks.severity": "خطورة", + "about.domain_blocks.silenced.explanation": "عموماً، لن ترى ملفات التعريف والمحتوى من هذا الخادم، إلا إذا كنت تبحث عنه بشكل صريح أو تختار أن تتابعه.", + "about.domain_blocks.silenced.title": "تم كتمه", + "about.domain_blocks.suspended.explanation": "لن يتم معالجة أي بيانات من هذا الخادم أو تخزينها أو تبادلها، مما يجعل أي تفاعل أو اتصال مع المستخدمين من هذا الخادم مستحيلا.", + "about.domain_blocks.suspended.title": "مُعلّـق", + "about.not_available": "لم يتم توفير هذه المعلومات على هذا الخادم.", "about.powered_by": "شبكة اجتماعية لامركزية مدعومة من {mastodon}", "about.rules": "قواعد الخادم", "account.account_note_header": "مُلاحظة", @@ -21,7 +21,7 @@ "account.block_domain": "حظر اسم النِّطاق {domain}", "account.blocked": "محظور", "account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "إلغاء طلب المتابعة", "account.direct": "مراسلة @{name} بشكل مباشر", "account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}", "account.domain_blocked": "اسم النِّطاق محظور", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, zero{لا يُتابِع} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}", "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", "account.follows_you": "يُتابِعُك", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "إخفاء مشاركات @{name}", "account.joined_short": "انضم في", "account.languages": "تغيير اللغات المشترَك فيها", @@ -46,7 +47,7 @@ "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.", "account.media": "وسائط", "account.mention": "ذِكر @{name}", - "account.moved_to": "لقد انتقل {name} إلى:", + "account.moved_to": "أشار {name} إلى أن حسابه الجديد الآن:", "account.mute": "كَتم @{name}", "account.mute_notifications": "كَتم الإشعارات من @{name}", "account.muted": "مَكتوم", @@ -80,10 +81,10 @@ "audio.hide": "إخفاء المقطع الصوتي", "autosuggest_hashtag.per_week": "{count} في الأسبوع", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.copy_stacktrace": "نسخ تقرير الخطأ", + "bundle_column_error.error.body": "لا يمكن تقديم الصفحة المطلوبة. قد يكون بسبب خطأ في التعليمات البرمجية، أو مشكلة توافق المتصفح.", "bundle_column_error.error.title": "أوه لا!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.body": "حدث خطأ أثناء محاولة تحميل هذه الصفحة. قد يكون هذا بسبب مشكلة مؤقتة في اتصالك بالإنترنت أو هذا الخادم.", "bundle_column_error.network.title": "خطأ في الشبكة", "bundle_column_error.retry": "إعادة المُحاولة", "bundle_column_error.return": "العودة إلى الرئيسية", @@ -96,7 +97,7 @@ "closed_registrations_modal.description": "لا يمكن إنشاء حساب على {domain} حاليا، ولكن على فكرة لست بحاجة إلى حساب على {domain} بذاته لاستخدام ماستدون.", "closed_registrations_modal.find_another_server": "ابحث على خادم آخر", "closed_registrations_modal.preamble": "ماستدون لامركزي، لذلك بغض النظر عن مكان إنشاء حسابك، سيكون بإمكانك المتابعة والتفاعل مع أي شخص على هذا الخادم. يمكنك حتى أن تستضيفه ذاتياً!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.title": "تسجيل حساب في ماستدون", "column.about": "عن", "column.blocks": "المُستَخدِمون المَحظورون", "column.bookmarks": "الفواصل المرجعية", @@ -150,8 +151,8 @@ "confirmations.block.block_and_report": "حظره والإبلاغ عنه", "confirmations.block.confirm": "حظر", "confirmations.block.message": "هل أنتَ مُتأكدٌ أنكَ تُريدُ حَظرَ {name}؟", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "إلغاء الطلب", + "confirmations.cancel_follow_request.message": "متأكد من إلغاء طلب متابعة {name}؟", "confirmations.delete.confirm": "حذف", "confirmations.delete.message": "هل أنتَ مُتأكدٌ أنك تُريدُ حَذفَ هذا المنشور؟", "confirmations.delete_list.confirm": "حذف", @@ -181,11 +182,13 @@ "directory.local": "مِن {domain} فقط", "directory.new_arrivals": "الوافدون الجُدد", "directory.recently_active": "نشط مؤخرا", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "dismissable_banner.community_timeline": "هذه هي أحدث المشاركات العامة من الأشخاص الذين تُستضاف حساباتهم على {domain}.", + "dismissable_banner.dismiss": "إغلاق", + "dismissable_banner.explore_links": "هذه القصص الإخبارية يتحدث عنها أشخاص على هذا الخوادم الأخرى للشبكة اللامركزية في الوقت الحالي.", + "dismissable_banner.explore_statuses": "هذه المشاركات من هذا الخوادم الأخرى في الشبكة اللامركزية تجذب انتباه المستخدمين على هذا الخادم الآن.", + "dismissable_banner.explore_tags": "هذه العلامات تكتسب جذب بين الناس على هذا الخوادم الأخرى للشبكة اللامركزية في الوقت الحالي.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.", "embed.preview": "هكذا ما سوف يبدو عليه:", @@ -247,25 +250,25 @@ "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.expired": "منتهية الصلاحيّة", "filter_modal.select_filter.prompt_new": "فئة جديدة: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.search": "البحث أو الإنشاء", + "filter_modal.select_filter.subtitle": "استخدام فئة موجودة أو إنشاء فئة جديدة", + "filter_modal.select_filter.title": "تصفية هذا المنشور", + "filter_modal.title.status": "تصفية منشور", "follow_recommendations.done": "تم", "follow_recommendations.heading": "تابع الأشخاص الذين ترغب في رؤية منشوراتهم! إليك بعض الاقتراحات.", "follow_recommendations.lead": "ستظهر منشورات الأشخاص الذين تُتابعتهم بترتيب تسلسلي زمني على صفحتك الرئيسية. لا تخف إذا ارتكبت أي أخطاء، تستطيع إلغاء متابعة أي شخص في أي وقت تريد!", "follow_request.authorize": "ترخيص", "follow_request.reject": "رفض", "follow_requests.unlocked_explanation": "على الرغم من أن حسابك غير مقفل، فإن موظفين الـ{domain} ظنوا أنك قد ترغب في مراجعة طلبات المتابعة من هذه الحسابات يدوياً.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "حَول", + "footer.directory": "دليل الصفحات التعريفية", + "footer.get_app": "احصل على التطبيق", + "footer.invite": "دعوة أشخاص", + "footer.keyboard_shortcuts": "اختصارات لوحة المفاتيح", + "footer.privacy_policy": "سياسة الخصوصية", + "footer.source_code": "الاطلاع على الشفرة المصدرية", "generic.saved": "تم الحفظ", "getting_started.heading": "استعدّ للبدء", "hashtag.column_header.tag_mode.all": "و {additional}", @@ -292,10 +295,10 @@ "interaction_modal.on_this_server": "على هذا الخادم", "interaction_modal.other_server_instructions": "ببساطة قم بنسخ ولصق هذا الرابط في شريط البحث في تطبيقك المفضل أو على واجهة الويب أين ولجت بحسابك.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.favourite": "الإعجاب بمنشور {name}", "interaction_modal.title.follow": "اتبع {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reblog": "مشاركة منشور {name}", + "interaction_modal.title.reply": "الرد على منشور {name}", "intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}", "intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}", "intervals.full.minutes": "{number, plural, one {# دقيقة} other {# دقائق}}", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, zero {} one {اخف الصورة} two {اخف الصورتين} few {اخف الصور} many {اخف الصور} other {اخف الصور}}", "missing_indicator.label": "غير موجود", "missing_indicator.sublabel": "تعذر العثور على هذا المورد", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "المدة", "mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟", "mute_modal.indefinite": "إلى أجل غير مسمى", @@ -452,17 +456,17 @@ "privacy.public.short": "للعامة", "privacy.unlisted.long": "مرئي للجميع، ولكن مِن دون ميزات الاكتشاف", "privacy.unlisted.short": "غير مدرج", - "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.last_updated": "آخر تحديث {date}", "privacy_policy.title": "سياسة الخصوصية", "refresh": "أنعِش", "regeneration_indicator.label": "جارٍ التحميل…", "regeneration_indicator.sublabel": "جارٍ تجهيز تغذية صفحتك الرئيسية!", "relative_time.days": "{number}ي", "relative_time.full.days": "منذ {number, plural, zero {} one {# يوم} two {# يومين} few {# أيام} many {# أيام} other {# يوم}}", - "relative_time.full.hours": "منذ {number, plural, zero {} one {# ساعة واحدة} two {# ساعتين} few {# ساعات} many {# ساعات} other {# ساعة}}", + "relative_time.full.hours": "منذ {number, plural, zero {} one {ساعة واحدة} two {ساعتَيْن} few {# ساعات} many {# ساعة} other {# ساعة}}", "relative_time.full.just_now": "الآن", - "relative_time.full.minutes": "منذ {number, plural, zero {} one {# دقيقة واحدة} two {# دقيقتين} few {# دقائق} many {# دقيقة} other {# دقائق}}", - "relative_time.full.seconds": "منذ {number, plural, zero {} one {# ثانية واحدة} two {# ثانيتين} few {# ثوانٍ} many {# ثوانٍ} other {# ثانية}}", + "relative_time.full.minutes": "منذ {number, plural, zero {} one {دقيقة} two {دقيقتَيْن} few {# دقائق} many {# دقيقة} other {# دقائق}}", + "relative_time.full.seconds": "منذ {number, plural, zero {} one {ثانية} two {ثانيتَيْن} few {# ثوانٍ} many {# ثانية} other {# ثانية}}", "relative_time.hours": "{number}سا", "relative_time.just_now": "الآن", "relative_time.minutes": "{number}د", @@ -509,10 +513,10 @@ "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", "report_notification.categories.other": "آخر", "report_notification.categories.spam": "مزعج", - "report_notification.categories.violation": "Rule violation", + "report_notification.categories.violation": "القاعدة المنتهَكة", "report_notification.open": "Open report", "search.placeholder": "ابحث", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "ابحث أو أدخل رابطا تشعبيا URL", "search_popout.search_format": "نمط البحث المتقدم", "search_popout.tips.full_text": "النص البسيط يقوم بعرض المنشورات التي كتبتها أو قمت بإرسالها أو ترقيتها أو تمت الإشارة إليك فيها من طرف آخرين ، بالإضافة إلى مطابقة أسماء المستخدمين وأسماء العرض وعلامات التصنيف.", "search_popout.tips.hashtag": "وسم", @@ -535,7 +539,7 @@ "server_banner.server_stats": "إحصائيات الخادم:", "sign_in_banner.create_account": "أنشئ حسابًا", "sign_in_banner.sign_in": "لِج", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "sign_in_banner.text": "قم بالولوج بحسابك لمتابعة الصفحات الشخصية أو الوسوم، أو لإضافة الرسائل إلى المفضلة ومشاركتها والرد عليها أو التفاعل بواسطة حسابك المتواجد على خادم مختلف.", "status.admin_account": "افتح الواجهة الإدارية لـ @{name}", "status.admin_status": "افتح هذا المنشور على واجهة الإشراف", "status.block": "احجب @{name}", @@ -548,10 +552,10 @@ "status.direct": "رسالة خاصة إلى @{name}", "status.edit": "تعديل", "status.edited": "عُدّل في {date}", - "status.edited_x_times": "عُدّل {count, plural, zero {} one {{count} مرة} two {{count} مرتين} few {{count} مرات} many {{count} مرات} other {{count} مرة}}", + "status.edited_x_times": "عُدّل {count, plural, zero {} one {مرةً واحدة} two {مرّتان} few {{count} مرات} many {{count} مرة} other {{count} مرة}}", "status.embed": "إدماج", "status.favourite": "أضف إلى المفضلة", - "status.filter": "Filter this post", + "status.filter": "تصفية هذه الرسالة", "status.filtered": "مُصفّى", "status.hide": "اخف التبويق", "status.history.created": "أنشأه {name} {date}", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index e2e7414c19..a895c9ecf0 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -13,7 +13,7 @@ "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", "about.rules": "Server rules", - "account.account_note_header": "Note", + "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Add or Remove from lists", "account.badges.bot": "Robó", "account.badges.group": "Grupu", @@ -39,15 +39,16 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Esti usuariu entá nun sigue a naide.", "account.follows_you": "Síguete", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Anubrir les comparticiones de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Data de xunión", "account.languages": "Change subscribed languages", "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", "account.mention": "Mentar a @{name}", - "account.moved_to": "{name} mudóse a:", - "account.mute": "Silenciar a @{name}", + "account.moved_to": "{name} has indicated that their new account is now:", + "account.mute": "Desactivación de los avisos de @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", "account.posts": "Artículos", @@ -65,10 +66,10 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account.unmute_short": "Unmute", - "account_note.placeholder": "Click to add a note", + "account_note.placeholder": "Calca equí p'amestar una nota", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", + "admin.dashboard.retention.average": "Promediu", "admin.dashboard.retention.cohort": "Sign-up month", "admin.dashboard.retention.cohort_size": "Usuarios nuevos", "alert.rate_limited.message": "Volvi tentalo dempués de la hora: {retry_time, time, medium}.", @@ -82,7 +83,7 @@ "boost_modal.combo": "Pues primir {combo} pa saltar esto la próxima vegada", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "¡Meca!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Try again", @@ -118,7 +119,7 @@ "column_header.moveRight_settings": "Mover la columna a la drecha", "column_header.pin": "Fixar", "column_header.show_settings": "Amosar axustes", - "column_header.unpin": "Desfixar", + "column_header.unpin": "Lliberar", "column_subheading.settings": "Axustes", "community.column_settings.local_only": "Local only", "community.column_settings.media_only": "Namái multimedia", @@ -164,7 +165,7 @@ "confirmations.logout.message": "¿De xuru que quies zarrar la sesión?", "confirmations.mute.confirm": "Silenciar", "confirmations.mute.explanation": "Esto va anubrir los espublizamientos y les sos menciones pero entá va permiti-yos ver los tos espublizamientos y siguite.", - "confirmations.mute.message": "¿De xuru que quies silenciar a {name}?", + "confirmations.mute.message": "¿De xuru que quies desactivar los avisos de {name}?", "confirmations.redraft.confirm": "Desaniciar y reeditar", "confirmations.redraft.message": "¿De xuru que quies desaniciar esti estáu y reeditalu? Van perdese los favoritos y comparticiones, y les rempuestes al toot orixinal van quedar güérfanes.", "confirmations.reply.confirm": "Responder", @@ -181,6 +182,8 @@ "directory.local": "Dende {domain} namái", "directory.new_arrivals": "Cuentes nueves", "directory.recently_active": "Actividá recién", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Alternar la visibilidá", "missing_indicator.label": "Nun s'atopó", "missing_indicator.sublabel": "Nun se pudo atopar esti recursu", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "¿Anubrir los avisos d'esti usuariu?", "mute_modal.indefinite": "Indefinite", @@ -372,7 +376,7 @@ "navigation_bar.edit_profile": "Editar el perfil", "navigation_bar.explore": "Explore", "navigation_bar.favourites": "Favoritos", - "navigation_bar.filters": "Pallabres silenciaes", + "navigation_bar.filters": "Pallabres desactivaes", "navigation_bar.follow_requests": "Solicitúes de siguimientu", "navigation_bar.follows_and_followers": "Follows and followers", "navigation_bar.lists": "Llistes", @@ -542,7 +546,7 @@ "status.bookmark": "Amestar a Marcadores", "status.cancel_reblog_private": "Dexar de compartir", "status.cannot_reblog": "Esti artículu nun se pue compartir", - "status.copy": "Copiar l'enllaz al estáu", + "status.copy": "Copiar l'enllaz al artículu", "status.delete": "Desaniciar", "status.detailed_status": "Detailed conversation view", "status.direct": "Unviar un mensaxe direutu a @{name}", @@ -554,17 +558,17 @@ "status.filter": "Filter this post", "status.filtered": "Filtered", "status.hide": "Hide toot", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} creó {date}", + "status.history.edited": "{name} editó {date}", "status.load_more": "Cargar más", "status.media_hidden": "Multimedia anubrida", "status.mention": "Mentar a @{name}", "status.more": "Más", "status.mute": "Silenciar a @{name}", - "status.mute_conversation": "Silenciar la conversación", - "status.open": "Espander esti estáu", + "status.mute_conversation": "Mute conversation", + "status.open": "Espander esti artículu", "status.pin": "Fixar nel perfil", - "status.pinned": "Barritu fixáu", + "status.pinned": "Artículu fixáu", "status.read_more": "Lleer más", "status.reblog": "Compartir", "status.reblog_private": "Compartir cola audiencia orixinal", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 99af5e3c65..4af5614b63 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -7,12 +7,12 @@ "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.title": "Ограничено", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Правила на сървъра", "account.account_note_header": "Бележка", "account.add_or_remove_from_list": "Добави или премахни от списъците", "account.badges.bot": "Бот", @@ -20,18 +20,18 @@ "account.block": "Блокирай", "account.block_domain": "скрий всичко от (домейн)", "account.blocked": "Блокирани", - "account.browse_more_on_origin_server": "Разгледайте повече в оригиналния профил", + "account.browse_more_on_origin_server": "Разглеждане на още в първообразния профил", "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct Message @{name}", - "account.disable_notifications": "Спрете да ме уведомявате, когато @{name} публикува", - "account.domain_blocked": "Скрит домейн", - "account.edit_profile": "Редактирай профила", + "account.direct": "Директно съобщение до @{name}", + "account.disable_notifications": "Сприране на известия при публикуване от @{name}", + "account.domain_blocked": "Блокиран домейн", + "account.edit_profile": "Редактиране на профила", "account.enable_notifications": "Уведомявайте ме, когато @{name} публикува", "account.endorse": "Характеристика на профила", "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_never": "Няма публикации", "account.featured_tags.title": "{name}'s featured hashtags", - "account.follow": "Последвай", + "account.follow": "Последване", "account.followers": "Последователи", "account.followers.empty": "Все още никой не следва този потребител.", "account.followers_counter": "{count, plural, one {{counter} Последовател} other {{counter} Последователи}}", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Последван} other {{counter} Последвани}}", "account.follows.empty": "Този потребител все още не следва никого.", "account.follows_you": "Твой последовател", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Скриване на споделяния от @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,26 +47,26 @@ "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.", "account.media": "Мултимедия", "account.mention": "Споменаване", - "account.moved_to": "{name} се премести в:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Заглушаване на @{name}", "account.mute_notifications": "Заглушаване на известия от @{name}", "account.muted": "Заглушено", "account.posts": "Публикации", - "account.posts_with_replies": "Toots with replies", + "account.posts_with_replies": "Публикации и отговори", "account.report": "Докладване на @{name}", - "account.requested": "В очакване на одобрение", + "account.requested": "Чака се одобрение. Щракнете за отмяна на заявката за последване", "account.share": "Споделяне на @{name} профила", "account.show_reblogs": "Показване на споделяния от @{name}", "account.statuses_counter": "{count, plural, one {{counter} Публикация} other {{counter} Публикации}}", - "account.unblock": "Не блокирай", + "account.unblock": "Отблокиране на @{name}", "account.unblock_domain": "Unhide {domain}", "account.unblock_short": "Отблокирай", "account.unendorse": "Не включвайте в профила", "account.unfollow": "Не следвай", - "account.unmute": "Раззаглушаване на @{name}", + "account.unmute": "Без заглушаването на @{name}", "account.unmute_notifications": "Раззаглушаване на известия от @{name}", "account.unmute_short": "Unmute", - "account_note.placeholder": "Click to add a note", + "account_note.placeholder": "Щракнете, за да добавите бележка", "admin.dashboard.daily_retention": "Ниво на задържани на потребители след регистрация, в дни", "admin.dashboard.monthly_retention": "Ниво на задържани на потребители след регистрация, в месеци", "admin.dashboard.retention.average": "Средно", @@ -76,22 +77,22 @@ "alert.unexpected.message": "Възникна неочаквана грешка.", "alert.unexpected.title": "Опаа!", "announcement.announcement": "Оповестяване", - "attachments_list.unprocessed": "(необработен)", - "audio.hide": "Скриване на видеото", + "attachments_list.unprocessed": "(необработено)", + "audio.hide": "Скриване на звука", "autosuggest_hashtag.per_week": "{count} на седмица", "boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", "bundle_column_error.error.title": "Oh, no!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", - "bundle_column_error.retry": "Опитай отново", - "bundle_column_error.return": "Go back home", + "bundle_column_error.network.title": "Мрежова грешка", + "bundle_column_error.retry": "Нов опит", + "bundle_column_error.return": "Обратно към началото", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Затваряне", - "bundle_modal_error.message": "Нещо се обърка при зареждането на този компонент.", - "bundle_modal_error.retry": "Опитайте отново", + "bundle_modal_error.message": "Нещо се обърка, зареждайки компонента.", + "bundle_modal_error.retry": "Нов опит", "closed_registrations.other_server_instructions": "Поради това че Mastodon е децентрализиран, можеш да създадеш акаунт на друг сървър, от който можеш да комуникираш с този.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", @@ -102,22 +103,22 @@ "column.bookmarks": "Отметки", "column.community": "Локална емисия", "column.direct": "Лични съобщения", - "column.directory": "Преглед на профили", - "column.domain_blocks": "Hidden domains", + "column.directory": "Разглеждане на профили", + "column.domain_blocks": "Блокирани домейни", "column.favourites": "Любими", "column.follow_requests": "Заявки за последване", "column.home": "Начало", "column.lists": "Списъци", "column.mutes": "Заглушени потребители", "column.notifications": "Известия", - "column.pins": "Pinned toot", + "column.pins": "Закачени публикации", "column.public": "Публичен канал", "column_back_button.label": "Назад", - "column_header.hide_settings": "Скриване на настройки", + "column_header.hide_settings": "Скриване на настройките", "column_header.moveLeft_settings": "Преместване на колона вляво", "column_header.moveRight_settings": "Преместване на колона вдясно", "column_header.pin": "Закачане", - "column_header.show_settings": "Показване на настройки", + "column_header.show_settings": "Показване на настройките", "column_header.unpin": "Разкачане", "column_subheading.settings": "Настройки", "community.column_settings.local_only": "Само локално", @@ -132,14 +133,14 @@ "compose_form.lock_disclaimer.lock": "заключено", "compose_form.placeholder": "Какво си мислиш?", "compose_form.poll.add_option": "Добавяне на избор", - "compose_form.poll.duration": "Продължителност на анкета", + "compose_form.poll.duration": "Времетраене на анкетата", "compose_form.poll.option_placeholder": "Избор {number}", - "compose_form.poll.remove_option": "Премахване на този избор", + "compose_form.poll.remove_option": "Премахване на избора", "compose_form.poll.switch_to_multiple": "Промяна на анкетата, за да се позволят множество възможни избора", "compose_form.poll.switch_to_single": "Промяна на анкетата, за да се позволи един възможен избор", - "compose_form.publish": "Публикувай", + "compose_form.publish": "Публикуване", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Запази промените", + "compose_form.save_changes": "Запазване на промените", "compose_form.sensitive.hide": "{count, plural, one {Маркиране на мултимедията като деликатна} other {Маркиране на мултимедиите като деликатни}}", "compose_form.sensitive.marked": "{count, plural, one {Мултимедията е маркирана като деликатна} other {Мултимедиите са маркирани като деликатни}}", "compose_form.sensitive.unmarked": "{count, plural, one {Мултимедията не е маркирана като деликатна} other {Мултимедиите не са маркирани като деликатни}}", @@ -149,19 +150,19 @@ "confirmation_modal.cancel": "Отказ", "confirmations.block.block_and_report": "Блокиране и докладване", "confirmations.block.confirm": "Блокиране", - "confirmations.block.message": "Сигурни ли сте, че искате да блокирате {name}?", + "confirmations.block.message": "Наистина ли искате да блокирате {name}?", "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Изтриване", - "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete.message": "Наистина ли искате да изтриете публикацията?", "confirmations.delete_list.confirm": "Изтриване", - "confirmations.delete_list.message": "Сигурни ли сте, че искате да изтриете окончателно този списък?", + "confirmations.delete_list.message": "Наистина ли искате да изтриете завинаги този списък?", "confirmations.discard_edit_media.confirm": "Отмени", - "confirmations.discard_edit_media.message": "Имате незапазени промени на описанието или прегледа на медията, отмяна въпреки това?", - "confirmations.domain_block.confirm": "Hide entire domain", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.", + "confirmations.discard_edit_media.message": "Не сте запазили промени на описанието или огледа на медията, отхвърляте ли ги въпреки това?", + "confirmations.domain_block.confirm": "Блокиране на целия домейн", + "confirmations.domain_block.message": "Наистина ли искате да блокирате целия {domain}? В повечето случаи няколко блокирания или заглушавания са достатъчно и за предпочитане. Няма да виждате съдържание от домейна из публичните места или известията си. Вашите последователи от този домейн ще се премахнат.", "confirmations.logout.confirm": "Излизане", - "confirmations.logout.message": "Сигурни ли сте, че искате да излезете?", + "confirmations.logout.message": "Наистина ли искате да излезете?", "confirmations.mute.confirm": "Заглушаване", "confirmations.mute.explanation": "Това ще скрие публикации от тях и публикации, които ги споменават, но все пак ще им позволи да виждат вашите публикации и да ви следват.", "confirmations.mute.message": "Сигурни ли сте, че искате да заглушите {name}?", @@ -170,17 +171,19 @@ "confirmations.reply.confirm": "Отговор", "confirmations.reply.message": "Отговарянето сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?", "confirmations.unfollow.confirm": "Отследване", - "confirmations.unfollow.message": "Сигурни ли сте, че искате да отследвате {name}?", - "conversation.delete": "Изтриване на разговор", + "confirmations.unfollow.message": "Наистина ли искате да не следвате {name}?", + "conversation.delete": "Изтриване на разговора", "conversation.mark_as_read": "Маркиране като прочетено", - "conversation.open": "Преглед на разговор", + "conversation.open": "Преглед на разговора", "conversation.with": "С {names}", - "copypaste.copied": "Copied", + "copypaste.copied": "Копирано", "copypaste.copy": "Copy", "directory.federated": "От познат федивърс", "directory.local": "Само от {domain}", "directory.new_arrivals": "Новодошли", "directory.recently_active": "Наскоро активни", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -190,7 +193,7 @@ "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Ето как ще изглежда:", "emoji_button.activity": "Дейност", - "emoji_button.clear": "Изчисти", + "emoji_button.clear": "Изчистване", "emoji_button.custom": "Персонализирано", "emoji_button.flags": "Знамена", "emoji_button.food": "Храна и напитки", @@ -199,32 +202,32 @@ "emoji_button.not_found": "Без емоджита!! (╯°□°)╯︵ ┻━┻", "emoji_button.objects": "Предмети", "emoji_button.people": "Хора", - "emoji_button.recent": "Често използвани", + "emoji_button.recent": "Често използвано", "emoji_button.search": "Търсене...", "emoji_button.search_results": "Резултати от търсене", "emoji_button.symbols": "Символи", - "emoji_button.travel": "Пътуване и забележителности", + "emoji_button.travel": "Пътуване и места", "empty_column.account_suspended": "Профилът е спрян", "empty_column.account_timeline": "Тук няма публикации!", "empty_column.account_unavailable": "Няма достъп до профила", - "empty_column.blocks": "Не сте блокирали потребители все още.", + "empty_column.blocks": "Още не сте блокирали никакви потребители.", "empty_column.bookmarked_statuses": "Все още нямате отметнати публикации. Когато отметнете някоя, тя ще се покаже тук.", "empty_column.community": "Локалната емисия е празна. Напишете нещо публично, за да започнете!", "empty_column.direct": "Все още нямате лични съобщения. Когато изпратите или получите ще се покаже тук.", - "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.domain_blocks": "Още няма блокирани домейни.", "empty_column.explore_statuses": "Няма нищо популярно в момента. Проверете пак по-късно!", "empty_column.favourited_statuses": "Все още нямате любими публикации. Когато поставите някоя в любими, тя ще се покаже тук.", "empty_column.favourites": "Все още никой не е поставил тази публикация в любими. Когато някой го направи, ще се покаже тук.", "empty_column.follow_recommendations": "Изглежда, че няма генерирани предложения за вас. Можете да опитате да търсите за хора, които знаете или да разгледате популярните тагове.", "empty_column.follow_requests": "Все още нямате заявки за последване. Когато получите такава, тя ще се покаже тук.", - "empty_column.hashtag": "В този хаштаг няма нищо все още.", + "empty_column.hashtag": "Още няма нищо в този хаштаг.", "empty_column.home": "Вашата начална емисия е празна! Посетете {public} или използвайте търсене, за да започнете и да се запознаете с други потребители.", - "empty_column.home.suggestions": "Виж някои предложения", + "empty_column.home.suggestions": "Преглед на някои предложения", "empty_column.list": "There is nothing in this list yet.", "empty_column.lists": "Все още нямате списъци. Когато създадете такъв, той ще се покаже тук.", - "empty_column.mutes": "Не сте заглушавали потребители все още.", + "empty_column.mutes": "Още не сте заглушавали потребители.", "empty_column.notifications": "Все още нямате известия. Взаимодействайте с другите, за да започнете разговора.", - "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", + "empty_column.public": "Тук няма нищо! Напишете нещо публично или ръчно последвайте потребители от други сървъри, за да го напълните", "error.unexpected_crash.explanation": "Поради грешка в нашия код или проблем със съвместимостта на браузъра, тази страница не може да се покаже правилно.", "error.unexpected_crash.explanation_addons": "Тази страница не може да се покаже правилно. Тази грешка вероятно е причинена от добавка на браузъра или инструменти за автоматичен превод.", "error.unexpected_crash.next_steps": "Опитайте да опресните страницата. Ако това не помогне, все още можете да използвате Mastodon чрез различен браузър или приложение.", @@ -236,7 +239,7 @@ "explore.title": "Разглеждане", "explore.trending_links": "Новини", "explore.trending_statuses": "Публикации", - "explore.trending_tags": "Тагове", + "explore.trending_tags": "Хаштагове", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Несъвпадение на контекста!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", @@ -263,8 +266,8 @@ "footer.directory": "Profiles directory", "footer.get_app": "Get the app", "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.keyboard_shortcuts": "Клавишни съчетания", + "footer.privacy_policy": "Политика за поверителност", "footer.source_code": "View source code", "generic.saved": "Запазено", "getting_started.heading": "Първи стъпки", @@ -276,7 +279,7 @@ "hashtag.column_settings.tag_mode.all": "Всичко това", "hashtag.column_settings.tag_mode.any": "Някое от тези", "hashtag.column_settings.tag_mode.none": "Никое от тези", - "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.column_settings.tag_toggle": "Включва допълнителни хаштагове за тази колона", "hashtag.follow": "Следване на хаштаг", "hashtag.unfollow": "Спиране на следване на хаштаг", "home.column_settings.basic": "Основно", @@ -293,7 +296,7 @@ "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "Последване на {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# ден} other {# дни}}", @@ -302,38 +305,38 @@ "keyboard_shortcuts.back": "за придвижване назад", "keyboard_shortcuts.blocked": "за отваряне на списъка с блокирани потребители", "keyboard_shortcuts.boost": "за споделяне", - "keyboard_shortcuts.column": "to focus a status in one of the columns", + "keyboard_shortcuts.column": "Съсредоточение на колона", "keyboard_shortcuts.compose": "за фокусиране на текстовото пространство за композиране", "keyboard_shortcuts.description": "Описание", "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "за придвижване надолу в списъка", "keyboard_shortcuts.enter": "to open status", - "keyboard_shortcuts.favourite": "за поставяне в любими", - "keyboard_shortcuts.favourites": "за отваряне на списъка с любими", + "keyboard_shortcuts.favourite": "Любима публикация", + "keyboard_shortcuts.favourites": "Отваряне на списъка с любими", "keyboard_shortcuts.federated": "да отвори обединена хронология", - "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.heading": "Клавишни съчетания", "keyboard_shortcuts.home": "за отваряне на началната емисия", "keyboard_shortcuts.hotkey": "Бърз клавиш", "keyboard_shortcuts.legend": "за показване на тази легенда", "keyboard_shortcuts.local": "за отваряне на локалната емисия", - "keyboard_shortcuts.mention": "за споменаване на автор", - "keyboard_shortcuts.muted": "за отваряне на списъка със заглушени потребители", - "keyboard_shortcuts.my_profile": "за отваряне на вашия профил", - "keyboard_shortcuts.notifications": "за отваряне на колоната с известия", - "keyboard_shortcuts.open_media": "за отваряне на мултимедия", - "keyboard_shortcuts.pinned": "за отваряне на списъка със закачени публикации", - "keyboard_shortcuts.profile": "за отваряне на авторския профил", - "keyboard_shortcuts.reply": "за отговаряне", - "keyboard_shortcuts.requests": "за отваряне на списъка със заявки за последване", + "keyboard_shortcuts.mention": "Споменаване на автор", + "keyboard_shortcuts.muted": "Отваряне на списъка със заглушени потребители", + "keyboard_shortcuts.my_profile": "Отваряне на профила ви", + "keyboard_shortcuts.notifications": "Отваряне на колоната с известия", + "keyboard_shortcuts.open_media": "Отваряне на мултимедия", + "keyboard_shortcuts.pinned": "Отваряне на списъка със закачени публикации", + "keyboard_shortcuts.profile": "Отваряне на профила на автора", + "keyboard_shortcuts.reply": "Отговаряне на публикация", + "keyboard_shortcuts.requests": "Отваряне на списъка със заявки за последване", "keyboard_shortcuts.search": "за фокусиране на търсенето", "keyboard_shortcuts.spoilers": "за показване/скриване на ПС полето", "keyboard_shortcuts.start": "за отваряне на колоната \"първи стъпки\"", "keyboard_shortcuts.toggle_hidden": "за показване/скриване на текст зад ПС", - "keyboard_shortcuts.toggle_sensitivity": "за показване/скриване на мултимедия", - "keyboard_shortcuts.toot": "за започване на чисто нова публикация", + "keyboard_shortcuts.toggle_sensitivity": "Показване/скриване на мултимедия", + "keyboard_shortcuts.toot": "Начало на нова публикация", "keyboard_shortcuts.unfocus": "за дефокусиране на текстовото поле за композиране/търсене", "keyboard_shortcuts.up": "за придвижване нагоре в списъка", - "lightbox.close": "Затвори", + "lightbox.close": "Затваряне", "lightbox.compress": "Компресиране на полето за преглед на изображение", "lightbox.expand": "Разгъване на полето за преглед на изображение", "lightbox.next": "Напред", @@ -343,34 +346,35 @@ "lists.account.add": "Добавяне към списък", "lists.account.remove": "Премахване от списък", "lists.delete": "Изтриване на списък", - "lists.edit": "Редакция на списък", + "lists.edit": "Промяна на списъка", "lists.edit.submit": "Промяна на заглавие", "lists.new.create": "Добавяне на списък", "lists.new.title_placeholder": "Име на нов списък", "lists.replies_policy.followed": "Някой последван потребител", "lists.replies_policy.list": "Членове на списъка", - "lists.replies_policy.none": "Никой", + "lists.replies_policy.none": "Никого", "lists.replies_policy.title": "Показване на отговори на:", - "lists.search": "Търсене сред хора, които следвате", + "lists.search": "Търсене измежду последваните", "lists.subheading": "Вашите списъци", "load_pending": "{count, plural, one {# нов обект} other {# нови обекти}}", "loading_indicator.label": "Зареждане...", "media_gallery.toggle_visible": "Скриване на {number, plural, one {изображение} other {изображения}}", "missing_indicator.label": "Не е намерено", - "missing_indicator.sublabel": "Този ресурс не може да бъде намерен", - "mute_modal.duration": "Продължителност", - "mute_modal.hide_notifications": "Скриване на известия от този потребител?", + "missing_indicator.sublabel": "Ресурсът не може да се намери", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "mute_modal.duration": "Времетраене", + "mute_modal.hide_notifications": "Скривате ли известията от този потребител?", "mute_modal.indefinite": "Неопределено", "navigation_bar.about": "About", "navigation_bar.blocks": "Блокирани потребители", "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", - "navigation_bar.compose": "Композиране на нова публикация", + "navigation_bar.compose": "Съставяне на нова публикация", "navigation_bar.direct": "Директни съобщения", "navigation_bar.discover": "Откриване", - "navigation_bar.domain_blocks": "Hidden domains", - "navigation_bar.edit_profile": "Редактирай профил", - "navigation_bar.explore": "Разглеждане", + "navigation_bar.domain_blocks": "Блокирани домейни", + "navigation_bar.edit_profile": "Редактиране на профила", + "navigation_bar.explore": "Изследване", "navigation_bar.favourites": "Любими", "navigation_bar.filters": "Заглушени думи", "navigation_bar.follow_requests": "Заявки за последване", @@ -382,129 +386,129 @@ "navigation_bar.pins": "Закачени публикации", "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Публичен канал", - "navigation_bar.search": "Search", + "navigation_bar.search": "Търсене", "navigation_bar.security": "Сигурност", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} докладва {target}", "notification.admin.sign_up": "{name} се регистрира", - "notification.favourite": "{name} хареса твоята публикация", - "notification.follow": "{name} те последва", + "notification.favourite": "{name} направи любима ваша публикация", + "notification.follow": "{name} ви последва", "notification.follow_request": "{name} поиска да ви последва", - "notification.mention": "{name} те спомена", + "notification.mention": "{name} ви спомена", "notification.own_poll": "Анкетата ви приключи", - "notification.poll": "Анкета, в която сте гласували, приключи", + "notification.poll": "Анкета, в която гласувахте, приключи", "notification.reblog": "{name} сподели твоята публикация", "notification.status": "{name} току-що публикува", "notification.update": "{name} промени публикация", - "notifications.clear": "Изчистване на известия", - "notifications.clear_confirmation": "Сигурни ли сте, че искате да изчистите окончателно всичките си известия?", + "notifications.clear": "Изчистване на известията", + "notifications.clear_confirmation": "Наистина ли искате да изчистите завинаги всичките си известия?", "notifications.column_settings.admin.report": "Нови доклади:", "notifications.column_settings.admin.sign_up": "Нови регистрации:", - "notifications.column_settings.alert": "Десктоп известия", - "notifications.column_settings.favourite": "Предпочитани:", + "notifications.column_settings.alert": "Известия на работния плот", + "notifications.column_settings.favourite": "Любими:", "notifications.column_settings.filter_bar.advanced": "Показване на всички категории", "notifications.column_settings.filter_bar.category": "Лента за бърз филтър", - "notifications.column_settings.filter_bar.show_bar": "Покажи лентата с филтри", + "notifications.column_settings.filter_bar.show_bar": "Показване на лентата с филтри", "notifications.column_settings.follow": "Нови последователи:", "notifications.column_settings.follow_request": "Нови заявки за последване:", "notifications.column_settings.mention": "Споменавания:", "notifications.column_settings.poll": "Резултати от анкета:", "notifications.column_settings.push": "Изскачащи известия", "notifications.column_settings.reblog": "Споделяния:", - "notifications.column_settings.show": "Покажи в колона", + "notifications.column_settings.show": "Показване в колоната", "notifications.column_settings.sound": "Пускане на звук", "notifications.column_settings.status": "Нови публикации:", "notifications.column_settings.unread_notifications.category": "Непрочетени известия", - "notifications.column_settings.unread_notifications.highlight": "Отбележи непрочетените уведомления", + "notifications.column_settings.unread_notifications.highlight": "Изтъкване на непрочетените известия", "notifications.column_settings.update": "Редакции:", "notifications.filter.all": "Всичко", "notifications.filter.boosts": "Споделяния", "notifications.filter.favourites": "Любими", "notifications.filter.follows": "Последвания", "notifications.filter.mentions": "Споменавания", - "notifications.filter.polls": "Резултати от анкета", - "notifications.filter.statuses": "Актуализации от хора, които следите", + "notifications.filter.polls": "Резултати от анкетата", + "notifications.filter.statuses": "Новости от последваните", "notifications.grant_permission": "Даване на разрешение.", "notifications.group": "{count} известия", - "notifications.mark_as_read": "Маркиране на всички известия като прочетени", + "notifications.mark_as_read": "Отбелязване на всички известия като прочетени", "notifications.permission_denied": "Известията на работния плот не са налични поради предварително отказана заявка за разрешение в браузъра", "notifications.permission_denied_alert": "Известията на работния плот не могат да бъдат активирани, тъй като разрешението на браузъра е отказвано преди", - "notifications.permission_required": "Известията на работния плот не са налични, тъй като необходимото разрешение не е предоставено.", - "notifications_permission_banner.enable": "Активиране на известията на работния плот", - "notifications_permission_banner.how_to_control": "За да получавате известия, когато Mastodon не е отворен, активирайте известията на работния плот. Можете да контролирате точно кои типове взаимодействия генерират известия на работния плот чрез бутона {icon} по-горе, след като бъдат активирани.", - "notifications_permission_banner.title": "Никога не пропускайте нищо", + "notifications.permission_required": "Известията на работния плот ги няма, щото няма дадено нужното позволение.", + "notifications_permission_banner.enable": "Включване на известията на работния плот", + "notifications_permission_banner.how_to_control": "За да получавате известия, когато Mastodon не е отворен, включете известията на работния плот. Може да управлявате точно кои видове взаимодействия пораждат известия на работния плот чрез бутона {icon} по-горе, след като бъдат включени.", + "notifications_permission_banner.title": "Никога не пропускате нещо", "picture_in_picture.restore": "Връщане обратно", "poll.closed": "Затворено", "poll.refresh": "Опресняване", "poll.total_people": "{count, plural, one {# човек} other {# човека}}", "poll.total_votes": "{count, plural, one {# глас} other {# гласа}}", "poll.vote": "Гласуване", - "poll.voted": "Вие гласувахте за този отговор", + "poll.voted": "Гласувахте за този отговор", "poll.votes": "{votes, plural, one {# глас} other {# гласа}}", "poll_button.add_poll": "Добавяне на анкета", "poll_button.remove_poll": "Премахване на анкета", - "privacy.change": "Adjust status privacy", - "privacy.direct.long": "Post to mentioned users only", + "privacy.change": "Промяна на поверителността на публикация", + "privacy.direct.long": "Видимо само за споменатите потребители", "privacy.direct.short": "Само споменатите хора", - "privacy.private.long": "Post to followers only", + "privacy.private.long": "Видимо само за последователите", "privacy.private.short": "Само последователи", "privacy.public.long": "Видимо за всички", "privacy.public.short": "Публично", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Скрито", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.title": "Политика за поверителност", "refresh": "Опресняване", "regeneration_indicator.label": "Зареждане…", "regeneration_indicator.sublabel": "Вашата начална емисия се подготвя!", - "relative_time.days": "{number}д", + "relative_time.days": "{number}д.", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "току-що", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}ч", + "relative_time.hours": "{number}ч.", "relative_time.just_now": "сега", - "relative_time.minutes": "{number}м", - "relative_time.seconds": "{number}с", + "relative_time.minutes": "{number}м.", + "relative_time.seconds": "{number}с.", "relative_time.today": "днес", "reply_indicator.cancel": "Отказ", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.block": "Блокиране", + "report.block_explanation": "Няма да им виждате публикациите. Те няма да могат да виждат публикациите ви или да ви последват. Те ще могат да казват, че са били блокирани.", + "report.categories.other": "Друго", + "report.categories.spam": "Спам", + "report.categories.violation": "Съдържание, нарушаващо едно или повече правила на сървъра", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", + "report.category.title_account": "профил", + "report.category.title_status": "публикация", + "report.close": "Готово", "report.comment.title": "Is there anything else you think we should know?", - "report.forward": "Препращане към {target}", - "report.forward_hint": "Акаунтът е от друг сървър. Изпращане на анонимно копие на доклада и там?", + "report.forward": "Препращане до {target}", + "report.forward_hint": "Акаунтът е от друг сървър. Ще изпратите ли анонимно копие на доклада и там?", "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", "report.placeholder": "Допълнителни коментари", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", + "report.reasons.dislike": "Не ми харесва", + "report.reasons.dislike_description": "Не е нещо, които искам да виждам", + "report.reasons.other": "Нещо друго е", "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", + "report.reasons.spam": "Спам е", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", + "report.reasons.violation": "Нарушава правилата на сървъра", "report.reasons.violation_description": "You are aware that it breaks specific rules", "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", + "report.rules.title": "Кои правила са нарушени?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Подаване", - "report.target": "Reporting", + "report.target": "Докладване на {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", + "report.thanks.title": "Не искате ли да виждате това?", + "report.thanks.title_actionable": "Благодарности за докладването, ще го прегледаме.", + "report.unfollow": "Стоп на следването на @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", "report_notification.categories.other": "Other", @@ -516,13 +520,13 @@ "search_popout.search_format": "Формат за разширено търсене", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "хаштаг", - "search_popout.tips.status": "status", + "search_popout.tips.status": "публикация", "search_popout.tips.text": "Обикновеният текст връща съответстващи показвани имена, потребителски имена и хаштагове", "search_popout.tips.user": "потребител", "search_results.accounts": "Хора", "search_results.all": "All", "search_results.hashtags": "Хаштагове", - "search_results.nothing_found": "Не е намерено нищо за това търсене", + "search_results.nothing_found": "Не може да се намери каквото и да било за тези термини при търсене", "search_results.statuses": "Публикации", "search_results.statuses_fts_disabled": "Търсенето на публикации по тяхното съдържание не е активирано за този Mastodon сървър.", "search_results.title": "Search for {q}", @@ -542,61 +546,61 @@ "status.bookmark": "Отмятане", "status.cancel_reblog_private": "Отсподеляне", "status.cannot_reblog": "Тази публикация не може да бъде споделена", - "status.copy": "Copy link to status", + "status.copy": "Копиране на връзката към публикация", "status.delete": "Изтриване", - "status.detailed_status": "Подробен изглед на разговор", - "status.direct": "Директно съобщение към @{name}", - "status.edit": "Редакция", + "status.detailed_status": "Подробен изглед на разговора", + "status.direct": "Директно съобщение до @{name}", + "status.edit": "Редактиране", "status.edited": "Редактирано на {date}", "status.edited_x_times": "Редактирано {count, plural,one {{count} път} other {{count} пъти}}", "status.embed": "Вграждане", - "status.favourite": "Предпочитани", - "status.filter": "Филтриране на поста", + "status.favourite": "Любимо", + "status.filter": "Филтриране на публ.", "status.filtered": "Филтрирано", - "status.hide": "Скриване на поста", + "status.hide": "Скриване на публ.", "status.history.created": "{name} създаде {date}", "status.history.edited": "{name} редактира {date}", "status.load_more": "Зареждане на още", "status.media_hidden": "Мултимедията е скрита", - "status.mention": "Споменаване", + "status.mention": "Споменаване на @{name}", "status.more": "Още", "status.mute": "Заглушаване на @{name}", - "status.mute_conversation": "Заглушаване на разговор", - "status.open": "Expand this status", - "status.pin": "Закачане на профил", + "status.mute_conversation": "Заглушаване на разговора", + "status.open": "Разширяване на публикацията", + "status.pin": "Закачане в профила", "status.pinned": "Закачена публикация", - "status.read_more": "Още информация", + "status.read_more": "Още за четене", "status.reblog": "Споделяне", "status.reblog_private": "Споделяне с оригинална видимост", "status.reblogged_by": "{name} сподели", "status.reblogs.empty": "Все още никой не е споделил тази публикация. Когато някой го направи, ще се покаже тук.", "status.redraft": "Изтриване и преработване", - "status.remove_bookmark": "Премахване на отметка", + "status.remove_bookmark": "Премахване на отметката", "status.replied_to": "Replied to {name}", "status.reply": "Отговор", "status.replyAll": "Отговор на тема", "status.report": "Докладване на @{name}", - "status.sensitive_warning": "Деликатно съдържание", + "status.sensitive_warning": "Чувствително съдържание", "status.share": "Споделяне", "status.show_filter_reason": "Покажи въпреки това", - "status.show_less": "Покажи по-малко", + "status.show_less": "Показване на по-малко", "status.show_less_all": "Покажи по-малко за всички", - "status.show_more": "Покажи повече", - "status.show_more_all": "Покажи повече за всички", + "status.show_more": "Показване на повече", + "status.show_more_all": "Показване на повече за всички", "status.show_original": "Show original", "status.translate": "Translate", "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Не е налично", "status.unmute_conversation": "Раззаглушаване на разговор", - "status.unpin": "Разкачане от профил", + "status.unpin": "Разкачане от профила", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "Запазване на промените", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Отхвърляне на предложение", "suggestions.header": "Може да се интересувате от…", "tabs_bar.federated_timeline": "Обединен", "tabs_bar.home": "Начало", - "tabs_bar.local_timeline": "Локално", + "tabs_bar.local_timeline": "Местни", "tabs_bar.notifications": "Известия", "time_remaining.days": "{number, plural, one {# ден} other {# дни}} остава", "time_remaining.hours": "{number, plural, one {# час} other {# часа}} остава", @@ -609,39 +613,39 @@ "timeline_hint.resources.statuses": "По-стари публикации", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Налагащи се сега", - "ui.beforeunload": "Черновата ви ще бъде загубена, ако излезете от Mastodon.", + "ui.beforeunload": "Черновата ви ще се загуби, ако излезете от Mastodon.", "units.short.billion": "{count}млрд", "units.short.million": "{count}млн", "units.short.thousand": "{count}хил", "upload_area.title": "Влачене и пускане за качване", - "upload_button.label": "Добави медия", - "upload_error.limit": "Превишен лимит за качване на файлове.", + "upload_button.label": "Добавете файл с образ, видео или звук", + "upload_error.limit": "Превишено ограничение за качване на файлове.", "upload_error.poll": "Качването на файлове не е позволено с анкети.", - "upload_form.audio_description": "Опишете за хора със загуба на слуха", - "upload_form.description": "Опишете за хора със зрителни увреждания", - "upload_form.description_missing": "Без добавено описание", - "upload_form.edit": "Редакция", + "upload_form.audio_description": "Опишете за хора със загубен слух", + "upload_form.description": "Опишете за хора със зрително увреждане", + "upload_form.description_missing": "Няма добавено описание", + "upload_form.edit": "Редактиране", "upload_form.thumbnail": "Промяна на миниизображението", - "upload_form.undo": "Отмяна", - "upload_form.video_description": "Опишете за хора със загуба на слуха или зрително увреждане", + "upload_form.undo": "Изтриване", + "upload_form.video_description": "Опишете за хора със загубен слух или зрително увреждане", "upload_modal.analyzing_picture": "Анализ на снимка…", "upload_modal.apply": "Прилагане", "upload_modal.applying": "Прилагане…", - "upload_modal.choose_image": "Избор на изображение", + "upload_modal.choose_image": "Избор на образ", "upload_modal.description_placeholder": "Ах, чудна българска земьо, полюшвай цъфтящи жита", "upload_modal.detect_text": "Откриване на текст от картина", "upload_modal.edit_media": "Редакция на мултимедия", "upload_modal.hint": "Щракнете или плъзнете кръга на визуализацията, за да изберете фокусна точка, която винаги ще бъде видима на всички миниатюри.", - "upload_modal.preparing_ocr": "Подготване на ОРС…", - "upload_modal.preview_label": "Визуализация ({ratio})", - "upload_progress.label": "Uploading…", - "upload_progress.processing": "Processing…", - "video.close": "Затваряне на видео", - "video.download": "Изтегляне на файл", + "upload_modal.preparing_ocr": "Подготовка за оптично разпознаване на знаци…", + "upload_modal.preview_label": "Нагледно ({ratio})", + "upload_progress.label": "Качване...", + "upload_progress.processing": "Обработка…", + "video.close": "Затваряне на видеото", + "video.download": "Изтегляне на файла", "video.exit_fullscreen": "Изход от цял екран", - "video.expand": "Разгъване на видео", + "video.expand": "Разгъване на видеото", "video.fullscreen": "Цял екран", - "video.hide": "Скриване на видео", + "video.hide": "Скриване на видеото", "video.mute": "Обеззвучаване", "video.pause": "Пауза", "video.play": "Пускане", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 44ddcdb516..28540094e6 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural,one {{counter} জনকে অনুসরণ} other {{counter} জনকে অনুসরণ}}", "account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.", "account.follows_you": "তোমাকে অনুসরণ করে", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।", "account.media": "মিডিয়া", "account.mention": "@{name} কে উল্লেখ করুন", - "account.moved_to": "{name} কে এখানে সরানো হয়েছে:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "@{name} কে নিঃশব্দ করুন", "account.mute_notifications": "@{name} র প্রজ্ঞাপন আপনার কাছে নিঃশব্দ করুন", "account.muted": "নিঃশব্দ", @@ -181,6 +182,8 @@ "directory.local": "শুধু {domain} থেকে", "directory.new_arrivals": "নতুন আগত", "directory.recently_active": "সম্প্রতি সক্রিয়", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "দৃশ্যতার অবস্থা বদলান", "missing_indicator.label": "খুঁজে পাওয়া যায়নি", "missing_indicator.sublabel": "জিনিসটা খুঁজে পাওয়া যায়নি", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "সময়কাল", "mute_modal.hide_notifications": "এই ব্যবহারকারীর প্রজ্ঞাপন বন্ধ করবেন ?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index bf8fb5e5a1..5521189248 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one{{counter} C'houmanant} two{{counter} Goumanant} other {{counter} a Goumanant}}", "account.follows.empty": "An implijer·ez-mañ na heul den ebet.", "account.follows_you": "Ho heuilh", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Kuzh skignadennoù gant @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Prennet eo ar gont-mañ. Gant ar perc'henn e vez dibabet piv a c'hall heuliañ anezhi pe anezhañ.", "account.media": "Media", "account.mention": "Menegiñ @{name}", - "account.moved_to": "Dilojet en·he deus {name} da :", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Kuzhat @{name}", "account.mute_notifications": "Kuzh kemennoù a-berzh @{name}", "account.muted": "Kuzhet", @@ -181,6 +182,8 @@ "directory.local": "Eus {domain} hepken", "directory.new_arrivals": "Degouezhet a-nevez", "directory.recently_active": "Oberiant nevez zo", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Setu kemennadoù foran nevesañ an dud a zo herberc’hiet o c'hontoù gant {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Kuzhat ar skeudenn} other {Kuzhat ar skeudenn}}", "missing_indicator.label": "Digavet", "missing_indicator.sublabel": "An danvez-se ne vez ket kavet", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Padelezh", "mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?", "mute_modal.indefinite": "Amstrizh", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index fc3e220dcb..4cc1dc5f7b 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -27,10 +27,10 @@ "account.domain_blocked": "Domini bloquejat", "account.edit_profile": "Edita el perfil", "account.enable_notifications": "Notifica’m les publicacions de @{name}", - "account.endorse": "Recomana en el teu perfil", - "account.featured_tags.last_status_at": "Darrer apunt el {date}", - "account.featured_tags.last_status_never": "Sense apunts", - "account.featured_tags.title": "etiquetes destacades de {name}", + "account.endorse": "Recomana en el perfil", + "account.featured_tags.last_status_at": "Última publicació el {date}", + "account.featured_tags.last_status_never": "Cap publicació", + "account.featured_tags.title": "Etiquetes destacades de: {name}", "account.follow": "Segueix", "account.followers": "Seguidors", "account.followers.empty": "Ningú segueix aquest usuari encara.", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Seguint}}", "account.follows.empty": "Aquest usuari encara no segueix ningú.", "account.follows_you": "Et segueix", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Amaga els impulsos de @{name}", "account.joined_short": "S'ha unit", "account.languages": "Canviar les llengües subscrits", @@ -46,7 +47,7 @@ "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.", "account.media": "Multimèdia", "account.mention": "Menciona @{name}", - "account.moved_to": "{name} s'ha traslladat a:", + "account.moved_to": "{name} ha indicat que el seu nou compte ara és:", "account.mute": "Silencia @{name}", "account.mute_notifications": "Silencia les notificacions de @{name}", "account.muted": "Silenciat", @@ -181,6 +182,8 @@ "directory.local": "Només de {domain}", "directory.new_arrivals": "Arribades noves", "directory.recently_active": "Recentment actius", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Aquests son els apunts més recents d'usuaris amb els seus comptes a {domain}.", "dismissable_banner.dismiss": "Ometre", "dismissable_banner.explore_links": "Aquests son els enllaços que els usuaris estan comentant ara mateix en aquest i altres servidors de la xarxa descentralitzada.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Amaga imatge} other {Amaga imatges}}", "missing_indicator.label": "No s'ha trobat", "missing_indicator.sublabel": "Aquest recurs no s'ha trobat", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Durada", "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?", "mute_modal.indefinite": "Indefinit", @@ -603,7 +607,7 @@ "time_remaining.minutes": "{number, plural, one {# minut} other {# minuts}} restants", "time_remaining.moments": "Moments restants", "time_remaining.seconds": "{number, plural, one {# segon} other {# segons}} restants", - "timeline_hint.remote_resource_not_displayed": "{resource} dels altres servidors no son mostrats.", + "timeline_hint.remote_resource_not_displayed": "No es mostren {resource} d'altres servidors.", "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Seguiments", "timeline_hint.resources.statuses": "Publicacions més antigues", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index ff55d96e18..24b66101cf 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -1,13 +1,13 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.blocks": "ڕاژە سەرپەرشتیکراو", + "about.contact": "پەیوەندی کردن:", + "about.disclaimer": "ماستودۆن بە خۆڕایە، پرۆگرامێکی سەرچاوە کراوەیە، وە نیشانە بازرگانیەکەی ماستودۆن (gGmbH)ە", + "about.domain_blocks.comment": "هۆکار", + "about.domain_blocks.domain": "دۆمەین", + "about.domain_blocks.preamble": "ماستۆدۆن بە گشتی ڕێگەت پێدەدات بە پیشاندانی ناوەڕۆکەکان و کارلێک کردن لەگەڵ بەکارهێنەران لە هەر ڕاژەیەکی تر بە گشتی. ئەمانە ئەو بەدەرکردنانەن کە کراون لەسەر ئەم ڕاژە تایبەتە.", + "about.domain_blocks.severity": "ئاستی گرنگی", + "about.domain_blocks.silenced.explanation": "بە گشتی ناتوانی زانیاریە تایبەتەکان و ناوەڕۆکی ئەم ڕاژەیە ببینی، مەگەر بە ڕوونی بەدوایدا بگەڕێیت یان هەڵیبژێریت بۆ شوێنکەوتنی.", + "about.domain_blocks.silenced.title": "سنووردار", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}", "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.", "account.follows_you": "شوێنکەوتووەکانت", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.", "account.media": "میدیا", "account.mention": "ئاماژە @{name}", - "account.moved_to": "{name} گواسترایەوە بۆ:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "بێدەنگکردن @{name}", "account.mute_notifications": "هۆشیارکەرەوەکان لاببە لە @{name}", "account.muted": "بێ دەنگ", @@ -181,6 +182,8 @@ "directory.local": "تەنها لە {domain}", "directory.new_arrivals": "تازە گەیشتنەکان", "directory.recently_active": "بەم دواییانە چالاکە", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}", "missing_indicator.label": "نەدۆزرایەوە", "missing_indicator.sublabel": "ئەو سەرچاوەیە نادۆزرێتەوە", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "ماوە", "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ", "mute_modal.indefinite": "نادیار", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 8cfa4f9657..2435b72bf1 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Abbunamentu} other {{counter} Abbunamenti}}", "account.follows.empty": "St'utilizatore ùn seguita nisunu.", "account.follows_you": "Vi seguita", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Piattà spartere da @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "U statutu di vita privata di u contu hè chjosu. U pruprietariu esamina manualmente e dumande d'abbunamentu.", "account.media": "Media", "account.mention": "Mintuvà @{name}", - "account.moved_to": "{name} hè partutu nant'à:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Piattà @{name}", "account.mute_notifications": "Piattà nutificazione da @{name}", "account.muted": "Piattatu", @@ -181,6 +182,8 @@ "directory.local": "Solu da {domain}", "directory.new_arrivals": "Ultimi arrivi", "directory.recently_active": "Attività ricente", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Piattà {number, plural, one {ritrattu} other {ritratti}}", "missing_indicator.label": "Micca trovu", "missing_indicator.sublabel": "Ùn era micca pussivule di truvà sta risorsa", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Durata", "mute_modal.hide_notifications": "Piattà nutificazione da st'utilizatore?", "mute_modal.indefinite": "Indifinita", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 705bf96810..bda43adc1f 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -1,7 +1,7 @@ { "about.blocks": "Moderované servery", "about.contact": "Kontakt:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon je svobodný software s otevřeným zdrojovým kódem a ochranná známka společnosti Mastodon gGmbH.", "about.domain_blocks.comment": "Důvod", "about.domain_blocks.domain": "Doména", "about.domain_blocks.preamble": "Mastodon umožňuje prohlížet obsah a komunikovat s uživateli jakéhokoliv serveru ve fediversu. Pro tento konkrétní server se vztahují následující výjimky.", @@ -21,7 +21,7 @@ "account.block_domain": "Blokovat doménu {domain}", "account.blocked": "Blokován", "account.browse_more_on_origin_server": "Více na původním profilu", - "account.cancel_follow_request": "Zrušit žádost o následování", + "account.cancel_follow_request": "Odvolat žádost o sledování", "account.direct": "Poslat @{name} přímou zprávu", "account.disable_notifications": "Zrušit upozorňování na příspěvky @{name}", "account.domain_blocked": "Doména blokována", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Sledovaný} few {{counter} Sledovaní} many {{counter} Sledovaných} other {{counter} Sledovaných}}", "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows_you": "Sleduje vás", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Skrýt boosty od @{name}", "account.joined_short": "Připojen/a", "account.languages": "Změnit odebírané jazyky", @@ -46,7 +47,7 @@ "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.", "account.media": "Média", "account.mention": "Zmínit @{name}", - "account.moved_to": "Uživatel {name} se přesunul na:", + "account.moved_to": "{name} uvedl/a, že jeho/její nový účet je nyní:", "account.mute": "Skrýt @{name}", "account.mute_notifications": "Skrýt oznámení od @{name}", "account.muted": "Skryt", @@ -150,8 +151,8 @@ "confirmations.block.block_and_report": "Blokovat a nahlásit", "confirmations.block.confirm": "Blokovat", "confirmations.block.message": "Opravdu chcete zablokovat {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Opravdu chcete zrušit svou žádost o sledování {name}?", + "confirmations.cancel_follow_request.confirm": "Odvolat žádost", + "confirmations.cancel_follow_request.message": "Opravdu chcete odvolat svou žádost o sledování {name}?", "confirmations.delete.confirm": "Smazat", "confirmations.delete.message": "Opravdu chcete smazat tento příspěvek?", "confirmations.delete_list.confirm": "Smazat", @@ -181,6 +182,8 @@ "directory.local": "Pouze z domény {domain}", "directory.new_arrivals": "Nově příchozí", "directory.recently_active": "Nedávno aktivní", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Toto jsou nejnovější veřejné příspěvky od lidí, jejichž účty hostuje {domain}.", "dismissable_banner.dismiss": "Odmítnout", "dismissable_banner.explore_links": "O těchto novinkách hovoří lidé na tomto a dalších serverech decentralizované sítě.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Skrýt obrázek} few {Skrýt obrázky} many {Skrýt obrázky} other {Skrýt obrázky}}", "missing_indicator.label": "Nenalezeno", "missing_indicator.sublabel": "Tento zdroj se nepodařilo najít", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Trvání", "mute_modal.hide_notifications": "Skrýt oznámení od tohoto uživatele?", "mute_modal.indefinite": "Neomezeně", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 082d2ea52c..f93ef1c815 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -2,12 +2,12 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.comment": "Rheswm", + "about.domain_blocks.domain": "Parth", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.title": "Tawelwyd", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} yn Dilyn} other {{counter} yn Dilyn}}", "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", "account.follows_you": "Yn eich dilyn chi", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Cuddio bwstiau o @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.", "account.media": "Cyfryngau", "account.mention": "Crybwyll @{name}", - "account.moved_to": "Mae @{name} wedi symud i:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Tawelu @{name}", "account.mute_notifications": "Cuddio hysbysiadau o @{name}", "account.muted": "Distewyd", @@ -82,7 +83,7 @@ "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "O na!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Ceisiwch eto", @@ -181,6 +182,8 @@ "directory.local": "O {domain} yn unig", "directory.new_arrivals": "Newydd-ddyfodiaid", "directory.recently_active": "Yn weithredol yn ddiweddar", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Toglo gwelededd", "missing_indicator.label": "Heb ei ganfod", "missing_indicator.sublabel": "Ni ellid canfod yr adnodd hwn", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Hyd", "mute_modal.hide_notifications": "Cuddio hysbysiadau rhag y defnyddiwr hwn?", "mute_modal.indefinite": "Amhenodol", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 2e63e14704..cf6179ad14 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Følges} other {{counter} Følges}}", "account.follows.empty": "Denne bruger følger ikke nogen endnu.", "account.follows_you": "Følger dig", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Skjul boosts fra @{name}", "account.joined_short": "Oprettet", "account.languages": "Skift abonnementssprog", @@ -46,7 +47,7 @@ "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.", "account.media": "Medier", "account.mention": "Nævn @{name}", - "account.moved_to": "{name} er flyttet til:", + "account.moved_to": "{name} har angivet, at vedkommendes nye konto nu er:", "account.mute": "Skjul @{name}", "account.mute_notifications": "Skjul notifikationer fra @{name}", "account.muted": "Tystnet", @@ -181,6 +182,8 @@ "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nyligt aktive", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Disse er de seneste offentlige indlæg fra personer med konti hostes af {domain}.", "dismissable_banner.dismiss": "Afvis", "dismissable_banner.explore_links": "Der tales lige nu om disse nyhedshistorier af folk på denne og andre servere i det decentraliserede netværk.", @@ -262,7 +265,7 @@ "footer.about": "Om", "footer.directory": "Profiloversigt", "footer.get_app": "Hent appen", - "footer.invite": "Invitere personer", + "footer.invite": "Invitér personer", "footer.keyboard_shortcuts": "Tastaturgenveje", "footer.privacy_policy": "Fortrolighedspolitik", "footer.source_code": "Vis kildekode", @@ -339,7 +342,7 @@ "lightbox.next": "Næste", "lightbox.previous": "Forrige", "limited_account_hint.action": "Vis profil alligevel", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "Denne profil er blevet skjult af {domain}-moderatorerne.", "lists.account.add": "Føj til liste", "lists.account.remove": "Fjern fra liste", "lists.delete": "Slet liste", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Skjul billede} other {Skjul billeder}}", "missing_indicator.label": "Ikke fundet", "missing_indicator.sublabel": "Denne ressource kunne ikke findes", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Varighed", "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?", "mute_modal.indefinite": "Tidsubegrænset", @@ -435,7 +439,7 @@ "notifications_permission_banner.title": "Gå aldrig glip af noget", "picture_in_picture.restore": "Indsæt det igen", "poll.closed": "Lukket", - "poll.refresh": "Opdatér", + "poll.refresh": "Genindlæs", "poll.total_people": "{count, plural, one {# person} other {# personer}}", "poll.total_votes": "{count, plural, one {# stemme} other {# stemmer}}", "poll.vote": "Stem", @@ -566,7 +570,7 @@ "status.pin": "Fastgør til profil", "status.pinned": "Fastgjort indlæg", "status.read_more": "Læs mere", - "status.reblog": "Fremhæv", + "status.reblog": "Boost", "status.reblog_private": "Boost med oprindelig synlighed", "status.reblogged_by": "{name} boostede", "status.reblogs.empty": "Ingen har endnu boostet dette indlæg. Når nogen gør, vil det fremgå hér.", @@ -593,7 +597,7 @@ "subscribed_languages.save": "Gem ændringer", "subscribed_languages.target": "Skift abonnementssprog for {target}", "suggestions.dismiss": "Afvis foreslag", - "suggestions.header": "Du er måske interesseret i…", + "suggestions.header": "Du er måske interesseret i …", "tabs_bar.federated_timeline": "Fælles", "tabs_bar.home": "Hjem", "tabs_bar.local_timeline": "Lokal", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index fd327cb12e..ee5073211b 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}", "account.follows.empty": "Dieses Profil folgt noch niemandem.", "account.follows_you": "Folgt dir", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.joined_short": "Beigetreten", "account.languages": "Abonnierte Sprachen ändern", @@ -46,7 +47,7 @@ "account.locked_info": "Der Privatsphärenstatus dieses Kontos wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", "account.mention": "@{name} im Beitrag erwähnen", - "account.moved_to": "{name} ist umgezogen nach:", + "account.moved_to": "{name} hat angegeben, dass dieser der neue Account ist:", "account.mute": "@{name} stummschalten", "account.mute_notifications": "Benachrichtigungen von @{name} stummschalten", "account.muted": "Stummgeschaltet", @@ -111,7 +112,7 @@ "column.mutes": "Stummgeschaltete Profile", "column.notifications": "Mitteilungen", "column.pins": "Angeheftete Beiträge", - "column.public": "Föderierte Chronik", + "column.public": "Föderierte Timeline", "column_back_button.label": "Zurück", "column_header.hide_settings": "Einstellungen verbergen", "column_header.moveLeft_settings": "Diese Spalte nach links verschieben", @@ -181,6 +182,8 @@ "directory.local": "Nur von der Domain {domain}", "directory.new_arrivals": "Neue Profile", "directory.recently_active": "Kürzlich aktiv", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen, deren Konten von {domain} gehostet werden.", "dismissable_banner.dismiss": "Ablehnen", "dismissable_banner.explore_links": "Diese Nachrichten werden gerade von Leuten auf diesem und anderen Servern des dezentralen Netzwerks besprochen.", @@ -358,13 +361,14 @@ "media_gallery.toggle_visible": "{number, plural, one {Bild verbergen} other {Bilder verbergen}}", "missing_indicator.label": "Nicht gefunden", "missing_indicator.sublabel": "Die Ressource konnte nicht gefunden werden", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Dauer", "mute_modal.hide_notifications": "Benachrichtigungen von diesem Profil verbergen?", "mute_modal.indefinite": "Unbestimmt", "navigation_bar.about": "Über", "navigation_bar.blocks": "Blockierte Profile", "navigation_bar.bookmarks": "Lesezeichen", - "navigation_bar.community_timeline": "Lokale Chronik", + "navigation_bar.community_timeline": "Lokale Timeline", "navigation_bar.compose": "Neuen Beitrag verfassen", "navigation_bar.direct": "Direktnachrichten", "navigation_bar.discover": "Entdecken", @@ -381,7 +385,7 @@ "navigation_bar.personal": "Persönlich", "navigation_bar.pins": "Angeheftete Beiträge", "navigation_bar.preferences": "Einstellungen", - "navigation_bar.public_timeline": "Föderierte Chronik", + "navigation_bar.public_timeline": "Föderierte Timeline", "navigation_bar.search": "Suche", "navigation_bar.security": "Sicherheit", "not_signed_in_indicator.not_signed_in": "Sie müssen sich anmelden, um diese Funktion zu nutzen.", @@ -537,7 +541,7 @@ "sign_in_banner.sign_in": "Einloggen", "sign_in_banner.text": "Melden Sie sich an, um Profilen oder Hashtags zu folgen, Favoriten, Teilen und Antworten auf Beiträge oder interagieren Sie von Ihrem Konto auf einem anderen Server.", "status.admin_account": "Moderationsoberfläche für @{name} öffnen", - "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche", + "status.admin_status": "Diesen Beitrag in der Moderationsoberfläche öffnen", "status.block": "@{name} blockieren", "status.bookmark": "Lesezeichen setzen", "status.cancel_reblog_private": "Teilen des Beitrags rückgängig machen", @@ -565,7 +569,7 @@ "status.open": "Diesen Beitrag öffnen", "status.pin": "Im Profil anheften", "status.pinned": "Angehefteter Beitrag", - "status.read_more": "Mehr lesen", + "status.read_more": "Gesamten Beitrag anschauen", "status.reblog": "Teilen", "status.reblog_private": "Mit der ursprünglichen Zielgruppe teilen", "status.reblogged_by": "{name} teilte", @@ -585,7 +589,7 @@ "status.show_more_all": "Alle Inhaltswarnungen aufklappen", "status.show_original": "Original anzeigen", "status.translate": "Übersetzen", - "status.translated_from_with": "Ins {lang}e mithilfe von {provider} übersetzt", + "status.translated_from_with": "Von {lang} mit {provider} übersetzt", "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben", "status.unpin": "Vom Profil lösen", @@ -594,7 +598,7 @@ "subscribed_languages.target": "Abonnierte Sprachen für {target} ändern", "suggestions.dismiss": "Empfehlung ausblenden", "suggestions.header": "Du bist vielleicht interessiert an…", - "tabs_bar.federated_timeline": "Vereinigte Timeline", + "tabs_bar.federated_timeline": "Föderierte Timeline", "tabs_bar.home": "Startseite", "tabs_bar.local_timeline": "Lokale Timeline", "tabs_bar.notifications": "Mitteilungen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index faa1f24c4e..1c0372cf4e 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -951,8 +951,12 @@ { "descriptors": [ { - "defaultMessage": "{name} has moved to:", + "defaultMessage": "{name} has indicated that their new account is now:", "id": "account.moved_to" + }, + { + "defaultMessage": "Go to profile", + "id": "account.go_to_profile" } ], "path": "app/javascript/mastodon/features/account_timeline/components/moved_note.json" @@ -3836,6 +3840,31 @@ ], "path": "app/javascript/mastodon/features/ui/components/confirmation_modal.json" }, + { + "descriptors": [ + { + "defaultMessage": "Are you sure you want to log out?", + "id": "confirmations.logout.message" + }, + { + "defaultMessage": "Log out", + "id": "confirmations.logout.confirm" + }, + { + "defaultMessage": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "id": "moved_to_account_banner.text" + }, + { + "defaultMessage": "Your account {disabledAccount} is currently disabled.", + "id": "disabled_account_banner.text" + }, + { + "defaultMessage": "Account settings", + "id": "disabled_account_banner.account_settings" + } + ], + "path": "app/javascript/mastodon/features/ui/components/disabled_account_banner.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index eedf2905f4..15b506a1c9 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Ακολουθεί}}", "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.", "account.follows_you": "Σε ακολουθεί", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού είναι κλειδωμένη. Ο ιδιοκτήτης επιβεβαιώνει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.", "account.media": "Πολυμέσα", "account.mention": "Ανάφερε @{name}", - "account.moved_to": "{name} μεταφέρθηκε στο:", + "account.moved_to": "Ο/Η {name} έχει υποδείξει ότι ο νέος λογαριασμός του/της είναι τώρα:", "account.mute": "Σώπασε @{name}", "account.mute_notifications": "Σώπασε τις ειδοποιήσεις από @{name}", "account.muted": "Αποσιωπημένος/η", @@ -181,6 +182,8 @@ "directory.local": "Μόνο από {domain}", "directory.new_arrivals": "Νέες αφίξεις", "directory.recently_active": "Πρόσφατα ενεργοί", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Παράβλεψη", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Εναλλαγή ορατότητας", "missing_indicator.label": "Δε βρέθηκε", "missing_indicator.sublabel": "Αδύνατη η εύρεση αυτού του πόρου", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Διάρκεια", "mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;", "mute_modal.indefinite": "Αόριστη", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index a812530bbe..971be524b4 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 0e58a7133f..8e05412f5f 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index d420d4a08f..b1ba1d8b1a 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -2,7 +2,7 @@ "about.blocks": "Moderigitaj serviloj", "about.contact": "Kontakto:", "about.disclaimer": "Mastodon estas libera, malfermitkoda programaro kaj varmarko de la firmao Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", + "about.domain_blocks.comment": "Kialo", "about.domain_blocks.domain": "Domain", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Graveco", @@ -29,7 +29,7 @@ "account.enable_notifications": "Sciigi min, kiam @{name} mesaĝas", "account.endorse": "Rekomendi ĉe via profilo", "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_never": "Neniuj afiŝoj", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sekvi", "account.followers": "Sekvantoj", @@ -39,14 +39,15 @@ "account.following_counter": "{count, plural, one {{counter} Sekvado} other {{counter} Sekvadoj}}", "account.follows.empty": "La uzanto ankoraŭ ne sekvas iun ajn.", "account.follows_you": "Sekvas vin", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Kaŝi la plusendojn de @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Aliĝis", "account.languages": "Change subscribed languages", "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", "account.media": "Aŭdovidaĵoj", "account.mention": "Mencii @{name}", - "account.moved_to": "{name} moviĝis al:", + "account.moved_to": "{name} indikis, ke ria nova konto estas nun:", "account.mute": "Silentigi @{name}", "account.mute_notifications": "Silentigi la sciigojn de @{name}", "account.muted": "Silentigita", @@ -82,7 +83,7 @@ "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Ho, ne!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", "bundle_column_error.network.title": "Network error", "bundle_column_error.retry": "Provu refoje", @@ -97,7 +98,7 @@ "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "column.about": "Pri", "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", "column.community": "Loka templinio", @@ -181,6 +182,8 @@ "directory.local": "Nur de {domain}", "directory.new_arrivals": "Novaj alvenoj", "directory.recently_active": "Lastatempe aktiva", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Kaŝi la bildon} other {Kaŝi la bildojn}}", "missing_indicator.label": "Ne trovita", "missing_indicator.sublabel": "Ĉi tiu elemento ne estis trovita", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Daŭro", "mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?", "mute_modal.indefinite": "Nedifinita", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index e2a165aa03..1005256be3 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Todavía este usuario no sigue a nadie.", "account.follows_you": "Te sigue", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Ocultar adhesiones de @{name}", "account.joined_short": "En este servidor desde", "account.languages": "Cambiar idiomas suscritos", @@ -46,7 +47,7 @@ "account.locked_info": "Esta cuenta es privada. El propietario manualmente revisa quién puede seguirle.", "account.media": "Medios", "account.mention": "Mencionar a @{name}", - "account.moved_to": "{name} se ha mudó a:", + "account.moved_to": "{name} indicó que su nueva cuenta ahora es:", "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", @@ -181,6 +182,8 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activos", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Estos son los mensajes públicos más recientes de cuentas alojadas en {domain}.", "dismissable_banner.dismiss": "Descartar", "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada ahora mismo.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Ocultar {number, plural, one {imagen} other {imágenes}}", "missing_indicator.label": "No se encontró", "missing_indicator.sublabel": "No se encontró este recurso", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "¿Querés ocultar las notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 1b73dfb3fd..12779161ea 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon es software de código abierto, y una marca comercial de Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined_short": "Se unió", "account.languages": "Cambiar idiomas suscritos", @@ -46,7 +47,7 @@ "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", "account.mention": "Mencionar @{name}", - "account.moved_to": "{name} se ha mudado a:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", @@ -181,6 +182,8 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activo", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de personas cuyas cuentas están alojadas en {domain}.", "dismissable_banner.dismiss": "Descartar", "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada en este momento.", @@ -259,13 +262,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Acerca de", + "footer.directory": "Directorio de perfiles", + "footer.get_app": "Obtener la aplicación", + "footer.invite": "Invitar gente", + "footer.keyboard_shortcuts": "Atajos de teclado", + "footer.privacy_policy": "Política de privacidad", + "footer.source_code": "Ver código fuente", "generic.saved": "Guardado", "getting_started.heading": "Primeros pasos", "hashtag.column_header.tag_mode.all": "y {additional}", @@ -339,7 +342,7 @@ "lightbox.next": "Siguiente", "lightbox.previous": "Anterior", "limited_account_hint.action": "Mostrar perfil de todos modos", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "Este perfil ha sido ocultado por los moderadores de {domain}.", "lists.account.add": "Añadir a lista", "lists.account.remove": "Quitar de lista", "lists.delete": "Borrar lista", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Cambiar visibilidad", "missing_indicator.label": "No encontrado", "missing_indicator.sublabel": "No se encontró este recurso", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", @@ -512,7 +516,7 @@ "report_notification.categories.violation": "Infracción de regla", "report_notification.open": "Abrir informe", "search.placeholder": "Buscar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Buscar o pegar URL", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Búsquedas de texto recuperan posts que has escrito, marcado como favoritos, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", "search_popout.tips.hashtag": "etiqueta", @@ -635,7 +639,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Subiendo…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Procesando…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de pantalla completa", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index a1c2541e93..f9578ae9d5 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidores moderados", "about.contact": "Contacto:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon es software de código abierto, y una marca comercial de Mastodon gGmbH.", "about.domain_blocks.comment": "Razón", "about.domain_blocks.domain": "Dominio", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined_short": "Se unió", "account.languages": "Cambiar idiomas suscritos", @@ -46,7 +47,7 @@ "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", "account.mention": "Mencionar a @{name}", - "account.moved_to": "{name} se ha mudado a:", + "account.moved_to": "{name} ha indicado que su nueva cuenta es ahora:", "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", @@ -181,6 +182,8 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activo", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de personas cuyas cuentas están alojadas en {domain}.", "dismissable_banner.dismiss": "Descartar", "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada en este momento.", @@ -259,13 +262,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Acerca de", + "footer.directory": "Directorio de perfiles", + "footer.get_app": "Obtener la aplicación", + "footer.invite": "Invitar gente", + "footer.keyboard_shortcuts": "Atajos de teclado", + "footer.privacy_policy": "Política de privacidad", + "footer.source_code": "Ver código fuente", "generic.saved": "Guardado", "getting_started.heading": "Primeros pasos", "hashtag.column_header.tag_mode.all": "y {additional}", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Cambiar visibilidad", "missing_indicator.label": "No encontrado", "missing_indicator.sublabel": "No se encontró este recurso", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", @@ -512,7 +516,7 @@ "report_notification.categories.violation": "Infracción de regla", "report_notification.open": "Abrir informe", "search.placeholder": "Buscar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Buscar o pegar URL", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto recuperan publicaciones que has escrito, marcado como favoritas, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", "search_popout.tips.hashtag": "etiqueta", @@ -567,7 +571,7 @@ "status.pinned": "Publicación fijada", "status.read_more": "Leer más", "status.reblog": "Retootear", - "status.reblog_private": "Implusar a la audiencia original", + "status.reblog_private": "Impulsar a la audiencia original", "status.reblogged_by": "Retooteado por {name}", "status.reblogs.empty": "Nadie retooteó este toot todavía. Cuando alguien lo haga, aparecerá aquí.", "status.redraft": "Borrar y volver a borrador", @@ -635,7 +639,7 @@ "upload_modal.preparing_ocr": "Preparando OCR…", "upload_modal.preview_label": "Vista previa ({ratio})", "upload_progress.label": "Subiendo…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Procesando…", "video.close": "Cerrar video", "video.download": "Descargar archivo", "video.exit_fullscreen": "Salir de pantalla completa", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index a11a06b3bf..ab7d708bf0 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} jälgitav} other {{counter} jälgitavat}}", "account.follows.empty": "See kasutaja ei jälgi veel kedagi.", "account.follows_you": "Jälgib Teid", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Peida upitused kasutajalt @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Selle konto privaatsussätteks on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.", "account.media": "Meedia", "account.mention": "Maini @{name}'i", - "account.moved_to": "{name} on kolinud:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Vaigista @{name}", "account.mute_notifications": "Vaigista teated kasutajalt @{name}", "account.muted": "Vaigistatud", @@ -181,6 +182,8 @@ "directory.local": "Ainult domeenilt {domain}", "directory.new_arrivals": "Uustulijad", "directory.recently_active": "Hiljuti aktiivne", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Varja pilt} other {Varja pildid}}", "missing_indicator.label": "Ei leitud", "missing_indicator.sublabel": "Seda ressurssi ei leitud", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Kas peita teated sellelt kasutajalt?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index eff59c5055..c55de8b9ab 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} jarraitzen} other {{counter} jarraitzen}}", "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.", "account.follows_you": "Jarraitzen dizu", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak", "account.joined_short": "Elkartuta", "account.languages": "Aldatu harpidetutako hizkuntzak", @@ -46,7 +47,7 @@ "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", "account.media": "Multimedia", "account.mention": "Aipatu @{name}", - "account.moved_to": "{name} hona migratu da:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mututu @{name}", "account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak", "account.muted": "Mutututa", @@ -181,6 +182,8 @@ "directory.local": "{domain} domeinukoak soilik", "directory.new_arrivals": "Iritsi berriak", "directory.recently_active": "Duela gutxi aktibo", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Hauek dira {domain} zerbitzarian ostatatutako kontuen bidalketa publiko berrienak.", "dismissable_banner.dismiss": "Baztertu", "dismissable_banner.explore_links": "Albiste hauei buruz hitz egiten ari da jendea orain zerbitzari honetan eta sare deszentralizatuko besteetan.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Txandakatu ikusgaitasuna", "missing_indicator.label": "Ez aurkitua", "missing_indicator.sublabel": "Baliabide hau ezin izan da aurkitu", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Iraupena", "mute_modal.hide_notifications": "Ezkutatu erabiltzaile honen jakinarazpenak?", "mute_modal.indefinite": "Zehaztu gabe", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 259b125e46..18a8b42262 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} پی‌گرفته} other {{counter} پی‌گرفته}}", "account.follows.empty": "این کاربر هنوز پی‌گیر کسی نیست.", "account.follows_you": "پی می‌گیردتان", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "نهفتن تقویت‌های ‎@{name}", "account.joined_short": "پیوسته", "account.languages": "تغییر زبان‌های مشترک شده", @@ -46,7 +47,7 @@ "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.", "account.media": "رسانه", "account.mention": "نام‌بردن از ‎@{name}", - "account.moved_to": "{name} منتقل شده به:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "خموشاندن ‎@{name}", "account.mute_notifications": "خموشاندن آگاهی‌های ‎@{name}", "account.muted": "خموش", @@ -181,6 +182,8 @@ "directory.local": "تنها از {domain}", "directory.new_arrivals": "تازه‌واردان", "directory.recently_active": "کاربران فعال اخیر", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "دور انداختن", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {نهفتن تصویر} other {نهفتن تصاویر}}", "missing_indicator.label": "پیدا نشد", "missing_indicator.sublabel": "این منبع پیدا نشد", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "مدت زمان", "mute_modal.hide_notifications": "نهفتن آگاهی‌ها از این کاربر؟", "mute_modal.indefinite": "نامعلوم", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index b214dfe9f7..b5a05f17fa 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} seuraa} other {{counter} seuraa}}", "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", "account.follows_you": "Seuraa sinua", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}", "account.joined_short": "Liittynyt", "account.languages": "Vaihda tilattuja kieliä", @@ -46,7 +47,7 @@ "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.", "account.media": "Media", "account.mention": "Mainitse @{name}", - "account.moved_to": "{name} on muuttanut:", + "account.moved_to": "{name} on ilmoittanut, että heidän uusi tilinsä on nyt:", "account.mute": "Mykistä @{name}", "account.mute_notifications": "Mykistä ilmoitukset käyttäjältä @{name}", "account.muted": "Mykistetty", @@ -181,6 +182,8 @@ "directory.local": "Vain palvelimelta {domain}", "directory.new_arrivals": "Äskettäin saapuneet", "directory.recently_active": "Hiljattain aktiiviset", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Nämä ovat uusimmat julkiset viestit ihmisiltä, joiden tilejä isännöi {domain}.", "dismissable_banner.dismiss": "Hylkää", "dismissable_banner.explore_links": "Näistä uutisista puhuvat ihmiset juuri nyt tällä ja muilla hajautetun verkon palvelimilla.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Piilota kuva} other {Piilota kuvat}}", "missing_indicator.label": "Ei löytynyt", "missing_indicator.sublabel": "Tätä resurssia ei löytynyt", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Kesto", "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?", "mute_modal.indefinite": "Ikuisesti", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index a7c966b70b..0d8bad817e 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -2,7 +2,7 @@ "about.blocks": "Serveurs modérés", "about.contact": "Contact :", "about.disclaimer": "Mastodon est un logiciel libre, open-source et une marque déposée de Mastodon gGmbH.", - "about.domain_blocks.comment": "Motif :", + "about.domain_blocks.comment": "Motif", "about.domain_blocks.domain": "Domaine", "about.domain_blocks.preamble": "Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateurs de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier.", "about.domain_blocks.severity": "Sévérité", @@ -10,11 +10,11 @@ "about.domain_blocks.silenced.title": "Limité", "about.domain_blocks.suspended.explanation": "Aucune donnée de ce serveur ne sera traitée, enregistrée ou échangée, rendant impossible toute interaction ou communication avec les utilisateurs de ce serveur.", "about.domain_blocks.suspended.title": "Suspendu", - "about.not_available": "Cette information n'a pas été rendue disponibles sur ce serveur.", + "about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.", "about.powered_by": "Réseau social décentralisé propulsé par {mastodon}", "about.rules": "Règles du serveur", "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Ajouter ou enlever des listes", + "account.add_or_remove_from_list": "Ajouter ou retirer des listes", "account.badges.bot": "Bot", "account.badges.group": "Groupe", "account.block": "Bloquer @{name}", @@ -23,7 +23,7 @@ "account.browse_more_on_origin_server": "Parcourir davantage sur le profil original", "account.cancel_follow_request": "Retirer la demande d’abonnement", "account.direct": "Envoyer un message direct à @{name}", - "account.disable_notifications": "Ne plus me notifier quand @{name} publie", + "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie quelque chose", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Abonnement} other {{counter} Abonnements}}", "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.", "account.follows_you": "Vous suit", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Masquer les partages de @{name}", "account.joined_short": "Ici depuis", "account.languages": "Changer les langues abonnées", @@ -46,7 +47,7 @@ "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.", "account.media": "Médias", "account.mention": "Mentionner @{name}", - "account.moved_to": "{name} a déménagé vers :", + "account.moved_to": "{name} a indiqué que son nouveau compte est tmaintenant  :", "account.mute": "Masquer @{name}", "account.mute_notifications": "Masquer les notifications de @{name}", "account.muted": "Masqué·e", @@ -181,12 +182,14 @@ "directory.local": "De {domain} seulement", "directory.new_arrivals": "Inscrit·e·s récemment", "directory.recently_active": "Actif·ve·s récemment", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Voici les messages publics les plus récents des personnes dont les comptes sont hébergés par {domain}.", "dismissable_banner.dismiss": "Rejeter", "dismissable_banner.explore_links": "Ces nouvelles sont actuellement en cours de discussion par des personnes sur d'autres serveurs du réseau décentralisé ainsi que sur celui-ci.", "dismissable_banner.explore_statuses": "Ces publications depuis les serveurs du réseau décentralisé, dont celui-ci, sont actuellement en train de gagner de l'ampleur sur ce serveur.", "dismissable_banner.explore_tags": "Ces hashtags sont actuellement en train de gagner de l'ampleur parmi les personnes sur les serveurs du réseau décentralisé dont celui-ci.", - "dismissable_banner.public_timeline": "Ce sont les publications publiques les plus récentes des personnes sur les serveurs du réseau décentralisé dont ce serveur que celui-ci connaît.", + "dismissable_banner.public_timeline": "Voici les publications publiques les plus récentes des personnes de ce serveur et des autres du réseau décentralisé que ce serveur connait.", "embed.instructions": "Intégrez ce message à votre site en copiant le code ci-dessous.", "embed.preview": "Il apparaîtra comme cela :", "emoji_button.activity": "Activités", @@ -286,7 +289,7 @@ "home.show_announcements": "Afficher les annonces", "interaction_modal.description.favourite": "Avec un compte Mastodon, vous pouvez ajouter ce post aux favoris pour informer l'auteur que vous l'appréciez et le sauvegarder pour plus tard.", "interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs posts dans votre fil d'actualité.", - "interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez booster ce message pour le partager avec vos propres abonné·e·s.", + "interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez booster ce message pour le partager avec vos propres abonnés.", "interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.", "interaction_modal.on_another_server": "Sur un autre serveur", "interaction_modal.on_this_server": "Sur ce serveur", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}", "missing_indicator.label": "Non trouvé", "missing_indicator.sublabel": "Ressource introuvable", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Durée", "mute_modal.hide_notifications": "Masquer les notifications de cette personne ?", "mute_modal.indefinite": "Indéfinie", @@ -374,7 +378,7 @@ "navigation_bar.favourites": "Favoris", "navigation_bar.filters": "Mots masqués", "navigation_bar.follow_requests": "Demandes d’abonnement", - "navigation_bar.follows_and_followers": "Abonnements et abonné⋅e·s", + "navigation_bar.follows_and_followers": "Abonnements et abonnés", "navigation_bar.lists": "Listes", "navigation_bar.logout": "Déconnexion", "navigation_bar.mutes": "Comptes masqués", @@ -446,8 +450,8 @@ "privacy.change": "Ajuster la confidentialité du message", "privacy.direct.long": "Visible uniquement par les comptes mentionnés", "privacy.direct.short": "Personnes mentionnées uniquement", - "privacy.private.long": "Visible uniquement par vos abonné·e·s", - "privacy.private.short": "Abonné·e·s uniquement", + "privacy.private.long": "Visible uniquement par vos abonnés", + "privacy.private.short": "Abonnés uniquement", "privacy.public.long": "Visible pour tous", "privacy.public.short": "Public", "privacy.unlisted.long": "Visible pour tous, mais sans fonctionnalités de découverte", @@ -606,7 +610,7 @@ "timeline_hint.remote_resource_not_displayed": "{resource} des autres serveurs ne sont pas affichés.", "timeline_hint.resources.followers": "Les abonnés", "timeline_hint.resources.follows": "Les abonnements", - "timeline_hint.resources.statuses": "Messages plus anciens", + "timeline_hint.resources.statuses": "Les messages plus anciens", "trends.counter_by_accounts": "{count, plural, one {{counter} personne} other {{counter} personnes}} au cours {days, plural, one {des dernières 24h} other {des {days} derniers jours}}", "trends.trending_now": "Tendance en ce moment", "ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 9f905e3f8d..0c45b6f421 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -1,70 +1,71 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", - "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Add or Remove from lists", + "about.blocks": "Moderearre servers", + "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon is frije, iepenboarnesoftware en in hannelsmerk fan Mastodon gGmbH.", + "about.domain_blocks.comment": "Reden", + "about.domain_blocks.domain": "Domein", + "about.domain_blocks.preamble": "Yn it algemien kinsto mei Mastodon berjochten ûntfange fan, en ynteraksje hawwe mei brûkers fan elke server yn de fediverse. Dit binne de útsûnderingen dy’t op dizze spesifike server jilde.", + "about.domain_blocks.severity": "Swierte", + "about.domain_blocks.silenced.explanation": "Yn it algemien sjochsto gjin berjochten en accounts fan dizze server, útsein do berjochten eksplisyt opsikest of derfoar kiest om in account fan dizze server te folgjen.", + "about.domain_blocks.silenced.title": "Beheind", + "about.domain_blocks.suspended.explanation": "Der wurde gjin gegevens fan dizze server ferwurke, bewarre of útwiksele, wat ynteraksje of kommunikaasje mei brûkers fan dizze server ûnmooglik makket.", + "about.domain_blocks.suspended.title": "Utsteld", + "about.not_available": "Dizze ynformaasje is troch dizze server net iepenbier makke.", + "about.powered_by": "Desintralisearre sosjale media, mooglik makke troch {mastodon}", + "about.rules": "Serverrigels", + "account.account_note_header": "Opmerking", + "account.add_or_remove_from_list": "Tafoegje of fuortsmite fan listen út", "account.badges.bot": "Bot", "account.badges.group": "Groep", - "account.block": "Block @{name}", - "account.block_domain": "Block domain {domain}", - "account.blocked": "Blocked", - "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct message @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.block": "@{name} blokkearje", + "account.block_domain": "Domein {domain} blokkearje", + "account.blocked": "Blokkearre", + "account.browse_more_on_origin_server": "Mear op it orizjinele profyl besjen", + "account.cancel_follow_request": "Folchfersyk annulearje", + "account.direct": "@{name} in direkt berjocht stjoere", + "account.disable_notifications": "Jou gjin melding mear wannear @{name} in berjocht pleatst", "account.domain_blocked": "Domein blokkearre", - "account.edit_profile": "Profyl oanpasse", - "account.enable_notifications": "Notify me when @{name} posts", - "account.endorse": "Feature on profile", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.edit_profile": "Profyl bewurkje", + "account.enable_notifications": "Jou in melding mear wannear @{name} in berjocht pleatst", + "account.endorse": "Op profyl werjaan", + "account.featured_tags.last_status_at": "Lêste berjocht op {date}", + "account.featured_tags.last_status_never": "Gjin berjochten", + "account.featured_tags.title": "Utljochte hashtags fan {name}", "account.follow": "Folgje", "account.followers": "Folgers", - "account.followers.empty": "No one follows this user yet.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", - "account.following": "Folget", - "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", - "account.follows.empty": "This user doesn't follow anyone yet.", + "account.followers.empty": "Noch net ien folget dizze brûker.", + "account.followers_counter": "{count, plural, one {{counter} folger} other {{counter} folgers}}", + "account.following": "Folgjend", + "account.following_counter": "{count, plural, one {{counter} folgjend} other {{counter} folgjend}}", + "account.follows.empty": "Dizze brûker folget noch net ien.", "account.follows_you": "Folget dy", - "account.hide_reblogs": "Hide boosts from @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", - "account.link_verified_on": "Ownership of this link was checked on {date}", - "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", + "account.go_to_profile": "Go to profile", + "account.hide_reblogs": "Boosts fan @{name} ferstopje", + "account.joined_short": "Registrearre op", + "account.languages": "Toande talen wizigje", + "account.link_verified_on": "Eigendom fan dizze keppeling is kontrolearre op {date}", + "account.locked_info": "De privacysteat fan dizze account is op beskoattele set. De eigener bepaalt hânmjittich wa’t dyjinge folgje kin.", "account.media": "Media", - "account.mention": "Fermeld @{name}", - "account.moved_to": "{name} has moved to:", - "account.mute": "Mute @{name}", - "account.mute_notifications": "Mute notifications from @{name}", - "account.muted": "Muted", - "account.posts": "Posts", - "account.posts_with_replies": "Posts and replies", - "account.report": "Report @{name}", - "account.requested": "Awaiting approval. Click to cancel follow request", - "account.share": "Share @{name}'s profile", - "account.show_reblogs": "Show boosts from @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}", - "account.unblock": "Unblock @{name}", - "account.unblock_domain": "Unblock domain {domain}", - "account.unblock_short": "Unblock", - "account.unendorse": "Don't feature on profile", + "account.mention": "@{name} fermelde", + "account.moved_to": "{name} is ferhuze net:", + "account.mute": "@{name} negearje", + "account.mute_notifications": "Meldingen fan @{name} negearje", + "account.muted": "Negearre", + "account.posts": "Berjochten", + "account.posts_with_replies": "Berjochten en reaksjes", + "account.report": "@{name} rapportearje", + "account.requested": "Wacht op goedkarring. Klik om it folchfersyk te annulearjen", + "account.share": "Profyl fan @{name} diele", + "account.show_reblogs": "Boosts fan @{name} toane", + "account.statuses_counter": "{count, plural, one {{counter} berjocht} other {{counter} berjochten}}", + "account.unblock": "@{name} deblokkearje", + "account.unblock_domain": "Domein {domain} deblokkearje", + "account.unblock_short": "Deblokkearje", + "account.unendorse": "Net op profyl werjaan", "account.unfollow": "Net mear folgje", - "account.unmute": "Unmute @{name}", + "account.unmute": "@{name} net langer negearje", "account.unmute_notifications": "Unmute notifications from @{name}", - "account.unmute_short": "Net mear negearre", + "account.unmute_short": "Net mear negearje", "account_note.placeholder": "Click to add a note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", @@ -74,19 +75,19 @@ "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", - "alert.unexpected.title": "Oops!", - "announcement.announcement": "Announcement", + "alert.unexpected.title": "Oepsy!", + "announcement.announcement": "Meidieling", "attachments_list.unprocessed": "(net ferwurke)", - "audio.hide": "Hide audio", - "autosuggest_hashtag.per_week": "{count} per week", + "audio.hide": "Audio ferstopje", + "autosuggest_hashtag.per_week": "{count} yn ’e wike", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.copy_stacktrace": "Copy error report", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Oh nee!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", - "bundle_column_error.retry": "Try again", - "bundle_column_error.return": "Go back home", + "bundle_column_error.network.title": "Netwurkflater", + "bundle_column_error.retry": "Opnij probearje", + "bundle_column_error.return": "Tebek nei startside", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Slute", @@ -97,117 +98,119 @@ "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "column.about": "Oer", "column.blocks": "Blokkearre brûkers", "column.bookmarks": "Blêdwizers", - "column.community": "Local timeline", - "column.direct": "Direct messages", - "column.directory": "Browse profiles", + "column.community": "Lokale tiidline", + "column.direct": "Direkte berjochten", + "column.directory": "Profilen trochsykje", "column.domain_blocks": "Blokkeare domeinen", "column.favourites": "Favoriten", - "column.follow_requests": "Follow requests", - "column.home": "Home", + "column.follow_requests": "Folchfersiken", + "column.home": "Startside", "column.lists": "Listen", "column.mutes": "Negearre brûkers", - "column.notifications": "Notifikaasjes", + "column.notifications": "Meldingen", "column.pins": "Fêstsette berjochten", - "column.public": "Federated timeline", + "column.public": "Globale tiidline", "column_back_button.label": "Werom", - "column_header.hide_settings": "Ynstellings ferbergje", + "column_header.hide_settings": "Ynstellingen ferstopje", "column_header.moveLeft_settings": "Kolom nei links ferpleatse", "column_header.moveRight_settings": "Kolom nei rjochts ferpleatse", "column_header.pin": "Fêstsette", - "column_header.show_settings": "Ynstellings sjen litte", + "column_header.show_settings": "Ynstellingen toane", "column_header.unpin": "Los helje", - "column_subheading.settings": "Ynstellings", + "column_subheading.settings": "Ynstellingen", "community.column_settings.local_only": "Allinnich lokaal", "community.column_settings.media_only": "Allinnich media", - "community.column_settings.remote_only": "Allinnich oare tsjinners", - "compose.language.change": "Fan taal feroarje", - "compose.language.search": "Talen sykje...", - "compose_form.direct_message_warning_learn_more": "Lês mear", + "community.column_settings.remote_only": "Allinnich oare servers", + "compose.language.change": "Taal wizigje", + "compose.language.search": "Talen sykje…", + "compose_form.direct_message_warning_learn_more": "Mear ynfo", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", - "compose_form.lock_disclaimer.lock": "locked", - "compose_form.placeholder": "Wat wolst kwyt?", - "compose_form.poll.add_option": "Add a choice", - "compose_form.poll.duration": "Poll duration", - "compose_form.poll.option_placeholder": "Choice {number}", - "compose_form.poll.remove_option": "Remove this choice", - "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", + "compose_form.lock_disclaimer.lock": "beskoattele", + "compose_form.placeholder": "Wat wolsto kwyt?", + "compose_form.poll.add_option": "Kar tafoegje", + "compose_form.poll.duration": "Doer fan de poll", + "compose_form.poll.option_placeholder": "Keuze {number}", + "compose_form.poll.remove_option": "Dizze kar fuortsmite", + "compose_form.poll.switch_to_multiple": "Poll wizigje om meardere karren ta te stean", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Publisearje", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", - "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", + "compose_form.save_changes": "Wizigingen bewarje", + "compose_form.sensitive.hide": "{count, plural, one {Media as gefoelich markearje} other {Media as gefoelich markearje}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", "compose_form.spoiler.marked": "Ynhâldswarskôging fuortsmite", "compose_form.spoiler.unmarked": "Ynhâldswarskôging tafoegje", "compose_form.spoiler_placeholder": "Write your warning here", - "confirmation_modal.cancel": "Ofbrekke", - "confirmations.block.block_and_report": "Blokkearre & Oanjaan", - "confirmations.block.confirm": "Blokkearre", - "confirmations.block.message": "Wolle jo {name} werklik blokkearre?", + "confirmation_modal.cancel": "Annulearje", + "confirmations.block.block_and_report": "Blokkearje en rapportearje", + "confirmations.block.confirm": "Blokkearje", + "confirmations.block.message": "Bisto wis datsto {name} blokkearje wolst?", "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Fuortsmite", - "confirmations.delete.message": "Wolle jo dit berjocht werklik fuortsmite?", + "confirmations.delete.message": "Bisto wis datsto dit berjocht fuortsmite wolst?", "confirmations.delete_list.confirm": "Fuortsmite", - "confirmations.delete_list.message": "Wolle jo dizze list werklik foar ivich fuortsmite?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.delete_list.message": "Bisto wis datsto dizze list foar permanint fuortsmite wolst?", + "confirmations.discard_edit_media.confirm": "Fuortsmite", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", - "confirmations.logout.confirm": "Log out", - "confirmations.logout.message": "Wolle jo werklik útlogge?", - "confirmations.mute.confirm": "Negearre", - "confirmations.mute.explanation": "Dit sil berjochten fan harren ûnsichtber meitsje en berjochen wêr se yn fermeld wurde, mar se sille jo berjochten noch immen sjen kinne en jo folgje kinne.", - "confirmations.mute.message": "Wolle jo {name} werklik negearre?", - "confirmations.redraft.confirm": "Delete & redraft", - "confirmations.redraft.message": "Wolle jo dit berjocht werklik fuortsmite en opnij opstelle? Favoriten en boosts geane dan ferlern, en reaksjes op it oarspronklike berjocht reitsje jo kwyt.", - "confirmations.reply.confirm": "Reagearre", - "confirmations.reply.message": "Troch no te reagearjen sil it berjocht wat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo troch gean?", + "confirmations.logout.confirm": "Ofmelde", + "confirmations.logout.message": "Bisto wis datsto ôfmelde wolst?", + "confirmations.mute.confirm": "Negearje", + "confirmations.mute.explanation": "Dit sil berjochten fan harren en berjochten wêr’t se yn fermeld wurden ûnsichtber meitsje, mar se sille dyn berjochten noch hieltyd sjen kinne en dy folgje kinne.", + "confirmations.mute.message": "Bisto wis datsto {name} negearje wolst?", + "confirmations.redraft.confirm": "Fuortsmite en opnij opstelle", + "confirmations.redraft.message": "Wolsto dit berjocht wurklik fuortsmite en opnij opstelle? Favoriten en boosts geane dan ferlern en reaksjes op it oarspronklike berjocht rekkesto kwyt.", + "confirmations.reply.confirm": "Reagearje", + "confirmations.reply.message": "Troch no te reagearjen sil it berjocht watsto no oan it skriuwen binne oerskreaun wurde. Wolsto trochgean?", "confirmations.unfollow.confirm": "Net mear folgje", - "confirmations.unfollow.message": "Wolle jo {name} werklik net mear folgje?", + "confirmations.unfollow.message": "Bisto wis datsto {name} net mear folgje wolst?", "conversation.delete": "Petear fuortsmite", - "conversation.mark_as_read": "As lêzen oanmurkje", - "conversation.open": "Petear besjen", + "conversation.mark_as_read": "As lêzen markearje", + "conversation.open": "Petear toane", "conversation.with": "Mei {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", - "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Resintlik warber", + "copypaste.copied": "Kopiearre", + "copypaste.copy": "Kopiearje", + "directory.federated": "Fediverse (wat bekend is)", + "directory.local": "Allinnich fan {domain}", + "directory.new_arrivals": "Nije accounts", + "directory.recently_active": "Resint aktyf", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "Slute", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Here is what it will look like:", - "emoji_button.activity": "Activity", - "emoji_button.clear": "Clear", - "emoji_button.custom": "Custom", - "emoji_button.flags": "Flags", - "emoji_button.food": "Food & Drink", - "emoji_button.label": "Insert emoji", - "emoji_button.nature": "Nature", + "emoji_button.activity": "Aktiviteiten", + "emoji_button.clear": "Wiskje", + "emoji_button.custom": "Oanpast", + "emoji_button.flags": "Flaggen", + "emoji_button.food": "Iten en drinken", + "emoji_button.label": "Emoji tafoegje", + "emoji_button.nature": "Natuer", "emoji_button.not_found": "No matching emojis found", - "emoji_button.objects": "Objects", - "emoji_button.people": "People", - "emoji_button.recent": "Frequently used", - "emoji_button.search": "Search...", - "emoji_button.search_results": "Search results", - "emoji_button.symbols": "Symbols", - "emoji_button.travel": "Travel & Places", - "empty_column.account_suspended": "Account suspended", - "empty_column.account_timeline": "Gjin berjochten hjir!", + "emoji_button.objects": "Objekten", + "emoji_button.people": "Minsken", + "emoji_button.recent": "Faaks brûkt", + "emoji_button.search": "Sykje…", + "emoji_button.search_results": "Sykresultaten", + "emoji_button.symbols": "Symboalen", + "emoji_button.travel": "Reizgje en lokaasjes", + "empty_column.account_suspended": "Account beskoattele", + "empty_column.account_timeline": "Hjir binne gjin berjochten!", "empty_column.account_unavailable": "Profyl net beskikber", - "empty_column.blocks": "Jo hawwe noch gjin brûkers blokkearre.", + "empty_column.blocks": "Do hast noch gjin brûkers blokkearre.", "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", @@ -222,17 +225,17 @@ "empty_column.home.suggestions": "Suggestjes besjen", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", - "empty_column.mutes": "Jo hawwe noch gjin brûkers negearre.", - "empty_column.notifications": "Jo hawwe noch gjin notifikaasjes. Ynteraksjes mei oare minsken sjogge jo hjir.", - "empty_column.public": "Der is hjir neat! Skriuw eat publyklik, of folgje sels brûkers fan oare tsjinners om it hjir te foljen", - "error.unexpected_crash.explanation": "Troch in bug in ús koade as in probleem mei de komptabiliteit fan jo browser, koe dizze side net sjen litten wurde.", - "error.unexpected_crash.explanation_addons": "Dizze side kin net goed sjen litten wurde. Dit probleem komt faaks troch in browser útwreiding of ark foar automatysk oersetten.", + "empty_column.mutes": "Do hast noch gjin brûkers negearre.", + "empty_column.notifications": "Do hast noch gjin meldingen. Ynteraksjes mei oare minsken sjochsto hjir.", + "empty_column.public": "Der is hjir neat! Skriuw eat publyklik, of folgje sels brûkers fan oare servers om it hjir te foljen", + "error.unexpected_crash.explanation": "Troch in bug in ús koade of in probleem mei de komptabiliteit fan jo browser, koe dizze side net toand wurde.", + "error.unexpected_crash.explanation_addons": "Dizze side kin net goed toand wurde. Dit probleem komt faaks troch in browserútwreiding of ark foar automatysk oersetten.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Technysk probleem oanjaan", - "explore.search_results": "Search results", - "explore.suggested_follows": "Foar jo", + "errors.unexpected_crash.report_issue": "Technysk probleem melde", + "explore.search_results": "Sykresultaten", + "explore.suggested_follows": "Foar dy", "explore.title": "Ferkenne", "explore.trending_links": "Nijs", "explore.trending_statuses": "Berjochten", @@ -242,32 +245,32 @@ "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "Filterynstellingen", + "filter_modal.added.settings_link": "ynstellingenside", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", + "filter_modal.added.title": "Filter tafoege!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.expired": "ferrûn", + "filter_modal.select_filter.prompt_new": "Nije kategory: {name}", + "filter_modal.select_filter.search": "Sykje of tafoegje", + "filter_modal.select_filter.subtitle": "In besteande kategory brûke of in nije oanmeitsje", + "filter_modal.select_filter.title": "Dit berjocht filterje", + "filter_modal.title.status": "In berjocht filterje", "follow_recommendations.done": "Klear", - "follow_recommendations.heading": "Folgje minsken wer as jo graach berjochten fan sjen wolle! Hjir binne wat suggestjes.", + "follow_recommendations.heading": "Folgje minsken dêr’tsto graach berjochten fan sjen wolst! Hjir binne wat suggestjes.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", "follow_request.authorize": "Goedkarre", - "follow_request.reject": "Ofkarre", + "follow_request.reject": "Wegerje", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Oer", + "footer.directory": "Profylmap", + "footer.get_app": "App downloade", + "footer.invite": "Minsken útnûgje", + "footer.keyboard_shortcuts": "Fluchtoetsen", + "footer.privacy_policy": "Privacybelied", + "footer.source_code": "Boarnekoade besjen", "generic.saved": "Bewarre", - "getting_started.heading": "Utein sette", + "getting_started.heading": "Uteinsette", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "sûnder {additional}", @@ -279,21 +282,21 @@ "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "hashtag.follow": "Follow hashtag", "hashtag.unfollow": "Unfollow hashtag", - "home.column_settings.basic": "Basic", - "home.column_settings.show_reblogs": "Show boosts", - "home.column_settings.show_replies": "Show replies", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", + "home.column_settings.basic": "Algemien", + "home.column_settings.show_reblogs": "Boosts toane", + "home.column_settings.show_replies": "Reaksjes toane", + "home.hide_announcements": "Meidielingen ferstopje", + "home.show_announcements": "Meidielingen toane", "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_this_server": "Op dizze server", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "{name} folgje", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", @@ -301,128 +304,129 @@ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", "keyboard_shortcuts.back": "to navigate back", "keyboard_shortcuts.blocked": "to open blocked users list", - "keyboard_shortcuts.boost": "to boost", + "keyboard_shortcuts.boost": "Berjocht booste", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", - "keyboard_shortcuts.description": "Description", + "keyboard_shortcuts.description": "Omskriuwing", "keyboard_shortcuts.direct": "to open direct messages column", "keyboard_shortcuts.down": "to move down in the list", - "keyboard_shortcuts.enter": "to open status", - "keyboard_shortcuts.favourite": "to favourite", + "keyboard_shortcuts.enter": "Berjocht iepenje", + "keyboard_shortcuts.favourite": "As favoryt markearje", "keyboard_shortcuts.favourites": "to open favourites list", "keyboard_shortcuts.federated": "to open federated timeline", - "keyboard_shortcuts.heading": "Keyboard Shortcuts", - "keyboard_shortcuts.home": "to open home timeline", - "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.heading": "Fluchtoetsen", + "keyboard_shortcuts.home": "Starttiidline toane", + "keyboard_shortcuts.hotkey": "Fluchtoets", "keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.local": "to open local timeline", - "keyboard_shortcuts.mention": "Skriuwer beneame", + "keyboard_shortcuts.mention": "Skriuwer fermelde", "keyboard_shortcuts.muted": "to open muted users list", - "keyboard_shortcuts.my_profile": "Jo profyl iepenje", - "keyboard_shortcuts.notifications": "Notifikaasjes sjen litte", + "keyboard_shortcuts.my_profile": "Dyn profyl iepenje", + "keyboard_shortcuts.notifications": "Meldingen toane", "keyboard_shortcuts.open_media": "Media iepenje", - "keyboard_shortcuts.pinned": "Fêstsette berjochten sjen litte", - "keyboard_shortcuts.profile": "Profyl fan skriuwer iepenje", + "keyboard_shortcuts.pinned": "Fêstsette berjochten toane", + "keyboard_shortcuts.profile": "Skriuwersprofyl iepenje", "keyboard_shortcuts.reply": "Berjocht beäntwurdzje", - "keyboard_shortcuts.requests": "Folgfersiken sjen litte", + "keyboard_shortcuts.requests": "Folchfersiken toane", "keyboard_shortcuts.search": "to focus search", - "keyboard_shortcuts.spoilers": "CW fjild ferstopje/sjen litte", - "keyboard_shortcuts.start": "\"Útein sette\" iepenje", - "keyboard_shortcuts.toggle_hidden": "Tekst efter CW fjild ferstopje/sjen litte", - "keyboard_shortcuts.toggle_sensitivity": "Media ferstopje/sjen litte", + "keyboard_shortcuts.spoilers": "CW-fjild ferstopje/toane", + "keyboard_shortcuts.start": "‘Uteinsette’ iepenje", + "keyboard_shortcuts.toggle_hidden": "Tekst efter CW-fjild ferstopje/toane", + "keyboard_shortcuts.toggle_sensitivity": "Media ferstopje/toane", "keyboard_shortcuts.toot": "Nij berjocht skriuwe", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "Nei boppe yn list ferpleatse", "lightbox.close": "Slute", "lightbox.compress": "Compress image view box", "lightbox.expand": "Expand image view box", - "lightbox.next": "Fierder", - "lightbox.previous": "Werom", + "lightbox.next": "Folgjende", + "lightbox.previous": "Foarige", "limited_account_hint.action": "Profyl dochs besjen", "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", "lists.account.add": "Oan list tafoegje", - "lists.account.remove": "Ut list wei smite", + "lists.account.remove": "Ut list fuortsmite", "lists.delete": "List fuortsmite", "lists.edit": "Edit list", - "lists.edit.submit": "Titel feroarje", + "lists.edit.submit": "Titel wizigje", "lists.new.create": "Add list", - "lists.new.title_placeholder": "Nije list titel", + "lists.new.title_placeholder": "Nije listtitel", "lists.replies_policy.followed": "Elke folge brûker", "lists.replies_policy.list": "Leden fan de list", "lists.replies_policy.none": "Net ien", - "lists.replies_policy.title": "Reaksjes sjen litte oan:", + "lists.replies_policy.title": "Reaksjes toane oan:", "lists.search": "Search among people you follow", - "lists.subheading": "Jo listen", + "lists.subheading": "Dyn listen", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Loading...", "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Net fûn", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", - "mute_modal.hide_notifications": "Notifikaasjes fan dizze brûker ferstopje?", + "mute_modal.hide_notifications": "Meldingen fan dizze brûker ferstopje?", "mute_modal.indefinite": "Indefinite", "navigation_bar.about": "About", "navigation_bar.blocks": "Blokkearre brûkers", - "navigation_bar.bookmarks": "Blêdwiizers", + "navigation_bar.bookmarks": "Blêdwizers", "navigation_bar.community_timeline": "Local timeline", - "navigation_bar.compose": "Compose new post", - "navigation_bar.direct": "Direct messages", + "navigation_bar.compose": "Nij berjocht skriuwe", + "navigation_bar.direct": "Direkte berjochten", "navigation_bar.discover": "Untdekke", "navigation_bar.domain_blocks": "Blokkearre domeinen", - "navigation_bar.edit_profile": "Edit profile", - "navigation_bar.explore": "Explore", + "navigation_bar.edit_profile": "Profyl bewurkje", + "navigation_bar.explore": "Ferkenne", "navigation_bar.favourites": "Favoriten", "navigation_bar.filters": "Negearre wurden", - "navigation_bar.follow_requests": "Folgfersiken", + "navigation_bar.follow_requests": "Folchfersiken", "navigation_bar.follows_and_followers": "Folgers en folgjenden", "navigation_bar.lists": "Listen", - "navigation_bar.logout": "Utlogge", + "navigation_bar.logout": "Ofmelde", "navigation_bar.mutes": "Negearre brûkers", "navigation_bar.personal": "Persoanlik", "navigation_bar.pins": "Fêstsette berjochten", "navigation_bar.preferences": "Foarkarren", - "navigation_bar.public_timeline": "Federated timeline", - "navigation_bar.search": "Search", - "navigation_bar.security": "Security", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", - "notification.admin.sign_up": "{name} hat harren ynskreaun", - "notification.favourite": "{name} hat jo berjocht as favoryt markearre", - "notification.follow": "{name} folget jo", - "notification.follow_request": "{name} hat jo in folgfersyk stjoerd", - "notification.mention": "{name} hat jo fermeld", - "notification.own_poll": "Jo poll is beëinige", - "notification.poll": "In poll wêr jo yn stimt ha is beëinige", - "notification.reblog": "{name} hat jo berjocht boost", + "navigation_bar.public_timeline": "Globale tiidline", + "navigation_bar.search": "Sykje", + "navigation_bar.security": "Befeiliging", + "not_signed_in_indicator.not_signed_in": "Do moatst oanmelde om tagong ta dizze ynformaasje te krijen.", + "notification.admin.report": "{name} hat {target} rapportearre", + "notification.admin.sign_up": "{name} hat harren registrearre", + "notification.favourite": "{name} hat dyn berjocht as favoryt markearre", + "notification.follow": "{name} folget dy", + "notification.follow_request": "{name} hat dy in folchfersyk stjoerd", + "notification.mention": "{name} hat dy fermeld", + "notification.own_poll": "Dyn poll is beëinige", + "notification.poll": "In poll wêr’tsto yn stimd hast is beëinige", + "notification.reblog": "{name} hat dyn berjocht boost", "notification.status": "{name} hat in berjocht pleatst", - "notification.update": "{name} hat in berjocht feroare", - "notifications.clear": "Notifikaasjes leegje", - "notifications.clear_confirmation": "Wolle jo al jo notifikaasjes werklik foar ivich fuortsmite?", - "notifications.column_settings.admin.report": "New reports:", - "notifications.column_settings.admin.sign_up": "Nije ynskriuwingen:", - "notifications.column_settings.alert": "Desktop notifikaasjes", + "notification.update": "{name} hat in berjocht bewurke", + "notifications.clear": "Meldingen wiskje", + "notifications.clear_confirmation": "Bisto wis datsto al dyn meldingen permanint fuortsmite wolst?", + "notifications.column_settings.admin.report": "Nije rapportaazjes:", + "notifications.column_settings.admin.sign_up": "Nije registraasjes:", + "notifications.column_settings.alert": "Desktopmeldingen", "notifications.column_settings.favourite": "Favoriten:", - "notifications.column_settings.filter_bar.advanced": "Alle kategorien sjen litte", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.advanced": "Alle kategoryen toane", + "notifications.column_settings.filter_bar.category": "Flugge filterbalke", + "notifications.column_settings.filter_bar.show_bar": "Filterbalke toane", "notifications.column_settings.follow": "Nije folgers:", - "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.follow_request": "Nij folchfersyk:", "notifications.column_settings.mention": "Fermeldingen:", - "notifications.column_settings.poll": "Poll results:", - "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.poll": "Pollresultaten:", + "notifications.column_settings.push": "Pushmeldingen", "notifications.column_settings.reblog": "Boosts:", - "notifications.column_settings.show": "Show in column", - "notifications.column_settings.sound": "Play sound", - "notifications.column_settings.status": "New posts:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", - "notifications.filter.all": "All", + "notifications.column_settings.show": "Yn kolom toane", + "notifications.column_settings.sound": "Lûd ôfspylje", + "notifications.column_settings.status": "Nije berjochten:", + "notifications.column_settings.unread_notifications.category": "Net lêzen meldingen", + "notifications.column_settings.unread_notifications.highlight": "Net lêzen meldingen markearje", + "notifications.column_settings.update": "Bewurkingen:", + "notifications.filter.all": "Alle", "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", + "notifications.filter.favourites": "Favoriten", + "notifications.filter.follows": "Folget", "notifications.filter.mentions": "Fermeldingen", - "notifications.filter.polls": "Poll results", + "notifications.filter.polls": "Pollresultaten", "notifications.filter.statuses": "Updates from people you follow", "notifications.grant_permission": "Grant permission.", "notifications.group": "{count} notifications", @@ -434,16 +438,16 @@ "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.title": "Never miss a thing", "picture_in_picture.restore": "Put it back", - "poll.closed": "Closed", - "poll.refresh": "Refresh", - "poll.total_people": "{count, plural, one {# persoan} other {# minsken}}", + "poll.closed": "Sluten", + "poll.refresh": "Ferfarskje", + "poll.total_people": "{count, plural, one {# persoan} other {# persoanen}}", "poll.total_votes": "{count, plural, one {# stim} other {# stimmen}}", - "poll.vote": "Stim", - "poll.voted": "Jo hawwe hjir op stimt", + "poll.vote": "Stimme", + "poll.voted": "Do hast hjir op stimd", "poll.votes": "{votes, plural, one {# stim} other {# stimmen}}", - "poll_button.add_poll": "In poll tafoegje", + "poll_button.add_poll": "Poll tafoegje", "poll_button.remove_poll": "Poll fuortsmite", - "privacy.change": "Adjust status privacy", + "privacy.change": "Sichtberheid fan berjocht oanpasse", "privacy.direct.long": "Allinnich sichtber foar fermelde brûkers", "privacy.direct.short": "Allinnich fermelde minsken", "privacy.private.long": "Allinnich sichtber foar folgers", @@ -455,12 +459,12 @@ "privacy_policy.last_updated": "Last updated {date}", "privacy_policy.title": "Privacy Policy", "refresh": "Fernije", - "regeneration_indicator.label": "Loading…", + "regeneration_indicator.label": "Lade…", "regeneration_indicator.sublabel": "Your home feed is being prepared!", "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# dei} other {# dagen}} lyn", "relative_time.full.hours": "{number, plural, one {# oere} other {# oeren}} lyn", - "relative_time.full.just_now": "no krekt", + "relative_time.full.just_now": "sakrekt", "relative_time.full.minutes": "{number, plural, one {# minút} other {# minuten}} lyn", "relative_time.full.seconds": "{number, plural, one {# sekonde} other {# sekonden}} lyn", "relative_time.hours": "{number}o", @@ -468,26 +472,26 @@ "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "hjoed", - "reply_indicator.cancel": "Ofbrekke", - "report.block": "Blokkearre", - "report.block_explanation": "Jo sille harren berjochten net sjen kinne. Se sille jo berjochten net sjen kinne en jo net folgje kinne. Se sille wol sjen kinne dat se blokkearre binne.", - "report.categories.other": "Other", + "reply_indicator.cancel": "Annulearje", + "report.block": "Blokkearje", + "report.block_explanation": "Do silst harren berjochten net sjen kinne. Se sille dyn berjochten net sjen kinne en do net folgje kinne. Se sille wol sjen kinne dat se blokkearre binne.", + "report.categories.other": "Oars", "report.categories.spam": "Spam", - "report.categories.violation": "Ynhâld ferbrekt ien of mear tsjinner regels", - "report.category.subtitle": "Selektearje wat it bêst past", + "report.categories.violation": "De ynhâld oertrêdet ien of mear serverrigels", + "report.category.subtitle": "Selektearje wat it bêste past", "report.category.title": "Fertel ús wat der mei dit {type} oan de hân is", "report.category.title_account": "profyl", "report.category.title_status": "berjocht", "report.close": "Klear", - "report.comment.title": "Tinke jo dat wy noch mear witte moatte?", - "report.forward": "Troch stjoere nei {target}", + "report.comment.title": "Tinksto dat wy noch mear witte moatte?", + "report.forward": "Nei {target} trochstjoere", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", - "report.mute": "Negearre", + "report.mute": "Negearje", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Fierder", + "report.next": "Folgjende", "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "Ik fyn der neat oan", - "report.reasons.dislike_description": "It is net eat wat jo sjen wolle", + "report.reasons.dislike_description": "It is net eat watsto sjen wolst", "report.reasons.other": "It is wat oars", "report.reasons.other_description": "It probleem stiet der net tusken", "report.reasons.spam": "It's spam", @@ -523,92 +527,92 @@ "search_results.all": "All", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Could not find anything for these search terms", - "search_results.statuses": "Posts", + "search_results.statuses": "Berjochten", "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.", - "search_results.title": "Search for {q}", + "search_results.title": "Nei {q} sykje", "search_results.total": "{count, number} {count, plural, one {result} other {results}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.active_users": "warbere brûkers", + "server_banner.administered_by": "Beheard troch:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "server_banner.learn_more": "Mear ynfo", + "server_banner.server_stats": "Serverstatistiken:", + "sign_in_banner.create_account": "Account registrearje", + "sign_in_banner.sign_in": "Oanmelde", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Open moderation interface for @{name}", "status.admin_status": "Open this status in the moderation interface", - "status.block": "Block @{name}", - "status.bookmark": "Bookmark", - "status.cancel_reblog_private": "Unboost", + "status.block": "@{name} blokkearje", + "status.bookmark": "Blêdwizer tafoegje", + "status.cancel_reblog_private": "Net langer booste", "status.cannot_reblog": "This post cannot be boosted", "status.copy": "Copy link to status", - "status.delete": "Delete", - "status.detailed_status": "Detaillearre oersjoch fan petear", + "status.delete": "Fuortsmite", + "status.detailed_status": "Detaillearre petearoersjoch", "status.direct": "Direct message @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", + "status.edit": "Bewurkje", + "status.edited": "Bewurke op {date}", "status.edited_x_times": "{count, plural, one {{count} kear} other {{count} kearen}} bewurke", "status.embed": "Ynslute", - "status.favourite": "Favorite", - "status.filter": "Filter this post", + "status.favourite": "Favoryt", + "status.filter": "Dit berjocht filterje", "status.filtered": "Filtere", - "status.hide": "Hide toot", + "status.hide": "Berjocht ferstopje", "status.history.created": "{name} makke dit {date}", - "status.history.edited": "{name} feroare dit {date}", - "status.load_more": "Load more", + "status.history.edited": "{name} bewurke dit {date}", + "status.load_more": "Mear lade", "status.media_hidden": "Media ferstoppe", - "status.mention": "Fermeld @{name}", + "status.mention": "@{name} fermelde", "status.more": "Mear", - "status.mute": "Negearje @{name}", - "status.mute_conversation": "Petear negearre", - "status.open": "Dit berjocht útflappe", - "status.pin": "Op profyl fêstsette", + "status.mute": "@{name} negearje", + "status.mute_conversation": "Petear negearje", + "status.open": "Dit berjocht útklappe", + "status.pin": "Op profylside fêstsette", "status.pinned": "Fêstset berjocht", - "status.read_more": "Lês mear", - "status.reblog": "Boost", + "status.read_more": "Mear ynfo", + "status.reblog": "Booste", "status.reblog_private": "Boost with original visibility", "status.reblogged_by": "{name} hat boost", "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Fuortsmite en opnij opstelle", - "status.remove_bookmark": "Remove bookmark", - "status.replied_to": "Replied to {name}", - "status.reply": "Reagearre", - "status.replyAll": "Op elkenien reagearre", - "status.report": "Jou @{name} oan", - "status.sensitive_warning": "Sensitive content", + "status.remove_bookmark": "Blêdwizer fuortsmite", + "status.replied_to": "Antwurde op {name}", + "status.reply": "Beäntwurdzje", + "status.replyAll": "Alle beäntwurdzje", + "status.report": "@{name} rapportearje", + "status.sensitive_warning": "Gefoelige ynhâld", "status.share": "Diele", - "status.show_filter_reason": "Show anyway", - "status.show_less": "Minder sjen litte", - "status.show_less_all": "Foar alles minder sjen litte", - "status.show_more": "Mear sjen litte", - "status.show_more_all": "Foar alles mear sjen litte", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_filter_reason": "Dochs toane", + "status.show_less": "Minder toane", + "status.show_less_all": "Alles minder toane", + "status.show_more": "Mear toane", + "status.show_more_all": "Alles mear toane", + "status.show_original": "Orizjineel besjen", + "status.translate": "Oersette", + "status.translated_from_with": "Fan {lang} út oersetten mei {provider}", "status.uncached_media_warning": "Net beskikber", - "status.unmute_conversation": "Petear net mear negearre", - "status.unpin": "Unpin from profile", + "status.unmute_conversation": "Petear net mear negearje", + "status.unpin": "Fan profylside losmeitsje", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", "subscribed_languages.save": "Save changes", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", "tabs_bar.federated_timeline": "Federated", - "tabs_bar.home": "Home", - "tabs_bar.local_timeline": "Local", - "tabs_bar.notifications": "Notifikaasjes", + "tabs_bar.home": "Startside", + "tabs_bar.local_timeline": "Lokaal", + "tabs_bar.notifications": "Meldingen", "time_remaining.days": "{number, plural, one {# dei} other {# dagen}} te gean", "time_remaining.hours": "{number, plural, one {# oere} other {# oeren}} te gean", "time_remaining.minutes": "{number, plural, one {# minút} other {# minuten}} te gean", - "time_remaining.moments": "Noch krekt even te gean", + "time_remaining.moments": "Noch krekt efkes te gean", "time_remaining.seconds": "{number, plural, one {# sekonde} other {# sekonden}} te gean", - "timeline_hint.remote_resource_not_displayed": "{resource} fan oare tsjinners wurde net sjen litten.", + "timeline_hint.remote_resource_not_displayed": "{resource} fan oare servers wurde net toand.", "timeline_hint.resources.followers": "Folgers", - "timeline_hint.resources.follows": "Follows", + "timeline_hint.resources.follows": "Folgjend", "timeline_hint.resources.statuses": "Aldere berjochten", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", - "trends.trending_now": "Trending now", + "trends.counter_by_accounts": "{count, plural, one {{counter} persoan} other {{counter} persoanen}} {days, plural, one {de ôfrûne dei} other {de ôfrûne {days} dagen}}", + "trends.trending_now": "Aktuele trends", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "units.short.billion": "{count}B", "units.short.million": "{count}M", @@ -640,10 +644,10 @@ "video.download": "Download file", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", - "video.fullscreen": "Full screen", - "video.hide": "Hide video", - "video.mute": "Mute sound", - "video.pause": "Pause", - "video.play": "Play", - "video.unmute": "Unmute sound" + "video.fullscreen": "Folslein skerm", + "video.hide": "Fideo ferstopje", + "video.mute": "Lûd dôvje", + "video.pause": "Skoft", + "video.play": "Ofspylje", + "video.unmute": "Lûd oan" } diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 0bedff8831..b3c25a5f64 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -17,7 +17,7 @@ "account.add_or_remove_from_list": "Cuir Le nó Bain De na liostaí", "account.badges.bot": "Bota", "account.badges.group": "Grúpa", - "account.block": "Bac @{name}", + "account.block": "Déan cosc ar @{name}", "account.block_domain": "Bac ainm fearainn {domain}", "account.blocked": "Bactha", "account.browse_more_on_origin_server": "Brabhsáil níos mó ar an phróifíl bhunaidh", @@ -39,14 +39,15 @@ "account.following_counter": "{count, plural, one {Ag leanúint cúntas amháin} other {Ag leanúint {counter} cúntas}}", "account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.", "account.follows_you": "Do do leanúint", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", - "account.joined_short": "Chuaigh i", - "account.languages": "Change subscribed languages", + "account.joined_short": "Cláraithe", + "account.languages": "Athraigh teangacha foscríofa", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", "account.media": "Ábhair", "account.mention": "Luaigh @{name}", - "account.moved_to": "Tá {name} bogtha go:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Balbhaigh @{name}", "account.mute_notifications": "Balbhaigh fógraí ó @{name}", "account.muted": "Balbhaithe", @@ -76,7 +77,7 @@ "alert.unexpected.message": "Tharla earráid gan choinne.", "alert.unexpected.title": "Hiúps!", "announcement.announcement": "Fógra", - "attachments_list.unprocessed": "(unprocessed)", + "attachments_list.unprocessed": "(neamhphróiseáilte)", "audio.hide": "Cuir fuaim i bhfolach", "autosuggest_hashtag.per_week": "{count} sa seachtain", "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile", @@ -121,7 +122,7 @@ "column_header.unpin": "Díghreamaigh", "column_subheading.settings": "Socruithe", "community.column_settings.local_only": "Áitiúil amháin", - "community.column_settings.media_only": "Media only", + "community.column_settings.media_only": "Meáin Amháin", "community.column_settings.remote_only": "Remote only", "compose.language.change": "Athraigh teanga", "compose.language.search": "Cuardaigh teangacha...", @@ -139,7 +140,7 @@ "compose_form.poll.switch_to_single": "Athraigh suirbhé chun cead a thabhairt do rogha amháin", "compose_form.publish": "Foilsigh", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Sábháil", "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", @@ -181,8 +182,10 @@ "directory.local": "Ó {domain} amháin", "directory.new_arrivals": "Daoine atá tar éis teacht", "directory.recently_active": "Daoine gníomhacha le déanaí", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "Diúltaigh", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -247,7 +250,7 @@ "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", + "filter_modal.select_filter.expired": "as feidhm", "filter_modal.select_filter.prompt_new": "Catagóir nua: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", @@ -266,22 +269,22 @@ "footer.keyboard_shortcuts": "Keyboard shortcuts", "footer.privacy_policy": "Polasaí príobháideachais", "footer.source_code": "View source code", - "generic.saved": "Saved", + "generic.saved": "Sábháilte", "getting_started.heading": "Getting started", "hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.any": "nó {additional}", "hashtag.column_header.tag_mode.none": "gan {additional}", "hashtag.column_settings.select.no_options_message": "No suggestions found", - "hashtag.column_settings.select.placeholder": "Enter hashtags…", + "hashtag.column_settings.select.placeholder": "Iontráil haischlibeanna…", "hashtag.column_settings.tag_mode.all": "All of these", "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Lean haischlib", + "hashtag.unfollow": "Ná lean haischlib", "home.column_settings.basic": "Bunúsach", "home.column_settings.show_reblogs": "Taispeáin treisithe", - "home.column_settings.show_replies": "Show replies", + "home.column_settings.show_replies": "Taispeán freagraí", "home.hide_announcements": "Hide announcements", "home.show_announcements": "Show announcements", "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", @@ -293,7 +296,7 @@ "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", + "interaction_modal.title.follow": "Lean {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", "intervals.full.days": "{number, plural, one {# day} other {# days}}", @@ -313,7 +316,7 @@ "keyboard_shortcuts.federated": "to open federated timeline", "keyboard_shortcuts.heading": "Keyboard Shortcuts", "keyboard_shortcuts.home": "to open home timeline", - "keyboard_shortcuts.hotkey": "Hotkey", + "keyboard_shortcuts.hotkey": "Eochair aicearra", "keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.local": "Oscail an amlíne áitiúil", "keyboard_shortcuts.mention": "to mention author", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Níor aimsíodh é", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Tréimhse", "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?", "mute_modal.indefinite": "Gan téarma", @@ -396,7 +400,7 @@ "notification.reblog": "Threisigh {name} do phostáil", "notification.status": "Phostáil {name} díreach", "notification.update": "Chuir {name} postáil in eagar", - "notifications.clear": "Clear notifications", + "notifications.clear": "Glan fógraí", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.admin.report": "Tuairiscí nua:", "notifications.column_settings.admin.sign_up": "New sign-ups:", @@ -407,21 +411,21 @@ "notifications.column_settings.filter_bar.show_bar": "Show filter bar", "notifications.column_settings.follow": "Leantóirí nua:", "notifications.column_settings.follow_request": "Iarratais leanúnaí nua:", - "notifications.column_settings.mention": "Mentions:", + "notifications.column_settings.mention": "Tráchtanna:", "notifications.column_settings.poll": "Poll results:", - "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.push": "Brúfhógraí", "notifications.column_settings.reblog": "Treisithe:", "notifications.column_settings.show": "Show in column", - "notifications.column_settings.sound": "Play sound", + "notifications.column_settings.sound": "Seinn an fhuaim", "notifications.column_settings.status": "Postálacha nua:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.category": "Brúfhógraí neamhléite", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.column_settings.update": "Eagair:", "notifications.filter.all": "Uile", "notifications.filter.boosts": "Treisithe", "notifications.filter.favourites": "Roghanna", "notifications.filter.follows": "Ag leanúint", - "notifications.filter.mentions": "Mentions", + "notifications.filter.mentions": "Tráchtanna", "notifications.filter.polls": "Poll results", "notifications.filter.statuses": "Updates from people you follow", "notifications.grant_permission": "Grant permission.", @@ -499,17 +503,17 @@ "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Submit report", - "report.target": "Report {target}", + "report.target": "Ag tuairisciú {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Don't want to see this?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", + "report.unfollow": "Ná lean @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", "report_notification.categories.other": "Eile", "report_notification.categories.spam": "Turscar", - "report_notification.categories.violation": "Rule violation", + "report_notification.categories.violation": "Sárú rialach", "report_notification.open": "Oscail tuairisc", "search.placeholder": "Cuardaigh", "search.search_or_paste": "Search or paste URL", @@ -594,7 +598,7 @@ "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Dismiss suggestion", "suggestions.header": "You might be interested in…", - "tabs_bar.federated_timeline": "Federated", + "tabs_bar.federated_timeline": "Cónasctha", "tabs_bar.home": "Baile", "tabs_bar.local_timeline": "Áitiúil", "tabs_bar.notifications": "Fógraí", @@ -640,7 +644,7 @@ "video.download": "Íoslódáil comhad", "video.exit_fullscreen": "Exit full screen", "video.expand": "Leath físeán", - "video.fullscreen": "Full screen", + "video.fullscreen": "Lánscáileán", "video.hide": "Cuir físeán i bhfolach", "video.mute": "Ciúnaigh fuaim", "video.pause": "Cuir ar sos", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 078d7701c7..6ed5c2b5de 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -1,7 +1,7 @@ { "about.blocks": "Frithealaichean fo mhaorsainneachd", "about.contact": "Fios thugainn:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "’S e bathar-bog saor le bun-tùs fosgailte a th’ ann am Mastodon agus ’na chomharra-mhalairt aig Mastodon gGmbH.", "about.domain_blocks.comment": "Adhbhar", "about.domain_blocks.domain": "Àrainn", "about.domain_blocks.preamble": "San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus eadar-ghìomh a ghabhail leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo.", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {A’ leantainn air {counter}} two {A’ leantainn air {counter}} few {A’ leantainn air {counter}} other {A’ leantainn air {counter}}}", "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn air neach sam bith fhathast.", "account.follows_you": "’Gad leantainn", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", "account.joined_short": "Air ballrachd fhaighinn", "account.languages": "Atharraich fo-sgrìobhadh nan cànan", @@ -46,7 +47,7 @@ "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.", "account.media": "Meadhanan", "account.mention": "Thoir iomradh air @{name}", - "account.moved_to": "Chaidh {name} imrich gu:", + "account.moved_to": "Dh’innis {name} gu bheil an cunntas ùr aca a-nis air:", "account.mute": "Mùch @{name}", "account.mute_notifications": "Mùch na brathan o @{name}", "account.muted": "’Ga mhùchadh", @@ -181,6 +182,8 @@ "directory.local": "O {domain} a-mhàin", "directory.new_arrivals": "Feadhainn ùra", "directory.recently_active": "Gnìomhach o chionn goirid", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Seo na postaichean poblach as ùire o dhaoine aig a bheil cunntas air {domain}.", "dismissable_banner.dismiss": "Leig seachad", "dismissable_banner.explore_links": "Seo na naidheachdan air a bhithear a’ bruidhinn an-dràsta fhèin air an fhrithealaiche seo is frithealaichean eile dhen lìonra sgaoilte.", @@ -255,17 +258,17 @@ "filter_modal.title.status": "Criathraich post", "follow_recommendations.done": "Deiseil", "follow_recommendations.heading": "Lean air daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", - "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air inbhir na dachaighe agad. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!", + "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air nad dhachaigh. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!", "follow_request.authorize": "Ùghdarraich", "follow_request.reject": "Diùlt", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "Mu dhèidhinn", + "footer.directory": "Eòlaire nam pròifil", + "footer.get_app": "Faigh an aplacaid", + "footer.invite": "Thoir cuireadh do dhaoine", + "footer.keyboard_shortcuts": "Ath-ghoiridean a’ mheur-chlàir", + "footer.privacy_policy": "Poileasaidh prìobhaideachd", + "footer.source_code": "Seall am bun-tùs", "generic.saved": "Chaidh a shàbhaladh", "getting_started.heading": "Toiseach", "hashtag.column_header.tag_mode.all": "agus {additional}", @@ -285,7 +288,7 @@ "home.hide_announcements": "Falaich na brathan-fios", "home.show_announcements": "Seall na brathan-fios", "interaction_modal.description.favourite": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a chur ris na h-annsachdan airson innse dhan ùghdar gu bheil e a’ còrdadh dhut ’s a shàbhaladh do uaireigin eile.", - "interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut leantainn air {name} ach am faigh thu na postaichean aca air inbhir na dachaigh agad.", + "interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut leantainn air {name} ach am faigh thu na postaichean aca nad dhachaigh.", "interaction_modal.description.reblog": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a bhrosnachadh gus a cho-roinneadh leis an luchd-leantainn agad fhèin.", "interaction_modal.description.reply": "Le cunntas air Mastodon, ’s urrainn dhut freagairt a chur dhan phost seo.", "interaction_modal.on_another_server": "Air frithealaiche eile", @@ -339,7 +342,7 @@ "lightbox.next": "Air adhart", "lightbox.previous": "Air ais", "limited_account_hint.action": "Seall a’ phròifil co-dhiù", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "Chaidh a’ phròifil seo fhalach le maoir {domain}.", "lists.account.add": "Cuir ris an liosta", "lists.account.remove": "Thoir air falbh on liosta", "lists.delete": "Sguab às an liosta", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, 1 {Falaich an dealbh} one {Falaich na dealbhan} two {Falaich na dealbhan} few {Falaich na dealbhan} other {Falaich na dealbhan}}", "missing_indicator.label": "Cha deach càil a lorg", "missing_indicator.sublabel": "Cha deach an goireas a lorg", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Faide", "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?", "mute_modal.indefinite": "Gun chrìoch", @@ -425,7 +429,7 @@ "notifications.filter.polls": "Toraidhean cunntais-bheachd", "notifications.filter.statuses": "Naidheachdan nan daoine air a leanas tu", "notifications.grant_permission": "Thoir cead.", - "notifications.group": "{count} brath(an)", + "notifications.group": "Brathan ({count})", "notifications.mark_as_read": "Cuir comharra gun deach gach brath a leughadh", "notifications.permission_denied": "Chan eil brathan deasga ri fhaighinn on a chaidh iarrtas ceadan a’ bhrabhsair a dhiùltadh cheana", "notifications.permission_denied_alert": "Cha ghabh brathan deasga a chur an comas on a chaidh iarrtas ceadan a’ bhrabhsair a dhiùltadh cheana", @@ -456,7 +460,7 @@ "privacy_policy.title": "Poileasaidh prìobhaideachd", "refresh": "Ath-nuadhaich", "regeneration_indicator.label": "’Ga luchdadh…", - "regeneration_indicator.sublabel": "Tha inbhir na dachaigh agad ’ga ullachadh!", + "regeneration_indicator.sublabel": "Tha do dhachaigh ’ga ullachadh!", "relative_time.days": "{number}l", "relative_time.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air ais", "relative_time.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air ais", @@ -505,14 +509,14 @@ "report.thanks.title": "Nach eil thu airson seo fhaicinn?", "report.thanks.title_actionable": "Mòran taing airson a’ ghearain, bheir sinn sùil air.", "report.unfollow": "Na lean air @{name} tuilleadh", - "report.unfollow_explanation": "Tha thu a’ leantainn air a’ chunntas seo. Sgur de leantainn orra ach nach fhaic thu na puist aca air inbhir na dachaigh agad.", + "report.unfollow_explanation": "Tha thu a’ leantainn air a’ chunntas seo. Sgur de leantainn orra ach nach fhaic thu na puist aca nad dhachaigh.", "report_notification.attached_statuses": "Tha {count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}} ceangailte ris", "report_notification.categories.other": "Eile", "report_notification.categories.spam": "Spama", "report_notification.categories.violation": "Briseadh riaghailte", "report_notification.open": "Fosgail an gearan", "search.placeholder": "Lorg", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Dèan lorg no cuir a-steach URL", "search_popout.search_format": "Fòrmat adhartach an luirg", "search_popout.tips.full_text": "Bheir teacsa sìmplidh dhut na postaichean a sgrìobh thu, a tha nan annsachdan dhut, a bhrosnaich thu no san deach iomradh a thoirt ort cho math ri ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas.", "search_popout.tips.hashtag": "taga hais", @@ -635,7 +639,7 @@ "upload_modal.preparing_ocr": "Ag ullachadh OCR…", "upload_modal.preview_label": "Ro-shealladh ({ratio})", "upload_progress.label": "’Ga luchdadh suas…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "’Ga phròiseasadh…", "video.close": "Dùin a’ video", "video.download": "Luchdaich am faidhle a-nuas", "video.exit_fullscreen": "Fàg modh na làn-sgrìn", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 1f9d462f73..bbf0cd9841 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -7,9 +7,9 @@ "about.domain_blocks.preamble": "Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular.", "about.domain_blocks.severity": "Rigurosidade", "about.domain_blocks.silenced.explanation": "Por defecto non verás perfís e contido desde este servidor, a menos que mires de xeito explícito ou optes por seguir ese contido ou usuaria.", - "about.domain_blocks.silenced.title": "Limitada", + "about.domain_blocks.silenced.title": "Limitado", "about.domain_blocks.suspended.explanation": "Non se procesarán, almacenarán nin intercambiarán datos con este servidor, o que fai imposible calquera interacción ou comunicación coas usuarias deste servidor.", - "about.domain_blocks.suspended.title": "Suspendida", + "about.domain_blocks.suspended.title": "Suspendido", "about.not_available": "Esta información non está dispoñible neste servidor.", "about.powered_by": "Comunicación social descentralizada grazas a {mastodon}", "about.rules": "Regras do servidor", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Seguindo} other {{counter} Seguindo}}", "account.follows.empty": "Esta usuaria aínda non segue a ninguén.", "account.follows_you": "Séguete", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Agochar repeticións de @{name}", "account.joined_short": "Uniuse", "account.languages": "Modificar os idiomas subscritos", @@ -46,7 +47,7 @@ "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.", "account.media": "Multimedia", "account.mention": "Mencionar @{name}", - "account.moved_to": "{name} mudouse a:", + "account.moved_to": "{name} informa de que a súa nova conta é:", "account.mute": "Acalar @{name}", "account.mute_notifications": "Acalar as notificacións de @{name}", "account.muted": "Acalada", @@ -181,6 +182,8 @@ "directory.local": "Só de {domain}", "directory.new_arrivals": "Recén chegadas", "directory.recently_active": "Activas recentemente", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Estas son as publicacións máis recentes das persoas que teñen a súa conta en {domain}.", "dismissable_banner.dismiss": "Desbotar", "dismissable_banner.explore_links": "As persoas deste servidor e da rede descentralizada están a falar destas historias agora mesmo.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Agochar {number, plural, one {imaxe} other {imaxes}}", "missing_indicator.label": "Non atopado", "missing_indicator.sublabel": "Este recurso non foi atopado", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Agochar notificacións desta usuaria?", "mute_modal.indefinite": "Indefinida", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index c52d763dde..363a9c3e56 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "שרתים מוגבלים", "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", + "about.disclaimer": "מסטודון היא תוכנת קוד פתוח חינמית וסימן מסחרי של Mastodon gGmbH.", + "about.domain_blocks.comment": "סיבה", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.preamble": "ככלל מסטודון מאפשרת לך לצפות בתוכן ולתקשר עם משתמשים מכל שרת בפדיברס. אלו הם היוצאים מן הכלל שהוגדרו עבור השרת המסוים הזה.", + "about.domain_blocks.severity": "חומרה", + "about.domain_blocks.silenced.explanation": "ככלל פרופילים ותוכן משרת זה לא יוצגו, אלא אם חיפשת אותם באופן מפורש או בחרת להשתתף בו על ידי מעקב.", + "about.domain_blocks.silenced.title": "מוגבלים", + "about.domain_blocks.suspended.explanation": "שום מידע משרת זה לא יעובד, יישמר או יוחלף, מה שהופך כל תקשורת עם משתמשים משרת זה לבלתי אפשרית.", + "about.domain_blocks.suspended.title": "מושעים", + "about.not_available": "המידע אינו זמין על שרת זה.", + "about.powered_by": "רשת חברתית מבוזרת המופעלת על ידי {mastodon}", + "about.rules": "כללי השרת", "account.account_note_header": "הערה", "account.add_or_remove_from_list": "הוסף או הסר מהרשימות", "account.badges.bot": "בוט", @@ -21,7 +21,7 @@ "account.block_domain": "חסמו את קהילת {domain}", "account.blocked": "לחסום", "account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "משיכת בקשת מעקב", "account.direct": "הודעה ישירה ל@{name}", "account.disable_notifications": "הפסק לשלוח לי התראות כש@{name} מפרסמים", "account.domain_blocked": "הדומיין חסום", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural,one {עוקב אחרי {counter}}other {עוקב אחרי {counter}}}", "account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.", "account.follows_you": "במעקב אחריך", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.", "account.media": "מדיה", "account.mention": "אזכור של @{name}", - "account.moved_to": "החשבון {name} הועבר אל:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "להשתיק את @{name}", "account.mute_notifications": "להסתיר התראות מ @{name}", "account.muted": "מושתק", @@ -66,7 +67,7 @@ "account.unmute_notifications": "להפסיק השתקת התראות מ @{name}", "account.unmute_short": "ביטול השתקה", "account_note.placeholder": "יש ללחוץ כדי להוסיף הערות", - "admin.dashboard.daily_retention": "קצב שימור משתמשים (פר יום) אחרי ההרשמה", + "admin.dashboard.daily_retention": "קצב שימור משתמשים יומי אחרי ההרשמה", "admin.dashboard.monthly_retention": "קצב שימור משתמשים (פר חודש) אחרי ההרשמה", "admin.dashboard.retention.average": "ממוצע", "admin.dashboard.retention.cohort": "חודש רישום", @@ -138,7 +139,7 @@ "compose_form.poll.switch_to_multiple": "אפשרו בחירה מרובה בסקר", "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר", "compose_form.publish": "פרסום", - "compose_form.publish_loud": "{publish}!", + "compose_form.publish_loud": "לחצרץ!", "compose_form.save_changes": "שמירת שינויים", "compose_form.sensitive.hide": "{count, plural, one {סימון מידע כרגיש} other {סימון מידע כרגיש}}", "compose_form.sensitive.marked": "{count, plural, one {מידע מסומן כרגיש} other {מידע מסומן כרגיש}}", @@ -181,6 +182,8 @@ "directory.local": "מ- {domain} בלבד", "directory.new_arrivals": "חדשים כאן", "directory.recently_active": "פעילים לאחרונה", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {Hide images} many {להסתיר תמונות} other {Hide תמונות}}", "missing_indicator.label": "לא נמצא", "missing_indicator.sublabel": "לא ניתן היה למצוא את המשאב", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "משך הזמן", "mute_modal.hide_notifications": "להסתיר התראות מחשבון זה?", "mute_modal.indefinite": "ללא תאריך סיום", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 3698009cc7..992205a7e1 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} निम्नलिखित} other {{counter} निम्नलिखित}}", "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।", "account.follows_you": "आपको फॉलो करता है", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name} के बूस्ट छुपाएं", "account.joined_short": "पुरा हुआ", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।", "account.media": "मीडिया", "account.mention": "उल्लेख @{name}", - "account.moved_to": "{name} स्थानांतरित हो गया:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "म्यूट @{name}", "account.mute_notifications": "@{name} के नोटिफिकेशन म्यूट करे", "account.muted": "म्यूट है", @@ -181,6 +182,8 @@ "directory.local": "केवल {domain} से", "directory.new_arrivals": "नए आगंतुक", "directory.recently_active": "हाल में ही सक्रिय", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "नहीं मिला", "missing_indicator.sublabel": "यह संसाधन नहीं मिल सका।", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index cba8fa3d93..f04760ed14 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} praćeni} few{{counter} praćena} other {{counter} praćenih}}", "account.follows.empty": "Korisnik/ca još ne prati nikoga.", "account.follows_you": "Prati te", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Sakrij boostove od @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.", "account.media": "Medijski sadržaj", "account.mention": "Spomeni @{name}", - "account.moved_to": "Račun {name} je premješten na:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Utišaj @{name}", "account.mute_notifications": "Utišaj obavijesti od @{name}", "account.muted": "Utišano", @@ -181,6 +182,8 @@ "directory.local": "Samo iz {domain}", "directory.new_arrivals": "Novi korisnici", "directory.recently_active": "Nedavno aktivni", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}", "missing_indicator.label": "Nije pronađeno", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Trajanje", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index bced7fc73a..5a938ac5d7 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Követett}}", "account.follows.empty": "Ez a felhasználó még senkit sem követ.", "account.follows_you": "Követ téged", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name} megtolásainak elrejtése", "account.joined_short": "Csatlakozott", "account.languages": "Feliratkozott nyelvek módosítása", @@ -46,7 +47,7 @@ "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.", "account.media": "Média", "account.mention": "@{name} említése", - "account.moved_to": "{name} átköltözött:", + "account.moved_to": "{name} jelezte, hogy az új fiókja a következő:", "account.mute": "@{name} némítása", "account.mute_notifications": "@{name} értesítéseinek némítása", "account.muted": "Némítva", @@ -181,6 +182,8 @@ "directory.local": "Csak innen: {domain}", "directory.new_arrivals": "Új csatlakozók", "directory.recently_active": "Nemrég aktív", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Ezek a legfrissebb nyilvános bejegyzések, amelyeket a(z) {domain} kiszolgáló fiókjait használó emberek tették közzé.", "dismissable_banner.dismiss": "Eltüntetés", "dismissable_banner.explore_links": "Jelenleg ezekről a hírekről beszélgetnek az ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}", "missing_indicator.label": "Nincs találat", "missing_indicator.sublabel": "Ez az erőforrás nem található", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Időtartam", "mute_modal.hide_notifications": "Rejtsük el a felhasználótól származó értesítéseket?", "mute_modal.indefinite": "Határozatlan", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index ff246d03f5..8af39e2c6c 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Հետեւած} other {{counter} Հետեւած}}", "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։", "account.follows_you": "Հետեւում է քեզ", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Սոյն հաշուի գաղտնիութեան մակարդակը նշուած է որպէս՝ փակ։ Հաշուի տէրն ընտրում է, թէ ով կարող է հետեւել իրեն։", "account.media": "Մեդիա", "account.mention": "Նշել @{name}֊ին", - "account.moved_to": "{name}֊ը տեղափոխուել է՝", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Լռեցնել @{name}֊ին", "account.mute_notifications": "Անջատել ծանուցումները @{name}֊ից", "account.muted": "Լռեցուած", @@ -181,6 +182,8 @@ "directory.local": "{domain} տիրոյթից միայն", "directory.new_arrivals": "Նորեկներ", "directory.recently_active": "Վերջերս ակտիւ", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Ցուցադրել/թաքցնել", "missing_indicator.label": "Չգտնուեց", "missing_indicator.sublabel": "Պաշարը չի գտնւում", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Տեւողութիւն", "mute_modal.hide_notifications": "Թաքցնե՞լ ծանուցումներն այս օգտատիրոջից։", "mute_modal.indefinite": "Անժամկէտ", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 80642586ce..df8cabcb4b 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Mengikuti}}", "account.follows.empty": "Pengguna ini belum mengikuti siapa pun.", "account.follows_you": "Mengikuti Anda", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", "account.joined_short": "Bergabung", "account.languages": "Ubah langganan bahasa", @@ -46,7 +47,7 @@ "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.", "account.media": "Media", "account.mention": "Balasan @{name}", - "account.moved_to": "{name} telah pindah ke:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Bisukan @{name}", "account.mute_notifications": "Bisukan pemberitahuan dari @{name}", "account.muted": "Dibisukan", @@ -181,6 +182,8 @@ "directory.local": "Dari {domain} saja", "directory.new_arrivals": "Yang baru datang", "directory.recently_active": "Baru-baru ini aktif", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Ini adalah kiriman publik terkini dari orang yang akunnya berada di {domain}.", "dismissable_banner.dismiss": "Abaikan", "dismissable_banner.explore_links": "Cerita berita ini sekarang sedang dibicarakan oleh orang di server ini dan lainnya dalam jaringan terdesentralisasi.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Tampil/Sembunyikan", "missing_indicator.label": "Tidak ditemukan", "missing_indicator.sublabel": "Sumber daya tak bisa ditemukan", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Durasi", "mute_modal.hide_notifications": "Sembunyikan notifikasi dari pengguna ini?", "mute_modal.indefinite": "Tak terbatas", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index 207d094b35..b37f02feb9 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Na-eso gị", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index b13faa61e8..4489053e67 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Sequas} other {{counter} Sequanti}}", "account.follows.empty": "Ca uzanto ne sequa irgu til nun.", "account.follows_you": "Sequas tu", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Celez busti de @{name}", "account.joined_short": "Joined", "account.languages": "Chanjez abonita lingui", @@ -46,7 +47,7 @@ "account.locked_info": "La privatesostaco di ca konto fixesas quale lokata. Proprietato manue kontrolas personi qui povas sequar.", "account.media": "Medio", "account.mention": "Mencionar @{name}", - "account.moved_to": "{name} movesis a:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Celar @{name}", "account.mute_notifications": "Silencigez avizi de @{name}", "account.muted": "Silencigata", @@ -181,6 +182,8 @@ "directory.local": "De {domain} nur", "directory.new_arrivals": "Nova venanti", "directory.recently_active": "Recenta aktivo", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Co esas maxim recenta publika posti de personi quo havas konto quo hostigesas da {domain}.", "dismissable_banner.dismiss": "Ignorez", "dismissable_banner.explore_links": "Ca nova rakonti parolesas da personi che ca e altra servili di necentraligita situo nun.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Chanjar videbleso", "missing_indicator.label": "Ne trovita", "missing_indicator.sublabel": "Ca moyeno ne existas", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Durado", "mute_modal.hide_notifications": "Celez avizi de ca uzanto?", "mute_modal.indefinite": "Nedefinitiva", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 297fa141b2..1abf12255e 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} fylgist með} other {{counter} fylgjast með}}", "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.", "account.follows_you": "Fylgir þér", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", "account.joined_short": "Gerðist þátttakandi", "account.languages": "Breyta tungumálum í áskrift", @@ -46,7 +47,7 @@ "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", "account.media": "Myndskrár", "account.mention": "Minnast á @{name}", - "account.moved_to": "{name} hefur verið færður til:", + "account.moved_to": "{name} hefur gefið til kynna að nýi notandaaðgangurinn sé:", "account.mute": "Þagga niður í @{name}", "account.mute_notifications": "Þagga tilkynningar frá @{name}", "account.muted": "Þaggaður", @@ -181,6 +182,8 @@ "directory.local": "Einungis frá {domain}", "directory.new_arrivals": "Nýkomnir", "directory.recently_active": "Nýleg virkni", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Þetta eru nýjustu opinberu færslurnar frá fólki sem er hýst á {domain}.", "dismissable_banner.dismiss": "Hunsa", "dismissable_banner.explore_links": "Þetta eru fréttafærslur sem í augnablikinu er verið að tala um af fólki á þessum og öðrum netþjónum á dreifhýsta netkerfinu.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Víxla sýnileika", "missing_indicator.label": "Fannst ekki", "missing_indicator.sublabel": "Tilfangið fannst ekki", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Lengd", "mute_modal.hide_notifications": "Fela tilkynningar frá þessum notanda?", "mute_modal.indefinite": "Óendanlegt", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index f59ac0ec29..aa5c589d28 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -13,7 +13,7 @@ "about.not_available": "Queste informazioni non sono state rese disponibili su questo server.", "about.powered_by": "Social media decentralizzati alimentati da {mastodon}", "about.rules": "Regole del server", - "account.account_note_header": "Le tue note sull'utente", + "account.account_note_header": "Note", "account.add_or_remove_from_list": "Aggiungi o togli dalle liste", "account.badges.bot": "Bot", "account.badges.group": "Gruppo", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Seguiti}}", "account.follows.empty": "Questo utente non segue nessuno ancora.", "account.follows_you": "Ti segue", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Nascondi condivisioni da @{name}", "account.joined_short": "Account iscritto", "account.languages": "Cambia le lingue di cui ricevere i post", @@ -46,7 +47,7 @@ "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.", "account.media": "Media", "account.mention": "Menziona @{name}", - "account.moved_to": "{name} si è trasferito su:", + "account.moved_to": "{name} ha indicato che il suo nuovo account è ora:", "account.mute": "Silenzia @{name}", "account.mute_notifications": "Silenzia notifiche da @{name}", "account.muted": "Silenziato", @@ -181,6 +182,8 @@ "directory.local": "Solo da {domain}", "directory.new_arrivals": "Nuovi arrivi", "directory.recently_active": "Attivo di recente", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Questi sono i posti pubblici più recenti di persone i cui account sono ospitati da {domain}.", "dismissable_banner.dismiss": "Ignora", "dismissable_banner.explore_links": "Queste notizie sono in fase di discussione da parte di persone su questo e altri server della rete decentralizzata, in questo momento.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Imposta visibilità", "missing_indicator.label": "Non trovato", "missing_indicator.sublabel": "Risorsa non trovata", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Durata", "mute_modal.hide_notifications": "Nascondere le notifiche da quest'utente?", "mute_modal.indefinite": "Per sempre", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index e0e5b3dcd8..1ccfce8211 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -1,7 +1,7 @@ { "about.blocks": "制限中のサーバー", "about.contact": "連絡先", - "about.disclaimer": "Mastodon は自由なオープンソースソフトウェアで、Mastodon gGmbH の商標です。", + "about.disclaimer": "Mastodonは自由なオープンソースソフトウェアでMastodon gGmbHの商標です。", "about.domain_blocks.comment": "制限理由", "about.domain_blocks.domain": "ドメイン", "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。", @@ -39,6 +39,7 @@ "account.following_counter": "{counter} フォロー", "account.follows.empty": "まだ誰もフォローしていません。", "account.follows_you": "フォローされています", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name}さんからのブーストを非表示", "account.joined_short": "登録日", "account.languages": "購読言語の変更", @@ -46,7 +47,7 @@ "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。", "account.media": "メディア", "account.mention": "@{name}さんにメンション", - "account.moved_to": "{name}さんは引っ越しました:", + "account.moved_to": "{name} さんの新しいアカウント:", "account.mute": "@{name}さんをミュート", "account.mute_notifications": "@{name}さんからの通知を受け取らない", "account.muted": "ミュート済み", @@ -92,11 +93,11 @@ "bundle_modal_error.close": "閉じる", "bundle_modal_error.message": "コンポーネントの読み込み中に問題が発生しました。", "bundle_modal_error.retry": "再試行", - "closed_registrations.other_server_instructions": "マストドンは分散型なので、他のサーバーにアカウントを作っても、このサーバーとやり取りすることができます。", - "closed_registrations_modal.description": "現在 {domain} でアカウント作成はできませんが、Mastodon は {domain} のアカウントでなくても利用できます。", + "closed_registrations.other_server_instructions": "Mastodonは分散型なので他のサーバーにアカウントを作ってもこのサーバーとやり取りできます。", + "closed_registrations_modal.description": "現在{domain}でアカウント作成はできませんがMastodonは{domain}のアカウントでなくても利用できます。", "closed_registrations_modal.find_another_server": "別のサーバーを探す", - "closed_registrations_modal.preamble": "Mastodon は分散型なので、どこでアカウントを作成しても、このサーバーのユーザーを誰でもフォローして交流することができます。自分でホスティングすることもできます!", - "closed_registrations_modal.title": "Mastodon でサインアップ", + "closed_registrations_modal.preamble": "Mastodonは分散型なのでどのサーバーでアカウントを作成してもこのサーバーのユーザーを誰でもフォローして交流することができます。また自分でホスティングすることもできます!", + "closed_registrations_modal.title": "Mastodonでアカウントを作成", "column.about": "About", "column.blocks": "ブロックしたユーザー", "column.bookmarks": "ブックマーク", @@ -181,6 +182,8 @@ "directory.local": "{domain} のみ", "directory.new_arrivals": "新着順", "directory.recently_active": "最近の活動順", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "これらは{domain}がホストしている人たちの最新の公開投稿です。", "dismissable_banner.dismiss": "閉じる", "dismissable_banner.explore_links": "これらのニュース記事は現在分散型ネットワークの他のサーバーの人たちに話されています。", @@ -237,14 +240,14 @@ "explore.trending_links": "ニュース", "explore.trending_statuses": "投稿", "explore.trending_tags": "ハッシュタグ", - "filter_modal.added.context_mismatch_explanation": "このフィルターカテゴリーは、あなたがアクセスした投稿のコンテキストには適用されません。\nこの投稿のコンテキストでもフィルターを適用するには、フィルターを編集する必要があります。", + "filter_modal.added.context_mismatch_explanation": "このフィルターカテゴリーはあなたがアクセスした投稿のコンテキストには適用されません。この投稿のコンテキストでもフィルターを適用するにはフィルターを編集する必要があります。", "filter_modal.added.context_mismatch_title": "コンテキストが一致しません!", "filter_modal.added.expired_explanation": "このフィルターカテゴリーは有効期限が切れています。適用するには有効期限を更新してください。", "filter_modal.added.expired_title": "フィルターの有効期限が切れています!", "filter_modal.added.review_and_configure": "このフィルターカテゴリーを確認して設定するには、{settings_link}に移動します。", "filter_modal.added.review_and_configure_title": "フィルター設定", "filter_modal.added.settings_link": "設定", - "filter_modal.added.short_explanation": "この投稿は以下のフィルターカテゴリーに追加されました: {title}。", + "filter_modal.added.short_explanation": "この投稿はフィルターカテゴリー『{title}』に追加されました。", "filter_modal.added.title": "フィルターを追加しました!", "filter_modal.select_filter.context_mismatch": "このコンテキストには当てはまりません", "filter_modal.select_filter.expired": "期限切れ", @@ -339,7 +342,7 @@ "lightbox.next": "次", "lightbox.previous": "前", "limited_account_hint.action": "構わず表示する", - "limited_account_hint.title": "このプロフィールは {domain} のモデレーターによって非表示にされています。", + "limited_account_hint.title": "このプロフィールは{domain}のモデレーターによって非表示にされています。", "lists.account.add": "リストに追加", "lists.account.remove": "リストから外す", "lists.delete": "リストを削除", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {画像を閉じる} other {画像を閉じる}}", "missing_indicator.label": "見つかりません", "missing_indicator.sublabel": "見つかりませんでした", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "ミュートする期間", "mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?", "mute_modal.indefinite": "無期限", @@ -506,13 +510,13 @@ "report.thanks.title_actionable": "ご報告ありがとうございます、追って確認します。", "report.unfollow": "@{name}さんのフォローを解除", "report.unfollow_explanation": "このアカウントをフォローしています。ホームフィードに彼らの投稿を表示しないようにするには、彼らのフォローを外してください。", - "report_notification.attached_statuses": "{count, plural, one {{count} 件の投稿} other {{count} 件の投稿}}が添付されました。", + "report_notification.attached_statuses": "{count, plural, one {{count}件の投稿} other {{count}件の投稿}}が添付されました。", "report_notification.categories.other": "その他", "report_notification.categories.spam": "スパム", "report_notification.categories.violation": "ルール違反", "report_notification.open": "通報を開く", "search.placeholder": "検索", - "search.search_or_paste": "検索または URL を入力", + "search.search_or_paste": "検索またはURLを入力", "search_popout.search_format": "高度な検索フォーマット", "search_popout.tips.full_text": "表示名やユーザー名、ハッシュタグのほか、あなたの投稿やお気に入り、ブーストした投稿、返信に一致する単純なテキスト。", "search_popout.tips.hashtag": "ハッシュタグ", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index d59e1d5d82..d371077630 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "მოგყვებათ", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "მედია", "account.mention": "ასახელეთ @{name}", - "account.moved_to": "{name} გადავიდა:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "გააჩუმე @{name}", "account.mute_notifications": "გააჩუმე შეტყობინებები @{name}-სგან", "account.muted": "გაჩუმებული", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "ხილვადობის ჩართვა", "missing_indicator.label": "არაა ნაპოვნი", "missing_indicator.sublabel": "ამ რესურსის პოვნა ვერ მოხერხდა", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "დავმალოთ შეტყობინებები ამ მომხმარებლისგან?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index ac68de3191..20fe24f839 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} yettwaḍfaren} other {{counter} yettwaḍfaren}}", "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.", "account.follows_you": "Yeṭṭafaṛ-ik", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "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.moved_to": "{name} ibeddel ɣer:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Sgugem @{name}", "account.mute_notifications": "Sgugem tilɣa sγur @{name}", "account.muted": "Yettwasgugem", @@ -181,6 +182,8 @@ "directory.local": "Seg {domain} kan", "directory.new_arrivals": "Imaynuten id yewḍen", "directory.recently_active": "Yermed xas melmi kan", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Ffer {number, plural, one {tugna} other {tugniwin}}", "missing_indicator.label": "Ulac-it", "missing_indicator.sublabel": "Ur nufi ara aɣbalu-a", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Tanzagt", "mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?", "mute_modal.indefinite": "Ur yettwasbadu ara", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 4d49e7dcfc..f93a67546b 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Жазылым} other {{counter} Жазылым}}", "account.follows.empty": "Ешкімге жазылмапты.", "account.follows_you": "Сізге жазылыпты", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Бұл қолданушы өзі туралы мәліметтерді жасырған. Тек жазылғандар ғана көре алады.", "account.media": "Медиа", "account.mention": "Аталым @{name}", - "account.moved_to": "{name} көшіп кетті:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Үнсіз қылу @{name}", "account.mute_notifications": "@{name} туралы ескертпелерді жасыру", "account.muted": "Үнсіз", @@ -181,6 +182,8 @@ "directory.local": "Тек {domain} доменінен", "directory.new_arrivals": "Жаңадан келгендер", "directory.recently_active": "Жақында кіргендер", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Көрінуді қосу", "missing_indicator.label": "Табылмады", "missing_indicator.sublabel": "Бұл ресурс табылмады", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Бұл қолданушы ескертпелерін жасырамыз ба?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 7525b2b77e..9a6977f904 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 30c41fee08..c8a85cbe7e 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -39,6 +39,7 @@ "account.following_counter": "{counter} 팔로잉", "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.", "account.follows_you": "날 팔로우합니다", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name}의 부스트를 숨기기", "account.joined_short": "가입", "account.languages": "구독한 언어 변경", @@ -46,7 +47,7 @@ "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.", "account.media": "미디어", "account.mention": "@{name}에게 글쓰기", - "account.moved_to": "{name} 님은 계정을 이동했습니다:", + "account.moved_to": "{name} 님은 자신의 새 계정이 다음과 같다고 표시했습니다:", "account.mute": "@{name} 뮤트", "account.mute_notifications": "@{name}의 알림을 뮤트", "account.muted": "뮤트 됨", @@ -181,6 +182,8 @@ "directory.local": "{domain}에서만", "directory.new_arrivals": "새로운 사람들", "directory.recently_active": "최근 활동", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "여기 있는 것들은 계정이 {domain}에 있는 사람들의 최근 공개 게시물들입니다.", "dismissable_banner.dismiss": "지우기", "dismissable_banner.explore_links": "이 뉴스들은 이 서버와 분산화된 네트워크의 다른 서버에서 사람들이 지금 많이 이야기 하고 있는 것입니다.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "이미지 숨기기", "missing_indicator.label": "찾을 수 없습니다", "missing_indicator.sublabel": "이 리소스를 찾을 수 없었습니다", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "기간", "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?", "mute_modal.indefinite": "무기한", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 34a2ef6ce3..c65d0c1a28 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Dişopîne} other {{counter} Dişopîne}}", "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", "account.follows_you": "Te dişopîne", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", "account.joined_short": "Tevlî bû", "account.languages": "Zimanên beşdarbûyî biguherîne", @@ -46,7 +47,7 @@ "account.locked_info": "Rewşa vê ajimêrê wek kilîtkirî hatiye sazkirin. Xwediyê ajimêrê, bi destan dinirxîne şopandinê dinirxîne.", "account.media": "Medya", "account.mention": "Qal @{name} bike", - "account.moved_to": "{name} hate livandin bo:", + "account.moved_to": "{name} diyar kir ku ajimêra nû ya wan niha ev e:", "account.mute": "@{name} bêdeng bike", "account.mute_notifications": "Agahdariyan ji @{name} bêdeng bike", "account.muted": "Bêdengkirî", @@ -181,6 +182,8 @@ "directory.local": "Tenê ji {domain}", "directory.new_arrivals": "Kesên ku nû hatine", "directory.recently_active": "Di demên dawî de çalak", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Ev şandiyên giştî yên herî dawî ji kesên ku ajimêrê wan ji aliyê {domain} ve têne pêşkêşkirin.", "dismissable_banner.dismiss": "Paşguh bike", "dismissable_banner.explore_links": "Ev çîrokên nûçeyan niha li ser vê û rajekarên din ên tora nenavendî ji aliyê mirovan ve têne axaftin.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}", "missing_indicator.label": "Nehate dîtin", "missing_indicator.sublabel": "Ev çavkanî nehat dîtin", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Dem", "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?", "mute_modal.indefinite": "Nediyar", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 87074f1a39..be731c6d1f 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {Ow holya {counter}} other {Ow holya {counter}}}", "account.follows.empty": "Ny wra'n devnydhyer ma holya nagonan hwath.", "account.follows_you": "Y'th hol", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Kudha kenerthow a @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Studh privetter an akont ma yw alhwedhys. An perghen a wra dasweles dre leuv piw a yll aga holya.", "account.media": "Myski", "account.mention": "Meneges @{name}", - "account.moved_to": "{name} a wrug movya dhe:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Tawhe @{name}", "account.mute_notifications": "Tawhe gwarnyansow a @{name}", "account.muted": "Tawhes", @@ -181,6 +182,8 @@ "directory.local": "A {domain} hepken", "directory.new_arrivals": "Devedhyansow nowydh", "directory.recently_active": "Bew a-gynsow", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Hide {number, plural, one {aven} other {aven}}", "missing_indicator.label": "Ny veu kevys", "missing_indicator.sublabel": "Ny yllir kavòs an asnodh ma", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duryans", "mute_modal.hide_notifications": "Kudha gwarnyansow a'n devnydhyer ma?", "mute_modal.indefinite": "Andhevri", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index fca8650908..14bb2cc33f 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Užtildytas", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index bc8672f0a2..62fa977015 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Sekojošs} other {{counter} Sekojoši}}", "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows_you": "Seko tev", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", "account.joined_short": "Pievienojies", "account.languages": "Mainīt abonētās valodas", @@ -46,7 +47,7 @@ "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", "account.media": "Multivide", "account.mention": "Piemin @{name}", - "account.moved_to": "{name} ir pārcelts uz:", + "account.moved_to": "{name} norādīja, ka viņu jaunais konts tagad ir:", "account.mute": "Apklusināt @{name}", "account.mute_notifications": "Nerādīt paziņojumus no @{name}", "account.muted": "Noklusināts", @@ -181,6 +182,8 @@ "directory.local": "Tikai no {domain}", "directory.new_arrivals": "Jaunpienācēji", "directory.recently_active": "Nesen aktīvs", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Šīs ir jaunākās publiskās ziņas no personām, kuru kontus mitina {domain}.", "dismissable_banner.dismiss": "Atcelt", "dismissable_banner.explore_links": "Par šiem jaunumiem šobrīd runā cilvēki šajā un citos decentralizētā tīkla serveros.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Slēpt # attēlu} other {Slēpt # attēlus}}", "missing_indicator.label": "Nav atrasts", "missing_indicator.sublabel": "Šo resursu nevarēja atrast", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Ilgums", "mute_modal.hide_notifications": "Slēpt paziņojumus no šī lietotāja?", "mute_modal.indefinite": "Nenoteikts", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 8c3509e912..9bf2b09e5a 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Корисникот не следи никој сеуште.", "account.follows_you": "Те следи тебе", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Сокриј буст од @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.", "account.media": "Медија", "account.mention": "Спомни @{name}", - "account.moved_to": "{name} се пресели во:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Зачути го @{name}", "account.mute_notifications": "Исклучи известувања од @{name}", "account.muted": "Зачутено", @@ -181,6 +182,8 @@ "directory.local": "Само од {domain}", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index e0c253e50a..e93b4e00b1 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} പിന്തുടരുന്നു} other {{counter} പിന്തുടരുന്നു}}", "account.follows.empty": "ഈ ഉപയോക്താവ് ആരേയും ഇതുവരെ പിന്തുടരുന്നില്ല.", "account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "ഈ അംഗത്വത്തിന്റെ സ്വകാര്യതാ നിലപാട് അനുസരിച്ച് പിന്തുടരുന്നവരെ തിരഞ്ഞെടുക്കാനുള്ള വിവേചനാധികാരം ഉടമസ്ഥനിൽ നിഷിപ്തമായിരിക്കുന്നു.", "account.media": "മീഡിയ", "account.mention": "@{name} സൂചിപ്പിക്കുക", - "account.moved_to": "{name} ഇതിലേക്ക് മാറിയിരിക്കുന്നു:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "@{name}-നെ(യെ) നിശ്ശബ്ദമാക്കൂ", "account.mute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ നിശബ്ദമാക്കുക", "account.muted": "നിശ്ശബ്ദമാക്കിയിരിക്കുന്നു", @@ -181,6 +182,8 @@ "directory.local": "{domain} ൽ നിന്ന് മാത്രം", "directory.new_arrivals": "പുതിയ വരവുകൾ", "directory.recently_active": "അടുത്തിടെയായി സജീവമായ", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "കാണാനില്ല", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "കാലാവധി", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "അനിശ്ചിതകാല", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index bf7c2d9e7b..b2ed1fa375 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "हा वापरकर्ता अजूनपर्यंत कोणाचा अनुयायी नाही.", "account.follows_you": "तुमचा अनुयायी आहे", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "दृक्‌‌श्राव्य मजकूर", "account.mention": "@{name} चा उल्लेख करा", - "account.moved_to": "{name} आता आहे:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "@{name} ला मूक कारा", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 36afdc2fb7..a0a9c2de43 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Diikuti} other {{counter} Diikuti}}", "account.follows.empty": "Pengguna ini belum mengikuti sesiapa.", "account.follows_you": "Mengikuti anda", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Sembunyikan galakan daripada @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Status privasi akaun ini dikunci. Pemiliknya menyaring sendiri siapa yang boleh mengikutinya.", "account.media": "Media", "account.mention": "Sebut @{name}", - "account.moved_to": "{name} telah berpindah ke:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Bisukan @{name}", "account.mute_notifications": "Bisukan pemberitahuan daripada @{name}", "account.muted": "Dibisukan", @@ -181,6 +182,8 @@ "directory.local": "Dari {domain} sahaja", "directory.new_arrivals": "Ketibaan baharu", "directory.recently_active": "Aktif baru-baru ini", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, other {Sembunyikan imej}}", "missing_indicator.label": "Tidak dijumpai", "missing_indicator.sublabel": "Sumber ini tidak dijumpai", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Tempoh", "mute_modal.hide_notifications": "Sembunyikan pemberitahuan daripada pengguna ini?", "mute_modal.indefinite": "Tidak tentu", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index ed61123e5b..9f1c20fb85 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "မီဒီယာ", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index e56666ba6e..5c586a327a 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} volgend} other {{counter} volgend}}", "account.follows.empty": "Deze gebruiker volgt nog niemand.", "account.follows_you": "Volgt jou", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Boosts van @{name} verbergen", "account.joined_short": "Geregistreerd op", "account.languages": "Getoonde talen wijzigen", @@ -181,6 +182,8 @@ "directory.local": "Alleen {domain}", "directory.new_arrivals": "Nieuwe accounts", "directory.recently_active": "Onlangs actief", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Dit zijn de meest recente openbare berichten van accounts op {domain}. Je kunt onder 'instellingen > voorkeuren > overig' kiezen welke talen je wilt zien.", "dismissable_banner.dismiss": "Sluiten", "dismissable_banner.explore_links": "Deze nieuwsberichten winnen aan populariteit op deze en andere servers binnen het decentrale netwerk.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {afbeelding verbergen} other {afbeeldingen verbergen}}", "missing_indicator.label": "Niet gevonden", "missing_indicator.sublabel": "Deze hulpbron kan niet gevonden worden", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duur", "mute_modal.hide_notifications": "Verberg meldingen van deze persoon?", "mute_modal.indefinite": "Voor onbepaalde tijd", @@ -431,7 +435,7 @@ "notifications.permission_denied_alert": "Desktopmeldingen kunnen niet worden ingeschakeld, omdat een eerdere browsertoestemming werd geweigerd", "notifications.permission_required": "Desktopmeldingen zijn niet beschikbaar omdat de benodigde toestemming niet is verleend.", "notifications_permission_banner.enable": "Desktopmeldingen inschakelen", - "notifications_permission_banner.how_to_control": "Om meldingen te ontvangen wanneer Mastodon niet open is. Je kunt precies bepalen welke soort interacties wel of geen desktopmeldingen geven via de bovenstaande {icon} knop.", + "notifications_permission_banner.how_to_control": "Om meldingen te ontvangen wanneer Mastodon niet open staat. Je kunt precies bepalen welke soort interacties wel of geen desktopmeldingen geven via de bovenstaande {icon} knop.", "notifications_permission_banner.title": "Mis nooit meer iets", "picture_in_picture.restore": "Terugzetten", "poll.closed": "Gesloten", @@ -474,7 +478,7 @@ "report.categories.other": "Overig", "report.categories.spam": "Spam", "report.categories.violation": "De inhoud overtreedt een of meerdere serverregels", - "report.category.subtitle": "Kies wat het meeste overeenkomt", + "report.category.subtitle": "Kies wat het beste overeenkomt", "report.category.title": "Vertel ons wat er met dit {type} aan de hand is", "report.category.title_account": "profiel", "report.category.title_status": "bericht", @@ -501,7 +505,7 @@ "report.submit": "Verzenden", "report.target": "{target} rapporteren", "report.thanks.take_action": "Hier zijn jouw opties waarmee je kunt bepalen wat je in Mastodon wilt zien:", - "report.thanks.take_action_actionable": "Terwijl wij jouw rapportage beroordelen, kun je deze acties ondernemen tegen @{name}:", + "report.thanks.take_action_actionable": "Terwijl wij jouw rapportage beoordelen, kun je deze maatregelen tegen @{name} nemen:", "report.thanks.title": "Wil je dit niet zien?", "report.thanks.title_actionable": "Dank je voor het rapporteren. Wij gaan er naar kijken.", "report.unfollow": "@{name} ontvolgen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index caa4096965..1ccdf49362 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -4,17 +4,17 @@ "about.disclaimer": "Mastodon er gratis programvare med open kjeldekode, og eit varemerke frå Mastodon gGmbH.", "about.domain_blocks.comment": "Årsak", "about.domain_blocks.domain": "Domene", - "about.domain_blocks.preamble": "Mastodon gjev deg som regel lov til å sjå innhald og samhandla med brukarar frå alle andre tenarar i fødiverset. Dette er unntaka som er valde for akkurat denne tenaren.", + "about.domain_blocks.preamble": "Mastodon gjev deg som regel lov til å sjå innhald og samhandla med brukarar frå alle andre tenarar i allheimen. Dette er unntaka som er valde for akkurat denne tenaren.", "about.domain_blocks.severity": "Alvorsgrad", - "about.domain_blocks.silenced.explanation": "Du vil vanlegvis ikkje sjå profilar og innhald frå denen tenaren, med mindre du eksplisitt leiter den opp eller velgjer ved å fylgje.", + "about.domain_blocks.silenced.explanation": "Med mindre du leiter den opp eller fylgjer profiler på tenaren, vil du vanlegvis ikkje sjå profilar og innhald frå denne tenaren.", "about.domain_blocks.silenced.title": "Avgrensa", - "about.domain_blocks.suspended.explanation": "Ingen data frå desse tenarane vert handsama, lagra eller sende til andre, som gjer det umogeleg å samhandla eller kommunisera med andre brukarar frå desse tenarane.", - "about.domain_blocks.suspended.title": "Utvist", + "about.domain_blocks.suspended.explanation": "Ingen data frå denne tenaren vert handsama, lagra eller sende til andre, noko som gjer det umogeleg å samhandla eller kommunisera med brukarar på denne tenaren.", + "about.domain_blocks.suspended.title": "Utestengd", "about.not_available": "Denne informasjonen er ikkje gjort tilgjengeleg på denne tenaren.", "about.powered_by": "Desentraliserte sosiale medium drive av {mastodon}", "about.rules": "Tenarreglar", "account.account_note_header": "Merknad", - "account.add_or_remove_from_list": "Legg til eller tak vekk frå listene", + "account.add_or_remove_from_list": "Legg til eller fjern frå lister", "account.badges.bot": "Robot", "account.badges.group": "Gruppe", "account.block": "Blokker @{name}", @@ -23,11 +23,11 @@ "account.browse_more_on_origin_server": "Sjå gjennom meir på den opphavlege profilen", "account.cancel_follow_request": "Trekk attende fylgeførespurnad", "account.direct": "Send melding til @{name}", - "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", - "account.domain_blocked": "Domenet er gøymt", + "account.disable_notifications": "Slutt å varsle meg når @{name} skriv innlegg", + "account.domain_blocked": "Domenet er sperra", "account.edit_profile": "Rediger profil", - "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg", - "account.endorse": "Framhev på profil", + "account.enable_notifications": "Varsle meg når @{name} skriv innlegg", + "account.endorse": "Vis på profilen", "account.featured_tags.last_status_at": "Sist nytta {date}", "account.featured_tags.last_status_never": "Ingen innlegg", "account.featured_tags.title": "{name} sine framheva emneknaggar", @@ -39,28 +39,29 @@ "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjar}}", "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.follows_you": "Fylgjer deg", - "account.hide_reblogs": "Gøym fremhevingar frå @{name}", + "account.go_to_profile": "Go to profile", + "account.hide_reblogs": "Skjul framhevingar frå @{name}", "account.joined_short": "Vart med", "account.languages": "Endre språktingingar", "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}", "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.", "account.media": "Media", "account.mention": "Nemn @{name}", - "account.moved_to": "{name} har flytta til:", + "account.moved_to": "{name} seier at deira nye konto no er:", "account.mute": "Målbind @{name}", "account.mute_notifications": "Målbind varsel frå @{name}", "account.muted": "Målbunden", "account.posts": "Tut", "account.posts_with_replies": "Tut og svar", "account.report": "Rapporter @{name}", - "account.requested": "Ventar på samtykke. Klikk for å avbryta fylgjeførespurnaden", + "account.requested": "Ventar på aksept. Klikk for å avbryta fylgjeførespurnaden", "account.share": "Del @{name} sin profil", "account.show_reblogs": "Vis framhevingar frå @{name}", "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tut}}", - "account.unblock": "Slutt å blokera @{name}", - "account.unblock_domain": "Vis {domain}", - "account.unblock_short": "Avblokker", - "account.unendorse": "Ikkje framhev på profil", + "account.unblock": "Stopp blokkering av @{name}", + "account.unblock_domain": "Stopp blokkering av domenet {domain}", + "account.unblock_short": "Stopp blokkering", + "account.unendorse": "Ikkje vis på profil", "account.unfollow": "Slutt å fylgja", "account.unmute": "Opphev målbinding av @{name}", "account.unmute_notifications": "Vis varsel frå @{name}", @@ -71,9 +72,9 @@ "admin.dashboard.retention.average": "Gjennomsnitt", "admin.dashboard.retention.cohort": "Registrert månad", "admin.dashboard.retention.cohort_size": "Nye brukarar", - "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.", - "alert.rate_limited.title": "Begrensa rate", - "alert.unexpected.message": "Eit uventa problem oppstod.", + "alert.rate_limited.message": "Ver venleg å prøv på nytt etter {retry_time, time, medium}.", + "alert.rate_limited.title": "Redusert kapasitet", + "alert.unexpected.message": "Det oppstod eit uventa problem.", "alert.unexpected.title": "Oi sann!", "announcement.announcement": "Kunngjering", "attachments_list.unprocessed": "(ubehandla)", @@ -81,9 +82,9 @@ "autosuggest_hashtag.per_week": "{count} per veke", "boost_modal.combo": "Du kan trykkja {combo} for å hoppa over dette neste gong", "bundle_column_error.copy_stacktrace": "Kopier feilrapport", - "bundle_column_error.error.body": "Den etterspurde sida kan ikke hentast fram. Det kan skuldast ein feil i vår kode eller eit kompatibilitetsproblem.", + "bundle_column_error.error.body": "Den etterspurde sida kan ikke hentast fram. Det kan skuldast ein feil i koden vår eller eit kompatibilitetsproblem.", "bundle_column_error.error.title": "Ånei!", - "bundle_column_error.network.body": "Det oppsto ein feil då ein forsøkte å laste denne sida. Dette kan skuldast eit midlertidig problem med nettkoplinga eller denne tenaren.", + "bundle_column_error.network.body": "Det oppsto ein feil ved lasting av denne sida. Dette kan skuldast eit midlertidig problem med nettkoplinga eller denne tenaren.", "bundle_column_error.network.title": "Nettverksfeil", "bundle_column_error.retry": "Prøv igjen", "bundle_column_error.return": "Gå heim att", @@ -93,9 +94,9 @@ "bundle_modal_error.message": "Noko gjekk gale under lastinga av denne komponenten.", "bundle_modal_error.retry": "Prøv igjen", "closed_registrations.other_server_instructions": "Sidan Mastodon er desentralisert kan du lage ein brukar på ein anna tenar og framleis interagere med denne.", - "closed_registrations_modal.description": "Oppretting av ein konto på {domain} er ikkje mogleg, men hugs at du ikkje treng ein konto spesifikt på {domain} for å nytte Mastodon.", - "closed_registrations_modal.find_another_server": "Fin ein anna tenar", - "closed_registrations_modal.preamble": "Mastodon er desentralisert, så uansett kvar du lagar kontoen, vil du kunne fylgje og samhandle med alle på denne tenaren. Du kan til og med ha din eigen tenar!", + "closed_registrations_modal.description": "Det er ikkje mogleg å opprette ein konto på {domain} nett no, men hugs at du ikkje treng ein konto på akkurat {domain} for å nytte Mastodon.", + "closed_registrations_modal.find_another_server": "Finn ein annan tenar", + "closed_registrations_modal.preamble": "Mastodon er desentralisert, så uansett kvar du opprettar ein konto, vil du kunne fylgje og samhandle med alle på denne tenaren. Du kan til og med ha din eigen tenar!", "closed_registrations_modal.title": "Registrer deg på Mastodon", "column.about": "Om", "column.blocks": "Blokkerte brukarar", @@ -103,7 +104,7 @@ "column.community": "Lokal tidsline", "column.direct": "Direktemeldingar", "column.directory": "Sjå gjennom profilar", - "column.domain_blocks": "Gøymde domene", + "column.domain_blocks": "Skjulte domene", "column.favourites": "Favorittar", "column.follow_requests": "Fylgjeførespurnadar", "column.home": "Heim", @@ -112,7 +113,7 @@ "column.notifications": "Varsel", "column.pins": "Festa tut", "column.public": "Samla tidsline", - "column_back_button.label": "Tilbake", + "column_back_button.label": "Attende", "column_header.hide_settings": "Gøym innstillingar", "column_header.moveLeft_settings": "Flytt kolonne til venstre", "column_header.moveRight_settings": "Flytt kolonne til høgre", @@ -127,22 +128,22 @@ "compose.language.search": "Søk språk...", "compose_form.direct_message_warning_learn_more": "Lær meir", "compose_form.encryption_warning": "Innlegg på Mastodon er ikkje ende-til-ende-krypterte. Ikkje del eventuell sensitiv informasjon via Mastodon.", - "compose_form.hashtag_warning": "Dette tutet vert ikkje oppført under nokon emneknagg sidan det ikkje er oppført. Berre offentlege tut kan verta søkt etter med emneknagg.", - "compose_form.lock_disclaimer": "Kontoen din er ikkje {locked}. Kven som helst kan fylgja deg for å sjå innlegga dine som berre visast til fylgjarar.", + "compose_form.hashtag_warning": "Dette tutet vert ikkje oppført under nokon emneknagg sidan ingen emneknagg er oppført. Det er kun emneknaggar som er søkbare i offentlege tutar.", + "compose_form.lock_disclaimer": "Kontoen din er ikkje {locked}. Kven som helst kan fylgja deg for å sjå innlegga dine.", "compose_form.lock_disclaimer.lock": "låst", "compose_form.placeholder": "Kva har du på hjarta?", "compose_form.poll.add_option": "Legg til eit val", - "compose_form.poll.duration": "Varigskap for røysting", + "compose_form.poll.duration": "Varigheit for rundspørjing", "compose_form.poll.option_placeholder": "Val {number}", - "compose_form.poll.remove_option": "Ta vekk dette valet", - "compose_form.poll.switch_to_multiple": "Endre avstemninga til å tillate fleirval", - "compose_form.poll.switch_to_single": "Endra avstemninga til tillate berre eitt val", + "compose_form.poll.remove_option": "Fjern dette valet", + "compose_form.poll.switch_to_multiple": "Endre rundspørjinga til å tillate fleire val", + "compose_form.poll.switch_to_single": "Endre rundspørjinga til å tillate berre eitt val", "compose_form.publish": "Publisér", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Lagre endringar", - "compose_form.sensitive.hide": "Merk medium som sensitivt", - "compose_form.sensitive.marked": "Medium er markert som sensitivt", - "compose_form.sensitive.unmarked": "Medium er ikkje merka som sensitivt", + "compose_form.sensitive.hide": "{count, plural, one {Merk medium som sensitivt} other {Merk medium som sensitive}}", + "compose_form.sensitive.marked": "{count, plural, one {Medium er markert som sensitivt} other {Medium er markert som sensitive}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Medium er ikkje markert som sensitivt} other {Medium er ikkje markert som sensitive}}", "compose_form.spoiler.marked": "Tekst er gøymd bak åtvaring", "compose_form.spoiler.unmarked": "Tekst er ikkje gøymd", "compose_form.spoiler_placeholder": "Skriv åtvaringa di her", @@ -157,18 +158,18 @@ "confirmations.delete_list.confirm": "Slett", "confirmations.delete_list.message": "Er du sikker på at du vil sletta denne lista for alltid?", "confirmations.discard_edit_media.confirm": "Forkast", - "confirmations.discard_edit_media.message": "Du har ulagra endringar i mediabeskrivinga eller førehandsvisinga. Vil du forkaste dei likevel?", - "confirmations.domain_block.confirm": "Gøym heile domenet", - "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil blokkera heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller målbindingar. Du kjem ikkje til å sjå innhald frå det domenet i nokon fødererte tidsliner eller i varsla dine. Fylgjarane dine frå det domenet vert fjerna.", + "confirmations.discard_edit_media.message": "Du har ulagra endringar i mediaskildringa eller førehandsvisinga. Vil du forkaste dei likevel?", + "confirmations.domain_block.confirm": "Skjul alt frå domenet", + "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil skjula heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller målbindingar. Du kjem ikkje til å sjå innhald frå domenet i fødererte tidsliner eller i varsla dine. Fylgjarane dine frå domenet vert fjerna.", "confirmations.logout.confirm": "Logg ut", "confirmations.logout.message": "Er du sikker på at du vil logga ut?", "confirmations.mute.confirm": "Målbind", - "confirmations.mute.explanation": "Dette gøymer innlegg frå dei og innlegg som nemner dei, men tillèt dei framleis å sjå dine innlegg og fylgja deg.", + "confirmations.mute.explanation": "Dette vil skjula innlegg som kjem frå og som nemner dei, men vil framleis la dei sjå innlegga dine og fylgje deg.", "confirmations.mute.message": "Er du sikker på at du vil målbinda {name}?", "confirmations.redraft.confirm": "Slett & skriv på nytt", - "confirmations.redraft.message": "Er du sikker på at du vil sletta denne statusen og skriva han på nytt? Då misser du favorittar og framhevingar, og svar til det opphavlege innlegget vert einstøingar.", + "confirmations.redraft.message": "Er du sikker på at du vil sletta denne statusen og skriva han på nytt? Då misser du favorittar og framhevingar, og eventuelle svar til det opprinnelege innlegget vert foreldrelause.", "confirmations.reply.confirm": "Svar", - "confirmations.reply.message": "Å svara no vil overskriva meldinga du skriv no. Er du sikker på at du vil halda fram?", + "confirmations.reply.message": "Å svara no vil overskriva den meldinga du er i ferd med å skriva. Er du sikker på at du vil halda fram?", "confirmations.unfollow.confirm": "Slutt å fylgja", "confirmations.unfollow.message": "Er du sikker på at du vil slutta å fylgja {name}?", "conversation.delete": "Slett samtale", @@ -177,26 +178,28 @@ "conversation.with": "Med {names}", "copypaste.copied": "Kopiert", "copypaste.copy": "Kopiér", - "directory.federated": "Frå kjent fedivers", + "directory.federated": "Frå den kjende allheimen", "directory.local": "Berre frå {domain}", - "directory.new_arrivals": "Nyankommne", + "directory.new_arrivals": "Nyleg tilkomne", "directory.recently_active": "Nyleg aktive", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Dette er dei nylegaste offentlege innlegga frå personar med kontoar frå {domain}.", "dismissable_banner.dismiss": "Avvis", "dismissable_banner.explore_links": "Desse nyhendesakene snakkast om av folk på denne og andre tenarar på det desentraliserte nettverket no.", - "dismissable_banner.explore_statuses": "Desse innlegga frå denne tenaren og andre tenarar i det desentraliserte nettverket er i dytten på denne tenaren nett no.", + "dismissable_banner.explore_statuses": "Desse innlegga frå denne tenaren og andre tenarar i det desentraliserte nettverket er i støytet på denne tenaren nett no.", "dismissable_banner.explore_tags": "Desse emneknaggane er populære blant folk på denne tenaren og andre tenarar i det desentraliserte nettverket nett no.", "dismissable_banner.public_timeline": "Dette er dei siste offentlege innlegga frå folk på denne tenaren og andre tenarar på det desentraliserte nettverket som denne tenaren veit om.", - "embed.instructions": "Bygg inn denne statusen på nettsida di ved å kopiera koden under.", - "embed.preview": "Slik bid det å sjå ut:", + "embed.instructions": "Bygg inn denne statusen på nettsida di ved å kopiera koden nedanfor.", + "embed.preview": "Slik kjem det til å sjå ut:", "emoji_button.activity": "Aktivitet", "emoji_button.clear": "Tøm", - "emoji_button.custom": "Eige", + "emoji_button.custom": "Tilpassa", "emoji_button.flags": "Flagg", "emoji_button.food": "Mat & drikke", "emoji_button.label": "Legg til emoji", "emoji_button.nature": "Natur", - "emoji_button.not_found": "Ingen emojojoer!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Finn ingen samsvarande emojiar", "emoji_button.objects": "Objekt", "emoji_button.people": "Folk", "emoji_button.recent": "Ofte brukt", @@ -206,48 +209,48 @@ "emoji_button.travel": "Reise & stader", "empty_column.account_suspended": "Kontoen er suspendert", "empty_column.account_timeline": "Ingen tut her!", - "empty_column.account_unavailable": "Profil ikkje tilgjengelig", - "empty_column.blocks": "Du har ikkje blokkert nokon brukarar enno.", + "empty_column.account_unavailable": "Profil ikkje tilgjengeleg", + "empty_column.blocks": "Du har ikkje blokkert nokon enno.", "empty_column.bookmarked_statuses": "Du har ikkje nokon bokmerkte tut enno. Når du bokmerkjer eit, dukkar det opp her.", - "empty_column.community": "Den lokale samtiden er tom. Skriv noko offentleg å få ballen til å rulle!", + "empty_column.community": "Den lokale tidslina er tom. Skriv noko offentleg å få ballen til å rulle!", "empty_column.direct": "Du har ingen direktemeldingar enno. Når du sender eller får ei, vil ho dukka opp her.", - "empty_column.domain_blocks": "Det er ingen gøymde domene ennå.", - "empty_column.explore_statuses": "Ingenting trendar nett no. Prøv igjen seinare!", - "empty_column.favourited_statuses": "Du har ingen favoritt-tut ennå. Når du merkjer ein som favoritt, så dukkar det opp her.", + "empty_column.domain_blocks": "Det er ingen skjulte domene til no.", + "empty_column.explore_statuses": "Ingenting er i støytet nett no. Prøv igjen seinare!", + "empty_column.favourited_statuses": "Du har ingen favoritt-tut ennå. Når du merkjer eit som favoritt, så dukkar det opp her.", "empty_column.favourites": "Ingen har merkt dette tutet som favoritt enno. Når nokon gjer det, så dukkar det opp her.", "empty_column.follow_recommendations": "Det ser ikkje ut til at noko forslag kunne genererast til deg. Prøv søkjefunksjonen for å finna folk du kjenner, eller utforsk populære emneknaggar.", "empty_column.follow_requests": "Du har ingen følgjeførespurnadar ennå. Når du får ein, så vil den dukke opp her.", - "empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.", - "empty_column.home": "Heime-tidslinja di er tom! Besøk {public} eller søk for å starte og å møte andre brukarar.", + "empty_column.hashtag": "Det er ingenting i denne emneknaggen enno.", + "empty_column.home": "Heime-tidslina di er tom! Følg fleire folk for å fylle ho med innhald. {suggestions}", "empty_column.home.suggestions": "Sjå nokre forslag", "empty_column.list": "Det er ingenting i denne lista enno. Når medlemer av denne lista legg ut nye statusar, så dukkar dei opp her.", "empty_column.lists": "Du har ingen lister enno. Når du lagar ei, så dukkar ho opp her.", - "empty_column.mutes": "Du har ikkje målbunde nokon brukarar enno.", - "empty_column.notifications": "Du har ingen varsel ennå. Kommuniser med andre for å starte samtalen.", + "empty_column.mutes": "Du har ikkje målbunde nokon enno.", + "empty_column.notifications": "Du har ingen varsel enno. Kommuniser med andre for å starte samtalen.", "empty_column.public": "Det er ingenting her! Skriv noko offentleg, eller følg brukarar frå andre tenarar manuelt for å fylle det opp", - "error.unexpected_crash.explanation": "På grunn av ein feil i vår kode eller eit nettlesarkompatibilitetsproblem, kunne ikkje denne sida verte vist korrekt.", - "error.unexpected_crash.explanation_addons": "Denne siden kunne ikke vises riktig. Denne feilen er sannsynligvis forårsaket av en nettleserutvidelse eller automatiske oversettelsesverktøy.", - "error.unexpected_crash.next_steps": "Prøv å lasta inn sida på nytt. Om det ikkje hjelper så kan du framleis nytta Mastodon i ein annan nettlesar eller app.", - "error.unexpected_crash.next_steps_addons": "Prøv å skru dei av og last inn sida på nytt. Om ikkje det hjelper, kan du framleis bruka Mastodon i ein annan nettlesar eller app.", + "error.unexpected_crash.explanation": "På grunn av eit nettlesarkompatibilitetsproblem eller ein feil i koden vår, kunne ikkje denne sida bli vist slik den skal.", + "error.unexpected_crash.explanation_addons": "Denne sida kunne ikkje visast som den skulle. Feilen kjem truleg frå ei nettleserutviding eller frå automatiske omsetjingsverktøy.", + "error.unexpected_crash.next_steps": "Prøv å lasta inn sida på nytt. Hjelper ikkje dette kan du framleis nytta Mastodon i ein annan nettlesar eller app.", + "error.unexpected_crash.next_steps_addons": "Prøv å skru dei av og last inn sida på nytt. Hjelper ikkje det kan du framleis bruka Mastodon i ein annan nettlesar eller app.", "errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla", "errors.unexpected_crash.report_issue": "Rapporter problem", "explore.search_results": "Søkeresultat", "explore.suggested_follows": "For deg", "explore.title": "Utforsk", - "explore.trending_links": "Nyheiter", - "explore.trending_statuses": "Innlegg", + "explore.trending_links": "Nytt", + "explore.trending_statuses": "Tut", "explore.trending_tags": "Emneknaggar", "filter_modal.added.context_mismatch_explanation": "Denne filterkategorien gjeld ikkje i den samanhengen du har lese dette innlegget. Viss du vil at innlegget skal filtrerast i denne samanhengen òg, må du endra filteret.", "filter_modal.added.context_mismatch_title": "Konteksten passar ikkje!", "filter_modal.added.expired_explanation": "Denne filterkategorien har gått ut på dato. Du må endre best før datoen for at den skal gjelde.", "filter_modal.added.expired_title": "Filteret har gått ut på dato!", - "filter_modal.added.review_and_configure": "For å granske og konfigurere denne filterkategorien, gå til {settings_link}.", + "filter_modal.added.review_and_configure": "For å gjennomgå og konfigurere denne filterkategorien, gå til {settings_link}.", "filter_modal.added.review_and_configure_title": "Filterinnstillingar", - "filter_modal.added.settings_link": "sida med innstillingar", + "filter_modal.added.settings_link": "innstillingar", "filter_modal.added.short_explanation": "Dette innlegget er lagt til i denne filterkategorien: {title}.", "filter_modal.added.title": "Filteret er lagt til!", "filter_modal.select_filter.context_mismatch": "gjeld ikkje i denne samanhengen", - "filter_modal.select_filter.expired": "utgått", + "filter_modal.select_filter.expired": "gått ut på dato", "filter_modal.select_filter.prompt_new": "Ny kategori: {name}", "filter_modal.select_filter.search": "Søk eller opprett", "filter_modal.select_filter.subtitle": "Bruk ein eksisterande kategori eller opprett ein ny", @@ -258,7 +261,7 @@ "follow_recommendations.lead": "Innlegg frå folk du fylgjer, kjem kronologisk i heimestraumen din. Ikkje ver redd for å gjera feil, du kan enkelt avfylgja folk når som helst!", "follow_request.authorize": "Autoriser", "follow_request.reject": "Avvis", - "follow_requests.unlocked_explanation": "Sjølv om kontoen din ikkje er låst tenkte {domain} tilsette at du ville gå gjennom førespurnadar frå desse kontoane manuelt.", + "follow_requests.unlocked_explanation": "Sjølv om kontoen din ikkje er låst tenkte dei som driv {domain} at du kanskje ville gå gjennom førespurnadar frå desse kontoane manuelt.", "footer.about": "Om", "footer.directory": "Profilmappe", "footer.get_app": "Få appen", @@ -275,19 +278,19 @@ "hashtag.column_settings.select.placeholder": "Legg til emneknaggar…", "hashtag.column_settings.tag_mode.all": "Alle disse", "hashtag.column_settings.tag_mode.any": "Kva som helst av desse", - "hashtag.column_settings.tag_mode.none": "Ikkje nokon av disse", - "hashtag.column_settings.tag_toggle": "Inkluder ekstra emneknaggar for denne kolonna", + "hashtag.column_settings.tag_mode.none": "Ingen av desse", + "hashtag.column_settings.tag_toggle": "Inkluder fleire emneord for denne kolonna", "hashtag.follow": "Fylg emneknagg", "hashtag.unfollow": "Slutt å fylgje emneknaggen", - "home.column_settings.basic": "Enkelt", + "home.column_settings.basic": "Grunnleggjande", "home.column_settings.show_reblogs": "Vis framhevingar", "home.column_settings.show_replies": "Vis svar", "home.hide_announcements": "Skjul kunngjeringar", "home.show_announcements": "Vis kunngjeringar", "interaction_modal.description.favourite": "Med ein konto på Mastodon kan du favorittmerkja dette innlegget for å visa forfattaren at du set pris på det, og for å lagra det til seinare.", - "interaction_modal.description.follow": "Med ein konto på Mastodon kan du fylgje {name} for å sjå innlegga deira i din heimestraum.", - "interaction_modal.description.reblog": "Med ein konto på Mastodon kan du framheve dette innlegget for å dele det med dine eigne fylgjarar.", - "interaction_modal.description.reply": "Med ein konto på Mastodon kan du svare på dette innlegget.", + "interaction_modal.description.follow": "Med ein konto på Mastodon kan du fylgja {name} for å sjå innlegga deira i din heimestraum.", + "interaction_modal.description.reblog": "Med ein konto på Mastodon kan du framheva dette innlegget for å dela det med dine eigne fylgjarar.", + "interaction_modal.description.reply": "Med ein konto på Mastodon kan du svara på dette innlegget.", "interaction_modal.on_another_server": "På ein annan tenar", "interaction_modal.on_this_server": "På denne tenaren", "interaction_modal.other_server_instructions": "Berre kopier og lim inn denne URL-en i søkefeltet til din favorittapp eller i søkefeltet på den nettsida der du er logga inn.", @@ -299,47 +302,47 @@ "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# time} other {# timar}}", "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutt}}", - "keyboard_shortcuts.back": "for å gå tilbake", - "keyboard_shortcuts.blocked": "for å opna lista med blokkerte brukarar", - "keyboard_shortcuts.boost": "for å framheva", - "keyboard_shortcuts.column": "for å fokusera på ein status i ei av kolonnane", + "keyboard_shortcuts.back": "Gå tilbake", + "keyboard_shortcuts.blocked": "Opne lista over blokkerte brukarar", + "keyboard_shortcuts.boost": "Framhev innlegg", + "keyboard_shortcuts.column": "Fokuskolonne", "keyboard_shortcuts.compose": "for å fokusera tekstfeltet for skriving", "keyboard_shortcuts.description": "Skildring", - "keyboard_shortcuts.direct": "for å opna direktemeldingskolonnen", - "keyboard_shortcuts.down": "for å flytta seg opp og ned i lista", - "keyboard_shortcuts.enter": "for å opna status", - "keyboard_shortcuts.favourite": "for å merkja som favoritt", - "keyboard_shortcuts.favourites": "for å opna favorittlista", - "keyboard_shortcuts.federated": "for å opna den samla tidslina", + "keyboard_shortcuts.direct": "for å opna direktemeldingskolonna", + "keyboard_shortcuts.down": "Flytt nedover i lista", + "keyboard_shortcuts.enter": "Opne innlegg", + "keyboard_shortcuts.favourite": "Merk som favoritt", + "keyboard_shortcuts.favourites": "Opne favorittlista", + "keyboard_shortcuts.federated": "Opne den samla tidslina", "keyboard_shortcuts.heading": "Snøggtastar", - "keyboard_shortcuts.home": "for opna heimetidslina", + "keyboard_shortcuts.home": "Opne heimetidslina", "keyboard_shortcuts.hotkey": "Snøggtast", - "keyboard_shortcuts.legend": "for å visa denne forklåringa", - "keyboard_shortcuts.local": "for å opna den lokale tidslina", - "keyboard_shortcuts.mention": "for å nemna forfattaren", - "keyboard_shortcuts.muted": "for å opna lista over målbundne brukarar", - "keyboard_shortcuts.my_profile": "for å opna profilen din", - "keyboard_shortcuts.notifications": "for å opna varselskolonna", - "keyboard_shortcuts.open_media": "for å opna media", - "keyboard_shortcuts.pinned": "for å opna lista over festa tut", - "keyboard_shortcuts.profile": "for å opna forfattaren sin profil", - "keyboard_shortcuts.reply": "for å svara", - "keyboard_shortcuts.requests": "for å opna lista med fylgjeførespurnader", + "keyboard_shortcuts.legend": "Vis denne forklaringa", + "keyboard_shortcuts.local": "Opne lokal tidsline", + "keyboard_shortcuts.mention": "Nemn forfattaren", + "keyboard_shortcuts.muted": "Opne liste over målbundne brukarar", + "keyboard_shortcuts.my_profile": "Opne profilen din", + "keyboard_shortcuts.notifications": "Opne varselkolonna", + "keyboard_shortcuts.open_media": "Opne media", + "keyboard_shortcuts.pinned": "Opne lista over festa tut", + "keyboard_shortcuts.profile": "Opne forfattaren sin profil", + "keyboard_shortcuts.reply": "Svar på innlegg", + "keyboard_shortcuts.requests": "Opne lista med fylgjeførespurnader", "keyboard_shortcuts.search": "for å fokusera søket", - "keyboard_shortcuts.spoilers": "for å visa/gøyma CW-felt", - "keyboard_shortcuts.start": "for å opna \"kom i gang\"-feltet", - "keyboard_shortcuts.toggle_hidden": "for å visa/gøyma tekst bak innhaldsvarsel", - "keyboard_shortcuts.toggle_sensitivity": "for å visa/gøyma media", - "keyboard_shortcuts.toot": "for å laga ein heilt ny tut", + "keyboard_shortcuts.spoilers": "Vis/gøym CW-felt", + "keyboard_shortcuts.start": "Opne kolonna \"kom i gang\"", + "keyboard_shortcuts.toggle_hidden": "Vis/gøym tekst bak innhaldsvarsel", + "keyboard_shortcuts.toggle_sensitivity": "Vis/gøym media", + "keyboard_shortcuts.toot": "Lag nytt tut", "keyboard_shortcuts.unfocus": "for å fokusere vekk skrive-/søkefeltet", - "keyboard_shortcuts.up": "for å flytta seg opp på lista", - "lightbox.close": "Lukk att", + "keyboard_shortcuts.up": "Flytt opp på lista", + "lightbox.close": "Lukk", "lightbox.compress": "Komprimer biletvisningsboksen", "lightbox.expand": "Utvid biletvisningsboksen", "lightbox.next": "Neste", "lightbox.previous": "Førre", "limited_account_hint.action": "Vis profilen likevel", - "limited_account_hint.title": "Denne profilen har vorte skjult av moderatorane på {domain}.", + "limited_account_hint.title": "Denne profilen er skjult av moderatorane på {domain}.", "lists.account.add": "Legg til i liste", "lists.account.remove": "Fjern frå liste", "lists.delete": "Slett liste", @@ -348,24 +351,25 @@ "lists.new.create": "Legg til liste", "lists.new.title_placeholder": "Ny listetittel", "lists.replies_policy.followed": "Alle fylgde brukarar", - "lists.replies_policy.list": "Medlem i lista", - "lists.replies_policy.none": "Ikkje nokon", + "lists.replies_policy.list": "Medlemar i lista", + "lists.replies_policy.none": "Ingen", "lists.replies_policy.title": "Vis svar på:", - "lists.search": "Søk gjennom folk du følgjer", - "lists.subheading": "Dine lister", + "lists.search": "Søk blant folk du fylgjer", + "lists.subheading": "Listene dine", "load_pending": "{count, plural, one {# nytt element} other {# nye element}}", "loading_indicator.label": "Lastar...", - "media_gallery.toggle_visible": "Gjer synleg/usynleg", + "media_gallery.toggle_visible": "{number, plural, one {Skjul bilete} other {Skjul bilete}}", "missing_indicator.label": "Ikkje funne", "missing_indicator.sublabel": "Fann ikkje ressursen", - "mute_modal.duration": "Varighet", - "mute_modal.hide_notifications": "Gøyme varsel frå denne brukaren?", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "mute_modal.duration": "Varigheit", + "mute_modal.hide_notifications": "Skjul varsel frå denne brukaren?", "mute_modal.indefinite": "På ubestemt tid", "navigation_bar.about": "Om", "navigation_bar.blocks": "Blokkerte brukarar", "navigation_bar.bookmarks": "Bokmerke", "navigation_bar.community_timeline": "Lokal tidsline", - "navigation_bar.compose": "Lag eit nytt tut", + "navigation_bar.compose": "Lag nytt tut", "navigation_bar.direct": "Direktemeldingar", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domene", @@ -393,7 +397,7 @@ "notification.mention": "{name} nemnde deg", "notification.own_poll": "Rundspørjinga di er ferdig", "notification.poll": "Ei rundspørjing du har røysta i er ferdig", - "notification.reblog": "{name} framheva statusen din", + "notification.reblog": "{name} framheva innlegget ditt", "notification.status": "{name} la nettopp ut", "notification.update": "{name} redigerte eit innlegg", "notifications.clear": "Tøm varsel", @@ -407,13 +411,13 @@ "notifications.column_settings.filter_bar.show_bar": "Vis filterlinja", "notifications.column_settings.follow": "Nye fylgjarar:", "notifications.column_settings.follow_request": "Ny fylgjarførespurnader:", - "notifications.column_settings.mention": "Nemningar:", + "notifications.column_settings.mention": "Omtalar:", "notifications.column_settings.poll": "Røysteresultat:", "notifications.column_settings.push": "Pushvarsel", "notifications.column_settings.reblog": "Framhevingar:", "notifications.column_settings.show": "Vis i kolonne", "notifications.column_settings.sound": "Spel av lyd", - "notifications.column_settings.status": "Nye tuter:", + "notifications.column_settings.status": "Nye tut:", "notifications.column_settings.unread_notifications.category": "Uleste varsel", "notifications.column_settings.unread_notifications.highlight": "Marker uleste varsel", "notifications.column_settings.update": "Redigeringar:", @@ -421,18 +425,18 @@ "notifications.filter.boosts": "Framhevingar", "notifications.filter.favourites": "Favorittar", "notifications.filter.follows": "Fylgjer", - "notifications.filter.mentions": "Nemningar", + "notifications.filter.mentions": "Omtalar", "notifications.filter.polls": "Røysteresultat", - "notifications.filter.statuses": "Oppdateringer fra folk du følger", + "notifications.filter.statuses": "Oppdateringar frå folk du fylgjer", "notifications.grant_permission": "Gje løyve.", "notifications.group": "{count} varsel", - "notifications.mark_as_read": "Merk alle varsler som lest", + "notifications.mark_as_read": "Merk alle varsel som lest", "notifications.permission_denied": "Skrivebordsvarsel er ikkje tilgjengelege på grunn av at nettlesaren tidlegare ikkje har fått naudsynte rettar til å vise dei", "notifications.permission_denied_alert": "Sidan nettlesaren tidlegare har blitt nekta naudsynte rettar, kan ikkje skrivebordsvarsel aktiverast", "notifications.permission_required": "Skrivebordsvarsel er utilgjengelege fordi naudsynte rettar ikkje er gitt.", - "notifications_permission_banner.enable": "Skru på skrivebordsvarsler", + "notifications_permission_banner.enable": "Skru på skrivebordsvarsel", "notifications_permission_banner.how_to_control": "Aktiver skrivebordsvarsel for å få varsel når Mastodon ikkje er open. Du kan nøye bestemme kva samhandlingar som skal føre til skrivebordsvarsel gjennom {icon}-knappen ovanfor etter at varsel er aktivert.", - "notifications_permission_banner.title": "Aldri gå glipp av noe", + "notifications_permission_banner.title": "Gå aldri glipp av noko", "picture_in_picture.restore": "Legg den tilbake", "poll.closed": "Lukka", "poll.refresh": "Oppdater", @@ -440,13 +444,13 @@ "poll.total_votes": "{count, plural, one {# røyst} other {# røyster}}", "poll.vote": "Røyst", "poll.voted": "Du røysta på dette svaret", - "poll.votes": "{votes, plural, one {# stemme} other {# stemmer}}", - "poll_button.add_poll": "Start ei meiningsmåling", - "poll_button.remove_poll": "Fjern røyst", - "privacy.change": "Juster status-synlegheit", - "privacy.direct.long": "Legg berre ut for nemnde brukarar", + "poll.votes": "{votes, plural, one {# røyst} other {# røyster}}", + "poll_button.add_poll": "Lag ei rundspørjing", + "poll_button.remove_poll": "Fjern rundspørjing", + "privacy.change": "Endre personvernet på innlegg", + "privacy.direct.long": "Synleg kun for omtala brukarar", "privacy.direct.short": "Kun nemnde personar", - "privacy.private.long": "Post kun til følgjarar", + "privacy.private.long": "Kun synleg for fylgjarar", "privacy.private.short": "Kun fylgjarar", "privacy.public.long": "Synleg for alle", "privacy.public.short": "Offentleg", @@ -456,15 +460,15 @@ "privacy_policy.title": "Personvernsreglar", "refresh": "Oppdater", "regeneration_indicator.label": "Lastar…", - "regeneration_indicator.sublabel": "Heimetidslinja di vert førebudd!", + "regeneration_indicator.sublabel": "Heimetidslina di vert førebudd!", "relative_time.days": "{number}dg", "relative_time.full.days": "{number, plural, one {# dag} other {# dagar}} sidan", "relative_time.full.hours": "{number, plural, one {# time} other {# timar}} sidan", - "relative_time.full.just_now": "nettopp nå", + "relative_time.full.just_now": "nett no", "relative_time.full.minutes": "{number, plural, one {# minutt} other {# minutt}} sidan", "relative_time.full.seconds": "{number, plural, one {# sekund} other {# sekund}} sidan", "relative_time.hours": "{number}t", - "relative_time.just_now": "nå", + "relative_time.just_now": "no", "relative_time.minutes": "{number}min", "relative_time.seconds": "{number}sek", "relative_time.today": "i dag", @@ -473,7 +477,7 @@ "report.block_explanation": "Du vil ikkje kunne sjå innlegga deira. Dei vil ikkje kunne sjå innlegga dine eller fylgje deg. Dei kan sjå at dei er blokkert.", "report.categories.other": "Anna", "report.categories.spam": "Søppelpost", - "report.categories.violation": "Innhaldet bryt ei eller fleire regler for tenaren", + "report.categories.violation": "Innhaldet bryt med ein eller fleire reglar for tenaren", "report.category.subtitle": "Vel det som passar best", "report.category.title": "Fortel oss kva som skjer med denne {type}", "report.category.title_account": "profil", @@ -501,41 +505,41 @@ "report.submit": "Send inn", "report.target": "Rapporterer {target}", "report.thanks.take_action": "Dette er dei ulike alternativa for å kontrollere kva du ser på Mastodon:", - "report.thanks.take_action_actionable": "Medan vi undersøker rapporteringa, kan du utføre desse handlingane mot @{name}:", + "report.thanks.take_action_actionable": "Medan me undersøker rapporteringa, kan du utføre desse handlingane mot @{name}:", "report.thanks.title": "Vil du ikkje sjå dette?", "report.thanks.title_actionable": "Takk for at du rapporterer, me skal sjå på dette.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.unfollow": "Slutt å fylgje @{name}", + "report.unfollow_explanation": "Du fylgjer denne kontoen. Slutt å fylgje dei for ikkje lenger å sjå innlegga deira i heimestraumen din.", "report_notification.attached_statuses": "{count, plural, one {{count} innlegg} other {{count} innlegg}} lagt ved", "report_notification.categories.other": "Anna", "report_notification.categories.spam": "Søppelpost", "report_notification.categories.violation": "Regelbrot", - "report_notification.open": "Open report", + "report_notification.open": "Opne rapport", "search.placeholder": "Søk", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Søk eller lim inn URL", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst returnerer statusar du har skrive, likt, framheva eller vorte nemnd i, i tillegg til samsvarande brukarnamn, visningsnamn og emneknaggar.", "search_popout.tips.hashtag": "emneknagg", - "search_popout.tips.status": "status", + "search_popout.tips.status": "innlegg", "search_popout.tips.text": "Enkel tekst returnerer samsvarande visningsnamn, brukarnamn og emneknaggar", "search_popout.tips.user": "brukar", "search_results.accounts": "Folk", - "search_results.all": "All", + "search_results.all": "Alt", "search_results.hashtags": "Emneknaggar", "search_results.nothing_found": "Kunne ikkje finne noko for desse søkeorda", "search_results.statuses": "Tut", "search_results.statuses_fts_disabled": "På denne Matsodon-tenaren kan du ikkje søkja på tut etter innhaldet deira.", - "search_results.title": "Search for {q}", + "search_results.title": "Søk etter {q}", "search_results.total": "{count, number} {count, plural, one {treff} other {treff}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Personar som har brukt denne tenaren dei siste 30 dagane (Månadlege Aktive Brukarar)", + "server_banner.active_users": "aktive brukarar", + "server_banner.administered_by": "Administrert av:", + "server_banner.introduction": "{domain} er del av det desentraliserte sosiale nettverket drive av {mastodon}.", + "server_banner.learn_more": "Lær meir", + "server_banner.server_stats": "Tenarstatistikk:", + "sign_in_banner.create_account": "Opprett konto", + "sign_in_banner.sign_in": "Logg inn", + "sign_in_banner.text": "Logg inn for å fylgje profiler eller emneknaggar, markere, framheve og svare på innlegg – eller samhandle med aktivitet på denne tenaren frå kontoen din på ein annan tenar.", "status.admin_account": "Opne moderasjonsgrensesnitt for @{name}", "status.admin_status": "Opne denne statusen i moderasjonsgrensesnittet", "status.block": "Blokker @{name}", @@ -551,7 +555,7 @@ "status.edited_x_times": "Redigert {count, plural, one {{count} gong} other {{count} gonger}}", "status.embed": "Bygg inn", "status.favourite": "Favoritt", - "status.filter": "Filter this post", + "status.filter": "Filtrer dette innlegget", "status.filtered": "Filtrert", "status.hide": "Gøym innlegg", "status.history.created": "{name} oppretta {date}", @@ -572,7 +576,7 @@ "status.reblogs.empty": "Ingen har framheva dette tutet enno. Om nokon gjer, så dukkar det opp her.", "status.redraft": "Slett & skriv på nytt", "status.remove_bookmark": "Fjern bokmerke", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Svarte {name}", "status.reply": "Svar", "status.replyAll": "Svar til tråd", "status.report": "Rapporter @{name}", @@ -583,16 +587,16 @@ "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis meir", "status.show_more_all": "Vis meir for alle", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Vis original", + "status.translate": "Omset", + "status.translated_from_with": "Omsett frå {lang} ved bruk av {provider}", "status.uncached_media_warning": "Ikkje tilgjengeleg", "status.unmute_conversation": "Opphev målbinding av samtalen", "status.unpin": "Løys frå profil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.lead": "Kun innlegg på valde språk vil bli dukke opp i heimestraumen din og i listene dine etter denne endringa. For å motta innlegg på alle språk, la vere å velje nokon.", + "subscribed_languages.save": "Lagre endringar", "subscribed_languages.target": "Endre abonnerte språk for {target}", - "suggestions.dismiss": "Avslå framlegg", + "suggestions.dismiss": "Avslå forslag", "suggestions.header": "Du er kanskje interessert i…", "tabs_bar.federated_timeline": "Føderert", "tabs_bar.home": "Heim", @@ -603,7 +607,7 @@ "time_remaining.minutes": "{number, plural, one {# minutt} other {# minutt}} igjen", "time_remaining.moments": "Kort tid igjen", "time_remaining.seconds": "{number, plural, one {# sekund} other {# sekund}} igjen", - "timeline_hint.remote_resource_not_displayed": "{resource} frå andre tenarar synest ikkje.", + "timeline_hint.remote_resource_not_displayed": "{resource} frå andre tenarar blir ikkje vist.", "timeline_hint.resources.followers": "Fylgjarar", "timeline_hint.resources.follows": "Fylgjer", "timeline_hint.resources.statuses": "Eldre tut", @@ -613,25 +617,25 @@ "units.short.billion": "{count}m.ard", "units.short.million": "{count}mill", "units.short.thousand": "{count}T", - "upload_area.title": "Drag & slepp for å lasta opp", + "upload_area.title": "Dra & slepp for å lasta opp", "upload_button.label": "Legg til medium", "upload_error.limit": "Du har gått over opplastingsgrensa.", - "upload_error.poll": "Filopplasting ikkje tillate med meiningsmålingar.", - "upload_form.audio_description": "Grei ut for folk med nedsett høyrsel", - "upload_form.description": "Skildr for synshemja", - "upload_form.description_missing": "Inga beskriving er lagt til", + "upload_error.poll": "Filopplasting er ikkje lov for rundspørjingar.", + "upload_form.audio_description": "Skildre for dei med nedsett høyrsel", + "upload_form.description": "Skildre for dei om har redusert syn", + "upload_form.description_missing": "Inga skildring er lagt til", "upload_form.edit": "Rediger", "upload_form.thumbnail": "Bytt miniatyrbilete", "upload_form.undo": "Slett", - "upload_form.video_description": "Greit ut for folk med nedsett høyrsel eller syn", + "upload_form.video_description": "Skildre for dei med nedsett høyrsel eller redusert syn", "upload_modal.analyzing_picture": "Analyserer bilete…", "upload_modal.apply": "Bruk", "upload_modal.applying": "Utfører…", "upload_modal.choose_image": "Vel bilete", "upload_modal.description_placeholder": "Ein rask brun rev hoppar over den late hunden", - "upload_modal.detect_text": "Gjenkjenn tekst i biletet", + "upload_modal.detect_text": "Oppdag tekst i biletet", "upload_modal.edit_media": "Rediger medium", - "upload_modal.hint": "Klikk og dra sirkelen på førehandsvisninga for å velge fokuspunktet som alltid vil vere synleg på alle miniatyrbileta.", + "upload_modal.hint": "Klikk og dra sirkelen på førehandsvisninga for å velja eit fokuspunkt som alltid vil vera synleg på miniatyrbilete.", "upload_modal.preparing_ocr": "Førebur OCR…", "upload_modal.preview_label": "Førehandsvis ({ratio})", "upload_progress.label": "Lastar opp...", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 558f178edd..f83812fda7 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} som følges} other {{counter} som følges}}", "account.follows.empty": "Denne brukeren følger ikke noen enda.", "account.follows_you": "Følger deg", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Skjul fremhevinger fra @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.", "account.media": "Media", "account.mention": "Nevn @{name}", - "account.moved_to": "{name} har flyttet til:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Demp @{name}", "account.mute_notifications": "Ignorer varsler fra @{name}", "account.muted": "Dempet", @@ -181,6 +182,8 @@ "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nylig aktiv", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Veksle synlighet", "missing_indicator.label": "Ikke funnet", "missing_indicator.sublabel": "Denne ressursen ble ikke funnet", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Varighet", "mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?", "mute_modal.indefinite": "På ubestemt tid", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index b9943a10fd..b00db0d32d 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", + "about.blocks": "Servidors moderats", + "about.contact": "Contacte :", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.comment": "Rason", + "about.domain_blocks.domain": "Domeni", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Severitat", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.title": "Limitats", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.title": "Suspenduts", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Règlas del servidor", "account.account_note_header": "Nòta", "account.add_or_remove_from_list": "Ajustar o tirar de las listas", "account.badges.bot": "Robòt", @@ -28,8 +28,8 @@ "account.edit_profile": "Modificar lo perfil", "account.enable_notifications": "M’avisar quand @{name} publica quicòm", "account.endorse": "Mostrar pel perfil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Darrièra publicacion lo {date}", + "account.featured_tags.last_status_never": "Cap de publicacion", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sègre", "account.followers": "Seguidors", @@ -39,14 +39,15 @@ "account.following_counter": "{count, plural, one {{counter} Abonaments} other {{counter} Abonaments}}", "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.", "account.follows_you": "Vos sèc", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Rescondre los partatges de @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Venguèt lo", + "account.languages": "Modificar las lengas seguidas", "account.link_verified_on": "La proprietat d’aqueste ligam foguèt verificada lo {date}", "account.locked_info": "L’estatut de privacitat del compte es configurat sus clavat. Lo proprietari causís qual pòt sègre son compte.", "account.media": "Mèdias", "account.mention": "Mencionar @{name}", - "account.moved_to": "{name} a mudat los catons a :", + "account.moved_to": "{name} indiquèt que son nòu compte es ara :", "account.mute": "Rescondre @{name}", "account.mute_notifications": "Rescondre las notificacions de @{name}", "account.muted": "Mes en silenci", @@ -77,16 +78,16 @@ "alert.unexpected.title": "Ops !", "announcement.announcement": "Anóncia", "attachments_list.unprocessed": "(pas tractat)", - "audio.hide": "Hide audio", + "audio.hide": "Amagar àudio", "autosuggest_hashtag.per_week": "{count} per setmana", "boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven", - "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.copy_stacktrace": "Copiar senhalament d’avaria", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "Oh non !", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Error de ret", "bundle_column_error.retry": "Tornar ensajar", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Tornar a l’acuèlh", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tampar", @@ -96,8 +97,8 @@ "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations_modal.title": "S’inscriure a Mastodon", + "column.about": "A prepaus", "column.blocks": "Personas blocadas", "column.bookmarks": "Marcadors", "column.community": "Flux public local", @@ -175,14 +176,16 @@ "conversation.mark_as_read": "Marcar coma legida", "conversation.open": "Veire la conversacion", "conversation.with": "Amb {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiat", + "copypaste.copy": "Copiar", "directory.federated": "Del fediverse conegut", "directory.local": "Solament de {domain}", "directory.new_arrivals": "Nòus-venguts", "directory.recently_active": "Actius fa res", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "Ignorar", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -242,30 +245,30 @@ "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.review_and_configure_title": "Paramètres del filtre", + "filter_modal.added.settings_link": "page de parametratge", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", + "filter_modal.added.title": "Filtre apondut !", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", "filter_modal.select_filter.prompt_new": "New category: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.title": "Filtrar aquesta publicacion", + "filter_modal.title.status": "Filtrar una publicacion", "follow_recommendations.done": "Acabat", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", "follow_request.authorize": "Acceptar", "follow_request.reject": "Regetar", "follow_requests.unlocked_explanation": "Encara que vòstre compte siasque pas verrolhat, la còla de {domain} pensèt que volriatz benlèu repassar las demandas d’abonament d’aquestes comptes.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "A prepaus", + "footer.directory": "Annuari de perfils", + "footer.get_app": "Obténer l’aplicacion", + "footer.invite": "Convidar de monde", + "footer.keyboard_shortcuts": "Acorchis clavièr", + "footer.privacy_policy": "Politica de confidencialitat", + "footer.source_code": "Veire lo còdi font", "generic.saved": "Enregistrat", "getting_started.heading": "Per començar", "hashtag.column_header.tag_mode.all": "e {additional}", @@ -277,8 +280,8 @@ "hashtag.column_settings.tag_mode.any": "Un d’aquestes", "hashtag.column_settings.tag_mode.none": "Cap d’aquestes", "hashtag.column_settings.tag_toggle": "Inclure las etiquetas suplementàrias dins aquesta colomna", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Sègre l’etiqueta", + "hashtag.unfollow": "Quitar de sègre l’etiqueta", "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Mostrar los partatges", "home.column_settings.show_replies": "Mostrar las responsas", @@ -288,14 +291,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "Sus un autre servidor", + "interaction_modal.on_this_server": "Sus aqueste servidor", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.follow": "Sègre {name}", + "interaction_modal.title.reblog": "Partejar la publicacion de {name}", + "interaction_modal.title.reply": "Respondre a la publicacion de {name}", "intervals.full.days": "{number, plural, one {# jorn} other {# jorns}}", "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}", "intervals.full.minutes": "{number, plural, one {# minuta} other {# minutas}}", @@ -358,10 +361,11 @@ "media_gallery.toggle_visible": "Modificar la visibilitat", "missing_indicator.label": "Pas trobat", "missing_indicator.sublabel": "Aquesta ressorsa es pas estada trobada", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Durada", "mute_modal.hide_notifications": "Rescondre las notificacions d’aquesta persona ?", "mute_modal.indefinite": "Cap de data de fin", - "navigation_bar.about": "About", + "navigation_bar.about": "A prepaus", "navigation_bar.blocks": "Personas blocadas", "navigation_bar.bookmarks": "Marcadors", "navigation_bar.community_timeline": "Flux public local", @@ -382,7 +386,7 @@ "navigation_bar.pins": "Tuts penjats", "navigation_bar.preferences": "Preferéncias", "navigation_bar.public_timeline": "Flux public global", - "navigation_bar.search": "Search", + "navigation_bar.search": "Recercar", "navigation_bar.security": "Seguretat", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} reported {target}", @@ -416,7 +420,7 @@ "notifications.column_settings.status": "Tuts novèls :", "notifications.column_settings.unread_notifications.category": "Notificacions pas legidas", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Modificacions :", "notifications.filter.all": "Totas", "notifications.filter.boosts": "Partages", "notifications.filter.favourites": "Favorits", @@ -452,8 +456,8 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Pas-listat", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Darrièra actualizacion {date}", + "privacy_policy.title": "Politica de confidencialitat", "refresh": "Actualizar", "regeneration_indicator.label": "Cargament…", "regeneration_indicator.sublabel": "Sèm a preparar vòstre flux d’acuèlh !", @@ -488,7 +492,7 @@ "report.placeholder": "Comentaris addicionals", "report.reasons.dislike": "M’agrada pas", "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", + "report.reasons.other": "Es quicòm mai", "report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.spam": "It's spam", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", @@ -506,13 +510,13 @@ "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", "report.unfollow": "Quitar de sègre {name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", + "report_notification.attached_statuses": "{count, plural, one {{count} publicacion junta} other {{count} publicacions juntas}}", + "report_notification.categories.other": "Autre", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", "report_notification.open": "Open report", "search.placeholder": "Recercar", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Recercar o picar una URL", "search_popout.search_format": "Format recèrca avançada", "search_popout.tips.full_text": "Un tèxte simple que tòrna los estatuts qu’avètz escriches, mes en favorits, partejats, o ont sètz mencionat, e tanben los noms d’utilizaires, escais-noms e etiquetas que correspondonas.", "search_popout.tips.hashtag": "etiqueta", @@ -525,16 +529,16 @@ "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tuts", "search_results.statuses_fts_disabled": "La recèrca de tuts per lor contengut es pas activada sus aqueste servidor Mastodon.", - "search_results.title": "Search for {q}", + "search_results.title": "Recèrca : {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.active_users": "utilizaires actius", + "server_banner.administered_by": "Administrat per :", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "server_banner.learn_more": "Ne saber mai", + "server_banner.server_stats": "Estatisticas del servidor :", + "sign_in_banner.create_account": "Crear un compte", + "sign_in_banner.sign_in": "Se marcar", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Dobrir l’interfàcia de moderacion per @{name}", "status.admin_status": "Dobrir aqueste estatut dins l’interfàcia de moderacion", @@ -547,13 +551,13 @@ "status.detailed_status": "Vista detalhada de la convèrsa", "status.direct": "Messatge per @{name}", "status.edit": "Modificar", - "status.edited": "Edited {date}", + "status.edited": "Modificat {date}", "status.edited_x_times": "Modificat {count, plural, un {{count} còp} other {{count} còps}}", "status.embed": "Embarcar", "status.favourite": "Apondre als favorits", - "status.filter": "Filter this post", + "status.filter": "Filtrar aquesta publicacion", "status.filtered": "Filtrat", - "status.hide": "Hide toot", + "status.hide": "Amagar aqueste tut", "status.history.created": "{name} o creèt lo {date}", "status.history.edited": "{name} o modifiquèt lo {date}", "status.load_more": "Cargar mai", @@ -572,26 +576,26 @@ "status.reblogs.empty": "Degun a pas encara partejat aqueste tut. Quand qualqu’un o farà, apareisserà aquí.", "status.redraft": "Escafar e tornar formular", "status.remove_bookmark": "Suprimir lo marcador", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Respondut a {name}", "status.reply": "Respondre", "status.replyAll": "Respondre a la conversacion", "status.report": "Senhalar @{name}", "status.sensitive_warning": "Contengut sensible", "status.share": "Partejar", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Afichar de tot biais", "status.show_less": "Tornar plegar", "status.show_less_all": "Los tornar plegar totes", "status.show_more": "Desplegar", "status.show_more_all": "Los desplegar totes", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Veire l’original", + "status.translate": "Traduire", + "status.translated_from_with": "Traduch del {lang} amb {provider}", "status.uncached_media_warning": "Pas disponible", "status.unmute_conversation": "Tornar mostrar la conversacion", "status.unpin": "Tirar del perfil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Sonque las publicacions dins las lengas seleccionadas apreissaràn dins vòstre acuèlh e linha cronologica aprèp aqueste cambiament. Seleccionatz pas res per recebre las publicacions en quina lenga que siá.", + "subscribed_languages.save": "Salvar los cambiaments", + "subscribed_languages.target": "Lengas d’abonaments cambiadas per {target}", "suggestions.dismiss": "Regetar la suggestion", "suggestions.header": "Vos poiriá interessar…", "tabs_bar.federated_timeline": "Flux public global", @@ -607,7 +611,7 @@ "timeline_hint.resources.followers": "Seguidors", "timeline_hint.resources.follows": "Abonaments", "timeline_hint.resources.statuses": "Tuts mai ancians", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} dins los darrièrs {days, plural, one {jorn} other {{days} jorns}}", "trends.trending_now": "Tendéncia del moment", "ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Mastodon.", "units.short.billion": "{count}Md", @@ -635,7 +639,7 @@ "upload_modal.preparing_ocr": "Preparacion de la ROC…", "upload_modal.preview_label": "Apercebut ({ratio})", "upload_progress.label": "Mandadís…", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Tractament…", "video.close": "Tampar la vidèo", "video.download": "Telecargar lo fichièr", "video.exit_fullscreen": "Sortir plen ecran", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 0ee86d80cf..d90153a95f 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 172281e9d9..46efcec03d 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} obserwowany} few {{counter} obserwowanych} many {{counter} obserwowanych} other {{counter} obserwowanych}}", "account.follows.empty": "Ten użytkownik nie obserwuje jeszcze nikogo.", "account.follows_you": "Obserwuje Cię", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Ukryj podbicia od @{name}", "account.joined_short": "Dołączył(a)", "account.languages": "Zmień subskrybowane języki", @@ -46,7 +47,7 @@ "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go obserwować.", "account.media": "Zawartość multimedialna", "account.mention": "Wspomnij o @{name}", - "account.moved_to": "{name} przeniósł(-osła) się do:", + "account.moved_to": "{name} jako swoje nowe konto wskazał/a:", "account.mute": "Wycisz @{name}", "account.mute_notifications": "Wycisz powiadomienia o @{name}", "account.muted": "Wyciszony", @@ -181,6 +182,8 @@ "directory.local": "Tylko z {domain}", "directory.new_arrivals": "Nowości", "directory.recently_active": "Ostatnio aktywne", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "To są najnowsze wpisy publiczne od osób, które mają założone konta na {domain}.", "dismissable_banner.dismiss": "Schowaj", "dismissable_banner.explore_links": "Te wiadomości obecnie są komentowane przez osoby z tego serwera i pozostałych w zdecentralizowanej sieci.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Przełącz widoczność", "missing_indicator.label": "Nie znaleziono", "missing_indicator.sublabel": "Nie można odnaleźć tego zasobu", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Czas", "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "mute_modal.indefinite": "Nieokreślony", @@ -388,7 +392,7 @@ "notification.admin.report": "{name} zgłosił {target}", "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", - "notification.follow": "{name} zaobserwował(a) Cię", + "notification.follow": "{name} zaczął(-ęła) Cię obserwować", "notification.follow_request": "{name} poprosił(a) o możliwość obserwacji Cię", "notification.mention": "{name} wspomniał(a) o tobie", "notification.own_poll": "Twoje głosowanie zakończyło się", @@ -529,7 +533,7 @@ "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} other {wyników}}", "server_banner.about_active_users": "Osoby korzystające z tego serwera w ciągu ostatnich 30 dni (Miesięcznie aktywni użytkownicy)", "server_banner.active_users": "aktywni użytkownicy", - "server_banner.administered_by": "Zarzdzane przez:", + "server_banner.administered_by": "Zarządzana przez:", "server_banner.introduction": "{domain} jest częścią zdecentralizowanej sieci społecznościowej wspieranej przez {mastodon}.", "server_banner.learn_more": "Dowiedz się więcej", "server_banner.server_stats": "Statystyki serwera:", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 7e1610e629..b8164fca77 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -8,10 +8,10 @@ "about.domain_blocks.severity": "Gravidade", "about.domain_blocks.silenced.explanation": "Você geralmente não verá perfis e conteúdo deste servidor, a menos que você o procure explicitamente ou opte por seguir.", "about.domain_blocks.silenced.title": "Limitado", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.domain_blocks.suspended.explanation": "Nenhum dado desse servidor será processado, armazenado ou trocado, impossibilitando qualquer interação ou comunicação com os usuários deste servidor.", + "about.domain_blocks.suspended.title": "Suspenso", + "about.not_available": "Esta informação não foi disponibilizada neste servidor.", + "about.powered_by": "Redes sociais descentralizadas alimentadas por {mastodon}", "about.rules": "Regras do servidor", "account.account_note_header": "Nota", "account.add_or_remove_from_list": "Adicionar ou remover de listas", @@ -21,15 +21,15 @@ "account.block_domain": "Bloquear domínio {domain}", "account.blocked": "Bloqueado", "account.browse_more_on_origin_server": "Veja mais no perfil original", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Cancelar solicitação para seguir", "account.direct": "Enviar toot direto para @{name}", "account.disable_notifications": "Cancelar notificações de @{name}", "account.domain_blocked": "Domínio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar novos toots de @{name}", "account.endorse": "Recomendar", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Último post em {date}", + "account.featured_tags.last_status_never": "Não há postagens", "account.featured_tags.title": "Marcadores em destaque de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {segue {counter}} other {segue {counter}}}", "account.follows.empty": "Nada aqui.", "account.follows_you": "te segue", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Ocultar boosts de @{name}", "account.joined_short": "Entrou", "account.languages": "Mudar idiomas inscritos", @@ -46,7 +47,7 @@ "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.", "account.media": "Mídia", "account.mention": "Mencionar @{name}", - "account.moved_to": "{name} se mudou para:", + "account.moved_to": "{name} indicou que sua nova conta agora é:", "account.mute": "Silenciar @{name}", "account.mute_notifications": "Ocultar notificações de @{name}", "account.muted": "Silenciado", @@ -181,6 +182,8 @@ "directory.local": "Somente de {domain}", "directory.new_arrivals": "Acabaram de chegar", "directory.recently_active": "Ativos recentemente", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes das pessoas cujas contas são hospedadas por {domain}.", "dismissable_banner.dismiss": "Dispensar", "dismissable_banner.explore_links": "Estas novas histórias estão sendo contadas por pessoas nesta e em outras instâncias da rede descentralizada no momento.", @@ -238,8 +241,8 @@ "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", "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": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", + "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á até {settings_link}.", "filter_modal.added.review_and_configure_title": "Configurações de filtro", @@ -250,9 +253,9 @@ "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 an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova", + "filter_modal.select_filter.title": "Filtrar esta publicação", + "filter_modal.title.status": "Filtrar uma postagem", "follow_recommendations.done": "Salvar", "follow_recommendations.heading": "Siga pessoas que você gostaria de acompanhar! Aqui estão algumas sugestões.", "follow_recommendations.lead": "Toots de pessoas que você segue aparecerão em ordem cronológica na página inicial. Não tenha medo de cometer erros, você pode facilmente deixar de seguir a qualquer momento!", @@ -260,7 +263,7 @@ "follow_request.reject": "Recusar", "follow_requests.unlocked_explanation": "Apesar de seu perfil não ser trancado, {domain} exige que você revise a solicitação para te seguir destes perfis manualmente.", "footer.about": "Sobre", - "footer.directory": "Profiles directory", + "footer.directory": "Diretório de perfis", "footer.get_app": "Baixe o app", "footer.invite": "Convidar pessoas", "footer.keyboard_shortcuts": "Atalhos de teclado", @@ -277,24 +280,24 @@ "hashtag.column_settings.tag_mode.any": "Qualquer uma", "hashtag.column_settings.tag_mode.none": "Nenhuma", "hashtag.column_settings.tag_toggle": "Adicionar mais hashtags aqui", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Seguir “hashtag”", + "hashtag.unfollow": "Parar de seguir “hashtag”", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", "home.hide_announcements": "Ocultar comunicados", "home.show_announcements": "Mostrar comunicados", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.favourite": "Com uma conta no Mastodon, você pode favoritar este post para que o autor saiba que você gostou e salvá-lo para mais ler mais tarde.", + "interaction_modal.description.follow": "Com uma conta no Mastodon, você pode seguir {name} para receber publicações no seu feed inicial.", + "interaction_modal.description.reblog": "Com uma conta no Mastodon, você pode impulsionar este post para compartilhá-lo com seus próprios seguidores.", + "interaction_modal.description.reply": "Com uma conta no Mastodon, você pode responder este post.", "interaction_modal.on_another_server": "Em um servidor diferente", "interaction_modal.on_this_server": "Neste servidor", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.other_server_instructions": "Simplesmente copie e cole este URL na barra de pesquisa do seu aplicativo favorito ou na interface web onde você está autenticado.", + "interaction_modal.preamble": "Sendo o Mastodon descentralizado, você pode usar sua conta existente em outro servidor Mastodon ou plataforma compatível se você não tiver uma conta neste servidor.", + "interaction_modal.title.favourite": "Favoritar post de {name}", "interaction_modal.title.follow": "Seguir {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", + "interaction_modal.title.reblog": "Impulsionar post de {name}", "interaction_modal.title.reply": "Responder à publicação de {name}", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Ocultar mídia} other {Ocultar mídias}}", "missing_indicator.label": "Não encontrado", "missing_indicator.sublabel": "Recurso não encontrado", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duração", "mute_modal.hide_notifications": "Ocultar notificações deste usuário?", "mute_modal.indefinite": "Indefinido", @@ -384,7 +388,7 @@ "navigation_bar.public_timeline": "Linha global", "navigation_bar.search": "Buscar", "navigation_bar.security": "Segurança", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Você precisa se autenticar para acessar este recurso.", "notification.admin.report": "{name} denunciou {target}", "notification.admin.sign_up": "{name} se inscreveu", "notification.favourite": "{name} favoritou teu toot", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 48b705e088..a1d09b8998 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {A seguir {counter}}}", "account.follows.empty": "Este utilizador ainda não segue ninguém.", "account.follows_you": "Segue-te", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Esconder partilhas de @{name}", "account.joined_short": "Juntou-se a", "account.languages": "Alterar idiomas subscritos", @@ -46,7 +47,7 @@ "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.", "account.media": "Média", "account.mention": "Mencionar @{name}", - "account.moved_to": "{name} mudou a sua conta para:", + "account.moved_to": "{name} indicou que a sua nova conta é agora:", "account.mute": "Silenciar @{name}", "account.mute_notifications": "Silenciar notificações de @{name}", "account.muted": "Silenciada", @@ -181,6 +182,8 @@ "directory.local": "Apenas de {domain}", "directory.new_arrivals": "Recém chegados", "directory.recently_active": "Com actividade recente", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes de pessoas cujas contas são hospedadas por {domain}.", "dismissable_banner.dismiss": "Descartar", "dismissable_banner.explore_links": "Essas histórias de notícias estão, no momento, a ser faladas por pessoas neste e noutros servidores da rede descentralizada.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Alternar visibilidade", "missing_indicator.label": "Não encontrado", "missing_indicator.sublabel": "Este recurso não foi encontrado", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duração", "mute_modal.hide_notifications": "Esconder notificações deste utilizador?", "mute_modal.indefinite": "Indefinidamente", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index d3531da428..7808a45931 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Abonament} few {{counter} Abonamente} other {{counter} Abonamente}}", "account.follows.empty": "Momentan acest utilizator nu are niciun abonament.", "account.follows_you": "Este abonat la tine", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", "account.joined_short": "Înscris", "account.languages": "Schimbă limbile abonate", @@ -46,7 +47,7 @@ "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.", "account.media": "Media", "account.mention": "Menționează pe @{name}", - "account.moved_to": "{name} a fost mutat la:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Ignoră pe @{name}", "account.mute_notifications": "Ignoră notificările de la @{name}", "account.muted": "Ignorat", @@ -181,6 +182,8 @@ "directory.local": "Doar din {domain}", "directory.new_arrivals": "Înscriși recent", "directory.recently_active": "Activi recent", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Ascunde imaginea} other {Ascunde imaginile}}", "missing_indicator.label": "Nu a fost găsit", "missing_indicator.sublabel": "Această resursă nu a putut fi găsită", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Durata", "mute_modal.hide_notifications": "Ascunde notificările de la acest utilizator?", "mute_modal.indefinite": "Nedeterminat", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 90ecd65d45..9a9933c179 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -5,7 +5,7 @@ "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домен", "about.domain_blocks.preamble": "Mastodon обычно позволяет просматривать содержимое и взаимодействовать с другими пользователями любых серверов в Федиверсе. Вот исключения, сделанные конкретно для этого сервера.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Ключ:.\"о. Домен_блокирует. Серьезность\"\n-> о компании. Домен _блокирует. строгость", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} подписка} many {{counter} подписок} other {{counter} подписки}}", "account.follows.empty": "Этот пользователь пока ни на кого не подписался.", "account.follows_you": "Подписан(а) на вас", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Скрыть продвижения от @{name}", "account.joined_short": "Joined", "account.languages": "Изменить языки подписки", @@ -46,7 +47,7 @@ "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.", "account.media": "Медиа", "account.mention": "Упомянуть @{name}", - "account.moved_to": "Ищите {name} здесь:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Игнорировать @{name}", "account.mute_notifications": "Игнорировать уведомления от @{name}", "account.muted": "Игнорируется", @@ -181,6 +182,8 @@ "directory.local": "Только с {domain}", "directory.new_arrivals": "Новички", "directory.recently_active": "Недавно активные", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Это самые последние публичные сообщения от людей, чьи учетные записи размещены в {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -339,7 +342,7 @@ "lightbox.next": "Далее", "lightbox.previous": "Назад", "limited_account_hint.action": "Все равно показать профиль", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "Этот профиль был скрыт модераторами {domain}.", "lists.account.add": "Добавить в список", "lists.account.remove": "Убрать из списка", "lists.delete": "Удалить список", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Показать/скрыть {number, plural, =1 {изображение} other {изображения}}", "missing_indicator.label": "Не найдено", "missing_indicator.sublabel": "Запрашиваемый ресурс не найден", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Продолжительность", "mute_modal.hide_notifications": "Скрыть уведомления от этого пользователя?", "mute_modal.indefinite": "Не определена", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 06aac9ecef..d81dd7cdd1 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} अनुसृतः} two {{counter} अनुसृतौ} other {{counter} अनुसृताः}}", "account.follows.empty": "न कोऽप्यनुसृतो वर्तते", "account.follows_you": "त्वामनुसरति", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name} मित्रस्य प्रकाशनानि छिद्यन्ताम्", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "एतस्या लेखायाः गुह्यता \"निषिद्ध\"इति वर्तते । स्वामी स्वयञ्चिनोति कोऽनुसर्ता भवितुमर्हतीति ।", "account.media": "सामग्री", "account.mention": "उल्लिख्यताम् @{name}", - "account.moved_to": "{name} अत्र प्रस्थापितम्:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "निःशब्दम् @{name}", "account.mute_notifications": "@{name} सूचनाः निष्क्रियन्ताम्", "account.muted": "निःशब्दम्", @@ -181,6 +182,8 @@ "directory.local": "{domain} प्रदेशात्केवलम्", "directory.new_arrivals": "नवामगमाः", "directory.recently_active": "नातिपूर्वं सक्रियः", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 255ebe131d..36b6158cd2 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {Sighende a {counter}} other {Sighende a {counter}}}", "account.follows.empty": "Custa persone non sighit ancora a nemos.", "account.follows_you": "Ti sighit", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Cua is cumpartziduras de @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "S'istadu de riservadesa de custu contu est istadu cunfiguradu comente blocadu. Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.", "account.media": "Cuntenutu multimediale", "account.mention": "Mèntova a @{name}", - "account.moved_to": "{name} at cambiadu a:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Pone a @{name} a sa muda", "account.mute_notifications": "Disativa is notìficas de @{name}", "account.muted": "A sa muda", @@ -181,6 +182,8 @@ "directory.local": "Isceti dae {domain}", "directory.new_arrivals": "Arribos noos", "directory.recently_active": "Cun atividade dae pagu", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Cua {number, plural, one {immàgine} other {immàgines}}", "missing_indicator.label": "Perunu resurtadu", "missing_indicator.sublabel": "Resursa no agatada", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Durada", "mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?", "mute_modal.indefinite": "Indefinida", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 93032eae55..f775226244 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {අනුගාමිකයින් {counter}} other {අනුගාමිකයින් {counter}}}", "account.follows.empty": "තවමත් කිසිවෙක් අනුගමනය නොකරයි.", "account.follows_you": "ඔබව අනුගමනය කරයි", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name}සිට බූස්ට් සඟවන්න", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "මෙම ගිණුමේ රහස්‍යතා තත්ත්වය අගුලු දමා ඇත. හිමිකරු ඔවුන් අනුගමනය කළ හැක්කේ කාටදැයි හස්තීයව සමාලෝචනය කරයි.", "account.media": "මාධ්‍යය", "account.mention": "@{name} සැඳහුම", - "account.moved_to": "{name} වෙත මාරු වී ඇත:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "@{name} නිහඬ කරන්න", "account.mute_notifications": "@{name}වෙතින් දැනුම්දීම් නිහඬ කරන්න", "account.muted": "නිහඬ කළා", @@ -181,6 +182,8 @@ "directory.local": "{domain} වෙතින් පමණි", "directory.new_arrivals": "නව පැමිණීම්", "directory.recently_active": "මෑත දී සක්‍රියයි", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {රූපය සඟවන්න} other {පින්තූර සඟවන්න}}", "missing_indicator.label": "හමු නොවිණි", "missing_indicator.sublabel": "මෙම සම්පත හමු නොවිණි", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "පරාසය", "mute_modal.hide_notifications": "මෙම පරිශීලකයාගෙන් දැනුම්දීම් සඟවන්නද?", "mute_modal.indefinite": "අවිනිශ්චිත", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 36d8c27c7f..f874b75221 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.", "account.follows_you": "Nasleduje ťa", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Skry vyzdvihnutia od @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.", "account.media": "Médiá", "account.mention": "Spomeň @{name}", - "account.moved_to": "{name} sa presunul/a na:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Nevšímaj si @{name}", "account.mute_notifications": "Stĺm oboznámenia od @{name}", "account.muted": "Nevšímaný/á", @@ -181,6 +182,8 @@ "directory.local": "Iba z {domain}", "directory.new_arrivals": "Nové príchody", "directory.recently_active": "Nedávno aktívne", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Zapni/Vypni viditeľnosť", "missing_indicator.label": "Nenájdené", "missing_indicator.sublabel": "Tento zdroj sa ešte nepodarilo nájsť", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Trvanie", "mute_modal.hide_notifications": "Skry oznámenia od tohto používateľa?", "mute_modal.indefinite": "Bez obmedzenia", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 77ede79d2f..88b32ea78e 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {sledi {count} osebi} two {sledi {count} osebama} few {sledi {count} osebam} other {sledi {count} osebam}}", "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Vam sledi", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Skrij izpostavitve od @{name}", "account.joined_short": "Pridružil/a", "account.languages": "Spremeni naročene jezike", @@ -46,7 +47,7 @@ "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.", "account.media": "Mediji", "account.mention": "Omeni @{name}", - "account.moved_to": "{name} se je premaknil na:", + "account.moved_to": "{name} nakazuje, da ima zdaj nov račun:", "account.mute": "Utišaj @{name}", "account.mute_notifications": "Utišaj obvestila od @{name}", "account.muted": "Utišan", @@ -54,18 +55,18 @@ "account.posts_with_replies": "Objave in odgovori", "account.report": "Prijavi @{name}", "account.requested": "Čakanje na odobritev. Kliknite, da prekličete prošnjo za sledenje", - "account.share": "Delite profil osebe @{name}", + "account.share": "Deli profil osebe @{name}", "account.show_reblogs": "Pokaži izpostavitve osebe @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "account.statuses_counter": "{count, plural, one {{counter} tut} two {{counter} tuta} few {{counter} tuti} other {{counter} tutov}}", "account.unblock": "Odblokiraj @{name}", - "account.unblock_domain": "Razkrij {domain}", + "account.unblock_domain": "Odblokiraj domeno {domain}", "account.unblock_short": "Odblokiraj", "account.unendorse": "Ne vključi v profil", "account.unfollow": "Prenehaj slediti", "account.unmute": "Odtišaj @{name}", "account.unmute_notifications": "Vklopi obvestila od @{name}", "account.unmute_short": "Odtišaj", - "account_note.placeholder": "Click to add a note", + "account_note.placeholder": "Kliknite za dodajanje opombe", "admin.dashboard.daily_retention": "Mera ohranjanja uporabnikov po dnevih od registracije", "admin.dashboard.monthly_retention": "Mera ohranjanja uporabnikov po mesecih od registracije", "admin.dashboard.retention.average": "Povprečje", @@ -74,8 +75,8 @@ "alert.rate_limited.message": "Poskusite znova čez {retry_time, time, medium}.", "alert.rate_limited.title": "Hitrost omejena", "alert.unexpected.message": "Zgodila se je nepričakovana napaka.", - "alert.unexpected.title": "Uups!", - "announcement.announcement": "Objava", + "alert.unexpected.title": "Ojoj!", + "announcement.announcement": "Obvestilo", "attachments_list.unprocessed": "(neobdelano)", "audio.hide": "Skrij zvok", "autosuggest_hashtag.per_week": "{count} na teden", @@ -84,14 +85,14 @@ "bundle_column_error.error.body": "Zahtevane strani ni mogoče upodobiti. Vzrok težave je morda hrošč v naši kodi ali pa nezdružljivost z brskalnikom.", "bundle_column_error.error.title": "Oh, ne!", "bundle_column_error.network.body": "Pri poskusu nalaganja te strani je prišlo do napake. Vzrok je lahko začasna težava z vašo internetno povezavo ali s tem strežnikom.", - "bundle_column_error.network.title": "Napaka omrežja", - "bundle_column_error.retry": "Poskusi ponovno", + "bundle_column_error.network.title": "Napaka v omrežju", + "bundle_column_error.retry": "Poskusi znova", "bundle_column_error.return": "Nazaj domov", "bundle_column_error.routing.body": "Zahtevane strani ni mogoče najti. Ali ste prepričani, da je naslov URL v naslovni vrstici pravilen?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zapri", "bundle_modal_error.message": "Med nalaganjem te komponente je prišlo do napake.", - "bundle_modal_error.retry": "Poskusi ponovno", + "bundle_modal_error.retry": "Poskusi znova", "closed_registrations.other_server_instructions": "Ker je Mastodon decentraliziran, lahko ustvarite račun na drugem strežniku in ste še vedno v interakciji s tem.", "closed_registrations_modal.description": "Odpiranje računa na {domain} trenutno ni možno, upoštevajte pa, da ne potrebujete računa prav na {domain}, da bi uporabljali Mastodon.", "closed_registrations_modal.find_another_server": "Najdi drug strežnik", @@ -100,10 +101,10 @@ "column.about": "O programu", "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", - "column.community": "Lokalna časovnica", + "column.community": "Krajevna časovnica", "column.direct": "Neposredna sporočila", "column.directory": "Prebrskaj profile", - "column.domain_blocks": "Skrite domene", + "column.domain_blocks": "Blokirane domene", "column.favourites": "Priljubljene", "column.follow_requests": "Sledi prošnjam", "column.home": "Domov", @@ -117,7 +118,7 @@ "column_header.moveLeft_settings": "Premakni stolpec na levo", "column_header.moveRight_settings": "Premakni stolpec na desno", "column_header.pin": "Pripni", - "column_header.show_settings": "Prikaži nastavitve", + "column_header.show_settings": "Pokaži nastavitve", "column_header.unpin": "Odpni", "column_subheading.settings": "Nastavitve", "community.column_settings.local_only": "Samo krajevno", @@ -127,10 +128,10 @@ "compose.language.search": "Poišči jezik ...", "compose_form.direct_message_warning_learn_more": "Izvej več", "compose_form.encryption_warning": "Objave na Mastodonu niso šifrirane od kraja do kraja. Prek Mastodona ne delite nobenih občutljivih informacij.", - "compose_form.hashtag_warning": "Ta objava ne bo navedena pod nobenim ključnikom, ker ni javen. Samo javne objave lahko iščete s ključniki.", + "compose_form.hashtag_warning": "Ta objava ne bo navedena pod nobenim ključnikom, ker ni javna. Samo javne objave lahko iščete s ključniki.", "compose_form.lock_disclaimer": "Vaš račun ni {locked}. Vsakdo vam lahko sledi in si ogleda objave, ki so namenjene samo sledilcem.", "compose_form.lock_disclaimer.lock": "zaklenjen", - "compose_form.placeholder": "O čem razmišljaš?", + "compose_form.placeholder": "O čem razmišljate?", "compose_form.poll.add_option": "Dodaj izbiro", "compose_form.poll.duration": "Trajanje ankete", "compose_form.poll.option_placeholder": "Izbira {number}", @@ -140,14 +141,14 @@ "compose_form.publish": "Objavi", "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "Shrani spremembe", - "compose_form.sensitive.hide": "Označi medij kot občutljiv", - "compose_form.sensitive.marked": "Medij je označen kot občutljiv", - "compose_form.sensitive.unmarked": "Medij ni označen kot občutljiv", - "compose_form.spoiler.marked": "Besedilo je skrito za opozorilom", - "compose_form.spoiler.unmarked": "Besedilo ni skrito", + "compose_form.sensitive.hide": "{count, plural,one {Označi medij kot občutljiv} two {Označi medija kot občutljiva} other {Označi medije kot občutljive}}", + "compose_form.sensitive.marked": "{count, plural,one {Medij je označen kot občutljiv} two {Medija sta označena kot občutljiva} other {Mediji so označeni kot občutljivi}}", + "compose_form.sensitive.unmarked": "{count, plural,one {Medij ni označen kot občutljiv} two {Medija nista označena kot občutljiva} other {Mediji niso označeni kot občutljivi}}", + "compose_form.spoiler.marked": "Odstrani opozorilo o vsebini", + "compose_form.spoiler.unmarked": "Dodaj opozorilo o vsebini", "compose_form.spoiler_placeholder": "Tukaj napišite opozorilo", "confirmation_modal.cancel": "Prekliči", - "confirmations.block.block_and_report": "Blokiraj in Prijavi", + "confirmations.block.block_and_report": "Blokiraj in prijavi", "confirmations.block.confirm": "Blokiraj", "confirmations.block.message": "Ali ste prepričani, da želite blokirati {name}?", "confirmations.cancel_follow_request.confirm": "Umakni zahtevo", @@ -158,7 +159,7 @@ "confirmations.delete_list.message": "Ali ste prepričani, da želite trajno izbrisati ta seznam?", "confirmations.discard_edit_media.confirm": "Opusti", "confirmations.discard_edit_media.message": "Imate ne shranjene spremembe za medijski opis ali predogled; jih želite kljub temu opustiti?", - "confirmations.domain_block.confirm": "Skrij celotno domeno", + "confirmations.domain_block.confirm": "Blokiraj celotno domeno", "confirmations.domain_block.message": "Ali ste res, res prepričani, da želite blokirati celotno {domain}? V večini primerov je nekaj ciljnih blokiranj ali utišanj dovolj in boljše. Vsebino iz te domene ne boste videli v javnih časovnicah ali obvestilih. Vaši sledilci iz te domene bodo odstranjeni.", "confirmations.logout.confirm": "Odjava", "confirmations.logout.message": "Ali ste prepričani, da se želite odjaviti?", @@ -173,7 +174,7 @@ "confirmations.unfollow.message": "Ali ste prepričani, da ne želite več slediti {name}?", "conversation.delete": "Izbriši pogovor", "conversation.mark_as_read": "Označi kot prebrano", - "conversation.open": "Prikaži pogovor", + "conversation.open": "Pokaži pogovor", "conversation.with": "Z {names}", "copypaste.copied": "Kopirano", "copypaste.copy": "Kopiraj", @@ -181,44 +182,46 @@ "directory.local": "Samo iz {domain}", "directory.new_arrivals": "Novi prišleki", "directory.recently_active": "Nedavno aktiven/a", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "To so najnovejše javne objave oseb, katerih računi gostujejo na {domain}.", "dismissable_banner.dismiss": "Opusti", "dismissable_banner.explore_links": "O teh novicah ravno zdaj veliko govorijo osebe na tem in drugih strežnikih decentraliziranega omrežja.", "dismissable_banner.explore_statuses": "Te objave s tega in drugih strežnikov v decentraliziranem omrežju pridobivajo ravno zdaj veliko pozornosti na tem strežniku.", "dismissable_banner.explore_tags": "Ravno zdaj dobivajo ti ključniki veliko pozoronosti med osebami na tem in drugih strežnikih decentraliziranega omrežja.", "dismissable_banner.public_timeline": "To so zadnje javne objave oseb na tem in drugih strežnikih decentraliziranega omrežja, za katera ve ta strežnik.", - "embed.instructions": "Vstavi ta status na svojo spletno stran tako, da kopirate spodnjo kodo.", + "embed.instructions": "Vstavite to objavo na svojo spletno stran tako, da kopirate spodnjo kodo.", "embed.preview": "Tako bo izgledalo:", "emoji_button.activity": "Dejavnost", "emoji_button.clear": "Počisti", "emoji_button.custom": "Po meri", "emoji_button.flags": "Zastave", - "emoji_button.food": "Hrana in Pijača", + "emoji_button.food": "Hrana in pijača", "emoji_button.label": "Vstavi emotikon", "emoji_button.nature": "Narava", - "emoji_button.not_found": "Ni emotikonov!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Ni zadetkov med emotikoni", "emoji_button.objects": "Predmeti", "emoji_button.people": "Ljudje", "emoji_button.recent": "Pogosto uporabljeni", - "emoji_button.search": "Poišči...", + "emoji_button.search": "Poišči ...", "emoji_button.search_results": "Rezultati iskanja", "emoji_button.symbols": "Simboli", - "emoji_button.travel": "Potovanja in Kraji", + "emoji_button.travel": "Potovanja in kraji", "empty_column.account_suspended": "Račun je suspendiran", "empty_column.account_timeline": "Tukaj ni objav!", "empty_column.account_unavailable": "Profil ni na voljo", "empty_column.blocks": "Niste še blokirali nobenega uporabnika.", - "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", - "empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!", + "empty_column.bookmarked_statuses": "Zaenkrat še nimate zaznamovanih objav. Ko objavo zaznamujete, se pojavi tukaj.", + "empty_column.community": "Krajevna časovnica je prazna. Napišite nekaj javnega, da se bo snežna kepa zakotalila!", "empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga boste poslali ali prejeli, se bo prikazal tukaj.", - "empty_column.domain_blocks": "Še vedno ni skritih domen.", + "empty_column.domain_blocks": "Zaenkrat ni blokiranih domen.", "empty_column.explore_statuses": "Trenutno ni nič v trendu. Preverite znova kasneje!", "empty_column.favourited_statuses": "Nimate priljubljenih objav. Ko boste vzljubili kakšno, bo prikazana tukaj.", "empty_column.favourites": "Nihče še ni vzljubil te objave. Ko jo bo nekdo, se bo pojavila tukaj.", "empty_column.follow_recommendations": "Kaže, da za vas ni mogoče pripraviti nobenih predlogov. Poskusite uporabiti iskanje, da poiščete osebe, ki jih poznate, ali raziščete ključnike, ki so v trendu.", "empty_column.follow_requests": "Nimate prošenj za sledenje. Ko boste prejeli kakšno, se bo prikazala tukaj.", "empty_column.hashtag": "V tem ključniku še ni nič.", - "empty_column.home": "Vaša domača časovnica je prazna! Obiščite {public} ali uporabite iskanje, da se boste srečali druge uporabnike.", + "empty_column.home": "Vaša domača časovnica je prazna! Sledite več osebam, da jo zapolnite. {suggestions}", "empty_column.home.suggestions": "Oglejte si nekaj predlogov", "empty_column.list": "Na tem seznamu ni ničesar. Ko bodo člani tega seznama objavili nove statuse, se bodo pojavili tukaj.", "empty_column.lists": "Nimate seznamov. Ko ga boste ustvarili, se bo prikazal tukaj.", @@ -229,7 +232,7 @@ "error.unexpected_crash.explanation_addons": "Te strani ni mogoče ustrezno prikazati. To napako najverjetneje povzroča dodatek briskalnika ali samodejna orodja za prevajanje.", "error.unexpected_crash.next_steps": "Poskusite osvežiti stran. Če to ne pomaga, boste morda še vedno lahko uporabljali Mastodon prek drugega brskalnika ali z domorodno aplikacijo.", "error.unexpected_crash.next_steps_addons": "Poskusite jih onemogočiti in osvežiti stran. Če to ne pomaga, boste morda še vedno lahko uporabljali Mastodon prek drugega brskalnika ali z domorodno aplikacijo.", - "errors.unexpected_crash.copy_stacktrace": "Kopiraj sledenje sklada na odložišče", + "errors.unexpected_crash.copy_stacktrace": "Kopiraj sledenje skladu na odložišče", "errors.unexpected_crash.report_issue": "Prijavi težavo", "explore.search_results": "Rezultati iskanja", "explore.suggested_follows": "Za vas", @@ -238,7 +241,7 @@ "explore.trending_statuses": "Objave", "explore.trending_tags": "Ključniki", "filter_modal.added.context_mismatch_explanation": "Ta kategorija filtra ne velja za kontekst, v katerem ste dostopali do te objave. Če želite, da je objava filtrirana tudi v tem kontekstu, morate urediti filter.", - "filter_modal.added.context_mismatch_title": "Neujamanje konteksta!", + "filter_modal.added.context_mismatch_title": "Neujemanje konteksta!", "filter_modal.added.expired_explanation": "Ta kategorija filtra je pretekla, morali boste spremeniti datum veljavnosti, da bo veljal še naprej.", "filter_modal.added.expired_title": "Filter je pretekel!", "filter_modal.added.review_and_configure": "Če želite pregledati in nadalje prilagoditi kategorijo filtra, obiščite {settings_link}.", @@ -252,7 +255,7 @@ "filter_modal.select_filter.search": "Išči ali ustvari", "filter_modal.select_filter.subtitle": "Uporabite obstoječo kategorijo ali ustvarite novo", "filter_modal.select_filter.title": "Filtriraj to objavo", - "filter_modal.title.status": "Filtrirajte objave", + "filter_modal.title.status": "Filtrirajte objavo", "follow_recommendations.done": "Opravljeno", "follow_recommendations.heading": "Sledite osebam, katerih objave želite videti! Tukaj je nekaj predlogov.", "follow_recommendations.lead": "Objave oseb, ki jim sledite, se bodo prikazale v kronološkem zaporedju v vašem domačem viru. Ne bojte se storiti napake, osebam enako enostavno nehate slediti kadar koli!", @@ -272,7 +275,7 @@ "hashtag.column_header.tag_mode.any": "ali {additional}", "hashtag.column_header.tag_mode.none": "brez {additional}", "hashtag.column_settings.select.no_options_message": "Ni najdenih predlogov", - "hashtag.column_settings.select.placeholder": "Vpiši ključnik…", + "hashtag.column_settings.select.placeholder": "Vnesi ključnike …", "hashtag.column_settings.tag_mode.all": "Vse od naštetega", "hashtag.column_settings.tag_mode.any": "Karkoli od naštetega", "hashtag.column_settings.tag_mode.none": "Nič od naštetega", @@ -282,12 +285,12 @@ "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži izpostavitve", "home.column_settings.show_replies": "Pokaži odgovore", - "home.hide_announcements": "Skrij objave", - "home.show_announcements": "Prikaži objave", + "home.hide_announcements": "Skrij obvestila", + "home.show_announcements": "Pokaži obvestila", "interaction_modal.description.favourite": "Z računom na Mastodonu lahko to objavo postavite med priljubljene in tako avtorju nakažete, da jo cenite, in jo shranite za kasneje.", "interaction_modal.description.follow": "Z računom na Mastodonu lahko sledite {name}, da prejemate njihove objave v svoj domači vir.", "interaction_modal.description.reblog": "Z računom na Mastodonu lahko izpostavite to objavo, tako da jo delite s svojimi sledilci.", - "interaction_modal.description.reply": "Z računom na Masodonu lahko odgovorite na to objavo.", + "interaction_modal.description.reply": "Z računom na Mastodonu lahko odgovorite na to objavo.", "interaction_modal.on_another_server": "Na drugem strežniku", "interaction_modal.on_this_server": "Na tem strežniku", "interaction_modal.other_server_instructions": "Enostavno kopirajte in prilepite ta URL v iskalno vrstico svoje priljubljene aplikacije ali spletni vmesnik, kjer ste prijavljeni.", @@ -299,40 +302,40 @@ "intervals.full.days": "{number, plural, one {# dan} two {# dni} few {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# ura} two {# uri} few {# ure} other {# ur}}", "intervals.full.minutes": "{number, plural, one {# minuta} two {# minuti} few {# minute} other {# minut}}", - "keyboard_shortcuts.back": "pojdi nazaj", - "keyboard_shortcuts.blocked": "odpri seznam blokiranih uporabnikov", + "keyboard_shortcuts.back": "Pojdi nazaj", + "keyboard_shortcuts.blocked": "Odpri seznam blokiranih uporabnikov", "keyboard_shortcuts.boost": "Izpostavi objavo", - "keyboard_shortcuts.column": "fokusiraj na status v enemu od stolpcev", - "keyboard_shortcuts.compose": "fokusiraj na območje za sestavljanje besedila", + "keyboard_shortcuts.column": "Pozornost na stolpec", + "keyboard_shortcuts.compose": "Pozornost na območje za sestavljanje besedila", "keyboard_shortcuts.description": "Opis", "keyboard_shortcuts.direct": "odpri stolpec za neposredna sporočila", - "keyboard_shortcuts.down": "premakni se navzdol po seznamu", - "keyboard_shortcuts.enter": "odpri status", - "keyboard_shortcuts.favourite": "vzljubi", - "keyboard_shortcuts.favourites": "odpri seznam priljubljenih", - "keyboard_shortcuts.federated": "odpri združeno časovnico", + "keyboard_shortcuts.down": "Premakni navzdol po seznamu", + "keyboard_shortcuts.enter": "Odpri objavo", + "keyboard_shortcuts.favourite": "Vzljubi objavo", + "keyboard_shortcuts.favourites": "Odpri seznam priljubljenih", + "keyboard_shortcuts.federated": "Odpri združeno časovnico", "keyboard_shortcuts.heading": "Tipkovne bližnjice", - "keyboard_shortcuts.home": "odpri domačo časovnico", + "keyboard_shortcuts.home": "Odpri domačo časovnico", "keyboard_shortcuts.hotkey": "Hitra tipka", - "keyboard_shortcuts.legend": "pokaži to legendo", + "keyboard_shortcuts.legend": "Pokaži to legendo", "keyboard_shortcuts.local": "Odpri krajevno časovnico", - "keyboard_shortcuts.mention": "omeni avtorja", - "keyboard_shortcuts.muted": "odpri seznam utišanih uporabnikov", - "keyboard_shortcuts.my_profile": "odpri svoj profil", - "keyboard_shortcuts.notifications": "odpri stolpec z obvestili", - "keyboard_shortcuts.open_media": "to open media", + "keyboard_shortcuts.mention": "Omeni avtorja", + "keyboard_shortcuts.muted": "Odpri seznam utišanih uporabnikov", + "keyboard_shortcuts.my_profile": "Odprite svoj profil", + "keyboard_shortcuts.notifications": "Odpri stolpec z obvestili", + "keyboard_shortcuts.open_media": "Odpri medij", "keyboard_shortcuts.pinned": "Odpri seznam pripetih objav", - "keyboard_shortcuts.profile": "odpri avtorjev profil", - "keyboard_shortcuts.reply": "odgovori", - "keyboard_shortcuts.requests": "odpri seznam s prošnjami za sledenje", - "keyboard_shortcuts.search": "fokusiraj na iskanje", - "keyboard_shortcuts.spoilers": "to show/hide CW field", - "keyboard_shortcuts.start": "odpri stolpec \"začni\"", - "keyboard_shortcuts.toggle_hidden": "prikaži/skrij besedilo za CW", - "keyboard_shortcuts.toggle_sensitivity": "prikaži/skrij medije", + "keyboard_shortcuts.profile": "Odpri avtorjev profil", + "keyboard_shortcuts.reply": "Odgovori na objavo", + "keyboard_shortcuts.requests": "Odpri seznam s prošnjami za sledenje", + "keyboard_shortcuts.search": "Pozornost na iskalno vrstico", + "keyboard_shortcuts.spoilers": "Pokaži/skrij polje CW", + "keyboard_shortcuts.start": "Odpri stolpec \"začni\"", + "keyboard_shortcuts.toggle_hidden": "Pokaži/skrij besedilo za CW", + "keyboard_shortcuts.toggle_sensitivity": "Pokaži/skrij medije", "keyboard_shortcuts.toot": "Začni povsem novo objavo", - "keyboard_shortcuts.unfocus": "odfokusiraj območje za sestavljanje besedila/iskanje", - "keyboard_shortcuts.up": "premakni se navzgor po seznamu", + "keyboard_shortcuts.unfocus": "Odstrani pozornost z območja za sestavljanje besedila/iskanje", + "keyboard_shortcuts.up": "Premakni navzgor po seznamu", "lightbox.close": "Zapri", "lightbox.compress": "Strni ogledno polje slike", "lightbox.expand": "Razširi ogledno polje slike", @@ -351,24 +354,25 @@ "lists.replies_policy.list": "Članom seznama", "lists.replies_policy.none": "Nikomur", "lists.replies_policy.title": "Pokaži odgovore:", - "lists.search": "Išči med ljudmi, katerim sledite", + "lists.search": "Iščite med ljudmi, katerim sledite", "lists.subheading": "Vaši seznami", - "load_pending": "{count, plural, one {# nov element} other {# novih elementov}}", - "loading_indicator.label": "Nalaganje...", - "media_gallery.toggle_visible": "Preklopi vidljivost", + "load_pending": "{count, plural, one {# nov element} two {# nova elementa} few {# novi elementi} other {# novih elementov}}", + "loading_indicator.label": "Nalaganje ...", + "media_gallery.toggle_visible": "{number, plural,one {Skrij sliko} two {Skrij sliki} other {Skrij slike}}", "missing_indicator.label": "Ni najdeno", "missing_indicator.sublabel": "Tega vira ni bilo mogoče najti", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Trajanje", - "mute_modal.hide_notifications": "Skrij obvestila tega uporabnika?", + "mute_modal.hide_notifications": "Ali želite skriti obvestila tega uporabnika?", "mute_modal.indefinite": "Nedoločeno", - "navigation_bar.about": "O programu", + "navigation_bar.about": "O Mastodonu", "navigation_bar.blocks": "Blokirani uporabniki", "navigation_bar.bookmarks": "Zaznamki", - "navigation_bar.community_timeline": "Lokalna časovnica", + "navigation_bar.community_timeline": "Krajevna časovnica", "navigation_bar.compose": "Sestavi novo objavo", "navigation_bar.direct": "Neposredna sporočila", "navigation_bar.discover": "Odkrijte", - "navigation_bar.domain_blocks": "Skrite domene", + "navigation_bar.domain_blocks": "Blokirane domene", "navigation_bar.edit_profile": "Uredi profil", "navigation_bar.explore": "Razišči", "navigation_bar.favourites": "Priljubljeni", @@ -391,13 +395,13 @@ "notification.follow": "{name} vam sledi", "notification.follow_request": "{name} vam želi slediti", "notification.mention": "{name} vas je omenil/a", - "notification.own_poll": "Vaša anketa se je končala", - "notification.poll": "Glasovanje, v katerem ste sodelovali, se je končalo", + "notification.own_poll": "Vaša anketa je zaključena", + "notification.poll": "Anketa, v kateri ste sodelovali, je zaključena", "notification.reblog": "{name} je izpostavila/a vašo objavo", "notification.status": "{name} je pravkar objavil/a", "notification.update": "{name} je uredil(a) objavo", "notifications.clear": "Počisti obvestila", - "notifications.clear_confirmation": "Ali ste prepričani, da želite trajno izbrisati vsa vaša obvestila?", + "notifications.clear_confirmation": "Ali ste prepričani, da želite trajno izbrisati vsa svoja obvestila?", "notifications.column_settings.admin.report": "Nove prijave:", "notifications.column_settings.admin.sign_up": "Novi vpisi:", "notifications.column_settings.alert": "Namizna obvestila", @@ -408,12 +412,12 @@ "notifications.column_settings.follow": "Novi sledilci:", "notifications.column_settings.follow_request": "Nove prošnje za sledenje:", "notifications.column_settings.mention": "Omembe:", - "notifications.column_settings.poll": "Rezultati glasovanja:", + "notifications.column_settings.poll": "Rezultati ankete:", "notifications.column_settings.push": "Potisna obvestila", "notifications.column_settings.reblog": "Izpostavitve:", - "notifications.column_settings.show": "Prikaži v stolpcu", + "notifications.column_settings.show": "Pokaži v stolpcu", "notifications.column_settings.sound": "Predvajaj zvok", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "Nove objave:", "notifications.column_settings.unread_notifications.category": "Neprebrana obvestila", "notifications.column_settings.unread_notifications.highlight": "Poudari neprebrana obvestila", "notifications.column_settings.update": "Urejanja:", @@ -422,11 +426,11 @@ "notifications.filter.favourites": "Priljubljeni", "notifications.filter.follows": "Sledi", "notifications.filter.mentions": "Omembe", - "notifications.filter.polls": "Rezultati glasovanj", + "notifications.filter.polls": "Rezultati anket", "notifications.filter.statuses": "Posodobitve pri osebah, ki jih spremljate", "notifications.grant_permission": "Dovoli.", "notifications.group": "{count} obvestil", - "notifications.mark_as_read": "Vsa obvestila ozači kot prebrana", + "notifications.mark_as_read": "Vsa obvestila označi kot prebrana", "notifications.permission_denied": "Namizna obvestila niso na voljo zaradi poprej zavrnjene zahteve dovoljenja brskalnika.", "notifications.permission_denied_alert": "Namiznih obvestil ni mogoče omogočiti, ker je bilo dovoljenje brskalnika že prej zavrnjeno", "notifications.permission_required": "Namizna obvestila niso na voljo, ker zahtevano dovoljenje ni bilo podeljeno.", @@ -437,13 +441,13 @@ "poll.closed": "Zaprto", "poll.refresh": "Osveži", "poll.total_people": "{count, plural, one {# oseba} two {# osebi} few {# osebe} other {# oseb}}", - "poll.total_votes": "{count, plural,one {# glas} other {# glasov}}", + "poll.total_votes": "{count, plural, one {# glas} two {# glasova} few {# glasovi} other {# glasov}}", "poll.vote": "Glasuj", "poll.voted": "Glasovali ste za ta odgovor", "poll.votes": "{votes, plural, one {# glas} two {# glasova} few {# glasovi} other {# glasov}}", "poll_button.add_poll": "Dodaj anketo", "poll_button.remove_poll": "Odstrani anketo", - "privacy.change": "Prilagodi zasebnost statusa", + "privacy.change": "Spremeni zasebnost objave", "privacy.direct.long": "Objavi samo omenjenim uporabnikom", "privacy.direct.short": "Samo omenjeni", "privacy.private.long": "Objavi samo sledilcem", @@ -455,18 +459,18 @@ "privacy_policy.last_updated": "Zadnja posodobitev {date}", "privacy_policy.title": "Pravilnik o zasebnosti", "refresh": "Osveži", - "regeneration_indicator.label": "Nalaganje…", + "regeneration_indicator.label": "Nalaganje …", "regeneration_indicator.sublabel": "Vaš domači vir se pripravlja!", - "relative_time.days": "{number}d", + "relative_time.days": "{number} d", "relative_time.full.days": "{number, plural, one {pred # dnem} two {pred # dnevoma} few {pred # dnevi} other {pred # dnevi}}", "relative_time.full.hours": "{number, plural, one {pred # uro} two {pred # urama} few {pred # urami} other {pred # urami}}", "relative_time.full.just_now": "pravkar", "relative_time.full.minutes": "{number, plural, one {pred # minuto} two {pred # minutama} few {pred # minutami} other {pred # minutami}}", "relative_time.full.seconds": "{number, plural, one {pred # sekundo} two {pred # sekundama} few {pred # sekundami} other {pred # sekundami}}", - "relative_time.hours": "{number}u", + "relative_time.hours": "{number} u", "relative_time.just_now": "zdaj", - "relative_time.minutes": "{number}m", - "relative_time.seconds": "{number}s", + "relative_time.minutes": "{number} m", + "relative_time.seconds": "{number} s", "relative_time.today": "danes", "reply_indicator.cancel": "Prekliči", "report.block": "Blokiraj", @@ -474,16 +478,16 @@ "report.categories.other": "Drugo", "report.categories.spam": "Neželeno", "report.categories.violation": "Vsebina krši eno ali več pravil strežnika", - "report.category.subtitle": "Izberite najboljši zadetek", + "report.category.subtitle": "Izberite najustreznejši zadetek", "report.category.title": "Povejte nam, kaj se dogaja s to/tem {type}", "report.category.title_account": "profil", "report.category.title_status": "objava", "report.close": "Opravljeno", "report.comment.title": "Je še kaj, za kar menite, da bi morali vedeti?", - "report.forward": "Posreduj do {target}", - "report.forward_hint": "Račun je iz drugega strežnika. Pošljem anonimno kopijo poročila tudi na drugi strežnik?", + "report.forward": "Posreduj k {target}", + "report.forward_hint": "Račun je z drugega strežnika. Ali želite poslati anonimno kopijo prijave tudi na drugi strežnik?", "report.mute": "Utišaj", - "report.mute_explanation": "Njihovih objav ne boste videli. Še vedno vam lahko sledijo in vidijo vaše objave, ne bodo vedeli, da so utišani.", + "report.mute_explanation": "Njihovih objav ne boste videli. Še vedno vam lahko sledijo in vidijo vaše objave, ne bodo pa vedeli, da so utišani.", "report.next": "Naprej", "report.placeholder": "Dodatni komentarji", "report.reasons.dislike": "Ni mi všeč", @@ -497,13 +501,13 @@ "report.rules.subtitle": "Izberite vse, kar ustreza", "report.rules.title": "Katera pravila so kršena?", "report.statuses.subtitle": "Izberite vse, kar ustreza", - "report.statuses.title": "Ali so kakšne objave, ki dokazujejo trditve iz tega poročila?", + "report.statuses.title": "Ali so kakšne objave, ki dokazujejo trditve iz te prijave?", "report.submit": "Pošlji", "report.target": "Prijavi {target}", "report.thanks.take_action": "Tukaj so vaše možnosti za nadzor tistega, kar vidite na Mastodonu:", "report.thanks.take_action_actionable": "Medtem, ko to pregledujemo, lahko proti @{name} ukrepate:", - "report.thanks.title": "Ali si želite to pogledati?", - "report.thanks.title_actionable": "Hvala za poročilo, bomo preverili.", + "report.thanks.title": "Ali ne želite tega videti?", + "report.thanks.title_actionable": "Hvala za prijavo, bomo preverili.", "report.unfollow": "Ne sledi več @{name}", "report.unfollow_explanation": "Temu računu sledite. Da ne boste več videli njegovih objav v svojem domačem viru, mu prenehajte slediti.", "report_notification.attached_statuses": "{count, plural, one {{count} objava pripeta} two {{count} objavi pripeti} few {{count} objave pripete} other {{count} objav pripetih}}", @@ -526,7 +530,7 @@ "search_results.statuses": "Objave", "search_results.statuses_fts_disabled": "Iskanje objav po njihovi vsebini ni omogočeno na tem strežniku Mastodon.", "search_results.title": "Išči {q}", - "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultatov}}", + "search_results.total": "{count, number} {count, plural, one {rezultat} two {rezultata} few {rezultati} other {rezultatov}}", "server_banner.about_active_users": "Osebe, ki so uporabljale ta strežnik zadnjih 30 dni (dejavni uporabniki meseca)", "server_banner.active_users": "dejavnih uporabnikov", "server_banner.administered_by": "Upravlja:", @@ -537,19 +541,19 @@ "sign_in_banner.sign_in": "Prijava", "sign_in_banner.text": "Prijavite se, da sledite profilom ali ključnikom, dodajate med priljubljene, delite z drugimi ter odgovarjate na objave, pa tudi ostajate v interakciji iz svojega računa na drugem strežniku.", "status.admin_account": "Odpri vmesnik za moderiranje za @{name}", - "status.admin_status": "Odpri status v vmesniku za moderiranje", + "status.admin_status": "Odpri to objavo v vmesniku za moderiranje", "status.block": "Blokiraj @{name}", "status.bookmark": "Dodaj med zaznamke", "status.cancel_reblog_private": "Prekliči izpostavitev", "status.cannot_reblog": "Te objave ni mogoče izpostaviti", - "status.copy": "Kopiraj povezavo do statusa", + "status.copy": "Kopiraj povezavo do objave", "status.delete": "Izbriši", "status.detailed_status": "Podroben pogled pogovora", "status.direct": "Neposredno sporočilo @{name}", "status.edit": "Uredi", "status.edited": "Urejeno {date}", "status.edited_x_times": "Urejeno {count, plural, one {#-krat} two {#-krat} few {#-krat} other {#-krat}}", - "status.embed": "Vgradi", + "status.embed": "Vdelaj", "status.favourite": "Priljubljen", "status.filter": "Filtriraj to objavo", "status.filtered": "Filtrirano", @@ -562,7 +566,7 @@ "status.more": "Več", "status.mute": "Utišaj @{name}", "status.mute_conversation": "Utišaj pogovor", - "status.open": "Razširi ta status", + "status.open": "Razširi to objavo", "status.pin": "Pripni na profil", "status.pinned": "Pripeta objava", "status.read_more": "Preberi več", @@ -574,39 +578,39 @@ "status.remove_bookmark": "Odstrani zaznamek", "status.replied_to": "Odgovoril/a {name}", "status.reply": "Odgovori", - "status.replyAll": "Odgovori na objavo", + "status.replyAll": "Odgovori na nit", "status.report": "Prijavi @{name}", "status.sensitive_warning": "Občutljiva vsebina", "status.share": "Deli", "status.show_filter_reason": "Vseeno pokaži", - "status.show_less": "Prikaži manj", + "status.show_less": "Pokaži manj", "status.show_less_all": "Prikaži manj za vse", - "status.show_more": "Prikaži več", - "status.show_more_all": "Prikaži več za vse", + "status.show_more": "Pokaži več", + "status.show_more_all": "Pokaži več za vse", "status.show_original": "Pokaži izvirnik", "status.translate": "Prevedi", "status.translated_from_with": "Prevedeno iz {lang} s pomočjo {provider}", "status.uncached_media_warning": "Ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", "status.unpin": "Odpni iz profila", - "subscribed_languages.lead": "Po spremembi bodo na vaši domači in seznamski časovnici prikazane objave samo v izbranih jezikih.", + "subscribed_languages.lead": "Po spremembi bodo na vaši domači in seznamski časovnici prikazane objave samo v izbranih jezikih. Izberite brez, da boste prejemali objave v vseh jezikih.", "subscribed_languages.save": "Shrani spremembe", "subscribed_languages.target": "Spremeni naročene jezike za {target}", "suggestions.dismiss": "Zavrni predlog", - "suggestions.header": "Morda bi vas zanimalo…", + "suggestions.header": "Morda bi vas zanimalo …", "tabs_bar.federated_timeline": "Združeno", "tabs_bar.home": "Domov", "tabs_bar.local_timeline": "Krajevno", "tabs_bar.notifications": "Obvestila", - "time_remaining.days": "{number, plural, one {# dan} other {# dni}} je ostalo", + "time_remaining.days": "{number, plural, one {preostaja # dan} two {preostajata # dneva} few {preostajajo # dnevi} other {preostaja # dni}}", "time_remaining.hours": "{number, plural, one {# ura} other {# ur}} je ostalo", "time_remaining.minutes": "{number, plural, one {# minuta} other {# minut}} je ostalo", "time_remaining.moments": "Preostali trenutki", - "time_remaining.seconds": "{number, plural, one {# sekunda} other {# sekund}} je ostalo", + "time_remaining.seconds": "{number, plural, one {# sekunda je preostala} two {# sekundi sta preostali} few {# sekunde so preostale} other {# sekund je preostalo}}", "timeline_hint.remote_resource_not_displayed": "{resource} z drugih strežnikov ni prikazano.", "timeline_hint.resources.followers": "sledilcev", "timeline_hint.resources.follows": "Sledi", - "timeline_hint.resources.statuses": "Older toots", + "timeline_hint.resources.statuses": "Starejše objave", "trends.counter_by_accounts": "{count, plural, one {{count} oseba} two {{count} osebi} few {{count} osebe} other {{count} oseb}} v {days, plural, one {zadnjem {day} dnevu} two {zadnjih {days} dneh} few {zadnjih {days} dneh} other {zadnjih {days} dneh}}", "trends.trending_now": "Zdaj v trendu", "ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Mastodona.", @@ -614,27 +618,27 @@ "units.short.million": "{count} mio.", "units.short.thousand": "{count} tisoč", "upload_area.title": "Za pošiljanje povlecite in spustite", - "upload_button.label": "Dodaj medije", + "upload_button.label": "Dodajte slike, video ali zvočno datoteko", "upload_error.limit": "Omejitev prenosa datoteke je presežena.", "upload_error.poll": "Prenos datoteke z anketami ni dovoljen.", "upload_form.audio_description": "Opiši za osebe z okvaro sluha", "upload_form.description": "Opišite za slabovidne", - "upload_form.description_missing": "Noben opis ni bil dodan", + "upload_form.description_missing": "Noben opis ni dodan", "upload_form.edit": "Uredi", "upload_form.thumbnail": "Spremeni sličico", "upload_form.undo": "Izbriši", - "upload_form.video_description": "Opiši za osebe z okvaro sluha in/ali vida", + "upload_form.video_description": "Opišite za osebe z okvaro sluha in/ali vida", "upload_modal.analyzing_picture": "Analiziranje slike …", "upload_modal.apply": "Uveljavi", "upload_modal.applying": "Uveljavljanje poteka …", "upload_modal.choose_image": "Izberite sliko", "upload_modal.description_placeholder": "Pri Jakcu bom vzel šest čudežnih fig", - "upload_modal.detect_text": "Zaznaj besedilo s slike", + "upload_modal.detect_text": "Zaznaj besedilo v sliki", "upload_modal.edit_media": "Uredi medij", "upload_modal.hint": "Kliknite ali povlecite krog v predogledu, da izberete točko pozornosti, ki bo vedno vidna na vseh oglednih sličicah.", - "upload_modal.preparing_ocr": "Priprava optične prepoznave znakov (OCR) ...", + "upload_modal.preparing_ocr": "Priprava optične prepoznave znakov (OCR) …", "upload_modal.preview_label": "Predogled ({ratio})", - "upload_progress.label": "Pošiljanje...", + "upload_progress.label": "Pošiljanje ...", "upload_progress.processing": "Obdelovanje …", "video.close": "Zapri video", "video.download": "Prenesi datoteko", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 21442c856f..3debd623e7 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} i Ndjekur} other {{counter} të Ndjekur}}", "account.follows.empty": "Ky përdorues ende s’ndjek kënd.", "account.follows_you": "Ju ndjek", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Fshih përforcime nga @{name}", "account.joined_short": "U bë pjesë", "account.languages": "Ndryshoni gjuhë pajtimesh", @@ -46,7 +47,7 @@ "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.", "account.media": "Media", "account.mention": "Përmendni @{name}", - "account.moved_to": "{name} ka kaluar te:", + "account.moved_to": "{name} ka treguar se llogari e vet e re tani është:", "account.mute": "Heshtoni @{name}", "account.mute_notifications": "Heshtoji njoftimet prej @{name}", "account.muted": "Heshtuar", @@ -181,6 +182,8 @@ "directory.local": "Vetëm nga {domain}", "directory.new_arrivals": "Të ardhur rishtas", "directory.recently_active": "Aktivë së fundi", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Këto janë postime më të freskëta publike nga persona llogaritë e të cilëve strehohen nga {domain}.", "dismissable_banner.dismiss": "Hidhe tej", "dismissable_banner.explore_links": "Këto histori të reja po tirren nga persona në këtë shërbyes dhe të tjerë të tillë të rrjetit të decentralizuar mu tani.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Fshihni {number, plural, one {figurë} other {figura}}", "missing_indicator.label": "S’u gjet", "missing_indicator.sublabel": "Ky burim s’u gjet dot", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Kohëzgjatje", "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?", "mute_modal.indefinite": "E pacaktuar", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 510944d6d6..4aa2c86e3e 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Prati Vas", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Mediji", "account.mention": "Pomeni korisnika @{name}", - "account.moved_to": "{name} se pomerio na:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Ućutkaj korisnika @{name}", "account.mute_notifications": "Isključi obaveštenja od korisnika @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Uključi/isključi vidljivost", "missing_indicator.label": "Nije pronađeno", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Sakrij obaveštenja od ovog korisnika?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index c5e24c1bc1..7e669bd184 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} прати} few {{counter} прати} other {{counter} прати}}", "account.follows.empty": "Корисник тренутно не прати никога.", "account.follows_you": "Прати Вас", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Сакриј подршке које даје корисника @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Статус приватности овог налога је подешен на закључано. Власник ручно прегледа ко га може пратити.", "account.media": "Медији", "account.mention": "Помени корисника @{name}", - "account.moved_to": "{name} се померио на:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Ућуткај корисника @{name}", "account.mute_notifications": "Искључи обавештења од корисника @{name}", "account.muted": "Ућуткан", @@ -181,6 +182,8 @@ "directory.local": "Само са {domain}", "directory.new_arrivals": "Новопридошли", "directory.recently_active": "Недавно активни", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Укључи/искључи видљивост", "missing_indicator.label": "Није пронађено", "missing_indicator.sublabel": "Овај ресурс није пронађен", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Трајање", "mute_modal.hide_notifications": "Сакриј обавештења од овог корисника?", "mute_modal.indefinite": "Неодређен", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 07e75ec448..a6bd409da3 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -15,7 +15,7 @@ "about.rules": "Serverregler", "account.account_note_header": "Anteckning", "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor", - "account.badges.bot": "Robot", + "account.badges.bot": "Bot", "account.badges.group": "Grupp", "account.block": "Blockera @{name}", "account.block_domain": "Blockera domänen {domain}", @@ -39,14 +39,15 @@ "account.following_counter": "{count, plural, one {{counter} Följer} other {{counter} Följer}}", "account.follows.empty": "Denna användare följer inte någon än.", "account.follows_you": "Följer dig", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Dölj boostningar från @{name}", "account.joined_short": "Gick med", "account.languages": "Ändra prenumererade språk", - "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}", + "account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}", "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", "account.media": "Media", "account.mention": "Nämn @{name}", - "account.moved_to": "{name} har flyttat till:", + "account.moved_to": "{name} har indikerat att hen har ett nytt konto:", "account.mute": "Tysta @{name}", "account.mute_notifications": "Stäng av notifieringar från @{name}", "account.muted": "Tystad", @@ -181,6 +182,8 @@ "directory.local": "Endast från {domain}", "directory.new_arrivals": "Nyanlända", "directory.recently_active": "Nyligen aktiva", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Dessa är de senaste offentliga inläggen från personer vars konton tillhandahålls av {domain}.", "dismissable_banner.dismiss": "Avfärda", "dismissable_banner.explore_links": "Dessa nyheter pratas det om just nu, på denna och på andra servrar i det decentraliserade nätverket.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "Växla synlighet", "missing_indicator.label": "Hittades inte", "missing_indicator.sublabel": "Den här resursen kunde inte hittas", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Varaktighet", "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?", "mute_modal.indefinite": "Obestämt", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 0ee86d80cf..d90153a95f 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 7d502ae6e4..c01242e76c 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural,one {{counter} சந்தா} other {{counter} சந்தாக்கள்}}", "account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.", "account.follows_you": "உங்களைப் பின்தொடர்கிறார்", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.", "account.media": "ஊடகங்கள்", "account.mention": "குறிப்பிடு @{name}", - "account.moved_to": "{name} நகர்த்தப்பட்டது:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "ஊமையான @{name}", "account.mute_notifications": "அறிவிப்புகளை முடக்கு @{name}", "account.muted": "முடக்கியது", @@ -181,6 +182,8 @@ "directory.local": "{domain} களத்திலிருந்து மட்டும்", "directory.new_arrivals": "புதிய வரவு", "directory.recently_active": "சற்றுமுன் செயல்பாட்டில் இருந்தவர்கள்", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "நிலைமாற்று தெரியும்", "missing_indicator.label": "கிடைக்கவில்லை", "missing_indicator.sublabel": "இந்த ஆதாரத்தை காண முடியவில்லை", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "இந்த பயனரின் அறிவிப்புகளை மறைக்கவா?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 7d44cbc897..a1f4a2732e 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Mûi-thé", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index a37f95aec8..669a4eb0cc 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "ఈ వినియోగదారి ఇంకా ఎవరినీ అనుసరించడంలేదు.", "account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "ఈ ఖాతా యొక్క గోప్యత స్థితి లాక్ చేయబడి వుంది. ఈ ఖాతాను ఎవరు అనుసరించవచ్చో యజమానే నిర్ణయం తీసుకుంటారు.", "account.media": "మీడియా", "account.mention": "@{name}ను ప్రస్తావించు", - "account.moved_to": "{name} ఇక్కడికి మారారు:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "@{name}ను మ్యూట్ చెయ్యి", "account.mute_notifications": "@{name}నుంచి ప్రకటనలను మ్యూట్ చెయ్యి", "account.muted": "మ్యూట్ అయినవి", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "దృశ్యమానతను టోగుల్ చేయండి", "missing_indicator.label": "దొరకలేదు", "missing_indicator.sublabel": "ఈ వనరు కనుగొనబడలేదు", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "ఈ వినియోగదారు నుండి నోటిఫికేషన్లను దాచాలా?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 603a727bb9..176319d335 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} กำลังติดตาม}}", "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร", "account.follows_you": "ติดตามคุณ", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", "account.joined_short": "เข้าร่วมเมื่อ", "account.languages": "เปลี่ยนภาษาที่บอกรับ", @@ -46,7 +47,7 @@ "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", "account.media": "สื่อ", "account.mention": "กล่าวถึง @{name}", - "account.moved_to": "{name} ได้ย้ายไปยัง:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "ซ่อน @{name}", "account.mute_notifications": "ซ่อนการแจ้งเตือนจาก @{name}", "account.muted": "ซ่อนอยู่", @@ -181,12 +182,14 @@ "directory.local": "จาก {domain} เท่านั้น", "directory.new_arrivals": "มาใหม่", "directory.recently_active": "ใช้งานล่าสุด", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "dismissable_banner.community_timeline": "นี่คือโพสต์สาธารณะล่าสุดจากผู้คนที่บัญชีได้รับการโฮสต์โดย {domain}", "dismissable_banner.dismiss": "ปิด", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.explore_links": "เรื่องข่าวเหล่านี้กำลังได้รับการพูดถึงโดยผู้คนในเซิร์ฟเวอร์นี้และอื่น ๆ ของเครือข่ายแบบกระจายศูนย์ในตอนนี้", + "dismissable_banner.explore_statuses": "โพสต์เหล่านี้จากเซิร์ฟเวอร์นี้และอื่น ๆ ในเครือข่ายแบบกระจายศูนย์กำลังได้รับความสนใจในเซิร์ฟเวอร์นี้ในตอนนี้", + "dismissable_banner.explore_tags": "แฮชแท็กเหล่านี้กำลังได้รับความสนใจในหมู่ผู้คนในเซิร์ฟเวอร์นี้และอื่น ๆ ของเครือข่ายแบบกระจายศูนย์ในตอนนี้", + "dismissable_banner.public_timeline": "นี่คือโพสต์สาธารณะล่าสุดจากผู้คนในเซิร์ฟเวอร์นี้และอื่น ๆ ของเครือข่ายแบบกระจายศูนย์ที่เซิร์ฟเวอร์นี้รู้เกี่ยวกับ", "embed.instructions": "ฝังโพสต์นี้ในเว็บไซต์ของคุณโดยคัดลอกโค้ดด้านล่าง", "embed.preview": "นี่คือลักษณะที่จะปรากฏ:", "emoji_button.activity": "กิจกรรม", @@ -339,7 +342,7 @@ "lightbox.next": "ถัดไป", "lightbox.previous": "ก่อนหน้า", "limited_account_hint.action": "แสดงโปรไฟล์ต่อไป", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "มีการซ่อนโปรไฟล์นี้โดยผู้ควบคุมของ {domain}", "lists.account.add": "เพิ่มไปยังรายการ", "lists.account.remove": "เอาออกจากรายการ", "lists.delete": "ลบรายการ", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, other {ซ่อนภาพ}}", "missing_indicator.label": "ไม่พบ", "missing_indicator.sublabel": "ไม่พบทรัพยากรนี้", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "ระยะเวลา", "mute_modal.hide_notifications": "ซ่อนการแจ้งเตือนจากผู้ใช้นี้?", "mute_modal.indefinite": "ไม่มีกำหนด", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index cb08147a68..0ef62d59dd 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -26,7 +26,7 @@ "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", "account.domain_blocked": "Alan adı engellendi", "account.edit_profile": "Profili düzenle", - "account.enable_notifications": "@{name}'in gönderilerini bana bildir", + "account.enable_notifications": "@{name} kişisinin gönderi bildirimlerini aç", "account.endorse": "Profilimde öne çıkar", "account.featured_tags.last_status_at": "Son gönderinin tarihi {date}", "account.featured_tags.last_status_never": "Gönderi yok", @@ -35,18 +35,19 @@ "account.followers": "Takipçi", "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.", "account.followers_counter": "{count, plural, one {{counter} Takipçi} other {{counter} Takipçi}}", - "account.following": "İzleniyor", - "account.following_counter": "{count, plural, one {{counter} İzlenen} other {{counter} İzlenen}}", - "account.follows.empty": "Bu kullanıcı henüz hiçkimseyi izlemiyor.", - "account.follows_you": "Seni izliyor", + "account.following": "Takip Ediliyor", + "account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}", + "account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.", + "account.follows_you": "Seni takip ediyor", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined_short": "Katıldı", "account.languages": "Abone olunan dilleri değiştir", "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde denetlendi", - "account.locked_info": "Bu hesabın gizlilik durumu kilitli olarak ayarlanmış. Sahibi, onu kimin izleyebileceğini kendi onaylıyor.", + "account.locked_info": "Bu hesabın gizlilik durumu gizli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini manuel olarak onaylıyor.", "account.media": "Medya", "account.mention": "@{name}'i an", - "account.moved_to": "{name} şuraya taşındı:", + "account.moved_to": "{name} yeni hesabının artık şu olduğunu belirtti:", "account.mute": "@{name}'i sustur", "account.mute_notifications": "@{name}'in bildirimlerini sustur", "account.muted": "Susturuldu", @@ -126,7 +127,7 @@ "compose.language.change": "Dili değiştir", "compose.language.search": "Dilleri ara...", "compose_form.direct_message_warning_learn_more": "Daha fazla bilgi edinin", - "compose_form.encryption_warning": "Mastodondaki gönderiler uçtan uca şifrelemeli değildir. Mastodon üzerinden hassas olabilecek bir bilginizi paylaşmayın.", + "compose_form.encryption_warning": "Mastodon gönderileri uçtan uca şifrelemeli değildir. Hassas olabilecek herhangi bir bilgiyi Mastodon'da paylaşmayın.", "compose_form.hashtag_warning": "Bu gönderi liste dışı olduğu için hiç bir etikette yer almayacak. Sadece herkese açık gönderiler etiketlerde bulunabilir.", "compose_form.lock_disclaimer": "Hesabın {locked} değil. Yalnızca takipçilere özel gönderilerini görüntülemek için herkes seni takip edebilir.", "compose_form.lock_disclaimer.lock": "kilitli", @@ -181,6 +182,8 @@ "directory.local": "Yalnızca {domain} adresinden", "directory.new_arrivals": "Yeni gelenler", "directory.recently_active": "Son zamanlarda aktif", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Bunlar, {domain} sunucusunda hesabı olanların yakın zamandaki herkese açık gönderileridir.", "dismissable_banner.dismiss": "Yoksay", "dismissable_banner.explore_links": "Bunlar, ademi merkeziyetçi ağda bu ve diğer sunucularda şimdilerde insanların hakkında konuştuğu haber öyküleridir.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Resmi} other {Resimleri}} gizle", "missing_indicator.label": "Bulunamadı", "missing_indicator.sublabel": "Bu kaynak bulunamadı", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Süre", "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?", "mute_modal.indefinite": "Belirsiz", @@ -553,7 +557,7 @@ "status.favourite": "Favorilerine ekle", "status.filter": "Bu gönderiyi filtrele", "status.filtered": "Filtrelenmiş", - "status.hide": "Gönderiyi sakla", + "status.hide": "Toot'u gizle", "status.history.created": "{name} oluşturdu {date}", "status.history.edited": "{name} düzenledi {date}", "status.load_more": "Daha fazlasını yükle", @@ -569,7 +573,7 @@ "status.reblog": "Boostla", "status.reblog_private": "Orijinal görünürlük ile boostla", "status.reblogged_by": "{name} boostladı", - "status.reblogs.empty": "Henüz kimse bu gönderiyi teşvik etmedi. Biri yaptığında burada görünecek.", + "status.reblogs.empty": "Henüz kimse bu tootu boostlamadı. Biri yaptığında burada görünecek.", "status.redraft": "Sil ve yeniden taslak yap", "status.remove_bookmark": "Yer imini kaldır", "status.replied_to": "{name} kullanıcısına yanıt verildi", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index f90f40cb16..18e95f4a01 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Язылган} other {{counter} Язылган}}", "account.follows.empty": "Беркемгә дә язылмаган әле.", "account.follows_you": "Сезгә язылган", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "Бу - ябык аккаунт. Аны язылучылар гына күрә ала.", "account.media": "Медиа", "account.mention": "@{name} искәртү", - "account.moved_to": "{name} монда күчте:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Дәвамлык", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 0ee86d80cf..d90153a95f 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "Follows you", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "Media", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index c9c70b0d3a..5e5853f44c 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -34,19 +34,20 @@ "account.follow": "Підписатися", "account.followers": "Підписники", "account.followers.empty": "Ніхто ще не підписаний на цього користувача.", - "account.followers_counter": "{count, plural, one {{counter} підписник} few {{counter} підписника} many {{counter} підписників} other {{counter} підписники}}", + "account.followers_counter": "{count, plural, one {{counter} підписник} few {{counter} підписники} many {{counter} підписників} other {{counter} підписники}}", "account.following": "Ви стежите", "account.following_counter": "{count, plural, one {{counter} підписка} few {{counter} підписки} many {{counter} підписок} other {{counter} підписки}}", "account.follows.empty": "Цей користувач ще ні на кого не підписався.", "account.follows_you": "Підписані на вас", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Сховати поширення від @{name}", - "account.joined_short": "Приєднався", + "account.joined_short": "Дата приєднання", "account.languages": "Змінити обрані мови", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", "account.media": "Медіа", "account.mention": "Згадати @{name}", - "account.moved_to": "{name} переїхав на:", + "account.moved_to": "{name} вказує, що їхній новий обліковий запис тепер:", "account.mute": "Приховати @{name}", "account.mute_notifications": "Не показувати сповіщення від @{name}", "account.muted": "Нехтується", @@ -181,6 +182,8 @@ "directory.local": "Лише з домену {domain}", "directory.new_arrivals": "Нові надходження", "directory.recently_active": "Нещодавно активні", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Це останні публічні дописи від людей, чиї облікові записи розміщені на {domain}.", "dismissable_banner.dismiss": "Відхилити", "dismissable_banner.explore_links": "Ці новини розповідають історії про людей на цих та інших серверах децентралізованої мережі прямо зараз.", @@ -292,9 +295,9 @@ "interaction_modal.on_this_server": "На цьому сервері", "interaction_modal.other_server_instructions": "Просто скопіюйте і вставте цей URL у панель пошуку вашого улюбленого застосунку або вебінтерфейсу, до якого ви ввійшли.", "interaction_modal.preamble": "Оскільки Mastodon децентралізований, ви можете використовувати свій наявний обліковий запис, розміщений на іншому сервері Mastodon або сумісній платформі, якщо у вас немає облікового запису на цьому сервері.", - "interaction_modal.title.favourite": "Вибраний допис {name}", + "interaction_modal.title.favourite": "Вподобати допис {name}", "interaction_modal.title.follow": "Підписатися на {name}", - "interaction_modal.title.reblog": "Пришвидшити пост {name}", + "interaction_modal.title.reblog": "Поширити допис {name}", "interaction_modal.title.reply": "Відповісти на допис {name}", "intervals.full.days": "{number, plural, one {# день} few {# дні} other {# днів}}", "intervals.full.hours": "{number, plural, one {# година} few {# години} other {# годин}}", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Приховати зображення} other {Приховати зображення}}", "missing_indicator.label": "Не знайдено", "missing_indicator.sublabel": "Ресурс не знайдено", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Тривалість", "mute_modal.hide_notifications": "Сховати сповіщення від користувача?", "mute_modal.indefinite": "Не визначено", @@ -393,7 +397,7 @@ "notification.mention": "{name} згадали вас", "notification.own_poll": "Ваше опитування завершено", "notification.poll": "Опитування, у якому ви голосували, скінчилося", - "notification.reblog": "{name} поширили ваш допис", + "notification.reblog": "{name} поширює ваш допис", "notification.status": "{name} щойно дописує", "notification.update": "{name} змінює допис", "notifications.clear": "Очистити сповіщення", @@ -436,7 +440,7 @@ "picture_in_picture.restore": "Повернути назад", "poll.closed": "Закрито", "poll.refresh": "Оновити", - "poll.total_people": "{count, plural, one {особа} few {особи} many {осіб} other {особи}}", + "poll.total_people": "{count, plural, one {# особа} few {# особи} many {# осіб} other {# особи}}", "poll.total_votes": "{count, plural, one {# голос} few {# голоси} many {# голосів} other {# голосів}}", "poll.vote": "Проголосувати", "poll.voted": "Ви проголосували за цю відповідь", @@ -542,7 +546,7 @@ "status.bookmark": "Додати в закладки", "status.cancel_reblog_private": "Відмінити передмухання", "status.cannot_reblog": "Цей допис не може бути передмухнутий", - "status.copy": "Копіювати посилання до допису", + "status.copy": "Копіювати посилання на допис", "status.delete": "Видалити", "status.detailed_status": "Детальний вигляд бесіди", "status.direct": "Пряме повідомлення до @{name}", @@ -607,7 +611,7 @@ "timeline_hint.resources.followers": "Підписники", "timeline_hint.resources.follows": "Підписки", "timeline_hint.resources.statuses": "Попередні дописи", - "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особи} other {{counter} осіб}} {days, plural, one {за останній день} few {за останні {days} дні} other {за останні {days} днів}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особи} other {{counter} осіб}} {days, plural, one {за останній {days} день} few {за останні {days} дні} other {за останні {days} днів}}", "trends.trending_now": "Популярне зараз", "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.", "units.short.billion": "{count} млрд", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 755dd6ff1d..0d8da88a69 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} پیروی کر رہے ہیں} other {{counter} پیروی کر رہے ہیں}}", "account.follows.empty": "\"یہ صارف ہنوز کسی کی پیروی نہیں کرتا ہے\".", "account.follows_you": "آپ کا پیروکار ہے", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "@{name} سے فروغ چھپائیں", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "اس اکاونٹ کا اخفائی ضابطہ مقفل ہے۔ صارف کی پیروی کون کر سکتا ہے اس کا جائزہ وہ خود لیتا ہے.", "account.media": "وسائل", "account.mention": "ذکر @{name}", - "account.moved_to": "{name} منتقل ہگیا ہے بہ:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "خاموش @{name}", "account.mute_notifications": "@{name} سے اطلاعات خاموش کریں", "account.muted": "خاموش کردہ", @@ -181,6 +182,8 @@ "directory.local": "صرف {domain} سے", "directory.new_arrivals": "نئے آنے والے", "directory.recently_active": "حال میں میں ایکٹیو", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "غیر معینہ", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 2251dddb37..60486ba9c0 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -1,14 +1,14 @@ { - "about.blocks": "Các máy chủ quản trị", + "about.blocks": "Giới hạn chung", "about.contact": "Liên lạc:", "about.disclaimer": "Mastodon là phần mềm tự do mã nguồn mở, một thương hiệu của Mastodon gGmbH.", "about.domain_blocks.comment": "Lý do", "about.domain_blocks.domain": "Máy chủ", - "about.domain_blocks.preamble": "Mastodon cho phép bạn tương tác nội dung và giao tiếp với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.", + "about.domain_blocks.preamble": "Mastodon cho phép bạn tương tác nội dung và giao tiếp với mọi người từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.", "about.domain_blocks.severity": "Mức độ", - "about.domain_blocks.silenced.explanation": "Nói chung, bạn sẽ không thấy người dùng và nội dung từ máy chủ này, trừ khi bạn tự tìm kiếm hoặc tự theo dõi.", + "about.domain_blocks.silenced.explanation": "Nói chung, bạn sẽ không thấy người và nội dung từ máy chủ này, trừ khi bạn tự tìm kiếm hoặc tự theo dõi.", "about.domain_blocks.silenced.title": "Hạn chế", - "about.domain_blocks.suspended.explanation": "Dữ liệu từ máy chủ này sẽ không được xử lý, lưu trữ hoặc trao đổi. Mọi tương tác hoặc giao tiếp với người dùng từ máy chủ này đều bị cấm.", + "about.domain_blocks.suspended.explanation": "Dữ liệu từ máy chủ này sẽ không được xử lý, lưu trữ hoặc trao đổi. Mọi tương tác hoặc giao tiếp với người từ máy chủ này đều bị cấm.", "about.domain_blocks.suspended.title": "Vô hiệu hóa", "about.not_available": "Máy chủ này chưa cung cấp thông tin.", "about.powered_by": "Mạng xã hội liên hợp {mastodon}", @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Theo dõi} other {{counter} Theo dõi}}", "account.follows.empty": "Người này chưa theo dõi ai.", "account.follows_you": "Đang theo dõi bạn", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", "account.joined_short": "Đã tham gia", "account.languages": "Đổi ngôn ngữ mong muốn", @@ -46,7 +47,7 @@ "account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.", "account.media": "Media", "account.mention": "Nhắc đến @{name}", - "account.moved_to": "{name} đã chuyển sang:", + "account.moved_to": "{name} đã chuyển sang máy chủ khác:", "account.mute": "Ẩn @{name}", "account.mute_notifications": "Tắt thông báo từ @{name}", "account.muted": "Đã ẩn", @@ -70,7 +71,7 @@ "admin.dashboard.monthly_retention": "Tỉ lệ người dùng ở lại sau khi đăng ký", "admin.dashboard.retention.average": "Trung bình", "admin.dashboard.retention.cohort": "Tháng đăng ký", - "admin.dashboard.retention.cohort_size": "Người dùng mới", + "admin.dashboard.retention.cohort_size": "Người mới", "alert.rate_limited.message": "Vui lòng thử lại sau {retry_time, time, medium}.", "alert.rate_limited.title": "Vượt giới hạn", "alert.unexpected.message": "Đã xảy ra lỗi không mong muốn.", @@ -122,7 +123,7 @@ "column_subheading.settings": "Cài đặt", "community.column_settings.local_only": "Chỉ máy chủ của bạn", "community.column_settings.media_only": "Chỉ xem media", - "community.column_settings.remote_only": "Chỉ người dùng ở máy chủ khác", + "community.column_settings.remote_only": "Chỉ người ở máy chủ khác", "compose.language.change": "Chọn ngôn ngữ tút", "compose.language.search": "Tìm ngôn ngữ...", "compose_form.direct_message_warning_learn_more": "Tìm hiểu thêm", @@ -181,6 +182,8 @@ "directory.local": "Từ {domain}", "directory.new_arrivals": "Mới tham gia", "directory.recently_active": "Hoạt động gần đây", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "Những tút gần đây của những người có tài khoản thuộc máy chủ {domain}.", "dismissable_banner.dismiss": "Bỏ qua", "dismissable_banner.explore_links": "Những sự kiện đang được thảo luận nhiều trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, other {Ẩn hình ảnh}}", "missing_indicator.label": "Không tìm thấy", "missing_indicator.sublabel": "Nội dung này không còn tồn tại", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Thời hạn", "mute_modal.hide_notifications": "Ẩn thông báo từ người này?", "mute_modal.indefinite": "Vĩnh viễn", @@ -366,7 +370,7 @@ "navigation_bar.bookmarks": "Đã lưu", "navigation_bar.community_timeline": "Cộng đồng", "navigation_bar.compose": "Viết tút mới", - "navigation_bar.direct": "Tin nhắn", + "navigation_bar.direct": "Nhắn riêng", "navigation_bar.discover": "Khám phá", "navigation_bar.domain_blocks": "Máy chủ đã ẩn", "navigation_bar.edit_profile": "Sửa hồ sơ", @@ -381,7 +385,7 @@ "navigation_bar.personal": "Cá nhân", "navigation_bar.pins": "Tút ghim", "navigation_bar.preferences": "Cài đặt", - "navigation_bar.public_timeline": "Thế giới", + "navigation_bar.public_timeline": "Liên hợp", "navigation_bar.search": "Tìm kiếm", "navigation_bar.security": "Bảo mật", "not_signed_in_indicator.not_signed_in": "Bạn cần đăng nhập để truy cập mục này.", @@ -399,7 +403,7 @@ "notifications.clear": "Xóa hết thông báo", "notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?", "notifications.column_settings.admin.report": "Báo cáo mới:", - "notifications.column_settings.admin.sign_up": "Người dùng mới:", + "notifications.column_settings.admin.sign_up": "Người mới tham gia:", "notifications.column_settings.alert": "Thông báo trên máy tính", "notifications.column_settings.favourite": "Lượt thích:", "notifications.column_settings.filter_bar.advanced": "Toàn bộ", @@ -450,7 +454,7 @@ "privacy.private.short": "Chỉ người theo dõi", "privacy.public.long": "Hiển thị với mọi người", "privacy.public.short": "Công khai", - "privacy.unlisted.long": "Công khai nhưng không hiện trên bảng tin", + "privacy.unlisted.long": "Công khai nhưng ẩn trên bảng tin", "privacy.unlisted.short": "Hạn chế", "privacy_policy.last_updated": "Cập nhật lần cuối {date}", "privacy_policy.title": "Chính sách bảo mật", @@ -476,7 +480,7 @@ "report.categories.violation": "Vi phạm quy tắc máy chủ", "report.category.subtitle": "Chọn mục gần khớp nhất", "report.category.title": "Có vấn đề gì với {type}", - "report.category.title_account": "người dùng", + "report.category.title_account": "người này", "report.category.title_status": "tút", "report.close": "Xong", "report.comment.title": "Bạn nghĩ chúng tôi nên biết thêm điều gì?", @@ -514,12 +518,12 @@ "search.placeholder": "Tìm kiếm", "search.search_or_paste": "Tìm kiếm hoặc nhập URL", "search_popout.search_format": "Gợi ý", - "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, biệt danh và hashtag.", + "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm tên người dùng, biệt danh và hashtag.", "search_popout.tips.hashtag": "hashtag", "search_popout.tips.status": "tút", "search_popout.tips.text": "Nội dung trả về là tên người dùng, biệt danh và hashtag", - "search_popout.tips.user": "người dùng", - "search_results.accounts": "Người dùng", + "search_popout.tips.user": "mọi người", + "search_results.accounts": "Mọi người", "search_results.all": "Toàn bộ", "search_results.hashtags": "Hashtags", "search_results.nothing_found": "Không tìm thấy kết quả trùng khớp", @@ -527,8 +531,8 @@ "search_results.statuses_fts_disabled": "Máy chủ của bạn không bật tính năng tìm kiếm tút.", "search_results.title": "Tìm kiếm {q}", "search_results.total": "{count, number} {count, plural, one {kết quả} other {kết quả}}", - "server_banner.about_active_users": "Những người dùng máy chủ này trong 30 ngày qua (MAU)", - "server_banner.active_users": "người dùng hoạt động", + "server_banner.about_active_users": "Những người ở máy chủ này trong 30 ngày qua (MAU)", + "server_banner.active_users": "người hoạt động", "server_banner.administered_by": "Quản trị bởi:", "server_banner.introduction": "{domain} là một phần của mạng xã hội liên hợp {mastodon}.", "server_banner.learn_more": "Tìm hiểu", @@ -594,7 +598,7 @@ "subscribed_languages.target": "Đổi ngôn ngữ mong muốn cho {target}", "suggestions.dismiss": "Tắt đề xuất", "suggestions.header": "Có thể bạn quan tâm…", - "tabs_bar.federated_timeline": "Thế giới", + "tabs_bar.federated_timeline": "Liên hợp", "tabs_bar.home": "Bảng tin", "tabs_bar.local_timeline": "Máy chủ", "tabs_bar.notifications": "Thông báo", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 0108ab3454..41a19303ab 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -39,6 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "This user doesn't follow anyone yet.", "account.follows_you": "ⴹⴼⵕⵏ ⴽⵯⵏ", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "account.media": "ⴰⵙⵏⵖⵎⵉⵙ", "account.mention": "Mention @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "ⵥⵥⵉⵥⵏ @{name}", "account.mute_notifications": "ⵥⵥⵉⵥⵏ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ ⵙⴳ @{name}", "account.muted": "ⵉⵜⵜⵓⵥⵉⵥⵏ", @@ -181,6 +182,8 @@ "directory.local": "From {domain} only", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "ⴼⴼⵔ {number, plural, one {ⵜⴰⵡⵍⴰⴼⵜ} other {ⵜⵉⵡⵍⴰⴼⵉⵏ}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 71415d525b..55f1b58a07 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,7 +1,7 @@ { "about.blocks": "被限制的服务器", "about.contact": "联系方式:", - "about.disclaimer": "Mastodon是免费,开源的软件,也是Mastodon gmbH的商标。", + "about.disclaimer": "Mastodon是免费,开源的软件,由Mastodon gGmbH持有商标。", "about.domain_blocks.comment": "原因", "about.domain_blocks.domain": "域名", "about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。", @@ -39,6 +39,7 @@ "account.following_counter": "正在关注 {counter} 人", "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined_short": "加入于", "account.languages": "更改订阅语言", @@ -46,7 +47,7 @@ "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", "account.media": "媒体", "account.mention": "提及 @{name}", - "account.moved_to": "{name} 已经迁移到:", + "account.moved_to": "{name} 的新账户现在是:", "account.mute": "隐藏 @{name}", "account.mute_notifications": "隐藏来自 @{name} 的通知", "account.muted": "已隐藏", @@ -181,6 +182,8 @@ "directory.local": "仅来自 {domain}", "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "这些是来自 {domain} 用户的最新公共嘟文。", "dismissable_banner.dismiss": "忽略", "dismissable_banner.explore_links": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "隐藏图片", "missing_indicator.label": "找不到内容", "missing_indicator.sublabel": "无法找到此资源", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "持续时长", "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index fb277f50f0..2982716a0d 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -39,6 +39,7 @@ "account.following_counter": "正在關注 {count, plural,one {{counter}}other {{counter} 人}}", "account.follows.empty": "這位使用者尚未關注任何人。", "account.follows_you": "關注你", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "隱藏 @{name} 的轉推", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -46,7 +47,7 @@ "account.locked_info": "這位使用者將私隱設定為「不公開」,會手動審批誰能關注他/她。", "account.media": "媒體", "account.mention": "提及 @{name}", - "account.moved_to": "{name} 已經遷移到:", + "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "將 @{name} 靜音", "account.mute_notifications": "將來自 @{name} 的通知靜音", "account.muted": "靜音", @@ -181,6 +182,8 @@ "directory.local": "僅來自 {domain}", "directory.new_arrivals": "新內容", "directory.recently_active": "最近活躍", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "隱藏圖片", "missing_indicator.label": "找不到內容", "missing_indicator.sublabel": "無法找到內容", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "時間", "mute_modal.hide_notifications": "需要隱藏這使用者的通知嗎?", "mute_modal.indefinite": "沒期限", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index a5c6efb1c9..7c3aa63427 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -39,6 +39,7 @@ "account.following_counter": "正在跟隨 {count, plural,one {{counter}}other {{counter} 人}}", "account.follows.empty": "這位使用者尚未跟隨任何人。", "account.follows_you": "跟隨了您", + "account.go_to_profile": "Go to profile", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", "account.joined_short": "已加入", "account.languages": "變更訂閱的語言", @@ -46,7 +47,7 @@ "account.locked_info": "此帳號的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。", "account.media": "媒體", "account.mention": "提及 @{name}", - "account.moved_to": "{name} 已遷移至:", + "account.moved_to": "{name} 現在的新帳號為:", "account.mute": "靜音 @{name}", "account.mute_notifications": "靜音來自 @{name} 的通知", "account.muted": "已靜音", @@ -181,6 +182,8 @@ "directory.local": "僅來自 {domain} 網域", "directory.new_arrivals": "新人", "directory.recently_active": "最近活躍", + "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "這些是 {domain} 上面託管帳號之最新公開嘟文。", "dismissable_banner.dismiss": "關閉", "dismissable_banner.explore_links": "這些新聞故事正在被此伺服器以及去中心化網路上的人們熱烈討論著。", @@ -358,6 +361,7 @@ "media_gallery.toggle_visible": "切換可見性", "missing_indicator.label": "找不到", "missing_indicator.sublabel": "找不到此資源", + "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.duration": "持續時間", "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", diff --git a/config/locales/activerecord.ar.yml b/config/locales/activerecord.ar.yml index 3f89ea6fa9..a30fd9f383 100644 --- a/config/locales/activerecord.ar.yml +++ b/config/locales/activerecord.ar.yml @@ -21,6 +21,18 @@ ar: username: invalid: يجب فقط أن يحتوي على حروف، وأرقام، وخطوط سفلية reserved: محجوز + admin/webhook: + attributes: + url: + invalid: رابط غير صحيح + doorkeeper/application: + attributes: + website: + invalid: رابط غير صحيح + import: + attributes: + data: + malformed: معتل status: attributes: reblog: @@ -30,3 +42,14 @@ ar: email: blocked: يستخدم مزوّد بريد إلكتروني غير مسموح به unreachable: يبدو أنه لا وجود + role_id: + elevated: لا يمكن أن يكون أعلى من الدور الحالي + user_role: + attributes: + permissions_as_keys: + dangerous: تضمين استأذانات ليست آمنة للدور الأساسي + elevated: لا يمكن تضمين استأذانات التي لا يملكها دورك الحالي + own_role: لا يمكن تغييرها مع دورك الحالي + position: + elevated: لا يمكن أن يكون أعلى من دورك الحالي + own_role: لا يمكن تغييرها مع دورك الحالي diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml index 96612a0719..280f2b6c5a 100644 --- a/config/locales/activerecord.ast.yml +++ b/config/locales/activerecord.ast.yml @@ -12,6 +12,11 @@ ast: text: Motivu errors: models: + account: + attributes: + username: + invalid: ha contener namás lletres, númberos y guiones baxos + reserved: ta acutáu admin/webhook: attributes: url: @@ -20,6 +25,10 @@ ast: attributes: website: invalid: nun ye una URL válida + status: + attributes: + reblog: + taken: d'artículos xá esisten user: attributes: email: diff --git a/config/locales/activerecord.ckb.yml b/config/locales/activerecord.ckb.yml index 0dc0fd7a39..9983824c54 100644 --- a/config/locales/activerecord.ckb.yml +++ b/config/locales/activerecord.ckb.yml @@ -21,6 +21,18 @@ ckb: username: invalid: تەنها پیت، ژمارە و ژێرەوە reserved: تەرخان کراوە + admin/webhook: + attributes: + url: + invalid: بەستەرەکە دروست نیە + doorkeeper/application: + attributes: + website: + invalid: بەستەرەکە دروست نیە + import: + attributes: + data: + malformed: ناتەواوە status: attributes: reblog: @@ -30,3 +42,9 @@ ckb: email: blocked: دابینکەرێکی ئیمەیڵی ڕێگەپێنەدراو بەکاردەهێنێت unreachable: پێناچێت بوونی هەبێت + role_id: + elevated: ناتوانرێت بەرزتربێت لە ڕۆلەکەی خۆت + user_role: + attributes: + permissions_as_keys: + dangerous: ئەو مۆڵەتانەش لەخۆبگرێت کە سەلامەت نین بۆ ڕۆلی سەرەکی diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml index cc650cec83..e2d950d1f3 100644 --- a/config/locales/activerecord.fr.yml +++ b/config/locales/activerecord.fr.yml @@ -7,7 +7,7 @@ fr: options: Choix user: agreement: Contrat de service - email: Adresse courriel + email: Adresse de courriel locale: Langue password: Mot de passe user/account: @@ -29,6 +29,10 @@ fr: attributes: website: invalid: n’est pas une URL valide + import: + attributes: + data: + malformed: est mal formé status: attributes: reblog: diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml index 7a9d54cd24..7ad45964ff 100644 --- a/config/locales/activerecord.he.yml +++ b/config/locales/activerecord.he.yml @@ -28,7 +28,7 @@ he: doorkeeper/application: attributes: website: - invalid: הינה כתובת לא חוקית + invalid: היא כתובת לא חוקית status: attributes: reblog: @@ -43,9 +43,9 @@ he: user_role: attributes: permissions_as_keys: - dangerous: כלול הרשאות לא בטוחות לתפקיד הבסיסי + dangerous: לכלול הרשאות לא בטוחות לתפקיד הבסיסי elevated: לא ניתן לכלול הרשאות שתפקידך הנוכחי לא כולל - own_role: לא ניתן למזג על תפקידך הנוכחי + own_role: לא ניתן למזג עם תפקידך הנוכחי position: elevated: לא יכול להיות גבוה יותר מתפקידך הנוכחי own_role: לא ניתן לשנות באמצעות תפקידך הנוכחי diff --git a/config/locales/activerecord.nn.yml b/config/locales/activerecord.nn.yml index ce37d1856e..30afb8b079 100644 --- a/config/locales/activerecord.nn.yml +++ b/config/locales/activerecord.nn.yml @@ -8,7 +8,7 @@ nn: user: agreement: Serviceavtale email: Epostadresse - locale: Område + locale: Lokale password: Passord user/account: username: Brukarnamn @@ -19,7 +19,7 @@ nn: account: attributes: username: - invalid: må innehalde kun bokstavar, tal og understrekar + invalid: kan berre innehalda bokstavar, tal og understrekar reserved: er reservert admin/webhook: attributes: @@ -29,6 +29,10 @@ nn: attributes: website: invalid: er ikkje ein gyldig URL + import: + attributes: + data: + malformed: er feilutforma status: attributes: reblog: @@ -36,6 +40,7 @@ nn: user: attributes: email: + blocked: bruker ein forboden epostleverandør unreachable: ser ikkje ut til å eksistere role_id: elevated: kan ikkje vere høgare enn di noverande rolle diff --git a/config/locales/activerecord.oc.yml b/config/locales/activerecord.oc.yml index 8a7b70d449..f10a9f90d1 100644 --- a/config/locales/activerecord.oc.yml +++ b/config/locales/activerecord.oc.yml @@ -21,6 +21,18 @@ oc: username: invalid: solament letras, nombres e tirets basses reserved: es reservat + admin/webhook: + attributes: + url: + invalid: es pas una URL valida + doorkeeper/application: + attributes: + website: + invalid: es pas una URL valida + import: + attributes: + data: + malformed: es mal formatat status: attributes: reblog: @@ -30,3 +42,14 @@ oc: email: blocked: utilizar un provesidor d’email pas autorizat unreachable: semblar pas existir + role_id: + elevated: pòt pas èsser superior a vòstre ròtle actual + user_role: + attributes: + permissions_as_keys: + dangerous: inclure d’autorizacions que son pas seguras pel ròtle de basa + elevated: pòt pas inclure d’autorizacions que vòstre ròtle possedís pas + own_role: se pòt pas modificar amb vòstre ròtle actual + position: + elevated: pòt pas èsser superior a vòstre ròtle actual + own_role: se pòt pas modificar amb vòstre ròtle actual diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index 4fd3da5ae7..f02064283f 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -7,7 +7,7 @@ uk: options: Варіанти вибору user: agreement: Угода про надання послуг - email: E-mail адреса + email: Адреса е-пошти locale: Локаль password: Пароль user/account: diff --git a/config/locales/af.yml b/config/locales/af.yml index 7320e4badb..ac4a09b340 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -1,15 +1,40 @@ --- af: about: + contact_missing: Nie ingestel nie contact_unavailable: NVT hosted_on: Mastodon gehuisves op %{domain} + title: Aangaande admin: + accounts: + location: + local: Plaaslik + moderation: + silenced: Beperk + search: Soek + silenced: Beperk + action_logs: + actions: + silence_account_html: "%{name} het %{target} se rekening beperk" + deleted_account: geskrapte rekening announcements: publish: Publiseer published_msg: Aankondiging was suksesvol gepubliseer! unpublish: Depubliseer domain_blocks: existing_domain_block: Jy het alreeds strenger perke ingelê op %{name}. + instances: + back_to_limited: Beperk + moderation: + limited: Beperk + settings: + about: + title: Aangaande + statuses: + favourites: Gunstelinge + strikes: + actions: + silence: "%{name} het %{target} se rekening beperk" trends: only_allowed: Slegs toegelate preview_card_providers: @@ -30,6 +55,18 @@ af: status: Status title: Web-hoeke webhook: Web-hoek + appearance: + advanced_web_interface_hint: 'As jy jou hele skerm wydte wil gebruik, laat die gevorderde web koppelvlak jou toe om konfigurasie op te stel vir vele verskillende kolomme om so veel as moontlik inligting op dieselfde tyd te sien as wat jy wil: Tuis, kennisgewings, gefedereerde tydlyn, enige aantal lyste of hits-etikette.' + application_mailer: + notification_preferences: Verander epos voorkeure + settings: 'Verander epos voorkeure: %{link}' + auth: + logout: Teken Uit + datetime: + distance_in_words: + about_x_hours: "%{count} ure" + about_x_months: "%{count} maande" + about_x_years: "%{count} jare" disputes: strikes: approve_appeal: Aanvaar appêl @@ -44,13 +81,41 @@ af: '429': Too many requests '500': '503': The page could not be served due to a temporary server failure. + exports: + bookmarks: Boekmerke + imports: + types: + bookmarks: Boekmerke navigation: toggle_menu: Skakel-kieslys + number: + human: + decimal_units: + format: "%n %u" + preferences: + other: Ander + posting_defaults: Plasing verstekte + public_timelines: Publieke tydlyne + privacy_policy: + title: Privaatheidsbeleid rss: content_warning: 'Inhoud waarskuwing:' descriptions: account: Publieke plasings vanaf @%{acct} tag: 'Publieke plasings met die #%{hashtag} etiket' + settings: + edit_profile: Redigeer profiel + preferences: Voorkeure + statuses: + content_warning: 'Inhoud waarskuwing: %{warning}' + statuses_cleanup: + ignore_favs: Ignoreer gunstelinge strikes: errors: too_late: Dit is te laat om hierdie staking te appelleer + user_mailer: + warning: + title: + silence: Beperkte rekening + welcome: + edit_profile_action: Stel profiel op diff --git a/config/locales/ar.yml b/config/locales/ar.yml index fee7f25a26..9489aa7c5e 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -46,6 +46,7 @@ ar: avatar: الصورة الرمزية by_domain: النطاق change_email: + changed_msg: تم تغيير البريد بنجاح! current_email: عنوان البريد الإلكتروني الحالي label: تعديل عنوان البريد الإلكتروني new_email: عنوان البريد الإلكتروني الجديد @@ -188,6 +189,7 @@ ar: destroy_ip_block: حذف قانون IP destroy_status: حذف المنشور destroy_unavailable_domain: حذف نطاق غير متوفر + destroy_user_role: حذف الدور disable_2fa_user: تعطيل 2FA disable_custom_emoji: تعطيل الإيموجي المخصص disable_sign_in_token_auth_user: تعطيل مصادقة رمز البريد الإلكتروني للمستخدم @@ -201,6 +203,7 @@ ar: reject_user: ارفض المستخدم remove_avatar_user: احذف الصورة الرمزية reopen_report: إعادة فتح التقرير + resend_user: إعادة إرسال بريد التأكيد reset_password_user: إعادة تعيين كلمة المرور resolve_report: حل الشكوى sensitive_account: وضع علامة على الوسائط في حسابك على أنها حساسة @@ -214,7 +217,9 @@ ar: update_announcement: تحديث الإعلان update_custom_emoji: تحديث الإيموجي المخصص update_domain_block: تحديث كتلة النطاق + update_ip_block: تحديث قاعدة IP update_status: تحديث الحالة + update_user_role: تحديث الدور actions: approve_user_html: قبل %{name} تسجيل %{target} assigned_to_self_report_html: قام %{name} بتعيين التقرير %{target} لأنفسهم @@ -370,6 +375,9 @@ ar: add_new: إضافة created_msg: لقد دخل حظر نطاق البريد الإلكتروني حيّز الخدمة delete: حذف + dns: + types: + mx: سجل MX domain: النطاق new: create: إضافة نطاق @@ -538,6 +546,13 @@ ar: view_profile: اعرض الصفحة التعريفية roles: add_new: إضافة دور + assigned_users: + few: "%{count} مستخدمًا" + many: "%{count} مستخدمين" + one: مستخدم واحد %{count} + other: "%{count} مستخدم" + two: مستخدمان %{count} + zero: "%{count} لا مستخدم" categories: administration: الإدارة invites: الدعوات @@ -547,8 +562,11 @@ ar: everyone: الصلاحيات الافتراضية privileges: administrator: مدير + invite_users: دعوة مستخدمين manage_announcements: ادارة الاعلانات manage_appeals: إدارة الاستئنافات + manage_custom_emojis: إدارة الرموز التعبيريّة المخصصة + manage_custom_emojis_description: السماح للمستخدمين بإدارة الرموز التعبيريّة المخصصة على الخادم manage_federation: إدارة الفديرالية manage_invites: إدارة الدعوات manage_reports: إدارة التقارير @@ -560,6 +578,8 @@ ar: manage_user_access: إدارة وصول المستخدم manage_users: إدارة المستخدمين view_dashboard: عرض لوحة التحكم + view_devops: DevOps + view_devops_description: السماح للمستخدمين بالوصول إلى لوحة Sidekiq و pgHero title: الأدوار rules: add_new: إضافة قاعدة @@ -609,6 +629,7 @@ ar: report: إبلاغ deleted: محذوف favourites: المفضلة + history: تاريخ التعديلات in_reply_to: رَدًا على language: اللغة media: @@ -651,6 +672,7 @@ ar: disallow_provider: عدم السماح للناشر title: الروابط المتداولة usage_comparison: تمت مشاركته %{today} مرات اليوم، مقارنة بـ %{yesterday} بالأمس + only_allowed: من سُمِحَ لهم فقط pending_review: في انتظار المراجعة preview_card_providers: title: الناشرون @@ -936,9 +958,12 @@ ar: empty: ليست لديك أية عوامل تصفية. title: عوامل التصفية new: + save: حفظ عامل التصفية الجديد title: إضافة عامل تصفية جديد statuses: back_to_filter: العودة إلى عامل التصفية + index: + title: الرسائل المصفّاة footer: trending_now: المتداولة الآن generic: diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 3f6602e582..18aa489470 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -23,6 +23,7 @@ ast: email: Corréu followers: Siguidores ip: IP + joined: Data de xunión location: local: Llocal remote: Remotu @@ -99,7 +100,16 @@ ast: permissions_count: one: "%{count} permisu" other: "%{count} permisos" + statuses: + metadata: Metadatos + strikes: + appeal_approved: Apellóse + appeal_pending: Apellación pendiente title: Alministración + trends: + tags: + dashboard: + tag_accounts_measure: usos únicos webhooks: events: Eventos admin_mailer: @@ -126,7 +136,7 @@ ast: auth: change_password: Contraseña delete_account: Desaniciu de la cuenta - delete_account_html: Si deseyes desaniciar la to cuenta, pues
      siguir equí. Va pidísete la confirmación. + delete_account_html: Si quies desaniciar la cuenta, pues facelo equí. Va pidísete que confirmes l'aición. description: suffix: "¡Con una cuenta, vas ser a siguir a persones, espublizar anovamientos ya intercambiar mensaxes con usuarios de cualesquier sirvidor de Mastodon y más!" didnt_get_confirmation: "¿Nun recibiesti les instrucciones de confirmación?" @@ -198,6 +208,7 @@ ast: storage: Almacenamientu multimedia featured_tags: add_new: Amestar + hint_html: "¿Qué son les etiquetes destacaes? Apaecen de forma bien visible nel perfil públicu y permite que les persones restolen los tos artículos públicos per duana d'eses etiquetes. Son una gran ferramienta pa tener un rexistru de trabayos creativos o de proyeutos a plazu llongu." filters: contexts: notifications: Avisos @@ -278,9 +289,20 @@ ast: body: "%{name} compartió'l to estáu:" subject: "%{name} compartió'l to estáu" title: Compartición nueva de barritu + update: + subject: "%{name} editó un artículu" notifications: email_events_hint: 'Esbilla los eventos de los que quies recibir avisos:' other_settings: Otros axustes + number: + human: + decimal_units: + units: + billion: MM + million: M + quadrillion: mil B + thousand: mil + trillion: B pagination: next: Siguiente polls: @@ -427,4 +449,5 @@ ast: otp_lost_help_html: Si pierdes l'accesu, contauta con %{email} seamless_external_login: Aniciesti sesión pente un serviciu esternu, polo que los axustes de la contraseña y corréu nun tán disponibles. verification: + explanation_html: 'Pues verificate como la persona propietaria de los enllaces nos metadatos del to perfil. Pa ello, el sitiu web enllaciáu ha contener un enllaz al to perfil de Mastodon. Esti enllaz ha tener l''atributu rel="me". El testu del enllaz nun importa. Equí tienes un exemplu:' verification: Verificación diff --git a/config/locales/ca.yml b/config/locales/ca.yml index bd778dc5c8..f57d7cc09d 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -283,6 +283,7 @@ ca: update_ip_block_html: "%{name} ha canviat la norma per la IP %{target}" update_status_html: "%{name} ha actualitzat l'estat de %{target}" update_user_role_html: "%{name} ha canviat el rol %{target}" + deleted_account: compte eliminat empty: No s’han trobat registres. filter_by_action: Filtra per acció filter_by_user: Filtra per usuari diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 562c6b00a9..93a92043eb 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -1,10 +1,11 @@ --- ckb: about: - about_mastodon_html: 'تۆڕی کۆمەڵایەتی داهاتوو: هیچ ڕیکلامێک ، هیچ چاودێرییەکی کۆمپانیا ، دیزاینی ئەخلاقی و لامەرکەزی! خاوەنی داتاکانت نابێ لە ماستۆدۆن!' + about_mastodon_html: 'تۆڕی کۆمەڵایەتی داهاتوو: هیچ ڕیکلامێک، هیچ چاودێرییەکی کۆمپانیا، دیزاینی ئەخلاقی و لامەرکەزی! خاوەنی داتاکانت بە لە ماستۆدۆن!' contact_missing: سازنەکراوە contact_unavailable: بوونی نییە hosted_on: مەستودۆن میوانداری کراوە لە %{domain} + title: دەربارە accounts: follow: شوێن کەوە followers: @@ -37,11 +38,17 @@ ckb: avatar: وێنۆچکە by_domain: دۆمەین change_email: + changed_msg: ئیمەیڵ بەسەرکەوتوویی گۆڕدرا! current_email: ئیمەیلی ئێستا label: گۆڕینی ئیمێڵ new_email: ئیمەیڵی نوێ submit: گۆڕینی ئیمێڵ title: گۆڕینی ئیمەیڵ بۆ %{username} + change_role: + changed_msg: ڕۆڵ بەسەرکەوتوویی گۆڕدرا! + label: گۆڕینی ڕۆڵ + no_role: ڕۆڵ نیە + title: ڕۆڵی %{username} بگۆڕە confirm: پشتڕاستی بکەوە confirmed: پشتڕاست کرا confirming: پشتڕاستکردنەوە @@ -68,7 +75,7 @@ ckb: header: سەرپەڕە inbox_url: نیشانی هاتنەژوور invite_request_text: هۆکارەکانی بەشداریکردن - invited_by: هاتۆتە ژورەوە لە لایەن + invited_by: بانگهێشتکراو لە لایەن ip: ئای‌پی joined: ئەندام بوو لە location: @@ -85,6 +92,7 @@ ckb: active: چالاک all: هەموو pending: چاوەڕوان + silenced: سنووردار suspended: ڕاگرتن title: بەڕێوەبردن moderation_notes: بەڕێوەبردنی تێبینیەکان @@ -92,6 +100,7 @@ ckb: most_recent_ip: نوێترین ئای پی no_account_selected: هیچ هەژمارەیەک نەگۆڕاوە وەک ئەوەی هیچ یەکێک دیاری نەکراوە no_limits_imposed: هیچ سنوورێک نەسەپێنرا + no_role_assigned: ڕۆڵ دیاری نەکراوە not_subscribed: بەشدار نەبوو pending: پێداچوونەوەی چاوەڕوان perform_full_suspension: ڕاگرتن @@ -115,6 +124,7 @@ ckb: reset: ڕێکخستنەوە reset_password: گەڕانەوەی تێپەڕوشە resubscribe: دووبارە ئابونەبوون + role: ڕۆڵ search: گەڕان search_same_email_domain: بەکارهێنەرانی دیکە بە ئیمەیلی یەکسان search_same_ip: بەکارهێنەرانی تر بەهەمان ئای پی @@ -131,10 +141,13 @@ ckb: silenced: سنوورکرا statuses: دۆخەکان subscribe: ئابوونە + suspend: ڕاگرتن suspended: ڕاگرتن suspension_irreversible: داتای ئەم هەژمارەیە بە شێوەیەکی نائاسایی سڕاوەتەوە. دەتوانیت هەژمارەکەت ڕابخەیت بۆ ئەوەی بەکاربێت بەڵام هیچ داتایەک ناگەڕگەڕێتەوە کە پێشتر بوونی بوو. suspension_reversible_hint_html: هەژمارە ڕاگیرا ، و داتاکە بەتەواوی لە %{date} لادەبرێت. تا ئەو کاتە هەژمارەکە دەتوانرێت بە بێ هیچ کاریگەریەکی خراپ بژمێردرێتەوە. ئەگەر دەتەوێت هەموو داتاکانی هەژمارەکە بسڕەوە، دەتوانیت لە خوارەوە ئەمە بکەیت. title: هەژمارەکان + unblock_email: کردنەوەی ئیمەیڵ + unblocked_email_msg: بەسەرکەوتوویی ئیمەیڵی %{username} کرایەوە unconfirmed_email: ئیمەیڵی پشتڕاستنەکراو undo_sensitized: " هەستیار نەکردن" undo_silenced: بێدەنگ ببە @@ -153,17 +166,21 @@ ckb: approve_user: پەسەندکردنی بەکارهێنەر assigned_to_self_report: تەرخانکردنی گوزارشت change_email_user: گۆڕینی ئیمەیڵ بۆ بەکارهێنەر + change_role_user: گۆڕینی ڕۆڵی بەکارهێنەر confirm_user: دڵنیابوون لە بەکارهێنەر create_account_warning: دروستکردنی ئاگاداری create_announcement: دروستکردنی راگەیەندراو + create_canonical_email_block: دروستکردنی بلۆککردنی ئیمەیڵ create_custom_emoji: دروستکردنی ئێمۆمۆجی دڵخواز create_domain_allow: دروستکردنی ڕێپێدان بە دۆمەین create_domain_block: دروستکردنی بلۆکی دۆمەین create_email_domain_block: دروستکردنی بلۆکی دۆمەینی ئیمەیڵ create_ip_block: دروستکردنی یاسای IP create_unavailable_domain: دروستکردنی دۆمەینی بەردەست نییە + create_user_role: دروستکردنی پلە demote_user: دابەزاندنی ئاستی بەکارهێنەر destroy_announcement: سڕینەوەی راگەیەندراو + destroy_canonical_email_block: سڕینەوەی بلۆکی ئیمەیڵ destroy_custom_emoji: سڕینەوەی ئێمۆمۆجی تایبەتمەند destroy_domain_allow: سڕینەوەی ڕێپێدان بە دۆمەین destroy_domain_block: سڕینەوەی بلۆکی دۆمەین @@ -172,6 +189,7 @@ ckb: destroy_ip_block: سڕینەوەی یاسای IP destroy_status: دۆخ بسڕەوە destroy_unavailable_domain: دۆمەینی بەردەست نییە بسڕەوە + destroy_user_role: لەناوبردنی پلە disable_2fa_user: لەکارخستنی 2FA disable_custom_emoji: سڕینەوەی ئێمۆمۆجی تایبەتمەند disable_sign_in_token_auth_user: ڕەسەنایەتی نیشانەی ئیمەیڵ بۆ بەکارهێنەر لەکاربخە @@ -185,6 +203,7 @@ ckb: reject_user: بەکارهێنەر ڕەت بکەرەوە remove_avatar_user: لابردنی وێنۆجکە reopen_report: دووبارە کردنەوەی گوزارشت + resend_user: دووبارە ناردنی ئیمەیڵی پشتڕاستکردنەوە reset_password_user: گەڕانەوەی تێپەڕوشە resolve_report: گوزارشت چارەسەربکە sensitive_account: میدیاکە لە هەژمارەکەت وەک هەستیار نیشانە بکە @@ -198,7 +217,9 @@ ckb: update_announcement: بەڕۆژکردنەوەی راگەیەندراو update_custom_emoji: بەڕۆژکردنی ئێمۆمۆجی دڵخواز update_domain_block: نوێکردنەوەی بلۆکی دۆمەین + update_ip_block: نوێکردنەوەی یاسای IP update_status: بەڕۆژکردنی دۆخ + update_user_role: نوێکردنەوەی پلە actions: update_status_html: "%{name} پۆستی نوێکراوە لەلایەن %{target}" empty: هیچ لاگی کارنەدۆزرایەوە. @@ -771,7 +792,7 @@ ckb: '86400': ١ ڕۆژ expires_in_prompt: هەرگیز generate: دروستکردنی لینکی بانگهێشت - invited_by: 'بانگهێشتکرایت لەلایەن:' + invited_by: 'بانگهێشت کراویت لەلایەن:' max_uses: one: ١ بار other: "%{count} بار" diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 3ea6442c20..33fed4ee99 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -211,6 +211,7 @@ cs: reject_user: Odmítnout uživatele remove_avatar_user: Odstranit avatar reopen_report: Znovu otevřít hlášení + resend_user: Znovu odeslat potvrzovací e-mail reset_password_user: Obnovit heslo resolve_report: Označit hlášení jako vyřešené sensitive_account: Vynucení citlivosti účtu @@ -243,6 +244,7 @@ cs: create_email_domain_block_html: Uživatel %{name} zablokoval e-mailovou doménu %{target} create_ip_block_html: Uživatel %{name} vytvořil pravidlo pro IP %{target} create_unavailable_domain_html: "%{name} zastavil doručování na doménu %{target}" + create_user_role_html: "%{name} vytvořil %{target} roli" demote_user_html: Uživatel %{name} degradoval uživatele %{target} destroy_announcement_html: Uživatel %{name} odstranil oznámení %{target} destroy_custom_emoji_html: "%{name} odstranil emoji %{target}" @@ -283,6 +285,7 @@ cs: update_ip_block_html: "%{name} změnil pravidlo pro IP %{target}" update_status_html: Uživatel %{name} aktualizoval příspěvek uživatele %{target} update_user_role_html: "%{name} změnil %{target} roli" + deleted_account: smazaný účet empty: Nebyly nalezeny žádné záznamy. filter_by_action: Filtrovat podle akce filter_by_user: Filtrovat podle uživatele @@ -729,6 +732,7 @@ cs: destroyed_msg: Upload stránky byl úspěšně smazán! statuses: account: Autor + application: Aplikace back_to_account: Zpět na stránku účtu back_to_report: Zpět na stránku hlášení batch: @@ -747,6 +751,7 @@ cs: original_status: Původní příspěvek status_changed: Příspěvek změněn title: Příspěvky účtu + trending: Populární visibility: Viditelnost with_media: S médii strikes: diff --git a/config/locales/da.yml b/config/locales/da.yml index c2bccb224f..7df261a4f8 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -86,7 +86,7 @@ da: login_status: Indlogningsstatus media_attachments: Medievedhæftninger memorialize: Omdan til mindekonto - memorialized: Memorialiseret + memorialized: Gjort til mindekonto memorialized_msg: "%{username} gjort til mindekonto" moderation: active: Aktiv @@ -283,6 +283,7 @@ da: update_ip_block_html: "%{name} ændrede reglen for IP'en %{target}" update_status_html: "%{name} opdaterede indlægget fra %{target}" update_user_role_html: "%{name} ændrede %{target}-rolle" + deleted_account: slettet konto empty: Ingen logger fundet. filter_by_action: Filtrér efter handling filter_by_user: Filtrér efter bruger @@ -624,7 +625,7 @@ da: administrator_description: Brugere med denne rolle kan omgå alle tilladelser delete_user_data: Slet brugerdata delete_user_data_description: Tillader brugere at slette andre brugeres data straks - invite_users: Invitere brugere + invite_users: Invitér brugere invite_users_description: Tillader brugere at invitere nye personer til serveren manage_announcements: Håndtere bekendtgørelser manage_announcements_description: Tillader brugere at håndtere bekendtgørelser på serveren @@ -636,7 +637,7 @@ da: manage_custom_emojis_description: Tillader brugere at håndtere tilpassede emojier på serveren manage_federation: Håndtere federation manage_federation_description: Tillader brugere at blokere eller tillade federation med andre domæner og styre leverbarhed - manage_invites: Håndtere invitationer + manage_invites: Administrér invitationer manage_invites_description: Tillader brugere at gennemse og deaktivere invitationslinks manage_reports: Håndtere rapporter manage_reports_description: Tillader brugere at vurdere rapporter og, i overensstemmelse hermed, at udføre moderationshandlinger @@ -918,7 +919,7 @@ da: delete_account: Slet konto delete_account_html: Ønsker du at slette din konto, kan du gøre dette hér. Du vil blive bedt om bekræftelse. description: - prefix_invited_by_user: "@%{name} inviterer dig til at deltage på denne Mastodon-server!" + prefix_invited_by_user: "@%{name} inviterer dig ind på denne Mastodon-server!" prefix_sign_up: Tilmeld dig Mastodon i dag! suffix: Du vil med en konto kunne følge personer, indsende opdateringer og udveksle beskeder med brugere fra enhver Mastodon-server, og meget mere! didnt_get_confirmation: Ikke modtaget nogle bekræftelsesinstruktioner? @@ -1251,6 +1252,8 @@ da: carry_blocks_over_text: Denne bruger er flyttet fra %{acct}, som du har haft blokeret. carry_mutes_over_text: Denne bruger er flyttet fra %{acct}, som du har haft tavsgjort. copy_account_note_text: 'Denne bruger er flyttet fra %{acct}, hvor dine tidligere noter om dem var:' + navigation: + toggle_menu: Åbn/luk menu notification_mailer: admin: report: diff --git a/config/locales/de.yml b/config/locales/de.yml index 3944d031c4..14bbaf51c9 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -45,10 +45,10 @@ de: submit: E-Mail-Adresse ändern title: E-Mail-Adresse für %{username} ändern change_role: - changed_msg: Benutzerrechte erfolgreich aktualisiert! - label: Benutzerrechte verändern - no_role: Keine Benutzerrechte - title: Benutzerrechte für %{username} bearbeiten + changed_msg: Benutzer*innen-Rechte erfolgreich aktualisiert! + label: Benutzer*innen-Rechte verändern + no_role: Keine Benutzer*innen-Rechte + title: Benutzer*innen-Rechte für %{username} bearbeiten confirm: Bestätigen confirmed: Bestätigt confirming: Verifiziert @@ -129,8 +129,8 @@ de: resubscribe: Wieder abonnieren role: Rolle search: Suche - search_same_email_domain: Andere Benutzer mit der gleichen E-Mail-Domain - search_same_ip: Andere Benutzer mit derselben IP-Adresse + search_same_email_domain: Andere Benutzer*innen mit der gleichen E-Mail-Domain + search_same_ip: Andere Benutzer*innen mit derselben IP-Adresse security_measures: only_password: Nur Passwort password_and_2fa: Passwort und 2FA @@ -167,11 +167,11 @@ de: action_logs: action_types: approve_appeal: Einspruch annehmen - approve_user: Benutzer genehmigen + approve_user: Benutzer*in genehmigen assigned_to_self_report: Bericht zuweisen - change_email_user: E-Mail des Benutzers ändern - change_role_user: Rolle des Benutzers ändern - confirm_user: Benutzer bestätigen + change_email_user: E-Mail des Accounts ändern + change_role_user: Rolle des Profils ändern + confirm_user: Benutzer*in bestätigen create_account_warning: Warnung erstellen create_announcement: Ankündigung erstellen create_canonical_email_block: E-Mail-Block erstellen @@ -182,7 +182,7 @@ de: create_ip_block: IP-Regel erstellen create_unavailable_domain: Nicht verfügbare Domain erstellen create_user_role: Rolle erstellen - demote_user: Benutzer degradieren + demote_user: Benutzer*in herabstufen destroy_announcement: Ankündigung löschen destroy_canonical_email_block: E-Mail-Blockade löschen destroy_custom_emoji: Eigene Emojis löschen @@ -197,14 +197,14 @@ de: disable_2fa_user: 2FA deaktivieren disable_custom_emoji: Benutzerdefiniertes Emoji deaktivieren disable_sign_in_token_auth_user: Zwei-Faktor-Authentisierung (2FA) per E-Mail für diesen Account deaktivieren - disable_user: Benutzer deaktivieren + disable_user: Benutzer*in deaktivieren enable_custom_emoji: Benutzerdefiniertes Emoji aktivieren enable_sign_in_token_auth_user: Zwei-Faktor-Authentisierung (2FA) per E-Mail für diesen Account aktivieren - enable_user: Benutzer aktivieren + enable_user: Benutzer*in aktivieren memorialize_account: Gedenkkonto - promote_user: Benutzer befördern + promote_user: Benutzer*in hochstufen reject_appeal: Einspruch ablehnen - reject_user: Benutzer ablehnen + reject_user: Benutzer*in ablehnen remove_avatar_user: Profilbild entfernen reopen_report: Meldung wieder eröffnen resend_user: Bestätigungs-E-Mail erneut senden @@ -283,9 +283,10 @@ de: update_ip_block_html: "%{name} hat die Regel für IP %{target} geändert" update_status_html: "%{name} hat einen Beitrag von %{target} aktualisiert" update_user_role_html: "%{name} hat die Rolle %{target} geändert" + deleted_account: gelöschtes Konto empty: Keine Protokolle gefunden. filter_by_action: Nach Aktion filtern - filter_by_user: Nach Benutzer filtern + filter_by_user: Nach Benutzer*in filtern title: Überprüfungsprotokoll announcements: destroyed_msg: Ankündigung erfolgreich gelöscht! @@ -339,10 +340,10 @@ de: updated_msg: Emoji erfolgreich aktualisiert! upload: Hochladen dashboard: - active_users: Aktive Benutzer + active_users: aktive Benutzer*innen interactions: Interaktionen media_storage: Medien - new_users: Neue Benutzer + new_users: neue Benutzer*innen opened_reports: Erstellte Meldungen pending_appeals_html: one: "%{count} ausstehender Einspruch" @@ -354,8 +355,8 @@ de: one: "%{count} ausstehender Hashtag" other: "%{count} ausstehende Hashtags" pending_users_html: - one: "%{count} ausstehender Benutzer" - other: "%{count} ausstehende Benutzer" + one: "%{count} unerledigte*r Benutzer*in" + other: "%{count} unerledigte Benutzer*innen" resolved_reports: Gelöste Meldungen software: Software sources: Registrierungsquellen @@ -583,7 +584,7 @@ de: title: Notizen notes_description_html: Zeige und hinterlasse Notizen an andere Moderator_innen und dein zukünftiges Ich quick_actions_description_html: 'Führe eine schnelle Aktion aus oder scrolle nach unten, um gemeldete Inhalte zu sehen:' - remote_user_placeholder: der entfernte Benutzer von %{instance} + remote_user_placeholder: das externe Profil von %{instance} reopen: Meldung wieder eröffnen report: 'Meldung #%{id}' reported_account: Gemeldetes Konto @@ -612,54 +613,54 @@ de: moderation: Moderation special: Spezial delete: Löschen - description_html: Mit Benutzerrollenkannst du die Funktionen und Bereiche von Mastodon anpassen, auf die deine Benutzer zugreifen können. + description_html: Mit Benutzer*inn-Rollen kannst du die Funktionen und Bereiche von Mastodon anpassen, auf die deine Benutzer*innen zugreifen können. edit: "'%{name}' Rolle bearbeiten" everyone: Standardberechtigungen - everyone_full_description_html: Das ist die -Basis-Rolle, die jeden Benutzer betrifft, auch diejenigen ohne zugewiesene Rolle. Alle anderen Rollen erben Berechtigungen davon. + everyone_full_description_html: Das ist die -Basis-Rolle, die alle Benutzer*innen betrifft, auch diejenigen ohne zugewiesene Rolle. Alle anderen Rollen erben Berechtigungen davon. permissions_count: one: "%{count} Berechtigung" other: "%{count} Berechtigungen" privileges: administrator: Administrator - administrator_description: Benutzer mit dieser Berechtigung werden jede Berechtigung umgehen - delete_user_data: Benutzerdaten löschen - delete_user_data_description: Erlaubt Benutzern, die Daten anderer Benutzer ohne Verzögerung zu löschen - invite_users: Benutzer einladen - invite_users_description: Erlaubt Benutzern, neue Leute zum Server einzuladen + administrator_description: Benutzer*innen mit dieser Berechtigung werden alle Beschränkungen umgehen + delete_user_data: Löschen der Account-Daten + delete_user_data_description: Erlaubt Benutzer*innen, die Daten anderer Benutzer*innen sofort zu löschen + invite_users: Benutzer*innen einladen + invite_users_description: Erlaubt Benutzer*innen, neue Leute zum Server einzuladen manage_announcements: Ankündigungen verwalten - manage_announcements_description: Erlaubt Benutzern, Ankündigungen auf dem Server zu verwalten + manage_announcements_description: Erlaubt Benutzer*innen, Ankündigungen auf dem Server zu verwalten manage_appeals: Anträge verwalten - manage_appeals_description: Erlaubt es Benutzern, Anträge gegen Moderationsaktionen zu überprüfen + manage_appeals_description: Erlaubt es Benutzer*innen, Entscheidungen der Moderator*innen zu widersprechen manage_blocks: Geblocktes verwalten - manage_blocks_description: Erlaubt Benutzern, E-Mail-Anbieter und IP-Adressen zu blockieren + manage_blocks_description: Erlaubt Benutzer*innen, E-Mail-Provider und IP-Adressen zu blockieren manage_custom_emojis: Benutzerdefinierte Emojis verwalten - manage_custom_emojis_description: Erlaubt es Benutzern, eigene Emojis auf dem Server zu verwalten + manage_custom_emojis_description: Erlaubt es Benutzer*innen, eigene Emojis auf dem Server zu verwalten manage_federation: Föderation verwalten - manage_federation_description: Erlaubt es Benutzern, Föderation mit anderen Domains zu blockieren oder zuzulassen und die Zustellbarkeit zu kontrollieren + manage_federation_description: Erlaubt es Benutzer*innen, den Zusammenschluss mit anderen Domains zu blockieren oder zuzulassen und die Zustellbarkeit zu kontrollieren manage_invites: Einladungen verwalten - manage_invites_description: Erlaubt es Benutzern, Einladungslinks zu durchsuchen und zu deaktivieren + manage_invites_description: Erlaubt es Benutzer*innen, Einladungslinks zu durchsuchen und zu deaktivieren manage_reports: Meldungen verwalten - manage_reports_description: Erlaubt es Benutzern, Meldungen zu überprüfen und Moderationsaktionen gegen sie durchzuführen + manage_reports_description: Erlaubt es Benutzer*innen, Meldungen zu überprüfen und Vorfälle zu moderieren manage_roles: Rollen verwalten - manage_roles_description: Erlaubt es Benutzern, Rollen unter ihren Rollen zu verwalten und zuzuweisen + manage_roles_description: Erlaubt es Benutzer*innen, Rollen, die sich unterhalb der eigenen Rolle befinden, zu verwalten und zuzuweisen manage_rules: Regeln verwalten - manage_rules_description: Erlaubt es Benutzern, Serverregeln zu ändern + manage_rules_description: Erlaubt es Benutzer*innen, Serverregeln zu ändern manage_settings: Einstellungen verwalten - manage_settings_description: Erlaubt es Benutzern, Seiten-Einstellungen zu ändern + manage_settings_description: Erlaubt es Benutzer*innen, Einstellungen dieser Instanz zu ändern manage_taxonomies: Taxonomien verwalten - manage_taxonomies_description: Ermöglicht Benutzern die Überprüfung angesagter Inhalte und das Aktualisieren der Hashtag-Einstellungen - manage_user_access: Benutzerzugriff verwalten + manage_taxonomies_description: Ermöglicht Benutzer*innen, die Trends zu überprüfen und die Hashtag-Einstellungen zu aktualisieren + manage_user_access: Benutzer*in-Zugriff verwalten manage_user_access_description: Erlaubt es Benutzer*innen, die Zwei-Faktor-Authentisierung (2FA) anderer Benutzer zu deaktivieren, ihre E-Mail-Adresse zu ändern und ihr Passwort zurückzusetzen - manage_users: Benutzer verwalten - manage_users_description: Erlaubt es Benutzern, die Details anderer Benutzer anzuzeigen und Moderationsaktionen gegen sie auszuführen + manage_users: Benutzer*innen verwalten + manage_users_description: Erlaubt es Benutzer*innen, die Details anderer Profile einzusehen und diese Accounts zu moderieren manage_webhooks: Webhooks verwalten - manage_webhooks_description: Erlaubt es Benutzern, Webhooks für administrative Ereignisse einzurichten + manage_webhooks_description: Erlaubt es Benutzer*innen, Webhooks für administrative Vorkommnisse einzurichten view_audit_log: Audit-Log anzeigen - view_audit_log_description: Erlaubt es Benutzern, den Verlauf von administrativen Aktionen auf dem Server zu sehen + view_audit_log_description: Erlaubt es Benutzer*innen, den Verlauf der administrativen Handlungen auf diesem Server einzusehen view_dashboard: Dashboard anzeigen - view_dashboard_description: Gewährt Benutzern den Zugriff auf das Dashboard und verschiedene Metriken + view_dashboard_description: Gewährt Benutzer*innen den Zugriff auf das Dashboard und verschiedene Metriken view_devops: DevOps - view_devops_description: Erlaubt es Benutzern, auf die Sidekiq- und pgHero-Dashboards zuzugreifen + view_devops_description: Erlaubt es Benutzer*innen, auf die Sidekiq- und pgHero-Dashboards zuzugreifen title: Rollen rules: add_new: Regel hinzufügen @@ -672,7 +673,7 @@ de: about: manage_rules: Serverregeln verwalten preamble: Schildere ausführlich, wie Dein Server betrieben, moderiert und finanziert wird. - rules_hint: Es gibt einen eigenen Bereich für Regeln, an die sich Ihre Benutzer halten sollen. + rules_hint: Es gibt einen eigenen Bereich für Regeln, die deine Benutzer*innen einhalten müssen. title: Über appearance: preamble: Passen Sie Mastodons Weboberfläche an. @@ -693,7 +694,7 @@ de: domain_blocks: all: An alle disabled: An niemanden - users: Für angemeldete lokale Benutzer + users: Für angemeldete lokale Benutzer*innen registrations: preamble: Lege fest, wer auf Deinem Server ein Konto erstellen darf. title: Registrierungen @@ -766,7 +767,7 @@ de: links: allow: Erlaube Link allow_provider: Erlaube Herausgeber - description_html: Dies sind Links, die derzeit von Konten geteilt werden, von denen dein Server Beiträge sieht. Es kann deinen Benutzern helfen herauszufinden, was in der Welt vor sich geht. Es werden keine Links öffentlich angezeigt, bis du den Publisher genehmigst. Du kannst auch einzelne Links zulassen oder ablehnen. + description_html: Dies sind Links, die derzeit von zahlreichen Accounts geteilt werden und die deinem Server aufgefallen sind. Die Benutzer*innen können darüber herausfinden, was in der Welt vor sich geht. Die Links werden allerdings erst dann öffentlich vorgeschlagen, wenn du die Herausgeber*innen genehmigt hast. Du kannst alternativ aber auch nur einzelne URLs zulassen oder ablehnen. disallow: Verbiete Link disallow_provider: Verbiete Herausgeber no_link_selected: Keine Links wurden geändert, da keine ausgewählt wurden @@ -1351,7 +1352,7 @@ de: relationship: Beziehung remove_selected_domains: Entferne alle Follower von den ausgewählten Domains remove_selected_followers: Entferne ausgewählte Follower - remove_selected_follows: Entfolge ausgewählten Benutzern + remove_selected_follows: Entfolge ausgewählten Benutzer*innen status: Kontostatus remote_follow: missing_resource: Die erforderliche Weiterleitungs-URL für dein Konto konnte nicht gefunden werden @@ -1422,7 +1423,7 @@ de: export: Export featured_tags: Empfohlene Hashtags import: Import - import_and_export: Importieren und Exportieren + import_and_export: Import und Export migrate: Konto-Umzug notifications: Benachrichtigungen preferences: Einstellungen @@ -1471,7 +1472,7 @@ de: show_more: Mehr anzeigen show_newer: Neuere anzeigen show_older: Ältere anzeigen - show_thread: Zeige Konversation + show_thread: Zeige Unterhaltung sign_in_to_participate: Melde dich an, um an der Konversation teilzuhaben title: '%{name}: "%{quote}"' visibilities: diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml index 7429b3014e..a0bebf98d5 100644 --- a/config/locales/devise.ast.yml +++ b/config/locales/devise.ast.yml @@ -6,7 +6,7 @@ ast: send_instructions: Nunos minutos, vas recibir un corréu coles instrucciones pa cómo confirmar la direición de corréu. Comprueba la carpeta Puxarra si nun lu recibiesti. send_paranoid_instructions: Si la direición de corréu esiste na nuesa base de datos, nunos minutos vas recibir un corréu coles instrucciones pa cómo confirmala. Comprueba la carpeta Puxarra si nun lu recibiesti. failure: - already_authenticated: Yá aniciesti sesión. + already_authenticated: Xá aniciesti la sesión. inactive: Entá nun s'activó la cuenta. last_attempt: Tienes un intentu más enantes de bloquiar la cuenta. locked: La cuenta ta bloquiada. @@ -17,6 +17,7 @@ ast: mailer: confirmation_instructions: explanation: Creesti una cuenta en %{host} con esta direición de corréu. Tas a un calcu d'activala. Si nun fuisti tu, inora esti corréu. + extra_html: Revisa tamién les regles del sirvidor y los nuesos términos del serviciu. email_changed: explanation: 'La direición de corréu de la cuenta camudó a:' subject: 'Mastodón: Camudó la direición de corréu' @@ -49,7 +50,7 @@ ast: updated: La cuenta anovóse correutamente. sessions: already_signed_out: Zarresti la sesión correutamente. - signed_in: Aniciesti sesión correutamente. + signed_in: Aniciesti la sesión correutamente. signed_out: Zarresti la sesión correutamente. unlocks: send_instructions: Nunos minutos vas recibir un corréu coles instrucciones pa cómo desbloquiar la cuenta. Comprueba la carpeta Puxarra si nun lu recibiesti. diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml index c5eae0cc52..03dce9bcd8 100644 --- a/config/locales/devise.fi.yml +++ b/config/locales/devise.fi.yml @@ -111,5 +111,5 @@ fi: not_found: ei löydy not_locked: ei ollut lukittu not_saved: - one: '1 virhe esti kohteen %{resource} tallennuksen:' + one: 'Yksi virhe esti kohteen %{resource} tallentamisen:' other: "%{count} virhettä esti kohteen %{resource} tallentamisen:" diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml index 41868a823a..b5cee9d2a5 100644 --- a/config/locales/devise.fr.yml +++ b/config/locales/devise.fr.yml @@ -2,7 +2,7 @@ fr: devise: confirmations: - confirmed: Votre adresse courriel a été validée. + confirmed: Votre adresse de courriel a été validée. send_instructions: Vous allez recevoir par courriel les instructions nécessaires à la confirmation de votre compte dans quelques minutes. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables. send_paranoid_instructions: Si votre adresse électronique existe dans notre base de données, vous allez bientôt recevoir un courriel contenant les instructions de confirmation de votre compte. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables. failure: diff --git a/config/locales/devise.fy.yml b/config/locales/devise.fy.yml index e96c4089dc..240493636d 100644 --- a/config/locales/devise.fy.yml +++ b/config/locales/devise.fy.yml @@ -1,7 +1,26 @@ --- fy: devise: + confirmations: + confirmed: Dyn account is befêstige. + send_instructions: Do ûntfangst fia in e-mailberjocht ynstruksjes hoe’tsto dyn account befêstigje kinst. Sjoch yn de map net-winske wannear’t neat ûntfongen waard. + send_paranoid_instructions: As dyn e-mailadres yn de database stiet, ûntfangsto fia in e-mailberjocht ynstruksjes hoe’tsto dyn account befêstigje kinst. Sjoch yn de map net-winske wannear’t neat ûntfongen waard. failure: + already_authenticated: Do bist al oanmeld. inactive: Jo account is not net aktivearre. + invalid: "%{authentication_keys} of wachtwurd ûnjildich." + last_attempt: Do hast noch ien besykjen oer eardat dyn account blokkearre wurdt. + locked: Dyn account is blokkearre. + not_found_in_database: "%{authentication_keys} of wachtwurd ûnjildich." + pending: Dyn account moat noch hieltyd beoardiele wurde. + timeout: Dyn sesje is ferrûn, meld dy opnij oan. + unauthenticated: Do moatst oanmelde of registrearje. + unconfirmed: Do moatst earst dyn account befêstigje. + mailer: + confirmation_instructions: + action: E-mailadres ferifiearje + action_with_app: Befêstigje en nei %{app} tebekgean + explanation: Do hast in account op %{host} oanmakke en mei ien klik kinsto dizze aktivearje. Wannear’tsto dit account net oanmakke hast, meisto dit e-mailberjocht negearje. + explanation_when_pending: Do fregest mei dit e-mailadres in útnûging oan foar %{host}. Neidatsto dyn e-mailadres befêstige hast, beoardielje wy dyn oanfraach. Do kinst oant dan noch net oanmelde. Wannear’t dyn oanfraach ôfwêzen wurdt, wurde dyn gegevens fuortsmiten en hoechsto dêrnei fierder neat mear te dwaan. Wannear’tsto dit net wiest, kinsto dit e-mailberjocht negearje. passwords: updated_not_active: Jo wachtwurd is mei sukses feroare. diff --git a/config/locales/devise.nn.yml b/config/locales/devise.nn.yml index 0318e7ea92..eee9928475 100644 --- a/config/locales/devise.nn.yml +++ b/config/locales/devise.nn.yml @@ -70,9 +70,11 @@ nn: subject: 'Mastodon: Sikkerheitsnøkkel sletta' title: Ein av sikkerheitsnøklane dine har blitt sletta webauthn_disabled: + explanation: Du kan ikkje bruke tryggleiksnyklar til å logga inn på kontoen din. Du kan berre logga inn med koden frå tofaktor-appen som er kopla saman med brukarkontoen din. subject: 'Mastodon: Autentisering med sikkerheitsnøklar vart skrudd av' title: Sikkerheitsnøklar deaktivert webauthn_enabled: + explanation: Pålogging med tryggleiksnyklar er skrudd på. No kan du bruka nykelen din for å logga på. subject: 'Mastodon: Sikkerheitsnøkkelsautentisering vart skrudd på' title: Sikkerheitsnøklar aktivert omniauth_callbacks: diff --git a/config/locales/devise.sv.yml b/config/locales/devise.sv.yml index b165326060..c1696d3b43 100644 --- a/config/locales/devise.sv.yml +++ b/config/locales/devise.sv.yml @@ -18,26 +18,26 @@ sv: unconfirmed: Du måste bekräfta din e-postadress innan du fortsätter. mailer: confirmation_instructions: - action: Verifiera e-post adressen + action: Verifiera e-postadress action_with_app: Bekräfta och återgå till %{app} - explanation: Du har skapat ett konto på %{host} med den här e-post adressen. Du är ett klick från att aktivera det. Om det inte var du, ignorera det här e-post meddelandet. - explanation_when_pending: Du ansökte om en inbjudan till %{host} med denna e-post adress. När du har bekräftat din e-post adress kommer vi att granska din ansökan. Du kan logga in för att ändra dina uppgifter eller ta bort ditt konto, men du kan inte komma åt de flesta funktionerna förrän ditt konto har godkänts. Om din ansökan avvisas kommer dina uppgifter att tas bort, så ingen ytterligare åtgärd kommer att krävas av dig. Om detta inte var du, vänligen ignorera detta mail. + explanation: Du har skapat ett konto på %{host} med den här e-postadressen. Du är ett klick bort från att aktivera det. Om det inte var du ignorerar det här e-postmeddelandet. + explanation_when_pending: Du ansökte om en inbjudan till %{host} med denna e-postadress. När du har bekräftat din e-postadress kommer vi att granska din ansökan. Du kan logga in för att ändra dina uppgifter eller ta bort ditt konto, men du kan inte komma åt de flesta funktionerna förrän ditt konto har godkänts. Om din ansökan avvisas kommer dina uppgifter att tas bort, så ingen ytterligare åtgärd kommer att krävas av dig. Om detta inte var du, vänligen ignorera detta mail. extra_html: Vänligen observera systemets regler och våra användarvillkor. subject: 'Mastodon: Bekräftelse instruktioner för %{instance}' - title: Verifiera e-post adress + title: Verifiera e-postadress email_changed: - explanation: 'E-post adressen för ditt konto ändras till:' - extra: Om du inte ändrade din e-post är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta dataserver administratören om du är utelåst från ditt konto. + explanation: 'E-postadressen för ditt konto ändras till:' + extra: Om du inte ändrade din e-post är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta serveradministratören om du är utelåst från ditt konto. subject: 'Mastodon: e-post ändrad' title: Ny e-post adress password_change: explanation: Lösenordet för ditt konto har ändrats. - extra: Om du inte ändrade ditt lösenord är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta server administratören om du är utelåst från ditt konto. + extra: Om du inte ändrade ditt lösenord är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta serveradministratören om du är utelåst från ditt konto. subject: 'Mastodon: Lösenordet har ändrats' title: Lösenordet har ändrats reconfirmation_instructions: explanation: Bekräfta den nya adressen för att ändra din e-post adress. - extra: Om den här ändringen inte initierades av dig kan du ignorerar det här e-postmeddelandet. E-postadressen för Mastodon-kontot ändras inte förrän du kommer åt länken ovan. + extra: Om den här ändringen inte initierades av dig kan du ignorera det här e-postmeddelandet. E-postadressen för Mastodon-kontot ändras inte förrän du klickar på länken ovan. subject: 'Mastodon: Bekräfta e-post för %{instance}' title: Verifiera e-postadress reset_password_instructions: diff --git a/config/locales/doorkeeper.ca.yml b/config/locales/doorkeeper.ca.yml index e98eb09157..954ef2a6ee 100644 --- a/config/locales/doorkeeper.ca.yml +++ b/config/locales/doorkeeper.ca.yml @@ -145,7 +145,7 @@ ca: applications: Aplicacions oauth2_provider: Proveïdor OAuth2 application: - title: OAuth autorització requerida + title: Autorització OAuth requerida scopes: admin:read: llegir totes les dades en el servidor admin:read:accounts: llegir l'informació sensible de tots els comptes diff --git a/config/locales/doorkeeper.ga.yml b/config/locales/doorkeeper.ga.yml index 189e43aaef..cd911b60a4 100644 --- a/config/locales/doorkeeper.ga.yml +++ b/config/locales/doorkeeper.ga.yml @@ -4,16 +4,20 @@ ga: attributes: doorkeeper/application: name: Ainm feidhmchláir + redirect_uri: Atreoraigh URI doorkeeper: applications: buttons: authorize: Ceadaigh + cancel: Cealaigh destroy: Scrios edit: Cuir in eagar confirmations: destroy: An bhfuil tú cinnte? index: + delete: Scrios name: Ainm + show: Taispeáin authorizations: buttons: deny: Diúltaigh diff --git a/config/locales/doorkeeper.gd.yml b/config/locales/doorkeeper.gd.yml index c5a830fc78..497b7dcdd5 100644 --- a/config/locales/doorkeeper.gd.yml +++ b/config/locales/doorkeeper.gd.yml @@ -134,8 +134,8 @@ gd: lists: Liostaichean media: Ceanglachain mheadhanan mutes: Mùchaidhean - notifications: Brathan - push: Brathan putaidh + notifications: Fiosan + push: Fiosan putaidh reports: Gearanan search: Lorg statuses: Postaichean @@ -155,7 +155,7 @@ gd: admin:write:reports: gnìomhan na maorsainneachd a ghabhail air gearanan crypto: crioptachadh o cheann gu ceann a chleachdadh follow: dàimhean chunntasan atharrachadh - push: na brathan putaidh agad fhaighinn + push: na fiosan putaidh agad fhaighinn read: dàta sam bith a’ cunntais agad a leughadh read:accounts: fiosrachadh nan cunntasan fhaicinn read:blocks: na bacaidhean agad fhaicinn @@ -165,7 +165,7 @@ gd: read:follows: faicinn cò air a tha thu a’ leantainn read:lists: na liostaichean agad fhaicinn read:mutes: na mùchaidhean agad fhaicinn - read:notifications: na brathan agad faicinn + read:notifications: na fiosan agad faicinn read:reports: na gearanan agad fhaicinn read:search: lorg a dhèanamh às do leth read:statuses: na postaichean uile fhaicinn @@ -180,6 +180,6 @@ gd: write:lists: liostaichean a chruthachadh write:media: faidhlichean meadhain a luchdadh suas write:mutes: daoine is còmhraidhean a mhùchadh - write:notifications: na brathan agad fhalamhachadh + write:notifications: na fiosan agad a ghlanadh às write:reports: gearan a dhèanamh mu chàch write:statuses: postaichean fhoillseachadh diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml index 6bd062a170..38ae2f4f41 100644 --- a/config/locales/doorkeeper.nl.yml +++ b/config/locales/doorkeeper.nl.yml @@ -151,8 +151,8 @@ nl: admin:read:accounts: gevoelige informatie van alle accounts lezen admin:read:reports: gevoelige informatie van alle rapportages en gerapporteerde accounts lezen admin:write: wijzig alle gegevens op de server - admin:write:accounts: moderatieacties op accounts uitvoeren - admin:write:reports: moderatieacties op rapportages uitvoeren + admin:write:accounts: moderatiemaatregelen tegen accounts nemen + admin:write:reports: moderatiemaatregelen nemen in rapportages crypto: end-to-end-encryptie gebruiken follow: relaties tussen accounts bewerken push: jouw pushmeldingen ontvangen diff --git a/config/locales/doorkeeper.nn.yml b/config/locales/doorkeeper.nn.yml index d17d38c3f6..4cc4ebace2 100644 --- a/config/locales/doorkeeper.nn.yml +++ b/config/locales/doorkeeper.nn.yml @@ -5,7 +5,7 @@ nn: doorkeeper/application: name: Applikasjonsnamn redirect_uri: Omdirigerings-URI - scopes: Skop + scopes: Omfang website: Applikasjonsnettside errors: models: @@ -33,15 +33,15 @@ nn: help: native_redirect_uri: Bruk %{native_redirect_uri} for lokale testar redirect_uri: Bruk ei linjer per URI - scopes: Skil skop med mellomrom. Ikkje fyll inn noko som helst for å bruke standardskop. + scopes: Skil omfang med mellomrom. La stå tomt for å bruka standardomfang. index: application: Applikasjon callback_url: Callback-URL delete: Slett - empty: Du har ikkje nokon applikasjonar. + empty: Du har ingen applikasjonar. name: Namn new: Ny applikasjon - scopes: Skop + scopes: Omfang show: Vis title: Dine applikasjonar new: @@ -50,7 +50,7 @@ nn: actions: Handlingar application_id: Klientnøkkel callback_urls: Callback-URLar - scopes: Skop + scopes: Omfang secret: Klienthemmelegheit title: 'Applikasjon: %{name}' authorizations: @@ -61,6 +61,7 @@ nn: title: Ein feil har oppstått new: prompt_html: "%{client_name} ønsker tilgang til kontoen din. Det er ein tredjepartsapplikasjon. Dersom du ikkje stolar på den, bør du ikkje autorisere det." + review_permissions: Sjå gjennom løyve title: Autorisasjon nødvendig show: title: Kopier denne autorisasjonskoden og lim den inn i applikasjonen. @@ -71,32 +72,35 @@ nn: revoke: Er du sikker? index: authorized_at: Autorisert den %{date} + description_html: Desse programma har tilgang til kontoen diin frå programgrensesnittet. Dersom du ser program her som du ikkje kjenner att, eller eit program oppfører seg feil, kan du trekkja tilbake tillgangen her. last_used_at: Sist brukt den %{date} never_used: Aldri brukt + scopes: Løyve + superapp: Intern title: Dine autoriserte applikasjonar errors: messages: access_denied: Ressurseigaren eller autorisasjonstenaren avviste førespurnaden. - credential_flow_not_configured: Flyten «Resource Owner Password Credentials» kunne ikkje verte fullført av di «Doorkeeper.configure.resource_owner_from_credentials» er ikkje konfigurert. - invalid_client: Klientautentisering feilet på grunn av ukjent klient, ingen autentisering inkludert, eller autentiseringsmetode er ikke støttet. - invalid_grant: Autoriseringen er ugyldig, utløpt, opphevet, stemmer ikke overens med omdirigerings-URIen eller var utstedt til en annen klient. + credential_flow_not_configured: Flyten «Resource Owner Password Credentials» kunne ikkje fullførast sidan «Doorkeeper.configure.resource_owner_from_credentials» ikkje er konfigurert. + invalid_client: Klientautentisering feila på grunn av ukjent klient, ingen inkludert autentisering, eller ikkje støtta autentiseringsmetode. + invalid_grant: Autoriseringa er ugyldig, utløpt, oppheva, stemmer ikkje med omdirigerings-URIen eller var tildelt ein annan klient. invalid_redirect_uri: Omdirigerings-URLen er ikkje gyldig. invalid_request: - missing_param: 'Mangler påkrevd parameter: %{value}.' - request_not_authorized: Forespørselen må godkjennes. Påkrevd parameter for godkjenningsforespørselen mangler eller er ugyldig. - unknown: Forespørselen mangler en påkrevd parameter, inkluderer en ukjent parameterverdi, eller er utformet for noe annet. - invalid_resource_owner: Ressurseierens detaljer er ikke gyldige, eller så er det ikke mulig å finne eieren + missing_param: 'Manglar naudsynt parameter: %{value}.' + request_not_authorized: Førespurnaden må godkjennast. Naudsynt parameter for godkjenning manglar eller er ugyldig. + unknown: Førespurnaden manglar ein naudsynt parameter, inneheld ein parameter som ikkje er støtta, eller er misdanna. + invalid_resource_owner: Ressurseigardetaljane er ikkje gyldige, eller så er det ikkje mogleg å finna eigaren invalid_scope: Det etterspurte omfanget er ugyldig, ukjent eller har feil struktur. invalid_token: - expired: Tilgangsbeviset har utløpt - revoked: Tilgangsbeviset har blitt opphevet + expired: Tilgangsbeviset har gått ut på dato + revoked: Tilgangsbeviset har blitt oppheva unknown: Tilgangsbeviset er ugyldig - resource_owner_authenticator_not_configured: Ressurseier kunne ikke finnes fordi Doorkeeper.configure.resource_owner_authenticator ikke er konfigurert. - server_error: Autoriseringstjeneren støtte på en uventet hendelse som hindret den i å svare på forespørslen. - temporarily_unavailable: Autoriseringstjeneren kan ikke håndtere forespørslen grunnet en midlertidig overbelastning eller tjenervedlikehold. - unauthorized_client: Klienten har ikke autorisasjon for å utføre denne forespørslen med denne metoden. - unsupported_grant_type: Autorisasjonstildelingstypen er ikke støttet av denne autoriseringstjeneren. - unsupported_response_type: Autorisasjonsserveren støtter ikke denne typen av forespørsler. + resource_owner_authenticator_not_configured: Ressurseigar kunne ikkje finnast fordi Doorkeeper.configure.resource_owner_authenticator ikkje er konfigurert. + server_error: Autoriseringstenaren støtte på ei uventa hending som hindra han i å svara på førespurnaden. + temporarily_unavailable: Autoriseringstenaren kan ikkje hansama førespurnaden grunna kortvarig overbelastning eller tenarvedlikehald. + unauthorized_client: Klienten har ikkje autorisasjon for å utføra førespurnaden med denne metoden. + unsupported_grant_type: Autorisasjonstildelingstypen er ikkje støtta av denne autoriseringstenaren. + unsupported_response_type: Autorisasjonstenaren støttar ikkje denne typen førespurnader. flash: applications: create: @@ -109,21 +113,29 @@ nn: destroy: notice: App avvist. grouped_scopes: + access: + read: Berre lesetligang + read/write: Lese- og skrivetilgang + write: Berre skrivetilgang title: accounts: Kontoar admin/accounts: Kontoadministrasjon admin/all: Alle administrative funksjonar admin/reports: Rapportadministrasjon all: Alt + blocks: Blokkeringar bookmarks: Bokmerke conversations: Samtalar crypto: Ende-til-ende-kryptering favourites: Favorittar filters: Filter + follow: Forhold + follows: Fylgjer lists: Lister media: Mediavedlegg mutes: Målbindingar notifications: Varsel + push: Pushvarsel reports: Rapportar search: Søk statuses: Innlegg @@ -131,22 +143,22 @@ nn: admin: nav: applications: Appar - oauth2_provider: OAuth2-tilbyder + oauth2_provider: OAuth2-tilbydar application: - title: OAuth-autorisering påkrevet + title: Krav om OAuth-autorisering scopes: admin:read: lese alle data på tjeneren - admin:read:accounts: lese sensitiv informasjon om alle kontoer - admin:read:reports: lese sensitiv informasjon om alle rapporter og rapporterte kontoer - admin:write: modifisere alle data på tjeneren - admin:write:accounts: utføre moderatorhandlinger på kontoer - admin:write:reports: utføre moderatorhandlinger på rapporter + admin:read:accounts: lese sensitiv informasjon om alle kontoar + admin:read:reports: lese sensitiv informasjon om alle rapportar og rapporterte kontoar + admin:write: endre alle data på tenaren + admin:write:accounts: utføre moderatorhandlingar på kontoar + admin:write:reports: utføre moderatorhandlingar på rapportar crypto: bruk ende-til-ende-kryptering - follow: følg, blokkér, avblokkér, avfølg brukere - push: motta dine varsler - read: lese dine data - read:accounts: se informasjon om kontoer - read:blocks: se dine blokkeringer + follow: fylg, blokkér, avblokkér, avfylg brukarar + push: motta pushvarsla dine + read: lese alle dine kontodata + read:accounts: sjå informasjon om kontoar + read:blocks: sjå dine blokkeringar read:bookmarks: sjå bokmerka dine read:favourites: sjå favorittane dine read:filters: sjå filtera dine @@ -155,12 +167,12 @@ nn: read:mutes: sjå kven du har målbunde read:notifications: sjå varsla dine read:reports: sjå rapportane dine - read:search: søke på dine vegne + read:search: søke på dine vegner read:statuses: sjå alle innlegg - write: poste på dine vegne + write: endre alle dine kontodata write:accounts: redigera profilen din write:blocks: blokker kontoar og domene - write:bookmarks: bokmerk statusar + write:bookmarks: bokmerk innlegg write:conversations: målbind og slett samtalar write:favourites: merk innlegg som favoritt write:filters: lag filter diff --git a/config/locales/doorkeeper.oc.yml b/config/locales/doorkeeper.oc.yml index 692ecc3b7e..e45dd0245a 100644 --- a/config/locales/doorkeeper.oc.yml +++ b/config/locales/doorkeeper.oc.yml @@ -60,6 +60,7 @@ oc: error: title: I a agut un error new: + review_permissions: Repassar las autorizacions title: Cal l’autorizacion show: title: Copiatz lo còdi d’autorizacion e pegatz-lo dins l’aplicacion. @@ -69,6 +70,11 @@ oc: confirmations: revoke: Ne sètz segur ? index: + authorized_at: Autorizada lo %{date} + last_used_at: Darrièra utilizacion lo %{date} + never_used: Pas jamai utilizada + scopes: Autorizacions + superapp: Intèrna title: Las vòstras aplicacions autorizadas errors: messages: @@ -105,14 +111,32 @@ oc: destroy: notice: Aplicacion revocada. grouped_scopes: + access: + read: Accès lectura sola + read/write: Accès lectura e escritura + write: Accès escritura sola title: accounts: Comptes + admin/accounts: Administracion de comptes + admin/all: Totas las foncions administrativas + admin/reports: Administracion de senhalaments + all: Tot + blocks: Blocatges bookmarks: Marcadors + conversations: Conversacions + crypto: Chiframent del cap a la fin + favourites: Favorits filters: Filtres + follow: Relacions + follows: Abonaments lists: Listas media: Fichièrs junts + mutes: Resconduts notifications: Notificacions + push: Notificacions Push + reports: Senhalament search: Recercar + statuses: Publicacions layouts: admin: nav: @@ -127,6 +151,7 @@ oc: admin:write: modificacion de las donadas del servidor admin:write:accounts: realizacion d’accions de moderacion suls comptes admin:write:reports: realizacion d’accions suls senhalaments + crypto: utilizar lo chiframent del cap a la fin follow: modificar las relacions del compte push: recebre vòstras notificacions push read: legir totas las donadas de vòstre compte @@ -146,6 +171,7 @@ oc: write:accounts: modificar vòstre perfil write:blocks: blocar de comptes e de domenis write:bookmarks: ajustar als marcadors + write:conversations: amudir e suprimir las conversacions write:favourites: metre en favorit write:filters: crear de filtres write:follows: sègre de mond diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml index 0a0b6b1beb..eef5eb146c 100644 --- a/config/locales/doorkeeper.pt-BR.yml +++ b/config/locales/doorkeeper.pt-BR.yml @@ -130,8 +130,10 @@ pt-BR: favourites: Favoritos filters: Filtros follow: Relacionamentos + follows: Seguidores lists: Listas media: Mídias anexadas + mutes: Silenciados notifications: Notificações push: Notificações push reports: Denúncias diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml index 8c8a039477..504361081e 100644 --- a/config/locales/doorkeeper.uk.yml +++ b/config/locales/doorkeeper.uk.yml @@ -168,13 +168,13 @@ uk: read:notifications: бачити Ваші сповіщення read:reports: бачити Ваші скарги read:search: шукати від вашого імені - read:statuses: бачити всі статуси + read:statuses: бачити всі дописи write: змінювати усі дані вашого облікового запису write:accounts: змінювати ваш профіль write:blocks: блокувати облікові записи і домени write:bookmarks: додавати дописи до закладок write:conversations: нехтувати й видалити бесіди - write:favourites: вподобані статуси + write:favourites: вподобані дописи write:filters: створювати фільтри write:follows: підписуйтесь на людей write:lists: створювайте списки @@ -182,4 +182,4 @@ uk: write:mutes: нехтувати людей або бесіди write:notifications: очищувати Ваші сповіщення write:reports: надіслати скаргу про людей - write:statuses: публікувати статуси + write:statuses: публікувати дописи diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml index b43540257c..ce902a01c8 100644 --- a/config/locales/doorkeeper.vi.yml +++ b/config/locales/doorkeeper.vi.yml @@ -171,7 +171,7 @@ vi: read:statuses: xem toàn bộ tút write: sửa đổi mọi dữ liệu tài khoản của bạn write:accounts: sửa đổi trang hồ sơ của bạn - write:blocks: chặn người dùng và máy chủ + write:blocks: chặn người và máy chủ write:bookmarks: sửa đổi những thứ bạn lưu write:conversations: ẩn và xóa thảo luận write:favourites: lượt thích @@ -179,7 +179,7 @@ vi: write:follows: theo dõi ai đó write:lists: tạo danh sách write:media: tải lên tập tin - write:mutes: ẩn người dùng và cuộc đối thoại + write:mutes: ẩn người và thảo luận write:notifications: xóa thông báo của bạn write:reports: báo cáo người khác write:statuses: đăng tút diff --git a/config/locales/el.yml b/config/locales/el.yml index 9a2510461b..499347866b 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -203,6 +203,7 @@ el: destroy_instance_html: Ο/Η %{name} εκκαθάρισε τον τομέα %{target} reject_user_html: "%{name} απορρίφθηκε εγγραφή από %{target}" unblock_email_account_html: "%{name} ξεμπλόκαρε τη διεύθυνση ηλεκτρονικού ταχυδρομείου του %{target}" + deleted_account: διαγραμμένος λογαριασμός empty: Δεν βρέθηκαν αρχεία καταγραφής. filter_by_action: Φιλτράρισμα ανά ενέργεια filter_by_user: Φιλτράρισμα ανά χρήστη diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 8138bac598..9036146491 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -219,6 +219,7 @@ eo: suspend_account_html: "%{name} suspendis la konton de %{target}" unsuspend_account_html: "%{name} reaktivigis la konton de %{target}" update_announcement_html: "%{name} ĝisdatigis anoncon %{target}" + deleted_account: forigita konto empty: Neniu protokolo trovita. filter_by_action: Filtri per ago filter_by_user: Filtri per uzanto diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 18a2f45d00..c3ddd74439 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -283,6 +283,7 @@ es-AR: update_ip_block_html: "%{name} cambió la regla para la dirección IP %{target}" update_status_html: "%{name} actualizó el mensaje de %{target}" update_user_role_html: "%{name} cambió el rol %{target}" + deleted_account: cuenta eliminada empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index efcd8476ec..c864536ce6 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -207,6 +207,7 @@ es-MX: reject_user: Rechazar Usuario remove_avatar_user: Eliminar Avatar reopen_report: Reabrir Reporte + resend_user: Reenviar Correo de Confirmación reset_password_user: Restablecer Contraseña resolve_report: Resolver Reporte sensitive_account: Marcar multimedia en tu cuenta como sensible @@ -265,6 +266,7 @@ es-MX: reject_user_html: "%{name} rechazó el registro de %{target}" remove_avatar_user_html: "%{name} eliminó el avatar de %{target}" reopen_report_html: "%{name} reabrió el informe %{target}" + resend_user_html: "%{name} ha reenviado el correo de confirmación para %{target}" reset_password_user_html: "%{name} reinició la contraseña del usuario %{target}" resolve_report_html: "%{name} resolvió el informe %{target}" sensitive_account_html: "%{name} marcó la multimedia de %{target} como sensible" @@ -281,6 +283,7 @@ es-MX: update_ip_block_html: "%{name} cambió la regla para la IP %{target}" update_status_html: "%{name} actualizó el estado de %{target}" update_user_role_html: "%{name} cambió el rol %{target}" + deleted_account: cuenta eliminada empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario @@ -705,16 +708,29 @@ es-MX: delete: Eliminar archivo subido destroyed_msg: "¡Carga del sitio eliminada con éxito!" statuses: + account: Autor + application: Aplicación back_to_account: Volver a la cuenta back_to_report: Volver a la página de reporte batch: remove_from_report: Eliminar del reporte report: Reportar deleted: Eliminado + favourites: Favoritos + history: Historial de versiones + in_reply_to: En respuesta a + language: Idioma media: title: Multimedia + metadata: Metadatos no_status_selected: No se cambió ningún estado al no seleccionar ninguno + open: Abrir publicación + original_status: Publicación original + reblogs: Impulsos + status_changed: Publicación cambiada title: Estado de las cuentas + trending: En tendencia + visibility: Visibilidad with_media: Con multimedia strikes: actions: @@ -936,8 +952,8 @@ es-MX: email_settings_hint_html: El correo electrónico de confirmación fue enviado a %{email}. Si esa dirección de correo electrónico no sea correcta, se puede cambiarla en la configuración de la cuenta. title: Configuración sign_up: - preamble: Con una cuenta en este servidor de Mastodon, podrás seguir a cualquier otra persona en la red, independientemente de en qué servidor esté su cuenta. - title: Vamos a configurar el %{domain}. + preamble: Con una cuenta en este servidor de Mastodon, podrás seguir a cualquier otra persona en la red, independientemente del servidor en el que se encuentre. + title: Crear cuenta de Mastodon en %{domain}. status: account_status: Estado de la cuenta confirming: Esperando confirmación de correo electrónico. @@ -1290,7 +1306,7 @@ es-MX: code_hint: Introduce el código generado por tu aplicación de autentificación para confirmar description_html: Si habilitas autenticación de dos factores a través de una aplicación de autenticación, el ingreso requerirá que estés en posesión de tu teléfono, que generará códigos para que ingreses. enable: Activar - instructions_html: "Escanea este código QR desde Google Authenticator o una aplicación similar en tu teléfono. A partir de ahora, esta aplicación generará códigos que tendrásque ingresar cuando quieras iniciar sesión." + instructions_html: "Escanea este código QR desde Google Authenticator o una aplicación similar en tu teléfono. A partir de ahora, esta aplicación generará códigos que tendrás que ingresar cuando quieras iniciar sesión." manual_instructions: 'Si no puedes escanear el código QR y necesitas introducirlo manualmente, este es el secreto en texto plano:' setup: Configurar wrong_code: "¡El código ingresado es inválido! ¿Es correcta la hora del dispositivo y el servidor?" diff --git a/config/locales/es.yml b/config/locales/es.yml index 00a0319382..6bd34034b9 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -207,6 +207,7 @@ es: reject_user: Rechazar Usuario remove_avatar_user: Eliminar Avatar reopen_report: Reabrir Reporte + resend_user: Reenviar Correo de Confirmación reset_password_user: Restablecer Contraseña resolve_report: Resolver Reporte sensitive_account: Marcar multimedia en tu cuenta como sensible @@ -265,6 +266,7 @@ es: reject_user_html: "%{name} rechazó el registro de %{target}" remove_avatar_user_html: "%{name} eliminó el avatar de %{target}" reopen_report_html: "%{name} reabrió el informe %{target}" + resend_user_html: "%{name} ha reenviado el correo de confirmación para %{target}" reset_password_user_html: "%{name} reinició la contraseña del usuario %{target}" resolve_report_html: "%{name} resolvió el informe %{target}" sensitive_account_html: "%{name} marcó la multimedia de %{target} como sensible" @@ -281,6 +283,7 @@ es: update_ip_block_html: "%{name} cambió la regla para la IP %{target}" update_status_html: "%{name} actualizó el estado de %{target}" update_user_role_html: "%{name} cambió el rol %{target}" + deleted_account: cuenta eliminada empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario @@ -705,16 +708,29 @@ es: delete: Eliminar archivo subido destroyed_msg: "¡Carga del sitio eliminada con éxito!" statuses: + account: Autor + application: Aplicación back_to_account: Volver a la cuenta back_to_report: Volver a la página del reporte batch: remove_from_report: Eliminar del reporte report: Reporte deleted: Eliminado + favourites: Favoritos + history: Historial de versiones + in_reply_to: En respuesta a + language: Idioma media: title: Multimedia + metadata: Metadatos no_status_selected: No se cambió ningún estado al no seleccionar ninguno + open: Abrir publicación + original_status: Publicación original + reblogs: Impulsos + status_changed: Publicación cambiada title: Estado de las cuentas + trending: En tendencia + visibility: Visibilidad with_media: Con multimedia strikes: actions: @@ -936,8 +952,8 @@ es: email_settings_hint_html: El correo electrónico de confirmación fue enviado a %{email}. Si esa dirección de correo electrónico no sea correcta, se puede cambiarla en la configuración de la cuenta. title: Configuración sign_up: - preamble: Con una cuenta en este servidor de Mastodon, podrás seguir a cualquier otra persona en la red, independientemente de en qué servidor esté su cuenta. - title: Vamos a configurar el %{domain}. + preamble: Con una cuenta en este servidor de Mastodon, podrás seguir a cualquier otra persona en la red, independientemente del servidor en el que se encuentre. + title: Crear cuenta de Mastodon en %{domain}. status: account_status: Estado de la cuenta confirming: Esperando confirmación de correo electrónico. diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 1033da4906..5ac6853700 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -283,6 +283,7 @@ fi: update_ip_block_html: "%{name} muutti sääntöä IP-osoitteelle %{target}" update_status_html: "%{name} päivitti viestin %{target}" update_user_role_html: "%{name} muutti roolia %{target}" + deleted_account: poistettu tili empty: Lokeja ei löytynyt. filter_by_action: Suodata tapahtuman mukaan filter_by_user: Suodata käyttäjän mukaan diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 416d4a1eb3..a177d6fa5c 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -283,6 +283,7 @@ fr: update_ip_block_html: "%{name} a modifié la règle pour l'IP %{target}" update_status_html: "%{name} a mis à jour le message de %{target}" update_user_role_html: "%{name} a changé le rôle %{target}" + deleted_account: compte supprimé empty: Aucun journal trouvé. filter_by_action: Filtrer par action filter_by_user: Filtrer par utilisateur·ice @@ -685,6 +686,7 @@ fr: title: Rétention du contenu discovery: follow_recommendations: Suivre les recommandations + preamble: Faire apparaître un contenu intéressant est essentiel pour interagir avec de nouveaux utilisateurs qui ne connaissent peut-être personne sur Mastodonte. Contrôlez le fonctionnement des différentes fonctionnalités de découverte sur votre serveur. profile_directory: Annuaire des profils public_timelines: Fils publics title: Découverte @@ -1098,6 +1100,7 @@ fr: add_keyword: Ajouter un mot-clé keywords: Mots-clés statuses: Publications individuelles + statuses_hint_html: Ce filtre s'applique à la sélection de messages individuels, qu'ils correspondent ou non aux mots-clés ci-dessous. Revoir ou supprimer des messages du filtre. title: Éditer le filtre errors: deprecated_api_multiple_keywords: Ces paramètres ne peuvent pas être modifiés depuis cette application, car ils s'appliquent à plus d'un filtre de mot-clé. Utilisez une application plus récente ou l'interface web. @@ -1114,6 +1117,9 @@ fr: statuses: one: "%{count} message" other: "%{count} messages" + statuses_long: + one: "%{count} publication individuelle cachée" + other: "%{count} publications individuelles cachées" title: Filtres new: save: Enregistrer le nouveau filtre @@ -1123,6 +1129,7 @@ fr: batch: remove: Retirer du filtre index: + hint: Ce filtre s'applique à la sélection de messages individuels, indépendamment d'autres critères. Vous pouvez ajouter plus de messages à ce filtre à partir de l'interface Web. title: Messages filtrés footer: trending_now: Tendance en ce moment diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 6790b7645a..ed6040f68c 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -213,6 +213,7 @@ gd: reject_user: Diùlt an cleachdaiche remove_avatar_user: Thoir air falbh an t-avatar reopen_report: Fosgail an gearan a-rithist + resend_user: Cuir am post-d dearbhaidh a-rithist reset_password_user: Ath-shuidhich am facal-faire resolve_report: Fuasgail an gearan sensitive_account: Spàrr an fhrionasachd air a’ chunntas seo @@ -271,6 +272,7 @@ gd: reject_user_html: Dhiùlt %{name} an clàradh o %{target} remove_avatar_user_html: Thug %{name} avatar aig %{target} air falbh reopen_report_html: Dh’fhosgail %{name} an gearan %{target} a-rithist + resend_user_html: Chuir %{name} am post-d dearbhaidh airson %{target} a-rithist reset_password_user_html: Dh’ath-shuidhich %{name} am facal-faire aig a’ chleachdaiche %{target} resolve_report_html: Dh’fhuasgail %{name} an gearan %{target} sensitive_account_html: Chuir %{name} comharra gu bheil e frionasach ri meadhan aig %{target} @@ -287,6 +289,7 @@ gd: update_ip_block_html: Sguab %{name} às riaghailt dhan IP %{target} update_status_html: Dh’ùraich %{name} post le %{target} update_user_role_html: Dh’atharraich %{name} an dreuchd %{target} + deleted_account: chaidh an cunntas a sguabadh às empty: Cha deach loga a lorg. filter_by_action: Criathraich a-rèir gnìomha filter_by_user: Criathraich a-rèir cleachdaiche @@ -577,7 +580,7 @@ gd: resolve_description_html: Cha dèid gnìomh sam bith a ghabhail an aghaidh a’ chunntais le gearan air agus thèid an gearan a dhùnadh gun rabhadh a chlàradh. silence_description_html: Chan fhaic ach an fheadhainn a tha a’ leantainn oirre mu thràth no a lorgas a làimh i a’ phròifil seo agus cuingichidh seo uiread nan daoine a ruigeas i gu mòr. Gabhaidh seo a neo-dhèanamh uair sam bith. suspend_description_html: Cha ghabh a’ phròifil seo agus an t-susbaint gu leòr aice inntrigeadh gus an dèid a sguabadh às air deireadh na sgeòil. Cha ghabh eadar-ghabhail a dhèanamh leis a’ chunntas. Gabhaidh seo a neo-dhèanamh am broinn 30 latha. - actions_description_html: Cuir romhad dè an gnìomh a ghabhas tu gus an gearan seo fhuasgladh. Ma chuireas tu peanas air a’ chunntas le gearan air, gheibh iad brath air a’ phost-d mura tagh thu an roinn-seòrsa Spama. + actions_description_html: Socraich dè a nì thu airson an gearan seo fhuasgladh. Ma chuireas tu peanas air a’ chunntas le gearan air, gheibh iad brath air a’ phost-d mura tagh thu an roinn-seòrsa Spama. add_to_report: Cuir barrachd ris a’ ghearan are_you_sure: A bheil thu cinnteach? assign_to_self: Iomruin dhomh-sa @@ -922,7 +925,7 @@ gd: remove: Dì-cheangail an t-alias appearance: advanced_web_interface: Eadar-aghaidh-lìn adhartach - advanced_web_interface_hint: 'Ma tha thu airson leud gu lèir na sgrìn agad a chleachdadh, leigidh an eadar-aghaidh-lìn adhartach leat gun rèitich thu mòran cholbhan eadar-dhealaichte ach am faic thu na thogras tu de dh’fhiosrachadh aig an aon àm: Dachaigh, brathan, loidhne-ama cho-naisgte, na thogras tu de liostaichean is tagaichean hais.' + advanced_web_interface_hint: 'Ma tha thu airson leud na sgrìn agad gu lèir a chleachdadh, leigidh an eadar-aghaidh-lìn adhartach leat mòran cholbhan eadar-dhealaichte a cho-rèiteachadh airson uiread de dh''fhiosrachadh ''s a thogras tu fhaicinn aig an aon àm: Dachaigh, brathan, loidhne-ama cho-naisgte, liostaichean is tagaichean hais a rèir do thoil.' animations_and_accessibility: Beòthachaidhean agus so-ruigsinneachd confirmation_dialogs: Còmhraidhean dearbhaidh discovery: Rùrachadh diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 3ae0550f3f..afdd513946 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -283,6 +283,7 @@ gl: update_ip_block_html: "%{name} cambiou a regra para IP %{target}" update_status_html: "%{name} actualizou a publicación de %{target}" update_user_role_html: "%{name} cambiou o rol %{target}" + deleted_account: conta eliminada empty: Non se atoparon rexistros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuaria diff --git a/config/locales/hu.yml b/config/locales/hu.yml index a588d8587d..078668eba3 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -283,6 +283,7 @@ hu: update_ip_block_html: "%{name} módosította a(z) %{target} IP-címre vonatkozó szabályt" update_status_html: "%{name} frissítette %{target} felhasználó bejegyzését" update_user_role_html: "%{name} módosította a(z) %{target} szerepkört" + deleted_account: törölt fiók empty: Nem található napló. filter_by_action: Szűrés művelet alapján filter_by_user: Szűrés felhasználó alapján diff --git a/config/locales/is.yml b/config/locales/is.yml index 6bad0b97e8..37d8f21b13 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -283,6 +283,7 @@ is: update_ip_block_html: "%{name} breytti reglu fyrir IP-vistfangið %{target}" update_status_html: "%{name} uppfærði færslu frá %{target}" update_user_role_html: "%{name} breytti hlutverki %{target}" + deleted_account: eyddur notandaaðgangur empty: Engar atvikaskrár fundust. filter_by_action: Sía eftir aðgerð filter_by_user: Sía eftir notanda diff --git a/config/locales/it.yml b/config/locales/it.yml index 6fa1e780cf..d3bf4734bd 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -283,6 +283,7 @@ it: update_ip_block_html: "%{name} ha cambiato la regola per l'IP %{target}" update_status_html: "%{name} ha aggiornato lo status di %{target}" update_user_role_html: "%{name} ha modificato il ruolo %{target}" + deleted_account: account eliminato empty: Nessun log trovato. filter_by_action: Filtra per azione filter_by_user: Filtra per utente diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 9d0a3c0ca4..9de79cd4e6 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -280,6 +280,7 @@ ja: update_ip_block_html: "%{name} さんがIP %{target} のルールを更新しました" update_status_html: "%{name}さんが%{target}さんの投稿を更新しました" update_user_role_html: "%{name}さんがロール『%{target}』を変更しました" + deleted_account: 削除されたアカウント empty: ログが見つかりませんでした filter_by_action: アクションでフィルター filter_by_user: ユーザーでフィルター @@ -659,7 +660,7 @@ ja: manage_rules: サーバーのルールを管理 preamble: サーバーの運営、管理、資金調達の方法について、詳細な情報を提供します。 rules_hint: ユーザーが守るべきルールのための専用エリアがあります。 - title: About + title: このサーバーについて appearance: preamble: ウェブインターフェースをカスタマイズします。 title: 外観 @@ -682,7 +683,7 @@ ja: users: ログイン済みローカルユーザーのみ許可 registrations: preamble: あなたのサーバー上でアカウントを作成できるユーザーを制御します。 - title: 登録 + title: アカウント作成 registrations_mode: modes: approved: 登録には承認が必要 @@ -827,7 +828,7 @@ ja: new: 新しいwebhook rotate_secret: シークレットをローテートする secret: シークレットに署名 - status: ステータス + status: 投稿 title: Webhooks webhook: Webhook admin_mailer: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index f37f3ec46e..558c0d8944 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -280,6 +280,7 @@ ko: update_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 수정했습니다" update_status_html: "%{name} 님이 %{target}의 게시물을 업데이트 했습니다" update_user_role_html: "%{name} 님이 %{target} 역할을 수정했습니다" + deleted_account: 계정을 삭제했습니다 empty: 로그를 찾을 수 없습니다 filter_by_action: 행동으로 거르기 filter_by_user: 사용자로 거르기 @@ -666,12 +667,14 @@ ko: preamble: 마스토돈의 웹 인터페이스를 변경 title: 외관 branding: + preamble: 이 서버의 브랜딩은 네트워크의 다른 서버와 차별점을 부여합니다. 이 정보는 여러 환경에서 보여질 수 있는데, 예를 들면 마스토돈 인터페이스, 네이티브 앱, 다른 웹사이트나 메시지 앱에서 보이는 링크 미리보기, 기타 등등이 있습니다. 이러한 이유로 인해, 이 정보를 명확하고 짧고 간결하게 유지하는 것이 가장 좋습니다. title: 브랜딩 content_retention: preamble: 마스토돈에 저장된 사용자 콘텐츠를 어떻게 다룰지 제어합니다. title: 콘텐츠 보존기한 discovery: follow_recommendations: 팔로우 추천 + preamble: 흥미로운 콘텐츠를 노출하는 것은 마스토돈을 알지 못할 수도 있는 신규 사용자를 유입시키는 데 중요합니다. 이 서버에서 작동하는 다양한 발견하기 기능을 제어합니다. profile_directory: 프로필 책자 public_timelines: 공개 타임라인 title: 발견하기 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index af0fea5563..4c2283c216 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -69,7 +69,7 @@ ku: enable: Çalak bike enable_sign_in_token_auth: E-name ya rastandina token çalak bike enabled: Çalakkirî - enabled_msg: Ajimêra %{username} bi serkeftî hat çalak kirin + enabled_msg: Hesabê %{username} bi serkeftî hat çalakkirin followers: Şopîner follows: Dişopîne header: Jormalper @@ -87,7 +87,7 @@ ku: media_attachments: Pêvekên medya memorialize: Vegerîne bîranînê memorialized: Bû bîranîn - memorialized_msg: "%{username} bi serkeftî veguherî ajimêra bîranînê" + memorialized_msg: "%{username} bi serkeftî veguherî hesabê bîranînê" moderation: active: Çalak all: Hemû @@ -98,7 +98,7 @@ ku: moderation_notes: Nîşeyên Rêvebirinê most_recent_activity: Çalakîyên dawî most_recent_ip: IP' a dawî - no_account_selected: Tu ajimêr nehat hilbijartin ji ber vê tu ajimêr nehat guhertin + no_account_selected: Tu hesab nehat hilbijartin ji ber vê tu hesab nehat guhertin no_limits_imposed: Sînor nay danîn no_role_assigned: Ti rol nehatin diyarkirin not_subscribed: Beşdar nebû @@ -149,7 +149,7 @@ ku: suspended: Hatiye rawestandin suspension_irreversible: Daneyên vê ajimêrê bêveger hatine jêbirin. Tu dikarî ajimêra xwe ji rawestandinê vegerinî da ku ew bi kar bînî lê ew ê tu daneya ku berê hebû venegere. suspension_reversible_hint_html: Ajimêr hat qerisandin, û daneyên di %{date} de hemû were rakirin. Hetta vê demê, ajimêr bê bandorên nebaş dikare dîsa vegere. Heke tu dixwazî hemû daneyan ajimêrê niha rakî, tu dikarî li jêrê bikî. - title: Ajimêr + title: Hesab unblock_email: Astengiyê li ser navnîşana e-nameyê rake unblocked_email_msg: Bi serkeftî astengiya li ser navnîşana e-nameyê %{username} hate rakirin unconfirmed_email: E-nameya nepejirandî @@ -211,8 +211,8 @@ ku: reset_password_user: Borînpeyvê ji nû ve saz bike resolve_report: Ragihandinê çareser bike sensitive_account: Ajimêra hêz-hestiyar - silence_account: Ajimêrê bi sînor bike - suspend_account: Ajimêr rawestîne + silence_account: Hesab bi sînor bike + suspend_account: Hesab rawestîne unassigned_report: Ragihandinê diyar neke unblock_email_account: Astengiyê li ser navnîşana e-nameyê rake unsensitive_account: Medyayên di ajimêrê te de wek hestyarî nepejirîne @@ -283,6 +283,7 @@ ku: update_ip_block_html: "%{name} rolê %{target} guhert ji bo IP" update_status_html: "%{name} şandiya bikarhêner %{target} rojane kir" update_user_role_html: "%{name} rola %{target} guherand" + deleted_account: ajimêrê jêbirî empty: Tomarkirin nehate dîtin. filter_by_action: Li gorî çalakiyê biparzinîne filter_by_user: Li gorî bikarhênerê biparzinîne @@ -322,8 +323,8 @@ ku: enabled: Çalakkirî enabled_msg: Ev hestok bi serkeftî hate çalak kirin image_hint: Mezinahiya PNG an jî GIF digîheje heya %{size} - list: Lîste - listed: Lîstekirî + list: Rêzok + listed: Rêzokkirî new: title: Hestokên kesane yên nû lê zêde bike no_emoji_selected: Tu emojî nehatin hilbijartin ji ber vê tu şandî jî nehatin guhertin @@ -333,8 +334,8 @@ ku: shortcode_hint: Herê kêm 2 tîp, tenê tîpên alfahejmarî û yên bin xêzkirî title: Hestokên kesane uncategorized: Bêbeş - unlist: Bêlîste - unlisted: Nelîstekirî + unlist: Dervî rêzokê + unlisted: Nerêzokkirî update_failed_msg: Ev hestok nehate rojanekirin updated_msg: Emojî bi awayekî serkeftî hate rojanekirin! upload: Bar bike @@ -393,11 +394,11 @@ ku: suspend: Dur bike title: Astengkirina navpera nû obfuscate: Navê navperê biveşêre - obfuscate_hint: Heke lîsteya sînorên navperê were çalakkirin navê navperê di lîsteyê de bi qismî veşêre + obfuscate_hint: Heke rêzoka sînorên navperê were çalakkirin navê navperê di rêzokê de bi qismî veşêre private_comment: Şîroveya taybet private_comment_hint: Derbarê sînorkirina vê navperê da ji bo bikaranîna hundirîn a moderatoran şîrove bikin. public_comment: Şîroveya gelemperî - public_comment_hint: Heke reklamkirina lîsteya sînorên navperê çalak be, derbarê sînorkirina vê navperê da ji bo raya giştî şîrove bikin. + public_comment_hint: Heke reklamkirina rêzoka sînorên navperê çalak be, derbarê sînorkirina vê navperê da ji bo raya giştî şîrove bikin. reject_media: Pelên medyayê red bike reject_media_hint: Pelên medyayê herêmî hatine tomarkirin radike û di pêşerojê de daxistinê red dike. Ji bo rawstandinê ne girîng e reject_reports: Ragihandinan red bike @@ -683,12 +684,14 @@ ku: title: Parastina naverokê discovery: follow_recommendations: Pêşniyarên şopandinê + title: Vekolîne trends: Rojev domain_blocks: all: Bo herkesî disabled: Bo tu kesî users: Ji bo bikarhênerên herêmî yên xwe tomar kirine registrations: + preamble: Kontrol bike ka kî dikare li ser rajekarê te ajimêrekê biafirîne. title: Tomarkirin registrations_mode: modes: @@ -1073,7 +1076,7 @@ ku: bookmarks: Şûnpel csv: CSV domain_blocks: Navperên astengkirî - lists: Lîste + lists: Rêzok mutes: Te bêdeng kir storage: Bîrdanaka medyayê featured_tags: @@ -1084,7 +1087,7 @@ ku: filters: contexts: account: Profîl - home: Serûpel û lîste + home: Serrûpel û rêzok notifications: Agahdarî public: Demnameya gelemperî thread: Axaftin @@ -1151,20 +1154,20 @@ ku: invalid_markup: 'di nav de nîşana HTML a nederbasdar heye: %{error}' imports: errors: - over_rows_processing_limit: ji %{count} zêdetir lîste hene + over_rows_processing_limit: ji %{count} zêdetir rêzok hene modes: merge: Bi hev re bike merge_long: Tomarên heyî bigire û yên nû lê zêde bike overwrite: Bi ser de binivsîne overwrite_long: Tomarkirinên heyî bi yên nû re biguherîne - preface: Tu dikarî têxistin ê daneyên bike ku te ji rajekareke din derxistî ye wek lîsteya kesên ku tu dişopîne an jî asteng dike. + preface: Tu dikarî têxistin ê daneyên bike ku te ji rajekareke din derxistî ye wek rêzoka kesên ku tu dişopîne an jî asteng dike. success: Daneyên te bi serkeftî hat barkirin û di dema xwe de were pêvajotin types: - blocking: Lîsteya antengkiriyan + blocking: Rêzoka astengkirinê bookmarks: Şûnpel - domain_blocking: Lîsteya domaînên astengkirî - following: Lîsteyan şopîneran - muting: Lîsteya bêdengkiriyan + domain_blocking: Rêzoka navperên astengkirî + following: Rêzoka yên dişopînin + muting: Rêzoka bêdengiyê upload: Bar bike invites: delete: Neçalak bike @@ -1473,7 +1476,7 @@ ku: private_long: Tenê bo şopîneran nîşan bide public: Gelemperî public_long: Herkes dikare bibîne - unlisted: Nelîstekirî + unlisted: Nerêzokkirî unlisted_long: Herkes dikare bibîne, lê di demnameya gelemperî de nayê rêz kirin statuses_cleanup: enabled: Şandiyên berê bi xweberî va jê bibe diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 903b302958..2712fd48be 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -286,6 +286,7 @@ lv: update_ip_block_html: "%{name} mainīja nosacījumu priekš IP %{target}" update_status_html: "%{name} atjaunināja ziņu %{target}" update_user_role_html: "%{name} nomainīja %{target} lomu" + deleted_account: dzēsts konts empty: Žurnāli nav atrasti. filter_by_action: Filtrēt pēc darbības filter_by_user: Filtrēt pēc lietotāja diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 1536554304..59c530fb9f 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -25,7 +25,7 @@ nl: admin: account_actions: action: Actie uitvoeren - title: Moderatieactie op %{acct} uitvoeren + title: Moderatiemaatregel tegen %{acct} nemen account_moderation_notes: create: Laat een opmerking achter created_msg: Aanmaken van opmerking voor moderatoren geslaagd! @@ -225,7 +225,7 @@ nl: update_status: Bericht bijwerken update_user_role: Rol bijwerken actions: - approve_appeal_html: "%{name} heeft het bezwaar tegen de moderatie-actie van %{target} goedgekeurd" + approve_appeal_html: "%{name} heeft het bezwaar tegen de moderatiemaatregel van %{target} goedgekeurd" approve_user_html: "%{name} heeft het account van %{target} goedgekeurd" assigned_to_self_report_html: "%{name} heeft rapportage %{target} aan zichzelf toegewezen" change_email_user_html: "%{name} veranderde het e-mailadres van gebruiker %{target}" @@ -262,7 +262,7 @@ nl: enable_user_html: Inloggen voor %{target} is door %{name} ingeschakeld memorialize_account_html: Het account %{target} is door %{name} in een In memoriam veranderd promote_user_html: Gebruiker %{target} is door %{name} gepromoveerd - reject_appeal_html: "%{name} heeft het bezwaar tegen de moderatie-actie van %{target} afgewezen" + reject_appeal_html: "%{name} heeft het bezwaar tegen de moderatiemaatregel van %{target} afgewezen" reject_user_html: "%{name} heeft de registratie van %{target} afgewezen" remove_avatar_user_html: "%{name} verwijderde de avatar van %{target}" reopen_report_html: "%{name} heeft rapportage %{target} heropend" @@ -283,6 +283,7 @@ nl: update_ip_block_html: "%{name} wijzigde de IP-regel voor %{target}" update_status_html: "%{name} heeft de berichten van %{target} bijgewerkt" update_user_role_html: "%{name} wijzigde de rol %{target}" + deleted_account: verwijderd account empty: Geen logs gevonden. filter_by_action: Op actie filteren filter_by_user: Op gebruiker filteren @@ -431,6 +432,9 @@ nl: unsuppress: Account weer aanbevelen instances: availability: + description_html: + one: Als de bezorging aan het domein gedurende %{count} dag blijft mislukken, dan zullen er geen verdere pogingen tot bezorging worden gedaan tot een bezorging van het domein is ontvangen. + other: Als de bezorging aan het domein gedurende %{count} verschillende dagen blijft mislukken, dan zullen er geen verdere pogingen tot bezorging worden gedaan tot een bezorging van het domein is ontvangen. failure_threshold_reached: Foutieve drempelwaarde bereikt op %{date}. failures_recorded: one: Mislukte poging op %{count} dag. @@ -544,17 +548,22 @@ nl: one: "%{count} opmerking" other: "%{count} opmerkingen" action_log: Auditlog - action_taken_by: Actie uitgevoerd door + action_taken_by: Maatregel genomen door actions: delete_description_html: De gerapporteerde berichten worden verwijderd en er wordt een overtreding geregistreerd om toekomstige overtredingen van hetzelfde account sneller af te kunnen handelen. mark_as_sensitive_description_html: De media in de gerapporteerde berichten worden gemarkeerd als gevoelig en er wordt een overtreding geregistreerd om toekomstige overtredingen van hetzelfde account sneller af te kunnen handelen. + other_description_html: Bekijk meer opties voor het controleren van het gedrag van en de communicatie met het gerapporteerde account. + resolve_description_html: Er wordt tegen het gerapporteerde account geen maatregel genomen, geen overtreding geregistreerd en de rapportage wordt gemarkeerd als opgelost. silence_description_html: Het profiel zal alleen zichtbaar zijn voor diegenen die het al volgen of het handmatig opzoeken, waardoor het bereik ernstig wordt beperkt. Kan altijd worden teruggedraaid. + suspend_description_html: Het profiel en alle accountgegevens worden eerst ontoegankelijk gemaakt, totdat deze uiteindelijk onomkeerbaar worden verwijderd. Het is niet meer mogelijk om interactie te hebben met het account. Dit kan binnen 30 dagen worden teruggedraaid. + actions_description_html: Beslis welke maatregel moet worden genomen om deze rapportage op te lossen. Wanneer je een (straf)maatregel tegen het gerapporteerde account neemt, krijgt het account een e-mailmelding, behalve wanneer de spam-categorie is gekozen. add_to_report: Meer aan de rapportage toevoegen are_you_sure: Weet je het zeker? assign_to_self: Aan mij toewijzen assigned: Toegewezen moderator by_target_domain: Domein van gerapporteerde account category: Category + category_description_html: De reden waarom dit account en/of inhoud werd gerapporteerd wordt aan het gerapporteerde account medegedeeld comment: none: Geen comment_description_html: 'Om meer informatie te verstrekken, schreef %{name}:' @@ -571,10 +580,10 @@ nl: create_and_resolve: Oplossen met opmerking create_and_unresolve: Heropenen met opmerking delete: Verwijderen - placeholder: Beschrijf welke acties zijn ondernomen of andere gerelateerde opmerkingen… + placeholder: Beschrijf welke maatregelen zijn genomen of andere gerelateerde opmerkingen... title: Opmerkingen notes_description_html: Bekijk en laat opmerkingen achter voor andere moderatoren en voor jouw toekomstige zelf - quick_actions_description_html: 'Onderneem een snelle actie of scroll naar beneden om de gerapporteerde inhoud te zien:' + quick_actions_description_html: 'Neem een snelle maatregel of scroll naar beneden om de gerapporteerde inhoud te bekijken:' remote_user_placeholder: de externe gebruiker van %{instance} reopen: Rapportage heropenen report: 'Rapportage #%{id}' @@ -582,9 +591,10 @@ nl: reported_by: Gerapporteerd door resolved: Opgelost resolved_msg: Rapportage succesvol opgelost! - skip_to_actions: Ga direct naar de acties + skip_to_actions: Ga direct naar de maatregelen status: Rapportages statuses: Gerapporteerde inhoud + statuses_description_html: De problematische inhoud wordt aan het gerapporteerde account medegedeeld target_origin: Herkomst van de gerapporteerde accounts title: Rapportages unassign: Niet langer toewijzen @@ -603,7 +613,7 @@ nl: moderation: Moderatie special: Speciaal delete: Verwijderen - description_html: Met gebruikersrollen kunt je aanpassen op welke functies en gebieden van Mastodon jouw gebruikers toegang hebben. + description_html: Met gebruikersrollen kun je de functies en onderdelen van Mastodon waar jouw gebruikers toegang tot hebben aanpassen. edit: Rol '%{name}' bewerken everyone: Standaardrechten everyone_full_description_html: Dit is de basisrol die van toepassing is op alle gebruikers, zelfs voor diegenen zonder toegewezen rol. Alle andere rollen hebben de rechten van deze rol als minimum. @@ -620,7 +630,7 @@ nl: manage_announcements: Aankondigingen beheren manage_announcements_description: Staat gebruikers toe om mededelingen op de server te beheren manage_appeals: Bezwaren afhandelen - manage_appeals_description: Staat gebruikers toe om bewaren tegen moderatie-acties te beoordelen + manage_appeals_description: Staat gebruikers toe om bewaren tegen moderatiemaatregelen te beoordelen manage_blocks: Blokkades beheren manage_blocks_description: Staat gebruikers toe om e-mailproviders en IP-adressen te blokkeren manage_custom_emojis: Lokale emoji's beheren @@ -630,7 +640,7 @@ nl: manage_invites: Uitnodigingen beheren manage_invites_description: Staat gebruikers toe om uitnodigingslinks te bekijken en te deactiveren manage_reports: Rapportages afhandelen - manage_reports_description: Sta gebruikers toe om rapporten te bekijken om actie tegen hen te nemen + manage_reports_description: Staat gebruikers toe om rapportages te beoordelen en om aan de hand hiervan moderatiemaatregelen te nemen manage_roles: Rollen beheren manage_roles_description: Staat gebruikers toe om rollen te beheren en toe te wijzen die minder rechten hebben dan hun eigen rol(len) manage_rules: Serverregels wijzigen @@ -642,7 +652,7 @@ nl: manage_user_access: Gebruikerstoegang beheren manage_user_access_description: Staat gebruikers toe om tweestapsverificatie van andere gebruikers uit te schakelen, om hun e-mailadres te wijzigen en om hun wachtwoord opnieuw in te stellen manage_users: Gebruikers beheren - manage_users_description: Staat gebruikers toe om gebruikersdetails van anderen te bekijken en moderatie-acties tegen hen uit te voeren + manage_users_description: Staat gebruikers toe om gebruikersdetails van anderen te bekijken en moderatiemaatregelen tegen hen te nemen manage_webhooks: Webhooks beheren manage_webhooks_description: Staat gebruikers toe om webhooks voor beheertaken in te stellen view_audit_log: Auditlog bekijken @@ -771,7 +781,7 @@ nl: pending_review: In afwachting van beoordeling preview_card_providers: allowed: Links van deze website kunnen trending worden - description_html: Dit zijn domeinen waarvan links vaak worden gedeeld op jouw server. Links zullen niet in het openbaar verlopen, maar niet als het domein van de link wordt goedgekeurd. Jouw goedkeuring (of afwijzing) strekt zich uit tot subdomeinen. + description_html: Dit zijn domeinen waarvan er links vaak op jouw server worden gedeeld. Links zullen niet in het openbaar trending worden, voordat het domein van de link wordt goedgekeurd. Jouw goedkeuring (of afwijzing) geldt ook voor subdomeinen. rejected: Links naar deze nieuwssite kunnen niet trending worden title: Websites rejected: Afgekeurd @@ -845,9 +855,9 @@ nl: sensitive: het gevoelig forceren van diens account silence: het beperken van diens account suspend: het opschorten van diens account - body: "%{target} maakt bezwaar tegen een moderatie-actie door %{action_taken_by} op %{date}, betreffende %{type}. De gebruiker schrijft:" - next_steps: Je kunt het bezwaar goedkeuren om daarmee de moderatie-actie ongedaan te maken, of je kunt het verwerpen. - subject: "%{username} maakt bezwaar tegen een moderatie-actie op %{instance}" + body: "%{target} maakt bezwaar tegen een moderatiemaatregel door %{action_taken_by} op %{date}, betreffende %{type}. De gebruiker schrijft:" + next_steps: Je kunt het bezwaar goedkeuren om daarmee de moderatiemaatregel ongedaan te maken, of je kunt het verwerpen. + subject: "%{username} maakt bezwaar tegen een moderatiemaatregel op %{instance}" new_pending_account: body: Zie hieronder de details van het nieuwe account. Je kunt de aanvraag goedkeuren of afwijzen. subject: Er dient een nieuw account op %{instance} te worden beoordeeld (%{username}) @@ -1017,7 +1027,7 @@ nl: approve_appeal: Bezwaar goedkeuren associated_report: Bijbehorende rapportage created_at: Datum en tijd - description_html: Dit zijn acties die op jouw account zijn toegepast en waarschuwingen die door medewerkers van %{instance} naar je zijn gestuurd. + description_html: Dit zijn maatregelen die tegen jouw account zijn genomen en waarschuwingen die door medewerkers van %{instance} naar je zijn gestuurd. recipient: Geadresseerd aan reject_appeal: Bezwaar afgewezen status: 'Bericht #%{id}' diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 068e5d5ff8..34c233b8bb 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -258,6 +258,7 @@ nn: reject_user_html: "%{name} avslo registrering fra %{target}" reset_password_user_html: "%{name} tilbakestilte passordet for brukaren %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" + deleted_account: sletta konto empty: Ingen loggar funne. filter_by_action: Sorter etter handling filter_by_user: Sorter etter brukar diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 2c625f46bf..319aa5e750 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -5,6 +5,7 @@ oc: contact_missing: Pas parametrat contact_unavailable: Pas disponible hosted_on: Mastodon albergat sus %{domain} + title: A prepaus accounts: follow: Sègre followers: @@ -40,6 +41,9 @@ oc: new_email: Novèla adreça submit: Cambiar l’adreça title: Cambiar l’adreça a %{username} + change_role: + label: Cambiar lo ròtle + no_role: Cap de ròtle confirm: Confirmar confirmed: Confirmat confirming: Confirmacion @@ -102,6 +106,7 @@ oc: reset: Reïnicializar reset_password: Reïnicializar lo senhal resubscribe: Se tornar abonar + role: Ròtle search: Cercar search_same_ip: Autres utilizaires amb la meteissa IP security_measures: @@ -367,6 +372,16 @@ oc: rules: title: Règlas del servidor settings: + about: + title: A prepaus + appearance: + title: Aparéncia + discovery: + follow_recommendations: Recomandacions d’abonaments + profile_directory: Annuari de perfils + public_timelines: Fluxes d’actualitats publics + title: Descobèrta + trends: Tendéncias domain_blocks: all: A tot lo monde disabled: A degun @@ -376,15 +391,20 @@ oc: approved: Validacion necessària per s’inscriure none: Degun pòt pas se marcar open: Tot lo monde se pòt marcar + title: Paramètres del servidor site_uploads: delete: Suprimir lo fichièr enviat statuses: + account: Autor + application: Aplicacion back_to_account: Tornar a la pagina Compte deleted: Suprimits + language: Lenga media: title: Mèdia no_status_selected: Cap d’estatut pas cambiat estant que cap èra pas seleccionat title: Estatuts del compte + visibility: Visibilitat with_media: Amb mèdia system_checks: rules_check: @@ -395,7 +415,10 @@ oc: updated_msg: Paramètres d’etiquetas corrèctament actualizats title: Administracion trends: + statuses: + title: Publicacions endavant tags: + current_score: Marca actuala %{score} dashboard: tag_languages_dimension: Lengas principalas tag_servers_dimension: Servidors principals @@ -404,6 +427,13 @@ oc: delete: Escafar edit_preset: Modificar lo tèxt predefinit d’avertiment title: Gerir los tèxtes predefinits + webhooks: + delete: Suprimir + disable: Desactivar + disabled: Desactivat + enable: Activar + enabled: Actiu + events: Eveniments admin_mailer: new_pending_account: body: Los detalhs del nòu compte son çai-jos. Podètz validar o regetar aquesta demanda. @@ -450,11 +480,14 @@ oc: didnt_get_confirmation: Avètz pas recebut las instruccions de confirmacion ? forgot_password: Senhal oblidat ? invalid_reset_password_token: Lo geton de reïnicializacion es invalid o acabat. Tornatz demandar un geton se vos plai. + link_to_webauth: Utilizar un aparelh de claus de seguretat + log_in_with: Connexion amb login: Se connectar logout: Se desconnectar migrate_account: Mudar endacòm mai migrate_account_html: Se volètz mandar los visitors d’aqueste compte a un autre, podètz o configurar aquí. or_log_in_with: O autentificatz-vos amb + privacy_policy_agreement_html: Ai legit e accepti la politica de confidencialitat providers: cas: CAS saml: SAML @@ -517,6 +550,10 @@ oc: more_details_html: Per mai d’informacion, vejatz la politica de confidencialitat. username_available: Vòstre nom d’utilizaire serà disponible de nòu username_unavailable: Vòstre nom d’utilizaire demorarà pas disponible + disputes: + strikes: + title_actions: + none: Avertiment domain_validator: invalid_domain: es pas un nom de domeni valid errors: @@ -564,12 +601,22 @@ oc: public: Flux public thread: Conversacions edit: + add_keyword: Apondre un mot clau + keywords: Mots clau title: Modificar lo filtre errors: invalid_context: Cap de contèxte o contèxte invalid fornit index: delete: Suprimir empty: Avètz pas cap de filtre. + expires_in: Expira d’aquí %{distance} + expires_on: Expira lo %{date} + keywords: + one: "%{count} mot clau" + other: "%{count} mots clau" + statuses: + one: "%{count} publicacion" + other: "%{count} publicacions" title: Filtres new: title: Ajustar un nòu filtre @@ -660,6 +707,9 @@ oc: moderation: title: Moderacion notification_mailer: + admin: + sign_up: + subject: "%{name} se marquèt" favourite: body: "%{name} a mes vòstre estatut en favorit :" subject: "%{name} a mes vòstre estatut en favorit" @@ -678,12 +728,16 @@ oc: body: "%{name} vos a mencionat dins :" subject: "%{name} vos a mencionat" title: Novèla mencion + poll: + subject: Un sondatge de %{name} es terminat reblog: body: "%{name} a tornat partejar vòstre estatut :" subject: "%{name} a tornat partejar vòstre estatut" title: Novèl partatge status: subject: "%{name} ven de publicar" + update: + subject: "%{name} modifiquèt sa publicacion" notifications: email_events: Eveniments per las notificacions per corrièl email_events_hint: 'Seleccionatz los eveniments que volètz recebre :' @@ -715,6 +769,8 @@ oc: other: Autre posting_defaults: Valors per defaut de las publicacions public_timelines: Fluxes d’actualitats publics + privacy_policy: + title: Politica de confidencialitat reactions: errors: limit_reached: La limita de las reaccions diferentas es estada atenguda @@ -737,6 +793,8 @@ oc: status: Estat del compte remote_follow: missing_resource: URL de redireccion pas trobada + rss: + content_warning: 'Avís de contengut :' scheduled_statuses: over_daily_limit: Avètz passat la limita de %{limit} tuts programats per aquel jorn over_total_limit: Avètz passat la limita de %{limit} tuts programats @@ -817,9 +875,13 @@ oc: other: "%{count} vidèos" boosted_from_html: Partejat de %{acct_link} content_warning: 'Avertiment de contengut : %{warning}' + default_language: Parièr que la lenga d’interfàcia disallowed_hashtags: one: 'conten una etiqueta desactivada : %{tags}' other: 'conten las etiquetas desactivadas : %{tags}' + edited_at_html: Modificat %{date} + errors: + in_reply_not_found: La publicacion que respondètz sembla pas mai exisitir. open_in_web: Dobrir sul web over_character_limit: limit de %{max} caractèrs passat pin_errors: @@ -841,6 +903,7 @@ oc: sign_in_to_participate: Inscrivètz-vos per participar a la conversacion title: '%{name} : "%{quote}"' visibilities: + direct: Dirècte private: Seguidors solament private_long: Mostrar pas qu’als seguidors public: Public @@ -852,15 +915,21 @@ oc: keep_direct: Gardar los messatges dirèctes keep_media: Gardar las publicacions amb pèça-junta keep_pinned: Gardar las publicacions penjadas + keep_polls: Gardar los sondatges + keep_polls_hint: Suprimir pas vòstres sondatges + keep_self_bookmark: Gardar las publicacions que metèretz en favorit + keep_self_fav: Gardar las publicacions que metèretz en favorit min_age: '1209600': 2 setmanas '15778476': 6 meses '2629746': 1 mes '31556952': 1 an '5259492': 2 meses - '604800': 1 week + '604800': 1 setmana '63113904': 2 ans '7889238': 3 meses + min_age_label: Sulhet d’ancianetat + min_favs: Gardar al mens las publicacion en favorit stream_entries: pinned: Tut penjat reblogged: a partejat @@ -885,23 +954,28 @@ oc: generate_recovery_codes: Generar los còdis de recuperacion lost_recovery_codes: Los còdi de recuperacion vos permeton d’accedir a vòstre compte se perdètz vòstre mobil. S’avètz perdut vòstres còdis de recuperacion los podètz tornar generar aquí. Los ancians còdis seràn pas mai valides. methods: Metòde en dos temps + otp: Aplicacion d’autentificacion recovery_codes: Salvar los còdis de recuperacion recovery_codes_regenerated: Los còdis de recuperacion son ben estats tornats generar recovery_instructions_html: Se vos arriba de perdre vòstre mobil, podètz utilizar un dels còdis de recuperacion cai-jos per poder tornar accedir a vòstre compte. Gardatz los còdis en seguretat, per exemple, imprimissètz los e gardatz los amb vòstres documents importants. webauthn: Claus de seguretat user_mailer: + appeal_approved: + action: Anatz al vòstre compte backup_ready: explanation: Avètz demandat una salvagarda complèta de vòstre compte Mastodon. Es prèsta per telecargament ! subject: Vòstre archiu es prèst per telecargament title: Archiu per emportar warning: reason: 'Motiu :' + statuses: 'Publicacion citada :' subject: disable: Vòstre compte %{acct} es gelat none: Avertiment per %{acct} silence: Vòstre compte %{acct} es limitat suspend: Vòstre compte %{acct} es suspendut title: + delete_statuses: Publicacion levada disable: Compte gelat none: Avertiment silence: Compte limitat diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 4698bedc25..72bd61bd39 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -289,6 +289,7 @@ pl: update_ip_block_html: "%{name} stworzył(a) regułę dla IP %{target}" update_status_html: "%{name} zaktualizował(a) wpis użytkownika %{target}" update_user_role_html: "%{name} zmienił rolę %{target}" + deleted_account: usunięte konto empty: Nie znaleziono aktywności w dzienniku. filter_by_action: Filtruj według działania filter_by_user: Filtruj według użytkownika diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 4b6206f20c..f372ef6bce 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -207,6 +207,7 @@ pt-BR: reject_user: Rejeitar Usuário remove_avatar_user: Remover Avatar reopen_report: Reabrir Relatório + resend_user: Reenviar o E-mail de Confirmação reset_password_user: Redefinir a senha resolve_report: Resolver Relatório sensitive_account: Marcar a mídia na sua conta como sensível @@ -281,6 +282,7 @@ pt-BR: update_ip_block_html: "%{name} alterou a regra para IP %{target}" update_status_html: "%{name} atualizou a publicação de %{target}" update_user_role_html: "%{name} alterou a função %{target}" + deleted_account: conta excluída empty: Nenhum registro encontrado. filter_by_action: Filtrar por ação filter_by_user: Filtrar por usuário @@ -667,17 +669,29 @@ pt-BR: title: Regras do servidor settings: about: + manage_rules: Gerenciar regras do servidor + rules_hint: Existe uma área dedicada para as regras que os usuários devem aderir. title: Sobre appearance: + preamble: Personalize a interface web do Mastodon. title: Aparência branding: title: Marca + content_retention: + title: Retenção de conteúdo discovery: + follow_recommendations: Seguir recomendações + profile_directory: Diretório de perfis + public_timelines: Timelines públicas + title: Descobrir trends: Tendências domain_blocks: all: Para todos disabled: Para ninguém users: Para usuários locais logados + registrations: + preamble: Controle quem pode criar uma conta no seu servidor. + title: Inscrições registrations_mode: modes: approved: Aprovação necessária para criar conta @@ -704,9 +718,23 @@ pt-BR: title: Mídia metadata: Metadados no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado + open: Abrir post + original_status: Postagem original + reblogs: Reblogs + status_changed: Publicação alterada title: Toots da conta + trending: Em alta + visibility: Visibilidade with_media: Com mídia strikes: + actions: + delete_statuses: "%{name} excluiu as publicações de %{target}" + disable: "%{name} congelou a conta de %{target}" + mark_statuses_as_sensitive: "%{name} marcou as publicações de %{target} como sensíveis" + none: "%{name} enviou um aviso para %{target}" + sensitive: "%{name} marcou as publicações de %{target} como sensíveis" + silence: "%{name} limitou a conta de %{target}" + suspend: "%{name} suspendeu a conta de %{target}" appeal_approved: Apelado appeal_pending: Recurso pendente system_checks: @@ -716,6 +744,7 @@ pt-BR: message_html: Não foi possível conectar ao Elasticsearch. Por favor, verifique se está em execução, ou desabilite a pesquisa de texto completo elasticsearch_version_check: message_html: 'Versão de Elasticsearch incompatível: %{value}' + version_comparison: A versão %{running_version} de Elasticsearch está em execução, porém é obrigatória a versão %{required_version} rules_check: action: Gerenciar regras do servidor message_html: Você não definiu nenhuma regra de servidor. @@ -772,14 +801,23 @@ pt-BR: empty: Você ainda não definiu nenhuma predefinição de alerta. title: Gerenciar os avisos pré-definidos webhooks: + add_new: Adicionar endpoint delete: Excluir disable: Desabilitar disabled: Desativado + edit: Editar endpoint enable: Habilitar enabled: Ativo + enabled_events: + one: 1 evento habilitado + other: "%{count} eventos ativados" events: Eventos + new: Novo webhook rotate_secret: Girar segredo + secret: Assinatura secreta status: Status + title: Webhooks + webhook: Webhook admin_mailer: new_appeal: actions: @@ -790,6 +828,7 @@ pt-BR: sensitive: para marcar sua conta como sensível silence: para limitar sua conta suspend: para suspender sua conta + body: "%{target} está apelando por uma decisão de moderação de %{action_taken_by} em %{date}, que era %{type}. Escreveu:" new_pending_account: body: Os detalhes da nova conta estão abaixo. Você pode aprovar ou vetar. subject: Nova conta para revisão em %{instance} (%{username}) @@ -798,6 +837,8 @@ pt-BR: body_remote: Alguém da instância %{domain} reportou %{target} subject: Nova denúncia sobre %{instance} (#%{id}) new_trends: + new_trending_links: + title: Links em destaque new_trending_statuses: title: Publicações em alta new_trending_tags: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 8413c642ae..e299cee8b8 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -283,6 +283,7 @@ pt-PT: update_ip_block_html: "%{name} alterou regra para IP %{target}" update_status_html: "%{name} atualizou o estado de %{target}" update_user_role_html: "%{name} alterou a função %{target}" + deleted_account: conta excluída empty: Não foram encontrados registos. filter_by_action: Filtrar por ação filter_by_user: Filtrar por utilizador diff --git a/config/locales/simple_form.af.yml b/config/locales/simple_form.af.yml index 82dffa42f2..e408079daa 100644 --- a/config/locales/simple_form.af.yml +++ b/config/locales/simple_form.af.yml @@ -4,10 +4,16 @@ af: hints: announcement: scheduled_at: Los blanko om die aankondiging onmiddelik te publiseer + featured_tag: + name: 'Hier is van die hits-etikette wat jy onlangs gebruik het:' webhook: events: Kies gebeurtenisse om te stuur url: Waarheen gebeurtenisse gestuur sal word labels: + defaults: + locale: Koppelvlak taal + form_admin_settings: + site_terms: Privaatheidsbeleid webhook: events: Geaktiveerde gebeurtenisse url: End-punt URL diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index 0c1a3dcc86..b972a1d001 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -79,6 +79,7 @@ ar: ip: أدخل عنوان IPv4 أو IPv6. يمكنك حظر نطاقات كاملة باستخدام بناء الـCIDR. كن حذراً على أن لا تَحظر نفسك! severities: no_access: حظر الوصول إلى جميع المصادر + sign_up_block: لا يمكن إنشاء حسابات جديدة sign_up_requires_approval: التسجيلات الجديدة سوف تتطلب موافقتك severity: اختر ما سيحدث مع الطلبات من هذا الـIP rule: diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index b22fc9ee52..f0fca6a688 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -4,16 +4,19 @@ ast: hints: defaults: autofollow: La xente que se rexistre pente la invitación va siguite automáticamente - bot: Esta cuenta fai principalmente aiciones automatizaes y podría nun supervisase + bot: Avisa a otres persones de qu'esta cuenta fai principalmente aiciones automatizaes y de que ye posible que nun tean supervisaes digest: Namái s'unvia dempués d'un periodu llargu d'inactividá y namái si recibiesti cualesquier mensaxe personal na to ausencia + discoverable: Permite que persones desconocíes descubran la to cuenta pente recomendaciones, tendencies y otres funciones email: Vamos unviate un corréu de confirmación + fields: Pues tener hasta 4 elementos qu'apaecen nuna tabla dientro del to perfil irreversible: Los barritos peñeraos van desapaecer de mou irreversible, magar que se desanicie la peñera dempués + locked: Controla manualmente quién pue siguite pente l'aprobación de les solicitúes de siguimientu password: Usa 8 caráuteres polo menos - setting_hide_network: La xente que sigas y teas siguiendo nun va amosase nel perfil + setting_hide_network: Les persones que sigas y les que te sigan nun van apaecer nel to perfil setting_show_application: L'aplicación qu'uses pa espublizar apaez na vista detallada de los tos artículos username: El nome d'usuariu va ser únicu en %{domain} featured_tag: - name: 'Equí hai dalgunes de les etiquetes qu''usesti apocayá:' + name: 'Equí tán dalgunes de les etiquetes qu''usesti apocayá:' form_challenge: current_password: Tas entrando nuna área segura imports: @@ -22,7 +25,7 @@ ast: text: Esto va ayudanos a revisar la to aplicación ip_block: comment: Opcional. Acuérdate por qué amestesti esta regla. - expires_in: Les direiciones IP son un recursu finitu, suelen compartise y cambiar de manes. Por esti motivu, nun s'aconseyen los bloqueos de direiciones IP indefiníos. + expires_in: Les direiciones IP son un recursu finitu, suelen compartise y cambiar de manes. Por esti motivu, nun s'aconseyen los bloqueos indefiníos de direiciones IP. sessions: otp: 'Introduz el códigu de dos pasos xeneráu pola aplicación autenticadora o usa unu de los códigos de recuperación:' labels: @@ -39,20 +42,22 @@ ast: announcement: text: Anunciu defaults: + avatar: Avatar bot: Esta cuenta ye d'un robó chosen_languages: Peñera de llingües confirm_new_password: Confirmación de la contraseña nueva confirm_password: Confirmación de la contraseña current_password: Contraseña actual data: Datos - discoverable: Llistar esta cuenta nel direutoriu - display_name: Nome a amosar - email: Direición de corréu + discoverable: Suxerir esta cuenta a otres persones + display_name: Nome visible + email: Direición de corréu electrónicu expires_in: Caduca dempués de fields: Metadatos del perfil header: Testera irreversible: Escartar en cuentes d'anubrir locale: Llingua de la interfaz + locked: Riquir solicitúes de siguimientu max_uses: Númberu máximu d'usos new_password: Contraseña nueva note: Biografía @@ -61,12 +66,12 @@ ast: phrase: Pallabra clave o fras setting_advanced_layout: Activar la interfaz web avanzada setting_auto_play_gif: Reproducir GIFs automáticamente - setting_boost_modal: Amosar el diálogu de confirmación enantes de compartir un barritu + setting_boost_modal: Amosar el diálogu de confirmación enantes de compartir un artículu setting_default_language: Llingua de los espublizamientos setting_default_privacy: Privacidá de los espublizamientos setting_delete_modal: Amosar el diálogu de confirmación enantes de desaniciar un barritu setting_noindex: Nun apaecer nos índices de los motores de gueta - setting_show_application: Dicir les aplicaciones que s'usen pa barritar + setting_show_application: Dicir les aplicaciones que s'usen pa unviar artículos setting_system_font_ui: Usar la fonte predeterminada del sistema setting_theme: Estilu del sitiu setting_trends: Amosar les tendencies de güei @@ -76,7 +81,7 @@ ast: sign_in_token_attempt: Códigu de seguranza type: Tipu de la importación username: Nome d'usuariu - username_or_email: Nome d'usuariu o corréu + username_or_email: Nome d'usuariu o direición de corréu electrónicu whole_word: La pallabra entera featured_tag: name: Etiqueta @@ -93,7 +98,7 @@ ast: follow: Daquién te sigue follow_request: Daquién solicitó siguite mention: Daquién te mentó - reblog: Daquién compartió dalgún estáu de to + reblog: Daquién compartió'l to artículu tag: name: Etiqueta user_role: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index afa12a1d2a..4dd7463f4d 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -8,7 +8,7 @@ cs: acct: Zadejte svůj účet, na který se chcete přesunout, ve formátu přezdívka@doména account_warning_preset: text: Můžete použít syntax příspěvku, jako jsou URL, hashtagy nebo zmínky - title: Nepovinné. Není viditelné pro příjemce + title: Volitelné. Není viditelné pro příjemce admin_account_action: include_statuses: Uživatel uvidí, které příspěvky způsobily moderátorskou akci nebo varování send_email_notification: Uživatel obdrží vysvětlení toho, co se stalo s jeho účtem @@ -18,11 +18,11 @@ cs: disable: Zabránit uživateli používat svůj účet, ale nemazat ani neskrývat jejich obsah. none: Toto použijte pro zaslání varování uživateli, bez vyvolání jakékoliv další akce. sensitive: Vynutit označení všech mediálních příloh tohoto uživatele jako citlivých. - silence: Zamezit uživateli odesílat příspěvky s veřejnou viditelností, schovat jejich příspěvky a notifikace před lidmi, kteří je nesledují. + silence: Zamezit uživateli odesílat veřejné příspěvky, schovat jejich příspěvky a notifikace před lidmi, kteří je nesledují. suspend: Zamezit jakékoliv interakci z nebo do tohoto účtu a smazat jeho obsah. Vratné do 30 dnů. warning_preset_id: Volitelné. Na konec předlohy můžete stále vložit vlastní text announcement: - all_day: Po vybrání budou zobrazeny jenom dny z časového období + all_day: Po vybrání budou zobrazeny jen dny z daného časového období ends_at: Volitelné. Zveřejněné oznámení bude v uvedený čas skryto scheduled_at: Pro okamžité zveřejnění ponechte prázdné starts_at: Volitelné. Jen pokud je oznámení vázáno na konkrétní časové období @@ -36,18 +36,18 @@ cs: context: Jeden či více kontextů, ve kterých má být filtr uplatněn current_password: Z bezpečnostních důvodů prosím zadejte heslo současného účtu current_username: Potvrďte prosím tuto akci zadáním uživatelského jména aktuálního účtu - digest: Odesíláno pouze po dlouhé době nečinnosti a pouze, pokud jste při své nepřítomnosti obdrželi osobní zprávy + digest: Odesíláno pouze po dlouhé době nečinnosti a pouze, pokud jste během své nepřítomnosti obdrželi osobní zprávy discoverable: Umožnit, aby mohli váš účet objevit neznámí lidé pomocí doporučení, trendů a dalších funkcí email: Bude vám poslán potvrzovací e-mail - fields: Na profilu můžete mít až 4 položky zobrazené jako tabulka + fields: Na svém profilu můžete mít zobrazeny až 4 položky jako tabulku header: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px inbox_url: Zkopírujte URL z hlavní stránky mostu, který chcete použít irreversible: Filtrované příspěvky nenávratně zmizí, i pokud bude filtr později odstraněn - locale: Jazyk uživatelského rozhraní, e-mailů a oznámení push + locale: Jazyk uživatelského rozhraní, e-mailů a push notifikací locked: Kontrolujte, kdo vás může sledovat pomocí schvalování žádostí o sledování password: Použijte alespoň 8 znaků phrase: Shoda bude nalezena bez ohledu na velikost písmen v textu příspěvku či varování o obsahu - scopes: Která API bude aplikaci povoleno používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat jednotlivě. + scopes: Která API bude aplikace moct používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat jednotlivě. setting_aggregate_reblogs: Nezobrazovat nové boosty pro příspěvky, které byly nedávno boostnuty (ovlivňuje pouze nově přijaté boosty) setting_always_send_emails: Jinak nebudou e-mailové notifikace posílány, když Mastodon aktivně používáte setting_default_sensitive: Citlivá média jsou ve výchozím stavu skryta a mohou být zobrazena kliknutím @@ -58,16 +58,18 @@ cs: setting_noindex: Ovlivňuje váš veřejný profil a stránky příspěvků setting_show_application: Aplikace, kterou používáte k odeslání příspěvků, bude zobrazena jejich detailním zobrazení setting_use_blurhash: Gradienty jsou založeny na barvách skryté grafiky, ale zakrývají jakékoliv detaily - setting_use_pending_items: Aktualizovat časovou osu až po kliknutím namísto automatického rolování kanálu + setting_use_pending_items: Aktualizovat časovou osu až po kliknutí namísto automatického rolování kanálu username: Vaše uživatelské jméno bude na serveru %{domain} unikátní - whole_word: Je-li klíčové slovo či fráze pouze alfanumerická, bude aplikována pouze, pokud se shoduje s celým slovem + whole_word: Je-li klíčové slovo či fráze pouze alfanumerická, bude aplikován pouze, pokud se shoduje s celým slovem domain_allow: domain: Tato doména bude moci stahovat data z tohoto serveru a příchozí data z ní budou zpracována a uložena email_domain_block: - domain: Toto může být doménové jméno, které je v e-mailové adrese nebo MX záznam, který používá. Budou zkontrolovány při registraci. + domain: Toto může být doménové jméno, které je v e-mailové adrese, nebo MX záznam, který používá. Budou zkontrolovány při registraci. with_dns_records: Dojde k pokusu o překlad DNS záznamů dané domény a výsledky budou rovněž zablokovány + featured_tag: + name: 'Zde jsou některé z hashtagů, které jste nedávno použili:' filters: - action: Vyberte jakou akci provést, když příspěvek odpovídá filtru + action: Vyberte, jakou akci provést, když příspěvek odpovídá filtru actions: hide: Úplně schovat filtrovaný obsah tak, jako by neexistoval warn: Schovat filtrovaný obsah za varováním zmiňujicím název filtru @@ -77,13 +79,20 @@ cs: closed_registrations_message: Zobrazeno při zavření registrace content_cache_retention_period: Příspěvky z jiných serverů budou odstraněny po zadaném počtu dní, pokud je nastavena kladná hodnota. To může být nevratné. custom_css: Můžete použít vlastní styly ve verzi Mastodonu. + mascot: Přepíše ilustraci v pokročilém webovém rozhraní. media_cache_retention_period: Stažené mediální soubory budou po zadaném počtu dní odstraněny, pokud je nastavena kladná hodnota, a na požádání znovu staženy. profile_directory: Adresář profilu obsahuje seznam všech uživatelů, kteří se přihlásili, aby mohli být nalezeni. require_invite_text: Pokud přihlášení vyžaduje ruční schválení, měl by být textový vstup „Proč se chcete připojit?“ povinný spíše než volitelný + site_contact_email: Jak vás mohou lidé kontaktovat v případě právních dotazů nebo dotazů na podporu. site_contact_username: Jak vás lidé mohou oslovit na Mastodon. site_extended_description: Jakékoli další informace, které mohou být užitečné pro návštěvníky a vaše uživatele. Může být strukturováno pomocí Markdown syntaxe. + site_short_description: Krátký popis, který pomůže jednoznačně identifikovat váš server. Kdo ho provozuje, pro koho je určen? site_terms: Použijte vlastní zásady ochrany osobních údajů nebo ponechte prázdné pro použití výchozího nastavení. Může být strukturováno pomocí Markdown syntaxe. + site_title: Jak mohou lidé odkazovat na váš server kromě názvu domény. + theme: Vzhled stránky, který vidí noví a odhlášení uživatelé. thumbnail: Přibližně 2:1 obrázek zobrazený vedle informací o vašem serveru. + timeline_preview: Odhlášení uživatelé budou moci procházet nejnovější veřejné příspěvky na serveru. + trendable_by_default: Přeskočit manuální kontrolu populárního obsahu. Jednotlivé položky mohou být odstraněny z trendů později. trends: Trendy zobrazují, které příspěvky, hashtagy a zprávy získávají na serveru pozornost. form_challenge: current_password: Vstupujete do zabezpečeného prostoru @@ -222,6 +231,7 @@ cs: form_admin_settings: backups_retention_period: Doba uchovávání archivu uživatelů bootstrap_timeline_accounts: Vždy doporučovat tyto účty novým uživatelům + closed_registrations_message: Vlastní zpráva, když přihlášení není k dispozici content_cache_retention_period: Doba uchování mezipaměti obsahu custom_css: Vlastní CSS mascot: Vlastní maskot (zastaralé) diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index b5cb9c6a25..e4dccca734 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -66,6 +66,8 @@ da: email_domain_block: domain: Dette kan være domænenavnet vist i den benyttede i e-mailadresse eller MX-post. Begge tjekkes under tilmelding. with_dns_records: Et forsøg på at opløse det givne domænes DNS-poster foretages, og resultaterne blokeres ligeledes + featured_tag: + name: 'Her er nogle af dine hyppigst brugte hashtags:' filters: action: Vælg handlingen til eksekvering, når et indlæg matcher filteret actions: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 8fe509cb80..ae59a591d6 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -180,7 +180,7 @@ de: inbox_url: Inbox-URL des Relais irreversible: Endgültig, nicht nur temporär ausblenden locale: Sprache der Benutzeroberfläche - locked: Geschütztes Profil + locked: Follower müssen zugelassen werden max_uses: Maximale Verwendungen new_password: Neues Passwort note: Über mich @@ -255,7 +255,7 @@ de: interactions: must_be_follower: Benachrichtigungen von Profilen verbergen, die mir nicht folgen must_be_following: Benachrichtigungen von Profilen verbergen, denen ich nicht folge - must_be_following_dm: Direktnachrichten von Profilen, denen Du nicht folgst, nicht gestatten + must_be_following_dm: Direktnachrichten von Profilen, denen Du nicht folgst, verweigern invite: comment: Kommentar invite_request: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 48e2c780ef..dffffa61ce 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -60,6 +60,8 @@ eo: whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto domain_allow: domain: Ĉi tiu domajno povos akiri datumon de ĉi tiu servilo kaj envenanta datumo estos prilaborita kaj konservita + featured_tag: + name: 'Jen kelkaj el la kradvortoj, kiujn vi uzis lastatempe:' filters: actions: warn: Kaŝi la enhavon filtritan malantaŭ averto mencianta la nomon de la filtro diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 2fe4d033dd..7df89a31a3 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -66,6 +66,8 @@ es: email_domain_block: domain: Este puede ser el nombre de dominio que aparece en la dirección de correo electrónico o el registro MX que utiliza. Se comprobarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra + featured_tag: + name: 'Aquí están algunas de las etiquetas que más has utilizado recientemente:' filters: action: Elegir qué acción realizar cuando una publicación coincide con el filtro actions: diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 774c5f5025..3b2d30aae2 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -5,7 +5,7 @@ fr: account_alias: acct: Spécifiez l’identifiant@domaine du compte que vous souhaitez faire migrer account_migration: - acct: Spécifiez l’identifiant@domaine du compte vers lequel vous souhaitez déménager + acct: Spécifiez l’identifiant@domaine du compte vers lequel vous souhaitez migrer account_warning_preset: text: Vous pouvez utiliser la syntaxe des messages, comme les URL, les hashtags et les mentions title: Facultatif. Invisible pour le destinataire @@ -53,7 +53,7 @@ fr: setting_default_sensitive: Les médias sensibles sont cachés par défaut et peuvent être révélés d’un simple clic setting_display_media_default: Masquer les médias marqués comme sensibles setting_display_media_hide_all: Toujours masquer les médias - setting_display_media_show_all: Toujours montrer les médias + setting_display_media_show_all: Toujours afficher les médias setting_hide_network: Ceux que vous suivez et ceux qui vous suivent ne seront pas affichés sur votre profil setting_noindex: Affecte votre profil public ainsi que vos messages setting_show_application: Le nom de l’application que vous utilisez pour publier sera affichée dans la vue détaillée de vos messages @@ -74,9 +74,26 @@ fr: hide: Cacher complètement le contenu filtré, faire comme s'il n'existait pas warn: Cacher le contenu filtré derrière un avertissement mentionnant le nom du filtre form_admin_settings: + backups_retention_period: Conserve les archives générées par l'utilisateur selon le nombre de jours spécifié. + bootstrap_timeline_accounts: Ces comptes seront épinglés en tête de liste des recommandations pour les nouveaux utilisateurs. closed_registrations_message: Affiché lorsque les inscriptions sont fermées + content_cache_retention_period: Les publications depuis d'autres serveurs seront supprimées après un nombre de jours spécifiés lorsque défini sur une valeur positive. Cela peut être irréversible. + custom_css: Vous pouvez appliquer des styles personnalisés sur la version Web de Mastodon. + mascot: Remplace l'illustration dans l'interface Web avancée. + media_cache_retention_period: Les fichiers multimédias téléchargés seront supprimés après le nombre de jours spécifiés lorsque la valeur est positive, et seront téléchargés à nouveau sur demande. + profile_directory: L'annuaire des profils répertorie tous les utilisateurs qui ont opté pour être découverts. + require_invite_text: Lorsque les inscriptions nécessitent une approbation manuelle, rendre le texte de l’invitation "Pourquoi voulez-vous vous inscrire ?" obligatoire plutôt que facultatif + site_contact_email: Comment les personnes peuvent vous joindre pour des demandes de renseignements juridiques ou d'assistance. site_contact_username: Comment les gens peuvent vous conracter sur Mastodon. + site_extended_description: Toute information supplémentaire qui peut être utile aux visiteurs et à vos utilisateurs. Peut être structurée avec la syntaxe Markdown. + site_short_description: Une courte description pour aider à identifier de manière unique votre serveur. Qui l'exécute, à qui il est destiné ? + site_terms: Utilisez votre propre politique de confidentialité ou laissez vide pour utiliser la syntaxe par défaut. Peut être structurée avec la syntaxe Markdown. + site_title: Comment les personnes peuvent se référer à votre serveur en plus de son nom de domaine. theme: Thème que verront les utilisateur·rice·s déconnecté·e·s ainsi que les nouveaux·elles utilisateur·rice·s. + thumbnail: Une image d'environ 2:1 affichée à côté des informations de votre serveur. + timeline_preview: Les visiteurs déconnectés pourront parcourir les derniers messages publics disponibles sur le serveur. + trendable_by_default: Ignorer l'examen manuel du contenu tendance. Des éléments individuels peuvent toujours être supprimés des tendances après coup. + trends: Les tendances montrent quelles publications, hashtags et actualités sont en train de gagner en traction sur votre serveur. form_challenge: current_password: Vous entrez une zone sécurisée imports: @@ -212,6 +229,9 @@ fr: hide: Cacher complètement warn: Cacher derrière un avertissement form_admin_settings: + backups_retention_period: Période d'archivage utilisateur + bootstrap_timeline_accounts: Toujours recommander ces comptes aux nouveaux utilisateurs + closed_registrations_message: Message personnalisé lorsque les inscriptions ne sont pas disponibles content_cache_retention_period: Durée de rétention du contenu dans le cache custom_css: CSS personnalisé mascot: Mascotte personnalisée (héritée) @@ -219,7 +239,10 @@ fr: profile_directory: Activer l’annuaire des profils registrations_mode: Qui peut s’inscrire require_invite_text: Exiger une raison pour s’inscrire + show_domain_blocks: Afficher les blocages de domaines show_domain_blocks_rationale: Montrer pourquoi les domaines ont été bloqués + site_contact_email: E-mail de contact + site_contact_username: Nom d'utilisateur du contact site_extended_description: Description étendue site_short_description: Description du serveur site_terms: Politique de confidentialité diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index 20a9da24e9..5fa6bb8bae 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -1 +1,44 @@ +--- ga: + simple_form: + hints: + account_alias: + acct: Sonraigh ainm@fearann an chuntais ar mhaith leat aistriú uaidh + account_migration: + acct: Sonraigh ainm@fearann an chuntais ar mhaith leat aistriú chuige + admin_account_action: + types: + disable: Cuir cosc ar an úsáideoir a chuntas a úsáid, ach ná scrios nó folaigh a bhfuil ann. + defaults: + setting_display_media_hide_all: Folaítear meáin i gcónaí + setting_display_media_show_all: Go dtaispeántar meáin i gcónaí + labels: + account_warning_preset: + title: Teideal + admin_account_action: + types: + none: Seol rabhadh + announcement: + text: Fógra + defaults: + avatar: Abhatár + data: Sonraí + email: Seoladh ríomhphoist + header: Ceanntásc + note: Beathaisnéis + password: Pasfhocal + setting_display_media_default: Réamhshocrú + title: Teideal + username: Ainm úsáideora + featured_tag: + name: Haischlib + form_admin_settings: + site_terms: Polasaí príobháideachais + ip_block: + ip: IP + tag: + name: Haischlib + user_role: + name: Ainm + required: + mark: "*" diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 0f4528af87..290546c767 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -10,7 +10,7 @@ gd: text: "’S urrainn dhut co-chàradh puist a chleachdadh, can URLaichean, tagaichean hais is iomraidhean" title: Roghainneil. Chan fhaic am faightear seo admin_account_action: - include_statuses: Chì an cleachdaiche dè na postaichean a dh’adhbharaich gnìomh na maorsainneachd no an rabhadh + include_statuses: Chì an cleachdaiche dè na postaichean a dh’adhbharaich gnìomh maorsainneachd no rabhadh send_email_notification: Ghaibh am faightear mìneachadh air dè thachair leis a’ chunntas aca text_html: Roghainneil. Faodaidh tu co-chàradh puist a chleachdadh. ’S urrainn dhut rabhaidhean ro-shuidhichte a chur ris airson ùine a chaomhnadh type_html: Tagh dè nì thu le %{acct} @@ -18,7 +18,7 @@ gd: disable: Bac an cleachdaiche o chleachdadh a’ chunntais aca ach na sguab às no falaich an t-susbaint aca. none: Cleachd seo airson rabhadh a chur dhan chleachdaiche gun ghnìomh eile a ghabhail. sensitive: Èignich comharra gu bheil e frionasach air a h-uile ceanglachan meadhain a’ chleachdaiche seo. - silence: Bac an cleachdaiche o phostadh le faicsinneachd poblach, falaich na postaichean is brathan aca o na daoine nach eil a’ leantainn air. + silence: Bac an cleachdaiche o bhith a’ postadh le faicsinneachd poblach, falaich na postaichean aca agus brathan o na daoine nach eil ga leantainn. suspend: Bac conaltradh sam bith leis a’ chunntas seo agus sguab às an t-susbaint aige. Gabhaidh seo a neo-dhèanamh am broinn 30 latha. warning_preset_id: Roghainneil. ’S urrainn dhut teacsa gnàthaichte a chur ri deireadh an ro-sheata fhathast announcement: @@ -42,7 +42,7 @@ gd: fields: Faodaidh tu suas ri 4 nithean a shealltainn mar chlàr air a’ phròifil agad header: PNG, GIF or JPG. %{size} air a char as motha. Thèid a sgèileadh sìos gu %{dimensions}px inbox_url: Dèan lethbhreac dhen URL o phrìomh-dhuilleag an ath-sheachadain a bu mhiann leat cleachdadh - irreversible: Thèid postaichean criathraichte a-mach à sealladh gu buan fiù ’s ma bheir thu a’ chriathrag air falbh uaireigin eile + irreversible: Thèid postaichean criathraichte à sealladh gu buan fiù ’s ma bheir thu a’ chriathrag air falbh às dèidh làimhe locale: Cànan eadar-aghaidh a’ chleachdaiche, nam post-d ’s nam brathan putaidh locked: Stiùirich cò dh’fhaodas leantainn ort le gabhail ri iarrtasan leantainn a làimh password: Cleachd co-dhiù 8 caractaran @@ -58,7 +58,7 @@ gd: setting_noindex: Bheir seo buaidh air a’ phròifil phoblach ’s air duilleagan nam postaichean agad setting_show_application: Chithear cò an aplacaid a chleachd thu airson post a sgrìobhadh ann an seallaidhean mionaideach nam postaichean agad setting_use_blurhash: Tha caiseadan stèidhichte air dathan nan nithean lèirsinneach a chaidh fhalach ach chan fhaicear am mion-fhiosrachadh - setting_use_pending_items: Falaich ùrachaidhean na loidhne-ama air cùlaibh briogaidh seach a bhith a’ sgroladh an inbhir gu fèin-obrachail + setting_use_pending_items: Falaich ùrachaidhean na loidhne-ama air cùlaibh briogaidh seach a bhith a’ sgroladh nam postaichean gu fèin-obrachail username: Bidh ainm-cleachdaiche àraidh agad air %{domain} whole_word: Mur eil ach litrichean is àireamhan san fhacal-luirg, cha dèid a chur an sàs ach ma bhios e a’ maidseadh an fhacail shlàin domain_allow: @@ -66,6 +66,8 @@ gd: email_domain_block: domain: Seo ainm na h-àrainne a nochdas san t-seòladh puist-d no sa chlàr MX a chleachdas e. Thèid an dearbhadh aig àm a’ chlàraidh. with_dns_records: Thèid oidhirp a dhèanamh air fuasgladh clàran DNS na h-àrainne a chaidh a thoirt seachad agus thèid na toraidhean a bhacadh cuideachd + featured_tag: + name: 'Seo cuid dhe na tagaichean hais a chleachd thu o chionn goirid:' filters: action: Tagh na thachras nuair a bhios post a’ maidseadh na criathraige actions: diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index e3dc997616..ffa091b684 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -66,6 +66,8 @@ he: email_domain_block: domain: זה יכול להיות שם הדומיין המופיע בכתובת הדוא"ל או רשומת ה-MX בה הוא משתמש. הם ייבדקו בהרשמה. with_dns_records: ייעשה נסיון למצוא את רשומות ה-DNS של דומיין נתון והתוצאות ייחסמו גם הן + featured_tag: + name: 'הנה כמה מההאשטגים שהשתמשת בהם לאחרונה:' filters: action: בחרו איזו פעולה לבצע כאשר פוסט מתאים למסנן actions: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index deb85676ae..bd3a752ea9 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -67,31 +67,31 @@ ja: domain: 電子メールアドレスのドメイン名、または使用されるMXレコードを指定できます。新規登録時にチェックされます。 with_dns_records: 指定したドメインのDNSレコードを取得し、その結果もメールドメインブロックに登録されます featured_tag: - name: '最近使用したハッシュタグ:' + name: 最近使用したハッシュタグ filters: - action: 投稿がフィルタに一致したときに実行するアクションを選択します + action: 投稿がフィルタに一致したときに実行するアクションを選択 actions: - hide: フィルタリングされたコンテンツを完全に隠し、存在しないかのようにします + hide: フィルタリングしたコンテンツを完全に隠し、あたかも存在しないかのようにします warn: フィルタリングされたコンテンツを、フィルタータイトルの警告の後ろに隠します。 form_admin_settings: backups_retention_period: 生成されたユーザーのアーカイブを指定した日数の間保持します。 - bootstrap_timeline_accounts: これらのアカウントは、新しいユーザーのフォロー推奨の一番上にピン留めされます。 - closed_registrations_message: サインアップ終了時に表示されます + bootstrap_timeline_accounts: これらのアカウントは、新しいユーザーのフォロー推奨リストの一番上にピン留めされます。 + closed_registrations_message: アカウント作成を停止している時に表示されます content_cache_retention_period: 正の値に設定されている場合、他のサーバーの投稿は指定された日数の後に削除されます。元に戻せません。 - custom_css: ウェブ版の Mastodon でカスタムスタイルを適用できます。 + custom_css: ウェブ版のMastodonでカスタムスタイルを適用できます。 mascot: 上級者向けWebインターフェースのイラストを上書きします。 media_cache_retention_period: 正の値に設定されている場合、ダウンロードされたメディアファイルは指定された日数の後に削除され、リクエストに応じて再ダウンロードされます。 - profile_directory: ディレクトリには、掲載する設定をしたすべてのユーザーが一覧表示されます。 - require_invite_text: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする + profile_directory: プロフィールディレクトリには、掲載するよう設定したすべてのユーザーが一覧表示されます。 + require_invite_text: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストの入力を必須にする site_contact_email: 法律またはサポートに関する問い合わせ先 site_contact_username: マストドンでの連絡方法 - site_extended_description: 訪問者やユーザーに役立つかもしれない任意の追加情報。Mastodon 構文が使用できます。 + site_extended_description: 訪問者やユーザーに役立つかもしれない任意の追加情報。Markdownが使えます。 site_short_description: 誰が運営しているのか、誰に向けたものなのかなど、サーバーを特定する短い説明。 - site_terms: 独自のプライバシーポリシーを使用するか、空白にしてデフォルトのプライバシーポリシーを使用します。Mastodon 構文が使用できます。 + site_terms: 独自のプライバシーポリシーを使用するか空白にしてデフォルトのプライバシーポリシーを使用します。Markdownが使えます。 site_title: ドメイン名以外でサーバーを参照する方法です。 theme: ログインしていない人と新規ユーザーに表示されるテーマ。 thumbnail: サーバー情報と共に表示される、アスペクト比が約 2:1 の画像。 - timeline_preview: ログアウトした人は、サーバー上で利用可能な最新の公開投稿を閲覧することができます。 + timeline_preview: ログアウトした人でも、サーバー上で利用可能な最新の公開投稿を閲覧することができます。 trendable_by_default: トレンドコンテンツの手動レビューをスキップする。個々のコンテンツは後でトレンドから削除できます。 trends: トレンドは、サーバー上でどの投稿、ハッシュタグ、ニュース記事が人気を集めているかを示します。 form_challenge: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index d2d244b531..c5736311c0 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -93,6 +93,7 @@ ko: thumbnail: 대략 2:1 비율의 이미지가 서버 정보 옆에 표시됩니다. timeline_preview: 로그아웃 한 사용자들이 이 서버에 있는 최신 공개글들을 볼 수 있게 합니다. trendable_by_default: 유행하는 콘텐츠에 대한 수동 승인을 건너뜁니다. 이 설정이 적용된 이후에도 각각의 항목들을 삭제할 수 있습니다. + trends: 트렌드는 어떤 게시물, 해시태그 그리고 뉴스 기사가 이 서버에서 인기를 끌고 있는지 보여줍니다. form_challenge: current_password: 당신은 보안 구역에 진입하고 있습니다 imports: diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index e85d156bf1..ef0d4140ce 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -226,6 +226,7 @@ ku: warn: Bi hişyariyekê veşêre form_admin_settings: backups_retention_period: Serdema tomarkirina arşîva bikarhêner + bootstrap_timeline_accounts: Van ajimêran ji bikarhênerên nû re pêşniyar bike content_cache_retention_period: Serdema tomarkirina bîrdanka naverokê custom_css: CSS a kesanekirî mascot: Mascot a kesanekirî (legacy) diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 0ee48f6a0a..7d627b8f75 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -10,16 +10,16 @@ nl: text: Je kunt specifieke tekst voor berichten gebruiken, zoals URL's, hashtags en vermeldingen title: Optioneel. Niet zichtbaar voor de ontvanger admin_account_action: - include_statuses: De gebruiker ziet welke berichten verantwoordelijk zijn voor de moderatieactie of waarschuwing + include_statuses: De gebruiker ziet welke berichten verantwoordelijk zijn voor de moderatiemaatregel of waarschuwing send_email_notification: De gebruiker ontvangt een uitleg over wat er met diens account is gebeurd text_html: Optioneel. Je kunt specifieke tekst voor berichten gebruiken. Om tijd te besparen kun je presets voor waarschuwingen toevoegen type_html: Kies wat er met %{acct} moet gebeuren types: disable: Voorkom dat de gebruiker diens account gebruikt, maar verwijder of verberg de inhoud niet. - none: Gebruik dit om een waarschuwing naar de gebruiker te sturen, zonder dat nog een andere actie wordt uitgevoerd. + none: Gebruik dit om een waarschuwing naar de gebruiker te sturen, zonder dat nog een andere maatregel wordt genomen. sensitive: Forceer dat alle mediabijlagen van deze gebruiker als gevoelig worden gemarkeerd. silence: Voorkom dat de gebruiker openbare berichten kan versturen, verberg diens berichten en meldingen voor mensen die diegene niet volgen. - suspend: Alle interacties van en met dit account blokkeren en de inhoud verwijderen. Dit kan binnen dertig dagen worden teruggedraaid. + suspend: Alle interacties van en met dit account voorkomen, en de accountgegevens verwijderen. Dit kan binnen 30 dagen worden teruggedraaid. warning_preset_id: Optioneel. Je kunt nog steeds handmatig tekst toevoegen aan het eind van de voorinstelling announcement: all_day: Wanneer dit is aangevinkt worden alleen de datums binnen het tijdvak getoond @@ -84,7 +84,7 @@ nl: require_invite_text: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd site_contact_email: Hoe mensen je kunnen bereiken voor juridische vragen of support. site_contact_username: Hoe mensen je op Mastodon kunnen bereiken. - site_terms: Gebruik uw eigen privacybeleid of laat leeg om de standaardwaarde te gebruiken. Kan worden gestructureerd met Markdown syntax. + site_terms: Gebruik je eigen privacybeleid of laat leeg om de standaardwaarde te gebruiken. Kan worden opgemaakt met Markdown syntax. site_title: Hoe mensen buiten de domeinnaam naar je server kunnen verwijzen. theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien. thumbnail: Een afbeelding van ongeveer een verhouding van 2:1 die naast jouw serverinformatie wordt getoond. diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index a38b1e67ce..0343dc4572 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -15,11 +15,11 @@ nn: text_html: Valfritt. Du kan bruka tut-syntaks. Du kan leggja til åtvaringsførehandsinnstillingar for å spara tid type_html: Vel det du vil gjera med %{acct} types: - disable: Forhindre brukeren å bruke kontoen sin, men ikke slett eller skjule innholdet deres. - none: Bruk dette for å sende en advarsel til brukeren uten å utløse noen andre handlinger. - sensitive: Tving alle denne brukerens medievedlegg til å bli markert som følsom. - silence: Hindre brukeren i å kunne skrive offentlig synlighet, skjule sine innlegg og varsler for personer som ikke kan følge dem. - suspend: Forhindre interaksjon fra eller til denne kontoen og slett innholdet der. Reversibel innen 30 dager. + disable: Hindre eigaren frå å bruke kontoen, men fjern eller skjul ikkje innhaldet deira. + none: Bruk dette for å senda ei åtvaring til brukaren utan å utløyse andre handlingar. + sensitive: Tving markering for sensitivt innhald på alle mediavedlegga til denne brukaren. + silence: Hindre brukaren frå å publisere offentlege innlegg og i å skjule eigne innlegg og varsel frå folk som ikkje fylgjer dei. + suspend: Hindre samhandling med– og slett innhaldet til denne kontoen. Kan omgjerast innan 30 dagar. warning_preset_id: Valfritt. Du kan leggja inn eigen tekst på enden av føreoppsettet announcement: all_day: Når merka, vil berre datoane til tidsramma synast @@ -27,6 +27,8 @@ nn: scheduled_at: Lat stå blankt for å gjeva ut lysinga med ein gong starts_at: Valfritt. Om lysinga di er bunden til eit tidspunkt text: Du kan bruka tut-syntaks. Ver merksam på plassen lysinga tek på brukaren sin skjerm + appeal: + text: Ei åtvaring kan kun ankast ein gong defaults: autofollow: Folk som lagar ein konto gjennom innbydinga fylgjer deg automatisk avatar: PNG, GIF eller JPG. Maksimalt %{size}. Minkast til %{dimensions}px @@ -35,6 +37,7 @@ nn: current_password: For sikkerhetsgrunner, vennligst oppgi passordet til den nåværende bruker current_username: Skriv inn brukarnamnet til den noverande kontoen for å stadfesta digest: Kun sendt etter en lang periode med inaktivitet og bare dersom du har mottatt noen personlige meldinger mens du var borte + discoverable: La kontoen din bli oppdaga av ukjende gjennom anbefalingar, trendar og andre funksjonar email: Du får snart ein stadfestings-e-post fields: Du kan ha opptil 4 gjenstander vist som en tabell på profilsiden din header: PNG, GIF eller JPG. Maksimalt %{size}. Minkast til %{dimensions}px @@ -46,6 +49,7 @@ nn: phrase: Vil bli samsvart med, uansett bruk av store/små bokstaver eller innholdsadvarselen til en tut scopes: API-ane som programmet vil få tilgjenge til. Ettersom du vel eit toppnivåomfang tarv du ikkje velja einskilde API-ar. setting_aggregate_reblogs: Ikkje vis nye framhevingar for tut som nyleg har vorte heva fram (Påverkar berre nylege framhevingar) + setting_always_send_emails: Vanlegvis vil ikkje e-postvarsel bli sendt når du brukar Mastodon aktivt setting_default_sensitive: Nærtakande media vert gøymd som standard og kan synast med eit klikk setting_display_media_default: Gøym media som er merka som nærtakande setting_display_media_hide_all: Alltid skjul alt media @@ -60,6 +64,7 @@ nn: domain_allow: domain: Dette domenet er i stand til å henta data frå denne tenaren og innkomande data vert handsama og lagra email_domain_block: + domain: Dette kan vera domenenamnet som blir vist i e-postadressa eller den MX-oppføringa den brukar. Dei vil bli kontrollert ved registrering. with_dns_records: Eit forsøk på å løysa gjeve domene som DNS-data vil vera gjord og resultata vert svartelista featured_tag: name: 'Her er nokre av dei mest brukte hashtaggane dine i det siste:' diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index 0f9abd7bfa..7d7a152453 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -160,6 +160,7 @@ oc: setting_use_pending_items: Mòde lent severity: Severitat sign_in_token_attempt: Còdi de seguretat + title: Títol type: Tipe d’impòrt username: Nom d’utilizaire username_or_email: Nom d’utilizaire o corrièl @@ -168,6 +169,18 @@ oc: with_dns_records: Inclure los enregistraments MX e las IP del domeni featured_tag: name: Etiqueta + filters: + actions: + hide: Rescondre complètament + warn: Rescondre amb avertiment + form_admin_settings: + site_contact_email: Adreça de contacte + site_contact_username: Nom d’utilizaire de contacte + site_extended_description: Descripcion espandida + site_short_description: Descripcion del servidor + site_terms: Politica de confidencialitat + site_title: Nom del servidor + theme: Tèma per defaut interactions: must_be_follower: Blocar las notificacions del mond que vos sègon pas must_be_following: Blocar las notificacions del mond que seguètz pas @@ -198,6 +211,13 @@ oc: name: Etiqueta trendable: Permetre a aquesta etiqueta d’aparéisser a las tendéncias usable: Permetre als tuts d’utilizar aquesta etiqueta + user: + role: Ròtle + user_role: + color: Color del badge + name: Nom + permissions_as_keys: Autorizacions + position: Prioritat 'no': Non recommended: Recomandat required: diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index ce4d0d713a..c2d3b9ffe5 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -66,6 +66,8 @@ pt-BR: email_domain_block: domain: Este pode ser o nome de domínio que aparece no endereço de e-mail ou no registro MX que ele utiliza. Eles serão verificados após a inscrição. with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra + featured_tag: + name: 'Aqui estão algumas ‘hashtags’ utilizadas recentemente:' filters: action: Escolher qual ação executar quando um post corresponder ao filtro actions: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index a941fb354c..e95b223777 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -66,6 +66,8 @@ ru: email_domain_block: domain: Это может быть доменное имя, которое отображается в адресе электронной почты или используемая MX запись. Они будут проверяться при регистрации. with_dns_records: Будет сделана попытка разрешить DNS-записи данного домена и результаты также будут внесены в чёрный список + featured_tag: + name: 'Вот некоторые хэштеги, которые вы использовали в последнее время:' filters: action: Выберите действие, которое нужно выполнить, когда сообщение соответствует фильтру actions: diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 24212621b6..4d7d8935ee 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -66,6 +66,8 @@ sq: email_domain_block: domain: Ky mund të jetë emri i përkatësisë që shfaqet te adresa email, ose zëri MX që përdor. Do të kontrollohen gjatë regjistrimit. with_dns_records: Do të bëhet një përpjekje për ftillimin e zërave DNS të përkatësisë së dhënë dhe do të futen në listë bllokimesh edhe përfundimet + featured_tag: + name: 'Ja disa nga hashtag-ët që përdorët tani afër:' filters: action: Zgjidhni cili veprim të kryhet, kur një postim ka përputhje me një filtër actions: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index a17d62a9be..758549c6f2 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -66,6 +66,8 @@ th: email_domain_block: domain: สิ่งนี้สามารถเป็นชื่อโดเมนที่ปรากฏในที่อยู่อีเมลหรือระเบียน MX ที่โดเมนใช้ จะตรวจสอบโดเมนเมื่อลงทะเบียน with_dns_records: จะทำการพยายามแปลงที่อยู่ระเบียน DNS ของโดเมนที่กำหนดและจะปิดกั้นผลลัพธ์เช่นกัน + featured_tag: + name: 'นี่คือแฮชแท็กบางส่วนที่คุณได้ใช้ล่าสุด:' filters: action: เลือกว่าการกระทำใดที่จะทำเมื่อโพสต์ตรงกับตัวกรอง actions: @@ -73,6 +75,7 @@ th: warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง form_admin_settings: closed_registrations_message: แสดงเมื่อมีการปิดการลงทะเบียน + trends: แนวโน้มแสดงว่าโพสต์, แฮชแท็ก และเรื่องข่าวใดกำลังได้รับความสนใจในเซิร์ฟเวอร์ของคุณ form_challenge: current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย imports: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 838317e204..6eb379ad8b 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -66,6 +66,8 @@ tr: email_domain_block: domain: Bu e-posta adresinde görünen veya kullanılan MX kaydındaki alan adı olabilir. Kayıt sırasında denetleneceklerdir. with_dns_records: Belirli bir alanın DNS kayıtlarını çözmeyi deneyecek ve sonuçlar kara listeye eklenecek + featured_tag: + name: 'Son zamanlarda sıkça kullandığınız etiketlerin bazıları:' filters: action: Bir gönderi filtreyle eşleştiğinde hangi eylemin yapılacağını seçin actions: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 756fd07958..03bc404c66 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -55,7 +55,7 @@ uk: setting_display_media_hide_all: Завжди приховувати медіа setting_display_media_show_all: Завжди показувати медіа setting_hide_network: У вашому профілі не буде відображено підписки та підписників - setting_noindex: Впливає на ваш публічний профіль та сторінки статусу + setting_noindex: Впливає на ваш загальнодоступний профіль і сторінки дописів setting_show_application: Застосунок, за допомогою якого ви дмухнули, буде відображено серед деталей дмуху setting_use_blurhash: Градієнти, що базуються на кольорах прихованих медіа, але роблять нерозрізненними будь-які деталі setting_use_pending_items: Не додавати нові повідомлення до стрічок миттєво, показувати лише після додаткового клацання @@ -172,7 +172,7 @@ uk: data: Дані discoverable: Оприлюднити обліковий запис у каталозі display_name: Ім'я - email: Email адреса + email: Адреса е-пошти expires_in: Закінчується після fields: Метадані профіля header: Заголовок @@ -193,7 +193,7 @@ uk: setting_auto_play_gif: Автоматично відтворювати анімовані GIF setting_boost_modal: Відображати діалог підтвердження під час передмухування setting_crop_images: Обрізати зображення в нерозкритих дописах до 16x9 - setting_default_language: Мова дмухів + setting_default_language: Мова дописів setting_default_privacy: Видимість дописів setting_default_sensitive: Позначити медіа як дражливе setting_delete_modal: Показувати діалог підтвердження під час видалення дмуху @@ -271,12 +271,12 @@ uk: notification_emails: appeal: Хтось подає апеляцію на рішення модератора digest: Надсилати дайджест електронною поштою - favourite: Надсилати листа, коли комусь подобається Ваш статус + favourite: Надсилати листа, коли хтось вподобає ваш допис follow: Надсилати листа, коли хтось підписується на Вас follow_request: Надсилати листа, коли хтось запитує дозволу на підписку mention: Надсилати листа, коли хтось згадує Вас pending_account: Надсилати електронного листа, коли новий обліковий запис потребує розгляду - reblog: Надсилати листа, коли хтось передмухує Ваш статус + reblog: Надсилати листа, коли хтось поширює ваш допис report: Нову скаргу надіслано trending_tag: Нове популярне вимагає розгляду rule: diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 7f4de3df27..69bf943292 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -26,7 +26,7 @@ vi: ends_at: Tùy chọn. Thông báo sẽ tự động hủy vào lúc này scheduled_at: Để trống nếu muốn đăng thông báo ngay lập tức starts_at: Tùy chọn. Trong trường hợp thông báo của bạn đăng vào một khoảng thời gian cụ thể - text: Bạn có thể dùng URL, hashtag và nhắc đến. Cố gắng ngắn gọn bởi vì thông báo sẽ xuất hiện trên màn hình điện thoại của người dùng + text: Bạn có thể dùng URL, hashtag và nhắc đến. Cố gắng ngắn gọn bởi vì thông báo sẽ xuất hiện trên màn hình điện thoại appeal: text: Bạn chỉ có thể khiếu nại mỗi lần một cảnh cáo defaults: @@ -75,13 +75,13 @@ vi: warn: Ẩn nội dung đã lọc đằng sau một cảnh báo đề cập đến tiêu đề của bộ lọc form_admin_settings: backups_retention_period: Lưu trữ dữ liệu người dùng đã tạo trong số ngày được chỉ định. - bootstrap_timeline_accounts: Các tài khoản này sẽ được ghim vào đầu các gợi ý theo dõi của người dùng mới. + bootstrap_timeline_accounts: Những người này sẽ được ghim vào đầu các gợi ý theo dõi của người mới. closed_registrations_message: Được hiển thị khi đóng đăng ký content_cache_retention_period: Tút từ các máy chủ khác sẽ bị xóa sau số ngày được chỉ định. Sau đó có thể không thể phục hồi được. custom_css: Bạn có thể tùy chỉnh phong cách trên bản web của Mastodon. mascot: Ghi đè hình minh họa trong giao diện web nâng cao. media_cache_retention_period: Media đã tải xuống sẽ bị xóa sau số ngày được chỉ định và sẽ tải xuống lại theo yêu cầu. - profile_directory: Liệt kê tất cả người dùng đã chọn tham gia để có thể khám phá. + profile_directory: Liệt kê tất cả người đã chọn tham gia để có thể khám phá. require_invite_text: Khi đăng ký yêu cầu phê duyệt thủ công, hãy đặt câu hỏi "Tại sao bạn muốn tham gia?" nhập văn bản bắt buộc thay vì tùy chọn site_contact_email: Cách mọi người có thể liên hệ với bạn khi có thắc mắc về pháp lý hoặc hỗ trợ. site_contact_username: Cách mọi người có thể liên hệ với bạn trên Mastodon. @@ -89,7 +89,7 @@ vi: site_short_description: Mô tả ngắn gọn để giúp nhận định máy chủ của bạn. Ai đang điều hành nó, nó là cho ai? site_terms: Sử dụng chính sách bảo mật của riêng bạn hoặc để trống để sử dụng mặc định. Có thể soạn bằng cú pháp Markdown. site_title: Cách mọi người có thể tham chiếu đến máy chủ của bạn ngoài tên miền của nó. - theme: Chủ đề mà khách truy cập đăng xuất và người dùng mới nhìn thấy. + theme: Chủ đề mà khách truy cập đăng xuất và người mới nhìn thấy. thumbnail: 'Một hình ảnh tỉ lệ 2: 1 được hiển thị cùng với thông tin máy chủ của bạn.' timeline_preview: Khách truy cập đã đăng xuất sẽ có thể xem các tút công khai gần đây nhất trên máy chủ. trendable_by_default: Bỏ qua việc duyệt thủ công nội dung thịnh hành. Các mục riêng lẻ vẫn có thể bị xóa khỏi xu hướng sau này. @@ -123,7 +123,7 @@ vi: color: Màu được sử dụng cho vai trò trong toàn bộ giao diện người dùng, dưới dạng RGB ở định dạng hex highlighted: Vai trò sẽ hiển thị công khai name: Tên công khai của vai trò, nếu vai trò được đặt để hiển thị dưới dạng huy hiệu - permissions_as_keys: Người dùng có vai trò này sẽ có quyền truy cập vào... + permissions_as_keys: Người có vai trò này sẽ có quyền truy cập vào... position: Vai trò cao hơn sẽ có quyền quyết định xung đột trong các tình huống. Các vai trò có mức độ ưu tiên thấp hơn chỉ có thể thực hiện một số hành động nhất định webhook: events: Chọn sự kiện để gửi @@ -183,7 +183,7 @@ vi: locked: Yêu cầu theo dõi max_uses: Số lần dùng tối đa new_password: Mật khẩu mới - note: Tiểu sử + note: Giới thiệu otp_attempt: Mã xác minh 2 bước password: Mật khẩu phrase: Từ khóa hoặc cụm từ @@ -230,7 +230,7 @@ vi: warn: Ẩn kèm theo cảnh báo form_admin_settings: backups_retention_period: Thời hạn lưu trữ nội dung người dùng sao lưu - bootstrap_timeline_accounts: Luôn đề xuất những tài khoản này đến người dùng mới + bootstrap_timeline_accounts: Luôn đề xuất những người này đến người mới closed_registrations_message: Thông báo tùy chỉnh khi tắt đăng ký content_cache_retention_period: Thời hạn lưu trữ cache nội dung custom_css: Tùy chỉnh CSS diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 5f46aa9e45..fb68ac0ad4 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -289,6 +289,7 @@ sl: update_ip_block_html: "%{name} je spremenil/a pravilo za IP %{target}" update_status_html: "%{name} je posodobil/a objavo uporabnika %{target}" update_user_role_html: "%{name} je spremenil/a vlogo %{target}" + deleted_account: izbrisan račun empty: Ni najdenih zapisnikov. filter_by_action: Filtriraj po dejanjih filter_by_user: Filtriraj po uporabnikih diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 36ebb26ece..ceb57ec4f8 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -283,6 +283,7 @@ sq: update_ip_block_html: "%{name} ndryshoi rregull për IP-në %{target}" update_status_html: "%{name} përditësoi gjendjen me %{target}" update_user_role_html: "%{name} ndryshoi rolin për %{target}" + deleted_account: fshiu llogarinë empty: S’u gjetën regjistra. filter_by_action: Filtroji sipas veprimit filter_by_user: Filtroji sipas përdoruesit diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 079244484e..8392ece915 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -12,7 +12,7 @@ sv: one: Följare other: Följare following: Följer - instance_actor_flash: Detta konto är en virtuell aktör som används för att representera servern själv och inte någon enskild användare. Den används för federationsändamål och bör inte upphävas. + instance_actor_flash: Detta konto är en virtuell aktör som används för att representera servern i sig och inte någon enskild användare. Den används för federeringsändamål och bör inte stängas av. last_active: senast aktiv link_verified_on: Ägarskap för denna länk kontrollerades den %{date} nothing_here: Det finns inget här! @@ -29,7 +29,7 @@ sv: account_moderation_notes: create: Lämna kommentar created_msg: Modereringsnotering skapad utan problem! - destroyed_msg: Modereringsnotering borttagen utan problem! + destroyed_msg: Modereringsanteckning borttagen! accounts: add_email_domain_block: Blockera e-postdomän approve: Godkänn @@ -93,7 +93,7 @@ sv: all: Alla pending: Väntande silenced: Begränsad - suspended: Avstängd + suspended: Avstängda title: Moderering moderation_notes: Moderation anteckning most_recent_activity: Senaste aktivitet @@ -103,7 +103,7 @@ sv: no_role_assigned: Ingen roll tilldelad not_subscribed: Inte prenumererat pending: Inväntar granskning - perform_full_suspension: Utför full avstängning + perform_full_suspension: Stäng av previous_strikes: Tidigare varningar previous_strikes_description_html: one: Detta konto har en varning. @@ -146,9 +146,9 @@ sv: strikes: Föregående varningar subscribe: Prenumerera suspend: Stäng av - suspended: Avstängd / Avstängt - suspension_irreversible: All data som tillhör detta konto har permanent raderats. Du kan låsa upp och återanvända kontot, men ingen data kommer att finnas kvar. - suspension_reversible_hint_html: Kontot har låsts, och all data som tillhör det kommer att raderas permanent den %{date}. Tills dess kan kontot återställas utan dataförlust. Om du vill radera all kontodata redan nu, kan du göra detta nedan. + suspended: Avstängda + suspension_irreversible: All data som tillhör detta konto har permanent raderats. Du kan låsa upp kontot om du vill att det ska gå att använda, men ingen data kommer finnas kvar. + suspension_reversible_hint_html: Kontot har stängts av och all data som tillhör det kommer att raderas permanent den %{date}. Tills dess kan kontot återställas utan dataförlust. Om du vill radera all kontodata redan nu, kan du göra detta nedan. title: Konton unblock_email: Avblockera e-postadress unblocked_email_msg: "%{username}s e-postadress avblockerad" @@ -217,7 +217,7 @@ sv: unblock_email_account: Avblockera e-postadress unsensitive_account: Ångra tvinga känsligt konto unsilence_account: Ångra begränsa konto - unsuspend_account: Återaktivera konto + unsuspend_account: Ångra avstängning av konto update_announcement: Uppdatera kungörelse update_custom_emoji: Uppdatera egna emojis update_domain_block: Uppdatera blockerad domän @@ -271,18 +271,19 @@ sv: resolve_report_html: "%{name} löste rapporten %{target}" sensitive_account_html: "%{name} markerade %{target}'s media som känsligt" silence_account_html: "%{name} begränsade %{target}'s konto" - suspend_account_html: "%{name} stängde av %{target}'s konto" + suspend_account_html: "%{name} stängde av %{target}s konto" unassigned_report_html: "%{name} tog bort tilldelning av rapporten %{target}" unblock_email_account_html: "%{name} avblockerade %{target}s e-postadress" unsensitive_account_html: "%{name} avmarkerade %{target}'s media som känsligt" unsilence_account_html: "%{name} tog bort begränsning av %{target}s konto" - unsuspend_account_html: "%{name} tog bort avstängningen av %{target}'s konto" + unsuspend_account_html: "%{name} ångrade avstängningen av %{target}s konto" update_announcement_html: "%{name} uppdaterade kungörelsen %{target}" update_custom_emoji_html: "%{name} uppdaterade emoji %{target}" update_domain_block_html: "%{name} uppdaterade domän-block för %{target}" update_ip_block_html: "%{name} ändrade regel för IP %{target}" update_status_html: "%{name} uppdaterade inlägget av %{target}" update_user_role_html: "%{name} ändrade rollen %{target}" + deleted_account: raderat konto empty: Inga loggar hittades. filter_by_action: Filtrera efter åtgärd filter_by_user: Filtrera efter användare @@ -385,10 +386,10 @@ sv: create: Skapa block hint: Domänblockeringen hindrar inte skapandet av kontoposter i databasen, men kommer retroaktivt och automatiskt tillämpa specifika modereringsmetoder på dessa konton. severity: - desc_html: "Tysta ner kommer att göra kontoinlägg osynliga för alla som inte följer dem. Suspendera kommer ta bort allt av kontots innehåll, media och profildata. Använd Ingen om du bara vill avvisa mediefiler." + desc_html: "Tysta kommer att göra kontots inlägg osynliga för alla som inte följer det. Stäng av kommer ta bort allt kontoinnehåll, media och profildata. Använd Ingen om du bara vill avvisa mediefiler." noop: Ingen silence: Tysta ner - suspend: Suspendera + suspend: Stäng av title: Nytt domänblock obfuscate: Dölj domännamn obfuscate_hint: Dölj domännamnet i listan till viss del, om underrättelser för listan över domänbegränsningar aktiverats @@ -418,25 +419,42 @@ sv: resolve: Slå upp domän title: Blockera ny e-postdomän no_email_domain_block_selected: Inga blockeringar av e-postdomäner ändrades eftersom inga valdes + resolved_dns_records_hint_html: Domännamnet ger uppslag till följande MX-domäner, vilka är ytterst ansvariga för att e-post tas emot. Att blockera en MX-domän blockerar även registreringar från alla e-postadresser som använder samma MX-domän, även om det synliga domännamnet är annorlunda. Var noga med att inte blockera stora e-postleverantörer. resolved_through_html: Uppslagen genom %{domain} title: Blockerade e-postdomäner follow_recommendations: description_html: "Följrekommendationer hjälper nya användare att snabbt hitta intressant innehåll. När en användare inte har interagerat med andra tillräckligt mycket för att forma personliga följrekommendationer, rekommenderas istället dessa konton. De beräknas om varje dag från en mix av konton med nylig aktivitet och högst antal följare för ett givet språk." language: För språket status: Status + suppress: Tryck ner följrekommendation + suppressed: Undertryckt title: Följ rekommendationer + unsuppress: Återställ följrekommendation instances: availability: + description_html: + one: Om leveranser till domänen misslyckas i %{count} dag kommer inga ytterligare leveransförsök att göras förrän en leverans från domänen tas emot. + other: Om leveranser till domänen misslyckas på %{count} olika dagar kommer inga ytterligare leveransförsök att göras förrän en leverans från domänen tas emot. + failure_threshold_reached: Tröskeln för misslyckande nåddes den %{date}. + failures_recorded: + one: Misslyckat försök under %{count} dag. + other: Misslyckade försök under %{count} olika dagar. + no_failures_recorded: Inga fel registrerade. title: Tillgänglighet warning: Det senaste försöket att ansluta till denna värddator har misslyckats back_to_all: Alla back_to_limited: Begränsat back_to_warning: Varning by_domain: Domän + confirm_purge: Är du säker på att du vill ta bort data permanent från den här domänen? content_policies: + comment: Intern anteckning + description_html: Du kan definiera innehållspolicyer som kommer tillämpas på alla konton från denna domän samt alla dess underdomäner. policies: + reject_media: Avvisa media reject_reports: Avvisa rapporter silence: Gräns + suspend: Stäng av policy: Policy reason: Offentlig orsak title: Riktlinjer för innehåll @@ -457,6 +475,9 @@ sv: stop: Stoppa leverans unavailable: Ej tillgänglig delivery_available: Leverans är tillgängligt + delivery_error_days: Leveransfelsdagar + delivery_error_hint: Om leverans inte är möjligt i %{count} dagar, kommer det automatiskt markeras som ej levererbart. + destroyed_msg: Data från %{domain} står nu i kö för förestående radering. empty: Inga domäner hittades. known_accounts: one: "%{count} känt konto" @@ -468,12 +489,14 @@ sv: private_comment: Privat kommentar public_comment: Offentlig kommentar purge: Rensa + purge_description_html: Om du tror att denna domän har kopplats ned för gott, kan du radera alla kontoposter och associerad data tillhörande denna domän från din lagringsyta. Detta kan ta tid. title: Kända instanser total_blocked_by_us: Blockerad av oss total_followed_by_them: Följs av dem total_followed_by_us: Följs av oss total_reported: Rapporter om dem total_storage: Media-bilagor + totals_time_period_hint_html: Totalsummorna som visas nedan inkluderar data för all tid. invites: deactivate_all: Inaktivera alla filter: @@ -529,20 +552,27 @@ sv: actions: delete_description_html: De rapporterade inläggen kommer raderas och en prick kommer registreras för att hjälpa dig eskalera framtida överträdelser av samma konto. mark_as_sensitive_description_html: Medierna i de rapporterade inläggen kommer markeras som känsliga och en prick kommer registreras för att hjälpa dig eskalera framtida överträdelser av samma konto. + other_description_html: Se fler alternativ för att kontrollera kontots beteende och anpassa kommunikationen till det rapporterade kontot. + resolve_description_html: Ingen åtgärd vidtas mot det rapporterade kontot, ingen prick registreras och rapporten stängs. + silence_description_html: Profilen kommer endast synas för de som redan följer den eller manuellt söker på den, vilket dramatiskt minskar dess räckvidd. Kan alltid ångras. suspend_description_html: Profilen och allt dess innehåll kommer att bli oåtkomligt tills det slutligen raderas. Det kommer inte vara möjligt att interagera med kontot. Går att ångra inom 30 dagar. + actions_description_html: Välj vilken åtgärd som skall vidtas för att lösa denna rapport. Om du vidtar en bestraffningsåtgärd mot det rapporterade kontot kommer en e-postnotis att skickas till dem, förutom om du valt kategorin Skräppost. add_to_report: Lägg till mer i rapporten are_you_sure: Är du säker? assign_to_self: Tilldela till mig assigned: Tilldelad moderator by_target_domain: Domän för rapporterat konto category: Kategori + category_description_html: Anledningen till att kontot och/eller innehållet rapporterades kommer att visas i kommunikation med det rapporterade kontot comment: none: Ingen + comment_description_html: 'För att ge mer information, skrev %{name}:' created_at: Anmäld delete_and_resolve: Ta bort inlägg forwarded: Vidarebefordrad forwarded_to: Vidarebefordrad till %{domain} mark_as_resolved: Markera som löst + mark_as_sensitive: Markera som känslig mark_as_unresolved: Markera som olöst no_one_assigned: Ingen notes: @@ -552,6 +582,8 @@ sv: delete: Radera placeholder: Beskriv vilka åtgärder som vidtagits eller andra uppdateringar till den här anmälan. title: Anteckningar + notes_description_html: Visa och lämna anteckningar till andra moderatorer och ditt framtida jag + quick_actions_description_html: 'Ta en snabb åtgärd eller bläddra ner för att se rapporterat innehåll:' remote_user_placeholder: fjärranvändaren från %{instance} reopen: Återuppta anmälan report: 'Rapport #%{id}' @@ -562,6 +594,7 @@ sv: skip_to_actions: Hoppa till åtgärder status: Status statuses: Rapporterat innehåll + statuses_description_html: Stötande innehåll kommer att citeras i kommunikationen med det rapporterade kontot target_origin: Ursprung för anmält konto title: Anmälningar unassign: Otilldela @@ -589,6 +622,7 @@ sv: other: "%{count} behörigheter" privileges: administrator: Administratör + administrator_description: Användare med denna behörighet kommer att kringgå alla behörigheter delete_user_data: Ta bort användardata delete_user_data_description: Tillåter användare att omedelbart radera andra användares data invite_users: Bjud in användare @@ -597,6 +631,7 @@ sv: manage_announcements_description: Tillåt användare att hantera kungörelser på servern manage_appeals: Hantera överklaganden manage_appeals_description: Tillåter användare att granska överklaganden av modereringsåtgärder + manage_blocks: Hantera blockeringar manage_blocks_description: Tillåter användare att blockera e-postleverantörer och IP-adresser manage_custom_emojis: Hantera egna emojier manage_custom_emojis_description: Tillåter användare att hantera egna emojier på servern @@ -623,33 +658,44 @@ sv: view_audit_log: Visa granskningsloggen view_audit_log_description: Tillåter användare att se historiken över administrativa åtgärder på servern view_dashboard: Visa instrumentpanel + view_dashboard_description: Ger användare tillgång till instrumentpanelen och olika mätvärden view_devops: Devops + view_devops_description: Ger användare tillgång till instrumentpanelerna Sidekiq och pgHero title: Roller rules: add_new: Lägg till regel delete: Radera + description_html: Även om de flesta hävdar att de samtycker till tjänstevillkoren, läser folk ofta inte igenom dem förrän det uppstår problem. Gör dina serverregler mer lättöverskådliga genom att tillhandahålla dem i en enkel punktlista. Försök att hålla enskilda regler korta och koncisa utan att samtidigt separera dem till för många enskilda punkter. edit: Ändra regel + empty: Inga serverregler har ännu angetts. title: Serverns regler settings: about: manage_rules: Hantera serverregler + preamble: Ange fördjupad information om hur servern driftas, modereras och finansieras. + rules_hint: Det finns ett dedikerat ställe för regler som användarna förväntas följa. title: Om appearance: preamble: Anpassa Mastodons webbgränssnitt. title: Utseende branding: + preamble: Din servers profilering differentierar den från andra servrar på nätverket. Denna information kan visas i en mängd olika miljöer, så som Mastodons webbgränssnitt, nativapplikationer, länkförhandsvisningar på andra webbsidor och i meddelandeapplikationer och så vidare. Av dessa anledningar är det bäst att hålla informationen tydlig, kort och koncis. title: Profilering content_retention: preamble: Kontrollera hur användargenererat innehåll lagras i Mastodon. title: Bibehållande av innehåll discovery: + follow_recommendations: Följrekommendationer profile_directory: Profilkatalog + public_timelines: Offentliga tidslinjer + title: Upptäck trends: Trender domain_blocks: all: Till alla disabled: För ingen users: För inloggade lokala användare registrations: + preamble: Kontrollera vem som kan skapa ett konto på din server. title: Registreringar registrations_mode: modes: @@ -659,7 +705,9 @@ sv: title: Serverinställningar site_uploads: delete: Radera uppladdad fil + destroyed_msg: Webbplatsuppladdningen har raderats! statuses: + account: Författare application: Applikation back_to_account: Tillbaka till kontosidan back_to_report: Tillbaka till rapportsidan @@ -674,7 +722,11 @@ sv: media: title: Media metadata: Metadata + no_status_selected: Inga inlägg ändrades eftersom inga valdes open: Öppna inlägg + original_status: Ursprungligt inlägg + reblogs: Ombloggningar + status_changed: Inlägg ändrat title: Kontoinlägg trending: Trendande visibility: Synlighet @@ -683,6 +735,8 @@ sv: actions: delete_statuses: "%{name} raderade %{target}s inlägg" disable: "%{name} frös %{target}s konto" + mark_statuses_as_sensitive: "%{name} markerade %{target}s inlägg som känsliga" + none: "%{name} skickade en varning till %{target}" sensitive: "%{name} markerade %{target}s konto som känsligt" silence: "%{name} begränsade %{target}s konto" suspend: "%{name} stängde av %{target}s konto" @@ -798,7 +852,15 @@ sv: new_appeal: actions: delete_statuses: att radera deras inlägg + disable: för att frysa deras konto + mark_statuses_as_sensitive: för att markera deras inlägg som känsliga none: en varning + sensitive: för att markera deras konto som känsligt + silence: för att begränsa deras konto + suspend: för att stänga av deras konto + body: "%{target} överklagade ett modereringsbeslut av typen %{type}, taget av %{action_taken_by} den %{date}. De skrev:" + next_steps: Du kan godkänna överklagan för att ångra modereringsbeslutet, eller ignorera det. + subject: "%{username} överklagar ett modereringsbeslut på %{instance}" new_report: body: "%{reporter} har rapporterat %{target}" body_remote: Någon från %{domain} har rapporterat %{target} @@ -810,8 +872,11 @@ sv: title: Trendande inlägg new_trending_tags: title: Trendande hashtaggar + subject: Nya trender tillgängliga för granskning på %{instance} aliases: add_new: Skapa alias + created_msg: Ett nytt alias skapades. Du kan nu initiera flytten från det gamla kontot. + deleted_msg: Aliaset togs bort. Att flytta från det kontot till detta kommer inte längre vara möjligt. empty: Du har inga alias. remove: Avlänka alias appearance: @@ -840,23 +905,27 @@ sv: warning: Var mycket försiktig med denna data. Dela aldrig den med någon! your_token: Din access token auth: + apply_for_account: Skriv upp dig på väntelistan change_password: Lösenord delete_account: Radera konto delete_account_html: Om du vill radera ditt konto kan du fortsätta här. Du kommer att bli ombedd att bekräfta. description: prefix_invited_by_user: "@%{name} bjuder in dig att gå med i en Mastodon-server!" prefix_sign_up: Registrera dig på Mastodon idag! + suffix: Med ett konto kommer du att kunna följa personer, göra inlägg och utbyta meddelanden med användare från andra Mastodon-servrar, och ännu mer! didnt_get_confirmation: Fick du inte instruktioner om bekräftelse? dont_have_your_security_key: Har du inte din säkerhetsnyckel? forgot_password: Glömt ditt lösenord? invalid_reset_password_token: Lösenordsåterställningstoken är ogiltig eller utgått. Vänligen be om en ny. link_to_otp: Ange en tvåfaktor-kod från din telefon eller en återställningskod + link_to_webauth: Använd din säkerhetsnyckel log_in_with: Logga in med login: Logga in logout: Logga ut migrate_account: Flytta till ett annat konto migrate_account_html: Om du vill omdirigera detta konto till ett annat, kan du konfigurera det här. or_log_in_with: Eller logga in med + privacy_policy_agreement_html: Jag har läst och godkänner integritetspolicyn providers: cas: CAS saml: SAML @@ -865,16 +934,23 @@ sv: resend_confirmation: Skicka instruktionerna om bekräftelse igen reset_password: Återställ lösenord rules: + preamble: Dessa bestäms och upprätthålls av moderatorerna för %{domain}. title: Några grundregler. security: Säkerhet set_new_password: Skriv in nytt lösenord setup: + email_below_hint_html: Om nedanstående e-postadress är felaktig kan du ändra den här, och få ett nytt bekräftelsemeddelande. email_settings_hint_html: E-postmeddelande för verifiering skickades till %{email}. Om e-postadressen inte stämmer kan du ändra den i kontoinställningarna. title: Ställ in + sign_up: + preamble: Med ett konto på denna Mastodon-server kan du följa alla andra personer på nätverket, oavsett vilken server deras konto tillhör. status: account_status: Kontostatus confirming: Väntar på att e-postbekräftelsen ska slutföras. + functional: Ditt konto fungerar som det ska. + pending: Din ansökan inväntar granskning. Detta kan ta tid. Du kommer att få ett e-postmeddelande om din ansökan godkänns. redirecting_to: Ditt konto är inaktivt eftersom det för närvarande dirigeras om till %{acct}. + view_strikes: Visa tidigare prickar på ditt konto too_fast: Formuläret har skickats för snabbt, försök igen. use_security_key: Använd säkerhetsnyckel authorize_follow: @@ -923,17 +999,39 @@ sv: proceed: Radera konto success_msg: Ditt konto har raderats warning: + before: 'Läs dessa noteringar noga innan du fortsätter:' + caches: Innehåll som har cachats av andra servrar kan bibehållas + data_removal: Dina inlägg och annan data kommer permanent raderas email_change_html: Du kan ändra din e-postadress utan att radera ditt konto + email_contact_html: Om det fortfarande inte kommer kan du e-posta %{email} för support + email_reconfirmation_html: Om du inte får bekräftelsemeddelandet kan du begära ett nytt irreversible: Du kan inte återställa eller återaktivera ditt konto + more_details_html: För mer information, se integritetspolicyn. username_available: Ditt användarnamn kommer att bli tillgängligt igen username_unavailable: Ditt användarnamn kommer att fortsätta vara otillgängligt disputes: strikes: + action_taken: Vidtagen åtgärd + appeal: Överklaga + appeal_approved: Pricken är inte längre giltig då överklagan godkändes + appeal_rejected: Överklagan har avvisats + appeal_submitted_at: Överklagan inskickad + appealed_msg: Din överklagan har skickats in. Du blir notifierad om den godkänns. + appeals: + submit: Skicka överklagan approve_appeal: Godkänn förfrågan + associated_report: Associerad rapport created_at: Daterad + description_html: Dessa är åtgärder som vidtas mot ditt konto och varningar som har skickats till dig av administratörerna för %{instance}. + recipient: Adressat reject_appeal: Avvisa förfrågan status: 'Inlägg #%{id}' + status_removed: Inlägget har redan raderats från systemet + title: "%{action} den %{date}" title_actions: + delete_statuses: Borttagning av inlägg + disable: Kontofrysning + mark_statuses_as_sensitive: Markering av inlägg som känsliga none: Varning sensitive: Märkning av konto som känslig silence: Begränsning av konto @@ -1196,8 +1294,10 @@ sv: trillion: T otp_authentication: code_hint: Ange koden som genererats av din autentiseringsapp för att bekräfta + description_html: Om du aktiverar tvåfaktorsautentisering med en autentiseringsapp kommer du behöva din mobiltelefon för att logga in, som kommer generera koder för dig att ange. enable: Aktivera instructions_html: "Skanna den här QR-koden i Google Authenticator eller en liknande TOTP-app i din telefon. Från och med nu så kommer den appen att generera symboler som du måste skriva in när du ska logga in." + manual_instructions: 'Om du inte kan skanna QR-koden och istället behöver skriva in nyckeln i oformatterad text, finns den här:' setup: Konfigurera wrong_code: Den ifyllda koden är ogiltig! Är server-tiden och enhetens tid korrekt? pagination: @@ -1214,6 +1314,7 @@ sv: duration_too_short: är för tidigt expired: Undersökningen har redan avslutats invalid_choice: Det valda röstalternativet finns inte + over_character_limit: kan inte vara längre än %{max} tecken var too_few_options: måste ha mer än ett objekt too_many_options: kan inte innehålla mer än %{max} objekt preferences: @@ -1224,6 +1325,7 @@ sv: title: Integritetspolicy reactions: errors: + limit_reached: Gränsen för unika reaktioner uppnådd unrecognized_emoji: är inte en igenkänd emoji relationships: activity: Kontoaktivitet @@ -1244,8 +1346,18 @@ sv: status: Kontostatus remote_follow: missing_resource: Det gick inte att hitta den begärda omdirigeringsadressen för ditt konto + reports: + errors: + invalid_rules: refererar inte till giltiga regler rss: content_warning: 'Innehållsvarning:' + descriptions: + account: Offentliga inlägg från @%{acct} + tag: 'Offentliga inlägg taggade med #%{hashtag}' + scheduled_statuses: + over_daily_limit: Du har överskridit dygnsgränsen på %{limit} schemalagda inlägg + over_total_limit: Du har överskridit gränsen på %{limit} schemalagda inlägg + too_soon: Schemaläggningsdatumet måste vara i framtiden sessions: activity: Senaste aktivitet browser: Webbläsare @@ -1259,9 +1371,11 @@ sv: generic: Okänd browser ie: Internet Explorer micro_messenger: MicroMessenger + nokia: Nokia S40 Ovi Browser opera: Opera otter: Otter phantom_js: PhantomJS + qq: QQ browser safari: Safari uc_browser: UCBrowser weibo: Weibo @@ -1285,6 +1399,7 @@ sv: revoke: Återkalla revoke_success: Sessionen återkallas framgångsrikt title: Sessioner + view_authentication_history: Visa autentiseringshistoriken för ditt konto settings: account: Konto account_settings: Kontoinställningar @@ -1296,6 +1411,7 @@ sv: development: Utveckling edit_profile: Redigera profil export: Exportera data + featured_tags: Utvalda hashtaggar import: Importera import_and_export: Import och export migrate: Kontoflytt @@ -1304,6 +1420,7 @@ sv: profile: Profil relationships: Följer och följare statuses_cleanup: Automatisk radering av inlägg + strikes: Modereringsprickar two_factor_authentication: Tvåfaktorsautentisering webauthn_authentication: Säkerhetsnycklar statuses: @@ -1358,7 +1475,9 @@ sv: unlisted_long: Alla kan se, men listas inte på offentliga tidslinjer statuses_cleanup: enabled: Ta automatiskt bort gamla inlägg + enabled_hint: Raderar dina inlägg automatiskt när de når en specifik ålder, såvida de inte matchar något av undantagen nedan exceptions: Undantag + explanation: Eftersom inläggsradering är resursintensivt görs detta stegvis när servern inte är högbelastad. Därför kan det dröja innan dina inlägg raderas efter att de uppnått ålderströskeln. ignore_favs: Bortse från favoriter ignore_reblogs: Ignorera boostningar interaction_exceptions: Undantag baserat på interaktioner @@ -1374,6 +1493,7 @@ sv: keep_self_bookmark: Behåll inlägg du har bokmärkt keep_self_bookmark_hint: Tar inte bort dina egna inlägg om du har bokmärkt dem keep_self_fav: Behåll inlägg du favoritmarkerat + keep_self_fav_hint: Tar inte bort dina egna inlägg om du har favoritmarkerat dem min_age: '1209600': 2 veckor '15778476': 6 månader @@ -1384,6 +1504,8 @@ sv: '63113904': 2 år '7889238': 3 månader min_age_label: Åldersgräns + min_favs: Behåll favoritmarkerade inlägg i minst + min_favs_hint: Raderar inte något av dina inlägg som har blivit favoritmarkerat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal favoritmarkeringar min_reblogs: Behåll boostade inlägg i minst min_reblogs_hint: Raderar inte något av dina inlägg som har blivit boostat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal boostningar stream_entries: @@ -1407,6 +1529,7 @@ sv: two_factor_authentication: add: Lägg till disable: Inaktivera + disabled_success: Tvåfaktorsautentisering inaktiverat edit: Redigera enabled: Tvåfaktorsautentisering är aktiverad enabled_success: Tvåfaktorsautentisering aktiverad @@ -1421,33 +1544,61 @@ sv: user_mailer: appeal_approved: action: Gå till ditt konto + explanation: Överklagandet du skickade in den %{appeal_date} för pricken på ditt konto den %{strike_date} har godkänts. Ditt konto har återigen bra anseende. + subject: Din överklagan den %{date} har godkänts + title: Överklagan godkänd + appeal_rejected: + explanation: Överklagandet du skickade in den %{appeal_date} för pricken på ditt konto den %{strike_date} har avslagits. + subject: Din överklagan den %{date} har avslagits + title: Överklagan avslagen backup_ready: explanation: Du begärde en fullständig säkerhetskopiering av ditt Mastodon-konto. Det är nu klart för nedladdning! subject: Ditt arkiv är klart för nedladdning title: Arkivuttagning suspicious_sign_in: change_password: Ändra ditt lösenord + details: 'Här är inloggningsdetaljerna:' + explanation: Vi har upptäckt en inloggning till ditt konto från en ny IP-adress. + further_actions_html: Om detta inte var du, rekommenderar vi att du snarast %{action} och aktiverar tvåfaktorsautentisering för att hålla ditt konto säkert. + subject: Ditt konto har nåtts från en ny IP-adress title: En ny inloggning warning: + appeal: Skicka överklagan + appeal_description: Om du anser detta felaktigt kan du skicka överklagan till administratörerna av %{instance}. categories: spam: Skräppost + violation: Innehållet bryter mot följande gemenskapsprinciper + explanation: + delete_statuses: Några av dina inlägg har ansetts bryta mot en eller flera gemenskapsprinciper, de har därför raderats av moderatorerna för %{instance}. + disable: Du kan inte längre använda ditt konto, men din profil och övrig data bibehålls intakt. Du kan begära en kopia av dina data, ändra kontoinställningar eller radera ditt konto. + mark_statuses_as_sensitive: Några av dina inlägg har markerats som känsliga av moderatorerna för %{instance}. Detta betyder att folk behöver trycka på medier i inläggen innan de kan se en förhandsvisning. Du kan själv markera medier som känsliga när du gör inlägg i framtiden. + sensitive: Från och med nu markeras alla dina uppladdade mediefiler som känsliga och göms bakom en innehållsvarning som först måste tryckas bort. + silence: Du kan fortfarande använda ditt konto, men endast personer som redan följer dig kommer att se dina inlägg på denna server. Du kan även exkluderas från olika upptäcktsfunktioner, men andra kan fortfarande manuellt följa dig. + suspend: Du kan inte längre använda ditt konto, din profil och annan data är heller inte längre tillgängliga. Du kan fortfarande logga in och begära en kopia av dina data tills dess att de fullkomligt raderas om cirka 30 dagar, vi kommer dock bibehålla viss metadata för att förhindra försök att kringgå avstängingen. reason: 'Anledning:' statuses: 'Inlägg citerades:' subject: + delete_statuses: Dina inlägg under %{acct} har raderats disable: Ditt konto %{acct} har blivit fruset + mark_statuses_as_sensitive: Dina inlägg under %{acct} har markerats som känsliga none: Varning för %{acct} + sensitive: Från och med nu kommer dina inlägg under %{acct} markeras som känsliga silence: Ditt konto %{acct} har blivit begränsat suspend: Ditt konto %{acct} har stängts av title: delete_statuses: Inlägg borttagna disable: Kontot fruset + mark_statuses_as_sensitive: Inlägg markerade som känsliga none: Varning + sensitive: Konto markerat som känsligt silence: Kontot begränsat - suspend: Kontot avstängt + suspend: Konto avstängt welcome: edit_profile_action: Profilinställning + edit_profile_step: Du kan anpassa din profil genom att ladda upp en profilbild, ändra ditt visningsnamn med mera. Du kan välja att granska nya följare innan de får följa dig. explanation: Här är några tips för att komma igång final_action: Börja göra inlägg + final_step: 'Börja skriv inlägg! Även utan följare kan dina offentliga inlägg ses av andra, exempelvis på den lokala tidslinjen eller i hashtaggar. Du kanske vill introducera dig själv under hashtaggen #introduktion eller #introductions.' full_handle: Ditt fullständiga användarnamn/mastodonadress full_handle_hint: Det här är vad du skulle berätta för dina vänner så att de kan meddela eller följa dig från en annan instans. subject: Välkommen till Mastodon @@ -1459,13 +1610,22 @@ sv: seamless_external_login: Du är inloggad via en extern tjänst, inställningar för lösenord och e-post är därför inte tillgängliga. signed_in_as: 'Inloggad som:' verification: + explanation_html: 'Du kan verifiera dig själv som ägare av länkar i din profilmetadata, genom att på den länkade webbplatsen även länka tillbaka till din Mastodon-profil. Länken tillbaka måste ha attributet rel="me". Textinnehållet i länken spelar ingen roll. Här är ett exempel:' verification: Bekräftelse webauthn_credentials: add: Lägg till ny säkerhetsnyckel + create: + error: Det gick inte att lägga till din säkerhetsnyckel. Försök igen. + success: Din säkerhetsnyckel har lagts till. delete: Radera delete_confirmation: Är du säker på att du vill ta bort denna säkerhetsnyckel? + description_html: Om du aktiverar autentisering med säkerhetsnyckel, kommer inloggning kräva att du använder en av dina säkerhetsnycklar. destroy: + error: Det gick inte att ta bort din säkerhetsnyckel. Försök igen. success: Din säkerhetsnyckel har raderats. invalid_credential: Ogiltig säkerhetsnyckel + nickname_hint: Ange smeknamnet på din nya säkerhetsnyckel not_enabled: Du har inte aktiverat WebAuthn än + not_supported: Denna webbläsare stöder inte säkerhetsnycklar + otp_required: För att använda säkerhetsnycklar måste du först aktivera tvåfaktorsautentisering. registered_on: Registrerad den %{date} diff --git a/config/locales/th.yml b/config/locales/th.yml index d55e996250..2a56a6cdf0 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -280,6 +280,7 @@ th: update_ip_block_html: "%{name} ได้เปลี่ยนกฎสำหรับ IP %{target}" update_status_html: "%{name} ได้อัปเดตโพสต์โดย %{target}" update_user_role_html: "%{name} ได้เปลี่ยนบทบาท %{target}" + deleted_account: บัญชีที่ลบแล้ว empty: ไม่พบรายการบันทึก filter_by_action: กรองตามการกระทำ filter_by_user: กรองตามผู้ใช้ diff --git a/config/locales/tr.yml b/config/locales/tr.yml index e46a88fce3..b041b63f1a 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -283,6 +283,7 @@ tr: update_ip_block_html: "%{name}, %{target} IP adresi için kuralı güncelledi" update_status_html: "%{name}, %{target} kullanıcısının gönderisini güncelledi" update_user_role_html: "%{name}, %{target} rolünü değiştirdi" + deleted_account: hesap silindi empty: Kayıt bulunamadı. filter_by_action: Eyleme göre filtre filter_by_user: Kullanıcıya göre filtre diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 7c4702966f..ec8ba1c9bc 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -9,10 +9,10 @@ uk: accounts: follow: Підписатися followers: - few: Підписника + few: Підписники many: Підписників one: Підписник - other: Підписників + other: Підписники following: Підписані instance_actor_flash: Цей обліковий запис є віртуальним персонажем, який використовується для показу самого сервера, а не будь-якого окремого користувача. Він використовується з метою федералізації і не повинен бути зупинений. last_active: остання активність @@ -69,7 +69,7 @@ uk: domain: Домен edit: Змінити email: Електронна пошта - email_status: Статус електронної пошти + email_status: Стан електронної пошти enable: Увімкнути enable_sign_in_token_auth: Увімкнути автентифікацію за допомогою е-пошти enabled: Увімкнено @@ -81,13 +81,13 @@ uk: invite_request_text: Причини приєднатися invited_by: Запросив ip: IP - joined: Приєднався + joined: Дата приєднання location: all: Усі local: Локальні remote: Віддалені title: Розміщення - login_status: Статус авторизації + login_status: Стан входу media_attachments: Мультимедійні вкладення memorialize: Зробити пам'ятником memorialized: Перетворено на пам'ятник @@ -148,7 +148,7 @@ uk: targeted_reports: Скарги на цей обліковий запис silence: Глушення silenced: Заглушені - statuses: Статуси + statuses: Дописи strikes: Попередні попередження subscribe: Підписатися suspend: Призупинити @@ -228,7 +228,7 @@ uk: update_custom_emoji: Оновити користувацькі емодзі update_domain_block: Оновити блокування домену update_ip_block: Оновити правило IP - update_status: Оновити статус + update_status: Оновити допис update_user_role: Оновити роль actions: approve_appeal_html: "%{name} затвердили звернення на оскарження рішення від %{target}" @@ -256,7 +256,7 @@ uk: destroy_email_domain_block_html: "%{name} розблоковує домен електронної пошти %{target}" destroy_instance_html: "%{name} очищує домен %{target}" destroy_ip_block_html: "%{name} видаляє правило для IP %{target}" - destroy_status_html: "%{name} видаляє статус %{target}" + destroy_status_html: "%{name} вилучає допис %{target}" destroy_unavailable_domain_html: "%{name} відновлює доставляння на домен %{target}" destroy_user_role_html: "%{name} видаляє роль %{target}" disable_2fa_user_html: "%{name} вимикає двоетапну перевірку для користувача %{target}" @@ -287,8 +287,9 @@ uk: update_custom_emoji_html: "%{name} оновлює емодзі %{target}" update_domain_block_html: "%{name} оновлює блокування домену для %{target}" update_ip_block_html: "%{name} змінює правило для IP %{target}" - update_status_html: "%{name} змінює статус користувача %{target}" + update_status_html: "%{name} оновлює допис %{target}" update_user_role_html: "%{name} змінює роль %{target}" + deleted_account: видалений обліковий запис empty: Не знайдено жодного журналу. filter_by_action: Фільтрувати за дією filter_by_user: Фільтрувати за користувачем @@ -557,7 +558,7 @@ uk: save_and_enable: Зберегти та увімкнути setup: Налаштування з'єднання з ретранслятором signatures_not_enabled: Ретранслятори не будуть добре працювати поки ввімкнений безопасний режим або режим білого списка - status: Статус + status: Стан title: Ретранслятори report_notes: created_msg: Скарга успішно створена! @@ -615,7 +616,7 @@ uk: resolved: Вирішено resolved_msg: Скаргу успішно вирішено! skip_to_actions: Перейти до дій - status: Статус + status: Стан statuses: Вміст, на який поскаржилися statuses_description_html: Замінений вміст буде цитований у спілкуванні з обліковим записом, на який поскаржилися target_origin: Походження облікового запису, на який скаржаться @@ -750,12 +751,12 @@ uk: media: title: Медіа metadata: Метадані - no_status_selected: Жодного статуса не було змінено, оскільки жодного не було вибрано + no_status_selected: Жодного допису не було змінено, оскільки жодного з них не було вибрано open: Відкрити допис original_status: Оригінальний допис reblogs: Поширення status_changed: Допис змінено - title: Статуси облікових записів + title: Дописи облікових записів trending: Популярне visibility: Видимість with_media: З медіа @@ -784,7 +785,7 @@ uk: sidekiq_process_check: message_html: Не працює процес Sidekiq для %{value} черги. Перегляньте конфігурації вашого Sidekiq tags: - review: Переглянути статус + review: Переглянути допис updated_msg: Параметри хештеґів успішно оновлені title: Адміністрування trends: @@ -940,7 +941,7 @@ uk: settings: 'Змінити налаштування e-mail: %{link}' view: 'Перегляд:' view_profile: Показати профіль - view_status: Показати статус + view_status: Показати допис applications: created: Застосунок успішно створений destroyed: Застосунок успішно видалений @@ -957,7 +958,7 @@ uk: prefix_invited_by_user: "@%{name} запрошує вас приєднатися до цього сервера Mastodon!" prefix_sign_up: Зареєструйтеся на Mastodon сьогодні! suffix: Маючи обліковий запис, ви зможете підписуватися на людей, публікувати дописи та листуватися з користувачами будь-якого сервера Mastodon! - didnt_get_confirmation: Ви не отримали інструкції з підтвердження? + didnt_get_confirmation: Не отримали інструкції з підтвердження? dont_have_your_security_key: Не маєте ключа безпеки? forgot_password: Забули пароль? invalid_reset_password_token: Токен скидання паролю неправильний або просрочений. Спробуйте попросити новий. @@ -990,7 +991,7 @@ uk: preamble: За допомогою облікового запису на цьому сервері Mastodon, ви зможете слідкувати за будь-якою іншою людиною в мережі, не зважаючи на те, де розміщений обліковий запис. title: Налаштуймо вас на %{domain}. status: - account_status: Статус облікового запису + account_status: Стан облікового запису confirming: Очікуємо на завершення підтвердження за допомогою електронної пошти. functional: Ваш обліковий запис повністю робочий. pending: Ваша заява очікує на розгляд нашим персоналом. Це може зайняти деякий час. Ви отримаєте електронний лист, якщо ваша заява буде схвалена. @@ -1263,7 +1264,7 @@ uk: title: Історія входів media_attachments: validations: - images_and_video: Не можна додати відео до статусу з зображеннями + images_and_video: Не можна додати відео до допису з зображеннями not_ready: Не можна прикріпити файли, оброблення яких ще не закінчилося. Спробуйте ще раз через хвилину! too_many: Не можна додати більше 4 файлів migrations: @@ -1312,8 +1313,8 @@ uk: sign_up: subject: "%{name} приєднується" favourite: - body: 'Ваш статус подобається %{name}:' - subject: Ваш статус сподобався %{name} + body: 'Ваш допис подобається %{name}:' + subject: Ваш допис сподобався %{name} title: Нове вподобання follow: body: "%{name} тепер підписаний на вас!" @@ -1332,7 +1333,7 @@ uk: poll: subject: Опитування від %{name} завершено reblog: - body: 'Ваш статус було передмухнуто %{name}:' + body: "%{name} поширює ваш допис:" subject: "%{name} поширив ваш статус" title: Нове передмухування status: @@ -1404,7 +1405,7 @@ uk: remove_selected_domains: Видалити усіх підписників з обраних доменів remove_selected_followers: Видалити обраних підписників remove_selected_follows: Не стежити за обраними користувачами - status: Статус облікового запису + status: Стан облікового запису remote_follow: missing_resource: Не вдалося знайти необхідний URL переадресації для вашого облікового запису reports: @@ -1512,7 +1513,7 @@ uk: other: 'заборонених хештеґів: %{tags}' edited_at_html: Відредаговано %{date} errors: - in_reply_not_found: Статуса, на який ви намагаєтеся відповісти, не існує. + in_reply_not_found: Допису, на який ви намагаєтеся відповісти, не існує. open_in_web: Відкрити у вебі over_character_limit: перевищено ліміт символів %{max} pin_errors: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index a4c2595ad9..f1b84de860 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -118,7 +118,7 @@ vi: removed_avatar_msg: Đã xóa bỏ ảnh đại diện của %{username} removed_header_msg: Đã xóa bỏ ảnh bìa của %{username} resend_confirmation: - already_confirmed: Người dùng này đã được xác minh + already_confirmed: Người này đã được xác minh send: Gửi lại email xác nhận success: Email xác nhận đã gửi thành công! reset: Đặt lại @@ -144,7 +144,7 @@ vi: subscribe: Đăng ký suspend: Vô hiệu hóa suspended: Vô hiệu hóa - suspension_irreversible: Toàn bộ dữ liệu của người dùng này sẽ bị xóa hết. Bạn vẫn có thể ngừng vô hiệu hóa nhưng dữ liệu sẽ không thể phục hồi. + suspension_irreversible: Toàn bộ dữ liệu của người này sẽ bị xóa hết. Bạn vẫn có thể ngừng vô hiệu hóa nhưng dữ liệu sẽ không thể phục hồi. suspension_reversible_hint_html: Mọi dữ liệu của người này sẽ bị xóa sạch vào %{date}. Trước thời hạn này, dữ liệu vẫn có thể phục hồi. Nếu bạn muốn xóa dữ liệu của người này ngay lập tức, hãy tiếp tục. title: Tài khoản unblock_email: Mở khóa địa chỉ email @@ -166,10 +166,10 @@ vi: approve_appeal: Chấp nhận kháng cáo approve_user: Chấp nhận người dùng assigned_to_self_report: Tự xử lý báo cáo - change_email_user: Đổi email người dùng + change_email_user: Đổi email change_role_user: Thay đổi vai trò - confirm_user: Xác minh người dùng - create_account_warning: Cảnh cáo người dùng + confirm_user: Xác minh + create_account_warning: Cảnh cáo create_announcement: Tạo thông báo mới create_canonical_email_block: Tạo chặn tên miền email mới create_custom_emoji: Tạo emoji @@ -193,10 +193,10 @@ vi: destroy_user_role: Xóa vai trò disable_2fa_user: Vô hiệu hóa 2FA disable_custom_emoji: Vô hiệu hóa emoji - disable_sign_in_token_auth_user: Vô hiệu hóa xác minh bằng email cho người dùng + disable_sign_in_token_auth_user: Vô hiệu hóa xác minh bằng email disable_user: Vô hiệu hóa đăng nhập enable_custom_emoji: Cho phép emoji - enable_sign_in_token_auth_user: Bật xác minh bằng email cho người dùng + enable_sign_in_token_auth_user: Bật xác minh bằng email enable_user: Bỏ vô hiệu hóa đăng nhập memorialize_account: Đánh dấu tưởng niệm promote_user: Chỉ định vai trò @@ -280,6 +280,7 @@ vi: update_ip_block_html: "%{name} cập nhật chặn IP %{target}" update_status_html: "%{name} cập nhật tút của %{target}" update_user_role_html: "%{name} đã thay đổi vai trò %{target}" + deleted_account: tài khoản đã xóa empty: Không tìm thấy bản ghi. filter_by_action: Theo hành động filter_by_user: Theo người @@ -336,10 +337,10 @@ vi: updated_msg: Cập nhật thành công Emoji! upload: Tải lên dashboard: - active_users: người dùng hoạt động + active_users: người hoạt động interactions: tương tác media_storage: Dung lượng lưu trữ - new_users: người dùng mới + new_users: người mới opened_reports: tổng báo cáo pending_appeals_html: other: "%{count} kháng cáo đang chờ" @@ -348,7 +349,7 @@ vi: pending_tags_html: other: "%{count} hashtag đang chờ" pending_users_html: - other: "%{count} người dùng đang chờ" + other: "%{count} người đang chờ" resolved_reports: báo cáo đã xử lí software: Phần mềm sources: Nguồn đăng ký @@ -414,7 +415,7 @@ vi: resolved_through_html: Đã xử lý thông qua %{domain} title: Tên miền email đã chặn follow_recommendations: - description_html: "Gợi ý theo dõi là cách giúp những người dùng mới nhanh chóng tìm thấy những nội dung thú vị. Khi một người dùng chưa đủ tương tác với những người khác để hình thành các đề xuất theo dõi được cá nhân hóa, thì những tài khoản này sẽ được đề xuất. Nó bao gồm các tài khoản có số lượt tương tác gần đây cao nhất và số lượng người theo dõi cao nhất cho một ngôn ngữ nhất định trong máy chủ." + description_html: "Gợi ý theo dõi là cách giúp những người mới nhanh chóng tìm thấy những nội dung thú vị. Khi một người chưa đủ tương tác với những người khác để hình thành các đề xuất theo dõi được cá nhân hóa, thì những người này sẽ được đề xuất. Nó bao gồm những người có số lượt tương tác gần đây cao nhất và số lượng người theo dõi cao nhất cho một ngôn ngữ nhất định trong máy chủ." language: Theo ngôn ngữ status: Trạng thái suppress: Tắt gợi ý theo dõi @@ -513,7 +514,7 @@ vi: relays: add_new: Thêm liên hợp mới delete: Loại bỏ - description_html: "Liên hợp nghĩa là cho phép bài đăng công khai của máy chủ này xuất hiện trên bảng tin của máy chủ khác và ngược lại. Nó giúp các máy chủ vừa và nhỏ tiếp cận nội dung từ các máy chủ lớn hơn. Nếu không chọn, người dùng ở máy chủ này vẫn có thể theo dõi người dùng khác trên các máy chủ khác." + description_html: "Liên hợp nghĩa là cho phép bài đăng công khai của máy chủ này xuất hiện trên bảng tin của máy chủ khác và ngược lại. Nó giúp các máy chủ vừa và nhỏ tiếp cận nội dung từ các máy chủ lớn hơn. Nếu không chọn, người ở máy chủ này vẫn có thể theo dõi người khác trên các máy chủ khác." disable: Tắt disabled: Đã tắt enable: Kích hoạt @@ -571,7 +572,7 @@ vi: title: Lưu ý notes_description_html: Xem và để lại lưu ý cho các kiểm duyệt viên khác quick_actions_description_html: 'Kiểm duyệt nhanh hoặc kéo xuống để xem nội dung bị báo cáo:' - remote_user_placeholder: người dùng ở %{instance} + remote_user_placeholder: người ở %{instance} reopen: Mở lại báo cáo report: 'Báo cáo #%{id}' reported_account: Tài khoản bị báo cáo @@ -599,18 +600,18 @@ vi: moderation: Kiểm duyệt special: Đặc biệt delete: Xóa - description_html: Thông qua vai trò người dùng, bạn có thể tùy chỉnh những tính năng và vị trí của Mastodon mà người dùng có thể truy cập. + description_html: Thông qua vai trò, bạn có thể tùy chỉnh những tính năng và vị trí của Mastodon mà mọi người có thể truy cập. edit: Sửa vai trò '%{name}' everyone: Quyền hạn mặc định - everyone_full_description_html: Đây vai trò cơ bản ảnh hưởng tới mọi người dùng khác, kể cả những người không có vai trò được chỉ định. Tất cả các vai trò khác đều kế thừa quyền từ vai trò đó. + everyone_full_description_html: Đây vai trò cơ bản ảnh hưởng tới mọi người khác, kể cả những người không có vai trò được chỉ định. Tất cả các vai trò khác đều kế thừa quyền từ vai trò đó. permissions_count: other: "%{count} quyền hạn" privileges: administrator: Quản trị viên - administrator_description: Người dùng này có thể truy cập mọi quyền hạn - delete_user_data: Xóa dữ liệu người dùng - delete_user_data_description: Cho phép xóa dữ liệu của người dùng khác lập tức - invite_users: Mời người dùng + administrator_description: Người này có thể truy cập mọi quyền hạn + delete_user_data: Xóa dữ liệu + delete_user_data_description: Cho phép xóa dữ liệu của mọi người khác lập tức + invite_users: Mời tham gia invite_users_description: Cho phép mời những người mới vào máy chủ manage_announcements: Quản lý thông báo manage_announcements_description: Cho phép quản lý thông báo trên máy chủ @@ -634,10 +635,10 @@ vi: manage_settings_description: Cho phép thay đổi thiết lập máy chủ manage_taxonomies: Quản lý phân loại manage_taxonomies_description: Cho phép đánh giá nội dung thịnh hành và cập nhật cài đặt hashtag - manage_user_access: Quản lý người dùng truy cập - manage_user_access_description: Cho phép vô hiệu hóa xác thực hai bước của người dùng khác, thay đổi địa chỉ email và đặt lại mật khẩu của họ - manage_users: Quản lý người dùng - manage_users_description: Cho phép xem thông tin chi tiết của người dùng khác và thực hiện các hành động kiểm duyệt đối với họ + manage_user_access: Quản lý người truy cập + manage_user_access_description: Cho phép vô hiệu hóa xác thực hai bước của người khác, thay đổi địa chỉ email và đặt lại mật khẩu của họ + manage_users: Quản lý người + manage_users_description: Cho phép xem thông tin chi tiết của người khác và thực hiện các hành động kiểm duyệt manage_webhooks: Quản lý Webhook manage_webhooks_description: Cho phép thiết lập webhook cho các sự kiện quản trị view_audit_log: Xem nhật ký @@ -650,7 +651,7 @@ vi: rules: add_new: Thêm quy tắc delete: Xóa bỏ - description_html: Mặc dù được yêu cầu chấp nhận điều khoản dịch vụ khi đăng ký, nhưng người dùng thường không đọc cho đến khi vấn đề gì đó xảy ra. Hãy làm điều này rõ ràng hơn bằng cách liệt kê quy tắc máy chủ theo gạch đầu dòng. Cố gắng viết ngắn và đơn giản, nhưng đừng tách ra quá nhiều mục. + description_html: Mặc dù được yêu cầu chấp nhận điều khoản dịch vụ khi đăng ký, nhưng mọi người thường không đọc cho đến khi vấn đề gì đó xảy ra. Hãy làm điều này rõ ràng hơn bằng cách liệt kê quy tắc máy chủ theo gạch đầu dòng. Cố gắng viết ngắn và đơn giản, nhưng đừng tách ra quá nhiều mục. edit: Sửa quy tắc empty: Chưa có quy tắc máy chủ. title: Quy tắc máy chủ @@ -658,7 +659,7 @@ vi: about: manage_rules: Sửa quy tắc máy chủ preamble: Cung cấp thông tin chuyên sâu về cách máy chủ được vận hành, kiểm duyệt, tài trợ. - rules_hint: Có một khu vực dành riêng cho các quy tắc mà người dùng của bạn phải tuân thủ. + rules_hint: Có một khu vực dành riêng cho các quy tắc mà người tham gia máy chủ của bạn phải tuân thủ. title: Giới thiệu appearance: preamble: Tùy chỉnh giao diện web của Mastodon. @@ -667,7 +668,7 @@ vi: preamble: Thương hiệu máy chủ của bạn phân biệt nó với các máy chủ khác trong mạng. Thông tin này có thể được hiển thị trên nhiều môi trường khác nhau, chẳng hạn như giao diện web của Mastodon, các ứng dụng gốc, trong bản xem trước liên kết trên các trang web khác và trong các ứng dụng nhắn tin, v.v. Vì lý do này, cách tốt nhất là giữ cho thông tin này rõ ràng, ngắn gọn và súc tích. title: Thương hiệu content_retention: - preamble: Kiểm soát cách lưu trữ nội dung do người dùng tạo trong Mastodon. + preamble: Kiểm soát cách lưu trữ nội dung cá nhân trong Mastodon. title: Lưu giữ nội dung discovery: follow_recommendations: Gợi ý theo dõi @@ -679,7 +680,7 @@ vi: domain_blocks: all: Tới mọi người disabled: Không ai - users: Để đăng nhập người dùng cục bộ + users: Để đăng nhập người cục bộ registrations: preamble: Kiểm soát những ai có thể tạo tài khoản trên máy chủ của bạn. title: Đăng ký @@ -723,7 +724,7 @@ vi: disable: "%{name} đã ẩn %{target}" mark_statuses_as_sensitive: "%{name} đã đánh dấu tút của %{target} là nhạy cảm" none: "%{name} đã gửi cảnh cáo %{target}" - sensitive: "%{name} đã đánh dấu người dùng %{target} là nhạy cảm" + sensitive: "%{name} đã đánh dấu %{target} là nhạy cảm" silence: "%{name} đã ẩn %{target}" suspend: "%{name} đã vô hiệu hóa %{target}" appeal_approved: Đã khiếu nại @@ -773,7 +774,7 @@ vi: statuses: allow: Cho phép tút allow_account: Cho phép người đăng - description_html: Đây là những tút đang được đăng lại và yêu thích rất nhiều trên máy chủ của bạn. Nó có thể giúp người dùng mới và người dùng cũ tìm thấy nhiều người hơn để theo dõi. Không có tút nào được hiển thị công khai cho đến khi bạn cho phép người đăng và người cho phép đề xuất tài khoản của họ cho người khác. Bạn cũng có thể cho phép hoặc từ chối từng tút riêng. + description_html: Đây là những tút đang được đăng lại và yêu thích rất nhiều trên máy chủ của bạn. Nó có thể giúp người mới và người cũ tìm thấy nhiều người hơn để theo dõi. Không có tút nào được hiển thị công khai cho đến khi bạn cho phép người đăng và người cho phép đề xuất tài khoản của họ cho người khác. Bạn cũng có thể cho phép hoặc từ chối từng tút riêng. disallow: Cấm tút disallow_account: Cấm người đăng no_status_selected: Không có tút thịnh hành nào thay đổi vì không có tút nào được chọn @@ -788,8 +789,8 @@ vi: tag_languages_dimension: Top ngôn ngữ tag_servers_dimension: Top máy chủ tag_servers_measure: máy chủ khác - tag_uses_measure: tổng người dùng - description_html: Đây là những hashtag đang xuất hiện trong rất nhiều tút trên máy chủ của bạn. Nó có thể giúp người dùng của bạn tìm ra những gì mọi người đang quan tâm nhiều nhất vào lúc này. Không có hashtag nào được hiển thị công khai cho đến khi bạn cho phép chúng. + tag_uses_measure: tổng lượt dùng + description_html: Đây là những hashtag đang xuất hiện trong rất nhiều tút trên máy chủ của bạn. Nó có thể giúp mọi người tìm ra những gì đang được quan tâm nhiều nhất vào lúc này. Không có hashtag nào được hiển thị công khai cho đến khi bạn cho phép chúng. listable: Có thể đề xuất no_tag_selected: Không có hashtag thịnh hành nào thay đổi vì không có hashtag nào được chọn not_listable: Không thể đề xuất @@ -902,7 +903,7 @@ vi: description: prefix_invited_by_user: "@%{name} mời bạn tham gia máy chủ Mastodon này!" prefix_sign_up: Tham gia Mastodon ngay hôm nay! - suffix: Với tài khoản, bạn sẽ có thể theo dõi mọi người, đăng tút và nhắn tin với người dùng từ bất kỳ máy chủ Mastodon khác! + suffix: Với tài khoản, bạn sẽ có thể theo dõi mọi người, đăng tút và nhắn tin với người từ bất kỳ máy chủ Mastodon khác! didnt_get_confirmation: Gửi lại email xác minh? dont_have_your_security_key: Bạn có khóa bảo mật chưa? forgot_password: Quên mật khẩu diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index d0b3b15509..09f1002c2a 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -280,6 +280,7 @@ zh-CN: update_ip_block_html: "%{name} 修改了对 IP %{target} 的规则" update_status_html: "%{name} 刷新了 %{target} 的嘟文" update_user_role_html: "%{name} 更改了 %{target} 角色" + deleted_account: 删除帐户 empty: 没有找到日志 filter_by_action: 根据行为过滤 filter_by_user: 根据用户过滤 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index f7ace47afd..ba69d52f24 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -280,6 +280,7 @@ zh-TW: update_ip_block_html: "%{name} 已經更新了 IP %{target} 之規則" update_status_html: "%{name} 更新了 %{target} 的嘟文" update_user_role_html: "%{name} 變更了 %{target} 角色" + deleted_account: 已刪除帳號 empty: 找不到 log filter_by_action: 按動作過濾 filter_by_user: 按使用者過濾 From 106648b456396cd7b433848dd6608537d5b811f4 Mon Sep 17 00:00:00 2001 From: Postmodern Date: Mon, 7 Nov 2022 07:17:55 -0800 Subject: [PATCH 319/500] Micro-optimization: only split `acct` into two Strings (#19901) * Since `acct` is split by `@` and assigned to `username` and `domain`, we only need to split `acct` into two Strings. --- app/models/account_alias.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/account_alias.rb b/app/models/account_alias.rb index b421c66e21..b7267d6320 100644 --- a/app/models/account_alias.rb +++ b/app/models/account_alias.rb @@ -29,7 +29,7 @@ class AccountAlias < ApplicationRecord end def pretty_acct - username, domain = acct.split('@') + username, domain = acct.split('@', 2) domain.nil? ? username : "#{username}@#{Addressable::IDNA.to_unicode(domain)}" end From 3114c826a7a6b2b10bff722c59cca57abe7f819f Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 7 Nov 2022 19:47:48 +0100 Subject: [PATCH 320/500] Fix filter handling in status cache hydration (#19963) --- app/lib/status_cache_hydrator.rb | 4 ++-- spec/lib/status_cache_hydrator_spec.rb | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb index ffe813ee95..298d7851a6 100644 --- a/app/lib/status_cache_hydrator.rb +++ b/app/lib/status_cache_hydrator.rb @@ -19,7 +19,7 @@ class StatusCacheHydrator payload[:muted] = false payload[:bookmarked] = false payload[:pinned] = false if @status.account_id == account_id - payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.reblog_of_id), @status.reblog).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } + payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(account_id), @status.reblog).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } # If the reblogged status is being delivered to the author who disabled the display of the application # used to create the status, we need to hydrate it here too @@ -51,7 +51,7 @@ class StatusCacheHydrator payload[:muted] = ConversationMute.where(account_id: account_id, conversation_id: @status.conversation_id).exists? payload[:bookmarked] = Bookmark.where(account_id: account_id, status_id: @status.id).exists? payload[:pinned] = StatusPin.where(account_id: account_id, status_id: @status.id).exists? if @status.account_id == account_id - payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(@status.id), @status).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } + payload[:filtered] = CustomFilter.apply_cached_filters(CustomFilter.cached_filters_for(account_id), @status).map { |filter| ActiveModelSerializers::SerializableResource.new(filter, serializer: REST::FilterResultSerializer).as_json } if payload[:poll] payload[:poll][:voted] = @status.account_id == account_id diff --git a/spec/lib/status_cache_hydrator_spec.rb b/spec/lib/status_cache_hydrator_spec.rb index c9d8d0fe1a..5c78de7116 100644 --- a/spec/lib/status_cache_hydrator_spec.rb +++ b/spec/lib/status_cache_hydrator_spec.rb @@ -28,6 +28,18 @@ describe StatusCacheHydrator do end end + context 'when handling a filtered status' do + let(:status) { Fabricate(:status, text: 'this toot is about that banned word') } + + before do + account.custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide, keywords_attributes: [{ keyword: 'banned' }, { keyword: 'irrelevant' }]) + end + + it 'renders the same attributes as a full render' do + expect(subject).to eql(compare_to_hash) + end + end + context 'when handling a reblog' do let(:reblog) { Fabricate(:status) } let(:status) { Fabricate(:status, reblog: reblog) } @@ -99,6 +111,18 @@ describe StatusCacheHydrator do expect(subject).to eql(compare_to_hash) end end + + context 'that matches account filters' do + let(:reblog) { Fabricate(:status, text: 'this toot is about that banned word') } + + before do + account.custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide, keywords_attributes: [{ keyword: 'banned' }, { keyword: 'irrelevant' }]) + end + + it 'renders the same attributes as a full render' do + expect(subject).to eql(compare_to_hash) + end + end end end From 2bc22be66cf09ed19eb7fb23b08324882a73b2b9 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 7 Nov 2022 15:48:46 +0100 Subject: [PATCH 321/500] [Glitch] Add aria-expanded to content warning toggle button Port 622f603ac73e40a9e41c254fa90079eeecfe1e02 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/status_content.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/components/status_content.js b/app/javascript/flavours/glitch/components/status_content.js index 61788f3500..c618cedcab 100644 --- a/app/javascript/flavours/glitch/components/status_content.js +++ b/app/javascript/flavours/glitch/components/status_content.js @@ -332,7 +332,7 @@ export default class StatusContent extends React.PureComponent { > {' '} -

      From bbf74498f57513751f3506e3bbf7a04be4ad3b67 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 7 Nov 2022 22:35:53 +0100 Subject: [PATCH 322/500] Fix validation error in SynchronizeFeaturedTagsCollectionWorker (#20018) * Fix followers count not being updated when migrating follows Fixes #19900 * Fix validation error in SynchronizeFeaturedTagsCollectionWorker Also saves remote user's chosen case for hashtags * Limit remote featured tags before validation --- app/models/featured_tag.rb | 2 + .../fetch_featured_tags_collection_service.rb | 22 ++--- ...h_featured_tags_collection_service_spec.rb | 95 +++++++++++++++++++ 3 files changed, 106 insertions(+), 13 deletions(-) create mode 100644 spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index 78185b2a99..debae22121 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -63,6 +63,8 @@ class FeaturedTag < ApplicationRecord end def validate_featured_tags_limit + return unless account.local? + errors.add(:base, I18n.t('featured_tags.errors.limit')) if account.featured_tags.count >= LIMIT end diff --git a/app/services/activitypub/fetch_featured_tags_collection_service.rb b/app/services/activitypub/fetch_featured_tags_collection_service.rb index 5559199381..ab047a0f8b 100644 --- a/app/services/activitypub/fetch_featured_tags_collection_service.rb +++ b/app/services/activitypub/fetch_featured_tags_collection_service.rb @@ -51,21 +51,17 @@ class ActivityPub::FetchFeaturedTagsCollectionService < BaseService end def process_items(items) - names = items.filter_map { |item| item['type'] == 'Hashtag' && item['name']&.delete_prefix('#') }.map { |name| HashtagNormalizer.new.normalize(name) } - to_remove = [] - to_add = names - - FeaturedTag.where(account: @account).map(&:name).each do |name| - if names.include?(name) - to_add.delete(name) - else - to_remove << name - end - end + names = items.filter_map { |item| item['type'] == 'Hashtag' && item['name']&.delete_prefix('#') }.take(FeaturedTag::LIMIT) + tags = names.index_by { |name| HashtagNormalizer.new.normalize(name) } + normalized_names = tags.keys - FeaturedTag.includes(:tag).where(account: @account, tags: { name: to_remove }).delete_all unless to_remove.empty? + FeaturedTag.includes(:tag).references(:tag).where(account: @account).where.not(tag: { name: normalized_names }).delete_all + + FeaturedTag.includes(:tag).references(:tag).where(account: @account, tag: { name: normalized_names }).each do |featured_tag| + featured_tag.update(name: tags.delete(featured_tag.tag.name)) + end - to_add.each do |name| + tags.each_value do |name| FeaturedTag.create!(account: @account, name: name) end end diff --git a/spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb b/spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb new file mode 100644 index 0000000000..6ca22c9fc6 --- /dev/null +++ b/spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb @@ -0,0 +1,95 @@ +require 'rails_helper' + +RSpec.describe ActivityPub::FetchFeaturedTagsCollectionService, type: :service do + let(:collection_url) { 'https://example.com/account/tags' } + let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/account') } + + let(:items) do + [ + { type: 'Hashtag', href: 'https://example.com/account/tagged/foo', name: 'Foo' }, + { type: 'Hashtag', href: 'https://example.com/account/tagged/bar', name: 'bar' }, + { type: 'Hashtag', href: 'https://example.com/account/tagged/baz', name: 'baZ' }, + ] + end + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + type: 'Collection', + id: collection_url, + items: items, + }.with_indifferent_access + end + + subject { described_class.new } + + shared_examples 'sets featured tags' do + before do + subject.call(actor, collection_url) + end + + it 'sets expected tags as pinned tags' do + expect(actor.featured_tags.map(&:display_name)).to match_array ['Foo', 'bar', 'baZ'] + end + end + + describe '#call' do + context 'when the endpoint is a Collection' do + before do + stub_request(:get, collection_url).to_return(status: 200, body: Oj.dump(payload)) + end + + it_behaves_like 'sets featured tags' + end + + context 'when the account already has featured tags' do + before do + stub_request(:get, collection_url).to_return(status: 200, body: Oj.dump(payload)) + + actor.featured_tags.create!(name: 'FoO') + actor.featured_tags.create!(name: 'baz') + actor.featured_tags.create!(name: 'oh').update(name: nil) + end + + it_behaves_like 'sets featured tags' + end + + context 'when the endpoint is an OrderedCollection' do + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + type: 'OrderedCollection', + id: collection_url, + orderedItems: items, + }.with_indifferent_access + end + + before do + stub_request(:get, collection_url).to_return(status: 200, body: Oj.dump(payload)) + end + + it_behaves_like 'sets featured tags' + end + + context 'when the endpoint is a paginated Collection' do + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + type: 'Collection', + id: collection_url, + first: { + type: 'CollectionPage', + partOf: collection_url, + items: items, + } + }.with_indifferent_access + end + + before do + stub_request(:get, collection_url).to_return(status: 200, body: Oj.dump(payload)) + end + + it_behaves_like 'sets featured tags' + end + end +end From 0beb095a4bfbcce55acb016eaaa54b5e93a56023 Mon Sep 17 00:00:00 2001 From: Zach Flanders Date: Mon, 7 Nov 2022 15:37:36 -0600 Subject: [PATCH 323/500] Fix spoiler buttons css not rendering correct color in light theme (#19960) * Updating status__content__spoiler-link css for mastodon-light theme to ensure correct rendering precedence * Adding focus css selector to status__content__spoiler-link mastodon-light theme * reformatting code to match convention of having css selectors on separate lines * fixing code format for scss linting issue --- app/javascript/styles/mastodon-light/diff.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index d928a55ed5..d960070d62 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -268,7 +268,8 @@ html { .status__content .status__content__spoiler-link { background: $ui-base-color; - &:hover { + &:hover, + &:focus { background: lighten($ui-base-color, 4%); } } From ca80beb6530b3bbeff795c4832e2b4ab7bc8f672 Mon Sep 17 00:00:00 2001 From: Postmodern Date: Mon, 7 Nov 2022 18:50:47 -0800 Subject: [PATCH 324/500] Micro-optimization: use `if`/`else` instead of `Array#compact` and `Array#min` (#19906) * Technically `if`/`else` is faster than using `[value1, value2].compact.min` to find the lesser of two values, one of which may be `nil`. --- app/models/account_statuses_cleanup_policy.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/models/account_statuses_cleanup_policy.rb b/app/models/account_statuses_cleanup_policy.rb index 3651236531..49adc6ad05 100644 --- a/app/models/account_statuses_cleanup_policy.rb +++ b/app/models/account_statuses_cleanup_policy.rb @@ -139,7 +139,12 @@ class AccountStatusesCleanupPolicy < ApplicationRecord # Filtering on `id` rather than `min_status_age` ago will treat # non-snowflake statuses as older than they really are, but Mastodon # has switched to snowflake IDs significantly over 2 years ago anyway. - max_id = [max_id, Mastodon::Snowflake.id_at(min_status_age.seconds.ago, with_random: false)].compact.min + snowflake_id = Mastodon::Snowflake.id_at(min_status_age.seconds.ago, with_random: false) + + if max_id.nil? || snowflake_id < max_id + max_id = snowflake_id + end + Status.where(Status.arel_table[:id].lteq(max_id)) end From 608343c135c087ab7fa9bd401dce8a705720fdb8 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Nov 2022 03:52:52 +0100 Subject: [PATCH 325/500] Fix opening the language picker scrolling the single-column view to the top (#19983) Fixes #19915 --- .../features/compose/components/language_dropdown.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.js b/app/javascript/mastodon/features/compose/components/language_dropdown.js index e48fa60ffb..bf56fd0fae 100644 --- a/app/javascript/mastodon/features/compose/components/language_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/language_dropdown.js @@ -51,6 +51,15 @@ class LanguageDropdownMenu extends React.PureComponent { document.addEventListener('click', this.handleDocumentClick, false); document.addEventListener('touchend', this.handleDocumentClick, listenerOptions); this.setState({ mounted: true }); + + // Because of https://github.com/react-bootstrap/react-bootstrap/issues/2614 we need + // to wait for a frame before focusing + requestAnimationFrame(() => { + if (this.node) { + const element = this.node.querySelector('input[type="search"]'); + if (element) element.focus(); + } + }); } componentWillUnmount () { @@ -226,7 +235,7 @@ class LanguageDropdownMenu extends React.PureComponent { // react-overlays
      - +
      From 9f4930ec11b4185fcb17e5394fd0234dfcf16ed3 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Nov 2022 03:53:06 +0100 Subject: [PATCH 326/500] Add password autocomplete hints (#20071) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #20067 Our password autocomplete hints were “off” but that does not prevent current browsers from trying to autocomplete them anyway, so use `current-password` and `new-password` so they don't put a newly-generated password in a password confirmation prompt, or the old password for a password renewal prompt. --- app/views/auth/challenges/new.html.haml | 2 +- app/views/auth/passwords/edit.html.haml | 4 ++-- app/views/auth/registrations/edit.html.haml | 6 +++--- app/views/auth/sessions/new.html.haml | 2 +- app/views/settings/deletes/show.html.haml | 2 +- app/views/settings/migration/redirects/new.html.haml | 2 +- app/views/settings/migrations/show.html.haml | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/views/auth/challenges/new.html.haml b/app/views/auth/challenges/new.html.haml index 9aef2c35d6..ff4b7a506f 100644 --- a/app/views/auth/challenges/new.html.haml +++ b/app/views/auth/challenges/new.html.haml @@ -5,7 +5,7 @@ = f.input :return_to, as: :hidden .field-group - = f.input :current_password, wrapper: :with_block_label, input_html: { :autocomplete => 'off', :autofocus => true }, label: t('challenge.prompt'), required: true + = f.input :current_password, wrapper: :with_block_label, input_html: { :autocomplete => 'current-password', :autofocus => true }, label: t('challenge.prompt'), required: true .actions = f.button :button, t('challenge.confirm'), type: :submit diff --git a/app/views/auth/passwords/edit.html.haml b/app/views/auth/passwords/edit.html.haml index 114a744542..c7dbebe756 100644 --- a/app/views/auth/passwords/edit.html.haml +++ b/app/views/auth/passwords/edit.html.haml @@ -8,9 +8,9 @@ = f.input :reset_password_token, as: :hidden .fields-group - = f.input :password, wrapper: :with_label, autofocus: true, label: t('simple_form.labels.defaults.new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.new_password'), :autocomplete => 'off', :minlength => User.password_length.first, :maxlength => User.password_length.last }, required: true + = f.input :password, wrapper: :with_label, autofocus: true, label: t('simple_form.labels.defaults.new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.new_password'), :autocomplete => 'new-password', :minlength => User.password_length.first, :maxlength => User.password_length.last }, required: true .fields-group - = f.input :password_confirmation, wrapper: :with_label, label: t('simple_form.labels.defaults.confirm_new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_new_password'), :autocomplete => 'off' }, required: true + = f.input :password_confirmation, wrapper: :with_label, label: t('simple_form.labels.defaults.confirm_new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_new_password'), :autocomplete => 'new-password' }, required: true .actions = f.button :button, t('auth.set_new_password'), type: :submit diff --git a/app/views/auth/registrations/edit.html.haml b/app/views/auth/registrations/edit.html.haml index df929e3e80..c642c2293b 100644 --- a/app/views/auth/registrations/edit.html.haml +++ b/app/views/auth/registrations/edit.html.haml @@ -13,13 +13,13 @@ .fields-row__column.fields-group.fields-row__column-6 = f.input :email, wrapper: :with_label, input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }, required: true, disabled: current_account.suspended? .fields-row__column.fields-group.fields-row__column-6 - = f.input :current_password, wrapper: :with_label, input_html: { 'aria-label' => t('simple_form.labels.defaults.current_password'), :autocomplete => 'off' }, required: true, disabled: current_account.suspended?, hint: false + = f.input :current_password, wrapper: :with_label, input_html: { 'aria-label' => t('simple_form.labels.defaults.current_password'), :autocomplete => 'current-password' }, required: true, disabled: current_account.suspended?, hint: false .fields-row .fields-row__column.fields-group.fields-row__column-6 - = f.input :password, wrapper: :with_label, label: t('simple_form.labels.defaults.new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.new_password'), :autocomplete => 'off', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: t('simple_form.hints.defaults.password'), disabled: current_account.suspended? + = f.input :password, wrapper: :with_label, label: t('simple_form.labels.defaults.new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.new_password'), :autocomplete => 'new-password', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: t('simple_form.hints.defaults.password'), disabled: current_account.suspended? .fields-row__column.fields-group.fields-row__column-6 - = f.input :password_confirmation, wrapper: :with_label, label: t('simple_form.labels.defaults.confirm_new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_new_password'), :autocomplete => 'off' }, disabled: current_account.suspended? + = f.input :password_confirmation, wrapper: :with_label, label: t('simple_form.labels.defaults.confirm_new_password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_new_password'), :autocomplete => 'new-password' }, disabled: current_account.suspended? .actions = f.button :button, t('generic.save_changes'), type: :submit, class: 'button', disabled: current_account.suspended? diff --git a/app/views/auth/sessions/new.html.haml b/app/views/auth/sessions/new.html.haml index a4323d1d9a..943618e390 100644 --- a/app/views/auth/sessions/new.html.haml +++ b/app/views/auth/sessions/new.html.haml @@ -12,7 +12,7 @@ - else = f.input :email, autofocus: true, wrapper: :with_label, label: t('simple_form.labels.defaults.email'), input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }, hint: false .fields-group - = f.input :password, wrapper: :with_label, label: t('simple_form.labels.defaults.password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off' }, hint: false + = f.input :password, wrapper: :with_label, label: t('simple_form.labels.defaults.password'), input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'current-password' }, hint: false .actions = f.button :button, t('auth.login'), type: :submit diff --git a/app/views/settings/deletes/show.html.haml b/app/views/settings/deletes/show.html.haml index ddf0908794..c08ee85b0b 100644 --- a/app/views/settings/deletes/show.html.haml +++ b/app/views/settings/deletes/show.html.haml @@ -21,7 +21,7 @@ %hr.spacer/ - if current_user.encrypted_password.present? - = f.input :password, wrapper: :with_block_label, input_html: { :autocomplete => 'off' }, hint: t('deletes.confirm_password') + = f.input :password, wrapper: :with_block_label, input_html: { :autocomplete => 'current-password' }, hint: t('deletes.confirm_password') - else = f.input :username, wrapper: :with_block_label, input_html: { :autocomplete => 'off' }, hint: t('deletes.confirm_username') diff --git a/app/views/settings/migration/redirects/new.html.haml b/app/views/settings/migration/redirects/new.html.haml index 017450f4b9..d7868e900d 100644 --- a/app/views/settings/migration/redirects/new.html.haml +++ b/app/views/settings/migration/redirects/new.html.haml @@ -19,7 +19,7 @@ .fields-row__column.fields-group.fields-row__column-6 - if current_user.encrypted_password.present? - = f.input :current_password, wrapper: :with_block_label, input_html: { :autocomplete => 'off' }, required: true + = f.input :current_password, wrapper: :with_block_label, input_html: { :autocomplete => 'current-password' }, required: true - else = f.input :current_username, wrapper: :with_block_label, input_html: { :autocomplete => 'off' }, required: true diff --git a/app/views/settings/migrations/show.html.haml b/app/views/settings/migrations/show.html.haml index 14bebb19b0..1ecf7302a9 100644 --- a/app/views/settings/migrations/show.html.haml +++ b/app/views/settings/migrations/show.html.haml @@ -48,7 +48,7 @@ .fields-row__column.fields-group.fields-row__column-6 - if current_user.encrypted_password.present? - = f.input :current_password, wrapper: :with_block_label, input_html: { :autocomplete => 'off' }, required: true, disabled: on_cooldown? + = f.input :current_password, wrapper: :with_block_label, input_html: { :autocomplete => 'current-password' }, required: true, disabled: on_cooldown? - else = f.input :current_username, wrapper: :with_block_label, input_html: { :autocomplete => 'off' }, required: true, disabled: on_cooldown? From 833d9c2f1c66b97faf11fb285a8b639fdca24069 Mon Sep 17 00:00:00 2001 From: James Tucker Date: Mon, 7 Nov 2022 19:00:27 -0800 Subject: [PATCH 327/500] Improve performance by avoiding method cache busts (#19957) Switch to monkey-patching http.rb rather than a runtime extend of each response, so as to avoid busting the global method cache. A guard is included that will provide developer feedback in development and test environments should the monkey patch ever collide. --- app/lib/request.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index 648aa30850..1ea86862db 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -62,8 +62,6 @@ class Request end begin - response = response.extend(ClientLimit) - # If we are using a persistent connection, we have to # read every response to be able to move forward at all. # However, simply calling #to_s or #flush may not be safe, @@ -181,6 +179,14 @@ class Request end end + if ::HTTP::Response.methods.include?(:body_with_limit) && !Rails.env.production? + abort 'HTTP::Response#body_with_limit is already defined, the monkey patch will not be applied' + else + class ::HTTP::Response + include Request::ClientLimit + end + end + class Socket < TCPSocket class << self def open(host, *args) From 782b6835f786385c41c6455f2a251d1925b19eb5 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Nov 2022 04:06:54 +0100 Subject: [PATCH 328/500] Fix redrafting a currently-editing post not leaving edit mode (#20023) --- app/javascript/mastodon/reducers/compose.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index e4601e4715..ad384bd0b5 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -452,6 +452,7 @@ export default function compose(state = initialState, action) { map.set('idempotencyKey', uuid()); map.set('sensitive', action.status.get('sensitive')); map.set('language', action.status.get('language')); + map.set('id', null); if (action.status.get('spoiler_text').length > 0) { map.set('spoiler', true); From 6eac1cfccdc497c4f022689cd73bf937d0607f36 Mon Sep 17 00:00:00 2001 From: Zach Flanders Date: Mon, 7 Nov 2022 15:37:36 -0600 Subject: [PATCH 329/500] [Glitch] Fix spoiler buttons css not rendering correct color in light theme Port 0beb095a4bfbcce55acb016eaaa54b5e93a56023 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/mastodon-light/diff.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss index 37a49ce9f1..1fe3d7a511 100644 --- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss +++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss @@ -268,7 +268,8 @@ html { .status__content .status__content__spoiler-link { background: $ui-base-color; - &:hover { + &:hover, + &:focus { background: lighten($ui-base-color, 4%); } } From fe1b69412880634d8d20e0af2c847cab37169d59 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Nov 2022 03:52:52 +0100 Subject: [PATCH 330/500] [Glitch] Fix opening the language picker scrolling the single-column view to the top Port 608343c135c087ab7fa9bd401dce8a705720fdb8 to glitch-soc Signed-off-by: Claire --- .../features/compose/components/language_dropdown.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/compose/components/language_dropdown.js b/app/javascript/flavours/glitch/features/compose/components/language_dropdown.js index 31f1d4e730..a3256aa9b0 100644 --- a/app/javascript/flavours/glitch/features/compose/components/language_dropdown.js +++ b/app/javascript/flavours/glitch/features/compose/components/language_dropdown.js @@ -51,6 +51,15 @@ class LanguageDropdownMenu extends React.PureComponent { document.addEventListener('click', this.handleDocumentClick, false); document.addEventListener('touchend', this.handleDocumentClick, listenerOptions); this.setState({ mounted: true }); + + // Because of https://github.com/react-bootstrap/react-bootstrap/issues/2614 we need + // to wait for a frame before focusing + requestAnimationFrame(() => { + if (this.node) { + const element = this.node.querySelector('input[type="search"]'); + if (element) element.focus(); + } + }); } componentWillUnmount () { @@ -226,7 +235,7 @@ class LanguageDropdownMenu extends React.PureComponent { // react-overlays
      - +
      From 9b6d6a919f3bd908fbdf3efc9aa5d97d33e3fe6e Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Nov 2022 04:06:54 +0100 Subject: [PATCH 331/500] [Glitch] Fix redrafting a currently-editing post not leaving edit mode Port 782b6835f786385c41c6455f2a251d1925b19eb5 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/reducers/compose.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/flavours/glitch/reducers/compose.js b/app/javascript/flavours/glitch/reducers/compose.js index b739456da5..460af39553 100644 --- a/app/javascript/flavours/glitch/reducers/compose.js +++ b/app/javascript/flavours/glitch/reducers/compose.js @@ -573,6 +573,7 @@ export default function compose(state = initialState, action) { 'advanced_options', map => map.merge(new ImmutableMap({ do_not_federate })) ); + map.set('id', null); if (action.status.get('spoiler_text').length > 0) { map.set('spoiler', true); From 36b0ff57b7699db3d6acaa969a6c1491d1b9f9e3 Mon Sep 17 00:00:00 2001 From: Roni Laukkarinen Date: Tue, 8 Nov 2022 17:35:42 +0200 Subject: [PATCH 332/500] Fix grammar (#20106) --- spec/models/account_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 467d41836a..75e0235b8a 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -755,7 +755,7 @@ RSpec.describe Account, type: :model do expect(account).to model_have_error_on_field(:username) end - it 'is invalid if the username is longer then 30 characters' do + it 'is invalid if the username is longer than 30 characters' do account = Fabricate.build(:account, username: Faker::Lorem.characters(number: 31)) account.valid? expect(account).to model_have_error_on_field(:username) @@ -801,7 +801,7 @@ RSpec.describe Account, type: :model do expect(account).to model_have_error_on_field(:username) end - it 'is valid even if the username is longer then 30 characters' do + it 'is valid even if the username is longer than 30 characters' do account = Fabricate.build(:account, domain: 'domain', username: Faker::Lorem.characters(number: 31)) account.valid? expect(account).not_to model_have_error_on_field(:username) From c989faaa6201f19e99dc7088a496e603153f0f90 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Nov 2022 16:36:26 +0100 Subject: [PATCH 333/500] Change Request connection logic to try both IPv6 and IPv4 when available (#20108) Fixes #19751 --- app/lib/request.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index 1ea86862db..dd198f3991 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -199,7 +199,8 @@ class Request rescue IPAddr::InvalidAddressError Resolv::DNS.open do |dns| dns.timeouts = 5 - addresses = dns.getaddresses(host).take(2) + addresses = dns.getaddresses(host) + addresses = addresses.filter { |addr| addr.is_a?(Resolv::IPv6) }.take(2) + addresses.filter { |addr| !addr.is_a?(Resolv::IPv6) }.take(2) end end From 68d9dcd425468a4b2cca46de7de462eaa27c80f0 Mon Sep 17 00:00:00 2001 From: trwnh Date: Tue, 8 Nov 2022 09:37:28 -0600 Subject: [PATCH 334/500] Fix uncaught 500 error on invalid `replies_policy` (Fix #19097) (#20126) --- app/controllers/api/v1/lists_controller.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/controllers/api/v1/lists_controller.rb b/app/controllers/api/v1/lists_controller.rb index e5ac45fefb..843ca2ec2b 100644 --- a/app/controllers/api/v1/lists_controller.rb +++ b/app/controllers/api/v1/lists_controller.rb @@ -7,6 +7,10 @@ class Api::V1::ListsController < Api::BaseController before_action :require_user! before_action :set_list, except: [:index, :create] + rescue_from ArgumentError do |e| + render json: { error: e.to_s }, status: 422 + end + def index @lists = List.where(account: current_account).all render json: @lists, each_serializer: REST::ListSerializer From 455a754081cd5ba7b5b4979cc62cb1d2f7867ed5 Mon Sep 17 00:00:00 2001 From: trwnh Date: Tue, 8 Nov 2022 09:37:41 -0600 Subject: [PATCH 335/500] Fix missing cast of status and rule IDs to string (fix #19048) (#20122) --- app/serializers/rest/report_serializer.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/serializers/rest/report_serializer.rb b/app/serializers/rest/report_serializer.rb index de68dfc6da..f4e9af2494 100644 --- a/app/serializers/rest/report_serializer.rb +++ b/app/serializers/rest/report_serializer.rb @@ -9,4 +9,12 @@ class REST::ReportSerializer < ActiveModel::Serializer def id object.id.to_s end + + def status_ids + object&.status_ids&.map(&:to_s) + end + + def rule_ids + object&.rule_ids&.map(&:to_s) + end end From 89e1974f30709fdb98d7484561c371980f37b700 Mon Sep 17 00:00:00 2001 From: trwnh Date: Tue, 8 Nov 2022 09:39:15 -0600 Subject: [PATCH 336/500] Make account endorsements idempotent (fix #19045) (#20118) * Make account endorsements idempotent (fix #19045) * Accept suggestion to use exists? instead of find_by + nil check Co-authored-by: Yamagishi Kazutoshi * fix logic (unless, not if) * switch to using `find_or_create_by!` Co-authored-by: Yamagishi Kazutoshi --- app/controllers/api/v1/accounts/pins_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/v1/accounts/pins_controller.rb b/app/controllers/api/v1/accounts/pins_controller.rb index 3915b56693..73f845c614 100644 --- a/app/controllers/api/v1/accounts/pins_controller.rb +++ b/app/controllers/api/v1/accounts/pins_controller.rb @@ -8,7 +8,7 @@ class Api::V1::Accounts::PinsController < Api::BaseController before_action :set_account def create - AccountPin.create!(account: current_account, target_account: @account) + AccountPin.find_or_create_by!(account: current_account, target_account: @account) render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships_presenter end From c3747292254b608c601f7719ac5bee6eaca8655f Mon Sep 17 00:00:00 2001 From: trwnh Date: Tue, 8 Nov 2022 10:15:54 -0600 Subject: [PATCH 337/500] Add `sensitized` to Admin::Account serializer (fix #19148) (#20094) * Add `sensitized` to Admin::Account serializer (fix #19148) * remove whitespace, please linter --- app/serializers/rest/admin/account_serializer.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/serializers/rest/admin/account_serializer.rb b/app/serializers/rest/admin/account_serializer.rb index 2fbc7b1cb2..ad98a53e85 100644 --- a/app/serializers/rest/admin/account_serializer.rb +++ b/app/serializers/rest/admin/account_serializer.rb @@ -3,7 +3,7 @@ class REST::Admin::AccountSerializer < ActiveModel::Serializer attributes :id, :username, :domain, :created_at, :email, :ip, :role, :confirmed, :suspended, - :silenced, :disabled, :approved, :locale, + :silenced, :sensitized, :disabled, :approved, :locale, :invite_request attribute :created_by_application_id, if: :created_by_application? @@ -32,6 +32,10 @@ class REST::Admin::AccountSerializer < ActiveModel::Serializer object.silenced? end + def sensitized + object.sensitized? + end + def confirmed object.user_confirmed? end From 9358fd295d5ffa960bbdfc0c28d45553cb78a3de Mon Sep 17 00:00:00 2001 From: "k.bigwheel (kazufumi nishida)" Date: Wed, 9 Nov 2022 01:18:22 +0900 Subject: [PATCH 338/500] Add postgresql password settings hint (#19112) --- chart/values.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/chart/values.yaml b/chart/values.yaml index 9125d1a16b..dc57d86209 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -146,6 +146,8 @@ postgresql: # be rotated on each upgrade: # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade password: "" + # Set same value as above + postgresPassword: "" # you can also specify the name of an existing Secret # with a key of postgres-password set to the password you want existingSecret: "" From d3afd7a2f1c12de4d02777585550183b04167625 Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Tue, 8 Nov 2022 17:18:57 +0100 Subject: [PATCH 339/500] Fix helm postgresql secret (#19678) * Revert "Fix helm chart use of Postgres Password (#19537)" This reverts commit 6094a916b185ae0634e016004deb4cec11afbaca. * Revert "Fix PostgreSQL password reference for jobs (#19504)" This reverts commit dae954ef111b8e0ab17812d156f6c955b77d9859. * Revert "Fix PostgreSQL password reference (#19502)" This reverts commit 9bf6a8af82391fa8b32112deb4a36a0cfc68143e. * Correct default username in postgresql auth --- chart/templates/cronjob-media-remove.yaml | 2 +- chart/templates/deployment-sidekiq.yaml | 2 +- chart/templates/deployment-streaming.yaml | 2 +- chart/templates/deployment-web.yaml | 2 +- chart/templates/job-assets-precompile.yaml | 2 +- chart/templates/job-chewy-upgrade.yaml | 2 +- chart/templates/job-create-admin.yaml | 2 +- chart/templates/job-db-migrate.yaml | 2 +- chart/templates/secrets.yaml | 2 +- chart/values.yaml | 4 ++-- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 1dced69ec7..160aee2042 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -59,7 +59,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgres-password + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index 4b108d79df..994a66445e 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -76,7 +76,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgres-password + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index 564f53f433..12203a530b 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -44,7 +44,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgres-password + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index 0878aa9b87..ab722c77b1 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -62,7 +62,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgres-password + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index 37009822e6..faa51a20d9 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgres-password + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index a4bac63abc..ae6fb38e12 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -61,7 +61,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgres-password + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index c1c0bdaed5..659c00671f 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -66,7 +66,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgres-password + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 848ed36441..8e4f70dfb1 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -60,7 +60,7 @@ spec: valueFrom: secretKeyRef: name: {{ template "mastodon.postgresql.secretName" . }} - key: postgres-password + key: password - name: "REDIS_PASSWORD" valueFrom: secretKeyRef: diff --git a/chart/templates/secrets.yaml b/chart/templates/secrets.yaml index 2a91c34934..d7ac936ce5 100644 --- a/chart/templates/secrets.yaml +++ b/chart/templates/secrets.yaml @@ -37,7 +37,7 @@ data: {{- end }} {{- if not .Values.postgresql.enabled }} {{- if not .Values.postgresql.auth.existingSecret }} - postgres-password: "{{ .Values.postgresql.auth.password | b64enc }}" + password: "{{ .Values.postgresql.auth.password | b64enc }}" {{- end }} {{- end }} {{- end -}} diff --git a/chart/values.yaml b/chart/values.yaml index dc57d86209..ef349c0875 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -141,7 +141,7 @@ postgresql: # postgresqlHostname: preexisting-postgresql auth: database: mastodon_production - username: postgres + username: mastodon # you must set a password; the password generated by the postgresql chart will # be rotated on each upgrade: # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade @@ -149,7 +149,7 @@ postgresql: # Set same value as above postgresPassword: "" # you can also specify the name of an existing Secret - # with a key of postgres-password set to the password you want + # with a key of password set to the password you want existingSecret: "" # https://github.com/bitnami/charts/tree/master/bitnami/redis#parameters From fd3c48210419441f95b08a951f715e5ecd55e5c1 Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Tue, 8 Nov 2022 17:19:14 +0100 Subject: [PATCH 340/500] Roll pods to pick up db migrations even if podAnnotations is empty (#19702) --- chart/templates/deployment-sidekiq.yaml | 4 ++-- chart/templates/deployment-web.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index 994a66445e..b2e5af522e 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -14,12 +14,12 @@ spec: component: rails template: metadata: - {{- with .Values.podAnnotations }} annotations: + {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} + {{- end }} # roll the pods to pick up any db migrations rollme: {{ randAlphaNum 5 | quote }} - {{- end }} labels: {{- include "mastodon.selectorLabels" . | nindent 8 }} component: rails diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index ab722c77b1..c50f32d983 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -14,12 +14,12 @@ spec: component: rails template: metadata: - {{- with .Values.podAnnotations }} annotations: + {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} + {{- end }} # roll the pods to pick up any db migrations rollme: {{ randAlphaNum 5 | quote }} - {{- end }} labels: {{- include "mastodon.selectorLabels" . | nindent 8 }} component: rails From f7613febb36f1cec9ce4e8762da0f3b182a0e8a4 Mon Sep 17 00:00:00 2001 From: Moritz Hedtke Date: Tue, 8 Nov 2022 17:20:09 +0100 Subject: [PATCH 341/500] helm: Fix ingress pathType (#19729) --- chart/templates/ingress.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chart/templates/ingress.yaml b/chart/templates/ingress.yaml index 7295297fb1..811d98a225 100644 --- a/chart/templates/ingress.yaml +++ b/chart/templates/ingress.yaml @@ -47,9 +47,9 @@ spec: servicePort: {{ $webPort }} {{- end }} {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }} - pathType: ImplementationSpecific + pathType: Prefix {{- end }} - - path: {{ .path }}api/v1/streaming + - path: {{ .path }}api/v1/streaming/ backend: {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }} service: @@ -61,7 +61,7 @@ spec: servicePort: {{ $streamingPort }} {{- end }} {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }} - pathType: ImplementationSpecific + pathType: Exact {{- end }} {{- end }} {{- end }} From f4b78028a3bdc48517cf3df1e65236f392496d74 Mon Sep 17 00:00:00 2001 From: Sheogorath Date: Tue, 8 Nov 2022 17:20:34 +0100 Subject: [PATCH 342/500] chore(chart): Update appVersion in helm chart (#19653) This patch updates the helm chart appVersion to the current release and removes the additional definition in the image tag field, to reduce duplication. Since the image will automatically default to the Charts' app version anyway and this is the more common place to specifiy application versions for helm charts, this patch switches the prefering this field. The reason why to use the tag field for the chart itself, seems to be gone. Since renovatebot is no longer used. --- chart/Chart.yaml | 2 +- chart/values.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/chart/Chart.yaml b/chart/Chart.yaml index b1138b594f..6120a7f3a9 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -20,7 +20,7 @@ version: 2.0.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. -appVersion: 3.3.0 +appVersion: v3.5.3 dependencies: - name: elasticsearch diff --git a/chart/values.yaml b/chart/values.yaml index ef349c0875..170025b504 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -8,7 +8,7 @@ image: # built from the most recent commit # # tag: latest - tag: v3.5.2 + tag: "" # use `Always` when using `latest` tag pullPolicy: IfNotPresent From 476e74b4c4f967884be120fb75b87f232962103d Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Tue, 8 Nov 2022 17:21:06 +0100 Subject: [PATCH 343/500] Assign unique set of labels to k8s deployments #19703 (#19706) --- chart/templates/cronjob-media-remove.yaml | 2 +- chart/templates/deployment-sidekiq.yaml | 8 +++++--- chart/templates/deployment-streaming.yaml | 2 ++ chart/templates/deployment-web.yaml | 6 ++++-- chart/templates/job-assets-precompile.yaml | 2 +- chart/templates/job-chewy-upgrade.yaml | 2 +- chart/templates/job-create-admin.yaml | 2 +- chart/templates/job-db-migrate.yaml | 2 +- chart/templates/service-streaming.yaml | 1 + chart/templates/service-web.yaml | 1 + 10 files changed, 18 insertions(+), 10 deletions(-) diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index 160aee2042..d3566e32d4 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -27,7 +27,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: component + - key: app.kubernetes.io/part-of operator: In values: - rails diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index b2e5af522e..dd707a4d04 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -11,7 +11,8 @@ spec: selector: matchLabels: {{- include "mastodon.selectorLabels" . | nindent 6 }} - component: rails + app.kubernetes.io/component: sidekiq + app.kubernetes.io/part-of: rails template: metadata: annotations: @@ -22,7 +23,8 @@ spec: rollme: {{ randAlphaNum 5 | quote }} labels: {{- include "mastodon.selectorLabels" . | nindent 8 }} - component: rails + app.kubernetes.io/component: sidekiq + app.kubernetes.io/part-of: rails spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: @@ -40,7 +42,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: component + - key: app.kubernetes.io/part-of operator: In values: - rails diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index 12203a530b..7f03c9e23e 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -11,6 +11,7 @@ spec: selector: matchLabels: {{- include "mastodon.selectorLabels" . | nindent 6 }} + app.kubernetes.io/component: streaming template: metadata: {{- with .Values.podAnnotations }} @@ -19,6 +20,7 @@ spec: {{- end }} labels: {{- include "mastodon.selectorLabels" . | nindent 8 }} + app.kubernetes.io/component: streaming spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index c50f32d983..fb58b1ade0 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -11,7 +11,8 @@ spec: selector: matchLabels: {{- include "mastodon.selectorLabels" . | nindent 6 }} - component: rails + app.kubernetes.io/component: web + app.kubernetes.io/part-of: rails template: metadata: annotations: @@ -22,7 +23,8 @@ spec: rollme: {{ randAlphaNum 5 | quote }} labels: {{- include "mastodon.selectorLabels" . | nindent 8 }} - component: rails + app.kubernetes.io/component: web + app.kubernetes.io/part-of: rails spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index faa51a20d9..9bdec2ab7c 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -27,7 +27,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: component + - key: app.kubernetes.io/part-of operator: In values: - rails diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index ae6fb38e12..556133dd32 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -28,7 +28,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: component + - key: app.kubernetes.io/part-of operator: In values: - rails diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index 659c00671f..94d39dcbb5 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -28,7 +28,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: component + - key: app.kubernetes.io/part-of operator: In values: - rails diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index 8e4f70dfb1..e1544d2b66 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -27,7 +27,7 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - - key: component + - key: app.kubernetes.io/part-of operator: In values: - rails diff --git a/chart/templates/service-streaming.yaml b/chart/templates/service-streaming.yaml index a005e617c3..bade7b1e51 100644 --- a/chart/templates/service-streaming.yaml +++ b/chart/templates/service-streaming.yaml @@ -13,3 +13,4 @@ spec: name: streaming selector: {{- include "mastodon.selectorLabels" . | nindent 4 }} + app.kubernetes.io/component: streaming diff --git a/chart/templates/service-web.yaml b/chart/templates/service-web.yaml index 3563fde701..acf1233dce 100644 --- a/chart/templates/service-web.yaml +++ b/chart/templates/service-web.yaml @@ -13,3 +13,4 @@ spec: name: http selector: {{- include "mastodon.selectorLabels" . | nindent 4 }} + app.kubernetes.io/component: web From c476dfc72546c707c16ba179562db7fedec11d10 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Nov 2022 17:26:11 +0100 Subject: [PATCH 344/500] Fix nodeinfo metadata attribute being an array instead of an object (#20114) Fixes #20111 --- app/serializers/nodeinfo/serializer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/serializers/nodeinfo/serializer.rb b/app/serializers/nodeinfo/serializer.rb index afae7f00a6..f70cc38f06 100644 --- a/app/serializers/nodeinfo/serializer.rb +++ b/app/serializers/nodeinfo/serializer.rb @@ -38,7 +38,7 @@ class NodeInfo::Serializer < ActiveModel::Serializer end def metadata - [] + {} end private From b1a48e05b6b24a1ae37b9bcbc6f767c949ff3d79 Mon Sep 17 00:00:00 2001 From: trwnh Date: Tue, 8 Nov 2022 10:28:02 -0600 Subject: [PATCH 345/500] Change Report category to "violation" if rule IDs are provided (#20137) * Change Report category to "violation" if rule IDs are provided * Fix LiteralAsCondition * Add parentheses to conditional statement --- app/services/report_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/report_service.rb b/app/services/report_service.rb index 8c92cf3346..0ce525b071 100644 --- a/app/services/report_service.rb +++ b/app/services/report_service.rb @@ -8,7 +8,7 @@ class ReportService < BaseService @target_account = target_account @status_ids = options.delete(:status_ids).presence || [] @comment = options.delete(:comment).presence || '' - @category = options.delete(:category).presence || 'other' + @category = options[:rule_ids].present? ? 'violation' : (options.delete(:category).presence || 'other') @rule_ids = options.delete(:rule_ids).presence @options = options From d70303bba617b2ff1884714dd6dc69a3bd6e41a4 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Nov 2022 17:29:14 +0100 Subject: [PATCH 346/500] Add server-side route so that legacy /web/statuses/:id URLs keep being supported (#19978) --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.rb b/config/routes.rb index 800db96c80..c133acbe8a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -27,6 +27,7 @@ Rails.application.routes.draw do /blocks /domain_blocks /mutes + /statuses/(*any) ).freeze root 'home#index' From d055d751720b7494ba990a43434b73e17596b5e8 Mon Sep 17 00:00:00 2001 From: Sasha Sorokin <10401817+Brawaru@users.noreply.github.com> Date: Tue, 8 Nov 2022 17:31:32 +0100 Subject: [PATCH 347/500] Remove aria-pressed where it's redundant (#19912) This commit removes aria-pressed attribute from all elements which contents or other descriptive attributes change in active state, effectively replacing the meaning of the button, in which case aria-pressed, an attribute specified whether the button is currently pressed, would create a confusion. (Spoiler: it's everywhere). See https://github.com/mastodon/mastodon/issues/13545#issuecomment-1304886969 --- app/javascript/mastodon/components/column_header.js | 1 - app/javascript/mastodon/components/icon_button.js | 3 --- app/javascript/mastodon/components/status_action_bar.js | 4 ++-- app/javascript/mastodon/features/hashtag_timeline/index.js | 2 +- app/javascript/mastodon/features/home_timeline/index.js | 1 - .../mastodon/features/picture_in_picture/components/footer.js | 4 ++-- app/javascript/mastodon/features/status/index.js | 2 +- 7 files changed, 6 insertions(+), 11 deletions(-) diff --git a/app/javascript/mastodon/components/column_header.js b/app/javascript/mastodon/components/column_header.js index 43efa179e2..7850a93ece 100644 --- a/app/javascript/mastodon/components/column_header.js +++ b/app/javascript/mastodon/components/column_header.js @@ -152,7 +152,6 @@ class ColumnHeader extends React.PureComponent { className={collapsibleButtonClassName} title={formatMessage(collapsed ? messages.show : messages.hide)} aria-label={formatMessage(collapsed ? messages.show : messages.hide)} - aria-pressed={collapsed ? 'false' : 'true'} onClick={this.handleToggleClick} > diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js index 8fd9e10c04..49858f2e23 100644 --- a/app/javascript/mastodon/components/icon_button.js +++ b/app/javascript/mastodon/components/icon_button.js @@ -16,7 +16,6 @@ export default class IconButton extends React.PureComponent { onKeyPress: PropTypes.func, size: PropTypes.number, active: PropTypes.bool, - pressed: PropTypes.bool, expanded: PropTypes.bool, style: PropTypes.object, activeStyle: PropTypes.object, @@ -98,7 +97,6 @@ export default class IconButton extends React.PureComponent { icon, inverted, overlay, - pressed, tabIndex, title, counter, @@ -143,7 +141,6 @@ export default class IconButton extends React.PureComponent { ); diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js index 749a47e76a..ae11ccbe47 100644 --- a/app/javascript/mastodon/features/home_timeline/index.js +++ b/app/javascript/mastodon/features/home_timeline/index.js @@ -130,7 +130,6 @@ class HomeTimeline extends React.PureComponent { className={classNames('column-header__button', { 'active': showAnnouncements })} title={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)} aria-label={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)} - aria-pressed={showAnnouncements ? 'true' : 'false'} onClick={this.handleToggleAnnouncementsClick} > diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.js b/app/javascript/mastodon/features/picture_in_picture/components/footer.js index 0beb2e14dc..5b875dc302 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.js +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.js @@ -182,8 +182,8 @@ class Footer extends ImmutablePureComponent { return (
      - - + + {withOpenButton && }
      ); diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index c0ba1f2d61..cb67944c94 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -619,7 +619,7 @@ class Status extends ImmutablePureComponent { showBackButton multiColumn={multiColumn} extraButton={( - + )} /> From 6f1559ed0f17cf4bc7402559c4c564f0ebead9c9 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Tue, 8 Nov 2022 17:31:52 +0100 Subject: [PATCH 348/500] CHANGELOG.md: Fix typos (#19838) --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 777a83790c..2bd22438c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -276,7 +276,7 @@ Some of the features in this release have been funded through the [NGI0 Discover ### Fixed -- Fix error resposes for `from` search prefix ([single-right-quote](https://github.com/mastodon/mastodon/pull/17963)) +- Fix error responses for `from` search prefix ([single-right-quote](https://github.com/mastodon/mastodon/pull/17963)) - Fix dangling language-specific trends ([Gargron](https://github.com/mastodon/mastodon/pull/17997)) - Fix extremely rare race condition when deleting a status or account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17994)) - Fix trends returning less results per page when filtered in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17996)) @@ -411,7 +411,7 @@ Some of the features in this release have been funded through the [NGI0 Discover - Remove profile directory link from main navigation panel in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17688)) - **Remove language detection through cld3** ([Gargron](https://github.com/mastodon/mastodon/pull/17478), [ykzts](https://github.com/mastodon/mastodon/pull/17539), [Gargron](https://github.com/mastodon/mastodon/pull/17496), [Gargron](https://github.com/mastodon/mastodon/pull/17722)) - cld3 is very inaccurate on short-form content even with unique alphabets - - Post language can be overriden individually using `language` param + - Post language can be overridden individually using `language` param - Otherwise, it defaults to the user's interface language - Remove support for `OAUTH_REDIRECT_AT_SIGN_IN` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17287)) - Use `OMNIAUTH_ONLY` instead From 6ba52306f9d2611a06326445230b54c156c37e53 Mon Sep 17 00:00:00 2001 From: luzpaz Date: Tue, 8 Nov 2022 11:32:03 -0500 Subject: [PATCH 349/500] Fix typos (#19849) Found via `codespell -q 3 -S ./yarn.lock,./CHANGELOG.md,./AUTHORS.md,./config/locales,./app/javascript/mastodon/locales -L ba,followings,keypair,medias,pattens,pixelx,rememberable,ro,te` --- spec/lib/webfinger_resource_spec.rb | 2 +- spec/models/account_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/lib/webfinger_resource_spec.rb b/spec/lib/webfinger_resource_spec.rb index 236e9f3e2d..5c7f475d69 100644 --- a/spec/lib/webfinger_resource_spec.rb +++ b/spec/lib/webfinger_resource_spec.rb @@ -50,7 +50,7 @@ describe WebfingerResource do end it 'finds the username in a mixed case http route' do - resource = 'HTTp://exAMPLEe.com/users/alice' + resource = 'HTTp://exAMPLe.com/users/alice' result = WebfingerResource.new(resource).username expect(result).to eq 'alice' diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 75e0235b8a..edae05f9db 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -255,7 +255,7 @@ RSpec.describe Account, type: :model do Fabricate(:status, reblog: original_status, account: author) end - it 'is is true when this account has favourited it' do + it 'is true when this account has favourited it' do Fabricate(:favourite, status: original_reblog, account: subject) expect(subject.favourited?(original_status)).to eq true @@ -267,7 +267,7 @@ RSpec.describe Account, type: :model do end context 'when the status is an original status' do - it 'is is true when this account has favourited it' do + it 'is true when this account has favourited it' do Fabricate(:favourite, status: original_status, account: subject) expect(subject.favourited?(original_status)).to eq true From dd7176a4b54a69f4a96648acb71abdff9fd45e3c Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 9 Nov 2022 01:30:33 +0100 Subject: [PATCH 350/500] Fix redirects from /web/ discarding everything after a dot (#20148) Fixes #20145 --- config/routes.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index c133acbe8a..d8af292bfc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -683,7 +683,7 @@ Rails.application.routes.draw do get path, to: 'home#index' end - get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web, defaults: { any: '' } + get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web, defaults: { any: '' }, format: false get '/about', to: 'about#show' get '/about/more', to: redirect('/about') From 53817294fc95eabfed6129138f9aaa920e13c4b9 Mon Sep 17 00:00:00 2001 From: keiya Date: Wed, 9 Nov 2022 12:12:57 +0900 Subject: [PATCH 351/500] Fix nginx location matching (#20198) --- dist/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/nginx.conf b/dist/nginx.conf index 5c16693d08..5bc960e256 100644 --- a/dist/nginx.conf +++ b/dist/nginx.conf @@ -58,7 +58,7 @@ server { # If Docker is used for deployment and Rails serves static files, # then needed must replace line `try_files $uri =404;` with `try_files $uri @proxy;`. - location = sw.js { + location = /sw.js { add_header Cache-Control "public, max-age=604800, must-revalidate"; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; try_files $uri =404; From e98833748e80275a88560155a0b912667dd2d70b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 9 Nov 2022 08:24:21 +0100 Subject: [PATCH 352/500] Fix being able to spoof link verification (#20217) - Change verification to happen in `default` queue - Change verification worker to only be queued if there's something to do - Add `link` tags from metadata fields to page header of profiles --- app/models/account.rb | 44 +----- app/models/account/field.rb | 73 ++++++++++ .../activitypub/process_account_service.rb | 2 +- app/services/update_account_service.rb | 2 +- app/views/accounts/show.html.haml | 3 + app/workers/verify_account_links_worker.rb | 5 +- spec/models/account/field_spec.rb | 130 ++++++++++++++++++ 7 files changed, 211 insertions(+), 48 deletions(-) create mode 100644 app/models/account/field.rb create mode 100644 spec/models/account/field_spec.rb diff --git a/app/models/account.rb b/app/models/account.rb index 3647b82258..be1968fa69 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -295,7 +295,7 @@ class Account < ApplicationRecord def fields (self[:fields] || []).map do |f| - Field.new(self, f) + Account::Field.new(self, f) rescue nil end.compact @@ -401,48 +401,6 @@ class Account < ApplicationRecord requires_review? && !requested_review? end - class Field < ActiveModelSerializers::Model - attributes :name, :value, :verified_at, :account - - def initialize(account, attributes) - @original_field = attributes - string_limit = account.local? ? 255 : 2047 - super( - account: account, - name: attributes['name'].strip[0, string_limit], - value: attributes['value'].strip[0, string_limit], - verified_at: attributes['verified_at']&.to_datetime, - ) - end - - def verified? - verified_at.present? - end - - def value_for_verification - @value_for_verification ||= begin - if account.local? - value - else - ActionController::Base.helpers.strip_tags(value) - end - end - end - - def verifiable? - value_for_verification.present? && value_for_verification.start_with?('http://', 'https://') - end - - def mark_verified! - self.verified_at = Time.now.utc - @original_field['verified_at'] = verified_at - end - - def to_h - { name: name, value: value, verified_at: verified_at } - end - end - class << self DISALLOWED_TSQUERY_CHARACTERS = /['?\\:‘’]/.freeze TEXTSEARCH = "(setweight(to_tsvector('simple', accounts.display_name), 'A') || setweight(to_tsvector('simple', accounts.username), 'B') || setweight(to_tsvector('simple', coalesce(accounts.domain, '')), 'C'))" diff --git a/app/models/account/field.rb b/app/models/account/field.rb new file mode 100644 index 0000000000..4e0fd9230d --- /dev/null +++ b/app/models/account/field.rb @@ -0,0 +1,73 @@ +# frozen_string_literal: true + +class Account::Field < ActiveModelSerializers::Model + MAX_CHARACTERS_LOCAL = 255 + MAX_CHARACTERS_COMPAT = 2_047 + + attributes :name, :value, :verified_at, :account + + def initialize(account, attributes) + # Keeping this as reference allows us to update the field on the account + # from methods in this class, so that changes can be saved. + @original_field = attributes + @account = account + + super( + name: sanitize(attributes['name']), + value: sanitize(attributes['value']), + verified_at: attributes['verified_at']&.to_datetime, + ) + end + + def verified? + verified_at.present? + end + + def value_for_verification + @value_for_verification ||= begin + if account.local? + value + else + extract_url_from_html + end + end + end + + def verifiable? + value_for_verification.present? && /\A#{FetchLinkCardService::URL_PATTERN}\z/.match?(value_for_verification) + end + + def requires_verification? + !verified? && verifiable? + end + + def mark_verified! + @original_field['verified_at'] = self.verified_at = Time.now.utc + end + + def to_h + { name: name, value: value, verified_at: verified_at } + end + + private + + def sanitize(str) + str.strip[0, character_limit] + end + + def character_limit + account.local? ? MAX_CHARACTERS_LOCAL : MAX_CHARACTERS_COMPAT + end + + def extract_url_from_html + doc = Nokogiri::HTML(value).at_xpath('//body') + + return if doc.children.size > 1 + + element = doc.children.first + + return if element.name != 'a' || element['href'] != element.text + + element['href'] + end +end diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 3834d79ccf..99bcb38353 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -40,7 +40,7 @@ class ActivityPub::ProcessAccountService < BaseService unless @options[:only_key] || @account.suspended? check_featured_collection! if @account.featured_collection_url.present? check_featured_tags_collection! if @json['featuredTags'].present? - check_links! unless @account.fields.empty? + check_links! if @account.fields.any?(&:requires_verification?) end @account diff --git a/app/services/update_account_service.rb b/app/services/update_account_service.rb index 77f794e178..71976ab005 100644 --- a/app/services/update_account_service.rb +++ b/app/services/update_account_service.rb @@ -28,7 +28,7 @@ class UpdateAccountService < BaseService end def check_links(account) - VerifyAccountLinksWorker.perform_async(account.id) + VerifyAccountLinksWorker.perform_async(account.id) if account.fields.any?(&:requires_verification?) end def process_hashtags(account) diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml index a51dcd7be4..e8fd27e109 100644 --- a/app/views/accounts/show.html.haml +++ b/app/views/accounts/show.html.haml @@ -8,6 +8,9 @@ %link{ rel: 'alternate', type: 'application/rss+xml', href: @rss_url }/ %link{ rel: 'alternate', type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(@account) }/ + - @account.fields.select(&:verifiable?).each do |field| + %link{ rel: 'me', type: 'text/html', href: field.value }/ + = opengraph 'og:type', 'profile' = render 'og', account: @account, url: short_account_url(@account, only_path: false) diff --git a/app/workers/verify_account_links_worker.rb b/app/workers/verify_account_links_worker.rb index 8114d59bea..f606e6c26f 100644 --- a/app/workers/verify_account_links_worker.rb +++ b/app/workers/verify_account_links_worker.rb @@ -3,14 +3,13 @@ class VerifyAccountLinksWorker include Sidekiq::Worker - sidekiq_options queue: 'pull', retry: false, lock: :until_executed + sidekiq_options queue: 'default', retry: false, lock: :until_executed def perform(account_id) account = Account.find(account_id) account.fields.each do |field| - next unless !field.verified? && field.verifiable? - VerifyLinkService.new.call(field) + VerifyLinkService.new.call(field) if field.requires_verification? end account.save! if account.changed? diff --git a/spec/models/account/field_spec.rb b/spec/models/account/field_spec.rb new file mode 100644 index 0000000000..7d61a2c622 --- /dev/null +++ b/spec/models/account/field_spec.rb @@ -0,0 +1,130 @@ +require 'rails_helper' + +RSpec.describe Account::Field, type: :model do + describe '#verified?' do + let(:account) { double('Account', local?: true) } + + subject { described_class.new(account, 'name' => 'Foo', 'value' => 'Bar', 'verified_at' => verified_at) } + + context 'when verified_at is set' do + let(:verified_at) { Time.now.utc.iso8601 } + + it 'returns true' do + expect(subject.verified?).to be true + end + end + + context 'when verified_at is not set' do + let(:verified_at) { nil } + + it 'returns false' do + expect(subject.verified?).to be false + end + end + end + + describe '#mark_verified!' do + let(:account) { double('Account', local?: true) } + let(:original_hash) { { 'name' => 'Foo', 'value' => 'Bar' } } + + subject { described_class.new(account, original_hash) } + + before do + subject.mark_verified! + end + + it 'updates verified_at' do + expect(subject.verified_at).to_not be_nil + end + + it 'updates original hash' do + expect(original_hash['verified_at']).to_not be_nil + end + end + + describe '#verifiable?' do + let(:account) { double('Account', local?: local) } + + subject { described_class.new(account, 'name' => 'Foo', 'value' => value) } + + context 'for local accounts' do + let(:local) { true } + + context 'for a URL with misleading authentication' do + let(:value) { 'https://spacex.com @h.43z.one' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end + + context 'for a URL' do + let(:value) { 'https://example.com' } + + it 'returns true' do + expect(subject.verifiable?).to be true + end + end + + context 'for text that is not a URL' do + let(:value) { 'Hello world' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end + + context 'for text that contains a URL' do + let(:value) { 'Hello https://example.com world' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end + end + + context 'for remote accounts' do + let(:local) { false } + + context 'for a link' do + let(:value) { 'patreon.com/mastodon' } + + it 'returns true' do + expect(subject.verifiable?).to be true + end + end + + context 'for a link with misleading authentication' do + let(:value) { 'google.com' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end + + context 'for HTML that has more than just a link' do + let(:value) { 'google.com @h.43z.one' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end + + context 'for a link with different visible text' do + let(:value) { 'https://example.com/foo' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end + + context 'for text that is a URL but is not linked' do + let(:value) { 'https://example.com/foo' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end + end + end +end From 5333447be0c0e278d6f591bb6004fdee903a08f7 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 9 Nov 2022 14:08:19 +0100 Subject: [PATCH 353/500] Change account deletion requests to spread out over time (#20222) --- app/workers/admin/account_deletion_worker.rb | 2 +- .../suspended_user_cleanup_scheduler.rb | 38 +++++++++++++++++++ .../scheduler/user_cleanup_scheduler.rb | 7 ---- config/sidekiq.yml | 4 ++ 4 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 app/workers/scheduler/suspended_user_cleanup_scheduler.rb diff --git a/app/workers/admin/account_deletion_worker.rb b/app/workers/admin/account_deletion_worker.rb index 82f269ad6f..6e0eb331be 100644 --- a/app/workers/admin/account_deletion_worker.rb +++ b/app/workers/admin/account_deletion_worker.rb @@ -3,7 +3,7 @@ class Admin::AccountDeletionWorker include Sidekiq::Worker - sidekiq_options queue: 'pull' + sidekiq_options queue: 'pull', lock: :until_executed def perform(account_id) DeleteAccountService.new.call(Account.find(account_id), reserve_username: true, reserve_email: true) diff --git a/app/workers/scheduler/suspended_user_cleanup_scheduler.rb b/app/workers/scheduler/suspended_user_cleanup_scheduler.rb new file mode 100644 index 0000000000..50768f83cc --- /dev/null +++ b/app/workers/scheduler/suspended_user_cleanup_scheduler.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class Scheduler::SuspendedUserCleanupScheduler + include Sidekiq::Worker + + # Each processed deletion request may enqueue an enormous + # amount of jobs in the `pull` queue, so only enqueue when + # the queue is empty or close to being so. + MAX_PULL_SIZE = 50 + + # Since account deletion is very expensive, we want to avoid + # overloading the server by queing too much at once. + # This job runs approximately once per 2 minutes, so with a + # value of `MAX_DELETIONS_PER_JOB` of 10, a server can + # handle the deletion of 7200 accounts per day, provided it + # has the capacity for it. + MAX_DELETIONS_PER_JOB = 10 + + sidekiq_options retry: 0 + + def perform + return if Sidekiq::Queue.new('pull').size > MAX_PULL_SIZE + + clean_suspended_accounts! + end + + private + + def clean_suspended_accounts! + # This should be fine because we only process a small amount of deletion requests at once and + # `id` and `created_at` should follow the same order. + AccountDeletionRequest.reorder(id: :asc).take(MAX_DELETIONS_PER_JOB).each do |deletion_request| + next unless deletion_request.created_at < AccountDeletionRequest::DELAY_TO_DELETION.ago + + Admin::AccountDeletionWorker.perform_async(deletion_request.account_id) + end + end +end diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb index 7a6995a1ff..63f9ed78cc 100644 --- a/app/workers/scheduler/user_cleanup_scheduler.rb +++ b/app/workers/scheduler/user_cleanup_scheduler.rb @@ -7,7 +7,6 @@ class Scheduler::UserCleanupScheduler def perform clean_unconfirmed_accounts! - clean_suspended_accounts! clean_discarded_statuses! end @@ -22,12 +21,6 @@ class Scheduler::UserCleanupScheduler end end - def clean_suspended_accounts! - AccountDeletionRequest.where('created_at <= ?', AccountDeletionRequest::DELAY_TO_DELETION.ago).reorder(nil).find_each do |deletion_request| - Admin::AccountDeletionWorker.perform_async(deletion_request.account_id) - end - end - def clean_discarded_statuses! Status.unscoped.discarded.where('deleted_at <= ?', 30.days.ago).find_in_batches do |statuses| RemovalWorker.push_bulk(statuses) do |status| diff --git a/config/sidekiq.yml b/config/sidekiq.yml index e3156aa346..71e7cb33d8 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -53,3 +53,7 @@ interval: 1 minute class: Scheduler::AccountsStatusesCleanupScheduler queue: scheduler + suspended_user_cleanup_scheduler: + interval: 1 minute + class: Scheduler::SuspendedUserCleanupScheduler + queue: scheduler From 029b5cd5b1314463920ee3a66335c369093edd26 Mon Sep 17 00:00:00 2001 From: trwnh Date: Wed, 9 Nov 2022 08:22:58 -0600 Subject: [PATCH 354/500] Fix GET /api/v1/admin/ip_blocks/:id (#20207) --- app/policies/ip_block_policy.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/policies/ip_block_policy.rb b/app/policies/ip_block_policy.rb index 2986a4fdb3..8baf6ee2dc 100644 --- a/app/policies/ip_block_policy.rb +++ b/app/policies/ip_block_policy.rb @@ -5,6 +5,10 @@ class IpBlockPolicy < ApplicationPolicy role.can?(:manage_blocks) end + def show? + role.can?(:manage_blocks) + end + def create? role.can?(:manage_blocks) end From 104157bd012f5d7306f3bd98962b49732d7d0915 Mon Sep 17 00:00:00 2001 From: Vyr Cossont Date: Wed, 9 Nov 2022 06:23:52 -0800 Subject: [PATCH 355/500] =?UTF-8?q?Add=20Balaibalan,=20L=C3=A1adan,=20Ling?= =?UTF-8?q?ua=20Franca=20Nova,=20Lojban,=20Toki=20Pona=20to=20language=20l?= =?UTF-8?q?ist=20(#20168)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Balaibalan, Láadan, Lojban, Toki Pona to language list Fixes #8995. * Correct translated names for Lojban and Toki Pona * Correct translated name for Balaibalan * Add Lingua Franca Nova aka Elefen * Disable unhelpful Rubocop checks * Re-enable Rubocop checks at end of file --- app/helpers/languages_helper.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index e5bae2c6b0..322548747b 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true +# rubocop:disable Metrics/ModuleLength, Style/WordArray module LanguagesHelper ISO_639_1 = { @@ -189,8 +190,13 @@ module LanguagesHelper ISO_639_3 = { ast: ['Asturian', 'Asturianu'].freeze, ckb: ['Sorani (Kurdish)', 'سۆرانی'].freeze, + jbo: ['Lojban', 'la .lojban.'].freeze, kab: ['Kabyle', 'Taqbaylit'].freeze, kmr: ['Kurmanji (Kurdish)', 'Kurmancî'].freeze, + ldn: ['Láadan', 'Láadan'].freeze, + lfn: ['Lingua Franca Nova', 'lingua franca nova'].freeze, + tok: ['Toki Pona', 'toki pona'].freeze, + zba: ['Balaibalan', 'باليبلن'].freeze, zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze, }.freeze @@ -259,3 +265,5 @@ module LanguagesHelper locale_name.to_sym if locale_name.present? && I18n.available_locales.include?(locale_name.to_sym) end end + +# rubocop:enable Metrics/ModuleLength, Style/WordArray From cd0a87f170f795f3d2eeaadc06d6039aca395049 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 9 Nov 2022 16:43:48 +0100 Subject: [PATCH 356/500] New Crowdin updates (#20016) * New translations en.json (Telugu) * New translations en.yml (Telugu) * New translations en.yml (Occitan) * New translations en.json (Serbian (Latin)) * New translations en.yml (Kabyle) * New translations en.json (Igbo) * New translations en.yml (Burmese) * New translations en.json (Burmese) * New translations activerecord.en.yml (Frisian) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.json (Standard Moroccan Tamazight) * New translations en.yml (Silesian) * New translations en.json (Silesian) * New translations en.yml (Taigi) * New translations en.json (Taigi) * New translations en.json (Kabyle) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Sanskrit) * New translations en.json (Sanskrit) * New translations en.yml (Sardinian) * New translations en.json (Sardinian) * New translations en.yml (Corsican) * New translations en.json (Corsican) * New translations en.yml (Sorani (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Igbo) * New translations en.json (Hebrew) * New translations en.json (Polish) * New translations doorkeeper.en.yml (Frisian) * New translations en.json (Latvian) * New translations en.json (Icelandic) * New translations en.yml (Swedish) * New translations en.json (Swedish) * New translations en.json (Slovenian) * New translations en.json (Russian) * New translations en.json (Italian) * New translations en.json (German) * New translations en.yml (Hebrew) * New translations en.yml (Finnish) * New translations en.json (Finnish) * New translations en.yml (Danish) * New translations en.json (Afrikaans) * New translations en.json (Spanish) * New translations en.json (French) * New translations en.json (Dutch) * New translations simple_form.en.yml (Hebrew) * New translations en.json (Hebrew) * New translations en.json (Spanish, Argentina) * New translations activerecord.en.yml (Hebrew) * New translations simple_form.en.yml (Occitan) * New translations doorkeeper.en.yml (Hebrew) * New translations simple_form.en.yml (Hebrew) * New translations en.yml (Occitan) * New translations en.json (Welsh) * New translations en.yml (Chinese Traditional) * New translations en.json (German) * New translations en.json (Chinese Traditional) * New translations en.json (Ukrainian) * New translations en.json (Portuguese) * New translations en.yml (Hebrew) * New translations en.json (Finnish) * New translations en.json (Japanese) * New translations devise.en.yml (Chinese Traditional) * New translations en.yml (Thai) * New translations en.json (Hebrew) * New translations en.json (Thai) * New translations en.json (Greek) * New translations en.yml (Hebrew) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Occitan) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations en.json (Thai) * New translations en.json (Catalan) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Polish) * New translations simple_form.en.yml (Thai) * New translations en.json (Esperanto) * New translations en.json (Chinese Simplified) * New translations en.json (Irish) * New translations activerecord.en.yml (Irish) * New translations en.json (Irish) * New translations en.yml (Dutch) * New translations en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Italian) * New translations en.json (Danish) * New translations en.json (Galician) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations en.json (Czech) * New translations en.json (Turkish) * New translations en.json (Vietnamese) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations en.json (Bulgarian) * New translations en.json (Czech) * New translations en.json (Albanian) * New translations en.json (Arabic) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Bulgarian) * New translations en.json (Macedonian) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Bulgarian) * New translations devise.en.yml (Polish) * New translations en.json (Bulgarian) * New translations en.json (Hungarian) * New translations en.yml (Japanese) * New translations en.json (Norwegian) * New translations en.json (Bulgarian) * New translations en.json (Korean) * New translations en.json (Scottish Gaelic) * New translations en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations en.json (Bulgarian) * New translations en.json (German) * New translations en.json (Catalan) * New translations en.yml (Catalan) * New translations en.json (Latvian) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Latvian) * New translations en.json (Esperanto) * New translations en.json (Catalan) * New translations en.yml (Catalan) * New translations en.json (Norwegian) * New translations en.json (Vietnamese) * New translations en.yml (Esperanto) * New translations doorkeeper.en.yml (Frisian) * New translations en.yml (Romanian) * New translations en.yml (Frisian) * New translations en.json (Norwegian) * New translations en.yml (Russian) * New translations en.yml (Esperanto) * New translations doorkeeper.en.yml (Frisian) * New translations en.json (Norwegian) * New translations en.yml (Russian) * New translations en.yml (Portuguese, Brazilian) * New translations en.json (Norwegian) * New translations en.json (Swedish) * New translations en.json (Occitan) * New translations en.json (Afrikaans) * New translations en.json (Catalan) * New translations en.json (Norwegian) * New translations en.json (Swedish) * New translations en.yml (Norwegian Nynorsk) * New translations en.json (Welsh) * New translations en.yml (Esperanto) * New translations en.json (Occitan) * New translations doorkeeper.en.yml (French) * New translations activerecord.en.yml (Norwegian) * New translations activerecord.en.yml (Welsh) * New translations devise.en.yml (Norwegian) * New translations devise.en.yml (Esperanto) * New translations en.json (Chinese Simplified) * New translations en.json (Welsh) * New translations doorkeeper.en.yml (Norwegian) * New translations activerecord.en.yml (Norwegian) * New translations devise.en.yml (Norwegian) * New translations en.json (Dutch) * New translations en.json (Irish) * New translations en.yml (Norwegian) * New translations doorkeeper.en.yml (Norwegian) * New translations en.json (Dutch) * New translations en.json (Irish) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (Norwegian) * New translations simple_form.en.yml (Dutch) * New translations en.json (Irish) * New translations en.yml (Dutch) * New translations simple_form.en.yml (Dutch) * New translations en.json (English, United Kingdom) * New translations simple_form.en.yml (English, United Kingdom) * New translations doorkeeper.en.yml (English, United Kingdom) * New translations activerecord.en.yml (English, United Kingdom) * New translations en.json (Dutch) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Irish) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Irish) * New translations doorkeeper.en.yml (Irish) * New translations en.json (Bulgarian) * New translations en.json (Irish) * New translations en.yml (Irish) * New translations simple_form.en.yml (Irish) * New translations doorkeeper.en.yml (Irish) * New translations en.json (Bulgarian) * New translations en.yml (Irish) * New translations en.json (Chinese Traditional) * New translations en.json (Galician) * New translations en.json (Bulgarian) * New translations en.json (Latvian) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Latvian) * New translations en.json (Igbo) * New translations en.json (Thai) * New translations en.json (Bulgarian) * New translations en.json (Esperanto) * New translations en.json (Irish) * New translations en.yml (Chinese Traditional) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Esperanto) * New translations en.yml (Czech) * New translations en.json (Esperanto) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.json (Breton) * New translations en.yml (Breton) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations devise.en.yml (Portuguese, Brazilian) * New translations en.yml (Czech) * New translations en.json (Bulgarian) * New translations en.json (Esperanto) * New translations en.json (Afrikaans) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Esperanto) * New translations en.json (Breton) * New translations en.yml (Breton) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Esperanto) * New translations doorkeeper.en.yml (Esperanto) * New translations activerecord.en.yml (Esperanto) * New translations devise.en.yml (Esperanto) * New translations en.json (Bulgarian) * New translations en.json (Afrikaans) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.json (Indonesian) * New translations en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Portuguese, Brazilian) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` * New translations en.json (Occitan) * Run `yarn manage:translations` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 42 +-- app/javascript/mastodon/locales/ar.json | 4 +- app/javascript/mastodon/locales/bg.json | 268 ++++++++-------- app/javascript/mastodon/locales/br.json | 114 +++---- app/javascript/mastodon/locales/ca.json | 50 +-- app/javascript/mastodon/locales/cs.json | 8 +- app/javascript/mastodon/locales/cy.json | 140 ++++----- app/javascript/mastodon/locales/da.json | 8 +- app/javascript/mastodon/locales/de.json | 24 +- app/javascript/mastodon/locales/el.json | 4 +- app/javascript/mastodon/locales/en-GB.json | 20 +- app/javascript/mastodon/locales/eo.json | 66 ++-- app/javascript/mastodon/locales/es-AR.json | 8 +- app/javascript/mastodon/locales/es-MX.json | 2 +- app/javascript/mastodon/locales/es.json | 8 +- app/javascript/mastodon/locales/fi.json | 12 +- app/javascript/mastodon/locales/fr.json | 10 +- app/javascript/mastodon/locales/ga.json | 162 +++++----- app/javascript/mastodon/locales/gd.json | 72 ++--- app/javascript/mastodon/locales/gl.json | 30 +- app/javascript/mastodon/locales/he.json | 258 ++++++++-------- app/javascript/mastodon/locales/hu.json | 8 +- app/javascript/mastodon/locales/id.json | 2 +- app/javascript/mastodon/locales/ig.json | 4 +- app/javascript/mastodon/locales/is.json | 8 +- app/javascript/mastodon/locales/it.json | 8 +- app/javascript/mastodon/locales/ja.json | 8 +- app/javascript/mastodon/locales/ko.json | 8 +- app/javascript/mastodon/locales/ku.json | 18 +- app/javascript/mastodon/locales/lv.json | 22 +- app/javascript/mastodon/locales/mk.json | 32 +- app/javascript/mastodon/locales/nl.json | 14 +- app/javascript/mastodon/locales/nn.json | 8 +- app/javascript/mastodon/locales/no.json | 344 ++++++++++----------- app/javascript/mastodon/locales/oc.json | 56 ++-- app/javascript/mastodon/locales/pl.json | 10 +- app/javascript/mastodon/locales/pt-BR.json | 88 +++--- app/javascript/mastodon/locales/pt-PT.json | 8 +- app/javascript/mastodon/locales/ru.json | 8 +- app/javascript/mastodon/locales/sl.json | 8 +- app/javascript/mastodon/locales/sq.json | 8 +- app/javascript/mastodon/locales/sv.json | 18 +- app/javascript/mastodon/locales/th.json | 20 +- app/javascript/mastodon/locales/tr.json | 8 +- app/javascript/mastodon/locales/uk.json | 8 +- app/javascript/mastodon/locales/vi.json | 16 +- app/javascript/mastodon/locales/zh-CN.json | 10 +- app/javascript/mastodon/locales/zh-HK.json | 294 +++++++++--------- app/javascript/mastodon/locales/zh-TW.json | 10 +- config/locales/activerecord.cy.yml | 29 +- config/locales/activerecord.en-GB.yml | 54 ++++ config/locales/activerecord.fy.yml | 31 ++ config/locales/activerecord.ga.yml | 12 + config/locales/activerecord.he.yml | 6 +- config/locales/activerecord.no.yml | 39 ++- config/locales/br.yml | 55 +++- config/locales/ca.yml | 24 +- config/locales/cs.yml | 10 + config/locales/da.yml | 2 +- config/locales/de.yml | 2 +- config/locales/devise.eo.yml | 14 +- config/locales/devise.gd.yml | 4 +- config/locales/devise.no.yml | 66 ++-- config/locales/devise.pl.yml | 2 +- config/locales/devise.zh-TW.yml | 8 +- config/locales/doorkeeper.en-GB.yml | 118 +++++++ config/locales/doorkeeper.eo.yml | 3 +- config/locales/doorkeeper.fr.yml | 2 +- config/locales/doorkeeper.fy.yml | 162 ++++++++++ config/locales/doorkeeper.ga.yml | 6 + config/locales/doorkeeper.gd.yml | 14 +- config/locales/doorkeeper.he.yml | 10 +- config/locales/doorkeeper.no.yml | 99 ++++-- config/locales/doorkeeper.pt-BR.yml | 2 +- config/locales/eo.yml | 91 +++--- config/locales/fi.yml | 2 +- config/locales/fy.yml | 104 +++++++ config/locales/ga.yml | 77 +++++ config/locales/gd.yml | 54 ++-- config/locales/he.yml | 280 +++++++++++------ config/locales/ja.yml | 2 +- config/locales/lv.yml | 20 +- config/locales/nl.yml | 17 +- config/locales/nn.yml | 13 + config/locales/no.yml | 79 +++++ config/locales/oc.yml | 16 + config/locales/pt-BR.yml | 151 +++++---- config/locales/ro.yml | 3 + config/locales/ru.yml | 15 + config/locales/simple_form.ca.yml | 6 +- config/locales/simple_form.en-GB.yml | 10 + config/locales/simple_form.eo.yml | 4 +- config/locales/simple_form.ga.yml | 12 + config/locales/simple_form.gd.yml | 20 +- config/locales/simple_form.gl.yml | 2 + config/locales/simple_form.he.yml | 93 ++++-- config/locales/simple_form.it.yml | 2 +- config/locales/simple_form.lv.yml | 10 +- config/locales/simple_form.nl.yml | 8 +- config/locales/simple_form.nn.yml | 98 +++++- config/locales/simple_form.oc.yml | 2 + config/locales/simple_form.pt-BR.yml | 24 +- config/locales/simple_form.th.yml | 14 +- config/locales/simple_form.tr.yml | 2 +- config/locales/sv.yml | 10 + config/locales/th.yml | 2 + config/locales/zh-TW.yml | 8 +- 107 files changed, 2764 insertions(+), 1625 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index bfa5a89f99..95822b7b04 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Die gebruiker volg nie tans iemand nie.", "account.follows_you": "Volg jou", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Gaan na profiel", "account.hide_reblogs": "Versteek hupstoot vanaf @{name}", "account.joined_short": "Aangesluit", "account.languages": "Change subscribed languages", @@ -74,7 +74,7 @@ "admin.dashboard.retention.cohort_size": "Nuwe gebruikers", "alert.rate_limited.message": "Probeer asb. weer na {retry_time, time, medium}.", "alert.rate_limited.title": "Tempo-beperk", - "alert.unexpected.message": "An unexpected error occurred.", + "alert.unexpected.message": "'n Onverwagte fout het voorgekom.", "alert.unexpected.title": "Oeps!", "announcement.announcement": "Aankondiging", "attachments_list.unprocessed": "(unprocessed)", @@ -146,18 +146,18 @@ "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", "compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.unmarked": "Text is not hidden", - "compose_form.spoiler_placeholder": "Write your warning here", + "compose_form.spoiler_placeholder": "Skryf jou waarskuwing hier", "confirmation_modal.cancel": "Kanselleer", "confirmations.block.block_and_report": "Block & Rapporteer", - "confirmations.block.confirm": "Block", - "confirmations.block.message": "Are you sure you want to block {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", - "confirmations.delete.confirm": "Delete", + "confirmations.block.confirm": "Blokeer", + "confirmations.block.message": "Is jy seker dat jy {name} wil blok?", + "confirmations.cancel_follow_request.confirm": "Trek aanvaag terug", + "confirmations.cancel_follow_request.message": "Is jy seker dat jy jou aanvraag om {name} te volg, terug wil trek?", + "confirmations.delete.confirm": "Wis uit", "confirmations.delete.message": "Are you sure you want to delete this status?", - "confirmations.delete_list.confirm": "Delete", - "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", - "confirmations.discard_edit_media.confirm": "Discard", + "confirmations.delete_list.confirm": "Wis uit", + "confirmations.delete_list.message": "Is jy seker dat jy hierdie lys permanent wil uitwis?", + "confirmations.discard_edit_media.confirm": "Verwerp", "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", @@ -173,17 +173,17 @@ "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", - "conversation.with": "With {names}", + "conversation.mark_as_read": "Merk as gelees", + "conversation.open": "Besigtig gesprek", + "conversation.with": "Met {names}", "copypaste.copied": "Copied", "copypaste.copy": "Copy", "directory.federated": "Vanaf bekende fediverse", "directory.local": "Slegs vanaf {domain}", "directory.new_arrivals": "New arrivals", "directory.recently_active": "Recently active", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Rekening instellings", + "disabled_account_banner.text": "Jou rekening {disabledAccount} is tans onaktief.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -293,7 +293,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Haak en plak hierdie URL in die soek area van jou gunseling toep of die web blaaier waar jy ingeteken is.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", @@ -354,14 +354,14 @@ "lists.replies_policy.list": "Members of the list", "lists.replies_policy.none": "No one", "lists.replies_policy.title": "Show replies to:", - "lists.search": "Search among people you follow", + "lists.search": "Soek tussen mense wat jy volg", "lists.subheading": "Your lists", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Loading...", "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Jou rekening {disabledAccount} is tans onaktief omdat jy na {movedToAccount} verhuis het.", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.indefinite": "Indefinite", @@ -521,7 +521,7 @@ "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "hits-etiket", "search_popout.tips.status": "status", - "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", + "search_popout.tips.text": "Eenvoudige teks bring name, gebruiker name en hits-etikette wat ooreenstem, terug", "search_popout.tips.user": "gebruiker", "search_results.accounts": "Mense", "search_results.all": "Alles", @@ -530,7 +530,7 @@ "search_results.statuses": "Toots", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.title": "Soek vir {q}", - "search_results.total": "{count, number} {count, plural, one {result} other {results}}", + "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultate}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "active users", "server_banner.administered_by": "Administrasie deur:", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 0392a58b54..60d62c8cd2 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -189,7 +189,7 @@ "dismissable_banner.explore_links": "هذه القصص الإخبارية يتحدث عنها أشخاص على هذا الخوادم الأخرى للشبكة اللامركزية في الوقت الحالي.", "dismissable_banner.explore_statuses": "هذه المشاركات من هذا الخوادم الأخرى في الشبكة اللامركزية تجذب انتباه المستخدمين على هذا الخادم الآن.", "dismissable_banner.explore_tags": "هذه العلامات تكتسب جذب بين الناس على هذا الخوادم الأخرى للشبكة اللامركزية في الوقت الحالي.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.public_timeline": "هذه هي أحدث المشاركات العامة من الناس على هذا الخادم والخوادم الأخرى للشبكة اللامركزية التي يعرفها هذا الخادم.", "embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.", "embed.preview": "هكذا ما سوف يبدو عليه:", "emoji_button.activity": "الأنشطة", @@ -534,7 +534,7 @@ "server_banner.about_active_users": "الأشخاص الذين يستخدمون هذا الخادم خلال الأيام الثلاثين الأخيرة (المستخدمون النشطون شهريًا)", "server_banner.active_users": "مستخدم نشط", "server_banner.administered_by": "يُديره:", - "server_banner.introduction": "{domain} هو جزء من الشبكة الاجتماعية اللامركزية المدعومة من {mastodon}.", + "server_banner.introduction": "{domain} هو جزء من الشبكة الاجتماعية اللامركزية التي تعمل بواسطة {mastodon}.", "server_banner.learn_more": "تعلم المزيد", "server_banner.server_stats": "إحصائيات الخادم:", "sign_in_banner.create_account": "أنشئ حسابًا", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 4af5614b63..c83c1087c8 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -1,24 +1,24 @@ { "about.blocks": "Модерирани сървъри", "about.contact": "За контакти:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon е безплатен софтуер с отворен изходен код и търговска марка Mastodon gGmbH.", "about.domain_blocks.comment": "Причина", "about.domain_blocks.domain": "Домейн", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.domain_blocks.severity": "Взискателност", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Ограничено", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.domain_blocks.suspended.explanation": "Никакви данни от този сървър няма да се обработват, съхранявани или обменяни, правещи невъзможно всяко взаимодействие или комуникация с потребители от тези сървъри.", + "about.domain_blocks.suspended.title": "Спряно", + "about.not_available": "Тази информация не е била направена налична на този сървър.", + "about.powered_by": "Децентрализирана социална мрежа, захранвана от {mastodon}", "about.rules": "Правила на сървъра", "account.account_note_header": "Бележка", "account.add_or_remove_from_list": "Добави или премахни от списъците", "account.badges.bot": "Бот", "account.badges.group": "Група", - "account.block": "Блокирай", - "account.block_domain": "скрий всичко от (домейн)", + "account.block": "Блокиране на @{name}", + "account.block_domain": "Блокиране на домейн {domain}", "account.blocked": "Блокирани", "account.browse_more_on_origin_server": "Разглеждане на още в първообразния профил", "account.cancel_follow_request": "Withdraw follow request", @@ -28,25 +28,25 @@ "account.edit_profile": "Редактиране на профила", "account.enable_notifications": "Уведомявайте ме, когато @{name} публикува", "account.endorse": "Характеристика на профила", - "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_at": "Последна публикация на {date}", "account.featured_tags.last_status_never": "Няма публикации", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Последване", "account.followers": "Последователи", - "account.followers.empty": "Все още никой не следва този потребител.", - "account.followers_counter": "{count, plural, one {{counter} Последовател} other {{counter} Последователи}}", + "account.followers.empty": "Още никой не следва потребителя.", + "account.followers_counter": "{count, plural, one {{counter} последовател} other {{counter} последователи}}", "account.following": "Последвани", - "account.following_counter": "{count, plural, one {{counter} Последван} other {{counter} Последвани}}", - "account.follows.empty": "Този потребител все още не следва никого.", - "account.follows_you": "Твой последовател", - "account.go_to_profile": "Go to profile", + "account.following_counter": "{count, plural, one {{counter} последван} other {{counter} последвани}}", + "account.follows.empty": "Потребителят още никого не следва.", + "account.follows_you": "Ваш последовател", + "account.go_to_profile": "Към профила", "account.hide_reblogs": "Скриване на споделяния от @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Присъединени", "account.languages": "Change subscribed languages", "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}", - "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.", + "account.locked_info": "Състоянието за поверителността на акаунта е зададено заключено. Собственикът преглежда ръчно от кого може да се следва.", "account.media": "Мултимедия", - "account.mention": "Споменаване", + "account.mention": "Споменаване на @{name}", "account.moved_to": "{name} has indicated that their new account is now:", "account.mute": "Заглушаване на @{name}", "account.mute_notifications": "Заглушаване на известия от @{name}", @@ -55,24 +55,24 @@ "account.posts_with_replies": "Публикации и отговори", "account.report": "Докладване на @{name}", "account.requested": "Чака се одобрение. Щракнете за отмяна на заявката за последване", - "account.share": "Споделяне на @{name} профила", + "account.share": "Споделяне на профила на @{name}", "account.show_reblogs": "Показване на споделяния от @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Публикация} other {{counter} Публикации}}", + "account.statuses_counter": "{count, plural, one {{counter} публикация} other {{counter} публикации}}", "account.unblock": "Отблокиране на @{name}", - "account.unblock_domain": "Unhide {domain}", - "account.unblock_short": "Отблокирай", + "account.unblock_domain": "Отблокиране на домейн {domain}", + "account.unblock_short": "Отблокирване", "account.unendorse": "Не включвайте в профила", - "account.unfollow": "Не следвай", + "account.unfollow": "Стоп на следването", "account.unmute": "Без заглушаването на @{name}", - "account.unmute_notifications": "Раззаглушаване на известия от @{name}", - "account.unmute_short": "Unmute", + "account.unmute_notifications": "Без заглушаване на известия от @{name}", + "account.unmute_short": "Без заглушаването", "account_note.placeholder": "Щракнете, за да добавите бележка", "admin.dashboard.daily_retention": "Ниво на задържани на потребители след регистрация, в дни", "admin.dashboard.monthly_retention": "Ниво на задържани на потребители след регистрация, в месеци", "admin.dashboard.retention.average": "Средно", - "admin.dashboard.retention.cohort": "Месец на регистрацията", + "admin.dashboard.retention.cohort": "Регистрации за месец", "admin.dashboard.retention.cohort_size": "Нови потребители", - "alert.rate_limited.message": "Моля, опитайте отново след {retry_time, time, medium}.", + "alert.rate_limited.message": "Опитайте пак след {retry_time, time, medium}.", "alert.rate_limited.title": "Скоростта е ограничена", "alert.unexpected.message": "Възникна неочаквана грешка.", "alert.unexpected.title": "Опаа!", @@ -81,28 +81,28 @@ "audio.hide": "Скриване на звука", "autosuggest_hashtag.per_week": "{count} на седмица", "boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.copy_stacktrace": "Копиране на доклада за грешката", + "bundle_column_error.error.body": "Заявената страница не може да се изобрази. Това може да е заради грешка в кода ни или проблем със съвместимостта на браузъра.", + "bundle_column_error.error.title": "О, не!", + "bundle_column_error.network.body": "Възникна грешка, опитвайки зареждане на страницата. Това може да е заради временен проблем с интернет връзката ви или този сървър.", "bundle_column_error.network.title": "Мрежова грешка", "bundle_column_error.retry": "Нов опит", "bundle_column_error.return": "Обратно към началото", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.body": "Заявената страница не може да се намери. Сигурни ли сте, че URL адресът в адресната лента е правилен?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Затваряне", "bundle_modal_error.message": "Нещо се обърка, зареждайки компонента.", "bundle_modal_error.retry": "Нов опит", "closed_registrations.other_server_instructions": "Поради това че Mastodon е децентрализиран, можеш да създадеш акаунт на друг сървър, от който можеш да комуникираш с този.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations_modal.description": "Създаването на акаунт в {domain} сега не е възможно, но обърнете внимание, че нямате нужда от акаунт конкретно на {domain}, за да ползвате Mastodon.", + "closed_registrations_modal.find_another_server": "Намиране на друг сървър", + "closed_registrations_modal.preamble": "Mastodon е децентрализиран, така че няма значение къде създавате акаунта си, ще може да последвате и взаимодействате с всеки на този сървър. Може дори да стартирате свой собствен сървър!", + "closed_registrations_modal.title": "Регистриране в Mastodon", + "column.about": "Относно", "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", "column.community": "Локална емисия", - "column.direct": "Лични съобщения", + "column.direct": "Директни съобщения", "column.directory": "Разглеждане на профили", "column.domain_blocks": "Блокирани домейни", "column.favourites": "Любими", @@ -127,11 +127,11 @@ "compose.language.change": "Смяна на езика", "compose.language.search": "Търсене на езици...", "compose_form.direct_message_warning_learn_more": "Още информация", - "compose_form.encryption_warning": "Поставете в Мастодон не са криптирани от край до край. Не споделяйте никаква чувствителна информация.", + "compose_form.encryption_warning": "Публикациите в Mastodon не са криптирани от край до край. Не споделяйте никаква чувствителна информация там.", "compose_form.hashtag_warning": "Тази публикация няма да бъде изброена под нито един хаштаг, тъй като е скрита. Само публични публикации могат да се търсят по хаштаг.", "compose_form.lock_disclaimer": "Вашият акаунт не е {locked}. Всеки може да ви последва, за да прегледа вашите публикации само за последователи.", "compose_form.lock_disclaimer.lock": "заключено", - "compose_form.placeholder": "Какво си мислиш?", + "compose_form.placeholder": "Какво мислите?", "compose_form.poll.add_option": "Добавяне на избор", "compose_form.poll.duration": "Времетраене на анкетата", "compose_form.poll.option_placeholder": "Избор {number}", @@ -146,51 +146,51 @@ "compose_form.sensitive.unmarked": "{count, plural, one {Мултимедията не е маркирана като деликатна} other {Мултимедиите не са маркирани като деликатни}}", "compose_form.spoiler.marked": "Текстът е скрит зад предупреждение", "compose_form.spoiler.unmarked": "Текстът не е скрит", - "compose_form.spoiler_placeholder": "Content warning", + "compose_form.spoiler_placeholder": "Тук напишете предупреждението си", "confirmation_modal.cancel": "Отказ", "confirmations.block.block_and_report": "Блокиране и докладване", "confirmations.block.confirm": "Блокиране", "confirmations.block.message": "Наистина ли искате да блокирате {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Оттегляне на заявката", + "confirmations.cancel_follow_request.message": "Наистина ли искате да оттеглите заявката си да последвате {name}?", "confirmations.delete.confirm": "Изтриване", "confirmations.delete.message": "Наистина ли искате да изтриете публикацията?", "confirmations.delete_list.confirm": "Изтриване", "confirmations.delete_list.message": "Наистина ли искате да изтриете завинаги този списък?", - "confirmations.discard_edit_media.confirm": "Отмени", - "confirmations.discard_edit_media.message": "Не сте запазили промени на описанието или огледа на медията, отхвърляте ли ги въпреки това?", + "confirmations.discard_edit_media.confirm": "Отхвърляне", + "confirmations.discard_edit_media.message": "Не сте запазили промени на описанието или огледа на мултимедията, отхвърляте ли ги?", "confirmations.domain_block.confirm": "Блокиране на целия домейн", "confirmations.domain_block.message": "Наистина ли искате да блокирате целия {domain}? В повечето случаи няколко блокирания или заглушавания са достатъчно и за предпочитане. Няма да виждате съдържание от домейна из публичните места или известията си. Вашите последователи от този домейн ще се премахнат.", "confirmations.logout.confirm": "Излизане", "confirmations.logout.message": "Наистина ли искате да излезете?", "confirmations.mute.confirm": "Заглушаване", "confirmations.mute.explanation": "Това ще скрие публикации от тях и публикации, които ги споменават, но все пак ще им позволи да виждат вашите публикации и да ви следват.", - "confirmations.mute.message": "Сигурни ли сте, че искате да заглушите {name}?", + "confirmations.mute.message": "Наистина ли искате да заглушите {name}?", "confirmations.redraft.confirm": "Изтриване и преработване", "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.", "confirmations.reply.confirm": "Отговор", "confirmations.reply.message": "Отговарянето сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?", - "confirmations.unfollow.confirm": "Отследване", + "confirmations.unfollow.confirm": "Без следване", "confirmations.unfollow.message": "Наистина ли искате да не следвате {name}?", "conversation.delete": "Изтриване на разговора", "conversation.mark_as_read": "Маркиране като прочетено", "conversation.open": "Преглед на разговора", "conversation.with": "С {names}", "copypaste.copied": "Копирано", - "copypaste.copy": "Copy", + "copypaste.copy": "Копиране", "directory.federated": "От познат федивърс", "directory.local": "Само от {domain}", "directory.new_arrivals": "Новодошли", "directory.recently_active": "Наскоро активни", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "Embed this status on your website by copying the code below.", + "disabled_account_banner.account_settings": "Настройки на акаунта", + "disabled_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен.", + "dismissable_banner.community_timeline": "Ето най-скорошните публични публикации от хора, чиито акаунти са разположени в {domain}.", + "dismissable_banner.dismiss": "Отхвърляне", + "dismissable_banner.explore_links": "Тези новини се разказват от хората в този и други сървъри на децентрализираната мрежа точно сега.", + "dismissable_banner.explore_statuses": "Тези публикации от този и други сървъри в децентрализираната мрежа набират популярност сега на този сървър.", + "dismissable_banner.explore_tags": "Тези хаштагове сега набират популярност сред хората в този и други сървъри на децентрализирата мрежа.", + "dismissable_banner.public_timeline": "Ето най-скорошните публични публикации от хора в този и други сървъри на децентрализираната мрежа, за които този сървър познава.", + "embed.instructions": "Вградете публикацията в уебсайта си, копирайки кода долу.", "embed.preview": "Ето как ще изглежда:", "emoji_button.activity": "Дейност", "emoji_button.clear": "Изчистване", @@ -223,7 +223,7 @@ "empty_column.hashtag": "Още няма нищо в този хаштаг.", "empty_column.home": "Вашата начална емисия е празна! Посетете {public} или използвайте търсене, за да започнете и да се запознаете с други потребители.", "empty_column.home.suggestions": "Преглед на някои предложения", - "empty_column.list": "There is nothing in this list yet.", + "empty_column.list": "Още няма нищо в този списък. Когато членовете на списъка публикуват нови публикации, то те ще се появят тук.", "empty_column.lists": "Все още нямате списъци. Когато създадете такъв, той ще се покаже тук.", "empty_column.mutes": "Още не сте заглушавали потребители.", "empty_column.notifications": "Все още нямате известия. Взаимодействайте с другите, за да започнете разговора.", @@ -231,7 +231,7 @@ "error.unexpected_crash.explanation": "Поради грешка в нашия код или проблем със съвместимостта на браузъра, тази страница не може да се покаже правилно.", "error.unexpected_crash.explanation_addons": "Тази страница не може да се покаже правилно. Тази грешка вероятно е причинена от добавка на браузъра или инструменти за автоматичен превод.", "error.unexpected_crash.next_steps": "Опитайте да опресните страницата. Ако това не помогне, все още можете да използвате Mastodon чрез различен браузър или приложение.", - "error.unexpected_crash.next_steps_addons": "Опитайте да ги деактивирате и да опресните страницата. Ако това не помогне, може все още да използвате Mastodon чрез различен браузър или приложение.", + "error.unexpected_crash.next_steps_addons": "Опитайте се да ги изключите и да опресните страницата. Ако това не помогне, то още може да използвате Mastodon чрез различен браузър или приложение.", "errors.unexpected_crash.copy_stacktrace": "Копиране на stacktrace-а в клипборда", "errors.unexpected_crash.report_issue": "Сигнал за проблем", "explore.search_results": "Резултати от търсенето", @@ -243,32 +243,32 @@ "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Несъвпадение на контекста!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Изтекал филтър!", + "filter_modal.added.expired_title": "Изтекъл филтър!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Настройки на филтър", + "filter_modal.added.review_and_configure_title": "Настройки на филтъра", "filter_modal.added.settings_link": "страница с настройки", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Филтърът е добавен!", "filter_modal.select_filter.context_mismatch": "не е приложимо за този контекст", "filter_modal.select_filter.expired": "изтекло", "filter_modal.select_filter.prompt_new": "Нова категория: {name}", - "filter_modal.select_filter.search": "Търси или създай", + "filter_modal.select_filter.search": "Търсене или създаване", "filter_modal.select_filter.subtitle": "Изберете съществуваща категория или създайте нова", - "filter_modal.select_filter.title": "Филтриране на поста", - "filter_modal.title.status": "Филтрирай пост", + "filter_modal.select_filter.title": "Филтриране на публ.", + "filter_modal.title.status": "Филтриране на публ.", "follow_recommendations.done": "Готово", - "follow_recommendations.heading": "Следвайте хора, които харесвате, за да виждате техните съобщения! Ето някои предложения.", - "follow_recommendations.lead": "Съобщения от хора, които следвате, ще се показват в хронологичен ред на вашата главна страница. Не се страхувайте, че ще сгрешите, по всяко време много лесно можете да спрете да ги следвате!", + "follow_recommendations.heading": "Следвайте хора, от които харесвате да виждате публикации! Ето някои предложения.", + "follow_recommendations.lead": "Публикациите от хората, които следвате, ще се показват в хронологично в началния ви инфопоток. Не се страхувайте, че ще сгрешите, по всяко време много лесно може да спрете да ги следвате!", "follow_request.authorize": "Упълномощаване", "follow_request.reject": "Отхвърляне", "follow_requests.unlocked_explanation": "Въпреки че акаунтът ви не е заключен, служителите на {domain} помислиха, че може да искате да преглеждате ръчно заявките за последване на тези профили.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", + "footer.about": "Относно", + "footer.directory": "Директория на профилите", + "footer.get_app": "Вземане на приложението", + "footer.invite": "Поканване на хора", "footer.keyboard_shortcuts": "Клавишни съчетания", "footer.privacy_policy": "Политика за поверителност", - "footer.source_code": "View source code", + "footer.source_code": "Преглед на изходния код", "generic.saved": "Запазено", "getting_started.heading": "Първи стъпки", "hashtag.column_header.tag_mode.all": "и {additional}", @@ -291,33 +291,33 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.on_another_server": "На различен сървър", + "interaction_modal.on_this_server": "На този сървър", + "interaction_modal.other_server_instructions": "Просто копипействате URL адреса в лентата за търсене на любимото си приложение или уеб интерфейс, където сте влезли.", + "interaction_modal.preamble": "Откак Mastodon е децентрализиран, може да употребявате съществуващ акаунт, разположен на друг сървър на Mastodon или съвместима платформа, ако нямате акаунт на този сървър.", + "interaction_modal.title.favourite": "Любими публикации на {name}", "interaction_modal.title.follow": "Последване на {name}", "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reply": "Отговаряне на публикацията на {name}", "intervals.full.days": "{number, plural, one {# ден} other {# дни}}", "intervals.full.hours": "{number, plural, one {# час} other {# часа}}", "intervals.full.minutes": "{number, plural, one {# минута} other {# минути}}", - "keyboard_shortcuts.back": "за придвижване назад", - "keyboard_shortcuts.blocked": "за отваряне на списъка с блокирани потребители", + "keyboard_shortcuts.back": "Навигиране назад", + "keyboard_shortcuts.blocked": "Отваряне на списъка с блокирани потребители", "keyboard_shortcuts.boost": "за споделяне", "keyboard_shortcuts.column": "Съсредоточение на колона", "keyboard_shortcuts.compose": "за фокусиране на текстовото пространство за композиране", "keyboard_shortcuts.description": "Описание", - "keyboard_shortcuts.direct": "to open direct messages column", - "keyboard_shortcuts.down": "за придвижване надолу в списъка", - "keyboard_shortcuts.enter": "to open status", + "keyboard_shortcuts.direct": "за отваряне на колоната с директни съобщения", + "keyboard_shortcuts.down": "Преместване надолу в списъка", + "keyboard_shortcuts.enter": "Отваряне на публикация", "keyboard_shortcuts.favourite": "Любима публикация", "keyboard_shortcuts.favourites": "Отваряне на списъка с любими", "keyboard_shortcuts.federated": "да отвори обединена хронология", "keyboard_shortcuts.heading": "Клавишни съчетания", "keyboard_shortcuts.home": "за отваряне на началната емисия", "keyboard_shortcuts.hotkey": "Бърз клавиш", - "keyboard_shortcuts.legend": "за показване на тази легенда", + "keyboard_shortcuts.legend": "Показване на тази легенда", "keyboard_shortcuts.local": "за отваряне на локалната емисия", "keyboard_shortcuts.mention": "Споменаване на автор", "keyboard_shortcuts.muted": "Отваряне на списъка със заглушени потребители", @@ -332,17 +332,17 @@ "keyboard_shortcuts.spoilers": "за показване/скриване на ПС полето", "keyboard_shortcuts.start": "за отваряне на колоната \"първи стъпки\"", "keyboard_shortcuts.toggle_hidden": "за показване/скриване на текст зад ПС", - "keyboard_shortcuts.toggle_sensitivity": "Показване/скриване на мултимедия", + "keyboard_shortcuts.toggle_sensitivity": "Показване/скриване на мултимедията", "keyboard_shortcuts.toot": "Начало на нова публикация", "keyboard_shortcuts.unfocus": "за дефокусиране на текстовото поле за композиране/търсене", - "keyboard_shortcuts.up": "за придвижване нагоре в списъка", + "keyboard_shortcuts.up": "Преместване нагоре в списъка", "lightbox.close": "Затваряне", - "lightbox.compress": "Компресиране на полето за преглед на изображение", - "lightbox.expand": "Разгъване на полето за преглед на изображение", + "lightbox.compress": "Свиване на полето за преглед на образи", + "lightbox.expand": "Разгъване на полето за преглед на образи", "lightbox.next": "Напред", "lightbox.previous": "Назад", "limited_account_hint.action": "Покажи профила въпреки това", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "Този профил е бил скрит от модераторита на {domain}.", "lists.account.add": "Добавяне към списък", "lists.account.remove": "Премахване от списък", "lists.delete": "Изтриване на списък", @@ -361,11 +361,11 @@ "media_gallery.toggle_visible": "Скриване на {number, plural, one {изображение} other {изображения}}", "missing_indicator.label": "Не е намерено", "missing_indicator.sublabel": "Ресурсът не може да се намери", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен, защото се преместихте в {movedToAccount}.", "mute_modal.duration": "Времетраене", "mute_modal.hide_notifications": "Скривате ли известията от този потребител?", "mute_modal.indefinite": "Неопределено", - "navigation_bar.about": "About", + "navigation_bar.about": "За тази инстанция", "navigation_bar.blocks": "Блокирани потребители", "navigation_bar.bookmarks": "Отметки", "navigation_bar.community_timeline": "Локална емисия", @@ -388,7 +388,7 @@ "navigation_bar.public_timeline": "Публичен канал", "navigation_bar.search": "Търсене", "navigation_bar.security": "Сигурност", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Трябва да се регистрирате за достъп до този ресурс.", "notification.admin.report": "{name} докладва {target}", "notification.admin.sign_up": "{name} се регистрира", "notification.favourite": "{name} направи любима ваша публикация", @@ -456,17 +456,17 @@ "privacy.public.short": "Публично", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Скрито", - "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.last_updated": "Последно осъвременяване на {date}", "privacy_policy.title": "Политика за поверителност", "refresh": "Опресняване", "regeneration_indicator.label": "Зареждане…", "regeneration_indicator.sublabel": "Вашата начална емисия се подготвя!", "relative_time.days": "{number}д.", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.days": "преди {number, plural, one {# ден} other {# дни}}", + "relative_time.full.hours": "преди {number, plural, one {# час} other {# часа}}", "relative_time.full.just_now": "току-що", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.minutes": "преди {number, plural, one {# минута} other {# минути}}", + "relative_time.full.seconds": "преди {number, plural, one {# секунда} other {# секунди}}", "relative_time.hours": "{number}ч.", "relative_time.just_now": "сега", "relative_time.minutes": "{number}м.", @@ -478,45 +478,45 @@ "report.categories.other": "Друго", "report.categories.spam": "Спам", "report.categories.violation": "Съдържание, нарушаващо едно или повече правила на сървъра", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", + "report.category.subtitle": "Изберете най-доброто съвпадение", + "report.category.title": "Разкажете ни какво се случва с това: {type}", "report.category.title_account": "профил", "report.category.title_status": "публикация", "report.close": "Готово", - "report.comment.title": "Is there anything else you think we should know?", + "report.comment.title": "Има ли нещо друго, което смятате, че трябва да знаем?", "report.forward": "Препращане до {target}", "report.forward_hint": "Акаунтът е от друг сървър. Ще изпратите ли анонимно копие на доклада и там?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Заглушаване", + "report.mute_explanation": "Няма да виждате публикациите на това лице. То още може да ви следва и да вижда публикациите ви и няма да знае, че е заглушено.", + "report.next": "Напред", "report.placeholder": "Допълнителни коментари", "report.reasons.dislike": "Не ми харесва", "report.reasons.dislike_description": "Не е нещо, които искам да виждам", "report.reasons.other": "Нещо друго е", - "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.other_description": "Проблемът не попада в нито една от другите категории", "report.reasons.spam": "Спам е", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.spam_description": "Зловредни връзки, фалшиви взаимодействия, или повтарящи се отговори", "report.reasons.violation": "Нарушава правилата на сървъра", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", + "report.reasons.violation_description": "Знаете, че нарушава особени правила", + "report.rules.subtitle": "Изберете всичко, което да се прилага", "report.rules.title": "Кои правила са нарушени?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.statuses.subtitle": "Изберете всичко, което да се прилага", + "report.statuses.title": "Има ли някакви публикации, подкрепящи този доклад?", "report.submit": "Подаване", "report.target": "Докладване на {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.take_action": "Ето възможностите ви за управление какво виждате в Mastodon:", + "report.thanks.take_action_actionable": "Докато преглеждаме това, може да предприемете действие срещу @{name}:", "report.thanks.title": "Не искате ли да виждате това?", "report.thanks.title_actionable": "Благодарности за докладването, ще го прегледаме.", "report.unfollow": "Стоп на следването на @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report.unfollow_explanation": "Последвали сте този акаунт. За да не виждате повече публикациите му в началния си инфоканал, то спрете да го следвате.", + "report_notification.attached_statuses": "прикачено {count, plural, one {{count} публикация} other {{count} публикации}}", + "report_notification.categories.other": "Друго", + "report_notification.categories.spam": "Спам", + "report_notification.categories.violation": "Нарушение на правилото", + "report_notification.open": "Отваряне на доклада", "search.placeholder": "Търсене", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Търсене или поставяне на URL адрес", "search_popout.search_format": "Формат за разширено търсене", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.hashtag": "хаштаг", @@ -524,22 +524,22 @@ "search_popout.tips.text": "Обикновеният текст връща съответстващи показвани имена, потребителски имена и хаштагове", "search_popout.tips.user": "потребител", "search_results.accounts": "Хора", - "search_results.all": "All", + "search_results.all": "Всичко", "search_results.hashtags": "Хаштагове", "search_results.nothing_found": "Не може да се намери каквото и да било за тези термини при търсене", "search_results.statuses": "Публикации", "search_results.statuses_fts_disabled": "Търсенето на публикации по тяхното съдържание не е активирано за този Mastodon сървър.", - "search_results.title": "Search for {q}", + "search_results.title": "Търсене за {q}", "search_results.total": "{count, number} {count, plural, one {резултат} other {резултата}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Ползващите сървъра през последните 30 дни (дейните месечно потребители)", + "server_banner.active_users": "дейни потребители", + "server_banner.administered_by": "Администрира се от:", + "server_banner.introduction": "{domain} е част от децентрализираната социална мрежа, поддържана от {mastodon}.", + "server_banner.learn_more": "Научете повече", + "server_banner.server_stats": "Статистика на сървъра:", + "sign_in_banner.create_account": "Създаване на акаунт", + "sign_in_banner.sign_in": "Вход", + "sign_in_banner.text": "Влезте, за да последвате профили или хаштагове, любимо, споделяне и отговаряне на публикации или взаимодействие от акаунта ви на друг сървър.", "status.admin_account": "Отваряне на интерфейс за модериране за @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "Блокиране на @{name}", @@ -576,7 +576,7 @@ "status.reblogs.empty": "Все още никой не е споделил тази публикация. Когато някой го направи, ще се покаже тук.", "status.redraft": "Изтриване и преработване", "status.remove_bookmark": "Премахване на отметката", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Отговори на {name}", "status.reply": "Отговор", "status.replyAll": "Отговор на тема", "status.report": "Докладване на @{name}", @@ -587,15 +587,15 @@ "status.show_less_all": "Покажи по-малко за всички", "status.show_more": "Показване на повече", "status.show_more_all": "Показване на повече за всички", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Показване на първообраза", + "status.translate": "Превод", + "status.translated_from_with": "Преведено от {lang}, използвайки {provider}", "status.uncached_media_warning": "Не е налично", "status.unmute_conversation": "Раззаглушаване на разговор", "status.unpin": "Разкачане от профила", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", "subscribed_languages.save": "Запазване на промените", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.target": "Смяна на езика за {target}", "suggestions.dismiss": "Отхвърляне на предложение", "suggestions.header": "Може да се интересувате от…", "tabs_bar.federated_timeline": "Обединен", @@ -611,7 +611,7 @@ "timeline_hint.resources.followers": "Последователи", "timeline_hint.resources.follows": "Последвани", "timeline_hint.resources.statuses": "По-стари публикации", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} човек} other {{counter} души}} {days, plural, one {за последния {days} ден} other {за последните {days} дни}}", "trends.trending_now": "Налагащи се сега", "ui.beforeunload": "Черновата ви ще се загуби, ако излезете от Mastodon.", "units.short.billion": "{count}млрд", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 5521189248..c420bb929e 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -28,8 +28,8 @@ "account.edit_profile": "Kemmañ ar profil", "account.enable_notifications": "Ma c'hemenn pa vez embannet traoù gant @{name}", "account.endorse": "Lakaat war-wel war ar profil", - "account.featured_tags.last_status_at": "Kemennad diwezhañ : {date}", - "account.featured_tags.last_status_never": "Kemennad ebet", + "account.featured_tags.last_status_at": "Kannad diwezhañ : {date}", + "account.featured_tags.last_status_never": "Kannad ebet", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Heuliañ", "account.followers": "Tud koumanantet", @@ -57,7 +57,7 @@ "account.requested": "O c'hortoz an asant. Klikit evit nullañ ar goulenn heuliañ", "account.share": "Skignañ profil @{name}", "account.show_reblogs": "Diskouez skignadennoù @{name}", - "account.statuses_counter": "{count, plural, one {{counter} C'hemennad} two {{counter} Gemennad} other {{counter} a Gemennad}}", + "account.statuses_counter": "{count, plural, one {{counter} C'hannad} two {{counter} Gannad} other {{counter} a Gannadoù}}", "account.unblock": "Diverzañ @{name}", "account.unblock_domain": "Diverzañ an domani {domain}", "account.unblock_short": "Distankañ", @@ -102,7 +102,7 @@ "column.blocks": "Implijer·ezed·ien berzet", "column.bookmarks": "Sinedoù", "column.community": "Red-amzer lec'hel", - "column.direct": "Direct messages", + "column.direct": "Kemennad eeun", "column.directory": "Mont a-dreuz ar profiloù", "column.domain_blocks": "Domani berzet", "column.favourites": "Muiañ-karet", @@ -111,7 +111,7 @@ "column.lists": "Listennoù", "column.mutes": "Implijer·ion·ezed kuzhet", "column.notifications": "Kemennoù", - "column.pins": "Kemennadoù spilhennet", + "column.pins": "Kannadoù spilhennet", "column.public": "Red-amzer kevreet", "column_back_button.label": "Distro", "column_header.hide_settings": "Kuzhat an arventennoù", @@ -127,9 +127,9 @@ "compose.language.change": "Cheñch yezh", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h", - "compose_form.encryption_warning": "Kemennadoù war Mastodon na vezont ket sifret penn-da-benn. Na rannit ket titouroù kizidik dre Mastodon.", - "compose_form.hashtag_warning": "Ne vo ket listennet ar c'hemennad-mañ dindan gerioù-klik ebet dre m'eo anlistennet. N'eus nemet ar c'hemennadoù foran a c'hall bezañ klasket dre c'her-klik.", - "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal ho heuliañ evit gwelet ho kemennadoù prevez.", + "compose_form.encryption_warning": "Kannadoù war Mastodon na vezont ket sifret penn-da-benn. Na rannit ket titouroù kizidik dre Mastodon.", + "compose_form.hashtag_warning": "Ne vo ket listennet ar c'hannad-mañ dindan gerioù-klik ebet dre m'eo anlistennet. N'eus nemet ar c'hannadoù foran a c'hall bezañ klasket dre c'her-klik.", + "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal ho heuliañ evit gwelet ho kannadoù prevez.", "compose_form.lock_disclaimer.lock": "prennet", "compose_form.placeholder": "Petra emaoc'h o soñjal e-barzh ?", "compose_form.poll.add_option": "Ouzhpenniñ un dibab", @@ -154,7 +154,7 @@ "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Ha sur oc'h e fell deoc'h nullañ ho reked evit heuliañ {name} ?", "confirmations.delete.confirm": "Dilemel", - "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ ?", + "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hannad-mañ ?", "confirmations.delete_list.confirm": "Dilemel", "confirmations.delete_list.message": "Ha sur eo hoc'h eus c'hoant da zilemel ar roll-mañ da vat ?", "confirmations.discard_edit_media.confirm": "Nac'hañ", @@ -164,10 +164,10 @@ "confirmations.logout.confirm": "Digevreañ", "confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreañ ?", "confirmations.mute.confirm": "Kuzhat", - "confirmations.mute.explanation": "Kement-se a guzho ar c'hemennadoù skrivet gantañ·i hag ar re a veneg anezhañ·i, met ne viro ket outañ·i a welet ho kemennadoù nag a heuliañ ac'hanoc'h.", + "confirmations.mute.explanation": "Kement-se a guzho ar c'hannadoù skrivet gantañ·i hag ar re a veneg anezhañ·i, met ne viro ket outañ·i a welet ho kannadoù nag a heuliañ ac'hanoc'h.", "confirmations.mute.message": "Ha sur oc'h e fell deoc'h kuzhaat {name} ?", "confirmations.redraft.confirm": "Diverkañ ha skrivañ en-dro", - "confirmations.redraft.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ hag e adskrivañ ? Kollet e vo ar merkoù « muiañ-karet » hag ar skignadennoù, hag emzivat e vo ar respontoù d'ar c'hemennad orin.", + "confirmations.redraft.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hannad-mañ hag e adskrivañ ? Kollet e vo ar merkoù « muiañ-karet » hag ar skignadennoù, hag emzivat e vo ar respontoù d'ar c'hannad orin.", "confirmations.reply.confirm": "Respont", "confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?", "confirmations.unfollow.confirm": "Diheuliañ", @@ -184,13 +184,13 @@ "directory.recently_active": "Oberiant nevez zo", "disabled_account_banner.account_settings": "Account settings", "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "Setu kemennadoù foran nevesañ an dud a zo herberc’hiet o c'hontoù gant {domain}.", + "dismissable_banner.community_timeline": "Setu kannadoù foran nevesañ an dud a zo herberc’hiet o c'hontoù gant {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "Enframmit ar c'hemennad-mañ en ho lec'hienn en ur eilañ ar c'hod amañ-dindan.", + "embed.instructions": "Enframmit ar c'hannad-mañ en ho lec'hienn en ur eilañ ar c'hod amañ-dindan.", "embed.preview": "Setu penaos e teuio war wel :", "emoji_button.activity": "Obererezh", "emoji_button.clear": "Diverkañ", @@ -208,22 +208,22 @@ "emoji_button.symbols": "Arouezioù", "emoji_button.travel": "Lec'hioù ha Beajoù", "empty_column.account_suspended": "Kont ehanet", - "empty_column.account_timeline": "Kemennad ebet amañ !", + "empty_column.account_timeline": "Kannad ebet amañ !", "empty_column.account_unavailable": "Profil dihegerz", "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", - "empty_column.bookmarked_statuses": "N'ho peus kemennad ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", + "empty_column.bookmarked_statuses": "N'ho peus kannad ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !", "empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", - "empty_column.favourited_statuses": "N'ho peus kemennad muiañ-karet ebet c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", - "empty_column.favourites": "Den ebet n'eus lakaet ar c'hemennad-mañ en e reoù muiañ-karet c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.", + "empty_column.favourited_statuses": "N'ho peus kannad muiañ-karet ebet c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", + "empty_column.favourites": "Den ebet n'eus ouzhpennet ar c'hannad-mañ en e reoù muiañ-karet c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.", "empty_column.follow_recommendations": "Seblant a ra ne vez ket genelet damvenegoù evidoc'h. Gallout a rit implijout un enklask evit klask tud hag a vefe anavezet ganeoc'h pe ergerzhout gerioù-klik diouzh ar c'hiz.", "empty_column.follow_requests": "N'ho peus reked heuliañ ebet c'hoazh. Pa vo resevet unan e teuio war wel amañ.", "empty_column.hashtag": "N'eus netra er ger-klik-mañ c'hoazh.", "empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniñ {public} pe implijit ar c'hlask evit kregiñ ganti ha kejañ gant implijer·ien·ezed all.", "empty_column.home.suggestions": "Gwellout damvenegoù", - "empty_column.list": "Goullo eo ar roll-mañ evit c'hoazh. Pa vo embannet kemennadoù nevez gant e izili e teuint war wel amañ.", + "empty_column.list": "Goullo eo ar roll-mañ evit c'hoazh. Pa vo embannet kannadoù nevez gant e izili e teuint war wel amañ.", "empty_column.lists": "N'ho peus roll ebet c'hoazh. Pa vo krouet unan ganeoc'h e vo diskouezet amañ.", "empty_column.mutes": "N'ho peus kuzhet implijer ebet c'hoazh.", "empty_column.notifications": "N'ho peus kemenn ebet c'hoazh. Grit gant implijer·ezed·ien all evit loc'hañ ar gomz.", @@ -238,7 +238,7 @@ "explore.suggested_follows": "Evidoc'h", "explore.title": "Ergerzhit", "explore.trending_links": "Keleier", - "explore.trending_statuses": "Kemennadoù", + "explore.trending_statuses": "Kannadoù", "explore.trending_tags": "Gerioù-klik", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", @@ -247,18 +247,18 @@ "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filter settings", "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "Ar c'hemennad-mañ zo bet ouzhpennet d'ar rummad sil-mañ : {title}.", + "filter_modal.added.short_explanation": "Ar c'hannad-mañ zo bet ouzhpennet d'ar rummad sil-mañ : {title}.", "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", "filter_modal.select_filter.prompt_new": "New category: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Silañ ar c'hemennad-mañ", - "filter_modal.title.status": "Silañ ur c'hemennad", + "filter_modal.select_filter.title": "Silañ ar c'hannad-mañ", + "filter_modal.title.status": "Silañ ur c'hannad", "follow_recommendations.done": "Graet", - "follow_recommendations.heading": "Heuilhit tud a blijfe deoc'h lenn o c'hemennadoù ! Setu un nebeud erbedadennoù.", - "follow_recommendations.lead": "Kemennadoù gant tud a vez heuliet ganeoc'h a zeuio war wel en urzh kronologel war ho red degemer. Arabat kaout aon ober fazioù, diheuliañ tud a c'hellit ober aes ha forzh pegoulz !", + "follow_recommendations.heading": "Heuilhit tud a blijfe deoc'h lenn o c'hannadoù ! Setu un nebeud erbedadennoù.", + "follow_recommendations.lead": "Kannadoù gant tud a vez heuliet ganeoc'h a zeuio war wel en urzh kronologel war ho red degemer. Arabat kaout aon ober fazioù, diheuliañ tud a c'hellit ober aes ha forzh pegoulz !", "follow_request.authorize": "Aotren", "follow_request.reject": "Nac'hañ", "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", @@ -287,31 +287,31 @@ "home.column_settings.show_replies": "Diskouez ar respontoù", "home.hide_announcements": "Kuzhat ar c'hemennoù", "home.show_announcements": "Diskouez ar c'hemennoù", - "interaction_modal.description.favourite": "Gant ur gont Mastodon e c'hellit ouzhpennañ ar c'hemennad-mañ d'ho re vuiañ-karet evit lakaat an den en deus eñ skrivet da c'houzout e plij deoc'h hag e enrollañ evit diwezhatoc'h.", - "interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliañ {name} evit resev h·e gemennadoù war ho red degemer.", - "interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignañ ar c'hemennad-mañ evit rannañ anezhañ gant ho heulierien·ezed.", - "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'ar c'hemennad-mañ.", + "interaction_modal.description.favourite": "Gant ur gont Mastodon e c'hellit ouzhpennañ ar c'hannad-mañ d'ho re vuiañ-karet evit lakaat an den en deus eñ skrivet da c'houzout e plij deoc'h hag en enrollañ evit diwezhatoc'h.", + "interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliañ {name} evit resev h·e c'h·gannadoù war ho red degemer.", + "interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignañ ar c'hannad-mañ evit rannañ anezhañ gant ho heulierien·ezed.", + "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'ar c'hannad-mañ.", "interaction_modal.on_another_server": "War ur servijer all", "interaction_modal.on_this_server": "War ar servijer-mañ", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Ouzhpennañ kemennad {name} d'ar re vuiañ-karet", + "interaction_modal.title.favourite": "Ouzhpennañ kannad {name} d'ar re vuiañ-karet", "interaction_modal.title.follow": "Heuliañ {name}", - "interaction_modal.title.reblog": "Skignañ kemennad {name}", - "interaction_modal.title.reply": "Respont da gemennad {name}", + "interaction_modal.title.reblog": "Skignañ kannad {name}", + "interaction_modal.title.reply": "Respont da gannad {name}", "intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}", "intervals.full.hours": "{number, plural, one {# eurvezh} other{# eurvezh}}", "intervals.full.minutes": "{number, plural, one {# munut} other{# a vunutoù}}", "keyboard_shortcuts.back": "Distreiñ", "keyboard_shortcuts.blocked": "Digeriñ roll an implijer.ezed.rien stanket", - "keyboard_shortcuts.boost": "Skignañ ar c'hemennad", + "keyboard_shortcuts.boost": "Skignañ ar c'hannad", "keyboard_shortcuts.column": "Fokus ar bann", "keyboard_shortcuts.compose": "Fokus an takad testenn", "keyboard_shortcuts.description": "Deskrivadur", "keyboard_shortcuts.direct": "evit digeriñ bann ar c'hemennadoù eeun", "keyboard_shortcuts.down": "Diskennañ er roll", - "keyboard_shortcuts.enter": "Digeriñ ar c'hemennad", - "keyboard_shortcuts.favourite": "Ouzhpennañ ar c'hemennad d'ar re vuiañ-karet", + "keyboard_shortcuts.enter": "Digeriñ ar c'hannad", + "keyboard_shortcuts.favourite": "Ouzhpennañ ar c'hannad d'ar re vuiañ-karet", "keyboard_shortcuts.favourites": "Digeriñ roll an toudoù muiañ-karet", "keyboard_shortcuts.federated": "Digeriñ ar red-amzer kevreet", "keyboard_shortcuts.heading": "Berradennoù klavier", @@ -324,16 +324,16 @@ "keyboard_shortcuts.my_profile": "Digeriñ ho profil", "keyboard_shortcuts.notifications": "Digeriñ bann kemennoù", "keyboard_shortcuts.open_media": "Digeriñ ar media", - "keyboard_shortcuts.pinned": "Digeriñ roll ar c'hemennadoù spilhennet", + "keyboard_shortcuts.pinned": "Digeriñ roll ar c'hannadoù spilhennet", "keyboard_shortcuts.profile": "Digeriñ profil an aozer.ez", - "keyboard_shortcuts.reply": "Respont d'ar c'hemennad", + "keyboard_shortcuts.reply": "Respont d'ar c'hannad", "keyboard_shortcuts.requests": "Digeriñ roll goulennoù heuliañ", "keyboard_shortcuts.search": "Fokus barenn klask", "keyboard_shortcuts.spoilers": "da guzhat/ziguzhat tachenn CW", "keyboard_shortcuts.start": "Digeriñ bann \"Kregiñ\"", "keyboard_shortcuts.toggle_hidden": "da guzhat/ziguzhat an desten a-dreñv CW", "keyboard_shortcuts.toggle_sensitivity": "da guzhat/ziguzhat ur media", - "keyboard_shortcuts.toot": "Kregiñ gant ur c'hemennad nevez", + "keyboard_shortcuts.toot": "Kregiñ gant ur c'hannad nevez", "keyboard_shortcuts.unfocus": "Difokus an dachenn testenn/klask", "keyboard_shortcuts.up": "Pignat er roll", "lightbox.close": "Serriñ", @@ -369,7 +369,7 @@ "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", "navigation_bar.community_timeline": "Red-amzer lec'hel", - "navigation_bar.compose": "Skrivañ ur c'hemennad nevez", + "navigation_bar.compose": "Skrivañ ur c'hannad nevez", "navigation_bar.direct": "Kemennadoù prevez", "navigation_bar.discover": "Dizoleiñ", "navigation_bar.domain_blocks": "Domanioù kuzhet", @@ -383,7 +383,7 @@ "navigation_bar.logout": "Digennaskañ", "navigation_bar.mutes": "Implijer·ion·ezed kuzhet", "navigation_bar.personal": "Personel", - "navigation_bar.pins": "Kemennadoù spilhennet", + "navigation_bar.pins": "Kannadoù spilhennet", "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevreet", "navigation_bar.search": "Klask", @@ -391,15 +391,15 @@ "not_signed_in_indicator.not_signed_in": "Ret eo deoc'h kevreañ evit tizhout an danvez-se.", "notification.admin.report": "Disklêriet eo bet {target} gant {name}", "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", - "notification.favourite": "{name} en·he deus ouzhpennet ho kemennad d'h·e re vuiañ-karet", + "notification.favourite": "{name} en·he deus ouzhpennet ho kannad d'h·e re vuiañ-karet", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", "notification.follow_request": "{name} en/he deus goulennet da heuliañ ac'hanoc'h", "notification.mention": "{name} en/he deus meneget ac'hanoc'h", "notification.own_poll": "Echu eo ho sontadeg", "notification.poll": "Ur sontadeg ho deus mouezhet warnañ a zo echuet", - "notification.reblog": "{name} en·he deus skignet ho kemennad", + "notification.reblog": "{name} en·he deus skignet ho kannad", "notification.status": "{name} en·he deus embannet", - "notification.update": "{name} en·he deus kemmet ur c'hemennad", + "notification.update": "{name} en·he deus kemmet ur c'hannad", "notifications.clear": "Skarzhañ ar c'hemennoù", "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?", "notifications.column_settings.admin.report": "Disklêriadurioù nevez :", @@ -417,7 +417,7 @@ "notifications.column_settings.reblog": "Skignadennoù:", "notifications.column_settings.show": "Diskouez er bann", "notifications.column_settings.sound": "Seniñ", - "notifications.column_settings.status": "Kemennadoù nevez :", + "notifications.column_settings.status": "Kannadoù nevez :", "notifications.column_settings.unread_notifications.category": "Kemennoù n'int ket lennet", "notifications.column_settings.unread_notifications.highlight": "Usskediñ kemennoù nevez", "notifications.column_settings.update": "Kemmoù :", @@ -447,7 +447,7 @@ "poll.votes": "{votes, plural,one {#votadenn} other {# votadenn}}", "poll_button.add_poll": "Ouzhpennañ ur sontadeg", "poll_button.remove_poll": "Dilemel ar sontadeg", - "privacy.change": "Cheñch prevezded ar c'hemennad", + "privacy.change": "Cheñch prevezded ar c'hannad", "privacy.direct.long": "Embann evit an implijer·ezed·ien meneget hepken", "privacy.direct.short": "Tud meneget hepken", "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken", @@ -474,20 +474,20 @@ "relative_time.today": "hiziv", "reply_indicator.cancel": "Nullañ", "report.block": "Stankañ", - "report.block_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Ne welo ket ho kemennadoù ha ne c'hello ket ho heuliañ ken. Gouzout a raio eo bet stanket ganeoc'h.", + "report.block_explanation": "Ne vo ket gwelet kannadoù ar gont-se ken. Ne welo ket ho kemennadoù ha ne c'hello ket ho heuliañ ken. Gouzout a raio eo bet stanket ganeoc'h.", "report.categories.other": "All", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choazit ar pezh a glot ar gwellañ", "report.category.title": "Lârit deomp petra c'hoarvez gant {type}", "report.category.title_account": "profil", - "report.category.title_status": "ar c'hemennad-mañ", + "report.category.title_status": "ar c'hannad-mañ", "report.close": "Graet", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Treuzkas da: {target}", "report.forward_hint": "War ur servijer all emañ ar c'hont-se. Kas dezhañ un adskrid disanv eus an danevell ivez?", "report.mute": "Kuzhat", - "report.mute_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Gwelet ho kemennadoù ha ho heuliañ a c'hello ha ne ouezo ket eo bet kuzhet ganeoc'h.", + "report.mute_explanation": "Ne vo ket gwelet kannadoù ar gont-se ken. Gwelet ho kemennadoù ha ho heuliañ a c'hello ha ne ouezo ket eo bet kuzhet ganeoc'h.", "report.next": "War-raok", "report.placeholder": "Askelennoù ouzhpenn", "report.reasons.dislike": "Ne blij ket din", @@ -520,15 +520,15 @@ "search_popout.search_format": "Framm klask araokaet", "search_popout.tips.full_text": "Testenn simpl a adkas toudoù skrivet ganeoc'h, merket ganeoc'h evel miuañ-karet, toudoù skignet, pe e-lec'h oc'h bet meneget, met ivez anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot.", "search_popout.tips.hashtag": "ger-klik", - "search_popout.tips.status": "toud", + "search_popout.tips.status": "kannad", "search_popout.tips.text": "Testenn simpl a adkas anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot", "search_popout.tips.user": "implijer·ez", "search_results.accounts": "Tud", "search_results.all": "All", "search_results.hashtags": "Gerioù-klik", "search_results.nothing_found": "Could not find anything for these search terms", - "search_results.statuses": "a doudoù", - "search_results.statuses_fts_disabled": "Klask toudoù dre oc'h endalc'h n'eo ket aotreet war ar servijer-mañ.", + "search_results.statuses": "Kannadoù", + "search_results.statuses_fts_disabled": "Klask kannadoù dre oc'h endalc'h n'eo ket aotreet war ar servijer-mañ.", "search_results.title": "Search for {q}", "search_results.total": "{count, number} {count, plural, one {disoc'h} other {a zisoc'h}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", @@ -545,8 +545,8 @@ "status.block": "Berzañ @{name}", "status.bookmark": "Ouzhpennañ d'ar sinedoù", "status.cancel_reblog_private": "Nac'hañ ar skignadenn", - "status.cannot_reblog": "An toud-se ne c'hall ket bezañ skignet", - "status.copy": "Eilañ liamm an toud", + "status.cannot_reblog": "Ar c'hannad-se na c'hall ket bezañ skignet", + "status.copy": "Eilañ liamm ar c'hannad", "status.delete": "Dilemel", "status.detailed_status": "Gwel kaozeadenn munudek", "status.direct": "Kas ur c'hemennad prevez da @{name}", @@ -555,7 +555,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Enframmañ", "status.favourite": "Muiañ-karet", - "status.filter": "Filter this post", + "status.filter": "Silañ ar c'hannad-mañ", "status.filtered": "Silet", "status.hide": "Hide toot", "status.history.created": "Krouet gant {name} {date}", @@ -566,14 +566,14 @@ "status.more": "Muioc'h", "status.mute": "Kuzhat @{name}", "status.mute_conversation": "Kuzhat ar gaozeadenn", - "status.open": "Kreskaat an toud-mañ", + "status.open": "Digeriñ ar c'hannad-mañ", "status.pin": "Spilhennañ d'ar profil", - "status.pinned": "Toud spilhennet", + "status.pinned": "Kannad spilhennet", "status.read_more": "Lenn muioc'h", "status.reblog": "Skignañ", "status.reblog_private": "Skignañ gant ar weledenn gentañ", "status.reblogged_by": "{name} en/he deus skignet", - "status.reblogs.empty": "Den ebet n'eus skignet an toud-mañ c'hoazh. Pa vo graet gant unan bennak e vo diskouezet amañ.", + "status.reblogs.empty": "Den ebet n'eus skignet ar c'hannad-mañ c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.", "status.redraft": "Diverkañ ha skrivañ en-dro", "status.remove_bookmark": "Dilemel ar sined", "status.replied_to": "Replied to {name}", @@ -610,7 +610,7 @@ "timeline_hint.remote_resource_not_displayed": "{resource} eus servijerien all n'int ket skrammet.", "timeline_hint.resources.followers": "Heulier·ezed·ien", "timeline_hint.resources.follows": "Heuliañ", - "timeline_hint.resources.statuses": "Toudoù koshoc'h", + "timeline_hint.resources.statuses": "Kannadoù koshoc'h", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Luskad ar mare", "ui.beforeunload": "Kollet e vo ho prell ma kuitit Mastodon.", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 4cc1dc5f7b..3ac6a5d5f3 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Seguint}}", "account.follows.empty": "Aquest usuari encara no segueix ningú.", "account.follows_you": "Et segueix", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Anar al perfil", "account.hide_reblogs": "Amaga els impulsos de @{name}", "account.joined_short": "S'ha unit", "account.languages": "Canviar les llengües subscrits", @@ -105,7 +105,7 @@ "column.direct": "Missatges directes", "column.directory": "Navegar pels perfils", "column.domain_blocks": "Dominis bloquejats", - "column.favourites": "Favorits", + "column.favourites": "Preferits", "column.follow_requests": "Peticions per a seguir-te", "column.home": "Inici", "column.lists": "Llistes", @@ -167,7 +167,7 @@ "confirmations.mute.explanation": "Això amagarà les seves publicacions i les que els mencionen, però encara els permetrà veure les teves i seguir-te.", "confirmations.mute.message": "Segur que vols silenciar {name}?", "confirmations.redraft.confirm": "Esborra'l i reescriure-lo", - "confirmations.redraft.message": "Segur que vols esborrar aquesta publicació i tornar-la a escriure? Perdràs tots els impulsos i els favorits, i les respostes a la publicació original es quedaran orfes.", + "confirmations.redraft.message": "Segur que vols esborrar aquesta publicació i tornar-la a escriure? Perdràs tots els impulsos i els preferits, i les respostes a la publicació original es quedaran orfes.", "confirmations.reply.confirm": "Respon", "confirmations.reply.message": "Si respons ara, sobreescriuràs el missatge que estàs editant. Segur que vols continuar?", "confirmations.unfollow.confirm": "Deixa de seguir", @@ -182,14 +182,14 @@ "directory.local": "Només de {domain}", "directory.new_arrivals": "Arribades noves", "directory.recently_active": "Recentment actius", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "Aquests son els apunts més recents d'usuaris amb els seus comptes a {domain}.", + "disabled_account_banner.account_settings": "Paràmetres del compte", + "disabled_account_banner.text": "El teu compte {disabledAccount} està actualment desactivat.", + "dismissable_banner.community_timeline": "Aquestes són les publicacions més recents d'usuaris amb els seus comptes a {domain}.", "dismissable_banner.dismiss": "Ometre", "dismissable_banner.explore_links": "Aquests son els enllaços que els usuaris estan comentant ara mateix en aquest i altres servidors de la xarxa descentralitzada.", - "dismissable_banner.explore_statuses": "Aquests apunts d'aquest i altres servidors de la xarxa descentralitzada estan guanyant l'atenció ara mateix en aquest servidor.", + "dismissable_banner.explore_statuses": "Aquestes publicacions d'aquest i altres servidors de la xarxa descentralitzada estan guanyant l'atenció ara mateix en aquest servidor.", "dismissable_banner.explore_tags": "Aquestes etiquetes estan guanyant l'atenció ara mateix dels usuaris d'aquest i altres servidors de la xarxa descentralitzada.", - "dismissable_banner.public_timeline": "Aquests son els apunts més recents dels usuaris d'aquest i d'altres servidors de la xarxa descentralitzada que aquest servidor en té coneixement.", + "dismissable_banner.public_timeline": "Aquestes són les publicacions públiques més recents de persones en aquest i altres servidors de la xarxa descentralitzada que aquest servidor coneix.", "embed.instructions": "Incrusta aquesta publicació a la teva pàgina web copiant el codi següent.", "embed.preview": "Aquí està quin aspecte tindrà:", "emoji_button.activity": "Activitat", @@ -240,22 +240,22 @@ "explore.trending_links": "Notícies", "explore.trending_statuses": "Publicacions", "explore.trending_tags": "Etiquetes", - "filter_modal.added.context_mismatch_explanation": "Aquesta categoria del filtr no aplica al context en el que has accedit a aquest apunt. Si vols que l'apunt sigui filtrat també en aquest context, hauràs d'editar el filtre.", + "filter_modal.added.context_mismatch_explanation": "Aquesta categoria de filtre no s'aplica al context en què has accedit a aquesta publicació. Si també vols que la publicació es filtri en aquest context, hauràs d'editar el filtre.", "filter_modal.added.context_mismatch_title": "El context no coincideix!", "filter_modal.added.expired_explanation": "La categoria d'aquest filtre ha caducat, necesitaràs canviar la seva data de caducitat per a aplicar-la.", "filter_modal.added.expired_title": "Filtre caducat!", "filter_modal.added.review_and_configure": "Per a revisar i configurar aquesta categoria de filtre, ves a {settings_link}.", "filter_modal.added.review_and_configure_title": "Configuració del filtre", "filter_modal.added.settings_link": "pàgina de configuració", - "filter_modal.added.short_explanation": "Aquest apunt s'ha afegit a la següent categoria de filtre: {title}.", + "filter_modal.added.short_explanation": "Aquesta publicació s'ha afegit a la següent categoria de filtre: {title}.", "filter_modal.added.title": "Filtre afegit!", "filter_modal.select_filter.context_mismatch": "no aplica en aquest context", "filter_modal.select_filter.expired": "caducat", "filter_modal.select_filter.prompt_new": "Nova categoria: {name}", "filter_modal.select_filter.search": "Cerca o crea", "filter_modal.select_filter.subtitle": "Usa una categoria existent o crea una nova", - "filter_modal.select_filter.title": "Filtra aquest apunt", - "filter_modal.title.status": "Filtre un apunt", + "filter_modal.select_filter.title": "Filtra aquesta publicació", + "filter_modal.title.status": "Filtra una publicació", "follow_recommendations.done": "Fet", "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure les seves publicacions! Aquí hi ha algunes recomanacions.", "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", @@ -287,18 +287,18 @@ "home.column_settings.show_replies": "Mostra les respostes", "home.hide_announcements": "Amaga els anuncis", "home.show_announcements": "Mostra els anuncis", - "interaction_modal.description.favourite": "Amb un compte a Mastodon, pots afavorir aquest apunt per a deixar que l'autor sàpiga que t'ha agradat i desar-lo per més tard.", - "interaction_modal.description.follow": "Amb un compte a Mastodon, pots seguir a {name} per a rebre els seus apunts en la teva línia de temps Inici.", - "interaction_modal.description.reblog": "Amb un compte a Mastodon, pots impulsar aquest apunt per a compartir-lo amb els teus seguidors.", - "interaction_modal.description.reply": "Amb un compte a Mastodon, pots respondre aquest apunt.", + "interaction_modal.description.favourite": "Amb un compte a Mastodon, pots afavorir aquesta publicació perquè l'autor sàpiga que t'ha agradat i desar-la per a més endavant.", + "interaction_modal.description.follow": "Amb un compte a Mastodon, pots seguir a {name} per a rebre les seves publicacions en la teva línia de temps d'Inici.", + "interaction_modal.description.reblog": "Amb un compte a Mastodon, pots impulsar aquesta publicació per a compartir-la amb els teus seguidors.", + "interaction_modal.description.reply": "Amb un compte a Mastodon, pots respondre aquesta publicació.", "interaction_modal.on_another_server": "En un servidor diferent", "interaction_modal.on_this_server": "En aquest servidor", "interaction_modal.other_server_instructions": "Simplement còpia i enganxa aquesta URL en la barra de cerca de la teva aplicació preferida o en l'interfície web on tens sessió iniciada.", "interaction_modal.preamble": "Donat que Mastodon és descentralitzat, pots fer servir el teu compte existent a un altre servidor Mastodon o plataforma compatible si és que no tens compte en aquest.", - "interaction_modal.title.favourite": "Afavoreix l'apunt de {name}", + "interaction_modal.title.favourite": "Afavoreix la publicació de {name}", "interaction_modal.title.follow": "Segueix {name}", - "interaction_modal.title.reblog": "Impulsa l'apunt de {name}", - "interaction_modal.title.reply": "Respon l'apunt de {name}", + "interaction_modal.title.reblog": "Impulsa la publicació de {name}", + "interaction_modal.title.reply": "Respon a la publicació de {name}", "intervals.full.days": "{number, plural, one {# dia} other {# dies}}", "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Amaga imatge} other {Amaga imatges}}", "missing_indicator.label": "No s'ha trobat", "missing_indicator.sublabel": "Aquest recurs no s'ha trobat", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "El teu compte {disabledAccount} està actualment desactivat perquè l'has traslladat a {movedToAccount}.", "mute_modal.duration": "Durada", "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?", "mute_modal.indefinite": "Indefinit", @@ -391,7 +391,7 @@ "not_signed_in_indicator.not_signed_in": "Necessites registrar-te per a accedir aquest recurs.", "notification.admin.report": "{name} ha reportat {target}", "notification.admin.sign_up": "{name} s'ha registrat", - "notification.favourite": "{name} ha afavorit la teva publicació", + "notification.favourite": "a {name} li ha agradat la teva publicació", "notification.follow": "{name} et segueix", "notification.follow_request": "{name} ha sol·licitat seguir-te", "notification.mention": "{name} t'ha mencionat", @@ -539,7 +539,7 @@ "server_banner.server_stats": "Estadístiques del servidor:", "sign_in_banner.create_account": "Crea un compte", "sign_in_banner.sign_in": "Inicia sessió", - "sign_in_banner.text": "Inicia sessió per a seguir perfils o etiquetes, afavorir, compartir o respondre apunts, o interactuar des d'el teu compte amb un servidor diferent.", + "sign_in_banner.text": "Inicia la sessió per seguir perfils o etiquetes, afavorir, compartir i respondre a publicacions o interactuar des del teu compte en un servidor diferent.", "status.admin_account": "Obre l'interfície de moderació per a @{name}", "status.admin_status": "Obrir aquesta publicació a la interfície de moderació", "status.block": "Bloqueja @{name}", @@ -554,8 +554,8 @@ "status.edited": "Editat {date}", "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}", "status.embed": "Incrusta", - "status.favourite": "Favorit", - "status.filter": "Filtre aquest apunt", + "status.favourite": "Preferir", + "status.filter": "Filtra aquesta publicació", "status.filtered": "Filtrat", "status.hide": "Amaga publicació", "status.history.created": "{name} ha creat {date}", @@ -593,7 +593,7 @@ "status.uncached_media_warning": "No està disponible", "status.unmute_conversation": "No silenciïs la conversa", "status.unpin": "No fixis al perfil", - "subscribed_languages.lead": "Només els apunts en les llengües seleccionades apareixeran en le teves línies de temps Inici i llista després del canvi. No en seleccionis cap per a rebre apunts en totes les llengües.", + "subscribed_languages.lead": "Només les publicacions en les llengües seleccionades apareixeran en les teves línies de temps \"Inici\" i \"Llistes\" després del canvi. No en seleccionis cap per a rebre publicacions en totes les llengües.", "subscribed_languages.save": "Desa els canvis", "subscribed_languages.target": "Canvia les llengües subscrites per a {target}", "suggestions.dismiss": "Ignora el suggeriment", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index bda43adc1f..d48b3206a8 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Sledovaný} few {{counter} Sledovaní} many {{counter} Sledovaných} other {{counter} Sledovaných}}", "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows_you": "Sleduje vás", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Přejít na profil", "account.hide_reblogs": "Skrýt boosty od @{name}", "account.joined_short": "Připojen/a", "account.languages": "Změnit odebírané jazyky", @@ -182,8 +182,8 @@ "directory.local": "Pouze z domény {domain}", "directory.new_arrivals": "Nově příchozí", "directory.recently_active": "Nedávno aktivní", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Nastavení účtu", + "disabled_account_banner.text": "Váš účet {disabledAccount} je momentálně zakázán.", "dismissable_banner.community_timeline": "Toto jsou nejnovější veřejné příspěvky od lidí, jejichž účty hostuje {domain}.", "dismissable_banner.dismiss": "Odmítnout", "dismissable_banner.explore_links": "O těchto novinkách hovoří lidé na tomto a dalších serverech decentralizované sítě.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Skrýt obrázek} few {Skrýt obrázky} many {Skrýt obrázky} other {Skrýt obrázky}}", "missing_indicator.label": "Nenalezeno", "missing_indicator.sublabel": "Tento zdroj se nepodařilo najít", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálně zakázán, protože jste se přesunul/a na {movedToAccount}.", "mute_modal.duration": "Trvání", "mute_modal.hide_notifications": "Skrýt oznámení od tohoto uživatele?", "mute_modal.indefinite": "Neomezeně", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index f93ef1c815..fb00390e1f 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.blocks": "Gweinyddion sy'n cael eu cymedroli", + "about.contact": "Cyswllt:", + "about.disclaimer": "Mae Mastodon yn feddalwedd rhydd, cod agored ac o dan hawlfraint Mastodon gGmbH.", "about.domain_blocks.comment": "Rheswm", "about.domain_blocks.domain": "Parth", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.preamble": "Yn gyffredinol, mae Mastodon yn caniatáu i chi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.", + "about.domain_blocks.severity": "Difrifoldeb", + "about.domain_blocks.silenced.explanation": "Yn gyffredinol, fyddwch chi ddim yn gweld proffiliau a chynnwys o'r gweinydd hwn, oni bai eich bod yn chwilio'n benodol amdano neu yn ymuno drwy ei ddilyn.", "about.domain_blocks.silenced.title": "Tawelwyd", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.domain_blocks.suspended.explanation": "Ni fydd data o'r gweinydd hwn yn cael ei brosesu, ei storio na'i gyfnewid, gan wneud unrhyw ryngweithio neu gyfathrebu gyda defnyddwyr o'r gweinydd hwn yn amhosibl.", + "about.domain_blocks.suspended.title": "Ataliwyd", + "about.not_available": "Nid yw'r wybodaeth hwn wedi ei wneud ar gael ar y gweinydd hwn.", + "about.powered_by": "Cyfrwng cymdeithasol datganoledig wedi ei yrru gan {mastodon}", + "about.rules": "Rheolau'r gweinydd", "account.account_note_header": "Nodyn", "account.add_or_remove_from_list": "Ychwanegu neu Dileu o'r rhestrau", "account.badges.bot": "Bot", @@ -21,15 +21,15 @@ "account.block_domain": "Blocio parth {domain}", "account.blocked": "Blociwyd", "account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Tynnu nôl cais i ddilyn", "account.direct": "Neges breifat @{name}", "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", "account.domain_blocked": "Parth wedi ei flocio", "account.edit_profile": "Golygu proffil", "account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio", "account.endorse": "Arddangos ar fy mhroffil", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Y cofnod diwethaf ar {date}", + "account.featured_tags.last_status_never": "Dim postiadau", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Dilyn", "account.followers": "Dilynwyr", @@ -39,15 +39,15 @@ "account.following_counter": "{count, plural, one {{counter} yn Dilyn} other {{counter} yn Dilyn}}", "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", "account.follows_you": "Yn eich dilyn chi", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Mynd i'r proffil", "account.hide_reblogs": "Cuddio bwstiau o @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Ymunodd", + "account.languages": "Newid ieithoedd wedi tanysgrifio iddynt nhw", "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}", "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.", "account.media": "Cyfryngau", "account.mention": "Crybwyll @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "Mae {name} wedi nodi fod eu cyfrif newydd yn:", "account.mute": "Tawelu @{name}", "account.mute_notifications": "Cuddio hysbysiadau o @{name}", "account.muted": "Distewyd", @@ -78,27 +78,27 @@ "alert.unexpected.title": "Wps!", "announcement.announcement": "Cyhoeddiad", "attachments_list.unprocessed": "(heb eu prosesu)", - "audio.hide": "Hide audio", + "audio.hide": "Cuddio sain", "autosuggest_hashtag.per_week": "{count} yr wythnos", "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.copy_stacktrace": "Copïo'r adroddiad gwall", + "bundle_column_error.error.body": "Nid oedd modd cynhyrchu'r dudalen honno. Gall fod oherwydd gwall yn ein côd neu fater cydnawsedd porwr.", "bundle_column_error.error.title": "O na!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.body": "Bu gwall wrth geisio llwytho'r dudalen hon. Gall hyn fod oherwydd anhawster dros-dro gyda'ch cysylltiad gwe neu'r gweinydd hwn.", + "bundle_column_error.network.title": "Gwall rhwydwaith", "bundle_column_error.retry": "Ceisiwch eto", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Mynd nôl adref", + "bundle_column_error.routing.body": "Nid oedd modd canfod y dudalen honno. Ydych chi'n siŵr fod yr URL yn y bar cyfeiriad yn gywir?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Cau", "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", "bundle_modal_error.retry": "Ceiswich eto", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations.other_server_instructions": "Gan fod Mastodon yn ddatganoledig, gallwch greu cyfrif ar weinydd arall a dal i ryngweithio gyda hwn.", + "closed_registrations_modal.description": "Ar hyn o bryd nid yw'n bosib creu cyfrif ar {domain}, ond cadwch mewn cof nad oes raid i chi gael cyfrif yn benodol ar {domain} i ddefnyddio Mastodon.", + "closed_registrations_modal.find_another_server": "Dod o hyd i weinydd arall", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "column.about": "Ynghylch", "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Tudalnodau", "column.community": "Ffrwd lleol", @@ -176,16 +176,16 @@ "conversation.mark_as_read": "Nodi fel wedi'i ddarllen", "conversation.open": "Gweld sgwrs", "conversation.with": "Gyda {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Wedi ei gopïo", + "copypaste.copy": "Copïo", "directory.federated": "O'r ffedysawd cyfan", "directory.local": "O {domain} yn unig", "directory.new_arrivals": "Newydd-ddyfodiaid", "directory.recently_active": "Yn weithredol yn ddiweddar", "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "disabled_account_banner.text": "Mae eich cyfrif {disabledAccount} wedi ei analluogi ar hyn o bryd.", + "dismissable_banner.community_timeline": "Dyma'r postiadau cyhoeddus diweddaraf gan bobl y caiff eu cyfrifon eu cynnal ar {domain}.", + "dismissable_banner.dismiss": "Diystyru", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -193,7 +193,7 @@ "embed.instructions": "Gosodwch y post hwn ar eich gwefan drwy gopïo'r côd isod.", "embed.preview": "Dyma sut olwg fydd arno:", "emoji_button.activity": "Gweithgarwch", - "emoji_button.clear": "Clir", + "emoji_button.clear": "Clirio", "emoji_button.custom": "Unigryw", "emoji_button.flags": "Baneri", "emoji_button.food": "Bwyd a Diod", @@ -251,8 +251,8 @@ "filter_modal.added.title": "Filter added!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.prompt_new": "Categori newydd: {name}", + "filter_modal.select_filter.search": "Chwilio neu greu", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", @@ -262,12 +262,12 @@ "follow_request.authorize": "Caniatau", "follow_request.reject": "Gwrthod", "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", - "footer.about": "About", - "footer.directory": "Profiles directory", + "footer.about": "Ynghylch", + "footer.directory": "Cyfeiriadur proffiliau", "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.invite": "Gwahodd pobl", + "footer.keyboard_shortcuts": "Bysellau brys", + "footer.privacy_policy": "Polisi preifatrwydd", "footer.source_code": "View source code", "generic.saved": "Wedi'i Gadw", "getting_started.heading": "Dechrau", @@ -291,14 +291,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "Ar weinydd gwahanol", + "interaction_modal.on_this_server": "Ar y gweinydd hwn", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.favourite": "Hoffi post {name}", + "interaction_modal.title.follow": "Dilyn {name}", + "interaction_modal.title.reblog": "Hybu post {name}", + "interaction_modal.title.reply": "Ymateb i bost {name}", "intervals.full.days": "{number, plural, one {# dydd} two {# ddydd} other {# o ddyddiau}}", "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}", "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}", @@ -341,8 +341,8 @@ "lightbox.expand": "Ehangu blwch gweld delwedd", "lightbox.next": "Nesaf", "lightbox.previous": "Blaenorol", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.action": "Dangos y proffil beth bynnag", + "limited_account_hint.title": "Mae'r proffil hwn wedi cael ei guddio gan arolygwyr {domain}.", "lists.account.add": "Ychwanegwch at restr", "lists.account.remove": "Dileu o'r rhestr", "lists.delete": "Dileu rhestr", @@ -365,7 +365,7 @@ "mute_modal.duration": "Hyd", "mute_modal.hide_notifications": "Cuddio hysbysiadau rhag y defnyddiwr hwn?", "mute_modal.indefinite": "Amhenodol", - "navigation_bar.about": "About", + "navigation_bar.about": "Ynghylch", "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", "navigation_bar.bookmarks": "Tudalnodau", "navigation_bar.community_timeline": "Ffrwd leol", @@ -386,10 +386,10 @@ "navigation_bar.pins": "Postiadau wedi eu pinio", "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", - "navigation_bar.search": "Search", + "navigation_bar.search": "Chwilio", "navigation_bar.security": "Diogelwch", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "notification.admin.report": "Adroddodd {name} {target}", "notification.admin.sign_up": "Cofrestrodd {name}", "notification.favourite": "Hoffodd {name} eich post", "notification.follow": "Dilynodd {name} chi", @@ -456,8 +456,8 @@ "privacy.public.short": "Cyhoeddus", "privacy.unlisted.long": "Gweladwy i bawb, ond wedi optio allan o nodweddion darganfod", "privacy.unlisted.short": "Heb ei restru", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Diweddarwyd ddiwethaf ar {date}", + "privacy_policy.title": "Polisi preifatrwydd", "refresh": "Adnewyddu", "regeneration_indicator.label": "Llwytho…", "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!", @@ -495,7 +495,7 @@ "report.reasons.other": "Mae'n rhywbeth arall", "report.reasons.other_description": "Nid yw'r mater yn ffitio i gategorïau eraill", "report.reasons.spam": "Sothach yw e", - "report.reasons.spam_description": "Cysylltiadau maleisus, ymgysylltu ffug, neu atebion ailadroddus", + "report.reasons.spam_description": "Dolenni maleisus, ymgysylltu ffug, neu ymatebion ailadroddus", "report.reasons.violation": "Mae'n torri rheolau'r gweinydd", "report.reasons.violation_description": "Rydych yn ymwybodol ei fod yn torri rheolau penodol", "report.rules.subtitle": "Dewiswch bob un sy'n berthnasol", @@ -529,16 +529,16 @@ "search_results.nothing_found": "Methu dod o hyd i unrhyw beth ar gyfer y termau chwilio hyn", "search_results.statuses": "Postiadau", "search_results.statuses_fts_disabled": "Nid yw chwilio postiadau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.", - "search_results.title": "Search for {q}", + "search_results.title": "Chwilio am {q}", "search_results.total": "{count, number} {count, plural, zero {canlyniad} one {canlyniad} two {ganlyniad} other {o ganlyniadau}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "server_banner.administered_by": "Gweinyddir gan:", + "server_banner.introduction": "Mae {domain} yn rhan o'r rhwydwaith cymdeithasol datganoledig a bwerir gan {mastodon}.", + "server_banner.learn_more": "Dysgu mwy", + "server_banner.server_stats": "Ystagedau'r gweinydd:", + "sign_in_banner.create_account": "Creu cyfrif", + "sign_in_banner.sign_in": "Mewngofnodi", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}", "status.admin_status": "Agor y post hwn yn y rhyngwyneb goruwchwylio", @@ -582,19 +582,19 @@ "status.report": "Adrodd @{name}", "status.sensitive_warning": "Cynnwys sensitif", "status.share": "Rhannu", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Dangos beth bynnag", "status.show_less": "Dangos llai", "status.show_less_all": "Dangos llai i bawb", "status.show_more": "Dangos mwy", "status.show_more_all": "Dangos mwy i bawb", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Dangos y gwreiddiol", + "status.translate": "Cyfieithu", + "status.translated_from_with": "Cyfieithwyd o {lang} gan ddefnyddio {provider}", "status.uncached_media_warning": "Dim ar gael", "status.unmute_conversation": "Dad-dawelu sgwrs", "status.unpin": "Dadbinio o'r proffil", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.lead": "Dim ond postiadau mewn ieithoedd dethol fydd yn ymddangos yn eich ffrydiau ar ôl y newid. Dewiswch ddim byd i dderbyn postiadau ym mhob iaith.", + "subscribed_languages.save": "Cadw'r newidiadau", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Diswyddo", "suggestions.header": "Efallai y bydd gennych ddiddordeb mewn…", @@ -639,7 +639,7 @@ "upload_modal.preparing_ocr": "Paratoi OCR…", "upload_modal.preview_label": "Rhagolwg ({ratio})", "upload_progress.label": "Uwchlwytho...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Wrthi'n prosesu…", "video.close": "Cau fideo", "video.download": "Lawrlwytho ffeil", "video.exit_fullscreen": "Gadael sgrîn llawn", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index cf6179ad14..88ece14792 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Følges} other {{counter} Følges}}", "account.follows.empty": "Denne bruger følger ikke nogen endnu.", "account.follows_you": "Følger dig", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Gå til profil", "account.hide_reblogs": "Skjul boosts fra @{name}", "account.joined_short": "Oprettet", "account.languages": "Skift abonnementssprog", @@ -182,8 +182,8 @@ "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nyligt aktive", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Kontoindstillinger", + "disabled_account_banner.text": "Din konto {disabledAccount} er pt. deaktiveret.", "dismissable_banner.community_timeline": "Disse er de seneste offentlige indlæg fra personer med konti hostes af {domain}.", "dismissable_banner.dismiss": "Afvis", "dismissable_banner.explore_links": "Der tales lige nu om disse nyhedshistorier af folk på denne og andre servere i det decentraliserede netværk.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Skjul billede} other {Skjul billeder}}", "missing_indicator.label": "Ikke fundet", "missing_indicator.sublabel": "Denne ressource kunne ikke findes", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Din konto {disabledAccount} er pt. deaktiveret, da du flyttede til {movedToAccount}.", "mute_modal.duration": "Varighed", "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?", "mute_modal.indefinite": "Tidsubegrænset", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index ee5073211b..10e33f2a93 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -39,10 +39,10 @@ "account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}", "account.follows.empty": "Dieses Profil folgt noch niemandem.", "account.follows_you": "Folgt dir", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Profil öffnen", "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen", "account.joined_short": "Beigetreten", - "account.languages": "Abonnierte Sprachen ändern", + "account.languages": "Genutzte Sprachen überarbeiten", "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt", "account.locked_info": "Der Privatsphärenstatus dieses Kontos wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", "account.media": "Medien", @@ -182,8 +182,8 @@ "directory.local": "Nur von der Domain {domain}", "directory.new_arrivals": "Neue Profile", "directory.recently_active": "Kürzlich aktiv", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Kontoeinstellungen", + "disabled_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert.", "dismissable_banner.community_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen, deren Konten von {domain} gehostet werden.", "dismissable_banner.dismiss": "Ablehnen", "dismissable_banner.explore_links": "Diese Nachrichten werden gerade von Leuten auf diesem und anderen Servern des dezentralen Netzwerks besprochen.", @@ -247,17 +247,17 @@ "filter_modal.added.review_and_configure": "Um diese Filterkategorie zu überprüfen und weiter zu konfigurieren, gehe zu {settings_link}.", "filter_modal.added.review_and_configure_title": "Filtereinstellungen", "filter_modal.added.settings_link": "Einstellungsseite", - "filter_modal.added.short_explanation": "Dieser Post wurde zu folgender Filterkategorie hinzugefügt: {title}.", + "filter_modal.added.short_explanation": "Dieser Post wurde folgender Filterkategorie hinzugefügt: {title}.", "filter_modal.added.title": "Filter hinzugefügt!", "filter_modal.select_filter.context_mismatch": "gilt nicht für diesen Kontext", "filter_modal.select_filter.expired": "abgelaufen", "filter_modal.select_filter.prompt_new": "Neue Kategorie: {name}", - "filter_modal.select_filter.search": "Suchen oder Erstellen", + "filter_modal.select_filter.search": "Suchen oder erstellen", "filter_modal.select_filter.subtitle": "Eine existierende Kategorie benutzen oder eine erstellen", "filter_modal.select_filter.title": "Diesen Beitrag filtern", "filter_modal.title.status": "Einen Beitrag filtern", "follow_recommendations.done": "Fertig", - "follow_recommendations.heading": "Folge Leuten, von denen du Beiträge sehen möchtest! Hier sind einige Vorschläge.", + "follow_recommendations.heading": "Folge Leuten, deren Beiträge du sehen möchtest! Hier sind einige Vorschläge.", "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!", "follow_request.authorize": "Erlauben", "follow_request.reject": "Ablehnen", @@ -287,10 +287,10 @@ "home.column_settings.show_replies": "Antworten anzeigen", "home.hide_announcements": "Ankündigungen verbergen", "home.show_announcements": "Ankündigungen anzeigen", - "interaction_modal.description.favourite": "Mit einem Account auf Mastodon können Sie diesen Beitrag favorisieren, um dem Autor mitzuteilen, dass Sie den Beitrag schätzen und ihn für einen späteren Zeitpunkt speichern.", + "interaction_modal.description.favourite": "Mit einem Account auf Mastodon kannst du diesen Beitrag favorisieren, um deine Wertschätzung auszudrücken, und ihn für einen späteren Zeitpunkt speichern.", "interaction_modal.description.follow": "Mit einem Konto auf Mastodon kannst du {name} folgen, um seine Beiträge in deinem Home Feed zu erhalten.", "interaction_modal.description.reblog": "Mit einem Mastodon-Account kannst du die Reichweite dieses Beitrags erhöhen, in dem du ihn mit deinen eigenen Followern teilst.", - "interaction_modal.description.reply": "Mit einem Account auf Mastodon können Sie auf diesen Beitrag antworten.", + "interaction_modal.description.reply": "Mit einem Account auf Mastodon kannst du auf diesen Beitrag antworten.", "interaction_modal.on_another_server": "Auf einem anderen Server", "interaction_modal.on_this_server": "Auf diesem Server", "interaction_modal.other_server_instructions": "Kopiere einfach diese URL und füge sie in die Suchleiste deiner Lieblings-App oder in die Weboberfläche, in der du angemeldet bist, ein.", @@ -304,12 +304,12 @@ "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}", "keyboard_shortcuts.back": "Zurück navigieren", "keyboard_shortcuts.blocked": "Liste blockierter Profile öffnen", - "keyboard_shortcuts.boost": "teilen", + "keyboard_shortcuts.boost": "Beitrag teilen", "keyboard_shortcuts.column": "einen Beitrag in einer der Spalten fokussieren", "keyboard_shortcuts.compose": "fokussiere das Eingabefeld", "keyboard_shortcuts.description": "Beschreibung", "keyboard_shortcuts.direct": "um die Spalte mit den Direktnachrichten zu öffnen", - "keyboard_shortcuts.down": "sich in der Liste hinunter bewegen", + "keyboard_shortcuts.down": "In der Liste nach unten bewegen", "keyboard_shortcuts.enter": "Beitrag öffnen", "keyboard_shortcuts.favourite": "favorisieren", "keyboard_shortcuts.favourites": "Favoriten-Liste öffnen", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Bild verbergen} other {Bilder verbergen}}", "missing_indicator.label": "Nicht gefunden", "missing_indicator.sublabel": "Die Ressource konnte nicht gefunden werden", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert, weil du zu {movedToAccount} umgezogen bist.", "mute_modal.duration": "Dauer", "mute_modal.hide_notifications": "Benachrichtigungen von diesem Profil verbergen?", "mute_modal.indefinite": "Unbestimmt", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 15b506a1c9..fe88710934 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Ακολουθεί}}", "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.", "account.follows_you": "Σε ακολουθεί", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Μετάβαση στο προφίλ", "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}", "account.joined_short": "Joined", "account.languages": "Change subscribed languages", @@ -182,7 +182,7 @@ "directory.local": "Μόνο από {domain}", "directory.new_arrivals": "Νέες αφίξεις", "directory.recently_active": "Πρόσφατα ενεργοί", - "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.account_settings": "Ρυθμίσεις λογαριασμού", "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Παράβλεψη", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 971be524b4..36af2ad49c 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -4,14 +4,14 @@ "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.comment": "Reason", "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the Fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspended", "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.powered_by": "Decentralised social media powered by {mastodon}", "about.rules": "Server rules", "account.account_note_header": "Note", "account.add_or_remove_from_list": "Add or Remove from lists", @@ -111,7 +111,7 @@ "column.lists": "Lists", "column.mutes": "Muted users", "column.notifications": "Notifications", - "column.pins": "Pinned post", + "column.pins": "Pinned posts", "column.public": "Federated timeline", "column_back_button.label": "Back", "column_header.hide_settings": "Hide settings", @@ -122,16 +122,16 @@ "column_header.unpin": "Unpin", "column_subheading.settings": "Settings", "community.column_settings.local_only": "Local only", - "community.column_settings.media_only": "Media only", + "community.column_settings.media_only": "Media Only", "community.column_settings.remote_only": "Remote only", "compose.language.change": "Change language", "compose.language.search": "Search languages...", "compose_form.direct_message_warning_learn_more": "Learn more", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any sensitive information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", - "compose_form.placeholder": "What is on your mind?", + "compose_form.placeholder": "What's on your mind?", "compose_form.poll.add_option": "Add a choice", "compose_form.poll.duration": "Poll duration", "compose_form.poll.option_placeholder": "Choice {number}", @@ -144,8 +144,8 @@ "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", - "compose_form.spoiler.marked": "Text is hidden behind warning", - "compose_form.spoiler.unmarked": "Text is not hidden", + "compose_form.spoiler.marked": "Remove content warning", + "compose_form.spoiler.unmarked": "Add content warning", "compose_form.spoiler_placeholder": "Write your warning here", "confirmation_modal.cancel": "Cancel", "confirmations.block.block_and_report": "Block & Report", @@ -154,7 +154,7 @@ "confirmations.cancel_follow_request.confirm": "Withdraw request", "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", "confirmations.delete.confirm": "Delete", - "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete.message": "Are you sure you want to delete this post?", "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.discard_edit_media.confirm": "Discard", @@ -208,7 +208,7 @@ "emoji_button.symbols": "Symbols", "emoji_button.travel": "Travel & Places", "empty_column.account_suspended": "Account suspended", - "empty_column.account_timeline": "No posts found", + "empty_column.account_timeline": "No posts here!", "empty_column.account_unavailable": "Profile unavailable", "empty_column.blocks": "You haven't blocked any users yet.", "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index b1ba1d8b1a..cec8eb73a3 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -3,13 +3,13 @@ "about.contact": "Kontakto:", "about.disclaimer": "Mastodon estas libera, malfermitkoda programaro kaj varmarko de la firmao Mastodon gGmbH.", "about.domain_blocks.comment": "Kialo", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.domain": "Domajno", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.severity": "Graveco", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.explanation": "Vi ne ĝenerale vidos profilojn kaj enhavojn de ĉi tiu servilo, krom se vi eksplice trovas aŭ estas permesita de via sekvato.", + "about.domain_blocks.silenced.title": "Limigita", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.title": "Suspendita", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", "about.rules": "Reguloj de la servilo", @@ -28,7 +28,7 @@ "account.edit_profile": "Redakti la profilon", "account.enable_notifications": "Sciigi min, kiam @{name} mesaĝas", "account.endorse": "Rekomendi ĉe via profilo", - "account.featured_tags.last_status_at": "Last post on {date}", + "account.featured_tags.last_status_at": "Lasta afîŝo je {date}", "account.featured_tags.last_status_never": "Neniuj afiŝoj", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Sekvi", @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Sekvado} other {{counter} Sekvadoj}}", "account.follows.empty": "La uzanto ankoraŭ ne sekvas iun ajn.", "account.follows_you": "Sekvas vin", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Iri al profilo", "account.hide_reblogs": "Kaŝi la plusendojn de @{name}", "account.joined_short": "Aliĝis", "account.languages": "Change subscribed languages", @@ -81,13 +81,13 @@ "audio.hide": "Kaŝi aŭdion", "autosuggest_hashtag.per_week": "{count} semajne", "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje", - "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.copy_stacktrace": "Kopii la raporto de error", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", "bundle_column_error.error.title": "Ho, ne!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Eraro de reto", "bundle_column_error.retry": "Provu refoje", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Reveni al la hejmo", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermi", @@ -95,9 +95,9 @@ "bundle_modal_error.retry": "Provu refoje", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "Trovi alian servilon", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.title": "Registri en Mastodon", "column.about": "Pri", "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", @@ -182,10 +182,10 @@ "directory.local": "Nur de {domain}", "directory.new_arrivals": "Novaj alvenoj", "directory.recently_active": "Lastatempe aktiva", - "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.account_settings": "Konto-agordoj", "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "Eksigi", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -241,21 +241,21 @@ "explore.trending_statuses": "Afiŝoj", "explore.trending_tags": "Kradvortoj", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", + "filter_modal.added.context_mismatch_title": "Ne kongruas la kunteksto!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "Eksvalida filtrilo!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filtrilopcioj", "filter_modal.added.settings_link": "opciopaĝo", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", + "filter_modal.added.title": "Filtrilo aldonita!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "eksvalidiĝinta", "filter_modal.select_filter.prompt_new": "Nova klaso: {name}", "filter_modal.select_filter.search": "Serĉi aŭ krei", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filtri ĉi afiŝo", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.title": "Filtri ĉi tiun afiŝon", + "filter_modal.title.status": "Filtri mesaĝon", "follow_recommendations.done": "Farita", "follow_recommendations.heading": "Sekvi la personojn kies mesaĝojn vi volas vidi! Jen iom da sugestoj.", "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, aperos laŭ kronologia ordo en via hejma templinio. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!", @@ -263,11 +263,11 @@ "follow_request.reject": "Rifuzi", "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensas, ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.", "footer.about": "Pri", - "footer.directory": "Profiles directory", + "footer.directory": "Profilujo", "footer.get_app": "Akiru la Programon", "footer.invite": "Inviti homojn", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.keyboard_shortcuts": "Fulmoklavoj", + "footer.privacy_policy": "Politiko de privateco", "footer.source_code": "Montri fontkodon", "generic.saved": "Konservita", "getting_started.heading": "Por komenci", @@ -291,14 +291,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "En alia servilo", + "interaction_modal.on_this_server": "En ĉi tiu servilo", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.favourite": "Aldoni afiŝon de {name} al la preferaĵoj", + "interaction_modal.title.follow": "Sekvi {name}", + "interaction_modal.title.reblog": "Suprenigi la afiŝon de {name}", + "interaction_modal.title.reply": "Respondi al la afiŝo de {name}", "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}", "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}", @@ -311,8 +311,8 @@ "keyboard_shortcuts.direct": "malfermi la kolumnon de rektaj mesaĝoj", "keyboard_shortcuts.down": "iri suben en la listo", "keyboard_shortcuts.enter": "malfermi mesaĝon", - "keyboard_shortcuts.favourite": "Aldoni la mesaĝon al preferaĵoj", - "keyboard_shortcuts.favourites": "Malfermi la liston de preferaĵoj", + "keyboard_shortcuts.favourite": "Aldoni la mesaĝon al la preferaĵoj", + "keyboard_shortcuts.favourites": "Malfermi la liston de la preferaĵoj", "keyboard_shortcuts.federated": "Malfermi la frataran templinion", "keyboard_shortcuts.heading": "Klavaraj mallongigoj", "keyboard_shortcuts.home": "Malfermi la hejman templinion", @@ -365,7 +365,7 @@ "mute_modal.duration": "Daŭro", "mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?", "mute_modal.indefinite": "Nedifinita", - "navigation_bar.about": "About", + "navigation_bar.about": "Pri", "navigation_bar.blocks": "Blokitaj uzantoj", "navigation_bar.bookmarks": "Legosignoj", "navigation_bar.community_timeline": "Loka templinio", @@ -386,7 +386,7 @@ "navigation_bar.pins": "Alpinglitaj mesaĝoj", "navigation_bar.preferences": "Preferoj", "navigation_bar.public_timeline": "Fratara templinio", - "navigation_bar.search": "Search", + "navigation_bar.search": "Serĉi", "navigation_bar.security": "Sekureco", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} raportis {target}", @@ -457,7 +457,7 @@ "privacy.unlisted.long": "Videbla por ĉiuj, sed ekskluzive de la funkcio de esploro", "privacy.unlisted.short": "Nelistigita", "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.title": "Politiko de privateco", "refresh": "Refreŝigu", "regeneration_indicator.label": "Ŝargado…", "regeneration_indicator.sublabel": "Via abonfluo estas preparata!", @@ -555,7 +555,7 @@ "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}", "status.embed": "Enkorpigi", "status.favourite": "Aldoni al viaj preferaĵoj", - "status.filter": "Filtri ĉi afiŝo", + "status.filter": "Filtri ĉi tiun afiŝon", "status.filtered": "Filtrita", "status.hide": "Kaŝi la mesaĝon", "status.history.created": "{name} kreis {date}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 1005256be3..0717d45ab6 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Todavía este usuario no sigue a nadie.", "account.follows_you": "Te sigue", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Ir al perfil", "account.hide_reblogs": "Ocultar adhesiones de @{name}", "account.joined_short": "En este servidor desde", "account.languages": "Cambiar idiomas suscritos", @@ -182,8 +182,8 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activos", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Config. de la cuenta", + "disabled_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada.", "dismissable_banner.community_timeline": "Estos son los mensajes públicos más recientes de cuentas alojadas en {domain}.", "dismissable_banner.dismiss": "Descartar", "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada ahora mismo.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Ocultar {number, plural, one {imagen} other {imágenes}}", "missing_indicator.label": "No se encontró", "missing_indicator.sublabel": "No se encontró este recurso", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te mudaste a {movedToAccount}.", "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "¿Querés ocultar las notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 12779161ea..a01bf0c040 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -47,7 +47,7 @@ "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.media": "Multimedia", "account.mention": "Mencionar @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "{name} ha indicado que su nueva cuenta es ahora:", "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index f9578ae9d5..133ee0792b 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Ir al perfil", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined_short": "Se unió", "account.languages": "Cambiar idiomas suscritos", @@ -182,8 +182,8 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activo", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Ajustes de la cuenta", + "disabled_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada.", "dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de personas cuyas cuentas están alojadas en {domain}.", "dismissable_banner.dismiss": "Descartar", "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada en este momento.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Cambiar visibilidad", "missing_indicator.label": "No encontrado", "missing_indicator.sublabel": "No se encontró este recurso", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.", "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index b5a05f17fa..7a03798c3b 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} seuraa} other {{counter} seuraa}}", "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", "account.follows_you": "Seuraa sinua", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Mene profiiliin", "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}", "account.joined_short": "Liittynyt", "account.languages": "Vaihda tilattuja kieliä", @@ -47,7 +47,7 @@ "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.", "account.media": "Media", "account.mention": "Mainitse @{name}", - "account.moved_to": "{name} on ilmoittanut, että heidän uusi tilinsä on nyt:", + "account.moved_to": "{name} on ilmoittanut uudeksi tilikseen", "account.mute": "Mykistä @{name}", "account.mute_notifications": "Mykistä ilmoitukset käyttäjältä @{name}", "account.muted": "Mykistetty", @@ -164,7 +164,7 @@ "confirmations.logout.confirm": "Kirjaudu ulos", "confirmations.logout.message": "Oletko varma, että haluat kirjautua ulos?", "confirmations.mute.confirm": "Mykistä", - "confirmations.mute.explanation": "Tämä piilottaa heidän julkaisut ja julkaisut, joissa heidät mainitaan, mutta sallii edelleen heidän nähdä julkaisusi ja seurata sinua.", + "confirmations.mute.explanation": "Tämä toiminto piilottaa heidän julkaisunsa sinulta – mukaan lukien ne, joissa heidät mainitaan – sallien heidän yhä nähdä julkaisusi ja seurata sinua.", "confirmations.mute.message": "Haluatko varmasti mykistää käyttäjän {name}?", "confirmations.redraft.confirm": "Poista & palauta muokattavaksi", "confirmations.redraft.message": "Oletko varma että haluat poistaa tämän julkaisun ja tehdä siitä uuden luonnoksen? Suosikit ja buustaukset menetään, alkuperäisen julkaisusi vastaukset jäävät orvoiksi.", @@ -182,8 +182,8 @@ "directory.local": "Vain palvelimelta {domain}", "directory.new_arrivals": "Äskettäin saapuneet", "directory.recently_active": "Hiljattain aktiiviset", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Tilin asetukset", + "disabled_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä.", "dismissable_banner.community_timeline": "Nämä ovat uusimmat julkiset viestit ihmisiltä, joiden tilejä isännöi {domain}.", "dismissable_banner.dismiss": "Hylkää", "dismissable_banner.explore_links": "Näistä uutisista puhuvat ihmiset juuri nyt tällä ja muilla hajautetun verkon palvelimilla.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Piilota kuva} other {Piilota kuvat}}", "missing_indicator.label": "Ei löytynyt", "missing_indicator.sublabel": "Tätä resurssia ei löytynyt", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä, koska teit siirron tiliin {movedToAccount}.", "mute_modal.duration": "Kesto", "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?", "mute_modal.indefinite": "Ikuisesti", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 0d8bad817e..421041e6d0 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Abonnement} other {{counter} Abonnements}}", "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.", "account.follows_you": "Vous suit", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Voir le profil", "account.hide_reblogs": "Masquer les partages de @{name}", "account.joined_short": "Ici depuis", "account.languages": "Changer les langues abonnées", @@ -182,8 +182,8 @@ "directory.local": "De {domain} seulement", "directory.new_arrivals": "Inscrit·e·s récemment", "directory.recently_active": "Actif·ve·s récemment", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Paramètres du compte", + "disabled_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé.", "dismissable_banner.community_timeline": "Voici les messages publics les plus récents des personnes dont les comptes sont hébergés par {domain}.", "dismissable_banner.dismiss": "Rejeter", "dismissable_banner.explore_links": "Ces nouvelles sont actuellement en cours de discussion par des personnes sur d'autres serveurs du réseau décentralisé ainsi que sur celui-ci.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}", "missing_indicator.label": "Non trouvé", "missing_indicator.sublabel": "Ressource introuvable", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous avez déplacé vers {movedToAccount}.", "mute_modal.duration": "Durée", "mute_modal.hide_notifications": "Masquer les notifications de cette personne ?", "mute_modal.indefinite": "Indéfinie", @@ -532,7 +532,7 @@ "search_results.title": "Rechercher {q}", "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", "server_banner.about_active_users": "Personnes utilisant ce serveur au cours des 30 derniers jours (Utilisateur·rice·s Actifs·ives Mensuellement)", - "server_banner.active_users": "Utilisateur·rice·s actif·ve·s", + "server_banner.active_users": "Utilisateurs actifs", "server_banner.administered_by": "Administré par :", "server_banner.introduction": "{domain} fait partie du réseau social décentralisé propulsé par {mastodon}.", "server_banner.learn_more": "En savoir plus", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index b3c25a5f64..dab5921959 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -4,14 +4,14 @@ "about.disclaimer": "Bogearra foinse oscailte saor in aisce is ea Mastodon, agus is le Mastodon gGmbH an trádmharc.", "about.domain_blocks.comment": "Fáth", "about.domain_blocks.domain": "Fearann", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.preamble": "Go hiondúil, tugann Mastadán cead duit a bheith ag plé le húsáideoirí as freastalaí ar bith eile sa chomhchruinne agus a gcuid inneachair a fheiceáil. Seo iad na heisceachtaí a rinneadh ar an bhfreastalaí áirithe seo.", "about.domain_blocks.severity": "Déine", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.explanation": "Go hiondúil ní fheicfidh tú próifílí ná inneachar ón bhfreastalaí seo, ach amháin má bhíonn tú á lorg nó má ghlacann tú lena leanúint d'aon ghnó.", "about.domain_blocks.silenced.title": "Teoranta", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Ar fionraí", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.not_available": "Níor cuireadh an t-eolas seo ar fáil ar an bhfreastalaí seo.", + "about.powered_by": "Meáin shóisialta díláraithe faoi chumhacht {mastodon}", "about.rules": "Rialacha an fhreastalaí", "account.account_note_header": "Nóta", "account.add_or_remove_from_list": "Cuir Le nó Bain De na liostaí", @@ -39,15 +39,15 @@ "account.following_counter": "{count, plural, one {Ag leanúint cúntas amháin} other {Ag leanúint {counter} cúntas}}", "account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.", "account.follows_you": "Do do leanúint", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Téigh go dtí próifíl", "account.hide_reblogs": "Folaigh athphostálacha ó @{name}", "account.joined_short": "Cláraithe", "account.languages": "Athraigh teangacha foscríofa", - "account.link_verified_on": "Ownership of this link was checked on {date}", + "account.link_verified_on": "Seiceáladh úinéireacht an naisc seo ar {date}", "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.", "account.media": "Ábhair", "account.mention": "Luaigh @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "Tá tugtha le fios ag {name} gurb é an cuntas nua atá acu ná:", "account.mute": "Balbhaigh @{name}", "account.mute_notifications": "Balbhaigh fógraí ó @{name}", "account.muted": "Balbhaithe", @@ -81,7 +81,7 @@ "audio.hide": "Cuir fuaim i bhfolach", "autosuggest_hashtag.per_week": "{count} sa seachtain", "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile", - "bundle_column_error.copy_stacktrace": "Copy error report", + "bundle_column_error.copy_stacktrace": "Cóipeáil tuairisc earráide", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", "bundle_column_error.error.title": "Ná habair!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", @@ -104,9 +104,9 @@ "column.community": "Amlíne áitiúil", "column.direct": "Teachtaireachtaí dhíreacha", "column.directory": "Brabhsáil próifílí", - "column.domain_blocks": "Blocked domains", + "column.domain_blocks": "Fearainn bhactha", "column.favourites": "Roghanna", - "column.follow_requests": "Follow requests", + "column.follow_requests": "Iarratais leanúnaí", "column.home": "Baile", "column.lists": "Liostaí", "column.mutes": "Úsáideoirí balbhaithe", @@ -115,25 +115,25 @@ "column.public": "Amlíne cónaidhmithe", "column_back_button.label": "Siar", "column_header.hide_settings": "Folaigh socruithe", - "column_header.moveLeft_settings": "Move column to the left", - "column_header.moveRight_settings": "Move column to the right", + "column_header.moveLeft_settings": "Bog an colún ar chlé", + "column_header.moveRight_settings": "Bog an colún ar dheis", "column_header.pin": "Greamaigh", "column_header.show_settings": "Taispeáin socruithe", "column_header.unpin": "Díghreamaigh", "column_subheading.settings": "Socruithe", "community.column_settings.local_only": "Áitiúil amháin", "community.column_settings.media_only": "Meáin Amháin", - "community.column_settings.remote_only": "Remote only", + "community.column_settings.remote_only": "Cian amháin", "compose.language.change": "Athraigh teanga", "compose.language.search": "Cuardaigh teangacha...", "compose_form.direct_message_warning_learn_more": "Tuilleadh eolais", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", - "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.lock_disclaimer": "Níl an cuntas seo {locked}. Féadfaidh duine ar bith tú a leanúint agus na postálacha atá dírithe agat ar do lucht leanúna amháin a fheiceáil.", "compose_form.lock_disclaimer.lock": "faoi ghlas", "compose_form.placeholder": "Cad atá ag tarlú?", "compose_form.poll.add_option": "Cuir rogha isteach", - "compose_form.poll.duration": "Poll duration", + "compose_form.poll.duration": "Achar suirbhéanna", "compose_form.poll.option_placeholder": "Rogha {number}", "compose_form.poll.remove_option": "Bain an rogha seo", "compose_form.poll.switch_to_multiple": "Athraigh suirbhé chun cead a thabhairt do ilrogha", @@ -144,54 +144,54 @@ "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}", "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}", - "compose_form.spoiler.marked": "Text is hidden behind warning", - "compose_form.spoiler.unmarked": "Text is not hidden", - "compose_form.spoiler_placeholder": "Write your warning here", + "compose_form.spoiler.marked": "Bain rabhadh ábhair", + "compose_form.spoiler.unmarked": "Cuir rabhadh ábhair", + "compose_form.spoiler_placeholder": "Scríobh do rabhadh anseo", "confirmation_modal.cancel": "Cealaigh", "confirmations.block.block_and_report": "Bac ⁊ Tuairiscigh", "confirmations.block.confirm": "Bac", "confirmations.block.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhac?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Éirigh as iarratas", + "confirmations.cancel_follow_request.message": "An bhfuil tú cinnte gur mhaith leat éirigh as an iarratas leanta {name}?", "confirmations.delete.confirm": "Scrios", "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?", "confirmations.delete_list.confirm": "Scrios", "confirmations.delete_list.message": "An bhfuil tú cinnte gur mhaith leat an liosta seo a scriosadh go buan?", "confirmations.discard_edit_media.confirm": "Faigh réidh de", "confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?", - "confirmations.domain_block.confirm": "Hide entire domain", + "confirmations.domain_block.confirm": "Bac fearann go hiomlán", "confirmations.domain_block.message": "An bhfuil tú iontach cinnte gur mhaith leat bac an t-ainm fearainn {domain} in iomlán? I bhformhór na gcásanna, is leor agus is fearr cúpla baic a cur i bhfeidhm nó cúpla úsáideoirí a balbhú. Ní fheicfidh tú ábhair ón t-ainm fearainn sin in amlíne ar bith, nó i d'fhógraí. Scaoilfear do leantóirí ón ainm fearainn sin.", "confirmations.logout.confirm": "Logáil amach", "confirmations.logout.message": "An bhfuil tú cinnte gur mhaith leat logáil amach?", "confirmations.mute.confirm": "Balbhaigh", "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", "confirmations.mute.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhalbhú?", - "confirmations.redraft.confirm": "Delete & redraft", + "confirmations.redraft.confirm": "Scrios ⁊ athdhréachtaigh", "confirmations.redraft.message": "An bhfuil tú cinnte gur mhaith leat an phostáil sin a scriosadh agus athdhréachtú? Beidh roghanna agus treisithe caillte, agus beidh freagraí ar an bpostáil bhunúsach ina ndílleachtaí.", "confirmations.reply.confirm": "Freagair", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Ná lean", - "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.delete": "Delete conversation", + "confirmations.unfollow.message": "An bhfuil tú cinnte gur mhaith leat {name} a dhíleanúint?", + "conversation.delete": "Scrios comhrá", "conversation.mark_as_read": "Marcáil mar léite", - "conversation.open": "View conversation", - "conversation.with": "With {names}", - "copypaste.copied": "Copied", + "conversation.open": "Féach ar comhrá", + "conversation.with": "Le {names}", + "copypaste.copied": "Cóipeáilte", "copypaste.copy": "Cóipeáil", "directory.federated": "From known fediverse", "directory.local": "Ó {domain} amháin", "directory.new_arrivals": "Daoine atá tar éis teacht", "directory.recently_active": "Daoine gníomhacha le déanaí", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", + "disabled_account_banner.account_settings": "Socruithe cuntais", + "disabled_account_banner.text": "Tá do chuntas {disabledAccount} díchumasaithe faoi láthair.", + "dismissable_banner.community_timeline": "Seo iad na postála is déanaí ó dhaoine le cuntais ar {domain}.", "dismissable_banner.dismiss": "Diúltaigh", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Embed this status on your website by copying the code below.", - "embed.preview": "Here is what it will look like:", + "embed.preview": "Seo an chuma a bheidh air:", "emoji_button.activity": "Gníomhaíocht", "emoji_button.clear": "Glan", "emoji_button.custom": "Saincheaptha", @@ -199,10 +199,10 @@ "emoji_button.food": "Bia ⁊ Ól", "emoji_button.label": "Cuir emoji isteach", "emoji_button.nature": "Nádur", - "emoji_button.not_found": "No matching emojis found", - "emoji_button.objects": "Objects", + "emoji_button.not_found": "Ní bhfuarthas an cineál emoji sin", + "emoji_button.objects": "Rudaí", "emoji_button.people": "Daoine", - "emoji_button.recent": "Frequently used", + "emoji_button.recent": "Úsáidte go minic", "emoji_button.search": "Cuardaigh...", "emoji_button.search_results": "Torthaí cuardaigh", "emoji_button.symbols": "Comharthaí", @@ -210,19 +210,19 @@ "empty_column.account_suspended": "Cuntas ar fionraí", "empty_column.account_timeline": "Níl postálacha ar bith anseo!", "empty_column.account_unavailable": "Níl an phróifíl ar fáil", - "empty_column.blocks": "You haven't blocked any users yet.", + "empty_column.blocks": "Níl aon úsáideoir bactha agat fós.", "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", - "empty_column.domain_blocks": "There are no blocked domains yet.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.domain_blocks": "Níl aon fearainn bhactha ann go fóill.", + "empty_column.explore_statuses": "Níl rud ar bith ag treochtáil faoi láthair. Tar ar ais ar ball!", "empty_column.favourited_statuses": "Níor roghnaigh tú postáil ar bith fós. Nuair a roghnaigh tú ceann, beidh sí le feiceáil anseo.", "empty_column.favourites": "Níor roghnaigh éinne an phostáil seo fós. Nuair a roghnaigh duine éigin, beidh siad le feiceáil anseo.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", - "empty_column.hashtag": "There is nothing in this hashtag yet.", - "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", - "empty_column.home.suggestions": "See some suggestions", + "empty_column.hashtag": "Níl rud ar bith faoin haischlib seo go fóill.", + "empty_column.home": "Tá d'amlíne baile folamh! B'fhiú duit cúpla duine eile a leanúint lena líonadh! {suggestions}", + "empty_column.home.suggestions": "Féach ar roinnt moltaí", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", "empty_column.mutes": "Níl aon úsáideoir balbhaithe agat fós.", @@ -233,7 +233,7 @@ "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "errors.unexpected_crash.report_issue": "Tuairiscigh deacracht", "explore.search_results": "Torthaí cuardaigh", "explore.suggested_follows": "Duitse", "explore.title": "Féach thart", @@ -245,7 +245,7 @@ "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", "filter_modal.added.expired_title": "Expired filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.review_and_configure_title": "Socruithe scagtha", "filter_modal.added.settings_link": "leathan socruithe", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter added!", @@ -254,16 +254,16 @@ "filter_modal.select_filter.prompt_new": "Catagóir nua: {name}", "filter_modal.select_filter.search": "Search or create", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.title": "Déan scagadh ar an bpostáil seo", + "filter_modal.title.status": "Déan scagadh ar phostáil", "follow_recommendations.done": "Déanta", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", "follow_request.authorize": "Ceadaigh", "follow_request.reject": "Diúltaigh", - "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", + "follow_requests.unlocked_explanation": "Cé nach bhfuil do chuntas faoi ghlas, cheap foireann {domain} gur mhaith leat súil siar ar iarratais leanúnaí as na cuntais seo.", "footer.about": "Maidir le", - "footer.directory": "Profiles directory", + "footer.directory": "Eolaire próifílí", "footer.get_app": "Faigh an aip", "footer.invite": "Invite people", "footer.keyboard_shortcuts": "Keyboard shortcuts", @@ -276,7 +276,7 @@ "hashtag.column_header.tag_mode.none": "gan {additional}", "hashtag.column_settings.select.no_options_message": "No suggestions found", "hashtag.column_settings.select.placeholder": "Iontráil haischlibeanna…", - "hashtag.column_settings.tag_mode.all": "All of these", + "hashtag.column_settings.tag_mode.all": "Iad seo go léir", "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", @@ -285,8 +285,8 @@ "home.column_settings.basic": "Bunúsach", "home.column_settings.show_reblogs": "Taispeáin treisithe", "home.column_settings.show_replies": "Taispeán freagraí", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", + "home.hide_announcements": "Cuir fógraí i bhfolach", + "home.show_announcements": "Taispeáin fógraí", "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", @@ -303,7 +303,7 @@ "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", "keyboard_shortcuts.back": "to navigate back", - "keyboard_shortcuts.blocked": "to open blocked users list", + "keyboard_shortcuts.blocked": "Oscail liosta na n-úsáideoirí bactha", "keyboard_shortcuts.boost": "Treisigh postáil", "keyboard_shortcuts.column": "to focus a status in one of the columns", "keyboard_shortcuts.compose": "to focus the compose textarea", @@ -313,13 +313,13 @@ "keyboard_shortcuts.enter": "Oscail postáil", "keyboard_shortcuts.favourite": "Roghnaigh postáil", "keyboard_shortcuts.favourites": "Oscail liosta roghanna", - "keyboard_shortcuts.federated": "to open federated timeline", - "keyboard_shortcuts.heading": "Keyboard Shortcuts", + "keyboard_shortcuts.federated": "Oscail amlíne cónaidhmithe", + "keyboard_shortcuts.heading": "Aicearraí méarchláir", "keyboard_shortcuts.home": "to open home timeline", "keyboard_shortcuts.hotkey": "Eochair aicearra", "keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.local": "Oscail an amlíne áitiúil", - "keyboard_shortcuts.mention": "to mention author", + "keyboard_shortcuts.mention": "Luaigh údar", "keyboard_shortcuts.muted": "Oscail liosta na n-úsáideoirí balbhaithe", "keyboard_shortcuts.my_profile": "Oscail do phróifíl", "keyboard_shortcuts.notifications": "to open notifications column", @@ -327,12 +327,12 @@ "keyboard_shortcuts.pinned": "to open pinned posts list", "keyboard_shortcuts.profile": "Oscail próifíl an t-údar", "keyboard_shortcuts.reply": "Freagair ar phostáil", - "keyboard_shortcuts.requests": "to open follow requests list", + "keyboard_shortcuts.requests": "Oscail liosta iarratas leanúnaí", "keyboard_shortcuts.search": "to focus search", "keyboard_shortcuts.spoilers": "to show/hide CW field", "keyboard_shortcuts.start": "to open \"get started\" column", "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", - "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", + "keyboard_shortcuts.toggle_sensitivity": "Taispeáin / cuir i bhfolach meáin", "keyboard_shortcuts.toot": "Cuir tús le postáil nua", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", @@ -351,10 +351,10 @@ "lists.new.create": "Cruthaigh liosta", "lists.new.title_placeholder": "New list title", "lists.replies_policy.followed": "Any followed user", - "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.list": "Baill an liosta", "lists.replies_policy.none": "Duine ar bith", "lists.replies_policy.title": "Show replies to:", - "lists.search": "Search among people you follow", + "lists.search": "Cuardaigh i measc daoine atá á leanúint agat", "lists.subheading": "Do liostaí", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Ag lódáil...", @@ -366,13 +366,13 @@ "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?", "mute_modal.indefinite": "Gan téarma", "navigation_bar.about": "Maidir le", - "navigation_bar.blocks": "Blocked users", + "navigation_bar.blocks": "Cuntais bhactha", "navigation_bar.bookmarks": "Leabharmharcanna", "navigation_bar.community_timeline": "Amlíne áitiúil", "navigation_bar.compose": "Cum postáil nua", "navigation_bar.direct": "Teachtaireachtaí dhíreacha", "navigation_bar.discover": "Faigh amach", - "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.domain_blocks": "Fearainn bhactha", "navigation_bar.edit_profile": "Cuir an phróifíl in eagar", "navigation_bar.explore": "Féach thart", "navigation_bar.favourites": "Roghanna", @@ -389,12 +389,12 @@ "navigation_bar.search": "Cuardaigh", "navigation_bar.security": "Slándáil", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.report": "Tuairiscigh {name} {target}", + "notification.admin.sign_up": "Chláraigh {name}", "notification.favourite": "Roghnaigh {name} do phostáil", "notification.follow": "Lean {name} thú", "notification.follow_request": "D'iarr {name} ort do chuntas a leanúint", - "notification.mention": "{name} mentioned you", + "notification.mention": "Luaigh {name} tú", "notification.own_poll": "Your poll has ended", "notification.poll": "A poll you have voted in has ended", "notification.reblog": "Threisigh {name} do phostáil", @@ -408,14 +408,14 @@ "notifications.column_settings.favourite": "Roghanna:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.show_bar": "Taispeáin barra scagaire", "notifications.column_settings.follow": "Leantóirí nua:", "notifications.column_settings.follow_request": "Iarratais leanúnaí nua:", "notifications.column_settings.mention": "Tráchtanna:", - "notifications.column_settings.poll": "Poll results:", + "notifications.column_settings.poll": "Torthaí suirbhéanna:", "notifications.column_settings.push": "Brúfhógraí", "notifications.column_settings.reblog": "Treisithe:", - "notifications.column_settings.show": "Show in column", + "notifications.column_settings.show": "Taispeáin i gcolún", "notifications.column_settings.sound": "Seinn an fhuaim", "notifications.column_settings.status": "Postálacha nua:", "notifications.column_settings.unread_notifications.category": "Brúfhógraí neamhléite", @@ -426,7 +426,7 @@ "notifications.filter.favourites": "Roghanna", "notifications.filter.follows": "Ag leanúint", "notifications.filter.mentions": "Tráchtanna", - "notifications.filter.polls": "Poll results", + "notifications.filter.polls": "Torthaí suirbhéanna", "notifications.filter.statuses": "Updates from people you follow", "notifications.grant_permission": "Grant permission.", "notifications.group": "{count} notifications", @@ -445,8 +445,8 @@ "poll.vote": "Vótáil", "poll.voted": "You voted for this answer", "poll.votes": "{votes, plural, one {# vote} other {# votes}}", - "poll_button.add_poll": "Add a poll", - "poll_button.remove_poll": "Remove poll", + "poll_button.add_poll": "Cruthaigh suirbhé", + "poll_button.remove_poll": "Bain suirbhé", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Visible for mentioned users only", "privacy.direct.short": "Direct", @@ -477,7 +477,7 @@ "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Eile", "report.categories.spam": "Turscar", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Sáraíonn ábhar riail freastalaí amháin nó níos mó", "report.category.subtitle": "Roghnaigh an toradh is fearr", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "próifíl", @@ -502,7 +502,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit report", + "report.submit": "Cuir isteach", "report.target": "Ag tuairisciú {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", @@ -557,7 +557,7 @@ "status.favourite": "Rogha", "status.filter": "Filter this post", "status.filtered": "Filtered", - "status.hide": "Hide toot", + "status.hide": "Cuir postáil i bhfolach", "status.history.created": "{name} created {date}", "status.history.edited": "Curtha in eagar ag {name} in {date}", "status.load_more": "Lódáil a thuilleadh", @@ -574,20 +574,20 @@ "status.reblog_private": "Treisigh le léargas bunúsach", "status.reblogged_by": "Treisithe ag {name}", "status.reblogs.empty": "Níor threisigh éinne an phostáil seo fós. Nuair a threisigh duine éigin, beidh siad le feiceáil anseo.", - "status.redraft": "Delete & re-draft", + "status.redraft": "Scrios ⁊ athdhréachtaigh", "status.remove_bookmark": "Remove bookmark", "status.replied_to": "Replied to {name}", "status.reply": "Freagair", - "status.replyAll": "Reply to thread", + "status.replyAll": "Freagair le snáithe", "status.report": "Tuairiscigh @{name}", - "status.sensitive_warning": "Sensitive content", + "status.sensitive_warning": "Ábhar íogair", "status.share": "Comhroinn", - "status.show_filter_reason": "Show anyway", - "status.show_less": "Show less", - "status.show_less_all": "Show less for all", - "status.show_more": "Show more", - "status.show_more_all": "Show more for all", - "status.show_original": "Show original", + "status.show_filter_reason": "Taispeáin ar aon nós", + "status.show_less": "Taispeáin níos lú", + "status.show_less_all": "Taispeáin níos lú d'uile", + "status.show_more": "Taispeáin níos mó", + "status.show_more_all": "Taispeáin níos mó d'uile", + "status.show_original": "Taispeáin bunchóip", "status.translate": "Aistrigh", "status.translated_from_with": "D'Aistrigh ón {lang} ag úsáid {provider}", "status.uncached_media_warning": "Ní ar fáil", @@ -617,7 +617,7 @@ "units.short.billion": "{count}B", "units.short.million": "{count}M", "units.short.thousand": "{count}K", - "upload_area.title": "Drag & drop to upload", + "upload_area.title": "Tarraing ⁊ scaoil chun uaslódáil", "upload_button.label": "Add images, a video or an audio file", "upload_error.limit": "File upload limit exceeded.", "upload_error.poll": "File upload not allowed with polls.", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 6ed5c2b5de..3492aa54a5 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -6,7 +6,7 @@ "about.domain_blocks.domain": "Àrainn", "about.domain_blocks.preamble": "San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus eadar-ghìomh a ghabhail leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo.", "about.domain_blocks.severity": "Donad", - "about.domain_blocks.silenced.explanation": "Chan fharsaingeachd, chan fhaic thu pròifilean agus susbaint an fhrithealaiche seo ach ma nì thu lorg no ma leanas tu air.", + "about.domain_blocks.silenced.explanation": "Chan fharsaingeachd, chan fhaic thu pròifilean agus susbaint an fhrithealaiche seo ach ma nì thu lorg no ma tha thu ’ga leantainn.", "about.domain_blocks.silenced.title": "Cuingichte", "about.domain_blocks.suspended.explanation": "Cha dèid dàta sam bith on fhrithealaiche seo a phròiseasadh, a stòradh no iomlaid agus chan urrainn do na cleachdaichean on fhrithealaiche sin conaltradh no eadar-ghnìomh a ghabhail an-seo.", "about.domain_blocks.suspended.title": "’Na dhàil", @@ -31,20 +31,20 @@ "account.featured_tags.last_status_at": "Am post mu dheireadh {date}", "account.featured_tags.last_status_never": "Gun phost", "account.featured_tags.title": "Na tagaichean hais brosnaichte aig {name}", - "account.follow": "Lean air", + "account.follow": "Lean", "account.followers": "Luchd-leantainn", "account.followers.empty": "Chan eil neach sam bith a’ leantainn air a’ chleachdaiche seo fhathast.", "account.followers_counter": "{count, plural, one {{counter} neach-leantainn} two {{counter} neach-leantainn} few {{counter} luchd-leantainn} other {{counter} luchd-leantainn}}", "account.following": "A’ leantainn", - "account.following_counter": "{count, plural, one {A’ leantainn air {counter}} two {A’ leantainn air {counter}} few {A’ leantainn air {counter}} other {A’ leantainn air {counter}}}", - "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn air neach sam bith fhathast.", + "account.following_counter": "{count, plural, one {A’ leantainn {counter}} two {A’ leantainn {counter}} few {A’ leantainn {counter}} other {A’ leantainn {counter}}}", + "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn neach sam bith fhathast.", "account.follows_you": "’Gad leantainn", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Tadhail air a’ phròifil", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", "account.joined_short": "Air ballrachd fhaighinn", "account.languages": "Atharraich fo-sgrìobhadh nan cànan", "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}", - "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.", + "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas a leantainn.", "account.media": "Meadhanan", "account.mention": "Thoir iomradh air @{name}", "account.moved_to": "Dh’innis {name} gu bheil an cunntas ùr aca a-nis air:", @@ -96,7 +96,7 @@ "closed_registrations.other_server_instructions": "Air sgàth ’s gu bheil Mastodon sgaoilte, ’s urrainn dhut cunntas a chruthachadh air frithealaiche eile agus conaltradh ris an fhrithealaiche seo co-dhiù.", "closed_registrations_modal.description": "Cha ghabh cunntas a chruthachadh air {domain} aig an àm seo ach thoir an aire nach fheum thu cunntas air {domain} gu sònraichte airson Mastodon a chleachdadh.", "closed_registrations_modal.find_another_server": "Lorg frithealaiche eile", - "closed_registrations_modal.preamble": "Tha Mastodon sgaoilte is mar sin dheth ge b’ e càit an cruthaich thu an cunntas agad, ’s urrainn dhut leantainn air duine sam bith air an fhrithealaiche seo is conaltradh leotha. ’S urrainn dhut fiù ’s frithealaiche agad fhèin òstadh!", + "closed_registrations_modal.preamble": "Tha Mastodon sgaoilte is mar sin dheth ge b’ e càit an cruthaich thu an cunntas agad, ’s urrainn dhut duine sam bith a leantainn air an fhrithealaiche seo is conaltradh leotha. ’S urrainn dhut fiù ’s frithealaiche agad fhèin òstadh!", "closed_registrations_modal.title": "Clàradh le Mastodon", "column.about": "Mu dhèidhinn", "column.blocks": "Cleachdaichean bacte", @@ -129,7 +129,7 @@ "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh", "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh dìomhair idir le Mastodon.", "compose_form.hashtag_warning": "Cha nochd am post seo fon taga hais on a tha e falaichte o liostaichean. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.", - "compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. ’S urrainn do dhuine sam bith leantainn ort is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.", + "compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. ’S urrainn do dhuine sam bith ’gad leantainn is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.", "compose_form.lock_disclaimer.lock": "glaiste", "compose_form.placeholder": "Dè tha air d’ aire?", "compose_form.poll.add_option": "Cuir roghainn ris", @@ -152,7 +152,7 @@ "confirmations.block.confirm": "Bac", "confirmations.block.message": "A bheil thu cinnteach gu bheil thu airson {name} a bhacadh?", "confirmations.cancel_follow_request.confirm": "Cuir d’ iarrtas dhan dàrna taobh", - "confirmations.cancel_follow_request.message": "A bheil thu cinnteach gu bheil thu airson d’ iarrtas leantainn air {name} a chur dhan dàrna taobh?", + "confirmations.cancel_follow_request.message": "A bheil thu cinnteach gu bheil thu airson d’ iarrtas leantainn {name} a chur dhan dàrna taobh?", "confirmations.delete.confirm": "Sguab às", "confirmations.delete.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", "confirmations.delete_list.confirm": "Sguab às", @@ -160,18 +160,18 @@ "confirmations.discard_edit_media.confirm": "Tilg air falbh", "confirmations.discard_edit_media.message": "Tha atharraichean gun sàbhaladh agad ann an tuairisgeul no ro-shealladh a’ mheadhain, a bheil thu airson an tilgeil air falbh co-dhiù?", "confirmations.domain_block.confirm": "Bac an àrainn uile gu lèir", - "confirmations.domain_block.message": "A bheil thu cinnteach dha-rìribh gu bheil thu airson an àrainn {domain} a bhacadh uile gu lèir? Mar as trice, foghnaidh gun dèan thu bacadh no mùchadh no dhà gu sònraichte agus bhiod sin na b’ fheàrr. Chan fhaic thu susbaint on àrainn ud air loidhne-ama phoblach sam bith no am measg nam brathan agad. Thèid an luchd-leantainn agad on àrainn ud a thoirt air falbh.", + "confirmations.domain_block.message": "A bheil thu cinnteach dha-rìribh gu bheil thu airson an àrainn {domain} a bhacadh uile gu lèir? Mar as trice, foghnaidh gun dèan thu bacadh no mùchadh no dhà gu sònraichte agus bhiodh sin na b’ fheàrr. Chan fhaic thu susbaint on àrainn ud air loidhne-ama phoblach sam bith no am measg nam brathan agad. Thèid an luchd-leantainn agad on àrainn ud a thoirt air falbh.", "confirmations.logout.confirm": "Clàraich a-mach", "confirmations.logout.message": "A bheil thu cinnteach gu bheil thu airson clàradh a-mach?", "confirmations.mute.confirm": "Mùch", - "confirmations.mute.explanation": "Cuiridh seo na postaichean uapa ’s na postaichean a bheir iomradh orra am falach ach chì iad-san na postaichean agad fhathast is faodaidh iad leantainn ort.", + "confirmations.mute.explanation": "Cuiridh seo na postaichean uapa ’s na postaichean a bheir iomradh orra am falach ach chì iad-san na postaichean agad fhathast is faodaidh iad ’gad leantainn.", "confirmations.mute.message": "A bheil thu cinnteach gu bheil thu airson {name} a mhùchadh?", "confirmations.redraft.confirm": "Sguab às ⁊ dèan dreachd ùr", "confirmations.redraft.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às agus dreachd ùr a thòiseachadh? Caillidh tu gach annsachd is brosnachadh air agus thèid freagairtean dhan phost thùsail ’nan dìlleachdanan.", "confirmations.reply.confirm": "Freagair", "confirmations.reply.message": "Ma bheir thu freagairt an-dràsta, thèid seo a sgrìobhadh thairis air an teachdaireachd a tha thu a’ sgrìobhadh an-dràsta. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?", "confirmations.unfollow.confirm": "Na lean tuilleadh", - "confirmations.unfollow.message": "A bheil thu cinnteach nach eil thu airson leantainn air {name} tuilleadh?", + "confirmations.unfollow.message": "A bheil thu cinnteach nach eil thu airson {name} a leantainn tuilleadh?", "conversation.delete": "Sguab às an còmhradh", "conversation.mark_as_read": "Cuir comharra gun deach a leughadh", "conversation.open": "Seall an còmhradh", @@ -182,8 +182,8 @@ "directory.local": "O {domain} a-mhàin", "directory.new_arrivals": "Feadhainn ùra", "directory.recently_active": "Gnìomhach o chionn goirid", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Roghainnean a’ chunntais", + "disabled_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas aig an àm seo.", "dismissable_banner.community_timeline": "Seo na postaichean poblach as ùire o dhaoine aig a bheil cunntas air {domain}.", "dismissable_banner.dismiss": "Leig seachad", "dismissable_banner.explore_links": "Seo na naidheachdan air a bhithear a’ bruidhinn an-dràsta fhèin air an fhrithealaiche seo is frithealaichean eile dhen lìonra sgaoilte.", @@ -221,13 +221,13 @@ "empty_column.follow_recommendations": "Chan urrainn dhuinn dad a mholadh dhut. Cleachd gleus an luirg feuch an lorg thu daoine air a bheil thu eòlach no rùraich na tagaichean-hais a tha a’ treandadh.", "empty_column.follow_requests": "Chan eil iarrtas air leantainn agad fhathast. Nuair gheibh thu fear, nochdaidh e an-seo.", "empty_column.hashtag": "Chan eil dad san taga hais seo fhathast.", - "empty_column.home": "Tha an loidhne-ama dachaigh agad falamh! Lean air barrachd dhaoine gus a lìonadh. {suggestions}", + "empty_column.home": "Tha loidhne-ama na dachaigh agad falamh! Lean barrachd dhaoine gus a lìonadh. {suggestions}", "empty_column.home.suggestions": "Faic moladh no dhà", "empty_column.list": "Chan eil dad air an liosta seo fhathast. Nuair a phostaicheas buill a tha air an liosta seo postaichean ùra, nochdaidh iad an-seo.", "empty_column.lists": "Chan eil liosta agad fhathast. Nuair chruthaicheas tu tè, nochdaidh i an-seo.", "empty_column.mutes": "Cha do mhùch thu cleachdaiche sam bith fhathast.", "empty_column.notifications": "Cha d’ fhuair thu brath sam bith fhathast. Nuair a nì càch conaltradh leat, chì thu an-seo e.", - "empty_column.public": "Chan eil dad an-seo! Sgrìobh rudeigin gu poblach no lean air càch o fhrithealaichean eile a làimh airson seo a lìonadh", + "empty_column.public": "Chan eil dad an-seo! Sgrìobh rudeigin gu poblach no lean càch o fhrithealaichean eile a làimh airson seo a lìonadh", "error.unexpected_crash.explanation": "Air sàilleibh buga sa chòd againn no duilgheadas co-chòrdalachd leis a’ bhrabhsair, chan urrainn dhuinn an duilleag seo a shealltainn mar bu chòir.", "error.unexpected_crash.explanation_addons": "Cha b’ urrainn dhuinn an duilleag seo a shealltainn mar bu chòir. Tha sinn an dùil gu do dh’adhbharaich tuilleadan a’ bhrabhsair no inneal eadar-theangachaidh fèin-obrachail a’ mhearachd.", "error.unexpected_crash.next_steps": "Feuch an ath-nuadhaich thu an duilleag seo. Mura cuidich sin, dh’fhaoidte gur urrainn dhut Mastodon a chleachdadh fhathast le brabhsair eile no le aplacaid thùsail.", @@ -257,8 +257,8 @@ "filter_modal.select_filter.title": "Criathraich am post seo", "filter_modal.title.status": "Criathraich post", "follow_recommendations.done": "Deiseil", - "follow_recommendations.heading": "Lean air daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", - "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air nad dhachaigh. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!", + "follow_recommendations.heading": "Lean daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", + "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine a leanas tu a-rèir an ama nad dhachaigh. Bi dàna on as urrainn dhut sgur de dhaoine a leantainn cuideachd uair sam bith!", "follow_request.authorize": "Ùghdarraich", "follow_request.reject": "Diùlt", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", @@ -280,15 +280,15 @@ "hashtag.column_settings.tag_mode.any": "Gin sam bith dhiubh", "hashtag.column_settings.tag_mode.none": "Às aonais gin sam bith dhiubh", "hashtag.column_settings.tag_toggle": "Gabh a-steach barrachd tagaichean sa cholbh seo", - "hashtag.follow": "Lean air an taga hais", - "hashtag.unfollow": "Na lean air an taga hais tuilleadh", + "hashtag.follow": "Lean an taga hais", + "hashtag.unfollow": "Na lean an taga hais tuilleadh", "home.column_settings.basic": "Bunasach", "home.column_settings.show_reblogs": "Seall na brosnachaidhean", "home.column_settings.show_replies": "Seall na freagairtean", "home.hide_announcements": "Falaich na brathan-fios", "home.show_announcements": "Seall na brathan-fios", "interaction_modal.description.favourite": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a chur ris na h-annsachdan airson innse dhan ùghdar gu bheil e a’ còrdadh dhut ’s a shàbhaladh do uaireigin eile.", - "interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut leantainn air {name} ach am faigh thu na postaichean aca nad dhachaigh.", + "interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut {name} a leantainn ach am faigh thu na postaichean aca nad dhachaigh.", "interaction_modal.description.reblog": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a bhrosnachadh gus a cho-roinneadh leis an luchd-leantainn agad fhèin.", "interaction_modal.description.reply": "Le cunntas air Mastodon, ’s urrainn dhut freagairt a chur dhan phost seo.", "interaction_modal.on_another_server": "Air frithealaiche eile", @@ -296,7 +296,7 @@ "interaction_modal.other_server_instructions": "Dèan lethbhreac dhen URL seo is cuir ann am bàr nan lorg e san aplacaid as fheàrr leat no san eadar-aghaidh-lìn far a bheil thu air do chlàradh a-steach.", "interaction_modal.preamble": "Air sgàth ’s gu bheil Mastodon sgaoilte, ’s urrainn dhut cunntas a chleachdadh a tha ’ga òstadh le frithealaiche Mastodon no le ùrlar co-chòrdail eile mur eil cunntas agad air an fhear seo.", "interaction_modal.title.favourite": "Cuir am post aig {name} ris na h-annsachdan", - "interaction_modal.title.follow": "Lean air {name}", + "interaction_modal.title.follow": "Lean {name}", "interaction_modal.title.reblog": "Brosnaich am post aig {name}", "interaction_modal.title.reply": "Freagair dhan phost aig {name}", "intervals.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}", @@ -350,18 +350,18 @@ "lists.edit.submit": "Atharraich an tiotal", "lists.new.create": "Cuir liosta ris", "lists.new.title_placeholder": "Tiotal na liosta ùir", - "lists.replies_policy.followed": "Cleachdaiche sam bith air a leanas mi", + "lists.replies_policy.followed": "Cleachdaiche sam bith a leanas mi", "lists.replies_policy.list": "Buill na liosta", "lists.replies_policy.none": "Na seall idir", "lists.replies_policy.title": "Seall na freagairtean gu:", - "lists.search": "Lorg am measg nan daoine air a leanas tu", + "lists.search": "Lorg am measg nan daoine a leanas tu", "lists.subheading": "Na liostaichean agad", "load_pending": "{count, plural, one {# nì ùr} two {# nì ùr} few {# nithean ùra} other {# nì ùr}}", "loading_indicator.label": "’Ga luchdadh…", "media_gallery.toggle_visible": "{number, plural, 1 {Falaich an dealbh} one {Falaich na dealbhan} two {Falaich na dealbhan} few {Falaich na dealbhan} other {Falaich na dealbhan}}", "missing_indicator.label": "Cha deach càil a lorg", "missing_indicator.sublabel": "Cha deach an goireas a lorg", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas on a rinn thu imrich gu {movedToAccount}.", "mute_modal.duration": "Faide", "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?", "mute_modal.indefinite": "Gun chrìoch", @@ -392,8 +392,8 @@ "notification.admin.report": "Rinn {name} mu {target}", "notification.admin.sign_up": "Chlàraich {name}", "notification.favourite": "Is annsa le {name} am post agad", - "notification.follow": "Tha {name} a’ leantainn ort a-nis", - "notification.follow_request": "Dh’iarr {name} leantainn ort", + "notification.follow": "Tha {name} ’gad leantainn a-nis", + "notification.follow_request": "Dh’iarr {name} ’gad leantainn", "notification.mention": "Thug {name} iomradh ort", "notification.own_poll": "Thàinig an cunntas-bheachd agad gu crìoch", "notification.poll": "Thàinig cunntas-bheachd sa bhòt thu gu crìoch", @@ -424,10 +424,10 @@ "notifications.filter.all": "Na h-uile", "notifications.filter.boosts": "Brosnachaidhean", "notifications.filter.favourites": "Na h-annsachdan", - "notifications.filter.follows": "A’ leantainn air", + "notifications.filter.follows": "A’ leantainn", "notifications.filter.mentions": "Iomraidhean", "notifications.filter.polls": "Toraidhean cunntais-bheachd", - "notifications.filter.statuses": "Naidheachdan nan daoine air a leanas tu", + "notifications.filter.statuses": "Naidheachdan nan daoine a leanas tu", "notifications.grant_permission": "Thoir cead.", "notifications.group": "Brathan ({count})", "notifications.mark_as_read": "Cuir comharra gun deach gach brath a leughadh", @@ -450,7 +450,7 @@ "privacy.change": "Cuir gleus air prìobhaideachd a’ phuist", "privacy.direct.long": "Chan fhaic ach na cleachdaichean le iomradh orra seo", "privacy.direct.short": "An fheadhainn le iomradh orra a-mhàin", - "privacy.private.long": "Chan fhaic ach na daoine a tha a’ leantainn ort seo", + "privacy.private.long": "Chan fhaic ach na daoine a tha ’gad leantainn seo", "privacy.private.short": "Luchd-leantainn a-mhàin", "privacy.public.long": "Chì a h-uile duine e", "privacy.public.short": "Poblach", @@ -474,7 +474,7 @@ "relative_time.today": "an-diugh", "reply_indicator.cancel": "Sguir dheth", "report.block": "Bac", - "report.block_explanation": "Chan fhaic thu na postaichean aca. Chan fhaic iad na postaichean agad is chan urrainn dhaibh leantainn ort. Mothaichidh iad gun deach am bacadh.", + "report.block_explanation": "Chan fhaic thu na postaichean aca. Chan fhaic iad na postaichean agad is chan urrainn dhaibh ’gad leantainn. Mothaichidh iad gun deach am bacadh.", "report.categories.other": "Eile", "report.categories.spam": "Spama", "report.categories.violation": "Tha an t-susbaint a’ briseadh riaghailt no dhà an fhrithealaiche", @@ -487,7 +487,7 @@ "report.forward": "Sìn air adhart gu {target}", "report.forward_hint": "Chaidh an cunntas a chlàradh air frithealaiche eile. A bheil thu airson lethbhreac dhen ghearan a chur dha-san gun ainm cuideachd?", "report.mute": "Mùch", - "report.mute_explanation": "Chan fhaic thu na postaichean aca. Chì iad na postaichean agad agus ’s urrainn dhaibh leantainn ort fhathast. Cha bhi fios aca gun deach am mùchadh.", + "report.mute_explanation": "Chan fhaic thu na postaichean aca. Chì iad na postaichean agad agus ’s urrainn dhaibh ’gad leantainn fhathast. Cha bhi fios aca gun deach am mùchadh.", "report.next": "Air adhart", "report.placeholder": "Beachdan a bharrachd", "report.reasons.dislike": "Cha toigh leam e", @@ -508,8 +508,8 @@ "report.thanks.take_action_actionable": "Fhad ’s a bhios sinn a’ toirt sùil air, seo nas urrainn dhut dèanamh an aghaidh @{name}:", "report.thanks.title": "Nach eil thu airson seo fhaicinn?", "report.thanks.title_actionable": "Mòran taing airson a’ ghearain, bheir sinn sùil air.", - "report.unfollow": "Na lean air @{name} tuilleadh", - "report.unfollow_explanation": "Tha thu a’ leantainn air a’ chunntas seo. Sgur de leantainn orra ach nach fhaic thu na puist aca nad dhachaigh.", + "report.unfollow": "Na lean @{name} tuilleadh", + "report.unfollow_explanation": "Tha thu a’ leantainn a’ chunntais seo. Sgur dhen leantainn ach nach fhaic thu na puist aca nad dhachaigh.", "report_notification.attached_statuses": "Tha {count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}} ceangailte ris", "report_notification.categories.other": "Eile", "report_notification.categories.spam": "Spama", @@ -539,7 +539,7 @@ "server_banner.server_stats": "Stadastaireachd an fhrithealaiche:", "sign_in_banner.create_account": "Cruthaich cunntas", "sign_in_banner.sign_in": "Clàraich a-steach", - "sign_in_banner.text": "Clàraich a-steach a leantainn air pròifilean no tagaichean hais, a’ cur postaichean ris na h-annsachdan ’s ’gan co-roinneadh is freagairt dhaibh no gabh gnìomh le cunntas o fhrithealaiche eile.", + "sign_in_banner.text": "Clàraich a-steach a leantainn phròifilean no thagaichean hais, a’ cur postaichean ris na h-annsachdan ’s ’gan co-roinneadh is freagairt dhaibh no gabh gnìomh le cunntas o fhrithealaiche eile.", "status.admin_account": "Fosgail eadar-aghaidh na maorsainneachd dha @{name}", "status.admin_status": "Fosgail am post seo ann an eadar-aghaidh na maorsainneachd", "status.block": "Bac @{name}", @@ -609,7 +609,7 @@ "time_remaining.seconds": "{number, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air fhàgail", "timeline_hint.remote_resource_not_displayed": "Cha dèid {resource} o fhrithealaichean eile a shealltainn.", "timeline_hint.resources.followers": "Luchd-leantainn", - "timeline_hint.resources.follows": "A’ leantainn air", + "timeline_hint.resources.follows": "A’ leantainn", "timeline_hint.resources.statuses": "Postaichean nas sine", "trends.counter_by_accounts": "{count, plural, one {{counter} neach} two {{counter} neach} few {{counter} daoine} other {{counter} duine}} {days, plural, one {san {days} latha} two {san {days} latha} few {sna {days} làithean} other {sna {days} latha}} seo chaidh", "trends.trending_now": "A’ treandadh an-dràsta", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index bbf0cd9841..6a9260064c 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Seguindo} other {{counter} Seguindo}}", "account.follows.empty": "Esta usuaria aínda non segue a ninguén.", "account.follows_you": "Séguete", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Ir ao perfil", "account.hide_reblogs": "Agochar repeticións de @{name}", "account.joined_short": "Uniuse", "account.languages": "Modificar os idiomas subscritos", @@ -182,14 +182,14 @@ "directory.local": "Só de {domain}", "directory.new_arrivals": "Recén chegadas", "directory.recently_active": "Activas recentemente", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Axustes da conta", + "disabled_account_banner.text": "Actualmente a túa conta {disabledAccount} está desactivada.", "dismissable_banner.community_timeline": "Estas son as publicacións máis recentes das persoas que teñen a súa conta en {domain}.", "dismissable_banner.dismiss": "Desbotar", "dismissable_banner.explore_links": "As persoas deste servidor e da rede descentralizada están a falar destas historias agora mesmo.", - "dismissable_banner.explore_statuses": "Está aumentando a popularidade destas publicacións no servidor e a rede descentralizada.", - "dismissable_banner.explore_tags": "Estes cancelos están gañando popularidade entre as persoas deste servidor e outros servidores da rede descentralizada.", - "dismissable_banner.public_timeline": "Estas son as publicacións máis recentes das persoas deste servidor e outros servidores da rede descentralizada cos que está conectado.", + "dismissable_banner.explore_statuses": "Está aumentando a popularidade destas publicacións no servidor e na rede descentralizada.", + "dismissable_banner.explore_tags": "Estes cancelos están gañando popularidade entre as persoas deste servidor e noutros servidores da rede descentralizada.", + "dismissable_banner.public_timeline": "Estas son as publicacións máis recentes das persoas deste servidor e noutros servidores da rede descentralizada cos que está conectado.", "embed.instructions": "Engade esta publicación ó teu sitio web copiando o seguinte código.", "embed.preview": "Así será mostrado:", "emoji_button.activity": "Actividade", @@ -264,7 +264,7 @@ "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", "footer.about": "Acerca de", "footer.directory": "Directorio de perfís", - "footer.get_app": "Obtén a app", + "footer.get_app": "Descarga a app", "footer.invite": "Convidar persoas", "footer.keyboard_shortcuts": "Atallos do teclado", "footer.privacy_policy": "Política de privacidade", @@ -287,14 +287,14 @@ "home.column_settings.show_replies": "Amosar respostas", "home.hide_announcements": "Agochar anuncios", "home.show_announcements": "Amosar anuncios", - "interaction_modal.description.favourite": "Cunha conta en Mastodon, poderá marcar esta publicación como favorita, para gardalo e para que o autor saiba o moito que lle gustou.", - "interaction_modal.description.follow": "Cunha conta en Mastodon, poderá seguir {name} e recibir as súas publicacións na súa cronoloxía de inicio.", - "interaction_modal.description.reblog": "Cunha conta en Mastodon, poderá difundir esta publicación e compartila cos seus seguidores.", - "interaction_modal.description.reply": "Cunha conta en Mastodon, poderá responder a esta publicación.", + "interaction_modal.description.favourite": "Cunha conta en Mastodon, poderás marcar esta publicación como favorita, para gardalo e para que o autor saiba o moito que lle gustou.", + "interaction_modal.description.follow": "Cunha conta en Mastodon, poderás seguir a {name} e recibir as súas publicacións na túa cronoloxía de inicio.", + "interaction_modal.description.reblog": "Cunha conta en Mastodon, poderás promover esta publicación para compartila con quen te siga.", + "interaction_modal.description.reply": "Cunha conta en Mastodon, poderás responder a esta publicación.", "interaction_modal.on_another_server": "Nun servidor diferente", "interaction_modal.on_this_server": "Neste servidor", - "interaction_modal.other_server_instructions": "Só ten que copiar e pegar este URL na barra de procuras da súa aplicación favorita, ou da interface web na que teña unha sesión iniciada.", - "interaction_modal.preamble": "Como Mastodon é descentralizado, é posible usar unha conta existente noutro servidor Mastodon, ou nunha plataforma compatible, se non dispoñe dunha conta neste servidor.", + "interaction_modal.other_server_instructions": "Só tes que copiar e pegar este URL na barra de procuras da túa aplicación favorita, ou da interface web na que teñas unha sesión iniciada.", + "interaction_modal.preamble": "Como Mastodon é descentralizado, é posible usar unha conta existente noutro servidor Mastodon, ou nunha plataforma compatible, se non dispós dunha conta neste servidor.", "interaction_modal.title.favourite": "Marcar coma favorito a publicación de {name}", "interaction_modal.title.follow": "Seguir a {name}", "interaction_modal.title.reblog": "Promover a publicación de {name}", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Agochar {number, plural, one {imaxe} other {imaxes}}", "missing_indicator.label": "Non atopado", "missing_indicator.sublabel": "Este recurso non foi atopado", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "A túa conta {disabledAccount} está actualmente desactivada porque movéchela a {movedToAccount}.", "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Agochar notificacións desta usuaria?", "mute_modal.indefinite": "Indefinida", @@ -450,7 +450,7 @@ "privacy.change": "Axustar privacidade", "privacy.direct.long": "Só para as usuarias mencionadas", "privacy.direct.short": "Só persoas mencionadas", - "privacy.private.long": "Só para os seguidoras", + "privacy.private.long": "Só para persoas que te seguen", "privacy.private.short": "Só para seguidoras", "privacy.public.long": "Visible por todas", "privacy.public.short": "Público", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 363a9c3e56..644574f387 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -1,9 +1,9 @@ { "about.blocks": "שרתים מוגבלים", - "about.contact": "Contact:", + "about.contact": "יצירת קשר:", "about.disclaimer": "מסטודון היא תוכנת קוד פתוח חינמית וסימן מסחרי של Mastodon gGmbH.", "about.domain_blocks.comment": "סיבה", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.domain": "שם מתחם", "about.domain_blocks.preamble": "ככלל מסטודון מאפשרת לך לצפות בתוכן ולתקשר עם משתמשים מכל שרת בפדיברס. אלו הם היוצאים מן הכלל שהוגדרו עבור השרת המסוים הזה.", "about.domain_blocks.severity": "חומרה", "about.domain_blocks.silenced.explanation": "ככלל פרופילים ותוכן משרת זה לא יוצגו, אלא אם חיפשת אותם באופן מפורש או בחרת להשתתף בו על ידי מעקב.", @@ -28,9 +28,9 @@ "account.edit_profile": "עריכת פרופיל", "account.enable_notifications": "שלח לי התראות כש@{name} מפרסם", "account.endorse": "קדם את החשבון בפרופיל", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "הודעה אחרונה בתאריך {date}", + "account.featured_tags.last_status_never": "אין הודעות", + "account.featured_tags.title": "התגיות המועדפות של {name}", "account.follow": "עקוב", "account.followers": "עוקבים", "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.", @@ -39,25 +39,25 @@ "account.following_counter": "{count, plural,one {עוקב אחרי {counter}}other {עוקב אחרי {counter}}}", "account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.", "account.follows_you": "במעקב אחריך", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "מעבר לפרופיל", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "תאריך הצטרפות", + "account.languages": "שנה שפת הרשמה", "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}", "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.", "account.media": "מדיה", "account.mention": "אזכור של @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "{name} ציינו שהחשבון החדש שלהם הוא:", "account.mute": "להשתיק את @{name}", "account.mute_notifications": "להסתיר התראות מ @{name}", "account.muted": "מושתק", "account.posts": "פוסטים", - "account.posts_with_replies": "פוסטים ותגובות", + "account.posts_with_replies": "הודעות ותגובות", "account.report": "דווח על @{name}", "account.requested": "בהמתנה לאישור. לחצי כדי לבטל בקשת מעקב", "account.share": "שתף את הפרופיל של @{name}", "account.show_reblogs": "הצג הדהודים מאת @{name}", - "account.statuses_counter": "{count, plural, one {{counter} פוסט} two {{counter} פוסטים} many {{counter} פוסטים} other {{counter} פוסטים}}", + "account.statuses_counter": "{count, plural, one {הודעה} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}}", "account.unblock": "הסר את החסימה של @{name}", "account.unblock_domain": "הסירי את החסימה של קהילת {domain}", "account.unblock_short": "הסר חסימה", @@ -81,24 +81,24 @@ "audio.hide": "השתק", "autosuggest_hashtag.per_week": "{count} לשבוע", "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "העתקת הודעת התקלה", + "bundle_column_error.error.body": "הדף המבוקש אינו זמין. זה עשוי להיות באג בקוד או בעייה בתאימות הדפדפן.", + "bundle_column_error.error.title": "הו, לא!", + "bundle_column_error.network.body": "קרתה תקלה בעת טעינת העמוד. זו עשויה להיות תקלה זמנית בשרת או בחיבור האינטרנט שלך.", + "bundle_column_error.network.title": "שגיאת רשת", "bundle_column_error.retry": "לנסות שוב", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "חזרה לדף הבית", + "bundle_column_error.routing.body": "העמוד המבוקש לא נמצא. האם ה־URL נכון?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "לסגור", "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.", "bundle_modal_error.retry": "לנסות שוב", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "מכיוון שמסטודון הוא רשת מבוזרת, ניתן ליצור חשבון על שרת נוסף ועדיין לקיים קשר עם משתמשים בשרת זה.", + "closed_registrations_modal.description": "יצירת חשבון על שרת {domain} איננה אפשרית כרגע, אבל זכרו שאינכן זקוקות לחשבון על {domain} כדי להשתמש במסטודון.", + "closed_registrations_modal.find_another_server": "חיפוש שרת אחר", + "closed_registrations_modal.preamble": "מסטודון הוא רשת מבוזרת, כך שלא משנה היכן החשבון שלך, קיימת האפשרות לעקוב ולתקשר עם משתמשים בשרת הזה. אפשר אפילו להריץ שרת בעצמך!", + "closed_registrations_modal.title": "להרשם למסטודון", + "column.about": "אודות", "column.blocks": "משתמשים חסומים", "column.bookmarks": "סימניות", "column.community": "פיד שרת מקומי", @@ -124,11 +124,11 @@ "community.column_settings.local_only": "מקומי בלבד", "community.column_settings.media_only": "מדיה בלבד", "community.column_settings.remote_only": "מרוחק בלבד", - "compose.language.change": "שינוי שפת הפוסט", + "compose.language.change": "שינוי שפת ההודעה", "compose.language.search": "חיפוש שפות...", "compose_form.direct_message_warning_learn_more": "מידע נוסף", - "compose_form.encryption_warning": "פוסטים במסטודון לא מוצפנים מקצה לקצה. אל תשתפו מידע רגיש במסטודון.", - "compose_form.hashtag_warning": "פוסט זה לא יירשם תחת תגי הקבצה (האשטאגים) היות והנראות שלו היא 'לא רשום'. רק פוסטים ציבוריים יכולים להימצא באמצעות תגי הקבצה.", + "compose_form.encryption_warning": "הודעות במסטודון לא מוצפנות מקצה לקצה. אל תשתפו מידע רגיש במסטודון.", + "compose_form.hashtag_warning": "הודעה זו לא תרשם תחת תגיות הקבצה (האשטאגים) היות והנראות שלה היא 'לא רשום'. רק הודעות ציבוריות יכולות להימצא באמצעות תגיות הקבצה.", "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.", "compose_form.lock_disclaimer.lock": "נעול", "compose_form.placeholder": "על מה את/ה חושב/ת ?", @@ -139,7 +139,7 @@ "compose_form.poll.switch_to_multiple": "אפשרו בחירה מרובה בסקר", "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר", "compose_form.publish": "פרסום", - "compose_form.publish_loud": "לחצרץ!", + "compose_form.publish_loud": "{publish}!", "compose_form.save_changes": "שמירת שינויים", "compose_form.sensitive.hide": "{count, plural, one {סימון מידע כרגיש} other {סימון מידע כרגיש}}", "compose_form.sensitive.marked": "{count, plural, one {מידע מסומן כרגיש} other {מידע מסומן כרגיש}}", @@ -151,8 +151,8 @@ "confirmations.block.block_and_report": "לחסום ולדווח", "confirmations.block.confirm": "לחסום", "confirmations.block.message": "האם את/ה בטוח/ה שברצונך למחוק את \"{name}\"?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "ויתור על בקשה", + "confirmations.cancel_follow_request.message": "האם באמת לוותר על בקשת המעקב אחרי {name}?", "confirmations.delete.confirm": "למחוק", "confirmations.delete.message": "בטוח/ה שאת/ה רוצה למחוק את ההודעה?", "confirmations.delete_list.confirm": "למחוק", @@ -164,10 +164,10 @@ "confirmations.logout.confirm": "להתנתק", "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?", "confirmations.mute.confirm": "להשתיק", - "confirmations.mute.explanation": "זה יסתיר פוסטים שלהם ופוסטים שמאזכרים אותם, אבל עדיין יתיר להם לראות פוסטים שלך ולעקוב אחריך.", + "confirmations.mute.explanation": "זה יסתיר הודעות שלהם והודעות שמאזכרות אותם, אבל עדיין יתיר להם לראות הודעות שלך ולעקוב אחריך.", "confirmations.mute.message": "בטוח/ה שברצונך להשתיק את {name}?", "confirmations.redraft.confirm": "מחיקה ועריכה מחדש", - "confirmations.redraft.message": "בטוחה שאת רוצה למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות לפוסט המקורי ישארו יתומות.", + "confirmations.redraft.message": "בטוחה שאת רוצה למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות להודעה המקורית ישארו יתומות.", "confirmations.reply.confirm": "תגובה", "confirmations.reply.message": "תגובה עכשיו תדרוס את ההודעה שכבר התחלתים לכתוב. האם אתם בטוחים שברצונכם להמשיך?", "confirmations.unfollow.confirm": "הפסקת מעקב", @@ -176,21 +176,21 @@ "conversation.mark_as_read": "סמן כנקרא", "conversation.open": "צפו בשיחה", "conversation.with": "עם {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "הועתק", + "copypaste.copy": "העתקה", "directory.federated": "מהפדרציה הידועה", "directory.local": "מ- {domain} בלבד", "directory.new_arrivals": "חדשים כאן", "directory.recently_active": "פעילים לאחרונה", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", - "embed.instructions": "ניתן להטמיע את הפוסט הזה באתרך ע\"י העתקת הקוד שלהלן.", + "disabled_account_banner.account_settings": "הגדרות חשבון", + "disabled_account_banner.text": "חשבונך {disabledAccount} אינו פעיל כרגע.", + "dismissable_banner.community_timeline": "אלו הם ההודעות הציבוריות האחרונות מהמשתמשים על שרת {domain}.", + "dismissable_banner.dismiss": "בטל", + "dismissable_banner.explore_links": "אלו סיפורי החדשות האחרונים שמדוברים על ידי משתמשים בשרת זה ואחרים ברשת המבוזרת כרגע.", + "dismissable_banner.explore_statuses": "ההודעות האלו, משרת זה ואחרים ברשת המבוזרת, כרגע צוברות חשיפה.", + "dismissable_banner.explore_tags": "התגיות האלו, משרת זה ואחרים ברשת המבוזרת, כרגע צוברות חשיפה.", + "dismissable_banner.public_timeline": "אלו הם ההודעות הציבוריות האחרונות מהמשתמשים משרת זה ואחרים ברשת המבוזרת ששרת זה יודע עליהן.", + "embed.instructions": "ניתן להטמיע את ההודעה הזו באתרך ע\"י העתקת הקוד שלהלן.", "embed.preview": "דוגמא כיצד זה יראה:", "emoji_button.activity": "פעילות", "emoji_button.clear": "ניקוי", @@ -208,22 +208,22 @@ "emoji_button.symbols": "סמלים", "emoji_button.travel": "טיולים ואתרים", "empty_column.account_suspended": "חשבון מושהה", - "empty_column.account_timeline": "אין עדיין אף פוסט!", + "empty_column.account_timeline": "אין עדיין אף הודעה!", "empty_column.account_unavailable": "פרופיל לא זמין", "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.", - "empty_column.bookmarked_statuses": "אין עדיין פוסטים שחיבבת. כשתחבב את הראשון, הוא יופיע כאן.", + "empty_column.bookmarked_statuses": "אין עדיין הודעות שחיבבת. כשתחבב את הראשונה, היא תופיע כאן.", "empty_column.community": "פיד השרת המקומי ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!", "empty_column.direct": "אין לך שום הודעות פרטיות עדיין. כשתשלחו או תקבלו אחת, היא תופיע כאן.", "empty_column.domain_blocks": "אין עדיין קהילות מוסתרות.", "empty_column.explore_statuses": "אין נושאים חמים כרגע. אולי אחר כך!", - "empty_column.favourited_statuses": "אין עדיין פוסטים שחיבבת. כשתחבב את הראשון, הוא יופיע כאן.", - "empty_column.favourites": "עוד לא חיבבו את הפוסט הזה. כאשר זה יקרה, החיבובים יופיעו כאן.", + "empty_column.favourited_statuses": "אין עדיין הודעות שחיבבת. כשתחבב את הראשונה, היא תופיע כאן.", + "empty_column.favourites": "עוד לא חיבבו את ההודעה הזו. כאשר זה יקרה, החיבובים יופיעו כאן.", "empty_column.follow_recommendations": "נראה שלא ניתן לייצר המלצות עבורך. נסה/י להשתמש בחיפוש כדי למצוא אנשים מוכרים או לבדוק את הנושאים החמים.", "empty_column.follow_requests": "אין לך שום בקשות מעקב עדיין. לכשיתקבלו כאלה, הן תופענה כאן.", "empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.", "empty_column.home": "פיד הבית ריק ! אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר משתמשים/ות אחרים/ות. {suggestions}", "empty_column.home.suggestions": "ראה/י כמה הצעות", - "empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו פוסטים חדשים, הם יופיעו פה.", + "empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו הודעות חדשות, הן יופיעו פה.", "empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.", "empty_column.mutes": "עוד לא השתקת שום משתמש.", "empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב.", @@ -238,37 +238,37 @@ "explore.suggested_follows": "עבורך", "explore.title": "סיור", "explore.trending_links": "חדשות", - "explore.trending_statuses": "פוסטים", + "explore.trending_statuses": "הודעות", "explore.trending_tags": "האשטאגים", - "filter_modal.added.context_mismatch_explanation": "קטגוריית הפילטר הזאת לא חלה על ההקשר שממנו הגעת אל הפוסט הזה. אם תרצה/י שהפוסט יסונן גם בהקשר זה, תצטרך/י לערוך את הפילטר.", + "filter_modal.added.context_mismatch_explanation": "קטגוריית הסנן הזאת לא חלה על ההקשר שממנו הגעת אל ההודעה הזו. אם תרצה/י שההודעה תסונן גם בהקשר זה, תצטרך/י לערוך את הסנן.", "filter_modal.added.context_mismatch_title": "אין התאמה להקשר!", "filter_modal.added.expired_explanation": "פג תוקפה של קטגוריית הסינון הזו, יש צורך לשנות את תאריך התפוגה כדי שהסינון יוחל.", "filter_modal.added.expired_title": "פג תוקף הפילטר!", "filter_modal.added.review_and_configure": "לסקירה והתאמה מתקדמת של קטגוריית הסינון הזו, לכו ל{settings_link}.", "filter_modal.added.review_and_configure_title": "אפשרויות סינון", "filter_modal.added.settings_link": "דף הגדרות", - "filter_modal.added.short_explanation": "הפוסט הזה הוסף לקטגוריית הסינון הזו: {title}.", + "filter_modal.added.short_explanation": "ההודעה הזו הוספה לקטגוריית הסינון הזו: {title}.", "filter_modal.added.title": "הפילטר הוסף!", "filter_modal.select_filter.context_mismatch": "לא חל בהקשר זה", "filter_modal.select_filter.expired": "פג התוקף", "filter_modal.select_filter.prompt_new": "קטגוריה חדשה {name}", "filter_modal.select_filter.search": "חיפוש או יצירה", "filter_modal.select_filter.subtitle": "שימוש בקטגורייה קיימת או יצירת אחת חדשה", - "filter_modal.select_filter.title": "סינון הפוסט הזה", - "filter_modal.title.status": "סנן פוסט", + "filter_modal.select_filter.title": "סינון ההודעה הזו", + "filter_modal.title.status": "סנן הודעה", "follow_recommendations.done": "בוצע", - "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את חצרוציהם! הנה כמה הצעות.", - "follow_recommendations.lead": "חצרוצים מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!", + "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את הודעותיהם! הנה כמה הצעות.", + "follow_recommendations.lead": "הודעות מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!", "follow_request.authorize": "הרשאה", "follow_request.reject": "דחיה", "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.about": "אודות", + "footer.directory": "מדריך פרופילים", + "footer.get_app": "להתקנת היישומון", + "footer.invite": "להזמין אנשים", + "footer.keyboard_shortcuts": "קיצורי מקלדת", + "footer.privacy_policy": "מדיניות פרטיות", + "footer.source_code": "צפיה בקוד המקור", "generic.saved": "נשמר", "getting_started.heading": "בואו נתחיל", "hashtag.column_header.tag_mode.all": "ו- {additional}", @@ -287,18 +287,18 @@ "home.column_settings.show_replies": "הצגת תגובות", "home.hide_announcements": "הסתר הכרזות", "home.show_announcements": "הצג הכרזות", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "עם חשבון מסטודון, ניתן לחבב את ההודעה כדי לומר למחבר/ת שהערכת את תוכנה או כדי לשמור אותה לקריאה בעתיד.", + "interaction_modal.description.follow": "עם חשבון מסטודון, ניתן לעקוב אחרי {name} כדי לקבל את הםוסטים שלו/ה בפיד הבית.", + "interaction_modal.description.reblog": "עם חשבון מסטודון, ניתן להדהד את ההודעה ולשתף עם עוקבים.", + "interaction_modal.description.reply": "עם חשבון מסטודון, ניתן לענות להודעה.", + "interaction_modal.on_another_server": "על שרת אחר", + "interaction_modal.on_this_server": "על שרת זה", + "interaction_modal.other_server_instructions": "פשוט להעתיק ולהדביק את ה־URL לחלונית החיפוש ביישום או הדפדפן ממנו התחברת.", + "interaction_modal.preamble": "כיוון שמסטודון מבוזרת, תוכל/י להשתמש בחשבון שלך משרתי מסטודון או רשתות תואמות אחרות אם אין לך חשבון על שרת זה.", + "interaction_modal.title.favourite": "חיבוב ההודעה של {name}", + "interaction_modal.title.follow": "לעקוב אחרי {name}", + "interaction_modal.title.reblog": "להדהד את ההודעה של {name}", + "interaction_modal.title.reply": "תשובה להודעה של {name}", "intervals.full.days": "{number, plural, one {# יום} other {# ימים}}", "intervals.full.hours": "{number, plural, one {# שעה} other {# שעות}}", "intervals.full.minutes": "{number, plural, one {# דקה} other {# דקות}}", @@ -310,7 +310,7 @@ "keyboard_shortcuts.description": "תיאור", "keyboard_shortcuts.direct": "לפתיחת טור הודעות ישירות", "keyboard_shortcuts.down": "לנוע במורד הרשימה", - "keyboard_shortcuts.enter": "פתח פוסט", + "keyboard_shortcuts.enter": "פתח הודעה", "keyboard_shortcuts.favourite": "לחבב", "keyboard_shortcuts.favourites": "פתיחת רשימת מועדפים", "keyboard_shortcuts.federated": "פתיחת ציר זמן בין-קהילתי", @@ -324,16 +324,16 @@ "keyboard_shortcuts.my_profile": "פתיחת הפרופיל שלך", "keyboard_shortcuts.notifications": "פתיחת טור התראות", "keyboard_shortcuts.open_media": "פתיחת מדיה", - "keyboard_shortcuts.pinned": "פתיחת פוסטים נעוצים", + "keyboard_shortcuts.pinned": "פתיחת הודעה נעוצות", "keyboard_shortcuts.profile": "פתח את פרופיל המשתמש", - "keyboard_shortcuts.reply": "תגובה לפוסט", + "keyboard_shortcuts.reply": "תגובה להודעה", "keyboard_shortcuts.requests": "פתיחת רשימת בקשות מעקב", "keyboard_shortcuts.search": "להתמקד בחלון החיפוש", "keyboard_shortcuts.spoilers": "הצגת/הסתרת שדה אזהרת תוכן (CW)", "keyboard_shortcuts.start": "לפתוח את הטור \"בואו נתחיל\"", "keyboard_shortcuts.toggle_hidden": "הצגת/הסתרת טקסט מוסתר מאחורי אזהרת תוכן", "keyboard_shortcuts.toggle_sensitivity": "הצגת/הסתרת מדיה", - "keyboard_shortcuts.toot": "להתחיל פוסט חדש", + "keyboard_shortcuts.toot": "להתחיל הודעה חדשה", "keyboard_shortcuts.unfocus": "לצאת מתיבת חיבור/חיפוש", "keyboard_shortcuts.up": "לנוע במעלה הרשימה", "lightbox.close": "סגירה", @@ -342,7 +342,7 @@ "lightbox.next": "הבא", "lightbox.previous": "הקודם", "limited_account_hint.action": "הצג חשבון בכל זאת", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "פרופיל המשתמש הזה הוסתר על ידי המנחים של {domain}.", "lists.account.add": "הוסף לרשימה", "lists.account.remove": "הסר מרשימה", "lists.delete": "מחיקת רשימה", @@ -358,18 +358,18 @@ "lists.subheading": "הרשימות שלך", "load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}", "loading_indicator.label": "טוען...", - "media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {Hide images} many {להסתיר תמונות} other {Hide תמונות}}", + "media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {להסתיר תמונותיים} many {להסתיר תמונות} other {להסתיר תמונות}}", "missing_indicator.label": "לא נמצא", "missing_indicator.sublabel": "לא ניתן היה למצוא את המשאב", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "חשבונך {disabledAccount} אינו פעיל כרגע עקב מעבר ל{movedToAccount}.", "mute_modal.duration": "משך הזמן", "mute_modal.hide_notifications": "להסתיר התראות מחשבון זה?", "mute_modal.indefinite": "ללא תאריך סיום", - "navigation_bar.about": "About", + "navigation_bar.about": "אודות", "navigation_bar.blocks": "משתמשים חסומים", "navigation_bar.bookmarks": "סימניות", "navigation_bar.community_timeline": "פיד שרת מקומי", - "navigation_bar.compose": "צור פוסט חדש", + "navigation_bar.compose": "צור הודעה חדשה", "navigation_bar.direct": "הודעות ישירות", "navigation_bar.discover": "גלה", "navigation_bar.domain_blocks": "קהילות (שמות מתחם) חסומות", @@ -383,23 +383,23 @@ "navigation_bar.logout": "התנתקות", "navigation_bar.mutes": "משתמשים בהשתקה", "navigation_bar.personal": "אישי", - "navigation_bar.pins": "פוסטים נעוצים", + "navigation_bar.pins": "הודעות נעוצות", "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "פיד כללי (כל השרתים)", - "navigation_bar.search": "Search", + "navigation_bar.search": "חיפוש", "navigation_bar.security": "אבטחה", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "יש להיות מאומת כדי לגשת למשאב זה.", "notification.admin.report": "{name} דיווח.ה על {target}", "notification.admin.sign_up": "{name} נרשמו", - "notification.favourite": "{name} חיבב/ה את הפוסט שלך", + "notification.favourite": "הודעתך חובבה על ידי {name}", "notification.follow": "{name} במעקב אחרייך", "notification.follow_request": "{name} ביקשו לעקוב אחריך", "notification.mention": "אוזכרת על ידי {name}", "notification.own_poll": "הסקר שלך הסתיים", "notification.poll": "סקר שהצבעת בו הסתיים", - "notification.reblog": "הפוסט הזה הודהד על ידי {name}", + "notification.reblog": "הודעתך הודהדה על ידי {name}", "notification.status": "{name} הרגע פרסמו", - "notification.update": "{name} ערכו פוסט", + "notification.update": "{name} ערכו הודעה", "notifications.clear": "הסרת התראות", "notifications.clear_confirmation": "להסיר את כל ההתראות לצמיתות ? ", "notifications.column_settings.admin.report": "דו\"חות חדשים", @@ -417,7 +417,7 @@ "notifications.column_settings.reblog": "הדהודים:", "notifications.column_settings.show": "הצגה בטור", "notifications.column_settings.sound": "שמע מופעל", - "notifications.column_settings.status": "פוסטים חדשים:", + "notifications.column_settings.status": "הודעות חדשות:", "notifications.column_settings.unread_notifications.category": "התראות שלא נקראו", "notifications.column_settings.unread_notifications.highlight": "הבלט התראות שלא נקראו", "notifications.column_settings.update": "שינויים:", @@ -456,8 +456,8 @@ "privacy.public.short": "פומבי", "privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי גילוי", "privacy.unlisted.short": "לא רשום (לא לפיד הכללי)", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "עודכן לאחרונה {date}", + "privacy_policy.title": "מדיניות פרטיות", "refresh": "רענון", "regeneration_indicator.label": "טוען…", "regeneration_indicator.sublabel": "פיד הבית שלך בהכנה!", @@ -474,20 +474,20 @@ "relative_time.today": "היום", "reply_indicator.cancel": "ביטול", "report.block": "לחסום", - "report.block_explanation": "לא ניתן יהיה לראות את הפוסטים שלהן. הן לא יוכלו לראות את הפוסטים שלך או לעקוב אחריך. הם יוכלו לדעת שהם חסומים.", + "report.block_explanation": "לא ניתן יהיה לראות את ההודעות שלהן. הן לא יוכלו לראות את ההודעות שלך או לעקוב אחריך. הם יוכלו לדעת שהם חסומים.", "report.categories.other": "אחר", "report.categories.spam": "ספאם", "report.categories.violation": "התוכן מפר אחד או יותר מחוקי השרת", "report.category.subtitle": "בחר/י את המתאים ביותר", "report.category.title": "ספר/י לנו מה קורה עם ה-{type} הזה", "report.category.title_account": "פרופיל", - "report.category.title_status": "פוסט", + "report.category.title_status": "הודעה", "report.close": "בוצע", "report.comment.title": "האם יש דבר נוסף שלדעתך חשוב שנדע?", "report.forward": "קדם ל-{target}", "report.forward_hint": "חשבון זה הוא משרת אחר. האם לשלוח בנוסף עותק אנונימי לשם?", "report.mute": "להשתיק", - "report.mute_explanation": "לא ניתן יהיה לראות את הפוסטים. הם עדיין יוכלו לעקוב אחריך ולראות את הפוסטים שלך ולא ידעו שהם מושתקים.", + "report.mute_explanation": "לא ניתן יהיה לראות את ההודעות. הם עדיין יוכלו לעקוב אחריך ולראות את ההודעות שלך ולא ידעו שהם מושתקים.", "report.next": "הבא", "report.placeholder": "הערות נוספות", "report.reasons.dislike": "אני לא אוהב את זה", @@ -501,7 +501,7 @@ "report.rules.subtitle": "בחר/י את כל המתאימים", "report.rules.title": "אילו חוקים מופרים?", "report.statuses.subtitle": "בחר/י את כל המתאימים", - "report.statuses.title": "האם ישנם פוסטים התומכים בדיווח זה?", + "report.statuses.title": "האם ישנן הודעות התומכות בדיווח זה?", "report.submit": "שליחה", "report.target": "דיווח על {target}", "report.thanks.take_action": "הנה כמה אפשרויות לשליטה בתצוגת מסטודון:", @@ -510,43 +510,43 @@ "report.thanks.title_actionable": "תודה על הדיווח, נבדוק את העניין.", "report.unfollow": "הפסיקו לעקוב אחרי @{name}", "report.unfollow_explanation": "אתם עוקבים אחרי החשבון הזה. כדי להפסיק לראות את הפרסומים שלו בפיד הבית שלכם, הפסיקו לעקוב אחריהם.", - "report_notification.attached_statuses": "{count, plural, one {{count} פוסט} two {{count} posts} many {{count} פוסטים} other {{count} פוסטים}} מצורפים", + "report_notification.attached_statuses": "{count, plural, one {הודעה מצורפת} two {הודעותיים מצורפות} many {{count} הודעות מצורפות} other {{count} הודעות מצורפות}}", "report_notification.categories.other": "שונות", "report_notification.categories.spam": "ספאם (דואר זבל)", "report_notification.categories.violation": "הפרת כלל", "report_notification.open": "פתח דו\"ח", "search.placeholder": "חיפוש", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "חפש או הזן קישור", "search_popout.search_format": "מבנה חיפוש מתקדם", "search_popout.tips.full_text": "טקסט פשוט מחזיר פוסטים שכתבת, חיבבת, הידהדת או שאוזכרת בהם, כמו גם שמות משתמשים, שמות להצגה ותגיות מתאימים.", - "search_popout.tips.hashtag": "האשתג", - "search_popout.tips.status": "פוסט", + "search_popout.tips.hashtag": "תגית", + "search_popout.tips.status": "הודעה", "search_popout.tips.text": "טקסט פשוט מחזיר כינויים, שמות משתמש והאשתגים", "search_popout.tips.user": "משתמש(ת)", "search_results.accounts": "אנשים", "search_results.all": "כל התוצאות", - "search_results.hashtags": "האשתגיות", + "search_results.hashtags": "תגיות", "search_results.nothing_found": "לא נמצא דבר עבור תנאי חיפוש אלה", - "search_results.statuses": "פוסטים", - "search_results.statuses_fts_disabled": "חיפוש פוסטים לפי תוכן לא מאופשר בשרת מסטודון זה.", - "search_results.title": "Search for {q}", + "search_results.statuses": "הודעות", + "search_results.statuses_fts_disabled": "חיפוש הודעות לפי תוכן לא מאופשר בשרת מסטודון זה.", + "search_results.title": "חפש את: {q}", "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "משתמשים פעילים בשרת ב־30 הימים האחרונים (משתמשים פעילים חודשיים)", + "server_banner.active_users": "משתמשים פעילים", + "server_banner.administered_by": "מנוהל ע\"י:", + "server_banner.introduction": "{domain} הוא שרת ברשת המבוזרת {mastodon}.", + "server_banner.learn_more": "מידע נוסף", + "server_banner.server_stats": "סטטיסטיקות שרת:", + "sign_in_banner.create_account": "יצירת חשבון", + "sign_in_banner.sign_in": "התחברות", + "sign_in_banner.text": "יש להתחבר כדי לעקוב אחרי משתמשים או תגיות, לחבב, לשתף ולענות להודעות, או לנהל תקשורת מהחשבון שלך על שרת אחר.", "status.admin_account": "פתח/י ממשק ניהול עבור @{name}", "status.admin_status": "Open this status in the moderation interface", "status.block": "חסימת @{name}", "status.bookmark": "סימניה", "status.cancel_reblog_private": "הסרת הדהוד", "status.cannot_reblog": "לא ניתן להדהד הודעה זו", - "status.copy": "העתק/י קישור לפוסט זה", + "status.copy": "העתק/י קישור להודעה זו", "status.delete": "מחיקה", "status.detailed_status": "תצוגת שיחה מפורטת", "status.direct": "הודעה ישירה ל@{name}", @@ -555,9 +555,9 @@ "status.edited_x_times": "נערך {count, plural, one {פעם {count}} other {{count} פעמים}}", "status.embed": "הטמעה", "status.favourite": "חיבוב", - "status.filter": "סנן פוסט זה", + "status.filter": "סנן הודעה זו", "status.filtered": "סונן", - "status.hide": "הסתר פוסט", + "status.hide": "הסתר הודעה", "status.history.created": "{name} יצר/ה {date}", "status.history.edited": "{name} ערך/ה {date}", "status.load_more": "עוד", @@ -566,17 +566,17 @@ "status.more": "עוד", "status.mute": "להשתיק את @{name}", "status.mute_conversation": "השתקת שיחה", - "status.open": "הרחבת פוסט זה", + "status.open": "הרחבת הודעה זו", "status.pin": "הצמדה לפרופיל שלי", - "status.pinned": "פוסט נעוץ", + "status.pinned": "הודעה נעוצה", "status.read_more": "לקרוא עוד", "status.reblog": "הדהוד", "status.reblog_private": "להדהד ברמת הנראות המקורית", "status.reblogged_by": "{name} הידהד/ה:", - "status.reblogs.empty": "עוד לא הידהדו את הפוסט הזה. כאשר זה יקרה, ההדהודים יופיעו כאן.", + "status.reblogs.empty": "עוד לא הידהדו את ההודעה הזו. כאשר זה יקרה, ההדהודים יופיעו כאן.", "status.redraft": "מחיקה ועריכה מחדש", "status.remove_bookmark": "הסרת סימניה", - "status.replied_to": "Replied to {name}", + "status.replied_to": "הגב לחשבון {name}", "status.reply": "תגובה", "status.replyAll": "תגובה לפתיל", "status.report": "דיווח על @{name}", @@ -587,15 +587,15 @@ "status.show_less_all": "להציג פחות מהכל", "status.show_more": "הראה יותר", "status.show_more_all": "להציג יותר מהכל", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "הצגת מקור", + "status.translate": "לתרגם", + "status.translated_from_with": "לתרגם משפה {lang} באמצעות {provider}", "status.uncached_media_warning": "לא זמין", "status.unmute_conversation": "הסרת השתקת שיחה", "status.unpin": "לשחרר מקיבוע באודות", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "רק הודעות בשפות הנבחרות יופיעו בפיד הבית וברשימות שלך אחרי השינוי. נקו את כל הבחירות כדי לראות את כל השפות.", + "subscribed_languages.save": "שמירת שינויים", + "subscribed_languages.target": "שינוי רישום שפה עבור {target}", "suggestions.dismiss": "להתעלם מהצעה", "suggestions.header": "ייתכן שזה יעניין אותך…", "tabs_bar.federated_timeline": "פיד כללי (בין-קהילתי)", @@ -610,8 +610,8 @@ "timeline_hint.remote_resource_not_displayed": "{resource} משרתים אחרים לא מוצגים.", "timeline_hint.resources.followers": "עוקבים", "timeline_hint.resources.follows": "נעקבים", - "timeline_hint.resources.statuses": "פוסטים ישנים יותר", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "timeline_hint.resources.statuses": "הודעות ישנות יותר", + "trends.counter_by_accounts": "{count, plural, one {אדם {count}} other {{count} א.נשים}} {days, plural, one {מאז אתמול} two {ביומיים האחרונים} other {במשך {days} הימים האחרונים}}", "trends.trending_now": "נושאים חמים", "ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.", "units.short.billion": "{count} מליארד", @@ -639,7 +639,7 @@ "upload_modal.preparing_ocr": "מכין OCR…", "upload_modal.preview_label": "תצוגה ({ratio})", "upload_progress.label": "עולה...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "מעבד…", "video.close": "סגירת וידאו", "video.download": "הורדת קובץ", "video.exit_fullscreen": "יציאה ממסך מלא", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 5a938ac5d7..85202e1d57 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Követett}}", "account.follows.empty": "Ez a felhasználó még senkit sem követ.", "account.follows_you": "Követ téged", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Ugrás a profilhoz", "account.hide_reblogs": "@{name} megtolásainak elrejtése", "account.joined_short": "Csatlakozott", "account.languages": "Feliratkozott nyelvek módosítása", @@ -182,8 +182,8 @@ "directory.local": "Csak innen: {domain}", "directory.new_arrivals": "Új csatlakozók", "directory.recently_active": "Nemrég aktív", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Fiókbeállítások", + "disabled_account_banner.text": "A(z) {disabledAccount} fiókod jelenleg le van tiltva.", "dismissable_banner.community_timeline": "Ezek a legfrissebb nyilvános bejegyzések, amelyeket a(z) {domain} kiszolgáló fiókjait használó emberek tették közzé.", "dismissable_banner.dismiss": "Eltüntetés", "dismissable_banner.explore_links": "Jelenleg ezekről a hírekről beszélgetnek az ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}", "missing_indicator.label": "Nincs találat", "missing_indicator.sublabel": "Ez az erőforrás nem található", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "A(z) {disabledAccount} fiókod jelenleg le van tiltva, mert átköltöztél ide: {movedToAccount}.", "mute_modal.duration": "Időtartam", "mute_modal.hide_notifications": "Rejtsük el a felhasználótól származó értesítéseket?", "mute_modal.indefinite": "Határozatlan", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index df8cabcb4b..13ecae298b 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Mengikuti}}", "account.follows.empty": "Pengguna ini belum mengikuti siapa pun.", "account.follows_you": "Mengikuti Anda", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Buka profil", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", "account.joined_short": "Bergabung", "account.languages": "Ubah langganan bahasa", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index b37f02feb9..bee531e4f6 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -14,7 +14,7 @@ "about.powered_by": "Decentralized social media powered by {mastodon}", "about.rules": "Server rules", "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Add or Remove from lists", + "account.add_or_remove_from_list": "Tinye ma ọ bụ Wepu na ndepụta", "account.badges.bot": "Bot", "account.badges.group": "Group", "account.block": "Block @{name}", @@ -48,7 +48,7 @@ "account.media": "Media", "account.mention": "Mention @{name}", "account.moved_to": "{name} has indicated that their new account is now:", - "account.mute": "Mute @{name}", + "account.mute": "Mee ogbi @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", "account.posts": "Posts", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 1abf12255e..a2062244b8 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} fylgist með} other {{counter} fylgjast með}}", "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.", "account.follows_you": "Fylgir þér", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Fara í notandasnið", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", "account.joined_short": "Gerðist þátttakandi", "account.languages": "Breyta tungumálum í áskrift", @@ -182,8 +182,8 @@ "directory.local": "Einungis frá {domain}", "directory.new_arrivals": "Nýkomnir", "directory.recently_active": "Nýleg virkni", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Stillingar notandaaðgangs", + "disabled_account_banner.text": "Aðgangurinn þinn {disabledAccount} er óvirkur í augnablikinu.", "dismissable_banner.community_timeline": "Þetta eru nýjustu opinberu færslurnar frá fólki sem er hýst á {domain}.", "dismissable_banner.dismiss": "Hunsa", "dismissable_banner.explore_links": "Þetta eru fréttafærslur sem í augnablikinu er verið að tala um af fólki á þessum og öðrum netþjónum á dreifhýsta netkerfinu.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Víxla sýnileika", "missing_indicator.label": "Fannst ekki", "missing_indicator.sublabel": "Tilfangið fannst ekki", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Aðgangurinn þinn {disabledAccount} er óvirkur í augnablikinu vegna þess að þú fluttir þig yfir á {movedToAccount}.", "mute_modal.duration": "Lengd", "mute_modal.hide_notifications": "Fela tilkynningar frá þessum notanda?", "mute_modal.indefinite": "Óendanlegt", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index aa5c589d28..67bbbfbe74 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} Seguiti}}", "account.follows.empty": "Questo utente non segue nessuno ancora.", "account.follows_you": "Ti segue", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Vai al profilo", "account.hide_reblogs": "Nascondi condivisioni da @{name}", "account.joined_short": "Account iscritto", "account.languages": "Cambia le lingue di cui ricevere i post", @@ -182,8 +182,8 @@ "directory.local": "Solo da {domain}", "directory.new_arrivals": "Nuovi arrivi", "directory.recently_active": "Attivo di recente", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Impostazioni dell'account", + "disabled_account_banner.text": "Il tuo account {disabledAccount} è attualmente disabilitato.", "dismissable_banner.community_timeline": "Questi sono i posti pubblici più recenti di persone i cui account sono ospitati da {domain}.", "dismissable_banner.dismiss": "Ignora", "dismissable_banner.explore_links": "Queste notizie sono in fase di discussione da parte di persone su questo e altri server della rete decentralizzata, in questo momento.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Imposta visibilità", "missing_indicator.label": "Non trovato", "missing_indicator.sublabel": "Risorsa non trovata", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Il tuo account {disabledAccount} è attualmente disabilitato perché ti sei trasferito/a su {movedToAccount}.", "mute_modal.duration": "Durata", "mute_modal.hide_notifications": "Nascondere le notifiche da quest'utente?", "mute_modal.indefinite": "Per sempre", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 1ccfce8211..aca810561f 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -39,7 +39,7 @@ "account.following_counter": "{counter} フォロー", "account.follows.empty": "まだ誰もフォローしていません。", "account.follows_you": "フォローされています", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "プロフィールページへ", "account.hide_reblogs": "@{name}さんからのブーストを非表示", "account.joined_short": "登録日", "account.languages": "購読言語の変更", @@ -182,8 +182,8 @@ "directory.local": "{domain} のみ", "directory.new_arrivals": "新着順", "directory.recently_active": "最近の活動順", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "アカウント設定", + "disabled_account_banner.text": "あなたのアカウント『{disabledAccount}』は現在無効になっています。", "dismissable_banner.community_timeline": "これらは{domain}がホストしている人たちの最新の公開投稿です。", "dismissable_banner.dismiss": "閉じる", "dismissable_banner.explore_links": "これらのニュース記事は現在分散型ネットワークの他のサーバーの人たちに話されています。", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {画像を閉じる} other {画像を閉じる}}", "missing_indicator.label": "見つかりません", "missing_indicator.sublabel": "見つかりませんでした", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "あなたのアカウント『{disabledAccount}』は『{movedToAccount}』に移動したため現在無効になっています。", "mute_modal.duration": "ミュートする期間", "mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?", "mute_modal.indefinite": "無期限", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index c8a85cbe7e..7338d186c7 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -39,7 +39,7 @@ "account.following_counter": "{counter} 팔로잉", "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.", "account.follows_you": "날 팔로우합니다", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "프로필로 이동", "account.hide_reblogs": "@{name}의 부스트를 숨기기", "account.joined_short": "가입", "account.languages": "구독한 언어 변경", @@ -182,8 +182,8 @@ "directory.local": "{domain}에서만", "directory.new_arrivals": "새로운 사람들", "directory.recently_active": "최근 활동", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "계정 설정", + "disabled_account_banner.text": "당신의 계정 {disabledAccount}는 현재 비활성화 상태입니다.", "dismissable_banner.community_timeline": "여기 있는 것들은 계정이 {domain}에 있는 사람들의 최근 공개 게시물들입니다.", "dismissable_banner.dismiss": "지우기", "dismissable_banner.explore_links": "이 뉴스들은 이 서버와 분산화된 네트워크의 다른 서버에서 사람들이 지금 많이 이야기 하고 있는 것입니다.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "이미지 숨기기", "missing_indicator.label": "찾을 수 없습니다", "missing_indicator.sublabel": "이 리소스를 찾을 수 없었습니다", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "당신의 계정 {disabledAccount}는 {movedToAccount}로 이동하였기 때문에 현재 비활성화 상태입니다.", "mute_modal.duration": "기간", "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?", "mute_modal.indefinite": "무기한", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index c65d0c1a28..b74659820a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -87,14 +87,14 @@ "bundle_column_error.network.body": "Di dema hewldana barkirina vê rûpelê de çewtiyek derket. Ev dibe ku ji ber pirsgirêkeke demkî ya girêdana înternetê te be an jî ev rajekar be.", "bundle_column_error.network.title": "Çewtiya torê", "bundle_column_error.retry": "Dîsa biceribîne", - "bundle_column_error.return": "Vegere serûpelê", + "bundle_column_error.return": "Vegere rûpela sereke", "bundle_column_error.routing.body": "Rûpela xwestî nehate dîtin. Tu bawerî ku girêdana di kodika lêgerînê de rast e?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Bigire", "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.", "bundle_modal_error.retry": "Dîsa bicerbîne", - "closed_registrations.other_server_instructions": "Ji ber ku Mastodon nenavendî ye, tu dika li ser rajekarek din ajimêrekê biafirînî û hîn jî bi vê yekê re tev bigerî.", - "closed_registrations_modal.description": "Afirandina ajimêrekê li ser {domain} niha ne pêkan e, lê ji kerema xwe ji bîr neke ku pêdiviya te bi hebûna ajimêreke taybet li ser {domain} tune ye ku tu Mastodon bi kar bînî.", + "closed_registrations.other_server_instructions": "Ji ber ku Mastodon nenavendî ye, tu dikarî li ser pêşkêşkareke din hesabekî vekî û dîsa jî bi vê pêşkêşkarê re têkiliyê daynî.", + "closed_registrations_modal.description": "Afirandina hesabekî li ser {domain}ê niha ne pêkan e, lê tika ye ji bîr neke ku ji bo bikaranîna Mastodonê ne mecbûrî ye hesabekî te yê {domain}ê hebe.", "closed_registrations_modal.find_another_server": "Rajekareke din bibîne", "closed_registrations_modal.preamble": "Mastodon nenavendî ye, ji ber vê yekê tu li ku derê ajimêrê xwe biafirînê, tu yê bikaribî li ser vê rajekarê her kesî bişopînî û têkilî deynî. Her wiha tu dikarî wê bi xwe pêşkêş bikî!", "closed_registrations_modal.title": "Tomar bibe li ser Mastodon", @@ -107,7 +107,7 @@ "column.domain_blocks": "Navperên astengkirî", "column.favourites": "Bijarte", "column.follow_requests": "Daxwazên şopandinê", - "column.home": "Serûpel", + "column.home": "Rûpela sereke", "column.lists": "Lîste", "column.mutes": "Bikarhênerên bêdengkirî", "column.notifications": "Agahdarî", @@ -131,7 +131,7 @@ "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.", "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.", "compose_form.lock_disclaimer.lock": "girtî ye", - "compose_form.placeholder": "Tu li çi difikirî?", + "compose_form.placeholder": "Çi di hişê te derbas dibe?", "compose_form.poll.add_option": "Hilbijarekî tevlî bike", "compose_form.poll.duration": "Dema rapirsî yê", "compose_form.poll.option_placeholder": "{number} Hilbijêre", @@ -207,7 +207,7 @@ "emoji_button.search_results": "Encamên lêgerînê", "emoji_button.symbols": "Sembol", "emoji_button.travel": "Geşt û şûn", - "empty_column.account_suspended": "Ajimêr hatiye rawestandin", + "empty_column.account_suspended": "Hesab hatiye rawestandin", "empty_column.account_timeline": "Li vir şandî tune!", "empty_column.account_unavailable": "Profîl nayê peydakirin", "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.", @@ -460,7 +460,7 @@ "privacy_policy.title": "Politîka taybetiyê", "refresh": "Nû bike", "regeneration_indicator.label": "Tê barkirin…", - "regeneration_indicator.sublabel": "Naveroka serûpela te tê amedekirin!", + "regeneration_indicator.sublabel": "Naveroka rûpela sereke ya te tê amedekirin!", "relative_time.days": "{number}r", "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê", "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê", @@ -537,7 +537,7 @@ "server_banner.introduction": "{domain} beşek ji tora civakî ya nenavendî ye bi hêzdariya {mastodon}.", "server_banner.learn_more": "Bêtir fêr bibe", "server_banner.server_stats": "Amarên rajekar:", - "sign_in_banner.create_account": "Ajimêr biafirîne", + "sign_in_banner.create_account": "Hesab biafirîne", "sign_in_banner.sign_in": "Têkeve", "sign_in_banner.text": "Têkeve ji bo şopandina profîlan an hashtagan, bijarte, parvekirin û bersivdana şandiyan, an ji ajimêrê xwe li ser rajekarek cuda têkilî deyine.", "status.admin_account": "Ji bo @{name} navrûya venihêrtinê veke", @@ -599,7 +599,7 @@ "suggestions.dismiss": "Pêşniyarê paşguh bike", "suggestions.header": "Dibe ku bala te bikşîne…", "tabs_bar.federated_timeline": "Giştî", - "tabs_bar.home": "Serûpel", + "tabs_bar.home": "Rûpela sereke", "tabs_bar.local_timeline": "Herêmî", "tabs_bar.notifications": "Agahdarî", "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 62fa977015..64f1014598 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -25,23 +25,23 @@ "account.direct": "Privāta ziņa @{name}", "account.disable_notifications": "Pārtraukt man paziņot, kad @{name} publicē ierakstu", "account.domain_blocked": "Domēns ir bloķēts", - "account.edit_profile": "Rediģēt profilu", - "account.enable_notifications": "Man paziņot, kad @{name} publicē ierakstu", + "account.edit_profile": "Labot profilu", + "account.enable_notifications": "Paziņot man, kad @{name} publicē ierakstu", "account.endorse": "Izcelts profilā", "account.featured_tags.last_status_at": "Beidzamā ziņa {date}", "account.featured_tags.last_status_never": "Publikāciju nav", "account.featured_tags.title": "{name} piedāvātie haštagi", "account.follow": "Sekot", "account.followers": "Sekotāji", - "account.followers.empty": "Šim lietotājam patreiz nav sekotāju.", + "account.followers.empty": "Šim lietotājam vēl nav sekotāju.", "account.followers_counter": "{count, plural, one {{counter} Sekotājs} other {{counter} Sekotāji}}", "account.following": "Seko", - "account.following_counter": "{count, plural, one {{counter} Sekojošs} other {{counter} Sekojoši}}", + "account.following_counter": "{count, plural, one {{counter} Sekojamais} other {{counter} Sekojamie}}", "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows_you": "Seko tev", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Dodieties uz profilu", "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", - "account.joined_short": "Pievienojies", + "account.joined_short": "Pievienojās", "account.languages": "Mainīt abonētās valodas", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.", @@ -165,7 +165,7 @@ "confirmations.logout.message": "Vai tiešām vēlies izrakstīties?", "confirmations.mute.confirm": "Apklusināt", "confirmations.mute.explanation": "Šādi no viņiem tiks slēptas ziņas un ziņas, kurās viņi tiek pieminēti, taču viņi joprojām varēs redzēt tavas ziņas un sekot tev.", - "confirmations.mute.message": "Vai Tu tiešām velies apklusināt {name}?", + "confirmations.mute.message": "Vai tiešām velies apklusināt {name}?", "confirmations.redraft.confirm": "Dzēst un pārrakstīt", "confirmations.redraft.message": "Vai tiešām vēlies dzēst un pārrakstīt šo ierakstu? Favorīti un paceltie ieraksti tiks dzēsti, kā arī atbildes tiks atsaistītas no šī ieraksta.", "confirmations.reply.confirm": "Atbildēt", @@ -182,8 +182,8 @@ "directory.local": "Tikai no {domain}", "directory.new_arrivals": "Jaunpienācēji", "directory.recently_active": "Nesen aktīvs", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Konta iestatījumi", + "disabled_account_banner.text": "Jūsu konts {disabledAccount} pašlaik ir atspējots.", "dismissable_banner.community_timeline": "Šīs ir jaunākās publiskās ziņas no personām, kuru kontus mitina {domain}.", "dismissable_banner.dismiss": "Atcelt", "dismissable_banner.explore_links": "Par šiem jaunumiem šobrīd runā cilvēki šajā un citos decentralizētā tīkla serveros.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Slēpt # attēlu} other {Slēpt # attēlus}}", "missing_indicator.label": "Nav atrasts", "missing_indicator.sublabel": "Šo resursu nevarēja atrast", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Jūsu konts {disabledAccount} pašlaik ir atspējots, jo esat pārcēlies uz kontu {movedToAccount}.", "mute_modal.duration": "Ilgums", "mute_modal.hide_notifications": "Slēpt paziņojumus no šī lietotāja?", "mute_modal.indefinite": "Nenoteikts", @@ -378,7 +378,7 @@ "navigation_bar.favourites": "Izlases", "navigation_bar.filters": "Klusināti vārdi", "navigation_bar.follow_requests": "Sekošanas pieprasījumi", - "navigation_bar.follows_and_followers": "Man seko un sekotāji", + "navigation_bar.follows_and_followers": "Sekojamie un sekotāji", "navigation_bar.lists": "Saraksti", "navigation_bar.logout": "Iziet", "navigation_bar.mutes": "Apklusinātie lietotāji", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 9bf2b09e5a..4c58706337 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -1,22 +1,22 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", - "account.account_note_header": "Note", + "about.blocks": "Модерирани сервери", + "about.contact": "Контакт:", + "about.disclaimer": "Mastodon е бесплатен, open-source софтвер, и заштитен знак на Mastodon gGmbH.", + "about.domain_blocks.comment": "Причина", + "about.domain_blocks.domain": "Домен", + "about.domain_blocks.preamble": "Mastodon вообичаено ви дозволува да прегледувате содржини и комуницирате со корисниците од било кој сервер во федиверзумот. На овој сервер има исклучоци.", + "about.domain_blocks.severity": "Сериозност", + "about.domain_blocks.silenced.explanation": "Вообичаено нема да гледате профили и содржина од овој сервер, освен ако не го пребарате намерно, или го заследите.", + "about.domain_blocks.silenced.title": "Ограничено", + "about.domain_blocks.suspended.explanation": "Податоците од овој сервер нема да бидат процесирани, зачувани или сменети и било која интеракција или комуникација со корисниците од овој сервер ќе биде невозможна.", + "about.domain_blocks.suspended.title": "Суспендиран", + "about.not_available": "Оваа информација не е достапна на овој сервер.", + "about.powered_by": "Децентрализиран друштвен медиум овозможен од {mastodon}", + "about.rules": "Правила на серверот", + "account.account_note_header": "Белешка", "account.add_or_remove_from_list": "Додади или одстрани од листа", "account.badges.bot": "Бот", - "account.badges.group": "Group", + "account.badges.group": "Група", "account.block": "Блокирај @{name}", "account.block_domain": "Сокријај се од {domain}", "account.blocked": "Блокиран", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 5c586a327a..9d874fd864 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -14,7 +14,7 @@ "about.powered_by": "Gedecentraliseerde sociale media, mogelijk gemaakt door {mastodon}", "about.rules": "Serverregels", "account.account_note_header": "Opmerking", - "account.add_or_remove_from_list": "Toevoegen of verwijderen vanuit lijsten", + "account.add_or_remove_from_list": "Toevoegen aan of verwijderen uit lijsten", "account.badges.bot": "Bot", "account.badges.group": "Groep", "account.block": "@{name} blokkeren", @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} volgend} other {{counter} volgend}}", "account.follows.empty": "Deze gebruiker volgt nog niemand.", "account.follows_you": "Volgt jou", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Ga naar profiel", "account.hide_reblogs": "Boosts van @{name} verbergen", "account.joined_short": "Geregistreerd op", "account.languages": "Getoonde talen wijzigen", @@ -94,7 +94,7 @@ "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.", "bundle_modal_error.retry": "Opnieuw proberen", "closed_registrations.other_server_instructions": "Omdat Mastodon gedecentraliseerd is, kun je op een andere server een account registreren en vanaf daar nog steeds met deze server communiceren.", - "closed_registrations_modal.description": "Momenteel is het niet mogelijk om op {domain} een account aan te maken. Hou echter in gedachte dat om Mastodon te kunnen gebruiken het niet een vereiste is om op {domain} een account aan te maken.", + "closed_registrations_modal.description": "Momenteel is het niet mogelijk om op {domain} een account aan te maken. Hou echter in gedachte dat om Mastodon te kunnen gebruiken het niet een vereiste is om op {domain} een account te hebben.", "closed_registrations_modal.find_another_server": "Een andere server zoeken", "closed_registrations_modal.preamble": "Mastodon is gedecentraliseerd. Op welke server je ook een account hebt, je kunt overal vandaan mensen op deze server volgen en er mee interactie hebben. Je kunt zelfs zelf een Mastodon-server hosten!", "closed_registrations_modal.title": "Registreren op Mastodon", @@ -182,8 +182,8 @@ "directory.local": "Alleen {domain}", "directory.new_arrivals": "Nieuwe accounts", "directory.recently_active": "Onlangs actief", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Accountinstellingen", + "disabled_account_banner.text": "Jouw account {disabledAccount} is momenteel uitgeschakeld.", "dismissable_banner.community_timeline": "Dit zijn de meest recente openbare berichten van accounts op {domain}. Je kunt onder 'instellingen > voorkeuren > overig' kiezen welke talen je wilt zien.", "dismissable_banner.dismiss": "Sluiten", "dismissable_banner.explore_links": "Deze nieuwsberichten winnen aan populariteit op deze en andere servers binnen het decentrale netwerk.", @@ -319,7 +319,7 @@ "keyboard_shortcuts.hotkey": "Sneltoets", "keyboard_shortcuts.legend": "Deze legenda tonen", "keyboard_shortcuts.local": "Lokale tijdlijn tonen", - "keyboard_shortcuts.mention": "Auteur vermelden", + "keyboard_shortcuts.mention": "Account vermelden", "keyboard_shortcuts.muted": "Genegeerde gebruikers tonen", "keyboard_shortcuts.my_profile": "Jouw profiel tonen", "keyboard_shortcuts.notifications": "Meldingen tonen", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {afbeelding verbergen} other {afbeeldingen verbergen}}", "missing_indicator.label": "Niet gevonden", "missing_indicator.sublabel": "Deze hulpbron kan niet gevonden worden", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Omdat je naar {movedToAccount} bent verhuisd is jouw account {disabledAccount} momenteel uitgeschakeld.", "mute_modal.duration": "Duur", "mute_modal.hide_notifications": "Verberg meldingen van deze persoon?", "mute_modal.indefinite": "Voor onbepaalde tijd", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1ccdf49362..1704568b76 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjar}}", "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.follows_you": "Fylgjer deg", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Gå til profil", "account.hide_reblogs": "Skjul framhevingar frå @{name}", "account.joined_short": "Vart med", "account.languages": "Endre språktingingar", @@ -182,8 +182,8 @@ "directory.local": "Berre frå {domain}", "directory.new_arrivals": "Nyleg tilkomne", "directory.recently_active": "Nyleg aktive", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Kontoinnstillingar", + "disabled_account_banner.text": "Kontoen din, {disabledAccount} er for tida deaktivert.", "dismissable_banner.community_timeline": "Dette er dei nylegaste offentlege innlegga frå personar med kontoar frå {domain}.", "dismissable_banner.dismiss": "Avvis", "dismissable_banner.explore_links": "Desse nyhendesakene snakkast om av folk på denne og andre tenarar på det desentraliserte nettverket no.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Skjul bilete} other {Skjul bilete}}", "missing_indicator.label": "Ikkje funne", "missing_indicator.sublabel": "Fann ikkje ressursen", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Kontoen din, {disabledAccount} er for tida deaktivert fordi du har flytta til {movedToAccount}.", "mute_modal.duration": "Varigheit", "mute_modal.hide_notifications": "Skjul varsel frå denne brukaren?", "mute_modal.indefinite": "På ubestemt tid", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index f83812fda7..4736519af6 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -1,36 +1,36 @@ { "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", - "account.account_note_header": "Notis", + "about.contact": "Kontakt:", + "about.disclaimer": "Mastodon er gratis, åpen kildekode-programvare og et varemerke fra Mastodon gGmbH.", + "about.domain_blocks.comment": "Årsak", + "about.domain_blocks.domain": "Domene", + "about.domain_blocks.preamble": "Mastodon lar deg normalt sett se innholdet fra og samhandle med brukere fra enhver annen server i fødiverset. Dette er unntakene som har blitt lagt inn på denne serveren.", + "about.domain_blocks.severity": "Alvorlighetsgrad", + "about.domain_blocks.silenced.explanation": "Du vil vanligvis ikke se profiler og innhold fra denne serveren, med mindre du eksplisitt søker dem opp eller velger å følge dem.", + "about.domain_blocks.silenced.title": "Begrenset", + "about.domain_blocks.suspended.explanation": "Ikke noe innhold fra denne serveren vil bli behandlet, lagret eller utvekslet. Det gjør det umulig å samhandle eller kommunisere med brukere fra denne serveren.", + "about.domain_blocks.suspended.title": "Suspendert", + "about.not_available": "Denne informasjonen er ikke gjort tilgjengelig på denne serveren.", + "about.powered_by": "Desentraliserte sosiale medier drevet av {mastodon}", + "about.rules": "Regler for serveren", + "account.account_note_header": "Notat", "account.add_or_remove_from_list": "Legg til eller fjern fra lister", "account.badges.bot": "Bot", "account.badges.group": "Gruppe", "account.block": "Blokkér @{name}", - "account.block_domain": "Skjul alt fra {domain}", + "account.block_domain": "Blokkér domenet {domain}", "account.blocked": "Blokkert", "account.browse_more_on_origin_server": "Bla mer på den opprinnelige profilen", - "account.cancel_follow_request": "Withdraw follow request", - "account.direct": "Direct Message @{name}", + "account.cancel_follow_request": "Trekk tilbake følge-forespørselen", + "account.direct": "Send direktemelding til @{name}", "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", - "account.domain_blocked": "Domenet skjult", + "account.domain_blocked": "Domene blokkert", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg", "account.endorse": "Vis frem på profilen", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "Siste innlegg {date}", + "account.featured_tags.last_status_never": "Ingen Innlegg", + "account.featured_tags.title": "{name} sine fremhevede emneknagger", "account.follow": "Følg", "account.followers": "Følgere", "account.followers.empty": "Ingen følger denne brukeren ennå.", @@ -39,66 +39,66 @@ "account.following_counter": "{count, plural, one {{counter} som følges} other {{counter} som følges}}", "account.follows.empty": "Denne brukeren følger ikke noen enda.", "account.follows_you": "Følger deg", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Gå til profil", "account.hide_reblogs": "Skjul fremhevinger fra @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Ble med", + "account.languages": "Endre hvilke språk du abonnerer på", "account.link_verified_on": "Eierskap av denne lenken ble sjekket {date}", "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.", "account.media": "Media", "account.mention": "Nevn @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "{name} har angitt at deres nye konto nå er:", "account.mute": "Demp @{name}", - "account.mute_notifications": "Ignorer varsler fra @{name}", + "account.mute_notifications": "Demp varsler fra @{name}", "account.muted": "Dempet", "account.posts": "Innlegg", - "account.posts_with_replies": "Toots with replies", + "account.posts_with_replies": "Innlegg med svar", "account.report": "Rapportér @{name}", - "account.requested": "Venter på godkjennelse", + "account.requested": "Venter på godkjennelse. Klikk for å avbryte forespørselen", "account.share": "Del @{name}s profil", "account.show_reblogs": "Vis boosts fra @{name}", - "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tuter}}", - "account.unblock": "Avblokker @{name}", - "account.unblock_domain": "Vis {domain}", + "account.statuses_counter": "{count, plural, one {{counter} innlegg} other {{counter} innlegg}}", + "account.unblock": "Opphev blokkering av @{name}", + "account.unblock_domain": "Opphev blokkering av {domain}", "account.unblock_short": "Opphev blokkering", "account.unendorse": "Ikke vis frem på profilen", "account.unfollow": "Avfølg", - "account.unmute": "Avdemp @{name}", + "account.unmute": "Opphev demping av @{name}", "account.unmute_notifications": "Vis varsler fra @{name}", "account.unmute_short": "Opphev demping", "account_note.placeholder": "Klikk for å legge til et notat", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Gjennomsnitt", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort": "Registreringsmåned", "admin.dashboard.retention.cohort_size": "Nye brukere", "alert.rate_limited.message": "Vennligst prøv igjen etter kl. {retry_time, time, medium}.", "alert.rate_limited.title": "Hastighetsbegrenset", "alert.unexpected.message": "En uventet feil oppstod.", "alert.unexpected.title": "Oi!", "announcement.announcement": "Kunngjøring", - "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "attachments_list.unprocessed": "(ubehandlet)", + "audio.hide": "Skjul lyd", "autosuggest_hashtag.per_week": "{count} per uke", "boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Kopier feilrapport", + "bundle_column_error.error.body": "Den forespurte siden kan ikke gjengis. Den kan skyldes en feil i vår kode eller et kompatibilitetsproblem med nettleseren.", + "bundle_column_error.error.title": "Å nei!", + "bundle_column_error.network.body": "Det oppsto en feil under forsøk på å laste inn denne siden. Dette kan skyldes et midlertidig problem med din internettilkobling eller denne serveren.", + "bundle_column_error.network.title": "Nettverksfeil", "bundle_column_error.retry": "Prøv igjen", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Gå hjem igjen", + "bundle_column_error.routing.body": "Den forespurte siden ble ikke funnet. Er du sikker på at URL-en i adresselinjen er riktig?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Lukk", "bundle_modal_error.message": "Noe gikk galt da denne komponenten lastet.", "bundle_modal_error.retry": "Prøv igjen", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Siden Mastodon er desentralizert, kan du opprette en konto på en annen server og fortsatt kommunisere med denne.", + "closed_registrations_modal.description": "Opprettelse av en konto på {domain} er for tiden ikke mulig, men vær oppmerksom på at du ikke trenger en konto spesifikt på {domain} for å kunne bruke Mastodon.", + "closed_registrations_modal.find_another_server": "Finn en annen server", + "closed_registrations_modal.preamble": "Mastodon er desentralisert, så uansett hvor du oppretter kontoen din, vil du kunne følge og samhandle med alle på denne serveren. Du kan til og med kjøre serveren selv!", + "closed_registrations_modal.title": "Registrerer deg på Mastodon", + "column.about": "Om", "column.blocks": "Blokkerte brukere", "column.bookmarks": "Bokmerker", "column.community": "Lokal tidslinje", @@ -114,7 +114,7 @@ "column.pins": "Pinned toot", "column.public": "Felles tidslinje", "column_back_button.label": "Tilbake", - "column_header.hide_settings": "Gjem innstillinger", + "column_header.hide_settings": "Skjul innstillinger", "column_header.moveLeft_settings": "Flytt feltet til venstre", "column_header.moveRight_settings": "Flytt feltet til høyre", "column_header.pin": "Fest", @@ -124,11 +124,11 @@ "community.column_settings.local_only": "Kun lokalt", "community.column_settings.media_only": "Media only", "community.column_settings.remote_only": "Kun eksternt", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Bytt språk", + "compose.language.search": "Søk etter språk...", "compose_form.direct_message_warning_learn_more": "Lær mer", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", - "compose_form.hashtag_warning": "Denne tuten blir ikke listet under noen emneknagger da den er ulistet. Kun offentlige tuter kan søktes etter med emneknagg.", + "compose_form.encryption_warning": "Innlegg på Mastodon er ikke ende-til-ende-krypterte. Ikke del sensitive opplysninger via Mastodon.", + "compose_form.hashtag_warning": "Dette innlegget blir vist under noen emneknagger da det er uoppført. Kun offentlige innlegg kan søkes opp med emneknagg.", "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Hvem som helst kan følge deg og se dine private poster.", "compose_form.lock_disclaimer.lock": "låst", "compose_form.placeholder": "Hva har du på hjertet?", @@ -138,12 +138,12 @@ "compose_form.poll.remove_option": "Fjern dette valget", "compose_form.poll.switch_to_multiple": "Endre avstemning til å tillate flere valg", "compose_form.poll.switch_to_single": "Endre avstemning til å tillate ett valg", - "compose_form.publish": "Publish", + "compose_form.publish": "Publiser", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", - "compose_form.sensitive.hide": "Merk media som sensitivt", - "compose_form.sensitive.marked": "Mediet er merket som sensitiv", - "compose_form.sensitive.unmarked": "Mediet er ikke merket som sensitiv", + "compose_form.save_changes": "Lagre endringer", + "compose_form.sensitive.hide": "{count, plural,one {Merk media som sensitivt} other {Merk media som sensitivt}}", + "compose_form.sensitive.marked": "{count, plural,one {Mediet er merket som sensitivt}other {Mediene er merket som sensitive}}", + "compose_form.sensitive.unmarked": "{count, plural,one {Mediet er ikke merket som sensitivt}other {Mediene er ikke merket som sensitive}}", "compose_form.spoiler.marked": "Teksten er skjult bak en advarsel", "compose_form.spoiler.unmarked": "Teksten er ikke skjult", "compose_form.spoiler_placeholder": "Innholdsadvarsel", @@ -151,14 +151,14 @@ "confirmations.block.block_and_report": "Blokker og rapporter", "confirmations.block.confirm": "Blokkèr", "confirmations.block.message": "Er du sikker på at du vil blokkere {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Trekk tilbake forespørsel", + "confirmations.cancel_follow_request.message": "Er du sikker på at du vil trekke tilbake forespørselen din for å følge {name}?", "confirmations.delete.confirm": "Slett", "confirmations.delete.message": "Er du sikker på at du vil slette denne statusen?", "confirmations.delete_list.confirm": "Slett", "confirmations.delete_list.message": "Er du sikker på at du vil slette denne listen permanent?", "confirmations.discard_edit_media.confirm": "Forkast", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.message": "Du har ulagrede endringer i mediebeskrivelsen eller i forhåndsvisning, forkast dem likevel?", "confirmations.domain_block.confirm": "Skjul alt fra domenet", "confirmations.domain_block.message": "Er du sikker på at du vil skjule hele domenet {domain}? I de fleste tilfeller er det bedre med målrettet blokkering eller demping.", "confirmations.logout.confirm": "Logg ut", @@ -176,24 +176,24 @@ "conversation.mark_as_read": "Marker som lest", "conversation.open": "Vis samtale", "conversation.with": "Med {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Kopiert", + "copypaste.copy": "Kopier", "directory.federated": "Fra det kjente strømiverset", "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nylig aktiv", - "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.account_settings": "Kontoinnstillinger", "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.community_timeline": "Dette er de nyeste offentlige innleggene fra personer med kontoer på {domain}.", + "dismissable_banner.dismiss": "Avvis", + "dismissable_banner.explore_links": "Disse nyhetene snakker folk om akkurat nå på denne og andre servere i det desentraliserte nettverket.", + "dismissable_banner.explore_statuses": "Disse innleggene fra denne og andre servere i det desentraliserte nettverket får økt oppmerksomhet på denne serveren akkurat nå.", + "dismissable_banner.explore_tags": "Disse emneknaggene snakker folk om akkurat nå, på denne og andre servere i det desentraliserte nettverket.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.", "embed.preview": "Slik kommer det til å se ut:", "emoji_button.activity": "Aktivitet", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Nullstill", "emoji_button.custom": "Tilpasset", "emoji_button.flags": "Flagg", "emoji_button.food": "Mat og drikke", @@ -208,20 +208,20 @@ "emoji_button.symbols": "Symboler", "emoji_button.travel": "Reise & steder", "empty_column.account_suspended": "Kontoen er suspendert", - "empty_column.account_timeline": "Ingen tuter er her!", + "empty_column.account_timeline": "Ingen innlegg her!", "empty_column.account_unavailable": "Profilen er utilgjengelig", "empty_column.blocks": "Du har ikke blokkert noen brukere enda.", - "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen tuter enda. Når du bokmerker en, vil den dukke opp her.", + "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen innlegg enda. Når du bokmerker et, vil det dukke opp her.", "empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!", "empty_column.direct": "Du har ingen direktemeldinger enda. Etter du har sendt eller mottatt en, så vil den dukke opp her.", "empty_column.domain_blocks": "Det er ingen skjulte domener enda.", "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", - "empty_column.favourited_statuses": "Du har ikke likt noen tuter enda. Når du liker en, vil den dukke opp her.", - "empty_column.favourites": "Ingen har likt denne tuten enda. Når noen gjør det, vil de dukke opp her.", + "empty_column.favourited_statuses": "Du har ikke likt noen innlegg enda. Når du liker et, vil det dukke opp her.", + "empty_column.favourites": "Ingen har likt dette innlegget ennå. Når noen gjør det, vil de dukke opp her.", "empty_column.follow_recommendations": "Ser ut som at det ikke finnes noen forslag for deg. Du kan prøve å bruke søk for å se etter folk du kan vite eller utforske trendende hashtags.", "empty_column.follow_requests": "Du har ingen følgeforespørsler enda. Når du mottar en, vil den dukke opp her.", - "empty_column.hashtag": "Det er ingenting i denne hashtagen ennå.", - "empty_column.home": "Du har ikke fulgt noen ennå. Besøk {publlic} eller bruk søk for å komme i gang og møte andre brukere.", + "empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.", + "empty_column.home": "Hjem-tidslinjen din er tom! Følg flere folk for å fylle den. {suggestions}", "empty_column.home.suggestions": "Se noen forslag", "empty_column.list": "Det er ingenting i denne listen ennå. Når medlemmene av denne listen legger ut nye statuser vil de dukke opp her.", "empty_column.lists": "Du har ingen lister enda. Når du lager en, vil den dukke opp her.", @@ -239,66 +239,66 @@ "explore.title": "Utforsk", "explore.trending_links": "Nyheter", "explore.trending_statuses": "Innlegg", - "explore.trending_tags": "Hashtags", + "explore.trending_tags": "Emneknagger", "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "Utløpt filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.review_and_configure_title": "Filterinnstillinger", "filter_modal.added.settings_link": "settings page", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", + "filter_modal.added.title": "Filter lagt til!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.expired": "utløpt", + "filter_modal.select_filter.prompt_new": "Ny kategori: {name}", + "filter_modal.select_filter.search": "Søk eller opprett", + "filter_modal.select_filter.subtitle": "Bruk en eksisterende kategori eller opprett en ny", + "filter_modal.select_filter.title": "Filtrer dette innlegget", + "filter_modal.title.status": "Filtrer et innlegg", "follow_recommendations.done": "Utført", "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.", "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!", "follow_request.authorize": "Autorisér", "follow_request.reject": "Avvis", "follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", + "footer.about": "Om", + "footer.directory": "Profilkatalog", + "footer.get_app": "Last ned appen", + "footer.invite": "Invitér folk", "footer.keyboard_shortcuts": "Keyboard shortcuts", "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.source_code": "Vis kildekode", "generic.saved": "Lagret", "getting_started.heading": "Kom i gang", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "uten {additional}", "hashtag.column_settings.select.no_options_message": "Ingen forslag ble funnet", - "hashtag.column_settings.select.placeholder": "Skriv inn emneknagger …", + "hashtag.column_settings.select.placeholder": "Skriv inn emneknagger…", "hashtag.column_settings.tag_mode.all": "Alle disse", "hashtag.column_settings.tag_mode.any": "Enhver av disse", "hashtag.column_settings.tag_mode.none": "Ingen av disse", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "Følg emneknagg", + "hashtag.unfollow": "Slutt å følge emneknagg", "home.column_settings.basic": "Enkelt", "home.column_settings.show_reblogs": "Vis fremhevinger", "home.column_settings.show_replies": "Vis svar", "home.hide_announcements": "Skjul kunngjøring", "home.show_announcements": "Vis kunngjøring", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", + "interaction_modal.description.favourite": "Med en konto på Mastodon, kan du \"like\" dette innlegget for å la forfatteren vite at du likte det samt lagre innlegget til senere.", + "interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i hjem-feeden din.", + "interaction_modal.description.reblog": "Med en konto på Mastodon, kan du fremheve dette innlegget for å dele det med dine egne følgere.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "På en annen server", + "interaction_modal.on_this_server": "På denne serveren", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.follow": "Følg {name}", + "interaction_modal.title.reblog": "Fremhev {name} sitt innlegg", + "interaction_modal.title.reply": "Svar på {name} sitt innlegg", "intervals.full.days": "{number, plural,one {# dag} other {# dager}}", "intervals.full.hours": "{number, plural, one {# time} other {# timer}}", "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutter}}", @@ -324,7 +324,7 @@ "keyboard_shortcuts.my_profile": "å åpne profilen din", "keyboard_shortcuts.notifications": "åpne varslingskolonnen", "keyboard_shortcuts.open_media": "å åpne media", - "keyboard_shortcuts.pinned": "åpne listen over klistrede tuter", + "keyboard_shortcuts.pinned": "Åpne listen over festede innlegg", "keyboard_shortcuts.profile": "åpne forfatterens profil", "keyboard_shortcuts.reply": "for å svare", "keyboard_shortcuts.requests": "åpne følgingsforespørselslisten", @@ -341,8 +341,8 @@ "lightbox.expand": "Ekspander bildevisning boks", "lightbox.next": "Neste", "lightbox.previous": "Forrige", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.action": "Vis profil likevel", + "limited_account_hint.title": "Denne profilen har blitt skjult av moderatorene til {domain}.", "lists.account.add": "Legg til i listen", "lists.account.remove": "Fjern fra listen", "lists.delete": "Slett listen", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Veksle synlighet", "missing_indicator.label": "Ikke funnet", "missing_indicator.sublabel": "Denne ressursen ble ikke funnet", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.", "mute_modal.duration": "Varighet", "mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?", "mute_modal.indefinite": "På ubestemt tid", @@ -369,7 +369,7 @@ "navigation_bar.blocks": "Blokkerte brukere", "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", - "navigation_bar.compose": "Skriv en ny tut", + "navigation_bar.compose": "Skriv et nytt innlegg", "navigation_bar.direct": "Direktemeldinger", "navigation_bar.discover": "Oppdag", "navigation_bar.domain_blocks": "Skjulte domener", @@ -383,13 +383,13 @@ "navigation_bar.logout": "Logg ut", "navigation_bar.mutes": "Dempede brukere", "navigation_bar.personal": "Personlig", - "navigation_bar.pins": "Festa tuter", + "navigation_bar.pins": "Festede innlegg", "navigation_bar.preferences": "Innstillinger", "navigation_bar.public_timeline": "Felles tidslinje", - "navigation_bar.search": "Search", + "navigation_bar.search": "Søk", "navigation_bar.security": "Sikkerhet", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "Du må logge inn for å få tilgang til denne ressursen.", + "notification.admin.report": "{name} rapporterte {target}", "notification.admin.sign_up": "{name} signed up", "notification.favourite": "{name} likte din status", "notification.follow": "{name} fulgte deg", @@ -399,10 +399,10 @@ "notification.poll": "En avstemning du har stemt på har avsluttet", "notification.reblog": "{name} fremhevde din status", "notification.status": "{name} la nettopp ut", - "notification.update": "{name} edited a post", + "notification.update": "{name} redigerte et innlegg", "notifications.clear": "Fjern varsler", "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?", - "notifications.column_settings.admin.report": "New reports:", + "notifications.column_settings.admin.report": "Nye rapporter:", "notifications.column_settings.admin.sign_up": "New sign-ups:", "notifications.column_settings.alert": "Skrivebordsvarslinger", "notifications.column_settings.favourite": "Likt:", @@ -417,9 +417,9 @@ "notifications.column_settings.reblog": "Fremhevet:", "notifications.column_settings.show": "Vis i kolonne", "notifications.column_settings.sound": "Spill lyd", - "notifications.column_settings.status": "Nye tuter:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.status": "Nye innlegg:", + "notifications.column_settings.unread_notifications.category": "Uleste varslinger", + "notifications.column_settings.unread_notifications.highlight": "Marker uleste varslinger", "notifications.column_settings.update": "Redigeringer:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Fremhevinger", @@ -444,29 +444,29 @@ "poll.total_votes": "{count, plural, one {# stemme} other {# stemmer}}", "poll.vote": "Stem", "poll.voted": "Du stemte på dette svaret", - "poll.votes": "{votes, plural, one {# vote} other {# votes}}", + "poll.votes": "{votes, plural, one {# stemme} other {# stemmer}}", "poll_button.add_poll": "Legg til en avstemning", "poll_button.remove_poll": "Fjern avstemningen", "privacy.change": "Justér synlighet", "privacy.direct.long": "Post kun til nevnte brukere", - "privacy.direct.short": "Direct", + "privacy.direct.short": "Kun nevnte personer", "privacy.private.long": "Post kun til følgere", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Kun følgere", + "privacy.public.long": "Synlig for alle", "privacy.public.short": "Offentlig", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Uoppført", - "privacy_policy.last_updated": "Last updated {date}", + "privacy_policy.last_updated": "Sist oppdatert {date}", "privacy_policy.title": "Privacy Policy", "refresh": "Oppfrisk", "regeneration_indicator.label": "Laster…", "regeneration_indicator.sublabel": "Dine startside forberedes!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# dag} other {# dager}} siden", + "relative_time.full.hours": "{number, plural, one {# time} other {# timer}} siden", + "relative_time.full.just_now": "nettopp", + "relative_time.full.minutes": "for {number, plural, one {# minutt} other {# minutter}} siden", + "relative_time.full.seconds": "for {number, plural, one {# sekund} other {# sekunder}} siden", "relative_time.hours": "{number}t", "relative_time.just_now": "nå", "relative_time.minutes": "{number}m", @@ -474,46 +474,46 @@ "relative_time.today": "i dag", "reply_indicator.cancel": "Avbryt", "report.block": "Blokker", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.block_explanation": "Du kommer ikke til å se innleggene deres. De vil ikke kunne se innleggene dine eller følge deg. De vil kunne se at de er blokkert.", + "report.categories.other": "Annet", "report.categories.spam": "Søppelpost", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", + "report.categories.violation": "Innholdet bryter en eller flere serverregler", + "report.category.subtitle": "Velg det som passer best", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "profil", "report.category.title_status": "innlegg", "report.close": "Utført", - "report.comment.title": "Is there anything else you think we should know?", + "report.comment.title": "Er det noe annet du mener vi burde vite?", "report.forward": "Videresend til {target}", "report.forward_hint": "Denne kontoen er fra en annen tjener. Vil du sende en anonymisert kopi av rapporten dit også?", "report.mute": "Demp", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute_explanation": "Du kommer ikke til å se deres innlegg. De kan fortsatt følge deg og se dine innlegg, og kan ikke se at de er dempet.", "report.next": "Neste", "report.placeholder": "Tilleggskommentarer", "report.reasons.dislike": "Jeg liker det ikke", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", + "report.reasons.dislike_description": "Det er ikke noe du har lyst til å se", + "report.reasons.other": "Det er noe annet", "report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.spam": "Det er spam", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", + "report.reasons.violation": "Det bryter serverregler", + "report.reasons.violation_description": "Du er klar over at det bryter spesifikke regler", + "report.rules.subtitle": "Velg alle som passer", + "report.rules.title": "Hvilke regler brytes?", + "report.statuses.subtitle": "Velg alle som passer", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "Send inn", "report.target": "Rapporterer", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", + "report.thanks.take_action": "Her er alternativene dine for å kontrollere hva du ser på Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", + "report.thanks.title": "Ønsker du ikke å se dette?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", - "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", - "report_notification.categories.other": "Other", - "report_notification.categories.spam": "Spam", - "report_notification.categories.violation": "Rule violation", + "report.unfollow": "Slutt å følge @{name}", + "report.unfollow_explanation": "Du følger denne kontoen. For ikke å se innleggene deres i din hjem-feed lenger, slutt å følge dem.", + "report_notification.attached_statuses": "{count, plural,one {{count} innlegg} other {{count} innlegg}} vedlagt", + "report_notification.categories.other": "Annet", + "report_notification.categories.spam": "Søppelpost", + "report_notification.categories.violation": "Regelbrudd", "report_notification.open": "Open report", "search.placeholder": "Søk", "search.search_or_paste": "Search or paste URL", @@ -524,22 +524,22 @@ "search_popout.tips.text": "Enkel tekst returnerer matchende visningsnavn, brukernavn og emneknagger", "search_popout.tips.user": "bruker", "search_results.accounts": "Folk", - "search_results.all": "All", + "search_results.all": "Alle", "search_results.hashtags": "Emneknagger", - "search_results.nothing_found": "Could not find anything for these search terms", - "search_results.statuses": "Tuter", - "search_results.statuses_fts_disabled": "Å søke i tuter etter innhold er ikke skrudd på i denne Mastodon-tjeneren.", - "search_results.title": "Search for {q}", + "search_results.nothing_found": "Fant ikke noe for disse søkeordene", + "search_results.statuses": "Innlegg", + "search_results.statuses_fts_disabled": "Å søke i innlegg etter innhold er ikke skrudd på i denne Mastodon-tjeneren.", + "search_results.title": "Søk etter {q}", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", - "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "server_banner.about_active_users": "Personer som har brukt denne serveren i løpet av de siste 30 dagene (aktive brukere månedlig)", + "server_banner.active_users": "aktive brukere", + "server_banner.administered_by": "Administrert av:", + "server_banner.introduction": "{domain} er en del av det desentraliserte sosiale nettverket drevet av {mastodon}.", + "server_banner.learn_more": "Finn ut mer", + "server_banner.server_stats": "Serverstatistikk:", + "sign_in_banner.create_account": "Opprett konto", + "sign_in_banner.sign_in": "Logg inn", + "sign_in_banner.text": "Logg inn for å følge profiler eller hashtags, like, dele og svare på innlegg eller interagere fra din konto på en annen server.", "status.admin_account": "Åpne moderatorgrensesnittet for @{name}", "status.admin_status": "Åpne denne statusen i moderatorgrensesnittet", "status.block": "Blokkér @{name}", @@ -550,16 +550,16 @@ "status.delete": "Slett", "status.detailed_status": "Detaljert samtalevisning", "status.direct": "Send direktemelding til @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Redigér", + "status.edited": "Redigert {date}", + "status.edited_x_times": "Redigert {count, plural,one {{count} gang} other {{count} ganger}}", "status.embed": "Bygge inn", "status.favourite": "Lik", - "status.filter": "Filter this post", + "status.filter": "Filtrer dette innlegget", "status.filtered": "Filtrert", - "status.hide": "Hide toot", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.hide": "Skjul innlegg", + "status.history.created": "{name} opprettet {date}", + "status.history.edited": "{name} redigerte {date}", "status.load_more": "Last mer", "status.media_hidden": "Media skjult", "status.mention": "Nevn @{name}", @@ -568,15 +568,15 @@ "status.mute_conversation": "Demp samtale", "status.open": "Utvid denne statusen", "status.pin": "Fest på profilen", - "status.pinned": "Festet tut", + "status.pinned": "Festet innlegg", "status.read_more": "Les mer", "status.reblog": "Fremhev", "status.reblog_private": "Fremhev til det opprinnelige publikummet", "status.reblogged_by": "Fremhevd av {name}", - "status.reblogs.empty": "Ingen har fremhevet denne tuten enda. Når noen gjør det, vil de dukke opp her.", + "status.reblogs.empty": "Ingen har fremhevet dette innlegget enda. Når noen gjør det, vil de dukke opp her.", "status.redraft": "Slett og drøft på nytt", "status.remove_bookmark": "Fjern bokmerke", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Svarte {name}", "status.reply": "Svar", "status.replyAll": "Svar til samtale", "status.report": "Rapporter @{name}", @@ -610,7 +610,7 @@ "timeline_hint.remote_resource_not_displayed": "{resource} fra andre servere vises ikke.", "timeline_hint.resources.followers": "Følgere", "timeline_hint.resources.follows": "Følger", - "timeline_hint.resources.statuses": "Eldre tuter", + "timeline_hint.resources.statuses": "Eldre innlegg", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "Trender nå", "ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index b00db0d32d..a34bef1ea0 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -1,7 +1,7 @@ { "about.blocks": "Servidors moderats", "about.contact": "Contacte :", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", + "about.disclaimer": "Mastodon es gratuit, un logicial libre e una marca de Mastodon gGmbH.", "about.domain_blocks.comment": "Rason", "about.domain_blocks.domain": "Domeni", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", @@ -30,7 +30,7 @@ "account.endorse": "Mostrar pel perfil", "account.featured_tags.last_status_at": "Darrièra publicacion lo {date}", "account.featured_tags.last_status_never": "Cap de publicacion", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.title": "Etiquetas en avant de {name}", "account.follow": "Sègre", "account.followers": "Seguidors", "account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.", @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Abonaments} other {{counter} Abonaments}}", "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.", "account.follows_you": "Vos sèc", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Anar al perfil", "account.hide_reblogs": "Rescondre los partatges de @{name}", "account.joined_short": "Venguèt lo", "account.languages": "Modificar las lengas seguidas", @@ -95,7 +95,7 @@ "bundle_modal_error.retry": "Tornar ensajar", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "Trobar un autre servidor", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "S’inscriure a Mastodon", "column.about": "A prepaus", @@ -151,8 +151,8 @@ "confirmations.block.block_and_report": "Blocar e senhalar", "confirmations.block.confirm": "Blocar", "confirmations.block.message": "Volètz vertadièrament blocar {name} ?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Retirar la demandar", + "confirmations.cancel_follow_request.message": "Volètz vertadièrament retirar la demanda de seguiment de {name} ?", "confirmations.delete.confirm": "Escafar", "confirmations.delete.message": "Volètz vertadièrament escafar l’estatut ?", "confirmations.delete_list.confirm": "Suprimir", @@ -182,8 +182,8 @@ "directory.local": "Solament de {domain}", "directory.new_arrivals": "Nòus-venguts", "directory.recently_active": "Actius fa res", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Paramètres de compte", + "disabled_account_banner.text": "Vòstre compte {disabledAccount} es actualament desactivat.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Ignorar", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -215,7 +215,7 @@ "empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !", "empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.", "empty_column.domain_blocks": "I a pas encara cap de domeni amagat.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "I a pas res en tendéncia pel moment. Tornatz mai tard !", "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quand n’auretz un, apareisserà aquí.", "empty_column.favourites": "Degun a pas encara mes en favorit aqueste tut. Quand qualqu’un o farà, apareisserà aquí.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", @@ -243,16 +243,16 @@ "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "Filtre expirat !", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Paramètres del filtre", "filter_modal.added.settings_link": "page de parametratge", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filtre apondut !", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", + "filter_modal.select_filter.context_mismatch": "s’aplica pas a aqueste contèxte", + "filter_modal.select_filter.expired": "expirat", + "filter_modal.select_filter.prompt_new": "Categoria novèla : {name}", + "filter_modal.select_filter.search": "Cercar o crear", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filtrar aquesta publicacion", "filter_modal.title.status": "Filtrar una publicacion", @@ -295,7 +295,7 @@ "interaction_modal.on_this_server": "Sus aqueste servidor", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.title.favourite": "Metre en favorit la publicacion de {name}", "interaction_modal.title.follow": "Sègre {name}", "interaction_modal.title.reblog": "Partejar la publicacion de {name}", "interaction_modal.title.reply": "Respondre a la publicacion de {name}", @@ -308,7 +308,7 @@ "keyboard_shortcuts.column": "centrar un estatut a una colomna", "keyboard_shortcuts.compose": "anar al camp tèxte", "keyboard_shortcuts.description": "descripcion", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "dobrir la colomna de messatges dirèctes", "keyboard_shortcuts.down": "far davalar dins la lista", "keyboard_shortcuts.enter": "dobrir los estatuts", "keyboard_shortcuts.favourite": "apondre als favorits", @@ -341,8 +341,8 @@ "lightbox.expand": "Espandir la fenèstra de visualizacion d’imatge", "lightbox.next": "Seguent", "lightbox.previous": "Precedent", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.action": "Afichar lo perfil de tota manièra", + "limited_account_hint.title": "Aqueste perfil foguèt rescondut per la moderacion de {domain}.", "lists.account.add": "Ajustar a la lista", "lists.account.remove": "Levar de la lista", "lists.delete": "Suprimir la lista", @@ -388,8 +388,8 @@ "navigation_bar.public_timeline": "Flux public global", "navigation_bar.search": "Recercar", "navigation_bar.security": "Seguretat", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "Devètz vos connectar per accedir a aquesta ressorsa.", + "notification.admin.report": "{name} senhalèt {target}", "notification.admin.sign_up": "{name} se marquèt", "notification.favourite": "{name} a ajustat a sos favorits", "notification.follow": "{name} vos sèc", @@ -402,8 +402,8 @@ "notification.update": "{name} modiquè sa publicacion", "notifications.clear": "Escafar", "notifications.clear_confirmation": "Volètz vertadièrament escafar totas vòstras las notificacions ?", - "notifications.column_settings.admin.report": "New reports:", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.report": "Senhalaments novèls :", + "notifications.column_settings.admin.sign_up": "Nòus inscrits :", "notifications.column_settings.alert": "Notificacions localas", "notifications.column_settings.favourite": "Favorits :", "notifications.column_settings.filter_bar.advanced": "Mostrar totas las categorias", @@ -419,7 +419,7 @@ "notifications.column_settings.sound": "Emetre un son", "notifications.column_settings.status": "Tuts novèls :", "notifications.column_settings.unread_notifications.category": "Notificacions pas legidas", - "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.unread_notifications.highlight": "Forçar sus las notificacions pas legidas", "notifications.column_settings.update": "Modificacions :", "notifications.filter.all": "Totas", "notifications.filter.boosts": "Partages", @@ -454,7 +454,7 @@ "privacy.private.short": "Sonque pels seguidors", "privacy.public.long": "Visiblas per totes", "privacy.public.short": "Public", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Visible per totes mas desactivat per las foncionalitats de descobèrta", "privacy.unlisted.short": "Pas-listat", "privacy_policy.last_updated": "Darrièra actualizacion {date}", "privacy_policy.title": "Politica de confidencialitat", @@ -478,7 +478,7 @@ "report.categories.other": "Autre", "report.categories.spam": "Spam", "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", + "report.category.subtitle": "Causissètz çò que correspond mai", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "perfil", "report.category.title_status": "publicacion", @@ -491,7 +491,7 @@ "report.next": "Seguent", "report.placeholder": "Comentaris addicionals", "report.reasons.dislike": "M’agrada pas", - "report.reasons.dislike_description": "It is not something you want to see", + "report.reasons.dislike_description": "Es pas quicòm que volriatz veire", "report.reasons.other": "Es quicòm mai", "report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.spam": "It's spam", @@ -514,7 +514,7 @@ "report_notification.categories.other": "Autre", "report_notification.categories.spam": "Spam", "report_notification.categories.violation": "Rule violation", - "report_notification.open": "Open report", + "report_notification.open": "Dobrir lo senhalament", "search.placeholder": "Recercar", "search.search_or_paste": "Recercar o picar una URL", "search_popout.search_format": "Format recèrca avançada", @@ -526,7 +526,7 @@ "search_results.accounts": "Gents", "search_results.all": "Tot", "search_results.hashtags": "Etiquetas", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Cap de resultat per aquestes tèrmes de recèrca", "search_results.statuses": "Tuts", "search_results.statuses_fts_disabled": "La recèrca de tuts per lor contengut es pas activada sus aqueste servidor Mastodon.", "search_results.title": "Recèrca : {q}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 46efcec03d..307d4c7c01 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} obserwowany} few {{counter} obserwowanych} many {{counter} obserwowanych} other {{counter} obserwowanych}}", "account.follows.empty": "Ten użytkownik nie obserwuje jeszcze nikogo.", "account.follows_you": "Obserwuje Cię", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Przejdź do profilu", "account.hide_reblogs": "Ukryj podbicia od @{name}", "account.joined_short": "Dołączył(a)", "account.languages": "Zmień subskrybowane języki", @@ -182,8 +182,8 @@ "directory.local": "Tylko z {domain}", "directory.new_arrivals": "Nowości", "directory.recently_active": "Ostatnio aktywne", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Ustawienia konta", + "disabled_account_banner.text": "Twoje konto {disabledAccount} jest obecnie wyłączone.", "dismissable_banner.community_timeline": "To są najnowsze wpisy publiczne od osób, które mają założone konta na {domain}.", "dismissable_banner.dismiss": "Schowaj", "dismissable_banner.explore_links": "Te wiadomości obecnie są komentowane przez osoby z tego serwera i pozostałych w zdecentralizowanej sieci.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Przełącz widoczność", "missing_indicator.label": "Nie znaleziono", "missing_indicator.sublabel": "Nie można odnaleźć tego zasobu", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Twoje konto {disabledAccount} jest obecnie wyłączone, ponieważ zostało przeniesione na {movedToAccount}.", "mute_modal.duration": "Czas", "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?", "mute_modal.indefinite": "Nieokreślony", @@ -576,7 +576,7 @@ "status.reblogs.empty": "Nikt nie podbił jeszcze tego wpisu. Gdy ktoś to zrobi, pojawi się tutaj.", "status.redraft": "Usuń i przeredaguj", "status.remove_bookmark": "Usuń zakładkę", - "status.replied_to": "Odpowiedziałeś/aś {name}", + "status.replied_to": "Odpowiedź do wpisu użytkownika {name}", "status.reply": "Odpowiedz", "status.replyAll": "Odpowiedz na wątek", "status.report": "Zgłoś @{name}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index b8164fca77..65ca4f5117 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -4,7 +4,7 @@ "about.disclaimer": "Mastodon é um software de código aberto e livre, e uma marca registrada de Mastodon gGmbH.", "about.domain_blocks.comment": "Motivo", "about.domain_blocks.domain": "Domínio", - "about.domain_blocks.preamble": "Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", + "about.domain_blocks.preamble": "O Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outro servidor no fediverso. Estas são as exceções deste servidor em específico.", "about.domain_blocks.severity": "Gravidade", "about.domain_blocks.silenced.explanation": "Você geralmente não verá perfis e conteúdo deste servidor, a menos que você o procure explicitamente ou opte por seguir.", "about.domain_blocks.silenced.title": "Limitado", @@ -28,9 +28,9 @@ "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar novos toots de @{name}", "account.endorse": "Recomendar", - "account.featured_tags.last_status_at": "Último post em {date}", - "account.featured_tags.last_status_never": "Não há postagens", - "account.featured_tags.title": "Marcadores em destaque de {name}", + "account.featured_tags.last_status_at": "Última publicação em {date}", + "account.featured_tags.last_status_never": "Sem publicações", + "account.featured_tags.title": "Hashtags em destaque de {name}", "account.follow": "Seguir", "account.followers": "Seguidores", "account.followers.empty": "Nada aqui.", @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {segue {counter}} other {segue {counter}}}", "account.follows.empty": "Nada aqui.", "account.follows_you": "te segue", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Ir para o perfil", "account.hide_reblogs": "Ocultar boosts de @{name}", "account.joined_short": "Entrou", "account.languages": "Mudar idiomas inscritos", @@ -65,7 +65,7 @@ "account.unfollow": "Deixar de seguir", "account.unmute": "Dessilenciar @{name}", "account.unmute_notifications": "Mostrar notificações de @{name}", - "account.unmute_short": "Reativar", + "account.unmute_short": "Dessilenciar", "account_note.placeholder": "Nota pessoal sobre este perfil aqui", "admin.dashboard.daily_retention": "Taxa de retenção de usuários por dia, após a inscrição", "admin.dashboard.monthly_retention": "Taxa de retenção de usuários por mês, após a inscrição", @@ -82,9 +82,9 @@ "autosuggest_hashtag.per_week": "{count} por semana", "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez", "bundle_column_error.copy_stacktrace": "Copiar erro de informe", - "bundle_column_error.error.body": "A página solicitada não pode ser renderizada. Pode ser devido a um bug em nosso código, ou um problema de compatibilidade do navegador.", + "bundle_column_error.error.body": "A página solicitada não pode ser renderizada. Pode ser devido a um erro em nosso código ou um problema de compatibilidade do navegador.", "bundle_column_error.error.title": "Ah, não!", - "bundle_column_error.network.body": "Houve um erro ao tentar carregar esta página. Isso pode ser devido a um problema temporário com sua conexão de internet ou deste servidor.", + "bundle_column_error.network.body": "Ocorreu um erro ao tentar carregar esta página. Isso pode ser devido a um problema temporário com sua conexão de internet ou deste servidor.", "bundle_column_error.network.title": "Erro de rede", "bundle_column_error.retry": "Tente novamente", "bundle_column_error.return": "Voltar à página inicial", @@ -93,10 +93,10 @@ "bundle_modal_error.close": "Fechar", "bundle_modal_error.message": "Erro ao carregar este componente.", "bundle_modal_error.retry": "Tente novamente", - "closed_registrations.other_server_instructions": "Como o Mastodon é descentralizado, você pode criar uma conta em outra instância e ainda pode interagir com esta.", + "closed_registrations.other_server_instructions": "Como o Mastodon é descentralizado, você pode criar uma conta em outro servidor e ainda pode interagir com este.", "closed_registrations_modal.description": "Não é possível criar uma conta em {domain} no momento, mas atente que você não precisa de uma conta especificamente em {domain} para usar o Mastodon.", - "closed_registrations_modal.find_another_server": "Encontrar outra instância", - "closed_registrations_modal.preamble": "O Mastodon é descentralizado, não importa onde você crie sua conta, você poderá seguir e interagir com qualquer pessoa nesta instância. Você pode até mesmo criar sua própria instância!", + "closed_registrations_modal.find_another_server": "Encontrar outro servidor", + "closed_registrations_modal.preamble": "O Mastodon é descentralizado, não importa onde você criou a sua conta, será possível seguir e interagir com qualquer pessoa neste servidor. Você pode até mesmo criar o seu próprio servidor!", "closed_registrations_modal.title": "Inscrevendo-se no Mastodon", "column.about": "Sobre", "column.blocks": "Usuários bloqueados", @@ -127,7 +127,7 @@ "compose.language.change": "Alterar idioma", "compose.language.search": "Pesquisar idiomas...", "compose_form.direct_message_warning_learn_more": "Saiba mais", - "compose_form.encryption_warning": "Postagens no Mastodon não são criptografadas de ponta-a-ponta. Não compartilhe nenhuma informação sensível no Mastodon.", + "compose_form.encryption_warning": "As publicações no Mastodon não são criptografadas de ponta-a-ponta. Não compartilhe nenhuma informação sensível no Mastodon.", "compose_form.hashtag_warning": "Este toot não aparecerá em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.", "compose_form.lock_disclaimer": "Seu perfil não está {locked}. Qualquer um pode te seguir e ver os toots privados.", "compose_form.lock_disclaimer.lock": "trancado", @@ -158,7 +158,7 @@ "confirmations.delete_list.confirm": "Excluir", "confirmations.delete_list.message": "Você tem certeza de que deseja excluir esta lista?", "confirmations.discard_edit_media.confirm": "Descartar", - "confirmations.discard_edit_media.message": "Há mudanças não salvas na descrição ou pré-visualização da mídia; descartar assim mesmo?", + "confirmations.discard_edit_media.message": "Há mudanças não salvas na descrição ou pré-visualização da mídia. Descartar assim mesmo?", "confirmations.domain_block.confirm": "Bloquear instância", "confirmations.domain_block.message": "Você tem certeza de que deseja bloquear tudo de {domain}? Você não verá mais o conteúdo desta instância em nenhuma linha do tempo pública ou nas suas notificações. Seus seguidores desta instância serão removidos.", "confirmations.logout.confirm": "Sair", @@ -182,14 +182,14 @@ "directory.local": "Somente de {domain}", "directory.new_arrivals": "Acabaram de chegar", "directory.recently_active": "Ativos recentemente", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Configurações da conta", + "disabled_account_banner.text": "Sua conta {disabledAccount} está desativada no momento.", "dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes das pessoas cujas contas são hospedadas por {domain}.", "dismissable_banner.dismiss": "Dispensar", - "dismissable_banner.explore_links": "Estas novas histórias estão sendo contadas por pessoas nesta e em outras instâncias da rede descentralizada no momento.", - "dismissable_banner.explore_statuses": "Estas publicações desta e de outras instâncias na rede descentralizada estão ganhando popularidade na instância agora.", - "dismissable_banner.explore_tags": "Estes marcadores estão ganhando popularidade entre pessoas desta e de outras instâncias da rede descentralizada no momento.", - "dismissable_banner.public_timeline": "Estas são as publicações mais recentes de pessoas desta e de outras instâncias da rede descentralizada que esta instância conhece.", + "dismissable_banner.explore_links": "Estas novas histórias estão sendo contadas por pessoas neste e em outros servidores da rede descentralizada no momento.", + "dismissable_banner.explore_statuses": "Estas publicações deste e de outros servidores na rede descentralizada estão ganhando popularidade neste servidor agora.", + "dismissable_banner.explore_tags": "Estas hashtags estão ganhando popularidade no momento entre as pessoas deste e de outros servidores da rede descentralizada.", + "dismissable_banner.public_timeline": "Estas são as publicações mais recentes de pessoas deste e de outros servidores da rede descentralizada que este servidor conhece.", "embed.instructions": "Incorpore este toot no seu site ao copiar o código abaixo.", "embed.preview": "Aqui está como vai ficar:", "emoji_button.activity": "Atividade", @@ -238,7 +238,7 @@ "explore.suggested_follows": "Para você", "explore.title": "Explorar", "explore.trending_links": "Notícias", - "explore.trending_statuses": "Posts", + "explore.trending_statuses": "Publicações", "explore.trending_tags": "Hashtags", "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!", @@ -255,7 +255,7 @@ "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.title": "Filtrar esta publicação", - "filter_modal.title.status": "Filtrar uma postagem", + "filter_modal.title.status": "Filtrar uma publicação", "follow_recommendations.done": "Salvar", "follow_recommendations.heading": "Siga pessoas que você gostaria de acompanhar! Aqui estão algumas sugestões.", "follow_recommendations.lead": "Toots de pessoas que você segue aparecerão em ordem cronológica na página inicial. Não tenha medo de cometer erros, você pode facilmente deixar de seguir a qualquer momento!", @@ -280,24 +280,24 @@ "hashtag.column_settings.tag_mode.any": "Qualquer uma", "hashtag.column_settings.tag_mode.none": "Nenhuma", "hashtag.column_settings.tag_toggle": "Adicionar mais hashtags aqui", - "hashtag.follow": "Seguir “hashtag”", - "hashtag.unfollow": "Parar de seguir “hashtag”", + "hashtag.follow": "Seguir hashtag", + "hashtag.unfollow": "Parar de seguir hashtag", "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", "home.hide_announcements": "Ocultar comunicados", "home.show_announcements": "Mostrar comunicados", - "interaction_modal.description.favourite": "Com uma conta no Mastodon, você pode favoritar este post para que o autor saiba que você gostou e salvá-lo para mais ler mais tarde.", - "interaction_modal.description.follow": "Com uma conta no Mastodon, você pode seguir {name} para receber publicações no seu feed inicial.", - "interaction_modal.description.reblog": "Com uma conta no Mastodon, você pode impulsionar este post para compartilhá-lo com seus próprios seguidores.", - "interaction_modal.description.reply": "Com uma conta no Mastodon, você pode responder este post.", + "interaction_modal.description.favourite": "Com uma conta no Mastodon, você pode favoritar esta publicação para que o autor saiba que você gostou e salvá-lo para mais ler mais tarde.", + "interaction_modal.description.follow": "Com uma conta no Mastodon, você pode seguir {name} para receber publicações na sua página inicial.", + "interaction_modal.description.reblog": "Com uma conta no Mastodon, você pode impulsionar esta publicação para compartilhá-lo com seus próprios seguidores.", + "interaction_modal.description.reply": "Com uma conta no Mastodon, você pode responder a esta publicação.", "interaction_modal.on_another_server": "Em um servidor diferente", "interaction_modal.on_this_server": "Neste servidor", "interaction_modal.other_server_instructions": "Simplesmente copie e cole este URL na barra de pesquisa do seu aplicativo favorito ou na interface web onde você está autenticado.", - "interaction_modal.preamble": "Sendo o Mastodon descentralizado, você pode usar sua conta existente em outro servidor Mastodon ou plataforma compatível se você não tiver uma conta neste servidor.", - "interaction_modal.title.favourite": "Favoritar post de {name}", + "interaction_modal.preamble": "Como o Mastodon é descentralizado, você pode usar sua conta existente em outro servidor Mastodon ou plataforma compatível se você não tiver uma conta neste servidor.", + "interaction_modal.title.favourite": "Favoritar publicação de {name}", "interaction_modal.title.follow": "Seguir {name}", - "interaction_modal.title.reblog": "Impulsionar post de {name}", + "interaction_modal.title.reblog": "Impulsionar publicação de {name}", "interaction_modal.title.reply": "Responder à publicação de {name}", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Ocultar mídia} other {Ocultar mídias}}", "missing_indicator.label": "Não encontrado", "missing_indicator.sublabel": "Recurso não encontrado", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Sua conta {disabledAccount} está desativada porque você a moveu para {movedToAccount}.", "mute_modal.duration": "Duração", "mute_modal.hide_notifications": "Ocultar notificações deste usuário?", "mute_modal.indefinite": "Indefinido", @@ -456,8 +456,8 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "Visível para todos, mas desativou os recursos de descoberta", "privacy.unlisted.short": "Não-listado", - "privacy_policy.last_updated": "Última atualização {date}", - "privacy_policy.title": "Política de Privacidade", + "privacy_policy.last_updated": "Atualizado {date}", + "privacy_policy.title": "Política de privacidade", "refresh": "Atualizar", "regeneration_indicator.label": "Carregando…", "regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!", @@ -474,7 +474,7 @@ "relative_time.today": "hoje", "reply_indicator.cancel": "Cancelar", "report.block": "Bloquear", - "report.block_explanation": "Você não verá suas postagens. Eles não poderão ver suas postagens ou segui-lo. Eles serão capazes de perceber que estão bloqueados.", + "report.block_explanation": "Você não verá suas publicações. Ele não poderá ver suas publicações ou segui-lo, e será capaz de perceber que está bloqueado.", "report.categories.other": "Outro", "report.categories.spam": "Spam", "report.categories.violation": "O conteúdo viola uma ou mais regras do servidor", @@ -487,7 +487,7 @@ "report.forward": "Encaminhar para {target}", "report.forward_hint": "A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá?", "report.mute": "Silenciar", - "report.mute_explanation": "Você não verá suas postagens. Eles ainda podem seguir você e ver suas postagens e não saberão que estão silenciados.", + "report.mute_explanation": "Você não verá suas publicações. Ele ainda pode seguir você e ver suas publicações, e não saberá que está silenciado.", "report.next": "Próximo", "report.placeholder": "Comentários adicionais aqui", "report.reasons.dislike": "Eu não gosto disso", @@ -499,7 +499,7 @@ "report.reasons.violation": "Viola as regras do servidor", "report.reasons.violation_description": "Você está ciente de que isso quebra regras específicas", "report.rules.subtitle": "Selecione tudo que se aplica", - "report.rules.title": "Que regras estão sendo violadas?", + "report.rules.title": "Quais regras estão sendo violadas?", "report.statuses.subtitle": "Selecione tudo que se aplica", "report.statuses.title": "Existem postagens que respaldam esse relatório?", "report.submit": "Enviar", @@ -507,9 +507,9 @@ "report.thanks.take_action": "Aqui estão suas opções para controlar o que você vê no Mastodon:", "report.thanks.take_action_actionable": "Enquanto revisamos isso, você pode tomar medidas contra @{name}:", "report.thanks.title": "Não quer ver isto?", - "report.thanks.title_actionable": "Obrigado por reportar. Vamos analisar.", + "report.thanks.title_actionable": "Obrigado por denunciar, nós vamos analisar.", "report.unfollow": "Deixar de seguir @{name}", - "report.unfollow_explanation": "Você está seguindo esta conta. Para não mais ver os posts dele em sua página inicial, deixe de segui-lo.", + "report.unfollow_explanation": "Você está seguindo esta conta. Para não ver as publicações dela em sua página inicial, deixe de segui-la.", "report_notification.attached_statuses": "{count, plural, one {{count} publicação} other {{count} publicações}} anexada(s)", "report_notification.categories.other": "Outro", "report_notification.categories.spam": "Spam", @@ -531,15 +531,15 @@ "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.", "search_results.title": "Buscar {q}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", - "server_banner.about_active_users": "Pessoas usando esta instância durante os últimos 30 dias (Usuários Ativos Mensalmente)", + "server_banner.about_active_users": "Pessoas usando este servidor durante os últimos 30 dias (Usuários ativos mensalmente)", "server_banner.active_users": "usuários ativos", "server_banner.administered_by": "Administrado por:", "server_banner.introduction": "{domain} faz parte da rede social descentralizada desenvolvida por {mastodon}.", "server_banner.learn_more": "Saiba mais", - "server_banner.server_stats": "Estatísticas da instância:", + "server_banner.server_stats": "Estatísticas do servidor:", "sign_in_banner.create_account": "Criar conta", "sign_in_banner.sign_in": "Entrar", - "sign_in_banner.text": "Entre para seguir perfis ou marcadores, favoritar, compartilhar e responder publicações, interagir a partir da sua conta em uma instância diferente.", + "sign_in_banner.text": "Entre para seguir perfis ou hashtags, favoritar, compartilhar e responder publicações, interagir a partir da sua conta em um servidor diferente.", "status.admin_account": "Abrir interface de moderação para @{name}", "status.admin_status": "Abrir este toot na interface de moderação", "status.block": "Bloquear @{name}", @@ -582,7 +582,7 @@ "status.report": "Denunciar @{name}", "status.sensitive_warning": "Mídia sensível", "status.share": "Compartilhar", - "status.show_filter_reason": "Mostrar de qualquer maneira", + "status.show_filter_reason": "Mostrar mesmo assim", "status.show_less": "Mostrar menos", "status.show_less_all": "Mostrar menos em tudo", "status.show_more": "Mostrar mais", @@ -593,7 +593,7 @@ "status.uncached_media_warning": "Não disponível", "status.unmute_conversation": "Dessilenciar conversa", "status.unpin": "Desafixar", - "subscribed_languages.lead": "Apenas publicações nos idiomas selecionados irão aparecer na sua página inicial e outras linhas do tempo após a mudança. Selecione nenhum para receber publicações em todos os idiomas.", + "subscribed_languages.lead": "Apenas publicações nos idiomas selecionados aparecerão na sua página inicial e outras linhas do tempo após a mudança. Selecione nenhum para receber publicações em todos os idiomas.", "subscribed_languages.save": "Salvar alterações", "subscribed_languages.target": "Alterar idiomas inscritos para {target}", "suggestions.dismiss": "Ignorar sugestão", @@ -623,7 +623,7 @@ "upload_error.poll": "Mídias não podem ser anexadas em toots com enquetes.", "upload_form.audio_description": "Descrever para deficientes auditivos", "upload_form.description": "Descrever para deficientes visuais", - "upload_form.description_missing": "Nenhuma descrição adicionada", + "upload_form.description_missing": "Sem descrição", "upload_form.edit": "Editar", "upload_form.thumbnail": "Alterar miniatura", "upload_form.undo": "Excluir", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index a1d09b8998..02a0ceca98 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, other {A seguir {counter}}}", "account.follows.empty": "Este utilizador ainda não segue ninguém.", "account.follows_you": "Segue-te", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Ir para o perfil", "account.hide_reblogs": "Esconder partilhas de @{name}", "account.joined_short": "Juntou-se a", "account.languages": "Alterar idiomas subscritos", @@ -182,8 +182,8 @@ "directory.local": "Apenas de {domain}", "directory.new_arrivals": "Recém chegados", "directory.recently_active": "Com actividade recente", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Definições da conta", + "disabled_account_banner.text": "A sua conta {disabledAccount} está, no momento, desativada.", "dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes de pessoas cujas contas são hospedadas por {domain}.", "dismissable_banner.dismiss": "Descartar", "dismissable_banner.explore_links": "Essas histórias de notícias estão, no momento, a ser faladas por pessoas neste e noutros servidores da rede descentralizada.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Alternar visibilidade", "missing_indicator.label": "Não encontrado", "missing_indicator.sublabel": "Este recurso não foi encontrado", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "A sua conta {disabledAccount} está, no momento, desativada, porque você migrou para {movedToAccount}.", "mute_modal.duration": "Duração", "mute_modal.hide_notifications": "Esconder notificações deste utilizador?", "mute_modal.indefinite": "Indefinidamente", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 9a9933c179..fb341a979e 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} подписка} many {{counter} подписок} other {{counter} подписки}}", "account.follows.empty": "Этот пользователь пока ни на кого не подписался.", "account.follows_you": "Подписан(а) на вас", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Перейти к профилю", "account.hide_reblogs": "Скрыть продвижения от @{name}", "account.joined_short": "Joined", "account.languages": "Изменить языки подписки", @@ -182,8 +182,8 @@ "directory.local": "Только с {domain}", "directory.new_arrivals": "Новички", "directory.recently_active": "Недавно активные", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Настройки учётной записи", + "disabled_account_banner.text": "Ваша учётная запись {disabledAccount} в настоящее время отключена.", "dismissable_banner.community_timeline": "Это самые последние публичные сообщения от людей, чьи учетные записи размещены в {domain}.", "dismissable_banner.dismiss": "Dismiss", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -386,7 +386,7 @@ "navigation_bar.pins": "Закреплённые посты", "navigation_bar.preferences": "Настройки", "navigation_bar.public_timeline": "Глобальная лента", - "navigation_bar.search": "Search", + "navigation_bar.search": "Поиск", "navigation_bar.security": "Безопасность", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} сообщил о {target}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 88b32ea78e..76c5798202 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {sledi {count} osebi} two {sledi {count} osebama} few {sledi {count} osebam} other {sledi {count} osebam}}", "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", "account.follows_you": "Vam sledi", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Pojdi na profil", "account.hide_reblogs": "Skrij izpostavitve od @{name}", "account.joined_short": "Pridružil/a", "account.languages": "Spremeni naročene jezike", @@ -182,8 +182,8 @@ "directory.local": "Samo iz {domain}", "directory.new_arrivals": "Novi prišleki", "directory.recently_active": "Nedavno aktiven/a", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Nastavitve računa", + "disabled_account_banner.text": "Vaš račun {disabledAccount} je trenutno onemogočen.", "dismissable_banner.community_timeline": "To so najnovejše javne objave oseb, katerih računi gostujejo na {domain}.", "dismissable_banner.dismiss": "Opusti", "dismissable_banner.explore_links": "O teh novicah ravno zdaj veliko govorijo osebe na tem in drugih strežnikih decentraliziranega omrežja.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural,one {Skrij sliko} two {Skrij sliki} other {Skrij slike}}", "missing_indicator.label": "Ni najdeno", "missing_indicator.sublabel": "Tega vira ni bilo mogoče najti", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Vaš račun {disabledAccount} je trenutno onemogočen, ker ste se prestavili na {movedToAccount}.", "mute_modal.duration": "Trajanje", "mute_modal.hide_notifications": "Ali želite skriti obvestila tega uporabnika?", "mute_modal.indefinite": "Nedoločeno", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 3debd623e7..f53d140bca 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} i Ndjekur} other {{counter} të Ndjekur}}", "account.follows.empty": "Ky përdorues ende s’ndjek kënd.", "account.follows_you": "Ju ndjek", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Kalo te profili", "account.hide_reblogs": "Fshih përforcime nga @{name}", "account.joined_short": "U bë pjesë", "account.languages": "Ndryshoni gjuhë pajtimesh", @@ -182,8 +182,8 @@ "directory.local": "Vetëm nga {domain}", "directory.new_arrivals": "Të ardhur rishtas", "directory.recently_active": "Aktivë së fundi", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Rregullime llogarie", + "disabled_account_banner.text": "Llogaria juaj {disabledAccount} është aktualisht e çaktivizuar.", "dismissable_banner.community_timeline": "Këto janë postime më të freskëta publike nga persona llogaritë e të cilëve strehohen nga {domain}.", "dismissable_banner.dismiss": "Hidhe tej", "dismissable_banner.explore_links": "Këto histori të reja po tirren nga persona në këtë shërbyes dhe të tjerë të tillë të rrjetit të decentralizuar mu tani.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Fshihni {number, plural, one {figurë} other {figura}}", "missing_indicator.label": "S’u gjet", "missing_indicator.sublabel": "Ky burim s’u gjet dot", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Llogaria juaj {disabledAccount} aktualisht është e çaktivizuar, ngaqë kaluat te {movedToAccount}.", "mute_modal.duration": "Kohëzgjatje", "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?", "mute_modal.indefinite": "E pacaktuar", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index a6bd409da3..fbd34dfaf3 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -4,14 +4,14 @@ "about.disclaimer": "Mastodon är fri programvara med öppen källkod och ett varumärke tillhörande Mastodon gGmbH.", "about.domain_blocks.comment": "Anledning", "about.domain_blocks.domain": "Domän", - "about.domain_blocks.preamble": "Mastodon låter dig i allmänhet visa innehåll från, och interagera med, användare från andra servrar i fediversumet. Dessa är undantagen som gjorts på just denna server.", + "about.domain_blocks.preamble": "Som regel låter Mastodon dig interagera med användare från andra servrar i fediversumet och se deras innehåll. Detta är de undantag som gjorts på just denna servern.", "about.domain_blocks.severity": "Allvarlighetsgrad", - "about.domain_blocks.silenced.explanation": "Du kommer i allmänhet inte att se profiler och innehåll från denna server, om du inte uttryckligen slår upp eller samtycker till det genom att följa.", + "about.domain_blocks.silenced.explanation": "Såvida du inte uttryckligen söker upp dem eller samtycker till att se dem genom att följa dem kommer du i allmänhet inte se profiler från den här servern, eller deras innehåll.", "about.domain_blocks.silenced.title": "Begränsat", "about.domain_blocks.suspended.explanation": "Inga data från denna server kommer behandlas, lagras eller bytas ut, vilket omöjliggör kommunikation med användare på denna server.", "about.domain_blocks.suspended.title": "Avstängd", "about.not_available": "Denna information har inte gjorts tillgänglig på denna server.", - "about.powered_by": "Decentraliserat socialt medium drivet av {mastodon}", + "about.powered_by": "En decentraliserad plattform for sociala medier, drivet av {mastodon}", "about.rules": "Serverregler", "account.account_note_header": "Anteckning", "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor", @@ -30,7 +30,7 @@ "account.endorse": "Visa på profil", "account.featured_tags.last_status_at": "Senaste inlägg den {date}", "account.featured_tags.last_status_never": "Inga inlägg", - "account.featured_tags.title": "{name}s utvalda hashtags", + "account.featured_tags.title": "{name}s utvalda hashtaggar", "account.follow": "Följ", "account.followers": "Följare", "account.followers.empty": "Ingen följer denna användare än.", @@ -39,8 +39,8 @@ "account.following_counter": "{count, plural, one {{counter} Följer} other {{counter} Följer}}", "account.follows.empty": "Denna användare följer inte någon än.", "account.follows_you": "Följer dig", - "account.go_to_profile": "Go to profile", - "account.hide_reblogs": "Dölj boostningar från @{name}", + "account.go_to_profile": "Gå till profilen", + "account.hide_reblogs": "Dölj puffar från @{name}", "account.joined_short": "Gick med", "account.languages": "Ändra prenumererade språk", "account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}", @@ -182,8 +182,8 @@ "directory.local": "Endast från {domain}", "directory.new_arrivals": "Nyanlända", "directory.recently_active": "Nyligen aktiva", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Kontoinställningar", + "disabled_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat.", "dismissable_banner.community_timeline": "Dessa är de senaste offentliga inläggen från personer vars konton tillhandahålls av {domain}.", "dismissable_banner.dismiss": "Avfärda", "dismissable_banner.explore_links": "Dessa nyheter pratas det om just nu, på denna och på andra servrar i det decentraliserade nätverket.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "Växla synlighet", "missing_indicator.label": "Hittades inte", "missing_indicator.sublabel": "Den här resursen kunde inte hittas", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat eftersom du flyttat till {movedToAccount}.", "mute_modal.duration": "Varaktighet", "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?", "mute_modal.indefinite": "Obestämt", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 176319d335..0440900788 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, other {{counter} กำลังติดตาม}}", "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร", "account.follows_you": "ติดตามคุณ", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "ไปยังโปรไฟล์", "account.hide_reblogs": "ซ่อนการดันจาก @{name}", "account.joined_short": "เข้าร่วมเมื่อ", "account.languages": "เปลี่ยนภาษาที่บอกรับ", @@ -47,7 +47,7 @@ "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", "account.media": "สื่อ", "account.mention": "กล่าวถึง @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "{name} ได้ระบุว่าบัญชีใหม่ของเขาในตอนนี้คือ:", "account.mute": "ซ่อน @{name}", "account.mute_notifications": "ซ่อนการแจ้งเตือนจาก @{name}", "account.muted": "ซ่อนอยู่", @@ -83,12 +83,12 @@ "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", "bundle_column_error.copy_stacktrace": "คัดลอกรายงานข้อผิดพลาด", "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", + "bundle_column_error.error.title": "โอ้ ไม่!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", "bundle_column_error.network.title": "ข้อผิดพลาดเครือข่าย", "bundle_column_error.retry": "ลองอีกครั้ง", "bundle_column_error.return": "กลับไปที่หน้าแรก", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.routing.body": "ไม่พบหน้าที่ขอ คุณแน่ใจหรือไม่ว่า URL ในแถบที่อยู่ถูกต้อง?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "ปิด", "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", @@ -182,7 +182,7 @@ "directory.local": "จาก {domain} เท่านั้น", "directory.new_arrivals": "มาใหม่", "directory.recently_active": "ใช้งานล่าสุด", - "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.account_settings": "การตั้งค่าบัญชี", "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "นี่คือโพสต์สาธารณะล่าสุดจากผู้คนที่บัญชีได้รับการโฮสต์โดย {domain}", "dismissable_banner.dismiss": "ปิด", @@ -287,10 +287,10 @@ "home.column_settings.show_replies": "แสดงการตอบกลับ", "home.hide_announcements": "ซ่อนประกาศ", "home.show_announcements": "แสดงประกาศ", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.favourite": "เมื่อมีบัญชีใน Mastodon คุณสามารถชื่นชอบโพสต์นี้เพื่อให้ผู้สร้างทราบว่าคุณชื่นชมโพสต์และบันทึกโพสต์ไว้สำหรับภายหลัง", + "interaction_modal.description.follow": "เมื่อมีบัญชีใน Mastodon คุณสามารถติดตาม {name} เพื่อรับโพสต์ของเขาในฟีดหน้าแรกของคุณ", + "interaction_modal.description.reblog": "เมื่อมีบัญชีใน Mastodon คุณสามารถดันโพสต์นี้เพื่อแบ่งปันโพสต์กับผู้ติดตามของคุณเอง", + "interaction_modal.description.reply": "เมื่อมีบัญชีใน Mastodon คุณสามารถตอบกลับโพสต์นี้", "interaction_modal.on_another_server": "ในเซิร์ฟเวอร์อื่น", "interaction_modal.on_this_server": "ในเซิร์ฟเวอร์นี้", "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", @@ -531,7 +531,7 @@ "search_results.statuses_fts_disabled": "ไม่มีการเปิดใช้งานการค้นหาโพสต์โดยเนื้อหาของโพสต์ในเซิร์ฟเวอร์ Mastodon นี้", "search_results.title": "ค้นหาสำหรับ {q}", "search_results.total": "{count, number} {count, plural, other {ผลลัพธ์}}", - "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", + "server_banner.about_active_users": "ผู้คนที่ใช้เซิร์ฟเวอร์นี้ในระหว่าง 30 วันที่ผ่านมา (ผู้ใช้ที่ใช้งานอยู่รายเดือน)", "server_banner.active_users": "ผู้ใช้ที่ใช้งานอยู่", "server_banner.administered_by": "ดูแลโดย:", "server_banner.introduction": "{domain} เป็นส่วนหนึ่งของเครือข่ายสังคมแบบกระจายศูนย์ที่ขับเคลื่อนโดย {mastodon}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 0ef62d59dd..e3df3cd826 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}", "account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.", "account.follows_you": "Seni takip ediyor", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Profile git", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.joined_short": "Katıldı", "account.languages": "Abone olunan dilleri değiştir", @@ -182,8 +182,8 @@ "directory.local": "Yalnızca {domain} adresinden", "directory.new_arrivals": "Yeni gelenler", "directory.recently_active": "Son zamanlarda aktif", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Hesap ayarları", + "disabled_account_banner.text": "{disabledAccount} hesabınız şu an devre dışı.", "dismissable_banner.community_timeline": "Bunlar, {domain} sunucusunda hesabı olanların yakın zamandaki herkese açık gönderileridir.", "dismissable_banner.dismiss": "Yoksay", "dismissable_banner.explore_links": "Bunlar, ademi merkeziyetçi ağda bu ve diğer sunucularda şimdilerde insanların hakkında konuştuğu haber öyküleridir.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Resmi} other {Resimleri}} gizle", "missing_indicator.label": "Bulunamadı", "missing_indicator.sublabel": "Bu kaynak bulunamadı", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "{disabledAccount} hesabınız, {movedToAccount} hesabına taşıdığınız için şu an devre dışı.", "mute_modal.duration": "Süre", "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?", "mute_modal.indefinite": "Belirsiz", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 5e5853f44c..c5cdcb2f58 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} підписка} few {{counter} підписки} many {{counter} підписок} other {{counter} підписки}}", "account.follows.empty": "Цей користувач ще ні на кого не підписався.", "account.follows_you": "Підписані на вас", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Перейти до профілю", "account.hide_reblogs": "Сховати поширення від @{name}", "account.joined_short": "Дата приєднання", "account.languages": "Змінити обрані мови", @@ -182,8 +182,8 @@ "directory.local": "Лише з домену {domain}", "directory.new_arrivals": "Нові надходження", "directory.recently_active": "Нещодавно активні", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Налаштування облікового запису", + "disabled_account_banner.text": "Ваш обліковий запис {disabledAccount} наразі вимкнений.", "dismissable_banner.community_timeline": "Це останні публічні дописи від людей, чиї облікові записи розміщені на {domain}.", "dismissable_banner.dismiss": "Відхилити", "dismissable_banner.explore_links": "Ці новини розповідають історії про людей на цих та інших серверах децентралізованої мережі прямо зараз.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, one {Приховати зображення} other {Приховати зображення}}", "missing_indicator.label": "Не знайдено", "missing_indicator.sublabel": "Ресурс не знайдено", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Ваш обліковий запис {disabledAccount} наразі вимкнений, оскільки вас перенесено до {movedToAccount}.", "mute_modal.duration": "Тривалість", "mute_modal.hide_notifications": "Сховати сповіщення від користувача?", "mute_modal.indefinite": "Не визначено", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 60486ba9c0..5dfe7e2222 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -14,17 +14,17 @@ "about.powered_by": "Mạng xã hội liên hợp {mastodon}", "about.rules": "Quy tắc máy chủ", "account.account_note_header": "Ghi chú", - "account.add_or_remove_from_list": "Thêm hoặc Xóa khỏi danh sách", + "account.add_or_remove_from_list": "Thêm hoặc xóa khỏi danh sách", "account.badges.bot": "Bot", "account.badges.group": "Nhóm", "account.block": "Chặn @{name}", - "account.block_domain": "Ẩn mọi thứ từ {domain}", + "account.block_domain": "Chặn mọi thứ từ {domain}", "account.blocked": "Đã chặn", "account.browse_more_on_origin_server": "Truy cập trang của người này", "account.cancel_follow_request": "Thu hồi yêu cầu theo dõi", "account.direct": "Nhắn riêng @{name}", - "account.disable_notifications": "Tắt thông báo khi @{name} đăng tút", - "account.domain_blocked": "Người đã chặn", + "account.disable_notifications": "Tắt thông báo khi @{name} đăng bài viết", + "account.domain_blocked": "Tên miền đã chặn", "account.edit_profile": "Sửa hồ sơ", "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", @@ -39,7 +39,7 @@ "account.following_counter": "{count, plural, one {{counter} Theo dõi} other {{counter} Theo dõi}}", "account.follows.empty": "Người này chưa theo dõi ai.", "account.follows_you": "Đang theo dõi bạn", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Xem hồ sơ", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", "account.joined_short": "Đã tham gia", "account.languages": "Đổi ngôn ngữ mong muốn", @@ -182,8 +182,8 @@ "directory.local": "Từ {domain}", "directory.new_arrivals": "Mới tham gia", "directory.recently_active": "Hoạt động gần đây", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Cài đặt tài khoản", + "disabled_account_banner.text": "Tài khoản {disabledAccount} của bạn hiện không khả dụng.", "dismissable_banner.community_timeline": "Những tút gần đây của những người có tài khoản thuộc máy chủ {domain}.", "dismissable_banner.dismiss": "Bỏ qua", "dismissable_banner.explore_links": "Những sự kiện đang được thảo luận nhiều trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "{number, plural, other {Ẩn hình ảnh}}", "missing_indicator.label": "Không tìm thấy", "missing_indicator.sublabel": "Nội dung này không còn tồn tại", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Tài khoản {disabledAccount} của bạn hiện không khả dụng vì bạn đã chuyển sang {movedToAccount}.", "mute_modal.duration": "Thời hạn", "mute_modal.hide_notifications": "Ẩn thông báo từ người này?", "mute_modal.indefinite": "Vĩnh viễn", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 55f1b58a07..fb83d0f717 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -39,7 +39,7 @@ "account.following_counter": "正在关注 {counter} 人", "account.follows.empty": "此用户目前尚未关注任何人。", "account.follows_you": "关注了你", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "转到个人资料", "account.hide_reblogs": "隐藏来自 @{name} 的转贴", "account.joined_short": "加入于", "account.languages": "更改订阅语言", @@ -182,8 +182,8 @@ "directory.local": "仅来自 {domain}", "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "账户设置", + "disabled_account_banner.text": "您的帐户 {disabledAccount} 目前已被禁用。", "dismissable_banner.community_timeline": "这些是来自 {domain} 用户的最新公共嘟文。", "dismissable_banner.dismiss": "忽略", "dismissable_banner.explore_links": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。", @@ -258,7 +258,7 @@ "filter_modal.title.status": "过滤一条嘟文", "follow_recommendations.done": "完成", "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。", - "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!", + "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序显示在你的主页上。别担心,你可以在任何时候取消对别人的关注!", "follow_request.authorize": "授权", "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "隐藏图片", "missing_indicator.label": "找不到内容", "missing_indicator.sublabel": "无法找到此资源", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "您的帐户 {disabledAccount} 已停用,因为您已迁移到 {movedToAccount} 。", "mute_modal.duration": "持续时长", "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 2982716a0d..37a8ea506f 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -1,18 +1,18 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.blocks": "受管制的伺服器", + "about.contact": "聯絡我們:", + "about.disclaimer": "Mastodon 是一個自由的開源軟體,為 Mastodon gGmbH 的註冊商標。", + "about.domain_blocks.comment": "原因", + "about.domain_blocks.domain": "域名", + "about.domain_blocks.preamble": "Mastodon 一般允許您閱讀,並和聯邦宇宙上任何伺服器的用戶互動。這些伺服器是本站設下的例外。", + "about.domain_blocks.severity": "嚴重性", + "about.domain_blocks.silenced.explanation": "一般來說您不會看到來自這個伺服器的個人檔案和內容,除非您明確地打開或著追蹤此個人檔案。", + "about.domain_blocks.silenced.title": "受限的", + "about.domain_blocks.suspended.explanation": "來自此伺服器的資料將不會被處理、儲存或交換,本站也將無法和此伺服器上的用戶互動或者溝通。", + "about.domain_blocks.suspended.title": "已停權", + "about.not_available": "此信息在此伺服器上尚未可存取。", + "about.powered_by": "由 {mastodon} 提供之去中心化社交媒體", + "about.rules": "伺服器規則", "account.account_note_header": "筆記", "account.add_or_remove_from_list": "從列表中新增或移除", "account.badges.bot": "機械人", @@ -21,40 +21,40 @@ "account.block_domain": "封鎖來自 {domain} 的一切文章", "account.blocked": "已封鎖", "account.browse_more_on_origin_server": "瀏覽原服務站上的個人資料頁", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "撤回追蹤請求", "account.direct": "私訊 @{name}", "account.disable_notifications": "如果 @{name} 發文請不要再通知我", "account.domain_blocked": "服務站被封鎖", "account.edit_profile": "修改個人資料", "account.enable_notifications": "如果 @{name} 發文請通知我", "account.endorse": "在個人資料頁推薦對方", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.last_status_at": "上次帖文於 {date}", + "account.featured_tags.last_status_never": "沒有帖文", + "account.featured_tags.title": "{name} 的精選標籤", "account.follow": "關注", - "account.followers": "關注者", - "account.followers.empty": "尚未有人關注這位使用者。", - "account.followers_counter": "有 {count, plural,one {{counter} 個} other {{counter} 個}}關注者", - "account.following": "正在關注", - "account.following_counter": "正在關注 {count, plural,one {{counter}}other {{counter} 人}}", - "account.follows.empty": "這位使用者尚未關注任何人。", - "account.follows_you": "關注你", - "account.go_to_profile": "Go to profile", + "account.followers": "追蹤者", + "account.followers.empty": "尚未有人追蹤這位使用者。", + "account.followers_counter": "有 {count, plural,one {{counter} 個} other {{counter} 個}} 追蹤者", + "account.following": "正在追蹤", + "account.following_counter": "正在追蹤 {count, plural,one {{counter}}other {{counter} 人}}", + "account.follows.empty": "這位使用者尚未追蹤任何人。", + "account.follows_you": "追蹤您", + "account.go_to_profile": "前往個人檔案", "account.hide_reblogs": "隱藏 @{name} 的轉推", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "加入於", + "account.languages": "變更訂閱語言", "account.link_verified_on": "此連結的所有權已在 {date} 檢查過", - "account.locked_info": "這位使用者將私隱設定為「不公開」,會手動審批誰能關注他/她。", + "account.locked_info": "此帳號的隱私狀態被設為鎖定。該擁有者會手動審核追蹤者。", "account.media": "媒體", "account.mention": "提及 @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "{name} 的新帳號現在是:", "account.mute": "將 @{name} 靜音", "account.mute_notifications": "將來自 @{name} 的通知靜音", "account.muted": "靜音", "account.posts": "文章", "account.posts_with_replies": "包含回覆的文章", "account.report": "舉報 @{name}", - "account.requested": "等候審批", + "account.requested": "正在等待核准。按一下以取消追蹤請求", "account.share": "分享 @{name} 的個人資料", "account.show_reblogs": "顯示 @{name} 的推文", "account.statuses_counter": "{count, plural,one {{counter} 篇}other {{counter} 篇}}文章", @@ -62,51 +62,51 @@ "account.unblock_domain": "解除對域名 {domain} 的封鎖", "account.unblock_short": "解除封鎖", "account.unendorse": "不再於個人資料頁面推薦對方", - "account.unfollow": "取消關注", + "account.unfollow": "取消追蹤", "account.unmute": "取消 @{name} 的靜音", "account.unmute_notifications": "取消來自 @{name} 通知的靜音", "account.unmute_short": "取消靜音", "account_note.placeholder": "按此添加備注", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", - "admin.dashboard.retention.average": "Average", - "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.daily_retention": "註冊後用戶日計存留率", + "admin.dashboard.monthly_retention": "註冊後用戶月計存留率", + "admin.dashboard.retention.average": "平均", + "admin.dashboard.retention.cohort": "註冊月份", + "admin.dashboard.retention.cohort_size": "新用戶", "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試", "alert.rate_limited.title": "已限速", "alert.unexpected.message": "發生不可預期的錯誤。", "alert.unexpected.title": "噢!", "announcement.announcement": "公告", - "attachments_list.unprocessed": "(unprocessed)", - "audio.hide": "Hide audio", + "attachments_list.unprocessed": "(未處理)", + "audio.hide": "隱藏音訊", "autosuggest_hashtag.per_week": "{count} / 週", "boost_modal.combo": "如你想在下次路過這顯示,請按{combo},", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "複製錯誤報告", + "bundle_column_error.error.body": "無法提供請求的頁面。這可能是因為代碼出現錯誤或瀏覽器出現相容問題。", + "bundle_column_error.error.title": "大鑊!", + "bundle_column_error.network.body": "嘗試載入此頁面時發生錯誤。這可能是因為您的網路連線或此伺服器暫時出現問題。", + "bundle_column_error.network.title": "網絡錯誤", "bundle_column_error.retry": "重試", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "返回主頁", + "bundle_column_error.routing.body": "找不到請求的頁面。您確定網址欄中的 URL 正確嗎?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "關閉", "bundle_modal_error.message": "加載本組件出錯。", "bundle_modal_error.retry": "重試", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "基於Mastodon去中心化的特性,你可以在其他伺服器上創建賬戶並與本站互動。", + "closed_registrations_modal.description": "目前無法在 {domain} 建立新帳號,但您並不一定需要擁有 {domain} 的帳號亦能使用 Mastodon 。", + "closed_registrations_modal.find_another_server": "尋找另外的伺服器", + "closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以無論您在哪個伺服器建立帳號,都可以追蹤此伺服器上的任何人並與他們互動。您甚至可以自行搭建一個全新的伺服器!", + "closed_registrations_modal.title": "在 Mastodon 註冊", + "column.about": "關於", "column.blocks": "封鎖名單", "column.bookmarks": "書籤", "column.community": "本站時間軸", - "column.direct": "Direct messages", + "column.direct": "私訊", "column.directory": "瀏覽個人資料", "column.domain_blocks": "封鎖的服務站", "column.favourites": "最愛的文章", - "column.follow_requests": "關注請求", + "column.follow_requests": "追蹤請求", "column.home": "主頁", "column.lists": "列表", "column.mutes": "靜音名單", @@ -124,10 +124,10 @@ "community.column_settings.local_only": "只顯示本站", "community.column_settings.media_only": "只顯示多媒體", "community.column_settings.remote_only": "只顯示外站", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "更改語言", + "compose.language.search": "搜尋語言...", "compose_form.direct_message_warning_learn_more": "了解更多", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Mastodon 上的帖文並未端對端加密。請不要透過 Mastodon 分享任何敏感資訊。", "compose_form.hashtag_warning": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。", "compose_form.lock_disclaimer": "你的用戶狀態沒有{locked},任何人都能立即關注你,然後看到「只有關注者能看」的文章。", "compose_form.lock_disclaimer.lock": "鎖定", @@ -138,9 +138,9 @@ "compose_form.poll.remove_option": "移除此選擇", "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項", "compose_form.poll.switch_to_single": "變更投票為限定單一選項", - "compose_form.publish": "Publish", + "compose_form.publish": "發佈", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "儲存變更", "compose_form.sensitive.hide": "標記媒體為敏感內容", "compose_form.sensitive.marked": "媒體被標示為敏感", "compose_form.sensitive.unmarked": "媒體沒有被標示為敏感", @@ -151,14 +151,14 @@ "confirmations.block.block_and_report": "封鎖並檢舉", "confirmations.block.confirm": "封鎖", "confirmations.block.message": "你確定要封鎖{name}嗎?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "撤回請求", + "confirmations.cancel_follow_request.message": "您確定要撤回追蹤 {name} 的請求嗎?", "confirmations.delete.confirm": "刪除", "confirmations.delete.message": "你確定要刪除這文章嗎?", "confirmations.delete_list.confirm": "刪除", "confirmations.delete_list.message": "你確定要永久刪除這列表嗎?", - "confirmations.discard_edit_media.confirm": "Discard", - "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?", + "confirmations.discard_edit_media.confirm": "捨棄", + "confirmations.discard_edit_media.message": "您在媒體描述或預覽有尚未儲存的變更。確定要捨棄它們嗎?", "confirmations.domain_block.confirm": "封鎖整個網站", "confirmations.domain_block.message": "你真的真的確定要封鎖整個 {domain} ?多數情況下,封鎖或靜音幾個特定目標就已經有效,也是比較建議的做法。若然封鎖全站,你將不會再在這裏看到該站的內容和通知。來自該站的關注者亦會被移除。", "confirmations.logout.confirm": "登出", @@ -170,30 +170,30 @@ "confirmations.redraft.message": "你確定要刪除並重新編輯嗎?所有相關的回覆、轉推與最愛都會被刪除。", "confirmations.reply.confirm": "回覆", "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?", - "confirmations.unfollow.confirm": "取消關注", - "confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?", + "confirmations.unfollow.confirm": "取消追蹤", + "confirmations.unfollow.message": "真的不要繼續追蹤 {name} 了嗎?", "conversation.delete": "刪除對話", "conversation.mark_as_read": "標為已讀", "conversation.open": "檢視對話", "conversation.with": "與 {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "已複製", + "copypaste.copy": "複製", "directory.federated": "來自已知的聯盟網絡", "directory.local": "僅來自 {domain}", "directory.new_arrivals": "新內容", "directory.recently_active": "最近活躍", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "disabled_account_banner.account_settings": "帳號設定", + "disabled_account_banner.text": "您的帳號 {disabledAccount} 目前已停用。", + "dismissable_banner.community_timeline": "這些是 {domain} 上用戶的最新公開帖文。", + "dismissable_banner.dismiss": "關閉", + "dismissable_banner.explore_links": "這些新聞內容正在被本站以及去中心化網路上其他伺服器的人們熱烈討論。", + "dismissable_banner.explore_statuses": "來自本站以及去中心化網路中其他伺服器的這些帖文正在本站引起關注。", + "dismissable_banner.explore_tags": "這些主題標籤正在被本站以及去中心化網路上的人們熱烈討論。", + "dismissable_banner.public_timeline": "這些是來自本站以及去中心化網路中其他已知伺服器之最新公開帖文。", "embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。", "embed.preview": "看上去會是這樣:", "emoji_button.activity": "活動", - "emoji_button.clear": "Clear", + "emoji_button.clear": "清除", "emoji_button.custom": "自訂", "emoji_button.flags": "旗幟", "emoji_button.food": "飲飲食食", @@ -213,13 +213,13 @@ "empty_column.blocks": "你還沒有封鎖任何使用者。", "empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。", "empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", + "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將在此顯示。", "empty_column.domain_blocks": "尚未隱藏任何網域。", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "目前沒有熱門話題,請稍候再回來看看!", "empty_column.favourited_statuses": "你還沒收藏任何文章。這裡將會顯示你收藏的嘟文。", "empty_column.favourites": "還沒有人收藏這則文章。這裡將會顯示被收藏的嘟文。", "empty_column.follow_recommendations": "似乎未能替您產生任何建議。您可以試著搜尋您知道的帳戶或者探索熱門主題標籤", - "empty_column.follow_requests": "您尚未收到任何關注請求。這裡將會顯示收到的關注請求。", + "empty_column.follow_requests": "您尚未收到任何追蹤請求。這裡將會顯示收到的追蹤請求。", "empty_column.hashtag": "這個標籤暫時未有內容。", "empty_column.home": "你還沒有關注任何使用者。快看看{public},向其他使用者搭訕吧。", "empty_column.home.suggestions": "檢視部份建議", @@ -234,41 +234,41 @@ "error.unexpected_crash.next_steps_addons": "請嘗試停止使用這些附加元件然後重新載入頁面。如果問題沒有解決,你仍然可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。", "errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿", "errors.unexpected_crash.report_issue": "舉報問題", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", - "filter_modal.added.settings_link": "settings page", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", - "filter_modal.select_filter.expired": "expired", - "filter_modal.select_filter.prompt_new": "New category: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "explore.search_results": "搜尋結果", + "explore.suggested_follows": "為您推薦", + "explore.title": "探索", + "explore.trending_links": "最新消息", + "explore.trending_statuses": "帖文", + "explore.trending_tags": "主題標籤", + "filter_modal.added.context_mismatch_explanation": "此過濾器類別不適用於您所存取帖文的情境。如果您想要此帖文被於此情境被過濾,您必須編輯過濾器。", + "filter_modal.added.context_mismatch_title": "情境不符合!", + "filter_modal.added.expired_explanation": "此過濾器類別已失效,您需要更新過期日期才能套用。", + "filter_modal.added.expired_title": "過期的過濾器!", + "filter_modal.added.review_and_configure": "若欲檢視並進一步配置此過濾器類別,請前往 {settings_link}。", + "filter_modal.added.review_and_configure_title": "過濾器設定", + "filter_modal.added.settings_link": "設定頁面", + "filter_modal.added.short_explanation": "此帖文已被新增至以下過濾器類別:{title}。", + "filter_modal.added.title": "已新增過濾器!", + "filter_modal.select_filter.context_mismatch": "不適用於目前情境", + "filter_modal.select_filter.expired": "已過期", + "filter_modal.select_filter.prompt_new": "新類別:{name}", + "filter_modal.select_filter.search": "搜尋或新增", + "filter_modal.select_filter.subtitle": "使用既有類別,或創建一個新類別", + "filter_modal.select_filter.title": "過濾此帖文", + "filter_modal.title.status": "過濾一則帖文", "follow_recommendations.done": "完成", - "follow_recommendations.heading": "跟隨人們以看到來自他們的嘟文!這裡有些建議。", - "follow_recommendations.lead": "您跟隨對象知嘟文將會以時間順序顯示於您的 home feed 上。別擔心犯下錯誤,您隨時可以取消跟隨人們!", + "follow_recommendations.heading": "追蹤人們以看到他們的帖文!這裡有些建議。", + "follow_recommendations.lead": "您所追蹤的對象之帖文將會以時間順序顯示於您的首頁時間軸上。別擔心犯下錯誤,您隨時可以取消追蹤任何人!", "follow_request.authorize": "批准", "follow_request.reject": "拒絕", - "follow_requests.unlocked_explanation": "即使您的帳戶未上鎖,{domain} 的工作人員認為您可能想手動審核來自這些帳戶的關注請求。", - "footer.about": "About", - "footer.directory": "Profiles directory", - "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "follow_requests.unlocked_explanation": "即使您的帳號未上鎖,{domain} 的工作人員認為您可能會想手動審核來自這些帳號的追蹤請求。", + "footer.about": "關於", + "footer.directory": "個人檔案目錄", + "footer.get_app": "取得應用程式", + "footer.invite": "邀請他人", + "footer.keyboard_shortcuts": "鍵盤快速鍵", + "footer.privacy_policy": "隱私權政策", + "footer.source_code": "查看原始碼", "generic.saved": "已儲存", "getting_started.heading": "開始使用", "hashtag.column_header.tag_mode.all": "以及{additional}", @@ -280,25 +280,25 @@ "hashtag.column_settings.tag_mode.any": "任一", "hashtag.column_settings.tag_mode.none": "全不", "hashtag.column_settings.tag_toggle": "在這欄位加入額外的標籤", - "hashtag.follow": "Follow hashtag", - "hashtag.unfollow": "Unfollow hashtag", + "hashtag.follow": "追蹤主題標籤", + "hashtag.unfollow": "取消追蹤主題標籤", "home.column_settings.basic": "基本", "home.column_settings.show_reblogs": "顯示被轉推的文章", "home.column_settings.show_replies": "顯示回應文章", "home.hide_announcements": "隱藏公告", "home.show_announcements": "顯示公告", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.description.favourite": "在 Mastodon 上有個帳號的話,您可以點讚並收藏此帖文,讓作者知道您對它的欣賞。", + "interaction_modal.description.follow": "在 Mastodon 上有個帳號的話,您可以追蹤 {name} 以於首頁時間軸接收他們的帖文。", + "interaction_modal.description.reblog": "在 Mastodon 上有個帳號的話,您可以向自己的追縱者們轉發此帖文。", + "interaction_modal.description.reply": "在 Mastodon 上擁有帳號的話,您可以回覆此帖文。", + "interaction_modal.on_another_server": "於不同伺服器", + "interaction_modal.on_this_server": "於此伺服器", + "interaction_modal.other_server_instructions": "只需簡單地於您慣用的應用程式或有登入您帳號之網頁介面的搜尋欄中複製並貼上此 URL。", + "interaction_modal.preamble": "由於 Mastodon 是去中心化的,即使您於此伺服器上沒有帳號,仍可以利用託管於其他 Mastodon 伺服器或相容平台上的既存帳號。", + "interaction_modal.title.favourite": "將 {name} 的帖文加入最愛", + "interaction_modal.title.follow": "追蹤 {name}", + "interaction_modal.title.reblog": "轉發 {name} 的帖文", + "interaction_modal.title.reply": "回覆 {name} 的帖文", "intervals.full.days": "{number, plural, one {# 天} other {# 天}}", "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}", "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}", @@ -308,7 +308,7 @@ "keyboard_shortcuts.column": "把標示移動到其中一列", "keyboard_shortcuts.compose": "把標示移動到文字輸入區", "keyboard_shortcuts.description": "描述", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "開啟私訊欄", "keyboard_shortcuts.down": "在列表往下移動", "keyboard_shortcuts.enter": "打開文章", "keyboard_shortcuts.favourite": "收藏文章", @@ -341,8 +341,8 @@ "lightbox.expand": "擴大檢視", "lightbox.next": "下一頁", "lightbox.previous": "上一頁", - "limited_account_hint.action": "Show profile anyway", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.action": "一律顯示個人檔案", + "limited_account_hint.title": "此個人檔案已被 {domain} 的管理員隱藏。", "lists.account.add": "新增到列表", "lists.account.remove": "從列表刪除", "lists.delete": "刪除列表", @@ -361,24 +361,24 @@ "media_gallery.toggle_visible": "隱藏圖片", "missing_indicator.label": "找不到內容", "missing_indicator.sublabel": "無法找到內容", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。", "mute_modal.duration": "時間", "mute_modal.hide_notifications": "需要隱藏這使用者的通知嗎?", "mute_modal.indefinite": "沒期限", - "navigation_bar.about": "About", + "navigation_bar.about": "關於", "navigation_bar.blocks": "封鎖名單", "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本站時間軸", "navigation_bar.compose": "撰寫新文章", - "navigation_bar.direct": "Direct messages", + "navigation_bar.direct": "私訊", "navigation_bar.discover": "探索", "navigation_bar.domain_blocks": "封鎖的服務站", "navigation_bar.edit_profile": "修改個人資料", - "navigation_bar.explore": "Explore", + "navigation_bar.explore": "探索", "navigation_bar.favourites": "最愛的內容", "navigation_bar.filters": "靜音詞彙", - "navigation_bar.follow_requests": "關注請求", - "navigation_bar.follows_and_followers": "關注及關注者", + "navigation_bar.follow_requests": "追蹤請求", + "navigation_bar.follows_and_followers": "追蹤及追蹤者", "navigation_bar.lists": "列表", "navigation_bar.logout": "登出", "navigation_bar.mutes": "靜音名單", @@ -386,14 +386,14 @@ "navigation_bar.pins": "置頂文章", "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "跨站時間軸", - "navigation_bar.search": "Search", + "navigation_bar.search": "搜尋", "navigation_bar.security": "安全", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", - "notification.admin.sign_up": "{name} signed up", + "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。", + "notification.admin.report": "{name} 檢舉了 {target}", + "notification.admin.sign_up": "{name} 已經註冊", "notification.favourite": "{name} 喜歡你的文章", - "notification.follow": "{name} 開始關注你", - "notification.follow_request": "{name} 要求關注你", + "notification.follow": "{name} 開始追蹤你", + "notification.follow_request": "{name} 要求追蹤你", "notification.mention": "{name} 提及你", "notification.own_poll": "你的投票已結束", "notification.poll": "你參與過的一個投票已經結束", @@ -409,8 +409,8 @@ "notifications.column_settings.filter_bar.advanced": "顯示所有分類", "notifications.column_settings.filter_bar.category": "快速過濾欄", "notifications.column_settings.filter_bar.show_bar": "Show filter bar", - "notifications.column_settings.follow": "關注你:", - "notifications.column_settings.follow_request": "新的關注請求:", + "notifications.column_settings.follow": "新追蹤者:", + "notifications.column_settings.follow_request": "新的追蹤請求:", "notifications.column_settings.mention": "提及你:", "notifications.column_settings.poll": "投票結果:", "notifications.column_settings.push": "推送通知", @@ -424,7 +424,7 @@ "notifications.filter.all": "全部", "notifications.filter.boosts": "轉推", "notifications.filter.favourites": "最愛", - "notifications.filter.follows": "關注的使用者", + "notifications.filter.follows": "追蹤的使用者", "notifications.filter.mentions": "提及", "notifications.filter.polls": "投票結果", "notifications.filter.statuses": "已關注的用戶的最新動態", @@ -486,7 +486,7 @@ "report.comment.title": "Is there anything else you think we should know?", "report.forward": "轉寄到 {target}", "report.forward_hint": "這個帳戶屬於其他服務站。要向該服務站發送匿名的舉報訊息嗎?", - "report.mute": "Mute", + "report.mute": "靜音", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", "report.placeholder": "額外訊息", @@ -508,7 +508,7 @@ "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Don't want to see this?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", + "report.unfollow": "取消追蹤 @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached", "report_notification.categories.other": "Other", @@ -608,8 +608,8 @@ "time_remaining.moments": "剩餘時間", "time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}", "timeline_hint.remote_resource_not_displayed": "不會顯示來自其他伺服器的 {resource}", - "timeline_hint.resources.followers": "關注者", - "timeline_hint.resources.follows": "關注中", + "timeline_hint.resources.followers": "追蹤者", + "timeline_hint.resources.follows": "追蹤中", "timeline_hint.resources.statuses": "更早的文章", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", "trends.trending_now": "現在流行", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 7c3aa63427..e3086e089f 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -39,7 +39,7 @@ "account.following_counter": "正在跟隨 {count, plural,one {{counter}}other {{counter} 人}}", "account.follows.empty": "這位使用者尚未跟隨任何人。", "account.follows_you": "跟隨了您", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "前往個人檔案", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", "account.joined_short": "已加入", "account.languages": "變更訂閱的語言", @@ -182,8 +182,8 @@ "directory.local": "僅來自 {domain} 網域", "directory.new_arrivals": "新人", "directory.recently_active": "最近活躍", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "帳號設定", + "disabled_account_banner.text": "您的帳號 {disabledAccount} 目前已停用。", "dismissable_banner.community_timeline": "這些是 {domain} 上面託管帳號之最新公開嘟文。", "dismissable_banner.dismiss": "關閉", "dismissable_banner.explore_links": "這些新聞故事正在被此伺服器以及去中心化網路上的人們熱烈討論著。", @@ -211,7 +211,7 @@ "empty_column.account_timeline": "這裡還沒有嘟文!", "empty_column.account_unavailable": "無法取得個人檔案", "empty_column.blocks": "您還沒有封鎖任何使用者。", - "empty_column.bookmarked_statuses": "您還沒建立任何書籤。當您建立書簽時,它將於此顯示。", + "empty_column.bookmarked_statuses": "您還沒建立任何書籤。當您建立書籤時,它將於此顯示。", "empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!", "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。", "empty_column.domain_blocks": "尚未封鎖任何網域。", @@ -361,7 +361,7 @@ "media_gallery.toggle_visible": "切換可見性", "missing_indicator.label": "找不到", "missing_indicator.sublabel": "找不到此資源", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。", "mute_modal.duration": "持續時間", "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", diff --git a/config/locales/activerecord.cy.yml b/config/locales/activerecord.cy.yml index b007364df8..61cb241618 100644 --- a/config/locales/activerecord.cy.yml +++ b/config/locales/activerecord.cy.yml @@ -19,8 +19,20 @@ cy: account: attributes: username: - invalid: dim ond llythrennau, rhifau a tanlinellau + invalid: gall gynnwys dim ond llythrennau, rhifau a tanlinellau reserved: yn neilltuedig + admin/webhook: + attributes: + url: + invalid: nid yw'n URL dilys + doorkeeper/application: + attributes: + website: + invalid: nid yw'n URL dilys + import: + attributes: + data: + malformed: wedi'i gamffurfio status: attributes: reblog: @@ -28,5 +40,16 @@ cy: user: attributes: email: - blocked: yn defnyddio darparwr e-bost nas caniateir - unreachable: nid yw'n bodoli + blocked: yn defnyddio darparwr e-bost nd yw'n cael ei ganiatáu + unreachable: nid yw i weld yn bodoli + role_id: + elevated: nid yw'n gallu bod yn uwch na'ch rôl presennol + user_role: + attributes: + permissions_as_keys: + dangerous: yn cynnwys caniatâd nad ydynt yn ddiogel ar gyfer rôl sail + elevated: yn methu a chynnwys caniatâd nad yw eich rôl cyfredol yn ei gynnwys + own_role: nid oes modd ei newid gyda'ch rôl cyfredol + position: + elevated: nid yw'n gallu bod yn uwch na'ch rôl cyfredol + own_role: nid oes modd ei newid gyda'ch rôl cyfredol diff --git a/config/locales/activerecord.en-GB.yml b/config/locales/activerecord.en-GB.yml index ef03d18104..c1a7d39c8a 100644 --- a/config/locales/activerecord.en-GB.yml +++ b/config/locales/activerecord.en-GB.yml @@ -1 +1,55 @@ +--- en-GB: + activerecord: + attributes: + poll: + expires_at: Deadline + options: Choices + user: + agreement: Service agreement + email: E-mail address + locale: Locale + password: Password + user/account: + username: Username + user/invite_request: + text: Reason + errors: + models: + account: + attributes: + username: + invalid: must contain only letters, numbers and underscores + reserved: is reserved + admin/webhook: + attributes: + url: + invalid: is not a valid URL + doorkeeper/application: + attributes: + website: + invalid: is not a valid URL + import: + attributes: + data: + malformed: is malformed + status: + attributes: + reblog: + taken: of post already exists + user: + attributes: + email: + blocked: uses a disallowed e-mail provider + unreachable: does not seem to exist + role_id: + elevated: cannot be higher than your current role + user_role: + attributes: + permissions_as_keys: + dangerous: include permissions that are not safe for the base role + elevated: cannot include permissions your current role does not possess + own_role: cannot be changed with your current role + position: + elevated: cannot be higher than your current role + own_role: cannot be changed with your current role diff --git a/config/locales/activerecord.fy.yml b/config/locales/activerecord.fy.yml index a3398cfbab..cc10d817d5 100644 --- a/config/locales/activerecord.fy.yml +++ b/config/locales/activerecord.fy.yml @@ -3,8 +3,10 @@ fy: activerecord: attributes: poll: + expires_at: Deadline options: Karren user: + agreement: Tsjinstbetingsten email: E-mailadres locale: Taal password: Wachtwurd @@ -18,7 +20,36 @@ fy: attributes: username: invalid: mei allinnich letters, nûmers en ûnderstreekjes befetsje + reserved: reservearre + admin/webhook: + attributes: + url: + invalid: is in ûnjildige URL + doorkeeper/application: + attributes: + website: + invalid: is in ûnjildige URL + import: + attributes: + data: + malformed: hat de ferkearde opmaak + status: + attributes: + reblog: + taken: fan berjocht bestiet al user: attributes: email: + blocked: brûkt in net tastiene e-mailprovider unreachable: liket net te bestean + role_id: + elevated: kin net heger wêze as dyn aktuele rol + user_role: + attributes: + permissions_as_keys: + dangerous: rjochten tafoegje dy’t net feilich binne foar de basisrol + elevated: kin gjin rjochten tafoegje dy’t dyn aktuele rol net besit + own_role: kin net mei dyn aktuele rol wizige wurde + position: + elevated: kin net heger wêze as dyn aktuele rol + own_role: kin net mei dyn aktuele rol wizige wurde diff --git a/config/locales/activerecord.ga.yml b/config/locales/activerecord.ga.yml index 64f3e57f80..236cc479e1 100644 --- a/config/locales/activerecord.ga.yml +++ b/config/locales/activerecord.ga.yml @@ -3,8 +3,10 @@ ga: activerecord: attributes: poll: + expires_at: Sprioc-am options: Roghanna user: + agreement: Comhaontú seirbhísí email: Seoladh ríomhphoist locale: Láthair password: Pasfhocal @@ -12,3 +14,13 @@ ga: username: Ainm úsáideora user/invite_request: text: Fáth + errors: + models: + account: + attributes: + username: + reserved: in áirithe + import: + attributes: + data: + malformed: míchumtha diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml index 7ad45964ff..6fe4556787 100644 --- a/config/locales/activerecord.he.yml +++ b/config/locales/activerecord.he.yml @@ -29,10 +29,14 @@ he: attributes: website: invalid: היא כתובת לא חוקית + import: + attributes: + data: + malformed: בתצורה לא תואמת status: attributes: reblog: - taken: של החצרוץ כבר קיים + taken: של ההודעה כבר קיים user: attributes: email: diff --git a/config/locales/activerecord.no.yml b/config/locales/activerecord.no.yml index 43b589745d..eb1793ca76 100644 --- a/config/locales/activerecord.no.yml +++ b/config/locales/activerecord.no.yml @@ -6,21 +6,50 @@ expires_at: Tidsfrist options: Valg user: - email: E-mail address - locale: Område + agreement: Tjenesteavtale + email: E-postadresse + locale: Landstandard password: Passord user/account: username: Brukernavn user/invite_request: - text: Grunn + text: Årsak errors: models: account: attributes: username: - invalid: bare bokstaver, tall og understreker + invalid: må inneholde kun bokstaver, tall og understrekingstegn reserved: er reservert + admin/webhook: + attributes: + url: + invalid: er ikke en gyldig nettadresse + doorkeeper/application: + attributes: + website: + invalid: er ikke en gyldig nettadresse + import: + attributes: + data: + malformed: er feilformet status: attributes: reblog: - taken: av status eksisterer allerede + taken: av innlegg finnes fra før + user: + attributes: + email: + blocked: bruker en forbudt e-postleverandør + unreachable: ser ikke ut til å finnes + role_id: + elevated: kan ikke være høyere enn din nåværende rolle + user_role: + attributes: + permissions_as_keys: + dangerous: inkluder tillatelser som ikke er trygge for grunn-rollen + elevated: kan ikke inneholde rettigheter som din nåværende rolle ikke innehar + own_role: kan ikke endres med din nåværende rolle + position: + elevated: kan ikke være høyere enn din nåværende rolle + own_role: kan ikke endres med din nåværende rolle diff --git a/config/locales/br.yml b/config/locales/br.yml index 2de887b6d9..a6b971eb75 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -14,12 +14,12 @@ br: last_active: oberiantiz ziwezhañ nothing_here: N'eus netra amañ ! posts: - few: Toud - many: Toud - one: Toud - other: Toud - two: Toud - posts_tab_heading: Toudoù + few: Kannadoù + many: Kannadoù + one: Kannad + other: Kannadoù + two: Kannadoù + posts_tab_heading: Kannadoù admin: accounts: add_email_domain_block: Stankañ an domani postel @@ -29,10 +29,10 @@ br: by_domain: Domani change_email: changed_msg: Chomlec'h postel kemmet ! - current_email: Postel bremanel - label: Kemm ar postel + current_email: Postel a vremañ + label: Kemmañ ar postel new_email: Postel nevez - submit: Kemm ar postel + submit: Kemmañ ar postel deleted: Dilamet domain: Domani edit: Aozañ @@ -55,12 +55,17 @@ br: reset: Adderaouekaat reset_password: Adderaouekaat ar ger-tremen search: Klask + statuses: Kannadoù suspended: Astalet title: Kontoù username: Anv action_logs: action_types: - destroy_status: Dilemel ar statud + destroy_status: Dilemel ar c'hannad + update_status: Hizivaat ar c'hannad + actions: + destroy_status_html: Dilamet eo bet kannad %{target} gant %{name} + update_status_html: Hizivaet eo bet kannad %{target} gant %{name} announcements: new: create: Sevel ur gemenn @@ -95,6 +100,8 @@ br: create: Ouzhpenniñ un domani instances: by_domain: Domani + dashboard: + instance_statuses_measure: kannadoù stoket moderation: all: Pep tra invites: @@ -117,6 +124,7 @@ br: other: "%{count} a notennoù" two: "%{count} a notennoù" are_you_sure: Ha sur oc'h? + delete_and_resolve: Dilemel ar c'hannadoù notes: delete: Dilemel status: Statud @@ -126,6 +134,13 @@ br: all: D'an holl dud statuses: deleted: Dilamet + open: Digeriñ ar c'hannad + original_status: Kannad orin + status_changed: Kannad kemmet + title: Kannadoù ar gont + strikes: + actions: + delete_statuses: Dilamet eo bet kannadoù %{target} gant %{name} warning_presets: add_new: Ouzhpenniñ unan nevez delete: Dilemel @@ -186,7 +201,16 @@ br: notifications: Kemennoù index: delete: Dilemel + statuses: + few: "%{count} a gannadoù" + many: "%{count} a gannadoù" + one: "%{count} c'hannad" + other: "%{count} a gannadoù" + two: "%{count} gannad" title: Siloù + statuses: + index: + title: Kannadoù silet generic: all: Pep tra copy: Eilañ @@ -207,9 +231,17 @@ br: title: Heulier nevez mention: action: Respont + reblog: + subject: Skignet ho kannad gant %{name} + status: + subject: Embannet ez eus bet traoù gant %{name} + update: + subject: Kemmet eo bet ur c'hannad gant %{name} otp_authentication: enable: Gweredekaat setup: Kefluniañ + preferences: + posting_defaults: Arventennoù embann dre ziouer relationships: followers: Heulier·ezed·ien following: O heuliañ @@ -257,7 +289,7 @@ br: visibilities: public: Publik stream_entries: - pinned: Toud spilhennet + pinned: Kannad spilhennet themes: default: Mastodoñ (Teñval) mastodon-light: Mastodoñ (Sklaer) @@ -272,6 +304,7 @@ br: edit: Aozañ user_mailer: warning: + statuses: 'Kannadoù meneget :' title: none: Diwall welcome: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index f57d7cc09d..b75af24632 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -724,10 +724,10 @@ ca: title: Contingut multimèdia metadata: Metadada no_status_selected: No s’han canviat els estatus perquè cap no ha estat seleccionat - open: Obrir apunt - original_status: Apunt original + open: Obrir publicació + original_status: Publicació original reblogs: Impulsos - status_changed: Apunt canviat + status_changed: Publicació canviada title: Estats del compte trending: Tendència visibility: Visibilitat @@ -792,7 +792,7 @@ ca: description_html: Aquestes son publicacions que el teu servidor veu i que ara mateix s'estan compartint i afavorint molt. Poden ajudar als teus nous usuaris i als que retornen a trobar més gent a qui seguir. Cap publicació es mostra publicament fins que no aprovis l'autor i l'autor permeti que el seu compte sigui sugerit a altres. També pots aceptar o rebutjar publicacions individuals. disallow: Rebutja publicació disallow_account: Rebutja autor - no_status_selected: No s'ha canviat els apunts en tendència perquè cap ha estat seleccionat + no_status_selected: No s'han canviat les publicacions en tendència perquè cap ha estat seleccionada not_discoverable: L'autor no ha activat poder ser detectable shared_by: one: Compartit o afavorit una vegada @@ -1099,8 +1099,8 @@ ca: edit: add_keyword: Afegeix paraula clau keywords: Paraules clau - statuses: Apunts individuals - statuses_hint_html: Aquest filtre aplica als apunts individuals seleccionats independentment de si coincideixen amb les paraules clau de sota. Revisa o elimina els apunts des d'el filtre. + statuses: Publicacions individuals + statuses_hint_html: Aquest filtre s'aplica a la selecció de publicacions individuals, independentment de si coincideixen amb les paraules clau següents. Revisa o elimina publicacions del filtre. title: Editar filtre errors: deprecated_api_multiple_keywords: Aquests paràmetres no poden ser canviats des d'aquesta aplicació perquè apliquen a més d'un filtre per paraula clau. Utilitza una aplicació més recent o la interfície web. @@ -1115,11 +1115,11 @@ ca: one: "%{count} paraula clau" other: "%{count} paraules clau" statuses: - one: "%{count} apunt" - other: "%{count} apunts" + one: "%{count} publicació" + other: "%{count} publicacions" statuses_long: - one: "%{count} apunt individual oculta" - other: "%{count} apunts individuals ocultats" + one: "%{count} publicació individual ocultada" + other: "%{count} publicacions individuals ocultades" title: Filtres new: save: Desa el nou filtre @@ -1129,8 +1129,8 @@ ca: batch: remove: Eliminar del filtre index: - hint: Aquest filtre aplica als apunts seleccionats independentment d'altres criteris. Pots afegir més apunts a aquest filtre des de l'interfície Web. - title: Apunts filtrats + hint: Aquest filtre aplica als apunts seleccionats independentment d'altres criteris. Pots afegir més publicacions a aquest filtre des de la interfície Web. + title: Publicacions filtrades footer: trending_now: En tendència generic: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 33fed4ee99..eb096ff333 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -247,6 +247,7 @@ cs: create_user_role_html: "%{name} vytvořil %{target} roli" demote_user_html: Uživatel %{name} degradoval uživatele %{target} destroy_announcement_html: Uživatel %{name} odstranil oznámení %{target} + destroy_canonical_email_block_html: "%{name} odblokoval e-mail s hashem %{target}" destroy_custom_emoji_html: "%{name} odstranil emoji %{target}" destroy_domain_allow_html: Uživatel %{name} zakázal federaci s doménou %{target} destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target} @@ -269,6 +270,7 @@ cs: reject_user_html: "%{name} odmítl registraci od %{target}" remove_avatar_user_html: Uživatel %{name} odstranil avatar uživatele %{target} reopen_report_html: Uživatel %{name} znovu otevřel hlášení %{target} + resend_user_html: "%{name} znovu odeslal potvrzovací e-mail pro %{target}" reset_password_user_html: Uživatel %{name} obnovil heslo uživatele %{target} resolve_report_html: Uživatel %{name} vyřešil hlášení %{target} sensitive_account_html: "%{name} označil média účtu %{target} jako citlivá" @@ -703,6 +705,7 @@ cs: preamble: Přizpůsobte si webové rozhraní Mastodon. title: Vzhled branding: + preamble: Značka vašeho serveru jej odlišuje od ostatních serverů v síti. Tyto informace se mohou zobrazovat v různých prostředích, například ve webovém rozhraní Mastodonu, v nativních aplikacích, v náhledech odkazů na jiných webových stránkách a v aplikacích pro zasílání zpráv atd. Z tohoto důvodu je nejlepší, aby tyto informace byly jasné, krátké a stručné. title: Značka content_retention: preamble: Určuje, jak je obsah generovaný uživatelem uložen v Mastodonu. @@ -749,6 +752,7 @@ cs: no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány open: Otevřít příspěvek original_status: Původní příspěvek + reblogs: Boosty status_changed: Příspěvek změněn title: Příspěvky účtu trending: Populární @@ -983,6 +987,7 @@ cs: title: Nastavení sign_up: preamble: S účtem na tomto serveru Mastodon budete moci sledovat jakoukoliv jinou osobu v síti bez ohledu na to, kde je jejich účet hostován. + title: Pojďme vás nastavit na %{domain}. status: account_status: Stav účtu confirming: Čeká na dokončení potvrzení e-mailu. @@ -1172,6 +1177,11 @@ cs: none: Žádné order_by: Seřadit podle save_changes: Uložit změny + select_all_matching_items: + few: Vybrat %{count} položky odpovídající vašemu hledání. + many: Vybrat všech %{count} položek odpovídajících vašemu hledání. + one: Vybrat %{count} položku odpovídající vašemu hledání. + other: Vybrat všech %{count} položek odpovídajících vašemu hledání. today: dnes validation_errors: few: Něco ještě není úplně v pořádku! Zkontrolujte prosím %{count} chyby uvedené níže diff --git a/config/locales/da.yml b/config/locales/da.yml index 7df261a4f8..b09bb77f7e 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -686,7 +686,7 @@ da: title: Indholdsopbevaring discovery: follow_recommendations: Følg-anbefalinger - preamble: At vise interessant indhold er vital ifm. at få nye brugere om bord, som måske ikke kender nogen på Mastodon. Styr, hvordan forskellige opdagelsesfunktioner fungerer på serveren. + preamble: At vise interessant indhold er vitalt ifm. at få nye brugere om bord, som måske ikke kender nogen på Mastodon. Styr, hvordan forskellige opdagelsesfunktioner fungerer på serveren. profile_directory: Profiloversigt public_timelines: Offentlige tidslinjer title: Opdagelse diff --git a/config/locales/de.yml b/config/locales/de.yml index 14bbaf51c9..d97b31640a 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1472,7 +1472,7 @@ de: show_more: Mehr anzeigen show_newer: Neuere anzeigen show_older: Ältere anzeigen - show_thread: Zeige Unterhaltung + show_thread: Unterhaltung anzeigen sign_in_to_participate: Melde dich an, um an der Konversation teilzuhaben title: '%{name}: "%{quote}"' visibilities: diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml index 1b7fbd198b..eaee27b888 100644 --- a/config/locales/devise.eo.yml +++ b/config/locales/devise.eo.yml @@ -24,11 +24,11 @@ eo: explanation_when_pending: Vi petis inviton al %{host} per ĉi tiu retpoŝta adreso. Kiam vi konfirmas vian retpoŝtan adreson, ni revizios vian kandidatiĝon. Vi ne povas ensaluti ĝis tiam. Se via kandidatiĝo estas rifuzita, viaj datumoj estos forigitaj, do neniu alia ago estos postulita de vi. Se tio ne estis vi, bonvolu ignori ĉi tiun retpoŝton. extra_html: Bonvolu rigardi la regulojn de la servilo kaj niajn uzkondiĉojn. subject: 'Mastodon: Konfirmaj instrukcioj por %{instance}' - title: Konfirmi retadreson + title: Konfirmi retpoŝton email_changed: - explanation: 'La retadreso de via konto ŝanĝiĝas al:' + explanation: 'La retpoŝtadreso de via konto ŝanĝiĝas al:' extra: Se vi ne volis ŝanĝi vian retadreson, iu verŝajne aliris al via konto. Bonvolu tuj ŝanĝi vian pasvorton aŭ kontakti la administranton de la servilo, se vi estas blokita ekster via konto. - subject: 'Mastodon: Retadreso ŝanĝita' + subject: 'Mastodon: Retpoŝton ŝanĝiĝis' title: Nova retadreso password_change: explanation: La pasvorto de via konto estis ŝanĝita. @@ -36,10 +36,10 @@ eo: subject: 'Mastodon: Pasvorto ŝanĝita' title: Pasvorto ŝanĝita reconfirmation_instructions: - explanation: Retajpu la novan adreson por ŝanĝi vian retadreson. + explanation: Retajpu la novan adreson por ŝanĝi vian retpoŝtadreson. extra: Se ĉi tiu ŝanĝo ne estis komencita de vi, bonvolu ignori ĉi tiun retmesaĝon. La retadreso por la Mastodon-konto ne ŝanĝiĝos se vi ne aliras la supran ligilon. - subject: 'Mastodon: Konfirmi retadreson por %{instance}' - title: Kontrolu retadreson + subject: 'Mastodon: Konfirmi retpoŝton por %{instance}' + title: Kontrolu retpoŝtadreson reset_password_instructions: action: Ŝanĝi pasvorton explanation: Vi petis novan pasvorton por via konto. @@ -53,7 +53,7 @@ eo: two_factor_enabled: explanation: Dufaktora aŭtentigo sukcese ebligita por via akonto. Vi bezonos ĵetonon kreitan per parigitan aplikaĵon por ensaluti. subject: 'Mastodon: dufaktora aŭtentigo ebligita' - title: la du-etapa aŭtentigo estas ŝaltita + title: 2FA aktivigita two_factor_recovery_codes_changed: explanation: La antaŭaj reakiraj kodoj estis nuligitaj kaj novaj estis generitaj. subject: 'Mastodon: Reakiraj kodoj de dufaktora aŭtentigo rekreitaj' diff --git a/config/locales/devise.gd.yml b/config/locales/devise.gd.yml index 7b0f0a7bcf..c8a34054cf 100644 --- a/config/locales/devise.gd.yml +++ b/config/locales/devise.gd.yml @@ -92,8 +92,8 @@ gd: signed_up_but_inactive: Tha thu air clàradh leinn. Gidheadh, chan urrainn dhuinn do clàradh a-steach air sgàth ’s nach deach an cunntas agad a ghnìomhachadh fhathast. signed_up_but_locked: Tha thu air clàradh leinn. Gidheadh, chan urrainn dhuinn do clàradh a-steach air sgàth ’s gu bheil an cunntas agad glaiste. signed_up_but_pending: Chaidh teachdaireachd le ceangal dearbhaidh a chur dhan t-seòladh puist-d agad. Nuair a bhios tu air briogadh air a’ cheangal, nì sinn lèirmheas air d’ iarrtas. Leigidh sinn fios dhut ma thèid aontachadh ris. - signed_up_but_unconfirmed: Chaidh teachdaireachd le ceangal dearbhaidh a chur dhan t-seòladh puist-d agad. Lean ris a’ cheangal ud a ghnìomhachadh a’ chunntais agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo. - update_needs_confirmation: Chaidh an cunntas agad ùrachadh ach feumaidh sinn an seòladh puist-d ùr agad a dhearbhadh. Thoir sùil air a’ phost-d agad agus lean ris a’ cheangal dearbhaidh a dhearbhadh an t-seòlaidh puist-d ùir agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo. + signed_up_but_unconfirmed: Chaidh teachdaireachd le ceangal dearbhaidh a chur dhan t-seòladh puist-d agad. Lean air a’ cheangal ud a ghnìomhachadh a’ chunntais agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo. + update_needs_confirmation: Chaidh an cunntas agad ùrachadh ach feumaidh sinn an seòladh puist-d ùr agad a dhearbhadh. Thoir sùil air a’ phost-d agad agus lean air a’ cheangal dearbhaidh a dhearbhadh an t-seòlaidh puist-d ùir agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo. updated: Chaidh an cunntas agad ùrachadh. sessions: already_signed_out: Chaidh do chlàradh a-mach. diff --git a/config/locales/devise.no.yml b/config/locales/devise.no.yml index 4fdc1276b5..a5d6cad7a1 100644 --- a/config/locales/devise.no.yml +++ b/config/locales/devise.no.yml @@ -3,17 +3,17 @@ devise: confirmations: confirmed: E-postaddressen din er blitt bekreftet. - send_instructions: Du vil motta en e-post med instruksjoner for bekreftelse om noen få minutter. - send_paranoid_instructions: Hvis din e-postaddresse finnes i vår database vil du motta en e-post med instruksjoner for bekreftelse om noen få minutter. + send_instructions: Du vil motta en e-post med instruksjoner for bekreftelse om noen få minutter. Sjekk spam-mappen hvis du ikke mottok e-posten. + send_paranoid_instructions: Hvis e-postadressen din finnes i databasen vår vil du om noen få minutter motta en e-post med instruksjoner for bekreftelse. Sjekk spam-mappen din hvis du ikke mottok e-posten. failure: already_authenticated: Du er allerede innlogget. - inactive: Din konto er ikke blitt aktivert ennå. + inactive: Kontoen din er ikke blitt aktivert ennå. invalid: Ugyldig %{authentication_keys} eller passord. last_attempt: Du har ett forsøk igjen før kontoen din låses. - locked: Din konto er låst. + locked: Kontoen din er låst. not_found_in_database: Ugyldig %{authentication_keys} eller passord. pending: Kontoen din er fortsatt under gjennomgang. - timeout: Økten din løp ut på tid. Logg inn på nytt for å fortsette. + timeout: Økten din har utløpt. Logg inn igjen for å fortsette. unauthenticated: Du må logge inn eller registrere deg før du kan fortsette. unconfirmed: Du må bekrefte e-postadressen din før du kan fortsette. mailer: @@ -22,41 +22,41 @@ action_with_app: Bekreft og gå tilbake til %{app} explanation: Du har laget en konto på %{host} med denne e-postadressen. Du er ett klikk unna å aktivere den. Hvis dette ikke var deg, vennligst se bort fra denne e-posten. explanation_when_pending: Du søkte om en invitasjon til %{host} med denne E-postadressen. Når du har bekreftet E-postadressen din, vil vi gå gjennom søknaden din. Du kan logge på for å endre dine detaljer eller slette kontoen din, men du har ikke tilgang til de fleste funksjoner før kontoen din er akseptert. Dersom søknaden din blir avslått, vil dataene dine bli fjernet, så ingen ytterligere handlinger fra deg vil være nødvendige. Dersom dette ikke var deg, vennligst ignorer denne E-posten. - extra_html: Vennligst også sjekk ut instansens regler og våre bruksvilkår. - subject: 'Mastodon: Instruksjoner for å bekrefte e-postadresse %{instance}' + extra_html: Sjekk også ut instansens regler og våre bruksvilkår. + subject: 'Mastodon: Instruksjoner for bekreftelse for %{instance}' title: Bekreft e-postadresse email_changed: explanation: 'E-postadressen til din konto endres til:' - extra: Hvis du ikke endret din e-postadresse, er det sannsynlig at noen har fått tilgang til din konto. Vennligst endre ditt passord umiddelbart eller kontakt instansens administrator dersom du er utestengt fra kontoen din. - subject: 'Mastadon: E-postadresse endret' + extra: Hvis du ikke endret e-postadressen din, er det sannsynlig at noen har fått tilgang til kontoen din. Vennligst endre passordet ditt umiddelbart eller kontakt instansens administrator dersom du er låst ute fra kontoen din. + subject: 'Mastodon: E-postadresse endret' title: Ny e-postadresse password_change: - explanation: Passordet til din konto har blitt endret. - extra: Hvis du ikke endret ditt passord, er det sannsynlig at noen har fått tilgang til din konto. Vennligst endre ditt passord umiddelbart eller kontakt instansens administrator dersom du er utestengt fra kontoen din. + explanation: Passordet til kontoen din har blitt endret. + extra: Hvis du ikke endret passordet ditt, er det sannsynlig at noen har fått tilgang til kontoen din. Vennligst endre passordet ditt umiddelbart eller kontakt instansens administrator dersom du er utestengt fra kontoen din. subject: 'Mastodon: Passord endret' title: Passord endret reconfirmation_instructions: - explanation: Din nye e-postadresse må bekreftes for å bli endret. - extra: Se bort fra denne e-posten dersom du ikke gjorde denne endringen. E-postadressen for Mastadon-kontoen blir ikke endret før du trykker på lenken over. + explanation: Bekreft den nye e-postadressen for å endre e-post. + extra: Se bort fra denne e-posten dersom du ikke gjorde denne endringen. E-postadressen for Mastodon-kontoen blir ikke endret før du trykker på lenken over. subject: 'Mastodon: Bekreft e-postadresse for %{instance}' title: Bekreft e-postadresse reset_password_instructions: action: Endre passord - explanation: Du ba om et nytt passord for din konto. - extra: Se bort fra denne e-posten dersom du ikke ba om dette. Ditt passord blir ikke endret før du trykker på lenken over og lager et nytt. + explanation: Du ba om et nytt passord til kontoen din. + extra: Se bort fra denne e-posten dersom du ikke ba om dette. Passordet ditt blir ikke endret før du trykker på lenken over og lager et nytt. subject: 'Mastodon: Hvordan nullstille passord' title: Nullstill passord two_factor_disabled: - explanation: 2-trinnsinnlogging for kontoen din har blitt skrudd av. Pålogging er mulig gjennom kun E-postadresse og passord. - subject: 'Mastodon: To-faktor autentisering deaktivert' + explanation: Tofaktorautentisering for kontoen din har blitt skrudd av. Pålogging er nå mulig ved å bruke kun e-postadresse og passord. + subject: 'Mastodon: Tofaktorautentisering deaktivert' title: 2FA deaktivert two_factor_enabled: - explanation: To-faktor autentisering er aktivert for kontoen din. Et symbol som er generert av den sammenkoblede TOTP-appen vil være påkrevd for innlogging. - subject: 'Mastodon: To-faktor autentisering aktivert' + explanation: Tofaktorautentisering er aktivert for kontoen din. Et token som er generert av appen for tidsbasert engangspassord (TOTP) som er koblet til kontoen kreves for innlogging. + subject: 'Mastodon: Tofaktorautentisering aktivert' title: 2FA aktivert two_factor_recovery_codes_changed: - explanation: De forrige gjenopprettingskodene er ugyldig og nye generert. - subject: 'Mastodon: 2-trinnsgjenopprettingskoder har blitt generert på nytt' + explanation: De forrige gjenopprettingskodene er gjort ugyldige og nye er generert. + subject: 'Mastodon: Tofaktor-gjenopprettingskoder har blitt generert på nytt' title: 2FA-gjenopprettingskodene ble endret unlock_instructions: subject: 'Mastodon: Instruksjoner for å gjenåpne konto' @@ -70,37 +70,39 @@ subject: 'Mastodon: Sikkerhetsnøkkel slettet' title: En av sikkerhetsnøklene dine har blitt slettet webauthn_disabled: + explanation: Autentisering med sikkerhetsnøkler er deaktivert for kontoen din. Innlogging er nå mulig ved hjelp av kun et token som er generert av engangspassord-appen som er koblet til kontoen. subject: 'Mastodon: Autentisering med sikkerhetsnøkler ble skrudd av' title: Sikkerhetsnøkler deaktivert webauthn_enabled: + explanation: Sikkerhetsnøkkel-autentisering er aktivert for din konto. Din sikkerhetsnøkkel kan nå brukes til innlogging. subject: 'Mastodon: Sikkerhetsnøkkelsautentisering ble skrudd på' title: Sikkerhetsnøkler aktivert omniauth_callbacks: failure: Kunne ikke autentisere deg fra %{kind} fordi "%{reason}". - success: Vellykket autentisering fra %{kind}. + success: Vellykket autentisering fra %{kind}-konto. passwords: - no_token: Du har ingen tilgang til denne siden hvis ikke klikket på en e-post om nullstilling av passord. Hvis du kommer fra en sådan bør du dobbelsjekke at du limte inn hele URLen. - send_instructions: Du vil motta en e-post med instruksjoner om nullstilling av passord om noen få minutter. - send_paranoid_instructions: Hvis e-postadressen din finnes i databasen vår vil du motta en e-post med instruksjoner om nullstilling av passord om noen få minutter. + no_token: Du har ikke tilgang til denne siden hvis du ikke kom hit etter å ha klikket på en e-post om nullstilling av passord. Hvis du kommer fra en sådan bør du dobbelsjekke at du limte inn hele URLen. + send_instructions: Hvis e-postadressen din finnes i databasen vår, vil du motta en e-post med instruksjoner om nullstilling av passord om noen få minutter. Sjekk spam-mappen din hvis du ikke mottok e-posten. + send_paranoid_instructions: Hvis e-postadressen din finnes i databasen vår vil du motta en e-post med instruksjoner om nullstilling av passord om noen få minutter. Sjekk spam-mappen din hvis du ikke mottok e-posten. updated: Passordet ditt er endret. Du er nå logget inn. updated_not_active: Passordet ditt er endret. registrations: - destroyed: Adjø! Kontoen din er slettet. På gjensyn. + destroyed: Ha det! Kontoen din er avsluttet. Vi håper å se deg igjen snart. signed_up: Velkommen! Registreringen var vellykket. signed_up_but_inactive: Registreringen var vellykket. Vi kunne dessverre ikke logge deg inn fordi kontoen din ennå ikke har blitt aktivert. signed_up_but_locked: Registreringen var vellykket. Vi kunne dessverre ikke logge deg inn fordi kontoen din har blitt låst. - signed_up_but_pending: En melding med en bekreftelseslink er sendt til din e-postadresse. Etter at du har klikket på koblingen, vil vi gjennomgå søknaden din. Du vil bli varslet hvis den er godkjent. - signed_up_but_unconfirmed: En e-post med en bekreftelseslenke har blitt sendt til din innboks. Klikk på lenken i e-posten for å aktivere kontoen din. - update_needs_confirmation: Du har oppdatert kontoen din, men vi må bekrefte din nye e-postadresse. Sjekk e-posten din og følg bekreftelseslenken for å bekrefte din nye e-postadresse. + signed_up_but_pending: En melding med en bekreftelseslenke er sendt til din e-postadresse. Etter at du har klikket på lenken, vil vi gjennomgå søknaden din. Du vil bli varslet hvis den blir godkjent. + signed_up_but_unconfirmed: En melding med en bekreftelseslenke har blitt sendt til din e-postadresse. Klikk på lenken i e-posten for å aktivere kontoen din. Sjekk spam-mappen din hvis du ikke mottok e-posten. + update_needs_confirmation: Du har oppdatert kontoen din, men vi må bekrefte din nye e-postadresse. Sjekk e-posten din og følg bekreftelseslenken for å bekrefte din nye e-postadresse. Sjekk spam-mappen din hvis du ikke mottok e-posten. updated: Kontoen din ble oppdatert. sessions: already_signed_out: Logget ut. signed_in: Logget inn. signed_out: Logget ut. unlocks: - send_instructions: Du vil motta en e-post med instruksjoner for å åpne kontoen din om noen få minutter. - send_paranoid_instructions: Hvis kontoen din eksisterer vil du motta en e-post med instruksjoner for å åpne kontoen din om noen få minutter. - unlocked: Kontoen din ble åpnet uten problemer. Logg på for å fortsette. + send_instructions: Du vil motta en e-post med instruksjoner for å låse opp kontoen din om noen få minutter. Sjekk spam-mappen din hvis du ikke mottok e-posten. + send_paranoid_instructions: Hvis kontoen din eksisterer vil du motta en e-post med instruksjoner for å låse opp kontoen din om noen få minutter. Sjekk spam-katalogen din hvis du ikke mottok denne e-posten. + unlocked: Kontoen din er nå låst opp. Logg på for å fortsette. errors: messages: already_confirmed: har allerede blitt bekreftet, prøv å logge på istedet diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml index cc1b670bb8..ff086888f3 100644 --- a/config/locales/devise.pl.yml +++ b/config/locales/devise.pl.yml @@ -3,7 +3,7 @@ pl: devise: confirmations: confirmed: Twój adres e-mail został poprawnie zweryfikowany. - send_instructions: W ciągu kilku minut otrzymasz wiadomosć e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem. + send_instructions: W ciągu kilku minut otrzymasz wiadomość e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem. send_paranoid_instructions: Jeśli Twój adres e-mail już istnieje w naszej bazie danych, w ciągu kilku minut otrzymasz wiadomość e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem. failure: already_authenticated: Jesteś już zalogowany(-a). diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml index baf9958128..36ce203517 100644 --- a/config/locales/devise.zh-TW.yml +++ b/config/locales/devise.zh-TW.yml @@ -51,7 +51,7 @@ zh-TW: subject: Mastodon:已停用兩階段驗證 title: 已停用 2FA two_factor_enabled: - explanation: 已對您的帳號啟用兩階段驗證。登入時將需要配對之 TOTP 應用程式所產生之 Token。 + explanation: 已對您的帳號啟用兩階段驗證。登入時將需要已配對的 TOTP 應用程式所產生之 Token。 subject: Mastodon:已啟用兩階段驗證 title: 已啟用 2FA two_factor_recovery_codes_changed: @@ -70,9 +70,9 @@ zh-TW: subject: Mastodon:安全密鑰已移除 title: 您的一支安全密鑰已經被移除 webauthn_disabled: - explanation: 您的帳號並沒有啟用安全密鑰認證方式。只能以 TOTP app 產生地成對 token 登入。 - subject: Mastodon:安全密鑰認證方式已關閉 - title: 已關閉安全密鑰 + explanation: 您的帳號已停用安全密鑰認證。只能透過已配對的 TOTP 應用程式所產生之 Token 登入。 + subject: Mastodon:安全密鑰認證方式已停用 + title: 已停用安全密鑰 webauthn_enabled: explanation: 您的帳號已啟用安全密鑰認證。您可以使用安全密鑰登入了。 subject: Mastodon:已啟用安全密鑰認證 diff --git a/config/locales/doorkeeper.en-GB.yml b/config/locales/doorkeeper.en-GB.yml index ef03d18104..3f0ea6b7b7 100644 --- a/config/locales/doorkeeper.en-GB.yml +++ b/config/locales/doorkeeper.en-GB.yml @@ -1 +1,119 @@ +--- en-GB: + activerecord: + attributes: + doorkeeper/application: + name: Application name + redirect_uri: Redirect URI + scopes: Scopes + website: Application website + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: cannot contain a fragment. + invalid_uri: must be a valid URI. + relative_uri: must be an absolute URI. + secured_uri: must be an HTTPS/SSL URI. + doorkeeper: + applications: + buttons: + authorize: Authorise + cancel: Cancel + destroy: Destroy + edit: Edit + submit: Submit + confirmations: + destroy: Are you sure? + edit: + title: Edit application + form: + error: Whoops! Check your form for possible errors + help: + native_redirect_uri: Use %{native_redirect_uri} for local tests + redirect_uri: Use one line per URI + scopes: Separate scopes with spaces. Leave blank to use the default scopes. + index: + application: Application + callback_url: Callback URL + delete: Delete + empty: You have no applications. + name: Name + new: New application + scopes: Scopes + show: Show + title: Your applications + new: + title: New application + show: + actions: Actions + application_id: Client key + callback_urls: Callback URLs + scopes: Scopes + secret: Client secret + title: 'Application: %{name}' + authorizations: + buttons: + authorize: Authorise + deny: Deny + error: + title: An error has occurred + new: + prompt_html: "%{client_name} would like permission to access your account. It is a third-party application. If you do not trust it, then you should not authorise it." + review_permissions: Review permissions + title: Authorisation required + show: + title: Copy this authorisation code and paste it to the application. + authorized_applications: + buttons: + revoke: Revoke + confirmations: + revoke: Are you sure? + index: + authorized_at: Authorised on %{date} + description_html: These are applications that can access your account using the API. If there are applications you do not recognise here, or an application is misbehaving, you can revoke its access. + last_used_at: Last used on %{date} + never_used: Never used + scopes: Permissions + superapp: Internal + layouts: + application: + title: OAuth authorisation required + scopes: + admin:read: read all data on the server + admin:read:accounts: read sensitive information of all accounts + admin:read:reports: read sensitive information of all reports and reported accounts + admin:write: modify all data on the server + admin:write:accounts: perform moderation actions on accounts + admin:write:reports: perform moderation actions on reports + crypto: use end-to-end encryption + follow: modify account relationships + push: receive your push notifications + read: read all your account's data + read:accounts: see accounts information + read:blocks: see your blocks + read:bookmarks: see your bookmarks + read:favourites: see your favourites + read:filters: see your filters + read:follows: see your follows + read:lists: see your lists + read:mutes: see your mutes + read:notifications: see your notifications + read:reports: see your reports + read:search: search on your behalf + read:statuses: see all posts + write: modify all your account's data + write:accounts: modify your profile + write:blocks: block accounts and domains + write:bookmarks: bookmark posts + write:conversations: mute and delete conversations + write:favourites: favourite posts + write:filters: create filters + write:follows: follow people + write:lists: create lists + write:media: upload media files + write:mutes: mute people and conversations + write:notifications: clear your notifications + write:reports: report other people + write:statuses: publish posts diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml index 473757a37a..34b4fafaa9 100644 --- a/config/locales/doorkeeper.eo.yml +++ b/config/locales/doorkeeper.eo.yml @@ -92,7 +92,7 @@ eo: temporarily_unavailable: La rajtiga servilo ne povas nun plenumi la peton pro dumtempa troŝarĝo aŭ servila prizorgado. unauthorized_client: Kliento ne rajtas fari ĉi tian peton per ĉi tiu metodo. unsupported_grant_type: La tipo de la rajtiga konsento ne estas subtenata de la rajtiga servilo. - unsupported_response_type: La rajtiga servilo ne subtenas ĉi tian respondon. + unsupported_response_type: La aŭtentiga servilo ne subtenas ĉi tian respondon. flash: applications: create: @@ -108,6 +108,7 @@ eo: title: blocks: Blokita bookmarks: Legosignoj + favourites: Preferaĵoj lists: Listoj mutes: Silentigitaj reports: Raportoj diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml index 7e890f3d6d..bc4bd20bb7 100644 --- a/config/locales/doorkeeper.fr.yml +++ b/config/locales/doorkeeper.fr.yml @@ -86,7 +86,7 @@ fr: invalid_grant: L’autorisation accordée est invalide, expirée, annulée, ne concorde pas avec l’URL de redirection utilisée dans la requête d’autorisation, ou a été délivrée à un autre client. invalid_redirect_uri: L’URL de redirection n’est pas valide. invalid_request: - missing_param: 'Parramètre requis manquant: %{value}.' + missing_param: 'Paramètre requis manquant: %{value}.' request_not_authorized: La requête doit être autorisée. Le paramètre requis pour l'autorisation de la requête est manquant ou non valide. unknown: La requête omet un paramètre requis, inclut une valeur de paramètre non prise en charge ou est autrement mal formée. invalid_resource_owner: Les identifiants fournis par le propriétaire de la ressource ne sont pas valides ou le propriétaire de la ressource ne peut être trouvé diff --git a/config/locales/doorkeeper.fy.yml b/config/locales/doorkeeper.fy.yml index 3852748685..5e3f3c6c07 100644 --- a/config/locales/doorkeeper.fy.yml +++ b/config/locales/doorkeeper.fy.yml @@ -4,6 +4,8 @@ fy: attributes: doorkeeper/application: name: Namme fan applikaasje + redirect_uri: Redirect-URI + scopes: Tastimmingen website: Webstee fan applikaasje errors: models: @@ -15,9 +17,169 @@ fy: relative_uri: moat in absolute URI wêze. secured_uri: moat in HTTPS/SSL URI wêze. doorkeeper: + applications: + buttons: + authorize: Autorisearje + cancel: Annulearje + destroy: Ferneatigje + edit: Bewurkje + submit: Yntsjinje + confirmations: + destroy: Bisto wis? + edit: + title: Tapassing bewurkje + form: + error: Oeps! Kontrolearje it formulier op flaters + help: + native_redirect_uri: Brûk %{native_redirect_uri} foar lokale tests + redirect_uri: Brûk ien rigel per URI + scopes: Tastimmingen mei spaasjes fan inoar skiede. Lit leech om de standerttastimmingen te brûken. + index: + application: Tapassing + callback_url: Callback-URL + delete: Fuortsmite + empty: Do hast gjin tapassingen konfigurearre. + name: Namme + new: Nije tapassing + scopes: Tastimmingen + show: Toane + title: Dyn tapassingen + new: + title: Nije tapassing + show: + actions: Aksjes + application_id: Client-kaai + callback_urls: Callback-URL’s + scopes: Tastimmingen + secret: Client-geheim + title: 'Tapassing: %{name}' + authorizations: + buttons: + authorize: Autorisearje + deny: Wegerje + error: + title: Der is in flater bard + new: + prompt_html: "%{client_name} hat tastimming nedich om tagong te krijen ta dyn account. It giet om in tapassing fan in tredde partij.Asto dit net fertroust, moatsto gjin tastimming jaan." + review_permissions: Tastimmingen beoardiele + title: Autorisaasje fereaske + show: + title: Kopiearje dizze autorisaasjekoade en plak it yn de tapassing. + authorized_applications: + buttons: + revoke: Ynlûke + confirmations: + revoke: Bisto wis? + index: + authorized_at: Autorisearre op %{date} + description_html: Dit binne tapassingen dy’t tagong hawwe ta dyn account fia de API. As der tapassingen tusken steane dy’tsto net werkenst of in tapassing harren misdraacht, kinsto de tagongsrjochten fan de tapassing ynlûke. + last_used_at: Lêst brûkt op %{date} + never_used: Nea brûkt + scopes: Tastimmingen + superapp: Yntern + title: Dyn autorisearre tapassingen + errors: + messages: + access_denied: De boarne-eigener of autorisaasjeserver hat it fersyk wegere. + credential_flow_not_configured: De wachtwurdgegevens-flow fan de boarne-eigener is mislearre, omdat Doorkeeper.configure.resource_owner_from_credentials net ynsteld is. + invalid_client: Clientferifikaasje is mislearre troch in ûnbekende client, ûntbrekkende client-autentikaasje of in net stipe autentikaasjemetoade. + invalid_grant: De opjûne autorisaasje is ûnjildich, ferrûn, ynlutsen, komt net oerien mei de redirect-URI dy’t opjûn is of útjûn waard oan in oere client. + invalid_redirect_uri: De opjûne redirect-URI is ûnjildich. + invalid_request: + missing_param: 'Untbrekkende fereaske parameter: %{value}.' + request_not_authorized: It fersyk moat autorisearre wurde. De fereaske parameter foar it autorisaasjefersyk ûntbrekt of is ûnjildich. + unknown: It fersyk mist in fereaske parameter, befettet in net-stipe parameterwearde of is op in oare manier net krekt. + invalid_resource_owner: De opjûne boarne-eigenersgegevens binne ûnjildich of de boarne-eigener kin net fûn wurde + invalid_scope: De opfrege tastimming is ûnjildich, ûnbekend of net krekt. + invalid_token: + expired: Tagongskoade ferrûn + revoked: Tagongskoade ynlutsen + unknown: Tagongskoade ûnjildich + resource_owner_authenticator_not_configured: It opsykjen fan de boarne-eigener is mislearre, omdat Doorkeeper.configure.resource_owner_authenticator net ynsteld is. + server_error: De autorisaasjeserver is in ûnferwachte situaasje tsjinkaam dy’t it fersyk behindere. + temporarily_unavailable: De autorisaasjeserver is op dit stuit net yn steat it fersyk te behanneljen as gefolch fan in tydlike oerbelêsting of ûnderhâld oan de server. + unauthorized_client: De client is net autorisearre om dit fersyk op dizze manier út te fieren. + unsupported_grant_type: It type autorisaasje wurdt net troch de autorisaasjeserver stipe. + unsupported_response_type: De autorisaasjeserver stipet dit antwurdtype net. + flash: + applications: + create: + notice: Tapassing oanmakke. + destroy: + notice: Tapassing fuortsmiten. + update: + notice: Tapassing bewurke. + authorized_applications: + destroy: + notice: Tapassing ynlutsen. grouped_scopes: + access: + read: Allinnich-lêze-tagong + read/write: Lês- en skriuwtagong + write: Allinnich skriuwtagong title: + accounts: Accounts + admin/accounts: Accountbehear + admin/all: Alle behearfunksjes + admin/reports: Rapportaazjebehear + all: Alles + blocks: Blokkearje + bookmarks: Blêdwizers conversations: Petearen + crypto: End-to-end-fersifering + favourites: Favoriten + filters: Filters + follow: Relaasjes + follows: Folgjend + lists: Listen + media: Mediabylagen + mutes: Negearre + notifications: Meldingen + push: Pushmeldingen + reports: Rapportaazjes + search: Sykje + statuses: Berjochten + layouts: + admin: + nav: + applications: Tapassingen + oauth2_provider: OAuth2-provider + application: + title: OAuth-autorisaasje fereaske scopes: + admin:read: alle gegevens op de server lêze + admin:read:accounts: gefoelige ynformaasje fan alle accounts lêze + admin:read:reports: gefoelige ynformaasje fan alle rapportaazjes en rapportearre accounts lêze + admin:write: wizigje alle gegevens op de server + admin:write:accounts: moderaasjemaatregelen tsjin accounts nimme + admin:write:reports: moderaasjemaatregelen nimme yn rapportaazjes + crypto: end-to-end-encryptie brûke + follow: relaasjes tusken accounts bewurkje + push: dyn pushmeldingen ûntfange + read: alle gegevens fan dyn account lêze + read:accounts: accountynformaasje besjen + read:blocks: dyn blokkearre brûkers besjen + read:bookmarks: dyn blêdwizers besjen + read:favourites: dyn favoriten besjen + read:filters: dyn filters besjen + read:follows: de accounts dy’tsto folgest besjen + read:lists: dyn listen besjen + read:mutes: dyn negearre brûkers besjen + read:notifications: dyn meldingen besjen + read:reports: dyn rapportearre berjochten besjen + read:search: út dyn namme sykje + read:statuses: alle berjochten besjen + write: alle gegevens fan dyn account bewurkje + write:accounts: dyn profyl bewurkje + write:blocks: accounts en domeinen blokkearje + write:bookmarks: berjochten oan blêdwizers tafoegje write:conversations: petearen negearre en fuortsmite + write:favourites: berjochten as favoryt markearje + write:filters: filters oanmeitsje + write:follows: minsken folgje + write:lists: listen oanmeitsje + write:media: mediabestannen oplade write:mutes: minsken en petearen negearre + write:notifications: meldingen fuortsmite + write:reports: oare minsken rapportearje + write:statuses: berjochten pleatse diff --git a/config/locales/doorkeeper.ga.yml b/config/locales/doorkeeper.ga.yml index cd911b60a4..73ff9d0fcb 100644 --- a/config/locales/doorkeeper.ga.yml +++ b/config/locales/doorkeeper.ga.yml @@ -5,6 +5,7 @@ ga: doorkeeper/application: name: Ainm feidhmchláir redirect_uri: Atreoraigh URI + website: Suíomh gréasáin feidhmchláir doorkeeper: applications: buttons: @@ -12,12 +13,17 @@ ga: cancel: Cealaigh destroy: Scrios edit: Cuir in eagar + submit: Cuir isteach confirmations: destroy: An bhfuil tú cinnte? index: delete: Scrios name: Ainm show: Taispeáin + show: + application_id: Eochair chliaint + secret: Rún cliaint + title: 'Ainm feidhmchláir: %{name}' authorizations: buttons: deny: Diúltaigh diff --git a/config/locales/doorkeeper.gd.yml b/config/locales/doorkeeper.gd.yml index 497b7dcdd5..6d4cbecfe3 100644 --- a/config/locales/doorkeeper.gd.yml +++ b/config/locales/doorkeeper.gd.yml @@ -134,8 +134,8 @@ gd: lists: Liostaichean media: Ceanglachain mheadhanan mutes: Mùchaidhean - notifications: Fiosan - push: Fiosan putaidh + notifications: Brathan + push: Brathan putaidh reports: Gearanan search: Lorg statuses: Postaichean @@ -155,17 +155,17 @@ gd: admin:write:reports: gnìomhan na maorsainneachd a ghabhail air gearanan crypto: crioptachadh o cheann gu ceann a chleachdadh follow: dàimhean chunntasan atharrachadh - push: na fiosan putaidh agad fhaighinn + push: na brathan putaidh agad fhaighinn read: dàta sam bith a’ cunntais agad a leughadh read:accounts: fiosrachadh nan cunntasan fhaicinn read:blocks: na bacaidhean agad fhaicinn read:bookmarks: na comharran-lìn agad fhaicinn read:favourites: na h-annsachdan agad fhaicinn read:filters: na criathragan agad fhaicinn - read:follows: faicinn cò air a tha thu a’ leantainn + read:follows: faicinn cò a tha thu a’ leantainn read:lists: na liostaichean agad fhaicinn read:mutes: na mùchaidhean agad fhaicinn - read:notifications: na fiosan agad faicinn + read:notifications: na brathan agad faicinn read:reports: na gearanan agad fhaicinn read:search: lorg a dhèanamh às do leth read:statuses: na postaichean uile fhaicinn @@ -176,10 +176,10 @@ gd: write:conversations: còmhraidhean a mhùchadh is a sguabadh às write:favourites: postaichean a chur ris na h-annsachdan write:filters: criathragan a chruthachadh - write:follows: leantainn air daoine + write:follows: leantainn dhaoine write:lists: liostaichean a chruthachadh write:media: faidhlichean meadhain a luchdadh suas write:mutes: daoine is còmhraidhean a mhùchadh - write:notifications: na fiosan agad a ghlanadh às + write:notifications: na brathan agad fhalamhachadh write:reports: gearan a dhèanamh mu chàch write:statuses: postaichean fhoillseachadh diff --git a/config/locales/doorkeeper.he.yml b/config/locales/doorkeeper.he.yml index e2f0c34013..eda38153c6 100644 --- a/config/locales/doorkeeper.he.yml +++ b/config/locales/doorkeeper.he.yml @@ -138,7 +138,7 @@ he: push: התראות בדחיפה reports: דיווחים search: חיפוש - statuses: חצרוצים + statuses: הודעות layouts: admin: nav: @@ -168,13 +168,13 @@ he: read:notifications: צפיה בהתראותיך read:reports: צפיה בדוחותיך read:search: חיפוש מטעם עצמך - read:statuses: צפיה בכל החצרוצים + read:statuses: צפיה בכל ההודעות write: להפיץ הודעות בשמך write:accounts: שינוי הפרופיל שלך write:blocks: חסימת חשבונות ודומיינים - write:bookmarks: סימון חצרוצים + write:bookmarks: סימון הודעות write:conversations: השתקת ומחיקת שיחות - write:favourites: חצרוצים מחובבים + write:favourites: הודעות מחובבות write:filters: יצירת מסננים write:follows: עקיבה אחר אנשים write:lists: יצירת רשימות @@ -182,4 +182,4 @@ he: write:mutes: השתקת אנשים ושיחות write:notifications: ניקוי התראותיך write:reports: דיווח על אנשים אחרים - write:statuses: פרסום חצרוצים + write:statuses: פרסום הודעות diff --git a/config/locales/doorkeeper.no.yml b/config/locales/doorkeeper.no.yml index 40eff8bb19..7ba1baf7a8 100644 --- a/config/locales/doorkeeper.no.yml +++ b/config/locales/doorkeeper.no.yml @@ -3,7 +3,7 @@ activerecord: attributes: doorkeeper/application: - name: Navn + name: Applikasjonsnavn redirect_uri: Omdirigerings-URI scopes: Omfang website: Applikasjonsnettside @@ -12,24 +12,24 @@ doorkeeper/application: attributes: redirect_uri: - fragment_present: kan ikke inneholde ett fragment. + fragment_present: kan ikke inneholde et fragment. invalid_uri: må være en gyldig URI. relative_uri: må være en absolutt URI. secured_uri: må være en HTTPS/SSL URI. doorkeeper: applications: buttons: - authorize: Autoriser + authorize: Autorisér cancel: Avbryt destroy: Ødelegg - edit: Rediger + edit: Redigér submit: Send inn confirmations: destroy: Er du sikker? edit: title: Endre applikasjon form: - error: Oops! Sjekk skjemaet ditt for mulige feil + error: Oops! Sjekk om du har feil i skjemaet ditt help: native_redirect_uri: Bruk %{native_redirect_uri} for lokale tester redirect_uri: Bruk én linje per URI @@ -60,6 +60,8 @@ error: title: En feil oppstod new: + prompt_html: "%{client_name} ønsker tilgang til kontoen din. Det er en tredjeparts applikasjon. Hvis du ikke stoler på den, bør du ikke autorisere den." + review_permissions: Gå gjennom tillatelser title: Autorisasjon påkrevd show: title: Kopier denne koden og lim den inn i programmet. @@ -69,18 +71,24 @@ confirmations: revoke: Opphev? index: + authorized_at: Autorisert %{date} + description_html: Dette er applikasjoner som kan få tilgang til kontoen din ved hjelp av API-et. Hvis det finnes applikasjoner du ikke gjenkjenner her, eller en applikasjon skaper problemer, kan du tilbakekalle tilgangen den har. + last_used_at: Sist brukt %{date} + never_used: Aldri brukt + scopes: Tillatelser + superapp: Internt title: Dine autoriserte applikasjoner errors: messages: - access_denied: Ressurseieren eller autoriseringstjeneren avviste forespørslen. + access_denied: Ressurseieren eller autoriseringsserveren avviste forespørselen. credential_flow_not_configured: Ressurseiers passordflyt feilet fordi Doorkeeper.configure.resource_owner_from_credentials ikke var konfigurert. invalid_client: Klientautentisering feilet på grunn av ukjent klient, ingen autentisering inkludert, eller autentiseringsmetode er ikke støttet. - invalid_grant: Autoriseringen er ugyldig, utløpt, opphevet, stemmer ikke overens med omdirigerings-URIen eller var utstedt til en annen klient. + invalid_grant: Autoriseringen er ugyldig, utløpt, opphevet, stemmer ikke overens med omdirigerings-URIen i autoriseringsforespørselen eller var utstedt til en annen klient. invalid_redirect_uri: Den inkluderte omdirigerings-URLen er ikke gyldig. invalid_request: missing_param: 'Mangler påkrevd parameter: %{value}.' - request_not_authorized: Forespørselen må godkjennes. Påkrevd parameter for godkjenningsforespørselen mangler eller er ugyldig. - unknown: Forespørselen mangler en påkrevd parameter, inkluderer en ukjent parameterverdi, eller er utformet for noe annet. + request_not_authorized: Forespørselen må autoriseres. Påkrevd parameter for autorisasjonsforespørselen mangler eller er ugyldig. + unknown: Forespørselen mangler en påkrevd parameter, inkluderer en parameterverdi som ikke støttes, eller har på annet vis feil struktur. invalid_resource_owner: Ressurseierens detaljer er ikke gyldige, eller så er det ikke mulig å finne eieren invalid_scope: Det etterspurte omfanget er ugyldig, ukjent eller har feil struktur. invalid_token: @@ -89,10 +97,10 @@ unknown: Tilgangsbeviset er ugyldig resource_owner_authenticator_not_configured: Ressurseier kunne ikke finnes fordi Doorkeeper.configure.resource_owner_authenticator ikke er konfigurert. server_error: Autoriseringstjeneren støtte på en uventet hendelse som hindret den i å svare på forespørslen. - temporarily_unavailable: Autoriseringstjeneren kan ikke håndtere forespørslen grunnet en midlertidig overbelastning eller tjenervedlikehold. + temporarily_unavailable: Autoriseringsserveren kan ikke håndtere forespørselen grunnet en midlertidig overbelastning eller vedlikehold av serveren. unauthorized_client: Klienten har ikke autorisasjon for å utføre denne forespørslen med denne metoden. unsupported_grant_type: Autorisasjonstildelingstypen er ikke støttet av denne autoriseringstjeneren. - unsupported_response_type: Autorisasjonsserveren støtter ikke denne typen av forespørsler. + unsupported_response_type: Autorisasjonsserveren støtter ikke denne respons-typen. flash: applications: create: @@ -104,45 +112,74 @@ authorized_applications: destroy: notice: Applikasjon opphevet. + grouped_scopes: + access: + read: Kun lesetilgang + read/write: Lese- og skrivetilgang + write: Kun skrivetilgang + title: + accounts: Kontoer + admin/accounts: Administrasjon av kontoer + admin/all: All administrativ funksjonalitet + admin/reports: Administrasjon av rapporteringer + all: Alt + blocks: Blokkeringer + bookmarks: Bokmerker + conversations: Samtaler + crypto: Ende-til-ende-kryptering + favourites: Favoritter + filters: Filtre + follow: Relasjoner + follows: Følger + lists: Lister + media: Mediavedlegg + mutes: Dempinger + notifications: Varslinger + push: Push-varslinger + reports: Rapporteringer + search: Søk + statuses: Innlegg layouts: admin: nav: applications: Applikasjoner - oauth2_provider: OAuth2-tilbyder + oauth2_provider: OAuth2-leverandør application: title: OAuth-autorisering påkrevet scopes: admin:read: lese alle data på tjeneren - admin:read:accounts: lese sensitiv informasjon om alle kontoer - admin:read:reports: lese sensitiv informasjon om alle rapporter og rapporterte kontoer + admin:read:accounts: lese sensitiv informasjon for alle kontoer + admin:read:reports: lese sensitiv informasjon for alle rapporter og rapporterte kontoer admin:write: modifisere alle data på tjeneren admin:write:accounts: utføre moderatorhandlinger på kontoer admin:write:reports: utføre moderatorhandlinger på rapporter - follow: følg, blokkér, avblokkér, avfølg brukere - push: motta dine varsler + crypto: bruk ende-til-ende-kryptering + follow: endre konto-relasjoner + push: motta push-varslingene dine read: lese dine data read:accounts: se informasjon om kontoer - read:blocks: se dine blokkeringer - read:bookmarks: se dine bokmerker + read:blocks: se blokkeringene dine + read:bookmarks: se bokmerkene dine read:favourites: se dine likinger - read:filters: se dine filtre - read:follows: se dine følginger + read:filters: se filtrene dine + read:follows: se hvem du følger read:lists: se listene dine read:mutes: se dine dempinger - read:notifications: se dine varslinger - read:reports: se dine rapporter + read:notifications: se varslingene dine + read:reports: se rapportene dine read:search: søke på dine vegne - read:statuses: se alle statuser + read:statuses: se alle innlegg write: poste på dine vegne write:accounts: endre på profilen din write:blocks: blokkere kontoer og domener - write:bookmarks: bokmerke statuser - write:favourites: like statuser - write:filters: opprett filtre - write:follows: følg personer - write:lists: opprett lister - write:media: last opp mediafiler + write:bookmarks: bokmerke innlegg + write:conversations: dempe og slette samtaler + write:favourites: like innlegg + write:filters: opprette filtre + write:follows: følge personer + write:lists: opprette lister + write:media: laste opp mediafiler write:mutes: dempe folk og samtaler - write:notifications: tømme dine varsler + write:notifications: tømme varslingene dine write:reports: rapportere andre folk - write:statuses: legg ut statuser + write:statuses: legge ut innlegg diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml index eef5eb146c..905dff0e69 100644 --- a/config/locales/doorkeeper.pt-BR.yml +++ b/config/locales/doorkeeper.pt-BR.yml @@ -138,7 +138,7 @@ pt-BR: push: Notificações push reports: Denúncias search: Buscar - statuses: Posts + statuses: Publicações layouts: admin: nav: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 9036146491..4cabba4989 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -2,9 +2,10 @@ eo: about: about_mastodon_html: 'Mastodon estas socia retejo de la estonteco: sen reklamo, sen kompania gvato, etika dezajno kaj malcentraligo! Vi regu viajn datumojn kun Mastodon!' - contact_missing: Ne ŝargita + contact_missing: Ne elektita contact_unavailable: Ne disponebla hosted_on: "%{domain} estas nodo de Mastodon" + title: Pri accounts: follow: Sekvi followers: @@ -18,22 +19,22 @@ eo: pin_errors: following: Vi devas sekvi la homon, kiun vi volas proponi posts: - one: Mesaĝo + one: Afiŝo other: Mesaĝoj - posts_tab_heading: Mesaĝoj + posts_tab_heading: Afiŝoj admin: account_actions: action: Plenumi agon title: Plenumi kontrolan agon al %{acct} account_moderation_notes: create: Lasi noton - created_msg: Noto de mederigado sukcese kreita! + created_msg: Noto de mederigado estis sukcese kreita! destroyed_msg: Noto de moderigado sukcese detruita! accounts: add_email_domain_block: Bloki retadresan domajnon approve: Aprobi are_you_sure: Ĉu vi certas? - avatar: Rolfiguro + avatar: Profilbildo by_domain: Domajno change_email: current_email: Nuna retadreso @@ -41,22 +42,26 @@ eo: new_email: Nova retadreso submit: Ŝanĝi retadreson title: Ŝanĝi retadreson por %{username} + change_role: + label: Ŝanĝi rolon + no_role: Neniu rolo + title: Ŝanĝi rolon por %{username} confirm: Konfirmi confirmed: Konfirmita confirming: Konfirmante - custom: Kutimo + custom: Aliaj agordoj delete: Forigi datumojn deleted: Forigita demote: Degradi disable: Frostigi - disable_two_factor_authentication: Malaktivigi 2FA-n + disable_two_factor_authentication: Malŝalti 2FA-n disabled: Frostigita display_name: Montrata nomo domain: Domajno edit: Redakti - email: Retadreso - email_status: Retadreso Stato - enable: Ebligi + email: Retpoŝto + email_status: Stato de retpoŝto + enable: Malfrostigi enabled: Ebligita followers: Sekvantoj follows: Sekvatoj @@ -67,7 +72,7 @@ eo: ip: IP joined: Aliĝis location: - all: Ĉio + all: Ĉiuj local: Lokaj remote: Foraj title: Loko @@ -76,19 +81,19 @@ eo: memorialize: Ŝanĝi al memoro memorialized: Memorita moderation: - active: Aktiva + active: Aktivaj all: Ĉio pending: Pritraktata suspended: Suspendita title: Moderigado moderation_notes: Notoj de moderigado - most_recent_activity: Lasta ago + most_recent_activity: Lastaj afiŝoj most_recent_ip: Lasta IP no_account_selected: Neniu konto estis ŝanĝita ĉar neniu estis selektita no_limits_imposed: Neniu limito trudita not_subscribed: Ne abonita pending: Pritraktata recenzo - perform_full_suspension: Haltigi + perform_full_suspension: Suspendi promote: Plirangigi protocol: Protokolo public: Publika @@ -100,8 +105,8 @@ eo: removed_avatar_msg: La bildo de la rolfiguro de %{username} estas sukcese forigita resend_confirmation: already_confirmed: Ĉi tiu uzanto jam estas konfirmita - send: Resendi konfirman retmesaĝon - success: Konfirma retmesaĝo sukcese sendita! + send: Resendi konfirman retpoŝton + success: Konfirma retpoŝto estis sukcese sendita! reset: Restarigi reset_password: Restarigi pasvorton resubscribe: Reaboni @@ -119,7 +124,7 @@ eo: targeted_reports: Raporitaj de alia silence: Mutigita silenced: Silentigita - statuses: Mesaĝoj + statuses: Afiŝoj subscribe: Aboni suspend: Haltigu suspended: Suspendita @@ -127,7 +132,7 @@ eo: title: Kontoj unblock_email: Malbloki retpoŝtadresojn unblocked_email_msg: Sukcese malblokis la retpoŝtadreson de %{username} - unconfirmed_email: Nekonfirmita retadreso + unconfirmed_email: Nekonfirmita retpoŝto undo_sensitized: Malfari sentema undo_silenced: Malfari kaŝon undo_suspension: Malfari haltigon @@ -137,23 +142,23 @@ eo: view_domain: Vidi la resumon de la domajno warn: Averti web: Reto - whitelisted: En la blanka listo + whitelisted: Permesita por federacio action_logs: action_types: approve_user: Aprobi Uzanton assigned_to_self_report: Atribui Raporton - change_email_user: Ŝanĝi retadreson de uzanto - confirm_user: Konfermi uzanto - create_account_warning: Krei averton + change_email_user: Ŝanĝi retpoŝton de uzanto + confirm_user: Konfirmi uzanton + create_account_warning: Krei Averton create_announcement: Krei Anoncon - create_custom_emoji: Krei Propran emoĝion + create_custom_emoji: Krei Propran Emoĝion create_domain_allow: Krei Domajnan Permeson - create_domain_block: Krei blokadon de domajno - create_email_domain_block: Krei blokadon de retpoŝta domajno + create_domain_block: Krei Blokadon De Domajno + create_email_domain_block: Krei Blokadon De Retpoŝta Domajno create_ip_block: Krei IP-regulon - demote_user: Malpromocii uzanton + demote_user: Malpromocii Uzanton destroy_announcement: Forigi Anoncon - destroy_custom_emoji: Forigi Propran emoĝion + destroy_custom_emoji: Forigi Propran Emoĝion destroy_domain_allow: Forigi Domajnan Permeson destroy_domain_block: Forigi blokadon de domajno destroy_email_domain_block: Forigi blokadon de retpoŝta domajno @@ -176,12 +181,12 @@ eo: resolve_report: Solvitaj reporto sensitive_account: Marki tikla la aŭdovidaĵojn de via konto silence_account: Silentigi konton - suspend_account: Haltigi konton + suspend_account: Suspendi la konton unassigned_report: Malatribui Raporton unblock_email_account: Malbloki retpoŝtadreson unsensitive_account: Malmarku la amaskomunikilojn en via konto kiel sentemaj unsilence_account: Malsilentigi konton - unsuspend_account: Malhaltigi konton + unsuspend_account: Reaktivigi la konton update_announcement: Ĝisdatigi anoncon update_custom_emoji: Ĝisdatigi proprajn emoĝiojn update_domain_block: Ĝigdatigi domajnan blokadon @@ -255,7 +260,7 @@ eo: disabled: Neebligita disabled_msg: La emoĝio sukcese neebligita emoji: Emoĝio - enable: Ebligi + enable: Enŝalti enabled: Ebligita enabled_msg: Tiu emoĝio estis sukcese ebligita list: Listo @@ -304,7 +309,7 @@ eo: desc_html: "Kaŝi igos la mesaĝojn de la konto nevideblaj al tiuj, kiuj ne sekvas tiun. Haltigi forigos ĉiujn enhavojn, aŭdovidaĵojn kaj datumojn de la konto. Uzu Nenio se vi simple volas malakcepti aŭdovidaĵojn." noop: Nenio silence: Mutigi - suspend: Haltigi + suspend: Suspendi title: Nova domajna blokado obfuscate: Malklara domajna nomo private_comment: Privata komento @@ -343,6 +348,7 @@ eo: reject_media: Malakcepti la aŭdovidaĵojn reject_reports: Malakcepti raportojn silence: Kaŝu + suspend: Suspendi policy: Politiko dashboard: instance_accounts_dimension: Plej sekvataj kontoj @@ -401,7 +407,7 @@ eo: description_html: "Fratara ripetilo estas survoja servilo, kiu interŝanĝas grandan kvanton de publikaj mesaĝoj inter serviloj, kiuj abonas kaj publikigas al ĝi. Ĝi povas helpi etajn kaj mezgrandajn servilojn malkovri enhavon de la fediverse, kio normale postulus al lokaj uzantoj mane sekvi homojn de foraj serviloj." disable: Neebligi disabled: Neebligita - enable: Ebligi + enable: Enŝalti enable_hint: Post ebligo, via servilo abonos ĉiujn publikajn mesaĝojn de tiu ripetilo, kaj komencos sendi publikajn mesaĝojn de la servilo al ĝi. enabled: Ebligita inbox_url: URL de la ripetilo @@ -512,18 +518,18 @@ eo: allow: Permesi disallow: Malpermesi links: - allow: Permesi ligilon - disallow: Malpermesi ligilon + allow: Permesi la ligilon + disallow: Malpermesi la ligilon title: Tendencantaj ligiloj pending_review: Atendante revizion statuses: - allow: Permesi afiŝon - allow_account: Permesi aŭtoron - disallow: Malpermesi afiŝon - disallow_account: Malpermesi aŭtoron + allow: Permesi la afiŝon + allow_account: Permesi la aŭtoron + disallow: Malpermesi la afiŝon + disallow_account: Malpermesi la aŭtoron shared_by: - one: Kundividita kaj aldonita al preferaĵoj unufoje - other: Kundividita kaj aldonita al preferaĵoj %{friendly_count}-foje + one: Kundividita kaj aldonita al la preferaĵoj unufoje + other: Kundividita kaj aldonita al la preferaĵoj %{friendly_count}-foje title: Tendencantaj afiŝoj tags: dashboard: @@ -537,10 +543,13 @@ eo: delete: Forviŝi edit_preset: Redakti la antaŭagordojn de averto title: Administri avertajn antaŭagordojn + webhooks: + enabled: Aktiva admin_mailer: new_appeal: actions: disable: por frostigi ties konton + suspend: por suspendi iliajn kontojn new_pending_account: body: La detaloj de la nova konto estas sube. Vi povas aprobi aŭ Malakcepti ĉi kandidatiĝo. subject: Nova konto atendas por recenzo en %{instance} (%{username}) @@ -874,7 +883,7 @@ eo: trillion: Dn otp_authentication: code_hint: Enmetu la kodon kreitan de via aŭtentiga aplikaĵo por konfirmi - enable: Ebligi + enable: Enŝalti instructions_html: "Skanu ĉi tiun QR-kodon per Google Authenticator aŭ per simila aplikaĵo en via poŝtelefono. De tiam, la aplikaĵo kreos nombrojn, kiujn vi devos enmeti." manual_instructions: 'Se vi ne povas skani la QR-kodon kaj bezonas enmeti ĝin mane, jen la tut-teksta sekreto:' setup: Agordi diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 5ac6853700..dc8703af6c 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -283,7 +283,7 @@ fi: update_ip_block_html: "%{name} muutti sääntöä IP-osoitteelle %{target}" update_status_html: "%{name} päivitti viestin %{target}" update_user_role_html: "%{name} muutti roolia %{target}" - deleted_account: poistettu tili + deleted_account: poisti tilin empty: Lokeja ei löytynyt. filter_by_action: Suodata tapahtuman mukaan filter_by_user: Suodata käyttäjän mukaan diff --git a/config/locales/fy.yml b/config/locales/fy.yml index c48a0b1b5c..9d90643881 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -4,22 +4,116 @@ fy: last_active: letst warber admin: accounts: + delete: Gegevens fuortsmite + deleted: Fuortsmiten + domain: Domein + edit: Bewurkje + followers: Folgers + follows: Folgjend + header: Omslachfoto + inbox_url: Ynboks-URL + ip: IP + joined: Registrearre + location: + all: Alle + local: Lokaal + remote: Ekstern + title: Lokaasje + login_status: Oanmeldsteat + media_attachments: Mediabylagen moderation: active: Aktyf + all: Alle + pending: Yn ôfwachting + silenced: Beheind + suspended: Utsteld + title: Moderaasje + perform_full_suspension: Utstelle + promote: Promovearje + protocol: Protokol + public: Iepenbier + reject: Wegerje security_measures: only_password: Allinnich wachtwurd password_and_2fa: Wachtwurd en 2FA + title: Accounts + unblock_email: E-mailadres deblokkearje + warn: Warskôgje + web: Web-app + action_logs: + action_types: + destroy_announcement: Meidieling fuortsmite + deleted_account: fuortsmiten account + custom_emojis: + copy: Kopiearje + delete: Fuortsmite + disable: Utskeakelje + disabled: Utskeakele + emoji: Emoji + enable: Ynskeakelje + enabled: Ynskeakele + image_hint: PNG of GIF net grutter as %{size} + list: Yn list + listed: Werjaan + upload: Oplade dashboard: active_users: warbere brûkers + interactions: ynteraksjes + title: Dashboerd top_languages: Meast aktive talen top_servers: Meast aktive tsjinners + website: Website + disputes: + appeals: + empty: Gjin beswieren fûn. + title: Beswieren + email_domain_blocks: + delete: Fuortsmite + domain: Domein + new: + create: Domain tafoegje + resolve: Domein opsykje + follow_recommendations: + status: Steat instances: + back_to_all: Alle + back_to_limited: Beheind + back_to_warning: Warskôging + by_domain: Domein confirm_purge: Wolle jo werklik alle gegevens fan dit domein foar ivich fuortsmite? + content_policies: + comment: Ynterne reden + policies: + silence: Beheind + suspend: Utsteld + policy: Belied dashboard: instance_accounts_measure: bewarre accounts + ip_blocks: + delete: Fuortsmite + relays: + delete: Fuortsmite + reports: + delete_and_resolve: Berjocht fuortsmite + notes: + delete: Fuortsmite + roles: + delete: Fuortsmite + rules: + delete: Fuortsmite + statuses: + deleted: Fuortsmiten system_checks: database_schema_check: message_html: Der binne database migraasjes yn ôfwachting. Jo moatte dizze útfiere om der foar te soargjen dat de applikaasje wurkjen bliuwt sa as it heard + warning_presets: + delete: Fuortsmite + webhooks: + delete: Fuortsmite + auth: + delete_account: Account fuortsmite + deletes: + proceed: Account fuortsmite errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. @@ -33,6 +127,12 @@ fy: filters: contexts: thread: Petearen + index: + delete: Fuortsmite + generic: + delete: Fuortsmite + invites: + delete: Deaktivearje notification_mailer: mention: action: Beäntwurdzje @@ -43,7 +143,11 @@ fy: last_active: Letst warber rss: content_warning: 'Ynhâldswarskôging:' + settings: + delete: Account fuortsmite statuses: content_warning: 'Ynhâldswarskôging: %{warning}' pin_errors: direct: Berjochten dy allinnich sichtber binne foar fermelde brûkers kinne net fêstset wurde + webauthn_credentials: + delete: Fuortsmite diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 45516c4d5f..3c4239f776 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -62,6 +62,19 @@ ga: statuses: Postálacha title: Cuntais web: Gréasán + action_logs: + action_types: + assigned_to_self_report: Sann tuairisc + create_account_warning: Cruthaigh rabhadh + destroy_announcement: Scrios Fógra + destroy_ip_block: Scrios riail IP + destroy_status: Scrios postáil + reopen_report: Athoscail tuairisc + resolve_report: Réitigh tuairisc + unassigned_report: Cealaigh tuairisc a shann + actions: + create_account_warning_html: Sheol %{name} rabhadh do %{target} + deleted_account: cuntas scriosta announcements: live: Beo publish: Foilsigh @@ -87,6 +100,7 @@ ga: status: Stádas instances: back_to_all: Uile + back_to_warning: Rabhadh content_policies: policy: Polasaí delivery: @@ -116,6 +130,7 @@ ga: status: Stádas reports: category: Catagóir + delete_and_resolve: Scrios postála no_one_assigned: Duine ar bith notes: delete: Scrios @@ -124,6 +139,12 @@ ga: title: Tuairiscí roles: delete: Scrios + privileges: + delete_user_data: Scrios sonraí úsáideora + rules: + delete: Scrios + site_uploads: + delete: Scrios comhad uaslódáilte statuses: account: Údar deleted: Scriosta @@ -131,6 +152,9 @@ ga: open: Oscail postáil original_status: Bunphostáil with_media: Le meáin + strikes: + actions: + delete_statuses: Scrios %{name} postála %{target} tags: review: Stádas athbhreithnithe trends: @@ -139,6 +163,29 @@ ga: statuses: allow: Ceadaigh postáil allow_account: Ceadaigh údar + warning_presets: + delete: Scrios + webhooks: + delete: Scrios + admin_mailer: + new_appeal: + actions: + delete_statuses: chun postála acu a scrios + none: rabhadh + auth: + delete_account: Scrios cuntas + too_fast: Chuireadh foirm róthapa, bain triail arís. + deletes: + proceed: Scrios cuntas + disputes: + strikes: + appeal_submitted_at: Achomharc curtha isteach + appealed_msg: Bhí d'achomharc curtha isteach. Má ceadaítear é, cuirfidh ar an eolas tú. + appeals: + submit: Cuir achomharc isteach + title_actions: + none: Rabhadh + your_appeal_pending: Chuir tú achomharc isteach errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. @@ -149,3 +196,33 @@ ga: '429': Too many requests '500': '503': The page could not be served due to a temporary server failure. + filters: + contexts: + thread: Comhráite + index: + delete: Scrios + generic: + delete: Scrios + notification_mailer: + admin: + report: + subject: Chuir %{name} tuairisc isteach + rss: + content_warning: 'Rabhadh ábhair:' + statuses: + content_warning: 'Rabhadh ábhair: %{warning}' + show_more: Taispeáin níos mó + show_newer: Taispeáin níos déanaí + show_thread: Taispeáin snáithe + user_mailer: + warning: + appeal: Cuir achomharc isteach + categories: + spam: Turscar + reason: 'Fáth:' + subject: + none: Rabhadh do %{acct} + title: + none: Rabhadh + webauthn_credentials: + delete: Scrios diff --git a/config/locales/gd.yml b/config/locales/gd.yml index ed6040f68c..99f432ea42 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -7,7 +7,7 @@ gd: hosted_on: Mastodon ’ga òstadh air %{domain} title: Mu dhèidhinn accounts: - follow: Lean air + follow: Lean followers: few: Luchd-leantainn one: Neach-leantainn @@ -19,7 +19,7 @@ gd: link_verified_on: Chaidh dearbhadh cò leis a tha an ceangal seo %{date} nothing_here: Chan eil dad an-seo! pin_errors: - following: Feumaidh tu leantainn air neach mus urrainn dhut a bhrosnachadh + following: Feumaidh tu neach a leantainn mus urrainn dhut a bhrosnachadh posts: few: Postaichean one: Post @@ -75,7 +75,7 @@ gd: enabled: An comas enabled_msg: Chaidh an cunntas aig %{username} a dhì-reòthadh followers: Luchd-leantainn - follows: A’ leantainn air + follows: A’ leantainn header: Bann-cinn inbox_url: URL a’ bhogsa a-steach invite_request_text: Adhbharan na ballrachd @@ -400,7 +400,7 @@ gd: create: Cruthaich bacadh hint: Cha chuir bacadh na h-àrainne crìoch air cruthachadh chunntasan san stòr-dàta ach cuiridh e dòighean maorsainneachd sònraichte an sàs gu fèin-obrachail air a h-uile dàta a tha aig na cunntasan ud. severity: - desc_html: Falaichidh am mùchadh postaichean a’ chunntais do dhuine sam bith nach ail a’ leantainn air. Bheir an cur à rèim air falbh gach susbaint, meadhan is dàta pròifil a’ chunntais. Tagh Chan eil gin mur eil thu ach airson faidhlichean meadhain a dhiùltadh. + desc_html: Falaichidh am mùchadh postaichean a’ chunntais do dhuine sam bith nach eil ’ga leantainn. Bheir an cur à rèim air falbh gach susbaint, meadhan is dàta pròifil a’ chunntais. Tagh Chan eil gin mur eil thu ach airson faidhlichean meadhain a dhiùltadh. noop: Chan eil gin silence: Mùch suspend: Cuir à rèim @@ -439,7 +439,7 @@ gd: resolved_through_html: Chaidh fuasgladh slighe %{domain} title: Àrainnean puist-d ’gam bacadh follow_recommendations: - description_html: "Cuidichidh molaidhean leantainn an luchd-cleachdaidh ùr ach an lorg iad susbaint inntinneach gu luath. Mur an do ghabh cleachdaiche conaltradh gu leòr le càch airson molaidhean leantainn gnàthaichte fhaighinn, mholamaid na cunntasan seo ’nan àite. Thèid an àireamhachadh às ùr gach latha stèidhichte air na cunntasan air an robh an conaltradh as trice ’s an luchd-leantainn ionadail as motha sa chànan." + description_html: "Cuidichidh molaidhean leantainn an luchd-cleachdaidh ùr ach an lorg iad susbaint inntinneach gu luath. Mur an do ghabh cleachdaiche conaltradh gu leòr le càch airson molaidhean leantainn gnàthaichte fhaighinn, mholamaid na cunntasan seo ’nan àite. Thèid an àireamhachadh às ùr gach latha, stèidhichte air na cunntasan air an robh an conaltradh as trice ’s an luchd-leantainn ionadail as motha sa chànan." language: Dhan chànan status: Staid suppress: Mùch na molaidhean leantainn @@ -547,7 +547,7 @@ gd: relays: add_new: Cuir ath-sheachadan ùr ris delete: Sguab às - description_html: "’S e frithealaiche eadar-mheadhanach a th’ ann an ath-sheachadan co-nasgaidh a nì iomlaid air grunnan mòra de phostaichean poblach eadar na frithealaichean a dh’fho-sgrìobhas ’s a dh’fhoillsicheas dha. ’S urrainn dha cuideachadh a thoirt do dh’fhrithealaichean beaga is meadhanach mòr ach an rùraich iad susbaint sa cho-shaoghal agus às an aonais, bhiodh aig cleachdaichean ionadail leantainn air daoine eile air frithealaichean cèine a làimh." + description_html: "’S e frithealaiche eadar-mheadhanach a th’ ann an ath-sheachadan co-nasgaidh a nì iomlaid air grunnan mòra de phostaichean poblach eadar na frithealaichean a dh’fho-sgrìobhas ’s a dh’fhoillsicheas dha. ’S urrainn dha cuideachadh a thoirt do dh’fhrithealaichean beaga is meadhanach mòr ach an rùraich iad susbaint sa cho-shaoghal agus às an aonais, bhiodh aig cleachdaichean ionadail daoine eile a leantainn air frithealaichean cèine a làimh." disable: Cuir à comas disabled: Chaidh a chur à comas enable: Cuir an comas @@ -578,7 +578,7 @@ gd: mark_as_sensitive_description_html: Thèid comharra an fhrionasachd a chur ris na meadhanan sna postaichean le gearan orra agus rabhadh a chlàradh gus do chuideachadh ach am bi thu nas teinne le droch-ghiùlan on aon chunntas sam àm ri teachd. other_description_html: Seall barrachd roghainnean airson giùlan a’ chunntais a stiùireadh agus an conaltradh leis a’ chunntas a chaidh gearan a dhèanamh mu dhèidhinn a ghnàthachadh. resolve_description_html: Cha dèid gnìomh sam bith a ghabhail an aghaidh a’ chunntais le gearan air agus thèid an gearan a dhùnadh gun rabhadh a chlàradh. - silence_description_html: Chan fhaic ach an fheadhainn a tha a’ leantainn oirre mu thràth no a lorgas a làimh i a’ phròifil seo agus cuingichidh seo uiread nan daoine a ruigeas i gu mòr. Gabhaidh seo a neo-dhèanamh uair sam bith. + silence_description_html: Chan fhaic ach an fheadhainn a tha ’ga leantainn mu thràth no a lorgas a làimh i a’ phròifil seo agus cuingichidh seo uiread nan daoine a ruigeas i gu mòr. Gabhaidh seo a neo-dhèanamh uair sam bith. suspend_description_html: Cha ghabh a’ phròifil seo agus an t-susbaint gu leòr aice inntrigeadh gus an dèid a sguabadh às air deireadh na sgeòil. Cha ghabh eadar-ghabhail a dhèanamh leis a’ chunntas. Gabhaidh seo a neo-dhèanamh am broinn 30 latha. actions_description_html: Socraich dè a nì thu airson an gearan seo fhuasgladh. Ma chuireas tu peanas air a’ chunntas le gearan air, gheibh iad brath air a’ phost-d mura tagh thu an roinn-seòrsa Spama. add_to_report: Cuir barrachd ris a’ ghearan @@ -819,7 +819,7 @@ gd: statuses: allow: Ceadaich am post allow_account: Ceadaich an t-ùghdar - description_html: Seo na postaichean air a bheil am frithealaiche agad eòlach ’s a tha ’gan co-roinneadh is ’nan annsachd gu tric aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ùr no a thill ach an lorg iad daoine airson leantainn orra. Cha dèid postaichean a shealltainn gu poblach gus an gabh thu ris an ùghdar agus gus an aontaich an t-ùghdar gun dèid an cunntas aca a mholadh do dhaoine eile. ’S urrainn dhut postaichean àraidh a cheadachadh no a dhiùltadh cuideachd. + description_html: Seo na postaichean air a bheil am frithealaiche agad eòlach ’s a tha ’gan co-roinneadh is ’nan annsachd gu tric aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ùr no a thill ach an lorg iad daoine airson an leantainn. Cha dèid postaichean a shealltainn gu poblach gus an gabh thu ris an ùghdar agus gus an aontaich an t-ùghdar gun dèid an cunntas aca a mholadh do dhaoine eile. ’S urrainn dhut postaichean àraidh a cheadachadh no a dhiùltadh cuideachd. disallow: Na ceadaich am post disallow_account: Na ceadaich an t-ùghdar no_status_selected: Cha deach post a’ treandadh sam bith atharrachadh o nach deach gin dhiubh a thaghadh @@ -957,7 +957,7 @@ gd: description: prefix_invited_by_user: Thug @%{name} cuireadh dhut ach am faigh thu ballrachd air an fhrithealaiche seo de Mhastodon! prefix_sign_up: Clàraich le Mastodon an-diugh! - suffix: Le cunntas, ’s urrainn dhut leantainn air daoine, naidheachdan a phostadh agus conaltradh leis an luchd-chleachdaidh air frithealaiche Mastodon sam bith is a bharrachd! + suffix: Le cunntas, ’s urrainn dhut daoine a leantainn, naidheachdan a phostadh agus conaltradh leis an luchd-chleachdaidh air frithealaiche Mastodon sam bith is a bharrachd! didnt_get_confirmation: Nach d’fhuair thu an stiùireadh mun dearbhadh? dont_have_your_security_key: Nach eil iuchair tèarainteachd agad? forgot_password: Na dhìochuimhnich thu am facal-faire agad? @@ -988,7 +988,7 @@ gd: email_settings_hint_html: Chaidh am post-d dearbhaidh a chur gu %{email}. Mur eil an seòladh puist-d seo mar bu chòir, ’s urrainn dhut atharrachadh ann an roghainnean a’ chunntais. title: Suidheachadh sign_up: - preamble: Le cunntas air an fhrithealaiche Mastodon seo, ’s urrainn dhut leantainn air neach sam bith air an lìonra, ge b’ e càit a bheil an cunntas aca-san ’ga òstadh. + preamble: Le cunntas air an fhrithealaiche Mastodon seo, ’s urrainn dhut neach sam bith a leantainn air an lìonra, ge b’ e càit a bheil an cunntas aca-san ’ga òstadh. title: Suidhicheamaid %{domain} dhut. status: account_status: Staid a’ chunntais @@ -1000,17 +1000,17 @@ gd: too_fast: Chaidh am foirm a chur a-null ro luath, feuch ris a-rithist. use_security_key: Cleachd iuchair tèarainteachd authorize_follow: - already_following: Tha thu a’ leantainn air a’ chunntas seo mu thràth + already_following: Tha thu a’ leantainn a’ chunntais seo mu thràth already_requested: Chuir thu iarrtas leantainn dhan chunntas seo mu thràth error: Gu mì-fhortanach, thachair mearachd le lorg a’ chunntais chèin - follow: Lean air + follow: Lean follow_request: 'Chuir thu iarrtas leantainn gu:' - following: 'Taghta! Chaidh leat a’ leantainn air:' + following: 'Taghta! Chaidh leat a’ leantainn:' post_follow: close: Air neo dùin an uinneag seo. return: Seall pròifil a’ chleachdaiche web: Tadhail air an duilleag-lìn - title: Lean air %{acct} + title: Lean %{acct} challenge: confirm: Lean air adhart hint_html: "Gliocas: Chan iarr sinn am facal-faire agad ort a-rithist fad uair a thìde." @@ -1215,13 +1215,13 @@ gd: merge_long: Cùm na reacordan a tha ann is cuir feadhainn ùr ris overwrite: Sgrìobh thairis air overwrite_long: Cuir na reacordan ùra an àite na feadhna a tha ann - preface: "’S urrainn dhut dàta ion-phortadh a dh’às-phortaich thu o fhrithealaiche eile, can liosta nan daoine air a leanas tu no a tha thu a’ bacadh." + preface: "’S urrainn dhut dàta ion-phortadh a dh’às-phortaich thu o fhrithealaiche eile, can liosta nan daoine a leanas tu no a tha thu a’ bacadh." success: Chaidh an dàta agad a luchdadh suas is thèid a phròiseasadh a-nis types: blocking: Liosta-bhacaidh bookmarks: Comharran-lìn domain_blocking: Liosta-bhacaidh àrainnean - following: Liosta dhen fheadhainn air a leanas tu + following: Liosta dhen fheadhainn a leanas tu muting: Liosta a’ mhùchaidh upload: Luchdaich suas invites: @@ -1317,12 +1317,12 @@ gd: subject: Is annsa le %{name} am post agad title: Annsachd ùr follow: - body: Tha %{name} a’ leantainn ort a-nis! - subject: Tha %{name} a’ leantainn ort a-nis + body: Tha %{name} ’gad leantainn a-nis! + subject: Tha %{name} ’gad leantainn a-nis title: Neach-leantainn ùr follow_request: action: Stiùirich na h-iarrtasan leantainn - body: Dh’iarr %{name} leantainn ort + body: Dh’iarr %{name} leantainn subject: 'Neach-leantainn ri dhèiligeadh: %{name}' title: Iarrtas leantainn ùr mention: @@ -1392,7 +1392,7 @@ gd: relationships: activity: Gnìomhachd a’ chunntais dormant: Na thàmh - follow_selected_followers: Lean air an luchd-leantainn a thagh thu + follow_selected_followers: Lean an luchd-leantainn a thagh thu followers: Luchd-leantainn following: A’ leantainn invited: Air cuireadh fhaighinn @@ -1404,7 +1404,7 @@ gd: relationship: Dàimh remove_selected_domains: Thoir air falbh a h-uile neach-leantainn o na h-àrainnean a thagh thu remove_selected_followers: Thoir air falbh a h-uile neach-leantainn a thagh thu - remove_selected_follows: Na lean air na cleachdaichean a thagh thu tuilleadh + remove_selected_follows: Na lean na cleachdaichean a thagh thu tuilleadh status: Staid a’ chunntais remote_follow: missing_resource: Cha do lorg sinn URL ath-stiùiridh riatanach a’ chunntais agad @@ -1542,7 +1542,7 @@ gd: visibilities: direct: Dìreach private: Luchd-leantainn a-mhàin - private_long: Na seall dhan luchd-leantainn + private_long: Na seall ach dhan luchd-leantainn public: Poblach public_long: Chì a h-uile duine seo unlisted: Falaichte o liostaichean @@ -1647,7 +1647,7 @@ gd: disable: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh ach mairidh a’ phròifil ’s an dàta eile agad. Faodaidh tu lethbhreac-glèidhidh dhen dàta agad iarraidh, roghainnean a’ chunntais atharrachadh no an cunntas agad a sguabadh às. mark_statuses_as_sensitive: Chuir maoir %{instance} comharra na frionasachd ri cuid dhe na postaichean agad. Is ciall dha seo gum feumar gnogag a thoirt air na meadhanan sna postaichean mus faicear ro-shealladh. ’S urrainn dhut fhèin comharra a chur gu bheil meadhan frionasach nuair a sgrìobhas tu post san à ri teachd. sensitive: O seo a-mach, thèid comharra na frionasachd a chur ri faidhle meadhain sam bith a luchdaicheas tu suas agus thèid am falach air cùlaibh rabhaidh a ghabhas briogadh air. - silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha a’ leantainn ort mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh gleus rùrachaidh. Gidheadh, faodaidh càch leantainn ort a làimh fhathast." + silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha ’gad leantainn mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh gleus rùrachaidh. Gidheadh, faodaidh càch ’gad leantainn a làimh fhathast." suspend: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh agus chan fhaigh thu grèim air a’ phròifil no air an dàta eile agad. ’S urrainn dhut clàradh a-steach fhathast airson lethbhreac-glèidhidh dhen dàta agad iarraidh mur dèid an dàta a thoirt air falbh an ceann 30 latha gu slàn ach cumaidh sinn cuid dhen dàta bhunasach ach nach seachain thu an cur à rèim. reason: 'Adhbhar:' statuses: 'Iomradh air postaichean:' @@ -1669,16 +1669,16 @@ gd: suspend: Cunntas à rèim welcome: edit_profile_action: Suidhich a’ phròifil agad - edit_profile_step: "’S urrainn dhut a’ phròifil agad a ghnàthachadh is tu a’ luchdadh suas dealbh pròifil, ag atharrachadh d’ ainm-taisbeanaidh is a bharrachd. ’S urrainn dhut lèirmheas a dhèanamh air daoine mus fhaod iad leantainn ort ma thogras tu." + edit_profile_step: "’S urrainn dhut a’ phròifil agad a ghnàthachadh is tu a’ luchdadh suas dealbh pròifil, ag atharrachadh d’ ainm-taisbeanaidh is a bharrachd. ’S urrainn dhut lèirmheas a dhèanamh air daoine mus fhaod iad ’gad leantainn ma thogras tu." explanation: Seo gliocas no dhà gus tòiseachadh final_action: Tòisich air postadh - final_step: 'Tòisich air postadh! Fiù ’s mur eil duine sam bith a’ leantainn ort, chì cuid mhath na postaichean poblach agad, can air an loidhne-ama ionadail no le tagaichean hais. Saoil an innis thu beagan mu d’ dhèidhinn air an taga hais #fàilte?' + final_step: 'Tòisich air postadh! Fiù ’s mur eil duine sam bith ’gad leantainn, chì cuid mhath na postaichean poblach agad, can air an loidhne-ama ionadail no le tagaichean hais. Saoil an innis thu beagan mu d’ dhèidhinn air an taga hais #fàilte?' full_handle: D’ ainm-cleachdaiche slàn - full_handle_hint: Seo na bheir thu dha na caraidean agad ach an urrainn dhaibh teachdaireachd a chur thugad no leantainn ort o fhrithealaiche eile. + full_handle_hint: Seo na bheir thu dha na caraidean agad ach an urrainn dhaibh teachdaireachd a chur thugad no ’gad leantainn o fhrithealaiche eile. subject: Fàilte gu Mastodon title: Fàilte air bòrd, %{name}! users: - follow_limit_reached: Chan urrainn dhut leantainn air còrr is %{limit} daoine + follow_limit_reached: Chan urrainn dhut còrr is %{limit} daoine a leantainn invalid_otp_token: Còd dà-cheumnach mì-dhligheach otp_lost_help_html: Ma chaill thu an t-inntrigeadh dhan dà chuid diubh, ’s urrainn dhut fios a chur gu %{email} seamless_external_login: Rinn thu clàradh a-steach le seirbheis on taobh a-muigh, mar sin chan eil roghainnean an fhacail-fhaire ’s a’ phuist-d ri làimh dhut. diff --git a/config/locales/he.yml b/config/locales/he.yml index 46fd07d308..6c53ff2538 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -5,6 +5,7 @@ he: contact_missing: ללא הגדרה contact_unavailable: לא רלוונטי/חסר hosted_on: מסטודון שיושב בכתובת %{domain} + title: אודות accounts: follow: לעקוב followers: @@ -20,11 +21,11 @@ he: pin_errors: following: עליך לעקוב אחרי חשבון לפני שניתן יהיה להמליץ עליו posts: - many: פוסטים - one: פוסט - other: פוסטים - two: פוסטים - posts_tab_heading: חצרוצים + many: הודעות + one: הודעה + other: הודעות + two: הודעותיים + posts_tab_heading: הודעות admin: account_actions: action: בצע/י פעולה @@ -179,6 +180,7 @@ he: confirm_user: אשר משתמש create_account_warning: יצירת אזהרה create_announcement: יצירת הכרזה + create_canonical_email_block: יצירת חסימת דואל create_custom_emoji: יצירת אמוג'י מיוחד create_domain_allow: יצירת דומיין מותר create_domain_block: יצירת דומיין חסום @@ -188,13 +190,14 @@ he: create_user_role: יצירת תפקיד demote_user: הורדת משתמש בדרגה destroy_announcement: מחיקת הכרזה + destroy_canonical_email_block: מחיקת חסימת דואל destroy_custom_emoji: מחיקת אמוג'י יחודי destroy_domain_allow: מחיקת דומיין מותר destroy_domain_block: מחיקת דומיין חסום destroy_email_domain_block: מחיקת חסימת דומיין דוא"ל destroy_instance: טיהור דומיין destroy_ip_block: מחיקת כלל IP - destroy_status: מחיקת פוסט + destroy_status: מחיקת הודעה destroy_unavailable_domain: מחיקת דומיין בלתי זמין destroy_user_role: מחיקת תפקיד disable_2fa_user: השעיית זיהוי דו-גורמי @@ -210,6 +213,7 @@ he: reject_user: דחיית משתמש remove_avatar_user: הסרת תמונת פרופיל reopen_report: פתיחת דו"ח מחדש + resend_user: שליחת דואל אישור שוב reset_password_user: איפוס סיסמה resolve_report: פתירת דו"ח sensitive_account: חשבון רגיש לכח @@ -223,6 +227,7 @@ he: update_announcement: עדכון הכרזה update_custom_emoji: עדכון סמלון מותאם אישית update_domain_block: עדכון חסימת שם מתחם + update_ip_block: עדכון כלל IP update_status: סטטוס עדכון update_user_role: עדכון תפקיד actions: @@ -234,6 +239,7 @@ he: confirm_user_html: '%{name} אישר/ה את כותבת הדו"אל של המשתמש %{target}' create_account_warning_html: "%{name} שלח/ה אזהרה ל %{target}" create_announcement_html: "%{name} יצר/ה הכרזה חדשה %{target}" + create_canonical_email_block_html: "%{name} חסם/ה את הדואל %{target}" create_custom_emoji_html: "%{name} העלו אמוג'י חדש %{target}" create_domain_allow_html: "%{name} אישר/ה פדרציה עם הדומיין %{target}" create_domain_block_html: "%{name} חסם/ה את הדומיין %{target}" @@ -243,13 +249,14 @@ he: create_user_role_html: "%{name} יצר את התפקיד של %{target}" demote_user_html: "%{name} הוריד/ה בדרגה את המשתמש %{target}" destroy_announcement_html: "%{name} מחק/ה את ההכרזה %{target}" + destroy_canonical_email_block_html: "%{name} הסיר/ה חסימה מדואל %{target}" destroy_custom_emoji_html: "%{name} מחק אמוג'י של %{target}" destroy_domain_allow_html: "%{name} לא התיר/ה פדרציה עם הדומיין %{target}" destroy_domain_block_html: "%{name} הסיר/ה חסימה מהדומיין %{target}" destroy_email_domain_block_html: '%{name} הסיר/ה חסימה מדומיין הדוא"ל %{target}' destroy_instance_html: "%{name} טיהר/ה את הדומיין %{target}" destroy_ip_block_html: "%{name} מחק/ה את הכלל עבור IP %{target}" - destroy_status_html: "%{name} הסיר/ה פוסט מאת %{target}" + destroy_status_html: ההודעה של %{target} הוסרה ע"י %{name} destroy_unavailable_domain_html: "%{name} התחיל/ה מחדש משלוח לדומיין %{target}" destroy_user_role_html: "%{name} ביטל את התפקיד של %{target}" disable_2fa_user_html: "%{name} ביטל/ה את הדרישה לאימות דו-גורמי למשתמש %{target}" @@ -265,6 +272,7 @@ he: reject_user_html: "%{name} דחו הרשמה מ-%{target}" remove_avatar_user_html: "%{name} הסירו את תמונת הפרופיל של %{target}" reopen_report_html: '%{name} פתח מחדש דו"ח %{target}' + resend_user_html: "%{name} הפעיל.ה שליחה מחדש של דואל אימות עבור %{target}" reset_password_user_html: הסיסמה עבור המשתמש %{target} התאפסה על־ידי %{name} resolve_report_html: '%{name} פתר/ה דו"ח %{target}' sensitive_account_html: "%{name} סימן/ה את המדיה של %{target} כרגיש" @@ -278,8 +286,10 @@ he: update_announcement_html: "%{name} עדכן/ה הכרזה %{target}" update_custom_emoji_html: "%{name} עדכן/ה אמוג'י %{target}" update_domain_block_html: "%{name} עדכן/ה חסימת דומיין עבור %{target}" - update_status_html: "%{name} עדכן/ה פוסט של %{target}" + update_ip_block_html: "%{name} שינה כלל עבור IP %{target}" + update_status_html: "%{name} עדכן/ה הודעה של %{target}" update_user_role_html: "%{name} שינה את התפקיד של %{target}" + deleted_account: חשבון מחוק empty: לא נמצאו יומנים. filter_by_action: סינון לפי פעולה filter_by_user: סינון לפי משתמש @@ -323,6 +333,7 @@ he: listed: ברשימה new: title: הוספת אמוג'י מיוחד חדש + no_emoji_selected: לא בוצעו שינויים ברגשונים שכן לא נבחרו כאלו not_permitted: אין לך הרשאות לביצוע פעולה זו overwrite: לדרוס shortcode: קוד קצר @@ -351,10 +362,10 @@ he: other: "%{count} דוחות ממתינים" two: "%{count} דוחות ממתינים" pending_tags_html: - many: "%{count} האשתגיות ממתינות" - one: "%{count} האשתג ממתין" - other: "%{count} האשתגיות ממתינות" - two: "%{count} האשתגיות ממתינות" + many: "%{count} תגיות ממתינות" + one: תגית %{count} ממתינה + other: "%{count} תגיות ממתינות" + two: "%{count} תגיות ממתינות" pending_users_html: many: "%{count} משתמשים ממתינים" one: "%{count} משתמש/ת ממתינ/ה" @@ -475,7 +486,7 @@ he: instance_languages_dimension: שפות מובילות instance_media_attachments_measure: קבצי מדיה מאופסנים instance_reports_measure: דו"חות אודותיהם - instance_statuses_measure: חצרוצים מאופסנים + instance_statuses_measure: הודעות מאופסנות delivery: all: הכל clear: ניקוי שגיאות משלוח @@ -536,11 +547,11 @@ he: relays: add_new: הוספת ממסר חדש delete: מחיקה - description_html: "ממסר פדרטיבי הוא שרת מתווך שמחליף כמויות גדולות של חצרוצים פומביים בין שרתים שרשומים ומפרסמים אליו. הוא יכול לעזור לשרתים קטנים ובינוניים לגלות תוכן מהפדרציה, מה שאחרת היה דורש ממשתמשים מקומיים לעקוב ידנית אחרי אנשים בשרתים מרוחקים." + description_html: "ממסר פדרטיבי הוא שרת מתווך שמחליף כמויות גדולות של הודעות פומביות בין שרתים שרשומים ומפרסמים אליו. הוא יכול לעזור לשרתים קטנים ובינוניים לגלות תוכן מהפדרציה, מה שאחרת היה דורש ממשתמשים מקומיים לעקוב ידנית אחרי אנשים בשרתים מרוחקים." disable: השבתה disabled: מושבת enable: לאפשר - enable_hint: מרגע שאופשר, השרת שלך יירשם לכל החצרוצים הפומביים מהממסר הזה, ויתחיל לשלוח את חצרוציו הפומביים לממסר. + enable_hint: מרגע שאופשר, השרת שלך יירשם לכל ההודעות הפומביות מהממסר הזה, ויתחיל לשלוח את הודעותיו הפומביות לממסר. enabled: מאופשר inbox_url: קישורית ממסר pending: ממתין לאישור הממסר @@ -563,8 +574,8 @@ he: action_log: ביקורת יומן action_taken_by: פעולה בוצעה ע"י actions: - delete_description_html: הפוסטים המדווחים יימחקו ותרשם עבירה על מנת להקל בהעלאה של דיווחים עתידיים על אותה חשבון. - mark_as_sensitive_description_html: המדיה בחצרוצים מדווחים תסומן כרגישה ועבירה תרשם כדי לעזור לך להסלים באינטראקציות עתידיות עם אותו החשבון. + delete_description_html: ההודעות המדווחות יימחקו ותרשם עבירה על מנת להקל בהעלאה של דיווחים עתידיים על אותו החשבון. + mark_as_sensitive_description_html: המדיה בהודעות מדווחות תסומן כרגישה ועבירה תרשם כדי לעזור לך להסלים באינטראקציות עתידיות עם אותו החשבון. other_description_html: ראו אפשרויות נוספות לשליטה בהתנהגות החשבון וכדי לבצע התאמות בתקשורת עם החשבון המדווח. resolve_description_html: אף פעולה לא תבוצע נגד החשבון עליו דווח, לא תירשם עבירה, והדיווח ייסגר. silence_description_html: הפרופיל יהיה גלוי אך ורק לאלה שכבר עוקבים אחריו או לאלה שיחפשו אותו ידנית, מה שיגביל מאד את תפוצתו. ניתן תמיד להחזיר את המצב לקדמותו. @@ -581,7 +592,7 @@ he: none: ללא comment_description_html: 'על מנת לספק עוד מידע, %{name} כתב\ה:' created_at: מדווח - delete_and_resolve: מחיקת חצרוצים + delete_and_resolve: מחיקת הודעות forwarded: קודם forwarded_to: קודם ל-%{domain} mark_as_resolved: סימון כפתור @@ -687,35 +698,73 @@ he: empty: שום כללי שרת לא הוגדרו עדיין. title: כללי שרת settings: + about: + manage_rules: ניהול כללי שרת + preamble: תיאור מעמיק על דרכי ניהול השרת, ניהול הדיונים, ומקורות המימון שלו. + rules_hint: קיים מקום ייעודי לחוקים שעל המשתמשים שלך לדבוק בהם. + title: אודות + appearance: + preamble: התאמה מיוחדת של מנשק המשתמש של מסטודון. + title: מראה + branding: + preamble: המיתוג של השרת שלך מבדל אותו משרתים אחרים ברשת. המידע יכול להיות מוצג בסביבות שונות כגון מנשק הווב של מסטודון, יישומים מרומיים, בצפיה מקדימה של קישור או בתוך יישומוני הודעות וכולי. מסיבה זו מומלץ לשמור על המידע ברור, קצר וממצה. + title: מיתוג + content_retention: + preamble: שליטה על דרך אחסון תוכן המשתמשים במסטודון. + title: תקופת השמירה של תכנים + discovery: + follow_recommendations: המלצות מעקב + preamble: הצפה של תוכן מעניין בקבלת פני משתמשות חדשות שאולי אינן מכירות עדיין א.נשים במסטודון. ניתן לשלוט איך אפשרויות גילוי שונות עובדות על השרת שלך. + profile_directory: מדריך פרופילים + public_timelines: פידים פומביים + title: איתור + trends: נושאים חמים domain_blocks: all: לכולם disabled: לאף אחד users: למשתמשים מקומיים מחוברים + registrations: + preamble: שליטה בהרשאות יצירת חשבון בשרת שלך. + title: הרשמות registrations_mode: modes: approved: נדרש אישור הרשמה none: אף אחד לא יכול להרשם open: כל אחד יכול להרשם + title: הגדרות שרת site_uploads: delete: מחיקת קובץ שהועלה destroyed_msg: העלאת אתר נמחקה בהצלחה! statuses: + account: מחבר + application: יישום back_to_account: חזרה לדף החשבון back_to_report: חזרה לעמוד הדיווח batch: remove_from_report: הסרה מהדיווח report: דווח deleted: מחוקים + favourites: חיבובים + history: היסטורית גרסאות + in_reply_to: השיבו ל־ + language: שפה media: title: מדיה - no_status_selected: לא בוצעו שינויים בחצרוצים שכן לא נבחרו חצרוצים - title: חצרוצי חשבון + metadata: נתוני-מטא + no_status_selected: לא בוצעו שינויים בהודעות שכן לא נבחרו כאלו + open: פתח הודעה + original_status: הודעה מקורית + reblogs: שיתופים + status_changed: הודעה שונתה + title: הודעות החשבון + trending: נושאים חמים + visibility: נראות with_media: עם מדיה strikes: actions: - delete_statuses: "%{name} מחק/ה את חצרוציו של %{target}" + delete_statuses: "%{name} מחק/ה את הודעותיו של %{target}" disable: "%{name} הקפיא/ה את חשבונו של %{target}" - mark_statuses_as_sensitive: "%{name} סימנה את חצרוציו של %{target} כרגישים" + mark_statuses_as_sensitive: "%{name} סימנ/ה את הודעותיו של %{target} כרגישים" none: "%{name} שלח/ה אזהרה ל-%{target}" sensitive: "%{name} סימן/ה את חשבונו של %{target} כרגיש" silence: "%{name} הגביל/ה את חשבונו/ה של %{target}" @@ -737,7 +786,7 @@ he: message_html: שום הליכי Sidekiq לא רצים עבור %{value} תור(ות). בחנו בבקשה את הגדרות Sidekiq tags: review: סקירת מצב - updated_msg: הגדרות האשתג עודכנו בהצלחה + updated_msg: הגדרות תגיות עודכנו בהצלחה title: ניהול trends: allow: לאפשר @@ -746,9 +795,12 @@ he: links: allow: אישור קישורית allow_provider: אישור מפרסם - description_html: בקישוריות אלה נעשה כרגע שימוש על ידי חשבונות רבים שהשרת שלך רואה חצרוצים מהם. זה עשוי לסייע למשתמשיך לברר מה קורה בעולם. שום קישוריות לא יוצגו עד שתאשרו את המפרסם. ניתן גם לאפשר או לדחות קישוריות ספציפיות. + description_html: בקישוריות אלה נעשה כרגע שימוש על ידי חשבונות רבים שהשרת שלך רואה הודעות מהם. זה עשוי לסייע למשתמשיך לברר מה קורה בעולם. שום קישוריות לא יוצגו עד שתאשרו את המפרסם. ניתן גם לאפשר או לדחות קישוריות ספציפיות. disallow: לא לאשר קישורית disallow_provider: לא לאשר מפרסם + no_link_selected: לא בוצעו שינויים בקישורים שכן לא נבחרו כאלו + publishers: + no_publisher_selected: לא בוצעו שינויים במפרסמים שכן לא נבחרו כאלו shared_by_over_week: many: הופץ על ידי %{count} אנשים בשבוע האחרון one: הופץ על ידי אדם אחד בשבוע האחרון @@ -765,18 +817,19 @@ he: title: מפרסמים rejected: דחוי statuses: - allow: הרשאת פוסט + allow: הרשאת הודעה allow_account: הרשאת מחבר/ת - description_html: אלו הם חצרוצים שהשרת שלך מכיר וזוכים להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. החצרוצים לא מוצגים עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות חצרוצים ספציפיים. - disallow: לדחות פוסט + description_html: אלו הן הודעות שהשרת שלך מכיר וזוכות להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. ההודעות לא מוצגות עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות הודעות ספציפיות. + disallow: לדחות הודעה disallow_account: לא לאשר מחבר/ת + no_status_selected: לא בוצעו שינויים בהודעות חמות שכן לא נבחרו כאלו not_discoverable: המחבר/ת לא בחר/ה לאפשר את גילויים shared_by: many: הודהד וחובב %{friendly_count} פעמים one: הודהד או חובב פעם אחת other: הודהד וחובב %{friendly_count} פעמים two: הודהד וחובב %{friendly_count} פעמים - title: חצרוצים חמים + title: הודעות חמות tags: current_score: ציון נוכחי %{score} dashboard: @@ -785,13 +838,14 @@ he: tag_servers_dimension: שרתים מובילים tag_servers_measure: שרתים שונים tag_uses_measure: כלל השימושים - description_html: אלו הן האשתגיות שמופיעות הרבה כרגע בחצרוצים המגיעים לשרת. זה עשוי לעזור למשתמשיך למצוא על מה אנשים מרבים לדבר כרגע. שום האשתגיות לא יוצגו בפומבי עד שתאושרנה. + description_html: אלו הן התגיות שמופיעות הרבה כרגע בהודעות המגיעות לשרת. זה עשוי לעזור למשתמשיך למצוא על מה אנשים מרבים לדבר כרגע. שום תגיות לא יוצגו בפומבי עד שתאושרנה. listable: ניתנות להצעה + no_tag_selected: לא בוצעו שינויים בתגיות שכן לא נבחרו כאלו not_listable: לא תוצענה not_trendable: לא תופענה תחת נושאים חמים not_usable: לא שמישות peaked_on_and_decaying: הגיע לשיא ב-%{date}, ודועך עכשיו - title: האשתגיות חמות + title: תגיות חמות trendable: עשויה להופיע תחת נושאים חמים trending_rank: 'מדורגת #%{rank}' usable: ניתנת לשימוש @@ -812,6 +866,7 @@ he: webhooks: add_new: הוספת נקודת קצה delete: מחיקה + description_html: כלי webhook מאפשר למסטודון לשגר התראות זמן-אמת לגבי אירועים נבחרים ליישומון שלך כדי שהוא יוכל להגיב אוטומטית. disable: כיבוי disabled: כבוי edit: עריכת נקודת קצה @@ -833,9 +888,9 @@ he: admin_mailer: new_appeal: actions: - delete_statuses: כדי למחוק את חצרוציהם + delete_statuses: כדי למחוק את הודעותיהם disable: כדי להקפיא את חשבונם - mark_statuses_as_sensitive: כדי לסמן את חצרוציהם כרגישים + mark_statuses_as_sensitive: כדי לסמן את הודעותיהם כרגישות none: אזהרה sensitive: כדי לסמן את חשבונם כרגיש silence: כדי להגביל את חשבונם @@ -855,11 +910,11 @@ he: new_trending_links: title: נושאים חמים new_trending_statuses: - title: חצרוצים לוהטים + title: הודעות חמות new_trending_tags: - no_approved_tags: אין כרגע שום האשתגיות חמות מאושרות. - requirements: כל אחת מהמועמדות האלה עשויה לעבור את ההאשתגית החמה המאושרת מדרגה %{rank}, שהיא כרגע %{lowest_tag_name} עם ציון של %{lowest_tag_score}. - title: האשתגיות חמות + no_approved_tags: אין כרגע שום תגיות חמות מאושרות. + requirements: כל אחת מהמועמדות האלו עשויה לעבור את התגית החמה המאושרת מדרגה %{rank}, שהיא כרגע %{lowest_tag_name} עם ציון של %{lowest_tag_score}. + title: תגיות חמות subject: נושאים חמים חדשים מוכנים לסקירה ב-%{instance} aliases: add_new: יצירת שם נרדף @@ -870,7 +925,7 @@ he: remove: הסרת שם נרדף appearance: advanced_web_interface: ממשק ווב מתקדם - advanced_web_interface_hint: 'אם ברצונך לעשות שימוש במלוא רוחב המסך, ממשק הווב המתקדם מאפשר לך להגדיר עמודות רבות ושונות כדי לראות בו זמנית כמה מידע שתרצה/י: פיד הבית, התראות, פרהסיה ומספר כלשהו של רשימות והאשתגיות.' + advanced_web_interface_hint: 'אם ברצונך לעשות שימוש במלוא רוחב המסך, ממשק הווב המתקדם מאפשר לך להגדיר עמודות רבות ושונות כדי לראות בו זמנית כמה מידע שתרצה/י: פיד הבית, התראות, פרהסיה ומספר כלשהו של רשימות ותגיות.' animations_and_accessibility: הנפשות ונגישות confirmation_dialogs: חלונות אישור discovery: גילוי @@ -879,14 +934,14 @@ he: guide_link: https://crowdin.com/project/mastodon guide_link_text: כולם יכולים לתרום. sensitive_content: תוכן רגיש - toot_layout: פריסת פוסט + toot_layout: פריסת הודעה application_mailer: notification_preferences: שינוי העדפות דוא"ל salutation: "%{name}," settings: 'שינוי הגדרות דוא"ל: %{link}' view: 'תצוגה:' view_profile: צפיה בפרופיל - view_status: הצגת פוסט + view_status: הצגת הודעה applications: created: ישום נוצר בהצלחה destroyed: ישום נמחק בהצלחה @@ -895,6 +950,7 @@ he: warning: זהירות רבה נדרשת עם מידע זה. אין לחלוק אותו אף פעם עם אף אחד! your_token: אסימון הגישה שלך auth: + apply_for_account: להכנס לרשימת המתנה change_password: סיסמה delete_account: מחיקת חשבון delete_account_html: אם ברצונך למחוק את החשבון, ניתן להמשיך כאן. תתבקש/י לספק אישור נוסף. @@ -914,6 +970,7 @@ he: migrate_account: מעבר לחשבון אחר migrate_account_html: אם ברצונך להכווין את החשבון לעבר חשבון אחר, ניתן להגדיר זאת כאן. or_log_in_with: או התחבר באמצעות + privacy_policy_agreement_html: קארתי והסכמתי למדיניות הפרטיות providers: cas: CAS saml: SAML @@ -921,12 +978,18 @@ he: registration_closed: "%{instance} לא מקבל חברים חדשים" resend_confirmation: שלח הוראות אימות בשנית reset_password: איפוס סיסמה + rules: + preamble: אלו נקבעים ונאכפים ע"י המנחים של %{domain}. + title: כמה חוקים בסיסיים. security: אבטחה set_new_password: סיסמה חדשה setup: email_below_hint_html: אם כתובת הדוא"ל להלן לא נכונה, ניתן לשנותה כאן ולקבל דוא"ל אישור חדש. email_settings_hint_html: דוא"ל האישור נשלח ל-%{email}. אם כתובת הדוא"ל הזו לא נכונה, ניתן לשנותה בהגדרות החשבון. title: הגדרות + sign_up: + preamble: כיוון שמסטודון מבוזרת, תוכל/י להשתמש בחשבון שלך משרתי מסטודון או רשתות תואמות אחרות אם אין לך חשבון על שרת זה. + title: הבא נקים לך את השרת בכתובת %{domain}. status: account_status: מצב חשבון confirming: ממתין שדוא"ל האישור יושלם. @@ -984,7 +1047,7 @@ he: warning: before: 'לפני שנמשיך, נא לקרוא בזהירות את ההערות הבאות:' caches: מידע שהוטמן על ידי שרתים אחרים עשוי להתמיד - data_removal: חצרוציך וכל מידע אחר יוסרו לתמיד + data_removal: הודעותיך וכל מידע אחר יוסרו לתמיד email_change_html: ניתן לשנות את כתובת הדוא"ל שלך מבלי למחוק את החשבון email_contact_html: אם הוא עדיין לא הגיע, ניתן לקבל עזרה על ידי משלוח דואל ל-%{email} email_reconfirmation_html: אם לא מתקבל דוא"ל האישור, ניתן לבקש אותו שוב @@ -1008,13 +1071,13 @@ he: description_html: אלו הן הפעולות שננקטו כנגד חשבונך והאזהרות שנשלחו אליך על ידי צוות %{instance}. recipient: הנמען reject_appeal: דחיית ערעור - status: 'פוסט #%{id}' - status_removed: הפוסט כבר הוסר מהמערכת + status: 'הודעה #%{id}' + status_removed: ההודעה כבר הוסרה מהמערכת title: "%{action} מתאריך %{date}" title_actions: - delete_statuses: הסרת פוסט + delete_statuses: הסרת הודעה disable: הקפאת חשבון - mark_statuses_as_sensitive: סימון חצרוצים כרגישים + mark_statuses_as_sensitive: סימון הודעות כרגישות none: אזהרה sensitive: סימו חשבון כרגיש silence: הגבלת חשבון @@ -1046,7 +1109,7 @@ he: archive_takeout: date: תאריך download: הורדת הארכיון שלך - hint_html: ניתן לבקש ארכיון של חצרוציך וקבצי המדיה שלך. המידע המיוצא יהיה בפורמט אקטיביטיפאב, שיכול להיקרא על ידי כל תוכנה התומכת בו. ניתן לבקש ארכיון מדי 7 ימים. + hint_html: ניתן לבקש ארכיון של הודעותיך וקבצי המדיה שלך. המידע המיוצא יהיה בפורמט אקטיביטיפאב, שיכול להיקרא על ידי כל תוכנה התומכת בו. ניתן לבקש ארכיון מדי 7 ימים. in_progress: מייצר את הארכיון שלך... request: לבקש את הארכיון שלך size: גודל @@ -1060,8 +1123,8 @@ he: featured_tags: add_new: הוספת חדש errors: - limit: המספר המירבי של האשתגיות כבר מוצג - hint_html: "מהן האשתגיות נבחרות? הן מוצגות במובלט בפרופיל הפומבי שלך ומאפשר לאנשים לעיין בחצרוציך הפומביים המסמונים בהאשתגיות אלה. הן כלי אדיר למעקב אחר עבודות יצירה ופרוייקטים לטווח ארוך." + limit: המספר המירבי של התגיות כבר מוצג + hint_html: "מהן תגיות נבחרות? הן מוצגות במובלט בפרופיל הפומבי שלך ומאפשר לאנשים לעיין בהודעות הפומביות שלך המסומנות בתגיות אלה. הן כלי אדיר למעקב אחר עבודות יצירה ופרוייקטים לטווח ארוך." filters: contexts: account: פרופילים @@ -1072,7 +1135,8 @@ he: edit: add_keyword: הוספת מילת מפתח keywords: מילות מפתח - statuses: פוסטים יחידים + statuses: הודעות מסויימות + statuses_hint_html: הסנן פועל על בחירה ידנית של הודעות בין אם הן מתאימות למילות המפתח להלן ואם לאו. posts regardless of whether they match the keywords below. בחינה או הסרה של ההודעות מהסנן. title: ערוך מסנן errors: deprecated_api_multiple_keywords: לא ניתן לשנות פרמטרים אלו מהיישומון הזה בגלל שהם חלים על יותר ממילת מפתח אחת. ניתן להשתמש ביישומון מעודכן יותר או בממשק הוובי. @@ -1088,6 +1152,16 @@ he: one: מילת מפתח %{count} other: "%{count} מילות מפתח" two: "%{count} מילות מפתח" + statuses: + many: "%{count} הודעות" + one: הודעה %{count} + other: "%{count} הודעות" + two: "%{count} הודעותיים" + statuses_long: + many: "%{count} הודעות הוסתרו" + one: הודעה %{count} יחידה הוסתרה + other: "%{count} הודעות הוסתרו" + two: הודעותיים %{count} הוסתרו title: מסננים new: save: שמירת מסנן חדש @@ -1097,8 +1171,8 @@ he: batch: remove: הסרה מפילטר index: - hint: פילטר זה חל באופן של בחירת פוסטים בודדים ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד פוסטים לפילטר זה ממשק הווב. - title: פוסטים שסוננו + hint: סנן זה חל באופן של בחירת הודעות בודדות ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד הודעות לסנן זה ממנשק הווב. + title: הודעות שסוננו footer: trending_now: נושאים חמים generic: @@ -1175,7 +1249,7 @@ he: title: הסטוריית אימותים media_attachments: validations: - images_and_video: לא ניתן להוסיף וידאו לפוסט שכבר מכיל תמונות + images_and_video: לא ניתן להוסיף וידאו להודעה שכבר מכילה תמונות not_ready: לא ניתן להצמיד קבצים שהעלאתם לא הסתיימה. נסה/י שוב בעוד רגע! too_many: לא ניתן להוסיף יותר מארבעה קבצים migrations: @@ -1215,6 +1289,8 @@ he: carry_blocks_over_text: חשבון זה עבר מ-%{acct}, אותו חסמת בעבר. carry_mutes_over_text: חשבון זה עבר מ-%{acct}, אותו השתקת בעבר. copy_account_note_text: 'חשבון זה הועבר מ-%{acct}, הנה הערותיך הקודמות לגביהם:' + navigation: + toggle_menu: הצגת\הסתרת תפריט notification_mailer: admin: report: @@ -1222,8 +1298,8 @@ he: sign_up: subject: "%{name} נרשמו" favourite: - body: 'חצרוצך חובב על ידי %{name}:' - subject: חצרוצך חובב על ידי %{name} + body: 'הודעתך חובבה על ידי %{name}:' + subject: הודעתך חובבה על ידי %{name} title: חיבוב חדש follow: body: "%{name} עכשיו במעקב אחריך!" @@ -1242,13 +1318,13 @@ he: poll: subject: סקר מאת %{name} הסתיים reblog: - body: 'חצרוצך הודהד על ידי %{name}:' - subject: חצרוצך הודהד על ידי%{name} + body: 'הודעתך הודהדה על ידי %{name}:' + subject: הודעתך הודהדה על ידי%{name} title: הדהוד חדש status: - subject: "%{name} בדיוק חצרץ" + subject: "%{name} בדיוק פרסם" update: - subject: "%{name} ערכו פוסט" + subject: "%{name} ערכו הודעה" notifications: email_events: ארועים להתראות דוא"ל email_events_hint: 'בחר/י ארועים עבורים תרצה/י לקבל התראות:' @@ -1290,8 +1366,10 @@ he: too_many_options: לא יכול להכיל יותר מ-%{max} פריטים preferences: other: שונות - posting_defaults: ברירות מחדל לפוסטים + posting_defaults: ברירות מחדל להודעות public_timelines: פידים פומביים + privacy_policy: + title: מדיניות פרטיות reactions: errors: limit_reached: גבול מספר התגובות השונות הושג @@ -1321,11 +1399,11 @@ he: rss: content_warning: 'אזהרת תוכן:' descriptions: - account: פוסטים ציבוריים מחשבון @%{acct} - tag: 'פוסטים ציבוריים עם תיוג #%{hashtag}' + account: הודעות ציבוריות מחשבון @%{acct} + tag: 'הודעות ציבוריות עם תיוג #%{hashtag}' scheduled_statuses: - over_daily_limit: חרגת מהמספר המקסימלי של חצרוצים מתוזמנים להיום, שהוא %{limit} - over_total_limit: חרגת מהמספר המקסימלי של חצרוצים מתוזמנים, שהוא %{limit} + over_daily_limit: חרגת מהמספר המקסימלי של הודעות מתוזמנות להיום, שהוא %{limit} + over_total_limit: חרגת מהמספר המקסימלי של הודעות מתוזמנות, שהוא %{limit} too_soon: תאריך התזמון חייב להיות בעתיד sessions: activity: פעילות אחרונה @@ -1380,7 +1458,7 @@ he: development: פיתוח edit_profile: עריכת פרופיל export: יצוא מידע - featured_tags: האשתגיות נבחרות + featured_tags: תגיות נבחרות import: יבוא import_and_export: יבוא ויצוא migrate: הגירת חשבון @@ -1388,7 +1466,7 @@ he: preferences: העדפות profile: פרופיל relationships: נעקבים ועוקבים - statuses_cleanup: מחיקת חצרוצים אוטומטית + statuses_cleanup: מחיקת הודעות אוטומטית strikes: עבירות מנהלתיות two_factor_authentication: אימות דו-שלבי webauthn_authentication: מפתחות אבטחה @@ -1404,7 +1482,7 @@ he: many: "%{count} תמונות" one: תמונה %{count} other: "%{count} תמונות" - two: "%{count} תמונות" + two: "%{count} תמונותיים" video: many: "%{count} סרטונים" one: סרטון %{count} @@ -1414,19 +1492,19 @@ he: content_warning: 'אזהרת תוכן: %{warning}' default_language: זהה לשפת ממשק disallowed_hashtags: - many: 'מכיל את ההאשתגיות האסורות: %{tags}' - one: 'מכיל את ההאשתג האסור: %{tags}' - other: 'מכיל את ההאשתגיות האסורות: %{tags}' - two: 'מכיל את ההאשתגיות האסורות: %{tags}' + many: 'מכיל את התגיות האסורות: %{tags}' + one: 'מכיל את התגית האסורה: %{tags}' + other: 'מכיל את התגיות האסורות: %{tags}' + two: 'מכיל את התגיות האסורות: %{tags}' edited_at_html: נערך ב-%{date} errors: - in_reply_not_found: נראה שהפוסט שאת/ה מנסה להגיב לו לא קיים. + in_reply_not_found: נראה שההודעה שאת/ה מנסה להגיב לה לא קיימת. open_in_web: פתח ברשת over_character_limit: חריגה מגבול התווים של %{max} pin_errors: - direct: לא ניתן לקבע חצרוצים שנראותם מוגבלת למכותבים בלבד - limit: הגעת למספר החצרוצים המוצמדים המירבי. - ownership: חצרוצים של אחרים לא יכולים להיות מוצמדים + direct: לא ניתן לקבע הודעות שנראותן מוגבלת למכותבים בלבד + limit: הגעת למספר המירבי של ההודעות המוצמדות + ownership: הודעות של אחרים לא יכולות להיות מוצמדות reblog: אין אפשרות להצמיד הדהודים poll: total_people: @@ -1455,26 +1533,26 @@ he: unlisted: מוסתר unlisted_long: פומבי, אבל לא להצגה בפיד הציבורי statuses_cleanup: - enabled: מחק חצרוצים ישנים אוטומטית - enabled_hint: מוחק אוטומטית את חצרוציך לכשהגיעו לסף גיל שנקבע מראש, אלא אם הם תואמים את אחת ההחרגות למטה + enabled: מחק הודעות ישנות אוטומטית + enabled_hint: מוחק אוטומטית את הודעותיך לכשהגיעו לסף גיל שנקבע מראש, אלא אם הן תואמות את אחת ההחרגות למטה exceptions: החרגות - explanation: היות ומחיקת חצרוצים היא פעולה יקרה במשאבים, היא נעשית לאט לאורך זמן כאשר השרת לא עסוק במשימות אחרות. לכן, ייתכן שהחצרוצים שלך ימחקו מעט אחרי שיגיעו לסף הגיל שהוגדר. + explanation: היות ומחיקת הודעות היא פעולה יקרה במשאבים, היא נעשית לאט לאורך זמן כאשר השרת לא עסוק במשימות אחרות. לכן, ייתכן שההודעות שלך ימחקו מעט אחרי שיגיעו לסף הגיל שהוגדר. ignore_favs: התעלם ממחובבים ignore_reblogs: התעלם מהדהודים interaction_exceptions: החרגות מבוססות אינטראקציות - interaction_exceptions_explanation: שים.י לב שאין עֲרֻבָּה למחיקת חצרוצים אם הם יורדים מתחת לסף החיבובים או ההדהודים לאחר הסריקה הראשונית. + interaction_exceptions_explanation: שים.י לב שאין עֲרֻבָּה למחיקת הודעות אם הן יורדות מתחת לסף החיבובים או ההדהודים לאחר הסריקה הראשונית. keep_direct: שמירת הודעות ישירות keep_direct_hint: לא מוחק אך אחת מההודעות הישירות שלך - keep_media: שמור חצרוצים עם מדיה - keep_media_hint: לא מוחק את חצרוציך שמצורפים אליהם קבצי מדיה - keep_pinned: שמור חצרוצים מוצמדים - keep_pinned_hint: לא מוחק אף אחד מהחצרוצים המוצמדים שלך + keep_media: שמור הודעות עם מדיה + keep_media_hint: לא מוחק את הודעותיך שמצורפים אליהן קבצי מדיה + keep_pinned: שמור הודעות מוצמדות + keep_pinned_hint: לא מוחק אף אחד מההודעות המוצמדות שלך keep_polls: שמור סקרים keep_polls_hint: לא מוחר אף אחד מהסקרים שלך - keep_self_bookmark: שמור חצרוצים שסימנת - keep_self_bookmark_hint: לא מוחק חצרוצים שסימנת - keep_self_fav: שמור חצרומים שחיבבת - keep_self_fav_hint: לא מוחק חצרוצים שלך אם חיבבת אותם + keep_self_bookmark: שמור הודעות שסימנת + keep_self_bookmark_hint: לא מוחק הודעות שסימנת + keep_self_fav: שמור הודעות שחיבבת + keep_self_fav_hint: לא מוחק הודעות שלך אם חיבבת אותם min_age: '1209600': שבועיים '15778476': חצי שנה @@ -1485,12 +1563,12 @@ he: '63113904': שנתיים '7889238': 3 חודשים min_age_label: סף גיל - min_favs: השאר חצרוצים מחובבים לפחות - min_favs_hint: לא מוחק מי מחצרוציך שקיבלו לפחות את המספר הזה של חיבובים. להשאיר ריק כדי למחוק חצרוצים ללא קשר למספר החיבובים שקיבלו - min_reblogs: שמור חצרוצים מהודהדים לפחות - min_reblogs_hint: לא מוחק מי מחצרוציך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק חצרוצים ללא קשר למספר ההדהודים שקיבלו + min_favs: השאר הודעות מחובבות לפחות + min_favs_hint: לא מוחק מי מהודעותיך שקיבלו לפחות את המספר הזה של חיבובים. להשאיר ריק כדי למחוק הודעות ללא קשר למספר החיבובים שקיבלו + min_reblogs: שמור הודעות מהודהדות לפחות + min_reblogs_hint: לא מוחק מי מהודעותיך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק הודעות ללא קשר למספר ההדהודים שקיבלו stream_entries: - pinned: פוסט נעוץ + pinned: הודעה נעוצה reblogged: הודהד sensitive_content: תוכן רגיש strikes: @@ -1550,34 +1628,36 @@ he: spam: ספאם violation: התוכן מפר את כללי הקהילה הבאים explanation: - delete_statuses: כמה מחצרוציך מפרים אחד או יותר מכללי הקהילה וכתוצאה הוסרו על ידי מנחי הקהילה של %{instance}. + delete_statuses: כמה מהודעותיך מפרות אחד או יותר מכללי הקהילה וכתוצאה הוסרו על ידי מנחי הקהילה של %{instance}. disable: אינך יכול/ה יותר להשתמש בחשבונך, אבל הפרופיל ושאר המידע נשארו על עומדם. ניתן לבקש גיבוי של המידע, לשנות את הגדרות החשבון או למחוק אותו. - mark_statuses_as_sensitive: כמה מחצרוציך סומנו כרגישים על ידי מנחי הקהילה של %{instance}. זה אומר שאנשים יצטרכו להקיש על המדיה בחצרוצים לפני שתופיע תצוגה מקדימה. ניתן לסמן את המידע כרגיש בעצמך בחצרוציך העתידיים. + mark_statuses_as_sensitive: כמה מהודעותיך סומנו כרגישות על ידי מנחי הקהילה של %{instance}. זה אומר שאנשים יצטרכו להקיש על המדיה בהודעות לפני שתופיע תצוגה מקדימה. ניתן לסמן את המידע כרגיש בעצמך בהודעותיך העתידיות. sensitive: מעתה ואילך כל קבצי המדיה שיועלו על ידך יסומנו כרגישים ויוסתרו מאחורי אזהרה. - silence: ניתן עדיין להשתמש בחשבונך אבל רק אנשים שכבר עוקבים אחריך יראו את חצרוציך בשרת זה, וייתכן שתוחרג/י מאמצעי גילוי משתמשים. עם זאת, אחרים יוכלו עדיין לעקוב אחריך. + silence: ניתן עדיין להשתמש בחשבונך אבל רק אנשים שכבר עוקבים אחריך יראו את הודעותיך בשרת זה, וייתכן שתוחרג/י מאמצעי גילוי משתמשים. עם זאת, אחרים יוכלו עדיין לעקוב אחריך. suspend: לא ניתן יותר להשתמש בחשבונך, ופרופילך וכל מידע אחר לא נגישים יותר. ניתן עדיין להתחבר על מנת לבקש גיבוי של המידע שלך עד שיוסר סופית בעוד כ-30 יום, אבל מידע מסויים ישמר על מנת לוודא שלא תחמוק/י מההשעיה. reason: 'סיבה:' - statuses: 'חצרוצים מצוטטים:' + statuses: 'הודעות מצוטטות:' subject: - delete_statuses: הפוסטים שלכם ב%{acct} הוסרו + delete_statuses: ההודעות שלכם ב%{acct} הוסרו disable: חשבונך %{acct} הוקפא - mark_statuses_as_sensitive: חצרוציך ב-%{acct} סומנו כרגישים + mark_statuses_as_sensitive: הודעותיך ב-%{acct} סומנו כרגישות none: אזהרה עבור %{acct} - sensitive: חצרוציך ב-%{acct} יסומנו כרגישים מעתה ואילך + sensitive: הודעותיך ב-%{acct} יסומנו כרגישות מעתה ואילך silence: חשבונך %{acct} הוגבל suspend: חשבונך %{acct} הושעה title: - delete_statuses: פוסטים שהוסרו + delete_statuses: הודעות הוסרו disable: חשבון קפוא - mark_statuses_as_sensitive: חצרוצים סומנו כרגישים + mark_statuses_as_sensitive: הודעות סומנו כרגישות none: אזהרה sensitive: החשבון סומן כרגיש silence: חשבון מוגבל suspend: חשבון מושעה welcome: edit_profile_action: הגדרת פרופיל + edit_profile_step: תוכל.י להתאים אישית את הפרופיל באמצעות העלאת יצגן (אוואטר), כותרת, שינוי כינוי ועוד. אם תרצה.י לסקור את עוקביך/ייך החדשים לפני שתרשה.י להם לעקוב אחריך/ייך. explanation: הנה כמה טיפים לעזור לך להתחיל - final_action: התחל/ילי לחצרץ + final_action: התחל/ילי לפרסם הודעות + final_step: 'התחל/ילי לפרסם הודעות! אפילו ללא עוקבים ייתכן שההודעות הפומביות שלך יראו ע"י אחרים, למשל בציר הזמן המקומי או בתגיות הקבצה (האשתגים). כדאי להציג את עצמך תחת התגית #introductions או #היכרות.' full_handle: שם המשתמש המלא שלך full_handle_hint: זה מה שתאמר.י לחברייך כדי שיוכלו לשלוח לך הודעה או לעקוב אחרייך ממופע אחר. subject: ברוכים הבאים למסטודון diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 9de79cd4e6..e6ba07305c 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1534,7 +1534,7 @@ ja: subject: アーカイブの準備ができました title: アーカイブの取り出し suspicious_sign_in: - change_password: パスワードを変更する + change_password: パスワードを変更 details: 'ログインの詳細は以下のとおりです:' explanation: 新しいIPアドレスからあなたのアカウントへのサインインが検出されました。 further_actions_html: あなたがログインしていない場合は、すぐに%{action}し、アカウントを安全に保つために二要素認証を有効にすることをお勧めします。 diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 2712fd48be..ddebd9e5dc 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -906,7 +906,7 @@ lv: hint_html: Ja vēlies pāriet no cita konta uz šo, šeit vari izveidot aizstājvārdu, kas ir nepieciešams, lai varētu turpināt sekotāju pārvietošanu no vecā konta uz šo. Šī darbība pati par sevi ir nekaitīga un atgriezeniska. Konta migrācija tiek sākta no vecā konta. remove: Atsaistīt aizstājvārdu appearance: - advanced_web_interface: Paplašinātais web interfeiss + advanced_web_interface: Paplašinātā tīmekļa saskarne advanced_web_interface_hint: 'Ja vēlies izmantot visu ekrāna platumu, uzlabotā tīmekļa saskarne ļauj konfigurēt daudzas dažādas kolonnas, lai vienlaikus redzētu tik daudz informācijas, cik vēlies: Sākums, paziņojumi, federētā ziņu lenta, neierobežots skaits sarakstu un tēmturu.' animations_and_accessibility: Animācijas un pieejamība confirmation_dialogs: Apstiprināšanas dialogi @@ -1095,12 +1095,12 @@ lv: in_progress: Notiek tava arhīva apkopošana... request: Pieprasi savu arhīvu size: Izmērs - blocks: Tu bloķē + blocks: Bloķētie konti bookmarks: Grāmatzīmes csv: CSV domain_blocks: Bloķētie domēni lists: Saraksti - mutes: Tu apklusini + mutes: Apklusinātie konti storage: Mediju krātuve featured_tags: add_new: Pievienot jaunu @@ -1186,7 +1186,7 @@ lv: errors: over_rows_processing_limit: satur vairāk, nekā %{count} rindas modes: - merge: Savienot + merge: Apvienot merge_long: Saglabāt esošos ierakstus un pievienot jaunus overwrite: Pārrakstīt overwrite_long: Nomainīt pašreizējos ierakstus ar jauniem @@ -1195,9 +1195,9 @@ lv: types: blocking: Bloķēšanas saraksts bookmarks: Grāmatzīmes - domain_blocking: Domēnu bloķēšanas saraksts - following: Šāds saraksts - muting: Izslēgšanas saraksts + domain_blocking: Bloķēto domēnu saraksts + following: Sekojamo lietotāju saraksts + muting: Apklusināto lietotāju saraksts upload: Augšupielādēt invites: delete: Deaktivizēt @@ -1454,7 +1454,7 @@ lv: notifications: Paziņojumi preferences: Iestatījumi profile: Profils - relationships: Man seko un sekotāji + relationships: Sekojamie un sekotāji statuses_cleanup: Automātiska ziņu dzēšana strikes: Moderācijas aizrādījumi two_factor_authentication: Divfaktoru Aut @@ -1476,7 +1476,7 @@ lv: zero: "%{count} video" boosted_from_html: Paaugstināja %{acct_link} content_warning: 'Satura brīdinājums: %{warning}' - default_language: Tāda, kā interfeisa valoda + default_language: Tāda, kā saskarnes valoda disallowed_hashtags: one: 'saturēja neatļautu tēmturi: %{tags}' other: 'saturēja neatļautus tēmturus: %{tags}' @@ -1641,7 +1641,7 @@ lv: explanation: Šeit ir daži padomi, kā sākt darbu final_action: Sāc publicēt final_step: 'Sāc publicēt! Pat bez sekotājiem tavas publiskās ziņas var redzēt citi, piemēram, vietējā ziņu lentā vai atsaucēs. Iespējams, tu vēlēsies iepazīstināt ar sevi, izmantojot tēmturi #introductions.' - full_handle: Tavs pilnais rokturis + full_handle: Tavs pilnais lietotājvārds full_handle_hint: Šis ir tas, ko tu pasaki saviem draugiem, lai viņi varētu tev ziņot vai sekot tev no cita servera. subject: Laipni lūgts Mastodon title: Laipni lūgts uz borta, %{name}! diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 59c530fb9f..88b224c3e9 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -35,7 +35,7 @@ nl: approve: Goedkeuren approved_msg: Het goedkeuren van het account van %{username} is geslaagd are_you_sure: Weet je het zeker? - avatar: Avatar + avatar: Profielfoto by_domain: Domein change_email: changed_msg: E-mailadres succesvol veranderd! @@ -116,9 +116,9 @@ nl: redownloaded_msg: Het herstellen van het oorspronkelijke profiel van %{username} is geslaagd reject: Afwijzen rejected_msg: Het afwijzen van het registratieverzoek van %{username} is geslaagd - remove_avatar: Avatar verwijderen + remove_avatar: Profielfoto verwijderen remove_header: Omslagfoto verwijderen - removed_avatar_msg: Het verwijderen van de avatar van %{username} is geslaagd + removed_avatar_msg: Het verwijderen van de profielfoto van %{username} is geslaagd removed_header_msg: Het verwijderen van de omslagfoto van %{username} is geslaagd resend_confirmation: already_confirmed: Deze gebruiker is al bevestigd @@ -205,7 +205,7 @@ nl: promote_user: Gebruiker promoveren reject_appeal: Bezwaar afwijzen reject_user: Gebruiker afwijzen - remove_avatar_user: Avatar verwijderen + remove_avatar_user: Profielfoto verwijderen reopen_report: Rapportage heropenen resend_user: Bevestigingsmail opnieuw verzenden reset_password_user: Wachtwoord opnieuw instellen @@ -264,7 +264,7 @@ nl: promote_user_html: Gebruiker %{target} is door %{name} gepromoveerd reject_appeal_html: "%{name} heeft het bezwaar tegen de moderatiemaatregel van %{target} afgewezen" reject_user_html: "%{name} heeft de registratie van %{target} afgewezen" - remove_avatar_user_html: "%{name} verwijderde de avatar van %{target}" + remove_avatar_user_html: "%{name} verwijderde de profielfoto van %{target}" reopen_report_html: "%{name} heeft rapportage %{target} heropend" resend_user_html: "%{name} heeft de bevestigingsmail voor %{target} opnieuw verzonden" reset_password_user_html: Wachtwoord van gebruiker %{target} is door %{name} opnieuw ingesteld @@ -686,6 +686,7 @@ nl: title: Bewaartermijn berichten discovery: follow_recommendations: Aanbevolen accounts + preamble: Het tonen van interessante inhoud is van essentieel belang voor het aan boord halen van nieuwe gebruikers, die mogelijk niemand van Mastodon kennen. Bepaal hoe verschillende functies voor het ontdekken van gebruikers op jouw server werken. profile_directory: Gebruikersgids public_timelines: Openbare tijdlijnen title: Ontdekken @@ -788,6 +789,7 @@ nl: statuses: allow: Bericht goedkeuren allow_account: Account goedkeuren + description_html: Dit zijn berichten die op jouw server bekend zijn en die momenteel veel worden gedeeld en als favoriet worden gemarkeerd. Hiermee kunnen nieuwe en terugkerende gebruikers meer mensen vinden om te volgen. Er worden geen berichten in het openbaar weergegeven totdat het account door jou is goedgekeurd en de gebruiker toestaat dat diens account aan anderen wordt aanbevolen. Je kunt ook individuele berichten goed- of afkeuren. disallow: Bericht afkeuren disallow_account: Account afkeuren no_status_selected: Er werden geen trending berichten gewijzigd, omdat er geen enkele werd geselecteerd @@ -804,6 +806,7 @@ nl: tag_servers_dimension: Populaire servers tag_servers_measure: verschillende servers tag_uses_measure: totaal aantal keer gebruikt + description_html: Deze hashtags verschijnen momenteel in veel berichten die op jouw server zichtbaar zijn. Hiermee kunnen jouw gebruikers zien waar mensen op dit moment het meest over praten. Er worden geen hashtags in het openbaar weergegeven totdat je ze goedkeurt. listable: Kan worden aanbevolen no_tag_selected: Er werden geen hashtags gewijzigd, omdat er geen enkele werd geselecteerd not_listable: Wordt niet aanbevolen @@ -829,6 +832,7 @@ nl: webhooks: add_new: Eindpunt toevoegen delete: Verwijderen + description_html: Met een webhook kan Mastodon meldingen in real-time over gekozen gebeurtenissen naar jouw eigen toepassing sturen, zodat je applicatie automatisch reacties kan genereren. disable: Uitschakelen disabled: Uitgeschakeld edit: Eindpunt bewerken @@ -873,6 +877,7 @@ nl: title: Trending berichten new_trending_tags: no_approved_tags: Op dit moment zijn er geen goedgekeurde hashtags. + requirements: 'Elk van deze kandidaten kan de #%{rank} goedgekeurde trending hashtag overtreffen, die momenteel #%{lowest_tag_name} is met een score van %{lowest_tag_score}.' title: Trending hashtags subject: Nieuwe trends te beoordelen op %{instance} aliases: @@ -1600,7 +1605,7 @@ nl: suspend: Account opgeschort welcome: edit_profile_action: Profiel instellen - edit_profile_step: Je kunt jouw profiel aanpassen door een profielafbeelding (avatar) te uploaden, jouw weergavenaam aan te passen en meer. Je kunt het handmatig goedkeuren van volgers instellen. + edit_profile_step: Je kunt jouw profiel aanpassen door een profielfoto te uploaden, jouw weergavenaam aan te passen en meer. Je kunt het handmatig goedkeuren van volgers instellen. explanation: Hier zijn enkele tips om je op weg te helpen final_action: Begin berichten te plaatsen final_step: 'Begin berichten te plaatsen! Zelfs zonder volgers kunnen jouw openbare berichten door anderen bekeken worden, bijvoorbeeld op de lokale tijdlijn en onder hashtags. Je kunt jezelf voorstellen met het gebruik van de hashtag #introductions.' diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 34c233b8bb..e3915a0992 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -255,8 +255,21 @@ nn: destroy_user_role_html: "%{name} sletta rolla %{target}" disable_2fa_user_html: "%{name} tok vekk krav om tofaktorautentisering for brukaren %{target}" disable_custom_emoji_html: "%{name} deaktiverte emojien %{target}" + disable_sign_in_token_auth_user_html: "%{name} deaktivert e-post token for godkjenning for %{target}" + disable_user_html: "%{name} slo av innlogging for brukaren %{target}" + enable_custom_emoji_html: "%{name} aktiverte emojien %{target}" + enable_sign_in_token_auth_user_html: "%{name} aktiverte e-post token autentisering for %{target}" + enable_user_html: "%{name} aktiverte innlogging for brukaren %{target}" + memorialize_account_html: "%{name} endret %{target}s konto til en minneside" + promote_user_html: "%{name} fremja brukaren %{target}" + reject_appeal_html: "%{name} avviste klagen frå %{target} på modereringa" reject_user_html: "%{name} avslo registrering fra %{target}" + remove_avatar_user_html: "%{name} fjerna %{target} sitt profilbilete" + reopen_report_html: "%{name} opna rapporten %{target} på nytt" + resend_user_html: "%{name} sendte bekreftelsesepost for %{target} på nytt" reset_password_user_html: "%{name} tilbakestilte passordet for brukaren %{target}" + resolve_report_html: "%{name} løyste ein rapport %{target}" + sensitive_account_html: "%{name} markerte %{target} sitt media som sensitivt" silence_account_html: "%{name} begrenset %{target} sin konto" deleted_account: sletta konto empty: Ingen loggar funne. diff --git a/config/locales/no.yml b/config/locales/no.yml index 7c38679944..d891cd537d 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -37,11 +37,17 @@ avatar: Profilbilde by_domain: Domene change_email: + changed_msg: E-post ble endret! current_email: Nåværende E-post label: Endre e-post new_email: Ny E-post submit: Endre e-post title: Endre E-postadressen til %{username} + change_role: + changed_msg: Rollen ble endret! + label: Endre rolle + no_role: Ingen rolle + title: Endre rolle for %{username} confirm: Bekreft confirmed: Bekreftet confirming: Bekrefte @@ -91,9 +97,14 @@ most_recent_ip: Nyligste IP no_account_selected: Ingen brukere ble forandret da ingen var valgt no_limits_imposed: Ingen grenser er tatt i bruk + no_role_assigned: Ingen rolle tildelt not_subscribed: Ikke abonnért pending: Avventer gjennomgang perform_full_suspension: Utfør full utvisning + previous_strikes: Tidligere advarsler + previous_strikes_description_html: + one: Denne kontoen har en advarsel. + other: Denne kontoen har %{count} advarsler. promote: Oppgradere protocol: Protokoll public: Offentlig @@ -113,12 +124,14 @@ reset: Tilbakestill reset_password: Nullstill passord resubscribe: Abonner på nytt + role: Rolle search: Søk search_same_email_domain: Andre brukere med samme E-postdomene search_same_ip: Andre brukere med den samme IP-en security_measures: only_password: Bare passord password_and_2fa: Passord og 2FA + sensitive: Sensitiv sensitized: Merket som følsom shared_inbox_url: Delt Innboks URL show: @@ -127,11 +140,14 @@ silence: Målbind silenced: Stilnet statuses: Statuser + strikes: Tidligere advarsler subscribe: Abonnere suspended: Suspendert suspension_irreversible: Dataene fra denne kontoen har blitt ikke reverserbart slettet. Du kan oppheve suspenderingen av kontoen for å gjøre den brukbart, men den vil ikke gjenopprette alle data den tidligere har hatt. suspension_reversible_hint_html: Kontoen har blitt suspendert, og dataene vil bli fullstendig fjernet den %{date}. Frem til da kan kontoen gjenopprettes uten negative effekter. Hvis du ønsker å fjerne alle kontoens data umiddelbart, kan du gjøre det nedenfor. title: Kontoer + unblock_email: Avblokker e-postadresse + unblocked_email_msg: Fjernet blokkering av %{username} sin e-postadresse unconfirmed_email: Ubekreftet E-postadresse undo_silenced: Angre målbinding undo_suspension: Angre utvisning @@ -148,6 +164,7 @@ approve_user: Godkjenn bruker assigned_to_self_report: Tilordne rapport change_email_user: Endre brukerens E-postadresse + change_role_user: Endre rolle for brukeren confirm_user: Bekreft brukeren create_account_warning: Opprett en advarsel create_announcement: Opprett en kunngjøring @@ -156,11 +173,17 @@ create_domain_block: Opprett domene-blokk create_email_domain_block: Opprett e-post domeneblokk create_ip_block: Opprett IP-regel + create_user_role: Opprett rolle demote_user: Degrader bruker destroy_announcement: Slett kunngjøringen + destroy_canonical_email_block: Slett blokkering av e-post destroy_custom_emoji: Slett den tilpassede emojien + destroy_domain_block: Slett blokkering av domene + destroy_email_domain_block: Slett blokkering av e-postdomene destroy_ip_block: Slett IP-regel destroy_status: Slett statusen + destroy_unavailable_domain: Slett utilgjengelig domene + destroy_user_role: Slett rolle disable_2fa_user: Skru av 2-trinnsinnlogging disable_custom_emoji: Skru av tilpassede emojier disable_user: Deaktiver bruker @@ -175,12 +198,22 @@ resolve_report: Løs rapport silence_account: Demp konto suspend_account: Suspender kontoen + unblock_email_account: Fjern blokkering av e-postadresse unsuspend_account: Opphev suspensjonen av kontoen update_announcement: Oppdater kunngjøringen update_custom_emoji: Oppdater tilpasset Emoji + update_domain_block: Oppdater blokkering av domene + update_ip_block: Oppdater IP-regel update_status: Oppdater statusen + update_user_role: Oppdater rolle actions: approve_user_html: "%{name} godkjente registrering fra %{target}" + change_email_user_html: "%{name} endret e-postadressen til brukeren %{target}" + change_role_user_html: "%{name} endret rolle for %{target}" + confirm_user_html: "%{name} bekreftet e-postadressen til brukeren %{target}" + create_account_warning_html: "%{name} sendte en advarsel til %{target}" + create_announcement_html: "%{name} opprettet ny kunngjøring %{target}" + create_canonical_email_block_html: "%{name} blokkerte e-post med hash %{target}" create_custom_emoji_html: "%{name} lastet opp ny emoji %{target}" create_domain_allow_html: "%{name} tillatt føderasjon med domenet %{target}" create_domain_block_html: "%{name} blokkert domene %{target}" @@ -815,6 +848,10 @@ status: Kontostatus remote_follow: missing_resource: Kunne ikke finne URLen for din konto + rss: + descriptions: + account: Offentlige innlegg fra @%{acct} + tag: 'Offentlige innlegg merket med #%{hashtag}' scheduled_statuses: over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter @@ -880,6 +917,8 @@ preferences: Innstillinger profile: Profil relationships: Følginger og følgere + statuses_cleanup: Automatisert sletting av innlegg + strikes: Modereringsadvarsler two_factor_authentication: Tofaktorautentisering webauthn_authentication: Sikkerhetsnøkler statuses: @@ -896,6 +935,10 @@ other: "%{count} videoer" boosted_from_html: Boostet fra %{acct_link} content_warning: 'Innholdsadvarsel: %{warning}' + disallowed_hashtags: + one: 'inneholdt en ikke tillatt hashtag: %{tags}' + other: 'inneholdt de ikke tillatte hashtaggene: %{tags}' + edited_at_html: Redigert %{date} errors: in_reply_not_found: Posten du prøver å svare ser ikke ut til eksisterer. open_in_web: Åpne i nettleser @@ -927,6 +970,20 @@ public_long: Synlig for alle unlisted: Uoppført unlisted_long: Synlig for alle, men ikke på offentlige tidslinjer + statuses_cleanup: + enabled: Slett gamle innlegg automatisk + enabled_hint: Sletter innleggene dine automatisk når de oppnår en angitt alder, med mindre de samsvarer med ett av unntakene nedenfor + exceptions: Unntak + min_age: + '1209600': 2 uker + '15778476': 6 måneder + '2629746': 1 måned + '31556952': 1 år + '5259492': 2 måneder + '604800': 1 uke + '63113904': 2 år + '7889238': 3 måneder + min_age_label: Terskel for alder stream_entries: pinned: Festet tut reblogged: fremhevde @@ -941,6 +998,7 @@ formats: default: "%-d. %b %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Legg til disable: Skru av @@ -957,22 +1015,41 @@ recovery_instructions_html: Hvis du skulle miste tilgang til telefonen din, kan du bruke en av gjenopprettingskodene nedenfor til å gjenopprette tilgang til din konto. Oppbevar gjenopprettingskodene sikkert, for eksempel ved å skrive dem ut og gjemme dem på et lurt sted bare du vet om. webauthn: Sikkerhetsnøkler user_mailer: + appeal_approved: + action: Gå til kontoen din backup_ready: explanation: Du ba om en fullstendig sikkerhetskopi av Mastodon-kontoen din. Den er nå klar for nedlasting! subject: Arkivet ditt er klart til å lastes ned + suspicious_sign_in: + change_password: endre passord + details: 'Her er detaljer om påloggingen:' + explanation: Vi har oppdaget en pålogging til din konto fra en ny IP-adresse. + further_actions_html: Hvis dette ikke var deg, anbefaler vi at du %{action} umiddelbart og aktiverer tofaktorautentisering for å holde kontoen din sikker. + title: En ny pålogging warning: + categories: + spam: Søppelpost + reason: 'Årsak:' + statuses: 'Innlegg angitt:' subject: + delete_statuses: Dine innlegg på %{acct} har blitt fjernet disable: Kontoen din, %{acct}, har blitt fryst + mark_statuses_as_sensitive: Dine innlegg på %{acct} har blitt merket som sensitivt innhold none: Advarsel for %{acct} + sensitive: Dine innlegg på %{acct} vil bli merket som sensitive fra nå silence: Kontoen din, %{acct}, har blitt begrenset suspend: Kontoen din, %{acct}, har blitt suspendert title: + delete_statuses: Innlegg fjernet disable: Kontoen er fryst + mark_statuses_as_sensitive: Innlegg markert som sensitive none: Advarsel + sensitive: Konto markert som sensitiv silence: Kontoen er begrenset suspend: Kontoen er suspendert welcome: edit_profile_action: Sett opp profil + edit_profile_step: Du kan tilpasse profilen din ved å laste opp et profilbilde, endre visningsnavnet ditt og mer. Du kan velge at nye følgere må godkjennes av deg før de får lov til å følge deg. explanation: Her er noen tips for å komme i gang final_action: Start postingen full_handle: Ditt fullstendige brukernavn @@ -991,9 +1068,11 @@ webauthn_credentials: add: Legg til ny sikkerhetsnøkkel create: + error: Det oppstod et problem med å legge til sikkerhetsnøkkelen. Prøv igjen. success: Sikkerhetsnøkkelen din ble vellykket lagt til. delete: Slett delete_confirmation: Er du sikker på at du vil slette denne sikkerhetsnøkkelen? + description_html: Dersom du aktiverer sikkerhetsnøkkelautentisering, vil innlogging kreve at du bruker en av sikkerhetsnøklene dine. destroy: error: Det oppsto et problem med å slette sikkerhetsnøkkelen. Prøv igjen. success: Sikkerhetsnøkkelen din ble vellykket slettet. diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 319aa5e750..37c470d314 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -501,6 +501,7 @@ oc: title: Configuracion status: account_status: Estat del compte + functional: Vòstre compte es complètament foncional. use_security_key: Utilizar clau de seguretat authorize_follow: already_following: Seguètz ja aqueste compte @@ -694,6 +695,7 @@ oc: on_cooldown: Sètz en temps de recargament followers_count: Seguidors al moment de mudar incoming_migrations: Mudar d’un compte diferent + incoming_migrations_html: Per venir d’un autre compte cap a aqueste, vos cal d’en primièr crear un alias de compte. moved_msg: Vòstre compte manda ara a %{acct} e vòstres seguidors son desplaçats. not_redirecting: Vòstre compte manda pas enlòc pel moment. past_migrations: Migracions passadas @@ -859,6 +861,7 @@ oc: preferences: Preferéncias profile: Perfil relationships: Abonaments e seguidors + statuses_cleanup: Supression auto de las publicacions two_factor_authentication: Autentificacion en dos temps webauthn_authentication: Claus de seguretat statuses: @@ -912,13 +915,23 @@ oc: unlisted_long: Tot lo monde pòt veire mai serà pas visible sul flux public statuses_cleanup: enabled: Supression automatica de publicacions ancianas + enabled_hint: Suprimís automaticament vòstras publicacions quand correspondon al critèri d’atge causit, levat se correspondon tanben a las excepcions çai-jos + explanation: Perque la supression es una operacion costosa en ressorsa, es realizat doçament quand lo servidor es pas ocupat a quicòm mai. Per aquò, vòstras publicacions seràn benlèu pas suprimidas aprèp aver atengut lo critèri d’atge. + ignore_favs: Ignorar los favorits + ignore_reblogs: Ignorar los partatges + interaction_exceptions: Excepcions basadas sus las interaccions keep_direct: Gardar los messatges dirèctes + keep_direct_hint: Suprimís pas vòstres messatges dirèctes keep_media: Gardar las publicacions amb pèça-junta + keep_media_hint: Suprimís pas vòstras publicacions s’an de mèdias junts keep_pinned: Gardar las publicacions penjadas + keep_pinned_hint: Suprimís pas vòstras publicacions penjadas keep_polls: Gardar los sondatges keep_polls_hint: Suprimir pas vòstres sondatges keep_self_bookmark: Gardar las publicacions que metèretz en favorit + keep_self_bookmark_hint: Suprimís pas vòstras publicacions se las avètz mesas en marcapaginas keep_self_fav: Gardar las publicacions que metèretz en favorit + keep_self_fav_hint: Suprimís pas vòstras publicacions se las avètz mesas en favorits min_age: '1209600': 2 setmanas '15778476': 6 meses @@ -930,6 +943,9 @@ oc: '7889238': 3 meses min_age_label: Sulhet d’ancianetat min_favs: Gardar al mens las publicacion en favorit + min_favs_hint: Suprimís pas las publicacions qu’an recebut al mens aquesta quantitat de favorits. Daissar blanc per suprimir las publicacion quina quantitat de favorits qu’ajan + min_reblogs: Gardar las publicacions partejadas al mens + min_reblogs_hint: Suprimís pas vòstras publicacions qu’an agut aqueste nombre de partiment. Daissar blanc per suprimir las publicacions sens far cas als partiments stream_entries: pinned: Tut penjat reblogged: a partejat diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index f372ef6bce..ec794492b4 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -4,7 +4,7 @@ pt-BR: about_mastodon_html: 'A rede social do futuro: Sem anúncios, sem vigilância corporativa, com design ético e muita descentralização! Possua seus próprios dados com o Mastodon!' contact_missing: Não definido contact_unavailable: Não disponível - hosted_on: Instância Mastodon em %{domain} + hosted_on: Servidor Mastodon em %{domain} title: Sobre accounts: follow: Seguir @@ -19,9 +19,9 @@ pt-BR: pin_errors: following: Você deve estar seguindo a pessoa que você deseja sugerir posts: - one: Toot - other: Toots - posts_tab_heading: Toots + one: Publicação + other: Publicações + posts_tab_heading: Publicações admin: account_actions: action: Tomar uma atitude @@ -31,9 +31,9 @@ pt-BR: created_msg: Nota de moderação criada com sucesso! destroyed_msg: Nota de moderação excluída com sucesso! accounts: - add_email_domain_block: Adicionar o domínio de e-mail à lista negra + add_email_domain_block: Bloquear domínio de e-mail approve: Aprovar - approved_msg: Aprovado com sucesso o pedido de registro de %{username} + approved_msg: O registro de %{username} foi aprovado com sucesso are_you_sure: Você tem certeza? avatar: Imagem de perfil by_domain: Domínio @@ -45,10 +45,10 @@ pt-BR: submit: Alterar e-mail title: Alterar e-mail para %{username} change_role: - changed_msg: Função alterada com sucesso! - label: Alterar função - no_role: Nenhuma função - title: Alterar função para %{username} + changed_msg: Cargo alterado com sucesso! + label: Alterar cargo + no_role: Sem cargo + title: Alterar cargo para %{username} confirm: Confirmar confirmed: Confirmado confirming: Confirmando @@ -60,12 +60,12 @@ pt-BR: disable: Congelar disable_sign_in_token_auth: Desativar autenticação via token por email disable_two_factor_authentication: Desativar autenticação de dois fatores - disabled: Desativada + disabled: Congelada display_name: Nome de exibição domain: Domínio edit: Editar email: E-mail - email_status: Status do e-mail + email_status: Estado do e-mail enable: Descongelar enable_sign_in_token_auth: Ativar autenticação via token por email enabled: Ativada @@ -99,7 +99,7 @@ pt-BR: most_recent_activity: Atividade mais recente most_recent_ip: IP mais recente no_account_selected: Nenhuma conta foi alterada, pois nenhuma conta foi selecionada - no_limits_imposed: Nenhum limite imposto + no_limits_imposed: Sem limite imposto no_role_assigned: Nenhuma função atribuída not_subscribed: Não inscrito pending: Revisão pendente @@ -142,7 +142,7 @@ pt-BR: targeted_reports: Denúncias sobre esta conta silence: Silenciar silenced: Silenciado - statuses: Toots + statuses: Publicações strikes: Ataques anteriores subscribe: Inscrever-se suspend: Suspender @@ -250,7 +250,7 @@ pt-BR: destroy_email_domain_block_html: "%{name} adicionou domínio de e-mail %{target} à lista branca" destroy_instance_html: "%{name} purgou o domínio %{target}" destroy_ip_block_html: "%{name} excluiu regra para o IP %{target}" - destroy_status_html: "%{name} excluiu post de %{target}" + destroy_status_html: "%{name} removeu a publicação de %{target}" destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" destroy_user_role_html: "%{name} excluiu a função %{target}" disable_2fa_user_html: "%{name} desativou a exigência de autenticação de dois fatores para o usuário %{target}" @@ -266,6 +266,7 @@ pt-BR: reject_user_html: "%{name} rejeitou a inscrição de %{target}" remove_avatar_user_html: "%{name} removeu a imagem de perfil de %{target}" reopen_report_html: "%{name} reabriu a denúncia %{target}" + resend_user_html: "%{name} reenviou um e-mail de confirmação para %{target}" reset_password_user_html: "%{name} redefiniu a senha de %{target}" resolve_report_html: "%{name} fechou a denúncia %{target}" sensitive_account_html: "%{name} marcou a mídia de %{target} como sensível" @@ -385,7 +386,7 @@ pt-BR: create: Criar bloqueio hint: O bloqueio de domínio não vai prevenir a criação de entradas de contas na base de dados, mas vai retroativamente e automaticamente aplicar métodos específicos de moderação nessas contas. severity: - desc_html: "Silenciar vai fazer os posts da conta invisíveis para qualquer um que não os esteja seguindo. Suspender vai remover todo o conteúdo, mídia, e dados de perfil da conta. Use Nenhum se você só quer rejeitar arquivos de mídia." + desc_html: "Silenciar vai tornar as publicações da conta invisíveis para qualquer um que não o esteja seguindo. Suspender vai remover todo o conteúdo, mídia e dados de perfil da conta. Use Nenhum se você só quer rejeitar arquivos de mídia." noop: Nenhum silence: Silenciar suspend: Banir @@ -595,7 +596,7 @@ pt-BR: skip_to_actions: Pular para ações status: Situação statuses: Conteúdo denunciado - statuses_description_html: Conteúdo Ofensivo será citado em comunicação com a conta relatada + statuses_description_html: Conteúdo ofensivo será citado em comunicação com a conta denunciada target_origin: Origem da conta relatada title: Denúncias unassign: Largar @@ -618,6 +619,9 @@ pt-BR: edit: Editar função de '%{name}' everyone: Permissões padrão everyone_full_description_html: Esta é a função base que afeta todos os usuários, mesmo aqueles sem uma função atribuída. Todas as outras funções dela herdam as suas permissões. + permissions_count: + one: "%{count} permissão" + other: "%{count} permissões" privileges: administrator: Administrador administrator_description: Usuários com essa permissão irão ignorar todas as permissões @@ -670,17 +674,21 @@ pt-BR: settings: about: manage_rules: Gerenciar regras do servidor + preamble: Forneça informações detalhadas sobre como o servidor é operado, moderado e financiado. rules_hint: Existe uma área dedicada para as regras que os usuários devem aderir. title: Sobre appearance: preamble: Personalize a interface web do Mastodon. title: Aparência branding: + preamble: A marca do seu servidor o diferencia de outros servidores na rede. Essa informação pode ser exibida em vários ambientes, como a interface web do Mastodon, aplicativos nativos, pré-visualizações de links em outros sites, aplicativos de mensagens, etc. Por isso, é melhor manter essa informação clara, curta e concisa. title: Marca content_retention: + preamble: Controlar como o conteúdo gerado pelo usuário é armazenado no Mastodon. title: Retenção de conteúdo discovery: follow_recommendations: Seguir recomendações + preamble: Navegar por um conteúdo interessante é fundamental para integrar novos usuários que podem não conhecer ninguém no Mastodon. Controle como várias características de descoberta funcionam no seu servidor. profile_directory: Diretório de perfis public_timelines: Timelines públicas title: Descobrir @@ -717,12 +725,12 @@ pt-BR: media: title: Mídia metadata: Metadados - no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado - open: Abrir post - original_status: Postagem original + no_status_selected: Nenhuma publicação foi modificada porque nenhuma estava selecionada + open: Publicação aberta + original_status: Publicação original reblogs: Reblogs status_changed: Publicação alterada - title: Toots da conta + title: Publicações da conta trending: Em alta visibility: Visibilidade with_media: Com mídia @@ -755,12 +763,13 @@ pt-BR: trends: allow: Permitir approved: Aprovado - disallow: Anular + disallow: Impedir links: allow: Permitir link allow_provider: Permitir editor - disallow: Proibir link - disallow_provider: Anular editor + disallow: Impedir link + disallow_provider: Impedir publicador + no_link_selected: Nenhum link foi alterado como nenhum foi selecionado title: Em alta no momento usage_comparison: Compartilhado %{today} vezes hoje, em comparação com %{yesterday} de ontem only_allowed: Somente permitido @@ -772,9 +781,11 @@ pt-BR: title: Editor rejected: Rejeitado statuses: - allow: Permitir postagem + allow: Permitir publicação allow_account: Permitir autor - description_html: Estes são posts que seu servidor sabe que estão sendo muito compartilhados e favorecidos no momento. Isso pode ajudar seus usuários, novos e retornantes, a encontrar mais pessoas para seguir. Nenhum post é exibido publicamente até que você aprove o autor e o autor permitir que sua conta seja sugerida a outros. Você também pode permitir ou rejeitar postagens individuais. + description_html: Estes são as publicações que seu servidor sabe que estão sendo muito compartilhadas e favorecidas no momento. Isso pode ajudar seus usuários, novos e atuais, a encontrar mais pessoas para seguir. Nenhuma publicação é exibida publicamente até que você aprove o autor e o autor permitir que sua conta seja sugerida a outros. Você também pode permitir ou rejeitar publicações individuais. + disallow: Impedir publicação + disallow_account: Impedir autor title: Publicações em alta tags: current_score: Pontuação atual %{score} @@ -783,6 +794,7 @@ pt-BR: tag_languages_dimension: Idiomas principais tag_servers_dimension: Servidores mais populares tag_servers_measure: servidores diferentes + tag_uses_measure: usos listable: Pode ser sugerido not_listable: Não será sugerido not_trendable: Não aparecerá em alta @@ -880,13 +892,14 @@ pt-BR: warning: Tenha cuidado com estes dados. Nunca compartilhe com alguém! your_token: Seu código de acesso auth: + apply_for_account: Entrar na lista de espera change_password: Senha delete_account: Excluir conta delete_account_html: Se você deseja excluir sua conta, você pode fazer isso aqui. Uma confirmação será solicitada. description: - prefix_invited_by_user: "@%{name} convidou você para entrar nesta instância Mastodon!" + prefix_invited_by_user: "@%{name} convidou você para entrar neste servidor Mastodon!" prefix_sign_up: Crie uma conta no Mastodon hoje! - suffix: Com uma conta, você poderá seguir pessoas, postar atualizações, trocar mensagens com usuários de qualquer instância Mastodon e muito mais! + suffix: Com uma conta, você poderá seguir pessoas, publicar atualizações, trocar mensagens com usuários de qualquer servidor Mastodon e muito mais! didnt_get_confirmation: Não recebeu instruções de confirmação? dont_have_your_security_key: Não está com a sua chave de segurança? forgot_password: Esqueceu a sua senha? @@ -906,6 +919,8 @@ pt-BR: registration_closed: "%{instance} não está aceitando novos membros" resend_confirmation: Reenviar instruções de confirmação reset_password: Redefinir senha + rules: + title: Algumas regras básicas. security: Segurança set_new_password: Definir uma nova senha setup: @@ -968,7 +983,7 @@ pt-BR: success_msg: A sua conta foi excluída com sucesso warning: before: 'Antes de prosseguir, por favor leia com cuidado:' - caches: Conteúdo que foi armazenado em cache por outras instâncias pode continuar a existir + caches: Conteúdo que foi armazenado em cache por outros servidores pode continuar a existir data_removal: Seus toots e outros dados serão removidos permanentemente email_change_html: Você pode alterar seu endereço de e-mail sem excluir sua conta email_contact_html: Se você ainda não recebeu, você pode enviar um e-mail pedindo ajuda para %{email} @@ -993,13 +1008,13 @@ pt-BR: description_html: Estas são ações tomadas contra sua conta e avisos que foram enviados a você pela equipe de %{instance}. recipient: Endereçado para reject_appeal: Rejeitar recurso - status: 'Postagem #%{id}' - status_removed: Postagem já removida do sistema + status: 'Publicação #%{id}' + status_removed: Publicação já removida do sistema title: "%{action} de %{date}" title_actions: delete_statuses: Remoção de publicações disable: Congelamento de conta - mark_statuses_as_sensitive: Marcar as postagens como sensíveis + mark_statuses_as_sensitive: Marcar as publicações como sensíveis none: Aviso sensitive: Marcar a conta como sensível silence: Limitação da conta @@ -1057,17 +1072,30 @@ pt-BR: edit: add_keyword: Adicionar palavra-chave keywords: Palavras-chave - statuses: Postagens individuais + statuses: Publicações individuais title: Editar filtro errors: invalid_context: Contexto inválido ou nenhum contexto informado index: delete: Remover empty: Sem filtros. + expires_in: Expira em %{distance} + expires_on: Expira em %{date} + keywords: + one: "%{count} palavra-chave" + other: "%{count} palavras-chave" + statuses: + one: "%{count} publicação" + other: "%{count} publicações" title: Filtros new: save: Salvar novo filtro title: Adicionar filtro + statuses: + batch: + remove: Remover do filtro + index: + title: Publicações filtradas footer: trending_now: Em alta no momento generic: @@ -1093,7 +1121,7 @@ pt-BR: merge_long: Manter os registros existentes e adicionar novos overwrite: Sobrescrever overwrite_long: Substituir os registros atuais com os novos - preface: Você pode importar dados que você exportou de outra instância, como a lista de pessoas que você segue ou bloqueou. + preface: Você pode importar dados que você exportou de outro servidor, como a lista de pessoas que você segue ou bloqueou. success: Os seus dados foram enviados com sucesso e serão processados em instantes types: blocking: Lista de bloqueio @@ -1119,7 +1147,7 @@ pt-BR: one: 1 uso other: "%{count} usos" max_uses_prompt: Sem limite - prompt: Gere e compartilhe links para permitir acesso a essa instância + prompt: Gere e compartilhe links para permitir acesso a esse servidor table: expires_at: Expira em uses: Usos @@ -1187,8 +1215,8 @@ pt-BR: sign_up: subject: "%{name} se inscreveu" favourite: - body: "%{name} favoritou seu toot:" - subject: "%{name} favoritou seu toot" + body: "%{name} favoritou sua publicação:" + subject: "%{name} favoritou sua publicação" title: Novo favorito follow: body: "%{name} te seguiu!" @@ -1211,7 +1239,7 @@ pt-BR: subject: "%{name} deu boost no seu toot" title: Novo boost status: - subject: "%{name} acabou de postar" + subject: "%{name} acabou de publicar" update: subject: "%{name} editou uma publicação" notifications: @@ -1257,6 +1285,8 @@ pt-BR: other: Outro posting_defaults: Padrões de publicação public_timelines: Linhas públicas + privacy_policy: + title: Política de Privacidade reactions: errors: limit_reached: Limite de reações diferentes atingido @@ -1289,8 +1319,8 @@ pt-BR: account: Publicações públicas de @%{acct} tag: 'Publicações públicas marcadas com #%{hashtag}' scheduled_statuses: - over_daily_limit: Você excedeu o limite de %{limit} toots agendados para esse dia - over_total_limit: Você excedeu o limite de %{limit} toots agendados + over_daily_limit: Você excedeu o limite de %{limit} publicações agendadas para esse dia + over_total_limit: Você excedeu o limite de %{limit} publicações agendadas too_soon: A data agendada precisa ser no futuro sessions: activity: Última atividade @@ -1369,22 +1399,22 @@ pt-BR: video: one: "%{count} vídeo" other: "%{count} vídeos" - boosted_from_html: Boost de %{acct_link} - content_warning: 'Aviso de Conteúdo: %{warning}' + boosted_from_html: Impulso de %{acct_link} + content_warning: 'Aviso de conteúdo: %{warning}' default_language: Igual ao idioma da interface disallowed_hashtags: one: 'continha hashtag não permitida: %{tags}' other: 'continha hashtags não permitidas: %{tags}' edited_at_html: Editado em %{date} errors: - in_reply_not_found: O toot que você quer responder parece não existir. + in_reply_not_found: A publicação que você quer responder parece não existir. open_in_web: Abrir no navegador over_character_limit: limite de caracteres de %{max} excedido pin_errors: - direct: Posts visíveis apenas para usuários mencionados não podem ser fixados + direct: Publicações visíveis apenas para usuários mencionados não podem ser fixadas limit: Quantidade máxima de toots excedida - ownership: Toots dos outros não podem ser fixados - reblog: Boosts não podem ser fixados + ownership: Publicações dos outros não podem ser fixadas + reblog: Um impulso não pode ser fixado poll: total_people: one: "%{count} pessoa" @@ -1401,33 +1431,33 @@ pt-BR: title: '%{name}: "%{quote}"' visibilities: direct: Direto - private: Privado - private_long: Posta apenas para seguidores + private: Apenas seguidores + private_long: Exibir apenas para seguidores public: Público - public_long: Posta em linhas públicas - unlisted: Não-listado - unlisted_long: Não posta em linhas públicas + public_long: Todos podem ver + unlisted: Não listado + unlisted_long: Todos podem ver, mas não é listado em linhas do tempo públicas statuses_cleanup: enabled: Excluir publicações antigas automaticamente enabled_hint: Exclui suas publicações automaticamente assim que elas alcançam sua validade, a não ser que se enquadrem em alguma das exceções abaixo exceptions: Exceções explanation: Já que a exclusão de publicações é uma operação custosa, ela é feita lentamente quando o servidor não está ocupado. Por isso suas publicações podem ser excluídas algum tempo depois de alcançarem sua validade. ignore_favs: Ignorar favoritos - ignore_reblogs: Ignorar boosts + ignore_reblogs: Ignorar impulsos interaction_exceptions: Exceções baseadas nas interações interaction_exceptions_explanation: Note que não há garantia de que as publicações sejam excluídas se ficarem abaixo do limite de favoritos ou boosts depois de tê-lo ultrapassado. keep_direct: Manter mensagens diretas - keep_direct_hint: Não deleta nenhuma de suas mensagens diretas + keep_direct_hint: Não exclui nenhuma de suas mensagens diretas keep_media: Manter publicações com mídia keep_media_hint: Não exclui nenhuma de suas publicações com mídia keep_pinned: Manter publicações fixadas - keep_pinned_hint: Não exclui nenhuma publicação fixada + keep_pinned_hint: Não exclui nenhuma de suas publicações fixadas keep_polls: Manter enquetes keep_polls_hint: Não exclui nenhuma de suas enquetes keep_self_bookmark: Manter publicações que você salvou - keep_self_bookmark_hint: Não exclui suas próprias publicações se você as tiver salvado + keep_self_bookmark_hint: Não exclui suas próprias publicações se você as salvou keep_self_fav: Manter publicações que você favoritou - keep_self_fav_hint: Não exclui suas próprias publicações se você as tiver favoritado + keep_self_fav_hint: Não exclui suas próprias publicações se você as favoritou min_age: '1209600': 2 semanas '15778476': 6 meses @@ -1439,9 +1469,9 @@ pt-BR: '7889238': 3 meses min_age_label: Validade min_favs: Manter publicações favoritadas por ao menos - min_favs_hint: Não exclui publicações que tiverem sido favoritados ao menos essa quantidade de vezes. Deixe em branco para excluir publicações independente da quantidade de favoritos - min_reblogs: Manter publicações boostadas por ao menos - min_reblogs_hint: Não exclui publicações que tiverem sido boostadas ao menos essa quantidade de vezes. Deixe em branco para excluir publicações independente da quantidade de boosts + min_favs_hint: Não exclui publicações que receberam pelo menos esta quantidade de favoritos. Deixe em branco para excluir publicações independentemente da quantidade de favoritos + min_reblogs: Manter publicações impulsionadas por ao menos + min_reblogs_hint: Não exclui publicações que receberam pelo menos esta quantidade de impulsos. Deixe em branco para excluir publicações independentemente da quantidade de impulsos stream_entries: pinned: Toot fixado reblogged: deu boost @@ -1503,6 +1533,7 @@ pt-BR: spam: Spam violation: O conteúdo viola as seguintes diretrizes da comunidade explanation: + delete_statuses: Algumas de suas publicações infringiram uma ou mais diretrizes da comunidade e foram removidas pelos moderadores de %{instance}. disable: Você não poderá mais usar a sua conta, mas o seu perfil e outros dados permanecem intactos. Você pode solicitar um backup dos seus dados, mudar as configurações ou excluir sua conta. sensitive: A partir de agora, todos os seus arquivos de mídia enviados serão marcados como confidenciais e escondidos por trás de um aviso de clique. reason: 'Motivo:' @@ -1518,7 +1549,7 @@ pt-BR: title: delete_statuses: Publicações removidas disable: Conta bloqueada - mark_statuses_as_sensitive: Postagens marcadas como sensíveis + mark_statuses_as_sensitive: Publicações marcadas como sensíveis none: Aviso sensitive: Conta marcada como sensível silence: Conta silenciada diff --git a/config/locales/ro.yml b/config/locales/ro.yml index b96d22dd59..c8e1d8a3e2 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -39,6 +39,7 @@ ro: avatar: Poză de profil by_domain: Domeniu change_email: + changed_msg: E-mail schimbat cu succes! current_email: E-mailul curent label: Schimbă adresa de email new_email: E-mail nou @@ -196,6 +197,8 @@ ro: update_announcement: Actualizare Anunț update_custom_emoji: Actualizare Emoji Personalizat update_status: Actualizează Starea + actions: + create_custom_emoji_html: "%{name} a încărcat noi emoji %{target}" announcements: live: În direct new: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 6d63959520..cfdceff8e8 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -212,6 +212,7 @@ ru: reject_user: Отклонить remove_avatar_user: Удаление аватаров reopen_report: Возобновление жалоб + resend_user: Повторно отправить письмо с подтверждением reset_password_user: Сброс пароля пользователей resolve_report: Отметка жалоб «решёнными» sensitive_account: Присвоение пользователям отметки «деликатного содержания» @@ -285,6 +286,7 @@ ru: update_ip_block_html: "%{name} изменил(а) правило для IP %{target}" update_status_html: "%{name} изменил(а) пост пользователя %{target}" update_user_role_html: "%{name} изменил(а) роль %{target}" + deleted_account: удалённая учётная запись empty: Журнал пуст. filter_by_action: Фильтр по действию filter_by_user: Фильтр по пользователю @@ -468,6 +470,8 @@ ru: dashboard: instance_accounts_dimension: Популярные аккаунты instance_accounts_measure: сохраненные учетные записи + instance_followers_measure: наши подписчики там + instance_follows_measure: их подписчики тут instance_languages_dimension: Популярные языки instance_media_attachments_measure: сохраненные медиафайлы instance_statuses_measure: сохраненные посты @@ -558,6 +562,8 @@ ru: action_log: Журнал аудита action_taken_by: 'Действие предпринято:' actions: + delete_description_html: Обжалованные сообщения будут удалены, а претензия - записана, чтобы помочь вам в решении конфликтов при повторных нарушениях со стороны того же аккаунта. + mark_as_sensitive_description_html: Весь медиаконтент в обжалованных сообщениях будет отмечен как чувствительный, а претензия - записана, чтобы помочь вам в решении конфликтов при повторных нарушениях со стороны того же аккаунта. resolve_description_html: Никаких действий не будет выполнено относительно доложенного содержимого. Жалоба будет закрыта. silence_description_html: Профиль будет просматриваем только пользователями, которые уже подписаны на него, либо открыли его вручную. Это действие можно отменить в любой момент. suspend_description_html: Профиль и всё опубликованное в нём содержимое станут недоступны, пока в конечном итоге учётная запись не будет удалена. Пользователи не смогут взаимодействовать с этой учётной записью. Это действие можно отменить в течение 30 дней. @@ -629,12 +635,21 @@ ru: other: "%{count} разрешений" privileges: administrator: Администратор + administrator_description: Пользователи с этим разрешением будут обходить все права delete_user_data: Удалить пользовательские данные delete_user_data_description: Позволяет пользователям удалять данные других пользователей без задержки invite_users: Пригласить пользователей invite_users_description: Позволяет пользователям приглашать новых людей на сервер manage_announcements: Управление объявлениями manage_announcements_description: Позволяет пользователям управлять объявлениями на сервере + manage_appeals: Управление апелляциями + manage_appeals_description: Позволяет пользователям просматривать апелляции на действия модерации + manage_blocks: Управление блоками + manage_custom_emojis: Управление смайлами + manage_custom_emojis_description: Позволяет пользователям управлять пользовательскими эмодзи на сервере + manage_federation: Управление Федерацией + manage_federation_description: Позволяет пользователям блокировать или разрешить объединение с другими доменами и контролировать возможность доставки + manage_invites: Управление приглашениями view_audit_log: Посмотреть журнал аудита view_audit_log_description: Позволяет пользователям просматривать историю административных действий на сервере view_dashboard: Открыть панель управления diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 2fd51bfea3..c392d40611 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -77,7 +77,7 @@ ca: backups_retention_period: Mantenir els arxius d'usuari generats durant el número de dies especificats. bootstrap_timeline_accounts: Aquests comptes es fixaran en la part superior de les recomanacions de seguiment dels nous usuaris. closed_registrations_message: Mostrat quan el registres estan tancats - content_cache_retention_period: Els apunts des d'altres servidors s'esborraran després del número de dies especificat quan es configura un valor positiu. Això pot ser irreversible. + content_cache_retention_period: Les publicacions d'altres servidors se suprimiran després del nombre de dies especificat quan s'estableix un valor positiu. Això pot ser irreversible. custom_css: Pots aplicar estils personalitzats en la versió web de Mastodon. mascot: Anul·la l'ilustració en l'interfície web avançada. media_cache_retention_period: Els fitxers multimèdia descarregats s'esborraran després del número de dies especificat quan el valor configurat és positiu, i tornats a descarregats sota demanda. @@ -91,9 +91,9 @@ ca: site_title: Com pot la gent referir-se al teu servidor a part del seu nom de domini. theme: El tema que els visitants i els nous usuaris veuen. thumbnail: Una imatge d'aproximadament 2:1 mostrada junt l'informació del teu servidor. - timeline_preview: Els visitants amb sessió no iniciada seran capaços de navegar per els apunts públics més recents en el teu servidor. + timeline_preview: Els visitants amb sessió no iniciada seran capaços de navegar per les publicacions més recents en el teu servidor. trendable_by_default: Omet la revisió manual del contingut en tendència. Els articles individuals poden encara ser eliminats després del fet. - trends: Les tendències mostres els apunts, les etiquetes i les noves històries que estan guanyant atenció en el teu servidor. + trends: Les tendències mostren quines publicacions, etiquetes i notícies estan guanyant força al vostre servidor. form_challenge: current_password: Estàs entrant en una àrea segura imports: diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml index ef03d18104..617fb593cb 100644 --- a/config/locales/simple_form.en-GB.yml +++ b/config/locales/simple_form.en-GB.yml @@ -1 +1,11 @@ +--- en-GB: + simple_form: + hints: + account_alias: + acct: Specify the username@domain of the account you want to move from + account_migration: + acct: Specify the username@domain of the account you want to move to + account_warning_preset: + text: You can use post syntax, such as URLs, hashtags and mentions + title: Optional. Not visible to the recipient diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index dffffa61ce..0bb1264a34 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -26,7 +26,7 @@ eo: ends_at: Laŭvola. La anonco estos aŭtomate maleldonita ĉi tiam scheduled_at: Lasi malplena por eldoni la anoncon tuj starts_at: Laŭvola. Se via anonco estas ligita al specifa tempo - text: Vi povas uzi afiŝo-sintakson. Bonvolu mensemi pri la spaco, kiun la anonco okupos sur la ekrano de la uzanto + text: Vi povas uzi la sintakso de afiŝoj. Bonvolu zorgi pri la spaco, kiun la anonco okupos sur la ekrano de la uzanto defaults: autofollow: Homoj, kiuj registriĝos per la invito aŭtomate sekvos vin avatar: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px @@ -108,7 +108,7 @@ eo: none: Fari nenion sensitive: Tikla silence: Silentigi - suspend: Haltigi kaj nemalfereble forigi kontajn datumojn + suspend: Suspendi warning_preset_id: Uzi antaŭagorditan averton announcement: all_day: Ĉiutaga evento diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index 5fa6bb8bae..4be8c4f453 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -16,6 +16,7 @@ ga: account_warning_preset: title: Teideal admin_account_action: + text: Rabhadh saincheaptha types: none: Seol rabhadh announcement: @@ -28,12 +29,23 @@ ga: note: Beathaisnéis password: Pasfhocal setting_display_media_default: Réamhshocrú + setting_display_media_hide_all: Cuir uile i bhfolach + setting_display_media_show_all: Taispeáin uile + setting_theme: Téama suímh + setting_trends: Taispeáin treochta an lae title: Teideal username: Ainm úsáideora featured_tag: name: Haischlib + filters: + actions: + hide: Cuir i bhfolach go hiomlán + warn: Cuir i bhfolach le rabhadh form_admin_settings: + site_extended_description: Cur síos fada + site_short_description: Cur síos freastalaí site_terms: Polasaí príobháideachais + site_title: Ainm freastalaí ip_block: ip: IP tag: diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 290546c767..28dc0625ea 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -18,7 +18,7 @@ gd: disable: Bac an cleachdaiche o chleachdadh a’ chunntais aca ach na sguab às no falaich an t-susbaint aca. none: Cleachd seo airson rabhadh a chur dhan chleachdaiche gun ghnìomh eile a ghabhail. sensitive: Èignich comharra gu bheil e frionasach air a h-uile ceanglachan meadhain a’ chleachdaiche seo. - silence: Bac an cleachdaiche o bhith a’ postadh le faicsinneachd poblach, falaich na postaichean aca agus brathan o na daoine nach eil ga leantainn. + silence: Bac an cleachdaiche o bhith a’ postadh le faicsinneachd poblach, falaich na postaichean aca agus brathan o na daoine nach eil ’ga leantainn. suspend: Bac conaltradh sam bith leis a’ chunntas seo agus sguab às an t-susbaint aige. Gabhaidh seo a neo-dhèanamh am broinn 30 latha. warning_preset_id: Roghainneil. ’S urrainn dhut teacsa gnàthaichte a chur ri deireadh an ro-sheata fhathast announcement: @@ -30,7 +30,7 @@ gd: appeal: text: Chan urrainn dhut ath-thagradh a dhèanamh air rabhadh ach aon turas defaults: - autofollow: Leanaidh na daoine a chlàraicheas leis a cuireadh ort gu fèin-obrachail + autofollow: Leanaidh na daoine a chlàraicheas leis a cuireadh thu gu fèin-obrachail avatar: PNG, GIF or JPG. %{size} air a char as motha. Thèid a sgèileadh sìos gu %{dimensions}px bot: Comharraich do chàch gu bheil an cunntas seo ri gnìomhan fèin-obrachail gu h-àraidh is dh’fhaoidte nach doir duine sam bith sùil air idir context: Na co-theacsaichean air am bi a’ chriathrag an sàs @@ -44,7 +44,7 @@ gd: inbox_url: Dèan lethbhreac dhen URL o phrìomh-dhuilleag an ath-sheachadain a bu mhiann leat cleachdadh irreversible: Thèid postaichean criathraichte à sealladh gu buan fiù ’s ma bheir thu a’ chriathrag air falbh às dèidh làimhe locale: Cànan eadar-aghaidh a’ chleachdaiche, nam post-d ’s nam brathan putaidh - locked: Stiùirich cò dh’fhaodas leantainn ort le gabhail ri iarrtasan leantainn a làimh + locked: Stiùirich cò dh’fhaodas ’gad leantainn le gabhail ri iarrtasan leantainn a làimh password: Cleachd co-dhiù 8 caractaran phrase: Thèid a mhaidseadh gun aire air litrichean mòra ’s beaga no air rabhadh susbainte puist scopes: Na APIan a dh’fhaodas an aplacaid inntrigeadh. Ma thaghas tu sgòp air ìre as àirde, cha leig thu leas sgòpaichean fa leth a thaghadh. @@ -54,7 +54,7 @@ gd: setting_display_media_default: Falaich meadhanan ris a bheil comharra gu bheil iad frionasach setting_display_media_hide_all: Falaich na meadhanan an-còmhnaidh setting_display_media_show_all: Seall na meadhanan an-còmhnaidh - setting_hide_network: Thèid cò a tha thu a’ leantainn orra ’s an luchd-leantainn agad fhèin a chur am falach air a’ phròifil agad + setting_hide_network: Thèid cò a tha thu a’ leantainn ’s an luchd-leantainn agad fhèin a chur am falach air a’ phròifil agad setting_noindex: Bheir seo buaidh air a’ phròifil phoblach ’s air duilleagan nam postaichean agad setting_show_application: Chithear cò an aplacaid a chleachd thu airson post a sgrìobhadh ann an seallaidhean mionaideach nam postaichean agad setting_use_blurhash: Tha caiseadan stèidhichte air dathan nan nithean lèirsinneach a chaidh fhalach ach chan fhaicear am mion-fhiosrachadh @@ -161,7 +161,7 @@ gd: appeal: text: Mìnich carson a bu chòir an caochladh a chur orra defaults: - autofollow: Thoir cuireadh dhaibh airson leantainn air a’ chunntas agad + autofollow: Thoir cuireadh dhaibh airson an cunntas agad a leantainn avatar: Avatar bot: Seo cunntas bot chosen_languages: Criathraich na cànain @@ -210,7 +210,7 @@ gd: setting_system_font_ui: Cleachd cruth-clò bunaiteach an t-siostaim setting_theme: Ùrlar na làraich setting_trends: Seall na treandaichean an-diugh - setting_unfollow_modal: Seall còmhradh dearbhaidh mus sguir thu de leantainn air cuideigin + setting_unfollow_modal: Seall còmhradh dearbhaidh mus sguir thu de chuideigin a leantainn setting_use_blurhash: Seall caiseadan dathte an àite meadhanan falaichte setting_use_pending_items: Am modh slaodach severity: Donad @@ -254,8 +254,8 @@ gd: trends: Cuir na treandaichean an comas interactions: must_be_follower: Bac na brathan nach eil o luchd-leantainn - must_be_following: Bac na brathan o dhaoine air nach lean thu - must_be_following_dm: Bac teachdaireachdan dìreach o dhaoine air nach lean thu + must_be_following: Bac na brathan o dhaoine nach lean thu + must_be_following_dm: Bac teachdaireachdan dìreach o dhaoine nach lean thu invite: comment: Beachd invite_request: @@ -272,8 +272,8 @@ gd: appeal: Tha cuideigin ag ath-thagradh co-dhùnadh na maorsainneachd digest: Cuir puist-d le geàrr-chunntas favourite: Is annsa le cuideigin am post agad - follow: Lean cuideigin ort - follow_request: Dh’iarr cuideigin leantainn ort + follow: Lean cuideigin thu + follow_request: Dh’iarr cuideigin ’gad leantainn mention: Thug cuideigin iomradh ort pending_account: Tha cunntas ùr feumach air lèirmheas reblog: Bhrosnaich cuideigin am post agad diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 9aa9c57459..bcd7453f6e 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -66,6 +66,8 @@ gl: email_domain_block: domain: Este pode ser o nome de dominio que aparece no enderezo de email ou o rexistro MX que utiliza. Será comprobado no momento do rexistro. with_dns_records: Vaise facer un intento de resolver os rexistros DNS proporcionados e os resultados tamén irán a lista de bloqueo + featured_tag: + name: 'Aquí tes algún dos cancelos que usaches recentemente:' filters: action: Elixe a acción a realizar cando algunha publicación coincida co filtro actions: diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index ffa091b684..ae1ad4fb73 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -7,18 +7,18 @@ he: account_migration: acct: נא לציין משתמש@דומיין של החשבון אליו תרצה/י לעבור account_warning_preset: - text: ניתן להשתמש בתחביר חצרוצי, כגון קישוריות, האשתגיות ואזכורים + text: ניתן להשתמש בתחביר הודעות, כגון קישוריות, תגיות ואזכורים title: אופציונלי. בלתי נראה למקבל ההודעה admin_account_action: - include_statuses: המשתמש יראה אילו חצרוצים גרמו לפעולה או לאזהרה + include_statuses: המשתמש יראה אילו הודעות גרמו לפעולה או לאזהרה send_email_notification: המשתמש יקבל הסבר מה קרה לחשבונם - text_html: אופציונלי. ניתן להשתמש בתחביר חצרוצי. ניתן להוסיף הגדרות אזהרה כדי לחסוך זמן + text_html: אופציונלי. ניתן להשתמש בתחביר הודעות. ניתן להוסיף הגדרות אזהרה כדי לחסוך זמן type_html: נא לבחור מה לעשות עם %{acct} types: disable: מנעי מהמשתמש להשתמש בחשבונם, מבלי למחוק או להסתיר את תוכנו. none: השתמשי בזה כדי לשלוח למשתמש אזהרה, מבלי לגרור פעולות נוספות. sensitive: אלצי את כל קבצי המדיה המצורפים על ידי המשתמש להיות מסומנים כרגישים. - silence: מנעי מהמשתמש להיות מסוגל לחצרץ בנראות פומבית, החביאי את חצרוציהם והתראותיהם מאנשים שלא עוקבים אחריהם. + silence: מנעי מהמשתמש להיות מסוגל לפרסם בנראות פומבית, החביאי את הודעותיהם והתראותיהם מאנשים שלא עוקבים אחריהם. suspend: מנעי כל התקשרות עם חשבון זה ומחקי את תוכנו. ניתן לשחזור תוך 30 יום. warning_preset_id: אופציונלי. ניתן עדיין להוסיף טקסט ייחודי לסוף ההגדרה announcement: @@ -26,7 +26,7 @@ he: ends_at: אופציונלי. הכרזות יוסרו באופן אוטומטי בזמן זה scheduled_at: נא להשאיר ריק כדי לפרסם את ההכרזה באופן מיידי starts_at: אופציונלי. במקרה שהכרזתך כבולה לטווח זמן ספציפי - text: ניתן להשתמש בתחביר חצרוצי. נא לשים לב לשטח שתתפוס ההכרזה על מסך המשתמש + text: ניתן להשתמש בתחביר הודעות. נא לשים לב לשטח שתתפוס ההכרזה על מסך המשתמש appeal: text: ניתן לערער על עברה רק פעם אחת defaults: @@ -42,13 +42,13 @@ he: fields: ניתן להציג עד ארבעה פריטים כטבלה בפרופילך header: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן %{dimensions}px inbox_url: נא להעתיק את הקישורית מדף הבית של הממסר בו תרצה/י להשתמש - irreversible: חצרוצים מסוננים יעלמו באופן בלתי הפיך, אפילו אם מאוחר יותר יוסר המסנן + irreversible: הודעות מסוננות יעלמו באופן בלתי הפיך, אפילו אם מאוחר יותר יוסר המסנן locale: שפת ממשק המשתמש, הדוא"ל וההתראות בדחיפה locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת password: נא להשתמש בלפחות 8 תוים - phrase: התאמה תמצא ללא תלות באזהרת תוכן בפוסט + phrase: התאמה תמצא ללא תלות באזהרת תוכן בהודעה scopes: לאיזה ממשק יורשה היישום לגשת. בבחירת תחום כללי, אין צורך לבחור ממשקים ספציפיים. - setting_aggregate_reblogs: לא להראות הדהודים של חצרוצים שהודהדו לאחרונה (משפיע רק על הדהודים שהתקבלו לא מזמן) + setting_aggregate_reblogs: לא להראות הדהודים של הודעות שהודהדו לאחרונה (משפיע רק על הדהודים שהתקבלו לא מזמן) setting_always_send_emails: בדרך כלל התראות דוא"ל לא יישלחו בזמן שימוש פעיל במסטודון setting_default_sensitive: מדיה רגישה מוסתרת כברירת מחדל וניתן להציגה בקליק setting_display_media_default: הסתרת מדיה המסומנת כרגישה @@ -56,7 +56,7 @@ he: setting_display_media_show_all: גלה מדיה תמיד setting_hide_network: עוקבייך ונעקבייך יוסתרו בפרופילך setting_noindex: משפיע על הפרופיל הציבורי שלך ועמודי ההודעות - setting_show_application: היישום בו נעשה שימוש כדי לפרסם פוסט יופיע בתצוגה המפורטת של הפוסט + setting_show_application: היישום בו נעשה שימוש כדי לפרסם הודעה יופיע בתצוגה המפורטת של ההודעה setting_use_blurhash: הגראדיינטים מבוססים על תוכן התמונה המוסתרת, אבל מסתירים את כל הפרטים setting_use_pending_items: הסתר עדכוני פיד מאחורי קליק במקום לגלול את הפיד אוטומטית username: שם המשתמש שלך יהיה ייחודי ב-%{domain} @@ -67,12 +67,33 @@ he: domain: זה יכול להיות שם הדומיין המופיע בכתובת הדוא"ל או רשומת ה-MX בה הוא משתמש. הם ייבדקו בהרשמה. with_dns_records: ייעשה נסיון למצוא את רשומות ה-DNS של דומיין נתון והתוצאות ייחסמו גם הן featured_tag: - name: 'הנה כמה מההאשטגים שהשתמשת בהם לאחרונה:' + name: 'הנה כמה מהתגיות שהשתמשת בהן לאחרונה:' filters: - action: בחרו איזו פעולה לבצע כאשר פוסט מתאים למסנן + action: בחרו איזו פעולה לבצע כאשר הודעה מתאימה למסנן actions: hide: הסתר את התוכן המסונן, כאילו לא היה קיים warn: הסתר את התוכן המסונן מאחורי אזהרה עם כותרת המסנן + form_admin_settings: + backups_retention_period: לשמור ארכיון משתמש שנוצר למשך מספר הימים המצוין. + bootstrap_timeline_accounts: חשבונות אלו יוצמדו לראש רשימת המלצות המעקב של משתמשים חדשים. + closed_registrations_message: להציג כאשר הרשמות חדשות אינן מאופשרות + content_cache_retention_period: הודעות משרתים אחרים ימחקו אחרי מספר הימים המצוין כאשר מצוין מספר חיובי. פעולה זו אינה הפיכה. + custom_css: ניתן לבחור ערכות סגנון אישיות בגרסת הדפדפן של מסטודון. + mascot: בחירת ציור למנשק הווב המתקדם. + media_cache_retention_period: קבצי מדיה שהורדו ימחקו אחרי מספר הימים שיצוינו אם נבחר מספר חיובי, או-אז יורדו שוב מחדש בהתאם לצורך. + profile_directory: מדריך הפרופילים מפרט את כל המשתמשים שביקשו להיות ניתנים לגילוי. + require_invite_text: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי + site_contact_email: מה היא הדרך ליצור איתך קשר לצורך תמיכה או לצורך תאימות עם החוק. + site_contact_username: כיצד יכולים אחרים ליצור איתך קשר על רשת מסטודון. + site_extended_description: מידע נוסף שיהיה מועיל למבקרים ולמשתמשים שלך. ניתן לכתוב בתחביר מארקדאון. + site_short_description: תיאור קצר שיעזור להבחין בייחודיות השרת שלך. מי מריץ אותו, למי הוא מיועד? + site_terms: נסחו מדיניות פרטיות או השאירו ריק כדי להשתמש בברירת המחדל. ניתן לנסח בעזרת תחביר מארקדאון. + site_title: כיצד יקרא השרת שלך על ידי הקהל מלבד שם המתחם. + theme: ערכת המראה שיראו משתמשים חדשים ולא מחוברים. + thumbnail: תמונה ביחס 2:1 בערך שתוצג ליד המידע על השרת שלך. + timeline_preview: משתמשים מנותקים יוכלו לדפדף בהודעות ציר הזמן הציבורי שעל השרת. + trendable_by_default: לדלג על בדיקה ידנית של התכנים החמים. פריטים ספציפיים עדיין ניתנים להסרה לאחר מעשה. + trends: נושאים חמים יציגו אילו הודעות, תגיות וידיעות חדשות צוברות חשיפה על השרת שלך. form_challenge: current_password: את.ה נכנס. ת לאזור מאובטח imports: @@ -96,7 +117,7 @@ he: tag: name: ניתן רק להחליף בין אותיות קטנות וגדולות, למשל כדי לשפר את הקריאות user: - chosen_languages: אם פעיל, רק חצרוצים בשפות הנבחרות יוצגו לפידים הפומביים + chosen_languages: אם פעיל, רק הודעות בשפות הנבחרות יוצגו לפידים הפומביים role: התפקיד שולט על אילו הרשאות יש למשתמש user_role: color: צבע לתפקיד בממשק המשתמש, כ RGB בפורמט הקסדצימלי @@ -120,7 +141,7 @@ he: text: טקסט קבוע מראש title: כותרת admin_account_action: - include_statuses: כלול חצרוצים מדווחים בהודעת הדוא"ל + include_statuses: כלול הודעות מדווחות בהודעת הדוא"ל send_email_notification: יידע את המשתמש באמצעות דוא"ל text: התראה בהתאמה אישית type: פעולה @@ -171,8 +192,8 @@ he: setting_always_send_emails: תמיד שלח התראות לדוא"ל setting_auto_play_gif: ניגון אוטומטי של גיפים setting_boost_modal: הצגת דיאלוג אישור לפני הדהוד - setting_crop_images: קטום תמונות בחצרוצים לא מורחבים ל 16 על 9 - setting_default_language: שפת ברירת מחדל לפוסט + setting_crop_images: קטום תמונות בהודעות לא מורחבות ל 16 על 9 + setting_default_language: שפת ברירת מחדל להודעה setting_default_privacy: פרטיות ההודעות setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ @@ -181,11 +202,11 @@ he: setting_display_media_default: ברירת מחדל setting_display_media_hide_all: להסתיר הכל setting_display_media_show_all: להציג הכול - setting_expand_spoilers: להרחיב תמיד חצרוצים מסומנים באזהרת תוכן + setting_expand_spoilers: להרחיב תמיד הודעות מסומנות באזהרת תוכן setting_hide_network: להחביא את הגרף החברתי שלך setting_noindex: לבקש הסתרה ממנועי חיפוש setting_reduce_motion: הפחתת תנועה בהנפשות - setting_show_application: הצגת הישום ששימש לפרסום הפוסט + setting_show_application: הצגת הישום ששימש לפרסום ההודעה setting_system_font_ui: להשתמש בגופן ברירת המחדל של המערכת setting_theme: ערכת העיצוב של האתר setting_trends: הצגת הנושאים החמים @@ -202,11 +223,35 @@ he: email_domain_block: with_dns_records: לכלול רשומות MX וכתובות IP של הדומיין featured_tag: - name: האשתג + name: תגית filters: actions: hide: הסתרה כוללת warn: הסתרה עם אזהרה + form_admin_settings: + backups_retention_period: תקופת השמירה של ארכיון המשתמש + bootstrap_timeline_accounts: המלצה על חשבונות אלה למשתמשים חדשים + closed_registrations_message: הודעה מיוחדת כשההרשמה לא מאופשרת + content_cache_retention_period: תקופת שמירת מטמון תוכן + custom_css: CSS בהתאמה אישית + mascot: סמל השרת (ישן) + media_cache_retention_period: תקופת שמירת מטמון מדיה + profile_directory: הפעלת ספריית פרופילים + registrations_mode: מי יכולים לפתוח חשבון + require_invite_text: לדרוש סיבה להצטרפות + show_domain_blocks: הצגת חסימת דומיינים + show_domain_blocks_rationale: הצגת סיבות חסימה למתחמים + site_contact_email: דואל ליצירת קשר + site_contact_username: שם משתמש של איש קשר + site_extended_description: תיאור מורחב + site_short_description: תיאור השרת + site_terms: מדיניות פרטיות + site_title: שם השרת + theme: ערכת נושא ברירת מחדל + thumbnail: תמונה ממוזערת מהשרת + timeline_preview: הרשאת גישה בלתי מאומתת לפיד הפומבי + trendable_by_default: הרשאה לפריטים להופיע בנושאים החמים ללא אישור מוקדם + trends: אפשר פריטים חמים (טרנדים) interactions: must_be_follower: חסימת התראות משאינם עוקבים must_be_following: חסימת התראות משאינם נעקבים @@ -226,21 +271,21 @@ he: notification_emails: appeal: מישהם מערערים על החלטת מנהל קהילה digest: שליחת הודעות דוא"ל מסכמות - favourite: שליחת דוא"ל כשמחבבים פוסט + favourite: שליחת דוא"ל כשמחבבים הודעה follow: שליחת דוא"ל כשנוספות עוקבות follow_request: שליחת דוא"ל כשמבקשים לעקוב mention: שליחת דוא"ל כשפונים אלייך pending_account: נדרשת סקירה של חשבון חדש - reblog: שליחת דוא"ל כשמהדהדים פוסט שלך + reblog: שליחת דוא"ל כשמהדהדים הודעה שלך report: דו"ח חדש הוגש trending_tag: נושאים חמים חדשים דורשים סקירה rule: text: כלל tag: - listable: הרשה/י להאשתג זה להופיע בחיפושים והצעות - name: האשתג - trendable: הרשה/י להאשתג זה להופיע תחת נושאים חמים - usable: הרשה/י לחצרוצים להכיל האשתג זה + listable: הרשה/י לתגית זו להופיע בחיפושים והצעות + name: תגית + trendable: הרשה/י לתגית זו להופיע תחת נושאים חמים + usable: הרשה/י להודעות להכיל תגית זו user: role: תפקיד user_role: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index dd9207b44b..2f33fb622d 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -3,7 +3,7 @@ it: simple_form: hints: account_alias: - acct: Indica il nomeutente@dominio dell'account da cui vuoi trasferirti + acct: Indica il nomeutente@dominio dell'account dal quale vuoi trasferirti account_migration: acct: Indica il nomeutente@dominio dell'account al quale vuoi trasferirti account_warning_preset: diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 7f31232a11..8b5b1dce3a 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -54,7 +54,7 @@ lv: setting_display_media_default: Paslēpt mediju, kas atzīmēts kā sensitīvs setting_display_media_hide_all: Vienmēr slēpt medijus setting_display_media_show_all: Vienmēr rādīt medijus - setting_hide_network: Kam tu seko un kurš seko tev, tavā profilā tiks paslēps + setting_hide_network: Tavā profilā netiks rādīts, kam tu seko un kurš seko tev setting_noindex: Ietekmē tavu publisko profilu un ziņu lapas setting_show_application: Lietojumprogramma, ko tu izmanto publicēšanai, tiks parādīta tavu ziņu detalizētajā skatā setting_use_blurhash: Gradientu pamatā ir paslēpto vizuālo attēlu krāsas, bet neskaidras visas detaļas @@ -120,7 +120,7 @@ lv: chosen_languages: Ja ieķeksēts, publiskos laika grafikos tiks parādītas tikai ziņas noteiktajās valodās role: Loma kontrolē, kādas atļaujas ir lietotājam user_role: - color: Krāsa, kas jāizmanto lomai visā lietotāja interfeisā, kā RGB hex formātā + color: Krāsa, kas jāizmanto lomai visā lietotāja saskarnē, kā RGB hex formātā highlighted: Tas padara lomu publiski redzamu name: Lomas publiskais nosaukums, ja loma ir iestatīta rādīšanai kā emblēma permissions_as_keys: Lietotājiem ar šo lomu būs piekļuve... @@ -179,7 +179,7 @@ lv: honeypot: "%{label} (neaizpildi)" inbox_url: URL vai releja pastkaste irreversible: Nomest, nevis paslēpt - locale: Interfeisa valoda + locale: Saskarnes valoda locked: Pieprasīt sekotāju pieprasījumus max_uses: Maksimālais lietojumu skaits new_password: Jauna parole @@ -187,7 +187,7 @@ lv: otp_attempt: Divfaktoru kods password: Parole phrase: Atslēgvārds vai frāze - setting_advanced_layout: Iespējot paplašināto web interfeisu + setting_advanced_layout: Iespējot paplašināto tīmekļa saskarni setting_aggregate_reblogs: Grupēt paaugstinājumus ziņu lentās setting_always_send_emails: Vienmēr sūtīt e-pasta paziņojumus setting_auto_play_gif: Automātiski atskaņot animētos GIF @@ -203,7 +203,7 @@ lv: setting_display_media_hide_all: Paslēpt visu setting_display_media_show_all: Parādīt visu setting_expand_spoilers: Vienmēr izvērst ziņas, kas apzīmētas ar brīdinājumiem par saturu - setting_hide_network: Slēpt savu sociālo diagrammu + setting_hide_network: Slēpt savu sociālo grafu setting_noindex: Atteikties no meklētājprogrammu indeksēšanas setting_reduce_motion: Ierobežot kustību animācijās setting_show_application: Atklāt lietojumprogrammu, ko izmanto ziņu nosūtīšanai diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 7d627b8f75..44db453904 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -64,6 +64,7 @@ nl: domain_allow: domain: Dit domein is in staat om gegevens van deze server op te halen, en binnenkomende gegevens worden verwerkt en opgeslagen email_domain_block: + domain: Dit kan de domeinnaam zijn die wordt weergegeven in het e-mailadres of in het MX-record dat het gebruikt. Ze worden gecontroleerd tijdens de registratie. with_dns_records: Er wordt een poging gewaagd om de desbetreffende DNS-records op te zoeken, waarna de resultaten ook worden geblokkeerd featured_tag: name: 'Hier zijn enkele van de hashtags die je onlangs hebt gebruikt:' @@ -84,7 +85,9 @@ nl: require_invite_text: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd site_contact_email: Hoe mensen je kunnen bereiken voor juridische vragen of support. site_contact_username: Hoe mensen je op Mastodon kunnen bereiken. - site_terms: Gebruik je eigen privacybeleid of laat leeg om de standaardwaarde te gebruiken. Kan worden opgemaakt met Markdown syntax. + site_extended_description: Alle aanvullende informatie die nuttig kan zijn voor bezoekers en jouw gebruikers. Kan worden opgemaakt met Markdown. + site_short_description: Een korte beschrijving om het unieke karakter van je server te tonen. Wie beheert de server, wat is de doelgroep? + site_terms: Gebruik je eigen privacybeleid of laat leeg om de standaardwaarde te gebruiken. Kan worden opgemaakt met Markdown. site_title: Hoe mensen buiten de domeinnaam naar je server kunnen verwijzen. theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien. thumbnail: Een afbeelding van ongeveer een verhouding van 2:1 die naast jouw serverinformatie wordt getoond. @@ -121,6 +124,7 @@ nl: highlighted: Dit maakt de rol openbaar zichtbaar name: Openbare naam van de rol, wanneer de rol als badge op profielpagina's wordt getoond permissions_as_keys: Gebruikers met deze rol hebben toegang tot... + position: Een hogere rol beslist in bepaalde situaties over het oplossen van conflicten. Bepaalde acties kunnen alleen worden uitgevoerd op rollen met een lagere prioriteit webhook: events: Selecteer de te verzenden gebeurtenissen url: Waar gebeurtenissen naartoe worden verzonden @@ -158,7 +162,7 @@ nl: text: Leg uit waarom deze beslissing volgens jou teruggedraaid moet worden defaults: autofollow: Uitnodigen om jouw account te volgen - avatar: Avatar + avatar: Profielfoto bot: Dit is een bot-account chosen_languages: Talen filteren confirm_new_password: Nieuw wachtwoord bevestigen diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 0343dc4572..50dacf53a0 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -3,14 +3,14 @@ nn: simple_form: hints: account_alias: - acct: Spesifiser brukarnamn@domenet til brukaren du vil flytja frå + acct: Angi brukarnamn@domene til brukaren du ynskjer å flytta frå account_migration: - acct: Spesifiser brukarnamn@domenet til brukaren du vil flytja til + acct: Angi brukarnamn@domene til brukaren du ynskjer å flytta til account_warning_preset: text: Du kan bruka tut-syntaks, som t. d. URL-ar, emneknaggar og nemningar title: Valfritt. Ikkje synleg for mottakar admin_account_action: - include_statuses: Brukaren får sjå kva tut som gjorde moderatorhandllinga eller -åtvaringa + include_statuses: Brukaren får sjå kva tut som førte til moderatorhandlinga eller -åtvaringa send_email_notification: Brukaren får ei forklåring av kva som har hendt med kontoen sin text_html: Valfritt. Du kan bruka tut-syntaks. Du kan leggja til åtvaringsførehandsinnstillingar for å spara tid type_html: Vel det du vil gjera med %{acct} @@ -56,18 +56,44 @@ nn: setting_display_media_show_all: Vis alltid media setting_hide_network: Kven du fylgjer og kven som fylgjer deg vert ikkje vist på profilen din setting_noindex: Påverkar den offentlege profilen og statussidene dine - setting_show_application: Programmet du brukar for å tuta synast i den detaljerte visninga av tuta dine - setting_use_blurhash: Overgangar er bygt på dei løynde sine leter, men gjer detaljar utydelege - setting_use_pending_items: Gøym tidslineoppdateringar ved eit klikk, i staden for å bla ned hendestraumen automatisk + setting_show_application: Programmet du brukar for å tuta blir vist i den detaljerte visninga av tuta dine + setting_use_blurhash: Overgangar er basert på fargane til skjulte grafikkelement, men gjer detaljar utydelege + setting_use_pending_items: Gøym tidslineoppdateringar bak eit klikk, i staden for å rulla ned automatisk username: Brukarnamnet ditt vert unikt på %{domain} whole_word: Når søkjeordet eller setninga berre er alfanumerisk, nyttast det berre om det samsvarar med heile ordet domain_allow: domain: Dette domenet er i stand til å henta data frå denne tenaren og innkomande data vert handsama og lagra email_domain_block: domain: Dette kan vera domenenamnet som blir vist i e-postadressa eller den MX-oppføringa den brukar. Dei vil bli kontrollert ved registrering. - with_dns_records: Eit forsøk på å løysa gjeve domene som DNS-data vil vera gjord og resultata vert svartelista + with_dns_records: Det vil bli gjort eit forsøk på å avgjera DNS-oppføringa til domenet og resultata vil bli tilsvarande blokkert featured_tag: - name: 'Her er nokre av dei mest brukte hashtaggane dine i det siste:' + name: 'Her er nokre av emneknaggane du har brukt i det siste:' + filters: + action: Velg kva som skal gjerast når eit innlegg samsvarar med filteret + actions: + hide: Skjul filtrert innhald fullstendig og lat som om det ikkje finst + warn: Skjul det filtrerte innhaldet bak ei åtvaring som nemner tittelen på filteret + form_admin_settings: + backups_retention_period: Ta vare på genererte brukararkiv i angitt antal dagar. + bootstrap_timeline_accounts: Desse kontoane vil bli festa øverst på fylgjaranbefalingane til nye brukarar. + closed_registrations_message: Vist når det er stengt for registrering + content_cache_retention_period: Innlegg frå andre tenarar vil bli sletta etter det angitte talet på dagar når det er sett til ein positiv verdi. Dette kan vera irreversibelt. + custom_css: Du kan bruka eigendefinerte stilar på nettversjonen av Mastodon. + mascot: Overstyrer illustrasjonen i det avanserte webgrensesnittet. + media_cache_retention_period: Mediafiler som har blitt lasta ned vil bli sletta etter det angitte talet på dagar når det er sett til ein positiv verdi, og lasta ned på nytt ved etterspørsel. + profile_directory: Profilkatalogen viser alle brukarar som har valt å kunne bli oppdaga. + require_invite_text: Når registrering krev manuell godkjenning, lyt du gjera tekstfeltet "Kvifor vil du bli med?" obligatorisk i staden for valfritt + site_contact_email: Korleis kan ein få tak i deg når det gjeld juridiske spørsmål eller spørsmål om støtte. + site_contact_username: Korleis folk kan koma i kontakt med deg på Mastodon. + site_extended_description: Tilleggsinformasjon som kan vera nyttig for besøkjande og brukarar. Kan strukturerast med Markdown-syntaks. + site_short_description: Ein kort omtale for lettare å finne tenaren blant alle andre. Kven driftar han, kven er i målgruppa? + site_terms: Bruk eigen personvernpolicy eller la stå tom for å bruka standard. Kan strukturerast med Markdown-syntaks. + site_title: Kva ein kan kalla tenaren, utanom domenenamnet. + theme: Tema som er synleg for nye brukarar og besøkjande som ikkje er logga inn. + thumbnail: Eit omlag 2:1 bilete vist saman med informasjon om tenaren. + timeline_preview: Besøkjande som ikkje er logga inn vil kunne bla gjennom dei siste offentlege innlegga på tenaren. + trendable_by_default: Hopp over manuell gjennomgang av populært innhald. Enkeltståande innlegg kan fjernast frå trendar i etterkant. + trends: Trendar viser kva for nokre innlegg, emneknaggar og nyheiter som er i støytet på tenaren. form_challenge: current_password: Du går inn i eit trygt område imports: @@ -75,25 +101,33 @@ nn: invite_request: text: Dette kjem til å hjelpa oss med å gå gjennom søknaden din ip_block: - comment: Valgfritt. Husk hvorfor du la til denne regelen. - expires_in: IP-adressene er en helt begrenset ressurs, de deles og endres ofte hender. Ubestemte IP-blokker anbefales ikke. - ip: Skriv inn en IPv4 eller IPv6-adresse. Du kan blokkere alle områder ved å bruke CIDR-syntaksen. Pass på å ikke låse deg selv! + comment: Valfritt. Hugs kvifor du la til denne regelen. + expires_in: IP-adresser er ein avgrensa ressurs, er av og til delte og byter ofte eigar. På grunn av dette er det ikkje tilrådd med uavgrensa IP-blokkeringar. + ip: Skriv inn ei IPv4 eller IPv6 adresse. Du kan blokkere heile IP-områder ved bruk av CIDR-syntaks. Pass på å ikkje blokkera deg sjølv! severities: no_access: Blokker tilgang til alle ressurser - sign_up_requires_approval: Nye registreringer vil kreve din godkjenning - severity: Velg hva som vil skje med forespørsler fra denne IP + sign_up_block: Nye registreringar vil ikkje vera mogleg + sign_up_requires_approval: Du må godkjenna nye registreringar + severity: Vel kva som skal skje ved førespurnader frå denne IP rule: - text: Beskriv en regel eller krav til brukere på denne serveren. Prøv å holde den kort og enkelt + text: Forklar ein regel eller eit krav for brukarar på denne tenaren. Prøv å skriva kort og lettfattleg sessions: otp: Angi tofaktorkoden fra din telefon eller bruk en av dine gjenopprettingskoder. + webauthn: Om det er ein USB-nøkkel må du setja han inn og om nødvendig trykkja på han. tag: name: Du kan berre endra bruken av store/små bokstavar, t. d. for å gjera det meir leseleg user: chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner role: Rolla kontrollerer kva tilgangar brukaren har user_role: + color: Fargen som skal nyttast for denne rolla i heile brukargrensesnittet, som RGB i hex-format highlighted: Dette gjer rolla synleg offentleg + name: Offentleg namn på rolla, dersom rolla skal visast som eit emblem permissions_as_keys: Brukarar med denne rolla vil ha tilgang til... + position: Høgare rolle avgjer konfliktløysing i visse situasjonar. Visse handlingar kan kun utførast på rollar med lågare prioritet + webhook: + events: Vel hendingar å senda + url: Kvar hendingar skal sendast labels: account: fields: @@ -114,7 +148,7 @@ nn: types: disable: Slå av innlogging none: Gjer inkje - sensitive: Sensitiv + sensitive: Ømtolig silence: Togn suspend: Utvis og slett kontodata for godt warning_preset_id: Bruk åtvaringsoppsett @@ -124,6 +158,8 @@ nn: scheduled_at: Planlegg publisering starts_at: Byrjing av hendinga text: Lysing + appeal: + text: Forklar kvifor denne avgjerda bør gjerast om defaults: autofollow: Bed om å fylgja kontoen din avatar: Bilete @@ -192,6 +228,30 @@ nn: actions: hide: Gøym totalt warn: Gøym med ei advarsel + form_admin_settings: + backups_retention_period: Arkiveringsperiode for brukararkiv + bootstrap_timeline_accounts: Tilrå alltid desse kontoane for nye brukarar + closed_registrations_message: Eigendefinert melding når registrering ikkje er mogleg + content_cache_retention_period: Oppbevaringsperiode for innhaldsbuffer + custom_css: Egendefinert CSS + mascot: Eigendefinert maskot (eldre funksjon) + media_cache_retention_period: Oppbevaringsperiode for mediebuffer + profile_directory: Aktiver profilkatalog + registrations_mode: Kven kan registrera seg + require_invite_text: Krev ei grunngjeving for å få bli med + show_domain_blocks: Vis domeneblokkeringar + show_domain_blocks_rationale: Vis grunngjeving for domeneblokkeringar + site_contact_email: E-postadresse for kontakt + site_contact_username: Brukarnamn for kontakt + site_extended_description: Utvida omtale av tenaren + site_short_description: Stutt om tenaren + site_terms: Personvernsreglar + site_title: Tenarnamn + theme: Standardtema + thumbnail: Miniatyrbilete for tenaren + timeline_preview: Tillat uautentisert tilgang til offentleg tidsline + trendable_by_default: Tillat trendar utan gjennomgang på førehand + trends: Aktiver trendar interactions: must_be_follower: Gøym varslingar frå folk som ikkje fylgjer deg must_be_following: Gøym varslingar frå folk du ikkje fylgjer @@ -205,9 +265,11 @@ nn: ip: IP severities: no_access: Blokker tilgang + sign_up_block: Blokker registrering sign_up_requires_approval: Begrens påmeldinger severity: Oppføring notification_emails: + appeal: Nokon klagar på ei moderatoravgjerd digest: Send samandrag på e-post favourite: Send e-post når nokon merkjer statusen din som favoritt follow: Send e-post når nokon fylgjer deg @@ -216,6 +278,7 @@ nn: pending_account: Send e-post når ein ny konto treng gjennomgang reblog: Send e-post når nokon framhevar statusen din report: Ny rapport er sendt + trending_tag: Ny trend krev gjennomgang rule: text: Regler tag: @@ -226,11 +289,16 @@ nn: user: role: Rolle user_role: + color: Emblemfarge + highlighted: Vis rolle som emblem på brukarprofil name: Namn + permissions_as_keys: Løyve position: Prioritet webhook: + events: Aktiverte hendingar url: Endepunkts-URL 'no': Nei + not_recommended: Ikkje anbefalt recommended: Tilrådt required: mark: "*" diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index 7d7a152453..c074b89453 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -40,6 +40,7 @@ oc: phrase: Serà pres en compte que siá en majuscula o minuscula o dins un avertiment de contengut sensible scopes: A quinas APIs poiràn accedir las aplicacions. Se seleccionatz un encastre de naut nivèl, fa pas mestièr de seleccionar los nivèls mai basses. setting_aggregate_reblogs: Mostrar pas los nòus partatges que son estats partejats recentament (afecta pas que los nòus partatges recebuts) + setting_always_send_emails: Normalament enviam pas los corrièls de notificacion se sètz a utilizar Mastodon activament setting_default_sensitive: Los mèdias sensibles son resconduts per defaut e se revelhan amb un clic setting_display_media_default: Rescondre los mèdias marcats coma sensibles setting_display_media_hide_all: Totjorn rescondre los mèdias @@ -135,6 +136,7 @@ oc: phrase: Senhal o frasa setting_advanced_layout: Activar l’interfàcia web avançada setting_aggregate_reblogs: Agropar los partatges dins lo flux d’actualitat + setting_always_send_emails: Totjorn enviar los corrièls de notificacion setting_auto_play_gif: Lectura automatica dels GIFS animats setting_boost_modal: Mostrar una fenèstra de confirmacion abans de partejar un estatut setting_crop_images: Retalhar los imatges dins los tuts pas desplegats a 16x9 diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index c2d3b9ffe5..aa2d6ef8d9 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -67,9 +67,9 @@ pt-BR: domain: Este pode ser o nome de domínio que aparece no endereço de e-mail ou no registro MX que ele utiliza. Eles serão verificados após a inscrição. with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra featured_tag: - name: 'Aqui estão algumas ‘hashtags’ utilizadas recentemente:' + name: 'Aqui estão algumas hashtags usadas recentemente:' filters: - action: Escolher qual ação executar quando um post corresponder ao filtro + action: Escolher qual ação executar quando uma publicação corresponder ao filtro actions: hide: Esconder completamente o conteúdo filtrado, comportando-se como se ele não existisse warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro @@ -79,10 +79,11 @@ pt-BR: closed_registrations_message: Exibido quando as inscrições estiverem fechadas site_contact_username: Como as pessoas podem chegar até você no Mastodon. site_extended_description: Quaisquer informações adicionais que possam ser úteis para os visitantes e seus usuários. Podem ser estruturadas com formato Markdown. + site_title: Como as pessoas podem se referir ao seu servidor além do nome do domínio. form_challenge: current_password: Você está entrando em uma área segura imports: - data: Arquivo CSV exportado de outra instância Mastodon + data: Arquivo CSV exportado de outro servidor Mastodon invite_request: text: Isso vai nos ajudar a revisar sua aplicação ip_block: @@ -206,8 +207,16 @@ pt-BR: hide: Ocultar completamente warn: Ocultar com um aviso form_admin_settings: + custom_css: CSS personalizável + profile_directory: Ativar diretório de perfis registrations_mode: Quem pode se inscrever site_contact_email: E-mail de contato + site_extended_description: Descrição estendida + site_short_description: Descrição do servidor + site_terms: Política de privacidade + site_title: Nome do servidor + theme: Tema padrão + thumbnail: Miniatura do servidor trends: Habilitar tendências interactions: must_be_follower: Bloquear notificações de não-seguidores @@ -222,6 +231,7 @@ pt-BR: ip: IP severities: no_access: Bloquear acesso + sign_up_block: Bloquear registros sign_up_requires_approval: Limitar novas contas severity: Regra notification_emails: @@ -242,10 +252,18 @@ pt-BR: name: Hashtag trendable: Permitir que esta hashtag fique em alta usable: Permitir que toots usem esta hashtag + user: + role: Cargo + user_role: + color: Cor do emblema + name: Nome + permissions_as_keys: Permissões + position: Prioridade webhook: events: Eventos habilitados url: URL do Endpoint 'no': Não + not_recommended: Não recomendado recommended: Recomendado required: mark: "*" diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 758549c6f2..021def2fd7 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -42,7 +42,7 @@ th: fields: คุณสามารถมีได้มากถึง 4 รายการแสดงเป็นตารางในโปรไฟล์ของคุณ header: PNG, GIF หรือ JPG สูงสุด %{size} จะถูกย่อขนาดเป็น %{dimensions}px inbox_url: คัดลอก URL จากหน้าแรกของรีเลย์ที่คุณต้องการใช้ - irreversible: โพสต์ที่กรองจะหายไปอย่างถาวร แม้ว่าจะเอาตัวกรองออกในภายหลัง + irreversible: โพสต์ที่กรองอยู่จะหายไปอย่างถาวร แม้ว่าจะเอาตัวกรองออกในภายหลัง locale: ภาษาของส่วนติดต่อผู้ใช้, อีเมล และการแจ้งเตือนแบบผลัก locked: ควบคุมผู้ที่สามารถติดตามคุณด้วยตนเองได้โดยอนุมัติคำขอติดตาม password: ใช้อย่างน้อย 8 ตัวอักษร @@ -75,6 +75,14 @@ th: warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง form_admin_settings: closed_registrations_message: แสดงเมื่อมีการปิดการลงทะเบียน + mascot: เขียนทับภาพประกอบในส่วนติดต่อเว็บขั้นสูง + site_contact_email: วิธีที่ผู้คนสามารถเข้าถึงคุณสำหรับการสอบถามด้านกฎหมายหรือการสนับสนุน + site_contact_username: วิธีที่ผู้คนสามารถเข้าถึงคุณใน Mastodon + site_terms: ใช้นโยบายความเป็นส่วนตัวของคุณเองหรือเว้นว่างไว้เพื่อใช้ค่าเริ่มต้น สามารถจัดโครงสร้างด้วยไวยากรณ์ Markdown + site_title: วิธีที่ผู้คนอาจอ้างอิงถึงเซิร์ฟเวอร์ของคุณนอกเหนือจากชื่อโดเมนของเซิร์ฟเวอร์ + theme: ชุดรูปแบบที่ผู้เยี่ยมชมที่ออกจากระบบและผู้ใช้ใหม่เห็น + thumbnail: แสดงภาพ 2:1 โดยประมาณควบคู่ไปกับข้อมูลเซิร์ฟเวอร์ของคุณ + timeline_preview: ผู้เยี่ยมชมที่ออกจากระบบจะสามารถเรียกดูโพสต์สาธารณะล่าสุดที่มีในเซิร์ฟเวอร์ trends: แนวโน้มแสดงว่าโพสต์, แฮชแท็ก และเรื่องข่าวใดกำลังได้รับความสนใจในเซิร์ฟเวอร์ของคุณ form_challenge: current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย @@ -212,6 +220,8 @@ th: warn: ซ่อนด้วยคำเตือน form_admin_settings: backups_retention_period: ระยะเวลาการเก็บรักษาการเก็บถาวรผู้ใช้ + bootstrap_timeline_accounts: แนะนำบัญชีเหล่านี้ให้กับผู้ใช้ใหม่เสมอ + closed_registrations_message: ข้อความที่กำหนดเองเมื่อการลงทะเบียนไม่พร้อมใช้งาน content_cache_retention_period: ระยะเวลาการเก็บรักษาแคชเนื้อหา custom_css: CSS ที่กำหนดเอง mascot: มาสคอตที่กำหนดเอง (ดั้งเดิม) @@ -220,6 +230,7 @@ th: registrations_mode: ผู้ที่สามารถลงทะเบียน require_invite_text: ต้องมีเหตุผลที่จะเข้าร่วม show_domain_blocks: แสดงการปิดกั้นโดเมน + show_domain_blocks_rationale: แสดงเหตุผลที่โดเมนได้รับการปิดกั้น site_contact_email: อีเมลสำหรับติดต่อ site_contact_username: ชื่อผู้ใช้สำหรับติดต่อ site_extended_description: คำอธิบายแบบขยาย @@ -228,6 +239,7 @@ th: site_title: ชื่อเซิร์ฟเวอร์ theme: ชุดรูปแบบเริ่มต้น thumbnail: ภาพขนาดย่อเซิร์ฟเวอร์ + timeline_preview: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง trendable_by_default: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า trends: เปิดใช้งานแนวโน้ม interactions: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 6eb379ad8b..5ccb601697 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -3,7 +3,7 @@ tr: simple_form: hints: account_alias: - acct: Taşıyacağınız hesabı kullanıcıadı@alanadı şeklinde belirtin + acct: Taşımak istediğiniz hesabı kullanıcıadı@alanadı şeklinde belirtin account_migration: acct: Yeni hesabınızı kullanıcıadı@alanadını şeklinde belirtin account_warning_preset: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 8392ece915..c2a249b59f 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -686,6 +686,7 @@ sv: title: Bibehållande av innehåll discovery: follow_recommendations: Följrekommendationer + preamble: Att visa intressant innehåll är avgörande i onboarding av nya användare som kanske inte känner någon på Mastodon. Styr hur olika upptäcktsfunktioner fungerar på din server. profile_directory: Profilkatalog public_timelines: Offentliga tidslinjer title: Upptäck @@ -861,16 +862,22 @@ sv: body: "%{target} överklagade ett modereringsbeslut av typen %{type}, taget av %{action_taken_by} den %{date}. De skrev:" next_steps: Du kan godkänna överklagan för att ångra modereringsbeslutet, eller ignorera det. subject: "%{username} överklagar ett modereringsbeslut på %{instance}" + new_pending_account: + body: Detaljerna för det nya kontot finns nedan. Du kan godkänna eller avvisa denna ansökan. + subject: Nytt konto flaggat för granskning på %{instance} (%{username}) new_report: body: "%{reporter} har rapporterat %{target}" body_remote: Någon från %{domain} har rapporterat %{target} subject: Ny rapport för %{instance} (#%{id}) new_trends: + body: 'Följande objekt behöver granskas innan de kan visas publikt:' new_trending_links: title: Trendande länkar new_trending_statuses: title: Trendande inlägg new_trending_tags: + no_approved_tags: Det finns för närvarande inga godkända trendande hashtaggar. + requirements: 'Någon av dessa kandidater skulle kunna överträffa #%{rank} godkända trendande hashtaggar, som för närvarande är #%{lowest_tag_name} med en poäng på %{lowest_tag_score}.' title: Trendande hashtaggar subject: Nya trender tillgängliga för granskning på %{instance} aliases: @@ -878,9 +885,11 @@ sv: created_msg: Ett nytt alias skapades. Du kan nu initiera flytten från det gamla kontot. deleted_msg: Aliaset togs bort. Att flytta från det kontot till detta kommer inte längre vara möjligt. empty: Du har inga alias. + hint_html: Om du vill flytta från ett annat konto till detta kan du skapa ett alias här, detta krävs innan du kan fortsätta med att flytta följare från det gamla kontot till detta. Denna åtgärd är ofarlig och kan ångras. Kontomigreringen initieras från det gamla kontot.. remove: Avlänka alias appearance: advanced_web_interface: Avancerat webbgränssnitt + advanced_web_interface_hint: 'Om du vill utnyttja hela skärmens bredd så kan du i det avancerade webbgränssnittet ställa in många olika kolumner för att se så mycket information samtidigt som du vill: Hem, notiser, federerad tidslinje, valfritt antal listor och hashtaggar.' animations_and_accessibility: Animationer och tillgänglighet confirmation_dialogs: Bekräftelsedialoger discovery: Upptäck @@ -944,6 +953,7 @@ sv: title: Ställ in sign_up: preamble: Med ett konto på denna Mastodon-server kan du följa alla andra personer på nätverket, oavsett vilken server deras konto tillhör. + title: Låt oss få igång dig på %{domain}. status: account_status: Kontostatus confirming: Väntar på att e-postbekräftelsen ska slutföras. diff --git a/config/locales/th.yml b/config/locales/th.yml index 2a56a6cdf0..a941977e61 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -665,6 +665,7 @@ th: disabled: ให้กับไม่มีใคร users: ให้กับผู้ใช้ในเซิร์ฟเวอร์ที่เข้าสู่ระบบ registrations: + preamble: ควบคุมผู้ที่สามารถสร้างบัญชีในเซิร์ฟเวอร์ของคุณ title: การลงทะเบียน registrations_mode: modes: @@ -888,6 +889,7 @@ th: resend_confirmation: ส่งคำแนะนำการยืนยันใหม่ reset_password: ตั้งรหัสผ่านใหม่ rules: + preamble: มีการตั้งและบังคับใช้กฎโดยผู้ควบคุมของ %{domain} title: กฎพื้นฐานบางประการ security: ความปลอดภัย set_new_password: ตั้งรหัสผ่านใหม่ diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index ba69d52f24..9c0c2a74de 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1146,7 +1146,7 @@ zh-TW: success: 資料檔上傳成功,正在匯入,請稍候 types: blocking: 您封鎖的使用者名單 - bookmarks: 我的最愛 + bookmarks: 書籤 domain_blocking: 域名封鎖名單 following: 您跟隨的使用者名單 muting: 您靜音的使用者名單 @@ -1282,7 +1282,7 @@ zh-TW: code_hint: 請輸入您驗證應用程式所產生的代碼以確認 description_html: 若您啟用使用驗證應用程式的兩階段驗證,您每次登入都需要輸入由您的手機所產生之 Token。 enable: 啟用 - instructions_html: "請用您手機上的 Google Authenticator 或類似的 TOTP 應用程式掃描此 QR code。從現在開始,該應用程式將會產生您每次登入都必須輸入的權杖。" + instructions_html: "請用您手機上的 Google Authenticator 或類似的 TOTP 應用程式掃描此 QR code。從現在開始,該應用程式將會產生您每次登入都必須輸入的 token。" manual_instructions: 如果您無法掃描 QR code,則必須手動輸入此明文密碼: setup: 設定 wrong_code: 您輸入的驗證碼無效!伺服器時間或是裝置時間無誤嗎? @@ -1470,8 +1470,8 @@ zh-TW: keep_pinned_hint: 不會刪除您的釘選嘟文 keep_polls: 保留投票 keep_polls_hint: 不會刪除您的投票 - keep_self_bookmark: 保留您已標記為書簽之嘟文 - keep_self_bookmark_hint: 不會刪除您已標記為書簽之嘟文 + keep_self_bookmark: 保留您已標記為書籤之嘟文 + keep_self_bookmark_hint: 不會刪除您已標記為書籤之嘟文 keep_self_fav: 保留您已標記為最愛之嘟文 keep_self_fav_hint: 不會刪除您已標記為最愛之嘟文 min_age: From a5394980f22e061ec7e4f6df3f3b571624f5ca7d Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 9 Nov 2022 20:10:38 +0100 Subject: [PATCH 357/500] Fix NameError in Webfinger redirect handling in ActivityPub::FetchRemoteActorService (#20260) --- app/services/activitypub/fetch_remote_actor_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb index 17bf2f2876..db09c38d82 100644 --- a/app/services/activitypub/fetch_remote_actor_service.rb +++ b/app/services/activitypub/fetch_remote_actor_service.rb @@ -56,7 +56,7 @@ class ActivityPub::FetchRemoteActorService < BaseService @username, @domain = split_acct(webfinger.subject) unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? - raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" + raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{@uri} (stopped at #{@username}@#{@domain})" end raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri From 45ce858fd92e2af75989369088631087c9cd6033 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 02:31:09 +0100 Subject: [PATCH 358/500] Fix `mailers` queue not being used for mailers (#20274) Regression since Rails 6.1 --- config/application.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/application.rb b/config/application.rb index 2e54eb6f67..4d6c7ebf10 100644 --- a/config/application.rb +++ b/config/application.rb @@ -163,6 +163,7 @@ module Mastodon # config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')] config.active_job.queue_adapter = :sidekiq + config.action_mailer.deliver_later_queue_name = 'mailers' config.middleware.use Rack::Attack config.middleware.use Mastodon::RackMiddleware From b280a255c4ee7117fa2b141a200b76975a727a7f Mon Sep 17 00:00:00 2001 From: trwnh Date: Wed, 9 Nov 2022 21:02:05 -0600 Subject: [PATCH 359/500] Change `master` branch to `main` branch (#20290) --- config/deploy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/deploy.rb b/config/deploy.rb index 2bdb115950..b69a830674 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -3,7 +3,7 @@ lock '3.17.1' set :repo_url, ENV.fetch('REPO', 'https://github.com/mastodon/mastodon.git') -set :branch, ENV.fetch('BRANCH', 'master') +set :branch, ENV.fetch('BRANCH', 'main') set :application, 'mastodon' set :rbenv_type, :user From 0cd0786aef140ea41aa229cd52ac67867259a3f5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 05:34:42 +0100 Subject: [PATCH 360/500] Revert filtering public timelines by locale by default (#20294) --- app/controllers/api/v1/timelines/public_controller.rb | 1 - app/models/public_feed.rb | 11 ++--------- app/models/tag_feed.rb | 1 - 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/app/controllers/api/v1/timelines/public_controller.rb b/app/controllers/api/v1/timelines/public_controller.rb index 15b91d63ea..d253b744f9 100644 --- a/app/controllers/api/v1/timelines/public_controller.rb +++ b/app/controllers/api/v1/timelines/public_controller.rb @@ -35,7 +35,6 @@ class Api::V1::Timelines::PublicController < Api::BaseController def public_feed PublicFeed.new( current_account, - locale: content_locale, local: truthy_param?(:local), remote: truthy_param?(:remote), only_media: truthy_param?(:only_media) diff --git a/app/models/public_feed.rb b/app/models/public_feed.rb index 2cf9206d2b..1cfd9a500c 100644 --- a/app/models/public_feed.rb +++ b/app/models/public_feed.rb @@ -8,7 +8,6 @@ class PublicFeed # @option [Boolean] :local # @option [Boolean] :remote # @option [Boolean] :only_media - # @option [String] :locale def initialize(account, options = {}) @account = account @options = options @@ -28,7 +27,7 @@ class PublicFeed scope.merge!(remote_only_scope) if remote_only? scope.merge!(account_filters_scope) if account? scope.merge!(media_only_scope) if media_only? - scope.merge!(language_scope) + scope.merge!(language_scope) if account&.chosen_languages.present? scope.cache_ids.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id) end @@ -86,13 +85,7 @@ class PublicFeed end def language_scope - if account&.chosen_languages.present? - Status.where(language: account.chosen_languages) - elsif @options[:locale].present? - Status.where(language: @options[:locale]) - else - Status.all - end + Status.where(language: account.chosen_languages) end def account_filters_scope diff --git a/app/models/tag_feed.rb b/app/models/tag_feed.rb index 8502b79afa..b8cd63557e 100644 --- a/app/models/tag_feed.rb +++ b/app/models/tag_feed.rb @@ -12,7 +12,6 @@ class TagFeed < PublicFeed # @option [Boolean] :local # @option [Boolean] :remote # @option [Boolean] :only_media - # @option [String] :locale def initialize(tag, account, options = {}) @tag = tag super(account, options) From 78a6b871fe3dae308380ea88132ddadc86a1431e Mon Sep 17 00:00:00 2001 From: James Tucker Date: Wed, 9 Nov 2022 20:49:30 -0800 Subject: [PATCH 361/500] Improve performance by avoiding regex construction (#20215) ```ruby 10.times { p /#{FOO}/.object_id } 10.times { p FOO_RE.object_id } ``` --- app/controllers/api/v1/tags_controller.rb | 2 +- app/lib/hashtag_normalizer.rb | 2 +- app/models/account.rb | 3 ++- app/models/custom_emoji.rb | 3 ++- app/models/featured_tag.rb | 2 +- app/models/tag.rb | 13 ++++++++----- app/services/account_search_service.rb | 4 +++- app/services/resolve_url_service.rb | 4 +++- 8 files changed, 21 insertions(+), 12 deletions(-) diff --git a/app/controllers/api/v1/tags_controller.rb b/app/controllers/api/v1/tags_controller.rb index 9e5c53330a..32f71bdce2 100644 --- a/app/controllers/api/v1/tags_controller.rb +++ b/app/controllers/api/v1/tags_controller.rb @@ -24,7 +24,7 @@ class Api::V1::TagsController < Api::BaseController private def set_or_create_tag - return not_found unless /\A(#{Tag::HASHTAG_NAME_RE})\z/.match?(params[:id]) + return not_found unless Tag::HASHTAG_NAME_RE.match?(params[:id]) @tag = Tag.find_normalized(params[:id]) || Tag.new(name: Tag.normalize(params[:id]), display_name: params[:id]) end end diff --git a/app/lib/hashtag_normalizer.rb b/app/lib/hashtag_normalizer.rb index c1f99e1638..49fa6101de 100644 --- a/app/lib/hashtag_normalizer.rb +++ b/app/lib/hashtag_normalizer.rb @@ -8,7 +8,7 @@ class HashtagNormalizer private def remove_invalid_characters(str) - str.gsub(/[^[:alnum:]#{Tag::HASHTAG_SEPARATORS}]/, '') + str.gsub(Tag::HASHTAG_INVALID_CHARS_RE, '') end def ascii_folding(str) diff --git a/app/models/account.rb b/app/models/account.rb index be1968fa69..cc3a8f3df4 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -64,6 +64,7 @@ class Account < ApplicationRecord USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:word:]\.\-]+[[:word:]]+)?)/i URL_PREFIX_RE = /\Ahttp(s?):\/\/[^\/]+/ + USERNAME_ONLY_RE = /\A#{USERNAME_RE}\z/i include Attachmentable include AccountAssociations @@ -84,7 +85,7 @@ class Account < ApplicationRecord validates_with UniqueUsernameValidator, if: -> { will_save_change_to_username? } # Remote user validations - validates :username, format: { with: /\A#{USERNAME_RE}\z/i }, if: -> { !local? && will_save_change_to_username? } + validates :username, format: { with: USERNAME_ONLY_RE }, if: -> { !local? && will_save_change_to_username? } # Local user validations validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' } diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb index 077ce559af..7b19cd2ac9 100644 --- a/app/models/custom_emoji.rb +++ b/app/models/custom_emoji.rb @@ -30,6 +30,7 @@ class CustomEmoji < ApplicationRecord SCAN_RE = /(?<=[^[:alnum:]:]|\n|^) :(#{SHORTCODE_RE_FRAGMENT}): (?=[^[:alnum:]:]|$)/x + SHORTCODE_ONLY_RE = /\A#{SHORTCODE_RE_FRAGMENT}\z/ IMAGE_MIME_TYPES = %w(image/png image/gif image/webp).freeze @@ -41,7 +42,7 @@ class CustomEmoji < ApplicationRecord before_validation :downcase_domain validates_attachment :image, content_type: { content_type: IMAGE_MIME_TYPES }, presence: true, size: { less_than: LIMIT } - validates :shortcode, uniqueness: { scope: :domain }, format: { with: /\A#{SHORTCODE_RE_FRAGMENT}\z/ }, length: { minimum: 2 } + validates :shortcode, uniqueness: { scope: :domain }, format: { with: SHORTCODE_ONLY_RE }, length: { minimum: 2 } scope :local, -> { where(domain: nil) } scope :remote, -> { where.not(domain: nil) } diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index debae22121..70f949b6ac 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -17,7 +17,7 @@ class FeaturedTag < ApplicationRecord belongs_to :account, inverse_of: :featured_tags belongs_to :tag, inverse_of: :featured_tags, optional: true # Set after validation - validates :name, presence: true, format: { with: /\A(#{Tag::HASHTAG_NAME_RE})\z/i }, on: :create + validates :name, presence: true, format: { with: Tag::HASHTAG_NAME_RE }, on: :create validate :validate_tag_uniqueness, on: :create validate :validate_featured_tags_limit, on: :create diff --git a/app/models/tag.rb b/app/models/tag.rb index 8929baf66f..b66f854236 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -27,11 +27,14 @@ class Tag < ApplicationRecord has_many :followers, through: :passive_relationships, source: :account HASHTAG_SEPARATORS = "_\u00B7\u200c" - HASHTAG_NAME_RE = "([[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_])|([[:word:]_]*[[:alpha:]][[:word:]_]*)" - HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_RE})/i + HASHTAG_NAME_PAT = "([[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_])|([[:word:]_]*[[:alpha:]][[:word:]_]*)" - validates :name, presence: true, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i } - validates :display_name, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i } + HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_PAT})/i + HASHTAG_NAME_RE = /\A(#{HASHTAG_NAME_PAT})\z/i + HASHTAG_INVALID_CHARS_RE = /[^[:alnum:]#{HASHTAG_SEPARATORS}]/ + + validates :name, presence: true, format: { with: HASHTAG_NAME_RE } + validates :display_name, format: { with: HASHTAG_NAME_RE } validate :validate_name_change, if: -> { !new_record? && name_changed? } validate :validate_display_name_change, if: -> { !new_record? && display_name_changed? } @@ -102,7 +105,7 @@ class Tag < ApplicationRecord names = Array(name_or_names).map { |str| [normalize(str), str] }.uniq(&:first) names.map do |(normalized_name, display_name)| - tag = matching_name(normalized_name).first || create(name: normalized_name, display_name: display_name.gsub(/[^[:alnum:]#{HASHTAG_SEPARATORS}]/, '')) + tag = matching_name(normalized_name).first || create(name: normalized_name, display_name: display_name.gsub(HASHTAG_INVALID_CHARS_RE, '')) yield tag if block_given? diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 9f2330a947..85538870bf 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -3,6 +3,8 @@ class AccountSearchService < BaseService attr_reader :query, :limit, :offset, :options, :account + MENTION_ONLY_RE = /\A#{Account::MENTION_RE}\z/i + # Min. number of characters to look for non-exact matches MIN_QUERY_LENGTH = 5 @@ -180,7 +182,7 @@ class AccountSearchService < BaseService end def username_complete? - query.include?('@') && "@#{query}".match?(/\A#{Account::MENTION_RE}\Z/) + query.include?('@') && "@#{query}".match?(MENTION_ONLY_RE) end def likely_acct? diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb index 37c856cf86..52f35daf37 100644 --- a/app/services/resolve_url_service.rb +++ b/app/services/resolve_url_service.rb @@ -4,6 +4,8 @@ class ResolveURLService < BaseService include JsonLdHelper include Authorization + USERNAME_STATUS_RE = %r{/@(?#{Account::USERNAME_RE})/(?[0-9]+)\Z} + def call(url, on_behalf_of: nil) @url = url @on_behalf_of = on_behalf_of @@ -43,7 +45,7 @@ class ResolveURLService < BaseService # We don't have an index on `url`, so try guessing the `uri` from `url` parsed_url = Addressable::URI.parse(@url) - parsed_url.path.match(%r{/@(?#{Account::USERNAME_RE})/(?[0-9]+)\Z}) do |matched| + parsed_url.path.match(USERNAME_STATUS_RE) do |matched| parsed_url.path = "/users/#{matched[:username]}/statuses/#{matched[:status_id]}" scope = scope.or(Status.where(uri: parsed_url.to_s, url: @url)) end From 9965a23b043b0ab511e083c44acda891ea441859 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 06:27:45 +0100 Subject: [PATCH 362/500] Change link verification to ignore IDN domains (#20295) Fix #3833 --- app/models/account/field.rb | 16 +++++++++++++++- spec/models/account/field_spec.rb | 8 ++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/models/account/field.rb b/app/models/account/field.rb index 4e0fd9230d..d74f90b2bc 100644 --- a/app/models/account/field.rb +++ b/app/models/account/field.rb @@ -3,6 +3,7 @@ class Account::Field < ActiveModelSerializers::Model MAX_CHARACTERS_LOCAL = 255 MAX_CHARACTERS_COMPAT = 2_047 + ACCEPTED_SCHEMES = %w(http https).freeze attributes :name, :value, :verified_at, :account @@ -34,7 +35,20 @@ class Account::Field < ActiveModelSerializers::Model end def verifiable? - value_for_verification.present? && /\A#{FetchLinkCardService::URL_PATTERN}\z/.match?(value_for_verification) + return false if value_for_verification.blank? + + # This is slower than checking through a regular expression, but we + # need to confirm that it's not an IDN domain. + + parsed_url = Addressable::URI.parse(value_for_verification) + + ACCEPTED_SCHEMES.include?(parsed_url.scheme) && + parsed_url.user.nil? && + parsed_url.password.nil? && + parsed_url.host.present? && + parsed_url.normalized_host == parsed_url.host + rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError + false end def requires_verification? diff --git a/spec/models/account/field_spec.rb b/spec/models/account/field_spec.rb index 7d61a2c622..fcb2a884a1 100644 --- a/spec/models/account/field_spec.rb +++ b/spec/models/account/field_spec.rb @@ -66,6 +66,14 @@ RSpec.describe Account::Field, type: :model do end end + context 'for an IDN URL' do + let(:value) { 'http://twitter.com∕dougallj∕status∕1590357240443437057.ê.cc/twitter.html' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end + context 'for text that is not a URL' do let(:value) { 'Hello world' } From e37e8deb0ff207d36bb359ce395e2888dacc216d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 07:32:37 +0100 Subject: [PATCH 363/500] Fix profile header being cut off in light theme in web UI (#20298) --- app/javascript/styles/mastodon-light/diff.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index d960070d62..1214d2519f 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -78,7 +78,7 @@ html { .column-header__back-button, .column-header__button, .column-header__button.active, -.account__header__bar { +.account__header { background: $white; } From ef582dc4f2fe53b08988faf8d51f567ac32e5b93 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 08:49:35 +0100 Subject: [PATCH 364/500] Add option to open original page in dropdowns of remote content in web UI (#20299) Change profile picture click to open profile picture in modal in web UI --- .../mastodon/components/status_action_bar.js | 25 +++----- .../features/account/components/header.js | 28 ++++++--- .../account_timeline/components/header.js | 6 ++ .../containers/header_container.js | 7 +++ .../features/status/components/action_bar.js | 24 +++----- .../features/ui/components/image_modal.js | 59 +++++++++++++++++++ .../features/ui/components/modal_root.js | 2 + 7 files changed, 111 insertions(+), 40 deletions(-) create mode 100644 app/javascript/mastodon/features/ui/components/image_modal.js diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index b07837dcaf..2a1fedb93b 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -45,6 +45,7 @@ const messages = defineMessages({ unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, filter: { id: 'status.filter', defaultMessage: 'Filter this post' }, + openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' }, }); const mapStateToProps = (state, { status }) => ({ @@ -221,25 +222,10 @@ class StatusActionBar extends ImmutablePureComponent { } handleCopy = () => { - const url = this.props.status.get('url'); - const textarea = document.createElement('textarea'); - - textarea.textContent = url; - textarea.style.position = 'fixed'; - - document.body.appendChild(textarea); - - try { - textarea.select(); - document.execCommand('copy'); - } catch (e) { - - } finally { - document.body.removeChild(textarea); - } + const url = this.props.status.get('url'); + navigator.clipboard.writeText(url); } - handleHideClick = () => { this.props.onFilter(); } @@ -254,12 +240,17 @@ class StatusActionBar extends ImmutablePureComponent { const mutingConversation = status.get('muted'); const account = status.get('account'); const writtenByMe = status.getIn(['account', 'id']) === me; + const isRemote = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']); let menu = []; menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen }); if (publicStatus) { + if (isRemote) { + menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') }); + } + menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy }); menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed }); } diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index 8d3b3c5e64..c38eea55b3 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -53,6 +53,7 @@ const messages = defineMessages({ add_or_remove_from_list: { id: 'account.add_or_remove_from_list', defaultMessage: 'Add or Remove from lists' }, admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, languages: { id: 'account.languages', defaultMessage: 'Change subscribed languages' }, + openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' }, }); const titleFromAccount = account => { @@ -97,6 +98,7 @@ class Header extends ImmutablePureComponent { onEditAccountNote: PropTypes.func.isRequired, onChangeLanguages: PropTypes.func.isRequired, onInteractionModal: PropTypes.func.isRequired, + onOpenAvatar: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -140,6 +142,13 @@ class Header extends ImmutablePureComponent { } } + handleAvatarClick = e => { + if (e.button === 0 && !(e.ctrlKey || e.metaKey)) { + e.preventDefault(); + this.props.onOpenAvatar(); + } + } + render () { const { account, hidden, intl, domain } = this.props; const { signedIn } = this.context.identity; @@ -148,7 +157,9 @@ class Header extends ImmutablePureComponent { return null; } - const suspended = account.get('suspended'); + const suspended = account.get('suspended'); + const isRemote = account.get('acct') !== account.get('username'); + const remoteDomain = isRemote ? account.get('acct').split('@')[1] : null; let info = []; let actionBtn = ''; @@ -200,6 +211,11 @@ class Header extends ImmutablePureComponent { menu.push(null); } + if (isRemote) { + menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: account.get('url') }); + menu.push(null); + } + if ('share' in navigator) { menu.push({ text: intl.formatMessage(messages.share, { name: account.get('username') }), action: this.handleShare }); menu.push(null); @@ -250,15 +266,13 @@ class Header extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.props.onReport }); } - if (signedIn && account.get('acct') !== account.get('username')) { - const domain = account.get('acct').split('@')[1]; - + if (signedIn && isRemote) { menu.push(null); if (account.getIn(['relationship', 'domain_blocking'])) { - menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.props.onUnblockDomain }); + menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain: remoteDomain }), action: this.props.onUnblockDomain }); } else { - menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.props.onBlockDomain }); + menu.push({ text: intl.formatMessage(messages.blockDomain, { domain: remoteDomain }), action: this.props.onBlockDomain }); } } @@ -296,7 +310,7 @@ class Header extends ImmutablePureComponent {
      - + diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js index f31848f412..d67e307ffc 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.js +++ b/app/javascript/mastodon/features/account_timeline/components/header.js @@ -24,6 +24,7 @@ export default class Header extends ImmutablePureComponent { onAddToList: PropTypes.func.isRequired, onChangeLanguages: PropTypes.func.isRequired, onInteractionModal: PropTypes.func.isRequired, + onOpenAvatar: PropTypes.func.isRequired, hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -101,6 +102,10 @@ export default class Header extends ImmutablePureComponent { this.props.onInteractionModal(this.props.account); } + handleOpenAvatar = () => { + this.props.onOpenAvatar(this.props.account); + } + render () { const { account, hidden, hideTabs } = this.props; @@ -129,6 +134,7 @@ export default class Header extends ImmutablePureComponent { onEditAccountNote={this.handleEditAccountNote} onChangeLanguages={this.handleChangeLanguages} onInteractionModal={this.handleInteractionModal} + onOpenAvatar={this.handleOpenAvatar} domain={this.props.domain} hidden={hidden} /> diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.js index 1d09cd1efc..f53cd24807 100644 --- a/app/javascript/mastodon/features/account_timeline/containers/header_container.js +++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.js @@ -152,6 +152,13 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ })); }, + onOpenAvatar (account) { + dispatch(openModal('IMAGE', { + src: account.get('avatar'), + alt: account.get('acct'), + })); + }, + }); export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header)); diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index fc82aa9c2e..c1242754cc 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -39,6 +39,7 @@ const messages = defineMessages({ unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, + openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' }, }); const mapStateToProps = (state, { status }) => ({ @@ -174,22 +175,8 @@ class ActionBar extends React.PureComponent { } handleCopy = () => { - const url = this.props.status.get('url'); - const textarea = document.createElement('textarea'); - - textarea.textContent = url; - textarea.style.position = 'fixed'; - - document.body.appendChild(textarea); - - try { - textarea.select(); - document.execCommand('copy'); - } catch (e) { - - } finally { - document.body.removeChild(textarea); - } + const url = this.props.status.get('url'); + navigator.clipboard.writeText(url); } render () { @@ -201,10 +188,15 @@ class ActionBar extends React.PureComponent { const mutingConversation = status.get('muted'); const account = status.get('account'); const writtenByMe = status.getIn(['account', 'id']) === me; + const isRemote = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']); let menu = []; if (publicStatus) { + if (isRemote) { + menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') }); + } + menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy }); menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed }); menu.push(null); diff --git a/app/javascript/mastodon/features/ui/components/image_modal.js b/app/javascript/mastodon/features/ui/components/image_modal.js new file mode 100644 index 0000000000..7522c3da55 --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/image_modal.js @@ -0,0 +1,59 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import { defineMessages, injectIntl } from 'react-intl'; +import IconButton from 'mastodon/components/icon_button'; +import ImageLoader from './image_loader'; + +const messages = defineMessages({ + close: { id: 'lightbox.close', defaultMessage: 'Close' }, +}); + +export default @injectIntl +class ImageModal extends React.PureComponent { + + static propTypes = { + src: PropTypes.string.isRequired, + alt: PropTypes.string.isRequired, + onClose: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + }; + + state = { + navigationHidden: false, + }; + + toggleNavigation = () => { + this.setState(prevState => ({ + navigationHidden: !prevState.navigationHidden, + })); + }; + + render () { + const { intl, src, alt, onClose } = this.props; + const { navigationHidden } = this.state; + + const navigationClassName = classNames('media-modal__navigation', { + 'media-modal__navigation--hidden': navigationHidden, + }); + + return ( +
      +
      + +
      + +
      + +
      +
      + ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 484ebbd8b6..6c4aabae5c 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -12,6 +12,7 @@ import BoostModal from './boost_modal'; import AudioModal from './audio_modal'; import ConfirmationModal from './confirmation_modal'; import FocalPointModal from './focal_point_modal'; +import ImageModal from './image_modal'; import { MuteModal, BlockModal, @@ -31,6 +32,7 @@ const MODAL_COMPONENTS = { 'MEDIA': () => Promise.resolve({ default: MediaModal }), 'VIDEO': () => Promise.resolve({ default: VideoModal }), 'AUDIO': () => Promise.resolve({ default: AudioModal }), + 'IMAGE': () => Promise.resolve({ default: ImageModal }), 'BOOST': () => Promise.resolve({ default: BoostModal }), 'CONFIRM': () => Promise.resolve({ default: ConfirmationModal }), 'MUTE': MuteModal, From 16122761c5eca0f25f17968a208a24ddd99e073e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 08:49:48 +0100 Subject: [PATCH 365/500] Fix confusing wording in interaction modal in web UI (#20302) --- app/javascript/mastodon/features/interaction_modal/index.js | 2 +- app/javascript/mastodon/locales/en.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/interaction_modal/index.js b/app/javascript/mastodon/features/interaction_modal/index.js index 9f77479033..d4535378f0 100644 --- a/app/javascript/mastodon/features/interaction_modal/index.js +++ b/app/javascript/mastodon/features/interaction_modal/index.js @@ -150,7 +150,7 @@ class InteractionModal extends React.PureComponent {

      -

      +

      diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 8e05412f5f..2de9846516 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -293,7 +293,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", From 7bdb2433f1a6e0b6a5e4df068003ac6e2e296048 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 08:49:59 +0100 Subject: [PATCH 366/500] Change larger reblogs/favourites numbers to be shortened in web UI (#20303) --- app/javascript/mastodon/components/animated_number.js | 6 +++--- app/javascript/styles/mastodon/components.scss | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/components/animated_number.js b/app/javascript/mastodon/components/animated_number.js index fbe948c5b0..b1aebc73ec 100644 --- a/app/javascript/mastodon/components/animated_number.js +++ b/app/javascript/mastodon/components/animated_number.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { FormattedNumber } from 'react-intl'; +import ShortNumber from 'mastodon/components/short_number'; import TransitionMotion from 'react-motion/lib/TransitionMotion'; import spring from 'react-motion/lib/spring'; import { reduceMotion } from 'mastodon/initial_state'; @@ -51,7 +51,7 @@ export default class AnimatedNumber extends React.PureComponent { const { direction } = this.state; if (reduceMotion) { - return obfuscate ? obfuscatedCount(value) : ; + return obfuscate ? obfuscatedCount(value) : ; } const styles = [{ @@ -65,7 +65,7 @@ export default class AnimatedNumber extends React.PureComponent { {items => ( {items.map(({ key, data, style }) => ( - 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}>{obfuscate ? obfuscatedCount(data) : } + 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}>{obfuscate ? obfuscatedCount(data) : } ))} )} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 57a383476e..ecbf6afc0b 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1303,6 +1303,7 @@ display: inline-block; font-weight: 500; font-size: 12px; + line-height: 17px; margin-left: 6px; } From 8fdbb4d00d371e7a900bec3a262216d95a784d52 Mon Sep 17 00:00:00 2001 From: Effy Elden Date: Thu, 10 Nov 2022 18:50:45 +1100 Subject: [PATCH 367/500] Remove unused timeline_container to fix linter errors (#20305) --- .../mastodon/containers/timeline_container.js | 62 ------------------- 1 file changed, 62 deletions(-) delete mode 100644 app/javascript/mastodon/containers/timeline_container.js diff --git a/app/javascript/mastodon/containers/timeline_container.js b/app/javascript/mastodon/containers/timeline_container.js deleted file mode 100644 index ed8095f90e..0000000000 --- a/app/javascript/mastodon/containers/timeline_container.js +++ /dev/null @@ -1,62 +0,0 @@ -import React, { Fragment } from 'react'; -import ReactDOM from 'react-dom'; -import { Provider } from 'react-redux'; -import PropTypes from 'prop-types'; -import configureStore from '../store/configureStore'; -import { hydrateStore } from '../actions/store'; -import { IntlProvider, addLocaleData } from 'react-intl'; -import { getLocale } from '../locales'; -import PublicTimeline from '../features/standalone/public_timeline'; -import HashtagTimeline from '../features/standalone/hashtag_timeline'; -import ModalContainer from '../features/ui/containers/modal_container'; -import initialState from '../initial_state'; - -const { localeData, messages } = getLocale(); -addLocaleData(localeData); - -const store = configureStore(); - -if (initialState) { - store.dispatch(hydrateStore(initialState)); -} - -export default class TimelineContainer extends React.PureComponent { - - static propTypes = { - locale: PropTypes.string.isRequired, - hashtag: PropTypes.string, - local: PropTypes.bool, - }; - - static defaultProps = { - local: !initialState.settings.known_fediverse, - }; - - render () { - const { locale, hashtag, local } = this.props; - - let timeline; - - if (hashtag) { - timeline = ; - } else { - timeline = ; - } - - return ( - - - - {timeline} - - {ReactDOM.createPortal( - , - document.getElementById('modal-container'), - )} - - - - ); - } - -} From d3a29a136cd443fa3bef3d2d457297963a4feef4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 07:32:37 +0100 Subject: [PATCH 368/500] [Glitch] Fix profile header being cut off in light theme in web UI Port e37e8deb0ff207d36bb359ce395e2888dacc216d to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/mastodon-light/diff.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss index 1fe3d7a511..22828c7d18 100644 --- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss +++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss @@ -78,7 +78,7 @@ html { .column-header__back-button, .column-header__button, .column-header__button.active, -.account__header__bar { +.account__header { background: $white; } From 41ea39903da069715c9f670e1ca852c994e645c7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 08:49:48 +0100 Subject: [PATCH 369/500] [Glitch] Fix confusing wording in interaction modal in web UI Port 16122761c5eca0f25f17968a208a24ddd99e073e to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/interaction_modal/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/interaction_modal/index.js b/app/javascript/flavours/glitch/features/interaction_modal/index.js index 4cd8e51de8..b71c041c9d 100644 --- a/app/javascript/flavours/glitch/features/interaction_modal/index.js +++ b/app/javascript/flavours/glitch/features/interaction_modal/index.js @@ -150,7 +150,7 @@ class InteractionModal extends React.PureComponent {

      -

      +

      From c722c4cce8d3f4a2a8b9ec74ad9827d16f996264 Mon Sep 17 00:00:00 2001 From: Effy Elden Date: Thu, 10 Nov 2022 18:50:45 +1100 Subject: [PATCH 370/500] [Glitch] Remove unused timeline_container to fix linter errors Port 8fdbb4d00d371e7a900bec3a262216d95a784d52 to glitch-soc Signed-off-by: Claire --- .../glitch/containers/timeline_container.js | 62 ------------------- 1 file changed, 62 deletions(-) delete mode 100644 app/javascript/flavours/glitch/containers/timeline_container.js diff --git a/app/javascript/flavours/glitch/containers/timeline_container.js b/app/javascript/flavours/glitch/containers/timeline_container.js deleted file mode 100644 index 838bcd390d..0000000000 --- a/app/javascript/flavours/glitch/containers/timeline_container.js +++ /dev/null @@ -1,62 +0,0 @@ -import React, { Fragment } from 'react'; -import ReactDOM from 'react-dom'; -import { Provider } from 'react-redux'; -import PropTypes from 'prop-types'; -import configureStore from 'flavours/glitch/store/configureStore'; -import { hydrateStore } from 'flavours/glitch/actions/store'; -import { IntlProvider, addLocaleData } from 'react-intl'; -import { getLocale } from 'mastodon/locales'; -import PublicTimeline from 'flavours/glitch/features/standalone/public_timeline'; -import HashtagTimeline from 'flavours/glitch/features/standalone/hashtag_timeline'; -import ModalContainer from 'flavours/glitch/features/ui/containers/modal_container'; -import initialState from 'flavours/glitch/initial_state'; - -const { localeData, messages } = getLocale(); -addLocaleData(localeData); - -const store = configureStore(); - -if (initialState) { - store.dispatch(hydrateStore(initialState)); -} - -export default class TimelineContainer extends React.PureComponent { - - static propTypes = { - locale: PropTypes.string.isRequired, - hashtag: PropTypes.string, - local: PropTypes.bool, - }; - - static defaultProps = { - local: !initialState.settings.known_fediverse, - }; - - render () { - const { locale, hashtag, local } = this.props; - - let timeline; - - if (hashtag) { - timeline = ; - } else { - timeline = ; - } - - return ( - - - - {timeline} - - {ReactDOM.createPortal( - , - document.getElementById('modal-container'), - )} - - - - ); - } - -} From 65b6c4f6df52e755283ca5ea5cecf04f3152436d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 08:49:59 +0100 Subject: [PATCH 371/500] [Glitch] Change larger reblogs/favourites numbers to be shortened in web UI Port 7bdb2433f1a6e0b6a5e4df068003ac6e2e296048 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/components/animated_number.js | 6 +++--- .../flavours/glitch/styles/components/status.scss | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/components/animated_number.js b/app/javascript/flavours/glitch/components/animated_number.js index 4619aad587..9431c96f7b 100644 --- a/app/javascript/flavours/glitch/components/animated_number.js +++ b/app/javascript/flavours/glitch/components/animated_number.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { FormattedNumber } from 'react-intl'; +import ShortNumber from 'mastodon/components/short_number'; import TransitionMotion from 'react-motion/lib/TransitionMotion'; import spring from 'react-motion/lib/spring'; import { reduceMotion } from 'flavours/glitch/initial_state'; @@ -51,7 +51,7 @@ export default class AnimatedNumber extends React.PureComponent { const { direction } = this.state; if (reduceMotion) { - return obfuscate ? obfuscatedCount(value) : ; + return obfuscate ? obfuscatedCount(value) : ; } const styles = [{ @@ -65,7 +65,7 @@ export default class AnimatedNumber extends React.PureComponent { {items => ( {items.map(({ key, data, style }) => ( - 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}>{obfuscate ? obfuscatedCount(data) : } + 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}>{obfuscate ? obfuscatedCount(data) : } ))} )} diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss index bd46017ab3..054110e410 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -659,6 +659,7 @@ display: inline-block; font-weight: 500; font-size: 12px; + line-height: 17px; margin-left: 6px; } From 099b3011aafe417c87de0b566ae72836228d793f Mon Sep 17 00:00:00 2001 From: Sasha Sorokin <10401817+Brawaru@users.noreply.github.com> Date: Tue, 8 Nov 2022 17:31:32 +0100 Subject: [PATCH 372/500] [Glitch] Remove aria-pressed where it's redundant Port d055d751720b7494ba990a43434b73e17596b5e8 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/column_header.js | 1 - app/javascript/flavours/glitch/components/icon_button.js | 3 --- .../flavours/glitch/components/status_action_bar.js | 6 +++--- .../flavours/glitch/features/hashtag_timeline/index.js | 2 +- .../flavours/glitch/features/home_timeline/index.js | 1 - .../glitch/features/picture_in_picture/components/footer.js | 4 ++-- app/javascript/flavours/glitch/features/status/index.js | 2 +- 7 files changed, 7 insertions(+), 12 deletions(-) diff --git a/app/javascript/flavours/glitch/components/column_header.js b/app/javascript/flavours/glitch/components/column_header.js index 3df3597455..0f89b3a97b 100644 --- a/app/javascript/flavours/glitch/components/column_header.js +++ b/app/javascript/flavours/glitch/components/column_header.js @@ -157,7 +157,6 @@ class ColumnHeader extends React.PureComponent { className={collapsibleButtonClassName} title={formatMessage(collapsed ? messages.show : messages.hide)} aria-label={formatMessage(collapsed ? messages.show : messages.hide)} - aria-pressed={collapsed ? 'false' : 'true'} onClick={this.handleToggleClick} > diff --git a/app/javascript/flavours/glitch/components/icon_button.js b/app/javascript/flavours/glitch/components/icon_button.js index 42f5d4bc35..41a95e92f7 100644 --- a/app/javascript/flavours/glitch/components/icon_button.js +++ b/app/javascript/flavours/glitch/components/icon_button.js @@ -18,7 +18,6 @@ export default class IconButton extends React.PureComponent { onKeyPress: PropTypes.func, size: PropTypes.number, active: PropTypes.bool, - pressed: PropTypes.bool, expanded: PropTypes.bool, style: PropTypes.object, activeStyle: PropTypes.object, @@ -111,7 +110,6 @@ export default class IconButton extends React.PureComponent { icon, inverted, overlay, - pressed, tabIndex, title, counter, @@ -156,7 +154,6 @@ export default class IconButton extends React.PureComponent { return ( ); diff --git a/app/javascript/flavours/glitch/features/home_timeline/index.js b/app/javascript/flavours/glitch/features/home_timeline/index.js index 23d0440a91..5ed108ad2f 100644 --- a/app/javascript/flavours/glitch/features/home_timeline/index.js +++ b/app/javascript/flavours/glitch/features/home_timeline/index.js @@ -131,7 +131,6 @@ class HomeTimeline extends React.PureComponent { className={classNames('column-header__button', { 'active': showAnnouncements })} title={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)} aria-label={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)} - aria-pressed={showAnnouncements ? 'true' : 'false'} onClick={this.handleToggleAnnouncementsClick} > diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.js b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.js index 86e24e38f5..f05a763e05 100644 --- a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.js +++ b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.js @@ -207,8 +207,8 @@ class Footer extends ImmutablePureComponent { return (
      {replyButton} - - + + {withOpenButton && }
      ); diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js index f59e8c7f68..aaa9c7928f 100644 --- a/app/javascript/flavours/glitch/features/status/index.js +++ b/app/javascript/flavours/glitch/features/status/index.js @@ -648,7 +648,7 @@ class Status extends ImmutablePureComponent { showBackButton multiColumn={multiColumn} extraButton={( - + )} /> From c4d2c729245fab1dda31d0de73be9bc03217b06a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 08:49:35 +0100 Subject: [PATCH 373/500] [Glitch] Add option to open original page in dropdowns of remote content in web UI Port ef582dc4f2fe53b08988faf8d51f567ac32e5b93 to glitch-soc Signed-off-by: Claire --- .../glitch/components/status_action_bar.js | 23 +++----- .../features/account/components/header.js | 28 ++++++--- .../account_timeline/components/header.js | 6 ++ .../containers/header_container.js | 7 +++ .../features/status/components/action_bar.js | 24 +++----- .../features/ui/components/image_modal.js | 59 +++++++++++++++++++ .../features/ui/components/modal_root.js | 2 + 7 files changed, 110 insertions(+), 39 deletions(-) create mode 100644 app/javascript/flavours/glitch/features/ui/components/image_modal.js diff --git a/app/javascript/flavours/glitch/components/status_action_bar.js b/app/javascript/flavours/glitch/components/status_action_bar.js index df93f68660..977c98ccbc 100644 --- a/app/javascript/flavours/glitch/components/status_action_bar.js +++ b/app/javascript/flavours/glitch/components/status_action_bar.js @@ -42,6 +42,7 @@ const messages = defineMessages({ hide: { id: 'status.hide', defaultMessage: 'Hide toot' }, edited: { id: 'status.edited', defaultMessage: 'Edited {date}' }, filter: { id: 'status.filter', defaultMessage: 'Filter this post' }, + openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' }, }); export default @injectIntl @@ -182,22 +183,8 @@ class StatusActionBar extends ImmutablePureComponent { } handleCopy = () => { - const url = this.props.status.get('url'); - const textarea = document.createElement('textarea'); - - textarea.textContent = url; - textarea.style.position = 'fixed'; - - document.body.appendChild(textarea); - - try { - textarea.select(); - document.execCommand('copy'); - } catch (e) { - - } finally { - document.body.removeChild(textarea); - } + const url = this.props.status.get('url'); + navigator.clipboard.writeText(url); } handleHideClick = () => { @@ -216,6 +203,7 @@ class StatusActionBar extends ImmutablePureComponent { const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); const pinnableStatus = ['public', 'unlisted', 'private'].includes(status.get('visibility')); const writtenByMe = status.getIn(['account', 'id']) === me; + const isRemote = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']); let menu = []; let reblogIcon = 'retweet'; @@ -225,6 +213,9 @@ class StatusActionBar extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen }); if (publicStatus) { + if (isRemote) { + menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') }); + } menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy }); menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed }); } diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js index cf1494f057..93831b3e70 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.js +++ b/app/javascript/flavours/glitch/features/account/components/header.js @@ -53,6 +53,7 @@ const messages = defineMessages({ admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, add_account_note: { id: 'account.add_account_note', defaultMessage: 'Add note for @{name}' }, languages: { id: 'account.languages', defaultMessage: 'Change subscribed languages' }, + openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' }, }); const titleFromAccount = account => { @@ -97,6 +98,7 @@ class Header extends ImmutablePureComponent { onEditAccountNote: PropTypes.func.isRequired, onChangeLanguages: PropTypes.func.isRequired, onInteractionModal: PropTypes.func.isRequired, + onOpenAvatar: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -132,6 +134,13 @@ class Header extends ImmutablePureComponent { } } + handleAvatarClick = e => { + if (e.button === 0 && !(e.ctrlKey || e.metaKey)) { + e.preventDefault(); + this.props.onOpenAvatar(); + } + } + render () { const { account, hidden, intl, domain } = this.props; const { signedIn } = this.context.identity; @@ -142,7 +151,9 @@ class Header extends ImmutablePureComponent { const accountNote = account.getIn(['relationship', 'note']); - const suspended = account.get('suspended'); + const suspended = account.get('suspended'); + const isRemote = account.get('acct') !== account.get('username'); + const remoteDomain = isRemote ? account.get('acct').split('@')[1] : null; let info = []; let actionBtn = ''; @@ -199,6 +210,11 @@ class Header extends ImmutablePureComponent { menu.push(null); } + if (isRemote) { + menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: account.get('url') }); + menu.push(null); + } + if ('share' in navigator && !suspended) { menu.push({ text: intl.formatMessage(messages.share, { name: account.get('username') }), action: this.handleShare }); menu.push(null); @@ -253,15 +269,13 @@ class Header extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.props.onReport }); } - if (signedIn && account.get('acct') !== account.get('username')) { - const domain = account.get('acct').split('@')[1]; - + if (signedIn && isRemote) { menu.push(null); if (account.getIn(['relationship', 'domain_blocking'])) { - menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.props.onUnblockDomain }); + menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain: remoteDomain }), action: this.props.onUnblockDomain }); } else { - menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.props.onBlockDomain }); + menu.push({ text: intl.formatMessage(messages.blockDomain, { domain: remoteDomain }), action: this.props.onBlockDomain }); } } @@ -299,7 +313,7 @@ class Header extends ImmutablePureComponent {
      - + diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/header.js b/app/javascript/flavours/glitch/features/account_timeline/components/header.js index eb332e296a..90c4c9d513 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/header.js +++ b/app/javascript/flavours/glitch/features/account_timeline/components/header.js @@ -25,6 +25,7 @@ export default class Header extends ImmutablePureComponent { onAddToList: PropTypes.func.isRequired, onChangeLanguages: PropTypes.func.isRequired, onInteractionModal: PropTypes.func.isRequired, + onOpenAvatar: PropTypes.func.isRequired, hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, @@ -102,6 +103,10 @@ export default class Header extends ImmutablePureComponent { this.props.onInteractionModal(this.props.account); } + handleOpenAvatar = () => { + this.props.onOpenAvatar(this.props.account); + } + render () { const { account, hidden, hideTabs } = this.props; @@ -130,6 +135,7 @@ export default class Header extends ImmutablePureComponent { onEditAccountNote={this.handleEditAccountNote} onChangeLanguages={this.handleChangeLanguages} onInteractionModal={this.handleInteractionModal} + onOpenAvatar={this.handleOpenAvatar} domain={this.props.domain} hidden={hidden} /> diff --git a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js index a65463243c..25bcd01190 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js +++ b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js @@ -161,6 +161,13 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ })); }, + onOpenAvatar (account) { + dispatch(openModal('IMAGE', { + src: account.get('avatar'), + alt: account.get('acct'), + })); + }, + }); export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header)); diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.js b/app/javascript/flavours/glitch/features/status/components/action_bar.js index 0e21ca5cce..b6f8a98777 100644 --- a/app/javascript/flavours/glitch/features/status/components/action_bar.js +++ b/app/javascript/flavours/glitch/features/status/components/action_bar.js @@ -35,6 +35,7 @@ const messages = defineMessages({ admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' }, admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' }, copy: { id: 'status.copy', defaultMessage: 'Copy link to status' }, + openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' }, }); export default @injectIntl @@ -132,22 +133,8 @@ class ActionBar extends React.PureComponent { } handleCopy = () => { - const url = this.props.status.get('url'); - const textarea = document.createElement('textarea'); - - textarea.textContent = url; - textarea.style.position = 'fixed'; - - document.body.appendChild(textarea); - - try { - textarea.select(); - document.execCommand('copy'); - } catch (e) { - - } finally { - document.body.removeChild(textarea); - } + const url = this.props.status.get('url'); + navigator.clipboard.writeText(url); } render () { @@ -158,10 +145,15 @@ class ActionBar extends React.PureComponent { const pinnableStatus = ['public', 'unlisted', 'private'].includes(status.get('visibility')); const mutingConversation = status.get('muted'); const writtenByMe = status.getIn(['account', 'id']) === me; + const isRemote = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']); let menu = []; if (publicStatus) { + if (isRemote) { + menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') }); + } + menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy }); menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed }); menu.push(null); diff --git a/app/javascript/flavours/glitch/features/ui/components/image_modal.js b/app/javascript/flavours/glitch/features/ui/components/image_modal.js new file mode 100644 index 0000000000..a792b9be77 --- /dev/null +++ b/app/javascript/flavours/glitch/features/ui/components/image_modal.js @@ -0,0 +1,59 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import { defineMessages, injectIntl } from 'react-intl'; +import IconButton from 'flavours/glitch/components/icon_button'; +import ImageLoader from './image_loader'; + +const messages = defineMessages({ + close: { id: 'lightbox.close', defaultMessage: 'Close' }, +}); + +export default @injectIntl +class ImageModal extends React.PureComponent { + + static propTypes = { + src: PropTypes.string.isRequired, + alt: PropTypes.string.isRequired, + onClose: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + }; + + state = { + navigationHidden: false, + }; + + toggleNavigation = () => { + this.setState(prevState => ({ + navigationHidden: !prevState.navigationHidden, + })); + }; + + render () { + const { intl, src, alt, onClose } = this.props; + const { navigationHidden } = this.state; + + const navigationClassName = classNames('media-modal__navigation', { + 'media-modal__navigation--hidden': navigationHidden, + }); + + return ( +
      +
      + +
      + +
      + +
      +
      + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/ui/components/modal_root.js b/app/javascript/flavours/glitch/features/ui/components/modal_root.js index 93834f60e7..d2ee289488 100644 --- a/app/javascript/flavours/glitch/features/ui/components/modal_root.js +++ b/app/javascript/flavours/glitch/features/ui/components/modal_root.js @@ -15,6 +15,7 @@ import DoodleModal from './doodle_modal'; import ConfirmationModal from './confirmation_modal'; import FocalPointModal from './focal_point_modal'; import DeprecatedSettingsModal from './deprecated_settings_modal'; +import ImageModal from './image_modal'; import { OnboardingModal, MuteModal, @@ -38,6 +39,7 @@ const MODAL_COMPONENTS = { 'ONBOARDING': OnboardingModal, 'VIDEO': () => Promise.resolve({ default: VideoModal }), 'AUDIO': () => Promise.resolve({ default: AudioModal }), + 'IMAGE': () => Promise.resolve({ default: ImageModal }), 'BOOST': () => Promise.resolve({ default: BoostModal }), 'FAVOURITE': () => Promise.resolve({ default: FavouriteModal }), 'DOODLE': () => Promise.resolve({ default: DoodleModal }), From 89a6b76f999635e077e9469efd9d94cd6c6d6222 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Nov 2022 14:21:31 +0100 Subject: [PATCH 374/500] =?UTF-8?q?Fix=20color=20of=20the=20=E2=80=9CNo=20?= =?UTF-8?q?description=20added=E2=80=9C=20media=20upload=20warning=20on=20?= =?UTF-8?q?light=20theme=20(#20328)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/javascript/styles/mastodon-light/diff.scss | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 1214d2519f..928af8453e 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -203,7 +203,8 @@ html { // Change the colors used in compose-form .compose-form { .compose-form__modifiers { - .compose-form__upload__actions .icon-button { + .compose-form__upload__actions .icon-button, + .compose-form__upload__warning .icon-button { color: lighten($white, 7%); &:active, @@ -212,14 +213,6 @@ html { color: $white; } } - - .compose-form__upload-description input { - color: lighten($white, 7%); - - &::placeholder { - color: lighten($white, 7%); - } - } } .compose-form__buttons-wrapper { From f8e8e622e56262e810529cbe896d817cd28d5bbb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 14:21:51 +0100 Subject: [PATCH 375/500] Change incoming activity processing to happen in `ingress` queue (#20264) --- app/lib/admin/system_check/sidekiq_process_check.rb | 1 + app/workers/activitypub/processing_worker.rb | 2 +- config/sidekiq.yml | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/lib/admin/system_check/sidekiq_process_check.rb b/app/lib/admin/system_check/sidekiq_process_check.rb index 648811d6c1..d577b3bf3c 100644 --- a/app/lib/admin/system_check/sidekiq_process_check.rb +++ b/app/lib/admin/system_check/sidekiq_process_check.rb @@ -7,6 +7,7 @@ class Admin::SystemCheck::SidekiqProcessCheck < Admin::SystemCheck::BaseCheck mailers pull scheduler + ingress ).freeze def skip? diff --git a/app/workers/activitypub/processing_worker.rb b/app/workers/activitypub/processing_worker.rb index 4d06ad0796..5e36fab51e 100644 --- a/app/workers/activitypub/processing_worker.rb +++ b/app/workers/activitypub/processing_worker.rb @@ -3,7 +3,7 @@ class ActivityPub::ProcessingWorker include Sidekiq::Worker - sidekiq_options backtrace: true, retry: 8 + sidekiq_options queue: 'ingress', backtrace: true, retry: 8 def perform(actor_id, body, delivered_to_account_id = nil, actor_type = 'Account') case actor_type diff --git a/config/sidekiq.yml b/config/sidekiq.yml index 71e7cb33d8..05c5b28c86 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -1,8 +1,9 @@ --- :concurrency: 5 :queues: - - [default, 6] - - [push, 4] + - [default, 8] + - [push, 6] + - [ingress, 4] - [mailers, 2] - [pull] - [scheduler] From 6df9d388e7cb3d90a6d1fb0a920c1ce16db60822 Mon Sep 17 00:00:00 2001 From: atsuchan <83960488+atsu1125@users.noreply.github.com> Date: Fri, 11 Nov 2022 01:26:28 +0900 Subject: [PATCH 376/500] Update Flavour 'ja' Translation (#1911) --- app/javascript/flavours/glitch/names.yml | 9 +++++++++ app/javascript/flavours/vanilla/names.yml | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/app/javascript/flavours/glitch/names.yml b/app/javascript/flavours/glitch/names.yml index 0d56fd3cc8..68db3a73e3 100644 --- a/app/javascript/flavours/glitch/names.yml +++ b/app/javascript/flavours/glitch/names.yml @@ -21,3 +21,12 @@ es: skins: glitch: default: Predeterminado + +ja: + flavours: + glitch: + description: GlitchSocインスタンスのデフォルトフレーバーです。 + name: Glitch Edition + skins: + glitch: + default: デフォルト diff --git a/app/javascript/flavours/vanilla/names.yml b/app/javascript/flavours/vanilla/names.yml index 8749f2edab..0e3f43ed03 100644 --- a/app/javascript/flavours/vanilla/names.yml +++ b/app/javascript/flavours/vanilla/names.yml @@ -22,3 +22,12 @@ es: skins: vanilla: default: Predeterminado + +ja: + flavours: + vanilla: + description: バニラのMastodonインスタンスで使われるテーマです。このテーマはGlitchSocのすべての機能をサポートしない可能性があります。 + name: Vanilla Mastodon + skins: + vanilla: + default: デフォルト From b907871604dbaef131ecc407b8ad29b754e3b1ac Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Thu, 10 Nov 2022 19:09:54 +0100 Subject: [PATCH 377/500] Helm update readme.md (#20154) * gitignore packaged helm charts * Add upgrade instructions to helm chart/readme.md * Note Helm secret changes that are necessary on failed upgrades --- .gitignore | 3 +++ chart/readme.md | 36 ++++++++++++++++++++++++++++++++++++ chart/values.yaml | 6 ++++-- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 25c8388e16..7d76b82751 100644 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,9 @@ /redis /elasticsearch +# ignore Helm charts +/chart/*.tgz + # ignore Helm dependency charts /chart/charts/*.tgz diff --git a/chart/readme.md b/chart/readme.md index edcc973bcd..19a1c4ff09 100644 --- a/chart/readme.md +++ b/chart/readme.md @@ -47,3 +47,39 @@ Sidekiq deployments, it’s possible they will occur in the wrong order. After upgrading Mastodon versions, it may sometimes be necessary to manually delete the Rails and Sidekiq pods so that they are recreated against the latest migration. + +# Upgrades in 2.0.0 + +## Fixed labels +Because of the changes in [#19706](https://github.com/mastodon/mastodon/pull/19706) the upgrade may fail with the following error: +```Error: UPGRADE FAILED: cannot patch "mastodon-sidekiq"``` + +If you want an easy upgrade and you're comfortable with some downtime then +simply delete the -sidekiq, -web, and -streaming Deployments manually. + +If you require a no-downtime upgrade then: +1. run `helm template` instead of `helm upgrade` +2. Copy the new -web and -streaming services into `services.yml` +3. Copy the new -web and -streaming deployments into `deployments.yml` +4. Append -temp to the name of each deployment in `deployments.yml` +5. `kubectl apply -f deployments.yml` then wait until all pods are ready +6. `kubectl apply -f services.yml` +7. Delete the old -sidekiq, -web, and -streaming deployments manually +8. `helm upgrade` like normal +9. `kubectl delete -f deployments.yml` to clear out the temporary deployments + +## PostgreSQL passwords +If you've previously installed the chart and you're having problems with +postgres not accepting your password then make sure to set `username` to +`postgres` and `password` and `postgresPassword` to the same passwords. +```yaml +postgresql: + auth: + username: postgres + password: + postgresPassword: +``` + +And make sure to set `password` to the same value as `postgres-password` +in your `mastodon-postgresql` secret: +```kubectl edit secret mastodon-postgresql``` \ No newline at end of file diff --git a/chart/values.yaml b/chart/values.yaml index 170025b504..16f319fe0b 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -146,8 +146,10 @@ postgresql: # be rotated on each upgrade: # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade password: "" - # Set same value as above - postgresPassword: "" + # Set the password for the "postgres" admin user + # set this to the same value as above if you've previously installed + # this chart and you're having problems getting mastodon to connect to the DB + # postgresPassword: "" # you can also specify the name of an existing Secret # with a key of password set to the password you want existingSecret: "" From e868f419234b7e4338047d6e65fcffde7c787a1c Mon Sep 17 00:00:00 2001 From: Sheogorath Date: Thu, 10 Nov 2022 19:10:38 +0100 Subject: [PATCH 379/500] fix(chart): Fix gitops-incompatible random rolling (#20184) This patch reworks the Pod rolling mechanism, which is supposed to update Pods with each migration run, but since the it generates a new random value on each helm execution, this will constantly roll all pods in a GitOps driven deployment, which reconciles the helm release. This is resolved by fixing the upgrade to the `.Release.Revision`, which should stay identical, unless config or helm release version have been changed. Further it introduces automatic rolls based on adjustments to the environment variables and secrets. The implementation uses a helper template, following the 1-2-N rule, and omitting code duplication. References: https://helm.sh/docs/chart_template_guide/builtin_objects/ https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments --- chart/templates/_helpers.tpl | 9 +++++++++ chart/templates/deployment-sidekiq.yaml | 8 ++++---- chart/templates/deployment-streaming.yaml | 6 ++++-- chart/templates/deployment-web.yaml | 4 ++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index 71bb002ef2..207780b345 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -51,6 +51,15 @@ app.kubernetes.io/name: {{ include "mastodon.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} +{{/* +Rolling pod annotations +*/}} +{{- define "mastodon.rollingPodAnnotations" -}} +rollme: {{ .Release.Revision | quote }} +checksum/config-secrets: {{ include ( print $.Template.BasePath "/secrets.yaml" ) . | sha256sum | quote }} +checksum/config-configmap: {{ include ( print $.Template.BasePath "/configmap-env.yaml" ) . | sha256sum | quote }} +{{- end }} + {{/* Create the name of the service account to use */}} diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index dd707a4d04..57051870f8 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -16,11 +16,11 @@ spec: template: metadata: annotations: - {{- with .Values.podAnnotations }} + {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} - {{- end }} - # roll the pods to pick up any db migrations - rollme: {{ randAlphaNum 5 | quote }} + {{- end }} + # roll the pods to pick up any db migrations or other changes + {{- include "mastodon.rollingPodAnnotations" . | nindent 8 }} labels: {{- include "mastodon.selectorLabels" . | nindent 8 }} app.kubernetes.io/component: sidekiq diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index 7f03c9e23e..a5007222c2 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -14,10 +14,12 @@ spec: app.kubernetes.io/component: streaming template: metadata: - {{- with .Values.podAnnotations }} annotations: + {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} - {{- end }} + {{- end }} + # roll the pods to pick up any db migrations or other changes + {{- include "mastodon.rollingPodAnnotations" . | nindent 8 }} labels: {{- include "mastodon.selectorLabels" . | nindent 8 }} app.kubernetes.io/component: streaming diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index fb58b1ade0..23d4676b3d 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -19,8 +19,8 @@ spec: {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} {{- end }} - # roll the pods to pick up any db migrations - rollme: {{ randAlphaNum 5 | quote }} + # roll the pods to pick up any db migrations or other changes + {{- include "mastodon.rollingPodAnnotations" . | nindent 8 }} labels: {{- include "mastodon.selectorLabels" . | nindent 8 }} app.kubernetes.io/component: web From 60c4df3d1df5b15b488498bea5220363ee5d22d8 Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Thu, 10 Nov 2022 19:10:49 +0100 Subject: [PATCH 380/500] Bump next Helm chart to 2.1.0 (#20155) --- chart/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 6120a7f3a9..b1c77f6bf9 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 2.0.0 +version: 2.1.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to From 6c7cdedb2460b3fed1000b1c84e6a1fdffda4c5c Mon Sep 17 00:00:00 2001 From: mickkael <19755421+mickkael@users.noreply.github.com> Date: Fri, 11 Nov 2022 02:11:25 +0800 Subject: [PATCH 381/500] Helm chart improved for ingress (#19826) * ingressClassName * ingress values must be optional --- chart/templates/ingress.yaml | 3 +++ chart/values.yaml | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/chart/templates/ingress.yaml b/chart/templates/ingress.yaml index 811d98a225..0866382973 100644 --- a/chart/templates/ingress.yaml +++ b/chart/templates/ingress.yaml @@ -19,6 +19,9 @@ metadata: {{- toYaml . | nindent 4 }} {{- end }} spec: + {{- if .Values.ingress.ingressClassName }} + ingressClassName: {{ .Values.ingress.ingressClassName }} + {{- end }} {{- if .Values.ingress.tls }} tls: {{- range .Values.ingress.tls }} diff --git a/chart/values.yaml b/chart/values.yaml index 16f319fe0b..c19ab9ed2f 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -104,8 +104,8 @@ mastodon: ingress: enabled: true annotations: - kubernetes.io/ingress.class: nginx - kubernetes.io/tls-acme: "true" + #kubernetes.io/ingress.class: nginx + #kubernetes.io/tls-acme: "true" # cert-manager.io/cluster-issuer: "letsencrypt" # # ensure that NGINX's upload size matches Mastodon's @@ -113,6 +113,8 @@ ingress: # nginx.ingress.kubernetes.io/proxy-body-size: 40m # for the NGINX ingress controller: # nginx.org/client-max-body-size: 40m + # you can specify the ingressClassName if it differs from the default + ingressClassName: hosts: - host: mastodon.local paths: From 86232e68a81303eb47919c2b0663c54f3b0f8237 Mon Sep 17 00:00:00 2001 From: Joe Friedl Date: Thu, 10 Nov 2022 13:16:49 -0500 Subject: [PATCH 382/500] Give web container time to start (#19828) --- chart/templates/deployment-web.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index 23d4676b3d..5fb316396c 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -96,13 +96,18 @@ spec: containerPort: {{ .Values.mastodon.web.port }} protocol: TCP livenessProbe: + tcpSocket: + port: http + readinessProbe: httpGet: path: /health port: http - readinessProbe: + startupProbe: httpGet: path: /health port: http + failureThreshold: 30 + periodSeconds: 5 resources: {{- toYaml .Values.resources | nindent 12 }} {{- with .Values.nodeSelector }} From 99734ac9367eb8af705aecca423c998aadddbd59 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Nov 2022 19:36:12 +0100 Subject: [PATCH 383/500] Remove preview cards from fav and boost notifications (#20335) Fixes #20329 --- app/javascript/mastodon/components/status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 3106a3ecdb..d1235550fe 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -476,7 +476,7 @@ class Status extends ImmutablePureComponent { ); } - } else if (status.get('spoiler_text').length === 0 && status.get('card')) { + } else if (status.get('spoiler_text').length === 0 && status.get('card') && !this.props.muted) { media = ( Date: Thu, 10 Nov 2022 20:25:12 +0100 Subject: [PATCH 384/500] Add old logo files back (#20332) Fixes #20221 --- app/javascript/images/logo_full.svg | 1 + app/javascript/images/logo_transparent.svg | 1 + 2 files changed, 2 insertions(+) create mode 100644 app/javascript/images/logo_full.svg create mode 100644 app/javascript/images/logo_transparent.svg diff --git a/app/javascript/images/logo_full.svg b/app/javascript/images/logo_full.svg new file mode 100644 index 0000000000..03bcf93e39 --- /dev/null +++ b/app/javascript/images/logo_full.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/logo_transparent.svg b/app/javascript/images/logo_transparent.svg new file mode 100644 index 0000000000..a1e7b403e0 --- /dev/null +++ b/app/javascript/images/logo_transparent.svg @@ -0,0 +1 @@ + From 397845453ec8ab592ffe51657cbd80c57f69c597 Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Thu, 10 Nov 2022 20:25:23 +0100 Subject: [PATCH 385/500] Update Helm README and bump version (#20346) * Update Helm chart README and comments in values.yaml * Bump next Helm chart to 2.2.0 --- chart/Chart.yaml | 2 +- chart/readme.md | 18 ++++++++++++++++++ chart/values.yaml | 7 +++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/chart/Chart.yaml b/chart/Chart.yaml index b1c77f6bf9..c8ed0c9f97 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 2.1.0 +version: 2.2.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/chart/readme.md b/chart/readme.md index 19a1c4ff09..272d59a81f 100644 --- a/chart/readme.md +++ b/chart/readme.md @@ -48,6 +48,24 @@ upgrading Mastodon versions, it may sometimes be necessary to manually delete the Rails and Sidekiq pods so that they are recreated against the latest migration. +# Upgrades in 2.1.0 + +## ingressClassName and tls-acme changes +The annotations previously defaulting to nginx have been removed and support + for ingressClassName has been added. +```yaml +ingress: + annotations: + kubernetes.io/ingress.class: nginx + kubernetes.io/tls-acme: "true" +``` + +To restore the old functionality simply add the above snippet to your `values.yaml`, +but the recommendation is to replace these with `ingress.ingressClassName` and use +cert-manager's issuer/cluster-issuer instead of tls-acme. +If you're uncertain about your current setup leave `ingressClassName` empty and add +`kubernetes.io/tls-acme` to `ingress.annotations` in your `values.yaml`. + # Upgrades in 2.0.0 ## Fixed labels diff --git a/chart/values.yaml b/chart/values.yaml index c19ab9ed2f..9e1c592197 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -104,8 +104,11 @@ mastodon: ingress: enabled: true annotations: - #kubernetes.io/ingress.class: nginx - #kubernetes.io/tls-acme: "true" + # For choosing an ingress ingressClassName is preferred over annotations + # kubernetes.io/ingress.class: nginx + # + # To automatically request TLS certificates use one of the following + # kubernetes.io/tls-acme: "true" # cert-manager.io/cluster-issuer: "letsencrypt" # # ensure that NGINX's upload size matches Mastodon's From 894ce3726a38733ea7b8c880658b962f92d021ae Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Nov 2022 20:26:04 +0100 Subject: [PATCH 386/500] Fix unnecessary service worker registration and preloading when logged out (#20341) --- app/javascript/mastodon/main.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/javascript/mastodon/main.js b/app/javascript/mastodon/main.js index d0337ce0cd..f882217fba 100644 --- a/app/javascript/mastodon/main.js +++ b/app/javascript/mastodon/main.js @@ -25,17 +25,17 @@ function main() { import('mastodon/initial_state'), ]); - const wb = new Workbox('/sw.js'); + if (me) { + const wb = new Workbox('/sw.js'); - try { - await wb.register(); - } catch (err) { - console.error(err); + try { + await wb.register(); + } catch (err) { + console.error(err); - return; - } + return; + } - if (me) { const registerPushNotifications = await import('mastodon/actions/push_notifications'); store.dispatch(registerPushNotifications.register()); From 1615c3eb6ecbadb5650f02d48e970e4f35d594d1 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Nov 2022 21:06:08 +0100 Subject: [PATCH 387/500] Change logged out /api/v1/statuses/:id/context logged out limits (#20355) --- app/controllers/api/v1/statuses_controller.rb | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 676ec2a799..b43b6f1a7c 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -18,14 +18,29 @@ class Api::V1::StatusesController < Api::BaseController # than this anyway CONTEXT_LIMIT = 4_096 + # This remains expensive and we don't want to show everything to logged-out users + ANCESTORS_LIMIT = 40 + DESCENDANTS_LIMIT = 60 + DESCENDANTS_DEPTH_LIMIT = 20 + def show @status = cache_collection([@status], Status).first render json: @status, serializer: REST::StatusSerializer end def context - ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(CONTEXT_LIMIT, current_account) - descendants_results = @status.descendants(CONTEXT_LIMIT, current_account) + ancestors_limit = CONTEXT_LIMIT + descendants_limit = CONTEXT_LIMIT + descendants_depth_limit = nil + + if current_account.nil? + ancestors_limit = ANCESTORS_LIMIT + descendants_limit = DESCENDANTS_LIMIT + descendants_depth_limit = DESCENDANTS_DEPTH_LIMIT + end + + ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(ancestors_limit, current_account) + descendants_results = @status.descendants(descendants_limit, current_account, nil, nil, descendants_depth_limit) loaded_ancestors = cache_collection(ancestors_results, Status) loaded_descendants = cache_collection(descendants_results, Status) From 9feba112a704edc23b4c2240a546363f9e1158b1 Mon Sep 17 00:00:00 2001 From: F Date: Thu, 10 Nov 2022 20:06:21 +0000 Subject: [PATCH 388/500] Make enable_starttls configurable by envvars (#20321) ENABLE_STARTTLS is designed to replace ENABLE_STARTTLS_AUTO by accepting three values: 'auto' (the default), 'always', and 'never'. If ENABLE_STARTTLS isn't provided, we fall back to ENABLE_STARTTLS_AUTO. In this way, this change should be fully backwards compatible. Resolves #20311 --- app.json | 7 ++++++- chart/templates/configmap-env.yaml | 3 +++ chart/values.yaml | 2 +- config/environments/production.rb | 17 ++++++++++++++++- lib/tasks/mastodon.rake | 20 +++++++++++++++++++- scalingo.json | 7 ++++++- 6 files changed, 51 insertions(+), 5 deletions(-) diff --git a/app.json b/app.json index c694908c53..4f05a64f51 100644 --- a/app.json +++ b/app.json @@ -79,8 +79,13 @@ "description": "SMTP server certificate verification mode. Defaults is 'peer'.", "required": false }, + "SMTP_ENABLE_STARTTLS": { + "description": "Enable STARTTLS? Default is 'auto'.", + "value": "auto", + "required": false + }, "SMTP_ENABLE_STARTTLS_AUTO": { - "description": "Enable STARTTLS if SMTP server supports it? Default is true.", + "description": "Enable STARTTLS if SMTP server supports it? Deprecated by SMTP_ENABLE_STARTTLS.", "required": false } }, diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml index 12da91cf97..00e60f3157 100644 --- a/chart/templates/configmap-env.yaml +++ b/chart/templates/configmap-env.yaml @@ -58,6 +58,9 @@ data: {{- if .Values.mastodon.smtp.domain }} SMTP_DOMAIN: {{ .Values.mastodon.smtp.domain }} {{- end }} + {{- if .Values.mastodon.smtp.enable_starttls }} + SMTP_ENABLE_STARTTLS: {{ .Values.mastodon.smtp.enable_starttls | quote }} + {{- end }} {{- if .Values.mastodon.smtp.enable_starttls_auto }} SMTP_ENABLE_STARTTLS_AUTO: {{ .Values.mastodon.smtp.enable_starttls_auto | quote }} {{- end }} diff --git a/chart/values.yaml b/chart/values.yaml index 9e1c592197..5cee86e0ec 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -77,7 +77,7 @@ mastodon: ca_file: /etc/ssl/certs/ca-certificates.crt delivery_method: smtp domain: - enable_starttls_auto: true + enable_starttls: 'auto' from_address: notifications@example.com openssl_verify_mode: peer port: 587 diff --git a/config/environments/production.rb b/config/environments/production.rb index f41a0f1971..48b134949c 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -101,6 +101,20 @@ Rails.application.configure do config.action_mailer.default_options[:reply_to] = ENV['SMTP_REPLY_TO'] if ENV['SMTP_REPLY_TO'].present? config.action_mailer.default_options[:return_path] = ENV['SMTP_RETURN_PATH'] if ENV['SMTP_RETURN_PATH'].present? + enable_starttls = nil + enable_starttls_auto = nil + + case env['SMTP_ENABLE_STARTTLS'] + when 'always' + enable_starttls = true + when 'never' + enable_starttls = false + when 'auto' + enable_starttls_auto = true + else + enable_starttls_auto = ENV['SMTP_ENABLE_STARTTLS_AUTO'] != 'false' + end + config.action_mailer.smtp_settings = { :port => ENV['SMTP_PORT'], :address => ENV['SMTP_SERVER'], @@ -110,7 +124,8 @@ Rails.application.configure do :authentication => ENV['SMTP_AUTH_METHOD'] == 'none' ? nil : ENV['SMTP_AUTH_METHOD'] || :plain, :ca_file => ENV['SMTP_CA_FILE'].presence || '/etc/ssl/certs/ca-certificates.crt', :openssl_verify_mode => ENV['SMTP_OPENSSL_VERIFY_MODE'], - :enable_starttls_auto => ENV['SMTP_ENABLE_STARTTLS_AUTO'] != 'false', + :enable_starttls => enable_starttls, + :enable_starttls_auto => enable_starttls_auto, :tls => ENV['SMTP_TLS'].presence && ENV['SMTP_TLS'] == 'true', :ssl => ENV['SMTP_SSL'].presence && ENV['SMTP_SSL'] == 'true', } diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 80e1dcf520..76089ebac0 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -271,6 +271,7 @@ namespace :mastodon do env['SMTP_PORT'] = 25 env['SMTP_AUTH_METHOD'] = 'none' env['SMTP_OPENSSL_VERIFY_MODE'] = 'none' + env['SMTP_ENABLE_STARTTLS'] = 'auto' else env['SMTP_SERVER'] = prompt.ask('SMTP server:') do |q| q.required true @@ -299,6 +300,8 @@ namespace :mastodon do end env['SMTP_OPENSSL_VERIFY_MODE'] = prompt.select('SMTP OpenSSL verify mode:', %w(none peer client_once fail_if_no_peer_cert)) + + env['SMTP_ENABLE_STARTTLS'] = prompt.select('Enable STARTTLS:', %w(auto always never)) end env['SMTP_FROM_ADDRESS'] = prompt.ask('E-mail address to send e-mails "from":') do |q| @@ -312,6 +315,20 @@ namespace :mastodon do send_to = prompt.ask('Send test e-mail to:', required: true) begin + enable_starttls = nil + enable_starttls_auto = nil + + case env['SMTP_ENABLE_STARTTLS'] + when 'always' + enable_starttls = true + when 'never' + enable_starttls = false + when 'auto' + enable_starttls_auto = true + else + enable_starttls_auto = ENV['SMTP_ENABLE_STARTTLS_AUTO'] != 'false' + end + ActionMailer::Base.smtp_settings = { port: env['SMTP_PORT'], address: env['SMTP_SERVER'], @@ -320,7 +337,8 @@ namespace :mastodon do domain: env['LOCAL_DOMAIN'], authentication: env['SMTP_AUTH_METHOD'] == 'none' ? nil : env['SMTP_AUTH_METHOD'] || :plain, openssl_verify_mode: env['SMTP_OPENSSL_VERIFY_MODE'], - enable_starttls_auto: true, + enable_starttls: enable_starttls, + enable_starttls_auto: enable_starttls_auto, } ActionMailer::Base.default_options = { diff --git a/scalingo.json b/scalingo.json index 511c1802a9..8c89929774 100644 --- a/scalingo.json +++ b/scalingo.json @@ -74,8 +74,13 @@ "description": "SMTP server certificate verification mode. Defaults is 'peer'.", "required": false }, + "SMTP_ENABLE_STARTTLS": { + "description": "Enable STARTTLS? Default is 'auto'.", + "value": "auto", + "required": false + }, "SMTP_ENABLE_STARTTLS_AUTO": { - "description": "Enable STARTTLS if SMTP server supports it? Default is true.", + "description": "Enable STARTTLS if SMTP server supports it? Deprecated by SMTP_ENABLE_STARTTLS.", "required": false }, "BUILDPACK_URL": { From c6c7c6223d92fb43033735d2b754dd360feaf3d9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Nov 2022 21:09:03 +0100 Subject: [PATCH 389/500] Change verification to only work for https links (#20304) Fix #20242 --- app/models/account/field.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/account/field.rb b/app/models/account/field.rb index d74f90b2bc..e84a0eeb1c 100644 --- a/app/models/account/field.rb +++ b/app/models/account/field.rb @@ -3,7 +3,7 @@ class Account::Field < ActiveModelSerializers::Model MAX_CHARACTERS_LOCAL = 255 MAX_CHARACTERS_COMPAT = 2_047 - ACCEPTED_SCHEMES = %w(http https).freeze + ACCEPTED_SCHEMES = %w(https).freeze attributes :name, :value, :verified_at, :account From a02a453a40386d7065fa306fe295995d009ccbfa Mon Sep 17 00:00:00 2001 From: F Date: Thu, 10 Nov 2022 20:11:38 +0000 Subject: [PATCH 390/500] Add Scots to the supported locales (#20283) Fixes #20249 --- app/helpers/languages_helper.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index 322548747b..fff073cedb 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -195,6 +195,7 @@ module LanguagesHelper kmr: ['Kurmanji (Kurdish)', 'Kurmancî'].freeze, ldn: ['Láadan', 'Láadan'].freeze, lfn: ['Lingua Franca Nova', 'lingua franca nova'].freeze, + sco: ['Scots', 'Scots'].freeze, tok: ['Toki Pona', 'toki pona'].freeze, zba: ['Balaibalan', 'باليبلن'].freeze, zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze, From 86f6631d283423746b8fdf0a618f6e0abafea099 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Nov 2022 22:30:00 +0100 Subject: [PATCH 391/500] Remove dead code and refactor status threading code (#20357) * Remove dead code * Remove unneeded/broken parameters and refactor descendant computation --- app/controllers/api/v1/statuses_controller.rb | 2 +- .../concerns/status_controller_concern.rb | 87 ------------------- app/controllers/statuses_controller.rb | 1 - .../concerns/status_threading_concern.rb | 21 ++--- 4 files changed, 9 insertions(+), 102 deletions(-) delete mode 100644 app/controllers/concerns/status_controller_concern.rb diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index b43b6f1a7c..6290a1746a 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -40,7 +40,7 @@ class Api::V1::StatusesController < Api::BaseController end ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(ancestors_limit, current_account) - descendants_results = @status.descendants(descendants_limit, current_account, nil, nil, descendants_depth_limit) + descendants_results = @status.descendants(descendants_limit, current_account, descendants_depth_limit) loaded_ancestors = cache_collection(ancestors_results, Status) loaded_descendants = cache_collection(descendants_results, Status) diff --git a/app/controllers/concerns/status_controller_concern.rb b/app/controllers/concerns/status_controller_concern.rb deleted file mode 100644 index 62a7cf5086..0000000000 --- a/app/controllers/concerns/status_controller_concern.rb +++ /dev/null @@ -1,87 +0,0 @@ -# frozen_string_literal: true - -module StatusControllerConcern - extend ActiveSupport::Concern - - ANCESTORS_LIMIT = 40 - DESCENDANTS_LIMIT = 60 - DESCENDANTS_DEPTH_LIMIT = 20 - - def create_descendant_thread(starting_depth, statuses) - depth = starting_depth + statuses.size - - if depth < DESCENDANTS_DEPTH_LIMIT - { - statuses: statuses, - starting_depth: starting_depth, - } - else - next_status = statuses.pop - - { - statuses: statuses, - starting_depth: starting_depth, - next_status: next_status, - } - end - end - - def set_ancestors - @ancestors = @status.reply? ? cache_collection(@status.ancestors(ANCESTORS_LIMIT, current_account), Status) : [] - @next_ancestor = @ancestors.size < ANCESTORS_LIMIT ? nil : @ancestors.shift - end - - def set_descendants - @max_descendant_thread_id = params[:max_descendant_thread_id]&.to_i - @since_descendant_thread_id = params[:since_descendant_thread_id]&.to_i - - descendants = cache_collection( - @status.descendants( - DESCENDANTS_LIMIT, - current_account, - @max_descendant_thread_id, - @since_descendant_thread_id, - DESCENDANTS_DEPTH_LIMIT - ), - Status - ) - - @descendant_threads = [] - - if descendants.present? - statuses = [descendants.first] - starting_depth = 0 - - descendants.drop(1).each_with_index do |descendant, index| - if descendants[index].id == descendant.in_reply_to_id - statuses << descendant - else - @descendant_threads << create_descendant_thread(starting_depth, statuses) - - # The thread is broken, assume it's a reply to the root status - starting_depth = 0 - - # ... unless we can find its ancestor in one of the already-processed threads - @descendant_threads.reverse_each do |descendant_thread| - statuses = descendant_thread[:statuses] - - index = statuses.find_index do |thread_status| - thread_status.id == descendant.in_reply_to_id - end - - if index.present? - starting_depth = descendant_thread[:starting_depth] + index + 1 - break - end - end - - statuses = [descendant] - end - end - - @descendant_threads << create_descendant_thread(starting_depth, statuses) - end - - @max_descendant_thread_id = @descendant_threads.pop[:statuses].first.id if descendants.size >= DESCENDANTS_LIMIT - end -end diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index bb4e5b01f4..9eb7ad691d 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -2,7 +2,6 @@ class StatusesController < ApplicationController include WebAppControllerConcern - include StatusControllerConcern include SignatureAuthentication include Authorization include AccountOwnedConcern diff --git a/app/models/concerns/status_threading_concern.rb b/app/models/concerns/status_threading_concern.rb index 5c04108e4c..8b628beea2 100644 --- a/app/models/concerns/status_threading_concern.rb +++ b/app/models/concerns/status_threading_concern.rb @@ -7,8 +7,8 @@ module StatusThreadingConcern find_statuses_from_tree_path(ancestor_ids(limit), account) end - def descendants(limit, account = nil, max_child_id = nil, since_child_id = nil, depth = nil) - find_statuses_from_tree_path(descendant_ids(limit, max_child_id, since_child_id, depth), account, promote: true) + def descendants(limit, account = nil, depth = nil) + find_statuses_from_tree_path(descendant_ids(limit, depth), account, promote: true) end def self_replies(limit) @@ -50,22 +50,17 @@ module StatusThreadingConcern SQL end - def descendant_ids(limit, max_child_id, since_child_id, depth) - descendant_statuses(limit, max_child_id, since_child_id, depth).pluck(:id) - end - - def descendant_statuses(limit, max_child_id, since_child_id, depth) + def descendant_ids(limit, depth) # use limit + 1 and depth + 1 because 'self' is included depth += 1 if depth.present? limit += 1 if limit.present? - descendants_with_self = Status.find_by_sql([<<-SQL.squish, id: id, limit: limit, max_child_id: max_child_id, since_child_id: since_child_id, depth: depth]) - WITH RECURSIVE search_tree(id, path) - AS ( + descendants_with_self = Status.find_by_sql([<<-SQL.squish, id: id, limit: limit, depth: depth]) + WITH RECURSIVE search_tree(id, path) AS ( SELECT id, ARRAY[id] FROM statuses - WHERE id = :id AND COALESCE(id < :max_child_id, TRUE) AND COALESCE(id > :since_child_id, TRUE) - UNION ALL + WHERE id = :id + UNION ALL SELECT statuses.id, path || statuses.id FROM search_tree JOIN statuses ON statuses.in_reply_to_id = search_tree.id @@ -77,7 +72,7 @@ module StatusThreadingConcern LIMIT :limit SQL - descendants_with_self - [self] + descendants_with_self.pluck(:id) - [id] end def find_statuses_from_tree_path(ids, account, promote: false) From 302a58c22b08a5cb6682a683dce501e030413bf4 Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Thu, 10 Nov 2022 23:24:39 +0100 Subject: [PATCH 392/500] helm: fix consistent indentation, chomping, and use of with (#19918) --- chart/templates/cronjob-media-remove.yaml | 6 +++--- chart/templates/deployment-sidekiq.yaml | 12 +++++++----- chart/templates/deployment-streaming.yaml | 16 +++++++++++----- chart/templates/deployment-web.yaml | 22 ++++++++++++++-------- chart/templates/hpa.yaml | 10 +++++----- chart/templates/ingress.yaml | 2 +- chart/templates/job-assets-precompile.yaml | 4 ++-- chart/templates/job-chewy-upgrade.yaml | 6 +++--- chart/templates/job-create-admin.yaml | 6 +++--- chart/templates/job-db-migrate.yaml | 4 ++-- chart/templates/pvc-assets.yaml | 6 ++++-- chart/templates/pvc-system.yaml | 6 ++++-- chart/templates/secrets.yaml | 4 ++-- 13 files changed, 61 insertions(+), 43 deletions(-) diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index d3566e32d4..b175f0ee75 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -1,4 +1,4 @@ -{{ if .Values.mastodon.cron.removeMedia.enabled }} +{{ if .Values.mastodon.cron.removeMedia.enabled -}} apiVersion: batch/v1 kind: CronJob metadata: @@ -12,10 +12,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-media-remove - {{- with .Values.jobAnnotations }} + {{- with .Values.jobAnnotations }} annotations: {{- toYaml . | nindent 12 }} - {{- end }} + {{- end }} spec: restartPolicy: OnFailure {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index 57051870f8..878b01150f 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -5,9 +5,9 @@ metadata: labels: {{- include "mastodon.labels" . | nindent 4 }} spec: -{{- if not .Values.autoscaling.enabled }} + {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} -{{- end }} + {{- end }} selector: matchLabels: {{- include "mastodon.selectorLabels" . | nindent 6 }} @@ -31,8 +31,10 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} serviceAccountName: {{ include "mastodon.serviceAccountName" . }} + {{- with .Values.podSecurityContext }} securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- toYaml . | nindent 8 }} + {{- end }} {{- if (not .Values.mastodon.s3.enabled) }} # ensure we run on the same node as the other rails components; only # required when using PVCs that are ReadWriteOnce @@ -95,7 +97,7 @@ spec: secretKeyRef: name: {{ .Values.mastodon.s3.existingSecret }} key: AWS_ACCESS_KEY_ID - {{- end -}} + {{- end }} {{- if .Values.mastodon.smtp.existingSecret }} - name: "SMTP_LOGIN" valueFrom: @@ -108,7 +110,7 @@ spec: secretKeyRef: name: {{ .Values.mastodon.smtp.existingSecret }} key: password - {{- end -}} + {{- end }} {{- if (not .Values.mastodon.s3.enabled) }} volumeMounts: - name: assets diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml index a5007222c2..5d565765eb 100644 --- a/chart/templates/deployment-streaming.yaml +++ b/chart/templates/deployment-streaming.yaml @@ -5,9 +5,9 @@ metadata: labels: {{- include "mastodon.labels" . | nindent 4 }} spec: -{{- if not .Values.autoscaling.enabled }} + {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} -{{- end }} + {{- end }} selector: matchLabels: {{- include "mastodon.selectorLabels" . | nindent 6 }} @@ -29,12 +29,16 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} serviceAccountName: {{ include "mastodon.serviceAccountName" . }} + {{- with .Values.podSecurityContext }} securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- toYaml . | nindent 8 }} + {{- end }} containers: - name: {{ .Chart.Name }} + {{- with .Values.securityContext }} securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} command: @@ -68,8 +72,10 @@ spec: httpGet: path: /api/v1/streaming/health port: streaming + {{- with .Values.resources }} resources: - {{- toYaml .Values.resources | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml index 5fb316396c..ec67481bf1 100644 --- a/chart/templates/deployment-web.yaml +++ b/chart/templates/deployment-web.yaml @@ -5,9 +5,9 @@ metadata: labels: {{- include "mastodon.labels" . | nindent 4 }} spec: -{{- if not .Values.autoscaling.enabled }} + {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} -{{- end }} + {{- end }} selector: matchLabels: {{- include "mastodon.selectorLabels" . | nindent 6 }} @@ -16,9 +16,9 @@ spec: template: metadata: annotations: - {{- with .Values.podAnnotations }} + {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} - {{- end }} + {{- end }} # roll the pods to pick up any db migrations or other changes {{- include "mastodon.rollingPodAnnotations" . | nindent 8 }} labels: @@ -31,8 +31,10 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} serviceAccountName: {{ include "mastodon.serviceAccountName" . }} + {{- with .Values.podSecurityContext }} securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- toYaml . | nindent 8 }} + {{- end }} {{- if (not .Values.mastodon.s3.enabled) }} volumes: - name: assets @@ -44,8 +46,10 @@ spec: {{- end }} containers: - name: {{ .Chart.Name }} + {{- with .Values.securityContext }} securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} command: @@ -83,7 +87,7 @@ spec: secretKeyRef: name: {{ .Values.mastodon.s3.existingSecret }} key: AWS_ACCESS_KEY_ID - {{- end -}} + {{- end }} {{- if (not .Values.mastodon.s3.enabled) }} volumeMounts: - name: assets @@ -108,8 +112,10 @@ spec: port: http failureThreshold: 30 periodSeconds: 5 + {{- with .Values.resources }} resources: - {{- toYaml .Values.resources | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} diff --git a/chart/templates/hpa.yaml b/chart/templates/hpa.yaml index 3f9aa8a93b..b23b2cb168 100644 --- a/chart/templates/hpa.yaml +++ b/chart/templates/hpa.yaml @@ -1,4 +1,4 @@ -{{- if .Values.autoscaling.enabled }} +{{- if .Values.autoscaling.enabled -}} apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: @@ -13,16 +13,16 @@ spec: minReplicas: {{ .Values.autoscaling.minReplicas }} maxReplicas: {{ .Values.autoscaling.maxReplicas }} metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - type: Resource resource: name: cpu targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - type: Resource resource: name: memory targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} + {{- end }} {{- end }} diff --git a/chart/templates/ingress.yaml b/chart/templates/ingress.yaml index 0866382973..e5c5e1dc67 100644 --- a/chart/templates/ingress.yaml +++ b/chart/templates/ingress.yaml @@ -2,7 +2,7 @@ {{- $fullName := include "mastodon.fullname" . -}} {{- $webPort := .Values.mastodon.web.port -}} {{- $streamingPort := .Values.mastodon.streaming.port -}} -{{- if or (.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }} +{{- if or (.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) -}} apiVersion: networking.k8s.io/v1 {{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} apiVersion: networking.k8s.io/v1beta1 diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index 9bdec2ab7c..30d54b76f5 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -12,10 +12,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-assets-precompile - {{- with .Values.jobAnnotations }} + {{- with .Values.jobAnnotations }} annotations: {{- toYaml . | nindent 8 }} - {{- end }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index 556133dd32..5b22a86105 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -1,4 +1,4 @@ -{{- if .Values.elasticsearch.enabled }} +{{- if .Values.elasticsearch.enabled -}} apiVersion: batch/v1 kind: Job metadata: @@ -13,10 +13,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-chewy-upgrade - {{- with .Values.jobAnnotations }} + {{- with .Values.jobAnnotations }} annotations: {{- toYaml . | nindent 8 }} - {{- end }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml index 94d39dcbb5..f28cdab418 100644 --- a/chart/templates/job-create-admin.yaml +++ b/chart/templates/job-create-admin.yaml @@ -1,4 +1,4 @@ -{{- if .Values.mastodon.createAdmin.enabled }} +{{- if .Values.mastodon.createAdmin.enabled -}} apiVersion: batch/v1 kind: Job metadata: @@ -13,10 +13,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-create-admin - {{- with .Values.jobAnnotations }} + {{- with .Values.jobAnnotations }} annotations: {{- toYaml . | nindent 8 }} - {{- end }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index e1544d2b66..db09c6ea2b 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -12,10 +12,10 @@ spec: template: metadata: name: {{ include "mastodon.fullname" . }}-db-migrate - {{- with .Values.jobAnnotations }} + {{- with .Values.jobAnnotations }} annotations: {{- toYaml . | nindent 8 }} - {{- end }} + {{- end }} spec: restartPolicy: Never {{- if (not .Values.mastodon.s3.enabled) }} diff --git a/chart/templates/pvc-assets.yaml b/chart/templates/pvc-assets.yaml index 58b2179df0..36d555898e 100644 --- a/chart/templates/pvc-assets.yaml +++ b/chart/templates/pvc-assets.yaml @@ -1,4 +1,4 @@ -{{- if (not .Values.mastodon.s3.enabled) }} +{{- if (not .Values.mastodon.s3.enabled) -}} apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -8,7 +8,9 @@ metadata: spec: accessModes: - {{ .Values.mastodon.persistence.system.accessMode }} + {{- with .Values.mastodon.persistence.assets.resources }} resources: - {{- toYaml .Values.mastodon.persistence.assets.resources | nindent 4}} + {{- toYaml . | nindent 4 }} + {{- end }} storageClassName: {{ .Values.mastodon.persistence.assets.storageClassName }} {{- end }} diff --git a/chart/templates/pvc-system.yaml b/chart/templates/pvc-system.yaml index 52398f0daf..9865346eaa 100644 --- a/chart/templates/pvc-system.yaml +++ b/chart/templates/pvc-system.yaml @@ -1,4 +1,4 @@ -{{- if (not .Values.mastodon.s3.enabled) }} +{{- if (not .Values.mastodon.s3.enabled) -}} apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -8,7 +8,9 @@ metadata: spec: accessModes: - {{ .Values.mastodon.persistence.system.accessMode }} + {{- with .Values.mastodon.persistence.system.resources }} resources: - {{- toYaml .Values.mastodon.persistence.system.resources | nindent 4}} + {{- toYaml . | nindent 4 }} + {{- end }} storageClassName: {{ .Values.mastodon.persistence.system.storageClassName }} {{- end }} diff --git a/chart/templates/secrets.yaml b/chart/templates/secrets.yaml index d7ac936ce5..d1776ac590 100644 --- a/chart/templates/secrets.yaml +++ b/chart/templates/secrets.yaml @@ -1,4 +1,4 @@ -{{- if (include "mastodon.createSecret" .) }} +{{- if (include "mastodon.createSecret" .) -}} apiVersion: v1 kind: Secret metadata: @@ -40,4 +40,4 @@ data: password: "{{ .Values.postgresql.auth.password | b64enc }}" {{- end }} {{- end }} -{{- end -}} +{{- end }} From d4f973227c3a65833b6f8f34cab080900c77d4d6 Mon Sep 17 00:00:00 2001 From: F Date: Thu, 10 Nov 2022 23:06:18 +0000 Subject: [PATCH 393/500] Test the native_locale_name of a non-standard locale (#20284) `:en` is English for both `standard_locale_name` and `native_locale_name`, and so makes for a poor test candidate for differentiating between them. --- spec/helpers/languages_helper_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/helpers/languages_helper_spec.rb b/spec/helpers/languages_helper_spec.rb index 5587fc261a..217c9b2397 100644 --- a/spec/helpers/languages_helper_spec.rb +++ b/spec/helpers/languages_helper_spec.rb @@ -11,7 +11,7 @@ describe LanguagesHelper do describe 'native_locale_name' do it 'finds the human readable native name from a key' do - expect(helper.native_locale_name(:en)).to eq('English') + expect(helper.native_locale_name(:de)).to eq('Deutsch') end end From 19a8563905cf613bb24e10e4e19bdbc1d0ff3b8a Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 11 Nov 2022 09:33:32 +0900 Subject: [PATCH 394/500] Fix `ENV` (#20377) --- config/environments/production.rb | 2 +- lib/tasks/mastodon.rake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 48b134949c..dc53195359 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -104,7 +104,7 @@ Rails.application.configure do enable_starttls = nil enable_starttls_auto = nil - case env['SMTP_ENABLE_STARTTLS'] + case ENV['SMTP_ENABLE_STARTTLS'] when 'always' enable_starttls = true when 'never' diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 76089ebac0..3ec685c743 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -326,7 +326,7 @@ namespace :mastodon do when 'auto' enable_starttls_auto = true else - enable_starttls_auto = ENV['SMTP_ENABLE_STARTTLS_AUTO'] != 'false' + enable_starttls_auto = env['SMTP_ENABLE_STARTTLS_AUTO'] != 'false' end ActionMailer::Base.smtp_settings = { From 53d26cfc1cc2779f699f3d3d56696484faefe87c Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 11 Nov 2022 09:33:59 +0900 Subject: [PATCH 395/500] Delay workbox import (#20376) --- app/javascript/mastodon/main.js | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/app/javascript/mastodon/main.js b/app/javascript/mastodon/main.js index f882217fba..69a7ee91f9 100644 --- a/app/javascript/mastodon/main.js +++ b/app/javascript/mastodon/main.js @@ -2,6 +2,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { setupBrowserNotifications } from 'mastodon/actions/notifications'; import Mastodon, { store } from 'mastodon/containers/mastodon'; +import { me } from 'mastodon/initial_state'; import ready from 'mastodon/ready'; const perf = require('mastodon/performance'); @@ -19,23 +20,19 @@ function main() { ReactDOM.render(, mountNode); store.dispatch(setupBrowserNotifications()); - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - const [{ Workbox }, { me }] = await Promise.all([ - import('workbox-window'), - import('mastodon/initial_state'), - ]); + if (process.env.NODE_ENV === 'production' && me && 'serviceWorker' in navigator) { + const { Workbox } = await import('workbox-window'); + const wb = new Workbox('/sw.js'); + /** @type {ServiceWorkerRegistration} */ + let registration; - if (me) { - const wb = new Workbox('/sw.js'); - - try { - await wb.register(); - } catch (err) { - console.error(err); - - return; - } + try { + registration = await wb.register(); + } catch (err) { + console.error(err); + } + if (registration) { const registerPushNotifications = await import('mastodon/actions/push_notifications'); store.dispatch(registerPushNotifications.register()); From 97f657f8181dc24f6c30b6e9f0ce52df827ac90f Mon Sep 17 00:00:00 2001 From: F Date: Fri, 11 Nov 2022 01:54:02 +0000 Subject: [PATCH 396/500] Note that CircleCI auth may be required to run PR pipelines (#20371) See #20284 --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3f51c4bd0a..9963054b39 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,6 +42,8 @@ It is not always possible to phrase every change in such a manner, but it is des - Code style rules (rubocop, eslint) - Normalization of locale files (i18n-tasks) +**Note**: You may need to log in and authorise the GitHub account your fork of this repository belongs to with CircleCI to enable some of the automated checks to run. + ## Documentation The [Mastodon documentation](https://docs.joinmastodon.org) is a statically generated site. You can [submit merge requests to mastodon/documentation](https://github.com/mastodon/documentation). From cf4992c918459187962a9e2f389f9ccb4f1b825d Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Thu, 10 Nov 2022 18:55:20 -0700 Subject: [PATCH 397/500] Only remove padding when listing applications (#20382) This prevents styling issues on the Authorization page. --- app/javascript/styles/mastodon/forms.scss | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index a3ddc76362..1841dc8bfd 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -1064,11 +1064,18 @@ code { &:last-child { border-bottom: 0; - padding-bottom: 0; } } } +// Only remove padding when listing applications, to prevent styling issues on +// the Authorization page. +.applications-list { + .permissions-list__item:last-child { + padding-bottom: 0; + } +} + .keywords-table { thead { th { From 73fecc3358bc22a1a83772c62593161267369a1e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Nov 2022 05:26:43 +0100 Subject: [PATCH 398/500] Change e-mail in SECURITY.md (#20384) --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index d2543b18d6..ccc7c10346 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,6 +1,6 @@ # Security Policy -If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you can reach us at . +If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you can reach us at . You should *not* report such issues on GitHub or in other public spaces to give us time to publish a fix for the issue without exposing Mastodon's users to increased risk. From 36bc90e8aaf89b5cf64636b404611ff1809ad6f0 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Fri, 11 Nov 2022 07:45:16 +0100 Subject: [PATCH 399/500] blurhash_transcoder: prevent out-of-bound reads with <8bpp images (#20388) The Blurhash library used by Mastodon requires an input encoded as 24 bits raw RGB data. The conversion to raw RGB using Imagemagick did not previously specify the desired bit depth. In some situations, this leads Imagemagick to output in a pixel format using less bpp than expected. This then manifested as segfaults of the Sidekiq process due to out-of-bounds read, or potentially a (highly noisy) memory infoleak. Fixes #19235. --- lib/paperclip/blurhash_transcoder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/paperclip/blurhash_transcoder.rb b/lib/paperclip/blurhash_transcoder.rb index 1c3a6df025..c22c20c57a 100644 --- a/lib/paperclip/blurhash_transcoder.rb +++ b/lib/paperclip/blurhash_transcoder.rb @@ -5,7 +5,7 @@ module Paperclip def make return @file unless options[:style] == :small || options[:blurhash] - pixels = convert(':source RGB:-', source: File.expand_path(@file.path)).unpack('C*') + pixels = convert(':source -depth 8 RGB:-', source: File.expand_path(@file.path)).unpack('C*') geometry = options.fetch(:file_geometry_parser).from_file(@file) attachment.instance.blurhash = Blurhash.encode(geometry.width, geometry.height, pixels, **(options[:blurhash] || {})) From 6774c339b2e22fc9cadcb466139745661d0b3c83 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Nov 2022 08:26:58 +0100 Subject: [PATCH 400/500] Fix domain blocks on about page not working well on small screens in web UI (#20391) --- .../mastodon/features/about/index.js | 31 +++++------ .../styles/mastodon/components.scss | 51 ++++++++++++------- 2 files changed, 46 insertions(+), 36 deletions(-) diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.js index 8328362725..15d017642c 100644 --- a/app/javascript/mastodon/features/about/index.js +++ b/app/javascript/mastodon/features/about/index.js @@ -183,25 +183,18 @@ class About extends React.PureComponent { <>

      - - - - - - - - - - - {domainBlocks.get('items').map(block => ( - - - - - - ))} - -
      {block.get('domain')}{intl.formatMessage(severityMessages[block.get('severity')].title)}{block.get('comment')}
      +
      + {domainBlocks.get('items').map(block => ( +
      +
      +
      {block.get('domain')}
      + {intl.formatMessage(severityMessages[block.get('severity')].title)} +
      + +

      {block.get('comment').length > 0 ? block.get('comment') : }

      +
      + ))} +
      ) : (

      diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index ecbf6afc0b..8b43604c8f 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -8557,28 +8557,45 @@ noscript { &__domain-blocks { margin-top: 30px; - width: 100%; - border-collapse: collapse; - break-inside: auto; + background: darken($ui-base-color, 4%); + border: 1px solid lighten($ui-base-color, 4%); + border-radius: 4px; - th { - text-align: left; - font-weight: 500; + &__domain { + border-bottom: 1px solid lighten($ui-base-color, 4%); + padding: 10px; + font-size: 15px; color: $darker-text-color; - } - thead tr, - tbody tr { - border-bottom: 1px solid lighten($ui-base-color, 8%); - } + &:nth-child(2n) { + background: darken($ui-base-color, 2%); + } - tbody tr:last-child { - border-bottom: 0; - } + &:last-child { + border-bottom: 0; + } + + &__header { + display: flex; + gap: 10px; + justify-content: space-between; + font-weight: 500; + margin-bottom: 4px; + } - th, - td { - padding: 8px; + h6 { + color: $secondary-text-color; + font-size: inherit; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + p { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } } } } From 53028af10ee5244d050e84580c396df25c2e8fc3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Nov 2022 08:39:38 +0100 Subject: [PATCH 401/500] Bump version to 4.0.0rc3 (#20378) --- CHANGELOG.md | 47 ++++++++++++++++--- .../mastodon/locales/defaultMessages.json | 35 +++++++++----- app/javascript/mastodon/locales/en.json | 5 +- lib/mastodon/version.rb | 2 +- 4 files changed, 67 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bd22438c9..72f62a1dc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ Some of the features in this release have been funded through the [NGI0 Discover - **Add ability to follow hashtags** ([Gargron](https://github.com/mastodon/mastodon/pull/18809), [Gargron](https://github.com/mastodon/mastodon/pull/18862), [Gargron](https://github.com/mastodon/mastodon/pull/19472), [noellabo](https://github.com/mastodon/mastodon/pull/18924)) - Add ability to filter individual posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18945)) - **Add ability to translate posts** ([Gargron](https://github.com/mastodon/mastodon/pull/19218), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19433), [Gargron](https://github.com/mastodon/mastodon/pull/19453), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19434), [Gargron](https://github.com/mastodon/mastodon/pull/19388), [ykzts](https://github.com/mastodon/mastodon/pull/19244), [Gargron](https://github.com/mastodon/mastodon/pull/19245)) -- Add featured tags to web UI ([noellabo](https://github.com/mastodon/mastodon/pull/19408), [noellabo](https://github.com/mastodon/mastodon/pull/19380), [noellabo](https://github.com/mastodon/mastodon/pull/19358), [noellabo](https://github.com/mastodon/mastodon/pull/19409), [Gargron](https://github.com/mastodon/mastodon/pull/19382), [ykzts](https://github.com/mastodon/mastodon/pull/19418), [noellabo](https://github.com/mastodon/mastodon/pull/19403), [noellabo](https://github.com/mastodon/mastodon/pull/19404), [Gargron](https://github.com/mastodon/mastodon/pull/19398), [Gargron](https://github.com/mastodon/mastodon/pull/19712)) +- Add featured tags to web UI ([noellabo](https://github.com/mastodon/mastodon/pull/19408), [noellabo](https://github.com/mastodon/mastodon/pull/19380), [noellabo](https://github.com/mastodon/mastodon/pull/19358), [noellabo](https://github.com/mastodon/mastodon/pull/19409), [Gargron](https://github.com/mastodon/mastodon/pull/19382), [ykzts](https://github.com/mastodon/mastodon/pull/19418), [noellabo](https://github.com/mastodon/mastodon/pull/19403), [noellabo](https://github.com/mastodon/mastodon/pull/19404), [Gargron](https://github.com/mastodon/mastodon/pull/19398), [Gargron](https://github.com/mastodon/mastodon/pull/19712), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20018)) - **Add support for language preferences for trending statuses and links** ([Gargron](https://github.com/mastodon/mastodon/pull/18288), [Gargron](https://github.com/mastodon/mastodon/pull/19349), [ykzts](https://github.com/mastodon/mastodon/pull/19335)) - Previously, you could only see trends in your current language - For less popular languages, that meant empty trends @@ -21,6 +21,7 @@ Some of the features in this release have been funded through the [NGI0 Discover - Add server rules to sign-up flow ([Gargron](https://github.com/mastodon/mastodon/pull/19296)) - Add privacy icons to report modal in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19190)) - Add `noopener` to links to remote profiles in web UI ([shleeable](https://github.com/mastodon/mastodon/pull/19014)) +- Add option to open original page in dropdowns of remote content in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/20299)) - Add warning for sensitive audio posts in web UI ([rgroothuijsen](https://github.com/mastodon/mastodon/pull/17885)) - Add language attribute to posts in web UI ([tribela](https://github.com/mastodon/mastodon/pull/18544)) - Add support for uploading WebP files ([Saiv46](https://github.com/mastodon/mastodon/pull/18506)) @@ -43,22 +44,26 @@ Some of the features in this release have been funded through the [NGI0 Discover - Add admin API for managing domain blocks ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18247)) - Add admin API for managing e-mail domain blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19066)) - Add admin API for managing canonical e-mail blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19067)) -- Add admin API for managing IP blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19065)) +- Add admin API for managing IP blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19065), [trwnh](https://github.com/mastodon/mastodon/pull/20207)) +- Add `sensitized` attribute to accounts in admin REST API ([trwnh](https://github.com/mastodon/mastodon/pull/20094)) - Add `services` and `metadata` to the NodeInfo endpoint ([MFTabriz](https://github.com/mastodon/mastodon/pull/18563)) - Add `--remove-role` option to `tootctl accounts modify` ([Gargron](https://github.com/mastodon/mastodon/pull/19477)) - Add `--days` option to `tootctl media refresh` ([tribela](https://github.com/mastodon/mastodon/pull/18425)) - Add `EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION` environment variable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18642)) - Add `IP_RETENTION_PERIOD` and `SESSION_RETENTION_PERIOD` environment variables ([kescherCode](https://github.com/mastodon/mastodon/pull/18757)) - Add `http_hidden_proxy` environment variable ([tribela](https://github.com/mastodon/mastodon/pull/18427)) -- Add caching for payload serialization during fan-out ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19637), [Gargron](https://github.com/mastodon/mastodon/pull/19642), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19746), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19747)) +- Add `ENABLE_STARTTLS` environment variable ([erbridge](https://github.com/mastodon/mastodon/pull/20321)) +- Add caching for payload serialization during fan-out ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19637), [Gargron](https://github.com/mastodon/mastodon/pull/19642), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19746), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19747), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19963)) - Add assets from Twemoji 14.0 ([Gargron](https://github.com/mastodon/mastodon/pull/19733)) - Add reputation and followers score boost to SQL-only account search ([Gargron](https://github.com/mastodon/mastodon/pull/19251)) +- Add Scots, Balaibalan, Láadan, Lingua Franca Nova, Lojban, Toki Pona to languages list ([VyrCossont](https://github.com/mastodon/mastodon/pull/20168)) +- Set autocomplete hints for e-mail, password and OTP fields ([rcombs](https://github.com/mastodon/mastodon/pull/19833), [offbyone](https://github.com/mastodon/mastodon/pull/19946), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20071)) ### Changed - **Change brand color and logotypes** ([Gargron](https://github.com/mastodon/mastodon/pull/18592), [Gargron](https://github.com/mastodon/mastodon/pull/18639), [Gargron](https://github.com/mastodon/mastodon/pull/18691), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18634), [Gargron](https://github.com/mastodon/mastodon/pull/19254), [mayaeh](https://github.com/mastodon/mastodon/pull/18710)) - **Change post editing to be enabled in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/19103)) -- **Change web UI to work for logged-out users** ([Gargron](https://github.com/mastodon/mastodon/pull/18961), [Gargron](https://github.com/mastodon/mastodon/pull/19250), [Gargron](https://github.com/mastodon/mastodon/pull/19294), [Gargron](https://github.com/mastodon/mastodon/pull/19306), [Gargron](https://github.com/mastodon/mastodon/pull/19315), [ykzts](https://github.com/mastodon/mastodon/pull/19322), [Gargron](https://github.com/mastodon/mastodon/pull/19412), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19437), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19415), [Gargron](https://github.com/mastodon/mastodon/pull/19348), [Gargron](https://github.com/mastodon/mastodon/pull/19295), [Gargron](https://github.com/mastodon/mastodon/pull/19422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19414), [Gargron](https://github.com/mastodon/mastodon/pull/19319), [Gargron](https://github.com/mastodon/mastodon/pull/19345), [Gargron](https://github.com/mastodon/mastodon/pull/19310), [Gargron](https://github.com/mastodon/mastodon/pull/19301), [Gargron](https://github.com/mastodon/mastodon/pull/19423), [ykzts](https://github.com/mastodon/mastodon/pull/19471), [ykzts](https://github.com/mastodon/mastodon/pull/19333), [ykzts](https://github.com/mastodon/mastodon/pull/19337), [ykzts](https://github.com/mastodon/mastodon/pull/19272), [ykzts](https://github.com/mastodon/mastodon/pull/19468), [Gargron](https://github.com/mastodon/mastodon/pull/19466), [Gargron](https://github.com/mastodon/mastodon/pull/19457), [Gargron](https://github.com/mastodon/mastodon/pull/19426), [Gargron](https://github.com/mastodon/mastodon/pull/19427), [Gargron](https://github.com/mastodon/mastodon/pull/19421), [Gargron](https://github.com/mastodon/mastodon/pull/19417), [Gargron](https://github.com/mastodon/mastodon/pull/19413), [Gargron](https://github.com/mastodon/mastodon/pull/19397), [Gargron](https://github.com/mastodon/mastodon/pull/19387), [Gargron](https://github.com/mastodon/mastodon/pull/19396), [Gargron](https://github.com/mastodon/mastodon/pull/19385), [ykzts](https://github.com/mastodon/mastodon/pull/19334), [ykzts](https://github.com/mastodon/mastodon/pull/19329), [Gargron](https://github.com/mastodon/mastodon/pull/19324), [Gargron](https://github.com/mastodon/mastodon/pull/19318), [Gargron](https://github.com/mastodon/mastodon/pull/19316), [Gargron](https://github.com/mastodon/mastodon/pull/19263), [trwnh](https://github.com/mastodon/mastodon/pull/19305), [ykzts](https://github.com/mastodon/mastodon/pull/19273), [Gargron](https://github.com/mastodon/mastodon/pull/19801), [Gargron](https://github.com/mastodon/mastodon/pull/19790), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19773), [Gargron](https://github.com/mastodon/mastodon/pull/19798), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19724), [Gargron](https://github.com/mastodon/mastodon/pull/19709), [Gargron](https://github.com/mastodon/mastodon/pull/19514), [Gargron](https://github.com/mastodon/mastodon/pull/19562)) +- **Change web UI to work for logged-out users** ([Gargron](https://github.com/mastodon/mastodon/pull/18961), [Gargron](https://github.com/mastodon/mastodon/pull/19250), [Gargron](https://github.com/mastodon/mastodon/pull/19294), [Gargron](https://github.com/mastodon/mastodon/pull/19306), [Gargron](https://github.com/mastodon/mastodon/pull/19315), [ykzts](https://github.com/mastodon/mastodon/pull/19322), [Gargron](https://github.com/mastodon/mastodon/pull/19412), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19437), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19415), [Gargron](https://github.com/mastodon/mastodon/pull/19348), [Gargron](https://github.com/mastodon/mastodon/pull/19295), [Gargron](https://github.com/mastodon/mastodon/pull/19422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19414), [Gargron](https://github.com/mastodon/mastodon/pull/19319), [Gargron](https://github.com/mastodon/mastodon/pull/19345), [Gargron](https://github.com/mastodon/mastodon/pull/19310), [Gargron](https://github.com/mastodon/mastodon/pull/19301), [Gargron](https://github.com/mastodon/mastodon/pull/19423), [ykzts](https://github.com/mastodon/mastodon/pull/19471), [ykzts](https://github.com/mastodon/mastodon/pull/19333), [ykzts](https://github.com/mastodon/mastodon/pull/19337), [ykzts](https://github.com/mastodon/mastodon/pull/19272), [ykzts](https://github.com/mastodon/mastodon/pull/19468), [Gargron](https://github.com/mastodon/mastodon/pull/19466), [Gargron](https://github.com/mastodon/mastodon/pull/19457), [Gargron](https://github.com/mastodon/mastodon/pull/19426), [Gargron](https://github.com/mastodon/mastodon/pull/19427), [Gargron](https://github.com/mastodon/mastodon/pull/19421), [Gargron](https://github.com/mastodon/mastodon/pull/19417), [Gargron](https://github.com/mastodon/mastodon/pull/19413), [Gargron](https://github.com/mastodon/mastodon/pull/19397), [Gargron](https://github.com/mastodon/mastodon/pull/19387), [Gargron](https://github.com/mastodon/mastodon/pull/19396), [Gargron](https://github.com/mastodon/mastodon/pull/19385), [ykzts](https://github.com/mastodon/mastodon/pull/19334), [ykzts](https://github.com/mastodon/mastodon/pull/19329), [Gargron](https://github.com/mastodon/mastodon/pull/19324), [Gargron](https://github.com/mastodon/mastodon/pull/19318), [Gargron](https://github.com/mastodon/mastodon/pull/19316), [Gargron](https://github.com/mastodon/mastodon/pull/19263), [trwnh](https://github.com/mastodon/mastodon/pull/19305), [ykzts](https://github.com/mastodon/mastodon/pull/19273), [Gargron](https://github.com/mastodon/mastodon/pull/19801), [Gargron](https://github.com/mastodon/mastodon/pull/19790), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19773), [Gargron](https://github.com/mastodon/mastodon/pull/19798), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19724), [Gargron](https://github.com/mastodon/mastodon/pull/19709), [Gargron](https://github.com/mastodon/mastodon/pull/19514), [Gargron](https://github.com/mastodon/mastodon/pull/19562), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19981), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19978), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20148), [Gargron](https://github.com/mastodon/mastodon/pull/20302)) - The web app can now be accessed without being logged in - No more `/web` prefix on web app paths - Profiles, posts, and other public pages now use the same interface for logged in and logged out users @@ -74,14 +79,13 @@ Some of the features in this release have been funded through the [NGI0 Discover - Change label of publish button to be "Publish" again in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18583)) - Change language to be carried over on reply in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18557)) - Change "Unfollow" to "Cancel follow request" when request still pending in web UI ([prplecake](https://github.com/mastodon/mastodon/pull/19363)) -- **Change post filtering system** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18058), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19050), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18894), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19051), [noellabo](https://github.com/mastodon/mastodon/pull/18923), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18956), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18744)) +- **Change post filtering system** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18058), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19050), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18894), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19051), [noellabo](https://github.com/mastodon/mastodon/pull/18923), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18956), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18744), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19878)) - Filtered keywords and phrases can now be grouped into named categories - Filtered posts show which exact filter was hit - Individual posts can be added to a filter - You can peek inside filtered posts anyway - Change path of privacy policy page from `/terms` to `/privacy-policy` ([Gargron](https://github.com/mastodon/mastodon/pull/19249)) - Change how hashtags are normalized ([Gargron](https://github.com/mastodon/mastodon/pull/18795), [Gargron](https://github.com/mastodon/mastodon/pull/18863), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18854)) -- Change public (but not hashtag) timelines to be filtered by current locale by default ([Gargron](https://github.com/mastodon/mastodon/pull/19291), [Gargron](https://github.com/mastodon/mastodon/pull/19563)) - Change settings area to be separated into categories in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19407), [Gargron](https://github.com/mastodon/mastodon/pull/19533)) - Change "No accounts selected" errors to use the appropriate noun in admin UI ([prplecake](https://github.com/mastodon/mastodon/pull/19356)) - Change e-mail domain blocks to match subdomains of blocked domains ([Gargron](https://github.com/mastodon/mastodon/pull/18979)) @@ -95,6 +99,12 @@ Some of the features in this release have been funded through the [NGI0 Discover - Change mentions of blocked users to not be processed ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19725)) - Change max. thumbnail dimensions to 640x360px (360p) ([Gargron](https://github.com/mastodon/mastodon/pull/19619)) - Change post-processing to be deferred only for large media types ([Gargron](https://github.com/mastodon/mastodon/pull/19617)) +- Change link verification to only work for https links without unicode ([Gargron](https://github.com/mastodon/mastodon/pull/20304), [Gargron](https://github.com/mastodon/mastodon/pull/20295)) +- Change account deletion requests to spread out over time ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20222)) +- Change larger reblogs/favourites numbers to be shortened in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/20303)) +- Change incoming activity processing to happen in `ingress` queue ([Gargron](https://github.com/mastodon/mastodon/pull/20264)) +- Change notifications to not link show preview cards in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20335)) +- Change amount of replies returned for logged out users in REST API ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20355)) ### Removed @@ -107,6 +117,25 @@ Some of the features in this release have been funded through the [NGI0 Discover ### Fixed +- Fix connections to IPv6-only servers ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20108)) +- Fix unnecessary service worker registration and preloading when logged out in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20341)) +- Fix unnecessary and slow regex construction ([raggi](https://github.com/mastodon/mastodon/pull/20215)) +- Fix `mailers` queue not being used for mailers ([Gargron](https://github.com/mastodon/mastodon/pull/20274)) +- Fix error in webfinger redirect handling ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20260)) +- Fix report category not being set to `violation` if rule IDs are provided ([trwnh](https://github.com/mastodon/mastodon/pull/20137)) +- Fix nodeinfo metadata attribute being an array instead of an object ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20114)) +- Fix account endorsements not being idempotent ([trwnh](https://github.com/mastodon/mastodon/pull/20118)) +- Fix status and rule IDs not being strings in admin reports REST API ([trwnh](https://github.com/mastodon/mastodon/pull/20122)) +- Fix error on invalid `replies_policy` in REST API ([trwnh](https://github.com/mastodon/mastodon/pull/20126)) +- Fix redrafting a currently-editing post not leaving edit mode in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20023)) +- Fix performance by avoiding method cache busts ([raggi](https://github.com/mastodon/mastodon/pull/19957)) +- Fix opening the language picker scrolling the single-column view to the top in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19983)) +- Fix content warning button missing `aria-expanded` attribute in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19975)) +- Fix redundant `aria-pressed` attributes in web UI ([Brawaru](https://github.com/mastodon/mastodon/pull/19912)) +- Fix crash when external auth provider has no display name set ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19962)) +- Fix followers count not being updated when migrating follows ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19998)) +- Fix double button to clear emoji search input in web UI ([sunny](https://github.com/mastodon/mastodon/pull/19888)) +- Fix missing null check on applications on strike disputes ([kescherCode](https://github.com/mastodon/mastodon/pull/19851)) - Fix featured tags not saving preferred casing ([Gargron](https://github.com/mastodon/mastodon/pull/19732)) - Fix language not being saved when editing status ([Gargron](https://github.com/mastodon/mastodon/pull/19543)) - Fix not being able to input featured tag with hash symbol ([Gargron](https://github.com/mastodon/mastodon/pull/19535)) @@ -118,7 +147,7 @@ Some of the features in this release have been funded through the [NGI0 Discover - Fix account action type validation ([Gargron](https://github.com/mastodon/mastodon/pull/19476)) - Fix upload progress not communicating processing phase in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19530)) - Fix wrong host being used for custom.css when asset host configured ([Gargron](https://github.com/mastodon/mastodon/pull/19521)) -- Fix account migration form ever using outdated account data ([Gargron](https://github.com/mastodon/mastodon/pull/18429)) +- Fix account migration form ever using outdated account data ([Gargron](https://github.com/mastodon/mastodon/pull/18429), [nightpool](https://github.com/mastodon/mastodon/pull/19883)) - Fix error when uploading malformed CSV import ([Gargron](https://github.com/mastodon/mastodon/pull/19509)) - Fix avatars not using image tags in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19488)) - Fix handling of duplicate and out-of-order notifications in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19693)) @@ -157,6 +186,10 @@ Some of the features in this release have been funded through the [NGI0 Discover - Fix `CAS_DISPLAY_NAME`, `SAML_DISPLAY_NAME` and `OIDC_DISPLAY_NAME` being ignored ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18568)) - Fix various typos in comments throughout the codebase ([luzpaz](https://github.com/mastodon/mastodon/pull/18604)) +### Security + +- Fix being able to spoof link verification ([Gargron](https://github.com/mastodon/mastodon/pull/20217)) + ## [3.5.3] - 2022-05-26 ### Added diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 1c0372cf4e..f7ea661d7d 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -682,6 +682,10 @@ { "defaultMessage": "Filter this post", "id": "status.filter" + }, + { + "defaultMessage": "Open original page", + "id": "account.open_original_page" } ], "path": "app/javascript/mastodon/components/status_action_bar.json" @@ -887,16 +891,8 @@ "id": "about.domain_blocks.preamble" }, { - "defaultMessage": "Domain", - "id": "about.domain_blocks.domain" - }, - { - "defaultMessage": "Severity", - "id": "about.domain_blocks.severity" - }, - { - "defaultMessage": "Reason", - "id": "about.domain_blocks.comment" + "defaultMessage": "Reason not available", + "id": "about.domain_blocks.no_reason_available" }, { "defaultMessage": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", @@ -1187,6 +1183,10 @@ "defaultMessage": "Change subscribed languages", "id": "account.languages" }, + { + "defaultMessage": "Open original page", + "id": "account.open_original_page" + }, { "defaultMessage": "Follows you", "id": "account.follows_you" @@ -2603,7 +2603,7 @@ "id": "interaction_modal.on_another_server" }, { - "defaultMessage": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "defaultMessage": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "id": "interaction_modal.other_server_instructions" } ], @@ -3598,6 +3598,10 @@ { "defaultMessage": "Unblock @{name}", "id": "account.unblock" + }, + { + "defaultMessage": "Open original page", + "id": "account.open_original_page" } ], "path": "app/javascript/mastodon/features/status/components/action_bar.json" @@ -3998,6 +4002,15 @@ ], "path": "app/javascript/mastodon/features/ui/components/header.json" }, + { + "descriptors": [ + { + "defaultMessage": "Close", + "id": "lightbox.close" + } + ], + "path": "app/javascript/mastodon/features/ui/components/image_modal.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 2de9846516..b8cb247991 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Posts", "account.posts_with_replies": "Posts and replies", "account.report": "Report @{name}", diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 2b0b84b8f3..60a22b234b 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -17,7 +17,7 @@ module Mastodon end def flags - 'rc2' + 'rc3' end def suffix From 9bc0a6c861e07d0112ef2e5ccd28adeca868bdbe Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Nov 2022 09:20:10 +0100 Subject: [PATCH 402/500] Fix metadata scrubbing removing color profile from images (#20389) --- app/models/concerns/account_avatar.rb | 2 +- app/models/concerns/account_header.rb | 2 +- app/models/custom_emoji.rb | 2 +- app/models/media_attachment.rb | 2 +- app/models/preview_card.rb | 4 ++-- app/models/preview_card_provider.rb | 2 +- app/models/site_upload.rb | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/models/concerns/account_avatar.rb b/app/models/concerns/account_avatar.rb index 0cfd9167cd..e9b8b4adba 100644 --- a/app/models/concerns/account_avatar.rb +++ b/app/models/concerns/account_avatar.rb @@ -18,7 +18,7 @@ module AccountAvatar included do # Avatar upload - has_attached_file :avatar, styles: ->(f) { avatar_styles(f) }, convert_options: { all: '-strip' }, processors: [:lazy_thumbnail] + has_attached_file :avatar, styles: ->(f) { avatar_styles(f) }, convert_options: { all: '+profile "!icc,*" +set modify-date +set create-date' }, processors: [:lazy_thumbnail] validates_attachment_content_type :avatar, content_type: IMAGE_MIME_TYPES validates_attachment_size :avatar, less_than: LIMIT remotable_attachment :avatar, LIMIT, suppress_errors: false diff --git a/app/models/concerns/account_header.rb b/app/models/concerns/account_header.rb index a8c0a28ef5..0d197abfcd 100644 --- a/app/models/concerns/account_header.rb +++ b/app/models/concerns/account_header.rb @@ -19,7 +19,7 @@ module AccountHeader included do # Header upload - has_attached_file :header, styles: ->(f) { header_styles(f) }, convert_options: { all: '-strip' }, processors: [:lazy_thumbnail] + has_attached_file :header, styles: ->(f) { header_styles(f) }, convert_options: { all: '+profile "!icc,*" +set modify-date +set create-date' }, processors: [:lazy_thumbnail] validates_attachment_content_type :header, content_type: IMAGE_MIME_TYPES validates_attachment_size :header, less_than: LIMIT remotable_attachment :header, LIMIT, suppress_errors: false diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb index 7b19cd2ac9..3048056591 100644 --- a/app/models/custom_emoji.rb +++ b/app/models/custom_emoji.rb @@ -37,7 +37,7 @@ class CustomEmoji < ApplicationRecord belongs_to :category, class_name: 'CustomEmojiCategory', optional: true has_one :local_counterpart, -> { where(domain: nil) }, class_name: 'CustomEmoji', primary_key: :shortcode, foreign_key: :shortcode - has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce -strip' } }, validate_media_type: false + has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set modify-date +set create-date' } }, validate_media_type: false before_validation :downcase_domain diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index a6e090f4c8..7aa8658d90 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -167,7 +167,7 @@ class MediaAttachment < ApplicationRecord }.freeze GLOBAL_CONVERT_OPTIONS = { - all: '-quality 90 -strip +set modify-date +set create-date', + all: '-quality 90 +profile "!icc,*" +set modify-date +set create-date', }.freeze belongs_to :account, inverse_of: :media_attachments, optional: true diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb index b5d3f9c8fe..56ca62d5ec 100644 --- a/app/models/preview_card.rb +++ b/app/models/preview_card.rb @@ -50,7 +50,7 @@ class PreviewCard < ApplicationRecord has_and_belongs_to_many :statuses has_one :trend, class_name: 'PreviewCardTrend', inverse_of: :preview_card, dependent: :destroy - has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' }, validate_media_type: false + has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 90 +profile "!icc,*" +set modify-date +set create-date' }, validate_media_type: false validates :url, presence: true, uniqueness: true validates_attachment_content_type :image, content_type: IMAGE_MIME_TYPES @@ -122,7 +122,7 @@ class PreviewCard < ApplicationRecord original: { geometry: '400x400>', file_geometry_parser: FastGeometryParser, - convert_options: '-coalesce -strip', + convert_options: '-coalesce', blurhash: BLURHASH_OPTIONS, }, } diff --git a/app/models/preview_card_provider.rb b/app/models/preview_card_provider.rb index 15b24e2bdf..d61fe60208 100644 --- a/app/models/preview_card_provider.rb +++ b/app/models/preview_card_provider.rb @@ -25,7 +25,7 @@ class PreviewCardProvider < ApplicationRecord validates :domain, presence: true, uniqueness: true, domain: true - has_attached_file :icon, styles: { static: { format: 'png', convert_options: '-coalesce -strip' } }, validate_media_type: false + has_attached_file :icon, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set modify-date +set create-date' } }, validate_media_type: false validates_attachment :icon, content_type: { content_type: ICON_MIME_TYPES }, size: { less_than: LIMIT } remotable_attachment :icon, LIMIT diff --git a/app/models/site_upload.rb b/app/models/site_upload.rb index d3b81d4d52..167131fdd9 100644 --- a/app/models/site_upload.rb +++ b/app/models/site_upload.rb @@ -40,7 +40,7 @@ class SiteUpload < ApplicationRecord mascot: {}.freeze, }.freeze - has_attached_file :file, styles: ->(file) { STYLES[file.instance.var.to_sym] }, convert_options: { all: '-coalesce -strip' }, processors: [:lazy_thumbnail, :blurhash_transcoder, :type_corrector] + has_attached_file :file, styles: ->(file) { STYLES[file.instance.var.to_sym] }, convert_options: { all: '-coalesce +profile "!icc,*" +set modify-date +set create-date' }, processors: [:lazy_thumbnail, :blurhash_transcoder, :type_corrector] validates_attachment_content_type :file, content_type: /\Aimage\/.*\z/ validates :file, presence: true From 5e796dc6f85b37c8378fe01cfd8ac23222c89eea Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 11 Nov 2022 09:20:24 +0100 Subject: [PATCH 403/500] =?UTF-8?q?Remove=20=E2=80=9CNo=20description=20ad?= =?UTF-8?q?ded=E2=80=9D=20media=20warning=20in=20edit=20mode=20(#20393)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Editing media metadata is not currently possible in edit mode, the button would open the modal but saving the changes would error out. --- app/javascript/mastodon/features/compose/components/upload.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.js index 0b2dcf08f3..97ac54da91 100644 --- a/app/javascript/mastodon/features/compose/components/upload.js +++ b/app/javascript/mastodon/features/compose/components/upload.js @@ -47,7 +47,7 @@ export default class Upload extends ImmutablePureComponent { {!isEditingStatus && ()}
      - {(media.get('description') || '').length === 0 && ( + {(media.get('description') || '').length === 0 && !isEditingStatus && (
      From 553b169d483e9b2f28007e130a494aec08a1720a Mon Sep 17 00:00:00 2001 From: Cutls Date: Sat, 12 Nov 2022 05:19:48 +0900 Subject: [PATCH 404/500] Do not show drag&drop dialog when not logined (#20400) * Cannot upload until login * and do not fire upload * change username props to context --- app/javascript/mastodon/features/ui/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 298f2111de..b059566061 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -290,7 +290,7 @@ class UI extends React.PureComponent { this.dragTargets.push(e.target); } - if (e.dataTransfer && Array.from(e.dataTransfer.types).includes('Files') && this.props.canUploadMore) { + if (e.dataTransfer && Array.from(e.dataTransfer.types).includes('Files') && this.props.canUploadMore && this.context.identity.signedIn) { this.setState({ draggingOver: true }); } } @@ -318,7 +318,7 @@ class UI extends React.PureComponent { this.setState({ draggingOver: false }); this.dragTargets = []; - if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore) { + if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore && this.context.identity.signedIn) { this.props.dispatch(uploadCompose(e.dataTransfer.files)); } } From 31005aad12c6a915a00501765a6dab25878326cb Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 11 Nov 2022 21:22:17 +0100 Subject: [PATCH 405/500] Add the ability to edit media attachment metadata for any unattached media (#20402) --- .../mastodon/features/compose/components/upload.js | 7 +++---- .../features/compose/containers/upload_container.js | 1 - app/javascript/mastodon/reducers/compose.js | 4 ++-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.js index 97ac54da91..b08307adee 100644 --- a/app/javascript/mastodon/features/compose/components/upload.js +++ b/app/javascript/mastodon/features/compose/components/upload.js @@ -17,7 +17,6 @@ export default class Upload extends ImmutablePureComponent { media: ImmutablePropTypes.map.isRequired, onUndo: PropTypes.func.isRequired, onOpenFocalPoint: PropTypes.func.isRequired, - isEditingStatus: PropTypes.bool.isRequired, }; handleUndoClick = e => { @@ -31,7 +30,7 @@ export default class Upload extends ImmutablePureComponent { } render () { - const { media, isEditingStatus } = this.props; + const { media } = this.props; const focusX = media.getIn(['meta', 'focus', 'x']); const focusY = media.getIn(['meta', 'focus', 'y']); const x = ((focusX / 2) + .5) * 100; @@ -44,10 +43,10 @@ export default class Upload extends ImmutablePureComponent {
      - {!isEditingStatus && ()} + {!!media.get('unattached') && ()}
      - {(media.get('description') || '').length === 0 && !isEditingStatus && ( + {(media.get('description') || '').length === 0 && !!media.get('unattached') && (
      diff --git a/app/javascript/mastodon/features/compose/containers/upload_container.js b/app/javascript/mastodon/features/compose/containers/upload_container.js index 1108aec305..05cd2ecc1f 100644 --- a/app/javascript/mastodon/features/compose/containers/upload_container.js +++ b/app/javascript/mastodon/features/compose/containers/upload_container.js @@ -5,7 +5,6 @@ import { submitCompose } from '../../../actions/compose'; const mapStateToProps = (state, { id }) => ({ media: state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id), - isEditingStatus: state.getIn(['compose', 'id']) !== null, }); const mapDispatchToProps = dispatch => ({ diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index ad384bd0b5..afb8b40c10 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -135,7 +135,7 @@ function appendMedia(state, media, file) { if (media.get('type') === 'image') { media = media.set('file', file); } - map.update('media_attachments', list => list.push(media)); + map.update('media_attachments', list => list.push(media.set('unattached', true))); map.set('is_uploading', false); map.set('is_processing', false); map.set('resetFileKey', Math.floor((Math.random() * 0x10000))); @@ -446,7 +446,7 @@ export default function compose(state = initialState, action) { map.set('text', action.raw_text || unescapeHTML(expandMentions(action.status))); map.set('in_reply_to', action.status.get('in_reply_to_id')); map.set('privacy', action.status.get('visibility')); - map.set('media_attachments', action.status.get('media_attachments')); + map.set('media_attachments', action.status.get('media_attachments').map((media) => media.set('unattached', true))); map.set('focusDate', new Date()); map.set('caretPosition', null); map.set('idempotencyKey', uuid()); From 96f51e593f2609579b8155d971bcbc5ab9e7cd4c Mon Sep 17 00:00:00 2001 From: Emily Strickland Date: Fri, 11 Nov 2022 12:22:28 -0800 Subject: [PATCH 406/500] Guard against error extracting `body` from URL (#20428) If `Nokogiri::HTML(value).at_xpath('//body')` fails to find the `body` element, it will return `nil`. We can guard against that with an early return. Avoids calling `children` on `Nilclass` in those cases. --- app/models/account/field.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/account/field.rb b/app/models/account/field.rb index e84a0eeb1c..ffc8dce80b 100644 --- a/app/models/account/field.rb +++ b/app/models/account/field.rb @@ -76,6 +76,7 @@ class Account::Field < ActiveModelSerializers::Model def extract_url_from_html doc = Nokogiri::HTML(value).at_xpath('//body') + return if doc.nil? return if doc.children.size > 1 element = doc.children.first From 93a6ebc83d4bc6647d1eafce509a29aa3642c87c Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 11 Nov 2022 21:23:03 +0100 Subject: [PATCH 407/500] Fix WebUI crash when listing server blocks and rationale is not available (#20408) Regression from #20391 Fixes #20405 --- app/javascript/mastodon/features/about/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.js index 15d017642c..e59f737386 100644 --- a/app/javascript/mastodon/features/about/index.js +++ b/app/javascript/mastodon/features/about/index.js @@ -191,7 +191,7 @@ class About extends React.PureComponent { {intl.formatMessage(severityMessages[block.get('severity')].title)}
      -

      {block.get('comment').length > 0 ? block.get('comment') : }

      +

      {(block.get('comment') || '').length > 0 ? block.get('comment') : }

      ))}
      From c4c1bee8807e3548ff1f2b231a3cca647d9e8a62 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Sat, 12 Nov 2022 05:24:10 +0900 Subject: [PATCH 408/500] Fix trendable status without review (#20214) --- app/models/account.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/account.rb b/app/models/account.rb index cc3a8f3df4..fc7359cfc4 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -256,7 +256,7 @@ class Account < ApplicationRecord update!(memorial: true) end - def trendable + def trendable? boolean_with_default('trendable', Setting.trendable_by_default) end From 28cda42af5983d2d450c2c0a9fa8cd38006d8089 Mon Sep 17 00:00:00 2001 From: Bearice Ren Date: Sat, 12 Nov 2022 04:31:03 +0800 Subject: [PATCH 409/500] fixes ArgumentError when proxy is used (#20420) * fixes ArgumentError when proxy is used * Update app/lib/request.rb Co-authored-by: Claire Co-authored-by: Eugen Rochko Co-authored-by: Claire --- app/lib/request.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index dd198f3991..96d934a8f2 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -281,7 +281,7 @@ class Request class ProxySocket < Socket class << self - def check_private_address(_address) + def check_private_address(_address, _host) # Accept connections to private addresses as HTTP proxies will usually # be on local addresses nil From 628b3fa44916dba1bcb24af0a92b49edc4bf49ce Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Sat, 12 Nov 2022 05:11:07 +0100 Subject: [PATCH 410/500] Uppercase chart readme.md to help tools discover it (#20438) --- chart/{readme.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename chart/{readme.md => README.md} (100%) diff --git a/chart/readme.md b/chart/README.md similarity index 100% rename from chart/readme.md rename to chart/README.md From e1af21cfd089d6238920471f8198f447eea05e01 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 12 Nov 2022 07:56:25 +0100 Subject: [PATCH 411/500] New Crowdin updates (#20258) * New translations en.json (Asturian) * New translations en.yml (Telugu) * New translations en.yml (Tamil) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Spanish, Argentina) * New translations en.yml (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Bengali) * New translations en.yml (Marathi) * New translations en.yml (Croatian) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.json (Latvian) * New translations en.yml (Hindi) * New translations en.yml (Malay) * New translations en.yml (Asturian) * New translations en.json (Occitan) * New translations simple_form.en.yml (Basque) * New translations simple_form.en.yml (Spanish) * New translations simple_form.en.yml (Arabic) * New translations simple_form.en.yml (Bulgarian) * New translations simple_form.en.yml (Catalan) * New translations simple_form.en.yml (Danish) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Greek) * New translations simple_form.en.yml (Frisian) * New translations simple_form.en.yml (Finnish) * New translations simple_form.en.yml (Romanian) * New translations simple_form.en.yml (Irish) * New translations simple_form.en.yml (Hebrew) * New translations simple_form.en.yml (Hungarian) * New translations simple_form.en.yml (Armenian) * New translations simple_form.en.yml (Italian) * New translations simple_form.en.yml (Japanese) * New translations simple_form.en.yml (Georgian) * New translations simple_form.en.yml (French) * New translations simple_form.en.yml (Vietnamese) * New translations en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Corsican) * New translations simple_form.en.yml (Norwegian) * New translations simple_form.en.yml (Polish) * New translations simple_form.en.yml (Sinhala) * New translations en.yml (Kabyle) * New translations en.yml (Sardinian) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.yml (Sanskrit) * New translations simple_form.en.yml (Tatar) * New translations simple_form.en.yml (Welsh) * New translations simple_form.en.yml (Esperanto) * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) * New translations simple_form.en.yml (Malayalam) * New translations simple_form.en.yml (Kazakh) * New translations simple_form.en.yml (Breton) * New translations simple_form.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Asturian) * New translations simple_form.en.yml (Occitan) * New translations simple_form.en.yml (Serbian (Latin)) * New translations simple_form.en.yml (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Sorani (Kurdish)) * New translations simple_form.en.yml (Estonian) * New translations simple_form.en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Portuguese) * New translations simple_form.en.yml (Galician) * New translations simple_form.en.yml (Russian) * New translations simple_form.en.yml (Slovak) * New translations simple_form.en.yml (Albanian) * New translations simple_form.en.yml (Serbian (Cyrillic)) * New translations simple_form.en.yml (Turkish) * New translations simple_form.en.yml (Ukrainian) * New translations simple_form.en.yml (Icelandic) * New translations simple_form.en.yml (Croatian) * New translations activerecord.en.yml (Icelandic) * New translations simple_form.en.yml (Persian) * New translations simple_form.en.yml (Tamil) * New translations simple_form.en.yml (Spanish, Argentina) * New translations simple_form.en.yml (Spanish, Mexico) * New translations simple_form.en.yml (Bengali) * New translations simple_form.en.yml (Corsican) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations activerecord.en.yml (Slovak) * New translations activerecord.en.yml (Dutch) * New translations activerecord.en.yml (Norwegian) * New translations activerecord.en.yml (Polish) * New translations activerecord.en.yml (Portuguese) * New translations activerecord.en.yml (Russian) * New translations activerecord.en.yml (Japanese) * New translations activerecord.en.yml (Albanian) * New translations activerecord.en.yml (Serbian (Cyrillic)) * New translations activerecord.en.yml (Swedish) * New translations activerecord.en.yml (Turkish) * New translations activerecord.en.yml (Ukrainian) * New translations activerecord.en.yml (Chinese Simplified) * New translations activerecord.en.yml (Vietnamese) * New translations activerecord.en.yml (Galician) * New translations activerecord.en.yml (Georgian) * New translations activerecord.en.yml (Italian) * New translations activerecord.en.yml (Catalan) * New translations activerecord.en.yml (Czech) * New translations activerecord.en.yml (Romanian) * New translations activerecord.en.yml (French) * New translations activerecord.en.yml (Spanish) * New translations activerecord.en.yml (Afrikaans) * New translations activerecord.en.yml (Arabic) * New translations activerecord.en.yml (Bulgarian) * New translations activerecord.en.yml (Armenian) * New translations activerecord.en.yml (German) * New translations activerecord.en.yml (Greek) * New translations activerecord.en.yml (Frisian) * New translations activerecord.en.yml (Basque) * New translations activerecord.en.yml (Finnish) * New translations activerecord.en.yml (Irish) * New translations activerecord.en.yml (Hebrew) * New translations activerecord.en.yml (Hungarian) * New translations simple_form.en.yml (Ido) * New translations simple_form.en.yml (Kabyle) * New translations simple_form.en.yml (Standard Moroccan Tamazight) * New translations simple_form.en.yml (Sardinian) * New translations activerecord.en.yml (Indonesian) * New translations activerecord.en.yml (Kurmanji (Kurdish)) * New translations activerecord.en.yml (Breton) * New translations activerecord.en.yml (Persian) * New translations activerecord.en.yml (Asturian) * New translations activerecord.en.yml (Occitan) * New translations activerecord.en.yml (Serbian (Latin)) * New translations activerecord.en.yml (Sorani (Kurdish)) * New translations activerecord.en.yml (Tatar) * New translations activerecord.en.yml (Corsican) * New translations en.yml (Burmese) * New translations en.yml (Igbo) * New translations activerecord.en.yml (Malayalam) * New translations activerecord.en.yml (Sinhala) * New translations activerecord.en.yml (Chinese Traditional, Hong Kong) * New translations activerecord.en.yml (Norwegian Nynorsk) * New translations activerecord.en.yml (Tamil) * New translations activerecord.en.yml (Spanish, Argentina) * New translations activerecord.en.yml (Spanish, Mexico) * New translations activerecord.en.yml (Bengali) * New translations activerecord.en.yml (Marathi) * New translations activerecord.en.yml (Thai) * New translations activerecord.en.yml (Croatian) * New translations activerecord.en.yml (Kazakh) * New translations activerecord.en.yml (Estonian) * New translations activerecord.en.yml (Latvian) * New translations activerecord.en.yml (Hindi) * New translations activerecord.en.yml (Welsh) * New translations activerecord.en.yml (Sardinian) * New translations activerecord.en.yml (Kabyle) * New translations activerecord.en.yml (Ido) * New translations activerecord.en.yml (Standard Moroccan Tamazight) * New translations en.json (Afrikaans) * New translations en.yml (Bulgarian) * New translations en.json (Hungarian) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.yml (Slovenian) * New translations en.json (Swedish) * New translations en.json (Chinese Simplified) * New translations en.json (Vietnamese) * New translations en.json (Icelandic) * New translations en.json (Kurmanji (Kurdish)) * New translations simple_form.en.yml (Bulgarian) * New translations doorkeeper.en.yml (Korean) * New translations activerecord.en.yml (Bulgarian) * New translations devise.en.yml (Bulgarian) * New translations en.yml (German) * New translations en.json (German) * New translations en.json (Romanian) * New translations en.json (Catalan) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations en.json (Norwegian) * New translations en.json (Vietnamese) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Latvian) * New translations devise.en.yml (Bulgarian) * New translations en.json (Hebrew) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.yml (Korean) * New translations en.json (Turkish) * New translations en.yml (Portuguese, Brazilian) * New translations en.json (Scottish Gaelic) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Portuguese, Brazilian) * New translations devise.en.yml (Bulgarian) * New translations en.json (Thai) * New translations en.json (Bulgarian) * New translations en.yml (Ukrainian) * New translations en.json (Indonesian) * New translations en.yml (Portuguese, Brazilian) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (German) * New translations en.json (Portuguese) * New translations en.json (Spanish) * New translations en.json (Danish) * New translations en.json (Ukrainian) * New translations en.json (Tamil) * New translations en.json (Chinese Traditional) * New translations simple_form.en.yml (Occitan) * New translations doorkeeper.en.yml (Occitan) * New translations en.json (Norwegian) * New translations en.json (Arabic) * New translations en.yml (Arabic) * New translations en.json (Korean) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Arabic) * New translations en.json (Arabic) * New translations en.json (Basque) * New translations en.yml (Basque) * New translations en.json (Norwegian) * New translations en.yml (Norwegian) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Basque) * New translations doorkeeper.en.yml (Esperanto) * New translations en.json (Esperanto) * New translations en.json (Norwegian) * New translations en.yml (Norwegian) * New translations en.json (Latvian) * New translations simple_form.en.yml (Occitan) * New translations devise.en.yml (Esperanto) * New translations en.yml (Czech) * New translations en.json (German) * New translations en.json (Czech) * New translations en.json (French) * New translations en.yml (Hebrew) * New translations en.json (Norwegian) * New translations en.json (Irish) * New translations en.yml (Dutch) * New translations en.json (Ukrainian) * New translations en.json (Romanian) * New translations en.json (Russian) * New translations en.json (Korean) * New translations en.yml (Korean) * New translations doorkeeper.en.yml (Korean) * New translations doorkeeper.en.yml (Chinese Traditional) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 35 +- app/javascript/mastodon/locales/ar.json | 87 ++- app/javascript/mastodon/locales/ast.json | 7 +- app/javascript/mastodon/locales/bg.json | 29 +- app/javascript/mastodon/locales/bn.json | 7 +- app/javascript/mastodon/locales/br.json | 57 +- app/javascript/mastodon/locales/ca.json | 7 +- app/javascript/mastodon/locales/ckb.json | 7 +- app/javascript/mastodon/locales/co.json | 7 +- app/javascript/mastodon/locales/cs.json | 11 +- app/javascript/mastodon/locales/cy.json | 43 +- app/javascript/mastodon/locales/da.json | 7 +- app/javascript/mastodon/locales/de.json | 25 +- app/javascript/mastodon/locales/el.json | 7 +- app/javascript/mastodon/locales/en-GB.json | 13 +- app/javascript/mastodon/locales/eo.json | 13 +- app/javascript/mastodon/locales/es-AR.json | 9 +- app/javascript/mastodon/locales/es-MX.json | 15 +- app/javascript/mastodon/locales/es.json | 7 +- app/javascript/mastodon/locales/et.json | 7 +- app/javascript/mastodon/locales/eu.json | 19 +- app/javascript/mastodon/locales/fa.json | 7 +- app/javascript/mastodon/locales/fi.json | 11 +- app/javascript/mastodon/locales/fr.json | 7 +- app/javascript/mastodon/locales/fy.json | 7 +- app/javascript/mastodon/locales/ga.json | 47 +- app/javascript/mastodon/locales/gd.json | 17 +- app/javascript/mastodon/locales/gl.json | 7 +- app/javascript/mastodon/locales/he.json | 7 +- app/javascript/mastodon/locales/hi.json | 7 +- app/javascript/mastodon/locales/hr.json | 7 +- app/javascript/mastodon/locales/hu.json | 7 +- app/javascript/mastodon/locales/hy.json | 7 +- app/javascript/mastodon/locales/id.json | 17 +- app/javascript/mastodon/locales/ig.json | 7 +- app/javascript/mastodon/locales/io.json | 7 +- app/javascript/mastodon/locales/is.json | 7 +- app/javascript/mastodon/locales/it.json | 7 +- app/javascript/mastodon/locales/ja.json | 7 +- app/javascript/mastodon/locales/ka.json | 7 +- app/javascript/mastodon/locales/kab.json | 7 +- app/javascript/mastodon/locales/kk.json | 7 +- app/javascript/mastodon/locales/kn.json | 7 +- app/javascript/mastodon/locales/ko.json | 43 +- app/javascript/mastodon/locales/ku.json | 7 +- app/javascript/mastodon/locales/kw.json | 7 +- app/javascript/mastodon/locales/lt.json | 7 +- app/javascript/mastodon/locales/lv.json | 45 +- app/javascript/mastodon/locales/mk.json | 7 +- app/javascript/mastodon/locales/ml.json | 7 +- app/javascript/mastodon/locales/mr.json | 7 +- app/javascript/mastodon/locales/ms.json | 7 +- app/javascript/mastodon/locales/my.json | 7 +- app/javascript/mastodon/locales/nl.json | 7 +- app/javascript/mastodon/locales/nn.json | 7 +- app/javascript/mastodon/locales/no.json | 55 +- app/javascript/mastodon/locales/oc.json | 27 +- app/javascript/mastodon/locales/pa.json | 7 +- app/javascript/mastodon/locales/pl.json | 9 +- app/javascript/mastodon/locales/pt-BR.json | 7 +- app/javascript/mastodon/locales/pt-PT.json | 7 +- app/javascript/mastodon/locales/ro.json | 85 ++- app/javascript/mastodon/locales/ru.json | 25 +- app/javascript/mastodon/locales/sa.json | 7 +- app/javascript/mastodon/locales/sc.json | 7 +- app/javascript/mastodon/locales/si.json | 7 +- app/javascript/mastodon/locales/sk.json | 7 +- app/javascript/mastodon/locales/sl.json | 13 +- app/javascript/mastodon/locales/sq.json | 7 +- app/javascript/mastodon/locales/sr-Latn.json | 7 +- app/javascript/mastodon/locales/sr.json | 7 +- app/javascript/mastodon/locales/sv.json | 33 +- app/javascript/mastodon/locales/szl.json | 7 +- app/javascript/mastodon/locales/ta.json | 15 +- app/javascript/mastodon/locales/tai.json | 7 +- app/javascript/mastodon/locales/te.json | 7 +- app/javascript/mastodon/locales/th.json | 19 +- app/javascript/mastodon/locales/tr.json | 7 +- app/javascript/mastodon/locales/tt.json | 7 +- app/javascript/mastodon/locales/ug.json | 7 +- app/javascript/mastodon/locales/uk.json | 7 +- app/javascript/mastodon/locales/ur.json | 7 +- app/javascript/mastodon/locales/vi.json | 7 +- .../mastodon/locales/whitelist_de.json | 1 - app/javascript/mastodon/locales/zgh.json | 7 +- app/javascript/mastodon/locales/zh-CN.json | 29 +- app/javascript/mastodon/locales/zh-HK.json | 7 +- app/javascript/mastodon/locales/zh-TW.json | 7 +- config/locales/activerecord.bg.yml | 31 +- config/locales/activerecord.da.yml | 2 +- config/locales/activerecord.en-GB.yml | 2 +- config/locales/activerecord.eo.yml | 27 +- config/locales/activerecord.ko.yml | 4 +- config/locales/activerecord.pl.yml | 2 +- config/locales/activerecord.sl.yml | 2 +- config/locales/activerecord.vi.yml | 2 +- config/locales/activerecord.zh-TW.yml | 4 +- config/locales/af.yml | 10 +- config/locales/ar.yml | 35 ++ config/locales/bg.yml | 544 +++++++++++++++++- config/locales/cs.yml | 7 + config/locales/de.yml | 2 +- config/locales/devise.bg.yml | 42 +- config/locales/devise.en-GB.yml | 114 ++++ config/locales/devise.eo.yml | 10 +- config/locales/devise.ko.yml | 8 +- config/locales/devise.sl.yml | 52 +- config/locales/devise.th.yml | 2 +- config/locales/devise.zh-TW.yml | 38 +- config/locales/doorkeeper.bg.yml | 57 +- config/locales/doorkeeper.en-GB.yml | 66 +++ config/locales/doorkeeper.eo.yml | 4 + config/locales/doorkeeper.ko.yml | 6 +- config/locales/doorkeeper.oc.yml | 2 + config/locales/doorkeeper.sl.yml | 14 +- config/locales/en-GB.yml | 29 + config/locales/eo.yml | 128 +++++ config/locales/eu.yml | 3 + config/locales/ga.yml | 7 + config/locales/he.yml | 2 +- config/locales/id.yml | 1 + config/locales/ko.yml | 116 ++-- config/locales/lv.yml | 20 +- config/locales/nl.yml | 4 +- config/locales/nn.yml | 96 +++- config/locales/no.yml | 65 +++ config/locales/pt-BR.yml | 206 +++---- config/locales/simple_form.af.yml | 3 + config/locales/simple_form.ar.yml | 2 + config/locales/simple_form.bg.yml | 96 +++- config/locales/simple_form.de.yml | 2 +- config/locales/simple_form.en-GB.yml | 35 ++ config/locales/simple_form.es-MX.yml | 2 + config/locales/simple_form.eu.yml | 2 + config/locales/simple_form.id.yml | 2 + config/locales/simple_form.ko.yml | 10 +- config/locales/simple_form.lv.yml | 8 +- config/locales/simple_form.oc.yml | 9 + config/locales/simple_form.pt-BR.yml | 20 +- config/locales/simple_form.sl.yml | 4 +- config/locales/simple_form.sv.yml | 8 +- config/locales/simple_form.th.yml | 2 + config/locales/simple_form.zh-CN.yml | 2 +- config/locales/simple_form.zh-TW.yml | 20 +- config/locales/sl.yml | 90 +-- config/locales/sv.yml | 8 +- config/locales/th.yml | 23 +- config/locales/uk.yml | 2 +- config/locales/zh-CN.yml | 8 +- config/locales/zh-TW.yml | 52 +- 150 files changed, 2341 insertions(+), 1095 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 95822b7b04..854312fdf5 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -2,10 +2,8 @@ "about.blocks": "Gemodereerde bedieners", "about.contact": "Kontak:", "about.disclaimer": "Mastodon is gratis, oop-bron sagteware, en 'n handelsmerk van Mastodon gGmbH.", - "about.domain_blocks.comment": "Rede", - "about.domain_blocks.domain": "Domein", + "about.domain_blocks.no_reason_available": "Rede nie beskikbaar nie", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Ernstigheid", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Beperk", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Demp @{name}", "account.mute_notifications": "Demp kennisgewings van @{name}", "account.muted": "Gedemp", + "account.open_original_page": "Maak oorspronklike blad oop", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Rapporteer @{name}", @@ -70,7 +69,7 @@ "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Gemiddeld", - "admin.dashboard.retention.cohort": "Sign-up month", + "admin.dashboard.retention.cohort": "Registrasie-maand", "admin.dashboard.retention.cohort_size": "Nuwe gebruikers", "alert.rate_limited.message": "Probeer asb. weer na {retry_time, time, medium}.", "alert.rate_limited.title": "Tempo-beperk", @@ -168,7 +167,7 @@ "confirmations.mute.message": "Are you sure you want to mute {name}?", "confirmations.redraft.confirm": "Delete & redraft", "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", - "confirmations.reply.confirm": "Reply", + "confirmations.reply.confirm": "Reageer", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.unfollow.confirm": "Unfollow", "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", @@ -219,14 +218,14 @@ "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", + "empty_column.follow_requests": "Jy het nog geen volg versoeke nie. Wanneer jy een ontvang, sal dit hier vertoon.", "empty_column.hashtag": "There is nothing in this hashtag yet.", "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", "empty_column.home.suggestions": "See some suggestions", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", + "empty_column.lists": "Jy het nog geen lyste nie. Wanneer jy een skep, sal dit hier vertoon.", "empty_column.mutes": "You haven't muted any users yet.", - "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", + "empty_column.notifications": "Jy het nog geen kennisgewings nie. Wanneer ander mense interaksie het met jou, sal dit hier vertoon.", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", @@ -258,7 +257,7 @@ "filter_modal.title.status": "Filter a post", "follow_recommendations.done": "Done", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", - "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", + "follow_recommendations.lead": "Plasings van persone wie jy volg sal in chronologiese volgorde op jou tuis voer vertoon. Jy kan enige tyd ophou om persone te volg en sal dan nie plasings ontvang nie!", "follow_request.authorize": "Authorize", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", @@ -290,15 +289,15 @@ "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.reply": "Met 'n rekening op Mastodon kan jy reageer op hierdie plasing.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Haak en plak hierdie URL in die soek area van jou gunseling toep of die web blaaier waar jy ingeteken is.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", + "interaction_modal.preamble": "Omdat Mastodon gedesentraliseerd is, kan jy jou bestaande rekening wat by 'n ander Mastodon bediener of versoenbare platform gehuisves is gebruik indien jy nie 'n rekening hier het nie.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reply": "Reageer op {name} se plasing", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -326,7 +325,7 @@ "keyboard_shortcuts.open_media": "to open media", "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", - "keyboard_shortcuts.reply": "to reply", + "keyboard_shortcuts.reply": "Reageer op plasing", "keyboard_shortcuts.requests": "to open follow requests list", "keyboard_shortcuts.search": "to focus search", "keyboard_shortcuts.spoilers": "Wys/versteek IW veld", @@ -355,7 +354,7 @@ "lists.replies_policy.none": "No one", "lists.replies_policy.title": "Show replies to:", "lists.search": "Soek tussen mense wat jy volg", - "lists.subheading": "Your lists", + "lists.subheading": "Jou lyste", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Loading...", "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", @@ -472,7 +471,7 @@ "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "today", - "reply_indicator.cancel": "Cancel", + "reply_indicator.cancel": "Kanselleer", "report.block": "Block", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Other", @@ -577,8 +576,8 @@ "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", "status.replied_to": "Replied to {name}", - "status.reply": "Reply", - "status.replyAll": "Reply to thread", + "status.reply": "Reageer", + "status.replyAll": "Reageer in garing", "status.report": "Report @{name}", "status.sensitive_warning": "Sensitiewe inhoud", "status.share": "Share", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 60d62c8cd2..ddbc30f1eb 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -1,21 +1,19 @@ { "about.blocks": "خوادم تحت الإشراف", - "about.contact": "اتصل بـ:", - "about.disclaimer": "ماستدون مجاني ومفتوح المصدر وعلامة تجارية لماستدون GmbH.", - "about.domain_blocks.comment": "السبب", - "about.domain_blocks.domain": "النطاق", + "about.contact": "للاتصال:", + "about.disclaimer": "ماستدون برنامج حر ومفتوح المصدر وعلامة تجارية لـ Mastodon GmbH.", + "about.domain_blocks.no_reason_available": "السبب غير متوفر", "about.domain_blocks.preamble": "يسمح لك ماستدون عموماً بعرض المحتوى من المستخدمين من أي خادم آخر في الفدرالية والتفاعل معهم. وهذه هي الاستثناءات التي وضعت على هذا الخادوم بالذات.", - "about.domain_blocks.severity": "خطورة", "about.domain_blocks.silenced.explanation": "عموماً، لن ترى ملفات التعريف والمحتوى من هذا الخادم، إلا إذا كنت تبحث عنه بشكل صريح أو تختار أن تتابعه.", "about.domain_blocks.silenced.title": "تم كتمه", "about.domain_blocks.suspended.explanation": "لن يتم معالجة أي بيانات من هذا الخادم أو تخزينها أو تبادلها، مما يجعل أي تفاعل أو اتصال مع المستخدمين من هذا الخادم مستحيلا.", - "about.domain_blocks.suspended.title": "مُعلّـق", + "about.domain_blocks.suspended.title": "مُعلّق", "about.not_available": "لم يتم توفير هذه المعلومات على هذا الخادم.", "about.powered_by": "شبكة اجتماعية لامركزية مدعومة من {mastodon}", "about.rules": "قواعد الخادم", "account.account_note_header": "مُلاحظة", "account.add_or_remove_from_list": "الإضافة أو الإزالة من القائمة", - "account.badges.bot": "روبوت", + "account.badges.bot": "بوت", "account.badges.group": "فريق", "account.block": "احجب @{name}", "account.block_domain": "حظر اسم النِّطاق {domain}", @@ -39,23 +37,24 @@ "account.following_counter": "{count, plural, zero{لا يُتابِع} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}", "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", "account.follows_you": "يُتابِعُك", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "اذهب إلى الملف الشخصي", "account.hide_reblogs": "إخفاء مشاركات @{name}", "account.joined_short": "انضم في", "account.languages": "تغيير اللغات المشترَك فيها", "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}", "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.", "account.media": "وسائط", - "account.mention": "ذِكر @{name}", + "account.mention": "أذكُر @{name}", "account.moved_to": "أشار {name} إلى أن حسابه الجديد الآن:", - "account.mute": "كَتم @{name}", + "account.mute": "أكتم @{name}", "account.mute_notifications": "كَتم الإشعارات من @{name}", "account.muted": "مَكتوم", + "account.open_original_page": "افتح الصفحة الأصلية", "account.posts": "منشورات", "account.posts_with_replies": "المنشورات والرُدود", "account.report": "الإبلاغ عن @{name}", "account.requested": "في انتظار القبول. اضغط لإلغاء طلب المُتابعة", - "account.share": "مُشاركة الملف الشخصي لـ @{name}", + "account.share": "شارِك الملف التعريفي لـ @{name}", "account.show_reblogs": "عرض مشاركات @{name}", "account.statuses_counter": "{count, plural, zero {لَا منشورات} one {منشور واحد} two {منشوران إثنان} few {{counter} منشورات} many {{counter} منشورًا} other {{counter} منشور}}", "account.unblock": "إلغاء الحَظر عن @{name}", @@ -67,8 +66,8 @@ "account.unmute_notifications": "إلغاء كَتم الإشعارات عن @{name}", "account.unmute_short": "إلغاء الكتم", "account_note.placeholder": "اضغط لإضافة مُلاحظة", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "معدل الاحتفاظ بالمستخدم بعد التسجيل بيوم", + "admin.dashboard.monthly_retention": "معدل الاحتفاظ بالمستخدم بعد التسجيل بالشهور", "admin.dashboard.retention.average": "المعدل", "admin.dashboard.retention.cohort": "شهر التسجيل", "admin.dashboard.retention.cohort_size": "المستخدمون الجدد", @@ -81,7 +80,7 @@ "audio.hide": "إخفاء المقطع الصوتي", "autosuggest_hashtag.per_week": "{count} في الأسبوع", "boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة", - "bundle_column_error.copy_stacktrace": "نسخ تقرير الخطأ", + "bundle_column_error.copy_stacktrace": "انسخ تقرير الخطأ", "bundle_column_error.error.body": "لا يمكن تقديم الصفحة المطلوبة. قد يكون بسبب خطأ في التعليمات البرمجية، أو مشكلة توافق المتصفح.", "bundle_column_error.error.title": "أوه لا!", "bundle_column_error.network.body": "حدث خطأ أثناء محاولة تحميل هذه الصفحة. قد يكون هذا بسبب مشكلة مؤقتة في اتصالك بالإنترنت أو هذا الخادم.", @@ -156,7 +155,7 @@ "confirmations.delete.confirm": "حذف", "confirmations.delete.message": "هل أنتَ مُتأكدٌ أنك تُريدُ حَذفَ هذا المنشور؟", "confirmations.delete_list.confirm": "حذف", - "confirmations.delete_list.message": "هل أنتَ مُتأكدٌ أنكَ تُريدُ حَذفَ هذِهِ القائمةَ بشكلٍ دائم؟", + "confirmations.delete_list.message": "هل أنتَ مُتأكدٌ أنكَ تُريدُ حَذفَ هذِهِ القائمة بشكلٍ دائم؟", "confirmations.discard_edit_media.confirm": "تجاهل", "confirmations.discard_edit_media.message": "لديك تغييرات غير محفوظة لوصف الوسائط أو معاينتها، تجاهلها على أي حال؟", "confirmations.domain_block.confirm": "حظر اِسم النِّطاق بشكلٍ كامل", @@ -182,14 +181,14 @@ "directory.local": "مِن {domain} فقط", "directory.new_arrivals": "الوافدون الجُدد", "directory.recently_active": "نشط مؤخرا", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "إعدادات الحساب", + "disabled_account_banner.text": "حسابك {disabledAccount} معطل حاليا.", "dismissable_banner.community_timeline": "هذه هي أحدث المشاركات العامة من الأشخاص الذين تُستضاف حساباتهم على {domain}.", "dismissable_banner.dismiss": "إغلاق", "dismissable_banner.explore_links": "هذه القصص الإخبارية يتحدث عنها أشخاص على هذا الخوادم الأخرى للشبكة اللامركزية في الوقت الحالي.", - "dismissable_banner.explore_statuses": "هذه المشاركات من هذا الخوادم الأخرى في الشبكة اللامركزية تجذب انتباه المستخدمين على هذا الخادم الآن.", + "dismissable_banner.explore_statuses": "هذه المنشورات مِن هذا الخادم ومِن الخوادم الأخرى في الشبكة اللامركزية تجذب انتباه المستخدمين على هذا الخادم الآن.", "dismissable_banner.explore_tags": "هذه العلامات تكتسب جذب بين الناس على هذا الخوادم الأخرى للشبكة اللامركزية في الوقت الحالي.", - "dismissable_banner.public_timeline": "هذه هي أحدث المشاركات العامة من الناس على هذا الخادم والخوادم الأخرى للشبكة اللامركزية التي يعرفها هذا الخادم.", + "dismissable_banner.public_timeline": "هذه هي أحدث المنشورات العامة من الناس على هذا الخادم والخوادم الأخرى للشبكة اللامركزية التي يعرفها هذا الخادم.", "embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.", "embed.preview": "هكذا ما سوف يبدو عليه:", "emoji_button.activity": "الأنشطة", @@ -240,16 +239,16 @@ "explore.trending_links": "الأخبار", "explore.trending_statuses": "المنشورات", "explore.trending_tags": "الوسوم", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", - "filter_modal.added.context_mismatch_title": "Context mismatch!", - "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", - "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", - "filter_modal.added.review_and_configure_title": "Filter settings", + "filter_modal.added.context_mismatch_explanation": "فئة عامل التصفية هذه لا تنطبق على السياق الذي وصلت فيه إلى هذه المشاركة. إذا كنت ترغب في تصفية المنشور في هذا السياق أيضا، فسيتعين عليك تعديل عامل التصفية.", + "filter_modal.added.context_mismatch_title": "عدم تطابق السياق!", + "filter_modal.added.expired_explanation": "انتهت صلاحية فئة عامل التصفية هذه، سوف تحتاج إلى تغيير تاريخ انتهاء الصلاحية لتطبيقها.", + "filter_modal.added.expired_title": "تصفية منتهية الصلاحية!", + "filter_modal.added.review_and_configure": "لمراجعة وزيادة تكوين فئة عوامل التصفية هذه، انتقل إلى {settings_link}.", + "filter_modal.added.review_and_configure_title": "إعدادات التصفية", "filter_modal.added.settings_link": "صفحة الإعدادات", - "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.added.short_explanation": "تمت إضافة هذه المشاركة إلى فئة الفلاتر التالية: {title}.", + "filter_modal.added.title": "تمت إضافة عامل التصفية!", + "filter_modal.select_filter.context_mismatch": "لا ينطبق على هذا السياق", "filter_modal.select_filter.expired": "منتهية الصلاحيّة", "filter_modal.select_filter.prompt_new": "فئة جديدة: {name}", "filter_modal.select_filter.search": "البحث أو الإنشاء", @@ -287,14 +286,14 @@ "home.column_settings.show_replies": "اعرض الردود", "home.hide_announcements": "إخفاء الإعلانات", "home.show_announcements": "إظهار الإعلانات", - "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", - "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.favourite": "مع حساب في ماستدون، يمكنك تفضيل هذا المقال لإبلاغ الناشر بتقديرك وحفظه لاحقا.", + "interaction_modal.description.follow": "مع حساب في ماستدون، يمكنك متابعة {name} لتلقي مشاركاتهم في الصفحه الرئيسيه.", + "interaction_modal.description.reblog": "مع حساب في ماستدون، يمكنك تعزيز هذا المنشور لمشاركته مع متابعينك.", + "interaction_modal.description.reply": "مع حساب في ماستدون، يمكنك الرد على هذه المشاركة.", "interaction_modal.on_another_server": "على خادم مختلف", "interaction_modal.on_this_server": "على هذا الخادم", - "interaction_modal.other_server_instructions": "ببساطة قم بنسخ ولصق هذا الرابط في شريط البحث في تطبيقك المفضل أو على واجهة الويب أين ولجت بحسابك.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.other_server_instructions": "انسخ و الصق هذا الرابط في حقل البحث الخاص بك لتطبيق ماستدون المفضل لديك أو واجهة الويب لخادم ماستدون الخاص بك.", + "interaction_modal.preamble": "بما إن ماستدون لامركزي، يمكنك استخدام حسابك الحالي المستضاف بواسطة خادم ماستدون آخر أو منصة متوافقة إذا لم يكن لديك حساب هنا.", "interaction_modal.title.favourite": "الإعجاب بمنشور {name}", "interaction_modal.title.follow": "اتبع {name}", "interaction_modal.title.reblog": "مشاركة منشور {name}", @@ -342,7 +341,7 @@ "lightbox.next": "التالي", "lightbox.previous": "العودة", "limited_account_hint.action": "إظهار الملف التعريفي على أي حال", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "تم إخفاء هذا الملف الشخصي من قبل مشرفي {domain}.", "lists.account.add": "أضف إلى القائمة", "lists.account.remove": "احذف من القائمة", "lists.delete": "احذف القائمة", @@ -361,7 +360,7 @@ "media_gallery.toggle_visible": "{number, plural, zero {} one {اخف الصورة} two {اخف الصورتين} few {اخف الصور} many {اخف الصور} other {اخف الصور}}", "missing_indicator.label": "غير موجود", "missing_indicator.sublabel": "تعذر العثور على هذا المورد", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "حسابك {disabledAccount} معطل حاليًا لأنك انتقلت إلى {movedToAccount}.", "mute_modal.duration": "المدة", "mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟", "mute_modal.indefinite": "إلى أجل غير مسمى", @@ -388,8 +387,8 @@ "navigation_bar.public_timeline": "الخيط العام الموحد", "navigation_bar.search": "البحث", "navigation_bar.security": "الأمان", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", - "notification.admin.report": "{name} reported {target}", + "not_signed_in_indicator.not_signed_in": "تحتاج إلى تسجيل الدخول للوصول إلى هذا المصدر.", + "notification.admin.report": "{name} أبلغ عن {target}", "notification.admin.sign_up": "أنشأ {name} حسابًا", "notification.favourite": "أُعجِب {name} بمنشورك", "notification.follow": "{name} يتابعك", @@ -514,7 +513,7 @@ "report_notification.categories.other": "آخر", "report_notification.categories.spam": "مزعج", "report_notification.categories.violation": "القاعدة المنتهَكة", - "report_notification.open": "Open report", + "report_notification.open": "فتح التقرير", "search.placeholder": "ابحث", "search.search_or_paste": "ابحث أو أدخل رابطا تشعبيا URL", "search_popout.search_format": "نمط البحث المتقدم", @@ -529,7 +528,7 @@ "search_results.nothing_found": "تعذر العثور على نتائج تتضمن هذه المصطلحات", "search_results.statuses": "المنشورات", "search_results.statuses_fts_disabled": "البحث عن المنشورات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.", - "search_results.title": "Search for {q}", + "search_results.title": "البحث عن {q}", "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}", "server_banner.about_active_users": "الأشخاص الذين يستخدمون هذا الخادم خلال الأيام الثلاثين الأخيرة (المستخدمون النشطون شهريًا)", "server_banner.active_users": "مستخدم نشط", @@ -546,7 +545,7 @@ "status.bookmark": "أضفه إلى الفواصل المرجعية", "status.cancel_reblog_private": "إلغاء الترقية", "status.cannot_reblog": "تعذرت ترقية هذا المنشور", - "status.copy": "نسخ رابط المنشور", + "status.copy": "انسخ رابط الرسالة", "status.delete": "احذف", "status.detailed_status": "تفاصيل المحادثة", "status.direct": "رسالة خاصة إلى @{name}", @@ -593,9 +592,9 @@ "status.uncached_media_warning": "غير متوفر", "status.unmute_conversation": "فك الكتم عن المحادثة", "status.unpin": "فك التدبيس من الصفحة التعريفية", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", + "subscribed_languages.lead": "فقط المشاركات في اللغات المحددة ستظهر في الرئيسيه وتسرد الجداول الزمنية بعد التغيير. حدد لا شيء لتلقي المشاركات بجميع اللغات.", "subscribed_languages.save": "حفظ التغييرات", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.target": "تغيير اللغات المشتركة لـ {target}", "suggestions.dismiss": "إلغاء الاقتراح", "suggestions.header": "يمكن أن يهمك…", "tabs_bar.federated_timeline": "الموحَّد", @@ -639,7 +638,7 @@ "upload_modal.preparing_ocr": "جار إعداد OCR (تعرف ضوئي على الرموز)…", "upload_modal.preview_label": "معاينة ({ratio})", "upload_progress.label": "يرفع...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "تتم المعالجة…", "video.close": "إغلاق الفيديو", "video.download": "تنزيل الملف", "video.exit_fullscreen": "الخروج من وضع الشاشة المليئة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index a895c9ecf0..78555dc2dd 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon ye software gratuito y de códigu llibre, y una marca rexistrada de Mastodon gGmbH.", - "about.domain_blocks.comment": "Motivu", - "about.domain_blocks.domain": "Dominiu", + "about.domain_blocks.no_reason_available": "El motivu nun ta disponible", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Gravedá", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Desactivación de los avisos de @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Abrir la páxina orixinal", "account.posts": "Artículos", "account.posts_with_replies": "Artículos y rempuestes", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Con una cuenta de Mastodon, pues responder a esti artículu.", "interaction_modal.on_another_server": "N'otru sirvidor", "interaction_modal.on_this_server": "Nesti sirvidor", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copia y apiega esta URL nel campu de busca de la to aplicación favorita de Mastodon o na interfaz web de dalgún sirvidor de Mastodon.", "interaction_modal.preamble": "Darréu que Mastodon ye descentralizáu, pues usar una cuenta agospiada n'otru sirvidor de Mastodon o n'otra plataforma compatible si nun tienes cuenta nesti sirvidor.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index c83c1087c8..58a48f4aec 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -2,10 +2,8 @@ "about.blocks": "Модерирани сървъри", "about.contact": "За контакти:", "about.disclaimer": "Mastodon е безплатен софтуер с отворен изходен код и търговска марка Mastodon gGmbH.", - "about.domain_blocks.comment": "Причина", - "about.domain_blocks.domain": "Домейн", + "about.domain_blocks.no_reason_available": "Няма налична причина", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Взискателност", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Ограничено", "about.domain_blocks.suspended.explanation": "Никакви данни от този сървър няма да се обработват, съхранявани или обменяни, правещи невъзможно всяко взаимодействие или комуникация с потребители от тези сървъри.", @@ -51,6 +49,7 @@ "account.mute": "Заглушаване на @{name}", "account.mute_notifications": "Заглушаване на известия от @{name}", "account.muted": "Заглушено", + "account.open_original_page": "Отваряне на оригиналната страница", "account.posts": "Публикации", "account.posts_with_replies": "Публикации и отговори", "account.report": "Докладване на @{name}", @@ -101,7 +100,7 @@ "column.about": "Относно", "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", - "column.community": "Локална емисия", + "column.community": "Местна часова ос", "column.direct": "Директни съобщения", "column.directory": "Разглеждане на профили", "column.domain_blocks": "Блокирани домейни", @@ -112,7 +111,7 @@ "column.mutes": "Заглушени потребители", "column.notifications": "Известия", "column.pins": "Закачени публикации", - "column.public": "Публичен канал", + "column.public": "Федеративна часова ос", "column_back_button.label": "Назад", "column_header.hide_settings": "Скриване на настройките", "column_header.moveLeft_settings": "Преместване на колона вляво", @@ -160,7 +159,7 @@ "confirmations.discard_edit_media.confirm": "Отхвърляне", "confirmations.discard_edit_media.message": "Не сте запазили промени на описанието или огледа на мултимедията, отхвърляте ли ги?", "confirmations.domain_block.confirm": "Блокиране на целия домейн", - "confirmations.domain_block.message": "Наистина ли искате да блокирате целия {domain}? В повечето случаи няколко блокирания или заглушавания са достатъчно и за предпочитане. Няма да виждате съдържание от домейна из публичните места или известията си. Вашите последователи от този домейн ще се премахнат.", + "confirmations.domain_block.message": "Наистина ли искате да блокирате целия {domain}? В повечето случаи няколко блокирания или заглушавания са достатъчно и за предпочитане. Няма да виждате съдържание от домейна из публични часови оси или известията си. Вашите последователи от този домейн ще се премахнат.", "confirmations.logout.confirm": "Излизане", "confirmations.logout.message": "Наистина ли искате да излезете?", "confirmations.mute.confirm": "Заглушаване", @@ -212,7 +211,7 @@ "empty_column.account_unavailable": "Няма достъп до профила", "empty_column.blocks": "Още не сте блокирали никакви потребители.", "empty_column.bookmarked_statuses": "Все още нямате отметнати публикации. Когато отметнете някоя, тя ще се покаже тук.", - "empty_column.community": "Локалната емисия е празна. Напишете нещо публично, за да започнете!", + "empty_column.community": "Местна часова ос е празна. Напишете нещо публично, за да завъртите нещата!", "empty_column.direct": "Все още нямате лични съобщения. Когато изпратите или получите ще се покаже тук.", "empty_column.domain_blocks": "Още няма блокирани домейни.", "empty_column.explore_statuses": "Няма нищо популярно в момента. Проверете пак по-късно!", @@ -221,7 +220,7 @@ "empty_column.follow_recommendations": "Изглежда, че няма генерирани предложения за вас. Можете да опитате да търсите за хора, които знаете или да разгледате популярните тагове.", "empty_column.follow_requests": "Все още нямате заявки за последване. Когато получите такава, тя ще се покаже тук.", "empty_column.hashtag": "Още няма нищо в този хаштаг.", - "empty_column.home": "Вашата начална емисия е празна! Посетете {public} или използвайте търсене, за да започнете и да се запознаете с други потребители.", + "empty_column.home": "Вашата начална часова ос е празна! Последвайте повече хора, за да я запълните. {suggestions}", "empty_column.home.suggestions": "Преглед на някои предложения", "empty_column.list": "Още няма нищо в този списък. Когато членовете на списъка публикуват нови публикации, то те ще се появят тук.", "empty_column.lists": "Все още нямате списъци. Когато създадете такъв, той ще се покаже тук.", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "На различен сървър", "interaction_modal.on_this_server": "На този сървър", - "interaction_modal.other_server_instructions": "Просто копипействате URL адреса в лентата за търсене на любимото си приложение или уеб интерфейс, където сте влезли.", + "interaction_modal.other_server_instructions": "Копипейстнете този URL адрес в полето за търсене на любимото си приложение Mastodon или мрежови интерфейс на своя Mastodon сървър.", "interaction_modal.preamble": "Откак Mastodon е децентрализиран, може да употребявате съществуващ акаунт, разположен на друг сървър на Mastodon или съвместима платформа, ако нямате акаунт на този сървър.", "interaction_modal.title.favourite": "Любими публикации на {name}", "interaction_modal.title.follow": "Последване на {name}", @@ -313,12 +312,12 @@ "keyboard_shortcuts.enter": "Отваряне на публикация", "keyboard_shortcuts.favourite": "Любима публикация", "keyboard_shortcuts.favourites": "Отваряне на списъка с любими", - "keyboard_shortcuts.federated": "да отвори обединена хронология", + "keyboard_shortcuts.federated": "Отваряне на федерална часова ос", "keyboard_shortcuts.heading": "Клавишни съчетания", - "keyboard_shortcuts.home": "за отваряне на началната емисия", + "keyboard_shortcuts.home": "Отваряне на началната часова ос", "keyboard_shortcuts.hotkey": "Бърз клавиш", "keyboard_shortcuts.legend": "Показване на тази легенда", - "keyboard_shortcuts.local": "за отваряне на локалната емисия", + "keyboard_shortcuts.local": "Отваряне на местна часова ос", "keyboard_shortcuts.mention": "Споменаване на автор", "keyboard_shortcuts.muted": "Отваряне на списъка със заглушени потребители", "keyboard_shortcuts.my_profile": "Отваряне на профила ви", @@ -368,7 +367,7 @@ "navigation_bar.about": "За тази инстанция", "navigation_bar.blocks": "Блокирани потребители", "navigation_bar.bookmarks": "Отметки", - "navigation_bar.community_timeline": "Локална емисия", + "navigation_bar.community_timeline": "Местна часова ос", "navigation_bar.compose": "Съставяне на нова публикация", "navigation_bar.direct": "Директни съобщения", "navigation_bar.discover": "Откриване", @@ -385,7 +384,7 @@ "navigation_bar.personal": "Лично", "navigation_bar.pins": "Закачени публикации", "navigation_bar.preferences": "Предпочитания", - "navigation_bar.public_timeline": "Публичен канал", + "navigation_bar.public_timeline": "Федеративна часова ос", "navigation_bar.search": "Търсене", "navigation_bar.security": "Сигурност", "not_signed_in_indicator.not_signed_in": "Трябва да се регистрирате за достъп до този ресурс.", @@ -598,7 +597,7 @@ "subscribed_languages.target": "Смяна на езика за {target}", "suggestions.dismiss": "Отхвърляне на предложение", "suggestions.header": "Може да се интересувате от…", - "tabs_bar.federated_timeline": "Обединен", + "tabs_bar.federated_timeline": "Федерална", "tabs_bar.home": "Начало", "tabs_bar.local_timeline": "Местни", "tabs_bar.notifications": "Известия", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 28540094e6..766c608774 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "@{name} কে নিঃশব্দ করুন", "account.mute_notifications": "@{name} র প্রজ্ঞাপন আপনার কাছে নিঃশব্দ করুন", "account.muted": "নিঃশব্দ", + "account.open_original_page": "Open original page", "account.posts": "টুট", "account.posts_with_replies": "টুট এবং মতামত", "account.report": "@{name} কে রিপোর্ট করুন", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index c420bb929e..5acbd0ecc6 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -1,17 +1,15 @@ { "about.blocks": "Servijerioù habaskaet", "about.contact": "Darempred :", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Abeg", - "about.domain_blocks.domain": "Domani", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Strizhder", + "about.disclaimer": "Mastodon zo ur meziant frank, open-source hag ur merk marilhet eus Mastodon gGmbH.", + "about.domain_blocks.no_reason_available": "Reason not available", + "about.domain_blocks.preamble": "Gant Mastodon e c'hellit gwelet danvez hag eskemm gant implijerien·ezed eus forzh peseurt servijer er fedibed peurliesañ. Setu an nemedennoù a zo bet graet evit ar servijer-mañ e-unan.", "about.domain_blocks.silenced.explanation": "Ne vo ket gwelet profiloù eus ar servijer-mañ ganeoc'h peurliesañ, nemet ma vefec'h o klask war o lec'h pe choazfec'h o heuliañ.", "about.domain_blocks.silenced.title": "Bevennet", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Astalet", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.not_available": "An titour-mañ ne c'heller ket gwelet war ar servijer-mañ.", + "about.powered_by": "Rouedad sokial digreizenned kaset gant {mastodon}", "about.rules": "Reolennoù ar servijer", "account.account_note_header": "Notenn", "account.add_or_remove_from_list": "Ouzhpenn pe dilemel eus al listennadoù", @@ -21,7 +19,7 @@ "account.block_domain": "Stankañ an domani {domain}", "account.blocked": "Stanket", "account.browse_more_on_origin_server": "Furchal pelloc'h war ar profil orin", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Nullañ ar reked heuliañ", "account.direct": "Kas ur c'hemennad eeun da @{name}", "account.disable_notifications": "Paouez d'am c'hemenn pa vez embannet traoù gant @{name}", "account.domain_blocked": "Domani stanket", @@ -30,7 +28,7 @@ "account.endorse": "Lakaat war-wel war ar profil", "account.featured_tags.last_status_at": "Kannad diwezhañ : {date}", "account.featured_tags.last_status_never": "Kannad ebet", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.title": "Penngerioù-klik {name}", "account.follow": "Heuliañ", "account.followers": "Tud koumanantet", "account.followers.empty": "Den na heul an implijer·ez-mañ c'hoazh.", @@ -39,18 +37,19 @@ "account.following_counter": "{count, plural, one{{counter} C'houmanant} two{{counter} Goumanant} other {{counter} a Goumanant}}", "account.follows.empty": "An implijer·ez-mañ na heul den ebet.", "account.follows_you": "Ho heuilh", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Gwelet ar profil", "account.hide_reblogs": "Kuzh skignadennoù gant @{name}", - "account.joined_short": "Joined", - "account.languages": "Change subscribed languages", + "account.joined_short": "Amañ abaoe", + "account.languages": "Cheñch ar yezhoù koumanantet", "account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}", "account.locked_info": "Prennet eo ar gont-mañ. Gant ar perc'henn e vez dibabet piv a c'hall heuliañ anezhi pe anezhañ.", "account.media": "Media", "account.mention": "Menegiñ @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "Gant {name} eo bet merket e oa bremañ h·e gont nevez :", "account.mute": "Kuzhat @{name}", "account.mute_notifications": "Kuzh kemennoù a-berzh @{name}", "account.muted": "Kuzhet", + "account.open_original_page": "Open original page", "account.posts": "Kannadoù", "account.posts_with_replies": "Kannadoù ha respontoù", "account.report": "Disklêriañ @{name}", @@ -93,12 +92,12 @@ "bundle_modal_error.close": "Serriñ", "bundle_modal_error.message": "Degouezhet ez eus bet ur fazi en ur gargañ an elfenn-mañ.", "bundle_modal_error.retry": "Klask en-dro", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations.other_server_instructions": "Peogwir ez eo Mastodon digreizennet e c'heller krouiñ ur gont war ur servijer all ha kenderc'hel da zaremprediñ gant hemañ.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.find_another_server": "Kavout ur servijer all", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "column.about": "Diwar-benn", "column.blocks": "Implijer·ezed·ien berzet", "column.bookmarks": "Sinedoù", "column.community": "Red-amzer lec'hel", @@ -125,7 +124,7 @@ "community.column_settings.media_only": "Nemet Mediaoù", "community.column_settings.remote_only": "Nemet a-bell", "compose.language.change": "Cheñch yezh", - "compose.language.search": "Search languages...", + "compose.language.search": "Klask yezhoù...", "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h", "compose_form.encryption_warning": "Kannadoù war Mastodon na vezont ket sifret penn-da-benn. Na rannit ket titouroù kizidik dre Mastodon.", "compose_form.hashtag_warning": "Ne vo ket listennet ar c'hannad-mañ dindan gerioù-klik ebet dre m'eo anlistennet. N'eus nemet ar c'hannadoù foran a c'hall bezañ klasket dre c'her-klik.", @@ -151,7 +150,7 @@ "confirmations.block.block_and_report": "Berzañ ha Disklêriañ", "confirmations.block.confirm": "Stankañ", "confirmations.block.message": "Ha sur oc'h e fell deoc'h stankañ {name} ?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", + "confirmations.cancel_follow_request.confirm": "Nullañ ar reked", "confirmations.cancel_follow_request.message": "Ha sur oc'h e fell deoc'h nullañ ho reked evit heuliañ {name} ?", "confirmations.delete.confirm": "Dilemel", "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hannad-mañ ?", @@ -182,10 +181,10 @@ "directory.local": "Eus {domain} hepken", "directory.new_arrivals": "Degouezhet a-nevez", "directory.recently_active": "Oberiant nevez zo", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Arventennoù ar gont", + "disabled_account_banner.text": "Ho kont {disabledAccount} zo divev evit bremañ.", "dismissable_banner.community_timeline": "Setu kannadoù foran nevesañ an dud a zo herberc’hiet o c'hontoù gant {domain}.", - "dismissable_banner.dismiss": "Dismiss", + "dismissable_banner.dismiss": "Diverkañ", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'ar c'hannad-mañ.", "interaction_modal.on_another_server": "War ur servijer all", "interaction_modal.on_this_server": "War ar servijer-mañ", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Ouzhpennañ kannad {name} d'ar re vuiañ-karet", "interaction_modal.title.follow": "Heuliañ {name}", @@ -391,15 +390,15 @@ "not_signed_in_indicator.not_signed_in": "Ret eo deoc'h kevreañ evit tizhout an danvez-se.", "notification.admin.report": "Disklêriet eo bet {target} gant {name}", "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", - "notification.favourite": "{name} en·he deus ouzhpennet ho kannad d'h·e re vuiañ-karet", + "notification.favourite": "Gant {name} eo bet ouzhpennet ho kannad d'h·e re vuiañ-karet", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", - "notification.follow_request": "{name} en/he deus goulennet da heuliañ ac'hanoc'h", - "notification.mention": "{name} en/he deus meneget ac'hanoc'h", + "notification.follow_request": "Gant {name} eo bet goulennet ho heuliañ", + "notification.mention": "Gant {name} oc'h bet meneget", "notification.own_poll": "Echu eo ho sontadeg", "notification.poll": "Ur sontadeg ho deus mouezhet warnañ a zo echuet", - "notification.reblog": "{name} en·he deus skignet ho kannad", - "notification.status": "{name} en·he deus embannet", - "notification.update": "{name} en·he deus kemmet ur c'hannad", + "notification.reblog": "Skignet eo bet ho kannad gant {name}", + "notification.status": "Emañ {name} o paouez embann", + "notification.update": "Kemmet ez eus bet ur c'hannad gant {name}", "notifications.clear": "Skarzhañ ar c'hemennoù", "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?", "notifications.column_settings.admin.report": "Disklêriadurioù nevez :", @@ -572,7 +571,7 @@ "status.read_more": "Lenn muioc'h", "status.reblog": "Skignañ", "status.reblog_private": "Skignañ gant ar weledenn gentañ", - "status.reblogged_by": "{name} en/he deus skignet", + "status.reblogged_by": "Skignet gant {name}", "status.reblogs.empty": "Den ebet n'eus skignet ar c'hannad-mañ c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.", "status.redraft": "Diverkañ ha skrivañ en-dro", "status.remove_bookmark": "Dilemel ar sined", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 3ac6a5d5f3..ea63eedb3b 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -2,10 +2,8 @@ "about.blocks": "Servidors moderats", "about.contact": "Contacte:", "about.disclaimer": "Mastodon és un programari lliure de codi obert i una marca comercial de Mastodon gGmbH.", - "about.domain_blocks.comment": "Motiu", - "about.domain_blocks.domain": "Domini", + "about.domain_blocks.no_reason_available": "Motiu no disponible", "about.domain_blocks.preamble": "En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular.", - "about.domain_blocks.severity": "Severitat", "about.domain_blocks.silenced.explanation": "Generalment no veuràs perfils ni contingut d'aquest servidor, a menys que el cerquis explícitament o optis per ell seguint-lo.", "about.domain_blocks.silenced.title": "Limitat", "about.domain_blocks.suspended.explanation": "No es processaran, emmagatzemaran ni s'intercanviaran dades d'aquest servidor, fent impossible qualsevol interacció o comunicació amb els usuaris d'aquest servidor.", @@ -51,6 +49,7 @@ "account.mute": "Silencia @{name}", "account.mute_notifications": "Silencia les notificacions de @{name}", "account.muted": "Silenciat", + "account.open_original_page": "Obre la pàgina original", "account.posts": "Publicacions", "account.posts_with_replies": "Publicacions i respostes", "account.report": "Informa sobre @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Amb un compte a Mastodon, pots respondre aquesta publicació.", "interaction_modal.on_another_server": "En un servidor diferent", "interaction_modal.on_this_server": "En aquest servidor", - "interaction_modal.other_server_instructions": "Simplement còpia i enganxa aquesta URL en la barra de cerca de la teva aplicació preferida o en l'interfície web on tens sessió iniciada.", + "interaction_modal.other_server_instructions": "Copia i enganxa aquest enllaç en el camp de cerca de la teva aplicació Mastodon preferida o en l'interfície web del teu servidor Mastodon.", "interaction_modal.preamble": "Donat que Mastodon és descentralitzat, pots fer servir el teu compte existent a un altre servidor Mastodon o plataforma compatible si és que no tens compte en aquest.", "interaction_modal.title.favourite": "Afavoreix la publicació de {name}", "interaction_modal.title.follow": "Segueix {name}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 24b66101cf..ee8c5e224d 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -2,10 +2,8 @@ "about.blocks": "ڕاژە سەرپەرشتیکراو", "about.contact": "پەیوەندی کردن:", "about.disclaimer": "ماستودۆن بە خۆڕایە، پرۆگرامێکی سەرچاوە کراوەیە، وە نیشانە بازرگانیەکەی ماستودۆن (gGmbH)ە", - "about.domain_blocks.comment": "هۆکار", - "about.domain_blocks.domain": "دۆمەین", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "ماستۆدۆن بە گشتی ڕێگەت پێدەدات بە پیشاندانی ناوەڕۆکەکان و کارلێک کردن لەگەڵ بەکارهێنەران لە هەر ڕاژەیەکی تر بە گشتی. ئەمانە ئەو بەدەرکردنانەن کە کراون لەسەر ئەم ڕاژە تایبەتە.", - "about.domain_blocks.severity": "ئاستی گرنگی", "about.domain_blocks.silenced.explanation": "بە گشتی ناتوانی زانیاریە تایبەتەکان و ناوەڕۆکی ئەم ڕاژەیە ببینی، مەگەر بە ڕوونی بەدوایدا بگەڕێیت یان هەڵیبژێریت بۆ شوێنکەوتنی.", "about.domain_blocks.silenced.title": "سنووردار", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "بێدەنگکردن @{name}", "account.mute_notifications": "هۆشیارکەرەوەکان لاببە لە @{name}", "account.muted": "بێ دەنگ", + "account.open_original_page": "Open original page", "account.posts": "توتس", "account.posts_with_replies": "توتس و وەڵامەکان", "account.report": "گوزارشت @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 2435b72bf1..4b518c24cd 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Piattà @{name}", "account.mute_notifications": "Piattà nutificazione da @{name}", "account.muted": "Piattatu", + "account.open_original_page": "Open original page", "account.posts": "Statuti", "account.posts_with_replies": "Statuti è risposte", "account.report": "Palisà @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index d48b3206a8..190e68f2b9 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -2,10 +2,8 @@ "about.blocks": "Moderované servery", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon je svobodný software s otevřeným zdrojovým kódem a ochranná známka společnosti Mastodon gGmbH.", - "about.domain_blocks.comment": "Důvod", - "about.domain_blocks.domain": "Doména", + "about.domain_blocks.no_reason_available": "Důvod není k dispozici", "about.domain_blocks.preamble": "Mastodon umožňuje prohlížet obsah a komunikovat s uživateli jakéhokoliv serveru ve fediversu. Pro tento konkrétní server se vztahují následující výjimky.", - "about.domain_blocks.severity": "Závažnost", "about.domain_blocks.silenced.explanation": "Uživatele a obsah tohoto serveru neuvidíte, pokud je nebudete výslovně hledat nebo je nezačnete sledovat.", "about.domain_blocks.silenced.title": "Omezeno", "about.domain_blocks.suspended.explanation": "Žádná data z tohoto serveru nebudou zpracovávána, uložena ani vyměňována, což znemožňuje jakoukoli interakci nebo komunikaci s uživateli z tohoto serveru.", @@ -51,6 +49,7 @@ "account.mute": "Skrýt @{name}", "account.mute_notifications": "Skrýt oznámení od @{name}", "account.muted": "Skryt", + "account.open_original_page": "Otevřít původní stránku", "account.posts": "Příspěvky", "account.posts_with_replies": "Příspěvky a odpovědi", "account.report": "Nahlásit @{name}", @@ -72,7 +71,7 @@ "admin.dashboard.retention.average": "Průměr", "admin.dashboard.retention.cohort": "Měsíc registrace", "admin.dashboard.retention.cohort_size": "Noví uživatelé", - "alert.rate_limited.message": "Zkuste to prosím znovu za {retry_time, time, medium}.", + "alert.rate_limited.message": "Zkuste to prosím znovu po {retry_time, time, medium}.", "alert.rate_limited.title": "Spojení omezena", "alert.unexpected.message": "Objevila se neočekávaná chyba.", "alert.unexpected.title": "Jejda!", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "S účtem na Mastodonu můžete reagovat na tento příspěvek.", "interaction_modal.on_another_server": "Na jiném serveru", "interaction_modal.on_this_server": "Na tomto serveru", - "interaction_modal.other_server_instructions": "Jednoduše zkopírujte a vložte tuto adresu do vyhledávacího panelu vaší oblíbené aplikace nebo webového rozhraní, kde jste přihlášeni.", + "interaction_modal.other_server_instructions": "Zkopírujte a vložte tuto URL do vyhledávacího pole vaší oblíbené Mastodon aplikace nebo webového rozhraní vašeho Mastodon serveru.", "interaction_modal.preamble": "Protože je Mastodon decentralizovaný, pokud nemáte účet na tomto serveru, můžete použít svůj existující účet hostovaný jiným Mastodon serverem nebo kompatibilní platformou.", "interaction_modal.title.favourite": "Oblíbený příspěvek {name}", "interaction_modal.title.follow": "Sledovat {name}", @@ -611,7 +610,7 @@ "timeline_hint.resources.followers": "Sledující", "timeline_hint.resources.follows": "Sledovaní", "timeline_hint.resources.statuses": "Starší příspěvky", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} člověk} few {{counter} lidé} many {{counter} lidí} other {{counter} lidí}} za poslední {days, plural, one {den} few {{days} dny} many {{days} dnů} other {{days} dnů}}", "trends.trending_now": "Právě populární", "ui.beforeunload": "Pokud Mastodon opustíte, váš koncept se ztratí.", "units.short.billion": "{count} mld.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index fb00390e1f..0d1149ef1b 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -2,10 +2,8 @@ "about.blocks": "Gweinyddion sy'n cael eu cymedroli", "about.contact": "Cyswllt:", "about.disclaimer": "Mae Mastodon yn feddalwedd rhydd, cod agored ac o dan hawlfraint Mastodon gGmbH.", - "about.domain_blocks.comment": "Rheswm", - "about.domain_blocks.domain": "Parth", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Yn gyffredinol, mae Mastodon yn caniatáu i chi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.", - "about.domain_blocks.severity": "Difrifoldeb", "about.domain_blocks.silenced.explanation": "Yn gyffredinol, fyddwch chi ddim yn gweld proffiliau a chynnwys o'r gweinydd hwn, oni bai eich bod yn chwilio'n benodol amdano neu yn ymuno drwy ei ddilyn.", "about.domain_blocks.silenced.title": "Tawelwyd", "about.domain_blocks.suspended.explanation": "Ni fydd data o'r gweinydd hwn yn cael ei brosesu, ei storio na'i gyfnewid, gan wneud unrhyw ryngweithio neu gyfathrebu gyda defnyddwyr o'r gweinydd hwn yn amhosibl.", @@ -51,6 +49,7 @@ "account.mute": "Tawelu @{name}", "account.mute_notifications": "Cuddio hysbysiadau o @{name}", "account.muted": "Distewyd", + "account.open_original_page": "Open original page", "account.posts": "Postiadau", "account.posts_with_replies": "Postiadau ac atebion", "account.report": "Adrodd @{name}", @@ -97,7 +96,7 @@ "closed_registrations_modal.description": "Ar hyn o bryd nid yw'n bosib creu cyfrif ar {domain}, ond cadwch mewn cof nad oes raid i chi gael cyfrif yn benodol ar {domain} i ddefnyddio Mastodon.", "closed_registrations_modal.find_another_server": "Dod o hyd i weinydd arall", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", + "closed_registrations_modal.title": "Cofrestru ar Mastodon", "column.about": "Ynghylch", "column.blocks": "Defnyddwyr a flociwyd", "column.bookmarks": "Tudalnodau", @@ -151,8 +150,8 @@ "confirmations.block.block_and_report": "Rhwystro ac Adrodd", "confirmations.block.confirm": "Blocio", "confirmations.block.message": "Ydych chi'n sicr eich bod eisiau blocio {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Tynnu'r cais yn ôl", + "confirmations.cancel_follow_request.message": "Ydych chi'n sicr eich bod chi eisiau tynnu'ch cais i ddilyn {name} yn ôl?", "confirmations.delete.confirm": "Dileu", "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y post hwn?", "confirmations.delete_list.confirm": "Dileu", @@ -248,14 +247,14 @@ "filter_modal.added.review_and_configure_title": "Filter settings", "filter_modal.added.settings_link": "settings page", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", + "filter_modal.added.title": "Hidlydd wedi'i ychwanegu!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", "filter_modal.select_filter.expired": "expired", "filter_modal.select_filter.prompt_new": "Categori newydd: {name}", "filter_modal.select_filter.search": "Chwilio neu greu", "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", - "filter_modal.select_filter.title": "Filter this post", - "filter_modal.title.status": "Filter a post", + "filter_modal.select_filter.title": "Hidlo'r post hwn", + "filter_modal.title.status": "Hidlo post", "follow_recommendations.done": "Wedi gorffen", "follow_recommendations.heading": "Dilynwch y bobl yr hoffech chi weld eu postiadau! Dyma ambell i awgrymiad.", "follow_recommendations.lead": "Bydd postiadau gan bobl rydych chi'n eu dilyn yn ymddangos mewn trefn amser ar eich ffrwd cartref. Peidiwch â bod ofn gwneud camgymeriadau, gallwch chi ddad-ddilyn pobl yr un mor hawdd unrhyw bryd!", @@ -264,11 +263,11 @@ "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", "footer.about": "Ynghylch", "footer.directory": "Cyfeiriadur proffiliau", - "footer.get_app": "Get the app", + "footer.get_app": "Lawrlwytho'r ap", "footer.invite": "Gwahodd pobl", "footer.keyboard_shortcuts": "Bysellau brys", "footer.privacy_policy": "Polisi preifatrwydd", - "footer.source_code": "View source code", + "footer.source_code": "Gweld y cod ffynhonnell", "generic.saved": "Wedi'i Gadw", "getting_started.heading": "Dechrau", "hashtag.column_header.tag_mode.all": "a {additional}", @@ -289,11 +288,11 @@ "home.show_announcements": "Dangos cyhoeddiadau", "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.", "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", - "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.reblog": "Gyda chyfrif ar Mastodon, gallwch hybu'r post hwn i'w rannu â'ch dilynwyr.", + "interaction_modal.description.reply": "Gyda chyfrif ar Mastodon, gallwch ymateb i'r post hwn.", "interaction_modal.on_another_server": "Ar weinydd gwahanol", "interaction_modal.on_this_server": "Ar y gweinydd hwn", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Hoffi post {name}", "interaction_modal.title.follow": "Dilyn {name}", @@ -361,7 +360,7 @@ "media_gallery.toggle_visible": "Toglo gwelededd", "missing_indicator.label": "Heb ei ganfod", "missing_indicator.sublabel": "Ni ellid canfod yr adnodd hwn", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Mae eich cyfrif {disabledAccount} wedi ei analluogi ar hyn y bryd am i chi symud i {movedToAccount}.", "mute_modal.duration": "Hyd", "mute_modal.hide_notifications": "Cuddio hysbysiadau rhag y defnyddiwr hwn?", "mute_modal.indefinite": "Amhenodol", @@ -376,7 +375,7 @@ "navigation_bar.edit_profile": "Golygu proffil", "navigation_bar.explore": "Archwilio", "navigation_bar.favourites": "Ffefrynnau", - "navigation_bar.filters": "Geiriau a dawelwyd", + "navigation_bar.filters": "Geiriau a fudwyd", "navigation_bar.follow_requests": "Ceisiadau dilyn", "navigation_bar.follows_and_followers": "Dilynion a ddilynwyr", "navigation_bar.lists": "Rhestrau", @@ -388,7 +387,7 @@ "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.search": "Chwilio", "navigation_bar.security": "Diogelwch", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Rhaid i chi fewngofnodi i weld yr adnodd hwn.", "notification.admin.report": "Adroddodd {name} {target}", "notification.admin.sign_up": "Cofrestrodd {name}", "notification.favourite": "Hoffodd {name} eich post", @@ -408,7 +407,7 @@ "notifications.column_settings.favourite": "Ffefrynnau:", "notifications.column_settings.filter_bar.advanced": "Dangos pob categori", "notifications.column_settings.filter_bar.category": "Bar hidlo", - "notifications.column_settings.filter_bar.show_bar": "Dangos bar hidlo", + "notifications.column_settings.filter_bar.show_bar": "Dangos y bar hidlo", "notifications.column_settings.follow": "Dilynwyr newydd:", "notifications.column_settings.follow_request": "Ceisiadau dilyn newydd:", "notifications.column_settings.mention": "Crybwylliadau:", @@ -422,11 +421,11 @@ "notifications.column_settings.unread_notifications.highlight": "Amlygu hysbysiadau heb eu darllen", "notifications.column_settings.update": "Golygiadau:", "notifications.filter.all": "Popeth", - "notifications.filter.boosts": "Hybiadau", + "notifications.filter.boosts": "Hybiau", "notifications.filter.favourites": "Ffefrynnau", "notifications.filter.follows": "Yn dilyn", "notifications.filter.mentions": "Crybwylliadau", - "notifications.filter.polls": "Canlyniadau pleidlais", + "notifications.filter.polls": "Canlyniadau polau", "notifications.filter.statuses": "Diweddariadau gan bobl rydych chi'n eu dilyn", "notifications.grant_permission": "Caniatáu.", "notifications.group": "{count} o hysbysiadau", @@ -555,9 +554,9 @@ "status.edited_x_times": "Golygwyd {count, plural, one {unwaith} two {dwywaith} other {{count} gwaith}}", "status.embed": "Plannu", "status.favourite": "Hoffi", - "status.filter": "Filter this post", + "status.filter": "Hidlo'r post hwn", "status.filtered": "Wedi'i hidlo", - "status.hide": "Hide toot", + "status.hide": "Cuddio'r post", "status.history.created": "{name} greuodd {date}", "status.history.edited": "{name} olygodd {date}", "status.load_more": "Llwythwch mwy", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 88ece14792..35060645cd 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -2,10 +2,8 @@ "about.blocks": "Modererede servere", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon er gratis, open-source software og et varemærke tilhørende Mastodon gGmbH.", - "about.domain_blocks.comment": "Årsag", - "about.domain_blocks.domain": "Domæne", + "about.domain_blocks.no_reason_available": "Begrundelse ikke tilgængelig", "about.domain_blocks.preamble": "Mastodon tillader generelt, at man ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server.", - "about.domain_blocks.severity": "Alvorlighed", "about.domain_blocks.silenced.explanation": "Man vil generelt ikke se profiler og indhold fra denne server, medmindre man udtrykkeligt slå den op eller vælger den ved at følge.", "about.domain_blocks.silenced.title": "Begrænset", "about.domain_blocks.suspended.explanation": "Data fra denne server hverken behandles, gemmes eller udveksles, hvilket umuliggør interaktion eller kommunikation med brugere fra denne server.", @@ -51,6 +49,7 @@ "account.mute": "Skjul @{name}", "account.mute_notifications": "Skjul notifikationer fra @{name}", "account.muted": "Tystnet", + "account.open_original_page": "Åbn oprindelig side", "account.posts": "Indlæg", "account.posts_with_replies": "Indlæg og svar", "account.report": "Anmeld @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Med en konto på Mastodon kan dette indlæg besvares.", "interaction_modal.on_another_server": "På en anden server", "interaction_modal.on_this_server": "På denne server", - "interaction_modal.other_server_instructions": "Kopiér og indsæt blot denne URL i søgefeltet i den foretrukne app eller webgrænsefladen, hvor man er logget ind.", + "interaction_modal.other_server_instructions": "Kopiér og indsæt denne URL i søgefeltet på en Mastodon-app eller webgrænseflade til en Mastodon-server.", "interaction_modal.preamble": "Da Mastodon er decentraliseret, kan man bruge sin eksisterende konto hostet af en anden Mastodon-server eller kompatibel platform, såfremt man ikke har en konto på denne.", "interaction_modal.title.favourite": "Gør {name}s indlæg til favorit", "interaction_modal.title.follow": "Følg {name}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 10e33f2a93..54ba68ba9a 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -2,10 +2,8 @@ "about.blocks": "Moderierte Server", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon ist eine freie, quelloffene Software und eine Marke der Mastodon gGmbH.", - "about.domain_blocks.comment": "Begründung", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Grund unbekannt", "about.domain_blocks.preamble": "Mastodon erlaubt es dir grundsätzlich, alle Inhalte von allen Nutzer*innen auf allen Servern im Fediversum zu sehen und mit ihnen zu interagieren. Für diese Instanz gibt es aber ein paar Ausnahmen.", - "about.domain_blocks.severity": "Schweregrad", "about.domain_blocks.silenced.explanation": "Alle Inhalte dieses Servers sind stumm geschaltet und werden zunächst nicht angezeigt. Du kannst die Profile und anderen Inhalte aber dennoch manuell aufrufen – oder Du folgst einer Person dieser Mastodon-Instanz.", "about.domain_blocks.silenced.title": "Limitiert", "about.domain_blocks.suspended.explanation": "Es werden keine Daten von diesem Server verarbeitet, gespeichert oder ausgetauscht, sodass eine Interaktion oder Kommunikation mit Nutzer*innen dieses Servers nicht möglich ist.", @@ -51,6 +49,7 @@ "account.mute": "@{name} stummschalten", "account.mute_notifications": "Benachrichtigungen von @{name} stummschalten", "account.muted": "Stummgeschaltet", + "account.open_original_page": "Ursprüngliche Seite öffnen", "account.posts": "Beiträge", "account.posts_with_replies": "Beiträge und Antworten", "account.report": "@{name} melden", @@ -128,7 +127,7 @@ "compose.language.search": "Sprachen suchen …", "compose_form.direct_message_warning_learn_more": "Mehr erfahren", "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Informationen über Mastodon.", - "compose_form.hashtag_warning": "Dieser Beitrag ist über Hashtags nicht zu finden, weil er nicht gelistet ist. Nur öffentliche Beiträge tauchen in den Hashtag-Chroniken auf.", + "compose_form.hashtag_warning": "Dieser Beitrag ist über Hashtags nicht zu finden, weil er nicht gelistet ist. Nur öffentliche Beiträge tauchen in den Hashtag-Timelines auf.", "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.", "compose_form.lock_disclaimer.lock": "geschützt", "compose_form.placeholder": "Was gibt's Neues?", @@ -159,7 +158,7 @@ "confirmations.delete_list.message": "Bist du dir sicher, dass du diese Liste permanent löschen möchtest?", "confirmations.discard_edit_media.confirm": "Verwerfen", "confirmations.discard_edit_media.message": "Du hast ungespeicherte Änderungen an der Medienbeschreibung oder der Medienvorschau. Trotzdem verwerfen?", - "confirmations.domain_block.confirm": "Domain sperren", + "confirmations.domain_block.confirm": "Blocke die ganze Domain", "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Auch deine Follower von dieser Domain werden entfernt.", "confirmations.logout.confirm": "Abmelden", "confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?", @@ -177,7 +176,7 @@ "conversation.open": "Unterhaltung anzeigen", "conversation.with": "Mit {names}", "copypaste.copied": "In die Zwischenablage kopiert", - "copypaste.copy": "In die Zwischenablage kopieren", + "copypaste.copy": "Kopieren", "directory.federated": "Aus dem Fediverse", "directory.local": "Nur von der Domain {domain}", "directory.new_arrivals": "Neue Profile", @@ -203,7 +202,7 @@ "emoji_button.objects": "Gegenstände", "emoji_button.people": "Personen", "emoji_button.recent": "Häufig benutzte Emojis", - "emoji_button.search": "Nach Emojis suchen …", + "emoji_button.search": "Suchen …", "emoji_button.search_results": "Suchergebnisse", "emoji_button.symbols": "Symbole", "emoji_button.travel": "Reisen & Orte", @@ -212,7 +211,7 @@ "empty_column.account_unavailable": "Profil nicht verfügbar", "empty_column.blocks": "Du hast bisher keine Profile blockiert.", "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Lesezeichen gespeichert. Wenn du einen Beitrag als Lesezeichen speicherst wird er hier erscheinen.", - "empty_column.community": "Die lokale Chronik ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!", + "empty_column.community": "Die lokale Timeline ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!", "empty_column.direct": "Du hast noch keine Direktnachrichten. Sobald du eine sendest oder empfängst, wird sie hier zu sehen sein.", "empty_column.domain_blocks": "Du hast noch keine Domains blockiert.", "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder vorbei!", @@ -227,7 +226,7 @@ "empty_column.lists": "Du hast noch keine Listen. Wenn du eine anlegst, wird sie hier angezeigt werden.", "empty_column.mutes": "Du hast keine Profile stummgeschaltet.", "empty_column.notifications": "Du hast noch keine Mitteilungen. Sobald Du mit anderen Personen interagierst, wirst Du hier darüber benachrichtigt.", - "empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Servern, um die Zeitleiste aufzufüllen", + "empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Servern, um die Timeline aufzufüllen", "error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browser-Inkompatibilität konnte diese Seite nicht korrekt angezeigt werden.", "error.unexpected_crash.explanation_addons": "Diese Seite konnte nicht korrekt angezeigt werden. Dieser Fehler wird wahrscheinlich durch ein Browser-Add-on oder automatische Übersetzungswerkzeuge verursacht.", "error.unexpected_crash.next_steps": "Versuche, die Seite zu aktualisieren. Wenn das nicht hilft, kannst du Mastodon über einen anderen Browser oder eine native App verwenden.", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Mit einem Account auf Mastodon kannst du auf diesen Beitrag antworten.", "interaction_modal.on_another_server": "Auf einem anderen Server", "interaction_modal.on_this_server": "Auf diesem Server", - "interaction_modal.other_server_instructions": "Kopiere einfach diese URL und füge sie in die Suchleiste deiner Lieblings-App oder in die Weboberfläche, in der du angemeldet bist, ein.", + "interaction_modal.other_server_instructions": "Kopieren Sie diese Adresse und fügen Sie diese in das Suchfeld Ihrer bevorzugten Mastodon-App oder in die Weboberfläche Ihres Mastodon-Servers ein.", "interaction_modal.preamble": "Da Mastodon dezentralisiert ist, kannst du dein bestehendes Konto auf einem anderen Mastodon-Server oder einer kompatiblen Plattform nutzen, wenn du kein Konto auf dieser Plattform hast.", "interaction_modal.title.favourite": "Lieblingsbeitrag von {name}", "interaction_modal.title.follow": "Folge {name}", @@ -313,12 +312,12 @@ "keyboard_shortcuts.enter": "Beitrag öffnen", "keyboard_shortcuts.favourite": "favorisieren", "keyboard_shortcuts.favourites": "Favoriten-Liste öffnen", - "keyboard_shortcuts.federated": "Föderierte Chronik öffnen", + "keyboard_shortcuts.federated": "Föderierte Timeline öffnen", "keyboard_shortcuts.heading": "Tastenkombinationen", "keyboard_shortcuts.home": "Startseite öffnen", "keyboard_shortcuts.hotkey": "Tastenkürzel", "keyboard_shortcuts.legend": "diese Übersicht anzeigen", - "keyboard_shortcuts.local": "Lokale Chronik öffnen", + "keyboard_shortcuts.local": "Lokale Timeline öffnen", "keyboard_shortcuts.mention": "Profil erwähnen", "keyboard_shortcuts.muted": "Liste stummgeschalteter Profile öffnen", "keyboard_shortcuts.my_profile": "Dein Profil öffnen", @@ -461,7 +460,7 @@ "refresh": "Aktualisieren", "regeneration_indicator.label": "Laden…", "regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!", - "relative_time.days": "{number}d", + "relative_time.days": "{number}T", "relative_time.full.days": "vor {number, plural, one {# Tag} other {# Tagen}}", "relative_time.full.hours": "vor {number, plural, one {# Stunde} other {# Stunden}}", "relative_time.full.just_now": "gerade eben", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index fe88710934..f6beca1819 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Επικοινωνία:", "about.disclaimer": "Το Mastodon είναι ελεύθερο λογισμικό ανοιχτού κώδικα και εμπορικό σήμα της Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Τομέας (Domain)", + "about.domain_blocks.no_reason_available": "Αιτιολογία μη διαθέσιμη", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Σοβαρότητα", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Σώπασε @{name}", "account.mute_notifications": "Σώπασε τις ειδοποιήσεις από @{name}", "account.muted": "Αποσιωπημένος/η", + "account.open_original_page": "Open original page", "account.posts": "Τουτ", "account.posts_with_replies": "Τουτ και απαντήσεις", "account.report": "Κατάγγειλε @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή", "interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Αντιγράψτε και επικολλήστε αυτήν τη διεύθυνση URL στο πεδίο αναζήτησης της αγαπημένης σας εφαρμογής Mastodon ή στο web interface του διακομιστή σας Mastodon.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 36af2ad49c..b005f80905 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the Fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Posts", "account.posts_with_replies": "Posts and replies", "account.report": "Report @{name}", @@ -66,7 +65,7 @@ "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "account.unmute_short": "Unmute", - "account_note.placeholder": "Click to add a note", + "account_note.placeholder": "Click to add note", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", @@ -93,10 +92,10 @@ "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.retry": "Try again", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations.other_server_instructions": "Since Mastodon is decentralised, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.preamble": "Mastodon is decentralised, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", "closed_registrations_modal.title": "Signing up on Mastodon", "column.about": "About", "column.blocks": "Blocked users", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index cec8eb73a3..01a2821bc4 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -2,10 +2,8 @@ "about.blocks": "Moderigitaj serviloj", "about.contact": "Kontakto:", "about.disclaimer": "Mastodon estas libera, malfermitkoda programaro kaj varmarko de la firmao Mastodon gGmbH.", - "about.domain_blocks.comment": "Kialo", - "about.domain_blocks.domain": "Domajno", + "about.domain_blocks.no_reason_available": "Kialo ne estas disponebla", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Graveco", "about.domain_blocks.silenced.explanation": "Vi ne ĝenerale vidos profilojn kaj enhavojn de ĉi tiu servilo, krom se vi eksplice trovas aŭ estas permesita de via sekvato.", "about.domain_blocks.silenced.title": "Limigita", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Silentigi @{name}", "account.mute_notifications": "Silentigi la sciigojn de @{name}", "account.muted": "Silentigita", + "account.open_original_page": "Open original page", "account.posts": "Mesaĝoj", "account.posts_with_replies": "Mesaĝoj kaj respondoj", "account.report": "Raporti @{name}", @@ -151,8 +150,8 @@ "confirmations.block.block_and_report": "Bloki kaj raporti", "confirmations.block.confirm": "Bloki", "confirmations.block.message": "Ĉu vi certas, ke vi volas bloki {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Eksigi peton", + "confirmations.cancel_follow_request.message": "Ĉu vi certas ke vi volas eksigi vian peton por sekvi {name}?", "confirmations.delete.confirm": "Forigi", "confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun mesaĝon?", "confirmations.delete_list.confirm": "Forigi", @@ -183,7 +182,7 @@ "directory.new_arrivals": "Novaj alvenoj", "directory.recently_active": "Lastatempe aktiva", "disabled_account_banner.account_settings": "Konto-agordoj", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.text": "Via konto {disabledAccount} estas nune malvalidigita.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Eksigi", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "En alia servilo", "interaction_modal.on_this_server": "En ĉi tiu servilo", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Aldoni afiŝon de {name} al la preferaĵoj", "interaction_modal.title.follow": "Sekvi {name}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 0717d45ab6..deb539d0bf 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -2,10 +2,8 @@ "about.blocks": "Servidores moderados", "about.contact": "Contacto:", "about.disclaimer": "Mastodon es software libre y de código abierto y una marca comercial de Mastodon gGmbH.", - "about.domain_blocks.comment": "Motivo", - "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", - "about.domain_blocks.severity": "Gravedad", "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busqués explícitamente o sigás alguna cuenta.", "about.domain_blocks.silenced.title": "Limitados", "about.domain_blocks.suspended.explanation": "Ningún dato de este servidor será procesado, almacenado o intercambiado, haciendo imposible cualquier interacción o comunicación con los usuarios de este servidor.", @@ -51,8 +49,9 @@ "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", + "account.open_original_page": "Open original page", "account.posts": "Mensajes", - "account.posts_with_replies": "Mensajes y respuestas públicas", + "account.posts_with_replies": "Mnsjs y resp. públicas", "account.report": "Denunciar a @{name}", "account.requested": "Esperando aprobación. Hacé clic para cancelar la solicitud de seguimiento", "account.share": "Compartir el perfil de @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Con una cuenta en Mastodon, podés responder a este mensaje.", "interaction_modal.on_another_server": "En un servidor diferente", "interaction_modal.on_this_server": "En este servidor", - "interaction_modal.other_server_instructions": "Simplemente copiá y pegá esta dirección web en la barra de búsqueda de tu aplicación favorita o en la interface web en donde hayás iniciado sesión.", + "interaction_modal.other_server_instructions": "Copia y pega esta URL en la barra de búsqueda de tu aplicación Mastodon favorita o la interfaz web de tu servidor Mastodon.", "interaction_modal.preamble": "Ya que Mastodon es descentralizado, podés usar tu cuenta existente alojada por otro servidor Mastodon (u otra plataforma compatible, si no tenés una cuenta en ésta).", "interaction_modal.title.favourite": "Marcar como favorito el mensaje de {name}", "interaction_modal.title.follow": "Seguir a {name}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index a01bf0c040..ffa2c6185b 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -2,10 +2,8 @@ "about.blocks": "Servidores moderados", "about.contact": "Contacto:", "about.disclaimer": "Mastodon es software de código abierto, y una marca comercial de Mastodon gGmbH.", - "about.domain_blocks.comment": "Razón", - "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", - "about.domain_blocks.severity": "Gravedad", "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busques explícitamente o sigas alguna cuenta.", "about.domain_blocks.silenced.title": "Limitado", "about.domain_blocks.suspended.explanation": "Ningún dato de este servidor será procesado, almacenado o intercambiado, haciendo imposible cualquier interacción o comunicación con los usuarios de este servidor.", @@ -39,7 +37,7 @@ "account.following_counter": "{count, plural, other {{counter} Siguiendo}}", "account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows_you": "Te sigue", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Ir al perfil", "account.hide_reblogs": "Ocultar retoots de @{name}", "account.joined_short": "Se unió", "account.languages": "Cambiar idiomas suscritos", @@ -51,6 +49,7 @@ "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", + "account.open_original_page": "Open original page", "account.posts": "Publicaciones", "account.posts_with_replies": "Publicaciones y respuestas", "account.report": "Reportar a @{name}", @@ -182,8 +181,8 @@ "directory.local": "Sólo de {domain}", "directory.new_arrivals": "Recién llegados", "directory.recently_active": "Recientemente activo", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Ajustes de la cuenta", + "disabled_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada.", "dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de personas cuyas cuentas están alojadas en {domain}.", "dismissable_banner.dismiss": "Descartar", "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada en este momento.", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.", "interaction_modal.on_another_server": "En un servidor diferente", "interaction_modal.on_this_server": "En este servidor", - "interaction_modal.other_server_instructions": "Simplemente copia y pega esta URL en la barra de búsqueda de tu aplicación favorita o en la interfaz web donde hayas iniciado sesión.", + "interaction_modal.other_server_instructions": "Copia y pega esta URL en la barra de búsqueda de tu aplicación Mastodon favorita o la interfaz web de tu servidor Mastodon.", "interaction_modal.preamble": "Ya que Mastodon es descentralizado, puedes usar tu cuenta existente alojada en otro servidor Mastodon o plataforma compatible si no tienes una cuenta en este servidor.", "interaction_modal.title.favourite": "Marcar como favorita la publicación de {name}", "interaction_modal.title.follow": "Seguir a {name}", @@ -361,7 +360,7 @@ "media_gallery.toggle_visible": "Cambiar visibilidad", "missing_indicator.label": "No encontrado", "missing_indicator.sublabel": "No se encontró este recurso", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.", "mute_modal.duration": "Duración", "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.indefinite": "Indefinida", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 133ee0792b..f93577b466 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -2,10 +2,8 @@ "about.blocks": "Servidores moderados", "about.contact": "Contacto:", "about.disclaimer": "Mastodon es software de código abierto, y una marca comercial de Mastodon gGmbH.", - "about.domain_blocks.comment": "Razón", - "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.no_reason_available": "Razón no disponible", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", - "about.domain_blocks.severity": "Gravedad", "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busques explícitamente o sigas alguna cuenta.", "about.domain_blocks.silenced.title": "Limitado", "about.domain_blocks.suspended.explanation": "Ningún dato de este servidor será procesado, almacenado o intercambiado, haciendo imposible cualquier interacción o comunicación con los usuarios de este servidor.", @@ -51,6 +49,7 @@ "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", + "account.open_original_page": "Abrir página original", "account.posts": "Publicaciones", "account.posts_with_replies": "Publicaciones y respuestas", "account.report": "Reportar a @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.", "interaction_modal.on_another_server": "En un servidor diferente", "interaction_modal.on_this_server": "En este servidor", - "interaction_modal.other_server_instructions": "Simplemente copia y pega esta URL en la barra de búsqueda de tu aplicación favorita o en la interfaz web donde hayas iniciado sesión.", + "interaction_modal.other_server_instructions": "Copia y pega esta URL en la barra de búsqueda de tu aplicación Mastodon favorita o la interfaz web de tu servidor Mastodon.", "interaction_modal.preamble": "Ya que Mastodon es descentralizado, puedes usar tu cuenta existente alojada en otro servidor Mastodon o plataforma compatible si no tienes una cuenta en este servidor.", "interaction_modal.title.favourite": "Marcar como favorita la publicación de {name}", "interaction_modal.title.follow": "Seguir a {name}", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index ab7d708bf0..ff7dba9f76 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Vaigista @{name}", "account.mute_notifications": "Vaigista teated kasutajalt @{name}", "account.muted": "Vaigistatud", + "account.open_original_page": "Open original page", "account.posts": "Postitused", "account.posts_with_replies": "Postitused ja vastused", "account.report": "Raporteeri @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index c55de8b9ab..e0d6e2931e 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -2,10 +2,8 @@ "about.blocks": "Moderatutako zerbitzariak", "about.contact": "Kontaktua:", "about.disclaimer": "Mastodon software libre eta kode irekikoa da, eta Mastodon gGmbH-ren marka erregistratua.", - "about.domain_blocks.comment": "Arrazoia", - "about.domain_blocks.domain": "Domeinua", + "about.domain_blocks.no_reason_available": "Arrazoia ez dago eskuragarri", "about.domain_blocks.preamble": "Mastodonek orokorrean aukera ematen dizu fedibertsoko beste zerbitzarietako erabiltzaileen edukia ikusi eta haiekin komunikatzeko. Zerbitzari zehatz honi ezarritako salbuespenak hauek dira.", - "about.domain_blocks.severity": "Larritasuna", "about.domain_blocks.silenced.explanation": "Orokorrean ez duzu zerbitzari honetako profil eta edukirik ikusiko. Profilak jarraitzen badituzu edo edukia esplizituki bilatzen baduzu bai.", "about.domain_blocks.silenced.title": "Mugatua", "about.domain_blocks.suspended.explanation": "Ez da zerbitzari honetako daturik prozesatuko, gordeko, edo partekatuko, zerbitzari honetako erabiltzaileekin komunikatzea ezinezkoa eginez.", @@ -39,7 +37,7 @@ "account.following_counter": "{count, plural, one {{counter} jarraitzen} other {{counter} jarraitzen}}", "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.", "account.follows_you": "Jarraitzen dizu", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Joan profilera", "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak", "account.joined_short": "Elkartuta", "account.languages": "Aldatu harpidetutako hizkuntzak", @@ -47,10 +45,11 @@ "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", "account.media": "Multimedia", "account.mention": "Aipatu @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "{name} erabiltzaileak adierazi du bere kontu berria hau dela:", "account.mute": "Mututu @{name}", "account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak", "account.muted": "Mutututa", + "account.open_original_page": "Ireki jatorrizko orria", "account.posts": "Bidalketa", "account.posts_with_replies": "Bidalketak eta erantzunak", "account.report": "Salatu @{name}", @@ -182,8 +181,8 @@ "directory.local": "{domain} domeinukoak soilik", "directory.new_arrivals": "Iritsi berriak", "directory.recently_active": "Duela gutxi aktibo", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Kontuaren ezarpenak", + "disabled_account_banner.text": "Zure {disabledAccount} kontua desgaituta dago une honetan.", "dismissable_banner.community_timeline": "Hauek dira {domain} zerbitzarian ostatatutako kontuen bidalketa publiko berrienak.", "dismissable_banner.dismiss": "Baztertu", "dismissable_banner.explore_links": "Albiste hauei buruz hitz egiten ari da jendea orain zerbitzari honetan eta sare deszentralizatuko besteetan.", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Mastodon kontu batekin bidalketa honi erantzun diezaiokezu.", "interaction_modal.on_another_server": "Beste zerbitzari batean", "interaction_modal.on_this_server": "Zerbitzari honetan", - "interaction_modal.other_server_instructions": "Kopiatu eta itsatsi URL hau zure aplikazio gogokoenaren bilaketa-barran edo saioa hasita daukazun web interfazean.", + "interaction_modal.other_server_instructions": "Kopiatu eta itsatsi URL hau zure Mastodon aplikazio gogokoenaren edo zure Mastodon zerbitzariaren web interfazeko bilaketa eremuan.", "interaction_modal.preamble": "Mastodon deszentralizatua denez, zerbitzari honetan konturik ez badaukazu, beste Mastodon zerbitzari batean edo bateragarria den plataforma batean ostatatutako kontua erabil dezakezu.", "interaction_modal.title.favourite": "Egin gogoko {name}(r)en bidalketa", "interaction_modal.title.follow": "Jarraitu {name}", @@ -342,7 +341,7 @@ "lightbox.next": "Hurrengoa", "lightbox.previous": "Aurrekoa", "limited_account_hint.action": "Erakutsi profila hala ere", - "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.", + "limited_account_hint.title": "Profil hau ezkutatu egin dute {domain} zerbitzariko moderatzaileek.", "lists.account.add": "Gehitu zerrendara", "lists.account.remove": "Kendu zerrendatik", "lists.delete": "Ezabatu zerrenda", @@ -361,7 +360,7 @@ "media_gallery.toggle_visible": "Txandakatu ikusgaitasuna", "missing_indicator.label": "Ez aurkitua", "missing_indicator.sublabel": "Baliabide hau ezin izan da aurkitu", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Zure {disabledAccount} kontua desgaituta dago une honetan, {movedToAccount} kontura aldatu zinelako.", "mute_modal.duration": "Iraupena", "mute_modal.hide_notifications": "Ezkutatu erabiltzaile honen jakinarazpenak?", "mute_modal.indefinite": "Zehaztu gabe", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 18a8b42262..2c36c4efa7 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -2,10 +2,8 @@ "about.blocks": "کارسازهای نظارت شده", "about.contact": "تماس:", "about.disclaimer": "ماستودون نرم‌افزار آزاد، متن باز و یک شرکت غیر انتفاعی با مسئولیت محدود طبق قوانین آلمان است.", - "about.domain_blocks.comment": "دلیل", - "about.domain_blocks.domain": "دامنه", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "ماستودون عموماً می‌گذارد محتوا را از از هر کارساز دیگری در دنیای شبکه‌های اجتماعی غیرمتمرکز دیده و با آنان برهم‌کنش داشته باشید. این‌ها استثناهایی هستند که روی این کارساز خاص وضع شده‌اند.", - "about.domain_blocks.severity": "شدت", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "محدود", "about.domain_blocks.suspended.explanation": "هیچ داده‌ای از این کارساز پردازش، ذخیره یا مبادله نخواهد شد، که هرگونه برهم‌کنش یا ارتباط با کاربران این کارساز را غیرممکن خواهد کرد.", @@ -51,6 +49,7 @@ "account.mute": "خموشاندن ‎@{name}", "account.mute_notifications": "خموشاندن آگاهی‌های ‎@{name}", "account.muted": "خموش", + "account.open_original_page": "Open original page", "account.posts": "فرسته", "account.posts_with_replies": "فرسته‌ها و پاسخ‌ها", "account.report": "گزارش ‎@{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "روی کارسازی دیگر", "interaction_modal.on_this_server": "روی این کارساز", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "از آن‌جا که ماستودون نامتمرکز است، می‌توانید در صورت نداشتن حساب روی این کارساز، از حساب موجود خودتان که روی کارساز ماستودون یا بن‌سازهٔ سازگار دیگری میزبانی می‌شود استفاده کنید.", "interaction_modal.title.favourite": "فرسته‌های برگزیدهٔ {name}", "interaction_modal.title.follow": "پیگیری {name}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 7a03798c3b..a982d5bfee 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -1,11 +1,9 @@ { "about.blocks": "Moderoidut palvelimet", "about.contact": "Yhteystiedot:", - "about.disclaimer": "Mastodon on ilmainen avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.", - "about.domain_blocks.comment": "Syy", - "about.domain_blocks.domain": "Verkkotunnus", + "about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle.", - "about.domain_blocks.severity": "Vakavuus", "about.domain_blocks.silenced.explanation": "Et yleensä näe profiileja ja sisältöä tältä palvelimelta, ellet nimenomaisesti etsi tai valitse sitä seuraamalla.", "about.domain_blocks.silenced.title": "Rajoitettu", "about.domain_blocks.suspended.explanation": "Tämän palvelimen tietoja ei käsitellä, tallenneta tai vaihdeta, mikä tekee käyttäjän kanssa vuorovaikutuksen tai yhteydenpidon mahdottomaksi tällä palvelimella.", @@ -18,7 +16,7 @@ "account.badges.bot": "Botti", "account.badges.group": "Ryhmä", "account.block": "Estä @{name}", - "account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}", + "account.block_domain": "Estä verkkotunnus {domain}", "account.blocked": "Estetty", "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella", "account.cancel_follow_request": "Peruuta seurantapyyntö", @@ -51,6 +49,7 @@ "account.mute": "Mykistä @{name}", "account.mute_notifications": "Mykistä ilmoitukset käyttäjältä @{name}", "account.muted": "Mykistetty", + "account.open_original_page": "Open original page", "account.posts": "Viestit", "account.posts_with_replies": "Viestit ja vastaukset", "account.report": "Raportoi @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Kun sinulla on tili Mastodonissa, voit vastata tähän viestiin.", "interaction_modal.on_another_server": "Toisella palvelimella", "interaction_modal.on_this_server": "Tällä palvelimella", - "interaction_modal.other_server_instructions": "Yksinkertaisesti kopioi ja liitä tämä URL-osoite suosikki sovelluksen tai web-käyttöliittymän hakupalkkiin, jossa olet kirjautunut sisään.", + "interaction_modal.other_server_instructions": "Kopioi ja liitä tämä URL-osoite käyttämäsi Mastodon-sovelluksen hakukenttään tai Mastodon-palvelimen web-käyttöliittymään.", "interaction_modal.preamble": "Koska Mastodon on hajautettu, voit käyttää toisen Mastodon-palvelimen tai yhteensopivan alustan ylläpitämää tiliäsi, jos sinulla ei ole tiliä tällä palvelimella.", "interaction_modal.title.favourite": "Suosikin {name} viesti", "interaction_modal.title.follow": "Seuraa {name}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 421041e6d0..eeb5d9ee73 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -2,10 +2,8 @@ "about.blocks": "Serveurs modérés", "about.contact": "Contact :", "about.disclaimer": "Mastodon est un logiciel libre, open-source et une marque déposée de Mastodon gGmbH.", - "about.domain_blocks.comment": "Motif", - "about.domain_blocks.domain": "Domaine", + "about.domain_blocks.no_reason_available": "Raison non disponible", "about.domain_blocks.preamble": "Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateurs de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier.", - "about.domain_blocks.severity": "Sévérité", "about.domain_blocks.silenced.explanation": "Vous ne verrez généralement pas les profils et le contenu de ce serveur, à moins que vous ne les recherchiez explicitement ou que vous ne choisissiez de les suivre.", "about.domain_blocks.silenced.title": "Limité", "about.domain_blocks.suspended.explanation": "Aucune donnée de ce serveur ne sera traitée, enregistrée ou échangée, rendant impossible toute interaction ou communication avec les utilisateurs de ce serveur.", @@ -51,6 +49,7 @@ "account.mute": "Masquer @{name}", "account.mute_notifications": "Masquer les notifications de @{name}", "account.muted": "Masqué·e", + "account.open_original_page": "Ouvrir la page d'origine", "account.posts": "Messages", "account.posts_with_replies": "Messages et réponses", "account.report": "Signaler @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.", "interaction_modal.on_another_server": "Sur un autre serveur", "interaction_modal.on_this_server": "Sur ce serveur", - "interaction_modal.other_server_instructions": "Copiez et collez simplement cette URL dans la barre de recherche de votre application préférée ou dans l’interface web où vous êtes connecté.", + "interaction_modal.other_server_instructions": "Copiez et collez cette URL dans le champ de recherche de votre application Mastodon préférée ou l'interface web de votre serveur Mastodon.", "interaction_modal.preamble": "Puisque Mastodon est décentralisé, vous pouvez utiliser votre compte existant hébergé par un autre serveur Mastodon ou une plateforme compatible si vous n'avez pas de compte sur celui-ci.", "interaction_modal.title.favourite": "Ajouter de post de {name} aux favoris", "interaction_modal.title.follow": "Suivre {name}", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 0c45b6f421..5a194103f0 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -2,10 +2,8 @@ "about.blocks": "Moderearre servers", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon is frije, iepenboarnesoftware en in hannelsmerk fan Mastodon gGmbH.", - "about.domain_blocks.comment": "Reden", - "about.domain_blocks.domain": "Domein", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Yn it algemien kinsto mei Mastodon berjochten ûntfange fan, en ynteraksje hawwe mei brûkers fan elke server yn de fediverse. Dit binne de útsûnderingen dy’t op dizze spesifike server jilde.", - "about.domain_blocks.severity": "Swierte", "about.domain_blocks.silenced.explanation": "Yn it algemien sjochsto gjin berjochten en accounts fan dizze server, útsein do berjochten eksplisyt opsikest of derfoar kiest om in account fan dizze server te folgjen.", "about.domain_blocks.silenced.title": "Beheind", "about.domain_blocks.suspended.explanation": "Der wurde gjin gegevens fan dizze server ferwurke, bewarre of útwiksele, wat ynteraksje of kommunikaasje mei brûkers fan dizze server ûnmooglik makket.", @@ -51,6 +49,7 @@ "account.mute": "@{name} negearje", "account.mute_notifications": "Meldingen fan @{name} negearje", "account.muted": "Negearre", + "account.open_original_page": "Open original page", "account.posts": "Berjochten", "account.posts_with_replies": "Berjochten en reaksjes", "account.report": "@{name} rapportearje", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "Op dizze server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "{name} folgje", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index dab5921959..f22f7abbcd 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -2,13 +2,11 @@ "about.blocks": "Freastalaithe faoi stiúir", "about.contact": "Teagmháil:", "about.disclaimer": "Bogearra foinse oscailte saor in aisce is ea Mastodon, agus is le Mastodon gGmbH an trádmharc.", - "about.domain_blocks.comment": "Fáth", - "about.domain_blocks.domain": "Fearann", + "about.domain_blocks.no_reason_available": "Níl an fáth ar fáil", "about.domain_blocks.preamble": "Go hiondúil, tugann Mastadán cead duit a bheith ag plé le húsáideoirí as freastalaí ar bith eile sa chomhchruinne agus a gcuid inneachair a fheiceáil. Seo iad na heisceachtaí a rinneadh ar an bhfreastalaí áirithe seo.", - "about.domain_blocks.severity": "Déine", "about.domain_blocks.silenced.explanation": "Go hiondúil ní fheicfidh tú próifílí ná inneachar ón bhfreastalaí seo, ach amháin má bhíonn tú á lorg nó má ghlacann tú lena leanúint d'aon ghnó.", "about.domain_blocks.silenced.title": "Teoranta", - "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", + "about.domain_blocks.suspended.explanation": "Ní dhéanfar aon sonra ón fhreastalaí seo a phróiseáil, a stóráil ná a mhalartú, rud a fhágann nach féidir aon teagmháil ná aon chumarsáid a dhéanamh le húsáideoirí ón fhreastalaí seo.", "about.domain_blocks.suspended.title": "Ar fionraí", "about.not_available": "Níor cuireadh an t-eolas seo ar fáil ar an bhfreastalaí seo.", "about.powered_by": "Meáin shóisialta díláraithe faoi chumhacht {mastodon}", @@ -51,6 +49,7 @@ "account.mute": "Balbhaigh @{name}", "account.mute_notifications": "Balbhaigh fógraí ó @{name}", "account.muted": "Balbhaithe", + "account.open_original_page": "Oscail an leathanach bunaidh", "account.posts": "Postálacha", "account.posts_with_replies": "Postálacha agus freagraí", "account.report": "Tuairiscigh @{name}", @@ -178,7 +177,7 @@ "conversation.with": "Le {names}", "copypaste.copied": "Cóipeáilte", "copypaste.copy": "Cóipeáil", - "directory.federated": "From known fediverse", + "directory.federated": "Ó chomhchruinne aitheanta", "directory.local": "Ó {domain} amháin", "directory.new_arrivals": "Daoine atá tar éis teacht", "directory.recently_active": "Daoine gníomhacha le déanaí", @@ -243,17 +242,17 @@ "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", "filter_modal.added.context_mismatch_title": "Context mismatch!", "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.", - "filter_modal.added.expired_title": "Expired filter!", + "filter_modal.added.expired_title": "Scagaire as feidhm!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Socruithe scagtha", "filter_modal.added.settings_link": "leathan socruithe", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", - "filter_modal.added.title": "Filter added!", - "filter_modal.select_filter.context_mismatch": "does not apply to this context", + "filter_modal.added.title": "Scagaire curtha leis!", + "filter_modal.select_filter.context_mismatch": "ní bhaineann sé leis an gcomhthéacs seo", "filter_modal.select_filter.expired": "as feidhm", "filter_modal.select_filter.prompt_new": "Catagóir nua: {name}", - "filter_modal.select_filter.search": "Search or create", - "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", + "filter_modal.select_filter.search": "Cuardaigh nó cruthaigh", + "filter_modal.select_filter.subtitle": "Bain úsáid as catagóir reatha nó cruthaigh ceann nua", "filter_modal.select_filter.title": "Déan scagadh ar an bpostáil seo", "filter_modal.title.status": "Déan scagadh ar phostáil", "follow_recommendations.done": "Déanta", @@ -265,10 +264,10 @@ "footer.about": "Maidir le", "footer.directory": "Eolaire próifílí", "footer.get_app": "Faigh an aip", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.invite": "Tabhair cuireadh do dhaoine", + "footer.keyboard_shortcuts": "Aicearraí méarchláir", "footer.privacy_policy": "Polasaí príobháideachais", - "footer.source_code": "View source code", + "footer.source_code": "Féach ar an gcód foinseach", "generic.saved": "Sábháilte", "getting_started.heading": "Getting started", "hashtag.column_header.tag_mode.all": "agus {additional}", @@ -293,12 +292,12 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "Ar freastalaí eile", "interaction_modal.on_this_server": "Ar an freastalaí seo", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Lean {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.reblog": "Cuir postáil {name} chun cinn", + "interaction_modal.title.reply": "Freagair postáil {name}", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -309,7 +308,7 @@ "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "Cuntas", "keyboard_shortcuts.direct": "to open direct messages column", - "keyboard_shortcuts.down": "to move down in the list", + "keyboard_shortcuts.down": "Bog síos ar an liosta", "keyboard_shortcuts.enter": "Oscail postáil", "keyboard_shortcuts.favourite": "Roghnaigh postáil", "keyboard_shortcuts.favourites": "Oscail liosta roghanna", @@ -335,7 +334,7 @@ "keyboard_shortcuts.toggle_sensitivity": "Taispeáin / cuir i bhfolach meáin", "keyboard_shortcuts.toot": "Cuir tús le postáil nua", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", - "keyboard_shortcuts.up": "to move up in the list", + "keyboard_shortcuts.up": "Bog suas ar an liosta", "lightbox.close": "Dún", "lightbox.compress": "Compress image view box", "lightbox.expand": "Expand image view box", @@ -353,7 +352,7 @@ "lists.replies_policy.followed": "Any followed user", "lists.replies_policy.list": "Baill an liosta", "lists.replies_policy.none": "Duine ar bith", - "lists.replies_policy.title": "Show replies to:", + "lists.replies_policy.title": "Taispeáin freagraí:", "lists.search": "Cuardaigh i measc daoine atá á leanúint agat", "lists.subheading": "Do liostaí", "load_pending": "{count, plural, one {# new item} other {# new items}}", @@ -428,13 +427,13 @@ "notifications.filter.mentions": "Tráchtanna", "notifications.filter.polls": "Torthaí suirbhéanna", "notifications.filter.statuses": "Updates from people you follow", - "notifications.grant_permission": "Grant permission.", - "notifications.group": "{count} notifications", + "notifications.grant_permission": "Tabhair cead.", + "notifications.group": "{count} fógraí", "notifications.mark_as_read": "Mark every notification as read", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", - "notifications_permission_banner.enable": "Enable desktop notifications", + "notifications_permission_banner.enable": "Ceadaigh fógraí ar an deasc", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.title": "Never miss a thing", "picture_in_picture.restore": "Cuir é ar ais", @@ -451,8 +450,8 @@ "privacy.direct.long": "Visible for mentioned users only", "privacy.direct.short": "Direct", "privacy.private.long": "Sofheicthe do Leantóirí amháin", - "privacy.private.short": "Followers-only", - "privacy.public.long": "Visible for all", + "privacy.private.short": "Leantóirí amháin", + "privacy.public.long": "Infheicthe do chách", "privacy.public.short": "Poiblí", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Neamhliostaithe", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 3492aa54a5..06683f9835 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -2,11 +2,9 @@ "about.blocks": "Frithealaichean fo mhaorsainneachd", "about.contact": "Fios thugainn:", "about.disclaimer": "’S e bathar-bog saor le bun-tùs fosgailte a th’ ann am Mastodon agus ’na chomharra-mhalairt aig Mastodon gGmbH.", - "about.domain_blocks.comment": "Adhbhar", - "about.domain_blocks.domain": "Àrainn", + "about.domain_blocks.no_reason_available": "Chan eil an t-adhbhar ga thoirt seachad", "about.domain_blocks.preamble": "San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus eadar-ghìomh a ghabhail leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo.", - "about.domain_blocks.severity": "Donad", - "about.domain_blocks.silenced.explanation": "Chan fharsaingeachd, chan fhaic thu pròifilean agus susbaint an fhrithealaiche seo ach ma nì thu lorg no ma tha thu ’ga leantainn.", + "about.domain_blocks.silenced.explanation": "San fharsaingeachd, chan fhaic thu pròifilean agus susbaint an fhrithealaiche seo ach ma nì thu lorg no ma tha thu ga leantainn.", "about.domain_blocks.silenced.title": "Cuingichte", "about.domain_blocks.suspended.explanation": "Cha dèid dàta sam bith on fhrithealaiche seo a phròiseasadh, a stòradh no iomlaid agus chan urrainn do na cleachdaichean on fhrithealaiche sin conaltradh no eadar-ghnìomh a ghabhail an-seo.", "about.domain_blocks.suspended.title": "’Na dhàil", @@ -38,7 +36,7 @@ "account.following": "A’ leantainn", "account.following_counter": "{count, plural, one {A’ leantainn {counter}} two {A’ leantainn {counter}} few {A’ leantainn {counter}} other {A’ leantainn {counter}}}", "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn neach sam bith fhathast.", - "account.follows_you": "’Gad leantainn", + "account.follows_you": "Gad leantainn", "account.go_to_profile": "Tadhail air a’ phròifil", "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}", "account.joined_short": "Air ballrachd fhaighinn", @@ -51,6 +49,7 @@ "account.mute": "Mùch @{name}", "account.mute_notifications": "Mùch na brathan o @{name}", "account.muted": "’Ga mhùchadh", + "account.open_original_page": "Fosgail an duilleag thùsail", "account.posts": "Postaichean", "account.posts_with_replies": "Postaichean ’s freagairtean", "account.report": "Dèan gearan mu @{name}", @@ -152,7 +151,7 @@ "confirmations.block.confirm": "Bac", "confirmations.block.message": "A bheil thu cinnteach gu bheil thu airson {name} a bhacadh?", "confirmations.cancel_follow_request.confirm": "Cuir d’ iarrtas dhan dàrna taobh", - "confirmations.cancel_follow_request.message": "A bheil thu cinnteach gu bheil thu airson d’ iarrtas leantainn {name} a chur dhan dàrna taobh?", + "confirmations.cancel_follow_request.message": "A bheil thu cinnteach gu bheil thu airson d’ iarrtas airson {name} a leantainn a chur dhan dàrna taobh?", "confirmations.delete.confirm": "Sguab às", "confirmations.delete.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", "confirmations.delete_list.confirm": "Sguab às", @@ -219,7 +218,7 @@ "empty_column.favourited_statuses": "Chan eil annsachd air post agad fhathast. Nuair a nì thu annsachd de dh’fhear, nochdaidh e an-seo.", "empty_column.favourites": "Chan eil am post seo ’na annsachd aig duine sam bith fhathast. Nuair a nì daoine annsachd dheth, nochdaidh iad an-seo.", "empty_column.follow_recommendations": "Chan urrainn dhuinn dad a mholadh dhut. Cleachd gleus an luirg feuch an lorg thu daoine air a bheil thu eòlach no rùraich na tagaichean-hais a tha a’ treandadh.", - "empty_column.follow_requests": "Chan eil iarrtas air leantainn agad fhathast. Nuair gheibh thu fear, nochdaidh e an-seo.", + "empty_column.follow_requests": "Chan eil iarrtas leantainn agad fhathast. Nuair a gheibh thu fear, nochdaidh e an-seo.", "empty_column.hashtag": "Chan eil dad san taga hais seo fhathast.", "empty_column.home": "Tha loidhne-ama na dachaigh agad falamh! Lean barrachd dhaoine gus a lìonadh. {suggestions}", "empty_column.home.suggestions": "Faic moladh no dhà", @@ -257,7 +256,7 @@ "filter_modal.select_filter.title": "Criathraich am post seo", "filter_modal.title.status": "Criathraich post", "follow_recommendations.done": "Deiseil", - "follow_recommendations.heading": "Lean daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", + "follow_recommendations.heading": "Lean daoine ma tha thu airson na postaichean aca fhaicinn! Seo moladh no dà dhut.", "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine a leanas tu a-rèir an ama nad dhachaigh. Bi dàna on as urrainn dhut sgur de dhaoine a leantainn cuideachd uair sam bith!", "follow_request.authorize": "Ùghdarraich", "follow_request.reject": "Diùlt", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Le cunntas air Mastodon, ’s urrainn dhut freagairt a chur dhan phost seo.", "interaction_modal.on_another_server": "Air frithealaiche eile", "interaction_modal.on_this_server": "Air an frithealaiche seo", - "interaction_modal.other_server_instructions": "Dèan lethbhreac dhen URL seo is cuir ann am bàr nan lorg e san aplacaid as fheàrr leat no san eadar-aghaidh-lìn far a bheil thu air do chlàradh a-steach.", + "interaction_modal.other_server_instructions": "Dèan lethbhreac agus cuir an URL seo san raon luirg aig an aplacaid Mastodon as fheàrr leat no ann an eadar-aghaidh an fhrithealaiche Mastodon agad.", "interaction_modal.preamble": "Air sgàth ’s gu bheil Mastodon sgaoilte, ’s urrainn dhut cunntas a chleachdadh a tha ’ga òstadh le frithealaiche Mastodon no le ùrlar co-chòrdail eile mur eil cunntas agad air an fhear seo.", "interaction_modal.title.favourite": "Cuir am post aig {name} ris na h-annsachdan", "interaction_modal.title.follow": "Lean {name}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 6a9260064c..3410a8b7d7 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -2,10 +2,8 @@ "about.blocks": "Servidores moderados", "about.contact": "Contacto:", "about.disclaimer": "Mastodon é software libre, de código aberto, e unha marca comercial de Mastodon gGmbH.", - "about.domain_blocks.comment": "Razón", - "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular.", - "about.domain_blocks.severity": "Rigurosidade", "about.domain_blocks.silenced.explanation": "Por defecto non verás perfís e contido desde este servidor, a menos que mires de xeito explícito ou optes por seguir ese contido ou usuaria.", "about.domain_blocks.silenced.title": "Limitado", "about.domain_blocks.suspended.explanation": "Non se procesarán, almacenarán nin intercambiarán datos con este servidor, o que fai imposible calquera interacción ou comunicación coas usuarias deste servidor.", @@ -51,6 +49,7 @@ "account.mute": "Acalar @{name}", "account.mute_notifications": "Acalar as notificacións de @{name}", "account.muted": "Acalada", + "account.open_original_page": "Open original page", "account.posts": "Publicacións", "account.posts_with_replies": "Publicacións e respostas", "account.report": "Informar sobre @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Cunha conta en Mastodon, poderás responder a esta publicación.", "interaction_modal.on_another_server": "Nun servidor diferente", "interaction_modal.on_this_server": "Neste servidor", - "interaction_modal.other_server_instructions": "Só tes que copiar e pegar este URL na barra de procuras da túa aplicación favorita, ou da interface web na que teñas unha sesión iniciada.", + "interaction_modal.other_server_instructions": "Copia e pega este URL no campo de busca da túa app Mastodon favorita ou na interface web do teu servidor Mastodon.", "interaction_modal.preamble": "Como Mastodon é descentralizado, é posible usar unha conta existente noutro servidor Mastodon, ou nunha plataforma compatible, se non dispós dunha conta neste servidor.", "interaction_modal.title.favourite": "Marcar coma favorito a publicación de {name}", "interaction_modal.title.follow": "Seguir a {name}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 644574f387..f11b063b80 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -2,10 +2,8 @@ "about.blocks": "שרתים מוגבלים", "about.contact": "יצירת קשר:", "about.disclaimer": "מסטודון היא תוכנת קוד פתוח חינמית וסימן מסחרי של Mastodon gGmbH.", - "about.domain_blocks.comment": "סיבה", - "about.domain_blocks.domain": "שם מתחם", + "about.domain_blocks.no_reason_available": "הסיבה אינה זמינה", "about.domain_blocks.preamble": "ככלל מסטודון מאפשרת לך לצפות בתוכן ולתקשר עם משתמשים מכל שרת בפדיברס. אלו הם היוצאים מן הכלל שהוגדרו עבור השרת המסוים הזה.", - "about.domain_blocks.severity": "חומרה", "about.domain_blocks.silenced.explanation": "ככלל פרופילים ותוכן משרת זה לא יוצגו, אלא אם חיפשת אותם באופן מפורש או בחרת להשתתף בו על ידי מעקב.", "about.domain_blocks.silenced.title": "מוגבלים", "about.domain_blocks.suspended.explanation": "שום מידע משרת זה לא יעובד, יישמר או יוחלף, מה שהופך כל תקשורת עם משתמשים משרת זה לבלתי אפשרית.", @@ -51,6 +49,7 @@ "account.mute": "להשתיק את @{name}", "account.mute_notifications": "להסתיר התראות מ @{name}", "account.muted": "מושתק", + "account.open_original_page": "לפתיחת העמוד המקורי", "account.posts": "פוסטים", "account.posts_with_replies": "הודעות ותגובות", "account.report": "דווח על @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "עם חשבון מסטודון, ניתן לענות להודעה.", "interaction_modal.on_another_server": "על שרת אחר", "interaction_modal.on_this_server": "על שרת זה", - "interaction_modal.other_server_instructions": "פשוט להעתיק ולהדביק את ה־URL לחלונית החיפוש ביישום או הדפדפן ממנו התחברת.", + "interaction_modal.other_server_instructions": "ניתן להעתיק ולהדביק קישור זה לתוך שדה החיפוש באפליקציית מסטודון שבשימוש אצלך או בממשק הדפדפן של שרת המסטודון.", "interaction_modal.preamble": "כיוון שמסטודון מבוזרת, תוכל/י להשתמש בחשבון שלך משרתי מסטודון או רשתות תואמות אחרות אם אין לך חשבון על שרת זה.", "interaction_modal.title.favourite": "חיבוב ההודעה של {name}", "interaction_modal.title.follow": "לעקוב אחרי {name}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 992205a7e1..6879f7a0c2 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "म्यूट @{name}", "account.mute_notifications": "@{name} के नोटिफिकेशन म्यूट करे", "account.muted": "म्यूट है", + "account.open_original_page": "Open original page", "account.posts": "टूट्स", "account.posts_with_replies": "टूट्स एवं जवाब", "account.report": "रिपोर्ट @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index f04760ed14..83fe0b368d 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Utišaj @{name}", "account.mute_notifications": "Utišaj obavijesti od @{name}", "account.muted": "Utišano", + "account.open_original_page": "Open original page", "account.posts": "Tootovi", "account.posts_with_replies": "Tootovi i odgovori", "account.report": "Prijavi @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 85202e1d57..452cc2cdb2 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -2,10 +2,8 @@ "about.blocks": "Moderált kiszolgálók", "about.contact": "Kapcsolat:", "about.disclaimer": "A Mastodon ingyenes, nyílt forráskódú szoftver, a Mastodon gGmbH védejegye.", - "about.domain_blocks.comment": "Indoklás", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Az ok nem érhető el", "about.domain_blocks.preamble": "A Mastodon általában mindenféle tartalomcserét és interakciót lehetővé tesz bármelyik másik kiszolgálóval a födiverzumban. Ezek azok a kivételek, amelyek a mi kiszolgálónkon érvényben vannak.", - "about.domain_blocks.severity": "Súlyosság", "about.domain_blocks.silenced.explanation": "Általában nem fogsz profilokat és tartalmat látni erről a kiszolgálóról, hacsak közvetlenül fel nem keresed vagy követed.", "about.domain_blocks.silenced.title": "Korlátozott", "about.domain_blocks.suspended.explanation": "A kiszolgáló adatai nem lesznek feldolgozva, tárolva vagy megosztva, lehetetlenné téve mindennemű interakciót és kommunikációt a kiszolgáló felhasználóival.", @@ -51,6 +49,7 @@ "account.mute": "@{name} némítása", "account.mute_notifications": "@{name} értesítéseinek némítása", "account.muted": "Némítva", + "account.open_original_page": "Eredeti oldal megnyitása", "account.posts": "Bejegyzések", "account.posts_with_replies": "Bejegyzések és válaszok", "account.report": "@{name} jelentése", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Egy Mastodon fiókkal válaszolhatsz erre a bejegyzésre.", "interaction_modal.on_another_server": "Másik kiszolgálón", "interaction_modal.on_this_server": "Ezen a kiszolgálón", - "interaction_modal.other_server_instructions": "Csak másold be ezt az URL-t a kedvenc appod keresőjébe, vagy arra a webes felületre, ahol be vagy jelentkezve.", + "interaction_modal.other_server_instructions": "Másold és illeszd be ezt a webcímet a kedvenc Mastodon alkalmazásod vagy a Mastodon-kiszolgálód webes felületének keresőmezőjébe.", "interaction_modal.preamble": "Mivel a Mastodon decentralizált, használhatod egy másik Mastodon kiszolgálón, vagy kompatibilis szolgáltatáson lévő fiókodat, ha ezen a kiszolgálón nincs fiókod.", "interaction_modal.title.favourite": "{name} bejegyzésének megjelölése kedvencként", "interaction_modal.title.follow": "{name} követése", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 8af39e2c6c..5643e2ea95 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Լռեցնել @{name}֊ին", "account.mute_notifications": "Անջատել ծանուցումները @{name}֊ից", "account.muted": "Լռեցուած", + "account.open_original_page": "Open original page", "account.posts": "Գրառումներ", "account.posts_with_replies": "Գրառումներ եւ պատասխաններ", "account.report": "Բողոքել @{name}֊ի մասին", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 13ecae298b..1c35ab6023 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -1,11 +1,9 @@ { - "about.blocks": "Server yang dimoderasi", + "about.blocks": "Movies", "about.contact": "Hubungi:", "about.disclaimer": "Mastodon addalah perangkat lunak bebas dan sumber terbuka, dan adalah merek dagang dari Mastodon gGmbH.", - "about.domain_blocks.comment": "Alasan", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Alasan tidak tersedia", "about.domain_blocks.preamble": "Mastodon umumnya mengizinkan Anda untuk melihat konten dan berinteraksi dengan pengguna dari server lain di fediverse. Ini adalah pengecualian yang dibuat untuk beberapa server.", - "about.domain_blocks.severity": "Keparahan", "about.domain_blocks.silenced.explanation": "Anda secara umum tidak melihat profil dan konten dari server ini, kecuali jika Anda mencarinya atau memilihnya dengan mengikuti secara eksplisit.", "about.domain_blocks.silenced.title": "Terbatas", "about.domain_blocks.suspended.explanation": "Tidak ada data yang diproses, disimpan, atau ditukarkan dari server ini, membuat interaksi atau komunikasi dengan pengguna dari server ini tidak mungkin dilakukan.", @@ -47,10 +45,11 @@ "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.", "account.media": "Media", "account.mention": "Balasan @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "{name} mengabarkan bahwa akun baru mereka kini adalah:", "account.mute": "Bisukan @{name}", "account.mute_notifications": "Bisukan pemberitahuan dari @{name}", "account.muted": "Dibisukan", + "account.open_original_page": "Buka halaman asli", "account.posts": "Kiriman", "account.posts_with_replies": "Kiriman dan balasan", "account.report": "Laporkan @{name}", @@ -182,8 +181,8 @@ "directory.local": "Dari {domain} saja", "directory.new_arrivals": "Yang baru datang", "directory.recently_active": "Baru-baru ini aktif", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.account_settings": "Pengaturan akun", + "disabled_account_banner.text": "Akun {disabledAccount} Anda kini dinonaktifkan.", "dismissable_banner.community_timeline": "Ini adalah kiriman publik terkini dari orang yang akunnya berada di {domain}.", "dismissable_banner.dismiss": "Abaikan", "dismissable_banner.explore_links": "Cerita berita ini sekarang sedang dibicarakan oleh orang di server ini dan lainnya dalam jaringan terdesentralisasi.", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Dengan sebuah akun di Mastodon, Anda bisa menanggapi kiriman ini.", "interaction_modal.on_another_server": "Di server lain", "interaction_modal.on_this_server": "Di server ini", - "interaction_modal.other_server_instructions": "Tinggal salin dan tempelkan URL ini ke bilah pencarian di aplikasi favorit Anda atau antarmuka web di mana Anda masuk.", + "interaction_modal.other_server_instructions": "Salin dan tempel URL ini ke bidang telusur aplikasi Mastodon favorit Anda atau antarmuka web server Mastodon Anda.", "interaction_modal.preamble": "Karena Mastodon itu terdesentralisasi, Anda dapat menggunakan akun Anda yang sudah ada yang berada di server Mastodon lain atau platform yang kompatibel jika Anda tidak memiliki sebuah akun di sini.", "interaction_modal.title.favourite": "Favoritkan kiriman {name}", "interaction_modal.title.follow": "Ikuti {name}", @@ -361,7 +360,7 @@ "media_gallery.toggle_visible": "Tampil/Sembunyikan", "missing_indicator.label": "Tidak ditemukan", "missing_indicator.sublabel": "Sumber daya tak bisa ditemukan", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "Akun {disabledAccount} Anda kini dinonaktifkan karena Anda pindah ke {movedToAccount}.", "mute_modal.duration": "Durasi", "mute_modal.hide_notifications": "Sembunyikan notifikasi dari pengguna ini?", "mute_modal.indefinite": "Tak terbatas", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index bee531e4f6..67f9c0c0a4 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mee ogbi @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Posts", "account.posts_with_replies": "Posts and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 4489053e67..6a294928d5 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -2,10 +2,8 @@ "about.blocks": "Jerata servili", "about.contact": "Kontaktajo:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Motivo", - "about.domain_blocks.domain": "Domeno", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generale permisas on vidar kontenajo e interagar kun uzanti de irga altra servilo en fediverso. Existas eceptioni quo facesis che ca partikulara servilo.", - "about.domain_blocks.severity": "Severeso", "about.domain_blocks.silenced.explanation": "On generale ne vidar profili e kontenajo de ca servilo, se on ne reale trovar o voluntale juntar per sequar.", "about.domain_blocks.silenced.title": "Limitizita", "about.domain_blocks.suspended.explanation": "Nula informi de ca servili procedagesos o retenesos o interchanjesos, do irga interago o komuniko kun uzanti de ca servili esas neposibla.", @@ -51,6 +49,7 @@ "account.mute": "Celar @{name}", "account.mute_notifications": "Silencigez avizi de @{name}", "account.muted": "Silencigata", + "account.open_original_page": "Open original page", "account.posts": "Mesaji", "account.posts_with_replies": "Posti e respondi", "account.report": "Denuncar @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Per konto che Mastodon, vu povas respondar ca posto.", "interaction_modal.on_another_server": "Che diferanta servilo", "interaction_modal.on_this_server": "Che ca servilo", - "interaction_modal.other_server_instructions": "Jus kopiez e glutinar ca URL a trovbuxo di vua favorata softwaro o retintervizajo en vua ekirsituo.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Pro ke Mastodon esas necentraligita, on povas uzar vua havata konto quo hostigesas altra servilo di Mastodon o konciliebla metodo se on ne havas konto hike.", "interaction_modal.title.favourite": "Favorata posto di {name}", "interaction_modal.title.follow": "Sequez {name}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index a2062244b8..4af4edb169 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -2,10 +2,8 @@ "about.blocks": "Netþjónar með efnisumsjón", "about.contact": "Hafa samband:", "about.disclaimer": "Mastodon er frjáls hugbúnaður með opinn grunnkóða og er skrásett vörumerki í eigu Mastodon gGmbH.", - "about.domain_blocks.comment": "Ástæða", - "about.domain_blocks.domain": "Lén", + "about.domain_blocks.no_reason_available": "Ástæða ekki tiltæk", "about.domain_blocks.preamble": "Mastodon leyfir þér almennt að skoða og eiga við efni frá notendum frá hvaða vefþjóni sem er í vefþjónasambandinu. Þetta eru þær undantekningar sem hafa verið gerðar á þessum tiltekna vefþjóni.", - "about.domain_blocks.severity": "Mikilvægi", "about.domain_blocks.silenced.explanation": "Þú munt almennt ekki sjá notandasnið og efni af þessum netþjóni nema þú flettir því upp sérstaklega eða veljir að fylgjast með því.", "about.domain_blocks.silenced.title": "Takmarkað", "about.domain_blocks.suspended.explanation": "Engin gögn frá þessum vefþjóni verða unnin, geymd eða skipst á, sem gerir samskipti við notendur frá þessum vefþjóni ómöguleg.", @@ -51,6 +49,7 @@ "account.mute": "Þagga niður í @{name}", "account.mute_notifications": "Þagga tilkynningar frá @{name}", "account.muted": "Þaggaður", + "account.open_original_page": "Opna upprunalega síðu", "account.posts": "Færslur", "account.posts_with_replies": "Færslur og svör", "account.report": "Kæra @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Með notandaaðgangi á Mastodon geturðu svarað þessari færslu.", "interaction_modal.on_another_server": "Á öðrum netþjóni", "interaction_modal.on_this_server": "Á þessum netþjóni", - "interaction_modal.other_server_instructions": "Þú einfaldlega afritar þessa slóð og límir hana inn í veffanga-/leitarstiku eftirlætisforritsins þíns eða í vefviðmótið þar sem þú ert skráð/ur inn.", + "interaction_modal.other_server_instructions": "Afritaðu og límdu þessa slóð inn í leitarreit Mastodon-forrits þess sem þú vilt nota eða í vefviðmóti Mastodon-netþjónsins þíns.", "interaction_modal.preamble": "Þar sem Mastodon er dreifhýst kerfi, þá geturðu notað aðgang sem er hýstur á öðrum Mastodon-þjóni eða öðru samhæfðu kerfi, ef þú ert ekki með notandaaðgang á þessum hér.", "interaction_modal.title.favourite": "Setja færsluna frá {name} í eftirlæti", "interaction_modal.title.follow": "Fylgjast með {name}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 67bbbfbe74..eea0939cd3 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -2,10 +2,8 @@ "about.blocks": "Server moderati", "about.contact": "Contatto:", "about.disclaimer": "Mastodon è un software open source, gratuito e un marchio di Mastodon gGmbH.", - "about.domain_blocks.comment": "Motivo", - "about.domain_blocks.domain": "Dominio", + "about.domain_blocks.no_reason_available": "Motivo non disponibile", "about.domain_blocks.preamble": "Mastodon, generalmente, ti consente di visualizzare i contenuti e interagire con gli utenti da qualsiasi altro server nel fediverso. Queste sono le eccezioni che sono state fatte su questo particolare server.", - "about.domain_blocks.severity": "Gravità", "about.domain_blocks.silenced.explanation": "Generalmente non vedrai i profili e i contenuti di questo server, a meno che tu non lo cerchi esplicitamente o che tu scelga di seguirlo.", "about.domain_blocks.silenced.title": "Silenziato", "about.domain_blocks.suspended.explanation": "Nessun dato proveniente da questo server verrà elaborato, conservato o scambiato, rendendo impossibile qualsiasi interazione o comunicazione con gli utenti da questo server.", @@ -51,6 +49,7 @@ "account.mute": "Silenzia @{name}", "account.mute_notifications": "Silenzia notifiche da @{name}", "account.muted": "Silenziato", + "account.open_original_page": "Apri pagina originale", "account.posts": "Post", "account.posts_with_replies": "Post e risposte", "account.report": "Segnala @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Con un account su Mastodon, è possibile rispondere a questo post.", "interaction_modal.on_another_server": "Su un altro server", "interaction_modal.on_this_server": "Su questo server", - "interaction_modal.other_server_instructions": "Basta copiare e incollare questo URL nella barra di ricerca della tua app preferita o nell'interfaccia web in cui hai effettuato l'accesso.", + "interaction_modal.other_server_instructions": "Copia e incolla questo URL nel campo di ricerca della tua app Mastodon preferita o nell'interfaccia web del tuo server Mastodon.", "interaction_modal.preamble": "Poiché Mastodon è decentralizzato, è possibile utilizzare il proprio account esistente ospitato da un altro server Mastodon o piattaforma compatibile se non si dispone di un account su questo.", "interaction_modal.title.favourite": "Post preferito di {name}", "interaction_modal.title.follow": "Segui {name}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index aca810561f..b5dc4e0f1b 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -2,10 +2,8 @@ "about.blocks": "制限中のサーバー", "about.contact": "連絡先", "about.disclaimer": "Mastodonは自由なオープンソースソフトウェアでMastodon gGmbHの商標です。", - "about.domain_blocks.comment": "制限理由", - "about.domain_blocks.domain": "ドメイン", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。", - "about.domain_blocks.severity": "重大性", "about.domain_blocks.silenced.explanation": "このサーバーのプロフィールやコンテンツは、明示的に検索したり、フォローでオプトインしない限り、通常は表示されません。", "about.domain_blocks.silenced.title": "制限", "about.domain_blocks.suspended.explanation": "これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません。", @@ -51,6 +49,7 @@ "account.mute": "@{name}さんをミュート", "account.mute_notifications": "@{name}さんからの通知を受け取らない", "account.muted": "ミュート済み", + "account.open_original_page": "Open original page", "account.posts": "投稿", "account.posts_with_replies": "投稿と返信", "account.report": "@{name}さんを通報", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Mastodonのアカウントでこの投稿に反応できます。", "interaction_modal.on_another_server": "別のサーバー", "interaction_modal.on_this_server": "このサーバー", - "interaction_modal.other_server_instructions": "このURLをコピーしてお気に入りのアプリの検索バーやログインしているWeb UIに貼り付けるだけです。", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Mastodonは分散化されているためアカウントを持っていなくても別のMastodonサーバーまたは互換性のあるプラットフォームでホストされているアカウントを使用できます。", "interaction_modal.title.favourite": "{name}さんの投稿をお気に入り", "interaction_modal.title.follow": "{name}さんをフォロー", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index d371077630..39e84e0040 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "გააჩუმე @{name}", "account.mute_notifications": "გააჩუმე შეტყობინებები @{name}-სგან", "account.muted": "გაჩუმებული", + "account.open_original_page": "Open original page", "account.posts": "ტუტები", "account.posts_with_replies": "ტუტები და პასუხები", "account.report": "დაარეპორტე @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 20fe24f839..47a5671087 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Sgugem @{name}", "account.mute_notifications": "Sgugem tilɣa sγur @{name}", "account.muted": "Yettwasgugem", + "account.open_original_page": "Open original page", "account.posts": "Tisuffaɣ", "account.posts_with_replies": "Tisuffaɣ d tririyin", "account.report": "Cetki ɣef @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "Deg uqeddac-ayi", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Ḍfer {name}", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index f93a67546b..6bd43ffe8f 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Үнсіз қылу @{name}", "account.mute_notifications": "@{name} туралы ескертпелерді жасыру", "account.muted": "Үнсіз", + "account.open_original_page": "Open original page", "account.posts": "Жазбалар", "account.posts_with_replies": "Жазбалар мен жауаптар", "account.report": "Шағымдану @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 9a6977f904..a504ebb99c 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "ಟೂಟ್‌ಗಳು", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 7338d186c7..55ba91487c 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -2,10 +2,8 @@ "about.blocks": "제한된 서버들", "about.contact": "연락처:", "about.disclaimer": "마스토돈은 자유 오픈소스 소프트웨어이며, Mastodon gGmbH의 상표입니다", - "about.domain_blocks.comment": "사유", - "about.domain_blocks.domain": "도메인", + "about.domain_blocks.no_reason_available": "알 수 없는 이유", "about.domain_blocks.preamble": "마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.", - "about.domain_blocks.severity": "심각도", "about.domain_blocks.silenced.explanation": "명시적으로 찾아보거나 팔로우를 하기 전까지는, 이 서버에 있는 프로필이나 게시물 등을 일반적으로 볼 수 없습니다.", "about.domain_blocks.silenced.title": "제한됨", "about.domain_blocks.suspended.explanation": "이 서버의 어떤 데이터도 처리되거나, 저장 되거나 공유되지 않고, 이 서버의 어떤 유저와도 상호작용 하거나 대화할 수 없습니다.", @@ -51,6 +49,7 @@ "account.mute": "@{name} 뮤트", "account.mute_notifications": "@{name}의 알림을 뮤트", "account.muted": "뮤트 됨", + "account.open_original_page": "원본 페이지 열기", "account.posts": "게시물", "account.posts_with_replies": "게시물과 답장", "account.report": "@{name} 신고", @@ -74,7 +73,7 @@ "admin.dashboard.retention.cohort_size": "새로운 사용자", "alert.rate_limited.message": "{retry_time, time, medium}에 다시 시도해 주세요.", "alert.rate_limited.title": "빈도 제한됨", - "alert.unexpected.message": "예측하지 못한 에러가 발생했습니다.", + "alert.unexpected.message": "예상하지 못한 에러가 발생했습니다.", "alert.unexpected.title": "앗!", "announcement.announcement": "공지사항", "attachments_list.unprocessed": "(처리 안 됨)", @@ -91,7 +90,7 @@ "bundle_column_error.routing.body": "요청하신 페이지를 찾을 수 없습니다. 주소창에 적힌 URL이 확실히 맞나요?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "닫기", - "bundle_modal_error.message": "컴포넌트를 불러오는 과정에서 문제가 발생했습니다.", + "bundle_modal_error.message": "컴포넌트를 불러오는 중 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", "closed_registrations.other_server_instructions": "마스토돈은 분산화 되어 있기 때문에, 다른 서버에서 계정을 만들더라도 이 서버와 상호작용 할 수 있습니다.", "closed_registrations_modal.description": "{domain}은 현재 가입이 막혀있는 상태입니다, 만약 마스토돈을 이용하기 위해 꼭 {domain}을 사용할 필요는 없다는 사실을 인지해 두세요.", @@ -129,9 +128,9 @@ "compose_form.direct_message_warning_learn_more": "더 알아보기", "compose_form.encryption_warning": "마스토돈의 게시물들은 종단간 암호화가 되지 않습니다. 민감한 정보를 마스토돈을 통해 전달하지 마세요.", "compose_form.hashtag_warning": "이 게시물은 어떤 해시태그로도 검색 되지 않습니다. 전체공개로 게시 된 게시물만이 해시태그로 검색 될 수 있습니다.", - "compose_form.lock_disclaimer": "이 계정은 {locked}로 설정 되어 있지 않습니다. 누구나 이 계정을 팔로우 할 수 있으며, 팔로워 공개의 포스팅을 볼 수 있습니다.", + "compose_form.lock_disclaimer": "이 계정은 {locked}상태가 아닙니다. 누구나 이 계정을 팔로우 하여 팔로워 전용의 게시물을 볼 수 있습니다.", "compose_form.lock_disclaimer.lock": "비공개", - "compose_form.placeholder": "지금 무엇을 하고 있나요?", + "compose_form.placeholder": "지금 무슨 생각을 하고 있나요?", "compose_form.poll.add_option": "항목 추가", "compose_form.poll.duration": "투표 기간", "compose_form.poll.option_placeholder": "{number}번 항목", @@ -144,8 +143,8 @@ "compose_form.sensitive.hide": "미디어를 민감함으로 설정하기", "compose_form.sensitive.marked": "미디어가 열람주의로 설정되어 있습니다", "compose_form.sensitive.unmarked": "미디어가 열람주의로 설정 되어 있지 않습니다", - "compose_form.spoiler.marked": "열람 주의 제거", - "compose_form.spoiler.unmarked": "열람 주의가 설정 되어 있지 않습니다", + "compose_form.spoiler.marked": "콘텐츠 경고 제거", + "compose_form.spoiler.unmarked": "열람 주의 문구 추가", "compose_form.spoiler_placeholder": "경고 문구를 여기에 작성하세요", "confirmation_modal.cancel": "취소", "confirmations.block.block_and_report": "차단하고 신고하기", @@ -160,7 +159,7 @@ "confirmations.discard_edit_media.confirm": "저장 안함", "confirmations.discard_edit_media.message": "미디어 설명이나 미리보기에 대한 저장하지 않은 변경사항이 있습니다. 버리시겠습니까?", "confirmations.domain_block.confirm": "도메인 전체를 차단", - "confirmations.domain_block.message": "정말로 {domain} 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 컨텐츠를 보지 못합니다. 해당 도메인에 속한 팔로워와의 관계가 사라집니다.", + "confirmations.domain_block.message": "정말로 {domain} 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 콘텐츠를 보지 못합니다. 해당 도메인에 속한 팔로워와의 관계가 사라집니다.", "confirmations.logout.confirm": "로그아웃", "confirmations.logout.message": "정말로 로그아웃 하시겠습니까?", "confirmations.mute.confirm": "뮤트", @@ -194,12 +193,12 @@ "embed.preview": "다음과 같이 표시됩니다:", "emoji_button.activity": "활동", "emoji_button.clear": "지우기", - "emoji_button.custom": "커스텀", + "emoji_button.custom": "사용자 지정", "emoji_button.flags": "깃발", "emoji_button.food": "음식과 마실것", "emoji_button.label": "에모지를 추가", "emoji_button.nature": "자연", - "emoji_button.not_found": "맞는 에모지가 없습니다", + "emoji_button.not_found": "해당하는 에모지가 없습니다", "emoji_button.objects": "물건", "emoji_button.people": "사람들", "emoji_button.recent": "자주 사용됨", @@ -271,7 +270,7 @@ "footer.source_code": "소스코드 보기", "generic.saved": "저장됨", "getting_started.heading": "시작", - "hashtag.column_header.tag_mode.all": "그리고 {additional}", + "hashtag.column_header.tag_mode.all": "및 {additional}", "hashtag.column_header.tag_mode.any": "또는 {additional}", "hashtag.column_header.tag_mode.none": "{additional}를 제외하고", "hashtag.column_settings.select.no_options_message": "추천할 내용이 없습니다", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "마스토돈 계정을 통해, 이 게시물에 응답할 수 있습니다.", "interaction_modal.on_another_server": "다른 서버에", "interaction_modal.on_this_server": "이 서버에서", - "interaction_modal.other_server_instructions": "단순하게 이 URL을 당신이 좋아하는 앱이나 로그인 한 웹 인터페이스의 검색창에 복사/붙여넣기 하세요.", + "interaction_modal.other_server_instructions": "즐겨찾는 마스토돈 앱이나 마스토돈 서버의 웹 인터페이스 내 검색 영역에 이 URL을 복사 및 붙여넣기 하세요.", "interaction_modal.preamble": "마스토돈은 분산화 되어 있기 때문에, 이곳에 계정이 없더라도 다른 곳에서 운영되는 마스토돈 서버나 호환 되는 플랫폼에 있는 계정을 사용할 수 있습니다.", "interaction_modal.title.favourite": "{name} 님의 게시물을 마음에 들어하기", "interaction_modal.title.follow": "{name} 님을 팔로우", @@ -355,7 +354,7 @@ "lists.replies_policy.none": "아무도 없음", "lists.replies_policy.title": "답글 표시:", "lists.search": "팔로우 중인 사람들 중에서 찾기", - "lists.subheading": "당신의 리스트", + "lists.subheading": "리스트", "load_pending": "{count}개의 새 항목", "loading_indicator.label": "불러오는 중...", "media_gallery.toggle_visible": "이미지 숨기기", @@ -392,12 +391,12 @@ "notification.admin.report": "{name} 님이 {target}를 신고했습니다", "notification.admin.sign_up": "{name} 님이 가입했습니다", "notification.favourite": "{name} 님이 당신의 게시물을 마음에 들어합니다", - "notification.follow": "{name} 님이 나를 팔로우 했습니다", + "notification.follow": "{name} 님이 나를 팔로우했습니다", "notification.follow_request": "{name} 님이 팔로우 요청을 보냈습니다", "notification.mention": "{name} 님이 답글을 보냈습니다", "notification.own_poll": "내 투표가 끝났습니다", "notification.poll": "당신이 참여 한 투표가 종료되었습니다", - "notification.reblog": "{name} 님이 부스트 했습니다", + "notification.reblog": "{name} 님이 부스트했습니다", "notification.status": "{name} 님이 방금 게시물을 올렸습니다", "notification.update": "{name} 님이 게시물을 수정했습니다", "notifications.clear": "알림 지우기", @@ -429,7 +428,7 @@ "notifications.filter.polls": "투표 결과", "notifications.filter.statuses": "팔로우 하는 사람들의 최신 게시물", "notifications.grant_permission": "권한 부여.", - "notifications.group": "{count} 개의 알림", + "notifications.group": "{count}개의 알림", "notifications.mark_as_read": "모든 알림을 읽은 상태로 표시", "notifications.permission_denied": "권한이 거부되었기 때문에 데스크탑 알림을 활성화할 수 없음", "notifications.permission_denied_alert": "이전에 브라우저 권한이 거부되었기 때문에, 데스크탑 알림이 활성화 될 수 없습니다.", @@ -477,7 +476,7 @@ "report.block_explanation": "당신은 해당 계정의 게시물을 보지 않게 됩니다. 해당 계정은 당신의 게시물을 보거나 팔로우 할 수 없습니다. 해당 계정은 자신이 차단되었다는 사실을 알 수 있습니다.", "report.categories.other": "기타", "report.categories.spam": "스팸", - "report.categories.violation": "컨텐츠가 한 개 이상의 서버 규칙을 위반합니다", + "report.categories.violation": "콘텐츠가 한 개 이상의 서버 규칙을 위반합니다", "report.category.subtitle": "가장 알맞은 것을 선택하세요", "report.category.title": "이 {type}에 무슨 문제가 있는지 알려주세요", "report.category.title_account": "프로필", @@ -562,7 +561,7 @@ "status.history.edited": "{name} 님이 {date}에 수정함", "status.load_more": "더 보기", "status.media_hidden": "미디어 숨겨짐", - "status.mention": "@{name}에게 글쓰기", + "status.mention": "@{name} 님에게 글 쓰기", "status.more": "자세히", "status.mute": "@{name} 뮤트", "status.mute_conversation": "이 대화를 뮤트", @@ -572,7 +571,7 @@ "status.read_more": "더 보기", "status.reblog": "부스트", "status.reblog_private": "원래의 수신자들에게 부스트", - "status.reblogged_by": "{name} 님이 부스트 했습니다", + "status.reblogged_by": "{name} 님이 부스트했습니다", "status.reblogs.empty": "아직 아무도 이 게시물을 부스트하지 않았습니다. 부스트 한 사람들이 여기에 표시 됩니다.", "status.redraft": "지우고 다시 쓰기", "status.remove_bookmark": "보관한 게시물 삭제", @@ -618,7 +617,7 @@ "units.short.million": "{count}B", "units.short.thousand": "{count}K", "upload_area.title": "드래그 & 드롭으로 업로드", - "upload_button.label": "미디어 추가 (JPEG, PNG, GIF, WebM, MP4, MOV)", + "upload_button.label": "이미지, 영상, 오디오 파일 추가", "upload_error.limit": "파일 업로드 제한에 도달했습니다.", "upload_error.poll": "파일 업로드는 투표와 함께 첨부할 수 없습니다.", "upload_form.audio_description": "청각 장애인을 위한 설명", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index b74659820a..a2ace7deb9 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -2,10 +2,8 @@ "about.blocks": "Rajekarên çavdêrkirî", "about.contact": "Têkilî:", "about.disclaimer": "Mastodon belaş e, nermalaveke çavkaniya vekirî ye û markeyeke Mastodon gGmbHê ye.", - "about.domain_blocks.comment": "Sedem", - "about.domain_blocks.domain": "Navper", + "about.domain_blocks.no_reason_available": "Sedem ne berdest e", "about.domain_blocks.preamble": "Mastodon bi gelemperî dihêle ku tu naverokê bibînî û bi bikarhênerên ji rajekareke din a li fendiverse re têkilî dayne. Ev awaretyên ku li ser vê rajekara taybetî hatine çêkirin ev in.", - "about.domain_blocks.severity": "Asta girîngiyê", "about.domain_blocks.silenced.explanation": "Heye ku tu bi awayekî vekirî lê negerî an jî bi şopandinê hilnebijêrî, tu yêbi giştî profîl û naverok ji vê rajekarê nebînî.", "about.domain_blocks.silenced.title": "Sînorkirî", "about.domain_blocks.suspended.explanation": "Dê tu daneya ji van rajekaran neyê berhev kirin, tomarkirin an jî guhertin, ku têkilî an danûstendinek bi bikarhênerên van rajekaran re tune dike.", @@ -51,6 +49,7 @@ "account.mute": "@{name} bêdeng bike", "account.mute_notifications": "Agahdariyan ji @{name} bêdeng bike", "account.muted": "Bêdengkirî", + "account.open_original_page": "Rûpela resen veke", "account.posts": "Şandî", "account.posts_with_replies": "Şandî û bersiv", "account.report": "@{name} ragihîne", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Bi ajimêrekê li ser Mastodon, tu dikarî bersiva vê şandiyê bidî.", "interaction_modal.on_another_server": "Li ser rajekareke cuda", "interaction_modal.on_this_server": "Li ser ev rajekar", - "interaction_modal.other_server_instructions": "Tenê vê girêdanê jê bigire û pêve bike di darika lêgerînê ya sepana xwe ya bijarte an navrûya bikarhêneriyê tevnê ya ku tu tê de ye.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Ji ber ku Mastodon nenavendî ye, tu dikarî ajimêrê xwe ya heyî ku ji aliyê rajekarek din a Mastodon an platformek lihevhatî ve hatî pêşkêşkirin bi kar bînî ku ajimêrê te li ser vê yekê tune be.", "interaction_modal.title.favourite": "Şandiyê {name} bijarte bike", "interaction_modal.title.follow": "{name} bişopîne", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index be731c6d1f..d6b18ff623 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Tawhe @{name}", "account.mute_notifications": "Tawhe gwarnyansow a @{name}", "account.muted": "Tawhes", + "account.open_original_page": "Open original page", "account.posts": "Postow", "account.posts_with_replies": "Postow ha gorthebow", "account.report": "Reportya @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 14bb2cc33f..d9fb7eb9c2 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Užtildytas", + "account.open_original_page": "Open original page", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 64f1014598..89c3aee4e7 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -2,10 +2,8 @@ "about.blocks": "Moderētie serveri", "about.contact": "Kontakts:", "about.disclaimer": "Mastodon ir bezmaksas atvērtā pirmkoda programmatūra un Mastodon gGmbH preču zīme.", - "about.domain_blocks.comment": "Iemesls", - "about.domain_blocks.domain": "Domēns", + "about.domain_blocks.no_reason_available": "Iemesls nav pieejams", "about.domain_blocks.preamble": "Mastodon parasti ļauj apskatīt saturu un mijiedarboties ar lietotājiem no jebkura cita federācijas servera. Šie ir izņēmumi, kas veikti šajā konkrētajā serverī.", - "about.domain_blocks.severity": "Nozīmīgums", "about.domain_blocks.silenced.explanation": "Parasti tu neredzēsi profilus un saturu no šī servera, ja vien tu nepārprotami izvēlēsies to pārskatīt vai sekot.", "about.domain_blocks.silenced.title": "Ierobežotās", "about.domain_blocks.suspended.explanation": "Nekādi dati no šī servera netiks apstrādāti, uzglabāti vai apmainīti, padarot neiespējamu mijiedarbību vai saziņu ar lietotājiem no šī servera.", @@ -40,7 +38,7 @@ "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.follows_you": "Seko tev", "account.go_to_profile": "Dodieties uz profilu", - "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}", + "account.hide_reblogs": "Paslēpt pastiprinātos ierakstus no lietotāja @{name}", "account.joined_short": "Pievienojās", "account.languages": "Mainīt abonētās valodas", "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}", @@ -51,12 +49,13 @@ "account.mute": "Apklusināt @{name}", "account.mute_notifications": "Nerādīt paziņojumus no @{name}", "account.muted": "Noklusināts", + "account.open_original_page": "Atvērt oriģinālo lapu", "account.posts": "Ziņas", "account.posts_with_replies": "Ziņas un atbildes", "account.report": "Ziņot par lietotāju @{name}", "account.requested": "Gaidām apstiprinājumu. Nospied lai atceltu sekošanas pieparasījumu", "account.share": "Dalīties ar @{name} profilu", - "account.show_reblogs": "Parādīt @{name} paaugstinātās ziņas", + "account.show_reblogs": "Parādīt @{name} pastiprinātos ierakstus", "account.statuses_counter": "{count, plural, one {{counter} ziņa} other {{counter} ziņas}}", "account.unblock": "Atbloķēt lietotāju @{name}", "account.unblock_domain": "Atbloķēt domēnu {domain}", @@ -80,7 +79,7 @@ "attachments_list.unprocessed": "(neapstrādāti)", "audio.hide": "Slēpt audio", "autosuggest_hashtag.per_week": "{count} nedēļā", - "boost_modal.combo": "Nospied {combo} lai izlaistu šo nākamreiz", + "boost_modal.combo": "Nospied {combo}, lai nākamreiz šo izlaistu", "bundle_column_error.copy_stacktrace": "Kopēt kļūdu ziņojumu", "bundle_column_error.error.body": "Pieprasīto lapu nevarēja atveidot. Tas varētu būt saistīts ar kļūdu mūsu kodā vai pārlūkprogrammas saderības problēma.", "bundle_column_error.error.title": "Ak, nē!", @@ -91,7 +90,7 @@ "bundle_column_error.routing.body": "Pieprasīto lapu nevarēja atrast. Vai esi pārliecināts, ka URL adreses joslā ir pareizs?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Aizvērt", - "bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.", + "bundle_modal_error.message": "Kaut kas nogāja greizi, ielādējot šo komponenti.", "bundle_modal_error.retry": "Mēģini vēlreiz", "closed_registrations.other_server_instructions": "Tā kā Mastodon ir decentralizēts, tu vari izveidot kontu citā serverī un joprojām mijiedarboties ar šo.", "closed_registrations_modal.description": "Pašlaik nav iespējams izveidot kontu domēnā {domain}, taču, lūdzu, ņem vērā, ka, lai izmantotu Mastodon, tev nav nepieciešams konts tieši domēnā {domain}.", @@ -165,7 +164,7 @@ "confirmations.logout.message": "Vai tiešām vēlies izrakstīties?", "confirmations.mute.confirm": "Apklusināt", "confirmations.mute.explanation": "Šādi no viņiem tiks slēptas ziņas un ziņas, kurās viņi tiek pieminēti, taču viņi joprojām varēs redzēt tavas ziņas un sekot tev.", - "confirmations.mute.message": "Vai tiešām velies apklusināt {name}?", + "confirmations.mute.message": "Vai tiešām vēlies apklusināt {name}?", "confirmations.redraft.confirm": "Dzēst un pārrakstīt", "confirmations.redraft.message": "Vai tiešām vēlies dzēst un pārrakstīt šo ierakstu? Favorīti un paceltie ieraksti tiks dzēsti, kā arī atbildes tiks atsaistītas no šī ieraksta.", "confirmations.reply.confirm": "Atbildēt", @@ -283,28 +282,28 @@ "hashtag.follow": "Seko mirkļbirkai", "hashtag.unfollow": "Pārstāj sekot mirkļbirkai", "home.column_settings.basic": "Pamata", - "home.column_settings.show_reblogs": "Rādīt palielinājumus", + "home.column_settings.show_reblogs": "Rādīt pastiprinātos ierakstus", "home.column_settings.show_replies": "Rādīt atbildes", "home.hide_announcements": "Slēpt paziņojumus", "home.show_announcements": "Rādīt paziņojumus", "interaction_modal.description.favourite": "Izmantojot kontu pakalpojumā Mastodon, vari pievienot šo ziņu izlasei, lai informētu autoru, ka to novērtē un saglabā vēlākai lasīšanai.", "interaction_modal.description.follow": "Izmantojot Mastodon kontu, tu vari sekot lietotājam {name}, lai saņemtu viņa ziņas savā mājas plūsmā.", - "interaction_modal.description.reblog": "Izmantojot kontu Mastodon, vari atbalstīt šo ziņu, lai kopīgotu to ar saviem sekotājiem.", + "interaction_modal.description.reblog": "Izmantojot Mastodon kontu, tu vari pastiprināt šo ierakstu, lai kopīgotu to ar saviem sekotājiem.", "interaction_modal.description.reply": "Izmantojot kontu Mastodon, tu vari atbildēt uz šo ziņu.", "interaction_modal.on_another_server": "Citā serverī", "interaction_modal.on_this_server": "Šajā serverī", - "interaction_modal.other_server_instructions": "Vienkārši nokopē un ielīmē šo URL savas iecienītākās lietotnes meklēšanas joslā vai tīmekļa saskarnē, kurā esi pierakstījies.", + "interaction_modal.other_server_instructions": "Nokopē un ielīmē šo URL savas Mastodon lietotnes vai Mastodon tīmekļa vietnes meklēšanas laukā.", "interaction_modal.preamble": "Tā kā Mastodon ir decentralizēts, tu vari izmantot savu esošo kontu, ko mitina cits Mastodon serveris vai saderīga platforma, ja tev nav konta šajā serverī.", "interaction_modal.title.favourite": "Pievienot {name} ziņu izlasei", "interaction_modal.title.follow": "Sekot {name}", - "interaction_modal.title.reblog": "Atbalstīt {name} ziņu", + "interaction_modal.title.reblog": "Pastiprināt {name} ierakstu", "interaction_modal.title.reply": "Atbildēt uz {name} ziņu", "intervals.full.days": "{number, plural, one {# diena} other {# dienas}}", "intervals.full.hours": "{number, plural, one {# stunda} other {# stundas}}", "intervals.full.minutes": "{number, plural, one {# minūte} other {# minūtes}}", "keyboard_shortcuts.back": "Pāriet atpakaļ", "keyboard_shortcuts.blocked": "Atvērt bloķēto lietotāju sarakstu", - "keyboard_shortcuts.boost": "Atbalstīt ziņu", + "keyboard_shortcuts.boost": "Pastiprināt ierakstu", "keyboard_shortcuts.column": "Fokusēt kolonnu", "keyboard_shortcuts.compose": "Fokusēt veidojamā teksta lauku", "keyboard_shortcuts.description": "Apraksts", @@ -397,7 +396,7 @@ "notification.mention": "{name} pieminēja tevi", "notification.own_poll": "Tava aptauja ir pabeigta", "notification.poll": "Aprauja, kurā tu piedalījies, ir pabeigta", - "notification.reblog": "{name} paaugstināja tavu ziņu", + "notification.reblog": "{name} pastiprināja tavu ierakstu", "notification.status": "{name} tikko publicēja", "notification.update": "{name} ir rediģējis rakstu", "notifications.clear": "Notīrīt paziņojumus", @@ -414,7 +413,7 @@ "notifications.column_settings.mention": "Pieminējumi:", "notifications.column_settings.poll": "Aptaujas rezultāti:", "notifications.column_settings.push": "Uznirstošie paziņojumi", - "notifications.column_settings.reblog": "Palielinājumi:", + "notifications.column_settings.reblog": "Pastiprinātie ieraksti:", "notifications.column_settings.show": "Rādīt kolonnā", "notifications.column_settings.sound": "Atskaņot skaņu", "notifications.column_settings.status": "Jaunas ziņas:", @@ -422,7 +421,7 @@ "notifications.column_settings.unread_notifications.highlight": "Iezīmēt nelasītos paziņojumus", "notifications.column_settings.update": "Labojumi:", "notifications.filter.all": "Visi", - "notifications.filter.boosts": "Palielinājumi", + "notifications.filter.boosts": "Pastiprinātie ieraksti", "notifications.filter.favourites": "Izlases", "notifications.filter.follows": "Seko", "notifications.filter.mentions": "Pieminējumi", @@ -518,7 +517,7 @@ "search.placeholder": "Meklēšana", "search.search_or_paste": "Meklēt vai iekopēt URL", "search_popout.search_format": "Paplašināts meklēšanas formāts", - "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, iecienījis, paaugstinājis vai pieminējis, kā arī atbilstošie lietotājvārdi, parādāmie vārdi un tēmturi.", + "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, atzīmējis kā favorītus, pastiprinājis vai pieminējis, kā arī atbilstošie lietotājvārdi, parādāmie vārdi un tēmturi.", "search_popout.tips.hashtag": "mirkļbirka", "search_popout.tips.status": "ziņa", "search_popout.tips.text": "Vienkāršs teksts atgriež atbilstošus parādāmos vārdus, lietotājvārdus un mirkļbirkas", @@ -544,8 +543,8 @@ "status.admin_status": "Atvērt šo ziņu moderācijas saskarnē", "status.block": "Bloķēt @{name}", "status.bookmark": "Grāmatzīme", - "status.cancel_reblog_private": "Nepaaugstināt", - "status.cannot_reblog": "Nevar paaugstināt ziņu", + "status.cancel_reblog_private": "Nepastiprināt", + "status.cannot_reblog": "Nevar pastiprināt šo ierakstu", "status.copy": "Kopēt saiti uz ziņu", "status.delete": "Dzēst", "status.detailed_status": "Detalizēts sarunas skats", @@ -570,10 +569,10 @@ "status.pin": "Piespraust profilam", "status.pinned": "Piespraustā ziņa", "status.read_more": "Lasīt vairāk", - "status.reblog": "Paaugstināt", - "status.reblog_private": "Paaugstināt ar sākotnējo izskatu", - "status.reblogged_by": "{name} paaugstināts", - "status.reblogs.empty": "Neviens šo ziņojumu vel nav paaugstinājis. Kad būs, tie parādīsies šeit.", + "status.reblog": "Pastiprināt", + "status.reblog_private": "Pastiprināt, nemainot redzamību", + "status.reblogged_by": "{name} pastiprināja", + "status.reblogs.empty": "Neviens šo ierakstu vēl nav pastiprinājis. Kad būs, tie parādīsies šeit.", "status.redraft": "Dzēst un pārrakstīt", "status.remove_bookmark": "Noņemt grāmatzīmi", "status.replied_to": "Atbildēja {name}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 4c58706337..0d965819e1 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -2,10 +2,8 @@ "about.blocks": "Модерирани сервери", "about.contact": "Контакт:", "about.disclaimer": "Mastodon е бесплатен, open-source софтвер, и заштитен знак на Mastodon gGmbH.", - "about.domain_blocks.comment": "Причина", - "about.domain_blocks.domain": "Домен", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon вообичаено ви дозволува да прегледувате содржини и комуницирате со корисниците од било кој сервер во федиверзумот. На овој сервер има исклучоци.", - "about.domain_blocks.severity": "Сериозност", "about.domain_blocks.silenced.explanation": "Вообичаено нема да гледате профили и содржина од овој сервер, освен ако не го пребарате намерно, или го заследите.", "about.domain_blocks.silenced.title": "Ограничено", "about.domain_blocks.suspended.explanation": "Податоците од овој сервер нема да бидат процесирани, зачувани или сменети и било која интеракција или комуникација со корисниците од овој сервер ќе биде невозможна.", @@ -51,6 +49,7 @@ "account.mute": "Зачути го @{name}", "account.mute_notifications": "Исклучи известувања од @{name}", "account.muted": "Зачутено", + "account.open_original_page": "Open original page", "account.posts": "Тутови", "account.posts_with_replies": "Тутови и реплики", "account.report": "Пријави @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index e93b4e00b1..0517ce02a0 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "@{name}-നെ(യെ) നിശ്ശബ്ദമാക്കൂ", "account.mute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ നിശബ്ദമാക്കുക", "account.muted": "നിശ്ശബ്ദമാക്കിയിരിക്കുന്നു", + "account.open_original_page": "Open original page", "account.posts": "പോസ്റ്റുകൾ", "account.posts_with_replies": "പോസ്റ്റുകളും മറുപടികളും", "account.report": "റിപ്പോർട്ട് ചെയ്യുക @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index b2ed1fa375..63cb293e13 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "@{name} ला मूक कारा", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index a0a9c2de43..7d25ac6084 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Bisukan @{name}", "account.mute_notifications": "Bisukan pemberitahuan daripada @{name}", "account.muted": "Dibisukan", + "account.open_original_page": "Open original page", "account.posts": "Hantaran", "account.posts_with_replies": "Hantaran dan balasan", "account.report": "Laporkan @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index 9f1c20fb85..7757f061fd 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "ပို့စ်များ", "account.posts_with_replies": "Posts and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 9d874fd864..e82321eae3 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -2,10 +2,8 @@ "about.blocks": "Gemodereerde servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is vrije, opensourcesoftware en een handelsmerk van Mastodon gGmbH.", - "about.domain_blocks.comment": "Reden", - "about.domain_blocks.domain": "Domein", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "In het algemeen kun je met Mastodon berichten ontvangen van, en interactie hebben met gebruikers van elke server in de fediverse. Dit zijn de uitzonderingen die op deze specifieke server gelden.", - "about.domain_blocks.severity": "Zwaarte", "about.domain_blocks.silenced.explanation": "In het algemeen zie je geen berichten en accounts van deze server, tenzij je berichten expliciet opzoekt of ervoor kiest om een account van deze server te volgen.", "about.domain_blocks.silenced.title": "Beperkt", "about.domain_blocks.suspended.explanation": "Er worden geen gegevens van deze server verwerkt, opgeslagen of uitgewisseld, wat interactie of communicatie met gebruikers van deze server onmogelijk maakt.", @@ -51,6 +49,7 @@ "account.mute": "@{name} negeren", "account.mute_notifications": "Meldingen van @{name} negeren", "account.muted": "Genegeerd", + "account.open_original_page": "Open original page", "account.posts": "Berichten", "account.posts_with_replies": "Berichten en reacties", "account.report": "@{name} rapporteren", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Je kunt met een Mastodon-account op dit bericht reageren.", "interaction_modal.on_another_server": "Op een andere server", "interaction_modal.on_this_server": "Op deze server", - "interaction_modal.other_server_instructions": "Kopieer en plak deze URL in het zoekveld van de door jou gebruikte app of in het zoekveld van de website van de server waarop je bent ingelogd.", + "interaction_modal.other_server_instructions": "Kopieer en plak eenvoudig deze URL in het zoekveld van de door jou gebruikte Mastodon-app of op de website van de Mastodon-server waarop je bent ingelogd.", "interaction_modal.preamble": "Mastodon is gedecentraliseerd. Daarom heb je geen account op deze Mastodon-server nodig, wanneer je al een account op een andere Mastodon-server of compatibel platform hebt.", "interaction_modal.title.favourite": "Bericht van {name} als favoriet markeren", "interaction_modal.title.follow": "{name} volgen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1704568b76..83e0ec9c36 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -2,10 +2,8 @@ "about.blocks": "Modererte tenarar", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon er gratis programvare med open kjeldekode, og eit varemerke frå Mastodon gGmbH.", - "about.domain_blocks.comment": "Årsak", - "about.domain_blocks.domain": "Domene", + "about.domain_blocks.no_reason_available": "Årsaka er ikkje tilgjengeleg", "about.domain_blocks.preamble": "Mastodon gjev deg som regel lov til å sjå innhald og samhandla med brukarar frå alle andre tenarar i allheimen. Dette er unntaka som er valde for akkurat denne tenaren.", - "about.domain_blocks.severity": "Alvorsgrad", "about.domain_blocks.silenced.explanation": "Med mindre du leiter den opp eller fylgjer profiler på tenaren, vil du vanlegvis ikkje sjå profilar og innhald frå denne tenaren.", "about.domain_blocks.silenced.title": "Avgrensa", "about.domain_blocks.suspended.explanation": "Ingen data frå denne tenaren vert handsama, lagra eller sende til andre, noko som gjer det umogeleg å samhandla eller kommunisera med brukarar på denne tenaren.", @@ -51,6 +49,7 @@ "account.mute": "Målbind @{name}", "account.mute_notifications": "Målbind varsel frå @{name}", "account.muted": "Målbunden", + "account.open_original_page": "Opne originalsida", "account.posts": "Tut", "account.posts_with_replies": "Tut og svar", "account.report": "Rapporter @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Med ein konto på Mastodon kan du svara på dette innlegget.", "interaction_modal.on_another_server": "På ein annan tenar", "interaction_modal.on_this_server": "På denne tenaren", - "interaction_modal.other_server_instructions": "Berre kopier og lim inn denne URL-en i søkefeltet til din favorittapp eller i søkefeltet på den nettsida der du er logga inn.", + "interaction_modal.other_server_instructions": "Kopier og lim inn denne URLen i søkefeltet til din favoritt Mastodon-app eller web-grensesnittet i din Mastodon server.", "interaction_modal.preamble": "Sidan Mastodon er desentralisert, kan du bruke ein konto frå ein annan Mastodontenar eller frå ei anna kompatibel plattform dersom du ikkje har konto på denne tenaren.", "interaction_modal.title.favourite": "Favorittmarker innlegget til {name}", "interaction_modal.title.follow": "Fylg {name}", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 4736519af6..ff8be31ee4 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -1,11 +1,9 @@ { - "about.blocks": "Moderated servers", + "about.blocks": "Modererte tjenere", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon er gratis, åpen kildekode-programvare og et varemerke fra Mastodon gGmbH.", - "about.domain_blocks.comment": "Årsak", - "about.domain_blocks.domain": "Domene", + "about.domain_blocks.no_reason_available": "Årsak ikke oppgitt", "about.domain_blocks.preamble": "Mastodon lar deg normalt sett se innholdet fra og samhandle med brukere fra enhver annen server i fødiverset. Dette er unntakene som har blitt lagt inn på denne serveren.", - "about.domain_blocks.severity": "Alvorlighetsgrad", "about.domain_blocks.silenced.explanation": "Du vil vanligvis ikke se profiler og innhold fra denne serveren, med mindre du eksplisitt søker dem opp eller velger å følge dem.", "about.domain_blocks.silenced.title": "Begrenset", "about.domain_blocks.suspended.explanation": "Ikke noe innhold fra denne serveren vil bli behandlet, lagret eller utvekslet. Det gjør det umulig å samhandle eller kommunisere med brukere fra denne serveren.", @@ -51,6 +49,7 @@ "account.mute": "Demp @{name}", "account.mute_notifications": "Demp varsler fra @{name}", "account.muted": "Dempet", + "account.open_original_page": "Gå til originalsiden", "account.posts": "Innlegg", "account.posts_with_replies": "Innlegg med svar", "account.report": "Rapportér @{name}", @@ -67,8 +66,8 @@ "account.unmute_notifications": "Vis varsler fra @{name}", "account.unmute_short": "Opphev demping", "account_note.placeholder": "Klikk for å legge til et notat", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Andel brukere som er aktive per dag etter registrering", + "admin.dashboard.monthly_retention": "Andel brukere som er aktive per måned etter registrering", "admin.dashboard.retention.average": "Gjennomsnitt", "admin.dashboard.retention.cohort": "Registreringsmåned", "admin.dashboard.retention.cohort_size": "Nye brukere", @@ -183,13 +182,13 @@ "directory.new_arrivals": "Nye ankomster", "directory.recently_active": "Nylig aktiv", "disabled_account_banner.account_settings": "Kontoinnstillinger", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert.", "dismissable_banner.community_timeline": "Dette er de nyeste offentlige innleggene fra personer med kontoer på {domain}.", "dismissable_banner.dismiss": "Avvis", "dismissable_banner.explore_links": "Disse nyhetene snakker folk om akkurat nå på denne og andre servere i det desentraliserte nettverket.", "dismissable_banner.explore_statuses": "Disse innleggene fra denne og andre servere i det desentraliserte nettverket får økt oppmerksomhet på denne serveren akkurat nå.", "dismissable_banner.explore_tags": "Disse emneknaggene snakker folk om akkurat nå, på denne og andre servere i det desentraliserte nettverket.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "dismissable_banner.public_timeline": "Dette er de nyeste offentlige innleggene fra personer på denne og andre servere i det desentraliserte nettverket som denne serveren kjenner til.", "embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.", "embed.preview": "Slik kommer det til å se ut:", "emoji_button.activity": "Aktivitet", @@ -215,7 +214,7 @@ "empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!", "empty_column.direct": "Du har ingen direktemeldinger enda. Etter du har sendt eller mottatt en, så vil den dukke opp her.", "empty_column.domain_blocks": "Det er ingen skjulte domener enda.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Ingenting er populært akkurat nå. Prøv igjen senere!", "empty_column.favourited_statuses": "Du har ikke likt noen innlegg enda. Når du liker et, vil det dukke opp her.", "empty_column.favourites": "Ingen har likt dette innlegget ennå. Når noen gjør det, vil de dukke opp her.", "empty_column.follow_recommendations": "Ser ut som at det ikke finnes noen forslag for deg. Du kan prøve å bruke søk for å se etter folk du kan vite eller utforske trendende hashtags.", @@ -246,7 +245,7 @@ "filter_modal.added.expired_title": "Utløpt filter!", "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.", "filter_modal.added.review_and_configure_title": "Filterinnstillinger", - "filter_modal.added.settings_link": "settings page", + "filter_modal.added.settings_link": "innstillinger-siden", "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.", "filter_modal.added.title": "Filter lagt til!", "filter_modal.select_filter.context_mismatch": "does not apply to this context", @@ -267,7 +266,7 @@ "footer.get_app": "Last ned appen", "footer.invite": "Invitér folk", "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", + "footer.privacy_policy": "Personvernregler", "footer.source_code": "Vis kildekode", "generic.saved": "Lagret", "getting_started.heading": "Kom i gang", @@ -290,12 +289,12 @@ "interaction_modal.description.favourite": "Med en konto på Mastodon, kan du \"like\" dette innlegget for å la forfatteren vite at du likte det samt lagre innlegget til senere.", "interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i hjem-feeden din.", "interaction_modal.description.reblog": "Med en konto på Mastodon, kan du fremheve dette innlegget for å dele det med dine egne følgere.", - "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.reply": "Med en konto på Mastodon, kan du svare på dette innlegget.", "interaction_modal.on_another_server": "På en annen server", "interaction_modal.on_this_server": "På denne serveren", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", - "interaction_modal.title.favourite": "Favourite {name}'s post", + "interaction_modal.other_server_instructions": "Kopier og lim inn denne URLen i søkefeltet til din favoritt Mastodon-app eller web-grensesnittet i din Mastodon server.", + "interaction_modal.preamble": "Siden Mastodon er desentralisert, kan du bruke din eksisterende konto på en annen Mastodon-tjener eller en kompatibel plattform hvis du ikke har en konto her.", + "interaction_modal.title.favourite": "Favorittmarker innlegget til {name}", "interaction_modal.title.follow": "Følg {name}", "interaction_modal.title.reblog": "Fremhev {name} sitt innlegg", "interaction_modal.title.reply": "Svar på {name} sitt innlegg", @@ -365,7 +364,7 @@ "mute_modal.duration": "Varighet", "mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?", "mute_modal.indefinite": "På ubestemt tid", - "navigation_bar.about": "About", + "navigation_bar.about": "Om", "navigation_bar.blocks": "Blokkerte brukere", "navigation_bar.bookmarks": "Bokmerker", "navigation_bar.community_timeline": "Lokal tidslinje", @@ -390,7 +389,7 @@ "navigation_bar.security": "Sikkerhet", "not_signed_in_indicator.not_signed_in": "Du må logge inn for å få tilgang til denne ressursen.", "notification.admin.report": "{name} rapporterte {target}", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} registrerte seg", "notification.favourite": "{name} likte din status", "notification.follow": "{name} fulgte deg", "notification.follow_request": "{name} har bedt om å få følge deg", @@ -403,12 +402,12 @@ "notifications.clear": "Fjern varsler", "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?", "notifications.column_settings.admin.report": "Nye rapporter:", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nye registreringer:", "notifications.column_settings.alert": "Skrivebordsvarslinger", "notifications.column_settings.favourite": "Likt:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategorier", "notifications.column_settings.filter_bar.category": "Hurtigfiltreringslinje", - "notifications.column_settings.filter_bar.show_bar": "Show filter bar", + "notifications.column_settings.filter_bar.show_bar": "Vis filterlinjen", "notifications.column_settings.follow": "Nye følgere:", "notifications.column_settings.follow_request": "Nye følgerforespørsler:", "notifications.column_settings.mention": "Nevnt:", @@ -454,10 +453,10 @@ "privacy.private.short": "Kun følgere", "privacy.public.long": "Synlig for alle", "privacy.public.short": "Offentlig", - "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", + "privacy.unlisted.long": "Synlig for alle, men vises ikke i oppdagsfunksjoner", "privacy.unlisted.short": "Uoppført", "privacy_policy.last_updated": "Sist oppdatert {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.title": "Personvernregler", "refresh": "Oppfrisk", "regeneration_indicator.label": "Laster…", "regeneration_indicator.sublabel": "Dine startside forberedes!", @@ -479,7 +478,7 @@ "report.categories.spam": "Søppelpost", "report.categories.violation": "Innholdet bryter en eller flere serverregler", "report.category.subtitle": "Velg det som passer best", - "report.category.title": "Tell us what's going on with this {type}", + "report.category.title": "Fortell oss hva som skjer med denne {type}", "report.category.title_account": "profil", "report.category.title_status": "innlegg", "report.close": "Utført", @@ -493,7 +492,7 @@ "report.reasons.dislike": "Jeg liker det ikke", "report.reasons.dislike_description": "Det er ikke noe du har lyst til å se", "report.reasons.other": "Det er noe annet", - "report.reasons.other_description": "The issue does not fit into other categories", + "report.reasons.other_description": "Problemet passer ikke inn i de andre kategoriene", "report.reasons.spam": "Det er spam", "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "Det bryter serverregler", @@ -516,7 +515,7 @@ "report_notification.categories.violation": "Regelbrudd", "report_notification.open": "Open report", "search.placeholder": "Søk", - "search.search_or_paste": "Search or paste URL", + "search.search_or_paste": "Søk eller lim inn URL", "search_popout.search_format": "Avansert søkeformat", "search_popout.tips.full_text": "Enkel tekst gir resultater for statuser du har skrevet, likt, fremhevet, eller har blitt nevnt i, i tillegg til samsvarende brukernavn, visningsnavn og emneknagger.", "search_popout.tips.hashtag": "emneknagg", @@ -582,14 +581,14 @@ "status.report": "Rapporter @{name}", "status.sensitive_warning": "Følsomt innhold", "status.share": "Del", - "status.show_filter_reason": "Show anyway", + "status.show_filter_reason": "Vis likevel", "status.show_less": "Vis mindre", "status.show_less_all": "Vis mindre for alle", "status.show_more": "Vis mer", "status.show_more_all": "Vis mer for alle", - "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.show_original": "Vis original", + "status.translate": "Oversett", + "status.translated_from_with": "Oversatt fra {lang} ved å bruke {provider}", "status.uncached_media_warning": "Ikke tilgjengelig", "status.unmute_conversation": "Ikke demp samtale", "status.unpin": "Angre festing på profilen", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index a34bef1ea0..8d86745413 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -2,16 +2,14 @@ "about.blocks": "Servidors moderats", "about.contact": "Contacte :", "about.disclaimer": "Mastodon es gratuit, un logicial libre e una marca de Mastodon gGmbH.", - "about.domain_blocks.comment": "Rason", - "about.domain_blocks.domain": "Domeni", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severitat", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limitats", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", "about.domain_blocks.suspended.title": "Suspenduts", - "about.not_available": "This information has not been made available on this server.", - "about.powered_by": "Decentralized social media powered by {mastodon}", + "about.not_available": "Aquesta informacion foguèt pas renduda disponibla sus aqueste servidor.", + "about.powered_by": "Malhum social descentralizat propulsat per {mastodon}", "about.rules": "Règlas del servidor", "account.account_note_header": "Nòta", "account.add_or_remove_from_list": "Ajustar o tirar de las listas", @@ -21,7 +19,7 @@ "account.block_domain": "Tot amagar del domeni {domain}", "account.blocked": "Blocat", "account.browse_more_on_origin_server": "Navigar sul perfil original", - "account.cancel_follow_request": "Withdraw follow request", + "account.cancel_follow_request": "Retirar la demanda d’abonament", "account.direct": "Escriure un MP a @{name}", "account.disable_notifications": "Quitar de m’avisar quand @{name} publica quicòm", "account.domain_blocked": "Domeni amagat", @@ -51,6 +49,7 @@ "account.mute": "Rescondre @{name}", "account.mute_notifications": "Rescondre las notificacions de @{name}", "account.muted": "Mes en silenci", + "account.open_original_page": "Open original page", "account.posts": "Tuts", "account.posts_with_replies": "Tuts e responsas", "account.report": "Senhalar @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "Sus un autre servidor", "interaction_modal.on_this_server": "Sus aqueste servidor", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Metre en favorit la publicacion de {name}", "interaction_modal.title.follow": "Sègre {name}", @@ -476,7 +475,7 @@ "report.block": "Blocar", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Autre", - "report.categories.spam": "Spam", + "report.categories.spam": "Messatge indesirable", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Causissètz çò que correspond mai", "report.category.title": "Tell us what's going on with this {type}", @@ -493,10 +492,10 @@ "report.reasons.dislike": "M’agrada pas", "report.reasons.dislike_description": "Es pas quicòm que volriatz veire", "report.reasons.other": "Es quicòm mai", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", - "report.reasons.violation": "It violates server rules", + "report.reasons.other_description": "Lo problèma es pas dins cap d’autra categoria", + "report.reasons.spam": "Es un messatge indesirable", + "report.reasons.spam_description": "Ligams enganaires, fals engatjament o responsas repetitivas", + "report.reasons.violation": "Viòla las règlas del servidor", "report.reasons.violation_description": "You are aware that it breaks specific rules", "report.rules.subtitle": "Select all that apply", "report.rules.title": "Which rules are being violated?", @@ -534,12 +533,12 @@ "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "utilizaires actius", "server_banner.administered_by": "Administrat per :", - "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", + "server_banner.introduction": "{domain} fa part del malhum social descentralizat propulsat per {mastodon}.", "server_banner.learn_more": "Ne saber mai", "server_banner.server_stats": "Estatisticas del servidor :", "sign_in_banner.create_account": "Crear un compte", "sign_in_banner.sign_in": "Se marcar", - "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", + "sign_in_banner.text": "Connectatz-vos per sègre perfils o etiquetas, apondre als favorits, partejar e respondre als messatges o interagir de vòstre compte estant d’un autre servidor.", "status.admin_account": "Dobrir l’interfàcia de moderacion per @{name}", "status.admin_status": "Dobrir aqueste estatut dins l’interfàcia de moderacion", "status.block": "Blocar @{name}", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index d90153a95f..a8585c042d 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 307d4c7c01..9cef980e65 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -2,10 +2,8 @@ "about.blocks": "Serwery moderowane", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon jest darmowym, otwartym oprogramowaniem i znakiem towarowym Mastodon gGmbH.", - "about.domain_blocks.comment": "Powód", - "about.domain_blocks.domain": "Domena", + "about.domain_blocks.no_reason_available": "Powód niedostępny", "about.domain_blocks.preamble": "Domyślnie Mastodon pozwala ci przeglądać i reagować na treści od innych użytkowników z jakiegokolwiek serwera w fediwersum. Poniżej znajduje się lista wyjątków, które zostały stworzone na tym konkretnym serwerze.", - "about.domain_blocks.severity": "Priorytet", "about.domain_blocks.silenced.explanation": "Zazwyczaj nie zobaczysz profili i treści z tego serwera, chyba że wyraźnie go poszukasz lub zdecydujesz się go obserwować.", "about.domain_blocks.silenced.title": "Ograniczone", "about.domain_blocks.suspended.explanation": "Żadne dane z tego serwera nie będą przetwarzane, przechowywane lub wymieniane, co uniemożliwia jakąkolwiek interakcję lub komunikację z użytkownikami z tego serwera.", @@ -51,6 +49,7 @@ "account.mute": "Wycisz @{name}", "account.mute_notifications": "Wycisz powiadomienia o @{name}", "account.muted": "Wyciszony", + "account.open_original_page": "Otwórz stronę oryginalną", "account.posts": "Wpisy", "account.posts_with_replies": "Wpisy i odpowiedzi", "account.report": "Zgłoś @{name}", @@ -293,9 +292,9 @@ "interaction_modal.description.reply": "Mając konto na Mastodonie, możesz odpowiedzieć na ten wpis.", "interaction_modal.on_another_server": "Na innym serwerze", "interaction_modal.on_this_server": "Na tym serwerze", - "interaction_modal.other_server_instructions": "Wystarczy skopiować i wkleić ten adres URL do swojej ulubionej aplikacji lub przegąldarki www gdzie jesteś zalogowany/a.", + "interaction_modal.other_server_instructions": "Skopiuj i wklej ten adres URL do pola wyszukiwania w swojej ulubionej aplikacji Mastodon lub interfejsu internetowego swojego serwera Mastodon.", "interaction_modal.preamble": "Ponieważ Mastodon jest zdecentralizowany, możesz użyć swojego istniejącego konta z innego serwera Mastodona lub innej kompatybilnej usługi, jeśli nie masz konta na tym serwerze.", - "interaction_modal.title.favourite": "Ulubiony wpis {name}", + "interaction_modal.title.favourite": "Polub wpis użytkownika {name}", "interaction_modal.title.follow": "Śledź {name}", "interaction_modal.title.reblog": "Podbij wpis {name}", "interaction_modal.title.reply": "Odpowiedz na post {name}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 65ca4f5117..ab241a4221 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -2,10 +2,8 @@ "about.blocks": "Servidores moderados", "about.contact": "Contato:", "about.disclaimer": "Mastodon é um software de código aberto e livre, e uma marca registrada de Mastodon gGmbH.", - "about.domain_blocks.comment": "Motivo", - "about.domain_blocks.domain": "Domínio", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "O Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outro servidor no fediverso. Estas são as exceções deste servidor em específico.", - "about.domain_blocks.severity": "Gravidade", "about.domain_blocks.silenced.explanation": "Você geralmente não verá perfis e conteúdo deste servidor, a menos que você o procure explicitamente ou opte por seguir.", "about.domain_blocks.silenced.title": "Limitado", "about.domain_blocks.suspended.explanation": "Nenhum dado desse servidor será processado, armazenado ou trocado, impossibilitando qualquer interação ou comunicação com os usuários deste servidor.", @@ -51,6 +49,7 @@ "account.mute": "Silenciar @{name}", "account.mute_notifications": "Ocultar notificações de @{name}", "account.muted": "Silenciado", + "account.open_original_page": "Abrir a página original", "account.posts": "Toots", "account.posts_with_replies": "Com respostas", "account.report": "Denunciar @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Com uma conta no Mastodon, você pode responder a esta publicação.", "interaction_modal.on_another_server": "Em um servidor diferente", "interaction_modal.on_this_server": "Neste servidor", - "interaction_modal.other_server_instructions": "Simplesmente copie e cole este URL na barra de pesquisa do seu aplicativo favorito ou na interface web onde você está autenticado.", + "interaction_modal.other_server_instructions": "Copie e cole esta URL no campo de pesquisa do seu aplicativo Mastodon favorito ou a interface web do seu servidor Mastodon.", "interaction_modal.preamble": "Como o Mastodon é descentralizado, você pode usar sua conta existente em outro servidor Mastodon ou plataforma compatível se você não tiver uma conta neste servidor.", "interaction_modal.title.favourite": "Favoritar publicação de {name}", "interaction_modal.title.follow": "Seguir {name}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 02a0ceca98..828efe9f94 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -2,10 +2,8 @@ "about.blocks": "Servidores moderados", "about.contact": "Contacto:", "about.disclaimer": "Mastodon é um software livre, de código aberto e uma marca registada do Mastodon gGmbH.", - "about.domain_blocks.comment": "Motivo", - "about.domain_blocks.domain": "Domínio", + "about.domain_blocks.no_reason_available": "Motivo não disponível", "about.domain_blocks.preamble": "Mastodon geralmente permite que veja e interaja com o conteúdo de utilizadores de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.", - "about.domain_blocks.severity": "Severidade", "about.domain_blocks.silenced.explanation": "Geralmente não verá perfis e conteúdo deste servidor, a menos que os procure explicitamente ou opte por os seguir.", "about.domain_blocks.silenced.title": "Limitados", "about.domain_blocks.suspended.explanation": "Nenhum dado dessas instâncias será processado, armazenado ou trocado, tornando qualquer interação ou comunicação com os utilizadores dessas instâncias impossível.", @@ -51,6 +49,7 @@ "account.mute": "Silenciar @{name}", "account.mute_notifications": "Silenciar notificações de @{name}", "account.muted": "Silenciada", + "account.open_original_page": "Abrir a página original", "account.posts": "Toots", "account.posts_with_replies": "Publicações e respostas", "account.report": "Denunciar @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Com uma conta no Mastodon, pode responder a esta publicação.", "interaction_modal.on_another_server": "Num servidor diferente", "interaction_modal.on_this_server": "Neste servidor", - "interaction_modal.other_server_instructions": "Basta copiar e colar este URL na barra de pesquisa do seu aplicativo favorito ou na interface web onde está conectado.", + "interaction_modal.other_server_instructions": "Copie e cole este URL no campo de pesquisa do seu aplicativo Mastodon favorito ou da interface web do seu servidor Mastodon.", "interaction_modal.preamble": "Uma vez que o Mastodon é descentralizado, pode utilizar a sua conta existente, hospedada em outro servidor Mastodon ou plataforma compatível, se não tiver uma conta neste servidor.", "interaction_modal.title.favourite": "Adicionar a publicação de {name} aos favoritos", "interaction_modal.title.follow": "Seguir {name}", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 7808a45931..2f76585f87 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -1,11 +1,9 @@ { "about.blocks": "Servere moderate", "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Motiv", - "about.domain_blocks.domain": "Domeniu", + "about.disclaimer": "Mastodon este o aplicație gratuită, open-source și o marcă înregistrată a Mastodon gGmbH.", + "about.domain_blocks.no_reason_available": "Motivul nu este disponibil", "about.domain_blocks.preamble": "Mastodon îți permite în general să vezi conținut de la și să interacționezi cu utilizatori de pe oricare server în fediverse. Acestea sunt excepțiile care au fost făcute pe acest server.", - "about.domain_blocks.severity": "Severitate", "about.domain_blocks.silenced.explanation": "În general, nu vei vedea profiluri și conținut de pe acest server, cu excepția cazului în care îl cauți în mod explicit sau optezi pentru el prin urmărire.", "about.domain_blocks.silenced.title": "Limitat", "about.domain_blocks.suspended.explanation": "Nici o informație de la acest server nu va fi procesată, stocată sau schimbată, făcând imposibilă orice interacțiune sau comunicare cu utilizatorii de pe acest server.", @@ -39,7 +37,7 @@ "account.following_counter": "{count, plural, one {{counter} Abonament} few {{counter} Abonamente} other {{counter} Abonamente}}", "account.follows.empty": "Momentan acest utilizator nu are niciun abonament.", "account.follows_you": "Este abonat la tine", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Mergi la profil", "account.hide_reblogs": "Ascunde distribuirile de la @{name}", "account.joined_short": "Înscris", "account.languages": "Schimbă limbile abonate", @@ -47,10 +45,11 @@ "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.", "account.media": "Media", "account.mention": "Menționează pe @{name}", - "account.moved_to": "{name} has indicated that their new account is now:", + "account.moved_to": "{name} a indicat că noul său cont este acum:", "account.mute": "Ignoră pe @{name}", "account.mute_notifications": "Ignoră notificările de la @{name}", "account.muted": "Ignorat", + "account.open_original_page": "Deschide pagina originală", "account.posts": "Postări", "account.posts_with_replies": "Postări și răspunsuri", "account.report": "Raportează pe @{name}", @@ -65,10 +64,10 @@ "account.unfollow": "Nu mai urmări", "account.unmute": "Nu mai ignora pe @{name}", "account.unmute_notifications": "Activează notificările de la @{name}", - "account.unmute_short": "Unmute", + "account.unmute_short": "Reafișare", "account_note.placeholder": "Click to add a note", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Rata de retenţie a utilizatorului pe zi după înregistrare", + "admin.dashboard.monthly_retention": "Rata de retenţie a utilizatorului după luna de înscriere", "admin.dashboard.retention.average": "În medie", "admin.dashboard.retention.cohort": "Înregistrări lunar", "admin.dashboard.retention.cohort_size": "Utilizatori noi", @@ -78,31 +77,31 @@ "alert.unexpected.title": "Ups!", "announcement.announcement": "Anunț", "attachments_list.unprocessed": "(neprocesate)", - "audio.hide": "Hide audio", + "audio.hide": "Ascunde audio", "autosuggest_hashtag.per_week": "{count} pe săptămână", "boost_modal.combo": "Poți apăsa {combo} pentru a sări peste asta data viitoare", - "bundle_column_error.copy_stacktrace": "Copy error report", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", - "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.copy_stacktrace": "Copiază raportul de eroare", + "bundle_column_error.error.body": "Pagina solicitată nu a putut fi randată. Ar putea fi cauzată de o eroare în codul nostru sau de o problemă de compatibilitate cu browser-ul.", + "bundle_column_error.error.title": "Vai Nu!", + "bundle_column_error.network.body": "A apărut o eroare la încărcarea acestei pagini. Acest lucru se poate datora unei probleme temporare cu conexiunea la internet sau cu acest server.", + "bundle_column_error.network.title": "Eroare de rețea", "bundle_column_error.retry": "Încearcă din nou", - "bundle_column_error.return": "Go back home", - "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", + "bundle_column_error.return": "Înapoi acasă", + "bundle_column_error.routing.body": "Pagina solicitată nu a putut fi găsită. Ești sigur că adresa URL din bara de adrese este corectă?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Închide", "bundle_modal_error.message": "A apărut o eroare la încărcarea acestui element.", "bundle_modal_error.retry": "Încearcă din nou", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations.other_server_instructions": "Deoarece Mastodon este descentralizat, poți crea un cont pe un alt server și încă poți interacționa cu acesta.", + "closed_registrations_modal.description": "Crearea unui cont pe {domain} nu este posibilă momentan, dar aveți în vedere că nu aveți nevoie de un cont specific pe {domain} pentru a utiliza Mastodon.", + "closed_registrations_modal.find_another_server": "Caută un alt server", + "closed_registrations_modal.preamble": "Mastodon este descentralizat, deci indiferent unde îți creezi contul, vei putea urmări și interacționa cu oricine de pe acest server. Poți chiar să te găzduiești de unul singur!", + "closed_registrations_modal.title": "Înscrie-te pe Mastodon", + "column.about": "Despre", "column.blocks": "Utilizatori blocați", "column.bookmarks": "Marcaje", "column.community": "Cronologie locală", - "column.direct": "Direct messages", + "column.direct": "Mesaje directe", "column.directory": "Explorează profiluri", "column.domain_blocks": "Domenii blocate", "column.favourites": "Favorite", @@ -124,10 +123,10 @@ "community.column_settings.local_only": "Doar local", "community.column_settings.media_only": "Doar media", "community.column_settings.remote_only": "Doar la distanţă", - "compose.language.change": "Change language", - "compose.language.search": "Search languages...", + "compose.language.change": "Schimbare limbă", + "compose.language.search": "Căutare limbi…", "compose_form.direct_message_warning_learn_more": "Află mai multe", - "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", + "compose_form.encryption_warning": "Postările pe Mastodon nu sunt criptate în ambele părți. Nu împărtășiți nici o informație sensibilă pe Mastodon.", "compose_form.hashtag_warning": "Această postare nu va fi listată sub niciun hashtag deoarece este nelistată. Doar postările publice pot fi căutate cu un hashtag.", "compose_form.lock_disclaimer": "Contul tău nu este {locked}. Oricine se poate abona la tine pentru a îți vedea postările numai pentru abonați.", "compose_form.lock_disclaimer.lock": "privat", @@ -138,9 +137,9 @@ "compose_form.poll.remove_option": "Elimină acestă opțiune", "compose_form.poll.switch_to_multiple": "Modifică sondajul pentru a permite mai multe opțiuni", "compose_form.poll.switch_to_single": "Modifică sondajul pentru a permite o singură opțiune", - "compose_form.publish": "Publish", + "compose_form.publish": "Publică", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Salvează modificările", "compose_form.sensitive.hide": "{count, plural, one {Marchează conținutul media ca fiind sensibil} few {Marchează conținuturile media ca fiind sensibile} other {Marchează conținuturile media ca fiind sensibile}}", "compose_form.sensitive.marked": "{count, plural, one {Conținutul media este marcat ca fiind sensibil} other {Conținuturile media sunt marcate ca fiind sensibile}}", "compose_form.sensitive.unmarked": "{count, plural, one {Conținutul media nu este marcat ca fiind sensibil} other {Conținuturile media nu sunt marcate ca fiind sensibile}}", @@ -151,8 +150,8 @@ "confirmations.block.block_and_report": "Blochează și raportează", "confirmations.block.confirm": "Blochează", "confirmations.block.message": "Ești sigur că vrei să blochezi pe {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Retrage cererea", + "confirmations.cancel_follow_request.message": "Sunteți sigur că doriți să retrageți cererea dvs. de urmărire pentru {name}?", "confirmations.delete.confirm": "Elimină", "confirmations.delete.message": "Ești sigur că vrei să elimini această postare?", "confirmations.delete_list.confirm": "Elimină", @@ -176,24 +175,24 @@ "conversation.mark_as_read": "Marchează ca citit", "conversation.open": "Vizualizează conversația", "conversation.with": "Cu {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Copiat", + "copypaste.copy": "Copiere", "directory.federated": "Din fediversul cunoscut", "directory.local": "Doar din {domain}", "directory.new_arrivals": "Înscriși recent", "directory.recently_active": "Activi recent", - "disabled_account_banner.account_settings": "Account settings", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", - "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", + "disabled_account_banner.account_settings": "Setări cont", + "disabled_account_banner.text": "Contul tău {disabledAccount} este momentan dezactivat.", + "dismissable_banner.community_timeline": "Acestea sunt cele mai recente postări publice de la persoane ale căror conturi sunt găzduite de {domain}.", + "dismissable_banner.dismiss": "Renunțare", + "dismissable_banner.explore_links": "În acest moment, oamenii vorbesc despre aceste știri, pe acesta dar și pe alte servere ale rețelei descentralizate.", + "dismissable_banner.explore_statuses": "Aceste postări de pe acesta dar și alte servere din rețeaua descentralizată câștigă teren pe acest server chiar acum.", + "dismissable_banner.explore_tags": "Aceste hashtag-uri câștigă teren în rândul oamenilor de pe acesta și pe alte servere ale rețelei descentralizate chiar acum.", + "dismissable_banner.public_timeline": "Acestea sunt cele mai recente postări publice de la utilizatorii acestui server sau ai altor servere ale rețelei descentralizate cunoscute de acest server.", "embed.instructions": "Integrează această postare în site-ul tău copiind codul de mai jos.", "embed.preview": "Iată cum va arăta:", "emoji_button.activity": "Activități", - "emoji_button.clear": "Clear", + "emoji_button.clear": "Ștergeți", "emoji_button.custom": "Personalizați", "emoji_button.flags": "Steaguri", "emoji_button.food": "Alimente și băuturi", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index fb341a979e..db5c67b207 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -2,10 +2,8 @@ "about.blocks": "Модерируемые серверы", "about.contact": "Контакты:", "about.disclaimer": "Mastodon — бесплатное программным обеспечением с открытым исходным кодом и торговой маркой Mastodon gGmbH.", - "about.domain_blocks.comment": "Причина", - "about.domain_blocks.domain": "Домен", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon обычно позволяет просматривать содержимое и взаимодействовать с другими пользователями любых серверов в Федиверсе. Вот исключения, сделанные конкретно для этого сервера.", - "about.domain_blocks.severity": "Ключ:.\"о. Домен_блокирует. Серьезность\"\n-> о компании. Домен _блокирует. строгость", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Игнорировать @{name}", "account.mute_notifications": "Игнорировать уведомления от @{name}", "account.muted": "Игнорируется", + "account.open_original_page": "Open original page", "account.posts": "Посты", "account.posts_with_replies": "Посты и ответы", "account.report": "Пожаловаться на @{name}", @@ -95,10 +94,10 @@ "bundle_modal_error.retry": "Попробовать снова", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations_modal.find_another_server": "Найдите другой сервер", + "closed_registrations_modal.preamble": "Mastodon децентрализован, поэтому независимо от того, где вы создадите свою учетную запись, вы сможете следить и взаимодействовать с кем угодно на этом сервере. Вы даже можете разместить его самостоятельно!", + "closed_registrations_modal.title": "Регистрация в Mastodon", + "column.about": "О проекте", "column.blocks": "Заблокированные пользователи", "column.bookmarks": "Закладки", "column.community": "Локальная лента", @@ -151,8 +150,8 @@ "confirmations.block.block_and_report": "Заблокировать и пожаловаться", "confirmations.block.confirm": "Заблокировать", "confirmations.block.message": "Вы уверены, что хотите заблокировать {name}?", - "confirmations.cancel_follow_request.confirm": "Withdraw request", - "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?", + "confirmations.cancel_follow_request.confirm": "Отменить запрос", + "confirmations.cancel_follow_request.message": "Вы уверены, что хотите отозвать свой запрос на подписку {name}?", "confirmations.delete.confirm": "Удалить", "confirmations.delete.message": "Вы уверены, что хотите удалить этот пост?", "confirmations.delete_list.confirm": "Удалить", @@ -185,9 +184,9 @@ "disabled_account_banner.account_settings": "Настройки учётной записи", "disabled_account_banner.text": "Ваша учётная запись {disabledAccount} в настоящее время отключена.", "dismissable_banner.community_timeline": "Это самые последние публичные сообщения от людей, чьи учетные записи размещены в {domain}.", - "dismissable_banner.dismiss": "Dismiss", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.dismiss": "Закрыть", + "dismissable_banner.explore_links": "Об этих новостях прямо сейчас говорят люди на этом и других серверах децентрализованной сети.", + "dismissable_banner.explore_statuses": "Эти сообщения с этого и других серверов в децентрализованной сети, сейчас набирают популярность на этом сервере.", "dismissable_banner.explore_tags": "Эти хэштеги привлекают людей на этом и других серверах децентрализованной сети прямо сейчас.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "На другом сервере", "interaction_modal.on_this_server": "На этом сервере", - "interaction_modal.other_server_instructions": "Просто скопируйте и вставьте этот URL в строку поиска вашего любимого приложения или веб-интерфейса там, где вы вошли.", + "interaction_modal.other_server_instructions": "Скопируйте и вставьте этот URL в поле поиска вашего любимого приложения Mastodon или веб-интерфейс вашего сервера Mastodon.", "interaction_modal.preamble": "Поскольку Mastodon децентрализован, вы можете использовать существующую учётную запись, размещенную на другом сервере Mastodon или совместимой платформе, если у вас нет учётной записи на этом сервере.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Подписаться на {name}", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index d81dd7cdd1..01ed9e336e 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "निःशब्दम् @{name}", "account.mute_notifications": "@{name} सूचनाः निष्क्रियन्ताम्", "account.muted": "निःशब्दम्", + "account.open_original_page": "Open original page", "account.posts": "दौत्यानि", "account.posts_with_replies": "दौत्यानि प्रत्युत्तराणि च", "account.report": "आविद्यताम् @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 36b6158cd2..ea927e364a 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Pone a @{name} a sa muda", "account.mute_notifications": "Disativa is notìficas de @{name}", "account.muted": "A sa muda", + "account.open_original_page": "Open original page", "account.posts": "Publicatziones", "account.posts_with_replies": "Publicatziones e rispostas", "account.report": "Signala @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index f775226244..1c13c76cde 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "@{name} නිහඬ කරන්න", "account.mute_notifications": "@{name}වෙතින් දැනුම්දීම් නිහඬ කරන්න", "account.muted": "නිහඬ කළා", + "account.open_original_page": "Open original page", "account.posts": "ලිපි", "account.posts_with_replies": "ටූට්ස් සහ පිළිතුරු", "account.report": "@{name} වාර්තා කරන්න", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index f874b75221..bbc1aa0c3c 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Nevšímaj si @{name}", "account.mute_notifications": "Stĺm oboznámenia od @{name}", "account.muted": "Nevšímaný/á", + "account.open_original_page": "Open original page", "account.posts": "Príspevky/ov", "account.posts_with_replies": "Príspevky, aj s odpoveďami", "account.report": "Nahlás @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 76c5798202..a450225a5b 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -2,10 +2,8 @@ "about.blocks": "Moderirani strežniki", "about.contact": "Stik:", "about.disclaimer": "Mastodon je prosto, odprto-kodno programje in blagovna znamka Mastodon gGmbH.", - "about.domain_blocks.comment": "Razlog", - "about.domain_blocks.domain": "Domena", + "about.domain_blocks.no_reason_available": "Razlog ni na voljo", "about.domain_blocks.preamble": "Mastodon vam splošno omogoča ogled vsebin in interakcijo z uporabniki iz vseh drugih strežnikov v fediverzumu. To so izjeme, opravljene na tem strežniku.", - "about.domain_blocks.severity": "Resnost", "about.domain_blocks.silenced.explanation": "V splošnem ne boste videli profilov in vsebin s tega strežnika, če jih eksplicino ne poiščete ali nanje naročite s sledenjem.", "about.domain_blocks.silenced.title": "Omejeno", "about.domain_blocks.suspended.explanation": "Nobeni podatki s tega strežnika ne bodo obdelani, shranjeni ali izmenjani, zaradi česar je nemogoča kakršna koli interakcija ali komunikacija z uporabniki s tega strežnika.", @@ -34,7 +32,7 @@ "account.follow": "Sledi", "account.followers": "Sledilci", "account.followers.empty": "Nihče ne sledi temu uporabniku.", - "account.followers_counter": "{count, plural, one {ima {count} sledilca} two {ima {count} sledilca} few {ima {count} sledilcev} other {ima {count} sledilce}}", + "account.followers_counter": "{count, plural, one {ima {counter} sledilca} two {ima {counter} sledilca} few {ima {counter} sledilce} other {ima {counter} sledilcev}}", "account.following": "Sledim", "account.following_counter": "{count, plural, one {sledi {count} osebi} two {sledi {count} osebama} few {sledi {count} osebam} other {sledi {count} osebam}}", "account.follows.empty": "Ta uporabnik še ne sledi nikomur.", @@ -51,13 +49,14 @@ "account.mute": "Utišaj @{name}", "account.mute_notifications": "Utišaj obvestila od @{name}", "account.muted": "Utišan", + "account.open_original_page": "Odpri izvirno stran", "account.posts": "Objave", "account.posts_with_replies": "Objave in odgovori", "account.report": "Prijavi @{name}", "account.requested": "Čakanje na odobritev. Kliknite, da prekličete prošnjo za sledenje", "account.share": "Deli profil osebe @{name}", "account.show_reblogs": "Pokaži izpostavitve osebe @{name}", - "account.statuses_counter": "{count, plural, one {{counter} tut} two {{counter} tuta} few {{counter} tuti} other {{counter} tutov}}", + "account.statuses_counter": "{count, plural, one {{count} tut} two {{count} tuta} few {{count} tuti} other {{count} tutov}}", "account.unblock": "Odblokiraj @{name}", "account.unblock_domain": "Odblokiraj domeno {domain}", "account.unblock_short": "Odblokiraj", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Z računom na Mastodonu lahko odgovorite na to objavo.", "interaction_modal.on_another_server": "Na drugem strežniku", "interaction_modal.on_this_server": "Na tem strežniku", - "interaction_modal.other_server_instructions": "Enostavno kopirajte in prilepite ta URL v iskalno vrstico svoje priljubljene aplikacije ali spletni vmesnik, kjer ste prijavljeni.", + "interaction_modal.other_server_instructions": "Kopirajte in prilepite ta URL v polje iskanja vašega priljubljenega programa Mastodon ali spletnega vmesnika vašega strežnika Mastodon.", "interaction_modal.preamble": "Ker je Mastodon decentraliziran, lahko uporabite svoj obstoječi račun, ki gostuje na drugem strežniku Mastodon ali združljivi platformi, če nimate računa na tej.", "interaction_modal.title.favourite": "Daj objavo {name} med priljubljene", "interaction_modal.title.follow": "Sledi {name}", @@ -450,7 +449,7 @@ "privacy.change": "Spremeni zasebnost objave", "privacy.direct.long": "Objavi samo omenjenim uporabnikom", "privacy.direct.short": "Samo omenjeni", - "privacy.private.long": "Objavi samo sledilcem", + "privacy.private.long": "Vidno samo sledilcem", "privacy.private.short": "Samo sledilci", "privacy.public.long": "Vidno vsem", "privacy.public.short": "Javno", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index f53d140bca..cdcca16975 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -2,10 +2,8 @@ "about.blocks": "Shërbyes të moderuar", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon-i është software i lirë, me burim të hapët dhe shenjë tregtare e Mastodon gGmbH.", - "about.domain_blocks.comment": "Arsye", - "about.domain_blocks.domain": "Përkatësi", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon-i ju lë përgjithësisht të shihni lëndë prej përdoruesish dhe të ndërveproni me ta nga cilido shërbyes tjetër qofshin në fedivers. Ka përjashtime që janë bërë në këtë shërbyes të dhënë.", - "about.domain_blocks.severity": "Rëndësi", "about.domain_blocks.silenced.explanation": "Përgjithësisht s’do të shihni profile dhe lëndë nga ky shërbyes, veç në i kërkofshi shprehimisht apo zgjidhni të bëhet kjo, duke i ndjekur.", "about.domain_blocks.silenced.title": "E kufizuar", "about.domain_blocks.suspended.explanation": "S’do të përpunohen, depozitohen apo shkëmbehen të dhëna të këtij shërbyesi, duke e bërë të pamundur çfarëdo ndërveprimi apo komunikimi me përdorues nga ky shërbyes.", @@ -51,6 +49,7 @@ "account.mute": "Heshtoni @{name}", "account.mute_notifications": "Heshtoji njoftimet prej @{name}", "account.muted": "Heshtuar", + "account.open_original_page": "Open original page", "account.posts": "Mesazhe", "account.posts_with_replies": "Mesazhe dhe përgjigje", "account.report": "Raportojeni @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Me një llogari në Mastodon, mund t’i përgjigjeni këtij postimi.", "interaction_modal.on_another_server": "Në një tjetër shërbyes", "interaction_modal.on_this_server": "Në këtë shërbyes", - "interaction_modal.other_server_instructions": "Thjesht kopjojeni dhe ngjiteni këtë URL te shtylla e kërkimeve të aplikacionit tuaj apo ndërfaqes tuaj web të parapëlqyer, kur të jeni i futur në llogari.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Ngaqë Mastodon-i është i decentralizuar, mund të përdorni llogarinë tuaj ekzistuese të sterhuar nga një tjetër shërbyes Mastodon, ose platformë e përputhshme, nëse s’keni një llogari në këtë shërbyes.", "interaction_modal.title.favourite": "Parapëlqejeni postimin e {name}", "interaction_modal.title.follow": "Ndiq {name}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 4aa2c86e3e..aae597974a 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Ućutkaj korisnika @{name}", "account.mute_notifications": "Isključi obaveštenja od korisnika @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Statusa", "account.posts_with_replies": "Toots with replies", "account.report": "Prijavi @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 7e669bd184..d35f9bb02e 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Ућуткај корисника @{name}", "account.mute_notifications": "Искључи обавештења од корисника @{name}", "account.muted": "Ућуткан", + "account.open_original_page": "Open original page", "account.posts": "Трубе", "account.posts_with_replies": "Трубе и одговори", "account.report": "Пријави @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index fbd34dfaf3..dd4fa8683b 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -2,10 +2,8 @@ "about.blocks": "Modererade servrar", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon är fri programvara med öppen källkod och ett varumärke tillhörande Mastodon gGmbH.", - "about.domain_blocks.comment": "Anledning", - "about.domain_blocks.domain": "Domän", + "about.domain_blocks.no_reason_available": "Okänd orsak", "about.domain_blocks.preamble": "Som regel låter Mastodon dig interagera med användare från andra servrar i fediversumet och se deras innehåll. Detta är de undantag som gjorts på just denna servern.", - "about.domain_blocks.severity": "Allvarlighetsgrad", "about.domain_blocks.silenced.explanation": "Såvida du inte uttryckligen söker upp dem eller samtycker till att se dem genom att följa dem kommer du i allmänhet inte se profiler från den här servern, eller deras innehåll.", "about.domain_blocks.silenced.title": "Begränsat", "about.domain_blocks.suspended.explanation": "Inga data från denna server kommer behandlas, lagras eller bytas ut, vilket omöjliggör kommunikation med användare på denna server.", @@ -40,23 +38,24 @@ "account.follows.empty": "Denna användare följer inte någon än.", "account.follows_you": "Följer dig", "account.go_to_profile": "Gå till profilen", - "account.hide_reblogs": "Dölj puffar från @{name}", + "account.hide_reblogs": "Dölj boostar från @{name}", "account.joined_short": "Gick med", "account.languages": "Ändra prenumererade språk", "account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}", - "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.", + "account.locked_info": "För detta konto har ägaren valt att manuellt godkänna vem som kan följa dem.", "account.media": "Media", "account.mention": "Nämn @{name}", "account.moved_to": "{name} har indikerat att hen har ett nytt konto:", "account.mute": "Tysta @{name}", "account.mute_notifications": "Stäng av notifieringar från @{name}", "account.muted": "Tystad", + "account.open_original_page": "Öppna den ursprungliga sidan", "account.posts": "Inlägg", "account.posts_with_replies": "Inlägg och svar", "account.report": "Rapportera @{name}", - "account.requested": "Inväntar godkännande. Klicka för att avbryta följarförfrågan", + "account.requested": "Inväntar godkännande. Klicka för att avbryta följdförfrågan", "account.share": "Dela @{name}s profil", - "account.show_reblogs": "Visa boostningar av @{name}", + "account.show_reblogs": "Visa boostar från @{name}", "account.statuses_counter": "{count, plural, one {{counter} Inlägg} other {{counter} Inlägg}}", "account.unblock": "Avblockera @{name}", "account.unblock_domain": "Sluta dölja {domain}", @@ -77,21 +76,21 @@ "alert.unexpected.message": "Ett oväntat fel uppstod.", "alert.unexpected.title": "Hoppsan!", "announcement.announcement": "Meddelande", - "attachments_list.unprocessed": "(obearbetad)", + "attachments_list.unprocessed": "(obehandlad)", "audio.hide": "Dölj audio", "autosuggest_hashtag.per_week": "{count} per vecka", "boost_modal.combo": "Du kan trycka på {combo} för att hoppa över detta nästa gång", "bundle_column_error.copy_stacktrace": "Kopiera felrapport", "bundle_column_error.error.body": "Den begärda sidan kunde inte visas. Det kan bero på ett fel i vår kod eller ett problem med webbläsarens kompatibilitet.", "bundle_column_error.error.title": "Åh nej!", - "bundle_column_error.network.body": "Det uppstod ett fel när denna sida skulle visas. Detta kan bero på ett tillfälligt problem med din internetanslutning eller denna server.", + "bundle_column_error.network.body": "Det uppstod ett fel när denna sida skulle visas. Detta kan bero på ett tillfälligt problem med din internetanslutning eller med servern.", "bundle_column_error.network.title": "Nätverksfel", "bundle_column_error.retry": "Försök igen", "bundle_column_error.return": "Tillbaka till startsidan", - "bundle_column_error.routing.body": "Den begärda sidan kunde inte hittas. Är du säker på att URL:en i adressfältet är korrekt?", + "bundle_column_error.routing.body": "Den begärda sidan kunde inte hittas. Är du säker på att adressen angivits korrekt?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Stäng", - "bundle_modal_error.message": "Något gick fel när denna komponent laddades.", + "bundle_modal_error.message": "Något gick fel när komponenten skulle läsas in.", "bundle_modal_error.retry": "Försök igen", "closed_registrations.other_server_instructions": "Eftersom Mastodon är decentraliserat kan du skapa ett konto på en annan server och fortfarande interagera med denna.", "closed_registrations_modal.description": "Det är för närvarande inte möjligt att skapa ett konto på {domain} men kom ihåg att du inte behöver ett konto specifikt på {domain} för att använda Mastodon.", @@ -167,7 +166,7 @@ "confirmations.mute.explanation": "Detta kommer dölja inlägg från dem och inlägg som nämner dem, men de tillåts fortfarande se dina inlägg och följa dig.", "confirmations.mute.message": "Är du säker på att du vill tysta {name}?", "confirmations.redraft.confirm": "Radera & gör om", - "confirmations.redraft.message": "Är du säker på att du vill radera detta inlägg och göra om det? Favoritmarkeringar, boostningar och svar till det ursprungliga inlägget kommer förlora sitt sammanhang.", + "confirmations.redraft.message": "Är du säker på att du vill radera detta inlägg och göra om det? Favoritmarkeringar, boostar och svar till det ursprungliga inlägget kommer förlora sitt sammanhang.", "confirmations.reply.confirm": "Svara", "confirmations.reply.message": "Om du svarar nu kommer det att ersätta meddelandet du håller på att skapa. Är du säker på att du vill fortsätta?", "confirmations.unfollow.confirm": "Avfölj", @@ -283,7 +282,7 @@ "hashtag.follow": "Följ hashtagg", "hashtag.unfollow": "Avfölj hashtagg", "home.column_settings.basic": "Grundläggande", - "home.column_settings.show_reblogs": "Visa boostningar", + "home.column_settings.show_reblogs": "Visa boostar", "home.column_settings.show_replies": "Visa svar", "home.hide_announcements": "Dölj notiser", "home.show_announcements": "Visa notiser", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Med ett Mastodon-konto kan du svara på detta inlägg.", "interaction_modal.on_another_server": "På en annan server", "interaction_modal.on_this_server": "På denna server", - "interaction_modal.other_server_instructions": "Kopiera och klistra in denna webbadress i din favoritapps sökfält eller i webbgränssnittet där du är inloggad.", + "interaction_modal.other_server_instructions": "Kopiera och klistra in denna URL i sökfältet i din favorit-Mastodon-app eller webbgränssnittet på din Mastodon-server.", "interaction_modal.preamble": "Eftersom Mastodon är decentraliserat kan du använda ditt befintliga konto från en annan Mastodonserver, eller annan kompatibel plattform, om du inte har ett konto på denna.", "interaction_modal.title.favourite": "Favoritmarkera {name}s inlägg", "interaction_modal.title.follow": "Följ {name}", @@ -414,7 +413,7 @@ "notifications.column_settings.mention": "Omnämningar:", "notifications.column_settings.poll": "Omröstningsresultat:", "notifications.column_settings.push": "Push-aviseringar", - "notifications.column_settings.reblog": "Boostningar:", + "notifications.column_settings.reblog": "Boostar:", "notifications.column_settings.show": "Visa i kolumnen", "notifications.column_settings.sound": "Spela upp ljud", "notifications.column_settings.status": "Nya inlägg:", @@ -422,7 +421,7 @@ "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", "notifications.column_settings.update": "Redigeringar:", "notifications.filter.all": "Alla", - "notifications.filter.boosts": "Boostningar", + "notifications.filter.boosts": "Boostar", "notifications.filter.favourites": "Favoriter", "notifications.filter.follows": "Följer", "notifications.filter.mentions": "Omnämningar", @@ -544,7 +543,7 @@ "status.admin_status": "Öppna detta inlägg i modereringsgränssnittet", "status.block": "Blockera @{name}", "status.bookmark": "Bokmärk", - "status.cancel_reblog_private": "Avboosta", + "status.cancel_reblog_private": "Sluta boosta", "status.cannot_reblog": "Detta inlägg kan inte boostas", "status.copy": "Kopiera inläggslänk", "status.delete": "Radera", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index d90153a95f..a8585c042d 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index c01242e76c..a69becb950 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -1,11 +1,9 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", - "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", + "about.blocks": "நடுநிலையான சேவையகங்கள்", + "about.contact": "தொடர்பு:", + "about.disclaimer": "மாஸ்டோடன் இலவச, திறந்த மூல மென்பொருள் மற்றும் மாஸ்டோடன் gGmbH இன் வர்த்தக முத்திரை.", + "about.domain_blocks.no_reason_available": "காரணம் கிடைக்கவில்லை", + "about.domain_blocks.preamble": "மாஸ்டோடன் பொதுவாக நீங்கள் ஃபெடிவர்ஸில் உள்ள வேறு எந்தச் சர்வரிலிருந்தும் உள்ளடக்கத்தைப் பார்க்கவும், பயனர்களுடன் தொடர்பு கொள்ளவும் அனுமதிக்கிறது. இந்தக் குறிப்பிட்ட சர்வரில் செய்யப்பட்ட விதிவிலக்குகள் இவை.", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "ஊமையான @{name}", "account.mute_notifications": "அறிவிப்புகளை முடக்கு @{name}", "account.muted": "முடக்கியது", + "account.open_original_page": "Open original page", "account.posts": "டூட்டுகள்", "account.posts_with_replies": "Toots மற்றும் பதில்கள்", "account.report": "@{name} -ஐப் புகாரளி", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index a1f4a2732e..a3ae8a0510 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 669a4eb0cc..1d99fc4dff 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "@{name}ను మ్యూట్ చెయ్యి", "account.mute_notifications": "@{name}నుంచి ప్రకటనలను మ్యూట్ చెయ్యి", "account.muted": "మ్యూట్ అయినవి", + "account.open_original_page": "Open original page", "account.posts": "టూట్లు", "account.posts_with_replies": "టూట్లు మరియు ప్రత్యుత్తరములు", "account.report": "@{name}పై ఫిర్యాదుచేయు", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 0440900788..77279ba01a 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -2,10 +2,8 @@ "about.blocks": "เซิร์ฟเวอร์ที่มีการควบคุม", "about.contact": "ติดต่อ:", "about.disclaimer": "Mastodon เป็นซอฟต์แวร์เสรี โอเพนซอร์ส และเครื่องหมายการค้าของ Mastodon gGmbH", - "about.domain_blocks.comment": "เหตุผล", - "about.domain_blocks.domain": "โดเมน", + "about.domain_blocks.no_reason_available": "เหตุผลไม่พร้อมใช้งาน", "about.domain_blocks.preamble": "โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ", - "about.domain_blocks.severity": "ความรุนแรง", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "จำกัดอยู่", "about.domain_blocks.suspended.explanation": "จะไม่ประมวลผล จัดเก็บ หรือแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์นี้ ทำให้การโต้ตอบหรือการสื่อสารใด ๆ กับผู้ใช้จากเซิร์ฟเวอร์นี้เป็นไปไม่ได้", @@ -51,6 +49,7 @@ "account.mute": "ซ่อน @{name}", "account.mute_notifications": "ซ่อนการแจ้งเตือนจาก @{name}", "account.muted": "ซ่อนอยู่", + "account.open_original_page": "เปิดหน้าดั้งเดิม", "account.posts": "โพสต์", "account.posts_with_replies": "โพสต์และการตอบกลับ", "account.report": "รายงาน @{name}", @@ -82,9 +81,9 @@ "autosuggest_hashtag.per_week": "{count} ต่อสัปดาห์", "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", "bundle_column_error.copy_stacktrace": "คัดลอกรายงานข้อผิดพลาด", - "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", + "bundle_column_error.error.body": "ไม่สามารถแสดงผลหน้าที่ขอ ข้อผิดพลาดอาจเป็นเพราะข้อบกพร่องในโค้ดของเรา หรือปัญหาความเข้ากันได้ของเบราว์เซอร์", "bundle_column_error.error.title": "โอ้ ไม่!", - "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", + "bundle_column_error.network.body": "มีข้อผิดพลาดขณะพยายามโหลดหน้านี้ นี่อาจเป็นเพราะปัญหาชั่วคราวกับการเชื่อมต่ออินเทอร์เน็ตของคุณหรือเซิร์ฟเวอร์นี้", "bundle_column_error.network.title": "ข้อผิดพลาดเครือข่าย", "bundle_column_error.retry": "ลองอีกครั้ง", "bundle_column_error.return": "กลับไปที่หน้าแรก", @@ -93,7 +92,7 @@ "bundle_modal_error.close": "ปิด", "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", "bundle_modal_error.retry": "ลองอีกครั้ง", - "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", + "closed_registrations.other_server_instructions": "เนื่องจาก Mastodon เป็นแบบกระจายศูนย์ คุณสามารถสร้างบัญชีในเซิร์ฟเวอร์อื่นและยังคงโต้ตอบกับเซิร์ฟเวอร์นี้", "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "ค้นหาเซิร์ฟเวอร์อื่น", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", @@ -183,7 +182,7 @@ "directory.new_arrivals": "มาใหม่", "directory.recently_active": "ใช้งานล่าสุด", "disabled_account_banner.account_settings": "การตั้งค่าบัญชี", - "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", + "disabled_account_banner.text": "มีการปิดใช้งานบัญชีของคุณ {disabledAccount} ในปัจจุบัน", "dismissable_banner.community_timeline": "นี่คือโพสต์สาธารณะล่าสุดจากผู้คนที่บัญชีได้รับการโฮสต์โดย {domain}", "dismissable_banner.dismiss": "ปิด", "dismissable_banner.explore_links": "เรื่องข่าวเหล่านี้กำลังได้รับการพูดถึงโดยผู้คนในเซิร์ฟเวอร์นี้และอื่น ๆ ของเครือข่ายแบบกระจายศูนย์ในตอนนี้", @@ -293,8 +292,8 @@ "interaction_modal.description.reply": "เมื่อมีบัญชีใน Mastodon คุณสามารถตอบกลับโพสต์นี้", "interaction_modal.on_another_server": "ในเซิร์ฟเวอร์อื่น", "interaction_modal.on_this_server": "ในเซิร์ฟเวอร์นี้", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", - "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", + "interaction_modal.other_server_instructions": "คัดลอกแล้ววาง URL นี้ลงในช่องค้นหาของแอป Mastodon โปรดของคุณหรือส่วนติดต่อเว็บของเซิร์ฟเวอร์ Mastodon ของคุณ", + "interaction_modal.preamble": "เนื่องจาก Mastodon เป็นแบบกระจายศูนย์ คุณสามารถใช้บัญชีที่มีอยู่ของคุณที่ได้รับการโฮสต์โดยเซิร์ฟเวอร์ Mastodon อื่นหรือแพลตฟอร์มที่เข้ากันได้หากคุณไม่มีบัญชีในเซิร์ฟเวอร์นี้", "interaction_modal.title.favourite": "ชื่นชอบโพสต์ของ {name}", "interaction_modal.title.follow": "ติดตาม {name}", "interaction_modal.title.reblog": "ดันโพสต์ของ {name}", @@ -361,7 +360,7 @@ "media_gallery.toggle_visible": "{number, plural, other {ซ่อนภาพ}}", "missing_indicator.label": "ไม่พบ", "missing_indicator.sublabel": "ไม่พบทรัพยากรนี้", - "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", + "moved_to_account_banner.text": "มีการปิดใช้งานบัญชีของคุณ {disabledAccount} ในปัจจุบันเนื่องจากคุณได้ย้ายไปยัง {movedToAccount}", "mute_modal.duration": "ระยะเวลา", "mute_modal.hide_notifications": "ซ่อนการแจ้งเตือนจากผู้ใช้นี้?", "mute_modal.indefinite": "ไม่มีกำหนด", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index e3df3cd826..1ed5e58726 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -2,10 +2,8 @@ "about.blocks": "Denetlenen sunucular", "about.contact": "İletişim:", "about.disclaimer": "Mastodon özgür, açık kaynak bir yazılımdır ve Mastodon gGmbH şirketinin ticari markasıdır.", - "about.domain_blocks.comment": "Gerekçe", - "about.domain_blocks.domain": "Alan adı", + "about.domain_blocks.no_reason_available": "Grerekçe mevcut değil", "about.domain_blocks.preamble": "Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır.", - "about.domain_blocks.severity": "Önem derecesi", "about.domain_blocks.silenced.explanation": "Açık bir şekilde aramadığınız veya takip ederek abone olmadığınız sürece, bu sunucudaki profilleri veya içerikleri genelde göremeyeceksiniz.", "about.domain_blocks.silenced.title": "Sınırlı", "about.domain_blocks.suspended.explanation": "Bu sunucudaki hiçbir veri işlenmeyecek, saklanmayacak veya değiş tokuş edilmeyecektir, dolayısıyla bu sunucudaki kullanıcılarla herhangi bir etkileşim veya iletişim imkansız olacaktır.", @@ -51,6 +49,7 @@ "account.mute": "@{name}'i sustur", "account.mute_notifications": "@{name}'in bildirimlerini sustur", "account.muted": "Susturuldu", + "account.open_original_page": "Asıl sayfayı aç", "account.posts": "Gönderiler", "account.posts_with_replies": "Gönderiler ve yanıtlar", "account.report": "@{name}'i şikayet et", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Mastodon'daki bir hesapla, bu gönderiye yanıt verebilirsiniz.", "interaction_modal.on_another_server": "Farklı bir sunucuda", "interaction_modal.on_this_server": "Bu sunucuda", - "interaction_modal.other_server_instructions": "Basitçe bu URL'yi kopyalayın ve beğendiğiniz uygulamanın veya giriş yapmış olduğunuz bir web arayüzünün arama çubuğuna yapıştırın.", + "interaction_modal.other_server_instructions": "Bu URL'yi kopyalayın ve Mastodon sunucunuzun web arayüzündeki veya gözde Mastodon uygulamanızdaki arama sahasına yapıştırın.", "interaction_modal.preamble": "Mastodon ademi merkeziyetçi olduğu için, bu sunucuda bir hesabınız yoksa bile başka bir Mastodon sunucusu veya uyumlu bir platformda barındırılan mevcut hesabınızı kullanabilirsiniz.", "interaction_modal.title.favourite": "{name} kişisinin gönderisini favorilerine ekle", "interaction_modal.title.follow": "{name} kişisini takip et", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 18e95f4a01..fc36699c7a 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index d90153a95f..a8585c042d 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "Mute @{name}", "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", + "account.open_original_page": "Open original page", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index c5cdcb2f58..3273dae14f 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -2,10 +2,8 @@ "about.blocks": "Модеровані сервери", "about.contact": "Kонтакти:", "about.disclaimer": "Mastodon — це безплатне програмне забезпечення з відкритим вихідним кодом та торгова марка компанії Mastodon GmbH.", - "about.domain_blocks.comment": "Причина", - "about.domain_blocks.domain": "Домен", + "about.domain_blocks.no_reason_available": "Причина недоступна", "about.domain_blocks.preamble": "Mastodon зазвичай дозволяє вам взаємодіяти з користувачами будь-яких серверів у Федіверсі та переглядати їх вміст. Ось винятки, які було зроблено на цьому конкретному сервері.", - "about.domain_blocks.severity": "Важливість", "about.domain_blocks.silenced.explanation": "Ви загалом не побачите профілі та вміст цього сервера, якщо тільки Ви не обрали його явним або не обрали його наступним чином.", "about.domain_blocks.silenced.title": "Обмежені", "about.domain_blocks.suspended.explanation": "Дані з цього сервера не обробляться, зберігаються чи обмінюються, взаємодію чи спілкування з користувачами цього сервера неможливі.", @@ -51,6 +49,7 @@ "account.mute": "Приховати @{name}", "account.mute_notifications": "Не показувати сповіщення від @{name}", "account.muted": "Нехтується", + "account.open_original_page": "Відкрити оригінальну сторінку", "account.posts": "Дописи", "account.posts_with_replies": "Дописи й відповіді", "account.report": "Поскаржитися на @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Маючи обліковий запис на Mastodon, ви можете відповісти на цей допис.", "interaction_modal.on_another_server": "На іншому сервері", "interaction_modal.on_this_server": "На цьому сервері", - "interaction_modal.other_server_instructions": "Просто скопіюйте і вставте цей URL у панель пошуку вашого улюбленого застосунку або вебінтерфейсу, до якого ви ввійшли.", + "interaction_modal.other_server_instructions": "Скопіюйте та вставте цю URL-адресу в поле пошуку вашого улюбленого застосунку Mastodon або вебінтерфейсу вашого сервера Mastodon.", "interaction_modal.preamble": "Оскільки Mastodon децентралізований, ви можете використовувати свій наявний обліковий запис, розміщений на іншому сервері Mastodon або сумісній платформі, якщо у вас немає облікового запису на цьому сервері.", "interaction_modal.title.favourite": "Вподобати допис {name}", "interaction_modal.title.follow": "Підписатися на {name}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 0d8da88a69..3702a7ffeb 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "خاموش @{name}", "account.mute_notifications": "@{name} سے اطلاعات خاموش کریں", "account.muted": "خاموش کردہ", + "account.open_original_page": "Open original page", "account.posts": "ٹوٹ", "account.posts_with_replies": "ٹوٹ اور جوابات", "account.report": "@{name} اطلاع کریں", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 5dfe7e2222..11847e1b24 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -2,10 +2,8 @@ "about.blocks": "Giới hạn chung", "about.contact": "Liên lạc:", "about.disclaimer": "Mastodon là phần mềm tự do mã nguồn mở, một thương hiệu của Mastodon gGmbH.", - "about.domain_blocks.comment": "Lý do", - "about.domain_blocks.domain": "Máy chủ", + "about.domain_blocks.no_reason_available": "Lý do không được cung cấp", "about.domain_blocks.preamble": "Mastodon cho phép bạn tương tác nội dung và giao tiếp với mọi người từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.", - "about.domain_blocks.severity": "Mức độ", "about.domain_blocks.silenced.explanation": "Nói chung, bạn sẽ không thấy người và nội dung từ máy chủ này, trừ khi bạn tự tìm kiếm hoặc tự theo dõi.", "about.domain_blocks.silenced.title": "Hạn chế", "about.domain_blocks.suspended.explanation": "Dữ liệu từ máy chủ này sẽ không được xử lý, lưu trữ hoặc trao đổi. Mọi tương tác hoặc giao tiếp với người từ máy chủ này đều bị cấm.", @@ -51,6 +49,7 @@ "account.mute": "Ẩn @{name}", "account.mute_notifications": "Tắt thông báo từ @{name}", "account.muted": "Đã ẩn", + "account.open_original_page": "Mở trang gốc", "account.posts": "Tút", "account.posts_with_replies": "Trả lời", "account.report": "Báo cáo @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "Với tài khoản Mastodon, bạn có thể bình luận tút này.", "interaction_modal.on_another_server": "Trên một máy chủ khác", "interaction_modal.on_this_server": "Trên máy chủ này", - "interaction_modal.other_server_instructions": "Sao chép và dán URL này vào thanh tìm kiếm của ứng dụng bạn yêu thích hay trang web mà bạn đã đăng nhập vào.", + "interaction_modal.other_server_instructions": "Sao chép và dán URL này vào thanh tìm kiếm của ứng dụng Mastodon hoặc giao diện web máy chủ Mastodon mà bạn hiện dùng.", "interaction_modal.preamble": "Do Mastodon phi tập trung, bạn có thể sử dụng tài khoản hiện có trên một máy chủ Mastodon khác hoặc một nền tảng tương thích nếu bạn chưa có tài khoản trên máy chủ này.", "interaction_modal.title.favourite": "Thích tút của {name}", "interaction_modal.title.follow": "Theo dõi {name}", diff --git a/app/javascript/mastodon/locales/whitelist_de.json b/app/javascript/mastodon/locales/whitelist_de.json index 6c9617e609..448cc9e778 100644 --- a/app/javascript/mastodon/locales/whitelist_de.json +++ b/app/javascript/mastodon/locales/whitelist_de.json @@ -2,7 +2,6 @@ "relative_time.seconds", "relative_time.minutes", "relative_time.hours", - "relative_time.days", "account.badges.bot", "compose_form.publish_loud", "search_results.hashtags" diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 41a19303ab..804fb6c0ad 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -2,10 +2,8 @@ "about.blocks": "Moderated servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.comment": "Reason", - "about.domain_blocks.domain": "Domain", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", - "about.domain_blocks.severity": "Severity", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -51,6 +49,7 @@ "account.mute": "ⵥⵥⵉⵥⵏ @{name}", "account.mute_notifications": "ⵥⵥⵉⵥⵏ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ ⵙⴳ @{name}", "account.muted": "ⵉⵜⵜⵓⵥⵉⵥⵏ", + "account.open_original_page": "Open original page", "account.posts": "Toots", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", "interaction_modal.on_another_server": "On a different server", "interaction_modal.on_this_server": "On this server", - "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", "interaction_modal.title.follow": "Follow {name}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index fb83d0f717..10c137e835 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -1,11 +1,9 @@ { "about.blocks": "被限制的服务器", "about.contact": "联系方式:", - "about.disclaimer": "Mastodon是免费,开源的软件,由Mastodon gGmbH持有商标。", - "about.domain_blocks.comment": "原因", - "about.domain_blocks.domain": "域名", + "about.disclaimer": "Mastodon 是免费的开源软件,由 Mastodon gGmbH 持有商标。", + "about.domain_blocks.no_reason_available": "原因不可用", "about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。", - "about.domain_blocks.severity": "级别", "about.domain_blocks.silenced.explanation": "除非明确地搜索并关注对方,否则你不会看到来自此服务器的用户信息与内容。", "about.domain_blocks.silenced.title": "已隐藏", "about.domain_blocks.suspended.explanation": "此服务器的数据将不会被处理、存储或者交换,本站也将无法和来自此服务器的用户互动或者交流。", @@ -47,10 +45,11 @@ "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", "account.media": "媒体", "account.mention": "提及 @{name}", - "account.moved_to": "{name} 的新账户现在是:", + "account.moved_to": "{name} 的新账号是:", "account.mute": "隐藏 @{name}", "account.mute_notifications": "隐藏来自 @{name} 的通知", "account.muted": "已隐藏", + "account.open_original_page": "打开原始页面", "account.posts": "嘟文", "account.posts_with_replies": "嘟文和回复", "account.report": "举报 @{name}", @@ -93,10 +92,10 @@ "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", - "closed_registrations.other_server_instructions": "基于Mastodon去中心化的特性, 你可以在其它服务器上创建账户并与该服务器保持联系.", - "closed_registrations_modal.description": "您并不能在 {domain} 上创建账户, 但您无需在 {domain} 上的账户也可以使用Mastodon.", + "closed_registrations.other_server_instructions": "基于 Mastodon 去中心化的特性,你可以在其它服务器上创建账号并继续与此账号保持联系。", + "closed_registrations_modal.description": "目前不能在 {domain} 上创建账号,但请注意使用 Mastodon 并非必须持有 {domain} 上的账号。", "closed_registrations_modal.find_another_server": "查找另外的服务器", - "closed_registrations_modal.preamble": "Mastodon是分布式的,所以无论您在哪个实例创建帐户,您都可以关注并与本服务器上的任何人交流。 甚至您可以自己搭建实例。", + "closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以无论在哪个实例创建账号,都可以关注本服务器上的账号并与之交流。 或者你还可以自己搭建实例!", "closed_registrations_modal.title": "在 Mastodon 注册", "column.about": "关于", "column.blocks": "已屏蔽的用户", @@ -182,8 +181,8 @@ "directory.local": "仅来自 {domain}", "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", - "disabled_account_banner.account_settings": "账户设置", - "disabled_account_banner.text": "您的帐户 {disabledAccount} 目前已被禁用。", + "disabled_account_banner.account_settings": "账号设置", + "disabled_account_banner.text": "您的账号 {disabledAccount} 目前已被禁用。", "dismissable_banner.community_timeline": "这些是来自 {domain} 用户的最新公共嘟文。", "dismissable_banner.dismiss": "忽略", "dismissable_banner.explore_links": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。", @@ -293,8 +292,8 @@ "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你可以回复此嘟文。", "interaction_modal.on_another_server": "在另一服务器", "interaction_modal.on_this_server": "在此服务器", - "interaction_modal.other_server_instructions": "只需复制此 URL 并将其粘贴在搜索栏中,使用你喜欢的应用或网页界面均可。", - "interaction_modal.preamble": "由于 Mastodon 是去中心化的,如果你在本站没有账号,也可以使用在另一 Mastodon 服务器或其他兼容平台上的已有账号。", + "interaction_modal.other_server_instructions": "复制此链接并粘贴到你使用的Mastodon应用或者Mastodon服务器网页版搜索栏中。", + "interaction_modal.preamble": "基于 Mastodon 去中心化的特性,如果你在本站没有账号,也可以使用在另一 Mastodon 服务器或其他兼容平台上的已有账号。", "interaction_modal.title.favourite": "喜欢 {name} 的嘟文", "interaction_modal.title.follow": "关注 {name}", "interaction_modal.title.reblog": "转发 {name} 的嘟文", @@ -342,7 +341,7 @@ "lightbox.next": "下一个", "lightbox.previous": "上一个", "limited_account_hint.action": "仍然显示个人资料", - "limited_account_hint.title": "此账户已被 {domain} 管理员隐藏。", + "limited_account_hint.title": "此账号资料已被 {domain} 管理员隐藏。", "lists.account.add": "添加到列表", "lists.account.remove": "从列表中移除", "lists.delete": "删除列表", @@ -361,7 +360,7 @@ "media_gallery.toggle_visible": "隐藏图片", "missing_indicator.label": "找不到内容", "missing_indicator.sublabel": "无法找到此资源", - "moved_to_account_banner.text": "您的帐户 {disabledAccount} 已停用,因为您已迁移到 {movedToAccount} 。", + "moved_to_account_banner.text": "您的账号 {disabledAccount} 已停用,因为您已迁移到 {movedToAccount} 。", "mute_modal.duration": "持续时长", "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?", "mute_modal.indefinite": "无期限", @@ -589,7 +588,7 @@ "status.show_more_all": "显示全部内容", "status.show_original": "显示原文", "status.translate": "翻译", - "status.translated_from_with": "使用 {provider} 翻译 {lang} ", + "status.translated_from_with": "由 {provider} 翻译自 {lang}", "status.uncached_media_warning": "暂不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 37a8ea506f..495cfdca49 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -2,10 +2,8 @@ "about.blocks": "受管制的伺服器", "about.contact": "聯絡我們:", "about.disclaimer": "Mastodon 是一個自由的開源軟體,為 Mastodon gGmbH 的註冊商標。", - "about.domain_blocks.comment": "原因", - "about.domain_blocks.domain": "域名", + "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon 一般允許您閱讀,並和聯邦宇宙上任何伺服器的用戶互動。這些伺服器是本站設下的例外。", - "about.domain_blocks.severity": "嚴重性", "about.domain_blocks.silenced.explanation": "一般來說您不會看到來自這個伺服器的個人檔案和內容,除非您明確地打開或著追蹤此個人檔案。", "about.domain_blocks.silenced.title": "受限的", "about.domain_blocks.suspended.explanation": "來自此伺服器的資料將不會被處理、儲存或交換,本站也將無法和此伺服器上的用戶互動或者溝通。", @@ -51,6 +49,7 @@ "account.mute": "將 @{name} 靜音", "account.mute_notifications": "將來自 @{name} 的通知靜音", "account.muted": "靜音", + "account.open_original_page": "Open original page", "account.posts": "文章", "account.posts_with_replies": "包含回覆的文章", "account.report": "舉報 @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "在 Mastodon 上擁有帳號的話,您可以回覆此帖文。", "interaction_modal.on_another_server": "於不同伺服器", "interaction_modal.on_this_server": "於此伺服器", - "interaction_modal.other_server_instructions": "只需簡單地於您慣用的應用程式或有登入您帳號之網頁介面的搜尋欄中複製並貼上此 URL。", + "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "由於 Mastodon 是去中心化的,即使您於此伺服器上沒有帳號,仍可以利用託管於其他 Mastodon 伺服器或相容平台上的既存帳號。", "interaction_modal.title.favourite": "將 {name} 的帖文加入最愛", "interaction_modal.title.follow": "追蹤 {name}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index e3086e089f..a5ac8dbf74 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -2,10 +2,8 @@ "about.blocks": "受管制的伺服器", "about.contact": "聯絡我們:", "about.disclaimer": "Mastodon 是一個自由的開源軟體,是 Mastodon gGmbH 的註冊商標。", - "about.domain_blocks.comment": "原因", - "about.domain_blocks.domain": "網域", + "about.domain_blocks.no_reason_available": "無法存取之原因", "about.domain_blocks.preamble": "Mastodon 一般來說允許您閱讀並和聯邦宇宙上任何伺服器的使用者互動。這些伺服器是這個站台設下的例外。", - "about.domain_blocks.severity": "嚴重性", "about.domain_blocks.silenced.explanation": "一般來說您不會看到來自這個伺服器的個人檔案和內容,除非您明確地打開或著跟隨此個人檔案。", "about.domain_blocks.silenced.title": "受限的", "about.domain_blocks.suspended.explanation": "來自此伺服器的資料都不會被處理、儲存或交換,也無法和此伺服器上的使用者互動與溝通。", @@ -51,6 +49,7 @@ "account.mute": "靜音 @{name}", "account.mute_notifications": "靜音來自 @{name} 的通知", "account.muted": "已靜音", + "account.open_original_page": "檢視原始頁面", "account.posts": "嘟文", "account.posts_with_replies": "嘟文與回覆", "account.report": "檢舉 @{name}", @@ -293,7 +292,7 @@ "interaction_modal.description.reply": "在 Mastodon 上有個帳號的話,您可以回覆此嘟文。", "interaction_modal.on_another_server": "於不同伺服器", "interaction_modal.on_this_server": "於此伺服器", - "interaction_modal.other_server_instructions": "簡單地於您慣用的應用程式或有登入您帳號之網頁介面的搜尋欄中複製並貼上此 URL。", + "interaction_modal.other_server_instructions": "複製貼上此 URL 至您愛用的 Mastodon 應用程式或您 Mastodon 伺服器之網頁介面的搜尋欄。", "interaction_modal.preamble": "由於 Mastodon 是去中心化的,即便您於此沒有帳號,仍可以利用託管於其他 Mastodon 伺服器或相容平台上的既存帳號。", "interaction_modal.title.favourite": "將 {name} 的嘟文加入最愛", "interaction_modal.title.follow": "跟隨 {name}", diff --git a/config/locales/activerecord.bg.yml b/config/locales/activerecord.bg.yml index 601d6dcd9b..123e7cd9b1 100644 --- a/config/locales/activerecord.bg.yml +++ b/config/locales/activerecord.bg.yml @@ -7,7 +7,7 @@ bg: options: Избори user: agreement: Споразумение за обслужване - email: Имейл адрес + email: Адрес на имейла locale: Локално password: Парола user/account: @@ -19,10 +19,37 @@ bg: account: attributes: username: - invalid: само букви, цифри и долни черти + invalid: трябва да има само букви, цифри и долни черти reserved: е запазено + admin/webhook: + attributes: + url: + invalid: е невалиден URL адрес + doorkeeper/application: + attributes: + website: + invalid: е невалиден URL адрес + import: + attributes: + data: + malformed: е деформиран + status: + attributes: + reblog: + taken: от публикациите вече съществуват user: attributes: email: blocked: използва се непозволен имейл доставчик unreachable: изглежда, че не съществува + role_id: + elevated: не може да е по-висока от текущата ви роля + user_role: + attributes: + permissions_as_keys: + dangerous: включва разрешения, които не са безопасни за базова роля + elevated: не може да включва разрешения, които настоящата ви роля не притежава + own_role: не може да се промени с текущата ви роля + position: + elevated: не може да е по-висока от текущата ви роля + own_role: не може да се промени с текущата ви роля diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index b75a3fd59a..35d63da498 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -3,7 +3,7 @@ da: activerecord: attributes: poll: - expires_at: Deadline + expires_at: 截止时间 options: Valgmuligheder user: agreement: Tjenesteaftale diff --git a/config/locales/activerecord.en-GB.yml b/config/locales/activerecord.en-GB.yml index c1a7d39c8a..e651708c22 100644 --- a/config/locales/activerecord.en-GB.yml +++ b/config/locales/activerecord.en-GB.yml @@ -3,7 +3,7 @@ en-GB: activerecord: attributes: poll: - expires_at: Deadline + expires_at: Terfyn amser options: Choices user: agreement: Service agreement diff --git a/config/locales/activerecord.eo.yml b/config/locales/activerecord.eo.yml index ca48e0fe0c..02774dd394 100644 --- a/config/locales/activerecord.eo.yml +++ b/config/locales/activerecord.eo.yml @@ -7,7 +7,7 @@ eo: options: Elektoj user: agreement: Servo-interkonsento - email: Retadreso + email: Retpoŝtadreso locale: Lokaĵaro password: Pasvorto user/account: @@ -21,12 +21,35 @@ eo: username: invalid: nur leteroj, ciferoj kaj substrekoj reserved: rezervita + admin/webhook: + attributes: + url: + invalid: ne estas valida URL + doorkeeper/application: + attributes: + website: + invalid: ne estas valida URL + import: + attributes: + data: + malformed: estas misformita status: attributes: reblog: - taken: de statuso jam ekzistas + taken: de afiŝo jam ekzistas user: attributes: email: blocked: uzas nepermesitan retpoŝtan provizanton unreachable: ne ŝajnas ekzisti + role_id: + elevated: ne povas esti pli altranga ol via aktuala rolo + user_role: + attributes: + permissions_as_keys: + dangerous: inkluzivi permesojn kiuj ne estas sekuraj por la baza rolo + elevated: ne povas inkluzivi permesojn kiujn via aktuala rolo ne rajtas + own_role: ne eblas esti ŝanĝita per via aktuala rolo + position: + elevated: ne povas esti pli altranga ol via aktuala rolo + own_role: ne eblas esti ŝanĝita per via aktuala rolo diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml index 9697215b59..8c6ebf5e6a 100644 --- a/config/locales/activerecord.ko.yml +++ b/config/locales/activerecord.ko.yml @@ -19,8 +19,8 @@ ko: account: attributes: username: - invalid: 영문자, 숫자, _만 사용 가능 - reserved: 이미 예약되어 있습니다 + invalid: 영문자와 숫자, 밑줄만 사용 가능합니다 + reserved: 예약되어 있습니다 admin/webhook: attributes: url: diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index 23d1928868..0d1d9efb19 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -52,4 +52,4 @@ pl: own_role: nie można zmienić z aktualną rolą position: elevated: nie może być wyższa niż twoja bieżąca rola - own_role: nie można zmienić z aktualną rolą + own_role: nie może być zmieniona z twoją aktualną rolą diff --git a/config/locales/activerecord.sl.yml b/config/locales/activerecord.sl.yml index 6da0bb29c6..be6cea8718 100644 --- a/config/locales/activerecord.sl.yml +++ b/config/locales/activerecord.sl.yml @@ -36,7 +36,7 @@ sl: status: attributes: reblog: - taken: od statusa že obstajajo + taken: od objave že obstajajo user: attributes: email: diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml index ca3402f476..9dd6b21364 100644 --- a/config/locales/activerecord.vi.yml +++ b/config/locales/activerecord.vi.yml @@ -7,7 +7,7 @@ vi: options: Lựa chọn user: agreement: Thỏa thuận dịch vụ - email: Địa chỉ e-mail + email: Địa chỉ email locale: Quốc gia password: Mật khẩu user/account: diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index 2548bdb234..002ca95194 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -7,7 +7,7 @@ zh-TW: options: 選擇 user: agreement: 服務同意書 - email: 電子信箱地址 + email: 電子郵件地址 locale: 地區 password: 密碼 user/account: @@ -40,7 +40,7 @@ zh-TW: user: attributes: email: - blocked: 使用不被允許的電子信箱供應商 + blocked: 使用不被允許的電子郵件供應商 unreachable: 似乎不存在 role_id: elevated: 不能高於您目前的角色 diff --git a/config/locales/af.yml b/config/locales/af.yml index ac4a09b340..72b1b3c087 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -32,6 +32,7 @@ af: title: Aangaande statuses: favourites: Gunstelinge + in_reply_to: Reaksie op strikes: actions: silence: "%{name} het %{target} se rekening beperk" @@ -73,7 +74,7 @@ af: reject_appeal: Verwerp appêl errors: '400': The request you submitted was invalid or malformed. - '403': You don't have permission to view this page. + '403': Jy het nie toestemming om hierdie bladsy te besigtig nie. '404': The page you are looking for isn't here. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. @@ -86,8 +87,13 @@ af: imports: types: bookmarks: Boekmerke + login_activities: + description_html: Indien jy onbekende aktiwiteite gewaar, oorweeg dit om jou wagwoord te verander en twee-faktor verifikasie te aktiveer. navigation: toggle_menu: Skakel-kieslys + notification_mailer: + mention: + action: Reageer number: human: decimal_units: @@ -108,6 +114,8 @@ af: preferences: Voorkeure statuses: content_warning: 'Inhoud waarskuwing: %{warning}' + errors: + in_reply_not_found: Die plasing waarop jy probeer reageer blyk nie te bestaan nie. statuses_cleanup: ignore_favs: Ignoreer gunstelinge strikes: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 9489aa7c5e..2e5c82a330 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -53,7 +53,10 @@ ar: submit: تعديل عنوان البريد الإلكتروني title: تعديل عنوان البريد الإلكتروني الخاص بـ %{username} change_role: + changed_msg: تم تغيير بنجاح! label: تغيير الدور + no_role: لا رتب + title: تم تغيير الرتب ل %{username} confirm: تأكيد confirmed: مؤكَّد confirming: التأكد @@ -97,6 +100,7 @@ ar: active: نشِط all: الكل pending: قيد المراجعة + silenced: محدود suspended: مُجَمَّد title: الإشراف moderation_notes: ملاحظات الإشراف @@ -104,6 +108,7 @@ ar: most_recent_ip: أحدث عنوان إيبي no_account_selected: لم يطرأ أي تغيير على أي حساب بما أنه لم يتم اختيار أي واحد no_limits_imposed: مِن دون حدود مشروطة + no_role_assigned: "'لم يتم تعيين أدوار`" not_subscribed: غير مشترك pending: في انتظار المراجعة perform_full_suspension: تعليق الحساب @@ -170,17 +175,21 @@ ar: approve_user: الموافقة على المستخدم assigned_to_self_report: أسند التقرير change_email_user: تغيير عنوان البريد الإلكتروني الخاص بالمستخدم + change_role_user: تم تغيير الرتبه للمستخدم confirm_user: تأكيد المستخدم create_account_warning: إنشاء تحذير create_announcement: إنشاء إعلان + create_canonical_email_block: إنشاء نطاق للبريد create_custom_emoji: إنشاء إيموجي مخصص create_domain_allow: إنشاء نطاق المسموح به create_domain_block: إنشاء كتلة نطاق create_email_domain_block: إنشاء كتلة نطاق بريد إلكتروني create_ip_block: إنشاء قاعدة IP جديدة create_unavailable_domain: إنشاء نطاق غير متوفر + create_user_role: انشاء رتبه demote_user: إنزال رتبة المستخدم destroy_announcement: احذف الإعلان + destroy_canonical_email_block: حذف نطاق للبريد destroy_custom_emoji: احذف الإيموجي المخصص destroy_domain_allow: حذف النطاق المسموح به destroy_domain_block: حذف كتلة النطاق @@ -221,26 +230,34 @@ ar: update_status: تحديث الحالة update_user_role: تحديث الدور actions: + approve_appeal_html: وافق %{name} على استئناف قرار الاعتدال من %{target} approve_user_html: قبل %{name} تسجيل %{target} assigned_to_self_report_html: قام %{name} بتعيين التقرير %{target} لأنفسهم change_email_user_html: غيّر %{name} عنوان البريد الإلكتروني للمستخدم %{target} + change_role_user_html: قام %{name} بإنشاء قاعدة للـIP %{target} confirm_user_html: "%{name} قد قام بتأكيد عنوان البريد الإلكتروني لـ %{target}" create_account_warning_html: قام %{name} بإرسال تحذير إلى %{target} create_announcement_html: قام %{name} بإنشاء إعلان جديد %{target} + create_canonical_email_block_html: قام %{name} بحظر نطاق البريد الإلكتروني %{target} create_custom_emoji_html: "%{name} قام برفع إيموجي جديد %{target}" create_domain_allow_html: قام %{name} بإضافة النطاق %{target} إلى القائمة البيضاء create_domain_block_html: "%{name} قام بحجب نطاق %{target}" create_email_domain_block_html: قام %{name} بحظر نطاق البريد الإلكتروني %{target} create_ip_block_html: قام %{name} بإنشاء قاعدة للـIP %{target} create_unavailable_domain_html: قام %{name} بتوقيف التوصيل للنطاق %{target} + create_user_role_html: "%{name} أنشأ رتبه %{target}" demote_user_html: قام %{name} بخفض الرتبة الوظيفية لـ%{target} destroy_announcement_html: قام %{name} بحذف الإعلان %{target} + destroy_canonical_email_block_html: قام %{name} برفع الحظر عن نطاق البريد الإلكتروني %{target} + destroy_custom_emoji_html: قام %{name} بتحديث الإيموجي %{target} destroy_domain_allow_html: قام %{name} بمنع الاتحاد مع النطاق %{target} destroy_domain_block_html: قام %{name} برفع الحظر عن النطاق %{target} destroy_email_domain_block_html: قام %{name} برفع الحظر عن نطاق البريد الإلكتروني %{target} + destroy_instance_html: "%{name} قام بحجب نطاق %{target}" destroy_ip_block_html: قام %{name} بحذف قاعدة للـIP %{target} destroy_status_html: قام %{name} بحذف منشور من %{target} destroy_unavailable_domain_html: قام %{name} باستئناف التوصيل للنطاق %{target} + destroy_user_role_html: "%{name} أنشأ رتبه %{target}" disable_2fa_user_html: قام %{name} بتعطيل المصادقة بخطوتين للمستخدم %{target} disable_custom_emoji_html: قام %{name} بتعطيل الإيموجي %{target} disable_sign_in_token_auth_user_html: "%{name} تعطيل مصادقة رمز البريد الإلكتروني لـ %{target}" @@ -250,22 +267,28 @@ ar: enable_user_html: قام %{name} بتنشيط تسجيل الدخول للمستخدم %{target} memorialize_account_html: قام %{name} بتحويل حساب %{target} إلى صفحة تذكارية promote_user_html: قام %{name} بترويج المستخدم %{target} + reject_appeal_html: وافق %{name} على استئناف قرار الاعتدال من %{target} reject_user_html: رفض %{name} تسجيل %{target} remove_avatar_user_html: قام %{name} بإزالة صورة %{target} الرمزية reopen_report_html: قام %{name} بإعادة فتح الشكوى %{target} + resend_user_html: "%{name} إعادة إرسال البريد الإلكتروني للتأكيد لـ %{target}" reset_password_user_html: قام %{name} بإعادة تعيين كلمة مرور المستخدم %{target} resolve_report_html: قام %{name} بحل الشكوى %{target} sensitive_account_html: قام %{name} بوضع علامة حساس على محتوى %{target} silence_account_html: قام %{name} بكتم حساب %{target} suspend_account_html: قام %{name} بتعليق حساب %{target} unassigned_report_html: قام %{name} بإلغاء تعيين الشكوى %{target} + unblock_email_account_html: "%{name} إلغاء حظر %{target} عنوان البريد الإلكتروني" unsensitive_account_html: قام %{name} بإزالة علامة حساس على محتوى %{target} unsilence_account_html: قام %{name} بإلغاء كتم المستخدم %{target} unsuspend_account_html: قام %{name} بإلغاء تعليق حساب %{target} update_announcement_html: قام %{name} بتحديث الإعلان %{target} update_custom_emoji_html: قام %{name} بتحديث الإيموجي %{target} update_domain_block_html: قام %{name} بتحديث كتلة النطاق %{target} + update_ip_block_html: قام %{name} بإنشاء قاعدة للـIP %{target} update_status_html: قام %{name} بتحديث منشور من %{target} + update_user_role_html: "%{name} تغيير رتبه %{target}" + deleted_account: احذف الحساب empty: لم يتم العثور على سجلات. filter_by_action: تصفية بحسب الإجراء filter_by_user: تصفية حسب المستخدم @@ -309,6 +332,7 @@ ar: listed: مُدرَج new: title: إضافة إيموجي خاص جديد + no_emoji_selected: لم يطرأ أي تغيير على أي حساب بما أنه لم يتم اختيار أي واحد not_permitted: غير مسموح لك بتنفيذ هذا الإجراء overwrite: إعادة الكتابة shortcode: الترميز المُصَغّر @@ -326,6 +350,13 @@ ar: media_storage: تخزين الوسائط new_users: مستخدمون جدد opened_reports: تقارير مفتوحة + pending_appeals_html: + few: "%{count} مستخدمين معلقين" + many: "%{count} مستخدمين معلقين" + one: "%{count} مستخدمين معلقين" + other: "%{count} تقارير معلقة" + two: "%{count} مستخدمين معلقين" + zero: "%{count} وسماً معلقاً" resolved_reports: تقارير تم حلها software: البرنامج sources: مصادر التسجيل @@ -600,6 +631,7 @@ ar: content_retention: title: الاحتفاظ بالمحتوى discovery: + follow_recommendations: اتبع التوصيات profile_directory: دليل الصفحات التعريفية public_timelines: الخيوط الزمنية العامة title: الاستكشاف @@ -609,6 +641,7 @@ ar: disabled: لا أحد users: للمستخدمين المتصلين محليا registrations: + preamble: تحكّم في مَن الذي يمكنه إنشاء حساب على خادمك الخاص. title: التسجيلات registrations_mode: modes: @@ -646,6 +679,8 @@ ar: with_media: تحتوي على وسائط strikes: actions: + delete_statuses: حَذَفَ %{name} رسائل %{target} + disable: جَمّدَ %{name} حساب %{target} suspend: قام %{name} بتعليق حساب %{target} appeal_approved: طُعِن فيه appeal_pending: طعن قيد المراجعة diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 83a5df302f..104e256a0e 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -5,6 +5,7 @@ bg: contact_missing: Не е зададено contact_unavailable: Не е приложимо hosted_on: Mastodon е хостван на %{domain} + title: Относно accounts: follow: Последвай followers: @@ -33,14 +34,21 @@ bg: avatar: Аватар by_domain: Домейн change_email: + changed_msg: Успешно променен имейл! current_email: Текущ имейл label: Промяна на имейл new_email: Нов имейл submit: Промяна на имейл title: Промяна на имейл за %{username} + change_role: + changed_msg: Успешно променена роля! + label: Промяна на ролята + no_role: Няма роля + title: Промяна на ролята за %{username} confirm: Потвърждаване confirmed: Потвърдено confirming: Потвърждаване + custom: Потребителско delete: Изтриване на данни deleted: Изтрито demote: Понижаване @@ -55,6 +63,8 @@ bg: email_status: Състояние на имейл enable: Размразяване enabled: Включено + enabled_msg: Успешно размразяване на акаунта на %{username} + followers: Последователи follows: Последвания header: Заглавна част inbox_url: Входящ URL @@ -73,6 +83,7 @@ bg: active: Активно all: Всичко pending: Чакащо + silenced: Ограничено suspended: Спряно title: Модерация moderation_notes: Модераторни бележки @@ -80,6 +91,7 @@ bg: most_recent_ip: Последен IP no_account_selected: Нито един акаунт не е променен, тъй като нито един не е избран no_limits_imposed: Няма наложени ограничения + no_role_assigned: Няма поставена роля not_subscribed: Без абонамент pending: Изчаква преглед perform_full_suspension: Спиране @@ -92,10 +104,36 @@ bg: rejected_msg: Успешно отхвърлена заявка за регистрация на %{username} remove_avatar: Премахване на аватар remove_header: Премахване на заглавна част + resend_confirmation: + already_confirmed: Този потребител вече е потвърден + reset: Нулиране + reset_password: Нулиране на паролата + resubscribe: Абониране пак + role: Роля + search: Търсене + search_same_email_domain: Други потребители със същия домейн за имейл + search_same_ip: Други потребители със същия IP + security_measures: + only_password: Само парола + password_and_2fa: Парола и двуфакторно удостоверяване + sensitized: Отбелязано като деликатно съдържание + shared_inbox_url: URL адрес на споделена входяща кутия + show: + created_reports: Докладвания + targeted_reports: Докладвано от други + silence: Ограничение + silenced: Ограничено + statuses: Публикации + subscribe: Абониране + suspend: Спиране + suspended: Спряно + title: Акаунти + unconfirmed_email: Непотвърден имейл unsubscribe: Отписване username: Потребителско име warn: Предупреждение web: Уеб + whitelisted: Позволено за федерацията action_logs: action_types: confirm_user: Потвърждаване на потребител @@ -103,10 +141,14 @@ bg: create_announcement: Създаване на оповестяване create_custom_emoji: Създаване на персонализирано емоджи create_ip_block: Създаване на IP правило + create_user_role: Създаване на роля demote_user: Понижаване на потребител destroy_announcement: Изтриване на оповестяване destroy_custom_emoji: Изтриване на персонализирано емоджи + destroy_ip_block: Изтриване на правило за IP destroy_status: Изтриване на статус + destroy_unavailable_domain: Изтриване на неналичен домейн + destroy_user_role: Унищожаване на роля disable_2fa_user: Деактивиране на 2FA disable_custom_emoji: Деактивиране на персонализирано емоджи disable_user: Деактивиране на потребител @@ -116,23 +158,250 @@ bg: remove_avatar_user: Премахване на аватар reopen_report: Повторно отваряне на доклад reset_password_user: Нулиране на парола + deleted_account: изтрит акаунт + announcements: + live: На живо + publish: Публикуване + custom_emojis: + by_domain: Домейн + copy: Копиране + create_new_category: Създаване на нова категория + created_msg: Успешно сътворено емоджи! + delete: Изтриване + destroyed_msg: Успешно унищожено емоджи! + disable: Изключване + disabled: Изключено + disabled_msg: Успешно изключване на това емоджи + emoji: Емоджи + enable: Включване + enabled: Включено + enabled_msg: Успешно включване на това емоджи + image_hint: PNG или GIF до %{size} + list: Списък + listed: В списъка + new: + title: Добавяне на ново потребителско емоджи + not_permitted: Нямате право да извършвате това действие + overwrite: Презаписване + shortcode: Кратък код + shortcode_hint: Поне 2 символа, само азбучно-цифрови символи и долни черти + title: Потребителски емоджита + uncategorized: Некатегоризирано + update_failed_msg: Не може да се обнови това емоджи + updated_msg: Успешно осъвременено емоджи! + upload: Качване + dashboard: + active_users: дейни потребители + interactions: взаимодействия + media_storage: Мултимедийно хранилище + new_users: нови потребители + opened_reports: отворени доклади + resolved_reports: разрешени доклади + software: Софтуер + space: Използвано пространство + title: Табло за управление + top_languages: Водещи дейни езици + top_servers: Водещи дейни сървъри + website: Уебсайт + disputes: + appeals: + empty: Няма намерени обжалвания. + title: Жалби + domain_blocks: + domain: Домейн + new: + severity: + silence: Тишина + private_comment: Личен коментар + private_comment_hint: Коментирането за това ограничение на домейна за вътрешна употреба от модераторите. + email_domain_blocks: + title: Блокирани домейни на имейл + follow_recommendations: + language: За език + status: Състояние + instances: + by_domain: Домейн + content_policies: + policies: + silence: Ограничение + policy: Политика + dashboard: + instance_languages_dimension: Водещи езици + delivery: + clear: Изчистване на грешките за доставка + restart: Рестартиране на доставката + stop: Спиране на доставката + unavailable: Неналично + delivery_available: Доставката е налична + delivery_error_days: Грешни дни на доставяне + empty: Няма намерени домейни. + moderation: + all: Всичко + title: Федерация + total_blocked_by_us: Блокирано от нас + total_followed_by_them: Последвани от тях + total_followed_by_us: Последвано от нас + invites: + deactivate_all: Деактивиране на всички + filter: + all: Всичко + available: Налично + expired: Изтекло + title: Филтър + title: Покани + ip_blocks: + add_new: Създаване на правило + delete: Изтриване + expires_in: + '1209600': 2 седмици + '15778476': 6 месеца + '2629746': 1 месец + '31556952': 1 година + '86400': 1 ден + '94670856': 3 години + relationships: + title: Отношения на %{acct} + relays: + delete: Изтриване + disable: Изключване + disabled: Изключено + enable: Включване + enabled: Включено + status: Състояние + report_notes: + today_at: Днес от %{time} + reports: + are_you_sure: Сигурни ли сте? + category: Категория + created_at: Докладвано + forwarded: Препратено + forwarded_to: Препратено до %{domain} + notes: + create: Добавяне на бележка + delete: Изтриване + title: Бележки + reopen: Отваряне пак на доклад + reported_account: Докладван акаунт + reported_by: Докладвано от + resolved: Разрешено + status: Състояние + statuses: Докладвано съдържание + updated_at: Обновено + view_profile: Преглед на профила + roles: + add_new: Добавяне на роля + categories: + administration: Администрация + invites: Покани + moderation: Mодериране + delete: Изтриване + privileges: + administrator: Администратор + manage_invites: Управление на поканите + manage_reports: Управление на докладите + manage_roles: Управление на ролите + title: Роли + rules: + add_new: Добавяне на правило + delete: Изтриване + edit: Промяна на правило + empty: Още няма определени правила на сървъра. + title: Правила на сървъра + settings: + about: + manage_rules: Управление на правилата на сървъра + appearance: + title: Външен вид + registrations: + title: Регистрации + title: Настройки на сървъра + statuses: + account: Автор + application: Приложение + back_to_account: Назад към страницата на акаунта + back_to_report: Назад към страницата на доклада + batch: + remove_from_report: Премахване от доклада + report: Докладване + deleted: Изтрито + favourites: Любими + history: История на версиите + language: Език + media: + title: Мултимедия + metadata: Метаданни + open: Отваряне на публикация + original_status: Първообразна публикация + visibility: Видимост + trends: + tags: + dashboard: + tag_accounts_measure: неповторими употреби + tag_languages_dimension: Водещи езици + tag_servers_dimension: Водещи сървъри + tag_servers_measure: различни сървъри + tag_uses_measure: обща употреба + not_usable: Не може да се използва + usable: Може да се употребява + warning_presets: + delete: Изтриване + webhooks: + delete: Изтриване + events: Събития + status: Състояние + title: Уебкуки + admin_mailer: + new_appeal: + actions: + none: предупреждение + appearance: + localization: + body: Mastodon е преведено от доброволци. + guide_link: https://ru.crowdin.com/project/mastodon + guide_link_text: Всеки може да допринася. + sensitive_content: Деликатно съдържание application_mailer: + notification_preferences: Промяна на предпочитанията за имейл settings: 'Промяна на предпочитанията за e-mail: %{link}' view: 'Преглед:' + view_profile: Преглед на профила + view_status: Преглед на публикацията auth: + apply_for_account: Вземане в спсисъка за чакане + change_password: Парола + delete_account: Изтриване на акаунта didnt_get_confirmation: Не получих инструкции за потвърждение forgot_password: Забравих си паролата login: Влизане logout: Излизане register: Регистрация + registration_closed: "%{instance} не приема нови членуващи" resend_confirmation: Изпрати отново инструкции за потвърждение reset_password: Подновяване на паролата - security: Идентификационни данни - set_new_password: Задай нова парола + security: Сигурност + set_new_password: Задаване на нова парола + setup: + title: Настройка + status: + account_status: Състояние на акаунта authorize_follow: + already_following: Вече следвате този акаунт error: Възникна грешка в откриването на потребителя follow: Последвай + follow_request: 'Изпратихте следната заявка до:' + post_follow: + close: Или просто затворете този прозорец. + return: Показване на профила на потребителя + web: Към мрежата title: Последвай %{acct} + challenge: + confirm: Продължаване + invalid_password: Невалидна парола + prompt: Потвърдете паролата, за да продължите + date: + formats: + default: "%b %d, %Y" + with_month_name: "%B %d, %Y" datetime: distance_in_words: about_x_hours: "%{count} ч." @@ -147,77 +416,338 @@ bg: x_minutes: "%{count} мин" x_months: "%{count} м" x_seconds: "%{count} сек" + deletes: + challenge_not_passed: Въвели сте неправилна информация + confirm_username: Въведете потребителското си име, за да потвърдите процедурата + proceed: Изтриване на акаунта + success_msg: Вашият акаунт е успешно изтрит + warning: + before: 'Прочетете внимателно тези бележки преди да продължите:' + data_removal: Ваши публикации и други данни ще бъдат завинаги премахнати + username_available: Вашето потребителско име ще стане налично отново + username_unavailable: Вашето потребителско име ще остане неналично + disputes: + strikes: + title: "%{action} от %{date}" + title_actions: + none: Предупреждение errors: '400': The request you submitted was invalid or malformed. - '403': You don't have permission to view this page. - '404': The page you are looking for isn't here. + '403': Нямате позволение да разгледате тази страница. + '404': Търсената от вас страница не е тук. '406': This page is not available in the requested format. '410': The page you were looking for doesn't exist here anymore. - '422': - '429': Too many requests - '500': + '422': + title: Неуспешна проверка за сигурност + '429': Премного заявки + '500': + title: Страницата не е правилна '503': The page could not be served due to a temporary server failure. exports: + archive_takeout: + date: Дата + download: Изтегляне на архива ви + size: Размер blocks: Вашите блокирания + bookmarks: Отметки + lists: Списъци storage: Съхранение на мултимедия + filters: + contexts: + account: Профили + notifications: Известия + thread: Разговори + edit: + add_keyword: Добавяне на ключова дума + keywords: Ключови думи + statuses: Отделни публикации + title: Редактиране на филтър + index: + delete: Изтриване + empty: Нямате филтри. + keywords: + one: "%{count} ключова дума" + other: "%{count} ключови думи" + statuses: + one: "%{count} публикация" + other: "%{count} публикации" + title: Филтри + new: + save: Запазване на нов филтър + title: Добавяне на нов филтър + statuses: + back_to_filter: Обратно към филтъра + batch: + remove: Премахване от филтъра + index: + title: Филтрирани публикации generic: + all: Всичко changes_saved_msg: Успешно запазване на промените! + copy: Копиране + delete: Изтриване + none: Нищо + order_by: Подреждане по save_changes: Запази промените + today: днес imports: + modes: + overwrite: Презаписване + overwrite_long: Заменя текущите записи с новите preface: Можеш да импортираш някои данни, като например всички хора, които следваш или блокираш в акаунта си на тази инстанция, от файлове, създадени чрез експорт в друга инстанция. success: Твоите данни бяха успешно качени и ще бъдат обработени впоследствие types: blocking: Списък на блокираните + bookmarks: Отметки following: Списък на последователите upload: Качване + invites: + delete: Деактивиране + expired: Изтекло + expires_in: + '1800': 30 минути + '21600': 6 часа + '3600': 1 час + '43200': 12 часа + '604800': 1 седмица + '86400': 1 ден + expires_in_prompt: Никога + generate: Поражда връзка за покана + invited_by: 'Бяхте поканени от:' + max_uses: + one: 1 употреба + other: "%{count} употреби" + max_uses_prompt: Без ограничение + title: Поканете хора + login_activities: + authentication_methods: + password: парола + webauthn: ключове за сигурност + empty: Няма налична история на удостоверяване + title: Историята на удостоверяване media_attachments: validations: images_and_video: Не мога да прикача видеоклип към публикация, която вече съдържа изображения too_many: Не мога да прикача повече от 4 файла + migrations: + past_migrations: Минали миграции + redirected_msg: Вашият акаунт сега се пренасочва към %{acct}. + redirecting_to: Вашият акаунт е пренасочен към %{acct}. + set_redirect: Задаване на пренасочване + moderation: + title: Mодериране notification_mailer: favourite: body: 'Публикацията ти беше харесана от %{name}:' subject: "%{name} хареса твоята публикация" + title: Ново любимо follow: body: "%{name} те последва!" subject: "%{name} те последва" + title: Нов последовател follow_request: body: "%{name} помоли за разрешение да те последва" subject: 'Чакащ последовател: %{name}' mention: + action: Отговор body: "%{name} те спомена в:" subject: "%{name} те спомена" + title: Ново споменаване reblog: body: 'Твоята публикация беше споделена от %{name}:' subject: "%{name} сподели публикацията ти" + notifications: + email_events_hint: 'Изберете събития, за които искате да получавате известия:' + other_settings: Настройки за други известия + number: + human: + decimal_units: + format: "%n %u" + units: + billion: млрд + million: млн + quadrillion: квдрлн + thousand: хил + trillion: трлн + otp_authentication: + enable: Включване pagination: next: Напред prev: Назад + polls: + errors: + expired: Анкетата вече е приключила + preferences: + other: Друго + privacy_policy: + title: Политика за поверителност + relationships: + activity: Дейност на акаунта + followers: Последователи + invited: С покана + last_active: Последна дейност + most_recent: Най-наскоро + moved: Преместено + remove_selected_domains: Премахване на всички последователи от избраните домейни + remove_selected_followers: Премахване на избраните последователи + remove_selected_follows: Стоп на следването на избраните потребители + status: Състояние на акаунта remote_follow: missing_resource: Неуспешно търсене на нужния URL за пренасочване за твоя акаунт + rss: + descriptions: + account: Публични публикации от @%{acct} + sessions: + activity: Последна активност + browser: Браузър + browsers: + alipay: Alipay + blackberry: Blackberry + chrome: Chrome + edge: Edge на Майкрософт + electron: Electron + firefox: Firefox + generic: Неизвестен браузър + ie: Internet Explorer + micro_messenger: MicroMessenger + nokia: Браузър Nokia S40 Ovi + opera: Опера + otter: Otter + phantom_js: PhantomJS + qq: Браузър QQ + safari: Сафари + uc_browser: UCBrowser + weibo: Weibo + current_session: Текуща сесия + description: "%{browser} на %{platform}" + ip: IP адрес + platforms: + adobe_air: Adobe Air + android: Android + blackberry: Blackberry + chrome_os: Оп. сист. Chrome + firefox_os: Оп. сист. Firefox + ios: iOS + linux: Линукс + mac: macOS + other: неизвестна платформа + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone + title: Сесии + view_authentication_history: Преглед на историята на удостоверяване на акаунта ви settings: + account: Акаунт + account_settings: Настройки на акаунта + appearance: Външен вид authorized_apps: Упълномощени приложения back: Обратно към Mastodon + delete: Изтриване на акаунта + development: Развой edit_profile: Редактирай профила си export: Експортиране на данни import: Импортиране + import_and_export: Внос и износ + migrate: Миграция на акаунта + notifications: Известия preferences: Предпочитания + profile: Профил + relationships: Последвания и последователи two_factor_authentication: Двустепенно удостоверяване + webauthn_authentication: Ключове за сигурност statuses: + attached: + audio: + one: "%{count} звукозапис" + other: "%{count} звукозаписа" + image: + one: "%{count} образ" + other: "%{count} образа" + video: + one: "%{count} видео" + other: "%{count} видеозаписа" + default_language: Същият като езика на интерфейса open_in_web: Отвори в уеб over_character_limit: прехвърлен лимит от %{max} символа + poll: + vote: Гласуване show_more: Покажи повече visibilities: private: Покажи само на последователите си public: Публично unlisted: Публично, но не показвай в публичния канал + statuses_cleanup: + enabled: Автоматично изтриване на стари публикации + exceptions: Изключения + ignore_favs: Пренебрегване на любими + keep_pinned: Държа на закачените публикации + min_age: + '1209600': 2 седмици + '15778476': 6 месеца + '2629746': 1 месец + '31556952': 1 година + '5259492': 2 месеца + '604800': 1 седмица + '63113904': 2 години + '7889238': 3 месеца + min_age_label: Възрастов праг stream_entries: + pinned: Закачена публикация reblogged: споделено sensitive_content: Деликатно съдържание + themes: + contrast: Mastodon (висок контраст) + default: Mastodon (тъмно) + mastodon-light: Mastodon (светло) time: formats: default: "%d %b, %Y, %H:%M" + month: "%b %Y" + time: "%H:%M" two_factor_authentication: + add: Добавяне disable: Деактивирай + edit: Редактиране + enabled: Двуфакторното удостоверяване е включено + enabled_success: Двуфакторното удостоверяване е успешно включено + methods: Двуфакторни начини + webauthn: Ключове за сигурност + user_mailer: + appeal_approved: + action: Към акаунта ви + backup_ready: + subject: Вашият архив е готов за изтегляне + warning: + categories: + spam: Спам + reason: 'Причина:' + statuses: 'Цитирани публ.:' + subject: + delete_statuses: Ваши публикации в %{acct} са били премахнати + title: + delete_statuses: Публикацията е премахната + disable: Акаунтът е замразен + mark_statuses_as_sensitive: Публикацията отбелязана като деликатна + none: Предупреждение + welcome: + edit_profile_action: Настройване на профила + explanation: Ето няколко стъпки за начало + subject: Добре дошли в Mastodon + title: Добре дошли на борда, %{name}! users: + follow_limit_reached: Не може да последвате повече от %{limit} души invalid_otp_token: Невалиден код + verification: + verification: Проверка + webauthn_credentials: + add: Добавяне на нов ключ за сигурност + create: + error: Възникна проблем, добавяйки ключ за сигурност. Опитайте пак. + success: Вашият ключ за сигурност беше добавен успешно. + delete: Изтриване + destroy: + error: Възникна проблем, изтривайки ключа си за сигурност. Опитайте пак. + success: Вашият ключ за сигурност беше изтрит успешно. + invalid_credential: Невалиден ключ за сигурност + not_supported: Този браузър не поддържа ключове за сигурност + otp_required: Първо включете двуфакторното удостоверяване, за да използвате ключовете за сигурност. diff --git a/config/locales/cs.yml b/config/locales/cs.yml index eb096ff333..b93ec30722 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -180,6 +180,7 @@ cs: confirm_user: Potvrdit uživatele create_account_warning: Vytvořit varování create_announcement: Nové oznámení + create_canonical_email_block: Zablokovat email create_custom_emoji: Vytvořit vlastní emoji create_domain_allow: Vytvořit povolení domény create_domain_block: Vytvořit blokaci domény @@ -189,6 +190,7 @@ cs: create_user_role: Vytvořit roli demote_user: Snížit roli uživatele destroy_announcement: Odstranit oznámení + destroy_canonical_email_block: Odblokovat email destroy_custom_emoji: Odstranit vlastní emoji destroy_domain_allow: Odstranit povolení domény destroy_domain_block: Odstranit blokaci domény @@ -1155,6 +1157,11 @@ cs: many: "%{count} příspěvků" one: "%{count} příspěvek" other: "%{count} příspěvků" + statuses_long: + few: "%{count} skryté příspěvky" + many: "%{count} skrytých příspěvků" + one: "%{count} skrytý příspěvek" + other: "%{count} skrytých příspěvků" title: Filtry new: save: Uložit nový filtr diff --git a/config/locales/de.yml b/config/locales/de.yml index d97b31640a..d6f8ba94ef 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1608,7 +1608,7 @@ de: edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst, deinen Anzeigenamen änderst und viel mehr. Du kannst optional einstellen, ob du Accounts, die dir folgen wollen, akzeptieren musst, bevor sie dies können. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten - final_step: 'Fang jetzt an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel in der lokalen Timeline oder über die Hashtags. Möglicherweise möchtest du dich allen mit dem Hashtag #introductions vorstellen?' + final_step: 'Fang jetzt an zu posten! Selbst ohne Follower werden deine öffentlichen Beiträge von anderen gesehen, zum Beispiel in der lokalen Timeline oder über die Hashtags. Möglicherweise möchtest du dich allen mit dem Hashtag #neuhier vorstellen.' full_handle: Dein vollständiger Benutzername full_handle_hint: Dies ist, was du deinen Freunden sagen kannst, damit sie dich anschreiben oder dir von einem anderen Server folgen können. subject: Willkommen bei Mastodon diff --git a/config/locales/devise.bg.yml b/config/locales/devise.bg.yml index c3773bcae7..515afa037a 100644 --- a/config/locales/devise.bg.yml +++ b/config/locales/devise.bg.yml @@ -2,20 +2,20 @@ bg: devise: confirmations: - confirmed: Твоят профил беше успешно потвърден. Влизането в профила е успешно. - send_instructions: Ще получиш писмо с инструкции как да потвърдиш своя профил до няколко минути. - send_paranoid_instructions: Ако твоят имейл адрес съществува в базата ни, ще получиш там инструкции как да потвърдиш своя профил. + confirmed: Вашият адрес на имейл беше успешно потвърден. + send_instructions: Ще получите е-писмо с указания как да потвърдите адреса на имейла си за няколко минути. Проверете си папката за спам, ако не сте получили това е-писмо. + send_paranoid_instructions: Ако адресът на имейл ви съществува в базата ни данни, ще получите е-писмо с указания как да потвърдите адреса на имейла си за няколко минути. Проверете си папката за спам, ако не сте получили това е-писмо. failure: already_authenticated: Вече си вътре в профила си. - inactive: Профилът ти все още не е активиран. - invalid: Невалиден %{authentication_keys}. - last_attempt: Разполагаш с още един опит преди профилът ти да бъде заключен. - locked: Профилът ти е заключен. - not_found_in_database: Невалиден %{authentication_keys}. + inactive: Акаунтът ви още не е задействан. + invalid: Невалиден %{authentication_keys} или парола. + last_attempt: Разполагате с още един опит преди акаунтът ви да се заключи. + locked: Вашият акаунт е заключен. + not_found_in_database: Невалиден %{authentication_keys} или парола. pending: Вашият акаунт все още е в процес на проверка. - timeout: Сесията ти изтече, моля влез отново, за да продължиш. - unauthenticated: Преди да продължиш, трябва да влезеш в профила си или да се регистрираш. - unconfirmed: Преди да продължиш, трябва да потвърдиш регистрацията си. + timeout: Сесията ви изтече. Влезте пак, за да продължите. + unauthenticated: Преди да продължите, трябва да влезете или да се регистрирате. + unconfirmed: Преди да продължите, трябва да потвърдиш адреса на имейла си. mailer: confirmation_instructions: action: Потвърдете имейл адреса @@ -23,8 +23,8 @@ bg: explanation: Създали сте акаунт на %{host} с този имейл адрес. Само на едно щракване разстояние сте от активирането му. Ако това не сте били вие, моля, игнорирайте този имейл. explanation_when_pending: Кандидатствахте за покана до %{host} с този имейл адрес. След като потвърдите своя имейл адрес, ние ще разгледаме вашето заявление. Можете да влезете, за да промените данните си или да изтриете акаунта си, но нямате достъп до повечето функции, докато акаунтът ви не бъде одобрен. Ако вашето заявление бъде отхвърлено, вашите данни ще бъдат премахнати, така че няма да се изискват допълнителни действия от вас. Ако това не сте били вие, моля, игнорирайте този имейл. extra_html: Моля, проверете правилата на сървъра и нашите условия за обслужване. - subject: 'Mastodon: Инструкции за потвърждаване %{instance}' - title: Потвърдете имейл адреса + subject: 'Mastodon: Указания за потвърждаване за %{instance}' + title: Потвърдете адреса на имейла email_changed: explanation: 'Имейл адресът на вашия акаунт се променя на:' extra: Ако не сте сменили имейла си, вероятно някой е получил достъп до вашия акаунт. Моля, сменете паролата си незабавно или се свържете с администратора на сървъра, ако сте блокирани от акаунта си. @@ -39,27 +39,27 @@ bg: explanation: Потвърдете новия адрес, за да промените имейла си. extra: Ако тази промяна не е инициирана от вас, моля, игнорирайте този имейл. Имейл адресът за акаунта на Mastodon няма да се промени, докато не влезете във връзката по-горе. subject: 'Mastodon: Потвърдете имейла за %{instance}' - title: Потвърдете имейл адреса + title: Потвърдете адреса на имейла reset_password_instructions: action: Промяна на парола - explanation: Поискахте нова парола за вашия акаунт. + explanation: Поискахте нова парола за акаунта си. extra: Ако не сте поискали това, моля, игнорирайте този имейл. Паролата ви няма да се промени, докато не влезете във връзката по-горе и не създадете нова. - subject: Инструкции за смяна на паролата + subject: 'Mastodon: Указания за задаване на нова парола' title: Нулиране на парола two_factor_disabled: explanation: Двуфакторното удостоверяване за вашия акаунт е деактивирано. Влизането вече е възможно, като се използват само имейл адрес и парола. subject: 'Mastodon: Двуфакторното удостоверяване е деактивирано' - title: 2FA деактивирано + title: Двуфакторното изключено two_factor_enabled: explanation: За вашия акаунт е активирано двуфакторно удостоверяване. За влизане ще е необходим ключ, генериран от сдвоеното приложение TOTP. subject: 'Mastodon: Двуфакторното удостоверяване е активирано' - title: 2FA активирано + title: Двуфакторно удостоверяване включено two_factor_recovery_codes_changed: explanation: Предишните кодове за възстановяване са обезсилени и се генерират нови. subject: 'Mastodon: Възстановени са двуфакторни кодове за възстановяване' title: 2FA кодове за възстановяване са променени unlock_instructions: - subject: Инструкции за отключване + subject: 'Mastodon: указания за отключване' webauthn_credential: added: explanation: Следният ключ за сигурност е добавен към вашия акаунт @@ -87,8 +87,8 @@ bg: updated: Паролата ти беше променена успешно. Влизането в профила е успешно. updated_not_active: Паролата ти беше променена успешно. registrations: - destroyed: Довиждане! Твоят профил беше успешно изтрит. Надяваме се скоро да те видим отново. - signed_up: Привет! Регистрирацията ти е успешна. + destroyed: Довиждане! Вашият акаунт беше успешно изтрит. Надяваме се скоро да ви видим пак. + signed_up: Добре дошли! Успешно се регистрирахте. signed_up_but_inactive: Регистрирацията ти е успешна. Въпреки това, не можеш да влезеш в профила си, защото той все още не е потвърден. signed_up_but_locked: Регистрирацията ти е успешна. Въпреки това, не можеш да влезеш в профила си, защото той е заключен. signed_up_but_pending: На вашия имейл адрес е изпратено съобщение с връзка за потвърждение. След като щракнете върху връзката, ние ще прегледаме вашето заявление. Ще бъдете уведомени, ако то е одобрено. diff --git a/config/locales/devise.en-GB.yml b/config/locales/devise.en-GB.yml index ef03d18104..9a51d07576 100644 --- a/config/locales/devise.en-GB.yml +++ b/config/locales/devise.en-GB.yml @@ -1 +1,115 @@ +--- en-GB: + devise: + confirmations: + confirmed: Your email address has been successfully confirmed. + send_instructions: You will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email. + send_paranoid_instructions: If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email. + failure: + already_authenticated: You are already signed in. + inactive: Your account is not activated yet. + invalid: Invalid %{authentication_keys} or password. + last_attempt: You have one more attempt before your account is locked. + locked: Your account is locked. + not_found_in_database: Invalid %{authentication_keys} or password. + pending: Your account is still under review. + timeout: Your session expired. Please sign in again to continue. + unauthenticated: You need to sign in or sign up before continuing. + unconfirmed: You have to confirm your email address before continuing. + mailer: + confirmation_instructions: + action: Verify email address + action_with_app: Confirm and return to %{app} + explanation: You have created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email. + explanation_when_pending: You applied for an invite to %{host} with this email address. Once you confirm your e-mail address, we will review your application. You can login to change your details or delete your account, but you cannot access most of the functions until your account is approved. If your application is rejected, your data will be removed, so no further action will be required from you. If this wasn't you, please ignore this email. + extra_html: Please also check out the rules of the server and our terms of service. + subject: 'Mastodon: Confirmation instructions for %{instance}' + title: Verify email address + email_changed: + explanation: 'The email address for your account is being changed to:' + extra: If you did not change your email, it is likely that someone has gained access to your account. Please change your password immediately or contact the server admin if you're locked out of your account. + subject: 'Mastodon: Email changed' + title: New email address + password_change: + explanation: The password for your account has been changed. + extra: If you did not change your password, it is likely that someone has gained access to your account. Please change your password immediately or contact the server admin if you're locked out of your account. + subject: 'Mastodon: Password changed' + title: Password changed + reconfirmation_instructions: + explanation: Confirm the new address to change your email. + extra: If this change wasn't initiated by you, please ignore this email. The email address for the Mastodon account won't change until you access the link above. + subject: 'Mastodon: Confirm email for %{instance}' + title: Verify email address + reset_password_instructions: + action: Change password + explanation: You requested a new password for your account. + extra: If you didn't request this, please ignore this email. Your password won't change until you access the link above and create a new one. + subject: 'Mastodon: Reset password instructions' + title: Password reset + two_factor_disabled: + explanation: Two-factor authentication for your account has been disabled. Login is now possible using only e-mail address and password. + subject: 'Mastodon: Two-factor authentication disabled' + title: 2FA disabled + two_factor_enabled: + explanation: Two-factor authentication has been enabled for your account. A token generated by the paired TOTP app will be required for login. + subject: 'Mastodon: Two-factor authentication enabled' + title: 2FA enabled + two_factor_recovery_codes_changed: + explanation: The previous recovery codes have been invalidated and new ones generated. + subject: 'Mastodon: Two-factor recovery codes re-generated' + title: 2FA recovery codes changed + unlock_instructions: + subject: 'Mastodon: Unlock instructions' + webauthn_credential: + added: + explanation: The following security key has been added to your account + subject: 'Mastodon: New security key' + title: A new security key has been added + deleted: + explanation: The following security key has been deleted from your account + subject: 'Mastodon: Security key deleted' + title: One of your security keys has been deleted + webauthn_disabled: + explanation: Authentication with security keys has been disabled for your account. Login is now possible using only the token generated by the paired TOTP app. + subject: 'Mastodon: Authentication with security keys disabled' + title: Security keys disabled + webauthn_enabled: + explanation: Security key authentication has been enabled for your account. Your security key can now be used for login. + subject: 'Mastodon: Security key authentication enabled' + title: Security keys enabled + omniauth_callbacks: + failure: Could not authenticate you from %{kind} because “%{reason}”. + success: Successfully authenticated from %{kind} account. + passwords: + no_token: You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided. + send_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email. + send_paranoid_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email. + updated: Your password has been changed successfully. You are now signed in. + updated_not_active: Your password has been changed successfully. + registrations: + destroyed: Bye! Your account has been successfully cancelled. We hope to see you again soon. + signed_up: Welcome! You have signed up successfully. + signed_up_but_inactive: You have signed up successfully. However, we could not sign you in because your account is not yet activated. + signed_up_but_locked: You have signed up successfully. However, we could not sign you in because your account is locked. + signed_up_but_pending: A message with a confirmation link has been sent to your email address. After you click the link, we will review your application. You will be notified if it is approved. + signed_up_but_unconfirmed: A message with a confirmation link has been sent to your email address. Please follow the link to activate your account. Please check your spam folder if you didn't receive this email. + update_needs_confirmation: You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address. Please check your spam folder if you didn't receive this email. + updated: Your account has been updated successfully. + sessions: + already_signed_out: Signed out successfully. + signed_in: Signed in successfully. + signed_out: Signed out successfully. + unlocks: + send_instructions: You will receive an email with instructions for how to unlock your account in a few minutes. Please check your spam folder if you didn't receive this email. + send_paranoid_instructions: If your account exists, you will receive an email with instructions for how to unlock it in a few minutes. Please check your spam folder if you didn't receive this email. + unlocked: Your account has been unlocked successfully. Please sign in to continue. + errors: + messages: + already_confirmed: was already confirmed, please try signing in + confirmation_period_expired: needs to be confirmed within %{period}, please request a new one + expired: has expired, please request a new one + not_found: not found + not_locked: was not locked + not_saved: + one: '1 error prohibited this %{resource} from being saved:' + other: "%{count} errors prohibited this %{resource} from being saved:" diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml index eaee27b888..07a115cc7d 100644 --- a/config/locales/devise.eo.yml +++ b/config/locales/devise.eo.yml @@ -6,7 +6,7 @@ eo: send_instructions: Vi ricevos retmesaĝon kun instrukcioj por konfirmi vian retadreson ene de kelkaj minutoj. Bonvolu kontroli vian spamujon se vi ne ricevis ĉi tiun retmesaĝon. send_paranoid_instructions: Se via retadreso ekzistas en nia datumbazo, vi ricevos retmesaĝon kun instrukcioj por konfirmi vian retadreson ene de kelkaj minutoj. Bonvolu kontroli vian spamujon se vi ne ricevis ĉi tiun retmesaĝon. failure: - already_authenticated: Vi jam salutis. + already_authenticated: Vi jam ensalutis. inactive: Via konto ankoraŭ ne estas konfirmita. invalid: Nevalida %{authentication_keys} aŭ pasvorto. last_attempt: Vi ankoraŭ povas provi unufoje antaŭ ol via konto estos ŝlosita. @@ -52,7 +52,7 @@ eo: title: la du-etapa aŭtentigo estas malŝaltita two_factor_enabled: explanation: Dufaktora aŭtentigo sukcese ebligita por via akonto. Vi bezonos ĵetonon kreitan per parigitan aplikaĵon por ensaluti. - subject: 'Mastodon: dufaktora aŭtentigo ebligita' + subject: 'Mastodon: Dufaktora aŭtentigo ebligita' title: 2FA aktivigita two_factor_recovery_codes_changed: explanation: La antaŭaj reakiraj kodoj estis nuligitaj kaj novaj estis generitaj. @@ -96,9 +96,9 @@ eo: update_needs_confirmation: Vi sukcese ĝisdatigis vian konton, sed ni bezonas kontroli vian novan retadreson. Bonvolu kontroli viajn retmesaĝojn kaj sekvi la konfirman ligilon por konfirmi vian novan retadreson. Bonvolu kontroli vian spamujon, se vi ne ricevis ĉi tiun retmesaĝon. updated: Via konto estis sukcese ĝisdatigita. sessions: - already_signed_out: Sukcese adiaŭis. - signed_in: Sukcese salutis. - signed_out: Sukcese adiaŭis. + already_signed_out: Sukcese elsalutis. + signed_in: Sukcese ensalutis. + signed_out: Sukcese elsalutis. unlocks: send_instructions: Vi ricevos retmesaĝon kun instrukcioj por malŝlosi vian konton ene de kelkaj minutoj. Bonvolu kontroli vian spamujon, se vi ne ricevis ĉi tiun retmesaĝon. send_paranoid_instructions: Se via konto ekzistas, vi ricevos retmesaĝon kun instrukcioj por malŝlosi ĝin ene de kelkaj minutoj. Bonvolu kontroli vian spamujon se vi ne ricevis ĉi tiun retmesaĝon. diff --git a/config/locales/devise.ko.yml b/config/locales/devise.ko.yml index cd949d772d..45e5e47f85 100644 --- a/config/locales/devise.ko.yml +++ b/config/locales/devise.ko.yml @@ -79,7 +79,7 @@ ko: title: 보안 키 활성화 됨 omniauth_callbacks: failure: '"%{reason}" 때문에 당신을 %{kind}에서 인증할 수 없습니다.' - success: 성공적으로 %{kind} 계정을 인증 했습니다. + success: "%{kind} 계정을 성공적으로 인증했습니다." passwords: no_token: 패스워드 재설정 이메일을 거치지 않고는 여기에 올 수 없습니다. 만약 패스워드 재설정 메일에서 온 것이라면 URL이 맞는지 확인해 주세요. send_instructions: 당신의 이메일 주소가 우리의 DB에 있다면 패스워드 복구 링크가 몇 분 이내에 메일로 발송 됩니다. 만약 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요. @@ -89,11 +89,11 @@ ko: registrations: destroyed: 안녕히 가세요! 계정이 성공적으로 제거되었습니다. 다시 만나기를 희망합니다. signed_up: 안녕하세요! 성공적으로 가입했습니다. - signed_up_but_inactive: 성공적으로 가입 했습니다. 그러나, 계정이 활성화 되지 않았기 때문에 아직 로그인 할 수 없습니다. - signed_up_but_locked: 성공적으로 가입 했습니다. 그러나, 계정이 잠겨있기 때문에 아직 로그인 할 수 없습니다. + signed_up_but_inactive: 성공적으로 가입했습니다. 하지만 계정이 활성화되지 않았기 때문에 아직 로그인할 수 없습니다. + signed_up_but_locked: 성공적으로 가입했습니다. 하지만 계정이 잠겨있기 때문에 아직 로그인할 수 없습니다. signed_up_but_pending: 확인 링크를 포함한 메일이 발송 되었습니다. 링크를 클릭한 이후, 우리가 당신의 신청양식을 검토합니다. 승인이 되면 알림을 발송합니다. signed_up_but_unconfirmed: 확인 링크를 포함한 메일이 발송 되었습니다. 링크를 클릭해 계정을 활성화 하세요. 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요. - update_needs_confirmation: 계정 정보를 업데이트 했습니다. 하지만 새 이메일 주소에 대한 확인이 필요합니다. 이메일을 확인 한 후 링크를 통해 새 이메일을 확인 하세요. 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요. + update_needs_confirmation: 계정 정보를 성공적으로 업데이트했으며, 새 이메일 주소에 대한 확인이 필요합니다. 이메일로 전달된 링크를 따라 새 이메일을 확인하세요. 메일을 받지 못하셨다면 스팸 폴더를 확인해 주세요. updated: 계정 정보가 성공적으로 업데이트 되었습니다. sessions: already_signed_out: 성공적으로 로그아웃 되었습니다. diff --git a/config/locales/devise.sl.yml b/config/locales/devise.sl.yml index 6553e3cd61..be0f98ae11 100644 --- a/config/locales/devise.sl.yml +++ b/config/locales/devise.sl.yml @@ -4,7 +4,7 @@ sl: confirmations: confirmed: Vaš e-poštni naslov je bil uspešno potrjen. send_instructions: V nekaj minutah boste prejeli e-poštno sporočilo z navodili za potrditev vašega e-poštnega naslova. Če niste prejeli e-poštnega sporočila, preverite mapo neželena pošta. - send_paranoid_instructions: Če vaš e-poštni naslov obstaja v naši podatkovni bazi, boste v nekaj minutah prejeli e-poštno sporočilo z navodili za potrditev vašega e-poštnega naslova. Če niste prejeli e-poštnega sporočila, preverite mapo neželena pošta. + send_paranoid_instructions: Če vaš e-poštni naslov obstaja v naši zbirki podatkov, boste v nekaj minutah prejeli e-poštno sporočilo z navodili za potrditev vašega e-poštnega naslova. Če niste prejeli e-poštnega sporočila, preverite mapo neželena pošta. failure: already_authenticated: Ste že prijavljeni. inactive: Vaš račun še ni aktiviran. @@ -21,37 +21,37 @@ sl: action: Potrdi e-poštni naslov action_with_app: Potrdi in se vrni v %{app} explanation: S tem e-poštnim naslovom ste ustvarili račun na %{host}. Z enim samim klikom ga aktivirate. Če to niste bili vi, prosimo, prezrite to e-poštno sporočilo. - explanation_when_pending: S tem e-poštnim naslovom ste zaprosili za povabilo na %{host}. Ko potrdite svoj e-poštni naslov, bomo pregledali vašo prijavo. Do takrat se ne morete prijaviti. Če bo vaša prijava zavrnjena, bodo vaši podatki odstranjeni, zato ne bo potrebno nadaljnje ukrepanje. Če to niste bili vi, prezrite to e-poštno sporočilo. - extra_html: Preverite tudi pravila vozlišča in naše pogoje storitve. + explanation_when_pending: S tem e-poštnim naslovom ste zaprosili za povabilo na %{host}. Ko potrdite svoj e-poštni naslov, bomo pregledali vašo prijavo. Do takrat se ne morete prijaviti. Če bo vaša prijava zavrnjena, bodo vaši podatki odstranjeni, zato nadaljnje ukrepanje ne bo potrebno. Če to niste bili vi, prezrite to e-poštno sporočilo. + extra_html: Preverite tudi pravila strežnika in naše pogoje storitve. subject: 'Mastodon: Navodila za potrditev za %{instance}' title: Potrdi e-poštni naslov email_changed: - explanation: 'E-poštni naslov za vaš račun je spremenjen na:' - extra: Če niste spremenili e-pošte, je verjetno, da je nekdo pridobil dostop do vašega računa. Prosim, zamenjajte geslo takoj. Če ste blokirani iz svojega računa se obrnite na skrbnika vozlišča. - subject: 'Mastodon: E-pošta je spremenjena' + explanation: 'E-poštni naslov za vaš račun je spremenjen v:' + extra: Če niste spremenili e-pošte, je verjetno, da je nekdo pridobil dostop do vašega računa. Prosimo, zamenjajte geslo takoj ali se obrnite na skbrnika, če ste izklopljeni iz svojega računa. + subject: 'Mastodon: e-poštni naslov je spremenjen' title: Novi e-poštni naslov password_change: explanation: Geslo za vaš račun je bilo spremenjeno. - extra: Če niste spremenili gesla, je verjetno, da je nekdo pridobil dostop do vašega računa. Prosim, zamenjajte geslo takoj. Če ste blokirani iz svojega računa se obrnite na skrbnika vozlišča. - subject: 'Mastodon: Geslo je spremenjeno' + extra: Če niste spremenili gesla, je verjetno, da je nekdo pridobil dostop do vašega računa. Prosimo, zamenjajte geslo takoj. Če ste blokirani iz svojega računa, se obrnite na skrbnika strežnika. + subject: 'Mastodon: geslo je spremenjeno' title: Geslo je spremenjeno reconfirmation_instructions: explanation: Potrdite novi naslov, da spremenite svoj e-poštni naslov. - extra: Če te spremembe niste sprožili, prezrite to e-poštno sporočilo. E-poštni naslov za račun Mastodon se ne bo spremenil, dokler ne kliknete na zgornjo povezavo. - subject: 'Mastodon: Potrdite e-pošto za %{instance}' + extra: Če te spremembe niste sprožili, prezrite to e-poštno sporočilo. E-poštni naslov za račun Mastodon se ne bo spremenil, dokler ne kliknete zgornje povezave. + subject: 'Mastodon: potrdite e-pošto za %{instance}' title: Potrdi e-poštni naslov reset_password_instructions: action: Spremeni geslo explanation: Zahtevali ste novo geslo za svoj račun. - extra: Če tega niste zahtevali, prezrite to e-poštno sporočilo. Vaše geslo se ne bo spremenilo, dokler ne kliknete na zgornjo povezavo in ustvarite novega. - subject: 'Mastodon: Navodila za ponastavitev gesla' - title: Ponastavi geslo + extra: Če tega niste zahtevali, prezrite to e-poštno sporočilo. Vaše geslo se ne bo spremenilo, dokler ne kliknete zgornje povezave in ustvarite novega. + subject: 'Mastodon: navodila za ponastavitev gesla' + title: Ponastavitev gesla two_factor_disabled: explanation: Dvojno oz. dvofazno preverjanje pristnosti je za vaš račun onemogočeno. Prijava je zdaj možna le z e-poštnim naslovom in geslom. subject: 'Mastodon: dvojno preverjanje pristnosti je onemogočeno' title: 2FA onemogočeno two_factor_enabled: - explanation: Dvojno oz. dvofazno preverjanje pristnosti je za vaš račun omogočena. Žeton, izdelan z aplikacijo TOTP, bo zahtevan zs prijavo. + explanation: Dvojno oz. dvofazno preverjanje pristnosti je za vaš račun omogočeno. Žeton, izdelan z aplikacijo TOTP, bo zahtevan zs prijavo. subject: 'Mastodon: dvojno preverjanje pristnosti je omogočeno' title: 2FA omogočeno two_factor_recovery_codes_changed: @@ -59,7 +59,7 @@ sl: subject: 'Mastodon: varnostne obnovitvene kode za dvojno preverjanje pristnosti so ponovno izdelane' title: obnovitvene kode 2FA spremenjene unlock_instructions: - subject: 'Mastodon: Odkleni navodila' + subject: 'Mastodon: navodila za odklepanje' webauthn_credential: added: explanation: Naslednja varnostna koda je dodana vašemu računu @@ -70,30 +70,30 @@ sl: subject: 'Mastodon: varnostna koda izbrisana' title: Ena od vaših varnostnih kod je bila izbrisana webauthn_disabled: - explanation: Overjanje pristnosti z varnostnimi ključi je za vaš račun onemogočeno. Prijava je zdaj možna le z uporabo žetona, ki ga izdela aplikacijo TOTP. + explanation: Overjanje pristnosti z varnostnimi kodami je za vaš račun onemogočeno. Prijava je zdaj možna le z uporabo žetona, ki ga izdela oparjena aplikacija TOTP. subject: 'Mastodon: overjanje pristnosti z varnosnimi kodami je onemogočeno' title: Varnostne kode onemogočene webauthn_enabled: - explanation: Overjanje z varnostnim ključem je omogočeno za vaš račun. Svoj varnostni ključ lahko zdaj uporabite za prijavo. + explanation: Overjanje z varnostno kodo je za vaš račun omogočeno. Svojo varnostno kodo lahko zdaj uporabite za prijavo. subject: 'Mastodon: preverjanje pristnosti z varnostno kodo je omogočeno' title: Varnostne kode omogočene omniauth_callbacks: failure: Overitev iz %{kind} ni možna zaradi "%{reason}". success: Overitev iz računa %{kind} je bila uspešna. passwords: - no_token: Do te strani ne morete dostopati, ne da bi prišli iz e-poštne za ponastavitev gesla. Če prihajate iz e-poštne za ponastavitev gesla, se prepričajte, da ste uporabili celoten navedeni URL. - send_instructions: Če vaš e-poštni naslov obstaja v naši bazi podatkov, boste v nekaj minutah na vaš e-poštni naslov prejeli povezavo za obnovitev gesla. Če niste prejeli e-pošte, preverite mapo z neželeno pošto. - send_paranoid_instructions: Če vaš e-poštni naslov obstaja v naši bazi podatkov, boste v nekaj minutah na vaš e-poštni naslov prejeli povezavo za obnovitev gesla. Če niste prejeli e-pošte, preverite mapo z neželeno pošto. + no_token: Do te strani ne morete dostopati, ne da bi prišli iz e-pošte za ponastavitev gesla. Če prihajate iz e-pošte za ponastavitev gesla, se prepričajte, da ste uporabili celoten navedeni URL. + send_instructions: Če vaš e-poštni naslov obstaja v naši zbirki podatkov, boste v nekaj minutah na svoj e-poštni naslov prejeli povezavo za obnovitev gesla. Če niste prejeli e-pošte, preverite mapo z neželeno pošto. + send_paranoid_instructions: Če vaš e-poštni naslov obstaja v naši zbirki podatkov, boste v nekaj minutah na svoj e-poštni naslov prejeli povezavo za obnovitev gesla. Če niste prejeli e-pošte, preverite mapo z neželeno pošto. updated: Vaše geslo je bilo uspešno spremenjeno. Zdaj ste prijavljeni. updated_not_active: Vaše geslo je bilo uspešno spremenjeno. registrations: - destroyed: Adijo! Vaš račun je bil uspešno preklican. Upamo, da vas bomo kmalu spet videli. + destroyed: Srečno! Vaš račun je bil uspešno preklican. Upamo, da vas bomo kmalu spet videli. signed_up: Dobrodošli! Uspešno ste se vpisali. signed_up_but_inactive: Uspešno ste se vpisali. Vendar vas nismo mogli prijaviti, ker vaš račun še ni aktiviran. signed_up_but_locked: Uspešno ste se vpisali. Vendar vas nismo mogli prijaviti, ker je vaš račun zaklenjen. - signed_up_but_pending: Na vaš e-poštni naslov je bilo poslano sporočilo s povezavo za potrditev. Ko kliknete na povezavo, bomo pregledali vašo prijavo. Obveščeni boste, če bo odobren. + signed_up_but_pending: Na vaš e-poštni naslov je bilo poslano sporočilo s povezavo za potrditev. Ko kliknete povezavo, bomo pregledali vašo prijavo. Obveščeni boste, če bo odobrena. signed_up_but_unconfirmed: Na vaš e-poštni naslov je bilo poslano sporočilo s povezavo za potrditev. Sledite povezavi, da aktivirate svoj račun. Če niste prejeli te e-pošte, preverite mapo z neželeno pošto. - update_needs_confirmation: Uspešno ste posodobili račun, vendar moramo potrditi vaš novi e-poštni naslov. Preverite svojo e-pošto in sledite povezavi za potrditev, da potrdite nov e-poštni naslov. Če niste prejeli te e-poše, preverite mapo z neželeno pošto. + update_needs_confirmation: Uspešno ste posodobili račun, vendar moramo potrditi vaš novi e-poštni naslov. Preverite svojo e-pošto in sledite povezavi za potrditev, da potrdite nov e-poštni naslov. Če niste prejeli te e-pošte, preverite mapo z neželeno pošto. updated: Vaš račun je bil uspešno posodobljen. sessions: already_signed_out: Uspešno ste se odjavili. @@ -111,7 +111,7 @@ sl: not_found: ni najdeno not_locked: ni bil zaklenjen not_saved: - few: "%{count} napake so preprečile shranjevanje %{resource}:" + few: "%{count} napake so preprečile shranjevanje vira %{resource}:" one: '1 napaka je preprečila shranjevanje %{resource}:' - other: "%{count} napak je preprečilo shranjevanje %{resource}:" - two: "%{count} napaki sta preprečili shranjevanje %{resource}:" + other: "%{count} napak je preprečilo shranjevanje vira %{resource}:" + two: "%{count} napaki sta preprečili shranjevanje vira %{resource}:" diff --git a/config/locales/devise.th.yml b/config/locales/devise.th.yml index e465007967..38d7a0c528 100644 --- a/config/locales/devise.th.yml +++ b/config/locales/devise.th.yml @@ -91,7 +91,7 @@ th: signed_up: ยินดีต้อนรับ! คุณได้ลงทะเบียนสำเร็จ signed_up_but_inactive: คุณได้ลงทะเบียนสำเร็จ อย่างไรก็ตามเราไม่สามารถลงชื่อคุณเข้าได้เนื่องจากยังไม่ได้เปิดใช้งานบัญชีของคุณ signed_up_but_locked: คุณได้ลงทะเบียนสำเร็จ อย่างไรก็ตามเราไม่สามารถลงชื่อคุณเข้าได้เนื่องจากมีการล็อคบัญชีของคุณอยู่ - signed_up_but_pending: ส่งข้อความพร้อมลิงก์ยืนยันไปยังที่อยู่อีเมลของคุณแล้ว หลังจากคุณคลิกลิงก์ เราจะตรวจทานใบสมัครของคุณ คุณจะได้รับการแจ้งเตือนหากมีการอนุมัติใบสมัคร + signed_up_but_pending: ส่งข้อความพร้อมลิงก์ยืนยันไปยังที่อยู่อีเมลของคุณแล้ว หลังจากคุณคลิกลิงก์ เราจะตรวจทานใบสมัครของคุณ คุณจะได้รับการแจ้งเตือนหากใบสมัครได้รับการอนุมัติ signed_up_but_unconfirmed: ส่งข้อความพร้อมลิงก์ยืนยันไปยังที่อยู่อีเมลของคุณแล้ว โปรดไปตามลิงก์เพื่อเปิดใช้งานบัญชีของคุณ โปรดตรวจสอบโฟลเดอร์สแปมของคุณหากคุณไม่ได้รับอีเมลนี้ update_needs_confirmation: คุณได้อัปเดตบัญชีของคุณสำเร็จ แต่เราจำเป็นต้องยืนยันที่อยู่อีเมลใหม่ของคุณ โปรดตรวจสอบอีเมลของคุณแล้วไปตามลิงก์ยืนยันเพื่อยืนยันที่อยู่อีเมลใหม่ของคุณ โปรดตรวจสอบโฟลเดอร์สแปมของคุณหากคุณไม่ได้รับอีเมลนี้ updated: อัปเดตบัญชีของคุณสำเร็จ diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml index 36ce203517..e500e1d9e8 100644 --- a/config/locales/devise.zh-TW.yml +++ b/config/locales/devise.zh-TW.yml @@ -2,9 +2,9 @@ zh-TW: devise: confirmations: - confirmed: 您的電子信箱地址已確認成功。 + confirmed: 您的電子郵件地址已確認成功。 send_instructions: 幾分鐘後您將收到確認信件。若未收到此信件,請檢查垃圾郵件資料夾。 - send_paranoid_instructions: 如果您的電子信箱存在於我們的資料庫,您將會在幾分鐘內收到確認信。若未收到請檢查垃圾郵件資料夾。 + send_paranoid_instructions: 如果您的電子郵件存在於我們的資料庫,您將會在幾分鐘內收到確認信。若未收到請檢查垃圾郵件資料夾。 failure: already_authenticated: 您已登入。 inactive: 您的帳號尚未啟用。 @@ -15,31 +15,31 @@ zh-TW: pending: 您的帳號仍在審核中。 timeout: 登入階段逾時。請重新登入以繼續。 unauthenticated: 您必須先登入或註冊才能繼續使用。 - unconfirmed: 您必須先確認電子信箱才能繼續使用。 + unconfirmed: 您必須先確認電子郵件才能繼續使用。 mailer: confirmation_instructions: - action: 驗證電子信箱地址 + action: 驗證電子郵件地址 action_with_app: 確認並返回 %{app} - explanation: 您已經在 %{host} 上以此電子信箱地址建立了一支帳號。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。 - explanation_when_pending: 您使用此電子信箱地址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳號,但直到您的帳號被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。 + explanation: 您已經在 %{host} 上以此電子郵件地址建立了一支帳號。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。 + explanation_when_pending: 您使用此電子郵件地址申請了 %{host} 的邀請。當您確認電子郵件信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳號,但直到您的帳號被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。 extra_html: 同時也請看看伺服器規則服務條款。 subject: Mastodon:%{instance} 確認說明 - title: 驗證電子信箱地址 + title: 驗證電子郵件地址 email_changed: - explanation: 您帳號的電子信箱地址將變更為: - extra: 若您未變更電子信箱,那麼很有可能是某人取得了您帳號的存取權限。請立刻變更密碼,或當帳號被鎖定時,請聯絡伺服器的管理員。 - subject: Mastodon:已變更電子信箱 - title: 新電子信箱地址 + explanation: 您帳號的電子郵件地址將變更為: + extra: 若您未變更電子郵件,那麼很有可能是某人取得了您帳號的存取權限。請立刻變更密碼,或當帳號被鎖定時,請聯絡伺服器的管理員。 + subject: Mastodon:已變更電子郵件 + title: 新電子郵件地址 password_change: explanation: 您帳號的密碼已變更。 extra: 若您未變更密碼,那麼很有可能是某人取得了您帳號的存取權限。請立刻變更密碼,或若帳號被鎖定時,請聯絡伺服器的管理員。 subject: Mastodon:已變更密碼 title: 密碼已變更 reconfirmation_instructions: - explanation: 請確認新的電子信箱地址以變更。 - extra: 若此次變更不是由您開啟的,請忽略此信件。Mastodon 帳號的電子信箱地址在您存取上面的連結前不會變更。 - subject: Mastodon:確認 %{instance} 的電子信箱地址 - title: 驗證電子信箱地址 + explanation: 請確認新的電子郵件地址以變更。 + extra: 若此次變更不是由您起始的,請忽略此信件。Mastodon 帳號的電子郵件地址在您存取上面的連結前不會變更。 + subject: Mastodon:確認 %{instance} 的電子郵件地址 + title: 驗證電子郵件地址 reset_password_instructions: action: 變更密碼 explanation: 您已請求帳號的新密碼。 @@ -47,7 +47,7 @@ zh-TW: subject: Mastodon:重設密碼指引 title: 重設密碼 two_factor_disabled: - explanation: 您帳號的兩階段驗證已停用。現在只使用電子信箱及密碼登入。 + explanation: 您帳號的兩階段驗證已停用。現在只使用電子郵件及密碼登入。 subject: Mastodon:已停用兩階段驗證 title: 已停用 2FA two_factor_enabled: @@ -82,8 +82,8 @@ zh-TW: success: 成功透過 %{kind} 帳號登入。 passwords: no_token: 您必須透過密碼重設信件才能存取此頁面。若確實如此,請確定輸入的網址是完整的。 - send_instructions: 若電子信箱地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 - send_paranoid_instructions: 若電子信箱地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 + send_instructions: 若電子郵件地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 + send_paranoid_instructions: 若電子郵件地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。 updated: 您的密碼已成功變更,現在已經登入。 updated_not_active: 您的密碼已成功變更。 registrations: @@ -91,7 +91,7 @@ zh-TW: signed_up: 歡迎!您已成功註冊。 signed_up_but_inactive: 您已註冊成功,但由於您的帳號尚未啟用,我們暫時無法讓您登入。 signed_up_but_locked: 您已註冊成功,但由於您的帳號已被鎖定,我們無法讓您登入。 - signed_up_but_pending: 包含確認連結的訊息已寄到您的電子信箱。按下此連結後我們將審核您的申請。核准後將通知您。 + signed_up_but_pending: 包含確認連結的訊息已寄到您的電子郵件信箱。按下此連結後我們將審核您的申請。核准後將通知您。 signed_up_but_unconfirmed: 包含確認連結的訊息已寄到您的電子信箱。請前往連結以啟用帳號。若未收到請檢查垃圾郵件資料夾。 update_needs_confirmation: 已成功更新您的帳號,但仍需驗證您的新信箱。請檢查電子信箱並前往確認連結來確認新信箱位址。若未收到請檢查垃圾郵件資料夾。 updated: 您的帳號已成功更新。 diff --git a/config/locales/doorkeeper.bg.yml b/config/locales/doorkeeper.bg.yml index 7bfcec48a4..ba52a2ac37 100644 --- a/config/locales/doorkeeper.bg.yml +++ b/config/locales/doorkeeper.bg.yml @@ -3,8 +3,8 @@ bg: activerecord: attributes: doorkeeper/application: - name: Име - redirect_uri: URI за пренасочване + name: Име на приложението + redirect_uri: Пренасочващ URI scopes: Обхват website: Уебсайт на приложение errors: @@ -22,10 +22,10 @@ bg: authorize: Упълномощаване cancel: Отказ destroy: Унищожаване - edit: Редакция + edit: Редактиране submit: Изпращане confirmations: - destroy: Потвърждаваш ли изтриването? + destroy: Сигурни ли сте? edit: title: Редактиране на приложението form: @@ -60,6 +60,8 @@ bg: error: title: Възникна грешка new: + prompt_html: "%{client_name} иска разрешение да има достъп до акаунта ви. Приложение от трета страна е.Ако не му се доверявате, то може да не го упълномощявате." + review_permissions: Преглед на разрешенията title: Изисква се упълномощаване show: title: Копирайте този код за удостоверяване и го поставете в приложението. @@ -67,16 +69,22 @@ bg: buttons: revoke: Отмяна confirmations: - revoke: Потвърждаваш ли отмяната? + revoke: Сигурни ли сте? index: - title: Твоите упълномощени приложения + authorized_at: Упълномощено на %{date} + description_html: Има приложения, можещи да имат достъп до акаунта ви, използвайки API. Ако тук има приложения, които не знаете, или работещи неправилно, то може да им откажете достъпа. + last_used_at: Последно обновено на %{date} + never_used: Никога използвано + scopes: Разрешения + superapp: Вътрешно + title: Упълномощените ви приложения errors: messages: access_denied: Заявката беше отказана от собственика на ресурса или от сървъра за упълномощаване. credential_flow_not_configured: Resource Owner Password Credentials предизвика грешка, заради това, че настройките за Doorkeeper.configure.resource_owner_from_credentials липсват. invalid_client: Удостоверяването на клиента предизвика грешка, поради непознат клиент, липсващо клиентско удостоверяване, или заради това, че методът на удостоверяване не се поддържа. invalid_grant: Предоставеното удостоверение за достъп е невалидно, изтекло, отхвърлено, не съвпада с пренасочващото URI, използвано в заявката за удостоверение, или е бил издадено от друг клиент. - invalid_redirect_uri: Наличното пренасочващо URI е невалидно. + invalid_redirect_uri: Включеният пренасочващ URI адрес е невалиден. invalid_request: missing_param: 'Липсва задължителен параметър: %{value}.' request_not_authorized: Заявката трябва да бъде упълномощена. Необходимият параметър за разрешаване на заявка липсва или е невалиден. @@ -104,6 +112,33 @@ bg: authorized_applications: destroy: notice: Приложението е отказано. + grouped_scopes: + access: + read: Достъп само за четене + read/write: Достъп за четене и запис + write: Достъп само за запис + title: + accounts: Акаунти + admin/accounts: Администриране на акаунтите + admin/all: Всички административни функции + admin/reports: Администриране на докладите + all: Всичко + blocks: Блокирания + bookmarks: Отметки + conversations: Разговори + crypto: Криптиране от край до край + favourites: Любими + filters: Филтри + follow: Отношения + follows: Последвания + lists: Списъци + media: Прикачена мултимедия + mutes: Заглушения + notifications: Известия + push: Push-известия + reports: Доклади + search: Търсене + statuses: Публикации layouts: admin: nav: @@ -118,6 +153,7 @@ bg: admin:write: промяна на всички данни на сървъра admin:write:accounts: извършване на действия за модериране на акаунти admin:write:reports: извършване на действия за модериране на докладвания + crypto: употреба на криптиране от край до край follow: следването, блокирането, деблокирането и отмяната на следването на акаунтите push: получаване на вашите изскачащи известия read: четенето на данните от твоя акаунт @@ -132,12 +168,13 @@ bg: read:notifications: преглед на вашите известия read:reports: преглед на вашите докладвания read:search: търсене от ваше име - read:statuses: преглед на всички състояния - write: публикуването от твое име + read:statuses: преглед на всички публикации + write: промяна на всичките ви данни на акаунта write:accounts: промяна на вашия профил write:blocks: блокиране на акаунти и домейни write:bookmarks: отмятане на състояния - write:favourites: любими състояния + write:conversations: заглушаване и изтриване на разговорите + write:favourites: любими публикации write:filters: създаване на филтри write:follows: последване на хора write:lists: създаване на списъци diff --git a/config/locales/doorkeeper.en-GB.yml b/config/locales/doorkeeper.en-GB.yml index 3f0ea6b7b7..1f13709bee 100644 --- a/config/locales/doorkeeper.en-GB.yml +++ b/config/locales/doorkeeper.en-GB.yml @@ -77,7 +77,73 @@ en-GB: never_used: Never used scopes: Permissions superapp: Internal + title: Your authorised applications + errors: + messages: + access_denied: The resource owner or authorisation server denied the request. + credential_flow_not_configured: Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured. + invalid_client: Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method. + invalid_grant: The provided authorisation grant is invalid, expired, revoked, does not match the redirection URI used in the authorisation request, or was issued to another client. + invalid_redirect_uri: The redirect URI included is not valid. + invalid_request: + missing_param: 'Missing required parameter: %{value}.' + request_not_authorized: Request need to be authorised. Required parameter for authorising request is missing or invalid. + unknown: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed. + invalid_resource_owner: The provided resource owner credentials are not valid, or resource owner cannot be found + invalid_scope: The requested scope is invalid, unknown, or malformed. + invalid_token: + expired: The access token expired + revoked: The access token was revoked + unknown: The access token is invalid + resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfiged. + server_error: The authorisation server encountered an unexpected condition which prevented it from fulfilling the request. + temporarily_unavailable: The authorisation server is currently unable to handle the request due to a temporary overloading or maintenance of the server. + unauthorized_client: The client is not authorised to perform this request using this method. + unsupported_grant_type: The authorisation grant type is not supported by the authorisation server. + unsupported_response_type: The authorisation server does not support this response type. + flash: + applications: + create: + notice: Application created. + destroy: + notice: Application deleted. + update: + notice: Application updated. + authorized_applications: + destroy: + notice: Application revoked. + grouped_scopes: + access: + read: Read-only access + read/write: Read and write access + write: Write-only access + title: + accounts: Accounts + admin/accounts: Administration of accounts + admin/all: All administrative functions + admin/reports: Administration of reports + all: Everything + blocks: Blocks + bookmarks: Bookmarks + conversations: Conversations + crypto: End-to-end encryption + favourites: Favourites + filters: Filters + follow: Relationships + follows: Follows + lists: Lists + media: Media attachments + mutes: Mutes + notifications: Notifications + push: Push notifications + reports: Reports + search: Search + statuses: Posts layouts: + admin: + nav: + applications: Applications + oauth2_provider: OAuth2 Provider application: title: OAuth authorisation required scopes: diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml index 34b4fafaa9..419b58b94f 100644 --- a/config/locales/doorkeeper.eo.yml +++ b/config/locales/doorkeeper.eo.yml @@ -69,6 +69,7 @@ eo: confirmations: revoke: Ĉu vi certas? index: + superapp: Interna title: Viaj rajtigitaj aplikaĵoj errors: messages: @@ -106,9 +107,12 @@ eo: notice: Aplikaĵo malrajtigita. grouped_scopes: title: + accounts: Kontoj + all: Ĉio blocks: Blokita bookmarks: Legosignoj favourites: Preferaĵoj + filters: Filtriloj lists: Listoj mutes: Silentigitaj reports: Raportoj diff --git a/config/locales/doorkeeper.ko.yml b/config/locales/doorkeeper.ko.yml index e645f20b2b..3526bab0e1 100644 --- a/config/locales/doorkeeper.ko.yml +++ b/config/locales/doorkeeper.ko.yml @@ -43,7 +43,7 @@ ko: new: 새 애플리케이션 scopes: 범위 show: 표시 - title: 당신의 애플리케이션들 + title: 내 응용프로그램 new: title: 새 애플리케이션 show: @@ -77,10 +77,10 @@ ko: never_used: 사용되지 않음 scopes: 권한 superapp: 내부 - title: 당신의 승인된 애플리케이션들 + title: 승인된 응용프로그램 errors: messages: - access_denied: 리소스 소유자 또는 권한 부여 서버가 요청을 거부했습니다. + access_denied: 리소스 소유자 또는 인증 서버가 요청을 거부했습니다. credential_flow_not_configured: Doorkeeper.configure.resource_owner_from_credentials의 설정이 되어있지 않아 리소스 소유자 패스워드 자격증명이 실패하였습니다. invalid_client: 알 수 없는 클라이언트이기 때문에 클라이언트 인증이 실패하였습니다, 클라이언트 자격증명이 포함되지 않았거나, 지원 되지 않는 메소드입니다. invalid_grant: 제공된 권한 부여가 잘못되거나, 만료되었거나, 취소되었거나, 권한 부여 요청에 사용된 리디렉션 URI가 일치하지 않거나, 다른 클라이언트에 지정되었습니다. diff --git a/config/locales/doorkeeper.oc.yml b/config/locales/doorkeeper.oc.yml index e45dd0245a..d86fbe793d 100644 --- a/config/locales/doorkeeper.oc.yml +++ b/config/locales/doorkeeper.oc.yml @@ -60,6 +60,7 @@ oc: error: title: I a agut un error new: + prompt_html: "%{client_name} volria l’autorizacion d’accedir a vòstre compte. Es una aplicacion tèrça.Se vos fisatz pas a ela, alara deuriatz pas l’autorizacion." review_permissions: Repassar las autorizacions title: Cal l’autorizacion show: @@ -71,6 +72,7 @@ oc: revoke: Ne sètz segur ? index: authorized_at: Autorizada lo %{date} + description_html: Aquestas aplicacions pòdon accedir a vòstre compte via l’API. S’i a d’aplicacions que coneissètz pas aicí o qu’una aplicacion se compòrta pas coma cal, podètz revocar son accès. last_used_at: Darrièra utilizacion lo %{date} never_used: Pas jamai utilizada scopes: Autorizacions diff --git a/config/locales/doorkeeper.sl.yml b/config/locales/doorkeeper.sl.yml index 5267b7fa25..1a27f62329 100644 --- a/config/locales/doorkeeper.sl.yml +++ b/config/locales/doorkeeper.sl.yml @@ -15,7 +15,7 @@ sl: fragment_present: ne more vsebovati fragmenta. invalid_uri: mora biti veljaven URI. relative_uri: mora biti absolutni URI. - secured_uri: mora biti HTTPS/SSL URI. + secured_uri: mora biti URI HTTPS/SSL. doorkeeper: applications: buttons: @@ -27,7 +27,7 @@ sl: confirmations: destroy: Ali ste prepričani? edit: - title: Uredi aplikacijo + title: Uredi program form: error: Ups! Preverite obrazec za morebitne napake help: @@ -82,7 +82,7 @@ sl: messages: access_denied: Lastnik virov ali strežnik pooblastil je zavrnil zahtevo. credential_flow_not_configured: Pretok geselskih pooblastil lastnika virov ni uspel, ker Doorkeeper.configure.resource_owner_from_credentials ni nastavljen. - invalid_client: Overitev odjemalca ni uspelo zaradi neznanega odjemalca, zaradi nevključitve overitve odjemalca ali zaradi nepodprte metode overitve. + invalid_client: Overitev odjemalca ni uspela zaradi neznanega odjemalca, zaradi nevključitve overitve odjemalca ali zaradi nepodprte metode overitve. invalid_grant: Predložena odobritev za pooblastilo je neveljavna, potekla, preklicana, se ne ujema z URI preusmeritvijo, ki je uporabljena v zahtevi za pooblastilo ali je bila izdana drugemu odjemalcu. invalid_redirect_uri: URI za preusmeritev ni veljaven. invalid_request: @@ -121,7 +121,7 @@ sl: accounts: Računi admin/accounts: Upravljanje računov admin/all: Vse skrbniške funkcije - admin/reports: Upravljanje poročil + admin/reports: Upravljanje prijav all: Vse blocks: Blokira bookmarks: Zaznamki @@ -136,7 +136,7 @@ sl: mutes: Utišani notifications: Obvestila push: Potisna obvestila - reports: Poročila + reports: Prijave search: Iskanje statuses: Objave layouts: @@ -145,7 +145,7 @@ sl: applications: Programi oauth2_provider: Ponudnik OAuth2 application: - title: Potrebna je OAuth pooblastitev + title: Potrebna je pooblastitev OAuth scopes: admin:read: preberi vse podatke na strežniku admin:read:accounts: preberi občutljive informacije vseh računov @@ -159,7 +159,7 @@ sl: read: preberi vse podatke svojega računa read:accounts: oglejte si podrobnosti računov read:blocks: oglejte si svoje blokirane - read:bookmarks: glejte svoje zaznamke + read:bookmarks: oglejte si svoje zaznamke read:favourites: oglejte si svoje priljubljene read:filters: oglejte si svoje filtre read:follows: oglejte si svoje sledilce diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index fc7fc9edf6..26540146f5 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1,5 +1,34 @@ --- en-GB: + about: + about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralisation! Own your data with Mastodon!' + contact_missing: Not set + contact_unavailable: N/A + hosted_on: Mastodon hosted on %{domain} + title: About + accounts: + follow: Follow + followers: + one: Follower + other: Followers + following: Following + instance_actor_flash: This account is a virtual actor used to represent the server itself and not any individual user. It is used for federation purposes and should not be suspended. + last_active: last active + link_verified_on: Ownership of this link was checked on %{date} + nothing_here: There is nothing here! + pin_errors: + following: You must be already following the person you want to endorse + posts: + one: Post + other: Posts + posts_tab_heading: Posts + admin: + account_actions: + action: Perform action + title: Perform moderation action on %{acct} + account_moderation_notes: + create: Leave note + created_msg: Moderation note successfully created! errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 4cabba4989..de18f97b2e 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -33,16 +33,19 @@ eo: accounts: add_email_domain_block: Bloki retadresan domajnon approve: Aprobi + approved_msg: Sukcese aprobis aliĝilon de %{username} are_you_sure: Ĉu vi certas? avatar: Profilbildo by_domain: Domajno change_email: + changed_msg: Retpoŝta adreso estis sukcese ŝanĝita! current_email: Nuna retadreso label: Ŝanĝi retadreson new_email: Nova retadreso submit: Ŝanĝi retadreson title: Ŝanĝi retadreson por %{username} change_role: + changed_msg: Rolo estis sukcese ŝanĝita! label: Ŝanĝi rolon no_role: Neniu rolo title: Ŝanĝi rolon por %{username} @@ -53,7 +56,9 @@ eo: delete: Forigi datumojn deleted: Forigita demote: Degradi + destroyed_msg: Datumoj de %{username} nun enviciĝis por esti forigita baldaǔ disable: Frostigi + disable_sign_in_token_auth: Malŝalti retpoŝtan ĵetonan aŭtentigon disable_two_factor_authentication: Malŝalti 2FA-n disabled: Frostigita display_name: Montrata nomo @@ -62,7 +67,9 @@ eo: email: Retpoŝto email_status: Stato de retpoŝto enable: Malfrostigi + enable_sign_in_token_auth: Ŝalti retpoŝtan ĵetonan aŭtentigon enabled: Ebligita + enabled_msg: Sukcese malfrostigis konton de %{username} followers: Sekvantoj follows: Sekvatoj header: Kapa bildo @@ -84,6 +91,7 @@ eo: active: Aktivaj all: Ĉio pending: Pritraktata + silenced: Limigita suspended: Suspendita title: Moderigado moderation_notes: Notoj de moderigado @@ -91,9 +99,14 @@ eo: most_recent_ip: Lasta IP no_account_selected: Neniu konto estis ŝanĝita ĉar neniu estis selektita no_limits_imposed: Neniu limito trudita + no_role_assigned: Sen rolo not_subscribed: Ne abonita pending: Pritraktata recenzo perform_full_suspension: Suspendi + previous_strikes: Antaǔaj admonoj + previous_strikes_description_html: + one: Ĉi tiu konto havas unu admonon. + other: Ĉi tiu konto havas %{count} admonojn. promote: Plirangigi protocol: Protokolo public: Publika @@ -110,6 +123,7 @@ eo: reset: Restarigi reset_password: Restarigi pasvorton resubscribe: Reaboni + role: Rolo search: Serĉi search_same_email_domain: Aliaj uzantoj kun la sama retpoŝta domajno search_same_ip: Aliaj uzantoj kun la sama IP @@ -125,6 +139,7 @@ eo: silence: Mutigita silenced: Silentigita statuses: Afiŝoj + strikes: Antaǔaj admonoj subscribe: Aboni suspend: Haltigu suspended: Suspendita @@ -145,19 +160,24 @@ eo: whitelisted: Permesita por federacio action_logs: action_types: + approve_appeal: Aprobis Apelacion approve_user: Aprobi Uzanton assigned_to_self_report: Atribui Raporton change_email_user: Ŝanĝi retpoŝton de uzanto + change_role_user: Ŝanĝi Rolon de Uzanton confirm_user: Konfirmi uzanton create_account_warning: Krei Averton create_announcement: Krei Anoncon + create_canonical_email_block: Krei Blokadon de Retpoŝto create_custom_emoji: Krei Propran Emoĝion create_domain_allow: Krei Domajnan Permeson create_domain_block: Krei Blokadon De Domajno create_email_domain_block: Krei Blokadon De Retpoŝta Domajno create_ip_block: Krei IP-regulon + create_user_role: Krei Rolon demote_user: Malpromocii Uzanton destroy_announcement: Forigi Anoncon + destroy_canonical_email_block: Forigi blokadon de retpoŝta adreso destroy_custom_emoji: Forigi Propran Emoĝion destroy_domain_allow: Forigi Domajnan Permeson destroy_domain_block: Forigi blokadon de domajno @@ -165,14 +185,17 @@ eo: destroy_ip_block: Forigi IP-regulon destroy_status: Forigi mesaĝon destroy_unavailable_domain: Forigi Nehaveblan Domajnon + destroy_user_role: Detrui Rolon disable_2fa_user: Malaktivigi 2FA-n disable_custom_emoji: Malaktivigi la proprajn emoĝiojn + disable_sign_in_token_auth_user: Malaktivigi Retpoŝtan Ĵetonon por Uzanto disable_user: Malaktivigi la uzanton enable_custom_emoji: Ebligi Propran Emoĝion enable_sign_in_token_auth_user: Aktivigi la aŭtentigon de peco per retpoŝto por la uzanto enable_user: Ebligi uzanton memorialize_account: Memorigu Konton promote_user: Promocii Uzanton + reject_appeal: Malaprobi Apelacion reject_user: Malakcepti Uzanton remove_avatar_user: Forigi la rolfiguron reopen_report: Remalfermi signalon @@ -190,7 +213,9 @@ eo: update_announcement: Ĝisdatigi anoncon update_custom_emoji: Ĝisdatigi proprajn emoĝiojn update_domain_block: Ĝigdatigi domajnan blokadon + update_ip_block: Krei IP-regulon update_status: Ĝisdatigi staton + update_user_role: Ĝisdatigi Rolon actions: approve_user_html: "%{name} aprobis registriĝon de %{target}" assigned_to_self_report_html: "%{name} asignis signalon %{target} al si mem" @@ -203,13 +228,16 @@ eo: create_domain_block_html: "%{name} blokis domajnon %{target}" create_email_domain_block_html: "%{name} blokis retpoŝtan domajnon %{target}" create_ip_block_html: "%{name} kreis regulon por IP %{target}" + create_user_role_html: "%{name} kreis rolon de %{target}" demote_user_html: "%{name} degradis uzanton %{target}" destroy_announcement_html: "%{name} forigis anoncon %{target}" + destroy_custom_emoji_html: "%{name} forigis emoĝion %{target}" destroy_domain_allow_html: "%{name} forigis domajnon %{target} el la blanka listo" destroy_domain_block_html: "%{name} malblokis domajnon %{target}" destroy_email_domain_block_html: "%{name} malblokis retpoŝtan domajnon %{target}" destroy_ip_block_html: "%{name} forigis regulon por IP %{target}" destroy_status_html: "%{name} forigis mesaĝojn de %{target}" + destroy_user_role_html: "%{name} forigis rolon de %{target}" disable_2fa_user_html: "%{name} malaktivigis la postulon de la dufaktora aŭtentigo por la uzanto %{target}" disable_custom_emoji_html: "%{name} neebligis la emoĝion %{target}" disable_user_html: "%{name} neebligis la saluton de la uzanto %{target}" @@ -284,12 +312,20 @@ eo: media_storage: Memorilo de aŭdovidaĵoj new_users: novaj uzantoj opened_reports: raportoj malfermitaj + pending_tags_html: + one: "%{count} pritraktota kradvorto" + other: "%{count} pritraktotaj kradvortoj" resolved_reports: raportoj solvitaj software: Programo space: Memorspaca uzado title: Kontrolpanelo + top_languages: Plej aktivaj lingvoj top_servers: Plej aktivaj serviloj website: Retejo + disputes: + appeals: + empty: Neniuj apelacioj estas trovitaj. + title: Apelacioj domain_allows: add_new: Aldoni domajnon al la blanka listo created_msg: Domajno estis sukcese aldonita al la blanka listo @@ -337,6 +373,10 @@ eo: title: Rekomendoj de sekvado instances: availability: + failures_recorded: + one: Malsukcesa provo dum %{count} tago. + other: Malsukcesa provo dum %{count} apartaj tagoj. + no_failures_recorded: Neniuj malsukcesoj en protokolo. title: Disponebleco warning: La lasta provo por konektiĝi al ĉi tiu servilo estis malsukcesa back_to_all: Ĉiuj @@ -344,25 +384,36 @@ eo: back_to_warning: Averta by_domain: Domajno content_policies: + comment: Interna noto policies: reject_media: Malakcepti la aŭdovidaĵojn reject_reports: Malakcepti raportojn silence: Kaŝu suspend: Suspendi policy: Politiko + reason: Publika kialo + title: Regularo de enhavo dashboard: instance_accounts_dimension: Plej sekvataj kontoj instance_accounts_measure: konservitaj kontoj instance_followers_measure: niaj sekvantoj tie instance_follows_measure: iliaj sekvantoj ĉi tie + instance_languages_dimension: Ĉefaj lingvoj instance_media_attachments_measure: stokitaj aŭdovidaj aldonaĵoj instance_reports_measure: raportoj pri ili instance_statuses_measure: konservitaj afiŝoj delivery: all: Ĉiuj + clear: Forviŝi liverajn erarojn + failing: Malsukcesas + restart: Restarti liveradon + stop: Halti liveradon unavailable: Nedisponebla delivery_available: Liverado disponeblas empty: Neniuj domajnoj trovitaj. + known_accounts: + one: "%{count} konata konto" + other: "%{count} konataj kontoj" moderation: all: Ĉiuj limited: Limigita @@ -425,6 +476,7 @@ eo: notes: one: "%{count} noto" other: "%{count} notoj" + action_log: Kontrola protokolo action_taken_by: Ago farita de actions: other_description_html: Vidu pli da elektebloj por kontroli la agadon de la konto kaj personecigi la komunikadon kun la konto pri kiu raporto. @@ -441,6 +493,7 @@ eo: forwarded: Plusendita forwarded_to: Plusendita al %{domain} mark_as_resolved: Marki solvita + mark_as_sensitive: Marki kiel tiklan mark_as_unresolved: Marki nesolvita no_one_assigned: Neniu notes: @@ -450,6 +503,7 @@ eo: delete: Forigi placeholder: Priskribu faritajn agojn, aŭ ajnan novan informon pri tiu signalo… title: Notoj + remote_user_placeholder: la ekstera uzanto de %{instance} reopen: Remalfermi signalon report: 'Signalo #%{id}' reported_account: Signalita konto @@ -466,15 +520,52 @@ eo: updated_at: Ĝisdatigita view_profile: Vidi profilon roles: + add_new: Aldoni rolon + assigned_users: + one: "%{count} uzanto" + other: "%{count} uzantoj" + categories: + administration: Administrado + devops: Programado kaj Operaciado + invites: Invitoj + moderation: Kontrolado + special: Specialaj + delete: Forigi + edit: Redakti rolon de '%{name}' everyone: Implicitaj permesoj + everyone_full_description_html: Jen la baza rolo, kiu afektas ĉiujn uzantojn, eĉ tiuj sen atribuata rolo. Ĉiuj aliaj roloj heredas permesojn de ĝi. + permissions_count: + one: "%{count} permeso" + other: "%{count} permesoj" privileges: + administrator: Administranto + administrator_description: Uzantoj kun ĉi tiu permeso preterpasos ĉiun permeson delete_user_data: Forviŝi la datumojn de la uzanto + invite_users: Inviti Uzantojn + manage_announcements: Administri Anoncojn + manage_announcements_description: Permesas uzantojn administri anoncojn ĉe la servilo + manage_appeals: Administri Apelaciojn + manage_appeals_description: Rajtigas al uzantoj kontroli apelaciojn kontraǔ kontrolaj agoj + manage_blocks: Administri Blokojn + manage_federation: Administri Federacion + manage_federation_description: Permesas al uzantoj bloki aǔ permesi federacion kun aliaj domajnoj, kaj regi liveradon + manage_invites: Administri Invitojn + manage_roles: Administri Rolojn + manage_rules: Administri Regulojn + view_devops: Programado kaj Operaciado + title: Roloj rules: add_new: Aldoni regulon delete: Forigi edit: Redakti la regulon title: Reguloj de la servilo settings: + about: + title: Pri + appearance: + title: Apero + discovery: + title: Eltrovado domain_blocks: all: Al ciuj disabled: Al neniu @@ -488,15 +579,24 @@ eo: delete: Forigi elŝutitan dosieron destroyed_msg: Reteja alŝuto sukcese forigita! statuses: + account: Skribanto back_to_account: Reveni al konta paĝo batch: remove_from_report: Forigi de raporto report: Raporti deleted: Forigita + language: Lingvo media: title: Aŭdovidaĵoj + metadata: Metadatumoj no_status_selected: Neniu mesaĝo estis ŝanĝita ĉar neniu estis elektita + open: Malfermi afiŝojn + original_status: Originala afiŝo + reblogs: Reblogaĵoj + status_changed: Afiŝo ŝanĝiĝis title: Mesaĝoj de la konto + trending: Popularaĵoj + visibility: Videbleco with_media: Kun aŭdovidaĵoj strikes: actions: @@ -504,9 +604,12 @@ eo: disable: "%{name} frostigis la konton de %{target}" suspend: "%{name} suspendis la konton de %{target}" appeal_approved: Apelaciita + appeal_pending: Apelacio pritraktiĝos system_checks: database_schema_check: message_html: Estas pritraktataj datumbazaj migradoj. Bonvolu ekzekuti ilin por certigi, ke la apliko kondutas kiel atendite + elasticsearch_running_check: + message_html: Ne eblas konekti Elasticsearch. Bonvolu kontroli ke ĝi funkcias, aǔ malŝaltu plentekstan serĉon rules_check: action: Administri servilajn regulojn message_html: Vi ne difinis iujn servilajn regulojn. @@ -516,6 +619,7 @@ eo: title: Administrado trends: allow: Permesi + approved: Aprobita disallow: Malpermesi links: allow: Permesi la ligilon @@ -534,17 +638,27 @@ eo: tags: dashboard: tag_accounts_measure: unikaj uzoj + tag_servers_dimension: Ĉefaj serviloj tag_servers_measure: malsamaj serviloj not_usable: Ne povas esti uzata title: Tendencantaj kradvortoj + trending_rank: 'Populara #%{rank}' + usable: Povas esti uzata title: Tendencoj + trending: Popularaĵoj warning_presets: add_new: Aldoni novan delete: Forviŝi edit_preset: Redakti la antaŭagordojn de averto title: Administri avertajn antaŭagordojn webhooks: + delete: Forigi + disable: Neebligi + disabled: Neebligita + edit: Redakti finpunkton + enable: Ŝalti enabled: Aktiva + events: Eventoj admin_mailer: new_appeal: actions: @@ -840,6 +954,8 @@ eo: other_data: Neniu alia datumo estos movita aŭtomate moderation: title: Moderigado + navigation: + toggle_menu: Baskuli menuon notification_mailer: favourite: body: "%{name} stelumis vian mesaĝon:" @@ -934,6 +1050,8 @@ eo: missing_resource: La bezonata URL de plusendado por via konto ne estis trovita rss: content_warning: 'Averto pri enhavo:' + descriptions: + tag: 'Publikaj afiŝoj pri #%{hashtag}' scheduled_statuses: over_daily_limit: Vi transpasis la limigon al %{limit} samtage planitaj mesaĝoj over_total_limit: Vi transpasis la limigon al %{limit} planitaj mesaĝoj @@ -1018,6 +1136,7 @@ eo: disallowed_hashtags: one: 'enhavas malpermesitan kradvorton: %{tags}' other: 'enhavis malpermesitan kradvorton: %{tags}' + edited_at_html: Redaktis je %{date} open_in_web: Malfermi retumile over_character_limit: limo de %{max} signoj transpasita pin_errors: @@ -1095,10 +1214,18 @@ eo: recovery_instructions_html: Se vi perdas aliron al via telefono, vi povas uzi unu el la subaj realiraj kodoj por rehavi aliron al via konto. Konservu realirajn kodojn sekure. Ekzemple, vi povas printi ilin kaj konservi ilin kun aliaj gravaj dokumentoj. webauthn: Sekurecaj ŝlosiloj user_mailer: + appeal_approved: + action: Iri al via konto + title: Apelacio estis aprobita + appeal_rejected: + subject: Via apelacio de %{date} estis malaprobita + title: Apelacio estis malaprobita backup_ready: explanation: Vi petis kompletan arkivon de via Mastodon-konto. Ĝi nun pretas por elŝutado! subject: Via arkivo estas preta por elŝutado title: Arkiva elŝuto + suspicious_sign_in: + change_password: ŝanĝi vian pasvorton warning: categories: spam: Spamo @@ -1117,6 +1244,7 @@ eo: edit_profile_action: Agordi profilon explanation: Jen kelkaj konsiloj por helpi vin komenci final_action: Ekmesaĝi + final_step: 'Ekmesaĝu! Eĉ sen sekvantoj, viaj publikaj mesaĝoj povas esti vidataj de aliaj, ekzemple en la loka templinio aŭ per kradvortoj. Eble vi ŝatus prezenti vin per la kradvorto #introductions / #konigo.' full_handle: Via kompleta uzantnomo full_handle_hint: Jen kion vi dirus al viaj amikoj, por ke ili mesaĝu aŭ sekvu vin de alia servilo. subject: Bonvenon en Mastodon diff --git a/config/locales/eu.yml b/config/locales/eu.yml index d4a77a992d..4a8d9bd507 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -207,6 +207,7 @@ eu: reject_user: Baztertu erabiltzailea remove_avatar_user: Kendu abatarra reopen_report: Berrireki txostena + resend_user: Birbidali berrespen posta reset_password_user: Berrezarri pasahitza resolve_report: Konpondu txostena sensitive_account: Markatu zure kontuko multimedia hunkigarri bezala @@ -265,6 +266,7 @@ eu: reject_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen izen-ematea baztertu du" remove_avatar_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen abatarra kendu du" reopen_report_html: "%{name} erabiltzaileak %{target} txostena berrireki du" + resend_user_html: "%{name} kontuak berrespen eposta bidali du %{target} kontuarentzat" reset_password_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen pasahitza berrezarri du" resolve_report_html: "%{name} erabiltzaileak %{target} txostena konpondu du" sensitive_account_html: "%{name} erabiltzaileak %{target} erabiltzailearen multimedia hunkigarri bezala markatu du" @@ -281,6 +283,7 @@ eu: update_ip_block_html: "%{name} erabiltzaileak %{target} IParen araua aldatu du" update_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa eguneratu du" update_user_role_html: "%{name} erabiltzaileak %{target} rola aldatu du" + deleted_account: ezabatu kontua empty: Ez da egunkaririk aurkitu. filter_by_action: Iragazi ekintzen arabera filter_by_user: Iragazi erabiltzaileen arabera diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 3c4239f776..33408ddb7f 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -24,6 +24,7 @@ ga: approve: Faomh are_you_sure: An bhfuil tú cinnte? avatar: Abhatár + by_domain: Fearann change_email: current_email: Ríomhphost reatha label: Athraigh ríomhphost @@ -43,17 +44,23 @@ ga: deleted: Scriosta demote: Ísligh disable: Reoigh + disable_two_factor_authentication: Díchumasaigh 2FA disabled: Reoite display_name: Ainm taispeána + domain: Fearann edit: Cuir in eagar email: Ríomhphost email_status: Stádas ríomhphoist + enable: Dí-reoigh enabled: Ar chumas followers: Leantóirí follows: Ag leanúint + header: Ceanntásc ip: IP location: all: Uile + local: Áitiúil + remote: Cian promote: Ardaigh public: Poiblí reject: Diúltaigh diff --git a/config/locales/he.yml b/config/locales/he.yml index 6c53ff2538..28cf52e1cd 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -955,7 +955,7 @@ he: delete_account: מחיקת חשבון delete_account_html: אם ברצונך למחוק את החשבון, ניתן להמשיך כאן. תתבקש/י לספק אישור נוסף. description: - prefix_invited_by_user: "@%{name} מזמין אותך להצטרף לשרת זה במסטודון!" + prefix_invited_by_user: "@%{name} רוצה שתצטרף לשרת זה במסטודון!" prefix_sign_up: הרשם/י למסטודון היום! suffix: כבעל/ת חשבון, תוכל/י לעקוב אחרי אנשים, לפרסם עדכונים ולהחליף מסרים עם משתמשים מכל שרת מסטודון ועוד! didnt_get_confirmation: לא התקבלו הוראות אימות? diff --git a/config/locales/id.yml b/config/locales/id.yml index a26156ffa7..b42ded815e 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -280,6 +280,7 @@ id: update_ip_block_html: "%{name} mengubah peraturan untuk IP %{target}" update_status_html: "%{name} memperbarui status %{target}" update_user_role_html: "%{name} mengubah peran %{target}" + deleted_account: akun yang dihapus empty: Log tidak ditemukan. filter_by_action: Filter berdasarkan tindakan filter_by_user: Filter berdasarkan pengguna diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 558c0d8944..f222b08879 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -59,7 +59,7 @@ ko: disable_sign_in_token_auth: 이메일 토큰 인증 비활성화 disable_two_factor_authentication: 2단계 인증을 비활성화 disabled: 비활성화된 - display_name: 이름 + display_name: 표시되는 이름 domain: 도메인 edit: 편집 email: 이메일 @@ -89,12 +89,12 @@ ko: moderation: active: 활동 all: 전체 - pending: 대기중 + pending: 대기 중 silenced: 제한됨 suspended: 정지 중 title: 중재 moderation_notes: 중재 기록 - most_recent_activity: 최근 활동 + most_recent_activity: 최근 활동순 most_recent_ip: 최근 IP no_account_selected: 아무 것도 선택 되지 않아 어떤 계정도 변경 되지 않았습니다 no_limits_imposed: 제한 없음 @@ -104,7 +104,7 @@ ko: perform_full_suspension: 정지 previous_strikes: 이전의 처벌들 previous_strikes_description_html: - other: 이 계정은 %{count} 번의 처벌이 있었습니다. + other: 이 계정에는 %{count}번의 처벌이 있었습니다. promote: 승급 protocol: 프로토콜 public: 공개 @@ -149,7 +149,7 @@ ko: title: 계정 unblock_email: 이메일 주소 차단 해제 unblocked_email_msg: "%{username}의 이메일 주소를 성공적으로 차단 해제했습니다" - unconfirmed_email: 미확인 된 이메일 주소 + unconfirmed_email: 확인되지 않은 이메일 주소 undo_sensitized: 민감함으로 설정 취소 undo_silenced: 침묵 해제 undo_suspension: 정지 해제 @@ -200,7 +200,7 @@ ko: enable_user: 사용자 활성화 memorialize_account: 추모계정으로 전환 promote_user: 사용자 승급 - reject_appeal: 이의제기 거절 + reject_appeal: 이의 제기 거절 reject_user: 사용자 거부 remove_avatar_user: 아바타 지우기 reopen_report: 신고 다시 열기 @@ -222,7 +222,7 @@ ko: update_status: 게시물 게시 update_user_role: 역할 수정 actions: - approve_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의제기를 승인했습니다" + approve_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의 제기를 승인했습니다" approve_user_html: "%{name} 님이 %{target}의 가입을 승인했습니다" assigned_to_self_report_html: "%{name} 님이 신고 %{target}을 자신에게 할당했습니다" change_email_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 변경했습니다" @@ -251,15 +251,15 @@ ko: destroy_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 재개" destroy_user_role_html: "%{name} 님이 %{target} 역할을 삭제했습니다" disable_2fa_user_html: "%{name} 님이 사용자 %{target}의 2FA를 비활성화 했습니다" - disable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 비활성화 했습니다" - disable_sign_in_token_auth_user_html: "%{name} 님이 %{target} 님의 이메일 토큰 인증을 비활성화 했습니다" - disable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 비활성화 했습니다" - enable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 활성화 했습니다" - enable_sign_in_token_auth_user_html: "%{name} 님이 %{target} 님의 이메일 토큰 인증을 활성화 했습니다" - enable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 활성화 했습니다" + disable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 비활성화했습니다" + disable_sign_in_token_auth_user_html: "%{name} 님이 %{target} 님의 이메일 토큰 인증을 비활성화했습니다" + disable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 비활성화했습니다" + enable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 활성화했습니다" + enable_sign_in_token_auth_user_html: "%{name} 님이 %{target} 님의 이메일 토큰 인증을 활성화했습니다" + enable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 활성화했습니다" memorialize_account_html: "%{name} 님이 %{target}의 계정을 추모비 페이지로 전환했습니다" promote_user_html: "%{name} 님이 사용자 %{target}를 승급시켰습니다" - reject_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의제기를 거절했습니다" + reject_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의 제기를 거절했습니다" reject_user_html: "%{name} 님이 %{target}의 가입을 거부했습니다" remove_avatar_user_html: "%{name} 님이 %{target}의 아바타를 지웠습니다" reopen_report_html: "%{name} 님이 신고 %{target}을 다시 열었습니다" @@ -270,7 +270,7 @@ ko: silence_account_html: "%{name} 님이 %{target}의 계정을 침묵시켰습니다" suspend_account_html: "%{name} 님이 %{target}의 계정을 정지시켰습니다" unassigned_report_html: "%{name} 님이 신고 %{target}을 할당 해제했습니다" - unblock_email_account_html: "%{name} 님이 %{target}의 이메일 주소를 차단 해제했습니다." + unblock_email_account_html: "%{name} 님이 %{target}의 이메일 주소를 차단 해제했습니다" unsensitive_account_html: "%{name} 님이 %{target}의 미디어를 민감하지 않음으로 표시했습니다" unsilence_account_html: "%{name} 님이 %{target}의 계정에 대한 침묵을 해제했습니다" unsuspend_account_html: "%{name} 님이 %{target}의 계정에 대한 정지를 해제했습니다" @@ -278,7 +278,7 @@ ko: update_custom_emoji_html: "%{name} 님이 에모지 %{target}를 업데이트 했습니다" update_domain_block_html: "%{name} 님이 %{target}에 대한 도메인 차단을 갱신했습니다" update_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 수정했습니다" - update_status_html: "%{name} 님이 %{target}의 게시물을 업데이트 했습니다" + update_status_html: "%{name} 님이 %{target}의 게시물을 업데이트했습니다" update_user_role_html: "%{name} 님이 %{target} 역할을 수정했습니다" deleted_account: 계정을 삭제했습니다 empty: 로그를 찾을 수 없습니다 @@ -317,7 +317,7 @@ ko: disabled_msg: 성공적으로 비활성화하였습니다 emoji: 에모지 enable: 활성화 - enabled: 활성됨 + enabled: 활성화됨 enabled_msg: 성공적으로 활성화하였습니다 image_hint: "%{size} 이하의 PNG 또는 GIF" list: 목록에 추가 @@ -343,13 +343,13 @@ ko: new_users: 새로운 사용자 opened_reports: 신고 열림 pending_appeals_html: - other: "%{count} 개의 대기 중인 이의제기" + other: "%{count}개의 대기 중인 이의 제기" pending_reports_html: - other: "%{count} 건의 대기 중인 신고" + other: "%{count}건의 대기 중인 신고" pending_tags_html: - other: "%{count} 개의 대기 중인 해시태그" + other: "%{count}개의 대기 중인 해시태그" pending_users_html: - other: "%{count} 명의 대기 중인 사용자" + other: "%{count}명의 대기 중인 사용자" resolved_reports: 신고 해결됨 software: 소프트웨어 sources: 가입 출처 @@ -380,7 +380,7 @@ ko: hint: 도메인 차단은 내부 데이터베이스에 계정이 생성되는 것까지는 막을 수 없지만, 그 도메인에서 생성된 계정에 자동적으로 특정한 중재 규칙을 적용하게 할 수 있습니다. severity: desc_html: |- - 침묵은 계정을 팔로우 하지 않고 있는 사람들에겐 계정의 게시물을 보이지 않게 합니다. 정지는 계정의 컨텐츠, 미디어, 프로필 데이터를 삭제합니다. + 침묵은 계정을 팔로우 하지 않고 있는 사람들에겐 계정의 게시물을 보이지 않게 합니다. 정지는 계정의 콘텐츠, 미디어, 프로필 데이터를 삭제합니다. 미디어 파일만을 거부하고 싶다면 없음으로 두세요. noop: 없음 silence: 침묵 @@ -401,7 +401,7 @@ ko: email_domain_blocks: add_new: 새로 추가 attempts_over_week: - other: 지난 주 동안 %{count} 건의 가입 시도가 있었습니다 + other: 지난 주 동안 %{count}건의 가입 시도가 있었습니다 created_msg: 이메일 도메인 차단 규칙을 생성했습니다 delete: 삭제 dns: @@ -468,11 +468,11 @@ ko: unavailable: 사용불가 delivery_available: 전송 가능 delivery_error_days: 전달 에러가 난 날짜들 - delivery_error_hint: 만약 %{count}일동안 전달이 불가능하다면, 자동으로 전달불가로 표시됩니다. + delivery_error_hint: 만약 %{count}일 동안 전달이 불가능하다면, 자동으로 전달 불가로 표시됩니다. destroyed_msg: "%{domain}의 데이터는 곧바로 지워지도록 대기열에 들어갔습니다." empty: 도메인이 하나도 없습니다. known_accounts: - other: "%{count} 개의 알려진 계정" + other: "%{count}개의 알려진 계정" moderation: all: 모두 limited: 제한됨 @@ -523,7 +523,7 @@ ko: enable_hint: 활성화 되면, 이 릴레이의 모든 공개 게시물을 구독하고 이 서버의 공개 게시물을 전송하게 됩니다. enabled: 활성화 됨 inbox_url: 릴레이 URL - pending: 릴레이의 승인 대기중 + pending: 릴레이의 승인 대기 중 save_and_enable: 저장하고 활성화 setup: 릴레이 연결 설정 signatures_not_enabled: 시큐어모드나 제한된 페더레이션 모드를 사용하고 있다면 릴레이는 제대로 동작하지 않을 것입니다 @@ -545,12 +545,12 @@ ko: other_description_html: 계정 동작을 제어하고 신고된 계정과의 의사소통을 사용자 지정하기 위한 추가 옵션을 봅니다. resolve_description_html: 신고된 계정에 대해 아무런 동작도 취하지 않으며, 처벌기록이 남지 않으며, 신고는 처리됨으로 변경됩니다. silence_description_html: 이미 팔로우 하고 있는 사람이나 수동으로 찾아보는 사람에게만 프로필이 보여지고, 도달 범위를 엄격하게 제한합니다. 언제든지 되돌릴 수 있습니다. - suspend_description_html: 프로필과 모든 컨텐츠가 최종적으로 삭제될 때까지 접근 불가상태가 됩니다. 이 계정과의 상호작용은 불가능해집니다. 30일 이내에 되돌릴 수 있습니다. + suspend_description_html: 프로필과 모든 콘텐츠가 최종적으로 삭제될 때까지 접근 불가상태가 됩니다. 이 계정과의 상호작용은 불가능해집니다. 30일 이내에 되돌릴 수 있습니다. actions_description_html: 이 신고를 해결하기 위해 취해야 할 조치를 지정해주세요. 신고된 계정에 대해 처벌 조치를 취하면, 스팸 카테고리가 선택된 경우를 제외하고 해당 계정으로 이메일 알림이 전송됩니다. add_to_report: 신고에 더 추가하기 are_you_sure: 정말로 실행하시겠습니까? assign_to_self: 나에게 할당하기 - assigned: 할당 된 중재자 + assigned: 할당된 중재자 by_target_domain: 신고된 계정의 도메인 category: 카테고리 category_description_html: 이 계정 또는 게시물이 신고된 이유는 신고된 계정과의 의사소통 과정에 인용됩니다 @@ -572,7 +572,7 @@ ko: delete: 삭제 placeholder: 이 리포트에 대한 조치, 기타 관련 된 사항에 대해 설명합니다… title: 노트 - notes_description_html: 확인하고 다른 중재자나 미래의 자신을 위해 기록을 작성합니다 + notes_description_html: 확인하고 다른 중재자나 미래의 자신을 위해 노트를 작성합니다 quick_actions_description_html: '빠른 조치를 취하거나 아래로 스크롤해서 신고된 콘텐츠를 확인하세요:' remote_user_placeholder: "%{instance}의 리모트 사용자" reopen: 리포트 다시 열기 @@ -583,8 +583,8 @@ ko: resolved_msg: 리포트가 성공적으로 해결되었습니다! skip_to_actions: 작업으로 건너뛰기 status: 상태 - statuses: 신고된 컨텐츠 - statuses_description_html: 문제가 되는 컨텐츠는 신고된 계정에게 인용되어 전달됩니다 + statuses: 신고된 콘텐츠 + statuses_description_html: 문제가 되는 콘텐츠는 신고된 계정에게 인용되어 전달됩니다 target_origin: 신고된 계정의 소속 title: 신고 unassign: 할당 해제 @@ -594,7 +594,7 @@ ko: roles: add_new: 역할 추가 assigned_users: - other: "%{count} 명의 사용자" + other: "%{count}명의 사용자" categories: administration: 관리 devops: 데브옵스 @@ -607,7 +607,7 @@ ko: everyone: 기본 권한 everyone_full_description_html: 이것은 모든 사용자에게 적용될 기본 역할이며, 역할을 지정하지 않아도 적용됩니다. 다른 모든 역할들은 여기에서 권한을 상속합니다. permissions_count: - other: "%{count} 개의 권한" + other: "%{count}개의 권한" privileges: administrator: 관리자 administrator_description: 이 권한을 가진 사용자는 모든 권한을 우회합니다 @@ -733,7 +733,7 @@ ko: appeal_pending: 이의제기 대기중 system_checks: database_schema_check: - message_html: 데이터베이스 마이그레이션이 대기중입니다. 응용프로그램이 예상한대로 동작할 수 있도록 마이그레이션을 실행해 주세요 + message_html: 대기 중인 데이터베이스 마이그레이션이 있습니다. 애플리케이션이 예상대로 동작할 수 있도록 마이그레이션을 실행해 주세요 elasticsearch_running_check: message_html: Elasticsearch에 연결할 수 없습니다. 실행중인지 확인하거나, 전문검색을 비활성화하세요 elasticsearch_version_check: @@ -850,7 +850,7 @@ ko: body: 아래에 새 계정에 대한 상세정보가 있습니다. 이 가입을 승인하거나 거부할 수 있습니다. subject: "%{instance}의 새 계정(%{username})에 대한 심사가 대기중입니다" new_report: - body: "%{reporter} 가 %{target} 를 신고했습니다" + body: "%{reporter} 님이 %{target}를 신고했습니다" body_remote: "%{domain}의 누군가가 %{target}을 신고했습니다" subject: "%{instance} 에 새 신고 등록됨 (#%{id})" new_trends: @@ -942,7 +942,7 @@ ko: account_status: 계정 상태 confirming: 이메일 확인 과정이 완료되기를 기다리는 중. functional: 계정이 완벽히 작동합니다. - pending: 당신의 가입 신청은 스태프의 검사를 위해 대기중입니다. 이것은 시간이 다소 소요됩니다. 가입 신청이 승인 될 경우 이메일을 받게 됩니다. + pending: 당신의 가입 신청은 스태프의 검사를 위해 대기 중입니다. 시간이 조금 걸릴 수 있습니다. 가입 신청이 승인되면 이메일을 받게 됩니다. redirecting_to: 계정이 %{acct}로 리다이렉트 중이기 때문에 비활성 상태입니다. view_strikes: 내 계정에 대한 과거 중재 기록 보기 too_fast: 너무 빠르게 양식이 제출되었습니다, 다시 시도하세요. @@ -994,7 +994,7 @@ ko: success_msg: 계정이 성공적으로 삭제되었습니다 warning: before: '진행하기 전, 주의사항을 꼼꼼히 읽어보세요:' - caches: 다른 서버에 캐싱 된 정보들은 남아있을 수 있습니다 + caches: 다른 서버에 캐싱된 정보들은 남아있을 수 있습니다 data_removal: 당신의 게시물과 다른 정보들은 영구적으로 삭제 됩니다 email_change_html: 계정을 지우지 않고도 이메일 주소를 수정할 수 있습니다 email_contact_html: 아직 도착하지 않았다면, %{email}에 메일을 보내 도움을 요청할 수 있습니다 @@ -1018,7 +1018,7 @@ ko: created_at: 날짜 description_html: 이 결정사항들은 당신에 계정에 대해 행해졌고 %{instance}의 스태프에 의해 경고가 발송되었습니다. recipient: 수신자 - reject_appeal: 이의제기 거절 + reject_appeal: 이의 제기 거절 status: '게시물 #%{id}' status_removed: 게시물이 이미 시스템에서 지워졌습니다 title: "%{action} (%{date}에)" @@ -1117,9 +1117,9 @@ ko: generic: all: 모두 all_items_on_page_selected_html: - other: 현재 페이지에서 %{count} 개의 항목이 선택되었습니다 + other: 현재 페이지에서 %{count}개의 항목이 선택되었습니다 all_matching_items_selected_html: - other: 검색에 잡히는 %{count} 개의 항목이 선택되었습니다 + other: 검색에 잡힌 %{count}개의 항목이 모두 선택되었습니다 changes_saved_msg: 정상적으로 변경되었습니다! copy: 복사 delete: 삭제 @@ -1128,7 +1128,7 @@ ko: order_by: 순서 save_changes: 변경 사항을 저장 select_all_matching_items: - other: 검색에 잡힌 %{count} 개의 항목을 모두 선택하기 + other: 검색에 잡힌 %{count}개의 항목을 모두 선택하기 today: 오늘 validation_errors: other: 오류가 발생했습니다. 아래 %{count}개 오류를 확인해 주십시오 @@ -1143,7 +1143,7 @@ ko: overwrite: 덮어쓰기 overwrite_long: 기존 것을 모두 지우고 새로 추가 preface: 다른 서버에서 내보내기 한 파일에서 팔로우 / 차단 정보를 이 계정으로 불러올 수 있습니다. - success: 파일이 정상적으로 업로드 되었으며, 현재 처리 중입니다 + success: 파일이 정상적으로 업로드되었으며, 현재 처리 중입니다 types: blocking: 차단한 계정 목록 bookmarks: 보관함 @@ -1165,7 +1165,7 @@ ko: generate: 생성 invited_by: '당신을 초대한 사람:' max_uses: - other: "%{count} 회" + other: "%{count}회" max_uses_prompt: 제한 없음 prompt: 이 서버에 대한 초대 링크를 만들고 공유합니다 table: @@ -1241,8 +1241,8 @@ ko: subject: "%{name} 님이 내 게시물을 마음에 들어했습니다" title: 새 좋아요 follow: - body: "%{name} 님이 나를 팔로우 했습니다!" - subject: "%{name} 님이 나를 팔로우 했습니다" + body: "%{name} 님이 나를 팔로우했습니다!" + subject: "%{name} 님이 나를 팔로우했습니다" title: 새 팔로워 follow_request: action: 팔로우 요청 관리 @@ -1311,7 +1311,7 @@ ko: title: 개인정보 정책 reactions: errors: - limit_reached: 다른 리액션 제한에 도달했습니다 + limit_reached: 리액션 갯수 제한에 도달했습니다 unrecognized_emoji: 인식 되지 않은 에모지입니다 relationships: activity: 계정 활동 @@ -1367,7 +1367,7 @@ ko: weibo: 웨이보 current_session: 현재 세션 description: "%{platform}의 %{browser}" - explanation: 내 마스토돈 계정에 현재 로그인 중인 웹 브라우저 목록입니다. + explanation: 내 마스토돈 계정에 로그인되어 있는 웹 브라우저 목록입니다. ip: IP platforms: adobe_air: 어도비 Air @@ -1379,9 +1379,9 @@ ko: linux: 리눅스 mac: 맥OS other: 알 수 없는 플랫폼 - windows: 윈도우즈 - windows_mobile: 윈도우즈 모바일 - windows_phone: 윈도우즈 폰 + windows: 윈도우 + windows_mobile: 윈도우 모바일 + windows_phone: 윈도우 폰 revoke: 삭제 revoke_success: 세션이 성공적으로 삭제되었습니다 title: 세션 @@ -1415,7 +1415,7 @@ ko: other: "%{count}개의 오디오" description: '첨부: %{attached}' image: - other: "%{count} 이미지" + other: "%{count}장의 이미지" video: other: "%{count}개의 영상" boosted_from_html: "%{acct_link}의 글을 부스트" @@ -1491,7 +1491,7 @@ ko: stream_entries: pinned: 고정된 게시물 reblogged: 님이 부스트 했습니다 - sensitive_content: 민감한 컨텐츠 + sensitive_content: 민감한 콘텐츠 strikes: errors: too_late: 이의를 제기하기에 너무 늦었습니다 @@ -1530,7 +1530,7 @@ ko: appeal_rejected: explanation: "%{strike_date}에 일어난 중재결정에 대한 소명을 %{appeal_date}에 작성했지만 거절되었습니다." subject: "%{date}에 작성한 소명이 거절되었습니다" - title: 이의제기가 거절되었습니다 + title: 이의 제기가 거절되었습니다 backup_ready: explanation: 당신이 요청한 계정의 풀 백업이 이제 다운로드 가능합니다! subject: 당신의 아카이브를 다운로드 가능합니다 @@ -1547,7 +1547,7 @@ ko: appeal_description: 이것이 오류라고 생각한다면, %{instance}의 중재자에게 이의신청을 할 수 있습니다. categories: spam: 스팸 - violation: 컨텐츠가 다음의 커뮤니티 규정을 위반합니다 + violation: 콘텐츠가 다음의 커뮤니티 규정을 위반합니다 explanation: delete_statuses: 귀하의 게시물 중 일부가 하나 이상의 커뮤니티 가이드라인을 위반한 것으로 확인되어 %{instance}의 중재자에 의해 삭제되었습니다. disable: 당신은 더이상 당신의 계정을 사용할 수 없습니다, 하지만 프로필과 다른 데이터들은 여전히 그대로 남아있습니다. 당신의 데이터에 대한 백업을 요청하거나, 계정 설정을 변경 또는 계정을 삭제할 수 있습니다. @@ -1579,7 +1579,7 @@ ko: explanation: 시작하기 전에 몇가지 팁들을 준비했습니다 final_action: 포스팅 시작하기 final_step: '게시물을 올리세요! 팔로워가 없더라도, 공개 게시물들은 다른 사람에게 보여질 수 있습니다, 예를 들자면 로컬이나 연합 타임라인 등이 있습니다. 사람들에게 자신을 소개하고 싶다면 #툿친소 해시태그를 이용해보세요.' - full_handle: 당신의 풀 핸들 + full_handle: 내 전체 핸들 full_handle_hint: 이것을 당신의 친구들에게 알려주면 다른 서버에서 팔로우 하거나 메시지를 보낼 수 있습니다. subject: 마스토돈에 오신 것을 환영합니다 title: 환영합니다 %{name} 님! @@ -1587,7 +1587,7 @@ ko: follow_limit_reached: 당신은 %{limit}명의 사람을 넘어서 팔로우 할 수 없습니다 invalid_otp_token: 2단계 인증 코드가 올바르지 않습니다 otp_lost_help_html: 만약 양쪽 모두를 잃어버렸다면 %{email}을 통해 복구할 수 있습니다 - seamless_external_login: 외부 서비스를 이용해 로그인 했습니다, 패스워드와 이메일 설정을 할 수 없습니다. + seamless_external_login: 외부 서비스를 이용해 로그인했으므로 이메일과 암호는 설정할 수 없습니다. signed_in_as: '다음과 같이 로그인 중:' verification: explanation_html: '당신은 프로필 메타데이터의 링크 소유자임을 검증할 수 있습니다. 이것을 하기 위해서는, 링크 된 웹사이트에서 당신의 마스토돈 프로필을 역으로 링크해야 합니다. 역링크는 반드시 rel="me" 속성을 가지고 있어야 합니다. 링크의 텍스트는 상관이 없습니다. 여기 예시가 있습니다:' @@ -1595,13 +1595,13 @@ ko: webauthn_credentials: add: 보안 키 추가 create: - error: 보안 키를 추가하는데 문제가 발생했습니다. 다시 시도해보십시오. + error: 보안 키를 추가하는 데 문제가 발생했습니다. 다시 시도해보십시오. success: 보안 키가 성공적으로 추가되었습니다. delete: 삭제 delete_confirmation: 정말로 이 보안 키를 삭제하시겠습니까? description_html: "보안 키 인증을 활성화 하면, 로그인 시 보안 키 중 하나가 필요합니다." destroy: - error: 보안 키를 삭제하는데 문제가 발생했습니다. 다시 시도해보십시오. + error: 보안 키를 삭제하는 데 문제가 발생했습니다. 다시 시도해보십시오. success: 보안 키가 성공적으로 삭제되었습니다. invalid_credential: 올바르지 않은 보안 키 nickname_hint: 새 보안 키의 별명을 입력해 주세요 diff --git a/config/locales/lv.yml b/config/locales/lv.yml index ddebd9e5dc..a7641064bf 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1307,9 +1307,9 @@ lv: poll: subject: "%{name} aptauja ir beigusies" reblog: - body: 'Tavu ziņu paaugstināja %{name}:' - subject: "%{name} paaugstināja tavu ziņu" - title: Jauns stimuls + body: 'Tavu ziņu pastiprināja %{name}:' + subject: "%{name} pastiprināja tavu ziņu" + title: Jauns pastiprinājums status: subject: "%{name} tikko publicēja" update: @@ -1474,7 +1474,7 @@ lv: one: "%{count} video" other: "%{count} video" zero: "%{count} video" - boosted_from_html: Paaugstināja %{acct_link} + boosted_from_html: Pastiprināja %{acct_link} content_warning: 'Satura brīdinājums: %{warning}' default_language: Tāda, kā saskarnes valoda disallowed_hashtags: @@ -1490,7 +1490,7 @@ lv: direct: Ziņojumus, kas ir redzami tikai minētajiem lietotājiem, nevar piespraust limit: Tu jau esi piespraudis maksimālo ziņu skaitu ownership: Citas personas ziņu nevar piespraust - reblog: Paaugstinātās ziņas nevar piespraust + reblog: Pastiprinātu ierakstu nevar piespraust poll: total_people: one: "%{count} persona" @@ -1521,9 +1521,9 @@ lv: exceptions: Izņēmumi explanation: Tā kā ziņu dzēšana ir dārga darbība, tā tiek veikta lēnām laika gaitā, kad serveris nav citādi aizņemts. Šī iemesla dēļ tavas ziņas var tikt izdzēstas kādu laiku pēc vecuma sliekšņa sasniegšanas. ignore_favs: Ignorēt izlasi - ignore_reblogs: Ignorēt paaugstinātās + ignore_reblogs: Ignorēt pastiprinātos ierakstus interaction_exceptions: Izņēmumi, kuru pamatā ir mijiedarbība - interaction_exceptions_explanation: Ņem vērā, ka nav garantijas, ka ziņas tiks dzēstas, ja tās ir zemākas par izlases vai paaugstinājuma slieksni pēc to pārsniegšanas. + interaction_exceptions_explanation: Ņem vērā, ka ieraksti var netikt dzēsti, ja tie noslīd zem par izlases vai pastiprinājuma sliekšņa pēc tam, kad to reiz pārsnieguši. keep_direct: Saglabāt tiešos ziņojumus keep_direct_hint: Nedzēš nevienu tavu tiešo ziņojumu keep_media: Saglabāt ziņas ar mediju pielikumiem @@ -1548,11 +1548,11 @@ lv: min_age_label: Vecuma slieksnis min_favs: Saglabāt ziņas izlsasē vismaz min_favs_hint: Nedzēš nevienu tavu ziņu, kas ir saņēmusi vismaz tik daudz izlases. Atstāj tukšu, lai dzēstu ziņas neatkarīgi no to izlases skaita - min_reblogs: Saglabāt ziņas paaugstinātas vismaz - min_reblogs_hint: Neizdzēš nevienu no tavām ziņām, kas ir paaugstinātas vismaz tik reižu. Atstāj tukšu, lai dzēstu ziņas neatkarīgi no to paaugstinājumu skaita + min_reblogs: Saglabāt ierakstus pastiprinātus vismaz + min_reblogs_hint: Neizdzēš nevienu no taviem ierakstiem, kas ir pastiprināts vismaz tik reižu. Atstāj tukšu, lai dzēstu ierakstus neatkarīgi no to pastiprinājumu skaita stream_entries: pinned: Piespraustā ziņa - reblogged: paaugstinātās + reblogged: pastiprinātie sensitive_content: Sensitīvs saturs strikes: errors: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 88b224c3e9..6d7f8d6aa7 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -12,7 +12,7 @@ nl: one: Volger other: Volgers following: Volgend - instance_actor_flash: Dit account is een 'virtual actor' waarmee de server zichzelf vertegenwoordigd en is dus geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden opgeschort. + instance_actor_flash: Dit account is een 'virtual actor' waarmee de server zichzelf vertegenwoordigt en is dus geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden opgeschort. last_active: laatst actief link_verified_on: Eigendom van deze link is gecontroleerd op %{date} nothing_here: Hier is niets! @@ -1549,7 +1549,7 @@ nl: otp: Authenticatie-app recovery_codes: Herstelcodes back-uppen recovery_codes_regenerated: Opnieuw genereren herstelcodes geslaagd - recovery_instructions_html: Wanneer je ooit de toegang verliest tot jouw telefoon, kan je met behulp van een van de herstelcodes hieronder opnieuw toegang krijgen tot jouw account. Zorg ervoor dat je de herstelcodes op een veilige plek bewaard. Je kunt ze bijvoorbeeld printen en ze samen met andere belangrijke documenten bewaren. + recovery_instructions_html: Wanneer je ooit de toegang verliest tot jouw telefoon, kan je met behulp van een van de herstelcodes hieronder opnieuw toegang krijgen tot jouw account. Zorg ervoor dat je de herstelcodes op een veilige plek bewaart. Je kunt ze bijvoorbeeld printen en ze samen met andere belangrijke documenten bewaren. webauthn: Beveiligingssleutels user_mailer: appeal_approved: diff --git a/config/locales/nn.yml b/config/locales/nn.yml index e3915a0992..052e7fe8c6 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -270,7 +270,15 @@ nn: reset_password_user_html: "%{name} tilbakestilte passordet for brukaren %{target}" resolve_report_html: "%{name} løyste ein rapport %{target}" sensitive_account_html: "%{name} markerte %{target} sitt media som sensitivt" - silence_account_html: "%{name} begrenset %{target} sin konto" + silence_account_html: "%{name} begrensa %{target} sin konto" + suspend_account_html: "%{name} utviste %{target} sin konto" + unassigned_report_html: "%{name} løyste ein rapport %{target}" + unblock_email_account_html: "%{name} avblokkerte %{target} si e-postadresse" + unsensitive_account_html: "%{name} avmarkerte %{target} sitt media som sensitivt" + update_custom_emoji_html: "%{name} oppdaterte emoji %{target}" + update_ip_block_html: "%{name} endret regel for IP %{target}" + update_status_html: "%{name} oppdaterte innlegg av %{target}" + update_user_role_html: "%{name} endret %{target} -rolle" deleted_account: sletta konto empty: Ingen loggar funne. filter_by_action: Sorter etter handling @@ -329,18 +337,28 @@ nn: upload: Last opp dashboard: active_users: aktive brukarar - interactions: interaksjoner - media_storage: Medialagring - new_users: nye brukere - opened_reports: rapporter åpnet - resolved_reports: rapporter løst + interactions: interaksjonar + media_storage: Medielagring + new_users: nye brukarar + opened_reports: rapportar opna + pending_appeals_html: + one: "%{count} ventande ankar" + other: "%{count} ventande klagar" + pending_users_html: + one: "%{count} ventande brukarar" + other: "%{count} ventande brukarar" + resolved_reports: rapportar løyst software: Programvare - sources: Kilder for registreringer + sources: Kjelder for registreringar space: Lagrinsplass nytta title: Dashbord top_languages: Mest aktive språk - top_servers: Mest aktive servere + top_servers: Mest aktive serverar website: Nettside + disputes: + appeals: + empty: Ingen ankar funne. + title: Ankar domain_allows: add_new: Kvitlist domene created_msg: Domene er vorte kvitlista @@ -376,11 +394,18 @@ nn: view: Vis domeneblokkering email_domain_blocks: add_new: Lag ny + attempts_over_week: + one: "%{count} forsøk i løpet av den siste uken" + other: "%{count} forsøk på å opprette konto i løpet av den siste uken" created_msg: E-postdomenet ble lagt til i blokkeringslisten uten problemer delete: Slett + dns: + types: + mx: MX post domain: Domene new: create: Legg til domene + resolve: Løs domene title: Ny blokkeringsoppføring av e-postdomene resolved_through_html: Løyst gjennom %{domain} title: Blokkerte e-postadresser @@ -389,14 +414,33 @@ nn: language: For språk status: Status suppress: Undertrykk anbefalte følger - suppressed: Dempet - title: Følg anbefalinger + suppressed: Dempa + title: Følg gjerne desse unsuppress: Gjenopprett følg-anbefaling instances: + availability: + failure_threshold_reached: Feilterskelen ble nådd %{date}. + no_failures_recorded: Ingen feil registrert. + title: Tilgjenge + warning: Det siste forsøket på å koble til denne serveren lyktes ikke back_to_all: All back_to_limited: Begrenset back_to_warning: Advarsel by_domain: Domene + content_policies: + comment: Internt notat + policies: + reject_media: Avvis media + reason: Offentlig årsak + title: Retningslinjer for innhold + dashboard: + instance_accounts_measure: lagrede kontoer + instance_followers_measure: våre følgere der + instance_follows_measure: deres følgere her + instance_languages_dimension: Mest brukte språk + instance_media_attachments_measure: lagrede mediavedlegg + instance_reports_measure: rapporter om dem + instance_statuses_measure: lagrede innlegg delivery: all: All clear: Feil ved fjerning @@ -404,6 +448,8 @@ nn: stop: Stopp levering unavailable: Ikke tilgjengelig delivery_available: Levering er tilgjengelig + delivery_error_hint: Dersom levering ikke er mulig i løpet av %{count} dager, blir det automatisk merket som ikke mulig å levere. + empty: Ingen domener funnet. moderation: all: Alle limited: Avgrensa @@ -495,6 +541,16 @@ nn: unassign: Avset unresolved: Uløyst updated_at: Oppdatert + view_profile: Vis profil + roles: + add_new: Legg til rolle + assigned_users: + one: "%{count} bruker" + other: "%{count} brukere" + categories: + administration: Administrasjon + devops: DevOps + invites: Invitasjoner rules: add_new: Legg til et filter delete: Slett @@ -915,6 +971,10 @@ nn: status: Kontostatus remote_follow: missing_resource: Kunne ikke finne URLen for din konto + rss: + descriptions: + account: Offentlige innlegg fra @%{acct} + tag: 'Offentlige innlegg merket med #%{hashtag}' scheduled_statuses: over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter @@ -980,6 +1040,8 @@ nn: preferences: Innstillingar profile: Profil relationships: Fylgjar og fylgjarar + statuses_cleanup: Automatisert sletting av innlegg + strikes: Modereringsadvarsler two_factor_authentication: Tostegsautorisering webauthn_authentication: Sikkerhetsnøkler statuses: @@ -996,6 +1058,7 @@ nn: disallowed_hashtags: one: 'inneheldt ein emneknagg som ikkje var tillaten: %{tags}' other: 'inneheldt emneknaggen som ikkje var tillaten: %{tags}' + edited_at_html: Redigert %{date} errors: in_reply_not_found: Det ser ut til at tutet du freistar å svara ikkje finst. open_in_web: Opn på nett @@ -1025,6 +1088,9 @@ nn: unlisted: Ikkje oppført unlisted_long: Alle kan sjå, men ikkje oppført på offentlege tidsliner statuses_cleanup: + enabled: Slett gamle innlegg automatisk + enabled_hint: Sletter innleggene dine automatisk når de oppnår en angitt alder, med mindre de samsvarer med ett av unntakene nedenfor + exceptions: Unntak keep_pinned: Behald festa innlegg keep_pinned_hint: Sletter ingen av dine festa innlegg keep_polls: Behald røystingar @@ -1061,6 +1127,7 @@ nn: formats: default: "%d.%b %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Legg til disable: Slå av @@ -1108,17 +1175,24 @@ nn: reason: 'Årsak:' statuses: 'Innlegg sitert:' subject: + delete_statuses: Dine innlegg på %{acct} har blitt fjernet disable: Kontoen din, %{acct}, har blitt fryst + mark_statuses_as_sensitive: Dine innlegg på %{acct} har blitt merket som sensitivt innhold none: Åtvaring for %{acct} + sensitive: Dine innlegg på %{acct} vil bli merket som sensitive fra nå silence: Kontoen din, %{acct}, er vorten avgrensa suspend: Kontoen din, %{acct}, er vorten utvist title: + delete_statuses: Innlegg fjernet disable: Konto frosen + mark_statuses_as_sensitive: Innlegg markert som sensitive none: Åtvaring + sensitive: Konto markert som sensitiv silence: Konto avgrensa suspend: Konto utvist welcome: edit_profile_action: Lag til profil + edit_profile_step: Du kan tilpasse profilen din ved å laste opp et profilbilde, endre visningsnavnet ditt og mer. Du kan velge at nye følgere må godkjennes av deg før de får lov til å følge deg. explanation: Her er nokre tips for å koma i gang final_action: Kom i gang med å leggja ut full_handle: Det fulle brukarnamnet ditt @@ -1137,9 +1211,11 @@ nn: webauthn_credentials: add: Legg til ny sikkerhetsnøkkel create: + error: Det oppstod et problem med å legge til sikkerhetsnøkkelen. Prøv igjen. success: Sikkerhetsnøkkelen din ble vellykket lagt til. delete: Slett delete_confirmation: Er du sikker på at du vil slette denne sikkerhetsnøkkelen? + description_html: Dersom du aktiverer sikkerhetsnøkkelautentisering, vil innlogging kreve at du bruker en av sikkerhetsnøklene dine. destroy: error: Det oppsto et problem med å slette sikkerhetsnøkkelen. Prøv igjen. success: Sikkerhetsnøkkelen din ble vellykket slettet. diff --git a/config/locales/no.yml b/config/locales/no.yml index d891cd537d..0e379da21a 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -5,6 +5,7 @@ contact_missing: Ikke innstilt contact_unavailable: Ikke tilgjengelig hosted_on: Mastodon driftet på %{domain} + title: Om accounts: follow: Følg followers: @@ -51,6 +52,7 @@ confirm: Bekreft confirmed: Bekreftet confirming: Bekrefte + custom: Tilpasset delete: Slett data deleted: Slettet demote: Degrader @@ -90,6 +92,7 @@ active: Aktive all: Alle pending: Avventer + silenced: Stilnet suspended: Utvist title: Moderasjon moderation_notes: Moderasjonsnotater @@ -142,6 +145,7 @@ statuses: Statuser strikes: Tidligere advarsler subscribe: Abonnere + suspend: Suspender suspended: Suspendert suspension_irreversible: Dataene fra denne kontoen har blitt ikke reverserbart slettet. Du kan oppheve suspenderingen av kontoen for å gjøre den brukbart, men den vil ikke gjenopprette alle data den tidligere har hatt. suspension_reversible_hint_html: Kontoen har blitt suspendert, og dataene vil bli fullstendig fjernet den %{date}. Frem til da kan kontoen gjenopprettes uten negative effekter. Hvis du ønsker å fjerne alle kontoens data umiddelbart, kan du gjøre det nedenfor. @@ -149,6 +153,7 @@ unblock_email: Avblokker e-postadresse unblocked_email_msg: Fjernet blokkering av %{username} sin e-postadresse unconfirmed_email: Ubekreftet E-postadresse + undo_sensitized: Gjør om tving sensitiv undo_silenced: Angre målbinding undo_suspension: Angre utvisning unsilenced_msg: Opphevde vellykket begrensningen av %{username} sin konto @@ -161,6 +166,7 @@ whitelisted: Hvitelistet action_logs: action_types: + approve_appeal: Godkjenn anke approve_user: Godkjenn bruker assigned_to_self_report: Tilordne rapport change_email_user: Endre brukerens E-postadresse @@ -168,37 +174,48 @@ confirm_user: Bekreft brukeren create_account_warning: Opprett en advarsel create_announcement: Opprett en kunngjøring + create_canonical_email_block: Opprett e-post-blokkering create_custom_emoji: Opprett en tilpasset emoji create_domain_allow: Opprett domene tillatt create_domain_block: Opprett domene-blokk create_email_domain_block: Opprett e-post domeneblokk create_ip_block: Opprett IP-regel + create_unavailable_domain: Opprett utilgjengelig domene create_user_role: Opprett rolle demote_user: Degrader bruker destroy_announcement: Slett kunngjøringen destroy_canonical_email_block: Slett blokkering av e-post destroy_custom_emoji: Slett den tilpassede emojien + destroy_domain_allow: Slett domenegodkjenning destroy_domain_block: Slett blokkering av domene destroy_email_domain_block: Slett blokkering av e-postdomene + destroy_instance: Slett domene destroy_ip_block: Slett IP-regel destroy_status: Slett statusen destroy_unavailable_domain: Slett utilgjengelig domene destroy_user_role: Slett rolle disable_2fa_user: Skru av 2-trinnsinnlogging disable_custom_emoji: Skru av tilpassede emojier + disable_sign_in_token_auth_user: Skru av e-post-tokenautentisering for bruker disable_user: Deaktiver bruker enable_custom_emoji: Skru på tilpassede emojier + enable_sign_in_token_auth_user: Skru på e-post-tokenautentisering for bruker enable_user: Aktiver bruker + memorialize_account: Opprett minnekonto promote_user: Promoter bruker + reject_appeal: Avvis anke reject_user: Avvis bruker remove_avatar_user: Fjern Avatar reopen_report: Gjenåpne rapporten resend_user: Send e-post med bekreftelse på nytt reset_password_user: Tilbakestill passord resolve_report: Løs rapport + sensitive_account: Tving sensitiv konto silence_account: Demp konto suspend_account: Suspender kontoen + unassigned_report: Fjern tilordnet rapport unblock_email_account: Fjern blokkering av e-postadresse + unsensitive_account: Angre tving sensitiv konto unsuspend_account: Opphev suspensjonen av kontoen update_announcement: Oppdater kunngjøringen update_custom_emoji: Oppdater tilpasset Emoji @@ -219,8 +236,20 @@ create_domain_block_html: "%{name} blokkert domene %{target}" create_email_domain_block_html: "%{name} blokkert e-post domene %{target}" create_ip_block_html: "%{name} opprettet regel for IP %{target}" + create_user_role_html: "%{name} opprettet rollen %{target}" + destroy_announcement_html: "%{name} slettet kunngjøring %{target}" + destroy_custom_emoji_html: "%{name} slettet emoji %{target}" + destroy_ip_block_html: "%{name} slettet regel for IP %{target}" + destroy_status_html: "%{name} fjernet innlegget av %{target}" + destroy_user_role_html: "%{name} slettet %{target} -rolle" reject_user_html: "%{name} avslo registrering fra %{target}" + reset_password_user_html: "%{name} tilbakestille passordet for brukeren %{target}" silence_account_html: "%{name} begrenset %{target} sin konto" + update_custom_emoji_html: "%{name} oppdaterte emoji %{target}" + update_ip_block_html: "%{name} endret regel for IP %{target}" + update_status_html: "%{name} oppdaterte innlegg av %{target}" + update_user_role_html: "%{name} endret %{target} -rolle" + deleted_account: slettet konto empty: Ingen loggføringer ble funnet. filter_by_action: Sorter etter handling filter_by_user: Sorter etter bruker @@ -259,10 +288,12 @@ enable: Aktivere enabled: Skrudd på enabled_msg: Aktiverte emojien uten problem + image_hint: PNG eller GIF opptil %{size} list: Før opp listed: Oppførte new: title: Legg til ny egen emoji + no_emoji_selected: Ingen emojis ble endret da ingen var valgt not_permitted: Du har ikke rettigheter til å utføre denne handlingen overwrite: Overskrive shortcode: Kortkode @@ -323,6 +354,9 @@ view: Vis domeneblokkering email_domain_blocks: add_new: Lag ny + attempts_over_week: + one: "%{count} forsøk i løpet av den siste uken" + other: "%{count} forsøk på å opprette konto i løpet av den siste uken" created_msg: E-postdomenet ble lagt til i blokkeringslisten uten problemer delete: Fjern domain: Domene @@ -339,10 +373,29 @@ title: Følg anbefalinger unsuppress: Gjenopprett følg-anbefaling instances: + availability: + failure_threshold_reached: Feilterskelen ble nådd %{date}. + no_failures_recorded: Ingen feil registrert. + title: Tilgjengelighet + warning: Det siste forsøket på å koble til denne serveren lyktes ikke back_to_all: All back_to_limited: Begrenset back_to_warning: Advarsel by_domain: Domene + content_policies: + comment: Internt notat + policies: + reject_media: Avvis media + reason: Offentlig årsak + title: Retningslinjer for innhold + dashboard: + instance_accounts_measure: lagrede kontoer + instance_followers_measure: våre følgere der + instance_follows_measure: deres følgere her + instance_languages_dimension: Mest brukte språk + instance_media_attachments_measure: lagrede mediavedlegg + instance_reports_measure: rapporter om dem + instance_statuses_measure: lagrede innlegg delivery: all: All clear: Feil ved fjerning @@ -350,6 +403,8 @@ stop: Stopp levering unavailable: Ikke tilgjengelig delivery_available: Levering er tilgjengelig + delivery_error_hint: Dersom levering ikke er mulig i løpet av %{count} dager, blir det automatisk merket som ikke mulig å levere. + empty: Ingen domener funnet. moderation: all: Alt limited: Begrenset @@ -441,6 +496,16 @@ unassign: Fjern tilegning unresolved: Uløst updated_at: Oppdatert + view_profile: Vis profil + roles: + add_new: Legg til rolle + assigned_users: + one: "%{count} bruker" + other: "%{count} brukere" + categories: + administration: Administrasjon + devops: DevOps + invites: Invitasjoner rules: add_new: Legg til et filter delete: Slett diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index ec794492b4..8279f68f0e 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -28,24 +28,24 @@ pt-BR: title: Moderar %{acct} account_moderation_notes: create: Deixar nota - created_msg: Nota de moderação criada com sucesso! - destroyed_msg: Nota de moderação excluída com sucesso! + created_msg: Nota de moderação criada! + destroyed_msg: Nota de moderação excluída! accounts: add_email_domain_block: Bloquear domínio de e-mail approve: Aprovar - approved_msg: O registro de %{username} foi aprovado com sucesso + approved_msg: O registro de %{username} foi aprovado are_you_sure: Você tem certeza? avatar: Imagem de perfil by_domain: Domínio change_email: - changed_msg: E-mail alterado com sucesso! + changed_msg: E-mail alterado! current_email: E-mail atual label: Alterar e-mail new_email: Novo e-mail submit: Alterar e-mail title: Alterar e-mail para %{username} change_role: - changed_msg: Cargo alterado com sucesso! + changed_msg: Cargo alterado! label: Alterar cargo no_role: Sem cargo title: Alterar cargo para %{username} @@ -69,7 +69,7 @@ pt-BR: enable: Descongelar enable_sign_in_token_auth: Ativar autenticação via token por email enabled: Ativada - enabled_msg: Descongelada com sucesso a conta de %{username} + enabled_msg: A conta de %{username} foi descongelada followers: Seguidores follows: Seguindo header: Capa @@ -87,53 +87,53 @@ pt-BR: media_attachments: Mídias anexadas memorialize: Converter em memorial memorialized: Convertidas em memorial - memorialized_msg: Transformou com sucesso %{username} em uma conta memorial + memorialized_msg: A conta de %{username} foi transformada em uma conta memorial moderation: active: Ativo all: Todos pending: Pendente silenced: Limitado - suspended: Banidos + suspended: Suspendido title: Moderação moderation_notes: Notas de moderação most_recent_activity: Atividade mais recente most_recent_ip: IP mais recente no_account_selected: Nenhuma conta foi alterada, pois nenhuma conta foi selecionada no_limits_imposed: Sem limite imposto - no_role_assigned: Nenhuma função atribuída + no_role_assigned: Sem cargo not_subscribed: Não inscrito pending: Revisão pendente - perform_full_suspension: Banir - previous_strikes: Ataques anteriores + perform_full_suspension: Suspender + previous_strikes: Avisos anteriores previous_strikes_description_html: - one: Esta conta tem um ataque. + one: Esta conta tem um aviso. other: Esta conta tem %{count} ataques. promote: Promover protocol: Protocolo public: Público push_subscription_expires: Inscrição PuSH expira redownload: Atualizar perfil - redownloaded_msg: Atualizado com sucesso o perfil de %{username} a partir da origem - reject: Vetar - rejected_msg: Rejeitado com sucesso o pedido de registro de %{username} + redownloaded_msg: O perfil de %{username} foi atualizado a partir da origem + reject: Rejeitar + rejected_msg: O pedido de registro de %{username} foi rejeitado remove_avatar: Remover imagem de perfil remove_header: Remover capa - removed_avatar_msg: Removida com sucesso a imagem de avatar de %{username} - removed_header_msg: Removida com sucesso a imagem de capa de %{username} + removed_avatar_msg: A imagem de perfil de %{username} foi removida + removed_header_msg: A capa de %{username} foi removida resend_confirmation: already_confirmed: Este usuário já está confirmado send: Reenviar o e-mail de confirmação - success: E-mail de confirmação enviado com sucesso! + success: E-mail de confirmação enviado! reset: Redefinir reset_password: Redefinir senha resubscribe: Reinscrever-se - role: Função - search: Pesquisar + role: Cargo + search: Buscar search_same_email_domain: Outros usuários com o mesmo domínio de e-mail search_same_ip: Outros usuários com o mesmo IP security_measures: - only_password: Somente senha - password_and_2fa: Senha e 2FA + only_password: Apenas senha + password_and_2fa: Senha e autenticação de dois fatores sensitive: Sensíveis sensitized: marcadas como sensíveis shared_inbox_url: Link da caixa de entrada compartilhada @@ -143,7 +143,7 @@ pt-BR: silence: Silenciar silenced: Silenciado statuses: Publicações - strikes: Ataques anteriores + strikes: Avisos anteriores subscribe: Inscrever-se suspend: Suspender suspended: Banido @@ -151,14 +151,14 @@ pt-BR: suspension_reversible_hint_html: A conta foi suspensa e os dados serão totalmente removidos em %{date}. Até lá, a conta pode ser restaurada sem nenhum efeito negativo. Se você deseja remover todos os dados da conta imediatamente, você pode fazer isso abaixo. title: Contas unblock_email: Desbloquear endereço de e-mail - unblocked_email_msg: Endereço de e-mail de %{username} desbloqueado com sucesso + unblocked_email_msg: O endereço de e-mail de %{username} foi desbloqueado unconfirmed_email: E-mail não confirmado undo_sensitized: Desfazer sensível undo_silenced: Desfazer silêncio undo_suspension: Desbanir - unsilenced_msg: Removidas com sucesso as limitações da conta de %{username} + unsilenced_msg: As limitações da conta de %{username} foram removidas unsubscribe: Cancelar inscrição - unsuspended_msg: Removida com sucesso a suspensão da conta de %{username} + unsuspended_msg: A suspensão da conta de %{username} foi removida username: Nome de usuário view_domain: Ver resumo para o domínio warn: Notificar @@ -205,7 +205,7 @@ pt-BR: promote_user: Promover usuário reject_appeal: Rejeitar recurso reject_user: Rejeitar Usuário - remove_avatar_user: Remover Avatar + remove_avatar_user: Remover imagem de perfil reopen_report: Reabrir Relatório resend_user: Reenviar o E-mail de Confirmação reset_password_user: Redefinir a senha @@ -253,7 +253,7 @@ pt-BR: destroy_status_html: "%{name} removeu a publicação de %{target}" destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" destroy_user_role_html: "%{name} excluiu a função %{target}" - disable_2fa_user_html: "%{name} desativou a exigência de autenticação de dois fatores para o usuário %{target}" + disable_2fa_user_html: "%{name} desativou a exigência da autenticação de dois fatores para o usuário %{target}" disable_custom_emoji_html: "%{name} desativou o emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} desativou a autenticação via token por email para %{target}" disable_user_html: "%{name} desativou o login para %{target}" @@ -289,7 +289,7 @@ pt-BR: filter_by_user: Filtrar por usuário title: Auditar histórico announcements: - destroyed_msg: Anúncio excluído com sucesso! + destroyed_msg: Anúncio excluído! edit: title: Editar anúncio empty: Sem anúncios. @@ -298,30 +298,30 @@ pt-BR: create: Criar anúncio title: Novo anúncio publish: Publicar - published_msg: Anúncio publicado com sucesso! + published_msg: Anúncio publicado! scheduled_for: Agendado para %{time} scheduled_msg: Anúncio agendado para publicação! title: Anúncios unpublish: Cancelar publicação - unpublished_msg: Anúncio despublicado com sucesso! - updated_msg: Anúncio atualizado com sucesso! + unpublished_msg: Anúncio desfeito! + updated_msg: Anúncio atualizado! custom_emojis: assign_category: Atribuir categoria by_domain: Domínio - copied_msg: Cópia local do emoji criada com sucesso + copied_msg: Emoji copiado localmente copy: Copiar copy_failed_msg: Não foi possível criar cópia local do emoji create_new_category: Criar nova categoria - created_msg: Emoji criado com sucesso! + created_msg: Emoji criado! delete: Excluir - destroyed_msg: Emoji excluído com sucesso! + destroyed_msg: Emoji excluído! disable: Desativar disabled: Desativado - disabled_msg: Emoji desativado com sucesso + disabled_msg: Emoji desativado emoji: Emoji enable: Ativar enabled: Ativado - enabled_msg: Emoji ativado com sucesso + enabled_msg: Emoji ativado image_hint: PNG ou GIF até %{size} list: Listar listed: Listado @@ -337,7 +337,7 @@ pt-BR: unlist: Não listar unlisted: Não-listado update_failed_msg: Não foi possível atualizar esse emoji - updated_msg: Emoji atualizado com sucesso! + updated_msg: Emoji atualizado! upload: Enviar dashboard: active_users: usuários ativos @@ -372,8 +372,8 @@ pt-BR: domain_allows: add_new: Permitir domínio created_msg: Domínio foi permitido - destroyed_msg: Domínio foi bloqueado - undo: Bloquear + destroyed_msg: Domínio foi proibido de federar + undo: Bloquear federação com domínio domain_blocks: add_new: Adicionar novo bloqueio de domínio created_msg: Domínio está sendo bloqueado @@ -408,7 +408,7 @@ pt-BR: attempts_over_week: one: "%{count} tentativa na última semana" other: "%{count} tentativas de inscrição na última semana" - created_msg: Domínio de e-mail adicionado à lista negra com sucesso + created_msg: O domínio de e-mail foi adicionado à lista negra delete: Excluir dns: types: @@ -433,8 +433,8 @@ pt-BR: instances: availability: description_html: - one: Se a entrega ao domínio falhar %{count} dia sem sucesso, nenhuma tentativa de entrega será feita a menos que uma entrega de do domínio seja recebida. - other: Se a entrega ao domínio falhar em %{count} dias diferentes sem sucesso, nenhuma tentativa de entrega será feita a menos que uma entrega de do domínio seja recebida. + one: Se a entrega ao domínio falhar em %{count} dia sem sucesso, nenhuma tentativa de entrega será feita a menos que uma entrega do domínio seja recebida. + other: Se a entrega ao domínio falhar em %{count} dias diferentes sem sucesso, nenhuma tentativa de entrega será feita a menos que uma entrega do domínio seja recebida. failure_threshold_reached: Limite de falhas atingido em %{date}. failures_recorded: one: Falha na tentativa em %{count} dia. @@ -507,7 +507,7 @@ pt-BR: title: Convites ip_blocks: add_new: Criar regra - created_msg: Nova regra de IP adicionada com sucesso + created_msg: Nova regra de IP adicionada delete: Excluir expires_in: '1209600': 2 semanas @@ -525,11 +525,11 @@ pt-BR: relays: add_new: Adicionar novo repetidor delete: Excluir - description_html: Um repetidor de federação é um servidor intermediário que troca um grande volume de toots públicos entre instâncias que se inscrevem e publicam nele. O repetidor pode ser usado para ajudar instâncias pequenas e médias a descobrir conteúdo pelo fediverso, que normalmente precisariam que usuários locais manualmente seguissem outras pessoas em instâncias remotas. + description_html: Um repetidor de federação é um servidor intermediário que troca um grande volume de publicações públicas entre servidores que se inscrevem e publicam nele. Ele pode ser usado para ajudar os servidores pequenos e médios a descobrir o conteúdo pelo fediverso, que normalmente precisariam que usuários locais manualmente seguissem outras pessoas em servidores remotas. disable: Desativar disabled: Desativado enable: Ativar - enable_hint: Uma vez ativado, sua instância se inscreverá para receber todos os toots públicos desse repetidor; E vai começar a enviar todos os toots públicos desta instância para o repetidor. + enable_hint: Uma vez ativado, seu servidor se inscreverá para receber todas as publicações deste repetidor e começará a enviar todas as publicações deste servidor para o repetidor. enabled: Ativado inbox_url: Link do repetidor pending: Esperando pela aprovação do repetidor @@ -539,8 +539,8 @@ pt-BR: status: Situação title: Repetidores report_notes: - created_msg: Nota de denúncia criada com sucesso! - destroyed_msg: Nota de denúncia excluída com sucesso! + created_msg: Nota de denúncia criada! + destroyed_msg: Nota de denúncia excluída! today_at: Hoje às %{time} reports: account: @@ -592,7 +592,7 @@ pt-BR: reported_account: Conta denunciada reported_by: Denunciada por resolved: Resolvido - resolved_msg: Denúncia resolvida com sucesso! + resolved_msg: Denúncia resolvida! skip_to_actions: Pular para ações status: Situação statuses: Conteúdo denunciado @@ -747,18 +747,20 @@ pt-BR: appeal_pending: Recurso pendente system_checks: database_schema_check: - message_html: Existem migrações de banco de dados pendentes. Por favor, execute-as para garantir que o aplicativo se comporte como esperado + message_html: Existem migrações de banco de dados pendentes. Execute-as para garantir que o aplicativo se comporte como esperado elasticsearch_running_check: - message_html: Não foi possível conectar ao Elasticsearch. Por favor, verifique se está em execução, ou desabilite a pesquisa de texto completo + message_html: Não foi possível conectar ao Elasticsearch. Verifique se ele está em execução ou desative a pesquisa de texto completo elasticsearch_version_check: message_html: 'Versão de Elasticsearch incompatível: %{value}' version_comparison: A versão %{running_version} de Elasticsearch está em execução, porém é obrigatória a versão %{required_version} rules_check: action: Gerenciar regras do servidor message_html: Você não definiu nenhuma regra de servidor. + sidekiq_process_check: + message_html: Nenhum processo Sidekiq rodando para a(s) fila(s) %{value}. Por favor, revise a sua configuração para Sidekiq tags: review: Status da revisão - updated_msg: Configurações de hashtag atualizadas com sucesso + updated_msg: Configurações de hashtag atualizadas title: Administração trends: allow: Permitir @@ -767,8 +769,9 @@ pt-BR: links: allow: Permitir link allow_provider: Permitir editor - disallow: Impedir link - disallow_provider: Impedir publicador + description_html: Estes são links que estão sendo compartilhados por contas que seu servidor vê. Você pode ajudar seus usuários a descobrir o que está acontecendo no mundo. Nenhum link é exibido publicamente até que você aprove o editor. Você também pode permitir ou rejeitar links individuais. + disallow: Proibir link + disallow_provider: Proibir autor no_link_selected: Nenhum link foi alterado como nenhum foi selecionado title: Em alta no momento usage_comparison: Compartilhado %{today} vezes hoje, em comparação com %{yesterday} de ontem @@ -784,8 +787,11 @@ pt-BR: allow: Permitir publicação allow_account: Permitir autor description_html: Estes são as publicações que seu servidor sabe que estão sendo muito compartilhadas e favorecidas no momento. Isso pode ajudar seus usuários, novos e atuais, a encontrar mais pessoas para seguir. Nenhuma publicação é exibida publicamente até que você aprove o autor e o autor permitir que sua conta seja sugerida a outros. Você também pode permitir ou rejeitar publicações individuais. - disallow: Impedir publicação - disallow_account: Impedir autor + disallow: Proibir publicação + disallow_account: Proibir autor + shared_by: + one: Compartilhado ou favoritado uma vez + other: Compartilhado e favoritado %{friendly_count} vezes title: Publicações em alta tags: current_score: Pontuação atual %{score} @@ -860,10 +866,10 @@ pt-BR: subject: Novas tendências para revisão em %{instance} aliases: add_new: Criar alias - created_msg: Um novo alias foi criado com sucesso. Agora você pode iniciar a mudança da conta antiga. - deleted_msg: Alias removido com sucesso. Não será mais possível se mudar daquela conta para esta conta. + created_msg: Um novo atalho foi criado. Agora você pode iniciar a mudança da conta antiga. + deleted_msg: O atalho foi removido. Não será mais possível se mudar daquela conta para esta conta. empty: Você não tem alias. - hint_html: Se você quiser migrar de uma outra conta para esta, você pode criar um alias aqui, o que é necessário antes que você possa migrar os seguidores da conta antiga para esta. Esta ação por si só é inofensiva e reversível. A migração da conta é iniciada pela conta antiga. + hint_html: Se você quiser migrar de uma outra conta para esta, você pode criar um atalho aqui, o que é necessário antes que você possa migrar os seguidores da conta antiga para esta. Esta ação por si só é inofensiva e reversível. A migração da conta é iniciada pela conta antiga. remove: Desvincular alias appearance: advanced_web_interface: Interface avançada de colunas @@ -876,19 +882,19 @@ pt-BR: guide_link: https://br.crowdin.com/project/mastodon guide_link_text: Todos podem contribuir. sensitive_content: Conteúdo sensível - toot_layout: Layout do Toot + toot_layout: Formato da publicação application_mailer: notification_preferences: Alterar preferências de e-mail salutation: "%{name}," settings: 'Alterar e-mail de preferência: %{link}' view: 'Ver:' view_profile: Ver perfil - view_status: Ver toot + view_status: Ver publicação applications: created: Aplicativo criado com sucesso destroyed: Aplicativo excluído com sucesso regenerate_token: Gerar código de acesso - token_regenerated: Código de acesso gerado com sucesso + token_regenerated: Código de acesso gerado warning: Tenha cuidado com estes dados. Nunca compartilhe com alguém! your_token: Seu código de acesso auth: @@ -903,7 +909,7 @@ pt-BR: didnt_get_confirmation: Não recebeu instruções de confirmação? dont_have_your_security_key: Não está com a sua chave de segurança? forgot_password: Esqueceu a sua senha? - invalid_reset_password_token: Código de alteração de senha é inválido ou expirou. Por favor, solicite um novo. + invalid_reset_password_token: Código de alteração de senha é inválido ou expirou. Solicite um novo. link_to_otp: Digite um código de duas etapas do seu telefone ou um código de recuperação link_to_webauth: Use seu dispositivo de chave de segurança log_in_with: Iniciar sessão com @@ -933,7 +939,7 @@ pt-BR: functional: Sua conta está totalmente operacional. pending: Sua solicitação está com revisão pendente por parte de nossa equipe. Você receberá um e-mail se ela for aprovada. redirecting_to: Sua conta está inativa porque atualmente está redirecionando para %{acct}. - view_strikes: Veja os ataques anteriores contra a sua conta + view_strikes: Veja os avisos anteriores em relação à sua conta too_fast: O formulário foi enviado muito rapidamente, tente novamente. use_security_key: Usar chave de segurança authorize_follow: @@ -942,7 +948,7 @@ pt-BR: error: Infelizmente, ocorreu um erro ao buscar a conta remota follow: Seguir follow_request: 'Você mandou solicitação para seguir para:' - following: 'Sucesso! Você agora está seguindo:' + following: 'Sucesso! Agora você está seguindo:' post_follow: close: Ou você pode simplesmente fechar esta janela. return: Mostrar o perfil do usuário @@ -980,11 +986,11 @@ pt-BR: confirm_password: Digite a sua senha atual para verificar a sua identidade confirm_username: Digite seu nome de usuário para confirmar o procedimento proceed: Excluir conta - success_msg: A sua conta foi excluída com sucesso + success_msg: Sua conta foi excluída warning: - before: 'Antes de prosseguir, por favor leia com cuidado:' + before: 'Antes de prosseguir, leia com cuidado:' caches: Conteúdo que foi armazenado em cache por outros servidores pode continuar a existir - data_removal: Seus toots e outros dados serão removidos permanentemente + data_removal: Suas publicações e outros dados serão removidos permanentemente email_change_html: Você pode alterar seu endereço de e-mail sem excluir sua conta email_contact_html: Se você ainda não recebeu, você pode enviar um e-mail pedindo ajuda para %{email} email_reconfirmation_html: Se você não está recebendo o e-mail de confirmação, você pode solicitá-lo novamente @@ -1038,7 +1044,7 @@ pt-BR: content: Desculpe, algo deu errado por aqui. title: Esta página não está certa '503': A página não pôde ser carregada devido a uma falha temporária do servidor. - noscript_html: Para usar o aplicativo web do Mastodon, por favor ative o JavaScript. Ou, se quiser, experimente um dos aplicativos nativos para o Mastodon em sua plataforma. + noscript_html: Para usar o aplicativo web do Mastodon, ative o JavaScript. Ou, se quiser, experimente um dos aplicativos nativos para o Mastodon em sua plataforma. existing_username_validator: not_found: não foi possível encontrar um usuário local com esse nome de usuário not_found_multiple: não foi possível encontrar %{usernames} @@ -1046,7 +1052,7 @@ pt-BR: archive_takeout: date: Data download: Baixe o seu arquivo - hint_html: Você pode pedir um arquivo dos seus toots e mídias enviadas. Os dados exportados estarão no formato ActivityPub, que podem ser lidos por qualquer software compatível. Você pode pedir um arquivo a cada 7 dias. + hint_html: Você pode pedir um arquivo das suas publicações e mídias enviadas. Os dados exportados estarão no formato ActivityPub, que podem ser lidos por qualquer software compatível. Você pode pedir um arquivo a cada 7 dias. in_progress: Preparando o seu arquivo... request: Solicitar o seu arquivo size: Tamanho @@ -1061,7 +1067,7 @@ pt-BR: add_new: Adicionar hashtag errors: limit: Você atingiu o limite de hashtags em destaque - hint_html: "O que são hashtags em destaque? Elas são mostradas no seu perfil público e permitem que as pessoas acessem seus toots públicos que contenham especificamente essas hashtags. São uma excelente ferramenta para acompanhar os trabalhos criativos ou os projetos de longo prazo." + hint_html: "O que são hashtags em destaque? Elas são exibidas no seu perfil público e permitem que as pessoas acessem suas publicações públicos que contenham especificamente essas hashtags. São uma excelente ferramenta para acompanhar os trabalhos criativos ou os projetos de longo prazo." filters: contexts: account: Perfis @@ -1100,7 +1106,7 @@ pt-BR: trending_now: Em alta no momento generic: all: Tudo - changes_saved_msg: Alterações foram salvas com sucesso! + changes_saved_msg: Alterações salvas! copy: Copiar delete: Excluir deselect: Desmarcar todos @@ -1109,8 +1115,8 @@ pt-BR: save_changes: Salvar alterações today: hoje validation_errors: - one: Algo errado não está certo! Por favor, analise o erro abaixo - other: Algo errado não está certo! Por favor, analise os %{count} erros abaixo + one: Algo não está certo! Analise o erro abaixo + other: Algo não está certo! Analise os %{count} erros abaixo html_validator: invalid_markup: 'contém HTML inválido: %{error}' imports: @@ -1122,7 +1128,7 @@ pt-BR: overwrite: Sobrescrever overwrite_long: Substituir os registros atuais com os novos preface: Você pode importar dados que você exportou de outro servidor, como a lista de pessoas que você segue ou bloqueou. - success: Os seus dados foram enviados com sucesso e serão processados em instantes + success: Seus dados foram enviados e serão processados em instantes types: blocking: Lista de bloqueio bookmarks: Marcadores @@ -1168,14 +1174,14 @@ pt-BR: title: Histórico de autenticação media_attachments: validations: - images_and_video: Não foi possível anexar um vídeo a um toot que já contém imagens + images_and_video: Não foi possível anexar um vídeo a uma publicação que já contém imagens not_ready: Não é possível anexar arquivos que não terminaram de ser processados. Tente novamente daqui a pouco! too_many: Não foi possível anexar mais de 4 imagens migrations: acct: Mudou-se para cancel: Cancelar redirecionamento cancel_explanation: Cancelar o redirecionamento reativará a sua conta atual, mas não trará de volta os seguidores que não foram migrados para aquela conta. - cancelled_msg: Redirecionamento cancelado com sucesso. + cancelled_msg: Redirecionamento cancelado. errors: already_moved: é a mesma conta que você migrou missing_also_known_as: não está referenciando esta conta @@ -1195,7 +1201,7 @@ pt-BR: set_redirect: Definir redirecionamento warning: backreference_required: A nova conta deve primeiro ser configurada para que esta seja referenciada - before: 'Antes de prosseguir, por favor leia com cuidado:' + before: 'Antes de prosseguir, leia com cuidado:' cooldown: Depois de se mudar, há um período de espera para poder efetuar uma nova mudança disabled_account: Sua conta não estará totalmente funcional ao término deste processo. Entretanto, você terá acesso à exportação de dados bem como à reativação. followers: Esta ação moverá todos os seguidores da conta atual para a nova conta @@ -1235,8 +1241,8 @@ pt-BR: poll: subject: Uma enquete por %{name} terminou reblog: - body: "%{name} deu boost no seu toot:" - subject: "%{name} deu boost no seu toot" + body: "%{name} impulsionou a sua publicação:" + subject: "%{name} impulsionou a sua publicação" title: Novo boost status: subject: "%{name} acabou de publicar" @@ -1258,7 +1264,7 @@ pt-BR: trillion: TRI otp_authentication: code_hint: Digite o código gerado pelo seu aplicativo autenticador para confirmar - description_html: Se você habilitar a autenticação de dois fatores usando um aplicativo autenticador, o login exigirá que você esteja com o seu telefone, que gerará tokens para você entrar. + description_html: Se você ativar a autenticação de dois fatores usando um aplicativo autenticador, ao se conectar será exigido que você esteja com o seu telefone, que gerará tokens para você entrar. enable: Habilitar instructions_html: "Escaneie este código QR no Google Authenticator ou em um aplicativo TOTP similar no seu telefone. A partir de agora, esse aplicativo irá gerar tokens que você terá que digitar ao fazer login." manual_instructions: 'Se você não pode escanear o código QR e precisa digitá-lo manualmente, aqui está o segredo em texto:' @@ -1361,7 +1367,7 @@ pt-BR: windows_mobile: Windows Mobile windows_phone: Windows Phone revoke: Fechar - revoke_success: Sessão fechada com sucesso + revoke_success: Sessão fechada title: Sessões view_authentication_history: Ver histórico de autenticação da sua conta settings: @@ -1384,7 +1390,7 @@ pt-BR: profile: Perfil relationships: Seguindo e seguidores statuses_cleanup: Exclusão automatizada de publicações - strikes: Moderação de ataques + strikes: Avisos de moderação two_factor_authentication: Autenticação de dois fatores webauthn_authentication: Chaves de segurança statuses: @@ -1412,8 +1418,8 @@ pt-BR: over_character_limit: limite de caracteres de %{max} excedido pin_errors: direct: Publicações visíveis apenas para usuários mencionados não podem ser fixadas - limit: Quantidade máxima de toots excedida - ownership: Publicações dos outros não podem ser fixadas + limit: Você alcançou o número limite de publicações fixadas + ownership: As publicações dos outros não podem ser fixadas reblog: Um impulso não pode ser fixado poll: total_people: @@ -1473,7 +1479,7 @@ pt-BR: min_reblogs: Manter publicações impulsionadas por ao menos min_reblogs_hint: Não exclui publicações que receberam pelo menos esta quantidade de impulsos. Deixe em branco para excluir publicações independentemente da quantidade de impulsos stream_entries: - pinned: Toot fixado + pinned: Publicação fixada reblogged: deu boost sensitive_content: Conteúdo sensível strikes: @@ -1492,27 +1498,27 @@ pt-BR: time: "%H:%M" two_factor_authentication: add: Adicionar - disable: Desativar - disabled_success: Autenticação de dois fatores desabilitada com sucesso + disable: Desativar autenticação de dois fatores + disabled_success: Autenticação de dois fatores desativada edit: Editar enabled: Autenticação de dois fatores ativada - enabled_success: Autenticação de dois fatores ativada com sucesso + enabled_success: Autenticação de dois fatores ativada generate_recovery_codes: Gerar códigos de recuperação - lost_recovery_codes: Códigos de recuperação permitem que você recupere o acesso à sua conta caso perca o seu celular. Se você perdeu seus códigos de recuperação, você pode gerá-los novamente aqui. Seus códigos de recuperação anteriores serão invalidados. - methods: Métodos de dois fatores + lost_recovery_codes: Os códigos de recuperação permitem que você recupere o acesso à sua conta caso perca o seu celular. Se você perdeu seus códigos de recuperação, você pode gerá-los novamente aqui. Seus códigos de recuperação anteriores serão invalidados. + methods: Métodos de autenticação de dois fatores otp: Aplicativo autenticador recovery_codes: Códigos de recuperação de reserva - recovery_codes_regenerated: Códigos de recuperação gerados com sucesso - recovery_instructions_html: Se você perder acesso ao seu celular, você pode usar um dos códigos de recuperação abaixo para acessar a sua conta. Mantenha os códigos de recuperação em um local seguro. Por exemplo, você pode imprimi-los e guardá-los junto com outros documentos importantes. + recovery_codes_regenerated: Códigos de recuperação gerados + recovery_instructions_html: Se você perder acesso ao seu celular, você pode usar um dos códigos de recuperação abaixo para acessar a sua conta. Mantenha os códigos de recuperação em um local seguro. Por exemplo, você pode imprimi-los e guardá-los junto a outros documentos importantes. webauthn: Chaves de segurança user_mailer: appeal_approved: action: Acessar perfil - explanation: O recurso do ataque contra sua conta em %{strike_date} que você submeteu em %{appeal_date} foi aprovado. Sua conta está novamente em situação regular. + explanation: O recurso contra o aviso dado à sua conta em %{strike_date} que você submeteu em %{appeal_date} foi aprovado. Sua conta está novamente em situação regular. subject: Seu recurso de %{date} foi aprovado title: Contestação aprovada appeal_rejected: - explanation: O recurso do ataque contra sua conta em %{strike_date} que você submeteu em %{appeal_date} foi rejeitado. + explanation: O recurso contra o aviso dado à sua conta em %{strike_date} que você submeteu em %{appeal_date} foi rejeitado. subject: Seu recurso de %{date} foi rejeitado title: Contestação rejeitada backup_ready: @@ -1557,9 +1563,9 @@ pt-BR: welcome: edit_profile_action: Configurar perfil explanation: Aqui estão algumas dicas para você começar - final_action: Comece a tootar + final_action: Comece a publicar full_handle: Seu nome de usuário completo - full_handle_hint: Isso é o que você compartilha com aos seus amigos para que eles possam te mandar toots ou te seguir a partir de outra instância. + full_handle_hint: Isso é o que você compartilha com seus amigos para que eles possam te mandar mensagens ou te seguir a partir de outro servidor. subject: Boas-vindas ao Mastodon title: Boas vindas, %{name}! users: @@ -1575,16 +1581,16 @@ pt-BR: add: Adicionar nova chave de segurança create: error: Houve um problema ao adicionar sua chave de segurança. Tente novamente. - success: A sua chave de segurança foi adicionada com sucesso. + success: Sua chave de segurança foi adicionada. delete: Excluir delete_confirmation: Você tem certeza de que deseja excluir esta chave de segurança? description_html: Se você habilitar a autenticação por chave de segurança, o login exigirá que você use uma das suas chaves de segurança. destroy: error: Houve um problema ao excluir sua chave de segurança. Tente novamente. - success: Sua chave de segurança foi excluída com sucesso. + success: Sua chave de segurança foi excluída. invalid_credential: Chave de segurança inválida nickname_hint: Digite o apelido da sua nova chave de segurança not_enabled: Você ainda não habilitou o WebAuthn not_supported: Este navegador não tem suporte a chaves de segurança - otp_required: Para usar chaves de segurança, por favor habilite primeiro a autenticação de dois fatores. + otp_required: Para usar chaves de segurança, ative a autenticação de dois fatores. registered_on: Registrado em %{date} diff --git a/config/locales/simple_form.af.yml b/config/locales/simple_form.af.yml index e408079daa..b06630a513 100644 --- a/config/locales/simple_form.af.yml +++ b/config/locales/simple_form.af.yml @@ -14,6 +14,9 @@ af: locale: Koppelvlak taal form_admin_settings: site_terms: Privaatheidsbeleid + interactions: + must_be_following: Blokeer kennisgewings vanaf persone wat jy nie volg nie + must_be_following_dm: Blokeer direkte boodskappe van persone wat jy nie volg nie webhook: events: Geaktiveerde gebeurtenisse url: End-punt URL diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index b972a1d001..d91d990001 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -178,6 +178,7 @@ ar: setting_use_pending_items: الوضع البطيء severity: القوّة sign_in_token_attempt: رمز الأمان + title: العنوان type: صيغة الاستيراد username: اسم المستخدم username_or_email: اسم المستخدم أو كلمة السر @@ -189,6 +190,7 @@ ar: filters: actions: hide: إخفاء بالكامل + warn: إخفاء بتحذير form_admin_settings: custom_css: سي أس أس CSS مخصص profile_directory: تفعيل دليل الصفحات التعريفية diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 2a23ea0577..cee3f423e0 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -6,50 +6,138 @@ bg: avatar: PNG, GIF или JPG. До %{size}. Ще бъде смалена до %{dimensions} пиксела header: PNG, GIF или JPG. До %{size}. Ще бъде смалена до %{dimensions} пиксела locked: Изисква ръчно одобрение на последователите. По подразбиране, публикациите са достъпни само до последователи. + password: Използвайте поне 8 символа + setting_default_sensitive: Деликатната мултимедия е скрита по подразбиране и може да се разкрие с едно щракване + setting_display_media_default: Скриване на мултимедия отбелязана като деликатна + setting_display_media_hide_all: Винаги да се скрива мултимедията + setting_display_media_show_all: Винаги да се показва мултимедията + setting_hide_network: В профила ви ще бъде скрито кой може да последвате и кой може да ви последва + username: Вашето потребителско име ще е неповторим в %{domain} + form_admin_settings: + site_contact_username: Как хората могат да ви достигнат в Mastodon. + site_extended_description: Всяка допълнителна информация, която може да е полезна за посетителите и потребителите ви. Може да се структурира със синтаксиса на Markdown. + site_short_description: Кратък опис за помощ на неповторимата самоличност на сървъра ви. Кой го управлява, за кого е? imports: data: CSV файл, експортиран от друга инстанция на Mastodon + ip_block: + severities: + no_access: Блокиране на достъп до всички ресурси + severity: Изберете какво да се случва със заявките от този IP + rule: + text: Опишете правило или изискване за потребителите на този сървър. Опитайте се да го направите кратко и просто + sessions: + otp: 'Въведете двуфакторния код, породен от приложението на телефона си или използвайте един от кодовете си за възстановяване:' + user_role: + highlighted: Това прави ролята публично видима + permissions_as_keys: Потребители с тази роля ще имат достъп до... + webhook: + events: Изберете събития за изпращане + url: До къде ще се изпращат събитията labels: account: fields: + name: Етикет value: Съдържание account_warning_preset: title: Заглавие admin_account_action: + include_statuses: Включва докладваните публикации в е-писмо type: Действие types: disable: Замразяване sensitive: Деликатно silence: Ограничение suspend: Спиране + announcement: + all_day: Целодневно събитие + ends_at: Край на събитието + starts_at: Начало на събитието + text: Оповестяване defaults: avatar: Аватар + bot: Този акаунт е бот + chosen_languages: Прецеждане на езиците confirm_new_password: Потвърди новата парола confirm_password: Потвърди паролата current_password: Текуща парола data: Данни display_name: Показвано име - email: E-mail адрес + email: Адрес на имейла header: Заглавен ред - locale: Език + locale: Език на интерфейса locked: Направи акаунта поверителен + max_uses: Най-голям брой употреби new_password: Нова парола - note: Био - otp_attempt: Двустепенен код + note: Биография + otp_attempt: Двуфакторен код password: Парола + phrase: Ключова дума или фраза + setting_auto_play_gif: Самопускащи се анимирани гифчета + setting_default_language: Език на публикуване setting_default_privacy: Поверителност на публикациите + setting_default_sensitive: Винаги да се отбелязва мултимедията като деликатна + setting_display_media_default: Стандартно + setting_display_media_hide_all: Скриване на всичко + setting_display_media_show_all: Показване на всичко + setting_theme: Тема на сайта + setting_use_pending_items: Бавен режим + sign_in_token_attempt: Код за сигурност + title: Заглавие type: Тип на импортиране username: Потребителско име + username_or_email: Потребителско име или имейл + whole_word: Цяла дума + featured_tag: + name: Хаштаг + form_admin_settings: + require_invite_text: Изисква се причина за присъединяване + site_contact_username: Потребителско име на контакт + site_extended_description: Разширено описание + site_short_description: Описание на сървъра + site_terms: Политика за поверителност + site_title: Име на сървъра + theme: Стандартна тема + thumbnail: Миниобраз на сървъра interactions: must_be_follower: Блокирай известия от не-последователи must_be_following: Блокирай известия от хора, които не следваш + must_be_following_dm: Блокиране на директни съобщения от хора, които не следвате + invite: + comment: Коментар + invite_request: + text: Защо искате да се присъедините? + ip_block: + comment: Коментар + ip: IP адрес + severities: + no_access: Блокиране на адреса + sign_up_block: Блокиране на регистрации + sign_up_requires_approval: Ограничаване на регистриране + severity: Правило notification_emails: digest: Изпращай извлечения на съобщенията favourite: Изпращай e-mail, когато някой хареса твоя публикация follow: Изпращай e-mail, когато някой те последва follow_request: Изпращай e-mail, когато някой пожелае да те последва mention: Изпращай e-mail, когато някой те спомене + pending_account: Новите акаунти трябва да се прегледат reblog: Изпращай e-mail, когато някой сподели твоя публикация + report: Новият доклад е подаден + rule: + text: Правило + tag: + name: Хаштаг + user: + role: Роля + user_role: + color: Цвят на значката + name: Име + permissions_as_keys: Разрешения + position: Приоритет 'no': Не + not_recommended: Не се препоръчва + recommended: Препоръчано required: + mark: "*" text: задължително 'yes': Да diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index ae59a591d6..2ece2bd80e 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -180,7 +180,7 @@ de: inbox_url: Inbox-URL des Relais irreversible: Endgültig, nicht nur temporär ausblenden locale: Sprache der Benutzeroberfläche - locked: Follower müssen zugelassen werden + locked: Geschütztes Profil max_uses: Maximale Verwendungen new_password: Neues Passwort note: Über mich diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml index 617fb593cb..89e78c9b05 100644 --- a/config/locales/simple_form.en-GB.yml +++ b/config/locales/simple_form.en-GB.yml @@ -9,3 +9,38 @@ en-GB: account_warning_preset: text: You can use post syntax, such as URLs, hashtags and mentions title: Optional. Not visible to the recipient + admin_account_action: + include_statuses: The user will see which posts have caused the moderation action or warning + send_email_notification: The user will receive an explanation of what happened with their account + text_html: Optional. You can use post syntax. You can add warning presets to save time + type_html: Choose what to do with %{acct} + types: + disable: Prevent the user from using their account, but do not delete or hide their contents. + none: Use this to send a warning to the user, without triggering any other action. + sensitive: Force all this user's media attachments to be flagged as sensitive. + silence: Prevent the user from being able to post with public visibility, hide their posts and notifications from people not following them. + suspend: Prevent any interaction from or to this account and delete its contents. Revertible within 30 days. + warning_preset_id: Optional. You can still add custom text to end of the preset + announcement: + all_day: When checked, only the dates of the time range will be displayed + ends_at: Optional. Announcement will be automatically unpublished at this time + scheduled_at: Leave blank to publish the announcement immediately + starts_at: Optional. In case your announcement is bound to a specific time range + text: You can use post syntax. Please be mindful of the space the announcement will take up on the user's screen + appeal: + text: You can only appeal a strike once + defaults: + autofollow: People who sign up through the invite will automatically follow you + avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px + bot: Signal to others that the account mainly performs automated actions and might not be monitored + context: One or multiple contexts where the filter should apply + labels: + notification_emails: + follow_request: Someone requested to follow you + mention: Someone mentioned you + pending_account: New account needs review + reblog: Someone boosted your post + report: New report is submitted + trending_tag: New trend requires review + rule: + text: Rule diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index e5db78c4d8..b084034264 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -66,6 +66,8 @@ es-MX: email_domain_block: domain: Este puede ser el nombre de dominio que se muestra en al dirección de correo o el registro MX que utiliza. Se comprobarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra + featured_tag: + name: 'Aquí están algunas de las etiquetas que más has utilizado recientemente:' filters: action: Elegir qué acción realizar cuando una publicación coincide con el filtro actions: diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 44f25f2c48..34c60a553c 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -66,6 +66,8 @@ eu: email_domain_block: domain: Hau eposta helbidean agertzen den domeinu-izena edo MX erregistroak erabiltzen duena izan daiteke. Izen-ematean egiaztatuko dira. with_dns_records: Emandako domeinuaren DNS erregistroak ebazteko saiakera bat egingo da eta emaitzak ere zerrenda beltzean sartuko dira + featured_tag: + name: 'Hemen dituzu azkenaldian gehien erabili dituzun traoletako batzuk:' filters: action: Aukeratu ze ekintza burutu behar den bidalketa bat iragazkiarekin bat datorrenean actions: diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index 196222e22a..b214e856ab 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -66,6 +66,8 @@ id: email_domain_block: domain: Ini bisa berupa nama domain yang tampil di alamat email atau data MX yang memakainya. Mereka akan diperiksa saat mendaftar. with_dns_records: Usaha untuk menyelesaikan data DNS domain yang diberikan akan dilakukan dan hasilnya akan masuk daftar hitam + featured_tag: + name: 'Ini adalah beberapa tagar yang sering Anda gunakan:' filters: action: Pilih tindakan apa yang dilakukan ketika sebuah kiriman cocok dengan saringan actions: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index c5736311c0..82abda07ee 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -44,7 +44,7 @@ ko: inbox_url: 사용 할 릴레이 서버의 프론트페이지에서 URL을 복사합니다 irreversible: 필터링 된 게시물은 나중에 필터가 사라지더라도 돌아오지 않게 됩니다 locale: 사용자 인터페이스, 이메일, 푸시 알림 언어 - locked: 팔로우 요청을 승인함으로써 누가 당신을 팔로우 할 수 있는지를 수동으로 제어합니다. + locked: 팔로우 요청을 승인제로 두어 누가 당신을 팔로우 할 수 있는지를 수동으로 제어합니다. password: 최소 8글자 phrase: 게시물 내용이나 열람주의 내용 안에서 대소문자 구분 없이 매칭 됩니다 scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다. @@ -77,7 +77,7 @@ ko: backups_retention_period: 생성된 사용자 아카이브를 며칠동안 저장할 지. bootstrap_timeline_accounts: 이 계정들은 팔로우 추천 목록 상단에 고정됩니다. closed_registrations_message: 새 가입을 차단했을 때 표시됩니다 - content_cache_retention_period: 양수가 설정되었다면 다른 서버의 게시물은 여기서 설정된 일수가 지나면 삭제될 것입니다. 되돌릴 수 없는 작업일 수 있습니다. + content_cache_retention_period: 양수로 설정되었다면 다른 서버의 게시물은 여기서 설정된 일수가 지나면 삭제될 것입니다. 되돌릴 수 없는 작업일 수 있습니다. custom_css: 사용자 지정 스타일을 웹 버전의 마스토돈에 지정할 수 있습니다. mascot: 고급 사용자 인터페이스에 있는 일러스트를 교체합니다. media_cache_retention_period: 양수로 설정된 경우 다운로드된 미디어 파일들은 지정된 일수가 지나면 삭제될 것이고 필요할 때 다시 다운로드 될 것입니다. @@ -195,7 +195,7 @@ ko: setting_crop_images: 확장되지 않은 게시물의 이미지를 16x9로 자르기 setting_default_language: 게시물 언어 setting_default_privacy: 게시물 프라이버시 - setting_default_sensitive: 미디어를 언제나 민감한 컨텐츠로 설정 + setting_default_sensitive: 미디어를 언제나 민감한 콘텐츠로 설정 setting_delete_modal: 게시물 삭제 전 확인 창을 표시 setting_disable_swiping: 스와이프 모션 비활성화 setting_display_media: 미디어 표시 @@ -207,7 +207,7 @@ ko: setting_noindex: 검색엔진의 인덱싱을 거절 setting_reduce_motion: 애니메이션 줄이기 setting_show_application: 툿 작성에 사용한 앱을 공개 - setting_system_font_ui: 시스템의 초기 설정 폰트를 사용 + setting_system_font_ui: 시스템의 기본 글꼴을 사용 setting_theme: 사이트 테마 setting_trends: 오늘의 유행 보이기 setting_unfollow_modal: 언팔로우 전 언팔로우 확인 표시 @@ -232,7 +232,7 @@ ko: backups_retention_period: 사용자 아카이브 유지 기한 bootstrap_timeline_accounts: 새로운 사용자들에게 추천할 계정들 closed_registrations_message: 가입이 불가능 할 때의 사용자 지정 메시지 - content_cache_retention_period: 컨텐트 캐시 유지 기한 + content_cache_retention_period: 콘텐츠 캐시 유지 기한 custom_css: 사용자 정의 CSS mascot: 사용자 정의 마스코트 (legacy) media_cache_retention_period: 미디어 캐시 유지 기한 diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 8b5b1dce3a..337b691a23 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -48,7 +48,7 @@ lv: password: Izmanto vismaz 8 rakstzīmes phrase: Tiks saskaņots neatkarīgi no ziņas teksta reģistra vai satura brīdinājuma scopes: Kuriem API lietojumprogrammai būs atļauta piekļuve. Ja izvēlies augstākā līmeņa tvērumu, tev nav jāatlasa atsevišķi vienumi. - setting_aggregate_reblogs: Nerādīt jaunus palielinājumus ziņām, kas nesen tika palielinātas (ietekmē tikai nesen saņemtos palielinājumus) + setting_aggregate_reblogs: Nerādīt jaunus pastiprinājumus ierakstiem, kas nesen tikuši pastiprināti (ietekmēs tikai turpmāk saņemtos pastiprinājumus) setting_always_send_emails: Parasti e-pasta paziņojumi netiek sūtīti, kad aktīvi izmantojat Mastodon setting_default_sensitive: Sensitīvi mediji pēc noklusējuma ir paslēpti, un tos var atklāt, noklikšķinot setting_display_media_default: Paslēpt mediju, kas atzīmēts kā sensitīvs @@ -188,10 +188,10 @@ lv: password: Parole phrase: Atslēgvārds vai frāze setting_advanced_layout: Iespējot paplašināto tīmekļa saskarni - setting_aggregate_reblogs: Grupēt paaugstinājumus ziņu lentās + setting_aggregate_reblogs: Grupēt pastiprinājumus ierakstu lentās setting_always_send_emails: Vienmēr sūtīt e-pasta paziņojumus setting_auto_play_gif: Automātiski atskaņot animētos GIF - setting_boost_modal: Parādīt apstiprinājuma dialogu pirms paaugstināšanas + setting_boost_modal: Rādīt apstiprinājuma dialogu pirms pastiprināšanas setting_crop_images: Apgrieziet attēlus neizvērstajās ziņās līdz 16x9 setting_default_language: Publicēšanas valoda setting_default_privacy: Publicēšanas privātums @@ -276,7 +276,7 @@ lv: follow_request: Kāds vēlas tev sekot mention: Kāds pieminēja tevi pending_account: Jāpārskata jaunu kontu - reblog: Kāds paaugstināja tavu ziņu + reblog: Kāds pastiprināja tavu ierakstu report: Tika iesniegts jauns ziņojums trending_tag: Jaunā tendence ir jāpārskata rule: diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index c074b89453..b6e6da78fa 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -14,6 +14,8 @@ oc: send_email_notification: L’utilizaire recebrà una explicacion de çò qu’arribèt a son compte text_html: Opcional. Podètz utilizar la sintaxi dels tuts. Podètz ajustar un avertiment personalizat per estalviar de temps type_html: Causir de qué far amb %{acct} + types: + disable: Empachar l’utilizaire d’utilizar son compte mas suprimir o amagar pas son contengut. warning_preset_id: Opcional. Podètz ajustar un tèxt personalizat a a fin de çò predefinit announcement: all_day: Se son marcadas, solament las datas de l’interval de temps seràn mostrada @@ -176,6 +178,11 @@ oc: hide: Rescondre complètament warn: Rescondre amb avertiment form_admin_settings: + custom_css: CSS personalizada + media_cache_retention_period: Durada de conservacion dels mèdias en cache + profile_directory: Activar l’annuari de perfils + registrations_mode: Qual se pòt marcar + require_invite_text: Requerir una rason per s’inscriure site_contact_email: Adreça de contacte site_contact_username: Nom d’utilizaire de contacte site_extended_description: Descripcion espandida @@ -183,6 +190,7 @@ oc: site_terms: Politica de confidencialitat site_title: Nom del servidor theme: Tèma per defaut + thumbnail: Miniatura del servidor interactions: must_be_follower: Blocar las notificacions del mond que vos sègon pas must_be_following: Blocar las notificacions del mond que seguètz pas @@ -221,6 +229,7 @@ oc: permissions_as_keys: Autorizacions position: Prioritat 'no': Non + not_recommended: Pas recomandat recommended: Recomandat required: mark: "*" diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index aa2d6ef8d9..ba8cb7e121 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -34,29 +34,29 @@ pt-BR: avatar: PNG, GIF or JPG. Arquivos de até %{size}. Serão redimensionados para %{dimensions}px bot: Essa conta executa principalmente ações automatizadas e pode não ser monitorada context: Um ou mais contextos onde o filtro deve atuar - current_password: Para fins de segurança, por favor, digite a senha da conta atual - current_username: Para confirmar, por favor, digite o nome de usuário da conta atual + current_password: Para fins de segurança, digite a senha da conta atual + current_username: Para confirmar, digite o nome de usuário da conta atual digest: Enviado apenas após um longo período de inatividade com um resumo das menções recebidas durante ausência discoverable: Permita que a sua conta seja descoberta por estranhos através de recomendações, tendências e outros recursos email: Você receberá um e-mail de confirmação fields: Você pode ter até 4 itens mostrados em forma de tabela no seu perfil - header: PNG, GIF or JPG. Arquivos de até %{size}. Serão redimensionados para %{dimensions}px + header: PNG, GIF ou JPG de até %{size}. Serão redimensionados para %{dimensions}px inbox_url: Copie o link da página inicial do repetidor que você deseja usar - irreversible: Toots filtrados desaparecerão irreversivelmente, mesmo se o filtro for removido depois + irreversible: As publicações filtradas desaparecerão irreversivelmente, mesmo se o filtro for removido depois locale: O idioma da interface do usuário, e-mails e notificações locked: Requer aprovação manual de seguidores password: Use pelo menos 8 caracteres phrase: Corresponderá independente de maiúsculas ou minúsculas, no texto ou no Aviso de Conteúdo de um toot scopes: Quais APIs o aplicativo vai ter permissão de acessar. Se você selecionar uma autorização de alto nível, você não precisa selecionar individualmente os outros. - setting_aggregate_reblogs: Não mostra novos boosts para toots que receberam boost recentemente (afeta somente os boosts mais recentes) + setting_aggregate_reblogs: Não mostra novos impulsos para publicações já receberam recentemente (afeta somente os impulsos mais recentes) setting_always_send_emails: Normalmente, as notificações por e-mail não serão enviadas enquanto você estiver usando ativamente o Mastodon setting_default_sensitive: Mídia sensível está oculta por padrão e pode ser revelada com um clique setting_display_media_default: Sempre ocultar mídia sensível setting_display_media_hide_all: Sempre ocultar todas as mídias setting_display_media_show_all: Sempre mostrar mídia sensível setting_hide_network: Quem você segue e seus seguidores não serão mostrados no seu perfil - setting_noindex: Afeta seu perfil público e as páginas dos seus toots - setting_show_application: O aplicativo que você usar para tootar será mostrado na visão detalhada dos seus toots + setting_noindex: Afeta seu perfil público e as páginas das suas publicações + setting_show_application: O aplicativo que você usar para publicar será exibido na visão detalhada das suas publicações setting_use_blurhash: O blur é baseado nas cores da imagem oculta, ofusca a maioria dos detalhes setting_use_pending_items: Ocultar atualizações da linha do tempo atrás de um clique ao invés de rolar automaticamente username: Seu nome de usuário será único em %{domain} @@ -102,7 +102,7 @@ pt-BR: tag: name: Você pode mudar a capitalização das letras, por exemplo, para torná-la mais legível user: - chosen_languages: Apenas toots dos idiomas selecionados serão mostrados nas linhas públicas + chosen_languages: Apenas as publicações dos idiomas selecionados serão exibidas nas linhas públicas webhook: events: Selecione eventos para enviar url: Aonde os eventos serão enviados @@ -170,7 +170,7 @@ pt-BR: setting_always_send_emails: Sempre enviar notificações por e-mail setting_auto_play_gif: Reproduzir GIFs automaticamente setting_boost_modal: Solicitar confirmação antes de dar boost - setting_crop_images: Cortar imagens no formato 16x9 em toots não expandidos + setting_crop_images: Cortar imagens no formato 16x9 em publicações não expandidas setting_default_language: Idioma dos toots setting_default_privacy: Privacidade dos toots setting_default_sensitive: Sempre marcar mídia como sensível @@ -184,7 +184,7 @@ pt-BR: setting_hide_network: Ocultar suas relações setting_noindex: Não quero ser indexado por mecanismos de pesquisa setting_reduce_motion: Reduzir animações - setting_show_application: Mostrar o aplicativo usado para enviar os toots + setting_show_application: Mostrar o aplicativo usado para enviar as publicações setting_system_font_ui: Usar fonte padrão do sistema setting_theme: Tema do site setting_trends: Mostrar em alta hoje diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index c7ef18b3ac..30d0b24e4b 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -57,7 +57,7 @@ sl: setting_hide_network: Kogar spremljate in kdo vas spremlja ne bo prikazano na vašem profilu setting_noindex: Vpliva na vaš javni profil in na strani z objavami setting_show_application: Aplikacija, ki jo uporabljate za objavljanje, bo prikazana v podrobnem pogledu vaših objav - setting_use_blurhash: Gradienti temeljijo na barvah skrite vizualne slike, vendar zakrivajo vse podrobnosti + setting_use_blurhash: Prelivi temeljijo na barvah skrite vizualne slike, vendar zakrivajo vse podrobnosti setting_use_pending_items: Skrij posodobitev časovnice za klikom namesto samodejnega posodabljanja username: Vaše uporabniško ime bo edinstveno na %{domain} whole_word: Ko je ključna beseda ali fraza samo alfanumerična, se bo uporabljala le, če se bo ujemala s celotno besedo @@ -211,7 +211,7 @@ sl: setting_theme: Tema strani setting_trends: Pokaži današnje trende setting_unfollow_modal: Pokaži potrditveno okno, preden nekoga prenehamo slediti - setting_use_blurhash: Pokaži barvite gradiente za skrite medije + setting_use_blurhash: Pokaži barvite prelive za skrite medije setting_use_pending_items: Počasen način severity: Strogost sign_in_token_attempt: Varnostna koda diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 1084309177..8e2a40a040 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -48,7 +48,7 @@ sv: password: Använd minst 8 tecken phrase: Matchas oavsett användande i text eller innehållsvarning för ett inlägg scopes: 'Vilka API: er applikationen kommer tillåtas åtkomst till. Om du väljer en omfattning på högstanivån behöver du inte välja individuella sådana.' - setting_aggregate_reblogs: Visa inte nya boostningar för inlägg som nyligen blivit boostade (påverkar endast nymottagna boostningar) + setting_aggregate_reblogs: Visa inte nya boostar för inlägg som nyligen blivit boostade (påverkar endast nymottagna boostar) setting_always_send_emails: E-postnotiser kommer vanligtvis inte skickas när du aktivt använder Mastodon setting_default_sensitive: Känslig media döljs som standard och kan visas med ett klick setting_display_media_default: Dölj media markerad som känslig @@ -188,10 +188,10 @@ sv: password: Lösenord phrase: Nyckelord eller -fras setting_advanced_layout: Aktivera avancerat webbgränssnitt - setting_aggregate_reblogs: Gruppera boostningar i tidslinjer + setting_aggregate_reblogs: Gruppera boostar i tidslinjer setting_always_send_emails: Skicka alltid e-postnotiser setting_auto_play_gif: Spela upp GIF:ar automatiskt - setting_boost_modal: Visa bekräftelsedialog innan boostningar + setting_boost_modal: Visa bekräftelsedialog innan boostning setting_crop_images: Beskär bilder i icke-utökade inlägg till 16x9 setting_default_language: Inläggsspråk setting_default_privacy: Inläggsintegritet @@ -276,7 +276,7 @@ sv: follow_request: Någon begärt att följa dig mention: Någon nämnt dig pending_account: Ett nytt konto behöver granskas - reblog: Någon boostar ditt inlägg + reblog: Någon boostade ditt inlägg report: En ny rapport har skickats trending_tag: En ny trend kräver granskning rule: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 021def2fd7..f23712d9f9 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -74,8 +74,10 @@ th: hide: ซ่อนเนื้อหาที่กรองอยู่อย่างสมบูรณ์ ทำเสมือนว่าไม่มีเนื้อหาอยู่ warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง form_admin_settings: + bootstrap_timeline_accounts: จะปักหมุดบัญชีเหล่านี้ไว้ด้านบนสุดของคำแนะนำการติดตามของผู้ใช้ใหม่ closed_registrations_message: แสดงเมื่อมีการปิดการลงทะเบียน mascot: เขียนทับภาพประกอบในส่วนติดต่อเว็บขั้นสูง + profile_directory: ไดเรกทอรีโปรไฟล์แสดงรายการผู้ใช้ทั้งหมดที่ได้เลือกรับให้สามารถค้นพบได้ site_contact_email: วิธีที่ผู้คนสามารถเข้าถึงคุณสำหรับการสอบถามด้านกฎหมายหรือการสนับสนุน site_contact_username: วิธีที่ผู้คนสามารถเข้าถึงคุณใน Mastodon site_terms: ใช้นโยบายความเป็นส่วนตัวของคุณเองหรือเว้นว่างไว้เพื่อใช้ค่าเริ่มต้น สามารถจัดโครงสร้างด้วยไวยากรณ์ Markdown diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 793a39b001..1a8aefda80 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -67,7 +67,7 @@ zh-CN: domain: 这可以是电子邮件地址的域名或它使用的 MX 记录所指向的域名。用户注册时,系统会对此检查。 with_dns_records: Mastodon 会尝试解析所给域名的 DNS 记录,然后把解析结果一并封禁 featured_tag: - name: 以下是您最近使用的主题标签: + name: 以下是你最近使用过的标签: filters: action: 选择在帖子匹配过滤器时要执行的操作 actions: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index efb8a7a780..f19dc24b04 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -43,7 +43,7 @@ zh-TW: header: 支援 PNG、GIF 或 JPG 圖片格式,檔案最大為 %{size},會等比例縮減至 %{dimensions} 像素 inbox_url: 從您想要使用的中繼首頁複製網址 irreversible: 已過濾的嘟文將會不可逆地消失,即便之後移除過濾器也一樣 - locale: 使用者介面、電子信件和推送通知的語言 + locale: 使用者介面、電子郵件和推播通知的語言 locked: 需要您手動批准跟隨請求 password: 使用至少 8 個字元 phrase: 無論是嘟文的本文或是內容警告都會被過濾 @@ -142,7 +142,7 @@ zh-TW: title: 標題 admin_account_action: include_statuses: 在電子郵件中加入檢舉的嘟文 - send_email_notification: 透過電子信件通知使用者 + send_email_notification: 透過電子郵件通知使用者 text: 自訂警告 type: 動作 types: @@ -172,7 +172,7 @@ zh-TW: data: 資料 discoverable: 在目錄列出此帳號 display_name: 顯示名稱 - email: 電子信箱地址 + email: 電子郵件地址 expires_in: 失效時間 fields: 個人檔案詮釋資料 header: 封面圖片 @@ -218,7 +218,7 @@ zh-TW: title: 標題 type: 匯入類型 username: 使用者名稱 - username_or_email: 使用者名稱或電子信箱地址 + username_or_email: 使用者名稱或電子郵件地址 whole_word: 整個詞彙 email_domain_block: with_dns_records: 包括網域的 MX 記錄和 IP 位址 @@ -270,13 +270,13 @@ zh-TW: severity: 規則 notification_emails: appeal: 有人對管理員的決定提出上訴 - digest: 傳送摘要信件 - favourite: 當有使用者喜歡您的嘟文時,傳送電子信件通知 - follow: 當有使用者跟隨您時,傳送電子信件通知 - follow_request: 當有使用者請求跟隨您時,傳送電子信件通知 - mention: 當有使用者在嘟文提及您時,傳送電子信件通知 + digest: 傳送摘要電子郵件 + favourite: 當有使用者喜歡您的嘟文時,傳送電子郵件通知 + follow: 當有使用者跟隨您時,傳送電子郵件通知 + follow_request: 當有使用者請求跟隨您時,傳送電子郵件通知 + mention: 當有使用者在嘟文提及您時,傳送電子郵件通知 pending_account: 需要審核的新帳號 - reblog: 當有使用者轉嘟您的嘟文時,傳送電子信件通知 + reblog: 當有使用者轉嘟您的嘟文時,傳送電子郵件通知 report: 新回報已遞交 trending_tag: 新熱門趨勢需要審核 rule: diff --git a/config/locales/sl.yml b/config/locales/sl.yml index fb68ac0ad4..4b196cbf08 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1,7 +1,7 @@ --- sl: about: - about_mastodon_html: Mastodon je socialno omrežje, ki temelji na odprtih spletnih protokolih in prosti ter odprtokodni programski opremi. Je decentraliziran, kot e-pošta. + about_mastodon_html: 'Družbeno omrežje prihodnosti: brez oglasov, brez nadzora korporacij, etično oblikovanje in decentralizacija! Ohranite lastništvo nad svojimi podatki z Mastodonom!' contact_missing: Ni nastavljeno contact_unavailable: Ni na voljo hosted_on: Mastodon gostuje na %{domain} @@ -13,18 +13,18 @@ sl: one: Sledilec other: Sledilcev two: Sledilca - following: Sledim + following: Sledi instance_actor_flash: Ta račun je navidezni akter, ki se uporablja za predstavljanje strežnika samega in ne posameznega uporabnika. Uporablja se za namene federacije in se ne sme začasno ustaviti. last_active: zadnja dejavnost - link_verified_on: Lastništvo te povezave je bilo preverjeno na %{date} + link_verified_on: Lastništvo te povezave je bilo preverjeno %{date} nothing_here: Tukaj ni ničesar! pin_errors: following: Verjetno že sledite osebi, ki jo želite potrditi posts: - few: Tuti - one: Tut + few: Objave + one: Objava other: Objav - two: Tuta + two: Objavi posts_tab_heading: Objave admin: account_actions: @@ -32,45 +32,45 @@ sl: title: Izvedi moderirano dejanje za %{acct} account_moderation_notes: create: Pusti opombo - created_msg: Moderirana opomba je uspešno ustvarjena! - destroyed_msg: Moderirana opomba je uspešno uničena! + created_msg: Opomba moderiranja je uspešno ustvarjena! + destroyed_msg: Opomba moderiranja je uspešno uničena! accounts: add_email_domain_block: Blokiraj domeno e-pošte approve: Odobri - approved_msg: Uspešno odobrena aplikacija prijave uporabnika %{username} + approved_msg: Uspešno odobrena vloga prijave uporabnika %{username} are_you_sure: Ali ste prepričani? avatar: Podoba by_domain: Domena change_email: changed_msg: E-pošni naslov uspešno spremenjen! - current_email: Trenutna e-pošta - label: Spremeni e-pošto - new_email: Nova e-pošta - submit: Spremeni e-pošto - title: Spremeni e-pošto za %{username} + current_email: Trenutni e-naslov + label: Spremeni e-naslov + new_email: Nov e-naslov + submit: Spremeni e-naslov + title: Spremeni e-naslov za %{username} change_role: changed_msg: Vloga uspešno spremenjena! label: Spremeni vlogo - no_role: Ni vloge + no_role: Brez vloge title: Spremeni vlogo za %{username} confirm: Potrdi confirmed: Potrjeno - confirming: Potrjujem + confirming: V potrjevanju custom: Po meri delete: Izbriši podatke deleted: Izbrisano - demote: Degradiraj + demote: Ponižaj destroyed_msg: Podatki uporabnika %{username} so zdaj v vrsti za trajen izbris - disable: Onemogoči + disable: Zamrzni disable_sign_in_token_auth: Onemogoči overjanje z žetonom po e-pošti disable_two_factor_authentication: Onemogoči 2FA - disabled: Onemogočeno - display_name: Prikazno ime + disabled: Zamrznjeno + display_name: Pojavno ime domain: Domena edit: Uredi - email: E-pošta - email_status: Stanje e-pošte - enable: Omogoči + email: E-naslov + email_status: Stanje e-naslova + enable: Odmrzni enable_sign_in_token_auth: Omogoči overjanje z žetonom po e-pošti enabled: Omogočeno enabled_msg: Uspešno odmrznjen račun uporabnika %{username} @@ -79,18 +79,18 @@ sl: header: Glava inbox_url: URL mape "Prejeto" invite_request_text: Razlogi za pridružitev - invited_by: Povabljen od + invited_by: Na povabilo ip: IP - joined: Pridružil + joined: Pridružen_a location: all: Vse - local: Lokalni + local: Krajevni remote: Oddaljeni title: Lokacija login_status: Stanje prijave media_attachments: Predstavnostne priloge - memorialize: Spremenite v spomin - memorialized: Spomenificirano + memorialize: Spremenite v pomnik + memorialized: Spominificirano memorialized_msg: Uspešno preoblikovan %{username} v spominski račun moderation: active: Dejaven @@ -105,7 +105,7 @@ sl: no_account_selected: Noben račun ni bil spremenjen, ker ni bil izbran noben no_limits_imposed: Brez omejitev no_role_assigned: Dodeljena ni nobena vloga - not_subscribed: Ni naročen + not_subscribed: Ni naročnin pending: Čakanje na pregled perform_full_suspension: Suspendiraj previous_strikes: Predhodni ukrepi @@ -121,21 +121,21 @@ sl: redownload: Osveži profil redownloaded_msg: Uspešno osvežen profil %{username} iz izvirnika reject: Zavrni - rejected_msg: Uspešno zavrnjena aplikacija prijave uporabnika %{username} + rejected_msg: Uspešno zavrnjena vloga prijave uporabnika %{username} remove_avatar: Odstrani podobo remove_header: Odstrani glavo removed_avatar_msg: Uspešno odstranjena slika avatarja uporabnika %{username} removed_header_msg: Uspešno odstranjena naslovna slika uporabnika %{username} resend_confirmation: already_confirmed: Ta uporabnik je že potrjen - send: Ponovno pošlji potrditveno e-pošto - success: Potrditvena e-pošta je uspešno poslana! + send: Ponovno pošlji potrditveno e-sporočilo + success: Potrditveno e-sporočilo je uspešno poslano! reset: Ponastavi reset_password: Ponastavi geslo resubscribe: Ponovno se naroči role: Vloga search: Iskanje - search_same_email_domain: Drugi uporabniki z isto domeno e-pošte + search_same_email_domain: Drugi uporabniki z isto e-poštno domeno search_same_ip: Drugi uporabniki z istim IP security_measures: only_password: Samo geslo @@ -146,24 +146,24 @@ sl: show: created_reports: Opravljene prijave targeted_reports: Prijavili drugi - silence: Utišaj - silenced: Utišan + silence: Omeji + silenced: Omejen statuses: Objave strikes: Predhodni ukrepi subscribe: Naroči suspend: Suspendiraj suspended: Suspendiran - suspension_irreversible: Podatki tega računa so bili nepovrazno izbrisani. Račun lahko vrnete iz suspenza, da bo ponovno uporaben, vendar preteklih podatkov ne boste mogli obnoviti. + suspension_irreversible: Podatki tega računa so bili nepovratno izbrisani. Račun lahko vrnete iz suspenza, da bo ponovno uporaben, vendar preteklih podatkov ne boste mogli obnoviti. suspension_reversible_hint_html: Račun je bil suspendiran, podatki pa bodo v celoti odstranjeni %{date}. Do takrat je mogoče račun obnoviti brez negativnih posledic. Če želite takoj odstraniti vse podatke računa, lahko to storite spodaj. title: Računi unblock_email: Odblokiraj e-poštni naslov unblocked_email_msg: E-poštni naslov uporabnika %{username} uspešno odblokiran - unconfirmed_email: Nepotrjena e-pošta + unconfirmed_email: Nepotrjen e-naslov undo_sensitized: Ni občutljivo - undo_silenced: Razveljavi utišanje - undo_suspension: Razveljavi suspendiranje + undo_silenced: Razveljavi omejitve + undo_suspension: Razveljavi suspenz unsilenced_msg: Uspešno razveljavljena omejitev računa uporabnika %{username} - unsubscribe: Odjavi se od naročnine + unsubscribe: Odjavi od naročnine unsuspended_msg: Uspešno preklican suspenz računa uporabnika %{username} username: Uporabniško ime view_domain: Pokaži povzetek za domeno @@ -175,12 +175,12 @@ sl: approve_appeal: Odobri pritožbo approve_user: Odobri uporabnika assigned_to_self_report: Dodeli prijavo - change_email_user: Spremeni e-poštni naslov uporabnika + change_email_user: Spremeni e-naslov uporabnika change_role_user: Spremeni vlogo uporabnika confirm_user: Potrdi uporabnika create_account_warning: Ustvari opozorilo create_announcement: Ustvari obvestilo - create_canonical_email_block: Ustvari blokado e-pošte + create_canonical_email_block: Ustvari blokado e-naslova create_custom_emoji: Ustvari emotikon po meri create_domain_allow: Ustvari odobritev domene create_domain_block: Ustvari blokado domene @@ -190,7 +190,7 @@ sl: create_user_role: Ustvari vlogo demote_user: Ponižaj uporabnika destroy_announcement: Izbriši obvestilo - destroy_canonical_email_block: Izbriši blokado e-pošte + destroy_canonical_email_block: Izbriši blokado e-naslova destroy_custom_emoji: Izbriši emotikon po meri destroy_domain_allow: Izbriši odobritev domene destroy_domain_block: Izbriši blokado domene @@ -198,7 +198,7 @@ sl: destroy_instance: Očisti domeno destroy_ip_block: Izbriši pravilo IP destroy_status: Izbriši objavo - destroy_unavailable_domain: Izbriši domeno, ki ni na voljo + destroy_unavailable_domain: Izbriši nedosegljivo domeno destroy_user_role: Uniči vlogo disable_2fa_user: Onemogoči disable_custom_emoji: Onemogoči emotikon po meri @@ -213,7 +213,7 @@ sl: reject_user: Zavrni uporabnika remove_avatar_user: Odstrani avatar reopen_report: Ponovno odpri prijavo - resend_user: Ponovno pošlji potrditveno e-pošto + resend_user: Ponovno pošlji potrditveno e-sporočilo reset_password_user: Ponastavi geslo resolve_report: Razreši prijavo sensitive_account: Občutljivi račun diff --git a/config/locales/sv.yml b/config/locales/sv.yml index c2a249b59f..cf311b3cb6 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -1283,7 +1283,7 @@ sv: reblog: body: 'Ditt inlägg boostades av %{name}:' subject: "%{name} boostade ditt inlägg" - title: Ny boostning + title: Ny boost status: subject: "%{name} publicerade just ett inlägg" update: @@ -1489,9 +1489,9 @@ sv: exceptions: Undantag explanation: Eftersom inläggsradering är resursintensivt görs detta stegvis när servern inte är högbelastad. Därför kan det dröja innan dina inlägg raderas efter att de uppnått ålderströskeln. ignore_favs: Bortse från favoriter - ignore_reblogs: Ignorera boostningar + ignore_reblogs: Ignorera boostar interaction_exceptions: Undantag baserat på interaktioner - interaction_exceptions_explanation: Observera att det inte finns någon garanti att inlägg blir raderade om de går under favorit- eller boosttröskeln efter att en gång ha gått över dem. + interaction_exceptions_explanation: Observera att det inte finns någon garanti att inlägg blir raderade om de går under favorit- eller boost-tröskeln efter att en gång ha gått över dem. keep_direct: Behåll direktmeddelanden keep_direct_hint: Tar inte bort någon av dina direktmeddelanden keep_media: Behåll inlägg med mediebilagor @@ -1517,7 +1517,7 @@ sv: min_favs: Behåll favoritmarkerade inlägg i minst min_favs_hint: Raderar inte något av dina inlägg som har blivit favoritmarkerat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal favoritmarkeringar min_reblogs: Behåll boostade inlägg i minst - min_reblogs_hint: Raderar inte något av dina inlägg som har blivit boostat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal boostningar + min_reblogs_hint: Raderar inte något av dina inlägg som har blivit boostat minst detta antal gånger. Lämna tomt för att radera inlägg oavsett antal boostar stream_entries: pinned: Fäst inlägg reblogged: boostad diff --git a/config/locales/th.yml b/config/locales/th.yml index a941977e61..8f5fa3ccd2 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -324,6 +324,7 @@ th: listed: อยู่ในรายการ new: title: เพิ่มอีโมจิที่กำหนดเองใหม่ + no_emoji_selected: ไม่มีการเปลี่ยนแปลงอีโมจิเนื่องจากไม่มีการเลือก not_permitted: คุณไม่ได้รับอนุญาตให้ทำการกระทำนี้ overwrite: เขียนทับ shortcode: รหัสย่อ @@ -465,7 +466,7 @@ th: unavailable: ไม่พร้อมใช้งาน delivery_available: มีการจัดส่ง delivery_error_days: วันที่มีข้อผิดพลาดการจัดส่ง - delivery_error_hint: หากไม่สามารถทำการจัดส่งได้เป็นเวลา %{count} วัน จะทำเครื่องหมายโดเมนว่าจัดส่งไม่ได้โดยอัตโนมัติ + delivery_error_hint: หากไม่สามารถทำการจัดส่งได้เป็นเวลา %{count} วัน ระบบจะทำเครื่องหมายโดเมนว่าจัดส่งไม่ได้โดยอัตโนมัติ destroyed_msg: ตอนนี้จัดคิวข้อมูลจาก %{domain} สำหรับการลบในเร็ว ๆ นี้แล้ว empty: ไม่พบโดเมน known_accounts: @@ -627,6 +628,7 @@ th: manage_taxonomies: จัดการอนุกรมวิธาน manage_taxonomies_description: อนุญาตให้ผู้ใช้ตรวจทานเนื้อหาที่กำลังนิยมและอัปเดตการตั้งค่าแฮชแท็ก manage_user_access: จัดการการเข้าถึงของผู้ใช้ + manage_user_access_description: อนุญาตให้ผู้ใช้ปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยของผู้ใช้อื่น เปลี่ยนที่อยู่อีเมลของเขา และตั้งรหัสผ่านของเขาใหม่ manage_users: จัดการผู้ใช้ manage_users_description: อนุญาตให้ผู้ใช้ดูรายละเอียดของผู้ใช้อื่น ๆ และทำการกระทำการควบคุมกับผู้ใช้ manage_webhooks: จัดการเว็บฮุค @@ -646,6 +648,7 @@ th: settings: about: manage_rules: จัดการกฎของเซิร์ฟเวอร์ + preamble: ให้ข้อมูลเชิงลึกเกี่ยวกับวิธีที่เซิร์ฟเวอร์ได้รับการดำเนินงาน ควบคุม ได้รับทุน title: เกี่ยวกับ appearance: preamble: ปรับแต่งส่วนติดต่อเว็บของ Mastodon @@ -711,6 +714,7 @@ th: silence: "%{name} ได้จำกัดบัญชีของ %{target}" suspend: "%{name} ได้ระงับบัญชีของ %{target}" appeal_approved: อุทธรณ์แล้ว + appeal_pending: รอดำเนินการการอุทธรณ์ system_checks: elasticsearch_running_check: message_html: ไม่สามารถเชื่อมต่อกับ Elasticsearch โปรดตรวจสอบว่าซอฟต์แวร์กำลังทำงาน หรือปิดใช้งานการค้นหาข้อความแบบเต็ม @@ -735,6 +739,9 @@ th: allow_provider: อนุญาตผู้เผยแพร่ disallow: ไม่อนุญาตลิงก์ disallow_provider: ไม่อนุญาตผู้เผยแพร่ + no_link_selected: ไม่มีการเปลี่ยนแปลงลิงก์เนื่องจากไม่มีการเลือก + publishers: + no_publisher_selected: ไม่มีการเปลี่ยนแปลงผู้เผยแพร่เนื่องจากไม่มีการเลือก shared_by_over_week: other: แบ่งปันโดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา title: ลิงก์ที่กำลังนิยม @@ -751,6 +758,7 @@ th: allow_account: อนุญาตผู้สร้าง disallow: ไม่อนุญาตโพสต์ disallow_account: ไม่อนุญาตผู้สร้าง + no_status_selected: ไม่มีการเปลี่ยนแปลงโพสต์ที่กำลังนิยมเนื่องจากไม่มีการเลือก not_discoverable: ผู้สร้างไม่ได้เลือกรับให้สามารถค้นพบได้ shared_by: other: แบ่งปันและชื่นชอบ %{friendly_count} ครั้ง @@ -764,6 +772,7 @@ th: tag_servers_measure: เซิร์ฟเวอร์ต่าง ๆ tag_uses_measure: การใช้งานทั้งหมด listable: สามารถแนะนำ + no_tag_selected: ไม่มีการเปลี่ยนแปลงแท็กเนื่องจากไม่มีการเลือก not_listable: จะไม่แนะนำ not_trendable: จะไม่ปรากฏภายใต้แนวโน้ม not_usable: ไม่สามารถใช้ @@ -836,6 +845,7 @@ th: remove: เลิกเชื่อมโยงนามแฝง appearance: advanced_web_interface: ส่วนติดต่อเว็บขั้นสูง + advanced_web_interface_hint: 'หากคุณต้องการใช้ประโยชน์จากความกว้างหน้าจอทั้งหมดของคุณ ส่วนติดต่อเว็บขั้นสูงอนุญาตให้คุณกำหนดค่าคอลัมน์ต่าง ๆ จำนวนมากเพื่อให้เห็นข้อมูลได้มากในเวลาเดียวกันเท่าที่คุณต้องการ: หน้าแรก, การแจ้งเตือน, เส้นเวลาที่ติดต่อกับภายนอก, รายการและแฮชแท็กจำนวนเท่าใดก็ได้' animations_and_accessibility: ภาพเคลื่อนไหวและการช่วยการเข้าถึง confirmation_dialogs: กล่องโต้ตอบการยืนยัน discovery: การค้นพบ @@ -898,6 +908,7 @@ th: email_settings_hint_html: ส่งอีเมลยืนยันไปยัง %{email} แล้ว หากที่อยู่อีเมลนั้นไม่ถูกต้อง คุณสามารถเปลี่ยนที่อยู่อีเมลได้ในการตั้งค่าบัญชี title: การตั้งค่า sign_up: + preamble: เมื่อมีบัญชีในเซิร์ฟเวอร์ Mastodon นี้ คุณจะสามารถติดตามบุคคลอื่นใดในเครือข่าย โดยไม่คำนึงถึงที่ซึ่งบัญชีของเขาได้รับการโฮสต์ title: มาตั้งค่าของคุณใน %{domain} กันเลย status: account_status: สถานะบัญชี @@ -971,6 +982,7 @@ th: appeal_approved: อุทธรณ์การดำเนินการนี้สำเร็จและไม่มีผลบังคับอีกต่อไป appeal_rejected: ปฏิเสธการอุทธรณ์แล้ว appeal_submitted_at: ส่งการอุทธรณ์แล้ว + appealed_msg: ส่งการอุทธรณ์ของคุณแล้ว หากการอุทธรณ์ได้รับการอนุมัติ คุณจะได้รับการแจ้งเตือน appeals: submit: ส่งการอุทธรณ์ approve_appeal: อนุมัติการอุทธรณ์ @@ -1041,6 +1053,8 @@ th: add_keyword: เพิ่มคำสำคัญ keywords: คำสำคัญ title: แก้ไขตัวกรอง + errors: + invalid_context: ไม่มีหรือบริบทที่ให้มาไม่ถูกต้อง index: contexts: กรองใน %{contexts} delete: ลบ @@ -1121,6 +1135,9 @@ th: expires_at: หมดอายุเมื่อ uses: การใช้งาน title: เชิญผู้คน + lists: + errors: + limit: คุณมีรายการถึงจำนวนสูงสุดแล้ว login_activities: authentication_methods: otp: แอปการรับรองความถูกต้องด้วยสองปัจจัย @@ -1162,6 +1179,7 @@ th: warning: before: 'ก่อนดำเนินการต่อ โปรดอ่านหมายเหตุเหล่านี้อย่างระมัดระวัง:' followers: การกระทำนี้จะย้ายผู้ติดตามทั้งหมดจากบัญชีปัจจุบันไปยังบัญชีใหม่ + only_redirect_html: หรืออีกวิธีหนึ่ง คุณสามารถ ตั้งเพียงการเปลี่ยนเส้นทางในโปรไฟล์ของคุณเท่านั้น other_data: จะไม่ย้ายข้อมูลอื่น ๆ โดยอัตโนมัติ moderation: title: การควบคุม @@ -1250,6 +1268,7 @@ th: title: นโยบายความเป็นส่วนตัว reactions: errors: + limit_reached: ถึงขีดจำกัดของปฏิกิริยาต่าง ๆ แล้ว unrecognized_emoji: ไม่ใช่อีโมจิที่รู้จัก relationships: activity: กิจกรรมบัญชี @@ -1499,8 +1518,10 @@ th: suspend: ระงับบัญชีอยู่ welcome: edit_profile_action: ตั้งค่าโปรไฟล์ + edit_profile_step: คุณสามารถปรับแต่งโปรไฟล์ของคุณได้โดยอัปโหลดรูปภาพโปรไฟล์ เปลี่ยนชื่อที่แสดงของคุณ และอื่น ๆ คุณสามารถเลือกรับการตรวจทานผู้ติดตามใหม่ก่อนที่จะอนุญาตให้เขาติดตามคุณ explanation: นี่คือเคล็ดลับบางส่วนที่จะช่วยให้คุณเริ่มต้นใช้งาน final_action: เริ่มโพสต์ + final_step: 'เริ่มโพสต์! แม้ว่าไม่มีผู้ติดตาม โพสต์สาธารณะของคุณอาจเห็นโดยผู้อื่น ตัวอย่างเช่น ในเส้นเวลาในเซิร์ฟเวอร์หรือในแฮชแท็ก คุณอาจต้องการแนะนำตัวเองในแฮชแท็ก #introductions' full_handle: นามเต็มของคุณ full_handle_hint: นี่คือสิ่งที่คุณจะบอกเพื่อน ๆ ของคุณ เพื่อให้เขาสามารถส่งข้อความหรือติดตามคุณจากเซิร์ฟเวอร์อื่น subject: ยินดีต้อนรับสู่ Mastodon diff --git a/config/locales/uk.yml b/config/locales/uk.yml index ec8ba1c9bc..df73233dfe 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -950,7 +950,7 @@ uk: warning: Будьте дуже обережні з цими даними. Ніколи не діліться ними ні з ким! your_token: Ваш токен доступу auth: - apply_for_account: Отримати у списку очікування + apply_for_account: Приєднатися до списку очікування change_password: Пароль delete_account: Видалити обліковий запис delete_account_html: Якщо ви хочете видалити свій обліковий запис, ви можете перейти сюди. Вас попросять підтвердити дію. diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 09f1002c2a..a6c75ea713 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -263,7 +263,7 @@ zh-CN: reject_user_html: "%{name} 拒绝了用户 %{target} 的注册" remove_avatar_user_html: "%{name} 删除了 %{target} 的头像" reopen_report_html: "%{name} 重开了举报 %{target}" - resend_user_html: "%{name} 给 %{target} 发送了重新确认电子邮件" + resend_user_html: "%{name} 给 %{target} 重新发送了确认电子邮件" reset_password_user_html: "%{name} 重置了用户 %{target} 的密码" resolve_report_html: "%{name} 处理了举报 %{target}" sensitive_account_html: "%{name} 将 %{target} 的媒体标记为敏感内容" @@ -280,7 +280,7 @@ zh-CN: update_ip_block_html: "%{name} 修改了对 IP %{target} 的规则" update_status_html: "%{name} 刷新了 %{target} 的嘟文" update_user_role_html: "%{name} 更改了 %{target} 角色" - deleted_account: 删除帐户 + deleted_account: 账号已注销 empty: 没有找到日志 filter_by_action: 根据行为过滤 filter_by_user: 根据用户过滤 @@ -1227,7 +1227,7 @@ zh-CN: carry_mutes_over_text: 这个用户迁移自你隐藏过的 %{acct} copy_account_note_text: 这个用户迁移自 %{acct},你曾为其添加备注: navigation: - toggle_menu: 切换菜单 + toggle_menu: 隐藏/显示菜单 notification_mailer: admin: report: @@ -1465,7 +1465,7 @@ zh-CN: keep_media: 保留带媒体附件的嘟文 keep_media_hint: 不会删除任何包含媒体附件的嘟文 keep_pinned: 保留置顶嘟文 - keep_pinned_hint: 没有删除任何你已经固定的嘟文 + keep_pinned_hint: 不会删除你的任何置顶嘟文 keep_polls: 保留投票 keep_polls_hint: 不会删除你的任何投票 keep_self_bookmark: 保存被你加入书签的嘟文 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 9c0c2a74de..5953c2275b 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -37,11 +37,11 @@ zh-TW: by_domain: 站點 change_email: changed_msg: 電子郵件已成功變更! - current_email: 目前的電子信箱地址 - label: 變更電子信箱地址 - new_email: 新的電子信箱地址 - submit: 變更電子信箱地址 - title: 為 %{username} 變更電子信箱地址 + current_email: 目前的電子郵件地址 + label: 變更電子郵件地址 + new_email: 新的電子郵件地址 + submit: 變更電子郵件地址 + title: 為 %{username} 變更電子郵件地址 change_role: changed_msg: 成功修改角色! label: 變更角色 @@ -56,16 +56,16 @@ zh-TW: demote: 降級 destroyed_msg: 即將刪除 %{username} 的數據 disable: 停用 - disable_sign_in_token_auth: 停用電子信箱 token 驗證 + disable_sign_in_token_auth: 停用電子郵件 token 驗證 disable_two_factor_authentication: 停用兩階段認證 disabled: 已停用 display_name: 暱稱 domain: 站點 edit: 編輯 - email: 電子信箱地址 - email_status: 電子信箱狀態 + email: 電子郵件地址 + email_status: 電子郵件狀態 enable: 啟用 - enable_sign_in_token_auth: 啟用電子信箱 token 驗證 + enable_sign_in_token_auth: 啟用電子郵件 token 驗證 enabled: 已啟用 enabled_msg: 成功解除 %{username} 帳號的凍結 followers: 跟隨者 @@ -149,7 +149,7 @@ zh-TW: title: 帳號 unblock_email: 解除封鎖電子郵件地址 unblocked_email_msg: 成功解除封鎖 %{username} 的電子郵件地址 - unconfirmed_email: 未確認的電子信箱地址 + unconfirmed_email: 未確認的電子郵件地址 undo_sensitized: 取消敏感狀態 undo_silenced: 取消靜音 undo_suspension: 取消停權 @@ -166,7 +166,7 @@ zh-TW: approve_appeal: 批准申訴 approve_user: 批准使用者 assigned_to_self_report: 指派回報 - change_email_user: 變更使用者的電子信箱地址 + change_email_user: 變更使用者的電子郵件地址 change_role_user: 變更使用者角色 confirm_user: 確認使用者 create_account_warning: 建立警告 @@ -175,7 +175,7 @@ zh-TW: create_custom_emoji: 建立自訂顏文字 create_domain_allow: 建立允許網域 create_domain_block: 建立阻擋網域 - create_email_domain_block: 封鎖電子郵件站台 + create_email_domain_block: 新增電子郵件網域封鎖 create_ip_block: 新增IP規則 create_unavailable_domain: 新增無法存取的網域 create_user_role: 建立角色 @@ -193,10 +193,10 @@ zh-TW: destroy_user_role: 移除角色 disable_2fa_user: 停用兩階段認證 disable_custom_emoji: 停用自訂顏文字 - disable_sign_in_token_auth_user: 停用使用者電子信箱 token 驗證 + disable_sign_in_token_auth_user: 停用使用者電子郵件 token 驗證 disable_user: 停用帳號 enable_custom_emoji: 啓用自訂顏文字 - enable_sign_in_token_auth_user: 啟用使用者電子信箱 token 驗證 + enable_sign_in_token_auth_user: 啟用使用者電子郵件 token 驗證 enable_user: 啓用帳號 memorialize_account: 設定成紀念帳號 promote_user: 把用戶升級 @@ -225,16 +225,16 @@ zh-TW: approve_appeal_html: "%{name} 批准了來自 %{target} 的審核決定申訴" approve_user_html: "%{name} 批准了從 %{target} 而來的註冊" assigned_to_self_report_html: "%{name} 將報告 %{target} 指派給自己" - change_email_user_html: "%{name} 變更了使用者 %{target} 的電子信箱地址" + change_email_user_html: "%{name} 變更了使用者 %{target} 的電子郵件地址" change_role_user_html: "%{name} 變更了 %{target} 的角色" - confirm_user_html: "%{name} 確認了使用者 %{target} 的電子信箱位址" + confirm_user_html: "%{name} 確認了使用者 %{target} 的電子郵件位址" create_account_warning_html: "%{name} 已對 %{target} 送出警告" create_announcement_html: "%{name} 新增了公告 %{target}" create_canonical_email_block_html: "%{name} 已封鎖了 hash 為 %{target} 之 e-mail" create_custom_emoji_html: "%{name} 上傳了新自訂表情符號 %{target}" create_domain_allow_html: "%{name} 允許 %{target} 網域加入聯邦宇宙" create_domain_block_html: "%{name} 封鎖了網域 %{target}" - create_email_domain_block_html: "%{name} 封鎖了電子信箱網域 %{target}" + create_email_domain_block_html: "%{name} 封鎖了電子郵件網域 %{target}" create_ip_block_html: "%{name} 已經設定了IP %{target} 的規則" create_unavailable_domain_html: "%{name} 停止發送至網域 %{target}" create_user_role_html: "%{name} 建立了 %{target} 角色" @@ -244,7 +244,7 @@ zh-TW: destroy_custom_emoji_html: "%{name} 刪除了表情符號 %{target}" destroy_domain_allow_html: "%{name} 不允許與網域 %{target} 加入聯邦宇宙" destroy_domain_block_html: "%{name} 取消了對網域 %{target} 的封鎖" - destroy_email_domain_block_html: "%{name} 取消了對電子信箱網域 %{target} 的封鎖" + destroy_email_domain_block_html: "%{name} 取消了對電子郵件網域 %{target} 的封鎖" destroy_instance_html: "%{name} 清除了網域 %{target}" destroy_ip_block_html: "%{name} 刪除了 IP %{target} 的規則" destroy_status_html: "%{name} 刪除了 %{target} 的嘟文" @@ -252,10 +252,10 @@ zh-TW: destroy_user_role_html: "%{name} 刪除了 %{target} 角色" disable_2fa_user_html: "%{name} 停用了使用者 %{target} 的兩階段認證" disable_custom_emoji_html: "%{name} 停用了自訂表情符號 %{target}" - disable_sign_in_token_auth_user_html: "%{name} 停用了 %{target} 之使用者電子信箱 token 驗證" + disable_sign_in_token_auth_user_html: "%{name} 停用了 %{target} 之使用者電子郵件 token 驗證" disable_user_html: "%{name} 將使用者 %{target} 設定為禁止登入" enable_custom_emoji_html: "%{name} 啟用了自訂表情符號 %{target}" - enable_sign_in_token_auth_user_html: "%{name} 啟用了 %{target} 之使用者電子信箱 token 驗證" + enable_sign_in_token_auth_user_html: "%{name} 啟用了 %{target} 之使用者電子郵件 token 驗證" enable_user_html: "%{name} 將使用者 %{target} 設定為允許登入" memorialize_account_html: "%{name} 將 %{target} 設定為追悼帳號" promote_user_html: "%{name} 對使用者 %{target} 進行了晉級操作" @@ -400,7 +400,7 @@ zh-TW: add_new: 加入新項目 attempts_over_week: other: 上週共有 %{count} 次註冊嘗試 - created_msg: 已成功將電子信箱網域加入黑名單 + created_msg: 已成功將電子郵件網域加入黑名單 delete: 刪除 dns: types: @@ -409,11 +409,11 @@ zh-TW: new: create: 新增站點 resolve: 解析網域 - title: 新增電子信箱黑名單項目 - no_email_domain_block_selected: 因未選取項目,而未更改電子信箱網域封鎖清單 + title: 新增電子郵件黑名單項目 + no_email_domain_block_selected: 因未選取項目,而未更改電子郵件網域黑名單 resolved_dns_records_hint_html: 網域名稱解析為以下 MX 網域,這些網域最終負責接收電子郵件。封鎖 MX 網域將會封鎖任何來自使用相同 MX 網域的電子郵件註冊,即便可見的域名是不同的也一樣。請注意,不要封鎖主要的電子郵件服務提供商。 resolved_through_html: 透過 %{domain} 解析 - title: 電子信箱黑名單 + title: 電子郵件黑名單 follow_recommendations: description_html: |- 跟隨建議幫助新使用者們快速找到有趣的內容. 當使用者沒有與其他帳號有足夠多的互動以建立個人化跟隨建議時,這些帳號將會被推荐。這些帳號將基於某選定語言之高互動和高本地跟隨者數量帳號而 @@ -884,9 +884,9 @@ zh-TW: sensitive_content: 敏感內容 toot_layout: 嘟文排版 application_mailer: - notification_preferences: 變更電子信件設定 + notification_preferences: 變更電子郵件設定 salutation: "%{name}、" - settings: 變更電子信箱設定︰%{link} + settings: 變更電子郵件設定︰%{link} view: '進入瀏覽:' view_profile: 檢視個人檔案 view_status: 檢視嘟文 From 73b68fcabbbf607d2c1d1021f6063d070edbca26 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 12 Nov 2022 09:59:28 +0100 Subject: [PATCH 412/500] Fix styling of advanced options dropdown (#1916) Fixes #1914 --- .../flavours/glitch/features/compose/components/options.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/compose/components/options.js b/app/javascript/flavours/glitch/features/compose/components/options.js index 47bd9b0563..c6278f4cb5 100644 --- a/app/javascript/flavours/glitch/features/compose/components/options.js +++ b/app/javascript/flavours/glitch/features/compose/components/options.js @@ -103,7 +103,7 @@ class ToggleOption extends ImmutablePureComponent { -
      +
      {text} {meta}
      From fdfacb0ec0e81e323e67abde0d4b5b16f0d8bf0a Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 12 Nov 2022 10:17:22 +0100 Subject: [PATCH 413/500] Revert "Revert "Change "Allow trends without prior review" setting to include statuses (#17977)"" This reverts commit bfc539cfb4f040fcffac740b36791c26c2a74119. --- app/javascript/styles/mastodon/accounts.scss | 9 ++++++++- app/javascript/styles/mastodon/forms.scss | 3 ++- app/models/account.rb | 4 ++++ config/i18n-tasks.yml | 2 +- config/initializers/simple_form.rb | 5 ++++- config/locales/simple_form.en.yml | 1 + 6 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index 54b65bfc8c..c007eb4b57 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -202,7 +202,8 @@ } .account-role, -.simple_form .recommended { +.simple_form .recommended, +.simple_form .not_recommended { display: inline-block; padding: 4px 6px; cursor: default; @@ -227,6 +228,12 @@ } } +.simple_form .not_recommended { + color: lighten($error-red, 12%); + background-color: rgba(lighten($error-red, 12%), 0.1); + border-color: rgba(lighten($error-red, 12%), 0.5); +} + .account__header__fields { max-width: 100vw; padding: 0; diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 4c731be430..a3ddc76362 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -103,7 +103,8 @@ code { } } - .recommended { + .recommended, + .not_recommended { position: absolute; margin: 0 4px; margin-top: -2px; diff --git a/app/models/account.rb b/app/models/account.rb index 7059c555f3..ab8a65720a 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -260,6 +260,10 @@ class Account < ApplicationRecord update!(memorial: true) end + def trendable + boolean_with_default('trendable', Setting.trendable_by_default) + end + def sign? true end diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index 6117e6e5bc..8bed346383 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -50,7 +50,7 @@ ignore_unused: - 'activerecord.errors.*' - '{devise,pagination,doorkeeper}.*' - '{date,datetime,time,number}.*' - - 'simple_form.{yes,no,recommended}' + - 'simple_form.{yes,no,recommended,not_recommended}' - 'simple_form.{placeholders,hints,labels}.*' - 'simple_form.{error_notification,required}.:' - 'errors.messages.*' diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb index 3a2097d2fb..92cffc5a2a 100644 --- a/config/initializers/simple_form.rb +++ b/config/initializers/simple_form.rb @@ -11,7 +11,10 @@ end module RecommendedComponent def recommended(_wrapper_options = nil) return unless options[:recommended] - options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.recommended'), class: 'recommended')]) } + + key = options[:recommended].is_a?(Symbol) ? options[:recommended] : :recommended + options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t(key, scope: 'simple_form'), class: key)]) } + nil end end diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 464aa57742..6edf7b4e9e 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -298,6 +298,7 @@ en: events: Enabled events url: Endpoint URL 'no': 'No' + not_recommended: Not recommended recommended: Recommended required: mark: "*" From d26c1cb2fe145b8d56a9c15e110a917e6f63068b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 12 Nov 2022 10:54:51 +0100 Subject: [PATCH 414/500] Fix missing "not recommended" label on "Allow trends without review" (#20480) --- app/views/admin/settings/discovery/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/settings/discovery/show.html.haml b/app/views/admin/settings/discovery/show.html.haml index e63c853fb8..b429cdd7b5 100644 --- a/app/views/admin/settings/discovery/show.html.haml +++ b/app/views/admin/settings/discovery/show.html.haml @@ -19,7 +19,7 @@ = f.input :trends, as: :boolean, wrapper: :with_label .fields-group - = f.input :trendable_by_default, as: :boolean, wrapper: :with_label + = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, recommended: :not_recommended %h4= t('admin.settings.discovery.public_timelines') From 1ce29aeabfed586868cd32a1dfd480bdd5efa3d2 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 12 Nov 2022 10:17:22 +0100 Subject: [PATCH 415/500] Change "Allow trends without prior review' setting to include statuses Port SCSS changes from 546672e292dc3218e996048464c4c52e5d00f766 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/accounts.scss | 9 ++++++++- app/javascript/flavours/glitch/styles/forms.scss | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/accounts.scss b/app/javascript/flavours/glitch/styles/accounts.scss index 3d8b761e61..ffe5de2625 100644 --- a/app/javascript/flavours/glitch/styles/accounts.scss +++ b/app/javascript/flavours/glitch/styles/accounts.scss @@ -204,7 +204,8 @@ } .account-role, -.simple_form .recommended { +.simple_form .recommended, +.simple_form .not_recommended { display: inline-block; padding: 4px 6px; cursor: default; @@ -229,6 +230,12 @@ } } +.simple_form .not_recommended { + color: lighten($error-red, 12%); + background-color: rgba(lighten($error-red, 12%), 0.1); + border-color: rgba(lighten($error-red, 12%), 0.5); +} + .account__header__fields { max-width: 100vw; padding: 0; diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index ef0ca1fcde..cddf42dac5 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -103,7 +103,8 @@ code { } } - .recommended { + .recommended, + .not_recommended { position: absolute; margin: 0 4px; margin-top: -2px; From 0d43d9926a811dbc14dd5526b179558847640218 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 12 Nov 2022 10:47:36 +0100 Subject: [PATCH 416/500] Make trendable_by_default not apply to posts --- app/models/account.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index ab8a65720a..7059c555f3 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -260,10 +260,6 @@ class Account < ApplicationRecord update!(memorial: true) end - def trendable - boolean_with_default('trendable', Setting.trendable_by_default) - end - def sign? true end From 6a96b17a2de3fe6d7e24014d1dcc1ad5f54050d8 Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 12 Nov 2022 10:09:27 +0100 Subject: [PATCH 417/500] =?UTF-8?q?Add=20=E2=80=9CGlitch-only=E2=80=9D=20l?= =?UTF-8?q?abel=20to=20glitch-specific=20settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/javascript/flavours/glitch/styles/accounts.scss | 9 ++++++++- app/javascript/flavours/glitch/styles/forms.scss | 3 ++- app/views/admin/settings/discovery/show.html.haml | 2 +- app/views/admin/settings/registrations/show.html.haml | 2 +- .../settings/preferences/appearance/show.html.haml | 4 ++-- app/views/settings/preferences/other/show.html.haml | 4 ++-- config/initializers/simple_form.rb | 10 ++++++++++ config/locales-glitch/simple_form.en.yml | 1 + 8 files changed, 27 insertions(+), 8 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/accounts.scss b/app/javascript/flavours/glitch/styles/accounts.scss index ffe5de2625..cdc506cf45 100644 --- a/app/javascript/flavours/glitch/styles/accounts.scss +++ b/app/javascript/flavours/glitch/styles/accounts.scss @@ -205,7 +205,8 @@ .account-role, .simple_form .recommended, -.simple_form .not_recommended { +.simple_form .not_recommended, +.simple_form .glitch_only { display: inline-block; padding: 4px 6px; cursor: default; @@ -236,6 +237,12 @@ border-color: rgba(lighten($error-red, 12%), 0.5); } +.simple_form .glitch_only { + color: lighten($warning-red, 12%); + background-color: rgba(lighten($warning-red, 12%), 0.1); + border-color: rgba(lighten($warning-red, 12%), 0.5); +} + .account__header__fields { max-width: 100vw; padding: 0; diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index cddf42dac5..8eecee4e97 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -104,7 +104,8 @@ code { } .recommended, - .not_recommended { + .not_recommended, + .glitch_only { position: absolute; margin: 0 4px; margin-top: -2px; diff --git a/app/views/admin/settings/discovery/show.html.haml b/app/views/admin/settings/discovery/show.html.haml index 9b6424c79c..3983b563b4 100644 --- a/app/views/admin/settings/discovery/show.html.haml +++ b/app/views/admin/settings/discovery/show.html.haml @@ -19,7 +19,7 @@ = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, recommended: :not_recommended .fields-group - = f.input :trending_status_cw, as: :boolean, wrapper: :with_label, label: t('admin.settings.trending_status_cw.title'), hint: t('admin.settings.trending_status_cw.desc_html') + = f.input :trending_status_cw, as: :boolean, wrapper: :with_label, label: t('admin.settings.trending_status_cw.title'), hint: t('admin.settings.trending_status_cw.desc_html'), glitch_only: true %h4= t('admin.settings.discovery.public_timelines') diff --git a/app/views/admin/settings/registrations/show.html.haml b/app/views/admin/settings/registrations/show.html.haml index f5e4481253..0d7d49dc87 100644 --- a/app/views/admin/settings/registrations/show.html.haml +++ b/app/views/admin/settings/registrations/show.html.haml @@ -19,7 +19,7 @@ - if captcha_available? .fields-group - = f.input :captcha_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.captcha_enabled.title'), hint: t('admin.settings.captcha_enabled.desc_html') + = f.input :captcha_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.captcha_enabled.title'), hint: t('admin.settings.captcha_enabled.desc_html'), glitch_only: true .fields-group = f.input :closed_registrations_message, as: :text, wrapper: :with_block_label, input_html: { rows: 2 } diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml index 89bd4f459f..a252289b0d 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -29,7 +29,7 @@ = f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label = f.input :setting_disable_swiping, as: :boolean, wrapper: :with_label = f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label - = f.input :setting_system_emoji_font, as: :boolean, wrapper: :with_label + = f.input :setting_system_emoji_font, as: :boolean, wrapper: :with_label, glitch_only: true %h4= t 'appearance.toot_layout' @@ -46,7 +46,7 @@ .fields-group = f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label = f.input :setting_boost_modal, as: :boolean, wrapper: :with_label - = f.input :setting_favourite_modal, as: :boolean, wrapper: :with_label + = f.input :setting_favourite_modal, as: :boolean, wrapper: :with_label, glitch_only: true = f.input :setting_delete_modal, as: :boolean, wrapper: :with_label %h4= t 'appearance.sensitive_content' diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index cf604d0432..fb3d21060c 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -15,7 +15,7 @@ - unless Setting.hide_followers_count .fields-group - = f.input :setting_hide_followers_count, as: :boolean, wrapper: :with_label + = f.input :setting_hide_followers_count, as: :boolean, wrapper: :with_label, glitch_only: true %h4= t 'preferences.posting_defaults' @@ -33,7 +33,7 @@ = f.input :setting_show_application, as: :boolean, wrapper: :with_label, recommended: true .fields-group - = f.input :setting_default_content_type, collection: ['text/plain', 'text/markdown', 'text/html'], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_default_content_type_#{item.split('/')[1]}"), content_tag(:span, t("simple_form.hints.defaults.setting_default_content_type_#{item.split('/')[1]}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' + = f.input :setting_default_content_type, collection: ['text/plain', 'text/markdown', 'text/html'], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_default_content_type_#{item.split('/')[1]}"), content_tag(:span, t("simple_form.hints.defaults.setting_default_content_type_#{item.split('/')[1]}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', glitch_only: true %h4= t 'preferences.public_timelines' diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb index 92cffc5a2a..d167a16005 100644 --- a/config/initializers/simple_form.rb +++ b/config/initializers/simple_form.rb @@ -19,8 +19,17 @@ module RecommendedComponent end end +module GlitchOnlyComponent + def glitch_only(_wrapper_options = nil) + return unless options[:glitch_only] + options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.glitch_only'), class: 'glitch_only')]) } + nil + end +end + SimpleForm.include_component(AppendComponent) SimpleForm.include_component(RecommendedComponent) +SimpleForm.include_component(GlitchOnlyComponent) SimpleForm.setup do |config| # Wrappers are used by the form builder to generate a @@ -78,6 +87,7 @@ SimpleForm.setup do |config| b.wrapper tag: :div, class: :label_input do |ba| ba.optional :recommended + ba.optional :glitch_only ba.use :label ba.wrapper tag: :div, class: :label_input__wrapper do |bb| diff --git a/config/locales-glitch/simple_form.en.yml b/config/locales-glitch/simple_form.en.yml index fd1c64bbb3..0ad39886ff 100644 --- a/config/locales-glitch/simple_form.en.yml +++ b/config/locales-glitch/simple_form.en.yml @@ -1,6 +1,7 @@ --- en: simple_form: + glitch_only: glitch-soc hints: defaults: fields: You can have up to %{count} items displayed as a table on your profile From af89b14628c648e95cc8a920f2ff886b9c61ffdf Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 12 Nov 2022 11:31:05 +0100 Subject: [PATCH 418/500] =?UTF-8?q?Add=20extended=20description=20for=20gl?= =?UTF-8?q?itch-soc=20only=20=E2=80=9Chide=20followers=20count"=20setting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales-glitch/simple_form.en.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales-glitch/simple_form.en.yml b/config/locales-glitch/simple_form.en.yml index 0ad39886ff..c6e7d54ca0 100644 --- a/config/locales-glitch/simple_form.en.yml +++ b/config/locales-glitch/simple_form.en.yml @@ -9,6 +9,7 @@ en: setting_default_content_type_markdown: When writing toots, assume they are using Markdown for rich text formatting, unless specified otherwise setting_default_content_type_plain: When writing toots, assume they are plain text with no special formatting, unless specified otherwise (default Mastodon behavior) setting_default_language: The language of your toots can be detected automatically, but it's not always accurate + setting_hide_followers_count: Hide your followers count from everybody, including you. Some applications may display a negative followers count. setting_skin: Reskins the selected Mastodon flavour labels: defaults: From e88f4f5e57e1a941c9e11f3cc34e291bf73394c5 Mon Sep 17 00:00:00 2001 From: Jared Allard Date: Sat, 12 Nov 2022 02:51:16 -0800 Subject: [PATCH 419/500] ci: write permissions to packages (#1906) --- .github/workflows/build-image.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 58c5587231..a95efc94cc 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -12,6 +12,7 @@ on: - Dockerfile permissions: contents: read + packages: write jobs: build-image: From d37f426f95f812b44925e13c00eabb9d1cd76b1f Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 12 Nov 2022 13:24:53 +0100 Subject: [PATCH 420/500] Add back missing glitch-soc admin settings (#1919) Fixes #1890 --- .../admin/settings/other_controller.rb | 9 +++++++ app/views/admin/settings/other/show.html.haml | 26 +++++++++++++++++++ .../admin/settings/shared/_links.html.haml | 1 + config/locales-glitch/en.yml | 3 +++ config/routes.rb | 1 + 5 files changed, 40 insertions(+) create mode 100644 app/controllers/admin/settings/other_controller.rb create mode 100644 app/views/admin/settings/other/show.html.haml diff --git a/app/controllers/admin/settings/other_controller.rb b/app/controllers/admin/settings/other_controller.rb new file mode 100644 index 0000000000..c7bfa3d586 --- /dev/null +++ b/app/controllers/admin/settings/other_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Admin::Settings::OtherController < Admin::SettingsController + private + + def after_update_redirect_path + admin_settings_other_path + end +end diff --git a/app/views/admin/settings/other/show.html.haml b/app/views/admin/settings/other/show.html.haml new file mode 100644 index 0000000000..1a7a4e46e5 --- /dev/null +++ b/app/views/admin/settings/other/show.html.haml @@ -0,0 +1,26 @@ +- content_for :page_title do + = t('admin.settings.other.title') + +- content_for :heading do + %h2= t('admin.settings.title') + = render partial: 'admin/settings/shared/links' + += simple_form_for @admin_settings, url: admin_settings_other_path, html: { method: :patch } do |f| + = render 'shared/error_messages', object: @admin_settings + + %p.lead= t('admin.settings.other.preamble') + + .fields-group + = f.input :hide_followers_count, as: :boolean, wrapper: :with_label, label: t('admin.settings.hide_followers_count.title'), hint: t('admin.settings.hide_followers_count.desc_html'), glitch_only: true + + .fields-group + = f.input :show_reblogs_in_public_timelines, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_reblogs_in_public_timelines.title'), hint: t('admin.settings.show_reblogs_in_public_timelines.desc_html'), glitch_only: true + + .fields-group + = f.input :show_replies_in_public_timelines, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_replies_in_public_timelines.title'), hint: t('admin.settings.show_replies_in_public_timelines.desc_html'), glitch_only: true + + .fields-group + = f.input :outgoing_spoilers, wrapper: :with_label, label: t('admin.settings.outgoing_spoilers.title'), hint: t('admin.settings.outgoing_spoilers.desc_html'), glitch_only: true + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/app/views/admin/settings/shared/_links.html.haml b/app/views/admin/settings/shared/_links.html.haml index 1294c26ce1..9f2cdd3f3e 100644 --- a/app/views/admin/settings/shared/_links.html.haml +++ b/app/views/admin/settings/shared/_links.html.haml @@ -6,3 +6,4 @@ - primary.item :discovery, safe_join([fa_icon('search fw'), t('admin.settings.discovery.title')]), admin_settings_discovery_path - primary.item :content_retention, safe_join([fa_icon('history fw'), t('admin.settings.content_retention.title')]), admin_settings_content_retention_path - primary.item :appearance, safe_join([fa_icon('desktop fw'), t('admin.settings.appearance.title')]), admin_settings_appearance_path + - primary.item :other, safe_join([fa_icon('ellipsis-h fw'), t('admin.settings.other.title')]), admin_settings_other_path diff --git a/config/locales-glitch/en.yml b/config/locales-glitch/en.yml index 4cdc81a248..c559ee0eca 100644 --- a/config/locales-glitch/en.yml +++ b/config/locales-glitch/en.yml @@ -33,6 +33,9 @@ en: title: Enable keybase integration flavour_and_skin: title: Flavour and skin + other: + preamble: Various glitch-soc settings not fitting in other categories. + title: Other outgoing_spoilers: desc_html: When federating toots, add this content warning to toots that do not have one. It is useful if your server is specialized in content other servers might want to have under a Content Warning. Media will also be marked as sensitive. title: Content warning for outgoing toots diff --git a/config/routes.rb b/config/routes.rb index 126eae0841..e1068bb583 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -274,6 +274,7 @@ Rails.application.routes.draw do resource :about, only: [:show, :update], controller: 'about' resource :appearance, only: [:show, :update], controller: 'appearance' resource :discovery, only: [:show, :update], controller: 'discovery' + resource :other, only: [:show, :update], controller: 'other' end resources :site_uploads, only: [:destroy] From 3fa6c603badeb0ce8f74f21b12cfab2bb214e8e0 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Nov 2022 14:21:31 +0100 Subject: [PATCH 421/500] =?UTF-8?q?[Glitch]=20Fix=20color=20of=20the=20?= =?UTF-8?q?=E2=80=9CNo=20description=20added=E2=80=9C=20media=20upload=20w?= =?UTF-8?q?arning=20on=20light=20theme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Port 89a6b76f999635e077e9469efd9d94cd6c6d6222 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/mastodon-light/diff.scss | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss index 22828c7d18..6489c2f805 100644 --- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss +++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss @@ -203,7 +203,8 @@ html { // Change the colors used in compose-form .compose-form { .compose-form__modifiers { - .compose-form__upload__actions .icon-button { + .compose-form__upload__actions .icon-button, + .compose-form__upload__warning .icon-button { color: lighten($white, 7%); &:active, @@ -212,14 +213,6 @@ html { color: $white; } } - - .compose-form__upload-description input { - color: lighten($white, 7%); - - &::placeholder { - color: lighten($white, 7%); - } - } } .compose-form__buttons-wrapper { From 487689f062877c49f5eb7cc75695f676c8db80cc Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Nov 2022 19:36:12 +0100 Subject: [PATCH 422/500] [Glitch] Remove preview cards from fav and boost notifications Port 99734ac9367eb8af705aecca423c998aadddbd59 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/components/status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js index 366a98d82b..800832dc8e 100644 --- a/app/javascript/flavours/glitch/components/status.js +++ b/app/javascript/flavours/glitch/components/status.js @@ -687,7 +687,7 @@ class Status extends ImmutablePureComponent { if (!status.get('sensitive') && !(status.get('spoiler_text').length > 0) && settings.getIn(['collapsed', 'backgrounds', 'preview_images'])) { background = attachments.getIn([0, 'preview_url']); } - } else if (status.get('card') && settings.get('inline_preview_cards')) { + } else if (status.get('card') && settings.get('inline_preview_cards') && !this.props.muted) { media.push( Date: Thu, 10 Nov 2022 20:26:04 +0100 Subject: [PATCH 423/500] [Glitch] Fix unnecessary service worker registration and preloading when logged out Port 894ce3726a38733ea7b8c880658b962f92d021ae to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/main.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/javascript/flavours/glitch/main.js b/app/javascript/flavours/glitch/main.js index f1e10df342..b8095f8192 100644 --- a/app/javascript/flavours/glitch/main.js +++ b/app/javascript/flavours/glitch/main.js @@ -25,17 +25,17 @@ function main() { import('flavours/glitch/initial_state'), ]); - const wb = new Workbox('/sw.js'); + if (me) { + const wb = new Workbox('/sw.js'); - try { - await wb.register(); - } catch (err) { - console.error(err); + try { + await wb.register(); + } catch (err) { + console.error(err); - return; - } + return; + } - if (me) { const registerPushNotifications = await import('flavours/glitch/actions/push_notifications'); store.dispatch(registerPushNotifications.register()); From 0071582c6d425f7f8fdbef692906d7cc778fa35c Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 11 Nov 2022 09:33:59 +0900 Subject: [PATCH 424/500] [Glitch] Delay workbox import Port 53d26cfc1cc2779f699f3d3d56696484faefe87c to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/main.js | 27 ++++++++++++-------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/app/javascript/flavours/glitch/main.js b/app/javascript/flavours/glitch/main.js index b8095f8192..14a6effbbb 100644 --- a/app/javascript/flavours/glitch/main.js +++ b/app/javascript/flavours/glitch/main.js @@ -2,6 +2,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { setupBrowserNotifications } from 'flavours/glitch/actions/notifications'; import Mastodon, { store } from 'flavours/glitch/containers/mastodon'; +import { me } from 'flavours/glitch/initial_state'; import ready from 'flavours/glitch/ready'; const perf = require('flavours/glitch/performance'); @@ -19,23 +20,19 @@ function main() { ReactDOM.render(, mountNode); store.dispatch(setupBrowserNotifications()); - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - const [{ Workbox }, { me }] = await Promise.all([ - import('workbox-window'), - import('flavours/glitch/initial_state'), - ]); + if (process.env.NODE_ENV === 'production' && me && 'serviceWorker' in navigator) { + const { Workbox } = await import('workbox-window'); + const wb = new Workbox('/sw.js'); + /** @type {ServiceWorkerRegistration} */ + let registration; - if (me) { - const wb = new Workbox('/sw.js'); - - try { - await wb.register(); - } catch (err) { - console.error(err); - - return; - } + try { + registration = await wb.register(); + } catch (err) { + console.error(err); + } + if (registration) { const registerPushNotifications = await import('flavours/glitch/actions/push_notifications'); store.dispatch(registerPushNotifications.register()); From d525ae4bdd0325815b2b4937754bb4938f6d08c3 Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Thu, 10 Nov 2022 18:55:20 -0700 Subject: [PATCH 425/500] [Glitch] Only remove padding when listing applications Port cf4992c918459187962a9e2f389f9ccb4f1b825d to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/forms.scss | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index 8eecee4e97..01b7a11e95 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -1060,11 +1060,18 @@ code { &:last-child { border-bottom: 0; - padding-bottom: 0; } } } +// Only remove padding when listing applications, to prevent styling issues on +// the Authorization page. +.applications-list { + .permissions-list__item:last-child { + padding-bottom: 0; + } +} + .keywords-table { thead { th { From 400d1683102c6645c948a823b6108300c178f7d7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Nov 2022 08:26:58 +0100 Subject: [PATCH 426/500] [Glitch] Fix domain blocks on about page not working well on small screens in web UI Port 6774c339b2e22fc9cadcb466139745661d0b3c83 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/about/index.js | 31 +++++------ .../glitch/styles/components/about.scss | 51 ++++++++++++------- 2 files changed, 46 insertions(+), 36 deletions(-) diff --git a/app/javascript/flavours/glitch/features/about/index.js b/app/javascript/flavours/glitch/features/about/index.js index 4129c8236e..f97eb64b41 100644 --- a/app/javascript/flavours/glitch/features/about/index.js +++ b/app/javascript/flavours/glitch/features/about/index.js @@ -183,25 +183,18 @@ class About extends React.PureComponent { <>

      - - - - - - - - - - - {domainBlocks.get('items').map(block => ( - - - - - - ))} - -
      {block.get('domain')}{intl.formatMessage(severityMessages[block.get('severity')].title)}{block.get('comment')}
      +
      + {domainBlocks.get('items').map(block => ( +
      +
      +
      {block.get('domain')}
      + {intl.formatMessage(severityMessages[block.get('severity')].title)} +
      + +

      {block.get('comment').length > 0 ? block.get('comment') : }

      +
      + ))} +
      ) : (

      diff --git a/app/javascript/flavours/glitch/styles/components/about.scss b/app/javascript/flavours/glitch/styles/components/about.scss index c6cc6c6154..6664a5756c 100644 --- a/app/javascript/flavours/glitch/styles/components/about.scss +++ b/app/javascript/flavours/glitch/styles/components/about.scss @@ -247,28 +247,45 @@ &__domain-blocks { margin-top: 30px; - width: 100%; - border-collapse: collapse; - break-inside: auto; + background: darken($ui-base-color, 4%); + border: 1px solid lighten($ui-base-color, 4%); + border-radius: 4px; - th { - text-align: left; - font-weight: 500; + &__domain { + border-bottom: 1px solid lighten($ui-base-color, 4%); + padding: 10px; + font-size: 15px; color: $darker-text-color; - } - thead tr, - tbody tr { - border-bottom: 1px solid lighten($ui-base-color, 8%); - } + &:nth-child(2n) { + background: darken($ui-base-color, 2%); + } - tbody tr:last-child { - border-bottom: 0; - } + &:last-child { + border-bottom: 0; + } + + &__header { + display: flex; + gap: 10px; + justify-content: space-between; + font-weight: 500; + margin-bottom: 4px; + } - th, - td { - padding: 8px; + h6 { + color: $secondary-text-color; + font-size: inherit; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + p { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } } } } From 8ac4165c721cf1c70d1d682e183b169230326f36 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 11 Nov 2022 09:20:24 +0100 Subject: [PATCH 427/500] =?UTF-8?q?[Glitch]=20Remove=20=E2=80=9CNo=20descr?= =?UTF-8?q?iption=20added=E2=80=9D=20media=20warning=20in=20edit=20mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Port 5e796dc6f85b37c8378fe01cfd8ac23222c89eea to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/compose/components/upload.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/compose/components/upload.js b/app/javascript/flavours/glitch/features/compose/components/upload.js index 94ac6c4996..c276d339d7 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload.js +++ b/app/javascript/flavours/glitch/features/compose/components/upload.js @@ -48,7 +48,7 @@ export default class Upload extends ImmutablePureComponent { {!isEditingStatus && ()}
      - {(media.get('description') || '').length === 0 && ( + {(media.get('description') || '').length === 0 && !isEditingStatus && (
      From e2315876f4c7bf591c535f10628fe6e145505a84 Mon Sep 17 00:00:00 2001 From: Cutls Date: Sat, 12 Nov 2022 05:19:48 +0900 Subject: [PATCH 428/500] [Glitch] Do not show drag&drop dialog when not logined Port 553b169d483e9b2f28007e130a494aec08a1720a to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/features/ui/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js index 3d385eee2b..72e13d9d68 100644 --- a/app/javascript/flavours/glitch/features/ui/index.js +++ b/app/javascript/flavours/glitch/features/ui/index.js @@ -303,7 +303,7 @@ class UI extends React.Component { this.dragTargets.push(e.target); } - if (e.dataTransfer && e.dataTransfer.types.includes('Files') && this.props.canUploadMore) { + if (e.dataTransfer && e.dataTransfer.types.includes('Files') && this.props.canUploadMore && this.context.identity.signedIn) { this.setState({ draggingOver: true }); } } @@ -330,7 +330,7 @@ class UI extends React.Component { this.setState({ draggingOver: false }); this.dragTargets = []; - if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore) { + if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore && this.context.identity.signedIn) { this.props.dispatch(uploadCompose(e.dataTransfer.files)); } } From 9255bfb908f660889f54d4fd5ea92279b09d8cd1 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 11 Nov 2022 21:22:17 +0100 Subject: [PATCH 429/500] [Glitch] Add the ability to edit media attachment metadata for any unattached media Port 31005aad12c6a915a00501765a6dab25878326cb to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/features/compose/components/upload.js | 7 +++---- .../glitch/features/compose/containers/upload_container.js | 1 - app/javascript/flavours/glitch/reducers/compose.js | 4 ++-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/app/javascript/flavours/glitch/features/compose/components/upload.js b/app/javascript/flavours/glitch/features/compose/components/upload.js index c276d339d7..6528bbc84c 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload.js +++ b/app/javascript/flavours/glitch/features/compose/components/upload.js @@ -18,7 +18,6 @@ export default class Upload extends ImmutablePureComponent { media: ImmutablePropTypes.map.isRequired, onUndo: PropTypes.func.isRequired, onOpenFocalPoint: PropTypes.func.isRequired, - isEditingStatus: PropTypes.bool.isRequired, }; handleUndoClick = e => { @@ -32,7 +31,7 @@ export default class Upload extends ImmutablePureComponent { } render () { - const { intl, media, isEditingStatus } = this.props; + const { media } = this.props; const focusX = media.getIn(['meta', 'focus', 'x']); const focusY = media.getIn(['meta', 'focus', 'y']); const x = ((focusX / 2) + .5) * 100; @@ -45,10 +44,10 @@ export default class Upload extends ImmutablePureComponent {
      - {!isEditingStatus && ()} + {!!media.get('unattached') && ()}
      - {(media.get('description') || '').length === 0 && !isEditingStatus && ( + {(media.get('description') || '').length === 0 && !!media.get('unattached') && (
      diff --git a/app/javascript/flavours/glitch/features/compose/containers/upload_container.js b/app/javascript/flavours/glitch/features/compose/containers/upload_container.js index d6256fe966..f3ca4ce7bb 100644 --- a/app/javascript/flavours/glitch/features/compose/containers/upload_container.js +++ b/app/javascript/flavours/glitch/features/compose/containers/upload_container.js @@ -5,7 +5,6 @@ import { submitCompose } from 'flavours/glitch/actions/compose'; const mapStateToProps = (state, { id }) => ({ media: state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id), - isEditingStatus: state.getIn(['compose', 'id']) !== null, }); const mapDispatchToProps = dispatch => ({ diff --git a/app/javascript/flavours/glitch/reducers/compose.js b/app/javascript/flavours/glitch/reducers/compose.js index 460af39553..18e437bbc8 100644 --- a/app/javascript/flavours/glitch/reducers/compose.js +++ b/app/javascript/flavours/glitch/reducers/compose.js @@ -222,7 +222,7 @@ function appendMedia(state, media, file) { if (media.get('type') === 'image') { media = media.set('file', file); } - map.update('media_attachments', list => list.push(media)); + map.update('media_attachments', list => list.push(media.set('unattached', true))); map.set('is_uploading', false); map.set('is_processing', false); map.set('resetFileKey', Math.floor((Math.random() * 0x10000))); @@ -563,7 +563,7 @@ export default function compose(state = initialState, action) { map.set('content_type', action.content_type || 'text/plain'); map.set('in_reply_to', action.status.get('in_reply_to_id')); map.set('privacy', action.status.get('visibility')); - map.set('media_attachments', action.status.get('media_attachments')); + map.set('media_attachments', action.status.get('media_attachments').map((media) => media.set('unattached', true))); map.set('focusDate', new Date()); map.set('caretPosition', null); map.set('idempotencyKey', uuid()); From a808ac1fd8d4a42ee930bbb30cb6b58c810f828b Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 11 Nov 2022 21:23:03 +0100 Subject: [PATCH 430/500] [Glitch] Fix WebUI crash when listing server blocks and rationale is not available Port 93a6ebc83d4bc6647d1eafce509a29aa3642c87c to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/features/about/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/features/about/index.js b/app/javascript/flavours/glitch/features/about/index.js index f97eb64b41..57f295ea97 100644 --- a/app/javascript/flavours/glitch/features/about/index.js +++ b/app/javascript/flavours/glitch/features/about/index.js @@ -191,7 +191,7 @@ class About extends React.PureComponent { {intl.formatMessage(severityMessages[block.get('severity')].title)}
      -

      {block.get('comment').length > 0 ? block.get('comment') : }

      +

      {(block.get('comment') || '').length > 0 ? block.get('comment') : }

      ))}
      From e9e4938bc92f5466e9056fe0fe9fb4919947c6ef Mon Sep 17 00:00:00 2001 From: helloworldstack <66512512+helloworldstack@users.noreply.github.com> Date: Sun, 13 Nov 2022 09:33:20 +0700 Subject: [PATCH 431/500] Fix casing and spacing of words (#20504) --- config/locales/en.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index c50fc074c4..679e356b41 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -608,7 +608,7 @@ en: other: "%{count} users" categories: administration: Administration - devops: Devops + devops: DevOps invites: Invites moderation: Moderation special: Special @@ -659,7 +659,7 @@ en: view_audit_log_description: Allows users to see a history of administrative actions on the server view_dashboard: View Dashboard view_dashboard_description: Allows users to access the dashboard and various metrics - view_devops: Devops + view_devops: DevOps view_devops_description: Allows users to access Sidekiq and pgHero dashboards title: Roles rules: @@ -1374,7 +1374,7 @@ en: browser: Browser browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1388,7 +1388,7 @@ en: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Browser weibo: Weibo current_session: Current session description: "%{browser} on %{platform}" @@ -1397,8 +1397,8 @@ en: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS + blackberry: BlackBerry + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux From cf77d938f8fff0193225781f77f03e1616acc88f Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 13 Nov 2022 03:33:31 +0100 Subject: [PATCH 432/500] Fix saving server registration settings redirecting to branding settings (#20505) --- app/views/admin/settings/registrations/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/settings/registrations/show.html.haml b/app/views/admin/settings/registrations/show.html.haml index 0129332d7b..0db9f3536f 100644 --- a/app/views/admin/settings/registrations/show.html.haml +++ b/app/views/admin/settings/registrations/show.html.haml @@ -8,7 +8,7 @@ %h2= t('admin.settings.title') = render partial: 'admin/settings/shared/links' -= simple_form_for @admin_settings, url: admin_settings_branding_path, html: { method: :patch } do |f| += simple_form_for @admin_settings, url: admin_settings_registrations_path, html: { method: :patch } do |f| = render 'shared/error_messages', object: @admin_settings %p.lead= t('admin.settings.registrations.preamble') From 290d78cea4850982a2843dc1a2954f0d66fe58d8 Mon Sep 17 00:00:00 2001 From: David Hewitt Date: Sun, 13 Nov 2022 05:57:10 +0000 Subject: [PATCH 433/500] Allow unsetting x-amz-acl S3 Permission headers (#20510) Some "S3 Compatible" storage providers (Cloudflare R2 is one such example) don't support setting ACLs on individual uploads with the `x-amz-acl` header, and instead just have a visibility for the whole bucket. To support uploads to such providers without getting unsupported errors back, lets use a black `S3_PERMISSION` env var to indicate that these headers shouldn't be sent. This is tested as working with Cloudflare R2. --- config/initializers/paperclip.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb index 26b0a2f7cd..5c182ade48 100644 --- a/config/initializers/paperclip.rb +++ b/config/initializers/paperclip.rb @@ -67,6 +67,12 @@ if ENV['S3_ENABLED'] == 'true' retry_limit: 0, } ) + + if ENV['S3_PERMISSION'] == '' + Paperclip::Attachment.default_options.merge!( + s3_permissions: ->(*) { nil } + ) + end if ENV.has_key?('S3_ENDPOINT') Paperclip::Attachment.default_options[:s3_options].merge!( From cf36ee99bb55eeecc2fd8fbc4d6b9d123b1294fa Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 13 Nov 2022 17:14:31 +0100 Subject: [PATCH 434/500] New Crowdin updates (#20476) * New translations en.json (Galician) * New translations en.yml (Galician) * New translations en.json (Japanese) * New translations en.yml (Czech) * New translations en.json (Esperanto) * New translations en.yml (Norwegian) * New translations en.json (Spanish, Argentina) * New translations en.json (Latvian) * New translations en.json (Esperanto) * New translations en.yml (Esperanto) * New translations simple_form.en.yml (Esperanto) * New translations activerecord.en.yml (Russian) * New translations activerecord.en.yml (Portuguese, Brazilian) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.yml (Norwegian) * New translations en.json (Welsh) * New translations en.yml (Welsh) * New translations en.json (Malayalam) * New translations simple_form.en.yml (Thai) * New translations simple_form.en.yml (Welsh) * New translations doorkeeper.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations devise.en.yml (Thai) * New translations devise.en.yml (Welsh) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Irish) * New translations simple_form.en.yml (German) * New translations simple_form.en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Esperanto) * New translations en.yml (Irish) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.yml (Polish) * New translations en.json (Slovak) * New translations en.yml (Slovak) * New translations en.json (Turkish) * New translations en.yml (Portuguese, Brazilian) * New translations simple_form.en.yml (Thai) * New translations en.yml (Chinese Simplified) * New translations en.yml (Polish) * New translations en.json (Slovak) * New translations en.yml (Slovak) * New translations simple_form.en.yml (Slovak) * New translations en.json (Thai) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations doorkeeper.en.yml (Esperanto) * New translations en.json (Norwegian) * New translations en.json (Finnish) * New translations en.json (Norwegian) * New translations simple_form.en.yml (Norwegian) * New translations en.yml (Thai) * New translations en.json (Norwegian Nynorsk) * New translations en.yml (Norwegian Nynorsk) * New translations simple_form.en.yml (Arabic) * New translations en.json (German) * New translations en.json (Dutch) * New translations en.yml (Greek) * New translations en.yml (German) * New translations en.yml (Hungarian) * New translations en.yml (Hebrew) * New translations en.yml (Finnish) * New translations en.yml (Basque) * New translations en.yml (Frisian) * New translations en.yml (Danish) * New translations en.yml (Catalan) * New translations en.yml (Bulgarian) * New translations en.yml (Arabic) * New translations en.yml (Afrikaans) * New translations en.yml (French) * New translations en.yml (Romanian) * New translations en.yml (Spanish) * New translations en.yml (Czech) * New translations en.yml (Armenian) * New translations en.yml (Urdu (Pakistan)) * New translations en.yml (Vietnamese) * New translations en.yml (Chinese Traditional) * New translations en.yml (Swedish) * New translations en.yml (Serbian (Cyrillic)) * New translations en.yml (Slovenian) * New translations en.yml (Thai) * New translations en.yml (Galician) * New translations en.yml (Russian) * New translations en.yml (Icelandic) * New translations en.yml (Portuguese, Brazilian) * New translations en.yml (Indonesian) * New translations en.yml (Persian) * New translations en.yml (Tamil) * New translations en.yml (Slovak) * New translations en.yml (Japanese) * New translations en.yml (Portuguese) * New translations en.yml (Polish) * New translations en.yml (Punjabi) * New translations en.yml (Norwegian) * New translations en.yml (Dutch) * New translations en.yml (Macedonian) * New translations en.yml (Lithuanian) * New translations en.yml (Korean) * New translations en.yml (Georgian) * New translations en.yml (Italian) * New translations en.yml (Ukrainian) * New translations en.yml (Albanian) * New translations en.yml (Turkish) * New translations en.yml (Ido) * New translations en.yml (Chinese Simplified) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Sorani (Kurdish)) * New translations en.yml (Kannada) * New translations en.yml (Scottish Gaelic) * New translations en.yml (Asturian) * New translations en.yml (Occitan) * New translations en.yml (Serbian (Latin)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Corsican) * New translations en.yml (Sinhala) * New translations en.yml (Sardinian) * New translations en.yml (Sanskrit) * New translations en.yml (Kabyle) * New translations en.yml (Taigi) * New translations en.yml (Silesian) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.yml (Burmese) * New translations en.yml (Cornish) * New translations en.yml (Breton) * New translations en.yml (Bengali) * New translations en.yml (Hindi) * New translations en.yml (Marathi) * New translations en.yml (Croatian) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Kazakh) * New translations en.yml (Estonian) * New translations en.yml (Latvian) * New translations en.yml (Malay) * New translations en.yml (Malayalam) * New translations en.yml (Telugu) * New translations en.yml (English, United Kingdom) * New translations en.yml (Welsh) * New translations en.yml (Esperanto) * New translations en.yml (Uyghur) * New translations en.yml (Chinese Traditional, Hong Kong) * New translations en.yml (Tatar) * New translations en.yml (Igbo) * New translations en.yml (Chinese Simplified) * New translations en.yml (Afrikaans) * New translations en.yml (Korean) * New translations en.yml (Chinese Traditional) * New translations en.yml (Thai) * New translations en.yml (German) * New translations en.yml (Czech) * New translations en.yml (Catalan) * New translations en.yml (Greek) * New translations en.yml (Italian) * New translations en.yml (Slovenian) * New translations en.yml (Swedish) * New translations simple_form.en.yml (Thai) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.yml (Basque) * New translations en.yml (Norwegian) * New translations en.yml (Portuguese) * New translations en.yml (Icelandic) * New translations en.json (Spanish, Argentina) * New translations en.yml (Spanish, Argentina) * New translations en.json (Albanian) * New translations en.yml (Albanian) * New translations en.yml (French) * New translations en.yml (Hebrew) * New translations en.yml (Italian) * New translations en.yml (Japanese) * New translations en.yml (Norwegian) * New translations en.yml (Polish) * New translations en.yml (Norwegian Nynorsk) * New translations en.yml (Esperanto) * New translations en.yml (German) * New translations en.json (German) * New translations en.yml (Hebrew) * New translations en.yml (Norwegian) * New translations en.yml (German) * New translations en.json (Spanish) * New translations en.yml (Finnish) * New translations en.json (Norwegian) * New translations en.yml (Latvian) * New translations en.yml (Esperanto) * New translations en.json (German) * New translations en.json (Esperanto) * New translations en.yml (Dutch) * New translations en.yml (Norwegian) * New translations en.yml (Esperanto) * New translations en.json (Catalan) * New translations en.yml (Catalan) * New translations doorkeeper.en.yml (Catalan) * Run `yarn manage:translations` * Run `bundle exec i18n-tasks normalize` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/ca.json | 72 +++++++++---------- app/javascript/mastodon/locales/cy.json | 14 ++-- app/javascript/mastodon/locales/de.json | 22 +++--- app/javascript/mastodon/locales/eo.json | 34 ++++----- app/javascript/mastodon/locales/es-AR.json | 10 +-- app/javascript/mastodon/locales/es.json | 2 +- app/javascript/mastodon/locales/fi.json | 4 +- app/javascript/mastodon/locales/gl.json | 4 +- app/javascript/mastodon/locales/ja.json | 6 +- app/javascript/mastodon/locales/lv.json | 10 +-- app/javascript/mastodon/locales/ml.json | 6 +- app/javascript/mastodon/locales/nl.json | 4 +- app/javascript/mastodon/locales/nn.json | 2 +- app/javascript/mastodon/locales/no.json | 26 +++---- app/javascript/mastodon/locales/pl.json | 4 +- app/javascript/mastodon/locales/sk.json | 80 +++++++++++----------- app/javascript/mastodon/locales/sq.json | 6 +- app/javascript/mastodon/locales/th.json | 14 ++-- app/javascript/mastodon/locales/tr.json | 2 +- config/locales/activerecord.ru.yml | 4 ++ config/locales/af.yml | 12 ++++ config/locales/ar.yml | 5 -- config/locales/ast.yml | 4 -- config/locales/bg.yml | 4 -- config/locales/br.yml | 2 - config/locales/ca.yml | 6 +- config/locales/ckb.yml | 4 -- config/locales/co.yml | 4 -- config/locales/cs.yml | 20 ++++-- config/locales/cy.yml | 1 - config/locales/da.yml | 6 -- config/locales/de.yml | 24 +++---- config/locales/devise.th.yml | 2 +- config/locales/doorkeeper.ca.yml | 4 +- config/locales/doorkeeper.eo.yml | 6 ++ config/locales/el.yml | 6 ++ config/locales/eo.yml | 18 ++--- config/locales/es-AR.yml | 2 +- config/locales/es-MX.yml | 6 -- config/locales/es.yml | 6 -- config/locales/eu.yml | 10 +-- config/locales/fa.yml | 5 -- config/locales/fi.yml | 20 +++--- config/locales/fr.yml | 6 +- config/locales/ga.yml | 66 +++++++++++++----- config/locales/gd.yml | 6 -- config/locales/gl.yml | 16 ++--- config/locales/he.yml | 8 +-- config/locales/hu.yml | 6 -- config/locales/hy.yml | 4 -- config/locales/id.yml | 6 -- config/locales/io.yml | 6 -- config/locales/is.yml | 6 +- config/locales/it.yml | 10 +-- config/locales/ja.yml | 6 +- config/locales/ka.yml | 4 -- config/locales/kab.yml | 4 -- config/locales/kk.yml | 4 -- config/locales/ko.yml | 2 +- config/locales/ku.yml | 6 -- config/locales/lv.yml | 12 ++-- config/locales/nl.yml | 6 +- config/locales/nn.yml | 31 +++++++-- config/locales/no.yml | 65 +++++++++++++----- config/locales/oc.yml | 4 -- config/locales/pl.yml | 26 +++---- config/locales/pt-BR.yml | 9 +-- config/locales/pt-PT.yml | 2 +- config/locales/ru.yml | 6 -- config/locales/sc.yml | 4 -- config/locales/si.yml | 4 -- config/locales/simple_form.ar.yml | 34 +++++++++ config/locales/simple_form.de.yml | 28 ++++---- config/locales/simple_form.eo.yml | 4 +- config/locales/simple_form.no.yml | 7 +- config/locales/simple_form.pt-BR.yml | 4 ++ config/locales/simple_form.sk.yml | 3 + config/locales/simple_form.th.yml | 11 ++- config/locales/sk.yml | 4 +- config/locales/sl.yml | 6 +- config/locales/sq.yml | 6 +- config/locales/sr-Latn.yml | 3 - config/locales/sr.yml | 4 -- config/locales/sv.yml | 12 ++-- config/locales/th.yml | 36 +++++++--- config/locales/tr.yml | 6 -- config/locales/tt.yml | 4 -- config/locales/uk.yml | 6 -- config/locales/vi.yml | 6 -- config/locales/zh-CN.yml | 6 +- config/locales/zh-HK.yml | 4 -- config/locales/zh-TW.yml | 8 +-- 92 files changed, 537 insertions(+), 503 deletions(-) diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index ea63eedb3b..4b5fb25e4a 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -1,14 +1,14 @@ { "about.blocks": "Servidors moderats", "about.contact": "Contacte:", - "about.disclaimer": "Mastodon és un programari lliure de codi obert i una marca comercial de Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Motiu no disponible", + "about.disclaimer": "Mastodon és programari lliure de codi obert i una marca comercial de Mastodon gGmbH.", + "about.domain_blocks.no_reason_available": "No és disponible el motiu", "about.domain_blocks.preamble": "En general, Mastodon et permet veure el contingut i interaccionar amb els usuaris de qualsevol altre servidor del fedivers. Aquestes són les excepcions que s'han fet en aquest servidor particular.", - "about.domain_blocks.silenced.explanation": "Generalment no veuràs perfils ni contingut d'aquest servidor, a menys que el cerquis explícitament o optis per ell seguint-lo.", + "about.domain_blocks.silenced.explanation": "Generalment no veuràs perfils ni contingut d'aquest servidor, a menys que el cerquis explícitament o optis per seguir-lo.", "about.domain_blocks.silenced.title": "Limitat", - "about.domain_blocks.suspended.explanation": "No es processaran, emmagatzemaran ni s'intercanviaran dades d'aquest servidor, fent impossible qualsevol interacció o comunicació amb els usuaris d'aquest servidor.", + "about.domain_blocks.suspended.explanation": "No es processaran, emmagatzemaran ni intercanviaran dades d'aquest servidor, fent impossible qualsevol interacció o comunicació amb els seus usuaris.", "about.domain_blocks.suspended.title": "Suspès", - "about.not_available": "Aquesta informació no s'ha fet disponible en aquest servidor.", + "about.not_available": "Aquesta informació no és disponible en aquest servidor.", "about.powered_by": "Xarxa social descentralitzada impulsada per {mastodon}", "about.rules": "Normes del servidor", "account.account_note_header": "Nota", @@ -19,19 +19,19 @@ "account.block_domain": "Bloqueja el domini {domain}", "account.blocked": "Bloquejat", "account.browse_more_on_origin_server": "Navega més en el perfil original", - "account.cancel_follow_request": "Retirar la sol·licitud de seguiment", + "account.cancel_follow_request": "Retira la sol·licitud de seguiment", "account.direct": "Envia missatge directe a @{name}", "account.disable_notifications": "No em notifiquis les publicacions de @{name}", - "account.domain_blocked": "Domini bloquejat", + "account.domain_blocked": "Domini blocat", "account.edit_profile": "Edita el perfil", - "account.enable_notifications": "Notifica’m les publicacions de @{name}", + "account.enable_notifications": "Notifica'm les publicacions de @{name}", "account.endorse": "Recomana en el perfil", "account.featured_tags.last_status_at": "Última publicació el {date}", - "account.featured_tags.last_status_never": "Cap publicació", + "account.featured_tags.last_status_never": "No hi ha publicacions", "account.featured_tags.title": "Etiquetes destacades de: {name}", "account.follow": "Segueix", "account.followers": "Seguidors", - "account.followers.empty": "Ningú segueix aquest usuari encara.", + "account.followers.empty": "Encara ningú no segueix aquest usuari.", "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}", "account.following": "Seguint", "account.following_counter": "{count, plural, other {{counter} Seguint}}", @@ -52,25 +52,25 @@ "account.open_original_page": "Obre la pàgina original", "account.posts": "Publicacions", "account.posts_with_replies": "Publicacions i respostes", - "account.report": "Informa sobre @{name}", - "account.requested": "Esperant aprovació. Fes clic per cancel·lar la petició de seguiment", + "account.report": "Informa quant a @{name}", + "account.requested": "S'està esperant l'aprovació. Feu clic per a cancel·lar la petició de seguiment", "account.share": "Comparteix el perfil de @{name}", "account.show_reblogs": "Mostra els impulsos de @{name}", "account.statuses_counter": "{count, plural, one {{counter} Publicació} other {{counter} Publicacions}}", "account.unblock": "Desbloqueja @{name}", "account.unblock_domain": "Desbloqueja el domini {domain}", - "account.unblock_short": "Desbloquejar", - "account.unendorse": "No recomanar en el perfil", - "account.unfollow": "Deixar de seguir", + "account.unblock_short": "Desbloqueja", + "account.unendorse": "No recomanis en el perfil", + "account.unfollow": "Deixa de seguir", "account.unmute": "Deixar de silenciar @{name}", - "account.unmute_notifications": "Activar notificacions de @{name}", + "account.unmute_notifications": "Activa les notificacions de @{name}", "account.unmute_short": "Deixa de silenciar", "account_note.placeholder": "Clica per afegir-hi una nota", - "admin.dashboard.daily_retention": "Ràtio de retenció d'usuaris nous, per dia, després del registre", - "admin.dashboard.monthly_retention": "Ràtio de retenció d'usuaris nous, per mes, després del registre", + "admin.dashboard.daily_retention": "Ràtio de retenció d'usuaris nous per dia, després del registre", + "admin.dashboard.monthly_retention": "Ràtio de retenció d'usuaris nous per mes, després del registre", "admin.dashboard.retention.average": "Mitjana", - "admin.dashboard.retention.cohort": "Mes del registre", - "admin.dashboard.retention.cohort_size": "Nous usuaris", + "admin.dashboard.retention.cohort": "Mes de registre", + "admin.dashboard.retention.cohort_size": "Usuaris nous", "alert.rate_limited.message": "Si us plau, torna-ho a provar després de {retry_time, time, medium}.", "alert.rate_limited.title": "Límit de freqüència", "alert.unexpected.message": "S'ha produït un error inesperat.", @@ -79,21 +79,21 @@ "attachments_list.unprocessed": "(sense processar)", "audio.hide": "Amaga l'àudio", "autosuggest_hashtag.per_week": "{count} per setmana", - "boost_modal.combo": "Pots prémer {combo} per evitar-ho el pròxim cop", - "bundle_column_error.copy_stacktrace": "Copiar l'informe d'error", - "bundle_column_error.error.body": "No s'ha pogut renderitzar la pàgina sol·licitada. Podría ser degut a un error en el nostre codi o un problema de compatibilitat del navegador.", + "boost_modal.combo": "Podeu prémer {combo} per a evitar-ho el pròxim cop", + "bundle_column_error.copy_stacktrace": "Copia l'informe d'error", + "bundle_column_error.error.body": "No s'ha pogut renderitzar la pàgina sol·licitada. Podria ser per un error en el nostre codi o per un problema de compatibilitat del navegador.", "bundle_column_error.error.title": "Oh, no!", - "bundle_column_error.network.body": "Hi ha hagut un error al intentar carregar aquesta pàgina. Això podria ser degut a un problem temporal amb la teva connexió a internet o amb aquest servidor.", - "bundle_column_error.network.title": "Error de xarxa", - "bundle_column_error.retry": "Tornar-ho a provar", + "bundle_column_error.network.body": "Hi ha hagut un error en intentar carregar aquesta pàgina. Això podria ser per un problema temporal amb la teva connexió a internet o amb aquest servidor.", + "bundle_column_error.network.title": "Error de connexió", + "bundle_column_error.retry": "Torna-ho a provar", "bundle_column_error.return": "Torna a Inici", - "bundle_column_error.routing.body": "No es pot trobar la pàgina sol·licitada. Estàs segur que la URL de la barra d'adreces és correcte?", + "bundle_column_error.routing.body": "No es pot trobar la pàgina sol·licitada. Segur que la URL de la barra d'adreces és correcta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Tanca", "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.", - "bundle_modal_error.retry": "Tornar-ho a provar", - "closed_registrations.other_server_instructions": "Donat que Mastodon és descentralitzat, pots crear un compte en un altre servidor i encara interactuar amb aquest.", - "closed_registrations_modal.description": "Crear un compte a {domain} no és possible ara mateix però, si us plau, tingues en compte que no necessites específicament un compte a {domain} per a usar Mastodon.", + "bundle_modal_error.retry": "Torna-ho a provar", + "closed_registrations.other_server_instructions": "Com que Mastodon és descentralitzat, pots crear un compte en un altre servidor i seguir interactuant amb aquest.", + "closed_registrations_modal.description": "No es pot crear un compte a {domain} ara mateix, però tingueu en compte que no necessiteu específicament un compte a {domain} per a usar Mastodon.", "closed_registrations_modal.find_another_server": "Troba un altre servidor", "closed_registrations_modal.preamble": "Mastodon és descentralitzat per tant no importa on tinguis el teu compte, seràs capaç de seguir i interactuar amb tothom des d'aquest servidor. Fins i tot pots tenir el compte en el teu propi servidor!", "closed_registrations_modal.title": "Registrant-se a Mastodon", @@ -130,7 +130,7 @@ "compose_form.hashtag_warning": "Aquesta publicació no es mostrarà en cap etiqueta, ja que no està llistada. Només les publicacions públiques es poden cercar per etiqueta.", "compose_form.lock_disclaimer": "El teu compte no està {locked}. Tothom pot seguir-te i veure les publicacions de només per a seguidors.", "compose_form.lock_disclaimer.lock": "bloquejat", - "compose_form.placeholder": "Què et passa pel cap?", + "compose_form.placeholder": "Què tens en ment?", "compose_form.poll.add_option": "Afegir una opció", "compose_form.poll.duration": "Durada de l'enquesta", "compose_form.poll.option_placeholder": "Opció {number}", @@ -210,7 +210,7 @@ "empty_column.account_timeline": "No hi ha publicacions aquí!", "empty_column.account_unavailable": "Perfil no disponible", "empty_column.blocks": "Encara no has bloquejat cap usuari.", - "empty_column.bookmarked_statuses": "Encara no has marcat com publicació com a preferida. Quan en marquis una apareixerà aquí.", + "empty_column.bookmarked_statuses": "Encara no has marcat cap publicació com a preferida. Quan en marquis una, apareixerà aquí.", "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per posar-ho tot en marxa!", "empty_column.direct": "Encara no tens missatges directes. Quan n'enviïs o en rebis, es mostraran aquí.", "empty_column.domain_blocks": "Encara no hi ha dominis bloquejats.", @@ -257,7 +257,7 @@ "filter_modal.title.status": "Filtra una publicació", "follow_recommendations.done": "Fet", "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure les seves publicacions! Aquí hi ha algunes recomanacions.", - "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", + "follow_recommendations.lead": "Les publicacions dels usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", "follow_request.authorize": "Autoritza", "follow_request.reject": "Rebutja", "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes manualment.", @@ -294,7 +294,7 @@ "interaction_modal.on_this_server": "En aquest servidor", "interaction_modal.other_server_instructions": "Copia i enganxa aquest enllaç en el camp de cerca de la teva aplicació Mastodon preferida o en l'interfície web del teu servidor Mastodon.", "interaction_modal.preamble": "Donat que Mastodon és descentralitzat, pots fer servir el teu compte existent a un altre servidor Mastodon o plataforma compatible si és que no tens compte en aquest.", - "interaction_modal.title.favourite": "Afavoreix la publicació de {name}", + "interaction_modal.title.favourite": "Marca la publicació de {name}", "interaction_modal.title.follow": "Segueix {name}", "interaction_modal.title.reblog": "Impulsa la publicació de {name}", "interaction_modal.title.reply": "Respon a la publicació de {name}", @@ -310,7 +310,7 @@ "keyboard_shortcuts.direct": "per obrir la columna de missatges directes", "keyboard_shortcuts.down": "Mou-lo avall en la llista", "keyboard_shortcuts.enter": "Obrir publicació", - "keyboard_shortcuts.favourite": "Afavoreix la publicació", + "keyboard_shortcuts.favourite": "Marca la publicació", "keyboard_shortcuts.favourites": "Obre la llista de preferits", "keyboard_shortcuts.federated": "Obre la línia de temps federada", "keyboard_shortcuts.heading": "Dreceres de teclat", @@ -542,7 +542,7 @@ "status.admin_account": "Obre l'interfície de moderació per a @{name}", "status.admin_status": "Obrir aquesta publicació a la interfície de moderació", "status.block": "Bloqueja @{name}", - "status.bookmark": "Afavoreix", + "status.bookmark": "Marca", "status.cancel_reblog_private": "Desfés l'impuls", "status.cannot_reblog": "Aquesta publicació no es pot impulsar", "status.copy": "Copia l'enllaç a la publicació", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 0d1149ef1b..9812eec620 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -2,7 +2,7 @@ "about.blocks": "Gweinyddion sy'n cael eu cymedroli", "about.contact": "Cyswllt:", "about.disclaimer": "Mae Mastodon yn feddalwedd rhydd, cod agored ac o dan hawlfraint Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Reason not available", + "about.domain_blocks.no_reason_available": "Rheswm ddim ar gael", "about.domain_blocks.preamble": "Yn gyffredinol, mae Mastodon yn caniatáu i chi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.", "about.domain_blocks.silenced.explanation": "Yn gyffredinol, fyddwch chi ddim yn gweld proffiliau a chynnwys o'r gweinydd hwn, oni bai eich bod yn chwilio'n benodol amdano neu yn ymuno drwy ei ddilyn.", "about.domain_blocks.silenced.title": "Tawelwyd", @@ -28,7 +28,7 @@ "account.endorse": "Arddangos ar fy mhroffil", "account.featured_tags.last_status_at": "Y cofnod diwethaf ar {date}", "account.featured_tags.last_status_never": "Dim postiadau", - "account.featured_tags.title": "{name}'s featured hashtags", + "account.featured_tags.title": "hashnodau dan sylw {name}", "account.follow": "Dilyn", "account.followers": "Dilynwyr", "account.followers.empty": "Does neb yn dilyn y defnyddiwr hwn eto.", @@ -49,7 +49,7 @@ "account.mute": "Tawelu @{name}", "account.mute_notifications": "Cuddio hysbysiadau o @{name}", "account.muted": "Distewyd", - "account.open_original_page": "Open original page", + "account.open_original_page": "Agor y dudalen wreiddiol", "account.posts": "Postiadau", "account.posts_with_replies": "Postiadau ac atebion", "account.report": "Adrodd @{name}", @@ -95,7 +95,7 @@ "closed_registrations.other_server_instructions": "Gan fod Mastodon yn ddatganoledig, gallwch greu cyfrif ar weinydd arall a dal i ryngweithio gyda hwn.", "closed_registrations_modal.description": "Ar hyn o bryd nid yw'n bosib creu cyfrif ar {domain}, ond cadwch mewn cof nad oes raid i chi gael cyfrif yn benodol ar {domain} i ddefnyddio Mastodon.", "closed_registrations_modal.find_another_server": "Dod o hyd i weinydd arall", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.preamble": "Mae Mastodon wedi'i ddatganoli, felly does dim gwahaniaeth ble rydych chi'n creu eich cyfrif, byddwch chi'n gallu dilyn a rhyngweithio ag unrhyw un ar y gweinydd hwn. Gallwch hyd yn oed ei gynnal ef eich hun!", "closed_registrations_modal.title": "Cofrestru ar Mastodon", "column.about": "Ynghylch", "column.blocks": "Defnyddwyr a flociwyd", @@ -181,12 +181,12 @@ "directory.local": "O {domain} yn unig", "directory.new_arrivals": "Newydd-ddyfodiaid", "directory.recently_active": "Yn weithredol yn ddiweddar", - "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.account_settings": "Gosodiadau'r cyfrif", "disabled_account_banner.text": "Mae eich cyfrif {disabledAccount} wedi ei analluogi ar hyn o bryd.", "dismissable_banner.community_timeline": "Dyma'r postiadau cyhoeddus diweddaraf gan bobl y caiff eu cyfrifon eu cynnal ar {domain}.", "dismissable_banner.dismiss": "Diystyru", - "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", - "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.", + "dismissable_banner.explore_links": "Mae'r straeon newyddion hyn yn cael eu trafod gan bobl ar y gweinydd hwn a rhai eraill ar y rhwydwaith datganoledig hwn, ar hyn o bryd.", + "dismissable_banner.explore_statuses": "Mae'r cofnodion hyn o'r gweinydd hwn a gweinyddion eraill yn y rhwydwaith datganoledig hwn yn denu sylw ar y gweinydd hwn ar hyn o bryd.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.", "embed.instructions": "Gosodwch y post hwn ar eich gwefan drwy gopïo'r côd isod.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 54ba68ba9a..223e689129 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -42,7 +42,7 @@ "account.joined_short": "Beigetreten", "account.languages": "Genutzte Sprachen überarbeiten", "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt", - "account.locked_info": "Der Privatsphärenstatus dieses Kontos wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.", + "account.locked_info": "Die Privatsphäre dieses Kontos wurde auf „geschützt“ gesetzt. Die Person bestimmt manuell, wer ihrem Profil folgen darf.", "account.media": "Medien", "account.mention": "@{name} im Beitrag erwähnen", "account.moved_to": "{name} hat angegeben, dass dieser der neue Account ist:", @@ -87,15 +87,15 @@ "bundle_column_error.network.title": "Netzwerkfehler", "bundle_column_error.retry": "Erneut versuchen", "bundle_column_error.return": "Zurück zur Startseite", - "bundle_column_error.routing.body": "Die angeforderte Seite konnte nicht gefunden werden. Sind Sie sicher, dass die URL in der Adressleiste korrekt ist?", + "bundle_column_error.routing.body": "Die angeforderte Seite konnte nicht gefunden werden. Bist du dir sicher, dass die URL in der Adressleiste korrekt ist?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Schließen", "bundle_modal_error.message": "Etwas ist beim Laden schiefgelaufen.", "bundle_modal_error.retry": "Erneut versuchen", - "closed_registrations.other_server_instructions": "Da Mastodon dezentralisiert ist, können Sie ein Konto auf einem anderen Server erstellen und trotzdem mit diesem Server interagieren.", - "closed_registrations_modal.description": "Das Anlegen eines Kontos auf {domain} ist derzeit nicht möglich, aber bedenken Sie bitte, dass Sie kein spezielles Konto auf {domain} benötigen, um Mastodon nutzen zu können.", + "closed_registrations.other_server_instructions": "Da Mastodon dezentralisiert ist, kannst du ein Konto auf einem anderen Server erstellen und trotzdem mit diesem Server interagieren.", + "closed_registrations_modal.description": "Das Anlegen eines Kontos auf {domain} ist derzeit nicht möglich, aber bedenke, dass du kein extra Konto auf {domain} benötigst, um Mastodon nutzen zu können.", "closed_registrations_modal.find_another_server": "Einen anderen Server auswählen", - "closed_registrations_modal.preamble": "Mastodon ist dezentralisiert, d.h. unabhängig davon, wo Sie Ihr Konto erstellen, können Sie jedem auf diesem Server folgen und mit ihm interagieren. Sie können ihn sogar selbst hosten!", + "closed_registrations_modal.preamble": "Mastodon ist dezentralisiert, das heißt unabhängig davon, wo du dein Konto erstellst, kannst du jedes Konto auf diesem Server folgen und mit dem interagieren. Du kannst auch deinen eigenen Server hosten!", "closed_registrations_modal.title": "Bei Mastodon registrieren", "column.about": "Über", "column.blocks": "Blockierte Profile", @@ -292,7 +292,7 @@ "interaction_modal.description.reply": "Mit einem Account auf Mastodon kannst du auf diesen Beitrag antworten.", "interaction_modal.on_another_server": "Auf einem anderen Server", "interaction_modal.on_this_server": "Auf diesem Server", - "interaction_modal.other_server_instructions": "Kopieren Sie diese Adresse und fügen Sie diese in das Suchfeld Ihrer bevorzugten Mastodon-App oder in die Weboberfläche Ihres Mastodon-Servers ein.", + "interaction_modal.other_server_instructions": "Kopiere diese URL und füge sie in das Suchfeld deiner bevorzugten Mastodon-App oder im Webinterface deiner Mastodon-Instanz ein.", "interaction_modal.preamble": "Da Mastodon dezentralisiert ist, kannst du dein bestehendes Konto auf einem anderen Mastodon-Server oder einer kompatiblen Plattform nutzen, wenn du kein Konto auf dieser Plattform hast.", "interaction_modal.title.favourite": "Lieblingsbeitrag von {name}", "interaction_modal.title.follow": "Folge {name}", @@ -341,7 +341,7 @@ "lightbox.next": "Weiter", "lightbox.previous": "Zurück", "limited_account_hint.action": "Profil trotzdem anzeigen", - "limited_account_hint.title": "Dieses Profil wurde von den Moderator*innnen der Mastodon-Instanz {domain} ausgeblendet.", + "limited_account_hint.title": "Dieses Profil wurde von den Moderator*innen der Mastodon-Instanz {domain} ausgeblendet.", "lists.account.add": "Zur Liste hinzufügen", "lists.account.remove": "Von der Liste entfernen", "lists.delete": "Liste löschen", @@ -491,7 +491,7 @@ "report.placeholder": "Zusätzliche Kommentare", "report.reasons.dislike": "Das gefällt mir nicht", "report.reasons.dislike_description": "Es ist etwas, das du nicht sehen willst", - "report.reasons.other": "Da ist was anderes", + "report.reasons.other": "Es geht um etwas anderes", "report.reasons.other_description": "Das Problem passt nicht in die Kategorien", "report.reasons.spam": "Das ist Spam", "report.reasons.spam_description": "Bösartige Links, gefälschtes Engagement oder wiederholte Antworten", @@ -545,7 +545,7 @@ "status.bookmark": "Lesezeichen setzen", "status.cancel_reblog_private": "Teilen des Beitrags rückgängig machen", "status.cannot_reblog": "Dieser Beitrag kann nicht geteilt werden", - "status.copy": "Kopiere Link des Beitrags", + "status.copy": "Link zum Beitrag kopieren", "status.delete": "Beitrag löschen", "status.detailed_status": "Detaillierte Ansicht der Unterhaltung", "status.direct": "Direktnachricht an @{name}", @@ -588,7 +588,7 @@ "status.show_more_all": "Alle Inhaltswarnungen aufklappen", "status.show_original": "Original anzeigen", "status.translate": "Übersetzen", - "status.translated_from_with": "Von {lang} mit {provider} übersetzt", + "status.translated_from_with": "Aus {lang} mittels {provider} übersetzt", "status.uncached_media_warning": "Nicht verfügbar", "status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben", "status.unpin": "Vom Profil lösen", @@ -638,7 +638,7 @@ "upload_modal.preparing_ocr": "Vorbereitung von OCR…", "upload_modal.preview_label": "Vorschau ({ratio})", "upload_progress.label": "Wird hochgeladen …", - "upload_progress.processing": "Wird verarbeitet …", + "upload_progress.processing": "Wird verarbeitet…", "video.close": "Video schließen", "video.download": "Datei herunterladen", "video.exit_fullscreen": "Vollbild verlassen", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 01a2821bc4..12823083d6 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -2,8 +2,8 @@ "about.blocks": "Moderigitaj serviloj", "about.contact": "Kontakto:", "about.disclaimer": "Mastodon estas libera, malfermitkoda programaro kaj varmarko de la firmao Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Kialo ne estas disponebla", - "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", + "about.domain_blocks.no_reason_available": "Kialo ne disponebla", + "about.domain_blocks.preamble": "Mastodono ebligas vidi enhavojn el uzantoj kaj komuniki kun ilin el aliaj serviloj el la Fediverso. Estas la limigoj deciditaj por tiu ĉi servilo.", "about.domain_blocks.silenced.explanation": "Vi ne ĝenerale vidos profilojn kaj enhavojn de ĉi tiu servilo, krom se vi eksplice trovas aŭ estas permesita de via sekvato.", "about.domain_blocks.silenced.title": "Limigita", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", @@ -40,7 +40,7 @@ "account.go_to_profile": "Iri al profilo", "account.hide_reblogs": "Kaŝi la plusendojn de @{name}", "account.joined_short": "Aliĝis", - "account.languages": "Change subscribed languages", + "account.languages": "Ŝanĝi elekton de abonitaj lingvoj", "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}", "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.", "account.media": "Aŭdovidaĵoj", @@ -49,7 +49,7 @@ "account.mute": "Silentigi @{name}", "account.mute_notifications": "Silentigi la sciigojn de @{name}", "account.muted": "Silentigita", - "account.open_original_page": "Open original page", + "account.open_original_page": "Malfermi originan paĝon", "account.posts": "Mesaĝoj", "account.posts_with_replies": "Mesaĝoj kaj respondoj", "account.report": "Raporti @{name}", @@ -96,7 +96,7 @@ "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", "closed_registrations_modal.find_another_server": "Trovi alian servilon", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Registri en Mastodon", + "closed_registrations_modal.title": "Krei konton en Mastodon", "column.about": "Pri", "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", @@ -389,7 +389,7 @@ "navigation_bar.security": "Sekureco", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} raportis {target}", - "notification.admin.sign_up": "{name} registris", + "notification.admin.sign_up": "{name} kreis konton", "notification.favourite": "{name} aldonis vian mesaĝon al siaj preferaĵoj", "notification.follow": "{name} eksekvis vin", "notification.follow_request": "{name} petis sekvi vin", @@ -464,8 +464,8 @@ "relative_time.full.days": "antaŭ {number, plural, one {# tago} other {# tagoj}}", "relative_time.full.hours": "antaŭ {number, plural, one {# horo} other {# horoj}}", "relative_time.full.just_now": "ĵus nun", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.minutes": "antaŭ {number, plural, one {# minuto} other {# minutoj}}", + "relative_time.full.seconds": "antaŭ {number, plural, one {# sekundo} other {# sekundoj}}", "relative_time.hours": "{number}h", "relative_time.just_now": "nun", "relative_time.minutes": "{number}m", @@ -476,7 +476,7 @@ "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Aliaj", "report.categories.spam": "Trudmesaĝo", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Enhavo malobservas unu aŭ plurajn servilajn regulojn", "report.category.subtitle": "Elektu la plej bonan kongruon", "report.category.title": "Diru al ni kio okazas pri ĉi tiu {type}", "report.category.title_account": "profilo", @@ -528,15 +528,15 @@ "search_results.nothing_found": "Povis trovi nenion por ĉi tiuj serĉaj terminoj", "search_results.statuses": "Mesaĝoj", "search_results.statuses_fts_disabled": "Serĉi mesaĝojn laŭ enhavo ne estas ebligita en ĉi tiu Mastodon-servilo.", - "search_results.title": "Search for {q}", + "search_results.title": "Serĉ-rezultoj por {q}", "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezultoj}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.administered_by": "Administrata de:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", + "server_banner.server_stats": "Statistikoj de la servilo:", + "sign_in_banner.create_account": "Krei konton", "sign_in_banner.sign_in": "Sign in", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Malfermi la kontrolan interfacon por @{name}", @@ -587,13 +587,13 @@ "status.show_more": "Montri pli", "status.show_more_all": "Montri pli ĉiun", "status.show_original": "Show original", - "status.translate": "Translate", - "status.translated_from_with": "Translated from {lang} using {provider}", + "status.translate": "Traduki", + "status.translated_from_with": "Tradukita el {lang} per {provider}", "status.uncached_media_warning": "Nedisponebla", "status.unmute_conversation": "Malsilentigi la konversacion", "status.unpin": "Depingli de profilo", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "Konservi ŝanĝojn", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Forigi la proponon", "suggestions.header": "Vi povus interesiĝi pri…", @@ -610,7 +610,7 @@ "timeline_hint.resources.followers": "Sekvantoj", "timeline_hint.resources.follows": "Sekvatoj", "timeline_hint.resources.statuses": "Pli malnovaj mesaĝoj", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personoj}} dum la pasinta{days, plural, one { tago} other {j {days} tagoj}}", "trends.trending_now": "Nunaj furoraĵoj", "ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.", "units.short.billion": "{count}Md", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index deb539d0bf..74a6acd260 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -2,7 +2,7 @@ "about.blocks": "Servidores moderados", "about.contact": "Contacto:", "about.disclaimer": "Mastodon es software libre y de código abierto y una marca comercial de Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Reason not available", + "about.domain_blocks.no_reason_available": "Motivo no disponible", "about.domain_blocks.preamble": "Mastodon normalmente te permite ver el contenido e interactuar con los usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se han hecho en este servidor en particular.", "about.domain_blocks.silenced.explanation": "Normalmente no verás perfiles y contenido de este servidor, a menos que lo busqués explícitamente o sigás alguna cuenta.", "about.domain_blocks.silenced.title": "Limitados", @@ -49,7 +49,7 @@ "account.mute": "Silenciar a @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}", "account.muted": "Silenciado", - "account.open_original_page": "Open original page", + "account.open_original_page": "Abrir página original", "account.posts": "Mensajes", "account.posts_with_replies": "Mnsjs y resp. públicas", "account.report": "Denunciar a @{name}", @@ -292,7 +292,7 @@ "interaction_modal.description.reply": "Con una cuenta en Mastodon, podés responder a este mensaje.", "interaction_modal.on_another_server": "En un servidor diferente", "interaction_modal.on_this_server": "En este servidor", - "interaction_modal.other_server_instructions": "Copia y pega esta URL en la barra de búsqueda de tu aplicación Mastodon favorita o la interfaz web de tu servidor Mastodon.", + "interaction_modal.other_server_instructions": "Copiá y pegá esta dirección web en la barra de búsqueda de tu aplicación favorita de Mastodon, o en la interface web de tu servidor de Mastodon.", "interaction_modal.preamble": "Ya que Mastodon es descentralizado, podés usar tu cuenta existente alojada por otro servidor Mastodon (u otra plataforma compatible, si no tenés una cuenta en ésta).", "interaction_modal.title.favourite": "Marcar como favorito el mensaje de {name}", "interaction_modal.title.follow": "Seguir a {name}", @@ -614,8 +614,8 @@ "trends.trending_now": "Tendencia ahora", "ui.beforeunload": "Tu borrador se perderá si abandonás Mastodon.", "units.short.billion": "{count}MM", - "units.short.million": "{count}M", - "units.short.thousand": "{count}mil", + "units.short.million": "{count} M", + "units.short.thousand": "{count} mil", "upload_area.title": "Para subir, arrastrá y soltá", "upload_button.label": "Agregá imágenes, o un archivo de audio o video", "upload_error.limit": "Se excedió el límite de subida de archivos.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index f93577b466..e9ae96ca5c 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -501,7 +501,7 @@ "report.rules.title": "¿Qué normas se están violando?", "report.statuses.subtitle": "Selecciona todos los que correspondan", "report.statuses.title": "¿Hay alguna publicación que respalde este informe?", - "report.submit": "Publicar", + "report.submit": "Enviar", "report.target": "Reportando", "report.thanks.take_action": "Aquí están tus opciones para controlar lo que ves en Mastodon:", "report.thanks.take_action_actionable": "Mientras revisamos esto, puedes tomar medidas contra @{name}:", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index a982d5bfee..22c76f4db8 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -2,7 +2,7 @@ "about.blocks": "Moderoidut palvelimet", "about.contact": "Yhteystiedot:", "about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.", - "about.domain_blocks.no_reason_available": "Reason not available", + "about.domain_blocks.no_reason_available": "Syy ei saatavilla", "about.domain_blocks.preamble": "Mastodonin avulla voit yleensä tarkastella sisältöä ja olla vuorovaikutuksessa käyttäjien kanssa millä tahansa muulla palvelimella fediversessä. Nämä ovat poikkeuksia, jotka on tehty tälle palvelimelle.", "about.domain_blocks.silenced.explanation": "Et yleensä näe profiileja ja sisältöä tältä palvelimelta, ellet nimenomaisesti etsi tai valitse sitä seuraamalla.", "about.domain_blocks.silenced.title": "Rajoitettu", @@ -49,7 +49,7 @@ "account.mute": "Mykistä @{name}", "account.mute_notifications": "Mykistä ilmoitukset käyttäjältä @{name}", "account.muted": "Mykistetty", - "account.open_original_page": "Open original page", + "account.open_original_page": "Avaa alkuperäinen sivu", "account.posts": "Viestit", "account.posts_with_replies": "Viestit ja vastaukset", "account.report": "Raportoi @{name}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 3410a8b7d7..62a71b1229 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -2,7 +2,7 @@ "about.blocks": "Servidores moderados", "about.contact": "Contacto:", "about.disclaimer": "Mastodon é software libre, de código aberto, e unha marca comercial de Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Reason not available", + "about.domain_blocks.no_reason_available": "Non está indicada a razón", "about.domain_blocks.preamble": "Mastodon de xeito xeral permíteche ver contidos doutros servidores do fediverso e interactuar coas súas usuarias. Estas son as excepcións que se estabeleceron neste servidor en particular.", "about.domain_blocks.silenced.explanation": "Por defecto non verás perfís e contido desde este servidor, a menos que mires de xeito explícito ou optes por seguir ese contido ou usuaria.", "about.domain_blocks.silenced.title": "Limitado", @@ -49,7 +49,7 @@ "account.mute": "Acalar @{name}", "account.mute_notifications": "Acalar as notificacións de @{name}", "account.muted": "Acalada", - "account.open_original_page": "Open original page", + "account.open_original_page": "Abrir páxina orixinal", "account.posts": "Publicacións", "account.posts_with_replies": "Publicacións e respostas", "account.report": "Informar sobre @{name}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index b5dc4e0f1b..fbf8ab628e 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -2,7 +2,7 @@ "about.blocks": "制限中のサーバー", "about.contact": "連絡先", "about.disclaimer": "Mastodonは自由なオープンソースソフトウェアでMastodon gGmbHの商標です。", - "about.domain_blocks.no_reason_available": "Reason not available", + "about.domain_blocks.no_reason_available": "制限理由", "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。", "about.domain_blocks.silenced.explanation": "このサーバーのプロフィールやコンテンツは、明示的に検索したり、フォローでオプトインしない限り、通常は表示されません。", "about.domain_blocks.silenced.title": "制限", @@ -49,7 +49,7 @@ "account.mute": "@{name}さんをミュート", "account.mute_notifications": "@{name}さんからの通知を受け取らない", "account.muted": "ミュート済み", - "account.open_original_page": "Open original page", + "account.open_original_page": "元のページを開く", "account.posts": "投稿", "account.posts_with_replies": "投稿と返信", "account.report": "@{name}さんを通報", @@ -292,7 +292,7 @@ "interaction_modal.description.reply": "Mastodonのアカウントでこの投稿に反応できます。", "interaction_modal.on_another_server": "別のサーバー", "interaction_modal.on_this_server": "このサーバー", - "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", + "interaction_modal.other_server_instructions": "このURLをお気に入りのMastodonアプリやMastodonサーバーのWebインターフェースの検索フィールドにコピーして貼り付けます。", "interaction_modal.preamble": "Mastodonは分散化されているためアカウントを持っていなくても別のMastodonサーバーまたは互換性のあるプラットフォームでホストされているアカウントを使用できます。", "interaction_modal.title.favourite": "{name}さんの投稿をお気に入り", "interaction_modal.title.follow": "{name}さんをフォロー", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 89c3aee4e7..711a003fed 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -461,11 +461,11 @@ "regeneration_indicator.label": "Ielādē…", "regeneration_indicator.sublabel": "Tiek gatavota tava plūsma!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# diena} other {# dienas}} atpakaļ", - "relative_time.full.hours": "{number, plural, one {# stunda} other {# stundas}} atpakaļ", + "relative_time.full.days": "Pirms {number, plural, one {# dienas} other {# dienām}}", + "relative_time.full.hours": "Pirms {number, plural, one {# stundas} other {# stundām}}", "relative_time.full.just_now": "tikko", - "relative_time.full.minutes": "{number, plural, one {# minūte} other {# minūtes}} atpakaļ", - "relative_time.full.seconds": "{number, plural, one {# sekunde} other {# sekundes}} atpakaļ", + "relative_time.full.minutes": "Pirms {number, plural, one {# minūtes} other {# minūtēm}}", + "relative_time.full.seconds": "Pirms {number, plural, one {# sekundes} other {# sekundēm}}", "relative_time.hours": "{number}st", "relative_time.just_now": "tagad", "relative_time.minutes": "{number}m", @@ -553,7 +553,7 @@ "status.edited": "Rediģēts {date}", "status.edited_x_times": "Rediģēts {count, plural, one {{count} reize} other {{count} reizes}}", "status.embed": "Iestrādāt", - "status.favourite": "Iecienītā", + "status.favourite": "Patīk", "status.filter": "Filtrē šo ziņu", "status.filtered": "Filtrēts", "status.hide": "Slēpt", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 0517ce02a0..51afa4b43a 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -1,8 +1,8 @@ { - "about.blocks": "Moderated servers", - "about.contact": "Contact:", + "about.blocks": "മോഡറേറ്റഡ് സെർവറുകൾ", + "about.contact": "ബന്ധപ്പെടുക:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Reason not available", + "about.domain_blocks.no_reason_available": "കാരണം ലഭ്യമല്", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", "about.domain_blocks.silenced.title": "Limited", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index e82321eae3..bdc13673d9 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -2,7 +2,7 @@ "about.blocks": "Gemodereerde servers", "about.contact": "Contact:", "about.disclaimer": "Mastodon is vrije, opensourcesoftware en een handelsmerk van Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Reason not available", + "about.domain_blocks.no_reason_available": "Reden niet beschikbaar", "about.domain_blocks.preamble": "In het algemeen kun je met Mastodon berichten ontvangen van, en interactie hebben met gebruikers van elke server in de fediverse. Dit zijn de uitzonderingen die op deze specifieke server gelden.", "about.domain_blocks.silenced.explanation": "In het algemeen zie je geen berichten en accounts van deze server, tenzij je berichten expliciet opzoekt of ervoor kiest om een account van deze server te volgen.", "about.domain_blocks.silenced.title": "Beperkt", @@ -49,7 +49,7 @@ "account.mute": "@{name} negeren", "account.mute_notifications": "Meldingen van @{name} negeren", "account.muted": "Genegeerd", - "account.open_original_page": "Open original page", + "account.open_original_page": "Originele pagina openen", "account.posts": "Berichten", "account.posts_with_replies": "Berichten en reacties", "account.report": "@{name} rapporteren", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 83e0ec9c36..6113e32d06 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -151,7 +151,7 @@ "confirmations.block.confirm": "Blokker", "confirmations.block.message": "Er du sikker på at du vil blokkera {name}?", "confirmations.cancel_follow_request.confirm": "Trekk attende førespurnad", - "confirmations.cancel_follow_request.message": "Er du sikker på at du vil trekke attende førespurnaden din for å fylgje {name}?", + "confirmations.cancel_follow_request.message": "Er du sikker på at du vil trekkje attende førespurnaden din om å fylgje {name}?", "confirmations.delete.confirm": "Slett", "confirmations.delete.message": "Er du sikker på at du vil sletta denne statusen?", "confirmations.delete_list.confirm": "Slett", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index ff8be31ee4..6ef9fd0408 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -110,7 +110,7 @@ "column.lists": "Lister", "column.mutes": "Dempede brukere", "column.notifications": "Varsler", - "column.pins": "Pinned toot", + "column.pins": "Festede innlegg", "column.public": "Felles tidslinje", "column_back_button.label": "Tilbake", "column_header.hide_settings": "Skjul innstillinger", @@ -265,7 +265,7 @@ "footer.directory": "Profilkatalog", "footer.get_app": "Last ned appen", "footer.invite": "Invitér folk", - "footer.keyboard_shortcuts": "Keyboard shortcuts", + "footer.keyboard_shortcuts": "Hurtigtaster", "footer.privacy_policy": "Personvernregler", "footer.source_code": "Vis kildekode", "generic.saved": "Lagret", @@ -494,26 +494,26 @@ "report.reasons.other": "Det er noe annet", "report.reasons.other_description": "Problemet passer ikke inn i de andre kategoriene", "report.reasons.spam": "Det er spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", + "report.reasons.spam_description": "Ondsinnede lenker, falsk engasjement eller repeterende svar", "report.reasons.violation": "Det bryter serverregler", "report.reasons.violation_description": "Du er klar over at det bryter spesifikke regler", "report.rules.subtitle": "Velg alle som passer", "report.rules.title": "Hvilke regler brytes?", "report.statuses.subtitle": "Velg alle som passer", - "report.statuses.title": "Are there any posts that back up this report?", + "report.statuses.title": "Er det noen innlegg som støtter opp under denne rapporten?", "report.submit": "Send inn", "report.target": "Rapporterer", "report.thanks.take_action": "Her er alternativene dine for å kontrollere hva du ser på Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", + "report.thanks.take_action_actionable": "Mens vi går gjennom dette, kan du iverksettet tiltak mot @{name}:", "report.thanks.title": "Ønsker du ikke å se dette?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", + "report.thanks.title_actionable": "Takk for at du rapporterer, vi skal se på dette.", "report.unfollow": "Slutt å følge @{name}", "report.unfollow_explanation": "Du følger denne kontoen. For ikke å se innleggene deres i din hjem-feed lenger, slutt å følge dem.", "report_notification.attached_statuses": "{count, plural,one {{count} innlegg} other {{count} innlegg}} vedlagt", "report_notification.categories.other": "Annet", "report_notification.categories.spam": "Søppelpost", "report_notification.categories.violation": "Regelbrudd", - "report_notification.open": "Open report", + "report_notification.open": "Åpne rapport", "search.placeholder": "Søk", "search.search_or_paste": "Søk eller lim inn URL", "search_popout.search_format": "Avansert søkeformat", @@ -592,9 +592,9 @@ "status.uncached_media_warning": "Ikke tilgjengelig", "status.unmute_conversation": "Ikke demp samtale", "status.unpin": "Angre festing på profilen", - "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", - "subscribed_languages.target": "Change subscribed languages for {target}", + "subscribed_languages.lead": "Bare innlegg på valgte språk vil dukke opp i dine hjem- og liste-tidslinjer etter endringen. Velg ingen for å motta innlegg på alle språk.", + "subscribed_languages.save": "Lagre endringer", + "subscribed_languages.target": "Endre abbonerte språk for {target}", "suggestions.dismiss": "Utelukk forslaget", "suggestions.header": "Du er kanskje interessert i …", "tabs_bar.federated_timeline": "Felles", @@ -610,7 +610,7 @@ "timeline_hint.resources.followers": "Følgere", "timeline_hint.resources.follows": "Følger", "timeline_hint.resources.statuses": "Eldre innlegg", - "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}", + "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} folk}} {days, plural, one {den siste dagen} other {de siste {days} dagene}}", "trends.trending_now": "Trender nå", "ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.", "units.short.billion": "{count}m.ard", @@ -629,7 +629,7 @@ "upload_form.video_description": "Beskriv det for folk med hørselstap eller synshemminger", "upload_modal.analyzing_picture": "Analyserer bildet …", "upload_modal.apply": "Bruk", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Utfører…", "upload_modal.choose_image": "Velg et bilde", "upload_modal.description_placeholder": "Når du en gang kommer, neste sommer, skal vi atter drikke vin", "upload_modal.detect_text": "Oppdag tekst i bildet", @@ -638,7 +638,7 @@ "upload_modal.preparing_ocr": "Forbereder OCR…", "upload_modal.preview_label": "Forhåndsvisning ({ratio})", "upload_progress.label": "Laster opp...", - "upload_progress.processing": "Processing…", + "upload_progress.processing": "Behandler…", "video.close": "Lukk video", "video.download": "Last ned fil", "video.exit_fullscreen": "Lukk fullskjerm", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 9cef980e65..a3757214b1 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -9,7 +9,7 @@ "about.domain_blocks.suspended.explanation": "Żadne dane z tego serwera nie będą przetwarzane, przechowywane lub wymieniane, co uniemożliwia jakąkolwiek interakcję lub komunikację z użytkownikami z tego serwera.", "about.domain_blocks.suspended.title": "Zawieszono", "about.not_available": "Ta informacja nie została udostępniona na tym serwerze.", - "about.powered_by": "Zdecentralizowane media społecznościowe w technologii {mastodon}", + "about.powered_by": "Zdecentralizowane media społecznościowe napędzane przez {mastodon}", "about.rules": "Regulamin serwera", "account.account_note_header": "Notatka", "account.add_or_remove_from_list": "Dodaj lub usuń z list", @@ -332,7 +332,7 @@ "keyboard_shortcuts.start": "aby otworzyć kolumnę „Rozpocznij”", "keyboard_shortcuts.toggle_hidden": "aby wyświetlić lub ukryć wpis spod CW", "keyboard_shortcuts.toggle_sensitivity": "by pokazać/ukryć multimedia", - "keyboard_shortcuts.toot": "aby utworzyć nowy wpis", + "keyboard_shortcuts.toot": "Stwórz nowy post", "keyboard_shortcuts.unfocus": "aby opuścić pole wyszukiwania/pisania", "keyboard_shortcuts.up": "aby przejść na górę listy", "lightbox.close": "Zamknij", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index bbc1aa0c3c..d02fb0bec9 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -1,16 +1,16 @@ { "about.blocks": "Moderated servers", - "about.contact": "Contact:", + "about.contact": "Kontakt:", "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Reason not available", "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.", "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", - "about.domain_blocks.silenced.title": "Limited", + "about.domain_blocks.silenced.title": "Obmedzená", "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.", - "about.domain_blocks.suspended.title": "Suspended", + "about.domain_blocks.suspended.title": "Vylúčený/á", "about.not_available": "This information has not been made available on this server.", "about.powered_by": "Decentralized social media powered by {mastodon}", - "about.rules": "Server rules", + "about.rules": "Serverové pravidlá", "account.account_note_header": "Poznámka", "account.add_or_remove_from_list": "Pridaj do, alebo odober zo zoznamov", "account.badges.bot": "Bot", @@ -26,8 +26,8 @@ "account.edit_profile": "Uprav profil", "account.enable_notifications": "Oboznamuj ma, keď má @{name} príspevky", "account.endorse": "Zobrazuj na profile", - "account.featured_tags.last_status_at": "Last post on {date}", - "account.featured_tags.last_status_never": "No posts", + "account.featured_tags.last_status_at": "Posledný príspevok dňa {date}", + "account.featured_tags.last_status_never": "Žiadne príspevky", "account.featured_tags.title": "{name}'s featured hashtags", "account.follow": "Nasleduj", "account.followers": "Sledujúci", @@ -37,9 +37,9 @@ "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.", "account.follows_you": "Nasleduje ťa", - "account.go_to_profile": "Go to profile", + "account.go_to_profile": "Prejdi na profil", "account.hide_reblogs": "Skry vyzdvihnutia od @{name}", - "account.joined_short": "Joined", + "account.joined_short": "Pridal/a sa", "account.languages": "Change subscribed languages", "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}", "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.", @@ -51,7 +51,7 @@ "account.muted": "Nevšímaný/á", "account.open_original_page": "Open original page", "account.posts": "Príspevky/ov", - "account.posts_with_replies": "Príspevky, aj s odpoveďami", + "account.posts_with_replies": "Príspevky a odpovede", "account.report": "Nahlás @{name}", "account.requested": "Čaká na schválenie. Klikni pre zrušenie žiadosti", "account.share": "Zdieľaj @{name} profil", @@ -84,20 +84,20 @@ "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.", "bundle_column_error.error.title": "Oh, no!", "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.", - "bundle_column_error.network.title": "Network error", + "bundle_column_error.network.title": "Chyba siete", "bundle_column_error.retry": "Skús to znova", - "bundle_column_error.return": "Go back home", + "bundle_column_error.return": "Prejdi späť na domovskú stránku", "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Zatvor", "bundle_modal_error.message": "Nastala chyba pri načítaní tohto komponentu.", "bundle_modal_error.retry": "Skúsiť znova", "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", - "closed_registrations_modal.find_another_server": "Find another server", + "closed_registrations_modal.description": "Vytvorenie účtu na {domain} nie je v súčasnosti možné, ale majte prosím na pamäti, že nepotrebujete účet práve na {domain}, aby bolo možné používať Mastodon.", + "closed_registrations_modal.find_another_server": "Nájdi iný server", "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", - "closed_registrations_modal.title": "Signing up on Mastodon", - "column.about": "About", + "closed_registrations_modal.title": "Registrácia na Mastodon", + "column.about": "O tomto serveri", "column.blocks": "Blokovaní užívatelia", "column.bookmarks": "Záložky", "column.community": "Miestna časová os", @@ -175,13 +175,13 @@ "conversation.mark_as_read": "Označ za prečítané", "conversation.open": "Ukáž konverzáciu", "conversation.with": "S {names}", - "copypaste.copied": "Copied", - "copypaste.copy": "Copy", + "copypaste.copied": "Skopírované", + "copypaste.copy": "Kopíruj", "directory.federated": "Zo známého fedivesmíru", "directory.local": "Iba z {domain}", "directory.new_arrivals": "Nové príchody", "directory.recently_active": "Nedávno aktívne", - "disabled_account_banner.account_settings": "Account settings", + "disabled_account_banner.account_settings": "Nastavenia účtu", "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.", "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.", "dismissable_banner.dismiss": "Dismiss", @@ -264,10 +264,10 @@ "footer.about": "About", "footer.directory": "Profiles directory", "footer.get_app": "Get the app", - "footer.invite": "Invite people", - "footer.keyboard_shortcuts": "Keyboard shortcuts", - "footer.privacy_policy": "Privacy policy", - "footer.source_code": "View source code", + "footer.invite": "Pozvi ľudí", + "footer.keyboard_shortcuts": "Klávesové skratky", + "footer.privacy_policy": "Zásady súkromia", + "footer.source_code": "Zobraziť zdrojový kód", "generic.saved": "Uložené", "getting_started.heading": "Začni tu", "hashtag.column_header.tag_mode.all": "a {additional}", @@ -290,14 +290,14 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", - "interaction_modal.on_another_server": "On a different server", - "interaction_modal.on_this_server": "On this server", + "interaction_modal.on_another_server": "Na inom serveri", + "interaction_modal.on_this_server": "Na tomto serveri", "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.", "interaction_modal.title.favourite": "Favourite {name}'s post", - "interaction_modal.title.follow": "Follow {name}", - "interaction_modal.title.reblog": "Boost {name}'s post", - "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.follow": "Nasleduj {name}", + "interaction_modal.title.reblog": "Vyzdvihni {name}ov/in príspevok", + "interaction_modal.title.reply": "Odpovedz na {name}ov/in príspevok", "intervals.full.days": "{number, plural, one {# deň} few {# dní} many {# dní} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodín}}", "intervals.full.minutes": "{number, plural, one {# minúta} few {# minút} many {# minút} other {# minút}}", @@ -364,7 +364,7 @@ "mute_modal.duration": "Trvanie", "mute_modal.hide_notifications": "Skry oznámenia od tohto používateľa?", "mute_modal.indefinite": "Bez obmedzenia", - "navigation_bar.about": "About", + "navigation_bar.about": "O tomto serveri", "navigation_bar.blocks": "Blokovaní užívatelia", "navigation_bar.bookmarks": "Záložky", "navigation_bar.community_timeline": "Miestna časová os", @@ -385,7 +385,7 @@ "navigation_bar.pins": "Pripnuté príspevky", "navigation_bar.preferences": "Nastavenia", "navigation_bar.public_timeline": "Federovaná časová os", - "navigation_bar.search": "Search", + "navigation_bar.search": "Hľadaj", "navigation_bar.security": "Zabezbečenie", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "{name} nahlásil/a {target}", @@ -455,8 +455,8 @@ "privacy.public.short": "Verejné", "privacy.unlisted.long": "Visible for all, but opted-out of discovery features", "privacy.unlisted.short": "Verejne, ale nezobraziť v osi", - "privacy_policy.last_updated": "Last updated {date}", - "privacy_policy.title": "Privacy Policy", + "privacy_policy.last_updated": "Posledná úprava {date}", + "privacy_policy.title": "Zásady súkromia", "refresh": "Obnoviť", "regeneration_indicator.label": "Načítava sa…", "regeneration_indicator.sublabel": "Tvoja domovská nástenka sa pripravuje!", @@ -532,12 +532,12 @@ "search_results.total": "{count, number} {count, plural, one {výsledok} many {výsledkov} other {výsledky}}", "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)", "server_banner.active_users": "active users", - "server_banner.administered_by": "Administered by:", + "server_banner.administered_by": "Správcom je:", "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.", - "server_banner.learn_more": "Learn more", - "server_banner.server_stats": "Server stats:", - "sign_in_banner.create_account": "Create account", - "sign_in_banner.sign_in": "Sign in", + "server_banner.learn_more": "Zisti viac", + "server_banner.server_stats": "Serverové štatistiky:", + "sign_in_banner.create_account": "Vytvor účet", + "sign_in_banner.sign_in": "Prihlás sa", "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.", "status.admin_account": "Otvor moderovacie rozhranie užívateľa @{name}", "status.admin_status": "Otvor tento príspevok v moderovacom rozhraní", @@ -575,7 +575,7 @@ "status.reblogs.empty": "Nikto ešte nevyzdvihol tento príspevok. Keď tak niekto urobí, bude to zobrazené práve tu.", "status.redraft": "Vymaž a prepíš", "status.remove_bookmark": "Odstráň záložku", - "status.replied_to": "Replied to {name}", + "status.replied_to": "Odpoveď na {name}", "status.reply": "Odpovedať", "status.replyAll": "Odpovedz na diskusiu", "status.report": "Nahlás @{name}", @@ -586,14 +586,14 @@ "status.show_less_all": "Všetkým ukáž menej", "status.show_more": "Ukáž viac", "status.show_more_all": "Všetkým ukáž viac", - "status.show_original": "Show original", - "status.translate": "Translate", + "status.show_original": "Ukáž pôvodný", + "status.translate": "Preložiť", "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Nedostupný/é", "status.unmute_conversation": "Prestaň si nevšímať konverzáciu", "status.unpin": "Odopni z profilu", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", - "subscribed_languages.save": "Save changes", + "subscribed_languages.save": "Ulož zmeny", "subscribed_languages.target": "Change subscribed languages for {target}", "suggestions.dismiss": "Zavrhni návrh", "suggestions.header": "Mohlo by ťa zaujímať…", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index cdcca16975..860c0e5a1b 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -2,7 +2,7 @@ "about.blocks": "Shërbyes të moderuar", "about.contact": "Kontakt:", "about.disclaimer": "Mastodon-i është software i lirë, me burim të hapët dhe shenjë tregtare e Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Reason not available", + "about.domain_blocks.no_reason_available": "S’ka arsye", "about.domain_blocks.preamble": "Mastodon-i ju lë përgjithësisht të shihni lëndë prej përdoruesish dhe të ndërveproni me ta nga cilido shërbyes tjetër qofshin në fedivers. Ka përjashtime që janë bërë në këtë shërbyes të dhënë.", "about.domain_blocks.silenced.explanation": "Përgjithësisht s’do të shihni profile dhe lëndë nga ky shërbyes, veç në i kërkofshi shprehimisht apo zgjidhni të bëhet kjo, duke i ndjekur.", "about.domain_blocks.silenced.title": "E kufizuar", @@ -49,7 +49,7 @@ "account.mute": "Heshtoni @{name}", "account.mute_notifications": "Heshtoji njoftimet prej @{name}", "account.muted": "Heshtuar", - "account.open_original_page": "Open original page", + "account.open_original_page": "Hap faqen origjinale", "account.posts": "Mesazhe", "account.posts_with_replies": "Mesazhe dhe përgjigje", "account.report": "Raportojeni @{name}", @@ -292,7 +292,7 @@ "interaction_modal.description.reply": "Me një llogari në Mastodon, mund t’i përgjigjeni këtij postimi.", "interaction_modal.on_another_server": "Në një tjetër shërbyes", "interaction_modal.on_this_server": "Në këtë shërbyes", - "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.", + "interaction_modal.other_server_instructions": "Kopjojeni dhe ngjiteni këtë URL te fusha e kërkimeve të aplikacionit tuaj të parapëlqyer Mastodon, ose të ndërfaqes web të shërbyesit tuaj Mastodon.", "interaction_modal.preamble": "Ngaqë Mastodon-i është i decentralizuar, mund të përdorni llogarinë tuaj ekzistuese të sterhuar nga një tjetër shërbyes Mastodon, ose platformë e përputhshme, nëse s’keni një llogari në këtë shërbyes.", "interaction_modal.title.favourite": "Parapëlqejeni postimin e {name}", "interaction_modal.title.follow": "Ndiq {name}", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 77279ba01a..d6d53d56c6 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -4,11 +4,11 @@ "about.disclaimer": "Mastodon เป็นซอฟต์แวร์เสรี โอเพนซอร์ส และเครื่องหมายการค้าของ Mastodon gGmbH", "about.domain_blocks.no_reason_available": "เหตุผลไม่พร้อมใช้งาน", "about.domain_blocks.preamble": "โดยทั่วไป Mastodon อนุญาตให้คุณดูเนื้อหาจากและโต้ตอบกับผู้ใช้จากเซิร์ฟเวอร์อื่นใดในจักรวาลสหพันธ์ นี่คือข้อยกเว้นที่ทำขึ้นในเซิร์ฟเวอร์นี้โดยเฉพาะ", - "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.", + "about.domain_blocks.silenced.explanation": "โดยทั่วไปคุณจะไม่เห็นโปรไฟล์และเนื้อหาจากเซิร์ฟเวอร์นี้ เว้นแต่คุณจะค้นหาเซิร์ฟเวอร์หรือเลือกรับเซิร์ฟเวอร์โดยการติดตามอย่างชัดเจน", "about.domain_blocks.silenced.title": "จำกัดอยู่", "about.domain_blocks.suspended.explanation": "จะไม่ประมวลผล จัดเก็บ หรือแลกเปลี่ยนข้อมูลจากเซิร์ฟเวอร์นี้ ทำให้การโต้ตอบหรือการสื่อสารใด ๆ กับผู้ใช้จากเซิร์ฟเวอร์นี้เป็นไปไม่ได้", "about.domain_blocks.suspended.title": "ระงับอยู่", - "about.not_available": "This information has not been made available on this server.", + "about.not_available": "ไม่ได้ทำให้ข้อมูลนี้พร้อมใช้งานในเซิร์ฟเวอร์นี้", "about.powered_by": "สื่อสังคมแบบกระจายศูนย์ที่ขับเคลื่อนโดย {mastodon}", "about.rules": "กฎของเซิร์ฟเวอร์", "account.account_note_header": "หมายเหตุ", @@ -93,9 +93,9 @@ "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้", "bundle_modal_error.retry": "ลองอีกครั้ง", "closed_registrations.other_server_instructions": "เนื่องจาก Mastodon เป็นแบบกระจายศูนย์ คุณสามารถสร้างบัญชีในเซิร์ฟเวอร์อื่นและยังคงโต้ตอบกับเซิร์ฟเวอร์นี้", - "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.", + "closed_registrations_modal.description": "ไม่สามารถสร้างบัญชีใน {domain} ได้ในปัจจุบัน แต่โปรดจำไว้ว่าคุณไม่จำเป็นต้องมีบัญชีใน {domain} โดยเฉพาะเพื่อใช้ Mastodon", "closed_registrations_modal.find_another_server": "ค้นหาเซิร์ฟเวอร์อื่น", - "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!", + "closed_registrations_modal.preamble": "Mastodon เป็นแบบกระจายศูนย์ ดังนั้นไม่ว่าคุณจะสร้างบัญชีของคุณที่ใด คุณจะสามารถติดตามและโต้ตอบกับใครก็ตามในเซิร์ฟเวอร์นี้ คุณยังสามารถโฮสต์บัญชีด้วยตนเองได้อีกด้วย!", "closed_registrations_modal.title": "การลงทะเบียนใน Mastodon", "column.about": "เกี่ยวกับ", "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", @@ -127,7 +127,7 @@ "compose.language.search": "ค้นหาภาษา...", "compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม", "compose_form.encryption_warning": "โพสต์ใน Mastodon ไม่ได้เข้ารหัสแบบต้นทางถึงปลายทาง อย่าแบ่งปันข้อมูลที่ละเอียดอ่อนใด ๆ ผ่าน Mastodon", - "compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาได้โดยแฮชแท็ก", + "compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากโพสต์ไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาได้โดยแฮชแท็ก", "compose_form.lock_disclaimer": "บัญชีของคุณไม่ได้ {locked} ใครก็ตามสามารถติดตามคุณเพื่อดูโพสต์สำหรับผู้ติดตามเท่านั้นของคุณ", "compose_form.lock_disclaimer.lock": "ล็อคอยู่", "compose_form.placeholder": "คุณกำลังคิดอะไรอยู่?", @@ -239,7 +239,7 @@ "explore.trending_links": "ข่าว", "explore.trending_statuses": "โพสต์", "explore.trending_tags": "แฮชแท็ก", - "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.", + "filter_modal.added.context_mismatch_explanation": "หมวดหมู่ตัวกรองนี้ไม่ได้นำไปใช้กับบริบทที่คุณได้เข้าถึงโพสต์นี้ หากคุณต้องการกรองโพสต์ในบริบทนี้ด้วย คุณจะต้องแก้ไขตัวกรอง", "filter_modal.added.context_mismatch_title": "บริบทไม่ตรงกัน!", "filter_modal.added.expired_explanation": "หมวดหมู่ตัวกรองนี้หมดอายุแล้ว คุณจะต้องเปลี่ยนวันหมดอายุสำหรับหมวดหมู่เพื่อนำไปใช้", "filter_modal.added.expired_title": "ตัวกรองหมดอายุแล้ว!", @@ -496,7 +496,7 @@ "report.reasons.spam": "โพสต์เป็นสแปม", "report.reasons.spam_description": "ลิงก์ที่เป็นอันตราย, การมีส่วนร่วมปลอม หรือการตอบกลับซ้ำ ๆ", "report.reasons.violation": "โพสต์ละเมิดกฎของเซิร์ฟเวอร์", - "report.reasons.violation_description": "คุณทราบว่าโพสต์แหกกฎเฉพาะ", + "report.reasons.violation_description": "คุณตระหนักว่าโพสต์แหกกฎเฉพาะ", "report.rules.subtitle": "เลือกทั้งหมดที่นำไปใช้", "report.rules.title": "กำลังละเมิดกฎใด?", "report.statuses.subtitle": "เลือกทั้งหมดที่นำไปใช้", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 1ed5e58726..9dd5aef767 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -2,7 +2,7 @@ "about.blocks": "Denetlenen sunucular", "about.contact": "İletişim:", "about.disclaimer": "Mastodon özgür, açık kaynak bir yazılımdır ve Mastodon gGmbH şirketinin ticari markasıdır.", - "about.domain_blocks.no_reason_available": "Grerekçe mevcut değil", + "about.domain_blocks.no_reason_available": "Gerekçe mevcut değil", "about.domain_blocks.preamble": "Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır.", "about.domain_blocks.silenced.explanation": "Açık bir şekilde aramadığınız veya takip ederek abone olmadığınız sürece, bu sunucudaki profilleri veya içerikleri genelde göremeyeceksiniz.", "about.domain_blocks.silenced.title": "Sınırlı", diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml index fb8c6dde51..17b13fc7b4 100644 --- a/config/locales/activerecord.ru.yml +++ b/config/locales/activerecord.ru.yml @@ -29,6 +29,10 @@ ru: attributes: website: invalid: не является допустимым URL + import: + attributes: + data: + malformed: неверный формат status: attributes: reblog: diff --git a/config/locales/af.yml b/config/locales/af.yml index 72b1b3c087..0903af744e 100644 --- a/config/locales/af.yml +++ b/config/locales/af.yml @@ -27,6 +27,11 @@ af: back_to_limited: Beperk moderation: limited: Beperk + roles: + categories: + devops: DevOps + privileges: + view_devops: DevOps settings: about: title: Aangaande @@ -109,6 +114,13 @@ af: descriptions: account: Publieke plasings vanaf @%{acct} tag: 'Publieke plasings met die #%{hashtag} etiket' + sessions: + browsers: + blackberry: BlackBerry + uc_browser: UC Browser + platforms: + blackberry: BlackBerry + chrome_os: ChromeOS settings: edit_profile: Redigeer profiel preferences: Voorkeure diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 2e5c82a330..278fc52e64 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -609,7 +609,6 @@ ar: manage_user_access: إدارة وصول المستخدم manage_users: إدارة المستخدمين view_dashboard: عرض لوحة التحكم - view_devops: DevOps view_devops_description: السماح للمستخدمين بالوصول إلى لوحة Sidekiq و pgHero title: الأدوار rules: @@ -1231,7 +1230,6 @@ ar: browser: المتصفح browsers: alipay: أليباي - blackberry: بلاك بيري chrome: كروم edge: مايكروسوفت إيدج electron: إلكترون @@ -1245,7 +1243,6 @@ ar: phantom_js: فانتوم جي آس qq: متصفح كيوكيو safari: سفاري - uc_browser: متصفح يوسي براوزر weibo: وايبو current_session: الجلسة الحالية description: "%{browser} على %{platform}" @@ -1254,8 +1251,6 @@ ar: platforms: adobe_air: أدوبي إيير android: أندرويد - blackberry: بلاك بيري - chrome_os: نظام كروم أواس firefox_os: نظام فايرفكس أواس ios: نظام آي أواس linux: لينكس diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 18aa489470..acbdeb6558 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -325,7 +325,6 @@ ast: browser: Restolador browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -336,7 +335,6 @@ ast: opera: Opera otter: Otter phantom_js: PhantomJS - uc_browser: UCBrowser weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" @@ -344,8 +342,6 @@ ast: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS firefox_os: Firefox OS ios: iOS linux: GNU/Linux diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 104e256a0e..c0287923fa 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -602,7 +602,6 @@ bg: browser: Браузър browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Edge на Майкрософт electron: Electron @@ -616,7 +615,6 @@ bg: phantom_js: PhantomJS qq: Браузър QQ safari: Сафари - uc_browser: UCBrowser weibo: Weibo current_session: Текуща сесия description: "%{browser} на %{platform}" @@ -624,8 +622,6 @@ bg: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Оп. сист. Chrome firefox_os: Оп. сист. Firefox ios: iOS linux: Линукс diff --git a/config/locales/br.yml b/config/locales/br.yml index a6b971eb75..e7bc88eab1 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -249,7 +249,6 @@ br: browser: Merdeer browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -263,7 +262,6 @@ br: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo description: "%{browser} war %{platform}" platforms: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index b75af24632..1652ab8ee9 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1097,7 +1097,7 @@ ca: public: Línies de temps públiques thread: Converses edit: - add_keyword: Afegeix paraula clau + add_keyword: Afegeix una paraula clau keywords: Paraules clau statuses: Publicacions individuals statuses_hint_html: Aquest filtre s'aplica a la selecció de publicacions individuals, independentment de si coincideixen amb les paraules clau següents. Revisa o elimina publicacions del filtre. @@ -1122,7 +1122,7 @@ ca: other: "%{count} publicacions individuals ocultades" title: Filtres new: - save: Desa el nou filtre + save: Desa el filtre nou title: Afegir un nou filtre statuses: back_to_filter: Tornar al filtre @@ -1387,7 +1387,7 @@ ca: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: Navegador UC weibo: Weibo current_session: Sessió actual description: "%{browser} de %{platform}" diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 93a92043eb..483734fead 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -933,7 +933,6 @@ ckb: activity: دوایین چالاکی browser: وێبگەڕ browsers: - blackberry: بلاکبێری chrome: کرۆم edge: مایکرۆسۆفت ئیچ electron: ئەلکترۆن @@ -947,15 +946,12 @@ ckb: phantom_js: فانتۆم جەی ئێس qq: وێبگەڕی QQ safari: سافری - uc_browser: وێبگەڕی UC current_session: دانیشتنی ئێستا description: "%{browser} لەسەر %{platform}" explanation: ئەمانە وێبگەڕەکەن کە ئێستا چووەتە ژوورەوە بۆ ئەژمێری ماستۆدۆنی خۆت. ip: ئای‌پی platforms: android: ئەندرۆید - blackberry: بلاکبێری - chrome_os: سیستەمی کارگێڕی کرۆم firefox_os: سیستەمی کارگێڕی فایەرفۆکس linux: لینۆکس mac: ماک diff --git a/config/locales/co.yml b/config/locales/co.yml index 6e2066acca..c9d22cd124 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -914,7 +914,6 @@ co: browser: Navigatore browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -928,7 +927,6 @@ co: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Sessione attuale description: "%{browser} nant’à %{platform}" @@ -937,8 +935,6 @@ co: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/cs.yml b/config/locales/cs.yml index b93ec30722..4a1674893b 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -634,7 +634,7 @@ cs: other: "%{count} uživatelů" categories: administration: Administrace - devops: Devops + devops: DevOps invites: Pozvánky moderation: Moderování special: Speciální @@ -687,7 +687,7 @@ cs: view_audit_log_description: Umožňuje uživatelům vidět historii administrativních akcí na serveru view_dashboard: Zobrazit ovládací panel view_dashboard_description: Umožňuje uživatelům přístup k ovládacímu panelu a různým metrikám - view_devops: Devops + view_devops: DevOps view_devops_description: Umožňuje uživatelům přístup k ovládacím panelům Sidekiq a pgHero title: Role rules: @@ -1177,6 +1177,16 @@ cs: trending_now: Právě populární generic: all: Všechny + all_items_on_page_selected_html: + few: "%{count} položky na této stránce jsou vybrány." + many: "%{count} položek na této stránce je vybráno." + one: "%{count} položka na této stránce vybrána." + other: Všech %{count} položek na této stránce vybráno. + all_matching_items_selected_html: + few: "%{count} položky odpovídající vašemu hledání jsou vybrány." + many: "%{count} položek odpovídající vašemu hledání je vybráno." + one: "%{count} položka odpovídající vašemu hledání je vybrána." + other: Všech %{count} položek odpovídající vašemu hledání je vybráno. changes_saved_msg: Změny byly úspěšně uloženy! copy: Kopírovat delete: Smazat @@ -1429,7 +1439,7 @@ cs: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Browser weibo: Weibo current_session: Aktuální relace description: "%{browser} na systému %{platform}" @@ -1438,8 +1448,8 @@ cs: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS + blackberry: BlackBerry + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 88edb06d1b..91ef6a1724 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -773,7 +773,6 @@ cy: description: "%{browser} ar %{platform}" explanation: Dyma'r porwyr gwê sydd wedi mewngofnodi i'ch cyfrif Mastododon ar hyn o bryd. platforms: - chrome_os: OS Chrome firefox_os: OS Firefox mac: Mac other: platfform anhysbys diff --git a/config/locales/da.yml b/config/locales/da.yml index b09bb77f7e..f9fd003879 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -608,7 +608,6 @@ da: other: "%{count} brugere" categories: administration: Håndtering - devops: Devops invites: Invitationer moderation: Moderering special: Speciel @@ -659,7 +658,6 @@ da: view_audit_log_description: Tillader brugere at se en historik over administrative handlinger på serveren view_dashboard: Vis Dashboard view_dashboard_description: Tillader brugere at tilgå Dashboard'et og forskellige målinger - view_devops: Devops view_devops_description: Tillader brugere at tilgå Sidekiq- og pgHero-dashboards title: Roller rules: @@ -1373,7 +1371,6 @@ da: browser: Browser browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,7 +1384,6 @@ da: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCbrowser weibo: Weibo current_session: Aktuelle session description: "%{browser} på %{platform}" @@ -1396,8 +1392,6 @@ da: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/de.yml b/config/locales/de.yml index d6f8ba94ef..7bc73dcb4d 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -580,7 +580,7 @@ de: create_and_resolve: Mit Kommentar lösen create_and_unresolve: Mit Kommentar wieder öffnen delete: Löschen - placeholder: Bitte beschreiben, welche Maßnahmen ergriffen wurden oder andere damit verbundene Aktualisierungen … + placeholder: Bitte beschreibe, welche Maßnahmen ergriffen wurden oder andere damit verbundene Aktualisierungen … title: Notizen notes_description_html: Zeige und hinterlasse Notizen an andere Moderator_innen und dein zukünftiges Ich quick_actions_description_html: 'Führe eine schnelle Aktion aus oder scrolle nach unten, um gemeldete Inhalte zu sehen:' @@ -676,17 +676,17 @@ de: rules_hint: Es gibt einen eigenen Bereich für Regeln, die deine Benutzer*innen einhalten müssen. title: Über appearance: - preamble: Passen Sie Mastodons Weboberfläche an. - title: Darstellung + preamble: Passe die Weboberfläche von Mastodon an. + title: Erscheinungsbild branding: - preamble: Das Branding Ihres Servers unterscheidet ihn von anderen Servern im Netzwerk. Diese Informationen können in einer Vielzahl von Umgebungen angezeigt werden, z. B. in der Weboberfläche von Mastodon, in nativen Anwendungen, in Linkvorschauen auf anderen Websites und in Messaging-Apps und so weiter. Aus diesem Grund ist es am besten, diese Informationen klar, kurz und prägnant zu halten. + preamble: Das Branding deines Servers unterscheidet ihn von anderen Servern im Netzwerk. Diese Informationen können in einer Vielzahl von Umgebungen angezeigt werden, z. B. in der Weboberfläche von Mastodon, in nativen Anwendungen, in Linkvorschauen auf anderen Websites und in Messaging-Apps und so weiter. Aus diesem Grund ist es am besten, diese Informationen klar, kurz und prägnant zu halten. title: Branding content_retention: preamble: Steuern Sie, wie nutzergenerierte Inhalte in Mastodon gespeichert werden. title: Aufbewahrung von Inhalten discovery: follow_recommendations: Folgeempfehlungen - preamble: Das Auffinden interessanter Inhalte ist wichtig, um neue Nutzer einzubinden, die Mastodon noch nicht kennen. Bestimmen Sie, wie verschiedene Suchfunktionen auf Ihrem Server funktionieren. + preamble: Das Auffinden interessanter Inhalte ist wichtig, um neue Nutzer einzubinden, die Mastodon noch nicht kennen. Bestimme, wie verschiedene Suchfunktionen auf deinem Server funktionieren. profile_directory: Profilverzeichnis public_timelines: Öffentliche Timelines title: Entdecken @@ -796,7 +796,7 @@ de: not_discoverable: Der Autor hat sich nicht dafür entschieden, entdeckt zu werden shared_by: one: Einmal geteilt oder favorisiert - other: "%{friendly_count} mal geteilt oder favorisiert" + other: "%{friendly_count}-mal geteilt oder favorisiert" title: Angesagte Beiträge tags: current_score: Aktuelle Punktzahl %{score} @@ -889,7 +889,7 @@ de: remove: Alle Aliase aufheben appearance: advanced_web_interface: Fortgeschrittene Benutzeroberfläche - advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, kannst du mit der fortgeschrittenen Benutzeroberfläche weitere Spalten hinzufügen und dadurch mehr Informationen auf einmal sehen, z. B. deine Startseite, die Mitteilungen, die vereinigte Timeline sowie beliebig viele deiner Listen und Hashtags. + advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, kannst du mit der fortgeschrittenen Benutzeroberfläche weitere Spalten hinzufügen und dadurch mehr Informationen auf einmal sehen, z. B. deine Startseite, die Mitteilungen, die föderierte Timeline sowie beliebig viele deiner Listen und Hashtags. animations_and_accessibility: Animationen und Barrierefreiheit confirmation_dialogs: Bestätigungsfenster discovery: Entdecken @@ -1373,7 +1373,7 @@ de: browser: Browser browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,7 +1387,7 @@ de: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Browser weibo: Weibo current_session: Aktuelle Sitzung description: "%{browser} auf %{platform}" @@ -1396,7 +1396,7 @@ de: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry + blackberry: BlackBerry chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS @@ -1414,7 +1414,7 @@ de: account: Konto account_settings: Kontoeinstellungen aliases: Kontoaliase - appearance: Aussehen + appearance: Erscheinungsbild authorized_apps: Autorisierte Anwendungen back: Zurück zu Mastodon delete: Konto löschen @@ -1472,7 +1472,7 @@ de: show_more: Mehr anzeigen show_newer: Neuere anzeigen show_older: Ältere anzeigen - show_thread: Unterhaltung anzeigen + show_thread: Thread anzeigen sign_in_to_participate: Melde dich an, um an der Konversation teilzuhaben title: '%{name}: "%{quote}"' visibilities: diff --git a/config/locales/devise.th.yml b/config/locales/devise.th.yml index 38d7a0c528..e465007967 100644 --- a/config/locales/devise.th.yml +++ b/config/locales/devise.th.yml @@ -91,7 +91,7 @@ th: signed_up: ยินดีต้อนรับ! คุณได้ลงทะเบียนสำเร็จ signed_up_but_inactive: คุณได้ลงทะเบียนสำเร็จ อย่างไรก็ตามเราไม่สามารถลงชื่อคุณเข้าได้เนื่องจากยังไม่ได้เปิดใช้งานบัญชีของคุณ signed_up_but_locked: คุณได้ลงทะเบียนสำเร็จ อย่างไรก็ตามเราไม่สามารถลงชื่อคุณเข้าได้เนื่องจากมีการล็อคบัญชีของคุณอยู่ - signed_up_but_pending: ส่งข้อความพร้อมลิงก์ยืนยันไปยังที่อยู่อีเมลของคุณแล้ว หลังจากคุณคลิกลิงก์ เราจะตรวจทานใบสมัครของคุณ คุณจะได้รับการแจ้งเตือนหากใบสมัครได้รับการอนุมัติ + signed_up_but_pending: ส่งข้อความพร้อมลิงก์ยืนยันไปยังที่อยู่อีเมลของคุณแล้ว หลังจากคุณคลิกลิงก์ เราจะตรวจทานใบสมัครของคุณ คุณจะได้รับการแจ้งเตือนหากมีการอนุมัติใบสมัคร signed_up_but_unconfirmed: ส่งข้อความพร้อมลิงก์ยืนยันไปยังที่อยู่อีเมลของคุณแล้ว โปรดไปตามลิงก์เพื่อเปิดใช้งานบัญชีของคุณ โปรดตรวจสอบโฟลเดอร์สแปมของคุณหากคุณไม่ได้รับอีเมลนี้ update_needs_confirmation: คุณได้อัปเดตบัญชีของคุณสำเร็จ แต่เราจำเป็นต้องยืนยันที่อยู่อีเมลใหม่ของคุณ โปรดตรวจสอบอีเมลของคุณแล้วไปตามลิงก์ยืนยันเพื่อยืนยันที่อยู่อีเมลใหม่ของคุณ โปรดตรวจสอบโฟลเดอร์สแปมของคุณหากคุณไม่ได้รับอีเมลนี้ updated: อัปเดตบัญชีของคุณสำเร็จ diff --git a/config/locales/doorkeeper.ca.yml b/config/locales/doorkeeper.ca.yml index 954ef2a6ee..203388823d 100644 --- a/config/locales/doorkeeper.ca.yml +++ b/config/locales/doorkeeper.ca.yml @@ -172,9 +172,9 @@ ca: write: modificar totes les dades del teu compte write:accounts: modifica el teu perfil write:blocks: bloqueja comptes i dominis - write:bookmarks: publicacions a marcadors + write:bookmarks: marcar publicacions write:conversations: silencia i esborra converses - write:favourites: afavorir publicacions + write:favourites: marcar publicacions write:filters: crear filtres write:follows: seguir usuaris write:lists: crear llistes diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml index 419b58b94f..e239da785c 100644 --- a/config/locales/doorkeeper.eo.yml +++ b/config/locales/doorkeeper.eo.yml @@ -60,6 +60,7 @@ eo: error: title: Eraro okazis new: + review_permissions: Revizu permesojn title: Rajtigo bezonata show: title: Kopiu ĉi tiun rajtigan kodon kaj gluu ĝin al la aplikaĵo. @@ -69,6 +70,8 @@ eo: confirmations: revoke: Ĉu vi certas? index: + never_used: Neniam uzata + scopes: Permesoj superapp: Interna title: Viaj rajtigitaj aplikaĵoj errors: @@ -111,10 +114,13 @@ eo: all: Ĉio blocks: Blokita bookmarks: Legosignoj + conversations: Konversacioj favourites: Preferaĵoj filters: Filtriloj + follows: Sekvas lists: Listoj mutes: Silentigitaj + notifications: Sciigoj reports: Raportoj search: Serĉi statuses: Afiŝoj diff --git a/config/locales/el.yml b/config/locales/el.yml index 499347866b..20d74a6a4d 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -438,6 +438,8 @@ el: devops: Devops invites: Προσκλήσεις delete: Διαγραφή + privileges: + view_devops: DevOps rules: add_new: Προσθήκη κανόνα delete: Διαγραφή @@ -936,11 +938,15 @@ el: activity: Τελευταία δραστηριότητα browser: Φυλλομετρητής (Browser) browsers: + blackberry: BlackBerry generic: Άγνωστος φυλλομετρητής + uc_browser: UC Browser current_session: Τρέχουσα σύνδεση description: "%{browser} σε %{platform}" explanation: Αυτοί είναι οι φυλλομετρητές (browsers) που είναι συνδεδεμένοι στον λογαριασμό σου στο Mastodon αυτή τη στιγμή. platforms: + blackberry: BlackBerry + chrome_os: ChromeOS mac: Mac other: άγνωστη πλατφόρμα revoke: Ανακάλεσε diff --git a/config/locales/eo.yml b/config/locales/eo.yml index de18f97b2e..5c890ffda2 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -317,6 +317,7 @@ eo: other: "%{count} pritraktotaj kradvortoj" resolved_reports: raportoj solvitaj software: Programo + sources: Fontoj de konto-kreado space: Memorspaca uzado title: Kontrolpanelo top_languages: Plej aktivaj lingvoj @@ -526,7 +527,6 @@ eo: other: "%{count} uzantoj" categories: administration: Administrado - devops: Programado kaj Operaciado invites: Invitoj moderation: Kontrolado special: Specialaj @@ -552,7 +552,6 @@ eo: manage_invites: Administri Invitojn manage_roles: Administri Rolojn manage_rules: Administri Regulojn - view_devops: Programado kaj Operaciado title: Roloj rules: add_new: Aldoni regulon @@ -689,7 +688,7 @@ eo: confirmation_dialogs: Konfirmaj fenestroj discovery: Eltrovo localization: - body: Mastodon estas tradukita per volontuloj. + body: Mastodon estas tradukita de volontuloj. guide_link: https://crowdin.com/project/mastodon guide_link_text: Ĉiu povas kontribui. sensitive_content: Tikla enhavo @@ -714,7 +713,7 @@ eo: delete_account_html: Se vi deziras forigi vian konton, vi povas fari tion ĉi tie. Vi bezonos konfirmi vian peton. description: prefix_invited_by_user: "@%{name} invitigi vin aligiĝi ĉi tiu servilo de Mastodon!" - prefix_sign_up: Registriĝi ĉe Mastodon hodiaŭ! + prefix_sign_up: Registriĝu ĉe Mastodon hodiaŭ! suffix: Kun konto, vi povos sekvi aliajn homojn, skribi afiŝojn kaj interŝanĝi mesaĝojn kun la uzantoj de iu ajn Mastodon'a servilo kaj multe pli! didnt_get_confirmation: Ĉu vi ne ricevis la instrukciojn por konfirmi? dont_have_your_security_key: Ne havas vi vian sekurecan ŝlosilon? @@ -722,7 +721,7 @@ eo: invalid_reset_password_token: Ĵetono por restarigi pasvorton nevalida aŭ eksvalida. Bonvolu peti novan. link_to_webauth: Uzi vian sekurecan ŝlosilon log_in_with: Ensaluti per - login: Saluti + login: Ensaluti logout: Adiaŭi migrate_account: Movi al alia konto migrate_account_html: Se vi deziras alidirekti ĉi tiun konton al alia, vi povas agordi ĝin ĉi tie. @@ -730,7 +729,7 @@ eo: providers: cas: CAS saml: SAML - register: Registriĝi + register: Krei konton registration_closed: "%{instance} ne estas akcepti nova uzantojn" resend_confirmation: Resendi la instrukciojn por konfirmi reset_password: Restarigi pasvorton @@ -957,6 +956,9 @@ eo: navigation: toggle_menu: Baskuli menuon notification_mailer: + admin: + sign_up: + subject: "%{name} registriĝis" favourite: body: "%{name} stelumis vian mesaĝon:" subject: "%{name} stelumis vian mesaĝon" @@ -1075,7 +1077,7 @@ eo: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Browser weibo: Weibo current_session: Nuna seanco description: "%{browser} en %{platform}" @@ -1155,7 +1157,7 @@ eo: show_newer: Montri pli novajn show_older: Montri pli malnovajn show_thread: Montri la mesaĝaron - sign_in_to_participate: Ensaluti por partopreni en la konversacio + sign_in_to_participate: Ensalutu por partopreni la konversacion title: "%{name}: “%{quote}”" visibilities: direct: Rekta diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index c3ddd74439..e0def87cad 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1397,7 +1397,7 @@ es-AR: adobe_air: Adobe Air android: Android blackberry: BlackBerry - chrome_os: Chrome OS + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: GNU/Linux diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index c864536ce6..ab0d9be1de 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -608,7 +608,6 @@ es-MX: other: "%{count} usuarios" categories: administration: Administración - devops: DevOps invites: Invitaciones moderation: Moderación special: Especial @@ -659,7 +658,6 @@ es-MX: view_audit_log_description: Permite a los usuarios ver un historial de acciones administrativas en el servidor view_dashboard: Ver Panel de Control view_dashboard_description: Permite a los usuarios acceder al panel de control y varias métricas - view_devops: DevOps view_devops_description: Permite a los usuarios acceder a los paneles de control Sidekiq y pgHero title: Roles rules: @@ -1373,7 +1371,6 @@ es-MX: browser: Navegador browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,7 +1384,6 @@ es-MX: phantom_js: PhantomJS qq: Navegador QQ safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" @@ -1396,8 +1392,6 @@ es-MX: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: GNU Linux diff --git a/config/locales/es.yml b/config/locales/es.yml index 6bd34034b9..94478df9b8 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -608,7 +608,6 @@ es: other: "%{count} usuarios" categories: administration: Administración - devops: DevOps invites: Invitaciones moderation: Moderación special: Especial @@ -659,7 +658,6 @@ es: view_audit_log_description: Permite a los usuarios ver un historial de acciones administrativas en el servidor view_dashboard: Ver Panel de Control view_dashboard_description: Permite a los usuarios acceder al panel de control y varias métricas - view_devops: DevOps view_devops_description: Permite a los usuarios acceder a los paneles de control Sidekiq y pgHero title: Roles rules: @@ -1373,7 +1371,6 @@ es: browser: Navegador browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,7 +1384,6 @@ es: phantom_js: PhantomJS qq: Navegador QQ safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" @@ -1396,8 +1392,6 @@ es: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: GNU Linux diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 4a8d9bd507..11dcec2bc9 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -608,7 +608,7 @@ eu: other: "%{count} erabiltzaile" categories: administration: Administrazioa - devops: Devops + devops: DevOps invites: Gonbidapenak moderation: Moderazioa special: Berezia @@ -659,7 +659,7 @@ eu: view_audit_log_description: Baimendu erabiltzaileek zerbitzariko administrazio-ekintzen historia ikustea view_dashboard: Ikusi aginte-panela view_dashboard_description: Baimendu erabiltzaileek aginte-panela eta hainbat estatistika ikustea - view_devops: Devops + view_devops: DevOps view_devops_description: Baimendu erabiltzaileek Sidekiq eta pgHero aginte-paneletara sarbidea izatea title: Rolak rules: @@ -1373,7 +1373,7 @@ eu: browser: Nabigatzailea browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,7 +1387,7 @@ eu: phantom_js: PhantomJS qq: QQ nabigatzailea safari: Safari - uc_browser: UCBrowser + uc_browser: UC nabigatzailea weibo: Weibo current_session: Uneko saioa description: "%{browser} - %{platform}" @@ -1396,7 +1396,7 @@ eu: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry + blackberry: BlackBerry chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 6c3690aee9..9601162dea 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -544,7 +544,6 @@ fa: add_new: افزودن نقش categories: administration: مدیریت - devops: دواپس invites: دعوت‌ها moderation: نظارت special: ویژه @@ -1104,7 +1103,6 @@ fa: browser: مرورگر browsers: alipay: علی‌پی - blackberry: بلک‌بری chrome: کروم edge: مایکروسافت اج electron: الکترون @@ -1118,7 +1116,6 @@ fa: phantom_js: فنتوم‌جی‌اس qq: مرورگر کیوکیو safari: سافاری - uc_browser: مرورگر یوسی weibo: وبیو current_session: نشست فعلی description: "%{browser} روی %{platform}" @@ -1127,8 +1124,6 @@ fa: platforms: adobe_air: ایر ادوبی android: اندروید - blackberry: بلک‌بری - chrome_os: سیستم‌عامل کروم firefox_os: سیستم‌عامل فایرفاکس ios: آی‌اواس linux: لینوکس diff --git a/config/locales/fi.yml b/config/locales/fi.yml index dc8703af6c..3a72387e2e 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -608,7 +608,7 @@ fi: other: "%{count} käyttäjää" categories: administration: Ylläpito - devops: Operaattorit + devops: DevOps invites: Kutsut moderation: Moderointi special: Erikois @@ -659,7 +659,7 @@ fi: view_audit_log_description: Sallii käyttäjien nähdä palvelimen hallinnollisten toimien historian view_dashboard: Näytä koontinäyttö view_dashboard_description: Sallii käyttäjien käyttää kojelautaa ja erilaisia mittareita - view_devops: Operaattorit + view_devops: DevOps view_devops_description: Sallii käyttäjille oikeuden käyttää Sidekiq ja pgHero dashboardeja title: Roolit rules: @@ -1065,7 +1065,7 @@ fi: content: Valitettavasti jokin meni pieleen meidän päässämme. title: Sivu ei ole oikein '503': Sivua ei voitu näyttää palvelimen väliaikaisen vian vuoksi. - noscript_html: Mastodon-selainsovelluksen käyttöön vaaditaan JavaScript. Voit vaihtoehtoisesti kokeilla jotakin omalle käyttöjärjestelmällesi tehtyä Mastodonsovellusta. + noscript_html: Käyttääksesi Mastodon-verkkopalvelua, ota JavaScript käyttöön. Vaihtoehtoisesti voit kokeilla myös jotakin juuri käyttämällesi alustalle kehitettyä Mastodon-sovellusta. existing_username_validator: not_found: paikallista käyttäjää ei löydy kyseisellä käyttäjänimellä not_found_multiple: "%{usernames} ei löytynyt" @@ -1373,7 +1373,7 @@ fi: browser: Selain browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,22 +1387,22 @@ fi: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Browser weibo: Weibo current_session: Nykyinen istunto - description: "%{browser}, %{platform}" + description: "%{browser} alustalla %{platform}" explanation: Nämä verkkoselaimet ovat tällä hetkellä kirjautuneet Mastodon-tilillesi. ip: IP-osoite platforms: - adobe_air: Adobe Air + adobe_air: Adobe AIR android: Android - blackberry: Blackberry - chrome_os: Chrome OS + blackberry: BlackBerry + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux mac: macOS - other: tuntematon järjestelmä + other: tuntematon alusta windows: Windows windows_mobile: Windows Mobile windows_phone: Windows Phone diff --git a/config/locales/fr.yml b/config/locales/fr.yml index a177d6fa5c..191e14deb1 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -608,7 +608,7 @@ fr: other: "%{count} utilisateur·rice·s" categories: administration: Administration - devops: Devops + devops: DevOps invites: Invitations moderation: Modération special: Spécial @@ -659,7 +659,7 @@ fr: view_audit_log_description: Permet aux utilisateur⋅rice⋅s de voir l'historique des opérations d'administration sur le serveur view_dashboard: Voir le tableau de bord view_dashboard_description: Permet aux utilisateur⋅rice⋅s d'accéder au tableau de bord et à diverses statistiques - view_devops: Devops + view_devops: DevOps view_devops_description: Permet aux utilisateur⋅rice⋅s d'accéder aux tableaux de bord Sidekiq et pgHero title: Rôles rules: @@ -1397,7 +1397,7 @@ fr: adobe_air: Adobe Air android: Android blackberry: BlackBerry - chrome_os: Chrome OS + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 33408ddb7f..9df952ef1e 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1,7 +1,10 @@ --- ga: about: + about_mastodon_html: 'Líonra sóisialta a sheasfaidh an aimsir: Gan fógraíocht, gan faire chorparáideach, le leagan amach eiticiúil agus dílárú. Bíodh do chuid sonraí agatsa féin le Mastodon!' + contact_missing: Gan socrú contact_unavailable: N/B + hosted_on: Mastodon arna óstáil ar %{domain} title: Maidir le accounts: follow: Lean @@ -17,7 +20,7 @@ ga: admin: account_actions: action: Déan gníomh - title: Déan modhnóireacht ar %{acct} + title: Dean gníomh modhnóireachta ar %{acct} account_moderation_notes: create: Fág nóta accounts: @@ -30,12 +33,12 @@ ga: label: Athraigh ríomhphost new_email: Ríomhphost nua submit: Athraigh ríomhphost - title: Athraigh ríomhphost %{username} + title: Athraigh ríomhphost do %{username} change_role: - changed_msg: D'athraigh ró go rathúil! + changed_msg: Athraíodh ról go rathúil! label: Athraigh ról - no_role: Níl aon ról ann - title: Athraigh ról %{username} + no_role: Gan ról + title: Athraigh ról do %{username} confirm: Deimhnigh confirmed: Deimhnithe confirming: Ag deimhniú @@ -62,31 +65,48 @@ ga: local: Áitiúil remote: Cian promote: Ardaigh + protocol: Prótacal public: Poiblí + redownload: Athnuaigh próifíl reject: Diúltaigh + remove_avatar: Bain abhatár + remove_header: Bain ceanntásc + resend_confirmation: + success: Seoladh go rathúil ríomhphost deimhnithe! + reset: Athshocraigh + reset_password: Athshocraigh pasfhocal + resubscribe: Athchláraigh role: Ról search: Cuardaigh statuses: Postálacha + subscribe: Cláraigh title: Cuntais web: Gréasán action_logs: action_types: - assigned_to_self_report: Sann tuairisc - create_account_warning: Cruthaigh rabhadh + assigned_to_self_report: Sann Tuairisc + create_account_warning: Cruthaigh Rabhadh destroy_announcement: Scrios Fógra destroy_ip_block: Scrios riail IP - destroy_status: Scrios postáil + destroy_status: Scrios Postáil + remove_avatar_user: Bain Abhatár reopen_report: Athoscail tuairisc + reset_password_user: Athshocraigh Pasfhocal resolve_report: Réitigh tuairisc - unassigned_report: Cealaigh tuairisc a shann + unassigned_report: Díshann Tuairisc + update_announcement: Nuashonraigh Fógra + update_status: Nuashonraigh Postáil + update_user_role: Nuashonraigh Ról actions: - create_account_warning_html: Sheol %{name} rabhadh do %{target} + create_account_warning_html: Sheol %{name} rabhadh chuig %{target} deleted_account: cuntas scriosta announcements: live: Beo publish: Foilsigh custom_emojis: + created_msg: Cruthaíodh emoji go rathúil! delete: Scrios + destroyed_msg: Scriosadh emoji go rathúil! disable: Díchumasaigh disabled: Díchumasaithe emoji: Emoji @@ -98,6 +118,7 @@ ga: title: Deais website: Suíomh Gréasáin domain_blocks: + domain: Fearann new: severity: silence: Ciúnaigh @@ -115,6 +136,8 @@ ga: unavailable: Níl ar fáil moderation: all: Uile + purge: Glan + title: Cónascadh invites: filter: all: Uile @@ -134,10 +157,11 @@ ga: disabled: Díchumasaithe enable: Cumasaigh enabled: Ar chumas + save_and_enable: Sábháil agus cumasaigh status: Stádas reports: category: Catagóir - delete_and_resolve: Scrios postála + delete_and_resolve: Scrios postálacha no_one_assigned: Duine ar bith notes: delete: Scrios @@ -147,7 +171,7 @@ ga: roles: delete: Scrios privileges: - delete_user_data: Scrios sonraí úsáideora + delete_user_data: Scrios Sonraí Úsáideora rules: delete: Scrios site_uploads: @@ -156,17 +180,25 @@ ga: account: Údar deleted: Scriosta language: Teanga + media: + title: Meáin + metadata: Meiteashonraí open: Oscail postáil original_status: Bunphostáil + reblogs: Athbhlaganna + status_changed: Athraíodh postáil + trending: Ag treochtáil with_media: Le meáin strikes: actions: - delete_statuses: Scrios %{name} postála %{target} + delete_statuses: Scrios %{name} postálacha de chuid %{target} tags: review: Stádas athbhreithnithe trends: allow: Ceadaigh disallow: Dícheadaigh + preview_card_providers: + title: Foilsitheoirí statuses: allow: Ceadaigh postáil allow_account: Ceadaigh údar @@ -177,17 +209,17 @@ ga: admin_mailer: new_appeal: actions: - delete_statuses: chun postála acu a scrios + delete_statuses: a gcuid postálacha a scrios none: rabhadh auth: delete_account: Scrios cuntas - too_fast: Chuireadh foirm róthapa, bain triail arís. + too_fast: Cuireadh an fhoirm isteach róthapa, triail arís. deletes: proceed: Scrios cuntas disputes: strikes: appeal_submitted_at: Achomharc curtha isteach - appealed_msg: Bhí d'achomharc curtha isteach. Má ceadaítear é, cuirfidh ar an eolas tú. + appealed_msg: Cuireadh isteach d'achomharc. Má ceadófar é, cuirfear ar an eolas tú. appeals: submit: Cuir achomharc isteach title_actions: @@ -219,7 +251,7 @@ ga: statuses: content_warning: 'Rabhadh ábhair: %{warning}' show_more: Taispeáin níos mó - show_newer: Taispeáin níos déanaí + show_newer: Taispeáin níos nuaí show_thread: Taispeáin snáithe user_mailer: warning: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 99f432ea42..24dc6e7ca3 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -634,7 +634,6 @@ gd: two: "%{count} chleachdaiche" categories: administration: Rianachd - devops: DevOps invites: Cuiridhean moderation: Maorsainneachd special: Sònraichte @@ -687,7 +686,6 @@ gd: view_audit_log_description: Leigidh seo le cleachdaichean coimhead air eachdraidh gnìomhan na rianachd air an fhrithealaiche view_dashboard: Coimhead air an deas-bhòrd view_dashboard_description: Leigidh seo le cleachdaichean an deas-bhòrd agus meatrachdan inntrigeadh - view_devops: DevOps view_devops_description: Leigidh seo le cleachdaichean na deas-bhùird aig Sidekiq is pgHero inntrigeadh title: Dreuchdan rules: @@ -1425,7 +1423,6 @@ gd: browser: Brabhsair browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1439,7 +1436,6 @@ gd: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: An seisean làithreach description: "%{browser} air %{platform}" @@ -1448,8 +1444,6 @@ gd: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/gl.yml b/config/locales/gl.yml index afdd513946..cb15fc5137 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -11,7 +11,7 @@ gl: followers: one: Seguidora other: Seguidoras - following: Seguindo + following: A Seguir instance_actor_flash: Esta conta é un actor virtual utilizado para representar ó servidor mesmo e non a unha usuaria individual. Utilízase por motivos de federación e non debería estar suspendida. last_active: última actividade link_verified_on: A propiedade desta ligazón foi verificada en %{date} @@ -71,7 +71,7 @@ gl: enabled: Activado enabled_msg: Desbloqueada a conta de %{username} followers: Seguidoras - follows: Seguindo + follows: Segue header: Cabeceira inbox_url: URL da caixa de entrada invite_request_text: Razóns para unirte @@ -608,7 +608,6 @@ gl: other: "%{count} usuarias" categories: administration: Administración - devops: DevOps invites: Convites moderation: Moderación special: Especial @@ -659,7 +658,6 @@ gl: view_audit_log_description: Permite ver o historial de accións administrativas no servidor view_dashboard: Ver Taboleiro view_dashboard_description: Permite acceder ao taboleiro e varias métricas do servidor - view_devops: Devops view_devops_description: Permite acceder aos taboleiros Sidekiq e phHero title: Roles rules: @@ -1077,12 +1075,12 @@ gl: in_progress: Xerando o seu ficheiro... request: Solicite o ficheiro size: Tamaño - blocks: Bloqueos + blocks: Bloqueadas bookmarks: Marcadores csv: CSV domain_blocks: Bloqueos de dominio lists: Listaxes - mutes: Silenciados + mutes: Silenciadas storage: Almacenamento de multimedia featured_tags: add_new: Engadir novo @@ -1342,7 +1340,7 @@ gl: dormant: En repouso follow_selected_followers: Seguir seguidoras seleccionadas followers: Seguidoras - following: Seguindo + following: A Seguir invited: Convidado last_active: Último activo most_recent: Máis recente @@ -1373,7 +1371,6 @@ gl: browser: Navegador browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,7 +1384,6 @@ gl: phantom_js: PhantomJS qq: Navegador QQ safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" @@ -1396,8 +1392,6 @@ gl: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/he.yml b/config/locales/he.yml index 28cf52e1cd..bc51c21ac9 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -634,7 +634,7 @@ he: two: "%{count} שני משתמשים" categories: administration: ניהול מערכת - devops: פיתוח + devops: DevOps invites: הזמנות moderation: פיקוח special: מיוחדים @@ -687,7 +687,7 @@ he: view_audit_log_description: מאפשר למשתשמשים לצפות בהיסטוריה של פעולות מנהלתיות על השרת view_dashboard: הצג לוח מחוונים view_dashboard_description: אפשר למשתמשים לגשת ללוח המחוונים - view_devops: פיתוח + view_devops: DevOps view_devops_description: מאפשר למשתמשים לגשת ללוחות המחוונים של Sidekiq ושל pgHero title: תפקידים rules: @@ -1424,7 +1424,7 @@ he: phantom_js: PhantomJS qq: דפדפן QQ safari: ספארי - uc_browser: UCBrowser + uc_browser: דפדפן UC weibo: Weibo current_session: חיבור נוכחי description: "%{browser} על %{platform}" @@ -1434,7 +1434,7 @@ he: adobe_air: אדובה אייר android: אנדרואיד blackberry: בלקברי - chrome_os: Chrome OS + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: לינוקס diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 078668eba3..529d4dadf7 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -608,7 +608,6 @@ hu: other: "%{count} felhasználó" categories: administration: Adminisztráció - devops: Devops invites: Meghívások moderation: Moderáció special: Speciális @@ -659,7 +658,6 @@ hu: view_audit_log_description: Lehetővé teszi, hogy a felhasználó megtekintse a kiszolgáló adminisztratív eseményeinek történetét view_dashboard: Irányítópult megtekintése view_dashboard_description: Lehetővé teszi, hogy a felhasználó elérje az irányítópultot és vele számos metrikát - view_devops: Devops view_devops_description: Lehetővé teszi, hogy a felhasználó elérje a Sidekiq és pgHero irányítópultjait title: Szerepek rules: @@ -1373,7 +1371,6 @@ hu: browser: Böngésző browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,7 +1384,6 @@ hu: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Jelenlegi munkamenet description: "%{browser} az alábbi platformon: %{platform}" @@ -1396,8 +1392,6 @@ hu: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 5094ca898a..e854fb44a0 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -716,7 +716,6 @@ hy: browser: Դիտարկիչ browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -730,7 +729,6 @@ hy: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Ընթացիկ սեսսիա description: "%{browser}, %{platform}" @@ -738,8 +736,6 @@ hy: platforms: adobe_air: Adobe Air android: Անդրոիդ - blackberry: Blackberry - chrome_os: Chrome OS firefox_os: Firefox OS ios: iOS linux: Լինուքս diff --git a/config/locales/id.yml b/config/locales/id.yml index b42ded815e..95660e16dc 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -595,7 +595,6 @@ id: other: "%{count} pengguna" categories: administration: Administrasi - devops: DevOps invites: Undangan moderation: Moderasi special: Khusus @@ -645,7 +644,6 @@ id: view_audit_log_description: Memungkinkan pengguna untuk melihat riwayat tindakan administratif di server view_dashboard: Lihat Dasbor view_dashboard_description: Memungkinkan pengguna untuk mengakses dasbor dan berbagai metrik - view_devops: DevOps view_devops_description: Memungkinkan pengguna untuk mengakses dasbor Sidekiq dan pgHero title: Peran rules: @@ -1347,7 +1345,6 @@ id: browser: Peramban browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1361,7 +1358,6 @@ id: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Sesi sekarang description: "%{browser} di %{platform}" @@ -1370,8 +1366,6 @@ id: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/io.yml b/config/locales/io.yml index 5a513f4f70..f8d233475d 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -605,7 +605,6 @@ io: other: "%{count} uzanti" categories: administration: Administro - devops: Developeri invites: Inviti moderation: Jero special: Specala @@ -656,7 +655,6 @@ io: view_audit_log_description: Permisez uzanti vidar historio di administrala agi en la servilo view_dashboard: Videz chefpanelo view_dashboard_description: Permisez uzanti uzar chefpanelo e diversa opcioni - view_devops: Developeri view_devops_description: Permisez uzanti uzar chefpaneli Sidekiq e pgHero title: Roli rules: @@ -1355,7 +1353,6 @@ io: browser: Vidilo browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1369,7 +1366,6 @@ io: phantom_js: PhantomJS qq: Vidilo QQ safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Nuna sesiono description: "%{browser} che %{platform}" @@ -1378,8 +1374,6 @@ io: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/is.yml b/config/locales/is.yml index 37d8f21b13..3aa43ac228 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -608,7 +608,7 @@ is: other: "%{count} notendur" categories: administration: Stjórnun - devops: Kerfisstjórar + devops: DevOps invites: Boðsgestir moderation: Umsjón special: Sérstakt @@ -659,7 +659,7 @@ is: view_audit_log_description: Leyfir notendum að skoða feril stjórnunaraðgerða á netþjóninum view_dashboard: Skoða stjórnborð view_dashboard_description: Leyfir notendum að skoða stjórnborðið og sjá ýmsar mælingar - view_devops: Kerfisstjórar + view_devops: DevOps view_devops_description: Leyfir notendum að skoða Sidekiq og pgHero stjórnborð title: Hlutverk rules: @@ -1387,7 +1387,7 @@ is: phantom_js: PhantomJS qq: QQ vafri safari: Safari - uc_browser: UCBrowser + uc_browser: UC-vafrinn weibo: Weibo current_session: Núverandi seta description: "%{browser} á %{platform}" diff --git a/config/locales/it.yml b/config/locales/it.yml index d3bf4734bd..76469eb6a4 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -608,7 +608,7 @@ it: other: "%{count} utenti" categories: administration: Amministrazione - devops: Devops + devops: DevOps invites: Inviti moderation: Moderazione special: Speciale @@ -659,7 +659,7 @@ it: view_audit_log_description: Consente agli utenti di vedere una cronologia delle azioni amministrative sul server view_dashboard: Mostra dashboard view_dashboard_description: Consente agli utenti di accedere alla dashboard e alle varie metriche - view_devops: Devops + view_devops: DevOps view_devops_description: Consente agli utenti di accedere alle dashboard Sidekiq e pgHero title: Ruoli rules: @@ -1375,7 +1375,7 @@ it: browser: Browser browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1389,7 +1389,7 @@ it: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Browser weibo: Weibo current_session: Sessione corrente description: "%{browser} su %{platform}" @@ -1398,7 +1398,7 @@ it: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry + blackberry: BlackBerry chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS diff --git a/config/locales/ja.yml b/config/locales/ja.yml index e6ba07305c..a60f0298bc 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1347,7 +1347,7 @@ ja: browser: ブラウザ browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1361,7 +1361,7 @@ ja: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Browser weibo: Weibo current_session: 現在のセッション description: "%{platform}上の%{browser}" @@ -1370,7 +1370,7 @@ ja: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry + blackberry: BlackBerry chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 5a2fb56a70..464e882688 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -403,7 +403,6 @@ ka: browser: ბრაუზერი browsers: alipay: ალიფეი - blackberry: ბლექბერი chrome: ქრომი edge: მაიკროსოფთ ედჯი electron: ელექტრონი @@ -417,7 +416,6 @@ ka: phantom_js: ფანტომჯეიესი qq: ქქ ბრაუზერი safari: საფარი - uc_browser: იუსიბიბრაუზერი weibo: ვეიბო current_session: მიმდინარე სესია description: "%{browser} %{platform}-ზე" @@ -426,8 +424,6 @@ ka: platforms: adobe_air: ედობ ეარი android: ანდროიდი - blackberry: ბლექბერი - chrome_os: ქრომო-ოსი firefox_os: ფაირფოქს-ოსი ios: აი-ოსი linux: ლინუქსი diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 1cd5d72d61..9c2539ce7c 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -621,7 +621,6 @@ kab: browser: Iminig browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -635,7 +634,6 @@ kab: phantom_js: PhantomJS qq: Iminig QQ safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Tiγimit tamirant description: "%{browser} s %{platform}" @@ -643,8 +641,6 @@ kab: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 1ac423e993..a487070975 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -630,7 +630,6 @@ kk: browser: Браузер browsers: alipay: Аlipay - blackberry: Blаckberry chrome: Chrоme edge: Microsоft Edge electron: Electrоn @@ -644,7 +643,6 @@ kk: phantom_js: PhаntomJS qq: QQ Brоwser safari: Safаri - uc_browser: UCBrоwser weibo: Weibо current_session: Қазіргі сессия description: "%{browser} - %{platform}" @@ -653,8 +651,6 @@ kk: platforms: adobe_air: Adobе Air android: Andrоid - blackberry: Blackbеrry - chrome_os: ChromеOS firefox_os: Firefоx OS ios: iОS linux: Lіnux diff --git a/config/locales/ko.yml b/config/locales/ko.yml index f222b08879..74f6f56a82 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1363,7 +1363,7 @@ ko: phantom_js: 팬텀JS qq: QQ 브라우저 safari: 사파리 - uc_browser: UC브라우저 + uc_browser: UC 브라우저 weibo: 웨이보 current_session: 현재 세션 description: "%{platform}의 %{browser}" diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 4c2283c216..1c1271c5d1 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -610,7 +610,6 @@ ku: other: "%{count} bikarhêner" categories: administration: Rêvebirî - devops: Devops invites: Vexwendin moderation: Çavdêrî special: Taybet @@ -661,7 +660,6 @@ ku: view_audit_log_description: Mafê dide bikarhêneran ku dîroka çalakiyên rêveberî yên li ser rajekarê bibînin view_dashboard: Destgehê nîşan bide view_dashboard_description: Mafê dide bikarhêneran ku bigihîjin destgehê û pîvanên cuda - view_devops: Pêşdebir view_devops_description: Mafê dide bikarhêneran ku bigihîjin destgehên Sidekiq û pgHero title: Rol rules: @@ -1368,7 +1366,6 @@ ku: browser: Gerok browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1382,7 +1379,6 @@ ku: phantom_js: PhantomJS qq: Geroka QQ safari: Safari - uc_browser: Geroka UCB weibo: Weibo current_session: Danişîna heyî description: "%{platform} ser %{browser}" @@ -1391,8 +1387,6 @@ ku: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/lv.yml b/config/locales/lv.yml index a7641064bf..2c1eaef62e 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -621,7 +621,7 @@ lv: zero: "%{count} lietotāju" categories: administration: Administrēšana - devops: Izstrādātāji + devops: DevOps invites: Uzaicinājumi moderation: Moderācija special: Īpašās @@ -673,7 +673,7 @@ lv: view_audit_log_description: Ļauj lietotājiem redzēt serverī veikto administratīvo darbību vēsturi view_dashboard: Skatīt Informācijas Paneli view_dashboard_description: Ļauj lietotājiem piekļūt informācijas panelim un dažādiem rādītājiem - view_devops: Izstrādātāji + view_devops: DevOps view_devops_description: Ļauj lietotājiem piekļūt Sidekiq un pgHero informācijas paneļiem title: Lomas rules: @@ -1399,7 +1399,7 @@ lv: browser: Pārlūks browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1413,7 +1413,7 @@ lv: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Pārlūks weibo: Weibo current_session: Pašreizējā sesija description: "%{browser} uz %{platform}" @@ -1422,8 +1422,8 @@ lv: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS + blackberry: BlackBerry + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 6d7f8d6aa7..6b6f33c162 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -608,7 +608,6 @@ nl: other: "%{count} gebruikers" categories: administration: Beheer - devops: Devops invites: Uitnodigingen moderation: Moderatie special: Speciaal @@ -659,7 +658,6 @@ nl: view_audit_log_description: Staat gebruikers toe om een geschiedenis van beheeracties op de server te bekijken view_dashboard: Dashboard bekijken view_dashboard_description: Geeft gebruikers toegang tot het dashboard en verschillende statistieken - view_devops: Devops view_devops_description: Geeft gebruikers toegang tot de dashboards van Sidekiq en pgHero title: Rollen rules: @@ -1387,7 +1385,7 @@ nl: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: QQ Browser weibo: Weibo current_session: Huidige sessie description: "%{browser} op %{platform}" @@ -1397,7 +1395,7 @@ nl: adobe_air: Adobe Air android: Android blackberry: Blackberry - chrome_os: Chrome OS + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 052e7fe8c6..4f07c685e9 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -275,7 +275,10 @@ nn: unassigned_report_html: "%{name} løyste ein rapport %{target}" unblock_email_account_html: "%{name} avblokkerte %{target} si e-postadresse" unsensitive_account_html: "%{name} avmarkerte %{target} sitt media som sensitivt" - update_custom_emoji_html: "%{name} oppdaterte emoji %{target}" + unsilence_account_html: "%{name} fjernet begrensningen av %{target}s konto" + update_announcement_html: "%{name} oppdaterte kunngjeringa %{target}" + update_custom_emoji_html: "%{name} oppdaterte emojien %{target}" + update_domain_block_html: "%{name} oppdaterte domeneblokkeringa for %{target}" update_ip_block_html: "%{name} endret regel for IP %{target}" update_status_html: "%{name} oppdaterte innlegg av %{target}" update_user_role_html: "%{name} endret %{target} -rolle" @@ -370,6 +373,7 @@ nn: destroyed_msg: Domeneblokkering har nå blitt angret domain: Domene edit: Rediger domeneblokkering + existing_domain_block: Du har allerede pålagt strengere begrensninger på %{name}. existing_domain_block_html: Du har allerede pålagt strengere begrensninger på %{name}, du kan være nødt til oppheve blokkeringen av den først. new: create: Lag blokkering @@ -381,7 +385,7 @@ nn: suspend: Utvis title: Ny domeneblokkering obfuscate: Obfuskere domenenavn - obfuscate_hint: Delvis skjule domenenavnet i listen hvis det er aktivert for å annonsere listen over domenebegrensninger + obfuscate_hint: Skjul deler av domenenavnet i listen hvis annonsering av listen over domenebegrensninger er slått på private_comment: Privat kommentar private_comment_hint: Kommenter angående denne domenebegrensningen for internt bruk av moderatorene. public_comment: Offentleg kommentar @@ -431,6 +435,7 @@ nn: comment: Internt notat policies: reject_media: Avvis media + silence: Begrens reason: Offentlig årsak title: Retningslinjer for innhold dashboard: @@ -512,6 +517,8 @@ nn: one: "%{count} notis" other: "%{count} notiser" action_taken_by: Handling gjort av + actions: + silence_description_html: Profilen vil kun være synlig for dem som allerede følger den eller manuelt slår den opp, noe som sterkt begrenser dens rekkevidde. Kan alltid tilbakestilles. are_you_sure: Er du sikker? assign_to_self: Tilegn til meg assigned: Tilsett moderator @@ -551,6 +558,8 @@ nn: administration: Administrasjon devops: DevOps invites: Invitasjoner + privileges: + view_devops: DevOps rules: add_new: Legg til et filter delete: Slett @@ -579,6 +588,9 @@ nn: no_status_selected: Ingen statusar vart endra sidan ingen vart valde title: Kontostatusar with_media: Med media + strikes: + actions: + silence: "%{name} begrenset %{target}s konto" system_checks: database_schema_check: message_html: Det venter på databaseoverføringer. Vennligst kjør disse for å sikre at applikasjonen oppfører seg som forventet @@ -595,6 +607,9 @@ nn: edit_preset: Endr åtvaringsoppsett title: Handsam åtvaringsoppsett admin_mailer: + new_appeal: + actions: + silence: for å begrense deres konto new_pending_account: body: Detaljer om den nye kontoen er nedenfor. Du kan godkjenne eller avvise denne søknaden. subject: Ny konto opp til vurdering på %{instance} (%{username}) @@ -671,6 +686,7 @@ nn: confirming: Ventar på stadfesting av e-post. pending: Søknaden din ventar på gjennomgang frå personalet vårt. Dette kan taka litt tid. Du får ein e-post om søknaden din vert godkjend. redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}. + view_strikes: Vis tidligere advarsler mot kontoen din use_security_key: Bruk sikkerhetsnøkkel authorize_follow: already_following: Du fylgjer allereie denne kontoen @@ -724,6 +740,11 @@ nn: more_details_html: For fleire detaljar, sjå personvernsvilkåra. username_available: Brukarnamnet ditt vert tilgjengeleg igjen username_unavailable: Brukarnamnet ditt kjem til å halda seg utilgjengeleg + disputes: + strikes: + appeal_approved: Denne advarselen ble anket og er ikke lenger gyldig + title_actions: + silence: Begrensning av konto domain_validator: invalid_domain: er ikkje eit gangbart domenenamn errors: @@ -797,6 +818,8 @@ nn: html_validator: invalid_markup: 'rommar ugild HTML-kode: %{error}' imports: + errors: + over_rows_processing_limit: inneholder flere enn %{count} rader modes: merge: Set saman merge_long: Hald på eksisterande data og legg til nye @@ -998,7 +1021,7 @@ nn: phantom_js: PhantomJS qq: QQ-lesar safari: Safari - uc_browser: UC-lesar + uc_browser: QQ-lesar weibo: Weibo current_session: Noverande økt description: "%{browser} på %{platform}" @@ -1008,7 +1031,7 @@ nn: adobe_air: Adobe Air android: Android blackberry: BlackBerry - chrome_os: Chrome OS + chrome_os: ChromeOS firefox_os: Firefox OS ios: IOS linux: Linux diff --git a/config/locales/no.yml b/config/locales/no.yml index 0e379da21a..7ce3d16d4f 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -92,14 +92,14 @@ active: Aktive all: Alle pending: Avventer - silenced: Stilnet + silenced: Begrenset suspended: Utvist title: Moderasjon moderation_notes: Moderasjonsnotater most_recent_activity: Nyligste aktivitet most_recent_ip: Nyligste IP no_account_selected: Ingen brukere ble forandret da ingen var valgt - no_limits_imposed: Ingen grenser er tatt i bruk + no_limits_imposed: Ingen pålagte begrensninger no_role_assigned: Ingen rolle tildelt not_subscribed: Ikke abonnért pending: Avventer gjennomgang @@ -140,8 +140,8 @@ show: created_reports: Rapporter laget av denne kontoen targeted_reports: Rapporter laget om denne kontoen - silence: Målbind - silenced: Stilnet + silence: Begrens + silenced: Begrenset statuses: Statuser strikes: Tidligere advarsler subscribe: Abonnere @@ -154,9 +154,9 @@ unblocked_email_msg: Fjernet blokkering av %{username} sin e-postadresse unconfirmed_email: Ubekreftet E-postadresse undo_sensitized: Gjør om tving sensitiv - undo_silenced: Angre målbinding + undo_silenced: Angre begrensning undo_suspension: Angre utvisning - unsilenced_msg: Opphevde vellykket begrensningen av %{username} sin konto + unsilenced_msg: Opphevde begrensningen av %{username}s konto unsubscribe: Avslutt abonnementet unsuspended_msg: Opphevde vellykket suspenderingen av %{username} sin konto username: Brukernavn @@ -211,11 +211,12 @@ reset_password_user: Tilbakestill passord resolve_report: Løs rapport sensitive_account: Tving sensitiv konto - silence_account: Demp konto + silence_account: Begrens konto suspend_account: Suspender kontoen unassigned_report: Fjern tilordnet rapport unblock_email_account: Fjern blokkering av e-postadresse unsensitive_account: Angre tving sensitiv konto + unsilence_account: Angre begrensning av konto unsuspend_account: Opphev suspensjonen av kontoen update_announcement: Oppdater kunngjøringen update_custom_emoji: Oppdater tilpasset Emoji @@ -244,7 +245,8 @@ destroy_user_role_html: "%{name} slettet %{target} -rolle" reject_user_html: "%{name} avslo registrering fra %{target}" reset_password_user_html: "%{name} tilbakestille passordet for brukeren %{target}" - silence_account_html: "%{name} begrenset %{target} sin konto" + silence_account_html: "%{name} begrenset %{target}s konto" + unsilence_account_html: "%{name} fjernet begrensningen av %{target}s konto" update_custom_emoji_html: "%{name} oppdaterte emoji %{target}" update_ip_block_html: "%{name} endret regel for IP %{target}" update_status_html: "%{name} oppdaterte innlegg av %{target}" @@ -330,7 +332,8 @@ destroyed_msg: Domeneblokkering har nå blitt angret domain: Domene edit: Rediger domeneblokkering - existing_domain_block_html: Du har allerede pålagt strengere begrensninger på %{name}, du kan være nødt til oppheve blokkeringen av den først. + existing_domain_block: Du har allerede pålagt strengere begrensninger på %{name}. + existing_domain_block_html: Du har allerede pålagt strengere begrensninger på %{name}, du må oppheve blokkeringen av den først. new: create: Lag blokkering hint: Domeneblokkeringen vil ikke hindre opprettelse av kontooppføringer i databasen, men vil retroaktivt og automatisk benytte spesifikke moderasjonsmetoder på de kontoene. @@ -341,11 +344,11 @@ suspend: Utvis title: Ny domeneblokkering obfuscate: Obfuskere domenenavn - obfuscate_hint: Delvis skjule domenenavnet i listen hvis det er aktivert for å annonsere listen over domenebegrensninger + obfuscate_hint: Skjul deler av domenenavnet i listen hvis annonsering av listen over domenebegrensninger er slått på private_comment: Privat kommentar - private_comment_hint: Kommenter angående denne domenebegrensningen for internt bruk av moderatorene. + private_comment_hint: Kommentar angående denne domenebegrensningen for internt bruk av moderatorene. public_comment: Offentlig kommentar - public_comment_hint: Kommenter angående denne domenebegrensningen for offentligheten, hvis publisering av domenebegrensningslisten er slått på. + public_comment_hint: Kommentar angående denne domenebegrensningen for offentligheten, hvis publisering av listen over domenebegrensninger er slått på. reject_media: Avvis mediefiler reject_media_hint: Fjerner lokalt lagrede mediefiler og nekter å laste dem ned i fremtiden. Irrelevant for utvisninger reject_reports: Avslå rapporter @@ -386,6 +389,7 @@ comment: Internt notat policies: reject_media: Avvis media + silence: Begrens reason: Offentlig årsak title: Retningslinjer for innhold dashboard: @@ -455,7 +459,7 @@ pending: Avventer overgangens godkjenning save_and_enable: Lagre og skru på setup: Sett opp en overgangsforbindelse - signatures_not_enabled: Overganger vil ikke fungere riktig mens sikkermodus eller hvitelistingsmodus er skrudd på + signatures_not_enabled: Videreformidlere vil ikke fungere riktig mens sikkermodus eller begrenset føderasjon er aktiv status: Status title: Overganger report_notes: @@ -467,6 +471,8 @@ one: "%{count} notis" other: "%{count} notiser" action_taken_by: Handling utført av + actions: + silence_description_html: Profilen vil kun være synlig for dem som allerede følger den eller manuelt slår den opp, noe som sterkt begrenser dens rekkevidde. Kan alltid tilbakestilles. are_you_sure: Er du sikker? assign_to_self: Tilegn til meg assigned: Tilegnet moderator @@ -506,6 +512,8 @@ administration: Administrasjon devops: DevOps invites: Invitasjoner + privileges: + view_devops: DevOps rules: add_new: Legg til et filter delete: Slett @@ -534,6 +542,9 @@ no_status_selected: Ingen statuser ble endret da ingen ble valgt title: Kontostatuser with_media: Med media + strikes: + actions: + silence: "%{name} begrenset %{target}s konto" system_checks: database_schema_check: message_html: Det venter på databaseoverføringer. Vennligst kjør disse for å sikre at applikasjonen oppfører seg som forventet @@ -547,6 +558,9 @@ add_new: Legg til ny delete: Slett admin_mailer: + new_appeal: + actions: + silence: for å begrense deres konto new_pending_account: body: Detaljer om den nye kontoen er nedenfor. Du kan godkjenne eller avvise denne søknaden. subject: Ny konto opp til vurdering på %{instance} (%{username}) @@ -569,7 +583,7 @@ body: Mastodon er oversatt av frivillige. guide_link_text: Alle kan bidra. sensitive_content: Sensitivt innhold - toot_layout: Tut-utseende + toot_layout: Innleggsoppsett application_mailer: notification_preferences: Endre E-postinnstillingene salutation: "%{name}," @@ -621,6 +635,7 @@ confirming: Venter på at e-postbekreftelsen er fullført. pending: Søknaden din avventer gjennomgang av styret vårt. Dette kan ta litt tid. Du vil motta en E-post dersom søknaden din blir godkjent. redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}. + view_strikes: Vis tidligere advarsler mot kontoen din use_security_key: Bruk sikkerhetsnøkkel authorize_follow: already_following: Du følger allerede denne kontoen @@ -673,6 +688,11 @@ more_details_html: For mere detaljer, se privatlivsretningslinjene. username_available: Brukernavnet ditt vil bli gjort tilgjengelig igjen username_unavailable: Brukernavnet ditt vil forbli utilgjengelig + disputes: + strikes: + appeal_approved: Denne advarselen ble anket og er ikke lenger gyldig + title_actions: + silence: Begrensning av konto domain_validator: invalid_domain: er ikke et gyldig domenenavn errors: @@ -710,6 +730,8 @@ storage: Medialagring featured_tags: add_new: Legg til ny + errors: + limit: Du har allerede fremhevet det maksimale antal hashtags hint_html: "Hva er utvalgte emneknagger? De vises frem tydelig på din offentlige profil, og lar folk bla i dine offentlige innlegg som spesifikt har de emneknaggene. De er et bra verktøy for å holde styr på kreative verk eller langtidsprosjekter." filters: contexts: @@ -740,6 +762,8 @@ one: Noe er ikke helt riktig ennå. Vennligst se etter en gang til other: Noe er ikke helt riktig ennå. Det er ennå %{count} feil å rette på imports: + errors: + over_rows_processing_limit: inneholder flere enn %{count} rader modes: merge: Slå sammen overwrite: Overskriv @@ -892,7 +916,7 @@ public_timelines: Offentlige tidslinjer reactions: errors: - limit_reached: Grensen for forskjellige reaksjoner nådd + limit_reached: Grensen for ulike reaksjoner nådd unrecognized_emoji: er ikke en gjenkjent emoji relationships: activity: Kontoaktivitet @@ -919,7 +943,7 @@ tag: 'Offentlige innlegg merket med #%{hashtag}' scheduled_statuses: over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen - over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter + over_total_limit: Du har overskredet grensen på %{limit} planlagte innlegg too_soon: Den planlagte datoen må være i fremtiden sessions: activity: Siste aktivitet @@ -950,7 +974,7 @@ adobe_air: Adobe Air android: Android blackberry: BlackBerry - chrome_os: Chrome OS + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux @@ -1007,10 +1031,10 @@ errors: in_reply_not_found: Posten du prøver å svare ser ikke ut til eksisterer. open_in_web: Åpne i nettleser - over_character_limit: grense på %{max} tegn overskredet + over_character_limit: grensen på %{max} tegn overskredet pin_errors: direct: Innlegg som bare er synlige for nevnte brukere kan ikke festes - limit: Du har allerede festet det maksimale antall tuter + limit: Du har allerede festet det maksimale antall innlegg ownership: Kun egne tuter kan festes reblog: En fremheving kan ikke festes poll: @@ -1053,6 +1077,9 @@ pinned: Festet tut reblogged: fremhevde sensitive_content: Følsomt innhold + strikes: + errors: + too_late: Det er for sent å klage på denne advarselen tags: does_not_match_previous_name: samsvarer ikke med det forrige navnet themes: diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 37c470d314..d6bf5a5314 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -806,7 +806,6 @@ oc: browser: Navigator browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -820,7 +819,6 @@ oc: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Session en cors description: "%{browser} sus %{platform}" @@ -829,8 +827,6 @@ oc: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 72bd61bd39..dc96acee79 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1,10 +1,10 @@ --- pl: about: - about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform. + about_mastodon_html: 'Sieć społecznościowa przyszłości: Bez reklam, bez inwigilacji, zaprojektowana etycznie i zdecentralizowanie! Władaj swoimi danymi z Mastodonem!' contact_missing: Nie ustawiono contact_unavailable: Nie dotyczy - hosted_on: Mastodon uruchomiony na %{domain} + hosted_on: Mastodon hostowany na %{domain} title: O nas accounts: follow: Obserwuj @@ -63,7 +63,7 @@ pl: destroyed_msg: Dane %{username} są teraz w kolejce do natychmiastowego usunięcia disable: Dezaktywuj disable_sign_in_token_auth: Wyłącz uwierzytelnianie tokenu e-mail - disable_two_factor_authentication: Wyłącz uwierzytelnianie dwuetapowe + disable_two_factor_authentication: Wyłącz uwierzytelnianie dwuskładnikowe disabled: Dezaktywowano display_name: Wyświetlana nazwa domain: Domena @@ -81,7 +81,7 @@ pl: invite_request_text: Powody rejestracji invited_by: Zaproszony(-a) przez ip: Adres IP - joined: Dołączył(-a) + joined: Dołączono location: all: Wszystkie local: Lokalne @@ -135,13 +135,13 @@ pl: resubscribe: Ponów subskrypcję role: Rola search: Szukaj - search_same_email_domain: Inni użytkownicy z e-mail w tej domenie + search_same_email_domain: Inni użytkownicy z tym samym e-mail w tej domenie search_same_ip: Inni użytkownicy z tym samym IP security_measures: only_password: Tylko hasło password_and_2fa: Hasło i 2FA sensitive: Wrażliwe - sensitized: oznaczono jako wrażliwe + sensitized: Oznaczono jako wrażliwe shared_inbox_url: Adres udostępnianej skrzynki show: created_reports: Zgłoszenia tego użytkownika @@ -259,7 +259,7 @@ pl: destroy_status_html: "%{name} usunął(-ęła) wpis użytkownika %{target}" destroy_unavailable_domain_html: "%{name} wznowił(a) doręczanie do domeny %{target}" destroy_user_role_html: "%{name} usunął rolę %{target}" - disable_2fa_user_html: "%{name} wyłączył(a) uwierzytelnianie dwustopniowe użytkownikowi %{target}" + disable_2fa_user_html: "%{name} wyłączył(a) uwierzytelnianie dwuskładnikowe użytkownikowi %{target}" disable_custom_emoji_html: "%{name} wyłączył(a) emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} wyłączył/a uwierzytelnianie tokenem e-mail dla %{target}" disable_user_html: "%{name} zablokował(a) możliwość logowania użytkownikowi %{target}" @@ -687,7 +687,7 @@ pl: view_audit_log_description: Pozwala użytkownikom zobaczyć historię działań administracyjnych na serwerze view_dashboard: Wyświetl panel view_dashboard_description: Pozwala użytkownikom na dostęp do panelu i różnych metryk - view_devops: Devops + view_devops: DevOps view_devops_description: Pozwala użytkownikom na dostęp do paneli Sidekiq i pgHero title: Role rules: @@ -1425,7 +1425,7 @@ pl: browser: Przeglądarka browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1439,7 +1439,7 @@ pl: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Browser weibo: Weibo current_session: Obecna sesja description: "%{browser} na %{platform}" @@ -1448,7 +1448,7 @@ pl: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry + blackberry: BlackBerry chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS @@ -1609,7 +1609,7 @@ pl: enabled_success: Pomyślnie aktywowano uwierzytelnianie dwuetapowe generate_recovery_codes: Generuj kody zapasowe lost_recovery_codes: Kody zapasowe pozwolą uzyskać dostęp do portalu, jeżeli utracisz dostęp do telefonu. Jeżeli utracisz dostęp do nich, możesz wygenerować je ponownie tutaj. Poprzednie zostaną unieważnione. - methods: Metody uwierzytelniania dwuetapowego + methods: Metody uwierzytelniania dwuskładnikowego otp: Aplikacja uwierzytelniająca recovery_codes: Przywróć kody zapasowe recovery_codes_regenerated: Pomyślnie wygenerowano ponownie kody zapasowe @@ -1682,7 +1682,7 @@ pl: invalid_otp_token: Kod uwierzytelniający jest niepoprawny otp_lost_help_html: Jeżeli utracisz dostęp do obu, możesz skontaktować się z %{email} seamless_external_login: Zalogowano z użyciem zewnętrznej usługi, więc ustawienia hasła i adresu e-mail nie są dostępne. - signed_in_as: 'Zalogowany jako:' + signed_in_as: 'Zalogowano jako:' verification: explanation_html: 'Możesz zweryfikować siebie jako właściciela stron, do których odnośniki znajdują się w metadanych. Aby to zrobić, strona musi zawierać odnośnik do Twojego profilu na Mastodonie. Odnośnik musi zawierać atrybut rel="me". Jego zawartość nie ma znaczenia. Przykład:' verification: Weryfikacja diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 8279f68f0e..6d3fbf60ff 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -610,7 +610,6 @@ pt-BR: other: "%{count} usuários" categories: administration: Administração - devops: Devops invites: Convites moderation: Moderação special: Especial @@ -661,7 +660,6 @@ pt-BR: view_audit_log_description: Permite aos usuários ver um histórico de ações administrativas no servidor view_dashboard: Ver painel view_dashboard_description: Permite que os usuários acessem o painel e várias métricas - view_devops: Devops view_devops_description: Permite aos usuários acessar os painéis da Sidekiq e pgHero title: Funções rules: @@ -810,6 +808,9 @@ pt-BR: trending_rank: 'Em alta #%{rank}' usable: Pode ser usado usage_comparison: Usado %{today} vezes hoje, em comparação com %{yesterday} de ontem + used_by_over_week: + one: Usado por uma pessoa na última semana + other: Usado por %{count} pessoas na última semana title: Em alta trending: Em alta warning_presets: @@ -1333,7 +1334,6 @@ pt-BR: browser: Navegador browsers: alipay: Alipay - blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1347,7 +1347,6 @@ pt-BR: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Sessão atual description: "%{browser} em %{platform}" @@ -1356,8 +1355,6 @@ pt-BR: platforms: adobe_air: Adobe Air android: Android - blackberry: BlackBerry - chrome_os: Chrome OS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index e299cee8b8..a477b07d0b 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1387,7 +1387,7 @@ pt-PT: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: Navegador UC weibo: Weibo current_session: Sessão atual description: "%{browser} em %{platform}" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index cfdceff8e8..4ad5fc83ae 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -619,7 +619,6 @@ ru: other: "%{count} пользователей" categories: administration: Администрация - devops: DevOps invites: Приглашения moderation: Модерация special: Особые @@ -653,7 +652,6 @@ ru: view_audit_log: Посмотреть журнал аудита view_audit_log_description: Позволяет пользователям просматривать историю административных действий на сервере view_dashboard: Открыть панель управления - view_devops: DevOps title: Роли rules: add_new: Добавить правило @@ -1313,7 +1311,6 @@ ru: browser: Браузер browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1327,7 +1324,6 @@ ru: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Текущая сессия description: "%{browser} на %{platform}" @@ -1336,8 +1332,6 @@ ru: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/sc.yml b/config/locales/sc.yml index bf24b2686f..00ccd22db9 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -862,7 +862,6 @@ sc: browser: Navigadore browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -876,7 +875,6 @@ sc: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser weibo: Weibo current_session: Sessione atuale description: "%{browser} de %{platform}" @@ -885,8 +883,6 @@ sc: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/si.yml b/config/locales/si.yml index 2c41e40b88..42aaf6c896 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -1194,7 +1194,6 @@ si: browser: අතිරික්සුව browsers: alipay: අලිපේ - blackberry: බ්ලැක්බෙරි chrome: ක්‍රෝම් edge: මයික්‍රොසොෆ්ට් එඩ්ගේ electron: ඉලෙක්ට්‍රෝන් @@ -1207,7 +1206,6 @@ si: otter: ඔටර් qq: කියුකියු අතිරික්සුව safari: සෆාරි - uc_browser: යූසී අතිරික්සුව weibo: වෙයිබො current_session: වත්මන් සැසිය description: "%{browser} මත %{platform}" @@ -1216,8 +1214,6 @@ si: platforms: adobe_air: ඇඩෝබි එයාර් android: ඇන්ඩ්‍රොයිඩ් - blackberry: බ්ලැක්බෙරි - chrome_os: ක්‍රෝම් ඕඑස් firefox_os: ෆයර්ෆොක්ස් ඕඑස් ios: අයිඕඑස් linux: ලිනක්ස් diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index d91d990001..301ae87646 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -64,9 +64,36 @@ ar: domain_allow: domain: سيكون بإمكان هذا النطاق جلب البيانات من هذا الخادم ومعالجة وتخزين البيانات الواردة منه email_domain_block: + domain: يمكن أن يكون هذا اسم المجال الذي يظهر في عنوان البريد الإلكتروني أو سجل MX الذي يستخدمه. سيتم التحقق منه عند التسجيل. with_dns_records: سوف تُبذل محاولة لحل سجلات DNS الخاصة بالنطاق المعني، كما ستُمنع النتائج + featured_tag: + name: 'فيما يلي بعض الوسوم التي استخدمتها مؤخراً:' + filters: + action: اختر الإجراء الذي سينفذ عند تطابق المشاركة فلتر التصفية + actions: + hide: إخفاء المحتويات التي تم تصفيتها، والتصرف كما لو أنها غير موجودة + warn: إخفاء المحتوى الذي تم تصفيته خلف تحذير يذكر عنوان الفلتر form_admin_settings: + backups_retention_period: الاحتفاظ بأرشيف المستخدم الذي تم إنشاؤه لعدد محدد من الأيام. + bootstrap_timeline_accounts: سيتم تثبيت هذه الحسابات على قمة التوصيات للمستخدمين الجدد. + closed_registrations_message: ما سيعرض عند إغلاق التسجيلات + content_cache_retention_period: سيتم حذف المشاركات من الخوادم الأخرى بعد عدد الأيام المحدد عند تعيينها إلى قيمة موجبة. قد يكون هذا لا رجعة فيه. + custom_css: يمكنك تطبيق أساليب مخصصة على نسخة الويب من ماستدون. + mascot: تجاوز الرسوم التوضيحية في واجهة الويب المتقدمة. + media_cache_retention_period: سيتم حذف ملفات الوسائط التي تم تنزيلها بعد عدد الأيام المحدد عند تعيينها إلى قيمة موجبة، وإعادة تنزيلها عند الطلب. + profile_directory: دليل الملف الشخصي يسرد جميع المستخدمين الذين اختاروا الدخول ليكونوا قابلين للاكتشاف. + require_invite_text: عندما تتطلب التسجيلات الموافقة اليدوية، اجعل إدخال النص "لماذا تريد الانضمام ؟" إلزاميا بدلا من اختياري + site_contact_email: كيف يمكن للأشخاص أن يصلوا إليك للحصول على استفسارات قانونية أو استفسارات دعم. site_contact_username: كيف يمكن للناس أن يصلوا إليك في ماستدون. + site_extended_description: أي معلومات إضافية قد تكون مفيدة للزوار والمستخدمين. يمكن تنظيمها مع بناء بنية Markdown. + site_short_description: وصف قصير للمساعدة في التعرف على الخادم الخاص بك. من يقوم بتشغيله، ولمن ؟ + site_terms: استخدم سياسة الخصوصية الخاصة بك أو اتركها فارغة لاستخدام الافتراضي. يمكن هيكلتها مع بناء الجملة المصغرة مارك داون. + site_title: كيف يمكن للناس الرجوع إلى الخادم الخاص بك إلى جانب اسم النطاق. + theme: الشكل الذي يشاهده الزوار الجدد و الغير مسجلين الدخول. + thumbnail: عرض حوالي 2:1 صورة إلى جانب معلومات الخادم الخاص بك. + timeline_preview: الزوار الذين سجلوا خروجهم سيكونون قادرين على تصفح أحدث المشاركات العامة المتاحة على الخادم. + trendable_by_default: تخطي مراجعة المحتوى التريند اليدوي. لا يزال من الممكن الإزالة اللاحقة للعناصر الفردية من التريندات. + trends: تظهر التريندز أي المشاركات وعلامات وقصص الأخبار التي تجذب الانتباه على الخادم الخاص بك. form_challenge: current_password: إنك بصدد الدخول إلى منطقة آمنة imports: @@ -91,6 +118,13 @@ ar: name: يمكنك فقط تغيير غلاف الحروف ، على سبيل المثال ، لجعلها أكثر قابلية للقراءة user: chosen_languages: إن تم اختيارها، فلن تظهر على الخيوط العامة إلّا الرسائل المنشورة في تلك اللغات + role: الوظيفة تتحكم في الصلاحيات التي يملكها المستخدم + user_role: + color: اللون الذي سيتم استخدامه للوظيفه في جميع وحدات واجهة المستخدم، كـ RGB بتنسيق hex + highlighted: وهذا يجعل الوظيفه مرئيا علنا + name: الاسم العام للوظيفه، إذا تم تعيين الوظيفه ليتم عرضه كشارة + permissions_as_keys: سيكون للمستخدمين الذين لديهم هذه الوظيفة حق الصلاحيه إلى... + position: وتقرر الوظيفة الأعلى تسوية النزاعات في حالات معينة، ولا يمكن القيام ببعض الإجراءات إلا على أساس الوظائف ذات الأولوية الأقل labels: account: fields: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 2ece2bd80e..a9c59b2efa 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -51,13 +51,13 @@ de: setting_aggregate_reblogs: Zeige denselben Beitrag nicht nochmal an, wenn er erneut geteilt wurde (dies betrifft nur neulich erhaltene erneut geteilte Beiträge) setting_always_send_emails: Normalerweise werden Benachrichtigungen nicht per E-Mail verschickt, wenn du gerade auf Mastodon aktiv bist setting_default_sensitive: Medien, die mit einer Inhaltswarnung (NSFW) versehen worden sind, werden – je nach Einstellung – erst nach einem zusätzlichen Klick angezeigt - setting_display_media_default: Verberge alle Medien, die mit einer Inhaltswarnung (NSFW) versehen sind - setting_display_media_hide_all: Alle Medien immer verstecken + setting_display_media_default: Alle Medien verbergen, die mit einer Inhaltswarnung (NSFW) versehen sind + setting_display_media_hide_all: Alle Medien immer verbergen setting_display_media_show_all: Alle Medien immer anzeigen setting_hide_network: Wem du folgst und wer dir folgt, wird in deinem Profil nicht angezeigt setting_noindex: Betrifft alle öffentlichen Daten deines Profils, z. B. deine Beiträge, Account-Empfehlungen und „Über mich“ setting_show_application: Die Anwendung die du nutzt wird in der detaillierten Ansicht deiner Beiträge angezeigt - setting_use_blurhash: Die Farbverläufe basieren auf den Farben der versteckten Medien, aber verstecken jegliche Details + setting_use_blurhash: Die Farbverläufe basieren auf den Farben der verborgenen Medien, aber verstecken jegliche Details setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken, anstatt automatisch zu scrollen username: Dein Benutzername wird auf %{domain} einzigartig sein whole_word: Wenn das Wort oder die Formulierung nur aus Buchstaben oder Zahlen besteht, tritt der Filter nur dann in Kraft, wenn er exakt dieser Zeichenfolge entspricht @@ -78,22 +78,22 @@ de: bootstrap_timeline_accounts: Diese Konten werden bei den Folge-Empfehlungen für neue Nutzerinnen und Nutzer oben angeheftet. closed_registrations_message: Wird angezeigt, wenn Anmeldungen geschlossen sind content_cache_retention_period: Beiträge von anderen Servern werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht. Dies kann eventuell nicht rückgängig gemacht werden. - custom_css: Sie können benutzerdefinierte Stile auf die Web-Version von Mastodon anwenden. + custom_css: Du kannst benutzerdefinierte Stile auf die Web-Version von Mastodon anwenden. mascot: Überschreibt die Abbildung in der erweiterten Weboberfläche. media_cache_retention_period: Heruntergeladene Mediendateien werden nach der angegebenen Anzahl von Tagen, wenn sie auf einen positiven Wert gesetzt werden, gelöscht und bei Bedarf erneut heruntergeladen. profile_directory: Das Profilverzeichnis listet alle Benutzer auf, die sich für die Auffindbarkeit entschieden haben. - require_invite_text: Wenn Anmeldungen eine manuelle Genehmigung erfordern, machen Sie die Texteingabe „Warum möchten Sie beitreten?” obligatorisch und nicht optional. - site_contact_email: Wie man Sie bei rechtlichen oder unterstützenden Fragen erreichen kann. - site_contact_username: Wie man Sie auf Mastodon erreichen kann. + require_invite_text: Wenn Registrierungen eine manuelle Genehmigung erfordern, dann werden Nutzer einen Grund für ihre Registrierung angeben müssen + site_contact_email: Wie man dich oder dein Team bei rechtlichen oder unterstützenden Fragen erreichen kann. + site_contact_username: Wie man dich oder dein Team auf Mastodon erreichen kann. site_extended_description: Alle zusätzlichen Informationen, die für Besucher und Nutzer nützlich sein könnten. Kann mit der Markdown-Syntax strukturiert werden. - site_short_description: Eine kurze Beschreibung zur eindeutigen Identifizierung Ihres Servers. Wer betreibt ihn, für wen ist er bestimmt? - site_terms: Verwenden Sie Ihre eigene Datenschutzrichtlinie oder lassen Sie sie leer, um die Standardeinstellung zu verwenden. Kann mit Markdown-Syntax strukturiert werden. - site_title: Wie Personen neben dem Domainnamen auf Ihren Server verweisen können. - theme: Design, das abgemeldete und neue Benutzer*innen. + site_short_description: Eine kurze Beschreibung zur eindeutigen Identifizierung des Servers. Wer betreibt ihn, für wen ist er bestimmt? + site_terms: Verwende eine eigene Datenschutzrichtlinie oder lasse das Feld leer, um die Standardeinstellung zu verwenden. Kann mit Markdown-Syntax strukturiert werden. + site_title: Wie Personen neben dem Domainnamen auf deinen Server verweisen können. + theme: Das Design, das abgemeldete Besucher und neue Benutzer sehen. thumbnail: Ein Bild ungefähr im 2:1-Format, das neben den Server-Informationen angezeigt wird. timeline_preview: Ausgeloggte Besucherinnen und Besucher können die neuesten öffentlichen Beiträge auf dem Server ansehen. trendable_by_default: Manuelles Überprüfen angesagter Inhalte überspringen. Einzelne Elemente können später noch aus den Trends entfernt werden. - trends: Trends zeigen, welche Beiträge, Hashtags und Nachrichten auf Ihrem Server an Bedeutung gewinnen. + trends: Trends zeigen, welche Beiträge, Hashtags und Nachrichten auf deinem Server immer beliebter werden. form_challenge: current_password: Du betrittst einen sicheren Bereich imports: @@ -197,7 +197,7 @@ de: setting_default_privacy: Beitragssichtbarkeit setting_default_sensitive: Eigene Medien immer mit einer Inhaltswarnung (NSFW) versehen setting_delete_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag gelöscht wird - setting_disable_swiping: Deaktiviere Wischgesten + setting_disable_swiping: Wischgesten deaktivieren setting_display_media: Medien-Anzeige setting_display_media_default: Standard setting_display_media_hide_all: Alle Medien verstecken @@ -211,7 +211,7 @@ de: setting_theme: Design setting_trends: Heutige Trends anzeigen setting_unfollow_modal: Bestätigungsdialog anzeigen, bevor jemandem entfolgt wird - setting_use_blurhash: Farbverlauf für versteckte Medien anzeigen + setting_use_blurhash: Farbverlauf für verborgene Medien anzeigen setting_use_pending_items: Langsamer Modus severity: Schweregrad sign_in_token_attempt: Sicherheitscode diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 0bb1264a34..342c314039 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -75,7 +75,7 @@ eo: comment: Laŭvola. Memoru, kial vi aldonis ĉi tiun regulon. severities: no_access: Bloki aliron al ĉiuj rimedoj - sign_up_requires_approval: Novaj registriĝoj devigos vian aprobon + sign_up_requires_approval: Novaj registriĝoj bezonos vian aprobon severity: Elektu, kio okazos pri petoj de ĉi tiu IP rule: text: Priskribu regulon aŭ neceson por uzantoj en ĉi tiu servilo. Provu fari ĝin mallonga kaj simpla @@ -182,6 +182,8 @@ eo: actions: hide: Kaŝi komplete warn: Kaŝi malantaŭ averto + form_admin_settings: + registrations_mode: Kiu povas krei konton interactions: must_be_follower: Bloki sciigojn de nesekvantoj must_be_following: Bloki sciigojn de homoj, kiujn vi ne sekvas diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 5196fb2c22..7d005171ac 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -12,10 +12,10 @@ admin_account_action: include_statuses: Brukeren vil se hvilke tuter som forårsaket moderator-handlingen eller -advarselen send_email_notification: Brukeren vil motta en forklaring på hva som har skjedd med deres bruker - text_html: Valgfritt. Du kan bruke tut syntaks. Du kan legge til advarsels-forhåndsinnstillinger for å spare tid + text_html: Valgfritt. Du kan bruke innlegg-syntaks. Du kan legge til advarsels-forhåndsinnstillinger for å spare tid type_html: Velg hva du vil gjøre med %{acct} types: - disable: Forhindre brukeren å bruke kontoen sin, men ikke slett eller skjule innholdet deres. + disable: Forhindre brukeren fra å bruke kontoen sin, men ikke slett eller skjul innholdet deres. none: Bruk dette for å sende en advarsel til brukeren uten å utløse noen andre handlinger. sensitive: Tving alle denne brukerens medievedlegg til å bli markert som følsom. silence: Hindre brukeren i å kunne skrive offentlig synlighet, skjule sine innlegg og varsler for personer som ikke kan følge dem. @@ -60,6 +60,7 @@ domain_allow: domain: Dette domenet vil være i stand til å hente data fra denne serveren og dets innkommende data vil bli prosessert og lagret email_domain_block: + domain: Dette kan være domenenavnet som vises i e-postadressen eller MX-oppføringen den bruker. De vil bli sjekket ved oppretting av konto. with_dns_records: Et forsøk på å løse det gitte domenets DNS-poster vil bli gjort, og resultatene vil også bli svartelistet form_challenge: current_password: Du går inn i et sikkert område @@ -104,7 +105,7 @@ disable: Deaktiver pålogging none: Ikke gjør noe sensitive: Sensitiv - silence: Stilne + silence: Begrens suspend: Suspender og ugjenkallelig slett brukerdata warning_preset_id: Bruk en advarsels-forhåndsinnstilling announcement: diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index ba8cb7e121..d2bb4dfbd7 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -77,6 +77,10 @@ pt-BR: backups_retention_period: Manter os arquivos de usuário gerados pelo número de dias especificados. bootstrap_timeline_accounts: Estas contas serão fixadas no topo das recomendações de novos usuários para seguir. closed_registrations_message: Exibido quando as inscrições estiverem fechadas + content_cache_retention_period: Postagens de outros servidores serão excluídas após o número de dias especificados, quando definido com um valor positivo. Isso pode ser irreversível. + custom_css: Você pode aplicar estilos personalizados na versão da web do Mastodon. + mascot: Substitui a ilustração na interface web avançada. + media_cache_retention_period: Os arquivos de mídia baixados serão excluídos após o número especificado de dias, quando definido para um valor positivo, e baixados novamente na demanda. site_contact_username: Como as pessoas podem chegar até você no Mastodon. site_extended_description: Quaisquer informações adicionais que possam ser úteis para os visitantes e seus usuários. Podem ser estruturadas com formato Markdown. site_title: Como as pessoas podem se referir ao seu servidor além do nome do domínio. diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml index 85c47dae98..18a3b032ff 100644 --- a/config/locales/simple_form.sk.yml +++ b/config/locales/simple_form.sk.yml @@ -52,6 +52,9 @@ sk: data: CSV súbor vyexportovaný z iného Mastodon serveru invite_request: text: Toto pomôže s vyhodnocovaním tvojej žiadosti + ip_block: + severities: + sign_up_block: Nové registrácie nebudú možné sessions: otp: 'Napíš sem dvoj-faktorový kód z telefónu, alebo použi jeden z tvojích obnovovacích kódov:' tag: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index f23712d9f9..3083f44a3b 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -33,7 +33,7 @@ th: autofollow: ผู้คนที่ลงทะเบียนผ่านคำเชิญจะติดตามคุณโดยอัตโนมัติ avatar: PNG, GIF หรือ JPG สูงสุด %{size} จะถูกย่อขนาดเป็น %{dimensions}px bot: ส่งสัญญาณให้ผู้อื่นว่าบัญชีทำการกระทำแบบอัตโนมัติเป็นหลักและอาจไม่ได้รับการสังเกตการณ์ - context: บริบทจำนวนหนึ่งหรือมากกว่าที่ตัวกรองควรใช้ + context: หนึ่งหรือหลายบริบทที่ตัวกรองควรนำไปใช้ current_password: เพื่อวัตถุประสงค์ด้านความปลอดภัย โปรดป้อนรหัสผ่านของบัญชีปัจจุบัน current_username: เพื่อยืนยัน โปรดป้อนชื่อผู้ใช้ของบัญชีปัจจุบัน digest: ส่งเฉพาะหลังจากไม่มีการใช้งานเป็นเวลานานและในกรณีที่คุณได้รับข้อความส่วนบุคคลใด ๆ เมื่อคุณไม่อยู่เท่านั้น @@ -74,17 +74,24 @@ th: hide: ซ่อนเนื้อหาที่กรองอยู่อย่างสมบูรณ์ ทำเสมือนว่าไม่มีเนื้อหาอยู่ warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง form_admin_settings: + backups_retention_period: เก็บการเก็บถาวรผู้ใช้ที่สร้างขึ้นตามจำนวนวันที่ระบุ bootstrap_timeline_accounts: จะปักหมุดบัญชีเหล่านี้ไว้ด้านบนสุดของคำแนะนำการติดตามของผู้ใช้ใหม่ closed_registrations_message: แสดงเมื่อมีการปิดการลงทะเบียน + content_cache_retention_period: จะลบโพสต์จากเซิร์ฟเวอร์อื่น ๆ หลังจากจำนวนวันที่ระบุเมื่อตั้งเป็นค่าบวก นี่อาจย้อนกลับไม่ได้ + custom_css: คุณสามารถนำไปใช้ลักษณะที่กำหนดเองใน Mastodon รุ่นเว็บ mascot: เขียนทับภาพประกอบในส่วนติดต่อเว็บขั้นสูง + media_cache_retention_period: จะลบไฟล์สื่อที่ดาวน์โหลดหลังจากจำนวนวันที่ระบุเมื่อตั้งเป็นค่าบวก และดาวน์โหลดใหม่ตามความต้องการ profile_directory: ไดเรกทอรีโปรไฟล์แสดงรายการผู้ใช้ทั้งหมดที่ได้เลือกรับให้สามารถค้นพบได้ site_contact_email: วิธีที่ผู้คนสามารถเข้าถึงคุณสำหรับการสอบถามด้านกฎหมายหรือการสนับสนุน site_contact_username: วิธีที่ผู้คนสามารถเข้าถึงคุณใน Mastodon + site_extended_description: ข้อมูลเพิ่มเติมใด ๆ ที่อาจเป็นประโยชน์กับผู้เยี่ยมชมและผู้ใช้ของคุณ สามารถจัดโครงสร้างด้วยไวยากรณ์ Markdown + site_short_description: คำอธิบายแบบสั้นเพื่อช่วยระบุเซิร์ฟเวอร์ของคุณโดยเฉพาะ ผู้ดำเนินการเซิร์ฟเวอร์ เซิร์ฟเวอร์สำหรับใคร? site_terms: ใช้นโยบายความเป็นส่วนตัวของคุณเองหรือเว้นว่างไว้เพื่อใช้ค่าเริ่มต้น สามารถจัดโครงสร้างด้วยไวยากรณ์ Markdown site_title: วิธีที่ผู้คนอาจอ้างอิงถึงเซิร์ฟเวอร์ของคุณนอกเหนือจากชื่อโดเมนของเซิร์ฟเวอร์ theme: ชุดรูปแบบที่ผู้เยี่ยมชมที่ออกจากระบบและผู้ใช้ใหม่เห็น thumbnail: แสดงภาพ 2:1 โดยประมาณควบคู่ไปกับข้อมูลเซิร์ฟเวอร์ของคุณ timeline_preview: ผู้เยี่ยมชมที่ออกจากระบบจะสามารถเรียกดูโพสต์สาธารณะล่าสุดที่มีในเซิร์ฟเวอร์ + trendable_by_default: ข้ามการตรวจทานเนื้อหาที่กำลังนิยมด้วยตนเอง ยังคงสามารถเอาแต่ละรายการออกจากแนวโน้มได้หลังเกิดเหตุ trends: แนวโน้มแสดงว่าโพสต์, แฮชแท็ก และเรื่องข่าวใดกำลังได้รับความสนใจในเซิร์ฟเวอร์ของคุณ form_challenge: current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย @@ -147,7 +154,7 @@ th: announcement: all_day: เหตุการณ์ตลอดทั้งวัน ends_at: การสิ้นสุดเหตุการณ์ - scheduled_at: จัดกำหนดการเผยแพร่ + scheduled_at: จัดกำหนดการสำหรับการเผยแพร่ starts_at: การเริ่มต้นเหตุการณ์ text: ประกาศ appeal: diff --git a/config/locales/sk.yml b/config/locales/sk.yml index e1b2ae99a6..51c4471226 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -5,6 +5,7 @@ sk: contact_missing: Nezadaný contact_unavailable: Neuvedený/á hosted_on: Mastodon hostovaný na %{domain} + title: O accounts: follow: Následuj followers: @@ -534,6 +535,7 @@ sk: didnt_get_confirmation: Neobdržal/a si kroky na potvrdenie? forgot_password: Zabudnuté heslo? invalid_reset_password_token: Token na obnovu hesla vypršal. Prosím vypítaj si nový. + log_in_with: Prihlás sa s login: Prihlás sa logout: Odhlás sa migrate_account: Presúvam sa na iný účet @@ -845,7 +847,6 @@ sk: activity: Najnovšia aktivita browser: Prehliadač browsers: - blackberry: RIM Blackberry chrome: Google Chrome firefox: Mozilla Firefox generic: Neznámy prehliadač @@ -859,7 +860,6 @@ sk: explanation: Tieto sú prehliadače ktoré sú teraz prihlásené na tvoj Mastodon účet. ip: IP adresa platforms: - chrome_os: Google ChromeOS ios: Apple iOS linux: GNU/Linux mac: MacOSX diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 4b196cbf08..7967723ae9 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -634,7 +634,7 @@ sl: two: "%{count} uporabnika" categories: administration: Upravljanje - devops: Razvojniki + devops: DevOps invites: Povabila moderation: Moderiranje special: Posebno @@ -687,7 +687,7 @@ sl: view_audit_log_description: Omogoča, da uporabnik vidi zgodovino skrbniških opravil na strežniku view_dashboard: Pokaži nadzorno ploščo view_dashboard_description: Omogoča uporabnikom, da dostopajo do nadzorne plošče in različnih meritev - view_devops: Razvojniki + view_devops: DevOps view_devops_description: Omogoča uporabnikom, da dostopajo do nadzornih plošč Sidekiq in phHero title: Vloge rules: @@ -1449,7 +1449,7 @@ sl: adobe_air: Adobe Air android: Android blackberry: BlackBerry - chrome_os: Chrome OS + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/sq.yml b/config/locales/sq.yml index ceb57ec4f8..5dfdf806cf 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1368,7 +1368,7 @@ sq: browser: Shfletues browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1382,7 +1382,7 @@ sq: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UCBrowser + uc_browser: Shfletues UC weibo: Weibo current_session: Sesioni i tanishëm description: "%{browser} në %{platform}" @@ -1391,7 +1391,7 @@ sq: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry + blackberry: BlackBerry chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 0d4b6581df..cd142af772 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -296,7 +296,6 @@ sr-Latn: activity: Poslednja aktivnost browser: Veb čitač browsers: - blackberry: Blekberi chrome: Hrom generic: Nepoznati veb čitač current_session: Trenutna sesija @@ -305,8 +304,6 @@ sr-Latn: platforms: adobe_air: Adobe Air-a android: Androida - blackberry: Blekberija - chrome_os: Hrom OS-a firefox_os: Fajerfoks OS-a linux: Linuksa mac: Mac-a diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 36bd3ebf47..acb2289e7c 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -445,7 +445,6 @@ sr: browser: Веб читач browsers: alipay: Алипеј - blackberry: Блекберија chrome: Хром edge: Мајкрософт Еџ electron: Електрон @@ -459,7 +458,6 @@ sr: phantom_js: ФантомЏејЕс qq: КјуКју Претраживач safari: Сафари - uc_browser: УЦПретраживач weibo: Веибо current_session: Тренутна сесија description: "%{browser} са %{platform}" @@ -467,8 +465,6 @@ sr: platforms: adobe_air: Адоб Ер-а android: Андроида - blackberry: Блекберија - chrome_os: Хром ОС-а firefox_os: Фајерфокс ОС-а ios: иОС-а linux: Линукса diff --git a/config/locales/sv.yml b/config/locales/sv.yml index cf311b3cb6..bd3c1693aa 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -608,7 +608,7 @@ sv: other: "%{count} användare" categories: administration: Administration - devops: Devops + devops: DevOps invites: Inbjudningar moderation: Moderering special: Särskild @@ -659,7 +659,7 @@ sv: view_audit_log_description: Tillåter användare att se historiken över administrativa åtgärder på servern view_dashboard: Visa instrumentpanel view_dashboard_description: Ger användare tillgång till instrumentpanelen och olika mätvärden - view_devops: Devops + view_devops: DevOps view_devops_description: Ger användare tillgång till instrumentpanelerna Sidekiq och pgHero title: Roller rules: @@ -1373,7 +1373,7 @@ sv: browser: Webbläsare browsers: alipay: Alipay - blackberry: Blackberry + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,7 +1387,7 @@ sv: phantom_js: PhantomJS qq: QQ browser safari: Safari - uc_browser: UCBrowser + uc_browser: UC Browser weibo: Weibo current_session: Nuvarande session description: "%{browser} på %{platform}" @@ -1396,8 +1396,8 @@ sv: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS + blackberry: BlackBerry + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/th.yml b/config/locales/th.yml index 8f5fa3ccd2..9a4c665ec6 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -11,7 +11,7 @@ th: followers: other: ผู้ติดตาม following: กำลังติดตาม - instance_actor_flash: บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ บัญชีใช้สำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการระงับ + instance_actor_flash: บัญชีนี้เป็นตัวดำเนินการเสมือนที่ใช้เพื่อเป็นตัวแทนของเซิร์ฟเวอร์เองและไม่ใช่ผู้ใช้รายบุคคลใด ๆ มีการใช้บัญชีสำหรับวัตถุประสงค์ในการติดต่อกับภายนอกและไม่ควรได้รับการระงับ last_active: ใช้งานล่าสุด link_verified_on: ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ %{date} nothing_here: ไม่มีสิ่งใดที่นี่! @@ -296,8 +296,8 @@ th: title: ประกาศใหม่ publish: เผยแพร่ published_msg: เผยแพร่ประกาศสำเร็จ! - scheduled_for: จัดกำหนดไว้สำหรับ %{time} - scheduled_msg: จัดกำหนดการเผยแพร่ประกาศแล้ว! + scheduled_for: จัดกำหนดการไว้สำหรับ %{time} + scheduled_msg: จัดกำหนดการสำหรับการเผยแพร่ประกาศแล้ว! title: ประกาศ unpublish: เลิกเผยแพร่ unpublished_msg: เลิกเผยแพร่ประกาศสำเร็จ! @@ -377,7 +377,7 @@ th: existing_domain_block_html: คุณได้กำหนดขีดจำกัดที่เข้มงวดกว่าใน %{name} ไปแล้ว คุณจำเป็นต้อง เลิกปิดกั้น ก่อน new: create: สร้างการปิดกั้น - hint: การปิดกั้นโดเมนจะไม่ป้องกันการสร้างรายการบัญชีในฐานข้อมูล แต่จะใช้วิธีการควบคุมที่เฉพาะเจาะจงกับบัญชีเหล่านั้นย้อนหลังและโดยอัตโนมัติ + hint: การปิดกั้นโดเมนจะไม่ป้องกันการสร้างรายการบัญชีในฐานข้อมูล แต่จะนำไปใช้วิธีการควบคุมที่เฉพาะเจาะจงกับบัญชีเหล่านั้นย้อนหลังและโดยอัตโนมัติ severity: desc_html: "ทำให้เงียบ จะทำให้โพสต์ของบัญชีไม่ปรากฏแก่ใครก็ตามที่ไม่ได้กำลังติดตามบัญชี ระงับ จะเอาเนื้อหา, สื่อ และข้อมูลโปรไฟล์ทั้งหมดของบัญชีออก ใช้ ไม่มี หากคุณเพียงแค่ต้องการปฏิเสธไฟล์สื่อ" noop: ไม่มี @@ -590,6 +590,7 @@ th: other: "%{count} ผู้ใช้" categories: administration: การดูแล + devops: DevOps invites: คำเชิญ moderation: การควบคุม special: พิเศษ @@ -637,6 +638,7 @@ th: view_audit_log_description: อนุญาตให้ผู้ใช้ดูประวัติการกระทำการดูแลในเซิร์ฟเวอร์ view_dashboard: ดูแดชบอร์ด view_dashboard_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ดและเมตริกต่าง ๆ + view_devops: DevOps view_devops_description: อนุญาตให้ผู้ใช้เข้าถึงแดชบอร์ด Sidekiq และ pgHero title: บทบาท rules: @@ -716,6 +718,8 @@ th: appeal_approved: อุทธรณ์แล้ว appeal_pending: รอดำเนินการการอุทธรณ์ system_checks: + database_schema_check: + message_html: มีการโยกย้ายฐานข้อมูลที่รอดำเนินการ โปรดเรียกใช้การโยกย้ายเพื่อให้แน่ใจว่าแอปพลิเคชันทำงานตามที่คาดไว้ elasticsearch_running_check: message_html: ไม่สามารถเชื่อมต่อกับ Elasticsearch โปรดตรวจสอบว่าซอฟต์แวร์กำลังทำงาน หรือปิดใช้งานการค้นหาข้อความแบบเต็ม elasticsearch_version_check: @@ -804,6 +808,8 @@ th: other: "%{count} เหตุการณ์ที่เปิดใช้งาน" events: เหตุการณ์ new: เว็บฮุคใหม่ + rotate_secret: สับเปลี่ยนข้อมูลลับ + secret: ข้อมูลลับการเซ็น status: สถานะ title: เว็บฮุค webhook: เว็บฮุค @@ -914,7 +920,7 @@ th: account_status: สถานะบัญชี confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์ functional: บัญชีของคุณทำงานได้อย่างเต็มที่ - pending: ใบสมัครของคุณกำลังรอดำเนินการตรวจทานโดยพนักงานของเรา นี่อาจใช้เวลาสักครู่ คุณจะได้รับอีเมลหากใบสมัครของคุณได้รับการอนุมัติ + pending: ใบสมัครของคุณกำลังรอดำเนินการตรวจทานโดยพนักงานของเรา นี่อาจใช้เวลาสักครู่ คุณจะได้รับอีเมลหากมีการอนุมัติใบสมัครของคุณ redirecting_to: บัญชีของคุณไม่ได้ใช้งานเนื่องจากบัญชีกำลังเปลี่ยนเส้นทางไปยัง %{acct} ในปัจจุบัน view_strikes: ดูการดำเนินการที่ผ่านมากับบัญชีของคุณ too_fast: ส่งแบบฟอร์มเร็วเกินไป ลองอีกครั้ง @@ -982,7 +988,7 @@ th: appeal_approved: อุทธรณ์การดำเนินการนี้สำเร็จและไม่มีผลบังคับอีกต่อไป appeal_rejected: ปฏิเสธการอุทธรณ์แล้ว appeal_submitted_at: ส่งการอุทธรณ์แล้ว - appealed_msg: ส่งการอุทธรณ์ของคุณแล้ว หากการอุทธรณ์ได้รับการอนุมัติ คุณจะได้รับการแจ้งเตือน + appealed_msg: ส่งการอุทธรณ์ของคุณแล้ว หากมีการอนุมัติการอุทธรณ์ คุณจะได้รับการแจ้งเตือน appeals: submit: ส่งการอุทธรณ์ approve_appeal: อนุมัติการอุทธรณ์ @@ -1042,6 +1048,8 @@ th: storage: ที่เก็บข้อมูลสื่อ featured_tags: add_new: เพิ่มใหม่ + errors: + limit: คุณได้แนะนำแฮชแท็กถึงจำนวนสูงสุดไปแล้ว filters: contexts: account: โปรไฟล์ @@ -1054,6 +1062,7 @@ th: keywords: คำสำคัญ title: แก้ไขตัวกรอง errors: + deprecated_api_multiple_keywords: ไม่สามารถเปลี่ยนพารามิเตอร์เหล่านี้จากแอปพลิเคชันนี้เนื่องจากพารามิเตอร์นำไปใช้กับคำสำคัญของตัวกรองมากกว่าหนึ่ง ใช้แอปพลิเคชันที่ใหม่กว่าหรือส่วนติดต่อเว็บ invalid_context: ไม่มีหรือบริบทที่ให้มาไม่ถูกต้อง index: contexts: กรองใน %{contexts} @@ -1074,6 +1083,7 @@ th: batch: remove: เอาออกจากตัวกรอง index: + hint: ตัวกรองนี้นำไปใช้เพื่อเลือกแต่ละโพสต์โดยไม่คำนึงถึงเกณฑ์อื่น ๆ คุณสามารถเพิ่มโพสต์เพิ่มเติมไปยังตัวกรองนี้ได้จากส่วนติดต่อเว็บ title: โพสต์ที่กรองอยู่ footer: trending_now: กำลังนิยม @@ -1239,6 +1249,7 @@ th: trillion: ล้านล้าน otp_authentication: code_hint: ป้อนรหัสที่สร้างโดยแอปตัวรับรองความถูกต้องของคุณเพื่อยืนยัน + description_html: หากคุณเปิดใช้งาน การรับรองความถูกต้องด้วยสองปัจจัย โดยใช้แอปตัวรับรองความถูกต้อง การเข้าสู่ระบบจะต้องการให้คุณอยู่ในความครอบครองโทรศัพท์ของคุณ ซึ่งจะสร้างโทเคนสำหรับให้คุณป้อน enable: เปิดใช้งาน instructions_html: "สแกนรหัส QR นี้ลงใน Google Authenticator หรือแอป TOTP ที่คล้ายกันในโทรศัพท์ของคุณ จากนี้ไป แอปนั้นจะสร้างโทเคนที่คุณจะต้องป้อนเมื่อเข้าสู่ระบบ" manual_instructions: 'หากคุณไม่สามารถสแกนรหัส QR และจำเป็นต้องป้อนรหัสด้วยตนเอง นี่คือรหัสลับแบบข้อความธรรมดา:' @@ -1298,12 +1309,15 @@ th: account: โพสต์สาธารณะจาก @%{acct} tag: 'โพสต์สาธารณะที่ได้รับการแท็ก #%{hashtag}' scheduled_statuses: - too_soon: วันที่ตามกำหนดการต้องอยู่ในอนาคต + over_daily_limit: คุณมีโพสต์ที่จัดกำหนดการไว้เกินขีดจำกัดที่ %{limit} สำหรับวันนี้ + over_total_limit: คุณมีโพสต์ที่จัดกำหนดการไว้เกินขีดจำกัดที่ %{limit} + too_soon: วันที่จัดกำหนดการต้องอยู่ในอนาคต sessions: activity: กิจกรรมล่าสุด browser: เบราว์เซอร์ browsers: alipay: Alipay + blackberry: BlackBerry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1317,6 +1331,7 @@ th: phantom_js: PhantomJS qq: เบราว์เซอร์ QQ safari: Safari + uc_browser: เบราว์เซอร์ UC weibo: Weibo current_session: เซสชันปัจจุบัน description: "%{browser} ใน %{platform}" @@ -1325,11 +1340,12 @@ th: platforms: adobe_air: Adobe Air android: Android - chrome_os: Chrome OS + blackberry: BlackBerry + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux - mac: Mac + mac: macOS other: แพลตฟอร์มที่ไม่รู้จัก windows: Windows windows_mobile: Windows Mobile @@ -1379,8 +1395,10 @@ th: errors: in_reply_not_found: ดูเหมือนว่าจะไม่มีโพสต์ที่คุณกำลังพยายามตอบกลับอยู่ open_in_web: เปิดในเว็บ + over_character_limit: เกินขีดจำกัดตัวอักษรที่ %{max} pin_errors: direct: ไม่สามารถปักหมุดโพสต์ที่ปรากฏแก่ผู้ใช้ที่กล่าวถึงเท่านั้น + limit: คุณได้ปักหมุดโพสต์ถึงจำนวนสูงสุดไปแล้ว ownership: ไม่สามารถปักหมุดโพสต์ของคนอื่น reblog: ไม่สามารถปักหมุดการดัน poll: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index b041b63f1a..cc2193a686 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -608,7 +608,6 @@ tr: other: "%{count} kullanıcı" categories: administration: Yönetim - devops: Devops invites: Davetler moderation: Denetim special: Özel @@ -659,7 +658,6 @@ tr: view_audit_log_description: Kullanıcıların sunucudaki yönetsel eylemlerin bir tarihçesini görüntülemesine izin verir view_dashboard: Ana Paneli Görüntüleme view_dashboard_description: Kullanıcıların ana panele ve çeşitli ölçütlere erişmesine izin verir - view_devops: Devops view_devops_description: Kullanıcıların Sidekiq ve pgHero panellerine erişmesine izin verir title: Roller rules: @@ -1373,7 +1371,6 @@ tr: browser: Tarayıcı browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Microsoft Edge electron: Electron @@ -1387,7 +1384,6 @@ tr: phantom_js: PhantomJS qq: QQ Browser safari: Safari - uc_browser: UC Browser weibo: Weibo current_session: Geçerli oturum description: "%{platform} - %{browser}" @@ -1396,8 +1392,6 @@ tr: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/tt.yml b/config/locales/tt.yml index 40a0207e5b..b2986602db 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -189,7 +189,6 @@ tt: browser: Браузер browsers: alipay: Аlipay - blackberry: Blаckberry chrome: Chrоme edge: Microsоft Edge electron: Electrоn @@ -202,15 +201,12 @@ tt: phantom_js: PhаntomJS qq: QQ Brоwser safari: Safаri - uc_browser: UCBrоwser weibo: Weibо description: "%{browser} - %{platform}" ip: ІР platforms: adobe_air: Adobе Air android: Andrоid - blackberry: Blаckberry - chrome_os: ChromеOS firefox_os: Firеfox OS ios: iОS linux: Lіnux diff --git a/config/locales/uk.yml b/config/locales/uk.yml index df73233dfe..94ac3f2b8a 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -634,7 +634,6 @@ uk: other: "%{count} користувача" categories: administration: Адміністрування - devops: DevOps invites: Запрошення moderation: Модерація special: Спеціальні @@ -687,7 +686,6 @@ uk: view_audit_log_description: Дозволяє користувачам бачити історію адміністративних дій на сервері view_dashboard: Переглядати панель керування view_dashboard_description: Дозволяє користувачам доступ до панелі керування та різних метрик - view_devops: DevOps view_devops_description: Дозволяє користувачам доступ до Sidekiq і панелі pgHero title: Ролі rules: @@ -1425,7 +1423,6 @@ uk: browser: Браузер browsers: alipay: Alipay - blackberry: Blackberry chrome: Хром edge: Microsoft Edge electron: Electron @@ -1439,7 +1436,6 @@ uk: phantom_js: PhantomJS qq: QQ Browser safari: Сафарі - uc_browser: UCBrowser weibo: Weibo current_session: Активна сесія description: "%{browser} на %{platform}" @@ -1448,8 +1444,6 @@ uk: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/vi.yml b/config/locales/vi.yml index f1b84de860..b3e37438f3 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -595,7 +595,6 @@ vi: other: "%{count} người" categories: administration: Quản trị viên - devops: Nhà phát triển invites: Lời mời moderation: Kiểm duyệt special: Đặc biệt @@ -645,7 +644,6 @@ vi: view_audit_log_description: Cho phép xem lịch sử của các hành động quản trị trên máy chủ view_dashboard: Xem quản trị view_dashboard_description: Cho phép truy cập trang tổng quan và các chỉ số khác - view_devops: Nhà phát triển view_devops_description: Cho phép truy cập trang tổng quan Sidekiq và pgHero title: Danh sách vai trò rules: @@ -1347,7 +1345,6 @@ vi: browser: Trình duyệt browsers: alipay: Alipay - blackberry: Blackberry chrome: Chrome edge: Edge electron: Electron @@ -1361,7 +1358,6 @@ vi: phantom_js: PhantomJS qq: QQ safari: Safari - uc_browser: UC weibo: Weibo current_session: Phiên hiện tại description: "%{browser} trên %{platform}" @@ -1370,8 +1366,6 @@ vi: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: Chrome OS firefox_os: Hệ điều hành Firefox ios: iOS linux: Linux diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index a6c75ea713..4da6b69997 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1007,7 +1007,7 @@ zh-CN: appeal: 申诉 appeal_approved: 此次处罚已申诉成功并不再生效 appeal_rejected: 此次申诉已被驳回 - appeal_submitted_at: 申诉已提交 + appeal_submitted_at: 已提出申诉 appealed_msg: 你的申诉已经提交。如果申诉通过,你将收到通知。 appeals: submit: 提交申诉 @@ -1361,7 +1361,7 @@ zh-CN: phantom_js: PhantomJS qq: QQ浏览器 safari: Safari - uc_browser: UC浏览器 + uc_browser: UC 浏览器 weibo: 新浪微博 current_session: 当前会话 description: "%{platform} 上的 %{browser}" @@ -1371,7 +1371,7 @@ zh-CN: adobe_air: Adobe Air android: Android blackberry: 黑莓 - chrome_os: Chrome OS + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index acc6de3ade..92489882d0 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -893,7 +893,6 @@ zh-HK: browser: 瀏覽器 browsers: alipay: 支付寶 - blackberry: 黑莓機 chrome: Chrome 瀏覽器 edge: Microsoft Edge 瀏覽器 electron: Electron 瀏覽器 @@ -907,7 +906,6 @@ zh-HK: phantom_js: PhantomJS 瀏覽器 qq: QQ瀏覽器 safari: Safari 瀏覽器 - uc_browser: UC瀏覽器 weibo: 新浪微博 current_session: 目前的作業階段 description: "%{platform} 上的 %{browser}" @@ -916,8 +914,6 @@ zh-HK: platforms: adobe_air: Adobe Air android: Android - blackberry: Blackberry - chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 5953c2275b..c9596c0403 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -597,7 +597,7 @@ zh-TW: other: "%{count} 個使用者" categories: administration: 管理員 - devops: Devops + devops: DevOps invites: 邀請 moderation: 站務 special: 特殊 @@ -647,7 +647,7 @@ zh-TW: view_audit_log_description: 允許使用者檢視伺服器上的管理動作歷史 view_dashboard: 檢視儀表板 view_dashboard_description: 允許使用者存取儀表板與各種指標 - view_devops: Devops + view_devops: DevOps view_devops_description: 允許使用者存取 Sidekiq 與 pgHero 儀表板 title: 角色 rules: @@ -1349,7 +1349,6 @@ zh-TW: browser: 瀏覽器 browsers: alipay: 支付寶 - blackberry: 黑莓機 chrome: Chrome 瀏覽器 edge: Microsoft Edge 瀏覽器 electron: Electron 瀏覽器 @@ -1372,8 +1371,7 @@ zh-TW: platforms: adobe_air: Adobe Air android: Android - blackberry: 黑莓機 (Blackberry) - chrome_os: Chrome OS + chrome_os: ChromeOS firefox_os: Firefox OS ios: iOS linux: Linux From 1af482659d6f3094934a202c6394247c491d514c Mon Sep 17 00:00:00 2001 From: Arthur Isac <94634250+v-aisac@users.noreply.github.com> Date: Sun, 13 Nov 2022 21:58:40 +0200 Subject: [PATCH 435/500] Copied Spaces support from packer .rake (#20573) --- lib/tasks/mastodon.rake | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 3ec685c743..c1e5bd2b45 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -142,7 +142,40 @@ namespace :mastodon do prompt.say "\n" if prompt.yes?('Do you want to store uploaded files on the cloud?', default: false) - case prompt.select('Provider', ['Amazon S3', 'Wasabi', 'Minio', 'Google Cloud Storage']) + case prompt.select('Provider', ['DigitalOcean Spaces', 'Amazon S3', 'Wasabi', 'Minio', 'Google Cloud Storage']) + when 'DigitalOcean Spaces' + env['S3_ENABLED'] = 'true' + env['S3_PROTOCOL'] = 'https' + + env['S3_BUCKET'] = prompt.ask('Space name:') do |q| + q.required true + q.default "files.#{env['LOCAL_DOMAIN']}" + q.modify :strip + end + + env['S3_REGION'] = prompt.ask('Space region:') do |q| + q.required true + q.default 'nyc3' + q.modify :strip + end + + env['S3_HOSTNAME'] = prompt.ask('Space endpoint:') do |q| + q.required true + q.default 'nyc3.digitaloceanspaces.com' + q.modify :strip + end + + env['S3_ENDPOINT'] = "https://#{env['S3_HOSTNAME']}" + + env['AWS_ACCESS_KEY_ID'] = prompt.ask('Space access key:') do |q| + q.required true + q.modify :strip + end + + env['AWS_SECRET_ACCESS_KEY'] = prompt.ask('Space secret key:') do |q| + q.required true + q.modify :strip + end when 'Amazon S3' env['S3_ENABLED'] = 'true' env['S3_PROTOCOL'] = 'https' From 3d3bd344cb30929756e4b6ddcadddb20e16d172f Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 13 Nov 2022 20:58:54 +0100 Subject: [PATCH 436/500] Fix announcement dates not being validated client-side (#20577) --- app/views/admin/announcements/edit.html.haml | 2 +- app/views/admin/announcements/new.html.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/admin/announcements/edit.html.haml b/app/views/admin/announcements/edit.html.haml index e20a839b95..66c8d31a79 100644 --- a/app/views/admin/announcements/edit.html.haml +++ b/app/views/admin/announcements/edit.html.haml @@ -4,7 +4,7 @@ - content_for :header_tags do = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' -= simple_form_for @announcement, url: admin_announcement_path(@announcement) do |f| += simple_form_for @announcement, url: admin_announcement_path(@announcement), html: { novalidate: false } do |f| = render 'shared/error_messages', object: @announcement .fields-group diff --git a/app/views/admin/announcements/new.html.haml b/app/views/admin/announcements/new.html.haml index d5881b7aa1..57b7d5e0c6 100644 --- a/app/views/admin/announcements/new.html.haml +++ b/app/views/admin/announcements/new.html.haml @@ -4,7 +4,7 @@ - content_for :header_tags do = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' -= simple_form_for @announcement, url: admin_announcements_path do |f| += simple_form_for @announcement, url: admin_announcements_path, html: { novalidate: false } do |f| = render 'shared/error_messages', object: @announcement .fields-group From cd5e98dbdb33a26c93c6bd81c6b1c74369befc25 Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 13 Nov 2022 20:59:49 +0100 Subject: [PATCH 437/500] Fix public/local timeline posts not being properly filtered (#20567) * Fix streaming server using wrong property name for matching filters Late in the PR, the `filter_results` property has been renamed to `filtered`, but the change has not been reflected in the streaming server code. * Fix filter_action attribute being an integer instead of a string --- streaming/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/streaming/index.js b/streaming/index.js index a55181bad2..f8857ae532 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -681,7 +681,7 @@ const startWorker = async (workerId) => { queries.push(client.query('SELECT 1 FROM account_domain_blocks WHERE account_id = $1 AND domain = $2', [req.accountId, accountDomain])); } - if (!unpackedPayload.filter_results && !req.cachedFilters) { + if (!unpackedPayload.filtered && !req.cachedFilters) { queries.push(client.query('SELECT filter.id AS id, filter.phrase AS title, filter.context AS context, filter.expires_at AS expires_at, filter.action AS filter_action, keyword.keyword AS keyword, keyword.whole_word AS whole_word FROM custom_filter_keywords keyword JOIN custom_filters filter ON keyword.custom_filter_id = filter.id WHERE filter.account_id = $1 AND filter.expires_at IS NULL OR filter.expires_at > NOW()', [req.accountId])); } @@ -692,7 +692,7 @@ const startWorker = async (workerId) => { return; } - if (!unpackedPayload.filter_results && !req.cachedFilters) { + if (!unpackedPayload.filtered && !req.cachedFilters) { const filterRows = values[accountDomain ? 2 : 1].rows; req.cachedFilters = filterRows.reduce((cache, row) => { @@ -707,7 +707,7 @@ const startWorker = async (workerId) => { title: row.title, context: row.context, expires_at: row.expires_at, - filter_action: row.filter_action, + filter_action: ['warn', 'hide'][row.filter_action], }, }; } @@ -735,18 +735,18 @@ const startWorker = async (workerId) => { } // Check filters - if (req.cachedFilters && !unpackedPayload.filter_results) { + if (req.cachedFilters && !unpackedPayload.filtered) { const status = unpackedPayload; const searchContent = ([status.spoiler_text || '', status.content].concat((status.poll && status.poll.options) ? status.poll.options.map(option => option.title) : [])).concat(status.media_attachments.map(att => att.description)).join('\n\n').replace(//g, '\n').replace(/<\/p>

      /g, '\n\n'); const searchIndex = JSDOM.fragment(searchContent).textContent; const now = new Date(); - payload.filter_results = []; + payload.filtered = []; Object.values(req.cachedFilters).forEach((cachedFilter) => { if ((cachedFilter.expires_at === null || cachedFilter.expires_at > now)) { const keyword_matches = searchIndex.match(cachedFilter.regexp); if (keyword_matches) { - payload.filter_results.push({ + payload.filtered.push({ filter: cachedFilter.repr, keyword_matches, }); From a6186da983edcf00e92950dae188123c66c1205d Mon Sep 17 00:00:00 2001 From: Nicholas La Roux Date: Mon, 14 Nov 2022 05:00:38 +0900 Subject: [PATCH 438/500] Clean up GitHub sourced gem entry (#20542) --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 34899967b3..07c300510c 100644 --- a/Gemfile +++ b/Gemfile @@ -92,7 +92,7 @@ gem 'tty-prompt', '~> 0.23', require: false gem 'twitter-text', '~> 3.1.0' gem 'tzinfo-data', '~> 1.2022' gem 'webpacker', '~> 5.4' -gem 'webpush', git: 'https://github.com/ClearlyClaire/webpush.git', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9' +gem 'webpush', github: 'ClearlyClaire/webpush', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9' gem 'webauthn', '~> 2.5' gem 'json-ld' From bd806a3090f793b8a967d79e06019ec0a3ad17bf Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 13 Nov 2022 21:01:38 +0100 Subject: [PATCH 439/500] Update fix-duplicates (#20502) Fixes #19133 --- lib/mastodon/maintenance_cli.rb | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/mastodon/maintenance_cli.rb b/lib/mastodon/maintenance_cli.rb index 6e5242bffd..0b5049c14f 100644 --- a/lib/mastodon/maintenance_cli.rb +++ b/lib/mastodon/maintenance_cli.rb @@ -14,7 +14,7 @@ module Mastodon end MIN_SUPPORTED_VERSION = 2019_10_01_213028 # rubocop:disable Style/NumericLiterals - MAX_SUPPORTED_VERSION = 2022_03_16_233212 # rubocop:disable Style/NumericLiterals + MAX_SUPPORTED_VERSION = 2022_11_04_133904 # rubocop:disable Style/NumericLiterals # Stubs to enjoy ActiveRecord queries while not depending on a particular # version of the code/database @@ -45,6 +45,7 @@ module Mastodon class FollowRecommendationSuppression < ApplicationRecord; end class CanonicalEmailBlock < ApplicationRecord; end class Appeal < ApplicationRecord; end + class Webhook < ApplicationRecord; end class PreviewCard < ApplicationRecord self.inheritance_column = false @@ -182,6 +183,7 @@ module Mastodon deduplicate_accounts! deduplicate_tags! deduplicate_webauthn_credentials! + deduplicate_webhooks! Scenic.database.refresh_materialized_view('instances', concurrently: true, cascade: false) if ActiveRecord::Migrator.current_version >= 2020_12_06_004238 Rails.cache.clear @@ -497,6 +499,7 @@ module Mastodon def deduplicate_tags! remove_index_if_exists!(:tags, 'index_tags_on_name_lower') + remove_index_if_exists!(:tags, 'index_tags_on_lower_btree') @prompt.say 'Deduplicating tags…' ActiveRecord::Base.connection.select_all("SELECT string_agg(id::text, ',') AS ids FROM tags GROUP BY lower((name)::text) HAVING count(*) > 1").each do |row| @@ -509,11 +512,10 @@ module Mastodon end @prompt.say 'Restoring tags indexes…' - ActiveRecord::Base.connection.add_index :tags, 'lower((name)::text)', name: 'index_tags_on_name_lower', unique: true - - if ActiveRecord::Base.connection.indexes(:tags).any? { |i| i.name == 'index_tags_on_name_lower_btree' } - @prompt.say 'Reindexing textual indexes on tags…' - ActiveRecord::Base.connection.execute('REINDEX INDEX index_tags_on_name_lower_btree;') + if ActiveRecord::Migrator.current_version < 20210421121431 + ActiveRecord::Base.connection.add_index :tags, 'lower((name)::text)', name: 'index_tags_on_name_lower', unique: true + else + ActiveRecord::Base.connection.execute 'CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower_btree ON tags (lower(name) text_pattern_ops)' end end @@ -531,6 +533,20 @@ module Mastodon ActiveRecord::Base.connection.add_index :webauthn_credentials, ['external_id'], name: 'index_webauthn_credentials_on_external_id', unique: true end + def deduplicate_webhooks! + return unless ActiveRecord::Base.connection.table_exists?(:webhooks) + + remove_index_if_exists!(:webhooks, 'index_webhooks_on_url') + + @prompt.say 'Deduplicating webhooks…' + ActiveRecord::Base.connection.select_all("SELECT string_agg(id::text, ',') AS ids FROM webhooks GROUP BY url HAVING count(*) > 1").each do |row| + Webhooks.where(id: row['ids'].split(',')).sort_by(&:id).reverse.drop(1).each(&:destroy) + end + + @prompt.say 'Restoring webhooks indexes…' + ActiveRecord::Base.connection.add_index :webhooks, ['url'], name: 'index_webhooks_on_url', unique: true + end + def deduplicate_local_accounts!(accounts) accounts = accounts.sort_by(&:id).reverse From c2231539c78103e000ef5edeeade9d3bbe54ac8d Mon Sep 17 00:00:00 2001 From: Emily Strickland Date: Sun, 13 Nov 2022 12:02:09 -0800 Subject: [PATCH 440/500] Test blank account field verifiability (#20458) * Test blank account field verifiability This change tests the need for #20428, which ensures that we guard against a situation in which `at_xpath` returns `nil`. * Test verifiability of blank fields for remote account profiles This adds a counterpart test for remote account profiles' fields' verifiability when those fields are blank. I previously added the same test for local accounts. --- spec/models/account/field_spec.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/spec/models/account/field_spec.rb b/spec/models/account/field_spec.rb index fcb2a884a1..b4beec0483 100644 --- a/spec/models/account/field_spec.rb +++ b/spec/models/account/field_spec.rb @@ -89,6 +89,14 @@ RSpec.describe Account::Field, type: :model do expect(subject.verifiable?).to be false end end + + context 'for text which is blank' do + let(:value) { '' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end end context 'for remote accounts' do @@ -133,6 +141,14 @@ RSpec.describe Account::Field, type: :model do expect(subject.verifiable?).to be false end end + + context 'for text which is blank' do + let(:value) { '' } + + it 'returns false' do + expect(subject.verifiable?).to be false + end + end end end end From e62b514e958ca2bfc08944b2368c6d41417f9e8a Mon Sep 17 00:00:00 2001 From: Samuel Kaiser Date: Sun, 13 Nov 2022 21:02:28 +0100 Subject: [PATCH 441/500] Stick batch table toolbar to the top (#20442) Fixes #20441 --- app/javascript/styles/mastodon/tables.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index 39211910fb..b644b38f15 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -178,6 +178,9 @@ a.table-action-link { } &__toolbar { + position: sticky; + top: 0; + z-index: 1; border: 1px solid darken($ui-base-color, 8%); background: $ui-base-color; border-radius: 4px 0 0; From 82c663300a90f83ac2ff0f3652fd536caac2364f Mon Sep 17 00:00:00 2001 From: Alex Nordlund Date: Sun, 13 Nov 2022 21:05:30 +0100 Subject: [PATCH 442/500] Helm: support statsd publishing (#20455) * Allow statsd publishing from Helm * Apply suggestions from code review Co-authored-by: Erik Sundell Co-authored-by: Erik Sundell --- chart/templates/configmap-env.yaml | 3 +++ chart/values.yaml | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml index 00e60f3157..82a6a31e4a 100644 --- a/chart/templates/configmap-env.yaml +++ b/chart/templates/configmap-env.yaml @@ -310,3 +310,6 @@ data: LDAP_UID_CONVERSION_REPLACE: {{ .Values.externalAuth.ldap.uid_conversion.replace }} {{- end }} {{- end }} + {{- with .Values.mastodon.metrics.statsd.address }} + STATSD_ADDR: {{ . }} + {{- end }} diff --git a/chart/values.yaml b/chart/values.yaml index 5cee86e0ec..af1c7cbfc7 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -101,6 +101,11 @@ mastodon: web: port: 3000 + metrics: + statsd: + # Enable statsd publishing via STATSD_ADDR environment variable + address: "" + ingress: enabled: true annotations: From ad66bbed6291fa1cd3aee21e184d3ec7610688fa Mon Sep 17 00:00:00 2001 From: Cees-Jan Kiewiet Date: Sun, 13 Nov 2022 12:06:03 -0800 Subject: [PATCH 443/500] Add the option to configure external postgresql port (#20370) While the normal assumption of port `5432` for a postgresql server is pretty reliable I found that DigitalOcean puts them on a somewhat random port. This adds the ability to specify the port in the helm chart. --- chart/Chart.yaml | 2 +- chart/templates/configmap-env.yaml | 3 ++- chart/values.yaml | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/chart/Chart.yaml b/chart/Chart.yaml index c8ed0c9f97..7080095f2d 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 2.2.0 +version: 2.3.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml index 82a6a31e4a..5d0b96db8a 100644 --- a/chart/templates/configmap-env.yaml +++ b/chart/templates/configmap-env.yaml @@ -7,12 +7,13 @@ metadata: data: {{- if .Values.postgresql.enabled }} DB_HOST: {{ template "mastodon.postgresql.fullname" . }} + DB_PORT: "5432" {{- else }} DB_HOST: {{ .Values.postgresql.postgresqlHostname }} + DB_PORT: {{ .Values.postgresql.postgresqlPort | default "5432" | quote }} {{- end }} DB_NAME: {{ .Values.postgresql.auth.database }} DB_POOL: {{ .Values.mastodon.sidekiq.concurrency | quote }} - DB_PORT: "5432" DB_USER: {{ .Values.postgresql.auth.username }} DEFAULT_LOCALE: {{ .Values.mastodon.locale }} {{- if .Values.elasticsearch.enabled }} diff --git a/chart/values.yaml b/chart/values.yaml index af1c7cbfc7..07171fc1a8 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -149,6 +149,7 @@ postgresql: # must match those of that external postgres instance enabled: true # postgresqlHostname: preexisting-postgresql + # postgresqlPort: 5432 auth: database: mastodon_production username: mastodon From 07229089a63151a941e3bf9ff8e2fb5037b14b43 Mon Sep 17 00:00:00 2001 From: trwnh Date: Sun, 13 Nov 2022 14:10:20 -0600 Subject: [PATCH 444/500] Change in-app links to keep you in-app (#20540) * Change in-app links to keep you in-app * refactor Permalink into Link * rewrite link hrefs in status content * please linter * please linter again --- app/javascript/mastodon/components/account.js | 6 +-- .../mastodon/components/admin/Trends.js | 2 +- app/javascript/mastodon/components/hashtag.js | 10 ++--- .../mastodon/components/permalink.js | 40 ------------------- app/javascript/mastodon/components/status.js | 8 ++-- .../mastodon/components/status_content.js | 8 ++-- .../account/components/featured_tags.js | 1 - .../account_gallery/components/media_item.js | 2 +- .../account_timeline/components/moved_note.js | 8 ++-- .../compose/components/navigation_bar.js | 10 ++--- .../compose/components/reply_indicator.js | 2 +- .../components/conversation.js | 4 +- .../directory/components/account_card.js | 6 +-- .../components/account.js | 6 +-- .../components/account_authorize.js | 6 +-- .../components/follow_request.js | 6 +-- .../notifications/components/notification.js | 6 +-- .../picture_in_picture/components/footer.js | 2 +- .../status/components/detailed_status.js | 4 +- .../features/ui/components/boost_modal.js | 4 +- .../mastodon/features/ui/components/header.js | 5 +-- 21 files changed, 52 insertions(+), 94 deletions(-) delete mode 100644 app/javascript/mastodon/components/permalink.js diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 51d2b8ba2c..7aebb124cb 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -3,13 +3,13 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import Avatar from './avatar'; import DisplayName from './display_name'; -import Permalink from './permalink'; import IconButton from './icon_button'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { me } from '../initial_state'; import RelativeTimestamp from './relative_timestamp'; import Skeleton from 'mastodon/components/skeleton'; +import { Link } from 'react-router-dom'; const messages = defineMessages({ follow: { id: 'account.follow', defaultMessage: 'Follow' }, @@ -140,11 +140,11 @@ class Account extends ImmutablePureComponent { return (

      - +
      {mute_expires_at} -
      +
      {buttons} diff --git a/app/javascript/mastodon/components/admin/Trends.js b/app/javascript/mastodon/components/admin/Trends.js index 635bdf37d5..9530c2a5be 100644 --- a/app/javascript/mastodon/components/admin/Trends.js +++ b/app/javascript/mastodon/components/admin/Trends.js @@ -50,7 +50,7 @@ export default class Trends extends React.PureComponent { day.uses)} diff --git a/app/javascript/mastodon/components/hashtag.js b/app/javascript/mastodon/components/hashtag.js index 75220211ec..e516fc0867 100644 --- a/app/javascript/mastodon/components/hashtag.js +++ b/app/javascript/mastodon/components/hashtag.js @@ -4,7 +4,7 @@ import { Sparklines, SparklinesCurve } from 'react-sparklines'; import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import Permalink from './permalink'; +import { Link } from 'react-router-dom'; import ShortNumber from 'mastodon/components/short_number'; import Skeleton from 'mastodon/components/skeleton'; import classNames from 'classnames'; @@ -53,7 +53,6 @@ export const accountsCountRenderer = (displayNumber, pluralReady) => ( export const ImmutableHashtag = ({ hashtag }) => ( day.get('uses')).toArray()} @@ -64,12 +63,12 @@ ImmutableHashtag.propTypes = { hashtag: ImmutablePropTypes.map.isRequired, }; -const Hashtag = ({ name, href, to, people, uses, history, className, description, withGraph }) => ( +const Hashtag = ({ name, to, people, uses, history, className, description, withGraph }) => (
      - + {name ? #{name} : } - + {description ? ( {description} @@ -98,7 +97,6 @@ const Hashtag = ({ name, href, to, people, uses, history, className, description Hashtag.propTypes = { name: PropTypes.string, - href: PropTypes.string, to: PropTypes.string, people: PropTypes.number, description: PropTypes.node, diff --git a/app/javascript/mastodon/components/permalink.js b/app/javascript/mastodon/components/permalink.js deleted file mode 100644 index b369e98126..0000000000 --- a/app/javascript/mastodon/components/permalink.js +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; - -export default class Permalink extends React.PureComponent { - - static contextTypes = { - router: PropTypes.object, - }; - - static propTypes = { - className: PropTypes.string, - href: PropTypes.string.isRequired, - to: PropTypes.string.isRequired, - children: PropTypes.node, - onInterceptClick: PropTypes.func, - }; - - handleClick = e => { - if (this.props.onInterceptClick && this.props.onInterceptClick()) { - e.preventDefault(); - return; - } - - if (this.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) { - e.preventDefault(); - this.context.router.history.push(this.props.to); - } - } - - render () { - const { href, children, className, onInterceptClick, ...other } = this.props; - - return ( - - {children} - - ); - } - -} diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index d1235550fe..a1384ba583 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -378,7 +378,7 @@ class Status extends ImmutablePureComponent { prepend = (
      - }} /> + }} />
      ); @@ -392,7 +392,7 @@ class Status extends ImmutablePureComponent { prepend = (
      - }} /> + }} />
      ); } @@ -511,12 +511,12 @@ class Status extends ImmutablePureComponent {
      - + {status.get('edited_at') && *} - +
      {statusAvatar}
      diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 139e8ed16e..2a933c0a74 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -2,7 +2,7 @@ import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import { FormattedMessage, injectIntl } from 'react-intl'; -import Permalink from './permalink'; +import { Link } from 'react-router-dom'; import classnames from 'classnames'; import PollContainer from 'mastodon/containers/poll_container'; import Icon from 'mastodon/components/icon'; @@ -91,8 +91,10 @@ class StatusContent extends React.PureComponent { if (mention) { link.addEventListener('click', this.onMentionClick.bind(this, mention), false); link.setAttribute('title', mention.get('acct')); + link.setAttribute('href', `/@${mention.get('acct')}`); } else if (link.textContent[0] === '#' || (link.previousSibling && link.previousSibling.textContent && link.previousSibling.textContent[link.previousSibling.textContent.length - 1] === '#')) { link.addEventListener('click', this.onHashtagClick.bind(this, link.text), false); + link.setAttribute('href', `/tags/${link.text.slice(1)}`); } else { link.setAttribute('title', link.href); link.classList.add('unhandled-link'); @@ -242,9 +244,9 @@ class StatusContent extends React.PureComponent { let mentionsPlaceholder = ''; const mentionLinks = status.get('mentions').map(item => ( - + @{item.get('username')} - + )).reduce((aggregate, item) => [...aggregate, item, ' '], []); const toggleText = hidden ? : ; diff --git a/app/javascript/mastodon/features/account/components/featured_tags.js b/app/javascript/mastodon/features/account/components/featured_tags.js index 8194c063a2..24a3f21714 100644 --- a/app/javascript/mastodon/features/account/components/featured_tags.js +++ b/app/javascript/mastodon/features/account/components/featured_tags.js @@ -39,7 +39,6 @@ class FeaturedTags extends ImmutablePureComponent { -
      +
      - +
      -
      + - +
      ); diff --git a/app/javascript/mastodon/features/compose/components/navigation_bar.js b/app/javascript/mastodon/features/compose/components/navigation_bar.js index 372765ca4d..be979af505 100644 --- a/app/javascript/mastodon/features/compose/components/navigation_bar.js +++ b/app/javascript/mastodon/features/compose/components/navigation_bar.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ActionBar from './action_bar'; import Avatar from '../../../components/avatar'; -import Permalink from '../../../components/permalink'; +import { Link } from 'react-router-dom'; import IconButton from '../../../components/icon_button'; import { FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; @@ -19,15 +19,15 @@ export default class NavigationBar extends ImmutablePureComponent { render () { return (
      - + {this.props.account.get('acct')} - + diff --git a/app/javascript/mastodon/features/compose/components/reply_indicator.js b/app/javascript/mastodon/features/compose/components/reply_indicator.js index 863defb768..fc236882ad 100644 --- a/app/javascript/mastodon/features/compose/components/reply_indicator.js +++ b/app/javascript/mastodon/features/compose/components/reply_indicator.js @@ -50,7 +50,7 @@ class ReplyIndicator extends ImmutablePureComponent {
      - +
      diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversation.js b/app/javascript/mastodon/features/direct_timeline/components/conversation.js index 77ff2ce7b3..4a770970d0 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversation.js +++ b/app/javascript/mastodon/features/direct_timeline/components/conversation.js @@ -7,7 +7,7 @@ import AttachmentList from 'mastodon/components/attachment_list'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container'; import AvatarComposite from 'mastodon/components/avatar_composite'; -import Permalink from 'mastodon/components/permalink'; +import { Link } from 'react-router-dom'; import IconButton from 'mastodon/components/icon_button'; import RelativeTimestamp from 'mastodon/components/relative_timestamp'; import { HotKeys } from 'react-hotkeys'; @@ -133,7 +133,7 @@ class Conversation extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDelete }); - const names = accounts.map(a => ).reduce((prev, cur) => [prev, ', ', cur]); + const names = accounts.map(a => ).reduce((prev, cur) => [prev, ', ', cur]); const handlers = { reply: this.handleReply, diff --git a/app/javascript/mastodon/features/directory/components/account_card.js b/app/javascript/mastodon/features/directory/components/account_card.js index e7eeb22548..977f0c32c9 100644 --- a/app/javascript/mastodon/features/directory/components/account_card.js +++ b/app/javascript/mastodon/features/directory/components/account_card.js @@ -6,7 +6,7 @@ import { connect } from 'react-redux'; import { makeGetAccount } from 'mastodon/selectors'; import Avatar from 'mastodon/components/avatar'; import DisplayName from 'mastodon/components/display_name'; -import Permalink from 'mastodon/components/permalink'; +import { Link } from 'react-router-dom'; import Button from 'mastodon/components/button'; import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; import { autoPlayGif, me, unfollowModal } from 'mastodon/initial_state'; @@ -169,7 +169,7 @@ class AccountCard extends ImmutablePureComponent { return (
      - +
      - + {account.get('note').length > 0 && (
      - +
      {getFirstSentence(account.get('note_plain'))}
      -
      +
      {button} diff --git a/app/javascript/mastodon/features/follow_requests/components/account_authorize.js b/app/javascript/mastodon/features/follow_requests/components/account_authorize.js index 263a7ae162..d41f331e5e 100644 --- a/app/javascript/mastodon/features/follow_requests/components/account_authorize.js +++ b/app/javascript/mastodon/features/follow_requests/components/account_authorize.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import Permalink from '../../../components/permalink'; +import { Link } from 'react-router-dom'; import Avatar from '../../../components/avatar'; import DisplayName from '../../../components/display_name'; import IconButton from '../../../components/icon_button'; @@ -30,10 +30,10 @@ class AccountAuthorize extends ImmutablePureComponent { return (
      - +
      -
      +
      diff --git a/app/javascript/mastodon/features/notifications/components/follow_request.js b/app/javascript/mastodon/features/notifications/components/follow_request.js index 9ef3fde7eb..08de875e36 100644 --- a/app/javascript/mastodon/features/notifications/components/follow_request.js +++ b/app/javascript/mastodon/features/notifications/components/follow_request.js @@ -3,7 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import Avatar from 'mastodon/components/avatar'; import DisplayName from 'mastodon/components/display_name'; -import Permalink from 'mastodon/components/permalink'; +import { Link } from 'react-router-dom'; import IconButton from 'mastodon/components/icon_button'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; @@ -42,10 +42,10 @@ class FollowRequest extends ImmutablePureComponent { return (
      - +
      -
      +
      diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js index 5974e378e4..ea2c9c0a42 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.js +++ b/app/javascript/mastodon/features/notifications/components/notification.js @@ -10,7 +10,7 @@ import AccountContainer from 'mastodon/containers/account_container'; import Report from './report'; import FollowRequestContainer from '../containers/follow_request_container'; import Icon from 'mastodon/components/icon'; -import Permalink from 'mastodon/components/permalink'; +import { Link } from 'react-router-dom'; import classNames from 'classnames'; const messages = defineMessages({ @@ -378,7 +378,7 @@ class Notification extends ImmutablePureComponent { const targetAccount = report.get('target_account'); const targetDisplayNameHtml = { __html: targetAccount.get('display_name_html') }; - const targetLink = ; + const targetLink = ; return ( @@ -403,7 +403,7 @@ class Notification extends ImmutablePureComponent { const { notification } = this.props; const account = notification.get('account'); const displayNameHtml = { __html: account.get('display_name_html') }; - const link = ; + const link = ; switch(notification.get('type')) { case 'follow': diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.js b/app/javascript/mastodon/features/picture_in_picture/components/footer.js index 5b875dc302..0dff834c3d 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.js +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.js @@ -184,7 +184,7 @@ class Footer extends ImmutablePureComponent { - {withOpenButton && } + {withOpenButton && }
      ); } diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index 1a2aab8192..c62910e0ee 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -261,7 +261,7 @@ class DetailedStatus extends ImmutablePureComponent { return (
      - +
      @@ -276,7 +276,7 @@ class DetailedStatus extends ImmutablePureComponent { {media}
      - + {edited}{visibilityLink}{applicationLink}{reblogLink} · {favouriteLink}
      diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.js b/app/javascript/mastodon/features/ui/components/boost_modal.js index d7a6d711ea..077ce7b35c 100644 --- a/app/javascript/mastodon/features/ui/components/boost_modal.js +++ b/app/javascript/mastodon/features/ui/components/boost_modal.js @@ -98,12 +98,12 @@ class BoostModal extends ImmutablePureComponent {
      - + - +
      diff --git a/app/javascript/mastodon/features/ui/components/header.js b/app/javascript/mastodon/features/ui/components/header.js index a1c281315c..4e109080ee 100644 --- a/app/javascript/mastodon/features/ui/components/header.js +++ b/app/javascript/mastodon/features/ui/components/header.js @@ -4,16 +4,15 @@ import { Link, withRouter } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; import { registrationsOpen, me } from 'mastodon/initial_state'; import Avatar from 'mastodon/components/avatar'; -import Permalink from 'mastodon/components/permalink'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; const Account = connect(state => ({ account: state.getIn(['accounts', me]), }))(({ account }) => ( - + - + )); export default @withRouter From 87fbd08f74451c18d2fdbef551d5933a78375b63 Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Sun, 13 Nov 2022 22:22:07 +0100 Subject: [PATCH 445/500] helm: Add helm chart tests (#20394) * helm: Fix consistent list indentation * helm: Add helm lint and helm template tests * helm: Add helm template --validate test * helm: Add helm install test --- .github/workflows/test-chart.yml | 138 +++++++++++++++++++++ chart/.helmignore | 15 ++- chart/README.md | 2 +- chart/dev-values.yaml | 25 ++++ chart/templates/cronjob-media-remove.yaml | 14 +-- chart/templates/deployment-sidekiq.yaml | 14 +-- chart/templates/job-assets-precompile.yaml | 14 +-- chart/templates/job-chewy-upgrade.yaml | 14 +-- chart/templates/job-db-migrate.yaml | 14 +-- 9 files changed, 213 insertions(+), 37 deletions(-) create mode 100644 .github/workflows/test-chart.yml create mode 100644 chart/dev-values.yaml diff --git a/.github/workflows/test-chart.yml b/.github/workflows/test-chart.yml new file mode 100644 index 0000000000..b9ff808559 --- /dev/null +++ b/.github/workflows/test-chart.yml @@ -0,0 +1,138 @@ +# This is a GitHub workflow defining a set of jobs with a set of steps. +# ref: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions +# +name: Test chart + +on: + pull_request: + paths: + - "chart/**" + - "!**.md" + - ".github/workflows/test-chart.yml" + push: + paths: + - "chart/**" + - "!**.md" + - ".github/workflows/test-chart.yml" + branches-ignore: + - "dependabot/**" + workflow_dispatch: + +permissions: + contents: read + +defaults: + run: + working-directory: chart + +jobs: + lint-templates: + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: "3.x" + + - name: Install dependencies (yamllint) + run: pip install yamllint + + - run: helm dependency update + + - name: helm lint + run: | + helm lint . \ + --values dev-values.yaml + + - name: helm template + run: | + helm template . \ + --values dev-values.yaml \ + --output-dir rendered-templates + + - name: yamllint (only on templates we manage) + run: | + rm -rf rendered-templates/mastodon/charts + + yamllint rendered-templates \ + --config-data "{rules: {indentation: {spaces: 2}, line-length: disable}}" + + # This job helps us validate that rendered templates are valid k8s resources + # against a k8s api-server, via "helm template --validate", but also that a + # basic configuration can be used to successfully startup mastodon. + # + test-install: + runs-on: ubuntu-22.04 + timeout-minutes: 15 + + strategy: + fail-fast: false + matrix: + include: + # k3s-channel reference: https://update.k3s.io/v1-release/channels + - k3s-channel: latest + - k3s-channel: stable + + # This represents the oldest configuration we test against. + # + # The k8s version chosen is based on the oldest still supported k8s + # version among two managed k8s services, GKE, EKS. + # - GKE: https://endoflife.date/google-kubernetes-engine + # - EKS: https://endoflife.date/amazon-eks + # + # The helm client's version can influence what helper functions is + # available for use in the templates, currently we need v3.6.0 or + # higher. + # + - k3s-channel: v1.21 + helm-version: v3.6.0 + + steps: + - uses: actions/checkout@v3 + + # This action starts a k8s cluster with NetworkPolicy enforcement and + # installs both kubectl and helm. + # + # ref: https://github.com/jupyterhub/action-k3s-helm#readme + # + - uses: jupyterhub/action-k3s-helm@v3 + with: + k3s-channel: ${{ matrix.k3s-channel }} + helm-version: ${{ matrix.helm-version }} + metrics-enabled: false + traefik-enabled: false + docker-enabled: false + + - run: helm dependency update + + # Validate rendered helm templates against the k8s api-server + - name: helm template --validate + run: | + helm template --validate mastodon . \ + --values dev-values.yaml + + - name: helm install + run: | + helm install mastodon . \ + --values dev-values.yaml \ + --timeout 10m + + # This actions provides a report about the state of the k8s cluster, + # providing logs etc on anything that has failed and workloads marked as + # important. + # + # ref: https://github.com/jupyterhub/action-k8s-namespace-report#readme + # + - name: Kubernetes namespace report + uses: jupyterhub/action-k8s-namespace-report@v1 + if: always() + with: + important-workloads: >- + deploy/mastodon-sidekiq + deploy/mastodon-streaming + deploy/mastodon-web + job/mastodon-assets-precompile + job/mastodon-chewy-upgrade + job/mastodon-create-admin + job/mastodon-db-migrate diff --git a/chart/.helmignore b/chart/.helmignore index 886747ed0b..0cbed473aa 100644 --- a/chart/.helmignore +++ b/chart/.helmignore @@ -1,3 +1,17 @@ +# A helm chart's templates and default values can be packaged into a .tgz file. +# When doing that, not everything should be bundled into the .tgz file. This +# file describes what to not bundle. +# +# Manually added by us +# -------------------- +# +dev-values.yaml +mastodon-*.tgz + + +# Boilerplate .helmignore from `helm create mastodon` +# --------------------------------------------------- +# # Patterns to ignore when building packages. # This supports shell glob matching, relative path matching, and # negation (prefixed with !). Only one pattern per line. @@ -21,4 +35,3 @@ .idea/ *.tmproj .vscode/ -mastodon-*.tgz diff --git a/chart/README.md b/chart/README.md index 272d59a81f..78d75368cc 100644 --- a/chart/README.md +++ b/chart/README.md @@ -7,7 +7,7 @@ Kubernetes cluster. The basic usage is: 1. `helm dep update` 1. `helm install --namespace mastodon --create-namespace my-mastodon ./ -f path/to/additional/values.yaml` -This chart has been tested on Helm 3.0.1 and above. +This chart is tested with k8s 1.21+ and helm 3.6.0+. # Configuration diff --git a/chart/dev-values.yaml b/chart/dev-values.yaml new file mode 100644 index 0000000000..b3a963ea11 --- /dev/null +++ b/chart/dev-values.yaml @@ -0,0 +1,25 @@ +# Chart values used for testing the Helm chart. +# +mastodon: + secrets: + secret_key_base: dummy-secret_key_base + otp_secret: dummy-otp_secret + vapid: + private_key: dummy-vapid-private_key + public_key: dummy-vapid-public_key + +# ref: https://github.com/bitnami/charts/tree/main/bitnami/redis#parameters +redis: + replica: + replicaCount: 1 + +# ref: https://github.com/bitnami/charts/tree/main/bitnami/elasticsearch#parameters +elasticsearch: + master: + replicaCount: 1 + data: + replicaCount: 1 + coordinating: + replicaCount: 1 + ingest: + replicaCount: 1 diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml index b175f0ee75..41f1feb825 100644 --- a/chart/templates/cronjob-media-remove.yaml +++ b/chart/templates/cronjob-media-remove.yaml @@ -25,13 +25,13 @@ spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/part-of - operator: In - values: - - rails - topologyKey: kubernetes.io/hostname + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/part-of + operator: In + values: + - rails + topologyKey: kubernetes.io/hostname {{- end }} volumes: - name: assets diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml index 878b01150f..94af99b112 100644 --- a/chart/templates/deployment-sidekiq.yaml +++ b/chart/templates/deployment-sidekiq.yaml @@ -42,13 +42,13 @@ spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/part-of - operator: In - values: - - rails - topologyKey: kubernetes.io/hostname + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/part-of + operator: In + values: + - rails + topologyKey: kubernetes.io/hostname {{- end }} volumes: - name: assets diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml index 30d54b76f5..bc5ff7bfb8 100644 --- a/chart/templates/job-assets-precompile.yaml +++ b/chart/templates/job-assets-precompile.yaml @@ -25,13 +25,13 @@ spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/part-of - operator: In - values: - - rails - topologyKey: kubernetes.io/hostname + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/part-of + operator: In + values: + - rails + topologyKey: kubernetes.io/hostname {{- end }} volumes: - name: assets diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml index 5b22a86105..f86a4e34f6 100644 --- a/chart/templates/job-chewy-upgrade.yaml +++ b/chart/templates/job-chewy-upgrade.yaml @@ -26,13 +26,13 @@ spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/part-of - operator: In - values: - - rails - topologyKey: kubernetes.io/hostname + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/part-of + operator: In + values: + - rails + topologyKey: kubernetes.io/hostname {{- end }} volumes: - name: assets diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index db09c6ea2b..41324fbd0c 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -25,13 +25,13 @@ spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app.kubernetes.io/part-of - operator: In - values: - - rails - topologyKey: kubernetes.io/hostname + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/part-of + operator: In + values: + - rails + topologyKey: kubernetes.io/hostname {{- end }} volumes: - name: assets From 24b2c60beb73ff932b9539587e162283e99fd35d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 00:38:56 +0100 Subject: [PATCH 446/500] Fix icons having an image role (#20600) --- app/javascript/mastodon/components/icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/icon.js b/app/javascript/mastodon/components/icon.js index d8a17722fe..d3d7c591d6 100644 --- a/app/javascript/mastodon/components/icon.js +++ b/app/javascript/mastodon/components/icon.js @@ -14,7 +14,7 @@ export default class Icon extends React.PureComponent { const { id, className, fixedWidth, ...other } = this.props; return ( - + ); } From d0b7bd42501fcf704dbfead4cc1c08ced49371a8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 00:43:24 +0100 Subject: [PATCH 447/500] Fix wrong cut-off point for "Read more" in web UI (#20599) --- .../mastodon/components/status_content.js | 27 +++++++++++-------- .../styles/mastodon/components.scss | 2 +- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index 2a933c0a74..fbc66eabf3 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -8,7 +8,7 @@ import PollContainer from 'mastodon/containers/poll_container'; import Icon from 'mastodon/components/icon'; import { autoPlayGif, languages as preloadedLanguages, translationEnabled } from 'mastodon/initial_state'; -const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top) +const MAX_HEIGHT = 706; // 22px * 32 (+ 2px padding at the top) class TranslateButton extends React.PureComponent { @@ -77,16 +77,21 @@ class StatusContent extends React.PureComponent { return; } + const { status, onCollapsedToggle } = this.props; const links = node.querySelectorAll('a'); + let link, mention; + for (var i = 0; i < links.length; ++i) { - let link = links[i]; + link = links[i]; + if (link.classList.contains('status-link')) { continue; } + link.classList.add('status-link'); - let mention = this.props.status.get('mentions').find(item => link.href === item.get('url')); + mention = this.props.status.get('mentions').find(item => link.href === item.get('url')); if (mention) { link.addEventListener('click', this.onMentionClick.bind(this, mention), false); @@ -101,16 +106,16 @@ class StatusContent extends React.PureComponent { } } - if (this.props.status.get('collapsed', null) === null) { - let collapsed = - this.props.collapsable - && this.props.onClick - && node.clientHeight > MAX_HEIGHT - && this.props.status.get('spoiler_text').length === 0; + if (status.get('collapsed', null) === null && onCollapsedToggle) { + const { collapsable, onClick } = this.props; - if(this.props.onCollapsedToggle) this.props.onCollapsedToggle(collapsed); + const collapsed = + collapsable + && onClick + && node.clientHeight > MAX_HEIGHT + && status.get('spoiler_text').length === 0; - this.props.status.set('collapsed', collapsed); + onCollapsedToggle(collapsed); } } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 8b43604c8f..606e203557 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -964,7 +964,7 @@ } .status__content.status__content--collapsed { - max-height: 20px * 15; // 15 lines is roughly above 500 characters + max-height: 22px * 15; // 15 lines is roughly above 500 characters } .status__content__read-more-button { From 9d039209cc0791ec09ebdbb93da4d63f815e1b07 Mon Sep 17 00:00:00 2001 From: Matt Corallo <649246+TheBlueMatt@users.noreply.github.com> Date: Mon, 14 Nov 2022 04:26:49 +0000 Subject: [PATCH 448/500] Add `Cache-Control` header to openstack-stored files (#20610) When storing files in S3, paperclip is configured with a Cache-Control header indicating the file is immutable, however no such header was added when using OpenStack storage. Luckily Paperclip's fog integration makes this trivial, with a simple `fog_file` `Cache-Control` default doing the trick. --- config/initializers/paperclip.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb index 5c182ade48..a2285427c8 100644 --- a/config/initializers/paperclip.rb +++ b/config/initializers/paperclip.rb @@ -125,6 +125,8 @@ elsif ENV['SWIFT_ENABLED'] == 'true' openstack_region: ENV['SWIFT_REGION'], openstack_cache_ttl: ENV.fetch('SWIFT_CACHE_TTL') { 60 }, }, + + fog_file: { 'Cache-Control' => 'public, max-age=315576000, immutable' }, fog_directory: ENV['SWIFT_CONTAINER'], fog_host: ENV['SWIFT_OBJECT_URL'], From 147d8bd8fc7aa8b55cd5a9103941c52441ed4365 Mon Sep 17 00:00:00 2001 From: Hampton Lintorn-Catlin Date: Sun, 13 Nov 2022 23:52:13 -0500 Subject: [PATCH 449/500] Support UTF-8 Characters in Domains During CSV Import (#20592) * Support UTF-8 Characters in Domains During Import * Update Changelong --- CHANGELOG.md | 1 + app/services/import_service.rb | 2 +- spec/fixtures/files/utf8-followers.txt | 1 + spec/services/import_service_spec.rb | 23 +++++++++++++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/files/utf8-followers.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 72f62a1dc3..93f05a6500 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -185,6 +185,7 @@ Some of the features in this release have been funded through the [NGI0 Discover - Fix `CDN_HOST` not being used in some asset URLs ([tribela](https://github.com/mastodon/mastodon/pull/18662)) - Fix `CAS_DISPLAY_NAME`, `SAML_DISPLAY_NAME` and `OIDC_DISPLAY_NAME` being ignored ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18568)) - Fix various typos in comments throughout the codebase ([luzpaz](https://github.com/mastodon/mastodon/pull/18604)) +- Fix CSV upload no longer breaks if an server domain includes UTF-8 characters ([HamptonMakes]()) ### Security diff --git a/app/services/import_service.rb b/app/services/import_service.rb index ece5b9ef04..2f48abc364 100644 --- a/app/services/import_service.rb +++ b/app/services/import_service.rb @@ -136,7 +136,7 @@ class ImportService < BaseService end def import_data - Paperclip.io_adapters.for(@import.data).read + Paperclip.io_adapters.for(@import.data).read.force_encoding(Encoding::UTF_8) end def relations_map_for_account(account, account_ids) diff --git a/spec/fixtures/files/utf8-followers.txt b/spec/fixtures/files/utf8-followers.txt new file mode 100644 index 0000000000..9d4fe3485b --- /dev/null +++ b/spec/fixtures/files/utf8-followers.txt @@ -0,0 +1 @@ +@nare@թութ.հայ diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb index 764225aa72..e2d182920e 100644 --- a/spec/services/import_service_spec.rb +++ b/spec/services/import_service_spec.rb @@ -172,6 +172,29 @@ RSpec.describe ImportService, type: :service do end end + # Based on the bug report 20571 where UTF-8 encoded domains were rejecting import of their users + # + # https://github.com/mastodon/mastodon/issues/20571 + context 'utf-8 encoded domains' do + subject { ImportService.new } + + let!(:nare) { Fabricate(:account, username: 'nare', domain: 'թութ.հայ', locked: false, protocol: :activitypub, inbox_url: 'https://թութ.հայ/inbox') } + + # Make sure to not actually go to the remote server + before do + stub_request(:post, "https://թութ.հայ/inbox").to_return(status: 200) + end + + let(:csv) { attachment_fixture('utf8-followers.txt') } + let(:import) { Import.create(account: account, type: 'following', data: csv) } + + it 'follows the listed account' do + expect(account.follow_requests.count).to eq 0 + subject.call(import) + expect(account.follow_requests.count).to eq 1 + end + end + context 'import bookmarks' do subject { ImportService.new } From 6da9df774ea9973124fe7e2f5a9dd0862a22acd8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 06:05:10 +0100 Subject: [PATCH 450/500] Fix dropdown menu on profiles not being accessible on narrow screens in web UI (#20620) --- .../mastodon/features/account/components/header.js | 2 -- app/javascript/styles/mastodon/components.scss | 12 ++++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js index c38eea55b3..1825e0de63 100644 --- a/app/javascript/mastodon/features/account/components/header.js +++ b/app/javascript/mastodon/features/account/components/header.js @@ -314,8 +314,6 @@ class Header extends ImmutablePureComponent {
      -
      - {!suspended && (
      {!hidden && ( diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 606e203557..c3011f7c9d 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7026,8 +7026,11 @@ noscript { &__tabs { display: flex; align-items: flex-start; + justify-content: space-between; margin-top: -55px; padding-top: 10px; + gap: 8px; + overflow: hidden; &__buttons { display: flex; @@ -7036,6 +7039,15 @@ noscript { padding-top: 55px; overflow: hidden; + .button { + flex-shrink: 1; + white-space: nowrap; + + @media screen and (max-width: $no-gap-breakpoint) { + min-width: 0; + } + } + .icon-button { border: 1px solid lighten($ui-base-color, 12%); border-radius: 4px; From 2e2ba39abf3163bddf2f54bb3c358b60304ba6b4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 06:28:19 +0100 Subject: [PATCH 451/500] Fix rules with same priority being sorted non-deterministically (#20623) --- app/models/rule.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/rule.rb b/app/models/rule.rb index 7b62f2b354..602e5d5874 100644 --- a/app/models/rule.rb +++ b/app/models/rule.rb @@ -18,5 +18,5 @@ class Rule < ApplicationRecord validates :text, presence: true, length: { maximum: 300 } - scope :ordered, -> { kept.order(priority: :asc) } + scope :ordered, -> { kept.order(priority: :asc, id: :asc) } end From 167d86d21dbd8dab120555e12c2a3a5e5432d632 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 06:56:15 +0100 Subject: [PATCH 452/500] Fix `role_ids` not accepting arrays in admin API (#20625) Fix #19157 --- app/controllers/api/v2/admin/accounts_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/v2/admin/accounts_controller.rb b/app/controllers/api/v2/admin/accounts_controller.rb index bcc1a07339..b25831aa09 100644 --- a/app/controllers/api/v2/admin/accounts_controller.rb +++ b/app/controllers/api/v2/admin/accounts_controller.rb @@ -33,7 +33,7 @@ class Api::V2::Admin::AccountsController < Api::V1::Admin::AccountsController end def filter_params - params.permit(*FILTER_PARAMS) + params.permit(*FILTER_PARAMS, role_ids: []) end def pagination_params(core_params) From 5c826c408db86c3b4abf4959c092ad4c5c807896 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 07:13:14 +0100 Subject: [PATCH 453/500] Fix image type not being set after conversion for convertible image types (#20624) --- app/models/media_attachment.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 7aa8658d90..d2bdc55f0f 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -82,6 +82,7 @@ class MediaAttachment < ApplicationRecord IMAGE_CONVERTED_STYLES = { original: { format: 'jpeg', + content_type: 'image/jpeg', }.merge(IMAGE_STYLES[:original]).freeze, small: { From b31afc62943b79bf97338040e39123b9dd68f31f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 08:06:06 +0100 Subject: [PATCH 454/500] Fix error when passing unknown filter param in REST API (#20626) Fix #19156 --- app/controllers/api/base_controller.rb | 2 +- app/models/account_filter.rb | 10 ++++++---- app/models/admin/action_log_filter.rb | 2 +- app/models/admin/appeal_filter.rb | 4 ++-- app/models/admin/status_filter.rb | 2 +- app/models/announcement_filter.rb | 2 +- app/models/custom_emoji_filter.rb | 2 +- app/models/instance_filter.rb | 4 ++-- app/models/invite_filter.rb | 2 +- app/models/relationship_filter.rb | 12 ++++++------ app/models/report_filter.rb | 4 ++-- app/models/trends/preview_card_filter.rb | 2 +- app/models/trends/preview_card_provider_filter.rb | 4 ++-- app/models/trends/status_filter.rb | 2 +- lib/exceptions.rb | 1 + spec/models/custom_emoji_filter_spec.rb | 4 ++-- 16 files changed, 31 insertions(+), 28 deletions(-) diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index 3f3e1ca7bd..665425f296 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -57,7 +57,7 @@ class Api::BaseController < ApplicationController render json: { error: I18n.t('errors.429') }, status: 429 end - rescue_from ActionController::ParameterMissing do |e| + rescue_from ActionController::ParameterMissing, Mastodon::InvalidParameterError do |e| render json: { error: e.to_s }, status: 400 end diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb index e214e0bad2..e09ce4ec26 100644 --- a/app/models/account_filter.rb +++ b/app/models/account_filter.rb @@ -57,7 +57,7 @@ class AccountFilter when 'order' order_scope(value) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end @@ -68,7 +68,7 @@ class AccountFilter when 'remote' Account.remote else - raise "Unknown origin: #{value}" + raise Mastodon::InvalidParameterError, "Unknown origin: #{value}" end end @@ -84,8 +84,10 @@ class AccountFilter accounts_with_users.merge(User.disabled) when 'silenced' Account.silenced + when 'sensitized' + Account.sensitized else - raise "Unknown status: #{value}" + raise Mastodon::InvalidParameterError, "Unknown status: #{value}" end end @@ -96,7 +98,7 @@ class AccountFilter when 'recent' Account.recent else - raise "Unknown order: #{value}" + raise Mastodon::InvalidParameterError, "Unknown order: #{value}" end end diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index edb391e2e8..f89d452ef4 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -95,7 +95,7 @@ class Admin::ActionLogFilter account = Account.find_or_initialize_by(id: value) Admin::ActionLog.where(target: [account, account.user].compact) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end end diff --git a/app/models/admin/appeal_filter.rb b/app/models/admin/appeal_filter.rb index b163d2e568..f5dcc0f54d 100644 --- a/app/models/admin/appeal_filter.rb +++ b/app/models/admin/appeal_filter.rb @@ -30,7 +30,7 @@ class Admin::AppealFilter when 'status' status_scope(value) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end @@ -43,7 +43,7 @@ class Admin::AppealFilter when 'pending' Appeal.pending else - raise "Unknown status: #{value}" + raise Mastodon::InvalidParameterError, "Unknown status: #{value}" end end end diff --git a/app/models/admin/status_filter.rb b/app/models/admin/status_filter.rb index d7a16f760d..4d439e9a1c 100644 --- a/app/models/admin/status_filter.rb +++ b/app/models/admin/status_filter.rb @@ -32,7 +32,7 @@ class Admin::StatusFilter when 'media' Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id).reorder('statuses.id desc') else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end end diff --git a/app/models/announcement_filter.rb b/app/models/announcement_filter.rb index 950852460d..85c3b1d2ce 100644 --- a/app/models/announcement_filter.rb +++ b/app/models/announcement_filter.rb @@ -33,7 +33,7 @@ class AnnouncementFilter when 'unpublished' Announcement.unpublished else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end end diff --git a/app/models/custom_emoji_filter.rb b/app/models/custom_emoji_filter.rb index 414e1fcddd..ed7a8dda15 100644 --- a/app/models/custom_emoji_filter.rb +++ b/app/models/custom_emoji_filter.rb @@ -39,7 +39,7 @@ class CustomEmojiFilter when 'shortcode' CustomEmoji.search(value.strip) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end end diff --git a/app/models/instance_filter.rb b/app/models/instance_filter.rb index e7e5166a1a..1d94c919f9 100644 --- a/app/models/instance_filter.rb +++ b/app/models/instance_filter.rb @@ -36,7 +36,7 @@ class InstanceFilter when 'availability' availability_scope(value) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end @@ -47,7 +47,7 @@ class InstanceFilter when 'unavailable' Instance.joins(:unavailable_domain) else - raise "Unknown availability: #{value}" + raise Mastodon::InvalidParameterError, "Unknown availability: #{value}" end end end diff --git a/app/models/invite_filter.rb b/app/models/invite_filter.rb index 9685d4abb5..c1edb3871f 100644 --- a/app/models/invite_filter.rb +++ b/app/models/invite_filter.rb @@ -31,7 +31,7 @@ class InviteFilter when 'expired' Invite.expired else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end end diff --git a/app/models/relationship_filter.rb b/app/models/relationship_filter.rb index 9135ff144c..249fe3df8e 100644 --- a/app/models/relationship_filter.rb +++ b/app/models/relationship_filter.rb @@ -53,7 +53,7 @@ class RelationshipFilter when 'activity' activity_scope(value) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end @@ -68,7 +68,7 @@ class RelationshipFilter when 'invited' Account.joins(user: :invite).merge(Invite.where(user: account.user)).eager_load(:account_stat).reorder(nil) else - raise "Unknown relationship: #{value}" + raise Mastodon::InvalidParameterError, "Unknown relationship: #{value}" end end @@ -83,7 +83,7 @@ class RelationshipFilter when 'remote' Account.remote else - raise "Unknown location: #{value}" + raise Mastodon::InvalidParameterError, "Unknown location: #{value}" end end @@ -94,7 +94,7 @@ class RelationshipFilter when 'primary' Account.where(moved_to_account_id: nil) else - raise "Unknown status: #{value}" + raise Mastodon::InvalidParameterError, "Unknown status: #{value}" end end @@ -105,7 +105,7 @@ class RelationshipFilter when 'recent' params[:relationship] == 'invited' ? Account.recent : Follow.recent else - raise "Unknown order: #{value}" + raise Mastodon::InvalidParameterError, "Unknown order: #{value}" end end @@ -114,7 +114,7 @@ class RelationshipFilter when 'dormant' AccountStat.where(last_status_at: nil).or(AccountStat.where(AccountStat.arel_table[:last_status_at].lt(1.month.ago))) else - raise "Unknown activity: #{value}" + raise Mastodon::InvalidParameterError, "Unknown activity: #{value}" end end end diff --git a/app/models/report_filter.rb b/app/models/report_filter.rb index dc444a5520..c9b3bce2d1 100644 --- a/app/models/report_filter.rb +++ b/app/models/report_filter.rb @@ -38,7 +38,7 @@ class ReportFilter when :target_origin target_origin_scope(value) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end @@ -49,7 +49,7 @@ class ReportFilter when :remote Report.where(target_account: Account.remote) else - raise "Unknown value: #{value}" + raise Mastodon::InvalidParameterError, "Unknown value: #{value}" end end end diff --git a/app/models/trends/preview_card_filter.rb b/app/models/trends/preview_card_filter.rb index 0a81146d4c..f0214c3f0f 100644 --- a/app/models/trends/preview_card_filter.rb +++ b/app/models/trends/preview_card_filter.rb @@ -40,7 +40,7 @@ class Trends::PreviewCardFilter when 'locale' PreviewCardTrend.where(language: value) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end diff --git a/app/models/trends/preview_card_provider_filter.rb b/app/models/trends/preview_card_provider_filter.rb index abfdd07e88..219793f01e 100644 --- a/app/models/trends/preview_card_provider_filter.rb +++ b/app/models/trends/preview_card_provider_filter.rb @@ -30,7 +30,7 @@ class Trends::PreviewCardProviderFilter when 'status' status_scope(value) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end @@ -43,7 +43,7 @@ class Trends::PreviewCardProviderFilter when 'pending_review' PreviewCardProvider.pending_review else - raise "Unknown status: #{value}" + raise Mastodon::InvalidParameterError, "Unknown status: #{value}" end end end diff --git a/app/models/trends/status_filter.rb b/app/models/trends/status_filter.rb index cb0f75d679..de435a0266 100644 --- a/app/models/trends/status_filter.rb +++ b/app/models/trends/status_filter.rb @@ -40,7 +40,7 @@ class Trends::StatusFilter when 'locale' StatusTrend.where(language: value) else - raise "Unknown filter: #{key}" + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end end diff --git a/lib/exceptions.rb b/lib/exceptions.rb index 3c5ba226b1..d3b92f4a09 100644 --- a/lib/exceptions.rb +++ b/lib/exceptions.rb @@ -11,6 +11,7 @@ module Mastodon class RaceConditionError < Error; end class RateLimitExceededError < Error; end class SyntaxError < Error; end + class InvalidParameterError < Error; end class UnexpectedResponseError < Error attr_reader :response diff --git a/spec/models/custom_emoji_filter_spec.rb b/spec/models/custom_emoji_filter_spec.rb index d859f5c5f5..2b1b5dc542 100644 --- a/spec/models/custom_emoji_filter_spec.rb +++ b/spec/models/custom_emoji_filter_spec.rb @@ -50,10 +50,10 @@ RSpec.describe CustomEmojiFilter do context 'else' do let(:params) { { else: 'else' } } - it 'raises RuntimeError' do + it 'raises Mastodon::InvalidParameterError' do expect do subject - end.to raise_error(RuntimeError, /Unknown filter: else/) + end.to raise_error(Mastodon::InvalidParameterError, /Unknown filter: else/) end end end From 523e106cbf2f0cd846d0514e7a5b38ea6c62fe8b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 08:06:17 +0100 Subject: [PATCH 455/500] Fix style of username in navigation bar above compose form in web UI (#20628) Regression from #20540 --- app/javascript/styles/mastodon/components.scss | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index c3011f7c9d..119bbe8e6c 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1869,9 +1869,6 @@ a.account__display-name { a { color: inherit; - } - - .permalink { text-decoration: none; } From 552d69ad96fec7ebfca46a97c50355678e114223 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 08:07:14 +0100 Subject: [PATCH 456/500] Fix error when invalid domain name is submitted (#19474) Fix #19175 --- app/models/concerns/domain_normalizable.rb | 2 + .../v1/admin/domain_allows_controller_spec.rb | 44 ++++++++++++------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/app/models/concerns/domain_normalizable.rb b/app/models/concerns/domain_normalizable.rb index fb84058fc2..8e244c1d87 100644 --- a/app/models/concerns/domain_normalizable.rb +++ b/app/models/concerns/domain_normalizable.rb @@ -11,5 +11,7 @@ module DomainNormalizable def normalize_domain self.domain = TagManager.instance.normalize_domain(domain&.strip) + rescue Addressable::URI::InvalidURIError + errors.add(:domain, :invalid) end end diff --git a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb index 26a391a60c..8100363f6b 100644 --- a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb +++ b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb @@ -94,25 +94,37 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do describe 'POST #create' do let!(:domain_allow) { Fabricate(:domain_allow, domain: 'example.com') } - before do - post :create, params: { domain: 'foo.bar.com' } - end - - it_behaves_like 'forbidden for wrong scope', 'write:statuses' - it_behaves_like 'forbidden for wrong role', '' - it_behaves_like 'forbidden for wrong role', 'Moderator' - - it 'returns http success' do - expect(response).to have_http_status(200) + context do + before do + post :create, params: { domain: 'foo.bar.com' } + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + it_behaves_like 'forbidden for wrong role', '' + it_behaves_like 'forbidden for wrong role', 'Moderator' + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns expected domain name' do + json = body_as_json + expect(json[:domain]).to eq 'foo.bar.com' + end + + it 'creates a domain block' do + expect(DomainAllow.find_by(domain: 'foo.bar.com')).to_not be_nil + end end - it 'returns expected domain name' do - json = body_as_json - expect(json[:domain]).to eq 'foo.bar.com' - end + context 'with invalid domain name' do + before do + post :create, params: { domain: 'foo bar' } + end - it 'creates a domain block' do - expect(DomainAllow.find_by(domain: 'foo.bar.com')).to_not be_nil + it 'returns http unprocessable entity' do + expect(response).to have_http_status(422) + end end end end From 1e83092e47fff6fa28aafbb0e1d7fc3bd69b3087 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 08:33:24 +0100 Subject: [PATCH 457/500] Update AUTHORS.md (#20630) --- AUTHORS.md | 1065 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 740 insertions(+), 325 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 9fc5f44f18..18b9f2d708 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -15,32 +15,32 @@ and provided thanks to the work of the following contributors: * [noellabo](https://github.com/noellabo) * [abcang](https://github.com/abcang) * [yiskah](https://github.com/yiskah) +* [tribela](https://github.com/tribela) * [mayaeh](https://github.com/mayaeh) * [nolanlawson](https://github.com/nolanlawson) * [ysksn](https://github.com/ysksn) -* [tribela](https://github.com/tribela) * [sorin-davidoi](https://github.com/sorin-davidoi) * [lynlynlynx](https://github.com/lynlynlynx) * [m4sk1n](mailto:me@m4sk.in) * [Marcin Mikołajczak](mailto:me@m4sk.in) -* [renatolond](https://github.com/renatolond) * [shleeable](https://github.com/shleeable) -* [alpaca-tc](https://github.com/alpaca-tc) +* [renatolond](https://github.com/renatolond) * [zunda](https://github.com/zunda) +* [alpaca-tc](https://github.com/alpaca-tc) * [nclm](https://github.com/nclm) * [ineffyble](https://github.com/ineffyble) * [ariasuni](https://github.com/ariasuni) * [Masoud Abkenar](mailto:ampbox@gmail.com) * [blackle](https://github.com/blackle) * [Quent-in](https://github.com/Quent-in) -* [JantsoP](https://github.com/JantsoP) * [Brawaru](https://github.com/Brawaru) +* [JantsoP](https://github.com/JantsoP) +* [trwnh](https://github.com/trwnh) * [nullkal](https://github.com/nullkal) * [yookoala](https://github.com/yookoala) * [dunn](https://github.com/dunn) * [Aditoo17](https://github.com/Aditoo17) * [Quenty31](https://github.com/Quenty31) -* [marek-lach](https://github.com/marek-lach) * [shuheiktgw](https://github.com/shuheiktgw) * [ashfurrow](https://github.com/ashfurrow) * [danhunsaker](https://github.com/danhunsaker) @@ -48,7 +48,6 @@ and provided thanks to the work of the following contributors: * [Jeroen](mailto:jeroenpraat@users.noreply.github.com) * [takayamaki](https://github.com/takayamaki) * [masarakki](https://github.com/masarakki) -* [trwnh](https://github.com/trwnh) * [ticky](https://github.com/ticky) * [ThisIsMissEm](https://github.com/ThisIsMissEm) * [hinaloe](https://github.com/hinaloe) @@ -57,16 +56,19 @@ and provided thanks to the work of the following contributors: * [Wonderfall](https://github.com/Wonderfall) * [matteoaquila](https://github.com/matteoaquila) * [yukimochi](https://github.com/yukimochi) -* [palindromordnilap](https://github.com/palindromordnilap) +* [nightpool](https://github.com/nightpool) +* [alixrossi](https://github.com/alixrossi) * [rkarabut](https://github.com/rkarabut) * [jeroenpraat](mailto:jeroenpraat@users.noreply.github.com) -* [nightpool](https://github.com/nightpool) +* [marek-lach](https://github.com/marek-lach) * [Artoria2e5](https://github.com/Artoria2e5) +* [rinsuki](https://github.com/rinsuki) * [marrus-sh](https://github.com/marrus-sh) * [krainboltgreene](https://github.com/krainboltgreene) * [pfigel](https://github.com/pfigel) * [BoFFire](https://github.com/BoFFire) * [Aldarone](https://github.com/Aldarone) +* [deepy](https://github.com/deepy) * [clworld](https://github.com/clworld) * [MasterGroosha](https://github.com/MasterGroosha) * [dracos](https://github.com/dracos) @@ -75,7 +77,6 @@ and provided thanks to the work of the following contributors: * [Sylvhem](https://github.com/Sylvhem) * [koyuawsmbrtn](https://github.com/koyuawsmbrtn) * [MitarashiDango](https://github.com/MitarashiDango) -* [rinsuki](https://github.com/rinsuki) * [angristan](https://github.com/angristan) * [JeanGauthier](https://github.com/JeanGauthier) * [kschaper](https://github.com/kschaper) @@ -87,14 +88,15 @@ and provided thanks to the work of the following contributors: * [MightyPork](https://github.com/MightyPork) * [ashleyhull-versent](https://github.com/ashleyhull-versent) * [yhirano55](https://github.com/yhirano55) +* [mashirozx](https://github.com/mashirozx) * [devkral](https://github.com/devkral) * [camponez](https://github.com/camponez) * [Hugo Gameiro](mailto:hmgameiro@gmail.com) +* [Marek Ľach](mailto:graweeld@googlemail.com) * [SerCom_KC](mailto:szescxz@gmail.com) * [aschmitz](https://github.com/aschmitz) * [mfmfuyu](https://github.com/mfmfuyu) * [kedamaDQ](https://github.com/kedamaDQ) -* [mashirozx](https://github.com/mashirozx) * [fpiesche](https://github.com/fpiesche) * [gandaro](https://github.com/gandaro) * [johnsudaar](https://github.com/johnsudaar) @@ -106,8 +108,10 @@ and provided thanks to the work of the following contributors: * [hikari-no-yume](https://github.com/hikari-no-yume) * [seefood](https://github.com/seefood) * [jackjennings](https://github.com/jackjennings) +* [sunny](https://github.com/sunny) * [puckipedia](https://github.com/puckipedia) -* [spla](mailto:spla@mastodont.cat) +* [splaGit](https://github.com/splaGit) +* [tateisu](https://github.com/tateisu) * [walf443](https://github.com/walf443) * [JoelQ](https://github.com/JoelQ) * [mistydemeo](https://github.com/mistydemeo) @@ -118,13 +122,15 @@ and provided thanks to the work of the following contributors: * [tsuwatch](https://github.com/tsuwatch) * [progval](https://github.com/progval) * [victorhck](https://github.com/victorhck) +* [Izorkin](https://github.com/Izorkin) * [manuelviens](mailto:manuelviens@users.noreply.github.com) -* [tateisu](https://github.com/tateisu) * [fvh-P](https://github.com/fvh-P) * [lfuelling](https://github.com/lfuelling) * [rtucker](https://github.com/rtucker) * [Anna e só](mailto:contraexemplos@gmail.com) +* [danieljakots](https://github.com/danieljakots) * [dariusk](https://github.com/dariusk) +* [Gomasy](https://github.com/Gomasy) * [kazu9su](https://github.com/kazu9su) * [komic](https://github.com/komic) * [lmorchard](https://github.com/lmorchard) @@ -137,6 +143,7 @@ and provided thanks to the work of the following contributors: * [goofy-bz](mailto:goofy@babelzilla.org) * [kadiix](https://github.com/kadiix) * [kodacs](https://github.com/kodacs) +* [luzpaz](https://github.com/luzpaz) * [marcin mikołajczak](mailto:me@m4sk.in) * [berkes](https://github.com/berkes) * [KScl](https://github.com/KScl) @@ -145,23 +152,26 @@ and provided thanks to the work of the following contributors: * [AA4ch1](https://github.com/AA4ch1) * [alexgleason](https://github.com/alexgleason) * [cpytel](https://github.com/cpytel) +* [cutls](https://github.com/cutls) * [northerner](https://github.com/northerner) * [weex](https://github.com/weex) +* [erbridge](https://github.com/erbridge) * [fhemberger](https://github.com/fhemberger) -* [Gomasy](https://github.com/Gomasy) * [greysteil](https://github.com/greysteil) * [henrycatalinismith](https://github.com/henrycatalinismith) +* [HolgerHuo](https://github.com/HolgerHuo) * [d6rkaiz](https://github.com/d6rkaiz) * [ladyisatis](https://github.com/ladyisatis) * [JMendyk](https://github.com/JMendyk) +* [kescherCode](https://github.com/kescherCode) * [JohnD28](https://github.com/JohnD28) * [znz](https://github.com/znz) * [saper](https://github.com/saper) * [Naouak](https://github.com/Naouak) * [pawelngei](https://github.com/pawelngei) +* [rgroothuijsen](https://github.com/rgroothuijsen) * [reneklacan](https://github.com/reneklacan) * [ekiru](https://github.com/ekiru) -* [Izorkin](https://github.com/Izorkin) * [unasuke](https://github.com/unasuke) * [geta6](https://github.com/geta6) * [happycoloredbanana](https://github.com/happycoloredbanana) @@ -174,7 +184,6 @@ and provided thanks to the work of the following contributors: * [aji-su](https://github.com/aji-su) * [ikuradon](https://github.com/ikuradon) * [nzws](https://github.com/nzws) -* [duxovni](https://github.com/duxovni) * [SuperSandro2000](https://github.com/SuperSandro2000) * [178inaba](https://github.com/178inaba) * [acid-chicken](https://github.com/acid-chicken) @@ -183,7 +192,6 @@ and provided thanks to the work of the following contributors: * [aablinov](https://github.com/aablinov) * [stalker314314](https://github.com/stalker314314) * [cohosh](https://github.com/cohosh) -* [cutls](https://github.com/cutls) * [huertanix](https://github.com/huertanix) * [eleboucher](https://github.com/eleboucher) * [halkeye](https://github.com/halkeye) @@ -191,6 +199,7 @@ and provided thanks to the work of the following contributors: * [treby](https://github.com/treby) * [jpdevries](https://github.com/jpdevries) * [gdpelican](https://github.com/gdpelican) +* [pbzweihander](https://github.com/pbzweihander) * [MonaLisaOverrdrive](https://github.com/MonaLisaOverrdrive) * [Kurtis Rainbolt-Greene](mailto:me@kurtisrainboltgreene.name) * [panarom](https://github.com/panarom) @@ -201,7 +210,6 @@ and provided thanks to the work of the following contributors: * [pierreozoux](https://github.com/pierreozoux) * [qguv](https://github.com/qguv) * [Ram Lmn](mailto:ramlmn@users.noreply.github.com) -* [rgroothuijsen](https://github.com/rgroothuijsen) * [Sascha](mailto:sascha@serenitylabs.cloud) * [harukasan](https://github.com/harukasan) * [stamak](https://github.com/stamak) @@ -217,11 +225,14 @@ and provided thanks to the work of the following contributors: * [chr-1x](https://github.com/chr-1x) * [esetomo](https://github.com/esetomo) * [foxiehkins](https://github.com/foxiehkins) +* [gol-cha](https://github.com/gol-cha) * [highemerly](https://github.com/highemerly) * [hoodie](mailto:hoodiekitten@outlook.com) * [kaiyou](https://github.com/kaiyou) * [007lva](https://github.com/007lva) * [luzi82](https://github.com/luzi82) +* [prplecake](https://github.com/prplecake) +* [duxovni](https://github.com/duxovni) * [slice](https://github.com/slice) * [tmm576](https://github.com/tmm576) * [unsmell](mailto:unsmell@users.noreply.github.com) @@ -251,25 +262,27 @@ and provided thanks to the work of the following contributors: * [cdutson](https://github.com/cdutson) * [farlistener](https://github.com/farlistener) * [baby-gnu](https://github.com/baby-gnu) -* [danieljakots](https://github.com/danieljakots) * [divergentdave](https://github.com/divergentdave) * [DavidLibeau](https://github.com/DavidLibeau) * [dmerejkowsky](https://github.com/dmerejkowsky) * [ddevault](https://github.com/ddevault) +* [emilyst](https://github.com/emilyst) +* [consideRatio](https://github.com/consideRatio) * [Fjoerfoks](https://github.com/Fjoerfoks) * [fmauNeko](https://github.com/fmauNeko) * [gloaec](https://github.com/gloaec) * [unstabler](https://github.com/unstabler) * [potato4d](https://github.com/potato4d) * [h-izumi](https://github.com/h-izumi) -* [HolgerHuo](https://github.com/HolgerHuo) * [ErikXXon](https://github.com/ErikXXon) * [ian-kelling](https://github.com/ian-kelling) * [eltociear](https://github.com/eltociear) * [immae](https://github.com/immae) * [J0WI](https://github.com/J0WI) -* [vahnj](https://github.com/vahnj) +* [koboldunderlord](https://github.com/koboldunderlord) * [foozmeat](https://github.com/foozmeat) +* [jgsmith](https://github.com/jgsmith) +* [raggi](https://github.com/raggi) * [jasonrhodes](https://github.com/jasonrhodes) * [Jason Snell](mailto:jason@newrelic.com) * [jviide](https://github.com/jviide) @@ -287,21 +300,25 @@ and provided thanks to the work of the following contributors: * [Markus Amalthea Magnuson](mailto:markus.magnuson@gmail.com) * [madmath03](https://github.com/madmath03) * [mig5](https://github.com/mig5) +* [mohe2015](https://github.com/mohe2015) * [moritzheiber](https://github.com/moritzheiber) * [Nathaniel Suchy](mailto:me@lunorian.is) * [ndarville](https://github.com/ndarville) * [NimaBoscarino](https://github.com/NimaBoscarino) * [aquarla](https://github.com/aquarla) * [Abzol](https://github.com/Abzol) +* [unextro](https://github.com/unextro) * [PatOnTheBack](https://github.com/PatOnTheBack) * [xPaw](https://github.com/xPaw) * [petzah](https://github.com/petzah) * [PeterDaveHello](https://github.com/PeterDaveHello) * [ignisf](https://github.com/ignisf) +* [postmodern](https://github.com/postmodern) * [lumenwrites](https://github.com/lumenwrites) * [remram44](https://github.com/remram44) * [sts10](https://github.com/sts10) * [u1-liquid](https://github.com/u1-liquid) +* [SISheogorath](https://github.com/SISheogorath) * [rosylilly](https://github.com/rosylilly) * [withshubh](https://github.com/withshubh) * [sim6](https://github.com/sim6) @@ -328,23 +345,23 @@ and provided thanks to the work of the following contributors: * [bsky](mailto:me@imbsky.net) * [codl](https://github.com/codl) * [cpsdqs](https://github.com/cpsdqs) +* [dogelover911](https://github.com/dogelover911) * [barzamin](https://github.com/barzamin) -* [gol-cha](https://github.com/gol-cha) * [gunchleoc](https://github.com/gunchleoc) * [fhalna](https://github.com/fhalna) * [haoyayoi](https://github.com/haoyayoi) +* [helloworldstack](https://github.com/helloworldstack) * [ik11235](https://github.com/ik11235) * [kawax](https://github.com/kawax) * [shrft](https://github.com/shrft) * [luigi](mailto:lvargas@rankia.com) -* [luzpaz](https://github.com/luzpaz) * [mbajur](https://github.com/mbajur) * [matsurai25](https://github.com/matsurai25) * [mecab](https://github.com/mecab) * [nicobz25](https://github.com/nicobz25) * [niwatori24](https://github.com/niwatori24) * [noiob](https://github.com/noiob) -* [oliverkeeble](https://github.com/oliverkeeble) +* [oliverkeeble](mailto:oliverkeeble@users.noreply.github.com) * [partev](https://github.com/partev) * [pinfort](https://github.com/pinfort) * [rbaumert](https://github.com/rbaumert) @@ -360,7 +377,7 @@ and provided thanks to the work of the following contributors: * [clarfonthey](https://github.com/clarfonthey) * [cygnan](https://github.com/cygnan) * [Awea](https://github.com/Awea) -* [eai04191](https://github.com/eai04191) +* [single-right-quote](https://github.com/single-right-quote) * [8398a7](https://github.com/8398a7) * [857b](https://github.com/857b) * [insom](https://github.com/insom) @@ -373,9 +390,10 @@ and provided thanks to the work of the following contributors: * [unleashed](https://github.com/unleashed) * [alxrcs](https://github.com/alxrcs) * [console-cowboy](https://github.com/console-cowboy) +* [Saiv46](https://github.com/Saiv46) * [Alkarex](https://github.com/Alkarex) * [a2](https://github.com/a2) -* [alfiedotwtf](https://github.com/alfiedotwtf) +* [Alfie John](mailto:33c6c91f3bb4a391082e8a29642cafaf@alfie.wtf) * [0xa](https://github.com/0xa) * [ashpieboop](https://github.com/ashpieboop) * [virtualpain](https://github.com/virtualpain) @@ -391,24 +409,34 @@ and provided thanks to the work of the following contributors: * [orlea](https://github.com/orlea) * [armandfardeau](https://github.com/armandfardeau) * [raboof](https://github.com/raboof) +* [v-aisac](https://github.com/v-aisac) +* [gi-yt](https://github.com/gi-yt) +* [boahc077](https://github.com/boahc077) * [aldatsa](https://github.com/aldatsa) * [jumbosushi](https://github.com/jumbosushi) * [acuteaura](https://github.com/acuteaura) * [ayumin](https://github.com/ayumin) * [bzg](https://github.com/bzg) * [BastienDurel](https://github.com/BastienDurel) +* [bearice](https://github.com/bearice) * [li-bei](https://github.com/li-bei) +* [hardillb](https://github.com/hardillb) * [Benedikt Geißler](mailto:benedikt@g5r.eu) * [BenisonSebastian](https://github.com/BenisonSebastian) * [Blake](mailto:blake.barnett@postmates.com) * [Brad Janke](mailto:brad.janke@gmail.com) +* [braydofficial](https://github.com/braydofficial) * [bclindner](https://github.com/bclindner) * [brycied00d](https://github.com/brycied00d) * [carlosjs23](https://github.com/carlosjs23) +* [WyriHaximus](https://github.com/WyriHaximus) * [cgxxx](https://github.com/cgxxx) * [kibitan](https://github.com/kibitan) +* [cdzombak](https://github.com/cdzombak) * [chrisheninger](https://github.com/chrisheninger) * [chris-martin](https://github.com/chris-martin) +* [offbyone](https://github.com/offbyone) +* [cclauss](https://github.com/cclauss) * [DoubleMalt](https://github.com/DoubleMalt) * [Moosh-be](https://github.com/Moosh-be) * [cchoi12](https://github.com/cchoi12) @@ -417,6 +445,8 @@ and provided thanks to the work of the following contributors: * [csu](https://github.com/csu) * [kklleemm](https://github.com/kklleemm) * [colindean](https://github.com/colindean) +* [CommanderRoot](https://github.com/CommanderRoot) +* [connorshea](https://github.com/connorshea) * [DeeUnderscore](https://github.com/DeeUnderscore) * [dachinat](https://github.com/dachinat) * [Daggertooth](mailto:dev@monsterpit.net) @@ -428,35 +458,40 @@ and provided thanks to the work of the following contributors: * [dar5hak](https://github.com/dar5hak) * [kant](https://github.com/kant) * [maxolasersquad](https://github.com/maxolasersquad) -* [singingwolfboy](https://github.com/singingwolfboy) -* [caldwell](https://github.com/caldwell) -* [davidcelis](https://github.com/davidcelis) -* [davefp](https://github.com/davefp) -* [hannahwhy](https://github.com/hannahwhy) -* [debanshuk](https://github.com/debanshuk) -* [mascali33](https://github.com/mascali33) -* [DerekNonGeneric](https://github.com/DerekNonGeneric) -* [dblandin](https://github.com/dblandin) -* [Aranaur](https://github.com/Aranaur) -* [dtschust](https://github.com/dtschust) -* [Dryusdan](https://github.com/Dryusdan) -* [d3vgru](https://github.com/d3vgru) -* [Elizafox](https://github.com/Elizafox) -* [enewhuis](https://github.com/enewhuis) -* [ericblade](https://github.com/ericblade) -* [mikoim](https://github.com/mikoim) -* [espenronnevik](https://github.com/espenronnevik) +* [David Baumgold](mailto:david@davidbaumgold.com) +* [David Caldwell](mailto:david+github@porkrind.org) +* [David Celis](mailto:me@davidcel.is) +* [David Hewitt](mailto:davidmhewitt@users.noreply.github.com) +* [David Underwood](mailto:davefp@gmail.com) +* [David Yip](mailto:yipdw@member.fsf.org) +* [Debanshu Kundu](mailto:debanshu.kundu@joshtechnologygroup.com) +* [Denis Teyssier](mailto:admin@mascali.ovh) +* [Derek Lewis](mailto:derekcecillewis@gmail.com) +* [Devon Blandin](mailto:dblandin@gmail.com) +* [Drew Gates](mailto:aranaur@users.noreply.github.com) +* [Drew Schuster](mailto:dtschust@gmail.com) +* [Dryusdan](mailto:dryusdan@dryusdan.fr) +* [Eai](mailto:eai@mizle.net) +* [Ed Knutson](mailto:knutsoned@gmail.com) +* [Effy Elden](mailto:effy@effy.space) +* [Elizabeth Myers](mailto:elizabeth@interlinked.me) +* [Eric](mailto:enewhuis@gmail.com) +* [Eric Blade](mailto:blade.eric@gmail.com) +* [Eshin Kunishima](mailto:mikoim@users.noreply.github.com) +* [Espen Rønnevik](mailto:espen@ronnevik.net) * [Expenses](mailto:expenses@airmail.cc) -* [fabianonline](https://github.com/fabianonline) -* [shello](https://github.com/shello) -* [Finariel](https://github.com/Finariel) -* [siuying](https://github.com/siuying) -* [zoc](https://github.com/zoc) -* [fwenzel](https://github.com/fwenzel) -* [gabrielrumiranda](https://github.com/gabrielrumiranda) -* [GenbuHase](https://github.com/GenbuHase) -* [nilsding](https://github.com/nilsding) -* [hattori6789](https://github.com/hattori6789) +* [Fabian Schlenz](mailto:mail@fabianonline.de) +* [Faye Duxovni](mailto:duxovni@duxovni.org) +* [Filipe Rodrigues](mailto:shello@shello.org) +* [Finariel](mailto:finariel@gmail.com) +* [Francis Chong](mailto:francis@ignition.hk) +* [Franck Zoccolo](mailto:franck@zoccolo.com) +* [Fred Wenzel](mailto:fwenzel@users.noreply.github.com) +* [Gabriel Rubens](mailto:gabrielrumiranda@gmail.com) +* [Gaelan Steele](mailto:gbs@canishe.com) +* [Genbu Hase](mailto:hasegenbu@gmail.com) +* [Georg Gadinger](mailto:nilsding@nilsding.org) +* [George Hattori](mailto:hattori6789@users.noreply.github.com) * [Gergely Nagy](mailto:algernon@users.noreply.github.com) * [Giuseppe Pignataro](mailto:rogepix@gmail.com) * [Greg V](mailto:greg@unrelenting.technology) @@ -466,7 +501,9 @@ and provided thanks to the work of the following contributors: * [György Nádudvari](mailto:reedcourty@users.noreply.github.com) * [HIKARU KOBORI](mailto:hk.uec.univ@gmail.com) * [Haelwenn Monnier](mailto:lanodan@users.noreply.github.com) +* [Hampton Lintorn-Catlin](mailto:hcatlin@gmail.com) * [Harmon](mailto:harmon758@gmail.com) +* [Hayden](mailto:contact@winisreallybored.com) * [HellPie](mailto:hellpie@users.noreply.github.com) * [Herbert Kagumba](mailto:habukagumba@gmail.com) * [Hiroe Jun](mailto:jun.hiroe@gmail.com) @@ -479,6 +516,7 @@ and provided thanks to the work of the following contributors: * [Ian McDowell](mailto:me@ianmcdowell.net) * [Iijima Yasushi](mailto:kurage.cc@gmail.com) * [Ingo Blechschmidt](mailto:iblech@web.de) +* [Irie Aoi](mailto:eai@mizle.net) * [J Yeary](mailto:usbsnowcrash@users.noreply.github.com) * [Jack Michaud](mailto:jack-michaud@users.noreply.github.com) * [Jakub Mendyk](mailto:jakubmendyk.szkola@gmail.com) @@ -493,6 +531,7 @@ and provided thanks to the work of the following contributors: * [Jo Decker](mailto:trolldecker@users.noreply.github.com) * [Joan Montané](mailto:jmontane@users.noreply.github.com) * [Joe](mailto:401283+htmlbyjoe@users.noreply.github.com) +* [Joe Friedl](mailto:stuff@joefriedl.net) * [Jonathan Klee](mailto:klee.jonathan@gmail.com) * [Jordan Guerder](mailto:jguerder@fr.pulseheberg.net) * [Joseph Mingrone](mailto:jehops@users.noreply.github.com) @@ -502,6 +541,7 @@ and provided thanks to the work of the following contributors: * [Julien](mailto:tiwy57@users.noreply.github.com) * [Julien Deswaef](mailto:juego@requiem4tv.com) * [June Sallou](mailto:jnsll@users.noreply.github.com) +* [Justin Thomas](mailto:justin@jdt.io) * [Jérémy Benoist](mailto:j0k3r@users.noreply.github.com) * [KEINOS](mailto:github@keinos.com) * [Kairui Song | 宋恺睿](mailto:ryncsn@gmail.com) @@ -522,6 +562,7 @@ and provided thanks to the work of the following contributors: * [Mantas](mailto:mistermantas@users.noreply.github.com) * [Mareena Kunjachan](mailto:mareenakunjachan@gmail.com) * [Marek Lach](mailto:marek.brohatwack.lach@gmail.com) +* [Markus Petzsch](mailto:markus@petzsch.eu) * [Markus R](mailto:wirehack7@users.noreply.github.com) * [Marty McGuire](mailto:schmartissimo@gmail.com) * [Marvin Kopf](mailto:marvinkopf@posteo.de) @@ -531,12 +572,15 @@ and provided thanks to the work of the following contributors: * [Mathias B](mailto:10813340+mathias-b@users.noreply.github.com) * [Mathieu Brunot](mailto:mb.mathieu.brunot@gmail.com) * [Matt](mailto:matt-auckland@users.noreply.github.com) +* [Matt Corallo](mailto:649246+thebluematt@users.noreply.github.com) * [Matt Sweetman](mailto:webroo@gmail.com) +* [Matthias Bethke](mailto:matthias@towiski.de) * [Matthias Beyer](mailto:mail@beyermatthias.de) * [Matthias Jouan](mailto:matthias.jouan@gmail.com) * [Matthieu Paret](mailto:matthieuparet69@gmail.com) * [Maxime BORGES](mailto:maxime.borges@gmail.com) * [Mayu Laierlence](mailto:minacle@live.com) +* [Meisam](mailto:39205857+mftabriz@users.noreply.github.com) * [Michael Deeb](mailto:michaeldeeb@me.com) * [Michael Vieira](mailto:dtox94@gmail.com) * [Michel](mailto:michel@cyweo.com) @@ -558,6 +602,7 @@ and provided thanks to the work of the following contributors: * [Nanamachi](mailto:town7.haruki@gmail.com) * [Nathaniel Ekoniak](mailto:nekoniak@ennate.tech) * [NecroTechno](mailto:necrotechno@riseup.net) +* [Nicholas La Roux](mailto:larouxn@gmail.com) * [Nick Gerakines](mailto:nick@gerakines.net) * [Nicolai von Neudeck](mailto:nicolai@vonneudeck.com) * [Ninetailed](mailto:ninetailed@gmail.com) @@ -575,18 +620,25 @@ and provided thanks to the work of the following contributors: * [PatrickRWells](mailto:32802366+patrickrwells@users.noreply.github.com) * [Paul](mailto:naydex.mc+github@gmail.com) * [Pete Keen](mailto:pete@petekeen.net) +* [Pierre Bourdon](mailto:delroth@gmail.com) * [Pierre-Morgan Gate](mailto:pgate@users.noreply.github.com) * [Ratmir Karabut](mailto:rkarabut@sfmodern.ru) * [Reto Kromer](mailto:retokromer@users.noreply.github.com) +* [Rob Petti](mailto:rob.petti@gmail.com) * [Rob Watson](mailto:rfwatson@users.noreply.github.com) +* [Robert Laurenz](mailto:8169746+laurenzcodes@users.noreply.github.com) * [Rohan Sharma](mailto:i.am.lone.survivor@protonmail.com) +* [Roni Laukkarinen](mailto:roni@laukkarinen.info) * [Ryan Freebern](mailto:ryan@freebern.org) * [Ryan Wade](mailto:ryan.wade@protonmail.com) * [Ryo Kajiwara](mailto:kfe-fecn6.prussian@s01.info) * [S.H](mailto:gamelinks007@gmail.com) +* [SJang1](mailto:git@sjang.dev) * [Sadiq Saif](mailto:staticsafe@users.noreply.github.com) * [Sam Hewitt](mailto:hewittsamuel@gmail.com) +* [Samuel Kaiser](mailto:sk22@mailbox.org) * [Sara Aimée Smiseth](mailto:51710585+sarasmiseth@users.noreply.github.com) +* [Sara Golemon](mailto:pollita@php.net) * [Satoshi KOJIMA](mailto:skoji@mac.com) * [ScienJus](mailto:i@scienjus.com) * [Scott Larkin](mailto:scott@codeclimate.com) @@ -607,6 +659,7 @@ and provided thanks to the work of the following contributors: * [Spanky](mailto:2788886+spankyworks@users.noreply.github.com) * [Stanislas](mailto:stanislas.lange@pm.me) * [StefOfficiel](mailto:pichard.stephane@free.fr) +* [Stefano Pigozzi](mailto:ste.pigozzi@gmail.com) * [Steven Tappert](mailto:admin@dark-it.net) * [Stéphane Guillou](mailto:stephane.guillou@member.fsf.org) * [Su Yang](mailto:soulteary@users.noreply.github.com) @@ -619,13 +672,16 @@ and provided thanks to the work of the following contributors: * [TakesxiSximada](mailto:takesxi.sximada@gmail.com) * [Tao Bror Bojlén](mailto:brortao@users.noreply.github.com) * [Taras Gogol](mailto:taras2358@gmail.com) +* [The Stranjer](mailto:791672+thestranjer@users.noreply.github.com) * [TheInventrix](mailto:theinventrix@users.noreply.github.com) * [TheMainOne](mailto:50847364+theevilskeleton@users.noreply.github.com) * [Thomas Alberola](mailto:thomas@needacoffee.fr) +* [Thomas Citharel](mailto:github@tcit.fr) * [Toby Deshane](mailto:fortyseven@users.noreply.github.com) * [Toby Pinder](mailto:gigitrix@gmail.com) * [Tomonori Murakami](mailto:crosslife777@gmail.com) * [TomoyaShibata](mailto:wind.of.hometown@gmail.com) +* [Tony Jiang](mailto:yujiang99@gmail.com) * [Treyssat-Vincent Nino](mailto:treyssatvincent@users.noreply.github.com) * [Truong Nguyen](mailto:truongnmt.dev@gmail.com) * [Udo Kramer](mailto:optik@fluffel.io) @@ -634,6 +690,7 @@ and provided thanks to the work of the following contributors: * [Ushitora Anqou](mailto:ushitora_anqou@yahoo.co.jp) * [Valentin Lorentz](mailto:progval+git@progval.net) * [Vladimir Mincev](mailto:vladimir@canicinteractive.com) +* [Vyr Cossont](mailto:vyrcossont@users.noreply.github.com) * [Waldir Pimenta](mailto:waldyrious@gmail.com) * [Wenceslao Páez Chávez](mailto:wcpaez@gmail.com) * [Wesley Ellis](mailto:tahnok@gmail.com) @@ -648,10 +705,12 @@ and provided thanks to the work of the following contributors: * [YaQ](mailto:i_k_o_m_a_7@yahoo.co.jp) * [Yanaken](mailto:yanakend@gmail.com) * [Yann Klis](mailto:yann.klis@gmail.com) +* [Yarden Shoham](mailto:hrsi88@gmail.com) * [Yağızhan](mailto:35808275+yagizhan49@users.noreply.github.com) * [Yeechan Lu](mailto:wz.bluesnow@gmail.com) * [Your Name](mailto:lorenzd@gmail.com) * [Yusuke Abe](mailto:moonset20@gmail.com) +* [Zach Flanders](mailto:zachflanders@gmail.com) * [Zach Neill](mailto:neillz@berea.edu) * [Zachary Spector](mailto:logicaldash@gmail.com) * [ZiiX](mailto:ziix@users.noreply.github.com) @@ -666,8 +725,8 @@ and provided thanks to the work of the following contributors: * [chrolis](mailto:chrolis@users.noreply.github.com) * [cormo](mailto:cormorant2+github@gmail.com) * [d0p1](mailto:dopi-sama@hush.com) -* [dogelover911](mailto:84288771+dogelover911@users.noreply.github.com) * [dxwc](mailto:dxwc@users.noreply.github.com) +* [eai04191](mailto:eai@mizle.net) * [evilny0](mailto:evilny0@moomoocamp.net) * [febrezo](mailto:felixbrezo@gmail.com) * [fsubal](mailto:fsubal@users.noreply.github.com) @@ -678,7 +737,6 @@ and provided thanks to the work of the following contributors: * [hakoai](mailto:hk--76@qa2.so-net.ne.jp) * [haosbvnker](mailto:github@chaosbunker.com) * [heguro](mailto:65112898+heguro@users.noreply.github.com) -* [helloworldstack](mailto:66512512+helloworldstack@users.noreply.github.com) * [ichi_i](mailto:51489410+ichi-i@users.noreply.github.com) * [isati](mailto:phil@juchnowi.cz) * [jacob](mailto:jacobherringtondeveloper@gmail.com) @@ -688,15 +746,18 @@ and provided thanks to the work of the following contributors: * [jooops](mailto:joops@autistici.org) * [jukper](mailto:jukkaperanto@gmail.com) * [jumoru](mailto:jumoru@mailbox.org) +* [k.bigwheel (kazufumi nishida)](mailto:k.bigwheel+eng@gmail.com) * [kaias1jp](mailto:kaias1jp@gmail.com) * [karlyeurl](mailto:karl.yeurl@gmail.com) * [kawaguchi](mailto:jiikko@users.noreply.github.com) * [kedama](mailto:32974885+kedamadq@users.noreply.github.com) +* [keiya](mailto:keiya_21@yahoo.co.jp) * [kuro5hin](mailto:rusty@kuro5hin.org) * [leo60228](mailto:leo@60228.dev) * [matildepark](mailto:matilde.park@pm.me) * [maxypy](mailto:maxime@mpigou.fr) * [mhe](mailto:mail@marcus-herrmann.com) +* [mickkael](mailto:19755421+mickkael@users.noreply.github.com) * [mike castleman](mailto:m@mlcastle.net) * [mimikun](mailto:dzdzble_effort_311@outlook.jp) * [mohemohe](mailto:mohemohe@users.noreply.github.com) @@ -707,9 +768,11 @@ and provided thanks to the work of the following contributors: * [notozeki](mailto:notozeki@users.noreply.github.com) * [ntl-purism](mailto:57806346+ntl-purism@users.noreply.github.com) * [nzws](mailto:git-yuzu@svk.jp) +* [pea-sys](mailto:49807271+pea-sys@users.noreply.github.com) * [potpro](mailto:pptppctt@gmail.com) * [proxy](mailto:51172302+3n-k1@users.noreply.github.com) * [rch850](mailto:rich850@gmail.com) +* [rcombs](mailto:rcombs@rcombs.me) * [roikale](mailto:roikale@users.noreply.github.com) * [rysiekpl](mailto:rysiek@hackerspace.pl) * [sasanquaneuf](mailto:sasanquaneuf@gmail.com) @@ -726,13 +789,13 @@ and provided thanks to the work of the following contributors: * [tmyt](mailto:shigure@refy.net) * [trevDev()](mailto:trev@trevdev.ca) * [tsia](mailto:github@tsia.de) +* [txt-file](mailto:44214237+txt-file@users.noreply.github.com) * [utam0k](mailto:k0ma@utam0k.jp) * [vpzomtrrfrt](mailto:vpzomtrrfrt@gmail.com) * [walfie](mailto:walfington@gmail.com) * [y-temp4](mailto:y.temp4@gmail.com) * [ymmtmdk](mailto:ymmtmdk@gmail.com) * [yoshipc](mailto:yoooo@yoshipc.net) -* [zunda](mailto:zundan@gmail.com) * [Özcan Zafer AYAN](mailto:ozcanzaferayan@gmail.com) * [ばん](mailto:detteiu0321@gmail.com) * [ふるふる](mailto:frfs@users.noreply.github.com) @@ -752,599 +815,951 @@ This document is provided for informational purposes only. Since it is only upda Following people have contributed to translation of Mastodon: - GunChleoc (*Scottish Gaelic*) -- ケインツロ 👾 (KNTRO) (*Spanish, Argentina*) -- Sveinn í Felli (sveinki) (*Icelandic*) +- ケインツロ ⚧️👾🛸 (KNTRO) (*Spanish, Argentina*) - Hồ Nhất Duy (honhatduy) (*Vietnamese*) +- Sveinn í Felli (sveinki) (*Icelandic*) +- Kristaps (Kristaps_M) (*Latvian*) +- NCAA (*Danish, French*) - Zoltán Gera (gerazo) (*Hungarian*) -- Kristaps_M (*Latvian*) -- NCAA (*French, Danish*) -- adrmzz (*Sardinian*) -- Xosé M. (XoseM) (*Spanish, Galician*) -- Ramdziana F Y (rafeyu) (*Indonesian*) -- Jeong Arm (Kjwon15) (*Spanish, Japanese, Korean, Esperanto*) +- ghose (XoseM) (*Galician, Spanish*) +- Jeong Arm (Kjwon15) (*Korean, Esperanto, Japanese, Spanish*) - Emanuel Pina (emanuelpina) (*Portuguese*) -- qezwan (*Persian, Sorani (Kurdish)*) -- Besnik_b (*Albanian*) -- ButterflyOfFire (BoFFire) (*French, Arabic, Kabyle*) +- Reyzadren (*Ido, Malay*) - Thai Localization (thl10n) (*Thai*) +- Besnik_b (*Albanian*) +- Joene (joenepraat) (*Dutch*) - Cyax (Cyaxares) (*Kurmanji (Kurdish)*) +- adrmzz (*Sardinian*) +- Ramdziana F Y (rafeyu) (*Indonesian*) +- xatier (*Chinese Traditional, Chinese Traditional, Hong Kong*) +- qezwan (*Sorani (Kurdish), Persian*) +- spla (*Catalan, Spanish*) +- ButterflyOfFire (BoFFire) (*Arabic, French, Kabyle*) +- Martin (miles) (*Slovenian*) +- නාමල් ජයසිංහ (nimnaya) (*Sinhala*) +- Asier Iturralde Sarasola (aldatsa) (*Basque*) +- Ondřej Pokorný (unextro) (*Czech*) +- Roboron (*Spanish*) - taicv (*Vietnamese*) +- koyu (*German*) - Daniele Lira Mereb (danilmereb) (*Portuguese, Brazilian*) -- spla (*Spanish, Catalan*) +- T. E. Kalaycı (tekrei) (*Turkish*) - Evert Prants (IcyDiamond) (*Estonian*) -- koyu (*German*) -- Alix Rossi (palindromordnilap) (*French, Esperanto, Corsican*) -- Joene (joenepraat) (*Dutch*) +- Yair Mahalalel (yairm) (*Hebrew*) +- Ihor Hordiichuk (ihor_ck) (*Ukrainian*) +- Alessandro Levati (Oct326) (*Italian*) +- Kimmo Kujansuu (mrkujansuu) (*Finnish*) +- Alix Rossi (palindromordnilap) (*Corsican, Esperanto, French*) +- Danial Behzadi (danialbehzadi) (*Persian*) - stan ionut (stanionut12) (*Romanian*) - Mastodon 中文译者 (mastodon-linguist) (*Chinese Simplified*) - Kristijan Tkalec (lapor) (*Slovenian*) -- Danial Behzadi (danialbehzadi) (*Persian*) -- Asier Iturralde Sarasola (aldatsa) (*Basque*) +Alexander Sorokin (Brawaru) (*Russian, Vietnamese, Swedish, Portuguese, Tamil, Kabyle, Polish, Italian, Catalan, Armenian, Hungarian, Albanian, Greek, Galician, Korean, Ukrainian, German, Danish, French*) - ManeraKai (*Arabic*) - мачко (ma4ko) (*Bulgarian*) -- Roboron (*Spanish*) -- Alessandro Levati (Oct326) (*Italian*) -- xatier (*Chinese Traditional, Chinese Traditional, Hong Kong*) -- Ondřej Pokorný (unextro) (*Czech*) -- Alexander Sorokin (Brawaru) (*French, Catalan, Danish, German, Greek, Hungarian, Armenian, Korean, Portuguese, Russian, Albanian, Swedish, Ukrainian, Vietnamese, Galician*) - kamee (*Armenian*) -- Michal Stanke (mstanke) (*Czech*) +- Yamagishi Kazutoshi (ykzts) (*Japanese, Icelandic, Sorani (Kurdish), Albanian, Vietnamese, Chinese Simplified*) +- Takeçi (polygoat) (*French, Italian*) +- REMOVED_USER (*Czech*) - borys_sh (*Ukrainian*) - Imre Kristoffer Eilertsen (DandelionSprout) (*Norwegian*) -- yeft (*Chinese Traditional, Chinese Traditional, Hong Kong*) +- Marek Ľach (mareklach) (*Slovak, Polish*) +- yeft (*Chinese Traditional, Hong Kong, Chinese Traditional*) +- D. Cederberg (cederberget) (*Swedish*) - Miguel Mayol (mitcoes) (*Spanish, Catalan*) -- Marek Ľach (mareklach) (*Polish, Slovak*) +- enolp (*Asturian*) - Manuel Viens (manuelviens) (*French*) -- Kimmo Kujansuu (mrkujansuu) (*Finnish*) +- cybergene (*Japanese*) +- REMOVED_USER (*Turkish*) +- xpil (*Polish, Scottish Gaelic*) +- Balázs Meskó (mesko.balazs) (*Hungarian, Czech*) - Koala Yeung (yookoala) (*Chinese Traditional, Hong Kong*) -- enolp (*Asturian*) - Osoitz (*Basque*) -- Peterandre (*Norwegian, Norwegian Nynorsk*) -- tzium (*Sardinian*) +- Amir Rubinstein - TAU (AmirrTAU) (*Hebrew, Indonesian*) - Maya Minatsuki (mayaeh) (*Japanese*) -- Mélanie Chauvel (ariasuni) (*French, Arabic, Czech, German, Greek, Hungarian, Slovenian, Ukrainian, Chinese Simplified, Portuguese, Brazilian, Persian, Norwegian Nynorsk, Esperanto, Breton, Corsican, Sardinian, Kabyle*) -- T. E. Kalaycı (tekrei) (*Turkish*) -- Takeçi (polygoat) (*French, Italian*) +- Peterandre (*Norwegian Nynorsk, Norwegian*) +Mélanie Chauvel (ariasuni) (*French, Esperanto, Norwegian Nynorsk, Persian, Kabyle, Sardinian, Corsican, Breton, Portuguese, Brazilian, Arabic, Chinese Simplified, Ukrainian, Slovenian, Greek, German, Czech, Hungarian*) +- tzium (*Sardinian*) +- Diluns (*Occitan*) - Galician Translator (Galician_translator) (*Galician*) +- Marcin Mikołajczak (mkljczkk) (*Polish, Czech, Russian*) +- Jeff Huang (s8321414) (*Chinese Traditional*) +- Pixelcode (realpixelcode) (*German*) +- Allen Zhong (AstroProfundis) (*Chinese Simplified*) - lamnatos (*Greek*) - Sean Young (assanges) (*Chinese Traditional*) +- retiolus (*Catalan, French, Spanish*) - tolstoevsky (*Russian*) -- Ihor Hordiichuk (ihor_ck) (*Ukrainian*) - Ali Demirtaş (alidemirtas) (*Turkish*) -- Jasmine Cam Andrever (gourmas) (*Cornish*) +- J. Cam Andrever-Wright (gourmas) (*Cornish*) - coxde (*Chinese Simplified*) +- Dremski (*Bulgarian*) - gagik_ (*Armenian*) - Masoud Abkenar (mabkenar) (*Persian*) - arshat (*Kazakh*) -- Marcin Mikołajczak (mkljczkk) (*Czech, Polish, Russian*) -- Jeff Huang (s8321414) (*Chinese Traditional*) +- Ira (seefood) (*Hebrew*) +- Linerly (*Indonesian*) - Blak Ouille (BlakOuille16) (*French*) - e (diveedd) (*Kurmanji (Kurdish)*) - Em St Cenydd (cancennau) (*Welsh*) -- Diluns (*Occitan*) +- Tigran (tigransimonyan) (*Armenian*) +- Draacoun (*Portuguese, Brazilian*) +- REMOVED_USER (*Turkish*) - Nurul Azeera Hidayah @ Muhammad Nur Hidayat Yasuyoshi (MNH48.moe) (mnh48) (*Malay*) -- Tagomago (tagomago) (*French, Spanish*) -- Jurica (ahjk) (*Croatian*) +- Tagomago (tagomago) (*Spanish, French*) +- Ashun (ashune) (*Croatian*) - Aditoo17 (*Czech*) -- Tigran (tigransimonyan) (*Armenian*) - vishnuvaratharajan (*Tamil*) - pulmonarycosignerkindness (*Swedish*) - calypsoopenmail (*French*) -- cybergene (cyber-gene) (*Japanese*) +- REMOVED_USER (*Kabyle*) +- snerk (*Norwegian Nynorsk*) +- Sebastian (SebastianBerlin) (*German*) +- lisawe (*Norwegian*) +- serratrad (*Catalan*) - Bran_Ruz (*Breton*) +- ViktorOn (*Russian, Danish*) - Gearguy (*Finnish*) +- Andi Chandler (andibing) (*English, United Kingdom*) +- Tor Egil Hoftun Kvæstad (Taloran) (*Norwegian Nynorsk*) - GiorgioHerbie (*Italian*) -- Balázs Meskó (mesko.balazs) (*Czech, Hungarian*) -- Martin (miles) (*Slovenian*) +- හෙළබස සමූහය (HelaBasa) (*Sinhala*) +- kat (katktv) (*Ukrainian, Russian*) +- Yi-Jyun Pan (pan93412) (*Chinese Traditional*) +- Fjoerfoks (fryskefirefox) (*Frisian, Dutch*) +- Eshagh (eshagh79) (*Persian*) - regulartranslator (*Portuguese, Brazilian*) - Saederup92 (*Danish*) -- ozzii (*French, Serbian (Cyrillic)*) +- ozzii (Serbian (Cyrillic), French) - Irfan (Irfan_Radz) (*Malay*) -- Yi-Jyun Pan (pan93412) (*Chinese Traditional*) - ClearlyClaire (*French, Icelandic*) +- Sokratis Alichanidis (alichani) (*Greek*) +- Jiří Podhorecký (trendspotter) (*Czech*) - Akarshan Biswas (biswasab) (*Bengali, Sanskrit*) +- Robert Wolniak (Szkodnix) (*Polish*) +- Jan Lindblom (janlindblom) (*Swedish*) +- Dewi (Unkorneg) (*Breton, French*) - Kristoffer Grundström (Umeaboy) (*Swedish*) - Rafael H L Moretti (Moretti) (*Portuguese, Brazilian*) - d5Ziif3K (*Ukrainian*) -- හෙළබස (HelaBasa) (*Sinhala*) -- xpil (*Polish*) -- Rojdayek (*Kurmanji (Kurdish)*) +- Nemu (Dormemulo) (*Esperanto, French, Italian, Ido, Afrikaans*) +- Johan Mynhardt (johanmynhardt) (*Afrikaans*) +- Rojdayek (Kurmanji (Kurdish)) +- REMOVED_USER (*Portuguese, Brazilian*) +- GCardo (*Portuguese, Brazilian*) - christalleras (*Norwegian Nynorsk*) -- Allen Zhong (AstroProfundis) (*Chinese Simplified*) -- Taloran (*Norwegian Nynorsk*) -- Sokratis Alichanidis (alichani) (*Greek*) +- diorama (*Italian*) +- Jaz-Michael King (jazmichaelking) (*Welsh*) - Catalina (catalina.st) (*Romanian*) -- otrapersona (*Spanish, Spanish, Mexico*) - Ryo (DrRyo) (*Korean*) -- Mauzi (*German, Swedish*) +- otrapersona (*Spanish, Mexico, Spanish*) +- Frontier Translation Ltd. (frontier-translation) (*Chinese Simplified*) +- Mauzi (*Swedish, German*) +- Clopsy87 (*Italian*) - atarashiako (*Chinese Simplified*) - erictapen (*German*) +- zhen liao (az0189re) (*Chinese Simplified*) - 101010 (101010pl) (*Polish*) -- Jaz-Michael King (jazmichaelking) (*Welsh*) +- REMOVED_USER (*Norwegian*) - axi (*Finnish*) - silkevicious (*Italian*) - Floxu (fredrikdim1) (*Norwegian Nynorsk*) -- NadieAishi (*Spanish, Spanish, Mexico*) +- Nic Dafis (nicdafis) (*Welsh*) +- NadieAishi (*Spanish, Mexico, Spanish*) +- 戸渡生野 (aomyouza2543) (*Thai*) +- Tjipke van der Heide (vancha) (*Frisian*) +- Erik Mogensen (mogsie) (*Norwegian*) +- pomoch (*Chinese Traditional, Hong Kong*) +- Alexandre Brito (alexbrito) (*Portuguese, Brazilian*) - Bertil Hedkvist (Berrahed) (*Swedish*) - William(ѕ)ⁿ (wmlgr) (*Spanish*) -- Eshagh (eshagh79) (*Persian*) - LNDDYL (*Chinese Traditional*) +- tanketom (*Norwegian Nynorsk*) - norayr (*Armenian*) +- l3ycle (*German*) +- strubbl (*German*) - Satnam S Virdi (pika10singh) (*Punjabi*) - Tiago Epifânio (tfve) (*Portuguese*) - Mentor Gashi (mentorgashi.com) (*Albanian*) +- Sid (autinerd1) (*Dutch, German*) - carolinagiorno (*Portuguese, Brazilian*) +- Em_i (emiliencoss) (*French*) +- Liam O (liamoshan) (*Irish*) - Hayk Khachatryan (brutusromanus123) (*Armenian*) - Roby Thomas (roby.thomas) (*Malayalam*) +- ThonyVezbe (*Breton*) +- Percy (kecrily) (*Chinese Simplified*) - Bharat Kumar (Marwari) (*Hindi*) - Austra Muizniece (aus_m) (*Latvian*) -- ThonyVezbe (*Breton*) +- Urubu Lageano (urubulageano) (*Portuguese, Brazilian*) - Just Spanish (7_7) (*Spanish, Mexico*) - v4vachan (*Malayalam*) - bilfri (*Danish*) +- IamHappy (mrmx2013) (*Ukrainian*) - dkdarshan760 (*Sanskrit*) - Timur Seber (seber) (*Tatar*) - Slimane Selyan AMIRI (SelyanKab) (*Kabyle*) - VaiTon (*Italian*) -- Vik (ViktorOn) (*Danish, Russian*) - tykayn (*French*) -- GCardo (*Portuguese, Brazilian*) +- Abdulaziz Aljaber (kuwaitna) (*Arabic*) - taoxvx (*Danish*) -- Hrach Mkrtchyan (mhrach87) (*Armenian*) +- Hrach Mkrtchyan (hrachmk) (*Armenian*) - sabri (thetomatoisavegetable) (*Spanish, Spanish, Argentina*) -- Dewi (Unkorneg) (*French, Breton*) - CoelacanthusHex (*Chinese Simplified*) - Rhys Harrison (rhedders) (*Esperanto*) -- syncopams (*Chinese Simplified, Chinese Traditional, Chinese Traditional, Hong Kong*) +- syncopams (*Chinese Traditional, Hong Kong, Chinese Traditional, Chinese Simplified*) - SteinarK (*Norwegian Nynorsk*) +- REMOVED_USER (*Standard Moroccan Tamazight*) - Maxine B. Vågnes (vagnes) (*Norwegian, Norwegian Nynorsk*) -- Hakim Oubouali (zenata1) (*Standard Moroccan Tamazight*) +- Rikard Linde (rikardlinde) (*Swedish*) - ahangarha (*Persian*) - Lalo Tafolla (lalotafo) (*Spanish, Spanish, Mexico*) -- dashersyed (*Urdu (Pakistan)*) +- Larissa Cruz (larissacruz) (*Portuguese, Brazilian*) +- dashersyed (Urdu (Pakistan)) +- camerongreer21 (*English, United Kingdom*) +- REMOVED_USER (*Ukrainian*) - Conight Wang (xfddwhh) (*Chinese Simplified*) - liffon (*Swedish*) - Damjan Dimitrioski (gnud) (*Macedonian*) -- Rikard Linde (rikardlinde) (*Swedish*) - rondnunes (*Portuguese, Brazilian*) -- strubbl (*German*) - PPNplus (*Thai*) -- Frontier Translation Ltd. (frontier-translation) (*Chinese Simplified*) +- Steven Ritchie (Steaph38) (*Scottish Gaelic*) +- 游荡 (MamaShip) (*Chinese Simplified*) +- Edward Navarro (EdwardNavarro) (*Spanish*) - shioko (*Chinese Simplified*) +- gnu-ewm (*Polish*) - Kahina Mess (K_hina) (*Kabyle*) +- Hexandcube (hexandcube) (*Polish*) +- Scott Starkey (yekrats) (*Esperanto*) - ZiriSut (*Kabyle*) +- FreddyG (*Esperanto*) +- mynameismonkey (*Welsh*) - Groosha (groosha) (*Russian*) -- Hexandcube (hexandcube) (*Polish*) - Gwenn (Belvar) (*Breton*) -- 游荡 (MamaShip) (*Chinese Simplified*) - StanleyFrew (*French*) -- mynameismonkey (*Welsh*) -- Edward Navarro (EdwardNavarro) (*Spanish*) +- cathalgarvey (*Irish*) - Nikita Epifanov (Nikets) (*Russian*) +- REMOVED_USER (*Finnish*) - jaranta (*Finnish*) - Slobodan Simić (Слободан Симић) (slsimic) (*Serbian (Cyrillic)*) -- retiolus (*Catalan*) -- iVampireSP (*Chinese Simplified, Chinese Traditional*) +- iVampireSP (*Chinese Traditional, Chinese Simplified*) - Felicia Jongleur (midsommar) (*Swedish*) - Denys (dector) (*Ukrainian*) - Mo_der Steven (SakuraPuare) (*Chinese Simplified*) +- REMOVED_USER (*German*) +- Kishin Sagume (kishinsagi) (*Chinese Simplified*) +- bennepharaoh (*Chinese Simplified*) - Vanege (*Esperanto*) +- hibiya inemuri (hibiya) (*Korean*) - Jess Rafn (therealyez) (*Danish*) - Stasiek Michalski (hellcp) (*Polish*) - dxwc (*Bengali*) -- Filbert Salim (gamesbert6) (*Indonesian*) +- Heran Membingung (heranmembingung) (*Indonesian*) +- Parodper (*Galician*) +- rbnval (*Catalan*) - Liboide (*Spanish*) +- hemnaren (*Norwegian Nynorsk*) - jmontane (*Catalan*) +- Andy Kleinert (AndyKl) (*German*) - Chris Kay (chriskarasoulis) (*Greek*) +- CrowdinBRUH (*Vietnamese*) +- Rhoslyn Prys (Rhoslyn) (*Welsh*) +- abidin toumi (Zet24) (*Arabic*) - Johan Schiff (schyffel) (*Swedish*) - Rex_sa (rex07) (*Arabic*) +- amedcj (*Kurmanji (Kurdish)*) - Arunmozhi (tecoholic) (*Tamil*) - zer0-x (ZER0-X) (*Arabic*) -- kat (katktv) (*Russian, Ukrainian*) +- staticnoisexyz (*Czech*) - Lauren Liberda (selfisekai) (*Polish*) +- Michael Zeevi (maze88) (*Hebrew*) - oti4500 (*Hungarian, Ukrainian*) - Delta (Delta-Time) (*Japanese*) -- Michael Zeevi (maze88) (*Hebrew*) +- Marc Antoine Thevenet (MATsxm) (*French*) +- AlexKoala (alexkoala) (*Korean*) - SarfarazAhmed (*Urdu (Pakistan)*) +- Ahmad Dakhlallah (MIUIArabia) (*Arabic*) - Mats Gunnar Ahlqvist (goqbi) (*Swedish*) - diazepan (*Spanish, Spanish, Argentina*) +- Tiger:blank (tsagaanbar) (*Chinese Simplified*) +- REMOVED_USER (*Chinese Simplified*) - marzuquccen (*Kabyle*) - atriix (*Swedish*) +- Laur (melaur) (*Romanian*) - VictorCorreia (victorcorreia1984) (*Afrikaans*) - Remito (remitocat) (*Japanese*) -- AlexKoala (alexkoala) (*Korean*) - Juan José Salvador Piedra (JuanjoSalvador) (*Spanish*) -- BurekzFinezt (*Serbian (Cyrillic)*) +- REMOVED_USER (*Norwegian*) - 森の子リスのミーコの大冒険 (Phroneris) (*Japanese*) +- Gim_Garam (*Korean*) +- BurekzFinezt (*Serbian (Cyrillic)*) +- Pēteris Caune (cuu508) (*Latvian*) - asnomgtu (*Hungarian*) +- bendigeidfran (*Welsh*) - SHeija (*Finnish*) - Врабац (Slovorad) (*Serbian (Cyrillic)*) - Dženan (Dzenan) (*Swedish*) -- Jack R (isaac.97_WT) (*Spanish*) +- Gabriel Beecham (lancet) (*Irish*) - antonyho (*Chinese Traditional, Hong Kong*) -- FreddyG (*Esperanto*) -- andruhov (*Russian, Ukrainian*) +- Jack R (isaac.97_WT) (*Spanish*) +- Henrik Mattsson-Mårn (rchk) (*Swedish*) +- Oguzhan Aydin (aoguzhan) (*Turkish*) +- Soran730 (*Chinese Simplified*) +- andruhov (*Ukrainian, Russian*) +- 北䑓如法 (Nyoho) (*Japanese*) - phena109 (*Chinese Traditional, Hong Kong*) -- Aryamik Sharma (Aryamik) (*Swedish, Hindi*) +- Aryamik Sharma (Aryamik) (*Hindi, Swedish*) - Unmual (*Spanish*) +- Tobias Bannert (toba) (*German*) - Adrián Graña (alaris83) (*Spanish*) -- cruz2020 (*Portuguese*) - vpei (*Chinese Simplified*) +- cruz2020 (*Portuguese*) +- papapep (h9f2ycHh-ktOd6_Y) (*Catalan*) +- Roj (roj1512) (*Sorani (Kurdish), Kurmanji (Kurdish)*) - るいーね (ruine) (*Japanese*) +- aujawindar (*Norwegian Nynorsk*) +- irithys (*Chinese Simplified*) - Sam Tux (imahbub) (*Bengali*) - igordrozniak (*Polish*) +- Johannes Nilsson (nlssn) (*Swedish*) - Michał Sidor (michcioperz) (*Polish*) - Isaac Huang (caasih) (*Chinese Traditional*) - AW Unad (awcodify) (*Indonesian*) - 1Alino (*Slovak*) - Cutls (cutls) (*Japanese*) -- Goudarz Jafari (Goudarz) (*Persian*) -- Parodper (*Galician*) +- Goudarz Jafari (GoudarzJafari) (*Persian*) +- Daniel Strömholm (stromholm) (*Swedish*) - 1 (Ipsumry) (*Spanish*) - Falling Snowdin (tghgg) (*Vietnamese*) +- Paulino Michelazzo (pmichelazzo) (*Portuguese, Brazilian*) +- Y.Yamashiro (uist1idrju3i) (*Japanese*) - Rasmus Lindroth (RasmusLindroth) (*Swedish*) - Gianfranco Fronteddu (gianfro.gianfro) (*Sardinian*) - Andrea Lo Iacono (niels0n) (*Italian*) - fucsia (*Italian*) - Vedran Serbu (SerenoXGen) (*Croatian*) +- Raphael Das Gupta (das-g) (*Esperanto, German*) +- yanchan09 (*Estonian*) +- ainmeolai (*Irish*) +- REMOVED_USER (*Norwegian*) +- mian42 (*Bulgarian*) - Kinshuk Sunil (kinshuksunil) (*Hindi*) -- Ullas Joseph (ullasjoseph) (*Malayalam*) - al_._ (*German, Russian*) +- Ullas Joseph (ullasjoseph) (*Malayalam*) +- sanoth (*Swedish*) +- Aftab Alam (iaftabalam) (*Hindi*) +- frumble (*German*) +- juanda097 (juanda-097) (*Spanish*) - Matthías Páll Gissurarson (icetritlo) (*Icelandic*) -- Percy (kecrily) (*Chinese Simplified*) -- Yu-Pai Liu (tedliou) (*Chinese Traditional*) +- Russian Retro (retrograde) (*Russian*) - KcKcZi (*Chinese Simplified*) +- Yu-Pai Liu (tedliou) (*Chinese Traditional*) - Amarin Cemthong (acitmaster) (*Thai*) -- Johannes Nilsson (nlssn) (*Swedish*) -- juanda097 (juanda-097) (*Spanish*) +- Etinew (*Hebrew*) - xsml (*Chinese Simplified*) +- S.J. L. (samijuhanilii) (*Finnish*) - Anunnakey (*Macedonian*) - erikkemp (*Dutch*) +- Tsl (muun) (*Chinese Simplified*) +- Renato "Lond" Cerqueira (renatolond) (*Portuguese, Brazilian*) +- Úna-Minh Kavanagh (yunitex) (*Irish*) +- kongk (*Norwegian Nynorsk*) - erikstl (*Esperanto*) - twpenguin (*Chinese Traditional*) +- JeremyStarTM (*German*) - Po-chiang Chao (bobchao) (*Chinese Traditional*) - Marcus Myge (mygg-priv) (*Norwegian*) - Esther (esthermations) (*Portuguese*) +- Jiri Grönroos (spammemoreplease) (*Finnish*) - MadeInSteak (*Finnish*) +- witoharmuth (*Swedish*) +- MESHAL45 (*Arabic*) +- mcdutchie (*Dutch*) +- Michal Špondr (michalspondr) (*Czech*) - t_aus_m (*German*) -- serapolis (*Japanese, Chinese Simplified, Chinese Traditional, Chinese Traditional, Hong Kong*) +- kaki7777 (*Japanese, Chinese Traditional*) - Heimen Stoffels (Vistaus) (*Dutch*) +- serapolis (*Chinese Traditional, Hong Kong, Chinese Traditional, Japanese, Chinese Simplified*) - Rajarshi Guha (rajarshiguha) (*Bengali*) +- Amir Reza (ElAmir) (*Persian*) +- REMOVED_USER (*Norwegian*) +- MohammadSaleh Kamyab (mskf1383) (*Persian*) +- REMOVED_USER (*Romanian*) - Gopal Sharma (gopalvirat) (*Hindi*) +- Вероніка Някшу (pampushkaveronica) (*Russian, Romanian*) - Linnéa (lesbian_subnet) (*Swedish*) -- 北䑓如法 (Nyoho) (*Japanese*) -- abidin toumi (Zet24) (*Arabic*) -- Tofiq Abdula (Xwla) (*Sorani (Kurdish)*) +- Valentin (HDValentin) (*German*) +- dragnucs2 (*Arabic*) - Carlos Solís (csolisr) (*Esperanto*) -- Yamagishi Kazutoshi (ykzts) (*Japanese, Vietnamese, Icelandic, Sorani (Kurdish)*) +- Tofiq Abdula (Xwla) (*Sorani (Kurdish)*) +- halcek (*Slovak*) +- Tobias Kunze (rixxian) (*German*) - Parthan S Ramanujam (parthan) (*Tamil*) - Kasper Nymand (KasperNymand) (*Danish*) -- subram (*Turkish*) - TS (morte) (*Finnish*) -- SensDeViata (*Ukrainian*) +- REMOVED_USER (*German*) +- REMOVED_USER (*Basque*) +- subram (*Turkish*) +- Gudwin (*Spanish, Mexico, Spanish*) - Ptrcmd (ptrcmd) (*Chinese Traditional*) +- shmuelHal (*Hebrew*) +- SensDeViata (*Ukrainian*) - megaleo (*Portuguese, Brazilian*) +- Acursen (*German*) +- NurKai Kai (nurkaiyttv) (*German*) +- Guttorm (ghveem) (*Norwegian Nynorsk*) - SergioFMiranda (*Portuguese, Brazilian*) -- hiroTS (*Chinese Traditional*) +- Danni Lundgren (dannilundgren) (*Danish*) - Vivek K J (Vivekkj) (*Malayalam*) -- arielcostas3 (*Galician*) +- hiroTS (*Chinese Traditional*) +- teadesu (*Portuguese, Brazilian*) +- petartrajkov (*Macedonian*) +- Ariel Costas (arielcostas3) (*Galician*) +- Ch. (sftblw) (*Korean*) +- Rintan (*Japanese*) +- Jair Henrique (jairhenrique) (*Portuguese, Brazilian*) +- sorcun (*Turkish*) +- filippodb (*Italian*) - johne32rus23 (*Russian*) -- AzureNya (*Chinese Simplified*) - OctolinGamer (octolingamer) (*Portuguese, Brazilian*) -- filippodb (*Italian*) +- AzureNya (*Chinese Simplified*) - Ram varma (ram4varma) (*Tamil*) +- REMOVED_USER (Sorani (Kurdish)) +- REMOVED_USER (*Portuguese, Brazilian*) +- seanmhade (*Irish*) - sanser (*Russian*) -- Y.Yamashiro (uist1idrju3i) (*Japanese*) +- Vijay (vijayatmin) (*Tamil*) +- Anomalion (*German*) - Pukima (Pukimaa) (*German*) -- diorama (*Italian*) -- frumble (*German*) +- Curtis Lee (CansCurtis) (*Chinese Traditional*) +- โบโลน่าไวรัส (nullxyz_) (*Thai*) +- ふぁーらんど (farland1717) (*Japanese*) +- 3wen (*Breton*) +- rlafuente (*Portuguese*) +- Ильзира Рахматуллина (rahmatullinailzira53) (*Tatar*) +- Code Man (codemansrc) (*Russian*) +- Philip Gillißen (guerda) (*German*) - Daniel Dimitrov (daniel.dimitrov) (*Bulgarian*) +- Anton (atjn) (*Danish*) - kekkepikkuni (*Tamil*) - MODcraft (*Chinese Simplified*) - oorsutri (*Tamil*) +- wortfeld (*German*) - Neo_Chen (NeoChen1024) (*Chinese Traditional*) +- Stereopolex (*Polish*) +- NxOne14 (*Bulgarian*) +- Juan Ortiz (Kloido) (*Spanish, Catalan*) - Nithin V (Nithin896) (*Tamil*) +- strikeCunny2245 (*Icelandic*) - Miro Rauhala (mirorauhala) (*Finnish*) +- nicoduesing (duconi) (*German, Esperanto*) +- Gnonthgol (*Norwegian Nynorsk*) +- WKobes (*Dutch*) - Oymate (*Bengali*) +- mikwee (*Hebrew*) +- EzigboOmenana (*Igbo, Cornish*) +- yan Wato (janWato) (*Hindi*) +- Papuass (*Latvian*) +- Vincent Orback (vincentorback) (*Swedish*) +- chettoy (*Chinese Simplified*) +- 19 (nineteen) (*Chinese Simplified*) - ಚಿರಾಗ್ ನಟರಾಜ್ (chiraag-nataraj) (*Kannada*) +- Layik Hama (layik) (*Sorani (Kurdish)*) - Guillaume Turchini (orion78fr) (*French*) +- Andri Yngvason (andryng) (*Icelandic*) - Aswin C (officialcjunior) (*Malayalam*) -- Ganesh D (auntgd) (*Marathi*) - Yuval Nehemia (yuvalne) (*Hebrew*) - mawoka-myblock (mawoka) (*German*) -- dragnucs2 (*Arabic*) +- Ganesh D (auntgd) (*Marathi*) +- Lens0021 (lens0021) (*Korean*) +- An Gafraíoch (angafraioch) (*Irish*) +- Michael Smith (michaelshmitty) (*Dutch*) - Ryan Ho (koungho) (*Chinese Traditional*) -- Tejas Harad (h_tejas) (*Marathi*) +- tunisiano187 (*French*) +- Peter van Mever (SpacemanSpiff) (*Dutch*) - Pedro Henrique (exploronauta) (*Portuguese, Brazilian*) -- Amir Reza (ElAmir) (*Persian*) -- Tatsuto "Laminne" Yamamoto (laminne) (*Japanese*) +- REMOVED_USER (*Esperanto, Italian, Japanese*) +- Tejas Harad (h_tejas) (*Marathi*) +- Balázs Meskó (meskobalazs) (*Hungarian*) - Vasanthan (vasanthan) (*Tamil*) +- Tatsuto "Laminne" Yamamoto (laminne) (*Japanese*) +- slbtty (shenlebantongying) (*Chinese Simplified*) - 硫酸鶏 (acid_chicken) (*Japanese*) - programizer (*German*) +- guessimmaterialgrl (*Chinese Simplified*) - clarmin b8 (clarminb8) (*Sorani (Kurdish)*) +- Maria Riegler (riegler3m) (*German*) - manukp (*Malayalam*) -- psymyn (*Hebrew*) - earth dweller (sanethoughtyt) (*Marathi*) +- psymyn (*Hebrew*) +- Aaraon Thomas (aaraon) (*Portuguese, Brazilian*) +- Rafael Viana (rafacnec) (*Portuguese, Brazilian*) - Marek Ľach (marek-lach) (*Slovak*) - meijerivoi (toilet) (*Finnish*) - essaar (*Tamil*) -- Nemuj (Dentrado) (*Japanese, Esperanto*) - serubeena (*Swedish*) -- Rintan (*Japanese*) -- Karol Kosek (krkkPL) (*Polish*) +- RqndomHax (*French*) +- REMOVED_USER (*Polish*) +- ギャラ (gyara) (*Chinese Simplified, Japanese*) - Khó͘ Tiatlêng (khotiatleng) (*Chinese Traditional, Taigi*) -- valarivan (*Tamil*) -- Hernik (hernik27) (*Czech*) - revarioba (*Spanish*) - friedbeans (*Croatian*) +- An (AnTheMaker) (*German*) - kuchengrab (*German*) +- Hernik (hernik27) (*Czech*) +- valarivan (*Tamil*) +- אדם לוין (adamlevin) (*Hebrew*) +- Vít Horčička (legvita123) (*Czech*) - Abi Turi (abi123) (*Georgian*) +- Thomas Munkholt (munkholt) (*Danish*) +- pparescasellas (*Catalan*) - Hinaloe (hinaloe) (*Japanese*) -- Sebastián Andil (Selrond) (*Slovak*) - Ifnuth (*German*) -- Asbjørn Olling (a2) (*Danish*) +- Sebastián Andil (Selrond) (*Slovak*) +- boni777 (*Chinese Simplified*) - KEINOS (*Japanese*) -- Balázs Meskó (meskobalazs) (*Hungarian*) -- Artem Mikhalitsin (artemmikhalitsin) (*Russian*) -- Algustionesa Yoshi (algustionesa) (*Indonesian*) -- Bottle (suryasalem2010) (*Tamil*) +- Asbjørn Olling (a2) (*Danish*) +- REMOVED_USER (*Chinese Traditional, Hong Kong*) +- DarkShy Community (ponyfrost.mc) (*Russian*) +- Dennis Reimund (reimunddennis7) (*German*) +- jocafeli (*Spanish, Mexico*) - Wrya ali (John12) (*Sorani (Kurdish)*) +- Bottle (suryasalem2010) (*Tamil*) +- Algustionesa Yoshi (algustionesa) (*Indonesian*) - JzshAC (*Chinese Simplified*) +- Artem Mikhalitsin (artemmikhalitsin) (*Russian*) - siamano (*Thai, Esperanto*) -- gnu-ewm (*Polish*) -- Antillion (antillion99) (*Spanish*) +- KARARTI44 (kararti44) (*Turkish*) +- c0c (*Irish*) +- Stefano S. (Sting1_JP) (*Italian*) +- tommil (*Finnish*) +- Ignacio Lis (ilis) (*Galician*) - Steven Tappert (sammy8806) (*German*) -- Reg3xp (*Persian*) +- Antillion (antillion99) (*Spanish*) +- K.B.Dharun Krishna (kbdharun) (*Tamil*) - Wassim EL BOUHAMIDI (elbouhamidiw) (*Arabic*) +- Reg3xp (*Persian*) +- florentVgn (*French*) +- Matt (Exbu) (*Dutch*) - Maciej Błędkowski (mble) (*Polish*) - gowthamanb (*Tamil*) - hiphipvargas (*Portuguese*) -- tunisiano187 (*French*) +- GabuVictor (*Portuguese, Brazilian*) +- Pverte (*French*) +- REMOVED_USER (*Spanish*) +- Surindaku (*Chinese Simplified*) - Arttu Ylhävuori (arttu.ylhavuori) (*Finnish*) -- Ch. (sftblw) (*Korean*) -- eorn (*Breton*) +- Pabllo Soares (pabllosoarez) (*Portuguese, Brazilian*) - Jona (88wcJoWl) (*Spanish*) -- Mikkel B. Goldschmidt (mikkelbjoern) (*Danish*) -- Timo Tijhof (Krinkle) (*Dutch*) - Ka2n (kaanmetu) (*Turkish*) - tctovsli (*Norwegian Nynorsk*) -- mecqor labi (mecqorlabi) (*Persian*) +- Timo Tijhof (Krinkle) (*Dutch*) +- SamitiMed (samiti3d) (*Thai*) +- Mikkel B. Goldschmidt (mikkelbjoern) (*Danish*) - Odyssey346 (alexader612) (*Norwegian*) +- mecqor labi (mecqorlabi) (*Persian*) +- Cù Huy Phúc Khang (taamee) (*Vietnamese*) +- Oskari Lavinto (olavinto) (*Finnish*) +- Philippe Lemaire (philippe-lemaire) (*Esperanto*) - vjasiegd (*Polish*) -- Eban (ebanDev) (*French, Esperanto*) -- SamitiMed (samiti3d) (*Thai*) +- Eban (ebanDev) (*Esperanto, French*) - Nícolas Lavinicki (nclavinicki) (*Portuguese, Brazilian*) +- REMOVED_USER (*Portuguese, Brazilian*) - Rekan Adl (rekan-adl1) (*Sorani (Kurdish)*) -- Antara2Cinta (Se7enTime) (*Indonesian*) -- Yassine Aït-El-Mouden (yaitelmouden) (*Standard Moroccan Tamazight*) - VSx86 (*Russian*) - umelard (*Hebrew*) +- Antara2Cinta (Se7enTime) (*Indonesian*) +- Lucas_NL (*Dutch*) +- Yassine Aït-El-Mouden (yaitelmouden) (*Standard Moroccan Tamazight*) +- Mathieu Marquer (slasherfun) (*French*) +- Haerul Fuad (Dokuwiki) (*Indonesian*) - parnikkapore (*Thai*) -- Lagash (lagash) (*Esperanto*) +- Michelle M (MichelleMMM) (*Dutch*) +- malbona (*Esperanto*) - Sherwan Othman (sherwanothman11) (*Sorani (Kurdish)*) -- SKELET (*Danish*) -- Exbu (*Dutch*) +- Lagash (lagash) (*Esperanto*) - Chine Sebastien (chine.sebastien) (*French*) -- Fei Yang (Fei1Yang) (*Chinese Traditional*) +- bgme (*Chinese Simplified*) +- Rafael V. (Rafaeeel) (*Portuguese, Brazilian*) +- SKELET (*Danish*) - A A (sebastien.chine) (*French*) +- Project Z (projectz.1338) (*German*) +- Fei Yang (Fei1Yang) (*Chinese Traditional*) - Ğani (freegnu) (*Tatar*) -- enipra (*Armenian*) -- Renato "Lond" Cerqueira (renatolond) (*Portuguese, Brazilian*) - musix (*Persian*) -- ギャラ (gyara) (*Japanese, Chinese Simplified*) +- REMOVED_USER (*German*) - ALEM FARID (faridatcemlulaqbayli) (*Kabyle*) +- Jean-Pierre MÉRESSE (Jipem) (*French*) +- enipra (*Armenian*) +- Serhiy Dmytryshyn (dies) (*Ukrainian*) +- Eric Brulatout (ebrulato) (*Esperanto*) - Hougo (hougo) (*French*) -- Mordi Sacks (MordiSacks) (*Hebrew*) -- Trinsec (*Dutch*) -- Adrián Lattes (haztecaso) (*Spanish*) +- Sonstwer (*German*) +- Pedro Fernandes (djprmf) (*Portuguese*) +- REMOVED_USER (*Norwegian*) - Tigran's Tips (tigrank08) (*Armenian*) - 亜緯丹穂 (ayiniho) (*Japanese*) +- maisui (*Chinese Simplified*) +- Trinsec (*Dutch*) +- Adrián Lattes (haztecaso) (*Spanish*) +- webkinzfrog (*Polish*) - ybardapurkar (*Marathi*) +- Mordi Sacks (MordiSacks) (*Hebrew*) +- Manuel Tassi (Mannivu) (*Italian*) - Szabolcs Gál (galszabolcs810624) (*Hungarian*) -- Vladislav Săcrieriu (vladislavs14) (*Romanian*) +- rikrise (*Swedish*) +- when_hurts (*German*) +- Wojciech Bigosinski (wbigos2) (*Polish*) +- Vladislav S (vladislavs) (*Romanian*) +- mikslatvis (*Latvian*) +- MartinAlstad (*Norwegian*) - TracyJacks (*Chinese Simplified*) - rasheedgm (*Kannada*) -- danreznik (*Hebrew*) - Cirelli (cirelli94) (*Italian*) +- danreznik (*Hebrew*) +- iraline (*Portuguese, Brazilian*) +- Seán Mór (seanmor3) (*Irish*) +- vianaweb (*Portuguese, Brazilian*) - Siddharastro Doraku (sidharastro) (*Spanish, Mexico*) -- lexxai (*Ukrainian*) +- REMOVED_USER (*Spanish*) - omquylzu (*Latvian*) +- Arthegor (*French*) - Navjot Singh (nspeaks) (*Hindi*) - mkljczk (*Polish*) - Belkacem Mohammed (belkacem77) (*Kabyle*) +- Showfom (*Chinese Simplified*) +- xemyst (*Catalan*) +- lexxai (*Ukrainian*) - c6ristian (*German*) -- damascene (*Arabic*) +- svetlozaurus (*Bulgarian*) - Ozai (*German*) +- damascene (*Arabic*) +- Jan Ainali (Ainali) (*Swedish*) - Sahak Petrosyan (petrosyan) (*Armenian*) +- Metehan Özyürek (MetehanOzyurek) (*Turkish*) +- Сау Рэмсон (sawrams) (*Russian*) +- metehan-arslan (*Turkish*) - Viorel-Cătălin Răpițeanu (rapiteanu) (*Romanian*) -- Siddhartha Sarathi Basu (quinoa_biryani) (*Bengali*) +- Sébastien SERRE (sebastienserre) (*French*) +- Eugen Caruntu (eugencaruntu) (*Romanian*) +- Kevin Scannell (kscanne) (*Irish*) - Pachara Chantawong (pachara2202) (*Thai*) -- Skew (noan.perrot) (*French*) +- bensch.dev (*German*) +- LIZH (*French*) +- Siddhartha Sarathi Basu (quinoa_biryani) (*Bengali*) +- Overflow Cat (OverflowCat) (*Chinese Traditional, Chinese Simplified*) +- Stephan Voeth (svoeth) (*German*) - Zijian Zhao (jobs2512821228) (*Chinese Simplified*) -- Overflow Cat (OverflowCat) (*Chinese Simplified, Chinese Traditional*) +- bugboy-20 (*Esperanto, Italian*) +- SouthFox (*Chinese Simplified*) +- Noan (SkewRam) (*French*) - dbeaver (*German*) -- zordsdavini (*Lithuanian*) -- Guru Prasath Anandapadmanaban (guruprasath) (*Tamil*) - turtle836 (*German*) +- Guru Prasath Anandapadmanaban (guruprasath) (*Tamil*) +- zordsdavini (*Lithuanian*) +- Susanna Ånäs (susanna.anas) (*Finnish*) +- Alessandro (alephoto85) (*Italian*) - Marcepanek_ (thekingmarcepan) (*Polish*) -- Feruz Oripov (FeruzOripov) (*Russian*) +- Choi Younsoo (usagicore) (*Korean*) - Yann Aguettaz (yann-a) (*French*) +- zylosophe (*French*) +- Celso Fernandes (Celsof) (*Portuguese, Brazilian*) +- Feruz Oripov (FeruzOripov) (*Russian*) +- REMOVED_USER (*French*) +- Bui Huy Quang (bhuyquang1) (*Vietnamese*) +- bogomilshopov (*Bulgarian*) +- REMOVED_USER (*Burmese*) +- Kaede (kaedech) (*Japanese*) - Mick Onio (xgc.redes) (*Asturian*) - Malik Mann (dermalikmann) (*German*) - padulafacundo (*Spanish*) +- r3dsp1 (*Chinese Traditional, Hong Kong*) - dadosch (*German*) -- hg6 (*Hindi*) - Tianqi Zhang (tina.zhang040609) (*Chinese Simplified*) -- r3dsp1 (*Chinese Traditional, Hong Kong*) -- johannes hove-henriksen (J0hsHH) (*Norwegian*) +- HybridGlucose (*Chinese Traditional*) +- vmichalak (*French*) +- hg6 (*Hindi*) +- marivisales (*Portuguese, Brazilian*) - Orlando Murcio (Atos20) (*Spanish, Mexico*) -- cenegd (*Chinese Simplified*) +- maa123 (*Japanese*) +- Julian Doser (julian21) (*English, United Kingdom, German*) +- johannes hove-henriksen (J0hsHH) (*Norwegian*) +- Alexander Ivanov (Saiv46) (*Russian*) +- unstable.icu (*Chinese Simplified*) +- Padraic Calpin (padraic-padraic) (*Slovenian*) - Youngeon Lee (YoungeonLee) (*Korean*) +- LeJun (le-jun) (*French*) - shdy (*German*) -- Umi (mtrumi) (*Chinese Simplified, Chinese Traditional, Hong Kong*) -- Padraic Calpin (padraic-padraic) (*Slovenian*) -- Ильзира Рахматуллина (rahmatullinailzira53) (*Tatar*) +- REMOVED_USER (*French*) +- Yonjae Lee (yonjlee) (*Korean*) +- cenegd (*Chinese Simplified*) - piupiupiudiu (*Chinese Simplified*) -- Pixelcode (realpixelcode) (*German*) -- Dennis Reimund (reimunddennis7) (*German*) +- Umi (mtrumi) (*Chinese Traditional, Hong Kong, Chinese Simplified*) - Yogesh K S (yogi) (*Kannada*) +- Ulong32 (*Japanese*) - Adithya K (adithyak04) (*Malayalam*) - DAI JIE (daijie) (*Chinese Simplified*) +- Mihael Budeč (milli.pretili) (*Croatian*) - Hugh Liu (youloveonlymeh) (*Chinese Simplified*) -- Rakino (rakino) (*Chinese Simplified*) - ZQYD (*Chinese Simplified*) - X.M (kimonoki) (*Chinese Simplified*) -- boni777 (*Chinese Simplified*) +- Rakino (rakino) (*Chinese Simplified*) +- paziy Georgi (paziygeorgi4) (*Dutch*) +- Komeil Parseh (mmdbalkhi) (*Persian*) - Jothipazhani Nagarajan (jothipazhani.n) (*Tamil*) -- Miquel Sabaté Solà (mssola) (*Catalan*) +- tikky9 (*Portuguese, Brazilian*) +- horsm (*Finnish*) +- BenJule (*German*) - Stanisław Jelnicki (JelNiSlaw) (*Polish*) +- Yananas (wangyanyan.hy) (*Chinese Simplified*) +- Vivamus (elaaksu) (*Turkish*) +- ihealyou (*Italian*) - AmazighNM (*Kabyle*) +- Miquel Sabaté Solà (mssola) (*Catalan*) +- residuum (*German*) +- nua_kr (*Korean*) +- Andrea Mazzilli (andreamazzilli) (*Italian*) +- Paula SIMON (EncoreEutIlFalluQueJeLeSusse) (*French*) +- hallomaurits (*Dutch*) +- Erfan Kheyrollahi Qaroğlu (ekm507) (*Persian*) +- REMOVED_USER (*Galician, Spanish*) - alnd hezh (alndhezh) (*Sorani (Kurdish)*) -- CloudSet (*Chinese Simplified*) - Clash Clans (KURD12345) (*Sorani (Kurdish)*) -- Metehan Özyürek (MetehanOzyurek) (*Turkish*) -- Paula SIMON (EncoreEutIlFalluQueJeLeSusse) (*French*) +- ruok (*Chinese Simplified*) +- Frederik-FJ (*German*) +- CloudSet (*Chinese Simplified*) - Solid Rhino (SolidRhino) (*Dutch*) -- nua_kr (*Korean*) -- hallomaurits (*Dutch*) -- 林水溶 (shuiRong) (*Chinese Simplified*) -- rikrise (*Swedish*) -- Takeshi Umeda (noellabo) (*Japanese*) +- hussama (*Portuguese, Brazilian*) +- jazzynico (*French*) - k_taka (peaceroad) (*Japanese*) +- 林水溶 (shuiRong) (*Chinese Simplified*) +- Peter Lutz (theellutzo) (*German*) - Sébastien Feugère (smonff) (*French*) +- AnalGoddess770 (*Hebrew*) +- Sven Goller (svengoller) (*German*) +- Ahmet (ahmetlii) (*Turkish*) +- hosted22 (*German*) - Hallo Abdullah (hallo_hamza12) (*Sorani (Kurdish)*) -- hussama (*Portuguese, Brazilian*) -- EzigboOmenana (*Cornish*) +- Karam Hamada (TheKaram) (*Arabic*) +- Takeshi Umeda (noellabo) (*Japanese*) +- SnDer (*Dutch*) - Robert Yano (throwcalmbobaway) (*Spanish, Mexico*) -- Yasin İsa YILDIRIM (redsfyre) (*Turkish*) -- PifyZ (*French*) -- Tagada (Tagadda) (*French*) -- eichkat3r (*German*) -- Ashok314 (ashok314) (*Hindi*) +- Gustav Lindqvist (Reedyn) (*Swedish*) +- Dagur Ammendrup (dagurp) (*Icelandic*) +- shafouz (*Portuguese, Brazilian*) +- Miguel Branco (mglbranco) (*Galician*) +- Sergey Panteleev (saundefined) (*Russian*) +- Tom_ (*Czech*) - Zlr- (cZeler) (*French*) -- SnDer (*Dutch*) -- OminousCry (*Russian*) +- Ashok314 (ashok314) (*Hindi*) +- PifyZ (*French*) +- Zeyi Fan (fanzeyi) (*Chinese Simplified*) +- OminousCry (*Russian, Ukrainian*) - Adam Sapiński (Adamos9898) (*Polish*) -- Tom_ (*Czech*) -- shafouz (*Portuguese, Brazilian*) -- Shrinivasan T (tshrinivasan) (*Tamil*) -- Kk (kishorkumara3) (*Kannada*) -- Swati Sani (swatisani) (*Urdu (Pakistan)*) -- papayaisnotafood (*Chinese Traditional*) -- さっかりんにーさん (saccharin23) (*Japanese*) +- eichkat3r (*German*) +- Yasin İsa YILDIRIM (redsfyre) (*Turkish*) +- Tagada (Tagadda) (*French*) +- gasrios (*Portuguese, Brazilian*) +- 夜楓Yoka (Yoka2627) (*Chinese Simplified*) +- AniCommieDDR (*Russian*) +- Nathaël Noguès (NatNgs) (*French*) - Daniel M. (daniconil) (*Catalan*) - César Daniel Cavanzo Quintero (LeinadCQ) (*Esperanto*) -- Nathaël Noguès (NatNgs) (*French*) -- 夜楓Yoka (Yoka2627) (*Chinese Simplified*) +- Noam Tamim (noamtm) (*Hebrew*) +- papayaisnotafood (*Chinese Traditional*) +- さっかりんにーさん (saccharin23) (*Japanese*) +- Marcin Wolski (martinwolski) (*Polish*) +- REMOVED_USER (*Chinese Simplified*) +- Kk (kishorkumara3) (*Kannada*) +- Shrinivasan T (tshrinivasan) (*Tamil*) +- REMOVED_USER (Urdu (Pakistan)) +- Kakarico Bra (kakarico20) (*Portuguese, Brazilian*) +- Swati Sani (swatisani) (*Urdu (Pakistan)*) +- 快乐的老鼠宝宝 (LaoShuBaby) (*Chinese Simplified, Chinese Traditional*) - Mt Front (mtfront) (*Chinese Simplified*) -- Artem (Artem4ik) (*Russian*) -- Robin van der Vliet (RobinvanderVliet) (*Esperanto*) -- Tradjincal (tradjincal) (*French*) - SusVersiva (*Catalan*) +- REMOVED_USER (*Portuguese, Brazilian*) +- Avinash Mg (hatman290) (*Malayalam*) +- kruijs (*Dutch*) +- Artem (Artem4ik) (*Russian*) - Zinkokooo (*Basque*) -- Marvin (magicmarvman) (*German*) +- 劉昌賢 (twcctz500) (*Chinese Traditional*) - Vikatakavi (*Kannada*) +- Tradjincal (tradjincal) (*French*) +- Robin van der Vliet (RobinvanderVliet) (*Esperanto*) +- Marvin (magicmarvman) (*German*) - pullopen (*Chinese Simplified*) -- sergioaraujo1 (*Portuguese, Brazilian*) -- prabhjot (*Hindi*) -- CyberAmoeba (pseudoobscura) (*Chinese Simplified*) -- mmokhi (*Persian*) +- Tealk (*German*) +- tibequadorian (*German*) +- Henk Bulder (henkbulder) (*Dutch*) +- Edison Lee (edisonlee55) (*Chinese Traditional*) +- mpdude (*German*) +- Rijk van Geijtenbeek (rvangeijtenbeek) (*Dutch*) - Entelekheia-ousia (*Chinese Simplified*) +- REMOVED_USER (*Spanish*) +- sergioaraujo1 (*Portuguese, Brazilian*) - Livingston Samuel (livingston) (*Tamil*) +- mmokhi (*Persian*) - tsundoker (*Malayalam*) -- skaaarrr (*German*) -- Pierre Morvan (Iriep) (*Breton*) +- CyberAmoeba (pseudoobscura) (*Chinese Simplified*) +- prabhjot (*Hindi*) +- Ikka Putri (ikka240290) (*Indonesian, Danish, English, United Kingdom*) - Paz Galindo (paz.almendra.g) (*Spanish*) -- fedot (*Russian*) -- mkljczk (mykylyjczyk) (*Polish*) - Ricardo Colin (rysard) (*Spanish*) -- Philipp Fischbeck (PFischbeck) (*German*) +- Pierre Morvan (Iriep) (*Breton*) - oscfd (*Spanish*) +- Thies Mueller (thies00) (*German*) +- Lyra (teromene) (*French*) +- Kedr (lava20121991) (*Esperanto*) +- mkljczk (mykylyjczyk) (*Polish*) +- fedot (*Russian*) +- Philipp Fischbeck (PFischbeck) (*German*) +- Hasan Berkay Çağır (berkaycagir) (*Turkish*) +- Silvestri Nicola (nick99silver) (*Italian*) +- skaaarrr (*German*) +- Mo Rijndael (mo_rijndael) (*Russian*) +- tsesunnaallun (orezraey) (*Portuguese, Brazilian*) +- Lukas Fülling (lfuelling) (*German*) +- Algo (algovigura) (*Indonesian*) +- REMOVED_USER (*Spanish*) +- setthemfree (*Ukrainian*) +- i fly (ifly3years) (*Chinese Simplified*) +- ralozkolya (*Georgian*) - Zoé Bőle (zoe1337) (*German*) +- Ville Rantanen (vrntnn) (*Finnish*) - GaggiX (*Italian*) - JackXu (Merman-Jack) (*Chinese Simplified*) -- Lukas Fülling (lfuelling) (*German*) -- ralozkolya (*Georgian*) -- Jason Gibson (barberpike606) (*Slovenian, Chinese Simplified*) -- Dremski (*Bulgarian*) -- Kaede (kaedech) (*Japanese*) -- Aymeric (AymBroussier) (*French*) -- mashirozx (*Chinese Simplified*) -- María José Vera (mjverap) (*Spanish*) -- asala4544 (*Basque*) -- ronee (*Kurmanji (Kurdish)*) -- qwerty287 (*German*) -- pezcurrel (*Italian*) -- Anoop (anoopp) (*Malayalam*) +- ceonia (*Chinese Traditional, Hong Kong*) +- Emirhan Yavuz (takomlii) (*Turkish*) +- teezeh (*German*) +- MevLyshkin (Leinnan) (*Polish*) - Apple (blackteaovo) (*Chinese Simplified*) -- Lilian Nabati (Lilounab49) (*French*) -- ru_mactunnag (*Scottish Gaelic*) -- Nocta (*French*) +- qwerty287 (*German*) - Tangcuyu (*Chinese Simplified*) +- Nocta (*French*) +- ru_mactunnag (*Scottish Gaelic*) +- Lilian Nabati (Lilounab49) (*French*) +- lokalisoija (*Finnish*) - Dennis Reimund (reimund_dennis) (*German*) -- Albatroz Jeremias (albjeremias) (*Portuguese*) -- Xurxo Guerra (xguerrap) (*Galician*) +- ronee (*Kurmanji (Kurdish)*) +- EricVogt_ (*Spanish*) +- yu miao (metaxx.dev) (*Chinese Simplified*) +- Anoop (anoopp) (*Malayalam*) - Samir Tighzert (samir_t7) (*Kabyle*) -- lokalisoija (*Finnish*) +- sn02 (*German*) +- Yui Karasuma (yui87) (*Japanese*) +- asala4544 (*Basque*) +- Thibaut Rousseau (thiht44) (*French*) +- Jason Gibson (barberpike606) (*Slovenian, Chinese Simplified*) +- Sugar NO (g1024116707) (*Chinese Simplified*) +- Aymeric (AymBroussier) (*French*) +- pezcurrel (*Italian*) +- Xurxo Guerra (xguerrap) (*Galician*) +- nicosomb (*French*) +- Albatroz Jeremias (albjeremias) (*Portuguese*) +- María José Vera (mjverap) (*Spanish*) +- mashirozx (*Chinese Simplified*) - codl (*French*) -- thisdudeisvegan (braydofficial) (*German*) -- tamaina (*Japanese*) +- Doug (douglasalvespe) (*Portuguese, Brazilian*) - Matias Lavik (matiaslavik) (*Norwegian Nynorsk*) -- Aman Alam (aalam) (*Punjabi*) +- random_person (*Spanish*) +- whoeta (wh0eta) (*Russian*) +- xpac1985 (xpac) (*German*) +- thisdudeisvegan (braydofficial) (*German*) +- Fleva (*Sardinian*) +- Anonymous (Anonymous666) (*Russian*) +- Mohammad Adnan Mahmood (adnanmig) (*Arabic*) +- ÀŘǾŚ PÀŚĦÀÍ (arospashai) (*Sorani (Kurdish)*) +- mikel (mikelalas) (*Spanish*) +- Trond Boksasp (boksasp) (*Norwegian*) +- asretro (*Chinese Traditional, Hong Kong*) - Holger Huo (holgerhuo) (*Chinese Simplified*) -- Amith Raj Shetty (amithraj1989) (*Kannada*) +- Aman Alam (aalam) (*Punjabi*) +- smedvedev (*Russian*) +- Jay Lonnquist (crowkeep) (*Japanese*) - mimikun (*Japanese*) +- Mohd Bilal (mdb571) (*Malayalam*) +- veer66 (*Thai*) +- OpenAlgeria (*Arabic*) +- Rave (nayumi-464812844) (*Vietnamese*) +- ReavedNetwork (*German*) +- Michael (Discostu36) (*German*) +- tamaina (*Japanese*) +- sk22 (*German*) - Ragnars Eggerts (rmegg1933) (*Latvian*) -- ÀŘǾŚ PÀŚĦÀÍ (arospashai) (*Sorani (Kurdish)*) -- smedvedev (*Russian*) - Sais Lakshmanan (Saislakshmanan) (*Tamil*) -- Mohammad Adnan Mahmood (adnanmig) (*Arabic*) -- OpenAlgeria (*Arabic*) -- Trond Boksasp (boksasp) (*Norwegian*) -- Doug (douglasalvespe) (*Portuguese, Brazilian*) -- Mohd Bilal (mdb571) (*Malayalam*) -- Fleva (*Sardinian*) -- xpac1985 (xpac) (*German*) -- mikel (mikelalas) (*Spanish*) -- random_person (*Spanish*) -- asretro (*Chinese Traditional, Hong Kong*) -- Arĝentakato (argxentakato) (*Japanese*) -- Nithya Mary (nithyamary25) (*Tamil*) -- Azad ahmad (dashty) (*Sorani (Kurdish)*) +- Amith Raj Shetty (amithraj1989) (*Kannada*) - Bartek Fijałkowski (brateq) (*Polish*) +- Asbeltrion (*Spanish*) +- Michael Horstmann (mhrstmnn) (*German*) +- Joffrey Abeilard (Abeilard14) (*French*) +- capiscuas (*Spanish*) +- djoerd (*Dutch*) +- REMOVED_USER (*Spanish*) +- NeverMine17 (*Russian*) +- songxianj (songxian_jiang) (*Chinese Simplified*) +- Ács Zoltán (zoli111) (*Hungarian*) +- haaninjo (*Swedish*) +- REMOVED_USER (*Esperanto*) +- Philip Molares (DerMolly) (*German*) +- ChalkPE (amato0617) (*Korean*) - ebrezhoneg (*Breton*) +- 디떱 (diddub) (*Korean*) +- Hans (hansj) (*German*) +- Nithya Mary (nithyamary25) (*Tamil*) +- kavitha129 (*Tamil*) +- waweic (*German*) +- Aries (orlea) (*Japanese*) +- おさ (osapon) (*Japanese*) +- Abijeet Patro (Abijeet) (*Basque*) +- centumix (*Japanese*) +- Martin Müller (muellermartin) (*German*) +- tateisu (*Japanese*) +- Arĝentakato (argxentakato) (*Japanese*) +- Benjamin Cobb (benjamincobb) (*German*) +- deanerschnitzel (*German*) +- Jill H. (kokakiwi) (*French*) - maksutheam (*Finnish*) +- d0p1 (d0p1s4m4) (*French*) - majorblazr (*Danish*) -- Jill H. (kokakiwi) (*French*) - Patrice Boivin (patriceboivin58) (*French*) -- centumix (*Japanese*) - 江尚寒 (jiangshanghan) (*Chinese Simplified*) -- hud5634j (*Spanish*) -- おさ (osapon) (*Japanese*) -- Jiniux (*Italian*) -- Hannah (Aniqueper1) (*Chinese Simplified*) -- Ni Futchi (futchitwo) (*Japanese*) -- dobrado (*Portuguese, Brazilian*) -- dcapillae (*Spanish*) +- HSD Channel (kvdbve34) (*Russian*) +- alwyn joe (iomedivh200) (*Chinese Simplified*) +- ZHY (sheepzh) (*Chinese Simplified*) +- Bei Li (libei) (*Chinese Simplified*) +- Aluo (Aluo_rbszd) (*Chinese Simplified*) +- clarkzjw (*Chinese Simplified*) +- Noah Luppe (noahlup) (*German*) +- araghunde (*Galician*) +- BratishkaErik (*Russian*) +- Bunny9568 (*Chinese Simplified*) +- SamOak (*Portuguese, Brazilian*) - Ranj A Abdulqadir (RanjAhmed) (*Sorani (Kurdish)*) -- Kurdish Translator (Kurdish.boy) (*Sorani (Kurdish)*) - Amir Kurdo (kuraking202) (*Sorani (Kurdish)*) -- umonaca (*Chinese Simplified*) -- Jari Ronkainen (ronchaine) (*Finnish*) -- djoerd (*Dutch*) -- Savarín Electrográfico Marmota Intergalactica (herrero.maty) (*Spanish*) - 于晚霞 (xissshawww) (*Chinese Simplified*) -- tateisu (*Japanese*) -- NeverMine17 (*Russian*) +- Fyuoxyjidyho Moiodyyiodyhi (fyuodchiodmoiidiiduh86) (*Chinese Simplified*) +- RPD0911 (*Hungarian*) +- dcapillae (*Spanish*) +- dobrado (*Portuguese, Brazilian*) +- Hannah (Aniqueper1) (*Chinese Simplified*) +- Azad ahmad (dashty) (*Sorani (Kurdish)*) +- Uri Chachick (urich.404) (*Hebrew*) +- Bnoru (*Portuguese, Brazilian*) +- Jiniux (*Italian*) +- REMOVED_USER (*German*) +- Salh_haji6 (Sorani (Kurdish)) +- Kurdish Translator (*Kurdish.boy) (Sorani (Kurdish)*) +- Beagle (beagleworks) (*Japanese*) +- hud5634j (*Spanish*) +- Kisaragi Hiu (flyingfeather1501) (*Chinese Traditional*) +- Dominik Ziegler (dodomedia) (*German*) - soheilkhanalipur (*Persian*) -- SamOak (*Portuguese, Brazilian*) -- kavitha129 (*Tamil*) -- Salh_haji6 (*Sorani (Kurdish)*) - Brodi (brodi1) (*Dutch*) -- capiscuas (*Spanish*) -- HSD Channel (kvdbve34) (*Russian*) -- Abijeet Patro (Abijeet) (*Basque*) -- Ács Zoltán (zoli111) (*Hungarian*) -- Benjamin Cobb (benjamincobb) (*German*) -- waweic (*German*) -- Aries (orlea) (*Japanese*) +- Savarín Electrográfico Marmota Intergalactica (herrero.maty) (*Spanish*) +- Ni Futchi (futchitwo) (*Japanese*) +- Zois Lee (gcnwm) (*Chinese Simplified*) +- Arnold Marko (atomicmind) (*Slovenian*) +- scholzco (*German*) +- Jari Ronkainen (ronchaine) (*Finnish*) +- umonaca (*Chinese Simplified*) From 457c37e47ae51e09dfbfe687616415b3c8be13af Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 14 Nov 2022 08:33:48 +0100 Subject: [PATCH 458/500] Fix index name in fix-duplicates task (#20632) --- lib/mastodon/maintenance_cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/maintenance_cli.rb b/lib/mastodon/maintenance_cli.rb index 0b5049c14f..85937da812 100644 --- a/lib/mastodon/maintenance_cli.rb +++ b/lib/mastodon/maintenance_cli.rb @@ -499,7 +499,7 @@ module Mastodon def deduplicate_tags! remove_index_if_exists!(:tags, 'index_tags_on_name_lower') - remove_index_if_exists!(:tags, 'index_tags_on_lower_btree') + remove_index_if_exists!(:tags, 'index_tags_on_name_lower_btree') @prompt.say 'Deduplicating tags…' ActiveRecord::Base.connection.select_all("SELECT string_agg(id::text, ',') AS ids FROM tags GROUP BY lower((name)::text) HAVING count(*) > 1").each do |row| From b59ce0a60ff4f90bb16a8c3338ad37218af052b8 Mon Sep 17 00:00:00 2001 From: trwnh Date: Mon, 14 Nov 2022 01:34:07 -0600 Subject: [PATCH 459/500] Move V2 Filter methods under /api/v2 prefix (#20622) * Move V2 Filter methods under /api/v2 prefix * move over the tests too --- .../{v1 => v2}/filters/keywords_controller.rb | 2 +- .../{v1 => v2}/filters/statuses_controller.rb | 2 +- app/javascript/mastodon/actions/filters.js | 2 +- config/routes.rb | 20 +++++++++---------- .../filters/keywords_controller_spec.rb | 2 +- .../filters/statuses_controller_spec.rb | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) rename app/controllers/api/{v1 => v2}/filters/keywords_controller.rb (95%) rename app/controllers/api/{v1 => v2}/filters/statuses_controller.rb (95%) rename spec/controllers/api/{v1 => v2}/filters/keywords_controller_spec.rb (98%) rename spec/controllers/api/{v1 => v2}/filters/statuses_controller_spec.rb (98%) diff --git a/app/controllers/api/v1/filters/keywords_controller.rb b/app/controllers/api/v2/filters/keywords_controller.rb similarity index 95% rename from app/controllers/api/v1/filters/keywords_controller.rb rename to app/controllers/api/v2/filters/keywords_controller.rb index d3718a1371..c63e1d986b 100644 --- a/app/controllers/api/v1/filters/keywords_controller.rb +++ b/app/controllers/api/v2/filters/keywords_controller.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class Api::V1::Filters::KeywordsController < Api::BaseController +class Api::V2::Filters::KeywordsController < Api::BaseController before_action -> { doorkeeper_authorize! :read, :'read:filters' }, only: [:index, :show] before_action -> { doorkeeper_authorize! :write, :'write:filters' }, except: [:index, :show] before_action :require_user! diff --git a/app/controllers/api/v1/filters/statuses_controller.rb b/app/controllers/api/v2/filters/statuses_controller.rb similarity index 95% rename from app/controllers/api/v1/filters/statuses_controller.rb rename to app/controllers/api/v2/filters/statuses_controller.rb index b6bed306fc..755c14cffa 100644 --- a/app/controllers/api/v1/filters/statuses_controller.rb +++ b/app/controllers/api/v2/filters/statuses_controller.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class Api::V1::Filters::StatusesController < Api::BaseController +class Api::V2::Filters::StatusesController < Api::BaseController before_action -> { doorkeeper_authorize! :read, :'read:filters' }, only: [:index, :show] before_action -> { doorkeeper_authorize! :write, :'write:filters' }, except: [:index, :show] before_action :require_user! diff --git a/app/javascript/mastodon/actions/filters.js b/app/javascript/mastodon/actions/filters.js index 76326802ea..e9c609fc87 100644 --- a/app/javascript/mastodon/actions/filters.js +++ b/app/javascript/mastodon/actions/filters.js @@ -43,7 +43,7 @@ export const fetchFilters = () => (dispatch, getState) => { export const createFilterStatus = (params, onSuccess, onFail) => (dispatch, getState) => { dispatch(createFilterStatusRequest()); - api(getState).post(`/api/v1/filters/${params.filter_id}/statuses`, params).then(response => { + api(getState).post(`/api/v2/filters/${params.filter_id}/statuses`, params).then(response => { dispatch(createFilterStatusSuccess(response.data)); if (onSuccess) onSuccess(); }).catch(error => { diff --git a/config/routes.rb b/config/routes.rb index d8af292bfc..f095ff6551 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -493,18 +493,10 @@ Rails.application.routes.draw do resources :bookmarks, only: [:index] resources :reports, only: [:create] resources :trends, only: [:index], controller: 'trends/tags' - resources :filters, only: [:index, :create, :show, :update, :destroy] do - resources :keywords, only: [:index, :create], controller: 'filters/keywords' - resources :statuses, only: [:index, :create], controller: 'filters/statuses' - end + resources :filters, only: [:index, :create, :show, :update, :destroy] resources :endorsements, only: [:index] resources :markers, only: [:index, :create] - namespace :filters do - resources :keywords, only: [:show, :update, :destroy] - resources :statuses, only: [:show, :destroy] - end - namespace :apps do get :verify_credentials, to: 'credentials#show' end @@ -660,8 +652,16 @@ Rails.application.routes.draw do resources :media, only: [:create] resources :suggestions, only: [:index] - resources :filters, only: [:index, :create, :show, :update, :destroy] resource :instance, only: [:show] + resources :filters, only: [:index, :create, :show, :update, :destroy] do + resources :keywords, only: [:index, :create], controller: 'filters/keywords' + resources :statuses, only: [:index, :create], controller: 'filters/statuses' + end + + namespace :filters do + resources :keywords, only: [:show, :update, :destroy] + resources :statuses, only: [:show, :destroy] + end namespace :admin do resources :accounts, only: [:index] diff --git a/spec/controllers/api/v1/filters/keywords_controller_spec.rb b/spec/controllers/api/v2/filters/keywords_controller_spec.rb similarity index 98% rename from spec/controllers/api/v1/filters/keywords_controller_spec.rb rename to spec/controllers/api/v2/filters/keywords_controller_spec.rb index aecb4e41c9..1201a4ca23 100644 --- a/spec/controllers/api/v1/filters/keywords_controller_spec.rb +++ b/spec/controllers/api/v2/filters/keywords_controller_spec.rb @@ -1,6 +1,6 @@ require 'rails_helper' -RSpec.describe Api::V1::Filters::KeywordsController, type: :controller do +RSpec.describe Api::V2::Filters::KeywordsController, type: :controller do render_views let(:user) { Fabricate(:user) } diff --git a/spec/controllers/api/v1/filters/statuses_controller_spec.rb b/spec/controllers/api/v2/filters/statuses_controller_spec.rb similarity index 98% rename from spec/controllers/api/v1/filters/statuses_controller_spec.rb rename to spec/controllers/api/v2/filters/statuses_controller_spec.rb index 3b2399dd89..9740c1eb30 100644 --- a/spec/controllers/api/v1/filters/statuses_controller_spec.rb +++ b/spec/controllers/api/v2/filters/statuses_controller_spec.rb @@ -1,6 +1,6 @@ require 'rails_helper' -RSpec.describe Api::V1::Filters::StatusesController, type: :controller do +RSpec.describe Api::V2::Filters::StatusesController, type: :controller do render_views let(:user) { Fabricate(:user) } From 75299a042c8ead006a059fe13abf790580252660 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 08:50:14 +0100 Subject: [PATCH 460/500] Bump version to 4.0.0rc4 (#20634) --- CHANGELOG.md | 12 +++++++++--- lib/mastodon/version.rb | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93f05a6500..20da71f802 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,12 +58,13 @@ Some of the features in this release have been funded through the [NGI0 Discover - Add reputation and followers score boost to SQL-only account search ([Gargron](https://github.com/mastodon/mastodon/pull/19251)) - Add Scots, Balaibalan, Láadan, Lingua Franca Nova, Lojban, Toki Pona to languages list ([VyrCossont](https://github.com/mastodon/mastodon/pull/20168)) - Set autocomplete hints for e-mail, password and OTP fields ([rcombs](https://github.com/mastodon/mastodon/pull/19833), [offbyone](https://github.com/mastodon/mastodon/pull/19946), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20071)) +- Add support for DigitalOcean Spaces in setup wizard ([v-aisac](https://github.com/mastodon/mastodon/pull/20573)) ### Changed - **Change brand color and logotypes** ([Gargron](https://github.com/mastodon/mastodon/pull/18592), [Gargron](https://github.com/mastodon/mastodon/pull/18639), [Gargron](https://github.com/mastodon/mastodon/pull/18691), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18634), [Gargron](https://github.com/mastodon/mastodon/pull/19254), [mayaeh](https://github.com/mastodon/mastodon/pull/18710)) - **Change post editing to be enabled in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/19103)) -- **Change web UI to work for logged-out users** ([Gargron](https://github.com/mastodon/mastodon/pull/18961), [Gargron](https://github.com/mastodon/mastodon/pull/19250), [Gargron](https://github.com/mastodon/mastodon/pull/19294), [Gargron](https://github.com/mastodon/mastodon/pull/19306), [Gargron](https://github.com/mastodon/mastodon/pull/19315), [ykzts](https://github.com/mastodon/mastodon/pull/19322), [Gargron](https://github.com/mastodon/mastodon/pull/19412), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19437), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19415), [Gargron](https://github.com/mastodon/mastodon/pull/19348), [Gargron](https://github.com/mastodon/mastodon/pull/19295), [Gargron](https://github.com/mastodon/mastodon/pull/19422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19414), [Gargron](https://github.com/mastodon/mastodon/pull/19319), [Gargron](https://github.com/mastodon/mastodon/pull/19345), [Gargron](https://github.com/mastodon/mastodon/pull/19310), [Gargron](https://github.com/mastodon/mastodon/pull/19301), [Gargron](https://github.com/mastodon/mastodon/pull/19423), [ykzts](https://github.com/mastodon/mastodon/pull/19471), [ykzts](https://github.com/mastodon/mastodon/pull/19333), [ykzts](https://github.com/mastodon/mastodon/pull/19337), [ykzts](https://github.com/mastodon/mastodon/pull/19272), [ykzts](https://github.com/mastodon/mastodon/pull/19468), [Gargron](https://github.com/mastodon/mastodon/pull/19466), [Gargron](https://github.com/mastodon/mastodon/pull/19457), [Gargron](https://github.com/mastodon/mastodon/pull/19426), [Gargron](https://github.com/mastodon/mastodon/pull/19427), [Gargron](https://github.com/mastodon/mastodon/pull/19421), [Gargron](https://github.com/mastodon/mastodon/pull/19417), [Gargron](https://github.com/mastodon/mastodon/pull/19413), [Gargron](https://github.com/mastodon/mastodon/pull/19397), [Gargron](https://github.com/mastodon/mastodon/pull/19387), [Gargron](https://github.com/mastodon/mastodon/pull/19396), [Gargron](https://github.com/mastodon/mastodon/pull/19385), [ykzts](https://github.com/mastodon/mastodon/pull/19334), [ykzts](https://github.com/mastodon/mastodon/pull/19329), [Gargron](https://github.com/mastodon/mastodon/pull/19324), [Gargron](https://github.com/mastodon/mastodon/pull/19318), [Gargron](https://github.com/mastodon/mastodon/pull/19316), [Gargron](https://github.com/mastodon/mastodon/pull/19263), [trwnh](https://github.com/mastodon/mastodon/pull/19305), [ykzts](https://github.com/mastodon/mastodon/pull/19273), [Gargron](https://github.com/mastodon/mastodon/pull/19801), [Gargron](https://github.com/mastodon/mastodon/pull/19790), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19773), [Gargron](https://github.com/mastodon/mastodon/pull/19798), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19724), [Gargron](https://github.com/mastodon/mastodon/pull/19709), [Gargron](https://github.com/mastodon/mastodon/pull/19514), [Gargron](https://github.com/mastodon/mastodon/pull/19562), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19981), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19978), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20148), [Gargron](https://github.com/mastodon/mastodon/pull/20302)) +- **Change web UI to work for logged-out users** ([Gargron](https://github.com/mastodon/mastodon/pull/18961), [Gargron](https://github.com/mastodon/mastodon/pull/19250), [Gargron](https://github.com/mastodon/mastodon/pull/19294), [Gargron](https://github.com/mastodon/mastodon/pull/19306), [Gargron](https://github.com/mastodon/mastodon/pull/19315), [ykzts](https://github.com/mastodon/mastodon/pull/19322), [Gargron](https://github.com/mastodon/mastodon/pull/19412), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19437), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19415), [Gargron](https://github.com/mastodon/mastodon/pull/19348), [Gargron](https://github.com/mastodon/mastodon/pull/19295), [Gargron](https://github.com/mastodon/mastodon/pull/19422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19414), [Gargron](https://github.com/mastodon/mastodon/pull/19319), [Gargron](https://github.com/mastodon/mastodon/pull/19345), [Gargron](https://github.com/mastodon/mastodon/pull/19310), [Gargron](https://github.com/mastodon/mastodon/pull/19301), [Gargron](https://github.com/mastodon/mastodon/pull/19423), [ykzts](https://github.com/mastodon/mastodon/pull/19471), [ykzts](https://github.com/mastodon/mastodon/pull/19333), [ykzts](https://github.com/mastodon/mastodon/pull/19337), [ykzts](https://github.com/mastodon/mastodon/pull/19272), [ykzts](https://github.com/mastodon/mastodon/pull/19468), [Gargron](https://github.com/mastodon/mastodon/pull/19466), [Gargron](https://github.com/mastodon/mastodon/pull/19457), [Gargron](https://github.com/mastodon/mastodon/pull/19426), [Gargron](https://github.com/mastodon/mastodon/pull/19427), [Gargron](https://github.com/mastodon/mastodon/pull/19421), [Gargron](https://github.com/mastodon/mastodon/pull/19417), [Gargron](https://github.com/mastodon/mastodon/pull/19413), [Gargron](https://github.com/mastodon/mastodon/pull/19397), [Gargron](https://github.com/mastodon/mastodon/pull/19387), [Gargron](https://github.com/mastodon/mastodon/pull/19396), [Gargron](https://github.com/mastodon/mastodon/pull/19385), [ykzts](https://github.com/mastodon/mastodon/pull/19334), [ykzts](https://github.com/mastodon/mastodon/pull/19329), [Gargron](https://github.com/mastodon/mastodon/pull/19324), [Gargron](https://github.com/mastodon/mastodon/pull/19318), [Gargron](https://github.com/mastodon/mastodon/pull/19316), [Gargron](https://github.com/mastodon/mastodon/pull/19263), [trwnh](https://github.com/mastodon/mastodon/pull/19305), [ykzts](https://github.com/mastodon/mastodon/pull/19273), [Gargron](https://github.com/mastodon/mastodon/pull/19801), [Gargron](https://github.com/mastodon/mastodon/pull/19790), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19773), [Gargron](https://github.com/mastodon/mastodon/pull/19798), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19724), [Gargron](https://github.com/mastodon/mastodon/pull/19709), [Gargron](https://github.com/mastodon/mastodon/pull/19514), [Gargron](https://github.com/mastodon/mastodon/pull/19562), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19981), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19978), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20148), [Gargron](https://github.com/mastodon/mastodon/pull/20302), [cutls](https://github.com/mastodon/mastodon/pull/20400)) - The web app can now be accessed without being logged in - No more `/web` prefix on web app paths - Profiles, posts, and other public pages now use the same interface for logged in and logged out users @@ -79,7 +80,7 @@ Some of the features in this release have been funded through the [NGI0 Discover - Change label of publish button to be "Publish" again in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18583)) - Change language to be carried over on reply in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18557)) - Change "Unfollow" to "Cancel follow request" when request still pending in web UI ([prplecake](https://github.com/mastodon/mastodon/pull/19363)) -- **Change post filtering system** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18058), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19050), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18894), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19051), [noellabo](https://github.com/mastodon/mastodon/pull/18923), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18956), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18744), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19878)) +- **Change post filtering system** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18058), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19050), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18894), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19051), [noellabo](https://github.com/mastodon/mastodon/pull/18923), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18956), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18744), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19878), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20567)) - Filtered keywords and phrases can now be grouped into named categories - Filtered posts show which exact filter was hit - Individual posts can be added to a filter @@ -105,6 +106,8 @@ Some of the features in this release have been funded through the [NGI0 Discover - Change incoming activity processing to happen in `ingress` queue ([Gargron](https://github.com/mastodon/mastodon/pull/20264)) - Change notifications to not link show preview cards in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20335)) - Change amount of replies returned for logged out users in REST API ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20355)) +- Change in-app links to keep you in-app in web UI ([trwnh](https://github.com/mastodon/mastodon/pull/20540), [Gargron](https://github.com/mastodon/mastodon/pull/20628)) +- Change table header to be sticky in admin UI ([sk22](https://github.com/mastodon/mastodon/pull/20442)) ### Removed @@ -117,6 +120,9 @@ Some of the features in this release have been funded through the [NGI0 Discover ### Fixed +- Fix rules with same priority being sorted non-deterministically ([Gargron](https://github.com/mastodon/mastodon/pull/20623)) +- Fix error when invalid domain name is submitted ([Gargron](https://github.com/mastodon/mastodon/pull/19474)) +- Fix icons having an image role ([Gargron](https://github.com/mastodon/mastodon/pull/20600)) - Fix connections to IPv6-only servers ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20108)) - Fix unnecessary service worker registration and preloading when logged out in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20341)) - Fix unnecessary and slow regex construction ([raggi](https://github.com/mastodon/mastodon/pull/20215)) @@ -185,7 +191,7 @@ Some of the features in this release have been funded through the [NGI0 Discover - Fix `CDN_HOST` not being used in some asset URLs ([tribela](https://github.com/mastodon/mastodon/pull/18662)) - Fix `CAS_DISPLAY_NAME`, `SAML_DISPLAY_NAME` and `OIDC_DISPLAY_NAME` being ignored ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18568)) - Fix various typos in comments throughout the codebase ([luzpaz](https://github.com/mastodon/mastodon/pull/18604)) -- Fix CSV upload no longer breaks if an server domain includes UTF-8 characters ([HamptonMakes]()) +- Fix CSV import error when rows include unicode characters ([HamptonMakes](https://github.com/mastodon/mastodon/pull/20592)) ### Security diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 60a22b234b..cbf1087dd5 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -17,7 +17,7 @@ module Mastodon end def flags - 'rc3' + 'rc4' end def suffix From 9fd866f38ef31032abb319eb5db9ee5778a02440 Mon Sep 17 00:00:00 2001 From: Samuel Kaiser Date: Sun, 13 Nov 2022 21:02:28 +0100 Subject: [PATCH 461/500] [Glitch] Stick batch table toolbar to the top Port e62b514e958ca2bfc08944b2368c6d41417f9e8a to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/tables.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/javascript/flavours/glitch/styles/tables.scss b/app/javascript/flavours/glitch/styles/tables.scss index 9192557905..14daf591e7 100644 --- a/app/javascript/flavours/glitch/styles/tables.scss +++ b/app/javascript/flavours/glitch/styles/tables.scss @@ -178,6 +178,9 @@ a.table-action-link { } &__toolbar { + position: sticky; + top: 0; + z-index: 1; border: 1px solid darken($ui-base-color, 8%); background: $ui-base-color; border-radius: 4px 0 0; From 9db90d2ebee1b0f5e3361e47349471d36b25d415 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Nov 2022 06:05:10 +0100 Subject: [PATCH 462/500] [Glitch] Fix dropdown menu on profiles not being accessible on narrow screens in web UI Port 6da9df774ea9973124fe7e2f5a9dd0862a22acd8 to glitch-soc Signed-off-by: Claire --- .../glitch/features/account/components/header.js | 2 -- .../flavours/glitch/styles/components/accounts.scss | 12 ++++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js index 93831b3e70..47c074ec3d 100644 --- a/app/javascript/flavours/glitch/features/account/components/header.js +++ b/app/javascript/flavours/glitch/features/account/components/header.js @@ -317,8 +317,6 @@ class Header extends ImmutablePureComponent {

      dMh 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�N?1m^o)bvl%g-z? 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 G&;$T^-EgD; literal 2199 zcmbVOYg7|w8V*&fB8W(ot2joA*d_NH6Nwr~Vj>p-qvDDlCz$~v4^~MLK&*hmkRSwt zbJrok#^a3JB`W4~3D^w@ zmctxS8p>osvQQ$6Ndt)tsRxA!GFUJXWu&3MWqTD z9yE~d#TI(e*?a+m;vt;nij`UvQp%87+j7kI443|wT#mN}fl!r3qEbc9c0oY63RP*t zRcgT7`+d~`H$O-wSDJ)tO@;apHy_c+V-Q%VQ7M4;ndZnp;ROX@daxkGgNR@e6B!5; zN`zo3oycH;3?>7VvZP=rVTKR?zZoQBPLWOR@;~h}E5drxwEZ{?*x}Mz0jnCZ@))!YW{JOTixX`06>k@EmepE+#x_Eiq?RAn)_<*}y(l>ER;5yNf?h}&H zGB>rj+$V46XT1*{Y)6VLlUVwHU1L6@w7EycbbMp;NK>5PptY)X&yc1pkfHW(w%f}1 z_gB?@)|WY$hd-SU?D{?j8qc9y(7X?Sy`U4aZHnbj*VC><6^xImwYkW8>mS& zN5khGgNcVkovxyhZec}F#ihx+fk7|K@$)7P(tqyHIPz4xyDT9lC!Ta~e&>xdj~^72 z6E&IH`i+EIyd+fD+}_Aj9xrb_dwzrKZFQHOXwiccwkL3`TQN@tw<-Ja#zhyUrPOVX z^>t>$^X7x?*E@h3G$0LJnALE${(Rz#qKVSEKz?`wZ^x4ewtH%i`#y2fz86Dq>j3trtn zT)mqma($oUzbs@mQusP zEaTtgQjWmrT>q_6(7Ds8z!^5!i+MMEf8p(44XhO<2)Ip-LYH~d$D_GTUtJWLYm%n) z8NS{&x3`~4N!Mpwph%k<^ z#rf#feFe9kO&l%+$hT4)Pb6P4*FR%l3!V0=*hl*9C*lv}yOBAGn~Q`mDV^3~gUg(@ zmKOHsygD8N8Qhj}{nnTTh7W)XcdaZ-?hbxjziwSgpWboX%k0V&*1c8h8MMydv!)_{ zw6H9@$(6}QPhL(px?i}f7@qfaZeU4nOJQ4Pwo%U+voE=DYES!53MKcezM|G>yAg`n z>ALF0bK{T{$eVfe$%>81D+s^; zG9nqYIk)ww^YE8Nc}Y&D`GN5Yw-MSm4jU=(YFYe*uMpfu8^X diff --git a/app/javascript/images/void.png b/app/javascript/images/void.png index d730666880b736f0dc2d16343bac0bd91b221126..c2b803c13273c87888b717b68ab8dde7cd59f1cb 100644 GIT binary patch delta 62 zcmZ3-7%)M?f`f^Hfq^L?;uVk*_jGX#sbEaDXy*F2xQTJ9+vCM6B@EADWdK}L#ix!7fqSs-p diff --git a/lib/assets/wordmark.dark.png b/lib/assets/wordmark.dark.png index defe50178180a8e2db9c3b5fd26d0c8f4c042d38..6772b3318dc35c3ac8d615d4f9fcca6d7cb03900 100644 GIT binary patch literal 6753 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 diff --git a/lib/assets/wordmark.light.png b/lib/assets/wordmark.light.png index d4485c0fb276fc079c89b4ad8d609699e5e2af03..6d95088a480ef81f52aa0da240b99c0a591cec6f 100644 GIT binary patch literal 6613 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 T1COH_00000NkvXXu0mjfse6&T literal 8625 zcmX9^1yCGavt`lX!2$$_4ess^i+;!^Xo3WHx3G9{cMB5S-E|4JxCa&w?(PyE`Cm=d z%v5#H>D#CKPTi{0;p+c^urc0aARr)MD=NrpA|L<~U*FB&puXO5cp-kT57e*9AX$W$ ze^+j2@vE5{K~Yxfqvwy~EUzD*`jh>;+p5XherC$+q5$)312LFeKqPLQ10^PeL=<@H z4FA#7PqloQigyZE&V&CTiN+)Vy>t4!@org?tLi8$u#TmD%v{Ey+F^{Um@ISW+S~24 z{PD!5BzEl?uyXq;%Oh3Tt!z9GhPOGeKP?-W-8CVlGzDf6Mlice`ZGnT>Ya_hJ{I1)Z0y`xE-!n&>0%{SiMDttk&4kS8q@tZDlx1EaE3JwmnXYiIR>`g(mW z2$w&asv0tq3jO0~I!J5e-{Vz`R4vaMnUBsKAwL*1mn9mz36*#^tG>>et54`7C(Bmz zUZ*O_VC!-9DG8MUo zFaEbBgP@u7)iLDNQAKNb>!952FiYflL@E}AuP;TN4N!RvQgV8^ISwxc7nilQY&!|w z0Df=}nMgAw#?!gw6%^R>mYge1%`~aAp;zi6KNJm8ad>js>ypQGk{7F7q(O&Gj}{ie zNgJ`bD)t9mef4p7Qzo&cjZT;wVLu!IFNjgd73Fm`6_~p5uFp6t2(Oq^ws|!M)TdQ{wWUBt=Sa-2Qhi6YG#~CB##%iJ$1V7C=!F_dp@YMS|!abs9Y8;SqkMixv2uHct)Jz9@8;|8O-qu+)r9jh- z$9`2corB^!VR$cIn0fNhcD_x_tWx*)JYXu~@h3}P(UZExoPM^D-an4As!C?g{X|4x z8m1@m-AMH|V_0#Xya&H%@zD<6&i!!|bRMQ0HhuCup8J4VWGTpb5}en$bq1OJUTfmU z5cK%!K+cvR#=ox3QQn2x&q<0w!LRO!FqE-|klN1{`7c0^eag^6tqAUH#L@=7dA0n$ z@?i9;7i9UXAUO_*@W?)WwzOTUIb8AG;YV!;^T(UQS$dYqwiwyGu#FA&q?D^)ml$;W zF1zDyACGiYxm%Hr85DsLmip6)2~B9smH3-@RCj{={(Wk$QkswR)TK|_h&cd}uZb02 z5dl4tAS1s5WGOyP10xiCKXsx^*Vba>JtT7E2GB77EbY7rkuz0yjB<;)3RSqoi?H$kq)kY9J#WNV$V%UwqxfQkPpb&$HtETG;$HDJ)6 z1N>u#LU1;B!r924n#rS>H!BFcD_N^DlQ3Exrsc}=PmDI3{d%DSD`@xxh7&#ob$i!5)A5}E~-E6}DM(?C)| zut(xvN&5gBWmOu+i)6;a7y`KSaMQdQkzUt^f)#$YlrW)Ip;j?0d#oWZ1D;4*bFjCB z5q%}ri=nY^BL%U<&uA}1$D61L!mh0njBaJuS04Os0lu+}@wpWMduc-DdPaXP6W4ep ztx7ZsQ{FL5NOuaZ#Tu+wnUa>QIDo$&&2hM9$n`*wceAyzamnj2s}@qblRWu6$Ac?K zRrAHQoZ<}a$o5W~nqxNq`XyE~JqqzJnOAtd8Rpq3G>Lb2tDaj3>kiW$OfrU2C0Wr@ zB1o#S!yhQVOFPk*@bI#$l+I|xdPa668c7{AV;EpFB>w!Lx|uV7-W#R*BM)ZhFPiMZ zk)@xt@4rMF7Fp@~Stp8kUXQulxenzF{eHBy*cLYMI(GeC;Z0|kGsmazc|V88Plyf^ zhlWa;W1Ej7Y<+0h7Sci#4P-2CASI}S$|S*Lk2*UZX_Q4hbgVg2pGeaC7srD=fOSt7 zE_tPO512;6H+5*dFtUL<9A)oy6w?dSLtW(7)l?dcbJNIU^9^!SIH$fGVx8%|o{Qbk z`uZVWQxHp@c!S~KRkM7p{c{v+^@PCe+^6#$ed1cL%fKX`2e-x!@n;CXgRW7fS|7xh z2u?VW;y`!!15MwuoJpGw$(Qg6aAz!Q_k!QTk=JAg_CNacob9L#De`&3s9gv=!Y=HU zsVEVtmH5MmR0J5*u@@lfjQ0uQp*zZFITQX$Bd_Xb8koX`W`YodmM!x`+&%yAz@c%i zO{o9iGD>s3`O4wDs<9K`D|LriQ@}(b?<*mP9tzv#tL$s>c=+T@7)VYh24GO;z`|T5 z&EIe5%ymYUvSd5lxV5uA79wpLYi%3zK!z?F375AQCOo5_GFametKeq~F1nHdqUS3q}cQ$@TmVJM8G_XowhSnjSr948{f9tyx~^g*bD%!uXPfPcQlyqbRV80P%d3)|6l zlZsHiK3~GJyuT`i-7i7+(*9?e^-NU`)3%dBwFbG%Rc8aU$}UY>x~_|T&-{>Wzsg8n zKknpioU)bnBH1K_^RNx}D9hhQMV-cCY-6g*TQR8q<1=83c}&H|6!qE8d2@>JdnPPP zZaV3dZp1(!`0nV9<+;?j9CVFyX|gF=`i4#$;k0kkkKYrz0+l#^2xzL;>W)N-^z9Wn zHEhhJ1xzkl>|Zc=Z8y%8R#v`Q@x9;is`&C^-t^VH@7Ctd=q4JWLg(7=^h5U@i3`Xzv@juem4R+uSExR7gZ{s8_ z*^gMoQwAx!`)x9IX0Ycn2#(86aZZUX{DG@}cLl#Kws2&oO}Mx)H&-=RCxOq#(CmJ= zbTq@e-is>yt6t;qLF=9NsDR-kfxSFDjTsmNoS#D!pIiQ6kQ37P`A0BTAQc(J zoxzc1W50)9_s9o30RsT0QcWu>gT46+kRjJzk%-lcS~=A`djxv@8`QPfq@yA@VR!h?>vSRSR7N=J-n{X zTw-(uOl7L(P~ED)x$qp8*Ycr%mv^Jl73n5F&h8BS%kHj9^5jpZf+UI*wz0^NYokvUQlS!5@RAp@jjm3- z@OD9jR(1>8Q#Eyq04``w4e`Q4(!s;ci{t_NC%iff53)Kmo8j9yo02&*Vmog@|7{&1 zp}&Oz$>=;0OVqg7a}x3X;`UO&Vs*tL6g-hJn09?Ema-YL9IH8|zoFm6zR|e9tEo#g zASKClRU$$aP2c_bk(pkN~YBCq(2>@cq~(dRCjF7eww>vi&;`(WDnth2g@kM z$qkeOTuaq{*Das4)IS~EruX*@$S&P~Ma=OIilid3ZKXAt(vi#E5waN;8YKvIj+pjL zM@*Xet-6Rc_1nc9A2a#Wi%AZa&jn*d9()N67Wr>k$Y55zIq1oE=VyR<&fHT!e=V!W zJtyd!7)n>0xFXd$OhY+NxeM|H(6DU0|EPO4=(C3n_YX2uaJdCpIuSa|eEsuQ|2^QV zvDxC@1ENm$24^N7I!mTi{vU-x1xeO!>IhSI{Jz^a=>)V7unV{mbr^>?R{|e3g&B;; zSc%Ay#*xB20@+A>!&g{HQbOw93VL}ecadkN38bDliViCzGQGcZWj!^f^Ew=diXKV{ zeT7$HPY%W-WXpTh5j|>5|Ng9-((tUcelyZMD)8bCT8`2jE?IeA!Ywd79f@8-wOlGf z3qoBrV)cFz*Pbp~Sg7X$Qx+kvCm?KeMHSegCyF{?aFduCbYq2-vL16O|I`TGx;%&+ z{c$OVWEa;G)e4g}`T`a2l17D6htpRBJ3oA*+&NeGeZE&i+v^T^zeOrgYY@bZP>-&U z^b*V%ntKWr3A;6#F^wGiS#xUstRKjcW%tXrwLTySAj(_V#G07BGKL6JR{mCN2=|8` zYinmR-ShW<*b6`A1yMo_AG=G;pVjorD-9*F2~R(rfNu zsHeNS4e=3|NIxFw;jI#WfjU2nBK95^l-)Mzexe$ug|&Wal<-GuOJ*A>@XKMrt{~`- zlfu5G*LmdQ(~s)X4Sgn~zuB=%Z9LSc0)HI{Sebak>NoftE#|qD;AL>=tPx1>JHn^?LJYX3cmKN(Qffmc+nR zvIH+j8;DJ8j?NfZNUl+Z*o&m|vLNc{sNJzMoSV}Nz^;*vgwL;bW?3t{mavQ7CfO;p^DfF2|V zg>!xIHaR7S21yy!OiQX(aN*BIwFM@kWz>@^ewiLv(|#` ze_t-&aulH}h$TW~jhkMOZcf+8LUxmBSKY}npO$AEvO}K_B~~;=iuTXT?}}=Y*jAyo zpJ*(j)Lqh;gLd8|mG#YJ=qUrv;;9C{+jdhM7pdTfZ|rr;T)Or`g4i?bTE~oeO03!7 zpfdq;PW-+WeBJ5^cJ$A@u26{A3DStqMDOz0Ba~2rCt5c=@9y{KBOQ3rnz8teGFqk{ zeQA{siLGvFLsgbznmXFKNit7AWO+VQ)KkJzB5#WrU%ocBQ6GBtU;;Rn&CL; zU!T$(&6M(iVMOK}b4}~@-UC6d1$v2m$tw-9)WBMk<22vUBCT|6m8FK{XOW1z8uRnX z*?}s$3z<~ewJxGBUq#EKtWJ$0_ z;=oZkHMG$z{x`zslEH~OP;K~Wv(Jc?2IIHOBK zV-`NNv$!ipxi@^*D634qZ!$w)+_t`e@?d*q3Lw4s9gk=J(c(213 znj>DAE}7&jI7O?GZfK{-I6MCqaqkdO>S_0%T-rcLd|6amZh~}hxE@fEl(8m6Mzlh& zvFNfR95dsk#a{whiGIX>EXLfdbdHy6{q^;IxG$x<#o#V!_AOIsCBw{a726H!3#zTy zh%%=KR~J+>hnj$PCS0efC!}`W>Z2L^yAoUSqAeGy6wYgHs(=-E@>p72&5@*L-xG_b z&Vd?oefw)F*QTikMmYTBAj#mo82|zyhsGJP{j@V4>4hJd&eT2R> zrKjNa@rs+}LP6b4L#+(1{T)azO^)`IyIDFs!~5YT*~y4}2kxPc#LvrA|?S(EHq#UvA#di;~O zPBda`VVKa+@$F9iDf4JuX~s_KLBtW=a^$Rz&^yIHtB$!bN-gm1 z5@H|4(=7~2Sdd2zlQd6&UH=-uR!Z zz%L`faM4*c)TiYhs0mDS#1^5ICzD#yu<+Fp9x5_rCb=tp`FXUFo(3EolG? z9`T=(FwBGGH18GGfurCrVM!qVpM))4e=U`S#tbLO;;-(d%-1RdsAj3$V4WuAA;kO1_D%c;?I*f|~aEOu0_ls34YB8tFAo zy>o-9@WCqTiSq>QIA8b2ZM+TH2bTC#H#OJp++!}> z^~eOY_|858Y2U85mq|DKB|ZOnt?QgmeghqqYd2|!Z=`TBlz;XYg=kM-bV%6Kbdin% zdoKe$N6mU2IJF%$&hdJ_7_BjQbJVw#%B0LW>)q0!boVW93p<=Af#ja(Dvsj??S)*5 zRpZPu%kwM+rFUq1LRxq1OnDZ*tA-Kl&)z9CZJ7z}u@Kq3tuE!m#L+@f!#ocvxxTb;6BK3 z(P!lXF({(x%rxpJg(|k0f>5|KMb8LHH|T1cz8gH~15pnP9F^V0OVP26*AqposN z_F=#$yrvft{E5WKLe;nBx2!jLvhCUOeiY4baab%(-Q7H7kNprKXzh*fQfO9nG{$ZD z5~js%t=6d$+r^?M-iC&ixbTdXo?3Jj-lWi;Y!#8+N!=5jErl)GkG@c!(`Y17*pEKL zWUZ?;fC$;U<#y*23#x1cG8-u~10HWeg35nz6ixyO78%rWhC zmih0)Pd$@L?39fu@{AmMeX&o0XEuG06F01WA2x{04%UsNd#ATJ*qYMA1>$zOBA)B` z!fdW4!W?4hxkVxQ2<)JdueA8A0>MY9&@lyr>eIK!ww2`RrC*}FXNDB!m8I^dX-vA@R@>DE0t= zfOq@LPun~G!pw2E2>NEqsS@;dqyyzXRm(eDsZuwO<4jNo?VyAmJ}9P{Y5zy7btV&5 zxOf%pMOaVn#1i#Eb;1Qg&?xa9z6nbLHUt3cc5i^(rAyX|^l^72iEYxx6fEyKedZ;Q z)HerhPA_A%=JD+g5Ls*){bCO?icFTWUw3JKMS%wn5JSGso*`0O#nbq2g11USYiHof zb2uV!ZcyFS@xZ@>gipcx{8JdBXXcSba+78B*0M19UL@>u2qd*SUdo%G4($x!Znyy1 zre62l`bPfUl-)8Ga+?M7dBO@u3LjZ%VWN0je!^K$;2@HVeF1R*Z9S8~Ur(2!He|T9 zcd@e8`>t|%t7Oc-?NL+c68&%EEL?M>0H2+AhC^JjV#1~tsrb*ggVtj7aYB3l)P!&K zOtq0Gf$68}AsZu|Dwz60uL4EnPXx(cVvH3Ad*d4bB_P=^Q|Q$@{sRgE<+tG9-X;g@ z9bavXZ78Gk-@Jl^A=aw!vN&%_cc12Ic&K?+&3DyE9XSf#Nc9CNTj^K1#>}$9rMbZ< zBCpPtwX+UT?~z9PsnV;Saq}LP5J2Xrw6l0tDp5S}Yb2q2`8IF!gJBww+e-tkt znFm{@6}oN>n__3|GsZ|+lWlox)(9KXl#pWh$=l`G@61{u@eqG<5+slD38Pom`}WS! ztIy{o?MnVd88ColIMpSrAw)R)ws6*1l8Q~vPlW|hPu32h6X))84}RqpgKw5WUH$QR zKSu{=pDxwE`h~1i1Y&|9&S|^em~KdufRtSj5UDS6Cg z{HIhp{$7|-F8p_!dVT~EA>T}&`=ncLQ?6^)?^XB0CycWuD?^7*dv@z~NPa>85&G(C zYjqkQ%m(n``53-dZQ&4Z6289ymiSWm)1si0zC(tgbJ4-6z~@!}3Z=6+(zyMSPY+rt zy?9Q{KY1$ECDC zE=!=R&VN;mm(gS<@c;E|QD2fHW>R=xvlN2?mr8u4(BU87@BUldyNvwLz!jM7i)%^o z^9?w{l4sz9g6pd-MY%o&9lF(wHvUP^kZM~?^p03-Kcbmk$Sa_{@Lw0R5$1R3*_#W=e!fy`I|p!+%ZFXqLxm1yXg5zZuGnEfLGd%z$Es*ELlfSv&rGn&yl=Q5n4b=r-~30BJr}O5R(UCgwsLUP4Pob#=X$(i=(QT!LA`xp>Jxk(+75w|#xDTus%X3l3YmO$}k% z&pF!gZuH5N1IM}l@x-do4(Mi3QuFnm^yJM)*!9_d%^!!lh8wSFl$;kn|BXbCBb+;w z*OE@~bzDI2-z4N4K?!YUO#IgedL&xzMI3@&<3q#R zw*VR2hEy9!p@>?R*KASCKlGTC2sr_UN_JtVzbJb9A^|c-jbuzVd=G8Kt3uYA%Ypy& zRpo)Ui6dA*q+aQB*~F!~#Oz+8ZL>qT8OC3A?a7DQQXW*TKDMaWXbrBk*ie$|V>sx} zEow$73;QafjsxlU&$NTNQl`W;vL{N$=F5}Us3|aA-Zj{!1x1x;7uo^uI!P{YgWbod zNwcGjcjn<`v&1h7Bm@GyW)|kJBi$Q{n`1D^1h_s$$u=FPh$O8! z&o;yyJMjaXk1G$-)t1TN_y42uU$&ULFMxs0IXs8*RoyBWL3PsflDaJc43Qbw)&~|e0QD%I7T11D>m_F25!{KXo5c*h&F1m5z zmmV;&Q%7qI7GHBxQB|~m@L0n}wf7VbnE5jk_O}kwVhz(#H5zHL+7PzaHVc1i9*34T zYdu!8vZ*8ow()`1YkD{FT9fI@G^g5D3(K^ENMw3~cTMbC=l0-P{((4tirw;u`u0N(mUo-|w@HG*US82fbvQ!O7h1=M%%;hI{ydV7E-50(`=zy( zlLD_q85}ccx*X+jlx^uFjpr=ps6XqCq{ziRL2HpgPw({;=duX;K#vS;OP3-nvWWCX z7&)i+Q=%iXu;M0j{>Gb2FK5nc5^s8Vyi@oB1^5PB zmeG1Z0rFOZo=jYtlSu9}?2SVSGnY4_2-nb=Vs$-|2XMQi73#ZJ<%e+n43)c#AjIkXXgxZC52%i8X`WV6@USgzW-5YHS%sYU){V4epe{D?25si zgu_YSus&y6QxA@Hn4@l5OAj;FX?OANVa^)$3*?g}GNy0yM>!IH{@r(%Zy|5H6a6MK zpbG?0B18IrE*V`QfYCRL_w;7>a;kUrsgDA2)T7}FC=hfPS*3@p!|q4?eX*iLIv}ps z^i>MHKmc)F`6cT#0*7)C*#LVf_~g6k=EB1mC?~_*onv`h4?zq<3qd@kbJ}_c(#!#* z^$^4`G+jZqo*c^&-l{Kv84K-Mi|k6>K%BZCT#r3}r9ww{K{ca)m;wyGv+Cbd&ARlg zm+Ys#hN9{IkTCbuLLA{=c2;Z(0SL0np7pzo#i4s#u2g6&1U$i4-G2<5vABfqoeUK@ zWC7;hI_sVSGV5^e-F2@m9!5j3K%6NAVO`7`DlUcq=H5C8pR~R@6yzt}$P$9EF2!b8 zE(9ch!z_Kaw;7E~a^!V}B?KW{iFI-af-o#+4?zfq<&-4^`NvX{BWYTO=TE7tFFEwY8=sXMqVLvQ| z$$bA~{#aJ5S4ZB=w+~s>jFc+Yddxt6wjONEgy&FpE=wEhy!Xx;J<18j`hRDO+}ZFe zEKz&da|>ww4I4%o(fJ!pfU#RbLRTyx+W1E#S#k^R85hR{;P0@+FXEFc==?Kodqkpt zC)o9~&GNxfY+wIr1)a6_5*xQwwhTF2G9oj&qZ6tU0SOnG3THbOMdWhy+03J5GH!qz zYvA}S(5eUb{2LB-yJ|(^LGgV4kut&e=!8n#s%!Uu1y_FNc4T0)Epk`5vA`z?;Zxih z+S>|}h{Q3M|7#zfVr~;>>#-9=J~+33q$I{9;-ohTR-{?DE`j(7Liv(4B08l_+R;Gq za0i9;%b+KSd`E%xn#k#-8-)A{%cWB%NUGk`UO~`F0umUju-Pf1*|X6U8StBQ=^L#% zxlELh?IMw!jSu~V{}xN6S+va3tSs5wLd$Un7#gi!y3ZxPW-TiLv20IaG6Uj&(uPm2 z1*=#*AA&N=u>H8rbalgKR3vAEogL+Q6S;b1OhOwI#vG#I6fQ(9@botYLk&83GRgP3 z#P1CU)RB`fg+l|n-ANBTYr<1uZU|Ja=tUmA2K^M_TOrXvn#fc_vG6r(g0zrIVey4% zBG@$+&)W&lL}u{mAD$MkHJr+SSUUd5+=OQ#r=5c18_q<^CkX17(leT3Rc{KAPcY5u ziw!s6|4#*0V|5CY15&fTpnRbtps9dt{dEIr6fC<6#MUz`z1k^Y-VP`(@?F2ES8ocM z-|XEBda5uG1>h41N#v1?46y&D-o9?Fnkq&EROjD-UpY)p0<~2$e$JhLwphDGc7UyB z+&!JbALl}SQ4>Cv$qKs zZ-G}dS{#&J9oH6k5-QXY!Q-ca*F!kssg4K^&!gPc$68}?%Vxj|!W5Uou zH!ifnI?y;G6#dk4emxy=5I<=;(k!*%C8_neK*#Fk@{n4ODCpFFu{@;KBMhCHIG=Gx zXDWOXo+74Y=0ip#!cfexXdW^m@d3%7NZ(PMMU)K4!IV7@8Ig#BXt_j&j(%k!4lhFD z_Sv3aMHsvhnl7n-Gd;S61|8~H(6y2eN#ny%{lOvm$xQg&D~ zbW^77RfLx#;S7QJUahBjtQ7iH!J-)WJ_T%`IfBB=nt6$g0-##Hi^A+gtgKfTRSF+; z&*^%+QAQHEprBc_!x!7%`z0w?ku-bU>}yltpu7Kj=;iExyWqw6l=ZyeWZ}jSHWsf$ zRcSYB&#Cn7pRJ_LPXvz>4X5%rC}g*F%!SljlsM6dgW0<+BLnh-@inEI8_D-WcCA-P&!0ePE_HH(*%SlFs%bYC@ zeKXqPRasw@x+<;1EM>+&_v3u2by<4rFqfz}Nr5~Baf%w5h?Y~7$V5z>U_vf}Qy63- zN=`61Y>9Mwgg7zhDV;R>rf9z1 z4!MY8FZ7_h($S$nwqZiSeFDc_S3#;JEOhBT0}>|RFy6ZtMHV> zzxLoj000000LcHf5mZ%GRaI40RaI40RaI3cRaI40RaI40RaI40RaI40RRyG(D0ABy R`WOHJ002ovPDHLkV1nTfYD544 delta 3240 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 aKlKDDv{C;e+@b6M0000fO0{ySNQSVa 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 literal 20552 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 rEj2ZHC1ouorNL_f>iM;tsNzycj}FH`=)up0 z4rGF+lVL7w zjPJBplxg#Jh=0c|sP#JdLA(xe_yH@J{kHbZ-%~oSq;>HHq(@tsI#MMw4d#k&#yTDcDR_ zUv|#8T1WE^zKxF|mJXJ4?7s!Xa+I~tI*_fIXz|0hgcS} z_W2YNz`342&4~`g@&c+^2jE)I;AhJy^Af}|*?+c=KmvI#qhE7)4#G9Q0vkgd7D+O~ zlPH^3Md9v#|IN^kyB<4pCe1fJ z4=A%^X@7hJ3FP&heLN9jc@*i`jjMT*MI~qD7eo5w0>$e$SFTz$@ho$vQmh$vfb_|B zihfQFvD}_GR&mECits17@I14V=2rMBaV$?e7*#$g{sbx64@edLoXnBvuNk{xao7Bc zilXw}Atl>I^9tUxz*{V90d%;cfhK-~l;jsQ6o36Y%DW&kJG49xKN~0-*%%U>zF!-9 zZl9LD#BWE8Lz#pF1ca=P^y`S+tL@2I=Yaj)=LUHCd$~b^kO;&#&;;^sc9^9nI z*?-|TY@}#!|BR2WE$wTuF&QsJ@5G?uVD6z@Ed7Mt6_@-V?uIzLjlmGF#Q(s0$`#|B z*a;WoP5flMiHps)Ih8BC^)tRg--~(?KQf%!<-5RCefTyxwP{;CPDiE41~-RfI0aLb zFz_i&TasbRP>oNP<5T!8SONnDwmX0&aeoUW!=sq2jNe|ihIG-vxmX>OAyu|9nJIfN zI*=~5Mq1`QIEb?#3NM&42Ve(mZtQ>qaF%uvWy%aC{R)$e&VZEc3`~=#BK#Gx6TW~1 z@)dT*;Q0P)+>F>0uR(hB8urFaNGHU91sj+H8{i;Zis$edeltG9bGX#(vjJvDBP0nC lF=E7s5hF&77%^hR_zUge9)e`--A@1j002ovPDHLkV1mCt0r>y` literal 1380 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz_>QRC&U%V)zC2?MMEM4Dto3h z10$@jB*-tAfsu)sg_Vt+gOiJwk6%zoSX4}0LQ+avPF_J-MO95*SKrXc*u>P#+``hz z+Sbm|$=Suz%iG7-&p#kAC^{xKEk zf<=p$tysNw{f13jw(s1vXWxN?M~|O4b?*Gd%U5sSx^wTrqbJW^ynOxk{m0K=zyJLG z_iE)+cLoNg8=fwXArYK!5B_x)E|p>b@csLaY~|_E9;z=KF3E*Ortv%X^l+Uy)qcjo zdx?U3;}qA8oJ))=cWk`-JOAD1yKnbN-@d!>Z^WLs8{6O4AKaA7{lDv#W$DZ3Mz2rV z$JVTNf5>UEGum|9%Dbm5D{TG-_ZZyl-^;6OeC)k*$Myfx-wU?$Uwo5)B`+-sG+_vmCb$I%`L@$ z_+E?2Z1G$hSnQwFv*;SL!`|Ho&Ey~YPQUev@y(}0W?P+@vL-(YW{71iyTKsz`O3C= z?%i9wb7dUtTeF#8nK^%9wD3Rcd${74V(WLdBkdyB8TK4DSS+Bv()Nv8bMT@SybizT zC2<_M&tuG-dtkA~%@1dTukyx*}GizJk|z ziEY>Bj1>VX4K~g@Gk!E2vgTM}uc0Owv3y6h$@ZfG*&H#;Bf=_XFG^7~I2~cHkZ^ag zMXPF;v%xXR*TNEeManmL7IFDT9SskX%j5qdh=m%?*YjyZL^*y z%vs`zbJiA3e7atvv+PYMP>EwBB6D@HejwN*qzlC${w(!1^_5NT0v+(BE zQ&0VRbEKi^V_om9_5KTczv{jg<5zThuk?D~<_noq_DP>tayrlZ>zrap+RS~e(|2E3 z_leK~#7F?b-v3TwNH(@o)XvR&Co3YTGu0 z+P1B*wr$&PP}^PO?Y~~{@XWdQ?n!>};CW`Q-kdKyw364+3BGk87+}Tlze1wPX|)38 zL!voj;a?v>4yzO}8xoI`RtWzKBoW!nUcfX+B959l{7(=YWPdhm0h1v%IAq4~KSJz~ z(QE}wfY@Q5nZo}7aX@;r6fg$jfSqOt|2@PBX^dXLNQe`*8ae#85En>g)B=V;Tws$C z!+!&Dp%g|6?~joX7g~=1okIHIS7b+Z48cx>Lfj}4hcE{9kQ;x%-yI=+@iQ``GWuc@ z0wEd-#cm8iO@HLTukf=a?B6Jl9$1BE5EBW+CiF)Yq;mXhZ5|sw7H|b(LE-SC0N)}I z3u+wwFlY|3kb&`?2pd2wpjTp7gX$0y>t@R(u>!<|I@og)R0d)qEgZQMEDAA!M$X(0 z=Z6?rZC5-KwG;I7;(U9o`$FksnkS z@H0dsSydO13!;&_stafW(a2=g1~|Z#R5)QQU+iqM*AA zC=Q87FdD)D zfk9tW666=mz{teR!pg?Z$<4#ZFCZu+EFvlZXk=z? zVQpjQ~S4m2uQO1WXE-JY5_^A~??;><#x$ zWMF@Ae{SxI6^5-7#AZ+GTo`26b;>-trN&=UaM77t@B7Q&?Rz$&*_tQSEnIea5SWk6CzZ7e7`$^Jb|wyRvu5)r2JeXtu-$ zhS7Eo@#1^g7UWKh)4p)^WSRTIm50jSFI?VS_xD23vUpLeGUFEli@d`nzLcq737R>1 z^3$nohfTA)!`nA!ws@93*Sov^nxt#;)*8$Co(Hc+@A_Od`PZwf?2rF4oa%WjyWyP0 zHr+XiGR6#f7w#zESar|eOAg6jW-(OL$n;8S%m62X}M43^zaQ_%Cu5FB(nL6)l?l1 zl@-@mJM&iYIzAG)y3QeKT9)^Oh-J6JJ#q}1SXw6aEMj+xWV<3^z_T#$*PfTI&x3!R zamtvN8`ghd+k4g9I?gXdZLhUGu!>lEoULWskL%kne~?4 diff --git a/public/web-push-icon_reblog.png b/public/web-push-icon_reblog.png index 0f555ed09fc89386be9f11d86a4d8b3bb034733d..4a7104bf38d00b5c22aed25477488a35e63d45c3 100644 GIT binary patch delta 576 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 z